BoolNet/0000755000176200001440000000000013455351453011624 5ustar liggesusersBoolNet/inst/0000755000176200001440000000000013455114165012576 5ustar liggesusersBoolNet/inst/CITATION0000644000176200001440000000141613277247010013733 0ustar liggesuserscitHeader("To cite package 'BoolNet' in publications use:") citEntry(entry = "article", title = "BoolNet -- an R package for generation, reconstruction and analysis of Boolean networks", author = personList(as.person("Christoph M\\\"ussel"), as.person("Martin Hopfensitz"), as.person("Hans A. Kestler")), journal = "Bioinformatics", volume = 26, number = 10, pages = "1378--1380", year = 2010, textVersion = paste("Christoph Müssel, Martin Hopfensitz, Hans A. Kestler (2010). ", "BoolNet -- an R package for generation, reconstruction and analysis of Boolean networks. ", "Bioinformatics 26(10):1378-1380.", sep="")) BoolNet/inst/NEWS.Rd0000644000176200001440000001521413450340674013645 0ustar liggesusers\name{NEWS} \title{NEWS file for the \pkg{BoolNet} package} \section{Changes in version 2.1.5}{ \itemize{ \item{Fixed vignette compilation errors on Solaris 10.} } } \section{Changes in version 2.1.4}{ \itemize{ \item{\code{getAttractors()} now allows for plotting all attractors inside one plot. Fixed minor bugs.} } } \section{Changes in version 2.1.1}{ \itemize{ \item{Fixed compilation errors on Windows.} } } \section{Changes in version 2.1.0}{ \subsection{Modified functions}{ \itemize{ \item{\code{getAttractors()} and \code{simulateSymbolicModel()} now support the identification of attractors in large networks based on a formulation as a satisfiability (SAT) problem. } \item{\code{plotAttractors()} and \code{plotSequence()} now plot the genes in the order of the network instead of the reverse order by default. This behaviour can be controlled using a new parameter \code{reverse} which is also available in \code{attractorsToLaTeX()} and \code{sequenceToLaTeX()}.} \item{Bugfix regarding negated temporal predicates in \code{simulateSymbolicModel()}.} } } } \section{Changes in version 2.0.2}{ \subsection{Modified functions}{ \itemize{ \item{Fixed undefined behaviour in \code{markovSimulation()}.} } } } \section{Changes in version 2.0.1}{ \subsection{Modified functions}{ \itemize{ \item{Fixed memory misalignment in \code{simulateSymbolicModel()}.} \item{\code{loadSBML()} now accepts nodes that are constant, but have no initial value.} } } } \section{Changes in version 2.0}{ \subsection{New functions}{ \itemize{ \item{Support of temporal networks, and inclusion of a new simulator \code{simulateSymbolicModel()} to simulate these networks. Related functions include \code{truthTableToSymbolic()} and \code{symbolicToTruthTable()} to convert networks between the symbolic representation used by the new simulator and the truth table representation employed by the standard simulator.} \item{New function \code{perturbTrajectories()} to assess the robustness of networks to noise in the states}.} } \subsection{Modified functions}{ \itemize{ \item{\code{loadNetwork()} can now load networks in a symbolic representation and with temporal extensions. \code{loadSBML()} and \code{loadBioTapestry()} can load symbolic networks without temporal extensions. } \item{Most functions of the package have been adapted to work either with the symbolic representation or with the truth table representation of networks.} \item{\code{plotSequence()} and \code{sequenceToLaTeX()} now visualize the attractor.} \item{\code{reconstructNetwork()} now supports the specification of prior knowledge in form of required or excluded dependencies. Furthermore, it can now reconstruct networks from perturbation time series. By default, the function now returns incomplete functions with "don't care" values" instead of enumerating all possible functions. } \item{\code{generateTimeSeries()} can now generate artificial perturbation data with simulated knock-out or overexpression of genes.} \item{\code{generateRandomNKNetwork()} can now be supplied with a user-defined generation function for the transition functions. Generation functions \code{generateCanalyzing()} and \code{generateNestedCanalyzing()} for canalyzing functions and nested canalyzing functions are included in the package.} \item{\code{testNetworkProperties()} supports several new tests that perturb the network states instead of the networks themselves. These are available in the test functions \code{testAttractorRobustness()} and \code{testTransitionRobustness()}. } } } } \section{Changes in version 1.63}{ \subsection{Modified functions}{ \itemize{ \item{Fixed issues preventing the use of \pkg{BoolNet} on Big Endian systems.} \item{Eliminated some bad style code.} \item{Fixed some valgrind notes.} } } } \section{Changes in version 1.62}{ \subsection{Modified functions}{ \itemize{ \item{Minor bugfixes in \code{loadNetwork()}.} \item{Fixed undefined behaviour warnings for GCC 4.9.} } } } \section{Changes in version 1.61}{ \subsection{Modified functions}{ \itemize{ \item{Bugfixes in \code{plotAttractors()} and \code{plotSequence()}.} \item{Fixed compatibility issues with R 3.0 alpha.} } } } \section{Changes in version 1.60}{ \subsection{New functions}{ \itemize{ \item{Support for SBML: \code{loadSBML()} and \code{toSBML()} import from and export to SBML documents with the \code{sbml-qual} extension package.} \item{\code{saveNetwork()} stores networks in the \pkg{BoolNet} file format.} } } \subsection{Modified functions}{ \itemize{ \item{The DNF generator employed by \code{generateRandomNKNetwork()} and \code{simplifyNetwork()} (as well as by the new functions \code{saveNetwork()} and \code{toSBML()}) now supports minimizing the canonical DNFs.} } } } \section{Changes in version 1.51}{ \subsection{Modified functions}{ \itemize{ \item{\pkg{BoolNet} now supports the modified interface of \pkg{igraph} 0.6 in all plotting functions, but is still compatible with older versions of \pkg{igraph}.} \item{\code{loadNetwork()} supports comment lines in the network files.} } } } \section{Changes in version 1.50}{ \subsection{New functions}{ \itemize{ \item{\code{generateTimeSeries()} generates random state sequences from an existing network.} \item{\code{plotSequence()} and \code{sequenceToLaTeX()} plot and export sequences of states similar to \code{plotAttractors()} and \code{attractorsToLaTeX()}.} \item{\code{getAttractorSequence()} extracts the states of a single synchronous attractor from an attractor information structure as a data frame.} \item{\code{generateState()} provides a simple way to specify network states using partial assignments.} } } \subsection{Modified functions}{ \itemize{ \item{\code{getPathToAttractor()} has an additional parameter \code{includeAttractorStates} specifying which attractor states should be included in the path. The default behaviour has been changed to include all attractor states.} \item{\code{generateRandomNKNetwork()} now supports the generation of networks using specific classes of functions. For this purpose, it has two new parameters \code{validationFunction} and \code{failureIterations}.} \item{By default, \code{loadNetwork()} no longer changes gene names to lower case. If this behaviour is desired, it can be reactivated using the new \code{lowercaseGenes} parameter.} \item{\code{stateTransition()} now names the state vector using the gene names.} \item{\code{plotAttractors()} has a new parameter \code{drawLegend} to disable the legend.} \item{The \code{randomChainLength} parameter of \code{getAttractors()} now defaults to 10000.} \item{\code{getAttractors()}, \code{reconstructNetwork()} and \code{markovSimulation()} can now be interrupted by the user.} } } } BoolNet/inst/doc/0000755000176200001440000000000013455114165013343 5ustar liggesusersBoolNet/inst/doc/example.btp0000644000176200001440000002616413277247010015514 0ustar liggesusers BoolNet/inst/doc/BoolNet_package_vignette.Snw.Rnw0000644000176200001440000026734613451415104021536 0ustar liggesusers\documentclass[a4paper]{article} \SweaveOpts{keep.source=TRUE} %\VignetteIndexEntry{Detailed introduction to all major features of BoolNet} %\usepackage{a4wide} \usepackage{graphicx} \usepackage{amsmath} \usepackage{hyperref} \usepackage{listings} \lstset{breaklines=true, breakautoindent=false, breakindent=0pt, columns=fullflexible,keepspaces=true, basicstyle=\small\ttfamily} \setlength{\parindent}{0em} \setlength{\parskip}{0.2em} \title{BoolNet package vignette} \author{Christoph M\"ussel, Martin Hopfensitz, Hans A. Kestler} \widowpenalty=10000 \clubpenalty=10000 \hyphenation{me-thods pro-per-ties re-pre-sen-ta-tion} \begin{document} \SweaveOpts{concordance=TRUE} \maketitle \tableofcontents \clearpage \section{Introduction} \texttt{BoolNet} is an R package that provides tools for assembling, analyzing and visualizing synchronous and asynchronous Boolean networks as well as probabilistic Boolean networks. This document gives an introduction to the usage of the software and includes examples for use cases. \texttt{BoolNet} supports four types of networks: \begin{description} \item[Synchronous Boolean networks]{ consist of a set of Boolean variables \[ X = \left\{X_1, \ldots, X_n \right\} \] and a set of transition functions \[ F=\left\{ f_{1},\ldots,f_{n}\right\}, \] one for each variable. These transition functions map an input of the Boolean variables in $X$ to a Boolean value ($0$ or $1$). We call a Boolean vector $\mathbf{x}(t) = \left(x_1(t), \ldots, x_n(t) \right)$ the {\em state} of the network at time $t$. Then, the next state of the network $\mathbf{x}(t)$ is calculated by applying {\em all} transition functions $f_i(\mathbf{x}(t-1))$. In a biological context, genes can be modeled as Boolean variables ({\em active/expressed} or {\em inactive/not expressed}), and the transition functions model the dependencies among these genes. In the synchronous model, the assumption is that all genes are updated at the same time. This simplification facilitates the analysis of the networks.} \item[Asynchronous Boolean networks]{ have the same structure as synchronous Boolean networks. Yet, at each point of time $t$, only {\em one} of the transition functions $f_i \in F$ is chosen at random, and the corresponding Boolean variable is updated. This corresponds to the assumption that in a genetic network, gene expression levels are likely to change at different points of time. In the most common model, the gene to be updated is chosen uniformly among all genes. Moreover, \texttt{BoolNet} supports specifying non-uniform update probabilities for the genes.} \item[Probabilistic Boolean networks (PBN)]{ allow for specifying more than one transition function per variable/gene. Each of these functions has a probability to be chosen, where the probabilities of all functions for one variable sum up to 1. Formally \[ F=\left\{\left\{\left(f_{11}, p_{11}\right), \ldots, \left(f_{1k_1}, p_{1k_1}\right)\right\}, \ldots, \left\{\left(f_{n1}, p_{n1}\right), \ldots, \left(f_{nk_n}, p_{nk_n}\right)\right\}\right\} \] where $k_i$ is the number of alternative transition functions for variable $i$, and $p_{ij}$ is the probability that function $j$ is chosen for variable $i$. A state transition is performed by selecting one function for each gene based on the probabilities and applying the chosen functions synchronously.} \item[Temporal Boolean networks]{ are Boolean networks that incorporate temporal predicates and discrete time delays. Here, the next state $x(t)$ may not only depend on $x(t-1)$, but can depend on any predecessor state $x(t - \Delta), \Delta \in \{1, 2, \ldots\}$. Furthermore, $x(t)$ may also directly depend on the time step $t$ itself. } \end{description} In \texttt{BoolNet}, there are different structure classes representing these network types: \begin{description} \item[\emph{BooleanNetwork} objects]{ contain synchronous and asynchronous Boolean networks. Here, the transition functions are internally represented as truth tables.} \item[\emph{ProbabilisticBooleanNetwork} objects]{ encode Probabilistic Boolean networks. They use a truth table representation as well.} \item[\emph{SymbolicBooleanNetwork} objects]{ represent synchronous and temporal Boolean networks. They encode Boolean functions in a symbolic form, i.e. as expression trees.} \end{description} As we have seen, the networks are represented in two different forms: The truth table representation, which basically maps inputs to the corresponding output values, is usually the most efficient representation for synchronous, asynchronous and probabilistic networks and uses a very fast simulator. However, this representation grows exponentially with the number of inputs and is therefore inappropriate for networks with a high number of inputs. This is particularly the case for temporal networks, where each unique time delay for a gene encodes an input. Hence, temporal networks are represented by directly encoding the corresponding Boolean expressions and use a different simulator. As synchronous Boolean networks are a special case of temporal networks (with all time delays being 1), these networks can also be represented as \emph{SymbolicBooleanNetwork} objects. The package provides several methods of constructing networks: Networks can be loaded from files in which human experts describe the dependencies between the genes. Furthermore, they can be reconstructed from time series of gene expression measurements. It is also possible to generate random networks. This can be helpful for the identification of distinct properties of biological networks by comparison to random structures. The different methods of assembling networks are described in Section~\ref{sec:assemblingnetworks}. In Section~\ref{sec:networkanalysis}, tools for the analysis and visualization of network properties are introduced. For synchronous, asynchronous and temporal Boolean networks, the most important tool is the identification of attractors. Attractors are cycles of states and are assumed to be associated with the stable states of cell function. Another possibility of identifying relevant states is the included Markov chain simulation. This method is particularly suited for probabilistic networks and calculates the probability that a state is reached after a certain number of iterations. To test the robustness of structural properties of the networks to noise and mismeasurements, the software also includes extensive support for perturbing networks. In this way, it is possible to test these properties in noisy copies of a biological network. In Section~\ref{sec:importexport}, the interaction of \texttt{BoolNet} with related software is described. In particular, the import from and export to SBML is discussed. Also, the necessary steps to import networks import networks from BioTapestry and to export networks to Pajek are outlined. For the examples in the following sections, we assume that the \texttt{BoolNet} package has been properly installed into the R environment. This can be done by typing <>= install.packages("BoolNet") @ into the R console or by the corresponding menu entries in an R GUI. For some of the plots, the \texttt{igraph} package is required and must be installed in your R environment as well. This is analogous to installing \texttt{BoolNet}. For the BioTapestry and SBML import, the \texttt{XML} package must be installed. After installation, the \texttt{BoolNet} package can be loaded via <<>>= library(BoolNet) @ \section{Assembling networks}\label{sec:assemblingnetworks} \subsection{Assembling a network from expert knowledge} A major advantage of Boolean networks is the fact that natural-language statements can easily be transferred into this representation. This allows researchers for building Boolean networks entirely from expert knowledge, for example by collecting statements on gene dependencies from literature and expressing them as Boolean rules. \texttt{BoolNet} is able to read in networks consisting of such rule sets in a standardized text file format. In such a file, each line consists of a target gene and an update rule, usually separated by a comma. Optionally, it is also possible to add a probability for the rule if the file describes a probabilistic network. The first line of such a file is a header \begin{samepage} \begin{verbatim} targets, factors \end{verbatim} or \begin{verbatim} targets, factors, probabilities \end{verbatim} \end{samepage} To illustrate the process of transforming natural-language statements into Boolean rules, we take a look at the mammalian cell cycle network introduced by Faur\'e et al. \cite{faure06}. In Table 1 of this paper, the authors list natural-language statements of gene dependencies and the corresponding Boolean expressions. The following rules are taken from this table. For gene CycD, Faur\'e et al. state: \begin{quote} \textit{CycD is an input, considered as constant.} \end{quote} Transforming this into a Boolean rule is rather simple: CycD does not change its value, which means that its value after a transition only depends on its previous value. Thus, the transition rule is \begin{verbatim} CycD, CycD \end{verbatim} Gene Rb has a more complex description: \begin{quote} \textit{Rb is expressed in the absence of the cyclins, which inhibit it by phosphorylation [...]; it can be expressed in the presence of CycE or CycA if their inhibitory activity is blocked by p27.} \end{quote} As a general rule, inhibition can be represented by a Boolean negation. In the \texttt{BoolNet} file format, a negation is expressed by the \texttt{!} character. The referenced cyclins comprise the genes CycA, CycB, CycD, and CycE. If {\em all} these genes are absent, Rb is expressed -- i.e. if CycA is not expressed {\em and} CycB is not expressed {\em and} CycD is not expressed {\em and} CycE is not expressed. A logical AND is embodied by the \texttt{\&} character. Consequently, the first part of the rule is \begin{verbatim} ! CycA & ! CycB & ! CycD & ! CycE \end{verbatim} In combination with the above statement, the fact that Rb can be expressed in the presence of CycE and CycA if p27 is active means that CycB and CycD must not be active. Thus, the second part of the rule is \begin{verbatim} p27 & ! CycB & ! CycD \end{verbatim} This statement is an exception (or alternative) to the first statement; this can be expressed as a logical OR, for which the \texttt{|} character is used. The complete rule for gene Rb is thus \begin{verbatim} Rb, (! CycA & ! CycB & ! CycD & ! CycE) | (p27 & ! CycB & ! CycD) \end{verbatim} After processing all genes in the table in this way, we get the following network description: \begin{samepage} \begin{footnotesize} \begin{verbatim} targets, factors CycD, CycD Rb, (! CycA & ! CycB & ! CycD & ! CycE) | (p27 & ! CycB & ! CycD) E2F, (! Rb & ! CycA & ! CycB) | (p27 & ! Rb & ! CycB) CycE, (E2F & ! Rb) CycA, (E2F & ! Rb & ! Cdc20 & ! (Cdh1 & UbcH10)) | (CycA & ! Rb & ! Cdc20 & ! (Cdh1 & UbcH10)) p27, (! CycD & ! CycE & ! CycA & ! CycB) | (p27 & ! (CycE & CycA) & ! CycB &! CycD) Cdc20, CycB Cdh1,(! CycA & ! CycB) | (Cdc20) | (p27 & ! CycB) UbcH10, ! Cdh1 | (Cdh1 & UbcH10 & (Cdc20 | CycA | CycB)) CycB, ! Cdc20 & ! Cdh1 \end{verbatim} \end{footnotesize} \end{samepage} Now save this description to a file ``cellcycle.txt'' in your R working directory. The network can be loaded via <>= cellcycle <- loadNetwork("cellcycle.txt") @ The result is an object of class \emph{BooleanNetwork} containing a truth table representation of the network. The same network is also included in \texttt{BoolNet} as an example and can be accessed via <<>>= data(cellcycle) @ \texttt{BoolNet} also provides several convenience operators that can be used to express complex Boolean functions in a compact way, e.g. \begin{itemize} \item \texttt{maj(a, b, ...)} is 1 if the majority of its operands are 1. Similarly, \texttt{sumgt(a, b, ..., N)} is 1 if more than $N$ operands are 1, \texttt{sumlt(a, b, ..., N)} is 1 if less than $N$ operands are~1, and \texttt{sumis(a, b, ..., N)} is 1 if exactly $N$ operands are 1. \item \texttt{all(a, b, ...)} is 1 if all its operands are 1 (i.e. a logical AND), and \texttt{any(a, b, ...)} is~1 if at least one of its operands is 1 (i.e. a logical OR). \end{itemize} The cell cycle network is a classical Boolean network, where each transition function only depends on the previous state of the network. E.g., \verb+CycB, ! Cdc20 & ! Cdh1+ can be written formally as $CycB(t) = \neg Cdc20(t-1) \wedge \neg Cdh1(t-1)$. As already discussed before, \texttt{BoolNet} also incorporates several temporal extensions. For example, a transition function can also depend on the states of genes at earlier time points: \begin{verbatim} a, b[-3] & b[-2] & b \end{verbatim} is 1 if b has been active in the previous three time steps. The operators described above can also incorporate time ranges. The previous statement can be written in a more compact way using the \texttt{all} operator: \begin{verbatim} a, all[d=-3..-1](b[d]) \end{verbatim} This defines a time delay variable \texttt{d} that can be used for time specifications inside the operator. It can also be used in arithmetic operations. E.g., \begin{verbatim} a, all[d=-3..-1](b[d] & c[d-1]) \end{verbatim} specifies that a is active if b has been active in the previous three time steps and c has been active at time $t-4$, $t-3$ and $t-2$. Apart from relative time specifications, the \texttt{BoolNet} network language also incorporates predicates that depend on the absolute time, i.e. the number of time steps that have elapsed since the initial state. \begin{samepage} For example, \begin{verbatim} a, timeis(3) \end{verbatim} specifies that \texttt{a} is active at time step 3 and inactive at all other time steps. Similarly, the predicates \texttt{timelt} and \texttt{timegt} evaluate to 1 before and after the specified time point respectively. \end{samepage} As the above examples do not cover all possibilities of the network description language, a full language specification is provided in Section~\ref{sec:appendix}. For temporal networks, \texttt{BoolNet} uses a special symbolic simulator that represents the functions as expression trees, whereas the standard simulator is based on a truth table representation. These simulators are discussed in Section~\ref{sec:networkanalysis}. As synchronous Boolean networks are a special case of temporal networks, they can also be simulated with the symbolic simulator. When a network is loaded from a file using \texttt{loadNetwork()}, the user can specify the parameter \texttt{symbolic=TRUE} to load it in form of a \emph{SymbolicBooleanNetwork} object instead of a \emph{BooleanNetwork} object. The same parameter is also available for the import functions discussed in Section~\ref{sec:importexport}. Temporal networks can only be loaded with \texttt{symbolic=TRUE}, as \texttt{BoolNet} cannot represent them as truth tables. \begin{sloppypar} As many network generation and modification routines (such as random network generation and network reconstruction that are discussed in the following sections) internally use the truth table representation, there are conversion routines \texttt{truthTableToSymbolic()} and \texttt{symbolicToTruthTable()} that convert synchronous Boolean networks of class \emph{BooleanNetwork} in a truth table representation to networks of class \emph{SymbolicBooleanNetwork} in a symbolic representation and vice versa. For more details, please refer to the manual. \end{sloppypar} \subsection{Reconstructing a network from time series} An entirely different approach of assembling a network is to infer rules from series of expression measurements of the involved genes over time. For example, microarray experiments can be conducted at different points of time to cover the expression levels of different cell states. To reconstruct networks from such data, \texttt{BoolNet} includes two reconstruction algorithms for synchronous Boolean networks, Best-Fit Extension~\cite{laehdesmaeki03} and REVEAL \cite{liang98}. REVEAL requires the inferred functions to match the input time series perfectly, hence it is not always able to reconstruct networks in the presence of noisy and inconsistent measurements. Best-Fit Extension retrieves a set of functions with minimum error on the input and is thus suited for noisy data. In the following, we introduce a tool chain for the reconstruction of a Probabilistic Boolean Network from time series using Best-Fit extension. Microarray measurements are usually represented as matrices of real-valued numbers which, for example, quantify the expression levels of genes. \texttt{BoolNet} includes a real-valued time series of gene measurements from a project to analyze the yeast cell cycle \cite{spellman98} which can be loaded using <<>>= data(yeastTimeSeries) @ This data contains four preselected genes and a series of 14 measurements for each of these genes. \begin{sloppypar} In a first step, the real-valued dataset has to be converted to binary data as required by the reconstruction algorithm. \texttt{BoolNet} offers several binarization algorithms in the function \texttt{binarizeTimeSeries()}. We here employ the default method which is based on $k$-means clustering (with $k=2$ for active and inactive): \end{sloppypar} <<>>= binSeries <- binarizeTimeSeries(yeastTimeSeries) @ The returned structure in \texttt{binSeries} has an element \texttt{\$binarizedMeasurements} containing the binary time series, and, depending on the chosen binarization method, some other elements describing parameters of the binarization. To reconstruct the network from this data, we call the Best-Fit Extension algorithm: <<>>= net <- reconstructNetwork(binSeries$binarizedMeasurements, method="bestfit", maxK=4) @ Here, \texttt{maxK} is the maximum number of input genes for a gene examined by the algorithm. The higher this number, the higher is the runtime and memory consumption of the reconstruction. \begin{samepage} We can now take a look at the network using <<>>= net @ \end{samepage} \begin{sloppypar} The dependencies among the genes in the network can be visualized using the \texttt{plotNetworkWiring()} function. In this graph, each gene corresponds to a vertex, and the inputs of transition functions correspond to edges. \end{sloppypar} <>= pdf("wiring1.pdf") par(mar = c(1, 1, 1, 1)) set.seed(333) plotNetworkWiring(net) dev.off() @ <>= plotNetworkWiring(net) @ plots a graph similar to that at the top of Figure~\ref{fig:wiring}. To use this function, you must install the \texttt{igraph} package. \begin{figure}[p] \centering \includegraphics[width=0.5\linewidth]{wiring1} \includegraphics[width=0.5\linewidth]{wiring2} \caption{The wiring graph of the reconstructed network without prior knowledge (top) and with the inclusion of prior knowledge (bottom). Each node of the graph represents one gene, and each arrow represents a gene dependency.} \label{fig:wiring} \end{figure} A network that involved the same genes was examined by Kim et al. \cite{kim07}. When comparing the wiring graph of our reconstructed network with the reference network presented in Figure~2 of this paper, one observes a very high similarity between the two networks. However, the reconstructed network comprises too many links for the gene Sic1: The reference network does not contain a self-regulation of Sic1 or regulation of Sic1 by Fkh2. If it is known in advance that these regulations are not plausible, such prior knowledge can be supplied to the reconstruction algorithm: <<>>= net <- reconstructNetwork(binSeries$binarizedMeasurements, method="bestfit", maxK=4, excludedDependencies = list("Sic1" = c("Sic1", "Fkh2"))) @ <>= pdf("wiring2.pdf") par(mar = c(1, 1, 1, 1)) set.seed(442) plotNetworkWiring(net) dev.off() @ The wiring of the reconstruction with prior knowledge is shown at the bottom of Figure~\ref{fig:wiring}. We can see that the two false links are now eliminated. Similar to \texttt{excludedDependencies}, there is also a parameter \texttt{requiredDependencies} that specifies dependencies that must be included in the network. When \texttt{reconstructNetwork()} discovers multiple functions for a gene with the minimum error on the input data, it includes all of these functions as alternative functions with equal probability. Consequently, the function returns a \texttt{ProbabilisticBooleanNetwork} structure. If you would like to obtain a \texttt{BooleanNetwork} object with only one function per gene from a probabilistic network, you can extract such a network by telling the software which of the functions you would like to use. This can be done by specifying the indices of the functions to extract: <<>>= net <- reconstructNetwork(binSeries$binarizedMeasurements, method="bestfit", maxK=4) functionIndices <- c(1,2,3,2) #select function index for each regulatory component dontCareDefaults <- lapply(seq_along(net$interactions), function(idx) rep(F, sum(net$interactions[[idx]][[functionIndices[idx]]]$func == -1))) #determine number of don't care values for each selected function and set them to 0 names(dontCareDefaults) <- net$genes singleNet <- chooseNetwork(net, functionIndices, dontCareValues = dontCareDefaults) @ In case of don't care values in reconstructed functions, it is possible to set them to 0 or 1 per default. The result is a Boolean network that is created by extracting the first function of gene Fkh2, the second function of genes Swi5 and Clb1, and the third function of gene Sic1 from the above probabilistic network: <<>>= singleNet @ \begin{sloppypar} \texttt{BoolNet} also supports the generation of artificial time series from existing networks: The \texttt{generateTimeSeries()} function generates a set of time series from a network using random start states and optionally adds Gaussian noise. \end{sloppypar} <>= set.seed(3176) @ <<>>= series <- generateTimeSeries(cellcycle, numSeries=100, numMeasurements=10, noiseLevel=0.1) @ generates a list of 100 time series by calculating 10 consecutive transitions from 100 randomly chosen network states in the mammalian cell cycle network. The series are subject to Gaussian noise with a standard deviation of 0.1, such that the result is a list of real-valued matrices. We can now binarize these simulated measurements and try to reconstruct the original network: <<>>= binSeries <- binarizeTimeSeries(series, method="kmeans") net <- reconstructNetwork(binSeries$binarizedMeasurements, method="bestfit") net @ Obviously, the number of generated time series is still to small to reconstruct the network unambiguously. However, the result comes close to the original network. We see that the functions of the network are not fully specified: At some positions, there are asterisks (\texttt{*}) denoting a \emph{don't care} value. This means that functions with a 0 and a 1 at this position match the time series equally well. That is, a partially defined function with $m$ asterisks corresponds to $2^m$ fully defined Boolean functions. It is also possible to generate these fully defined functions instead of the partially defined function by setting the parameter \texttt{returnPBN} to true (which was the behaviour prior to \texttt{BoolNet} version 2.0). For many \emph{don't care} values, this may consume a high amount of memory and computation time. \texttt{generateTimeSeries()} can also generate time series with artificial knock-outs and overexpressions: <>= set.seed(4463) @ <<>>= series <- generateTimeSeries(cellcycle, numSeries=10, numMeasurements=10, perturbations=1, noiseLevel=0.1) @ specifies that each generated time series is generated from a network where one randomly selected gene is artificially knocked down (constantly 0) or overexpressed (constantly 1). These perturbations are returned in an additional element \texttt{perturbations}. \begin{samepage} <<<>>= series$perturbations @ \end{samepage} Here, each column corresponds to the perturbations applied in one series. A value of 1 denotes an overexpression, a value of 0 denotes a knock-out, and an N/A value means that no perturbation was applied to this gene. The \texttt{reconstructNetwork()} function also supports the reconstruction from such perturbation experiments if it is known which genes were perturbed. First, we store the series and the perturbation matrix in separate variables and binarize the data as before: <<>>= perturbations <- series$perturbations series$perturbations <- NULL binSeries <- binarizeTimeSeries(series, method="kmeans") @ Now, we can reconstruct the network by specifying the \texttt{perturbations} parameter: <<>>= net <- reconstructNetwork(binSeries$binarizedMeasurements, method="bestfit", perturbations=perturbations) net @ As we generated only 10 series in this case, the reconstructed network is much more incomplete than in the previous reconstruction. In biological settings, perturbation experiments are probably one of the most frequent ways of exploring the behaviour of a regulatory network, as it is much easier to obtain various different responses by applying perturbations than by just measuring the wild type behaviour. \subsection{Creating random networks} To study structural properties of Boolean networks and to determine the specific properties of biological networks in comparison to arbitrary networks, it is often desirable to generate artificial networks. \texttt{BoolNet} comprises a facility for the generation of random $N$-$K$ networks \cite{kauffman69, kauffman93}. In the standard $N$-$K$ networks, $N$ is the total number of genes, and $K$ is the number of input genes for each gene transition function. Such a network can be generated using <<>>= net <- generateRandomNKNetwork(n=10, k=3) @ This creates a network with 10 genes, each of which has a transition function that depends on 3 genes and whose output is generated uniformly at random. Similarly, one can also specify different numbers of input genes for each gene: <<>>= net <- generateRandomNKNetwork(n=10, k=c(1,2,3,1,3,2,3,2,1,1)) @ \texttt{BoolNet} does not only support this standard case, but allows for different methods of choosing the numbers of input genes (parameter \texttt{topology}), the input genes themselves (parameter \texttt{linkage}), and the transition functions (parameter \texttt{functionGeneration}). In the following, some examples are presented. The command <<>>= net <- generateRandomNKNetwork(n=20, k=20, topology="scale_free") @ determines the numbers of input genes by drawing values from the scale-free Zeta distribution \cite{aldana03}. According to this distribution, most transition functions will have a small number of input genes, but a few transition functions may depend on a high number of genes. The shape of the Zeta distribution can be customized using an additional parameter \texttt{gamma}, which potentially increases the number of input genes when chosen small and vice versa. <<>>= net <- generateRandomNKNetwork(n=10, k=3, linkage="lattice") @ creates a network in which the transition functions of the genes depend on a choice of genes with adjacent indices \cite{aldana03_2}. This leads to networks with highly interdependent genes. It is also possible to influence the truth tables of the functions in several ways. The parameter \texttt{zeroBias} changes the ratio of 1 and 0 returned by the functions: <<>>= net <- generateRandomNKNetwork(n=10, k=3, functionGeneration="biased", zeroBias=0.75) @ generates a network in which the outcome of a transition function is 0 for around 75\% of the inputs. A more intricate way of influencing the function generation is the specification of generation functions. Generation functions explicitly generate functions according to a specific function class. \emph{Canalyzing functions} are assumed to occur frequently in biological systems~\cite{kauffman04}. A canalyzing function has the property that one input can determine the output value on its own, i.e. if this input is either active or inactive, the output of the function is always the same. \emph{Nested canalyzing functions} are a recursive definition of canalyzing functions, where the part of the function that does not depend on the canalyzing input is a canalyzing function for another input. Such functions can be generated using the built-in generation functions \texttt{generateCanalyzing()} and \texttt{generateNestedCanalyzing()}: <<>>= net1 <- generateRandomNKNetwork(n=10, k=3, functionGeneration=generateCanalyzing, zeroBias=0.75) net2 <- generateRandomNKNetwork(n=10, k=3, functionGeneration=generateNestedCanalyzing, zeroBias=0.75) @ It is also possible to define own generation functions: A generation function receives a vector \texttt{input} of input gene indices as a parameter and returns a truth table result column with \verb+2^length(input)+ values representing the function. If no explicit generation scheme is known for the function class of interest, validation functions can be used instead of generation functions. Validation functions verify whether randomly generated functions belong to a specific function class and reject invalid functions. Naturally, this is much less efficient than generating appropriate functions directly. An example is the generation of monotone functions, which are also thought to be biologically plausible. These function account for the assumption that a transcription factor usually either activates or inhibits a specific target gene, but does not change the type of regulation depending on other factors~\cite{maucher11}. We can specify a simple validation function that checks whether a Boolean function is monotone: \begin{samepage} <<>>= isMonotone <- function(input, func) { for (i in seq_len(ncol(input))) # check each input gene { groupResults <- split(func, input[,i]) if (any(groupResults[[1]] < groupResults[[2]]) && any(groupResults[[1]] > groupResults[[2]])) # the function is not monotone return(FALSE) } return(TRUE) } @ \end{samepage} \begin{sloppypar} Here, \texttt{input} is a matrix containing the input part of the transition table, and \texttt{func} is the output of the Boolean function. In a monotone function, the values of the target may only change in one direction when switching one input. Hence, a function for which switching the value of an input gene sometimes switches the target from active to inactive, but also sometimes switches it from inactive to active is not monotone. This is validated by comparing the two groups of transition table entries for which the current input is active and inactive respectively. If a validation function is supplied to \texttt{generateRandomNKNetwork()}, the generator generates Boolean functions until either the validation function returns \texttt{TRUE} or the maximum number of iterations (specified by the parameter \texttt{failureIterations}) is reached, in which case it fails. \end{sloppypar} <<>>= net <- generateRandomNKNetwork(n=10, k=3, validationFunction="isMonotone", failureIterations=1000) @ creates a network with 10 genes in which all functions have 3 inputs, of which at least one is canalyzing. By default, \texttt{generateRandomNKNetwork()} creates functions that cannot be simplified, i.e. that do not contain any genes that are irrelevant for the outcome of the function. If desired, this behaviour can be changed by setting \texttt{noIrrelevantGenes} to \texttt{FALSE}. The presented parameters can be combined, and there are further options and parameters, so that a broad variety of networks with different structural properties can be generated. For a full reference of the possible parameters, please refer to the manual. \subsection{Knock-out and overexpression of genes} \texttt{BoolNet} allows for temporarily knocking out and overexpressing genes in a network without touching the transition functions. This means that genes can be set to a fixed value, and in any calculation on the network, this fixed value is taken instead of the value of the corresponding transition function. Knocked-out and overexpressed genes speed up the analysis of the network, as they can be ignored in many calculations. For example, to knock out CycD in the mammalian cell cycle network, we call <<>>= data(cellcycle) knockedOut <- fixGenes(cellcycle, "CycD", 0) @ or alternatively use the gene index <<>>= knockedOut <- fixGenes(cellcycle, 1, 0) @ This sets the gene constantly to 0. To over-express the gene (i.e. to fix it to 1), the corresponding call is <<>>= overExpressed <- fixGenes(cellcycle, "CycD", 1) @ The command <<>>= originalNet <- fixGenes(knockedOut, "CycD", -1) @ reactivates the gene (for both knock and overexpression) and resets the network to its original state. The function also accepts multiple genes in a single call, such as <<>>= newNet <- fixGenes(cellcycle, c("CycD","CycE"), c(0,1)) @ which knocks out CycD and overexpresses CycE. \section{Network analysis}\label{sec:networkanalysis} \subsection{Simulation of state transitions} To simulate a state transition and identify successor states of a given state, \texttt{BoolNet} includes the function \texttt{stateTransition()}. The function supports transitions for all four types of networks. The following code performs a synchronous state transition for the state in which all genes are set to 1 on the mammalian cell cycle network: <<>>= data(cellcycle) stateTransition(cellcycle, rep(1,10)) @ To calculate all state transitions in a synchronous network until an attractor is reached, you can call <<>>= path <- getPathToAttractor(cellcycle, rep(0,10)) path @ The returned matrix consists of the subsequent states until an attractor is reached. Depending on the optional parameter \texttt{includeAttractorStates}, the sequence comprises all attractor states, only the first attractor state or none of the attractor states. A sequence can be visualized by plotting a table of state changes: <>= pdf("sequence.pdf") par(mar = c(1, 4, 2, 1)) plotSequence(sequence=path) dev.off() @ <>= plotSequence(sequence=path) @ \begin{figure}[t] \centering \includegraphics[width=0.6\linewidth]{sequence} \caption{Visualization of a sequence of states in the mammalian cell cycle network. The columns of the table represent consecutive states of the time series. The last state is the steady-state attractor of the network.} \label{fig:sequence} \end{figure} The result is depicted in Figure~\ref{fig:sequence}. \texttt{plotSequence()} also includes a shortcut that calculates the sequence directly if a network and a start state are supplied. It also provides an alternative way of visualizing the sequence as a state transition by setting \texttt{mode="graph"}. The function <>= sequenceToLaTeX(sequence=path, file="sequence.tex") @ creates a \LaTeX\ table similar to \texttt{plotSequence()} function document. In many cases, start states are defined by a set of active genes. Instead of supplying a full state vector, one can also supply only these active genes using the \texttt{generateState()} function. <<>>= startState <- generateState(cellcycle, specs=c("CycD"=1,"CycA"=1)) stateTransition(cellcycle,startState) @ \begin{sloppypar} calculates a state transition starting from a state where only the genes \emph{CycD} and \emph{CycA} are active, while all other genes are inactive (which is controlled by the \texttt{default} parameter of \texttt{generateState()}). \end{sloppypar} For temporal Boolean networks (objects of class \emph{SymbolicBooleanNetworks}), the above functions can be utilized mostly in the same way. We demonstrate this using a small temporal network example of the IGF (Insulin-like growth receptor) pathway that is included in the package and can be loaded via <<>>= data(igf) @ The model illustrates the activation and feedback inhibition of the PI3K-Akt-mTOR signalling cascade through IGF and IRS. A state transition from the initial state in which the trigger of the pathway -- IGF -- is active, can be performed using <<>>= startState <- generateState(igf, specs=c("IGF"=1)) stateTransition(igf, startState) @ The IGF network incorporates time delays of up to 3. Therefore, the last three states have to be known to calculate a successor state. If only a single state is supplied -- as above -- the function assumes that the state was the same before. This can be seen when calculating the sequence to the attractor using <<>>= getPathToAttractor(network=igf,state=startState) @ Here, the states at $t=-2, \ldots 0$ are the same as the generated start state. If it is required to specify multiple predecessor states here, a matrix of states can be supplied instead of a vector. E.g., <<>>= startState <- generateState(igf, specs=list("IGF"=c(0,0,1))) startState @ specifies that the first two states ($t=-2, t=-1$) should have all genes inactive, while IGF is activated only at $t=0$. This time, we plot the sequence instead of printing it: \begin{figure}[bt] \centering \includegraphics[width=0.6\linewidth]{sequence_igf} \caption{Visualization of a sequence of states in the IGF network. The columns of the table represent consecutive states of the time series. After activation of IGF, the attractor consisting of 14 states is entered immediately. This attractor represents the activation and inactivation of the PI3K-Akt-mTOR signalling cascade through IGF and IRS.} \label{fig:sequence_igf} \end{figure} <>= pdf("sequence_igf.pdf") par(mar = c(1, 4, 2, 1)) plotSequence(network=igf, startState=startState) dev.off() @ <>= plotSequence(network=igf, startState=startState) @ The result is depicted in Figure~\ref{fig:sequence_igf}. \texttt{stateTransition()} can also perform asynchronous updates. A random asynchronous transition is performed using <>= set.seed(54321) @ <<>>= stateTransition(cellcycle, rep(1,10), type="asynchronous") @ In this case, the fifth gene, CycA, was chosen at uniformly at random and updated. \begin{samepage} We can also specify non-uniform probabilities for the genes, for example <>= set.seed(4321) @ <<>>= stateTransition(cellcycle, rep(1,10), type="asynchronous", geneProbabilities=c(0.05,0.05,0.2,0.3,0.05,0.05,0.05,0.05,0.1,0.1)) @ This obviously increases probabilities for the genes 3 and 4 (E2F and CycE) to be chosen. In this case, CycE was chosen for the update. \end{samepage} \enlargethispage{0.5cm} Sometimes you do not want a random update at all, but would like to specify which gene should be chosen for the update. This is possible via <<>>= stateTransition(cellcycle, rep(1,10), type="asynchronous", chosenGene="CycE") @ In probabilistic Boolean networks, a state transition is performed by choosing one of the alternative functions for each gene and applying this set of functions to the current state. The following performs a state transition with a randomly chosen set of functions on the artificial probabilistic Boolean network taken from \cite{shmulevich02} with 3 genes, starting from state (0,1,1): <>= set.seed(432) @ <<>>= data(examplePBN) stateTransition(examplePBN, c(0,1,1), type="probabilistic") @ You may get a different result, as the functions are chosen randomly according to the probabilities stored in the network. If you would like to execute a specific set of transition functions, you can supply this in an additional parameter: <<>>= stateTransition(examplePBN, c(0,1,1), type="probabilistic", chosenFunctions=c(2,1,2)) @ This call uses the second function for gene x1 and x3 and the first function for gene x2. \subsection{Identification of attractors} Attractors are stable cycles of states in a Boolean network. As they comprise the states in which the network resides most of the time, attractors in models of gene-regulatory networks are expected to be linked to phenotypes \cite{kauffman93,li04}. Transitions from all states in a Boolean network eventually lead to an attractor, as the number of states in a network is finite. All states that lead to a certain attractor form its {\em basin of attraction}. \texttt{BoolNet} is able to identify attractors in synchronous and asynchronous Boolean networks. There are three types of attractors in these networks: \begin{description} \item[Simple attractors]{occur in synchronous and temporal Boolean networks and consist of a set of states whose synchronous transitions form a cycle.} \item[Complex or loose attractors]{are the counterpart of simple attractors in asynchronous networks. As there is usually more than one possible transition for each state in an asynchronous network, a complex attractor is formed by two or more overlapping loops. Precisely, a complex attractor is a set of states in which all asynchronous state transitions lead to another state in the set, and a state in the set can be reached from all other states in the set.} \item[Steady-state attractors]{are attractors that consist of only one state. All transitions from this state result in the state itself. These attractors are the same both for synchronous and asynchronous update of a network. Steady states are a special case of both simple attractors and complex attractors.} \end{description} The \texttt{getAttractors()} function incorporates several methods for the identification of attractors in synchronous and asynchronous networks. We present these methods using the included mammalian cell cycle network as an example. This network has one steady-state attractor, one simple synchronous attractor consisting of 7 states, and one complex asynchronous attractor with 112 states (see \cite{faure06}). We first demonstrate the use of exhaustive synchronous search. This means that the software starts from all possible states of the network and performs synchronous state transitions until a simple or steady-state attractor is reached. \pagebreak[4] <>= data(cellcycle) attr <- getAttractors(cellcycle) attr @ \begin{lstlisting}[linewidth=.9\linewidth] <>= attr <- getAttractors(cellcycle) attr @ \end{lstlisting} Typing \texttt{attr} calls a special print method that presents the attractor in a human-readable way. Here, a state in an attractor is represented by a binary vector, where each entry of the vector codes for one gene. An alternative is to print only the names of the active genes (i.e., the genes that are set to 1) instead of the full vector by calling the \texttt{print()} method explicitly with a changed parameter: <>= print(attr, activeOnly=TRUE) @ \begin{lstlisting}[linewidth=.9\linewidth] <>= print(attr, activeOnly=TRUE) @ \end{lstlisting} We can see that the search identified both synchronous attractors. \begin{sloppypar} The \texttt{AttractorInfo} structure stores the attractors in an encoded form. The function \texttt{getAttractorSequence()} can be used to obtain the sequence of states that constitute a specific synchronous attractor as a table: \end{sloppypar} <<>>= getAttractorSequence(attr, 2) @ retrieves the states that make up the second (i.e., the 7-state attractor) as a data frame with the genes in the columns and the successive states in the rows. The advantage of the exhaustive search method is that the complete transition table is calculated and stored in the return value. This table stores information that is used by a number of analysis methods described below. You can extract the transition table in a data frame and print it out using <>= tt <- getTransitionTable(attr) tt @ \begin{verbatim} State Next state Attr. basin # trans. to attr. 0000000000 => 0110010111 1 4 [...] 1111111111 => 1000001110 2 1 Genes are encoded in the following order: CycD Rb E2F CycE CycA p27 Cdc20 Cdh1 UbcH10 CycB \end{verbatim} In the printed table, the first column denotes the initial state, the second column contains the state after the transition, the first column contains the number of the attractor that is finally reached from this state, and the fourth column lists the number of state transitions required to attain this attractor. A table of the same structure is returned by <>= getBasinOfAttraction(attr, 1) @ which extracts all states from the transition table that belong to the basin of attraction of attractor one (i.e., whose attractor number in column 3 is 1). If you are interested in information on a single state (here: the state with all genes set to 1), you can type <>= getStateSummary(attr, c(1,1,1,1,1,1,1,1,1,1)) @ \begin{verbatim} State Next state Attr. basin # trans. to attr. 1111111111 => 1000001110 2 1 Genes are encoded in the following order: CycD Rb E2F CycE CycA p27 Cdc20 Cdh1 UbcH10 CycB \end{verbatim} The visualization function \texttt{getStateGraph()} makes use of the transition table as well: It plots a transition graph in which the basins of attraction are drawn in different colors, and the attractors are highlighted. The result of <>= pdf("stategraph1.pdf") set.seed(43210) par(mar=c(1,1,1,1)) plotStateGraph(attr) dev.off() @ <>= plotStateGraph(attr) @ is depicted at the top of Figure~\ref{fig:stategraph}. The blue basin belongs to attractor 1, and the green basin belongs to attractor 2. The above call does not ensure that the basins of attraction are clearly separated in the plot. If this is desired, one can choose to use a piecewise layout, which means that the layouting function is applied separately to each basin of attraction, and the basins are drawn side by side. The result of <>= pdf("piecewisestategraph.pdf") set.seed(43210) par(mar=c(1,1,1,1)) plotStateGraph(attr, piecewise=TRUE) dev.off() @ <>= plotStateGraph(attr, piecewise=TRUE) @ is depicted at the bottom of Figure~\ref{fig:stategraph}. \begin{figure}[p] \centering \includegraphics[width=0.7\linewidth]{stategraph1} \includegraphics[width=0.7\linewidth]{piecewisestategraph} \caption{The state graph of the mammalian cell cycle network using the regular layout (top) and using a piecewise layout (bottom). Each node represents a state of the network, and each arrow is a state transition. The colors mark different basins of attraction. Attractors are highlighted using bold lines.} \label{fig:stategraph} \end{figure} Exhaustive search consumes a high amount of time and memory with increasing size of the network, which makes it intractable for large networks (\texttt{BoolNet} currently supports networks with up to 29 genes for exhaustive search due to memory restrictions in {\em R}). Therefore, \texttt{BoolNet} also allows for heuristic search of attractors, which works for larger networks as well. Heuristic synchronous search starts from a predefined small set of states and identifies the attractors to which state transitions from these states lead. The start states can either be supplied, or they can be calculated randomly. <>= attr <- getAttractors(cellcycle, method="random", startStates=100) @ chooses 100 random start states for the heuristic search and usually identifies both attractors. <>= attr <- getAttractors(cellcycle, method="chosen", startStates=list(rep(0,10),rep(1,10))) @ starts from the states \texttt{(0,0,0,0,0,0,0,0,0,0)} and \texttt{(1,1,1,1,1,1,1,1,1,1)} and again identifies both synchronous attractors. \begin{sloppypar} For the previous calls, only the subset of the transition table traversed by the heuristic is returned. This means that there is no guarantee that, e.g. \texttt{getBasinOfAttraction()} returns the complete basin of attraction of an attractor in heuristic mode. \end{sloppypar} Synchronous attractors can be visualized by plotting a table of changes of gene values in the states of the attractor: <>= plotAttractors(attr, subset=2) @ <>= pdf("attractor1.pdf") par(mar=c(1,5,1,1)) plotAttractors(attr, subset=2) dev.off() @ plots the state changes of the simple attractor with 7 states, as depicted in Figure~\ref{fig:attractor1}. Similarly, <>= attractorsToLaTeX(attr, subset=2, file="attractors.tex") @ exports the same state table to a \LaTeX\ document. \begin{figure}[t] \centering \includegraphics[width=0.65\linewidth]{attractor1} \caption{Visualization of the state changes in an attractor. The columns of the table represent consecutive states of the attractor. On top, the percentage of states leading to the attractor is supplied.} \label{fig:attractor1} \end{figure} To identify asynchronous attractors, another special heuristic algorithm is included. This algorithm again starts from a small subset of states and makes a number of random transitions to reach an attractor with a high probability. After that, a validation step is performed to analyze whether a complex attractor has been identified. The command <>= attr <- getAttractors(cellcycle, type="asynchronous", method="random", startStates=500) @ conducts an asynchronous search with 500 random start states on the mammalian cell cycle network. In this case, the algorithm has identified both the steady-state attractor and the complex attractor: \enlargethispage{0.5cm} <>= attr @ \begin{verbatim} Attractor 1 is a simple attractor consisting of 1 state(s): |--<---------| V | 0100010100 | V | |-->---------| Genes are encoded in the following order: CycD Rb E2F CycE CycA p27 Cdc20 Cdh1 UbcH10 CycB Attractor 2 is a complex/loose attractor consisting of 112 state(s) and 338 transition(s): 1011101111 => 1011101110 [...] 1000000000 => 1010000000 Genes are encoded in the following order: CycD Rb E2F CycE CycA p27 Cdc20 Cdh1 UbcH10 CycB \end{verbatim} For the complex attractor, the involved transitions are printed out. By default, the algorithm tries to avoid self-loops, i.e. transitions that lead to the same state again. This means that self-loop transitions are only allowed if there is no other transition that leads to a different state. If you would like to allow the algorithm to enter self-loops even if transitions to different states are possible, you can call <>= attr <- getAttractors(cellcycle, type="asynchronous", method="random", startStates=500, avoidSelfLoops=FALSE) @ In the resulting complex attractor with 112 states, there are 450 transitions instead of 338 transitions, which is due to the additional self-loops. The asynchronous heuristic search does not return a transition table, such that the above analysis methods cannot be applied here. \begin{figure}[tb] \centering \includegraphics[width=0.55\linewidth]{attractor2} \caption{Graph representation of the complex attractor in the mammalian cell cycle network. Each node represents a state of the complex attractor, and each arrow represents a state transition.} \label{fig:attractor2} \end{figure} As there are multiple possible transitions for each state, complex attractors cannot be visualized as in Figure~\ref{fig:attractor1}. For this reason, \texttt{plotAttractors()} supports a graph mode that visualizes the transitions among the states in the attractor: <>= pdf("attractor2.pdf") par(mar=c(1,1,1,1)) plotAttractors(attr, subset=2, mode="graph", drawLabels=FALSE) dev.off() @ <>= plotAttractors(attr, subset=2, mode="graph", drawLabels=FALSE) @ plots the 112-state attractor as depicted in Figure~\ref{fig:attractor2}. We omit the state labels (i.e. the gene values) due to the high number of states. This plot again requires the \texttt{igraph} package. \begin{sloppypar} Although \texttt{getAttractors()} can also be applied to temporal networks and other networks that are in a symbolic representation (i.e. \emph{SymbolicBooleanNetwork} objects), this function is only a shortcut to the simulation function \texttt{simulateSymbolicModel()} in this case. It is advised to use \texttt{simulateSymbolicModel()} directly , as it provides more options. For the temporal model of the IGF pathway included in \texttt{BoolNet}, an exhaustive simulation can be performed as follows: \end{sloppypar} <>= sim <- simulateSymbolicModel(igf) sim @ \begin{lstlisting}[linewidth=.9\linewidth] <>= sim <- simulateSymbolicModel(igf) sim @ \end{lstlisting} By default, the result object of class \emph{SymbolicSimulation} comprises several components: \begin{itemize} \item A list of sequences \texttt{sequences} from each start state to the corresponding attractor. If this component is not desired, the parameter \texttt{returnSequences} can be set to false. \item A graph structure \texttt{graph} that comprises all traversed state transitions. If this component is not desired, the parameter \texttt{returnGraph} can be set to false. \item The identified attractors \texttt{attractors}. If this component is not desired, the parameter \texttt{returnAttractors} can be set to false. \end{itemize} In this case, the network has two attractors: A steady state describes the inactive state of the pathway. The circular attractor describes the activation and inactivation of the PI3K-Akt-mTOR signalling cascade initiated by IGF. All visualization and analysis function described above can also be applied to the simulation results obtained by \texttt{simulateSymbolicModel}. For example, the cascade attractor can be visualized via <>= pdf("attractor3.pdf") par(mar=c(1,5,1,1)) plotAttractors(sim, subset=2) dev.off() pdf("stategraph2.pdf") par(mar=c(1,1,1,1)) plotStateGraph(sim) dev.off() @ <>= plotAttractors(sim, subset=2) @ Similarly, <>= plotStateGraph(sim) @ plots the state transition graph of the network. Unlike in classical synchronous networks, a state can have multiple successor states (outgoing edges) in temporal networks, as a state transition may also depend on the history of states before the current state. The two plots are shown in Figure~\ref{fig:temporal_plots}. \begin{figure}[p] \centering \includegraphics[width=0.6\linewidth]{attractor3} \includegraphics[width=0.6\linewidth]{stategraph2} \caption{Top: Visualization of an attractor that describes the activation and inactivation of the PI3K-Akt-mTOR signalling cascade through IGF and IRS. The columns of the table represent consecutive states of the attractor. On top, the percentage of states leading to the attractor is supplied.\newline Bottom: The state transition graph of the IGF pathway network. Each node represents a state of the network, and each arrow is a state transition. The colors mark different basins of attraction. } \label{fig:temporal_plots} \end{figure} For temporal networks, it is often infeasible to perform an exhaustive search, as the search space is not only exponential in the number of genes, but also in the time delays. Hence, the search can also be restricted to randomly generated or prespecified start states similarly to \texttt{getAttractors()}. If time delays of more than 1 are included in the network, not only single start states are generated, but the required history of states is generated as well. For example, <>= set.seed(43851) @ <<>>= sim <- simulateSymbolicModel(igf, method="random", startStates=2) @ generates two start state matrices, each comprising 3 states (the maximum delay of the IGF network), and uses them as the basis for a simulation. This can be seen when examining the sequences to the attractors: <<>>= sim$sequences @ Both sequences comprise start states $t=-2$, $t=-1$ and $t=0$. \begin{sloppypar} Classical synchronous Boolean networks can also be simulated using the symbolic simulator \texttt{simulateSymbolicModel()} if they are in a symbolic form. However, in most cases, \texttt{getAttractors()} will be faster and will consume less memory for synchronous networks without temporal elements. Only if the number of inputs to genes is very high and exhaustive simulation is not required, it may be advisable to use the symbolic simulator. \end{sloppypar} \subsection{Markov chain simulations} Another way of identifying relevant states in Boolean networks are Markov chain simulations. Instead of identifying cycles explicitly, these simulations calculate the probability that a certain state is reached after a predefined number of iterations. Of course, states in an attractor have a high probability of being reached if the number of iterations is chosen large enough. Markov chain simulations for probabilistic Boolean networks were introduced by Shmulevich et al. \cite{shmulevich02}. As a special case of probabilistic Boolean networks, these simulations are also suited for synchronous Boolean networks. The following performs a Markov experiment with the predefined number of 1000 iterations on the example PBN described in \cite{shmulevich02}: \enlargethispage{-0.5cm} <<>>= data(examplePBN) sim <- markovSimulation(examplePBN) sim @ Only states with a non-zero probability are listed in the two tables. The first table shows the states that are reached after 1000 iterations. The second table is a transition table annotated with transition probabilities. This table can be suppressed by the parameter \texttt{returnTable=FALSE}. The results correspond exactly to those in \cite{shmulevich02}. If the transition table is included in the simulation results, we can plot a graph of the network: <>= plotPBNTransitions(sim) @ <>= pdf("pbntransitions.pdf") set.seed(4961) par(mar=c(1,1,1,1)) plotPBNTransitions(sim) dev.off() @ This graph is displayed in Figure~\ref{fig:pbntransitions}. The vertices are the states of the graph. The edges represent transitions and are annotated with the corresponding transition probabilities. For this plot, the \texttt{igraph} package must be installed. \begin{figure}[h] \centering \includegraphics[width=0.65\linewidth]{pbntransitions} \caption{State transition graph of the example probabilistic Boolean network included in \texttt{BoolNet}. Each node represents a state of the network, and each arrow is a possible state transition, annotated by the transition probability.} \label{fig:pbntransitions} \end{figure} We can also use Markov chain simulations to identify the attractor states in the mammalian cell cycle network: \begin{samepage} <<>>= data(cellcycle) sim <- markovSimulation(cellcycle, numIterations=1024, returnTable=FALSE) sim @ \end{samepage} We set the maximum number of iterations to 1024, which is the number of states in the network. In a deterministic network, this guarantees that all states are found. The fourth state in the returned table is the steady-state attractor identified previously. It has a probability of 0.5, as the basin of attraction is exactly half of the states. The other 7 states belong to the simple synchronous attractor. It is also possible to restrict the simulation to a certain set of input states instead of using all possible input states. In the following example, we only consider the state with all genes set to 1, and identify the state belonging to the steady-state attractor again: \begin{samepage} <<>>= sim <- markovSimulation(cellcycle, numIterations=1024, returnTable=FALSE, startStates=list(rep(1,10))) sim @ \end{samepage} \subsection{Robustness assessment} A biological network is assumed to be robust to small amounts of noise. The plausibility of network models is therefore often assessed by testing its robustness to noise and mismeasurements. Typically, artificial noise is applied, and its influence on the behaviour of a network is measured. There are two major ways of applying random noise: Either the current state of a network in a simulation can be perturbed, or the network structure itself can be perturbed. \texttt{BoolNet} includes functions for both types of robustness assessment. The function \texttt{perturbTrajectories} measures the influence of noise that is applied to the current network state. It generates a set of initial states and creates perturbed copies of these states by randomly flipping bits. It then measures the influence of the flips on the further dynamic behaviour of the network. For example <>= set.seed(3361) @ <<>>= data(cellcycle) r <- perturbTrajectories(cellcycle, measure="hamming", numSamples=100, flipBits=1) @ randomly generates 100 states and 100 copies with one bitflip and performs a single state transition for each state. It then measures the normalized Hamming distance (the fraction of different bits) between each state and the corresponding perturbed copy. A robust network is assumed to yield a low Hamming distance. The average distance can be viewed by typing <<>>= r$value @ A related measure is the average sensitivity. This measure assesses only a single transition function and counts the number of successor states that differ between the original states and the perturbed copies for the corresponding gene. E.g., <<>>= r <- perturbTrajectories(cellcycle, measure="sensitivity", numSamples=100, flipBits=1, gene="CycE") r$value @ measures the average sensitivity of the transition function for gene CycE. The long-term behaviour can be evaluated by comparing the attractors that are reached from the initial states and their perturbed copies. <<>>= r <- perturbTrajectories(cellcycle, measure="attractor", numSamples=100, flipBits=1) r$value @ measures the fraction of pairs of states and perturbed copies that yield the same attractors. It can be assumed that small changes in the state should not influence the long-term behaviour of the network, and hence the attractors should mostly be the same. The second class of perturbations adds random noise to the network itself. This is implemented in the \texttt{perturbNetwork()} function. Unlike \texttt{perturbTrajectories()}, this function does not perform any simulations, but returns a perturbed copy of the network that can be analyzed further. \texttt{BoolNet} includes a set of different perturbation options that can be combined. For example, <<>>= perturbedNet <- perturbNetwork(cellcycle, perturb="functions", method="bitflip") @ chooses a function of the network at random and flips a single bit in this function. By setting the parameter \texttt{maxNumBits}, you can also flip more than one bit at a time. Instead of flipping bits, <<>>= perturbedNet <- perturbNetwork(cellcycle, perturb="functions", method="shuffle") @ randomly permutes the output values of the chosen transition functions. This preserves the numbers of 0s and 1s, but may change the Boolean function completely. These kinds of perturbations are supported for synchronous and asynchronous networks as well as for probabilistic networks. For synchronous networks, a further perturbation mode is available: <<>>= perturbedNet <- perturbNetwork(cellcycle, perturb="transitions", method="bitflip", numStates=10) @ Here, \texttt{BoolNet} calculates the complete transition table of the network and then flips a single bit in 10 states of the transition table. From this modified table, a network is reconstructed. Changes of this type only affect a few states (which might not be the case when perturbing the functions directly as above), but possibly several of the transition functions. As in the previous examples, it is also possible to modify the number of bits to be flipped or to choose \texttt{method="shuffle"}. \begin{samepage} A detailed listing of a perturbation experiment is shown below. In this experiment, 1000 perturbed copies of the cell cycle network are created, and the occurrences of the original synchronous attractors are counted in the perturbed copies. This is similar to the simulation in \texttt{perturbTrajectories()} with \texttt{measure="attractor"}. However, instead of comparing the outcomes of different initial states in the same network, it compares all attractors of different perturbed networks to all attractors of the original network by exhaustive search. \begin{footnotesize}\label{alg:perturbation} <>= # Perform a robustness test on a network # by counting the numbers of perturbed networks # containing the attractors of the original net library(BoolNet) # load mammalian cell cycle network data(cellcycle) # get attractors in original network attrs <- getAttractors(cellcycle, canonical=TRUE) # create 1000 perturbed copies of the network and search for attractors perturbationResults <- sapply(1:1000, function(i) { # perturb network and identify attractors perturbedNet <- perturbNetwork(cellcycle, perturb="functions", method="bitflip") perturbedAttrs <- getAttractors(perturbedNet, canonical=TRUE) # check whether the attractors in the original network exist in the perturbed network attractorIndices <- sapply(attrs$attractors,function(attractor1) { index <- which(sapply(perturbedAttrs$attractors, function(attractor2) { identical(attractor1, attractor2) })) if (length(index) == 0) NA else index }) return(attractorIndices) }) # perturbationResults now contains a matrix # with the first 2 columns specifying the indices or the # original attractors in the perturbed network # (or NA if the attractor was not found) and the next 2 # columns counting the numbers of states # in the basin of attraction (or NA if the attractor was not found) # measure the total numbers of occurrences of the original attractors in the perturbed copies numOccurrences <- apply(perturbationResults[seq_along(attrs$attractors),,drop=FALSE], 1, function(row)sum(!is.na(row))) # print original attractors cat("Attractors in original network:\n") print(attrs) # print information cat("Number of occurrences of the original attractors", "in 1000 perturbed copies of the network:\n") for (i in 1:length(attrs$attractors)) { cat("Attractor ",i,": ",numOccurrences[i],"\n",sep="") } @ \end{footnotesize} \end{samepage} \pagebreak[4] \begin{samepage} The results of such an experiment could look like this: \begin{verbatim} Attractors in original network: Attractor 1 is a simple attractor consisting of 1 state(s) and has a basin of 512 state(s): [...] Attractor 2 is a simple attractor consisting of 7 state(s) and has a basin of 512 state(s): [...] Number of occurrences of the original attractors in 1000 perturbed copies of the network: Attractor 1: 622 Attractor 2: 589 \end{verbatim} \end{samepage} We see that the steady-state attractor is slightly more robust to perturbations than the simple attractor with 7 states, as it can be identified in a higher number of perturbed copies. \subsection{Identifying specific properties of biological networks} The described robustness measures could also be used to identify specific properties of real-world networks in comparison to arbitrary (random) networks. For example, one could assume that attractors in biological networks are more robust to perturbations than attractors in random networks with a similar structure, as they should be capable of compensating for small dysfunctions of their components. Similarly to the above code, one could execute a number of random perturbations on the biological network and measure the percentage of original attractors found in the perturbed copies. Afterwards, one could repeat this process on a number of randomly generated networks -- i.e., generate perturbed copies from each of the random networks, and measure the percentage of attractors in the copies. If the percentage of the biological network is higher than most of the percentages of the random network, this suggests that the biological network exhibits a higher robustness. This is a kind of computer-intensive test. \texttt{BoolNet} comprises a generic facility for such computer-intensive tests. This facility already includes several tests (mainly for synchronous Boolean networks) and can be extended by custom test functions. The outlined example of attractor robustness is one of the integrated functions: <>= data(cellcycle) res <- testNetworkProperties(cellcycle, numRandomNets=100, testFunction="testAttractorRobustness", testFunctionParams = list(copies=100, perturb="functions")) @ creates a set of 100 random networks (each with the same number of input genes for the functions as the cell cycle network) and creates 100 perturbed copies for each of these networks and for the cell cycle network by applying \texttt{perturbNetwork()} with \texttt{perturb="functions"}. For each network, it then calculates the percentage of attractors that can still be found in the perturbed copies. The function plots a histogram of this robustness measures of the random networks (see Figure~\ref{fig:robustness}, top panel). The corresponding value of the original cell cycle network is plotted as a red line, and the 95\% quantile is plotted as a blue line. <>= pdf("attractor_robustness.pdf") par(mar=c(4,4,2,1)) data(cellcycle) set.seed(3241) res <- testNetworkProperties(cellcycle, numRandomNets=100, testFunction="testAttractorRobustness", testFunctionParams = list(copies=100, perturb="functions")) dev.off() @ \begin{figure}[p] \centering \includegraphics[width=0.6\linewidth]{attractor_robustness} \includegraphics[width=0.6\linewidth]{transition_robustness} \caption{Top: Attractor robustness of randomly generated networks (histogram) in comparison to the mammalian cell cycle network (red line).\newline Bottom: Normalized Hamming distance of randomly generated networks (histogram) in comparison to the mammalian cell cycle network (red line). } \label{fig:robustness} \end{figure} We can see that the average percentage of found attractors is significantly higher in the biological network with a $p$-value of 0.01. \begin{sloppypar} It is also possible to perturb the states instead of the networks themselves by setting \texttt{perturb} to \texttt{"trajectories"}. In this case, the function applies \texttt{perturbTrajectories()} with \texttt{measure="attractor"} to the biological network and the randomly generated networks. It then tests whether the fraction of state pairs that yield the same attractor is higher in the biological network than in the randomly generated networks. The second built-in test function also tests the robustness of the network behaviour by perturbing the network states: \texttt{testTransitionRobustness()} applies \texttt{perturbTrajectories()} with \texttt{measure="hamming"} to each network. It then checks whether random bit flips yield a higher Hamming distance of the successor states in randomly generated networks than in the biological model, i.e. whether noise in the states influences the randomly generated networks stronger than the biological model. In contrast to the previous measures for which a greater value was assumed in the biological model, the Hamming distance is assumed to be smaller. Hence, we must specify the test alternative as \texttt{alternative="less"}. \end{sloppypar} <>= testNetworkProperties(cellcycle, numRandomNets=100, testFunction="testTransitionRobustness", testFunctionParams=list(numSamples=100), alternative="less") @ <>= pdf("transition_robustness.pdf") par(mar=c(4,4,2,1)) data(cellcycle) set.seed(22652) testNetworkProperties(cellcycle, numRandomNets=100, testFunction="testTransitionRobustness", testFunctionParams=list(numSamples=100), alternative="less") dev.off() @ The results are shown in the bottom panel of Figure~\ref{fig:robustness}. Again, the result is highly significant (indeed, the Hamming distances are \emph{always} lower in the biological network), which means that the biological network is considerably more robust to noise in the states than the randomly generated models. Another network property can also be tested using a built-in function: When looking at the state graph of a biological network (which can be generated using \texttt{plotStateGraph()}), it can often be observed that many state transitions lead to the same successor states, which means that the dynamics of the network quickly concentrate on a few states after a number of state transitions. We call the number of states whose synchronous state transitions lead to a state $s$ the {\em in-degree} of state $s$. We expect the biological network to have a few states with a high in-degree and many states with a low in-degree. A characteristic to summarize the in-degrees is the Gini index, which is a measure of inhomogeneity. If all states have an in-degree of 1, the Gini index is 0; if all state transitions lead to only one state, the Gini index is 1. <>= testNetworkProperties(cellcycle, numRandomNets=100, testFunction="testIndegree") @ <>= pdf("indegree.pdf") par(mar=c(4,4,2,1)) set.seed(6314) testNetworkProperties(cellcycle, numRandomNets=100, testFunction="testIndegree") dev.off() @ plots an histogram of Gini indices in 100 random networks and draws the Gini index of the cell cycle network as a red line, as depicted in the top panel of Figure~\ref{fig:indegree}. \begin{figure}[p] \centering \includegraphics[width=0.6\linewidth]{indegree} \includegraphics[width=0.6\linewidth]{indegree_kl} \caption{Top: Gini indices of state in-degrees of randomly generated networks (histogram) in comparison to the mammalian cell cycle network (red line)\newline Bottom: Kullback-Leibler distances of in-degrees of the mammalian cell cycle network and 100 random networks.} \label{fig:indegree} \end{figure} The histogram shows that the Gini index of the in-degrees is always higher in the biological network. This is probably due to the special structure of functions in biological networks. Instead of accumulating the in-degrees using the Gini index, it is also possible to compare the distributions of the in-degrees across the networks. For this purpose, the Kullback-Leibler distances of the in-degrees of the supplied network and each of the random networks are calculated and plotted in a histogram. The Kullback-Leibler distance (also called relative entropy) is an asymetric measure of similarity of two distributions \cite{cover91}. If the distributions are equal, the Kullback-Leibler distance is 0, otherwise it is greater than 0. <>= testNetworkProperties(cellcycle, numRandomNets=100, testFunction="testIndegree", accumulation="kullback_leibler") @ <>= pdf("indegree_kl.pdf") par(mar=c(4,4,2,1)) set.seed(234256) testNetworkProperties(cellcycle, numRandomNets=100, testFunction="testIndegree", accumulation="kullback_leibler") dev.off() @ results in the plot displayed in the bottom panel of Figure~\ref{fig:indegree}. It is possible to switch between the histogram of an accumulated characteristic (e.g. the Gini index) and the histogram of the Kullback-Leibler distances for all tests. \begin{sloppypar} You can also easily implement your own tests. To do this, the only thing you have to do is implement a custom testing function that replaces \texttt{testIndegree()} or \texttt{testAttractorRobustness()}. Testing functions have the following signature: \end{sloppypar} \begin{verbatim} function(network, accumulate=TRUE, params) \end{verbatim} The first parameter is the network that should be tested. The parameter \texttt{accumulate} specifies whether a single characteristic value (e.g., the Gini index of the in-degrees) should be calculated, or whether a distribution of values (e.g., a vector of all in-degrees) should be returned. The third parameter is a list of further arguments needed by your function. If, for example, we would like to compare the sizes of the basins of attractions of synchronous attractors in biological and random networks, we would write a function like this: \begin{samepage} <<>>= testBasinSizes <- function(network, accumulate=TRUE, params) { attr <- getAttractors(network) basinSizes <- sapply(attr$attractors, function(a) { a$basinSize }) if (accumulate) return(mean(basinSizes)) else return(basinSizes) } @ \end{samepage} This function calculates the mean basin size as a characteristic value if accumulation is required, or returns the sizes of all basins of attraction in a vector otherwise. It does not need any further parameters in \texttt{params}. Now, we can start a test using <>= testNetworkProperties(cellcycle, numRandomNets=100, testFunction="testBasinSizes", xlab="Average size of basins of attraction") @ <>= pdf("basinsize.pdf") par(mar=c(4,4,2,1)) set.seed(6724) testNetworkProperties(cellcycle, numRandomNets=100, testFunction="testBasinSizes", xlab="Average size of basins of attraction") dev.off() @ to produce the plot shown in Figure~\ref{fig:basinsize}. Apparently, the average basin sizes do not differ as much as the built-in test characteristics between the random networks and the cell cycle network. \begin{figure}[h] \centering \includegraphics[width=0.6\linewidth]{basinsize} \caption{A custom test statistic measuring the basin sizes on randomly generated networks (histogram) and the mammalian cell cycle network (red line).} \label{fig:basinsize} \end{figure} \begin{sloppypar} By writing custom test functions, you can extend the test facility to perform a wide variety computer-intensive test. Of course, it is also possible to plot the Kullback-Leibler distances with such new methods by using \verb+accumulation="kullback_leibler"+. \texttt{testNetworkProperties()} accepts most of the parameters of \texttt{generateRandomNKNetwork()}. If necessary, you can generate more specialized kinds of random networks which resemble the original network in certain aspects, for example by specifying a generation function or by setting a proportion of 0 and 1 in the function outputs similar to the original network using \verb+functionGeneration="biased"+. \end{sloppypar} \clearpage \section{Import and export}\label{sec:importexport} \subsection{Saving networks in the \texttt{BoolNet} file format} Corresponding to the \texttt{loadNetwork()} command, a network can be saved using \texttt{saveNetwork()}. This stores the network in the network file format described in Section~\ref{sec:appendix} and can be applied to all types of networks supported by \texttt{BoolNet}. For example, the cell cycle network can be saved using <>= saveNetwork(cellcycle, file="cellcycle.txt") @ \begin{sloppypar} The function stores the expressions that describe the transition functions. In some cases, there may not always be a valid symbolic description of the networks (e.g. for networks returned by \texttt{generateRandomNKNetwork()} when the \texttt{readableFunctions} parameter was not set). In this case, \texttt{saveNetwork()} can generate symbolic representations of the transition functions in Disjunctive Normal Form (DNF): \end{sloppypar} <<>>= net <- generateRandomNKNetwork(n=10, k=3, readableFunctions=FALSE) saveNetwork(net, file="randomnet.txt", generateDNF=TRUE) @ The \texttt{generateDNF} parameter can also be used to detail which type of DNF formulae should be exported: \texttt{generateDNF="canonical"} exports canonical DNF formulae. \texttt{generateDNF="short"} minimizes the canonical functions by joining terms. By simply setting \texttt{generateDNF=TRUE}, formulae with up to 12 inputs are minimized, and formulae with more than 12 inputs are exported in a canonical form, as a minization is very time-consuming in this case. \subsection{Import from and export to SBML} \begin{sloppypar} \texttt{BoolNet} provides an interface to the widely used Systems Biology Markup Language (SBML) via the import function \texttt{loadSBML()} and the export function \texttt{saveSBML()}. As the core SBML does not fully support Boolean models, import and export of SBML models is based on the \texttt{sbml-qual} package which extends SBML by several qualitative modeling approaches, such as general logical models and Petri nets. For a full description of \texttt{sbml-qual}, refer to \href{http://sbml.org/Documents/Specifications/SBML_Level_3/Packages/Qualitative_Models_(qual)}{http://sbml.org/Documents/Specifications/SBML\_Level\_3/Packages/Qualitative\_Models\_(qual)}. \end{sloppypar} \texttt{BoolNet} only supports a subset of \texttt{sbml-qual}. It can read and write logical models with two possible values for each state, which are equivalent to Boolean networks. Logical models with more than two values for a gene or Petri nets cannot currently be handled by \texttt{BoolNet}. An export to SBML is usually not associated with any loss of information. For example, we can write the cell cycle network to a file and re-import it into \texttt{BoolNet}: \begin{footnotesize} <<>>= toSBML(cellcycle, file="cellcycle.sbml") sbml_cellcycle <- loadSBML("cellcycle.sbml") sbml_cellcycle @ \end{footnotesize} Apart from some additional brackets, the re-imported network coincides with the original network. Similar to the \texttt{saveNetwork()} function, \texttt{toSBML()} exports a symbolic representation of the network transition functionss, which may not always be available. As for \texttt{saveNetwork()}, there is a parameter \texttt{generateDNF} that can be set to generate a symbolic representation in Disjunctive Normal Form from the truth tables. \subsection{Importing networks from BioTapestry} BioTapestry is a widely-used application for visual modeling of gene-regulatory networks \cite{longabaugh05}. It can be freely accessed at \url{http://www.biotapestry.org}. Although its primary purpose is visualization, the software supports specifying logical functions for the genes. \texttt{BoolNet} can read in the top-level (``Full genome'') plot of a BioTapestry file (*.btp) and convert it into a Boolean network. As an example, we assume the following BioTapestry model with 5 genes (2~inputs and 3~dependent genes): \begin{center} \includegraphics[width=0.8\linewidth]{biotap_model} \end{center} The corresponding BioTapestry file is included in \texttt{BoolNet}. You can determine its path using <>= system.file("doc/example.btp", package="BoolNet") @ \label{cmd:example.btp} to access it in BioTapestry or \texttt{BoolNet}. For the import, \texttt{BoolNet} needs to know the type of influence a gene has on another gene. Therefore, imported networks should only use links that are either enhancers or repressors. Neutral links are ignored in the import. We now set further simulation parameters for the model. These parameters are imported by \texttt{BoolNet} to construct the functions of the Boolean network. First, we want to change the function of Gene~2 to \texttt{OR}. Right-click on Gene~2 and choose \texttt{Simulation Properties...}. \begin{center} \includegraphics[width=0.8\linewidth]{biotap_sim_properties} \end{center} In the properties dialog, choose the \texttt{Logic} tab, and select \texttt{OR} for the logical function. \begin{center} \includegraphics[width=0.8\linewidth]{biotap_logic} \end{center} Now set the function of Gene~1 to \texttt{XOR} (exclusive or) in the same way. \begin{samepage} You can also specify initial values for constant genes, i.e., genes with no input links. Choose the simulation properties of Input~1, and change to the \texttt{Parameters} tab. Choose \texttt{initVal} and set it to 1. \begin{center} \includegraphics[width=0.8\linewidth]{biotap_initval} \end{center} \end{samepage} Press Return to store the result, and exit the dialog with \texttt{OK}. This will create a fixed gene with value 1 (i.e., an over-expressed gene) in the \texttt{BoolNet} import. Note that values other than 0 and 1 are ignored by the import, as well as initialization values for non-constant genes. We assume that you save the network to a file ``example.btp'' in your working directory. In \texttt{R}, type <>= net <- loadBioTapestry(system.file("doc/example.btp", package="BoolNet")) @ <>= net <- loadBioTapestry("example.btp") @ to import the network. Alternatively, replace the file name by the command on page~\pageref{cmd:example.btp} to use the file in the package if you do not want to create the file yourself. The imported network looks like this: <>= net @ \begin{verbatim} Boolean network with 5 genes Involved genes: Input 1 Input 2 Gene 1 Gene 2 Gene 3 \end{verbatim} \pagebreak[4] \begin{verbatim} Transition functions: Input 1 = 1 Input 2 = Input 2 Gene 1 = (!Gene 1 & !Input 1 & Input 2) | (!Gene 1 & Input 1 & !Input 2) | (Gene 1 & !Input 1 & !Input 2) | (Gene 1 & Input 1 & Input 2) Gene 2 = Gene 1 & Gene 3 & !Input 2 Gene 3 = Gene 1 | Gene 2 Knocked-out and over-expressed genes: Input 1 = 1 \end{verbatim} We can see that Input~1 is specified as an over-expressed constant gene. Input~2 is modeled as depending only on itself, i.e. it keeps its initial value. Gene~1 is a representation of the XOR function in Disjunctive Normal Form (DNF), using only logical ANDs, logical ORs, and negations. Gene~2 and Gene~3 consist of conjunctions and disjunctions of their inputs respectively. In addition to this textual description, we can visually verify the network by plotting its wiring: <>= plotNetworkWiring(net) @ <>= pdf("wiring_biotap.pdf") par(mar=c(1,1,1,1)) set.seed(559652) plotNetworkWiring(net) dev.off() @ The resulting plot is shown in Figure~\ref{fig:wiring_biotap}. \begin{figure}[h] \centering \includegraphics[width=0.6\linewidth]{wiring_biotap} \caption{The wiring graph of the imported network specified in BioTapestry.} \label{fig:wiring_biotap} \end{figure} You can now use the imported network just like any other network in \texttt{BoolNet}. \clearpage \subsection{Exporting network simulations to Pajek} For further analysis, network simulations can be exported to Pajek, a Windows application that provides visualization and analysis methods for graph structures \cite{batagelij98}. For more information on Pajek, please refer to \url{http://pajek.imfm.si/doku.php}. The export function writes the state transition graph to a Pajek file (*.net). This requires a synchronous exhaustive attractor search in \texttt{BoolNet} to build the full transition table. To export the mammalian cell cycle network to Pajek, call <>= data(cellcycle) attr <- getAttractors(cellcycle) toPajek(attr, file="cellcycle.net") @ This will export the graph of the state transitions, which is usually sufficient for plotting. If you want to include the state information (i.e., the gene assignment vectors), call <>= toPajek(attr, file="cellcycle.net", includeLabels=TRUE) @ Now, start Pajek, load the network with \texttt{File | Network | Read}, and check out the tools provided by this application. For example, visualizations can be accessed using the menu item \texttt{Draw | Draw}. Figure~\ref{fig:pajek} shows a plot of the cell cycle network with the Kamada-Kawai layout (Menu entry \texttt{Layout | Energy | Kamada-Kawai | Separate Components}). \begin{figure}[h] \centering \includegraphics[width=0.75\linewidth]{pajek} \caption{A visualization of the mammalian cell cycle network in Pajek.} \label{fig:pajek} \end{figure} \clearpage \bibliographystyle{plain} \bibliography{BoolNet_package_vignette} \section{Appendix}\label{sec:appendix} \subsection{Network file format} This section provides a full language description for the network file format of \texttt{BoolNet}. The language is described in Extended Backus-Naur Form (EBNF). For synchronous, asynchronous and probabilistic Boolean networks, the supported format is as follows: \begin{verbatim} Network = Header Newline {Rule Newline | Comment Newline}; Header = "targets" Separator "factors"; Rule = GeneName Separator BooleanExpression [Separator Probability]; Comment = "#" String; BooleanExpression = GeneName | "!" BooleanExpression | "(" BooleanExpression ")" | BooleanExpression " & " BooleanExpression | BooleanExpression " | " BooleanExpression; | "all(" BooleanExpression {"," BooleanExpression} ")" | "any(" BooleanExpression {"," BooleanExpression} ")" | "maj(" BooleanExpression {"," BooleanExpression} ")" | "sumgt(" BooleanExpression {"," BooleanExpression} "," Integer ")" | "sumlt(" BooleanExpression {"," BooleanExpression} "," Integer ")"; GeneName = ? A gene name from the list of involved genes ?; Separator = ","; Integer = ? An integer value?; Probability = ? A floating-point number ?; String = ? Any sequence of characters (except a line break) ?; Newline = ? A line break character ?; \end{verbatim} \pagebreak[4] The extended format for temporal networks includes additional time specifications and temporal predicates is defined as follows: \begin{verbatim} Network = Header Newline {Function Newline | Comment Newline}; Header = "targets" Separator "factors"; Function = GeneName Separator BooleanExpression; Comment = "#" String; BooleanExpression = GeneName | GeneName TemporalSpecification | BooleanOperator | TemporalOperator BooleanOperator = BooleanExpression | "!" BooleanExpression | "(" BooleanExpression ")" | BooleanExpression " & " BooleanExpression | BooleanExpression " | " BooleanExpression; TemporalOperator = "all" [TemporalIteratorDef] "(" BooleanExpression {"," BooleanExpression} ")" | "any" [TemporalIteratorDef] "(" BooleanExpression {"," BooleanExpression} ")" | "maj" [TemporalIteratorDef] "(" BooleanExpression {"," BooleanExpression} ")" | "sumgt" [TemporalIteratorDef] "(" BooleanExpression {"," BooleanExpression} "," Integer ")" | "sumlt" [TemporalIteratorDef] "(" BooleanExpression {"," BooleanExpression} "," Integer ")" | "timeis" "(" Integer ")" | "timegt" "(" Integer ")" | "timelt" "(" Integer ")"; TemporalIteratorDef = "[" TemporalIterator "=" Integer ".." Integer "]"; TemporalSpecification = "[" TemporalOperand {"+" TemporalOperand | "-" TemporalOperand} "]"; TemporalOperand = TemporalIterator | Integer TemporalIterator = ? An alphanumeric string ?; GeneName = ? A gene name from the list of involved genes ?; Separator = ","; Integer = ? An integer value?; String = ? Any sequence of characters (except a line break) ?; Newline = ? A line break character ?; \end{verbatim} \end{document} BoolNet/inst/doc/BoolNet_package_vignette.Snw.pdf0000644000176200001440000327704413455114165021547 0ustar liggesusers%PDF-1.5 %ÐÔÅØ 80 0 obj << /Length 1890 >> stream concordance:BoolNet_package_vignette.Snw.tex:BoolNet_package_vignette.Snw.Rnw:1 25 1 1 0 54 1 1 2 4 0 1 2 1 1 1 2 4 0 1 2 76 1 1 2 4 0 1 2 2 1 1 2 4 0 1 2 46 1 1 2 4 0 1 2 4 1 1 2 4 0 1 2 2 1 1 4 6 0 1 2 3 1 1 2 29 0 1 2 4 1 1 9 4 0 1 2 11 1 1 5 7 0 1 9 5 1 1 3 2 0 4 1 3 0 2 2 16 0 1 2 3 1 1 8 7 0 1 2 2 1 1 2 1 0 2 1 42 0 1 2 3 1 1 9 8 0 1 2 1 1 1 2 17 0 1 2 3 1 1 2 1 0 1 1 1 2 3 0 1 2 1 4 3 0 1 1 47 0 1 2 6 1 1 2 4 0 2 2 4 0 1 2 2 1 1 2 4 0 1 2 1 1 1 2 4 0 1 2 2 1 1 5 7 0 1 2 4 1 1 5 4 0 1 4 6 0 1 2 5 1 1 14 16 0 1 2 6 1 1 5 7 0 1 2 8 1 1 2 1 0 1 1 3 0 2 2 4 0 2 2 4 0 2 2 4 0 1 2 2 1 1 2 4 0 1 2 8 1 1 2 1 0 1 1 7 0 1 2 1 1 1 2 1 0 1 1 11 0 1 2 2 1 1 8 4 0 1 2 10 1 1 2 4 0 1 2 2 1 1 2 1 0 1 1 7 0 1 2 4 1 1 2 4 0 1 2 2 1 1 2 1 0 1 1 7 0 2 2 24 0 1 2 2 1 1 2 1 0 1 2 9 0 1 2 7 1 1 8 4 0 1 2 3 1 1 5 8 0 1 2 3 1 1 6 9 0 1 2 4 1 1 3 9 0 1 2 1 1 1 5 1 0 1 1 7 0 1 2 1 3 9 0 1 2 15 1 1 2 1 0 2 1 3 0 1 2 1 3 25 0 1 2 3 1 1 2 4 0 2 2 11 0 1 2 6 1 1 2 14 0 1 2 4 1 1 2 1 0 1 1 3 0 1 2 11 1 1 2 4 0 1 2 2 1 1 2 4 0 1 2 9 1 1 9 4 0 1 2 3 1 1 9 4 0 1 2 12 1 1 2 4 0 1 2 1 1 1 4 6 0 1 2 6 1 1 2 4 0 1 8 1 2 4 0 1 2 11 1 1 5 7 0 1 2 3 1 1 2 4 0 1 2 23 1 1 6 8 0 1 2 12 1 1 8 4 0 1 2 5 1 1 2 1 0 1 1 3 0 1 2 1 3 38 0 1 2 11 1 1 12 4 0 2 2 4 0 1 2 11 1 1 5 4 0 2 2 29 0 1 2 12 1 1 2 1 0 2 1 25 0 1 2 3 1 1 2 4 0 1 9 10 1 1 2 1 0 1 3 2 0 1 1 15 0 1 2 6 1 1 5 4 0 1 1 8 0 1 2 9 1 1 5 1 0 1 4 6 0 1 2 1 1 1 2 7 0 1 2 1 1 1 6 5 0 1 1 6 0 1 2 2 1 1 5 4 0 1 1 6 0 1 2 4 1 1 4 6 0 1 2 2 1 1 4 6 0 1 2 3 1 1 5 7 0 1 2 5 1 1 6 5 0 1 3 1 0 1 3 1 0 1 22 20 0 1 11 9 0 1 3 1 0 1 1 1 4 2 0 1 4 6 0 1 2 31 1 1 2 1 0 1 4 6 0 1 2 3 1 1 12 18 1 1 6 8 0 1 2 1 13 2 1 1 4 6 0 1 11 14 1 1 5 7 0 1 12 13 1 1 13 15 0 1 2 3 1 1 5 7 0 1 12 20 1 1 2 4 0 1 2 2 1 1 2 1 0 1 1 3 0 1 2 12 1 1 2 1 0 2 1 21 0 1 2 16 1 1 2 4 0 1 2 29 1 1 5 4 0 1 2 2 1 1 2 4 0 1 2 20 1 1 2 4 0 1 9 18 1 1 2 1 0 2 1 3 0 1 2 1 1 1 2 4 0 1 2 90 1 endstream endobj 101 0 obj << /Length 1211 /Filter /FlateDecode >> stream xÚÍXËrÛ6Ýû+¸¤fJ†x’XÚ™d’¦ötíÚ.d‰RTK¢G¤ò覿žû(H9Ó8YX|¸8ç\øj|ñ쥪QæRŒç‰,ªÜZ™X«sYÙd•3<¥Þþ3…(SQžÒ¢ŠèõŒÄ‚ëÈŸ¼èˆ”½¸èCOyù1JͪŸ„ÃlHqÊœTlN׈ DUKXÞLBÍá-v¹Æ¦»#1#eõD=e«’ƒú^õ¶¹Ýùò Ûô®ã¥@÷üfÍÅ Ê=GÿlÞ<, eI0I2÷Ž´Œvê‹›ÒÆiʺ!»nü÷¾l­÷Dù%á ŒšÅ’²på÷“õwìïtåÎôiíëÌõ=•—Á »È g\#Ö¾ò ­ ‰”ÊU)ú‰=Ï©õSO8÷Eƒ•0µôvÕÑ›q–qd¨éMYÁ’ó ÉŸQ¿ОDÌY¹ÎU¾Ÿ·ÊUík1Z•50f¿Ïöª-Ÿ‘Ÿ4þœLøúšõÖ„ÕÞŽ«Å¸Ò Òâ¸ ÓØp‹wÈÓõo€Î‰‘Ö1Å Ù¨“È¿&L¤öÄQâ*Øøx„:ߟ(Ú°÷}{wöi¼ŒrV—ƒØƒ[¿§ŸÇÀö±ƒÒ(.z«Šñ;Ž»¥1éß5Tæ)˜0âL÷2þ„{ß[SÍšg`Ÿ)`25¤Ÿ³,ÊÄu3p*EkX…ºñÀ”Ñ?éføUó1ÄP"ŒÎµÀŠ)óÊÙðÿøvñb|ñH‘ endstream endobj 114 0 obj << /Length 3507 /Filter /FlateDecode >> stream xÚÍ[Y¹~ß_1`ÑÍ£›dŒ<¬5²²X$$A6MÏXë‘ZÐ1öä×§’ÍnQǃ cu7ϪbU}UE¼ýáý'SßH#´iÔÍíÃTF¸JÝØªRù›Ûû›Mät&¡aòóTNÖS-'û-f¼‘™ªD¥y7 ªÉê£ePŸð¥ ìÄE¢ã¨+¦¸Å‚I3öSØËW´ vÄ ÙTÂÉ:2cAÚ·‹º¿g¢˜81ÿìx…AÓÇ¡IâÝ@ûó´®ù˜,I×h«ýV¤ÌÙ!á%ðCzQ×Ážÿ£°gIf?lùa&“÷¨D-mìñPXËïdìÖ°7°¾ÕÛP5;a|KiÓø›¬ÓмƂ°á§á>ðǰ˜¬²Õt¶U–[Ȫ…Q:_îñ˜9À<ðŠZ¹˜+çI)*6*ót’=Y÷ºp`k Ëh¬K²”p¦­µÃ]|*È$UÛ‹²l.ÉR:ä²~ÐN€oæ¬,íMÖç Q>D©¬¨è ÷3¥ˆr°¥F4&ö¡(ëZ¨‘Âtë`âÃÆk‹Ï`vçìc¹å™àG¯—¤´à­œ®Á[±YNÓìƒ ™¯wa@>ÍLÇ‚ Vv`ØsÁ`4ôó ?ÏÈè662øPP{µ÷­l™–°h^öhoÀ]¯ˆ¬:mf´¨\:šÑ„sþ)™ŽÖ"P&úšÆùôŒrn# €åŽ=œÊ¦£õí˜øFT&)íÿ˜•mÝóçØÍŠÚÛl‰Þʃ’ÓωI•M=ÚX®Ìµh|Ñ0»svùÍ(¸0ÇFã[Ùh8]´ÿîœù?C•¹@•Ë© ²©áÀ$è÷þS3‹µM“°Á|ßÏñ“Iì ¿RËyê:AIŒÜá{EÑOì¾dh\ð,•²7‹—¤Úe¼6 ~Çš1Žhˆç™æäûCH`î[ÄAu€D¥¥>ì:룡9‰Q‚&šªœÐD{…&¾Jâ¼Éeįu°8h3O‰B fr‡¼ðó|qûK , ÇEJ'l–„Ég ß§‚‘5à.}nd3G“¹–™m„•#™ô>¯„ëùPòÞÜ@—%njiËz84²¹TÞP²# á¤ê'©ªãuè)v‘QáóÔU¢Ö™¬ÉfRŸŸ1ÈV„•ª'w‘¯(öîq‰§%Š]0`Àh´×Ô°™2Íä‘Û˜¶P†NÅï ÏÔL5¨,ø²êãXŠÕñàÑúa`1   †#‹Nb[ÏÏ‘´è“!›'$ûæ~?‹ö;ÎZ¤r³‚kC”ÄH >Ü<Ð÷öp[Ò ¨)Ñ’@¥ÔÀeNÛZWqÿ>¬^ßG{½Xöp;ÎW]HYi—y–]?Õ#kw`úkW‡L µD"ñy#íRê ;ŒiŽi/ÇûžïfÅL ¥v6GATÕÝŠ½-9=x‰O+Ÿ(-)ËRMRœûà‚BPW¥Ynˆœ¯Ú¾aÓM‚s=·Ø9ÛI›6Óa¿UÒÚ‰lzŽãÃù"O§õÞ2äIû I£”Ü-*Idç’+¢”\Q ÀBcG±>íøÇÝÿ<¿bfDÝ#ysV—ÎùÑÂì)¥ÆèE%ı=Dwë…Þh"uʹŽ2+ x>«ôåpJ+yºPnf´Ÿü“•`èµR|öT˜$ä|áC3j}Î’?“hÕ%˜çAäÈà<¨¡­h&›SÁö[‘¬`·.€W8)¦‘𪪈‰Ó–OæHØo˜„0D¦(¯Á(&G·0Š`”.pBB•uR%&c{"¸”žQù¨®aj7á“ÖíØJÃ'KÇ™?”å^¡—q.¥Ÿpdž…¦‰0DÝFÏæ­£á±¦€Ý Á6Ã)*uÿ`j²KÆ£%ÍÐ.FÊ€dÏì0ô¹¹Q|ž“c:2••å~¤8)CÁcø'8€³ÅˆSz <¯e§‚¬gа‰¦c/yth&qÚù…2¶°—mËdÍ¿¤æþ3"0>zHÐaQ:Ðñ>xÝÆ Dk€½?—}$(Ƙ^JÉcOÖØ†kl‹‡ ^WÝnÏÀdÑ¡U]uëØ0Dœ„†üxxÏB)¹ð=Wü~¸eä”±_ÔxLêvíºDa*À9»U`´¶†Â[ƒ«|⇠\#̱rò×öuÀ¤¶1æ•O¤•Bë”ãyEùÄTBõ‰±sõØhЗvi£¸1"89ªuDÝÀ’f쨎XÃe¢!ÓéÛ©ª™vTÔ‰5Ïýø9^Š·öë6°ì.V7–O}qˆA`DªdHB–õÀ æ×¿úÔ…<:ÉZ™,Ìæ%:®ŠÎÖÕ­JË^¸»‡aOV]À*B¯náÙg¬´Çx¾»ÏT­ÇACj1AyÚ-¿Jæ¾²A -íä§kàühp|0À\BÄâE°`+Ñžça?ý!*B{–r:YT„p1Y‚» }ê>ÇÇX›þÜöXEßcΞäæ:®Ü`ÿ=à·3»ì<8–(=”ËtÈÏ(X>R¢Ž?ÉY|š:æ`•åK)/¤¼²Hä^Q$z('Aôk’-×’Ja€FJI›ã=t-NèÎÍw"]‹Z_™‰>ÎÛ*!µþ¸b¡mPì„§)CN´á‚¬æY1«„÷͹r¤`©×óø-7åÎì)““9ÅÆ+ê~9˜}(ɇÒ.³Ò÷5…‘SAˆ-U9‡çÁ«4ËùúyQS+zÒ‚ïXÑ[ðÿI•.Dyëp,}v,Á~6ƒS¹.£9©*GLþîEÝ™5¯R…Òuå½°˜;TšJ–Ôó+a¶m_«–=,®FÊ< ³ÒÙR/mIå}˜y݇yt Ü;»Ex¸KhûQúÜG¿žG7b®4牬+6Ÿ®²S+ÁY¯"~êÝø)&ÙJ¸Ê÷¡}!¿b´êó+| PbÑ¢Ýä辔ú¯ÄmŠ‚¨¤ â÷¢ÿ‡8¨$ m‡EK‘ȶËàø¨AÈ“ߺ)óµ@‹ÆŠVâ×ï%7]éQ¦74ʔВ{4W ËÑT͵²B pîG^—U,CÍz—W£wíúJ!]a \!¿çÆ»Èe³k#E‰³)qß0ôÄnŒøO]R”½úÛ+Ø£_jº£< +á­+F×£´s~HN¡ëáFPáMLŒ¿ä¤h=HQçX?duôYÝ 7±^†÷e©GG©h†Î§¯Jo§´Ú¤¨s vW£Š‡Êi›Z¨ª:CcBÆ|x!ÆÉã´}ˆpSƒ‹ÏØ—2 :W!1´~쎳­B¾¯™)?ŠDÓ@$¹qKµ1£¸èëï% ÏÔ…±ØÆä[Ë-YÊ)õ¤¼ÑœKã! aèŸÈÆ·!9n³„ #Çû°±‘jYh/œ’g È|æí¯X.~âØhxÌg ©,©]žy§wbQ°1û Ö¨h[aîÊû7 ´>W)o D¼P)—X 7ƒRù;¾¹vbê@m,eŸ¤ÔqnUÓ¥z¾>a¢wjã…èå)vt!ìØRÝŽwfTE}ÃS1bVU»‹ÌRU†s+yLKĶ9sP¹Ê+!EL º$_§ÔT¥èF¤è]¥¼tõ÷ÒnÔå ŠÁAd©…}'ã22'†ó(‡˜RM¨7¤éÞ•bG/T¿ý7Ô¥K7ûÐhÌãM!´¬ô_Sº`0—1ÕE9©`'’)jNËiÒX4ÍqÝ9óæëüéž§-ð`o_ãÛ—nåøþ>|Œeb©ùÆBˆîÌ¢pÎeG凟nø/à!Wö endstream endobj 128 0 obj << /Length 3221 /Filter /FlateDecode >> stream xÚ¥ZK“Û¸¾ï¯˜#UeiI|íÍ®ŠËN%.W<·Ý(‰q-‰Qòìä×§Ÿ(QÚØ{˜ˆýüºÁw?ýü¾z¨uaЇÇÍCfÜ¢JÍC™‹ÌÔë‡_“‡Ù¿ÿþóû¼Œgº…qÙCÊSÞͲ¤—¿ü}‚¿þN¼2~…-¹³ºðÍlžçÌË’-®9ÒÂyžÙ¤9Jc }üý–f7=â¿ÃÌ”° &˜dÀå¸ò¼¢wB#Úg…5À=wÑè³,j‡h?~Óþžpª ” aÇ ¼ÌL•ôǯẋyž.ÊÊ=̳lQç9ð„3^aþól påð‹ðÓElIæ–eUÌPàL¿£÷B«Aª>µHÐ Ž"í_e§4Ú©ѹBŒYÎæ…I~o‰;õH\ºpU©+VýiÆ÷4ÌŒ¹1Àdh¾" +<øV˜×ú3‰ç‰kl#ÇñÔ‡îµå©øï<ðð»žøÁÇk܉3è€sfh–f‹hqôß/§‡7/@&už|ðš*eë"+–#®!‡Nô¤cº`†M6g¦7x¨9†˜% Ò×C³µåé÷Ô«eÑ®²;‘v–÷néäé¥áK|IËG¾ÖŸ9Xn–°ú° ×}>Îò:é—¤>¸¾C*»!:ãê/hZæJûnU«tEKúÄš°f£}VåZ2ÑÂÝ1Ý<õžŒ®t…Õª° ›æc?’² ­IH§QàÄÄ?ÞÇxAùn¨ˆåßò>‘ü›‘ÚYÑx%‘Úª&ý¹ˆ…ì/¤vY²_zþe±Út‘¦Ù‹õöùI<ßëIN¸ÁýgDƒ±±¡²ð[6l®ËyeÆÂ½£A·­˜o^‰’ÅD©æùµªa'; <ËØiÀP'SÞ•Üáß¾ä“ì‚&ãø†ˆÚ£÷*x`/IK„¶?æS>"ðùÛ±z¯¶-01U¤8â¼EÎW…è!·Q6 >‹:)’å­\oäiMUŽyÍёŠkÕ‘â¼£xÃ磯Á¯®y¾ÆŸªH"éqÇú&&0U®ìÄm™ÍIÅÀe³±%ÿ‰Ë‰˜+¥A2Hž„W'/ø¦Ž#öØdI„¥ -²òWÞwÏ?tB @Û‰™†'VE܇È‚VtBfžM`pIO[ÉžñA%F|›ZEg: ÕÕèlÁÌjö„ç˜h#ç޶ʇƒ ;ÒEA°þ¥‹#etÚ´ê¼ÇÿK‹<ÖoømªÇÏj§7‡57üi‹‹üa£Ñ­ïÔ<ßöœ½òªkN öjò"ÔPÈ?ÿÀc|Ð-? °ë”Eñ$}•iäþ[Ù˜N ˆÆçÈ+ah*²œÝ–U&J§7Ç ¨°˜´æÁQ˜üóÄáW$6¦6Áòj¦¡õQ—Mšöï Äõi‡Û´Ø$=Q´DbÿÃþÆ¿‰T_¨ $¸ÓÐóÊ“iyŒ]O„dÑ”x’À‚‹S_qM âÂÞFÓˆepåÿ•8T J©­9/­ l¡uÅÕYé4O¼0N{à‘ƒÄ|Êñ{?™ó(x@ê0yêàüC§ùÝÀSØFsžE»¨“Æq;8Jà…Ã9ò€,¡€áÛ!Ì»"'d>: Fðî&^!×}Œ“— £D~Õ©>À ìš3°³7´ÇÚk½ô·4O£wãLC²L¿o·Wç®Læ Äõ¨¾`PÉàm«»+Ó«rN¹£é8¼BF:g˜À¡ç^y?ÜKˆÄpZ#™E‘E©…±Å"­sÍ-¾0ŒÆ”$7 Lõ|’ïd>ßÁâqù2Ù©F9•l?âàyî ßQ`/™#²Ó.jWÅ)#Zξ˜tñ+ª§¨ßÒo–½“u OQ gÇâÐ ŠÜƒ…¼©LY±­Å)©Ï?Øä·¥†p¸()œv^9ëòáŽÁ´”]R߬¯Û4M6tÔ=ƒ;MŒ<£/ X4>àøVpXgš]`b”b˜¿&}Br§©ºØ¦Âv¶Äö b8¨+î´¬¯7’y…Ë­$N´æUê’÷³Êq1RÐ lÏèm®2¸òà@iÙš  v&»¹”º–ªù¸Â3WÄAŸËzZìD}•I'ŽØþ!Ù;û!‰¦bKlJhÂ~dÛ ùHy™‡/¸–ý…äÙ•C> ,wš°¥šá4!ö¨Ñ¡ån_Ü[# pÍ ëIbd5LÅF’‚ͪH£²šE½~lÎâŽaÃÄ,äEØ&[¿*-‹Q¬Æp; ËÖ— ˆ”$iBnÿ¬R°“æÑ.KÚš ô‰Œ¬Ro;óIkD?«eýܨ D¸€ÿž›Ç |¤¼pä Î>PN“Qá…æŽŠücT?{- oCYfà!:1üŽZÎ)v±34Õea9½[QÖÐ zk5땞>ø IúÔ³A*ö¥׃x‚™ !q´´TÆk}í™Ö”&±oB…8B/Haé<$Æõ±³+1mvR4a(£,µÄtTäÈÉ=6ÿëÓ@%€˜[NŸÖGõ§¥çâ-®–q bUÏÖ®ÙRKØ…Ü(aÆ ]-øz€+jV…{FB+‡57„ìÅÿ(Lñ‰"#õßHFÝcö=fü˜-uqaóÄûKÅFGR÷áSÕÅžßãl`:É~iÀ_¬<Ø&óU~«»MÍ‘-Ž-“»B¡¬$ÚOpÞYåìåúÀœ0`Ã_µäbÒ”8·2¬Îšj‚ÑTæÖ*Êâå²å¢QEÕ¥ˆ*@»ðòáŒ'SÏ@ânÇ7B¡<¿%}æ=fô©MÞú¨^Aû]…>ç¡zFWK…À%õ¸þ²»ð~¦‘¯¥Cq™O+¤7Xz «..Ð .M’xÏúî5ü“j_)yâbñTA-Qïm*^q²çY•§™Ñ4{*ðˆR MP¾&â+iGÍŸsö gÕÕPäMsÉl¥(KbTÌoº @¡ž×Ù’bqLÚI™-½Zbûyâ,Ö?Ÿ7¡ç†bÙR‡p›¤—G+T5eÈq´ÕÊûu•öú^TϺaóN¢ãi„Úôª„}<ä3t˜A öû°“‡E\1ë;½RŒn·¬õ§ÁÑþÓ…}°íAŠQ&*ÿã-Z¿)Ÿwœ&ÊÄñAK:ÁvÕÞaPÓ+ºc;(º×ëzÏYoO<$d²¤:b,‰tXkK¦¼{'‡Ð ‘ ~HÜÈ•”:À¿a×)e9» ˜(±•Ó–ø–÷íÃþí k‹© ­nÂõáicü-6,gò5S^ÊÌ~­5¾R$—jèýNp{\3š*TÝD•®Î&(ö:üèÆfAµëlŒÆ¸1B£8Hú¨\ä&ÿ\¶páC 8>ãË|äjNZ!ª#¥—Oo|(ýh¹Z>¾Öõ €ª:ª±pˆkEz;„¼áx¾é%‚£¾ éËžfB£Õ*F4S|„+2JÞa$ý?ë Žµôí‘Â2 8®€o}MôÙûõ~R¢•¿'nŽËŠ=)]ÇÜá‘ÖÅ!ÅP`ÆÄgP’i²½vѪ«Ê'Œ…òlñŽt–ÂB#ÆçºòEË¡wÄx¡ã–5 ¡¼Úsó3©~¥–üŽ+¾²ÙÆÙ!e§]ô혈'¶Ì’‰ñ™Œ’éÚDe³Ž fFøx%m¨ˆl4Áßùk:E~8<\&”rGƒ÷Uz™_bª$ø:¢±„P=º0{S¦‹Â”?òý_½°Ö\2Q6%µ)¬È/ ”€ldÓí{<\ŠJ…úL%W댋”kü• …:†©BœÅö¿ø‡ƒ±&Í|½<.vùª’/qY-¤zŠ‹Dv]÷zwE#rÏ…Å@ÿ½`¸ŠAŽdð­È3vQ•–bqè§¿=þô?WO ï endstream endobj 134 0 obj << /Length 2432 /Filter /FlateDecode >> stream xÚµYݯ۶Ï_q±' ¨U‹úî€IÚºH=`@×Ù’}½kIžd'½ûëw>IÊÖM‚{E‘‡äùüCúÍæÕ·ïò⡊ªÜä›ýClÒ¨\›‡bG±©6ÍïÁ_ÂUf’àÆAÏÏžž“<†<}$ëv­ó*¢­'&þ„}8xb_UIlPA*h•^“$«OÃa¸ºNõT!½‘Ç9Ö½¥L žŸ[K½@KÖÊÒD' 㾋­’¸ˆâu:טçTIQÒ†Èß° Ë$¨1X“:ú3Ö¢Øþgýí'þÀÙÄш“À9“ôÌ»,8gmÇù?q-x~º1®¢Ô˜Ï9dB ]Wf™:¬){ž=P¯ä_ ° bòõþ"*¥ÅU%y6WÚÂ"õE5׋̠~§Ü{± Xo]ýCWQ™V °3¢!b¶üðA Q7›Ib‚G‚Úg–$@ä8*òjÇ’%Ô‘·ް{Ø ð9ôwÈŸfq%inû“4Ê“˜73!0aÒàõ$É¥íÂ6¥Ýûš4 úö‚Ÿp÷ŸˆØ®N†ÓÕMU¢«C„dz-¿…-êw¢þ=JMíï©nA;2Ê%¦©~ éjÍ¡})õÁ*Ìàk°\UlŸeÁ¿q“‘»êæ#ÙÛæ ²<Ž`¶À÷›b—“!º‚©J€‚9„s”ùž&ž  †Mðs_ïX¬–ïžÛú£Ãê ä®–/ —Z£kµ”õ|P^œ'c»­§£8Ó3÷X߯‚(ÚwÚ‡¢}ÍB8.•D©ølªÔŠs”íˆþl ›ôIÇà˜Â“u°ñ§ÖZ% (Â'AZ§©j‚±GånZRÃ^ìœä%…×UenÈ%¹$ÁÁ™‰5à¡IÚ[+³FqØ Dù°uÅѽÈNîŒÔâΨfuç¼PwFAmŽ>´}¤{– àùuw–]Z•‹ê±éwƒª±Ý Xݨε«JÉ“î=¦¬Ð@ô>´½ø0|4­ˆÁé¬oز`#ˆ¨Hx”?â.j-çæ²hÝ7Ü%©×L7LÛxêfç,1–ÍoÄ+ý E€¯ª)ZH$¸Z´ø#™$®fU!ª!XÙ:ká·Æ 4Gõµ†¿¥Ö5yö9·CJW §[ÃÂ0ᬂc×®òèv¼ržfÍ!Ó5÷0Ôô1õØÈVÿåJ’‹!–ý®"K¢¯3HRq*ãçž$êÈ (þÓà}ÏCÓÕ…6u`ÂXç´‚†F,ÊóIOZ¶±£æ×\2ì‹y4´?Ÿã2’™ÔE£V•¯tœØ+±Ý{WÁ¼Ñå‹kÿçí-‰æ„AJåZÞšÒ¶_Ã9Ë‹±‹àsU¬%°Â¹R;V0Åìh·‰‡{Ml/3j‚Á;ïi{΂JyZÑ釋=[‡Ýä²4·mÑ19ægÅôÝÖ¬ n9'¼øH°áC;´Ÿ¼ŽšiN.»>É¢¦É¬’°¯«»ŽÄ:j=e‘[V4ã!gwr³–㎆f·WNý G‘œÂLn!zGgoV±© ²L¦…¹AkQH+Ø_Ÿ4-eÁ¯ÐÌ~sßï9Eb&àsýöäòDì'¹;º¤s®¥øCv$‡ù—˜]®Ú1Œ2ËC(âîk¼çM/×v ™Šü¶LýJ/½«ô0 Rcç]Ó!¡Toé츟r!H”z!ØøÕ ÐÜŸ® gP!hkþÉ&4ÌØxí‡ù‰A6ø¢× ¦ŽjÕ驸'¸vGRïÂCä‹&ºþˆì¦^%©—G´ž+-`ò[ €ïõ¢Ã0i}½uW#…·uÐ4ñÍüÜ<Äþ-XUëb~ïðK4á÷°\fïà’Lª›LîvÎèO—oxdfF‹)õƒ1ÌPhdútG Õã%º‡âÕcQ£žx'®:ï¨f23‹*ü¾C¿Œ’$ùÇ=Õaÿ¬Î䨙)àË‘’z&¹ƒ“lüè|̈TÍà.÷x‡ž/”©Íž#´u<_^:´òue")Me‚O\H5Šê$`$ “ù}B »Ø“œÑE¯2àDÞýM¯Ý*Î~VåÓ`ÂQ¨7¥Y<N–”Yñ¥Ëå­^%ׯQ¹|ÊwÈöjRâÆÒ$¹É¿G_„ùAÐ/°¾Tȼ•[96½­LæÝ_¨:~ÔÓ²ìüaË=òÙÕh× (qÉVŒù)¥ÞE6:X”ü,8v>„%·xÁ^¸»øÒÇßÌØÿ£èîEÂ=•{®ž'\è?$X„pÏêw> stream xÚÅYKo9¾çW(sZ€Åᣟ»‹챃™=xsÚì¡Ý’lOdµ×’ã“¿õ"›ÝjÉN`R³É"Yõ±^¬>¹|óóûrR©*·ùär916U¥¶“BçÊØjr9Ÿü;9ÞLg.3IÍëÅzj’ÅüÕ+ìÒÉÃ#¼¬°÷;²äÚHuƒ+øás‹íš§4µ4®¦3[$ ^]ÜO¥±Á¿õÔ–É[s¦¹ÂŽgžL,Ùä¦uÚÕùZ3)1z]o…ßÕt–Veò›àØ ’Mÿsù¯ŸßgE„†žÌŒQU–1¼ ÿPØsš†KÐÔGW)XIó¼Ú¤8eÔ.Y¶(Üq…péŠÄ€‘5®&ìNЇ|#þ:¥½¾Àï>€³!L€*`m’hLS:eJãÙz»Ë6p¶›)à‰ÐÔtÔÍÖŸ:"è\ry#;K?JÚÑ ¯sÜ`2³Î*[•},›g¤BT¼ª€išR_{G"’è ìBÉ5.NXÉœ_übÇGƒŽ“#žÎ§Œ8vÔëy7§èR Ï (qC}ÝΤ‡{w® Uu&õêÏdg¿­A·óƒã†TcŽºk³ä˜ÉÑ9µ×ÈvƒjŠ]Çç§ £)*e²ŽÞÉ€Uãrw¨iè—sñªó[ïA‚¯qî ÷,s¥¡%r½Ûäv嫼 Ú)9o’ö¿½¸€Ò>OKGÎøëx"ÅûâR›-SÜÓòÒ.£i nwñŒ×`|vEœ••ri `RŸ÷«³ÌÃÄ–ø%îzÇ‚“—N_"8ÛÅw–)k'3mJ梞©’¦•3f[[Ç!ræ¬Nžð‘¤ hײ[\á3žÂ‚çl¦Ni±ÅÝÐg9Û?˜±”£î¶¨å1Z C¬Ž2o,RÀ¡QŽ(¨íƒížš<šícu£B¤&ë,_8^„Þc&õÞƒ¦-ºî 7Y‘±Ã#…½wœ¤g eï¶8‘Ö,¶é¼YF¤£}ŒÔÜ{ 6ZŸeaL0%&vyƒo9.´‰ÈŽ'ŠÎëù6#Ý7 ‚~Űš£ìuy3 áÆåö€ð&‡ìrI0áIθñIk—¸ÁÐGiDëAf¬„€œÚÚoq+jAô†I·œÍ";±½ÀëЗå&b˜G¶d›:î´ò¡L´óåCÝñx· |)+ÒÞ˜£iä;¾ÛŽH¥ëì ò‚î•é:9Q†£žßìádG¹»%z‡0`½Ç¶Poƒ‚]†{^àä¨^d ;ÀòIŒÆfk`a‰Cçà tUS×½›bÕ¥µ”NÃûÜ_Ä_÷»ï]HeJËML<«p±— ló"ùh\JaŸ‚|ã“ ¢P ¿Èó'œR†Ë>#ƒí#ÅNê¸à‡Ä[èÿÇddûÖ'ȹ‘&j,¿ŽÓJÊãhŽ«s¦È7Þá•ò‚zîo¹°Äg¨–ªÓ$òŸœe5R3Zɯ‰².AÉþÍ7WRí®iÛ¸âm¨BЊüŸ¦Áv~ò¢ƒaYgx¯Lû:£*äãÊßDu—jk¾¦]‹.?Mþ”£¢1¾°jfªÞtWÓ^ýθ\åY¨bñ'€ 35â"m\Ÿ$O^>íŠP`ý1Þ›6Ô®jÒ¨X­gqŒ ]2|˜íç¡ÐAåÇP œÉ­ÆhU¤E_ýú5ä~Á'Üßݰz6®¨&Òð‘‹“uý]÷²GÝqÈW¡I¹ùFxZ{ëE£ôºï'­ÇnY©L÷áå[>Ø@lCѾö­ñYòm¸æk`'Õ„p¸ñtÁdñ¥nšAm¹ ¢wïd¾Ý’çb“[yŠí½Æî:½vºïùÔeË"ú,"Ó ,c½”2!‹8_øZzÆ ù™oF¬é\¬Î¼pÄXËÔP£CŠöž‹^•ñjB#q1Ö’ÏØ|yô5 ?K˜Þ©ìÓÁ‰”ýoX-ªø½Gö [Ìè·Hè_Н›¨RŠ>9ëë*²zÝxÏæÆ.—òÑG]+¹Üe±9¤`›Y_ƒ>‚s9¦Ð¾’Èjõg§ZuWƒˆÊJ¹Úë¼K£lìÊF³ Óè4+Cš¾Øˆí;!ˈöáÖß|Ÿy°]vs·~Å’uB”‰«¦2>§Aۨ鬴&ùC´êîV4¼~Xùè}4ZégAú.UŽôŽ|73ój¼¤ë|/tF[••å;—ÒÄ¥ÖcçRܵ"#µøGG³"ƒ«~ø„y>²§Ui¨zV¶žw ÔÑnf ®B+gë1N«pâ–å_Œ¿ ;0×¢"gSB9LqÄÊé…?AŒ!——*Kía䜩#;äú(’ùÿÈ´Jéî¸bo%RþXmKÍÀRÙõhDë†éÜÖ²ûpø%”ŠØ˜vqÌŒÊËì Ôåa±øüÐå(†“‘t-ÔVª,%#ÉpäÍÙå›ÿ“àø£ endstream endobj 149 0 obj << /Length 3215 /Filter /FlateDecode >> stream xÚµZKÛȾûWL.X\²»ù °{cÉÁÖä`;‡âŒKâ@”<ñ¿O½úAªé±ÎAb³ŸÕÕU_=š¯o_üò¶*nš´)Uys{“ë&­LuSee𫿿vsó!ù¨òlõéö-ª /•n2îÓ®òd/¿Y‘Á«^®Ö…ÒÉ/¦P´?è˜óÄu0oÕ¤ª1vâôWkݨ$LJ¦š{.¶¼$µbõÙwWkU%=ÔœÚ#üol ;A¹ŸL*4>]­K¥`ÔŠË »w%˽z÷W»ÚÖµÇM„OkÙÐ:ÏÓ¦(<¿ª¯?_Uª•šñKUnMUe²»çg{æ'n¦oGbU Ç^ Ò3`%ÎC¬,“¹†[”è'ÏœûExh”Ab댇8îPþ]X˜âÆ€G™JÞZå©©„Y·[>/e²¤ë¤ñ»0±Ûû>ÈØþ¼Ruò´ðÏÜdÙ£¢Ëä4ŽmÇ}Ðù5’Lb4ì{Úü·æ§#ST¹'Oí°ë–+¹ÌM$DzŸƒ,qå ¶vkbL6ŸIwÓá(»øŠï 츤×whÜ•ºàÛžËDì;éÅ÷±[{–½@W’h á¶Z-²e +“7()ñèZC€i€6V‚³' ¿×^þÄßD•±UÁ/ãê?G;!YË‚ÌÒ’—íðtuc@ù˜môò„Ù儈—ØPÐ §I‹0ûƒ^Ñry¢*³2…ßàºR4 Hº××ä©"5FÛÞ¤U×sê´®Hž¯'ÑiÑÔÁˆsµJ~•©LHà“vìÿKd±2-š’¿é®×̉Ý*[ <Òu5#}BP PzÚ³,²T–êÊí/÷È8Ý€Hí¸ôo„1Ý`^¤M®g;ÜF–­Óª˜,ÛaÖEùó7ˆ6IgÉ«‘%Œ£ÃZ5MjÔ#H§ÛȦi’ *ÎÑìIK@ 3’y@xjSÓ<ƒ“+MŒŽüCRÞ‰‚D„Ñdi n}ì=¼òN aGë2dQ‘AgdÒ‰Ö//l…ö\}Æê›§Á5Œ¸ÿµJë@v8Ž¥1°›¦šòìíª68.X ghQÅ÷Ì“µ)ÐNCk`ø(¸I Œðj`÷¢Çn^M(ƒ“;&àË5\SçAúZ¨ÆrÈ„ÒX‰ ŒÏÚk/µí9f:zò~öB3°s­µr倸§u"<åÓRØÈ­òLä"›Zë™ó¤4O4ü>MÀ:lU‘Ö+1š-dm¹ÉÉ1¹u ±xÇ-Yv_B. Ž5mg÷Ͳåg‘¡•3xDpæ$Š;t¤ÖÞ×YžâûhOíq˘ëÀ·É§ŽÖÙꢬ@2BÚ{ÂIe3›Ø·Ü8àÁ}Y‰1Ë 1qYh`ÆÞ êp 5Il>ö˜¼;×å¡·;Sv+RŠ=E9Ÿbä¥ù=°r’€Oéó&^žNV¹D›Ã—^Ž,¹-?´¡ž¥»H‹[VGjÂu[dÎW®¸X” q(^ M ˆ¦¯£Ÿ˜Åh*}‘ŽiÔ:/«4ËÔ¢b…áÖqv~ ÍF kr€Pµ\˜q ù´Td\ôÍÅÂø1ËÃCÁ>Biq}ÉÃncå—UQr¶kï¤=Êèl¥qÞÂæšÒ&-Uí-:={ÂZQ|'\ù˜>|¿'¸·êz`©Ç†QÎ …f‡{E+Õž7rƒMIY€7VL•DÉš†Mïav+åI„ê´•Éèäog‘\R (x•ÕÚ* ¸ý†»…Šp ìÒöÀ:×tÜãJC#Id|ÛoÏþÿòZ„.h™ |^‚'§)Âk-h¦ÁÉX3í䊭3äÖP`?Œ¬ñyǬ­ÁòÔÖ,M¡íyá,ÎÊCùñ<]jê}…“Y˜.411Ãp—Ok–›¹p礱·"weI¬ÎWCÌLJU=>Æ|`PóÅ}`,¹9ÌËØ:yšõsËä?°Œ–]2§®WTUZ~Û¹ÿι.JRáSSÂé´15·½BCÚžå¦NîñèÁ”‘ïKb°5×™zÓLM6:г³0ƒ´QrY…<Ÿ(7˜¤Ñ4pÙBžéÝ;ãÒ>È< )Ž~´"#1‘uP Gz̪n¼'GAQ7o¶»§œ¼#äô‚ ¢CXM¹”Ú;èXGælÖ‹K¸IùL0QÔT³LL³õÉ/ºðßkæI–½÷ËŠöG”=Äo|¬ún­Au›åé1 ¡–ŒÅh+Fçf°(Ó“ÌQêÈ DÛ…ZØYB-\™2m?fmceÃ; VÄ¢èŸa#ŒáãiÏÒJ•‚§ê½Á˜“bšYЧ¼†Xª=Ë‚OÊ'Êï…Cu¬¢ãˆ˜7«¦|9G’«åõH£*”¯Y*û½•BºwÑåW<_Ý„a”ÖµP­8#,Á~,éP§¥GðùQïã8£MZÖ>á€ù ÈR“UKs?|ÏÜ={²VÝ]ؤY=.æü˜¤Y¨WEu.Ü[¸8q…>€áM•j²¡†/ÈëÆG/>¦W6¹"1=G]PM0Nuöòè2ªÂ”‰*&Q2¾ÎÂÏÚÖSR&ȧȅLÁÝÀÅãpæE¤AKRŠ $¿Xl­“}· ´‰` ÄLä° ÊG¶RWöG(¢à¶³^ôcàùGЖ ÖÉÀCÿR<(>JæÛ«*¨žöõ kÏ`Á:sG{!¦ÅK¹8ÿ TòžŒþ|¦â\®}ÒÛåØÝëÖ Ège þËó´qÊÏ‘ÎÈ´œÐŽ86–Æñ+)34‰@în¸qg/[€Q›7”ðr²Hz²¶ÉÃ’@`ªŽý4[¶ÖY=Ñ xå´àô4¤g+O›»ä`ôÉK?¡„Ђ‚–c6Ã"y/Aˆ[[\ø¯=¡dÕœ „`Ƭr’£ïè¾0žmb'¨¤û´ºrô]xçÔD ß±q§ ÏTÚã„qÓ[\#N“2|d“ƒÒþ*W4Ø ^ì»±Þ@GâclÚ åhÁúIªkuÊYØWÑPŠ„‹’ïõx+ÃÑ%Ë:ym/)äÊ¥›2Ó¢] >š%ùÆd8GéN>aÉgN™µ0•¾fiôGëÇñ±ädu,Š´~8^vºÜ ¾ÄÎ3ª¨’'Bå-¿8OEÕ”³Ô×TÉ ÖÉ¿¬ì¹?2®h/¡‡MC‘n¥[ ›Xã‚,ž+’lh&Y. _¦ì8kx}€`µó ÷‚z­d1<òå¤ÂƒˆÑgï¼ÆײJëÒM‹ÇWM F•Ó…¾Ù±øoè9WÎ7ÆÐ{6˜ãÎÖe`žXr®¿ÖÅ£\Ü$‹3渓&‰‡ß?á÷&ò-C–Y:d®¯«.͵ͅÃã²-¸â‘‹îFëÀï¤&è°ñÚåäÚ.O+¿ø{¿•BPî‚+éa…;1~÷ñŽNñÉ.ö9’•v³ ë…Iþ#†h*X†œo÷õ Å™7ß  åk‰20ÿµž¡ú”@Éò—>ËŸgtàíA^Xb¸ÆîáÄMÖäYÃã ».¸9뺵wò¶ß[›œg;*S:§„®šà›‰Y’–FÄí@Þ¬ßÔèˆaÀÏ| }d€à)õW×0îÍ|K‚åðË |÷©]ûÝ]áR~Ö¶(ùˆ¢ÌRUþLe$)¡oœbAÚZ«š¾›0òü<ÝÀRv¥Žâ5ü rYs²q¯s‰ú0‚qqìA’w£€BWÄöµ®ˆkyý«àÆä%1°=Ú«‹¼X2,Ø$÷¯³|:Ïã¢tèw`Ç`³t³@È]líÑ&"`*1 ȇK‡„le‰QFºÞÐŽaËÑâxôk¢é>”^Þ~Îe÷å%V(9²npv’¹›Ï¦Úp 9@XXpÜpŒÍš+ÜCœ5Ø; ŠžÖ‹ê÷{†ƒ.ò2±ò­Œ±w)╜YǽÂ{ýÂ#œÃåSÜr_/|‚dFÏâ‹Ñ ö„ó¨{&°Ñ'?¼ Êo‡Ý0éZKÿH cKI]YžäI¦›c(ijlp+ºÿþ(ú¦§“çUj|츜ʩÓR×ß‹~–´ÛïÜÊ8É—Y‚J§¤1á(Tž–U‰ßï¤u]ñøÛ^¼¹}ñ?GhF endstream endobj 156 0 obj << /Length 2804 /Filter /FlateDecode >> stream xÚµZÝÛÆ÷_!y P‹árù4bÀF›6F‘Ò×<‰:±Å‹(ù|ùë;ŸË%EÉnÐ<èø±»³3³3¿ùེ{ñÍ›bQ†eg‹»íÂÄIXDñ"²ÐÄåân³xôÏKà·^Æy°ƒ›#üºCw†K¿\ÙÔ¯ðÍrãݾ†ûê€ïãà€§e\O¸¸;~Ð5qÐmùºÞゾ_¾¿ûá›7™ñùÉãÐ&É"bNx—þà’z ‹«Ã[ÞÂOòõÉøRåIh£R‰4$ í\1ó¸øx*;ÂÛêž·¡GÜæw¨W¸Åb'Y˜¥v±2&,ÓT”Uy•(àŸ†´T@ 'Ö“KÒhí«†˜gíÀ0i×ðꆂ¬ mnT¶Ÿñ¨ZøÝ£nº}C§f~¯â I–O5\UÌdÏûÁ‹{9|‘wÍã¤.§·ÿ ØN6bc^ªÍZ4'løþ£nccx†íkÜ ¯Âå*IlðfY$¨Po»£œ",Þ°Òa $±GŽ^ò´Ç½ðZõ2—–mñPÒóV,Å‘mAàâ\!‘™¤ –+FUF n™e)cœ/Aò8 ~ª×Ý¡—Ã8ž×$ýáHç i.àÚÂQ-9.z¿%_lùá„Bµ5?%VüÅÑ"?˜NÂü|ŠNlŒ¬·W¯Qªgž°‘÷ÿŽŒ¥ ¼0! ªG=ï®À ÷hÏHíH¶8t/¶M†õ ã|™"Ó°‡à9¼mÐ>ô¨ðîêµÌÇñ#¨ m/šñZ\ÓÔL?FÚâÕõ'gÁ8Ø«aâX[W(ÎYGÛš átI…,¦æwìH0l·Û³ ³‰ãø)Õgu †îÈ5èé5Ú<Œ:›w,Wí£jàåœÐ­¢Ã±«Ž"…áQG%1ôéfì^b\žôvuä·xdÔ""ΫN|½mO@ã‘Å©ÌÛ—L ®§9÷Ü k#ÍÍ(aäÈéÕ³Æ1ˆK’UÛó¡5\I”…m‘ðŽ˜¦Ñµ:ÓžŸÕç ïêO2‚»%œ`Ç3ˆÄš˜‚Õ ãÉ¥› 2ô<6@nuøŒ6ÊEõ’±P‹8 Á÷ÆQ˜(Ì[ÑËée,BžÅgç¸&#«“@° ²ùô'±ÍóZ40Š Hëänô,[¡ºÕ0“Ái—Á¡WÝÁj°fŠPYÆe&ªÊXŠ«qI\æÁ«Z™^½fOè•Eðú“@AÐÑ"xg¢÷|§¡..Êà§×pÿËëïÿÁïàÉÄï)Āϻqø£SHo¿¢²x÷<â:>ÒY¬æLa«¦{¬‡ »<¥ã; çNw^`lÉŠÖ¨žÝl¨¤˜Î§!ªº¸…‡åÀF­ãQ0XÚª?àªý3bžÄïêuím$[4«tì'ÏvèöpÖŒF*ŠSHÖ¤Á 5ÙmÏ„yW=ÆšƒÐ’˜€ôÝyÕªg!l+±N¢<óòê°á‘FÍ»s†Õ+Þ*–â‚–ó›³îìùO!ž¬-Í20lÔ7l›Ûk†CGM¸Ü¡2÷<\y¹Š#q1³™®v&£OƒÃÓªVuÐpFšÓZÉ‹j o¸Çá³±À·Tµ$?«êÞéŽbf½º öÔ•ìä<СcφeR0{C•–å`5p¿íö‚§èž8“—HÀ,ž8­€@iÊÁ‡ztÕÚFqU¦U|9yåoä³j„ Eçï*SßÐllí£7N¤³Z²í? ™ÑÛªYÓÄ‘FÆþäÕ ½)€ÓË·—HÍ¡aˆv¼Ì™Þœ{/K¥hAƒä ð{ãa eMÎùz'ðì‘þ¨"p¾|ôS°4ŠÇéeë¥dhi ŽL7gqV®A$cÇZ;A5±L"$[baeßi×õ°#ž™£K›­>.ӌѹ¨7sgÇ’¤ý”S"}Ìä²”¼y×øM¸,#ƒI¤Ù!¯­‡Y¿ÊÎÕ¨tÙJÕ’¥#ûÌ4ËS¤‚¤!“̦Ë%ù® T®^fÎ$JÖäa6´¦™’Ô½:k¤ŸY”)C YÈí,JKÅôÊÁ(¹2Q€\T?øRaø0]jÊÛöˆË¶ /-? O¤lpÐ4 þ3„pæ†DŠAÇÁ·¯öœ°yÕÏt^U?õ8ÕŽƒõ³;{qrJ¦²÷<{j¼DAD핦ÖVÓÏóÓiÒä“Z$2âô5ÄÜŠ¨´  (Èb¥ !þŒÃw.®ñØÏru1Uæ 3_ê{Ûßí@QÿPqÈáÌ ä@©CrIä‡gŠž…ßÍÙûùX½áÉ£ò_p¢’sÛ¨ˆˆ×q–—Kà ®&áë4Y¹(=_³…]]ùI(×gñ`7½˜˜w¯}›¹ ›Äá¥]¸E–†¯è–š\ˆF‰ ŒóÕ~E°Bî( 1Úi¿ç4‰ìøÝk) ·Ce \ýÚv8$ëÖš¨:*òŸyýjð¤j6ñ¥sVpmŽŽ~ Da×g¾÷åÕÄøVõFH‹é«WºióµCUSF¡ËßQ&Q˜Vv®ÉÐ3ýRäÝ«p†;J•òö›ß‘äÞ¥5adâ V])F[jóo5Ã{Êr“ÜhFàÁñЉug*@áøUü€]Å %aº'TyfƒaÍ%Ìï¤cC䣙;m"Ùb$ëÆožÇi˜eéeéY÷‚â™`‘Ðt•^?í\ê'p /)‡ë=;“LUmšQ×ëàó\_b] Xç>•iAŽ0Á½9Zûqô’,ó-ÿë¥ùì9¡Wÿ8Q¾ê¥ö”C™aÐ,=›˜çE.â¹XbÇEg\NPû™_ŽZÃøÁjœy`Ħoa)&RùD$mïƒÈ×è¶qɵk\N·w•K××4£îÚŽª°J#àµÆËìÜÇ©¾ÓÚ´@EýRf£èú2?–ËZ%¾÷dÁÅÄ\Õª=óg´+)¿¾gs(×ÐŽŠ[]÷wƒÇÙ.éçœÑ2 ðì÷³¡Þ²®bõ{…ÖÓ=K©íG­.b.÷ú\®¶§> Uû‡nu-‡¢ @ÉÀ·_\\V3N—`ItðÏáŽ<¹‘¡"§“9àü<Ô˜?мg4ö§å t’»z>ìòü¾ŽjOø­—I~õEÔ+i)ü]¨&_ZDýµV±f¿—ä°ŸKœÆ]P†D(µ£o$ÔsÈÇM á÷öãV ¼ÎØãÏÚô¼×Ïu4Æ]‹lÜsç6ÆA?Œå¡ÉŸ_á•«úñ|MÔç^ßsšGùEjä(¯·SK2ÎõåCFžR ÞÉ<ÍíÊ%vìßI|MjÌÄë¬_#¨pbGsÕF¤V%ÐæoÂm²šÿµàyÎÌâΚO¿[ÐU°}Ç¥ã«ÉÊÐbòœšÐò/9½x}÷â¿’Ë] endstream endobj 169 0 obj << /Length 1652 /Filter /FlateDecode >> stream xÚÕËŽÛ6ðž¯0=ÈhìˆzÙšMÛEÓ EÈ!Ͷe{±¶eHÞÝ&Eÿ½ó¤(Yj|HÒäà%EÎ çÍîóù£'×ÓÁl<Ë¢l0_L”Œ§a4˜„ÙØD³Á|5x¼N“ Žâ8–CØÏ0/†Ñ$xàïîÝ£©[v7ÀâW¢ÀžxDŒmÎóC'Ä~@šE)°w°\ÝÀ¸ÌצK>I?G‰þ“ˆëźî¸J¯©CZ:—7\Ò(5\,ÊR /ÔUMº`ÀýwC:÷tluH`}Dð{¯K"‘Ž.T[YJÖÉ2°½=r†‹¤°½v…¶d•Z¦h ên‘ŠŒu ¼8ò„ ã5ÜÜ©Û0%~™&tPÓX©S¨åÍ“ÔOa©ÇÁÑc&Iðý¬¸ëÊ“{tf".M¹*´¢~~Gò²ÙÏÎc{bÆ ´1…^T¬À3ÄÉ8Ka8¨n‡iØM>ÖhÈÆq#Ø*™ê¥9ŠÃøü¹@’Y7í‚@£P+¸Q–4»jÂçüYQš•/±†Øµ +‘v¯ê¢”§-ú;ž¿DSìyž 7vGI'ÞÀæì­&¡8x½å¤ßa£e,­ówȶIZ¿ŸàüÁG,Æš½Ø‰qÝ¡ ö8š“ã- góR’yŠ…@=—‡;ù¤g4¹"Úè›”äøJË»D컜 g†’2NN–T¶pO¯:Ã6“F,F8$m¦6õMU“¶õ½[b¸Ìi‚^,8ê`‹SµàYœ'•hp[b`Ë»g CË5rŽW€%TO 9ë |ÖðRútªâ…n÷˜KRü"OuH¶¾v(?L¼5eU·ÝAï¾ø§.ü&üZëâ©*k•k†ši¦$Ž»ò%ã‚"¸'õáípËpm]”<ñT‘øWp7ª«ã ”c˜~¾­7»½‘ˆôù7l­ãyUÃ}AsÔ”8¥…У5ËI¿[»Û½%1ñ@©ŸüãT_Äâ°qê‰ÃߨÜ÷pmóïÇ]ˆ~qÞ(z1¥aðbÍøì¤nZ1Bć8æ`QÃ@íêž’·*·½LÜ!¿3#]kar¦Fýû¶@Õ?Îéò¶®]ès,zv8ãÂÕl_’ºJ^¸•²e$ÛŽý+„Hëê ëê>ˆ8<ª¿ò-¸² L=oíóª«ôÆÜȽ~eFñ¦(ýwã½6d=õ•éyw]Ј§ZÑ-[/®Ëà‚²Lʯ…W•½òz¥ï%ú›œõ`Þ»‡lü潬Wв»÷ÚÕ“ì?îRò·Ã‘IL2qj’BNy¿+á(÷„_{Ú¾ºˆ:ò‰uÁK¡š|+Œ¥xÞð¤øIæGOÚ•7_64ë÷¹í^ˆy®:^;®ˆËÓ½WýóUÝCûÃy‡–Í ÕI*ÇÓ$fµLîÑÏóGÿâok endstream endobj 2 0 obj << /Type /ObjStm /N 100 /First 794 /Length 2157 /Filter /FlateDecode >> stream xÚ½ZÛnÜÈ}Ÿ¯¨Ç݇ôôý XÞ81²^–’z F”Ìh†HÊ+ÿ}N‘i.š¡lÑ4Éé.ž:U]—¦Ird$y²ŽGJR ¤ þ4)K*à.V¸‹¤Ç%é¤fZ“éžq†´'“0$²Ú°Dkñ»!‹åÆ’SŠL g1-’ÃC«È+=Ã,o¿ÝKøÙ§HH°ÖI EÁR´EÀt‘zEɹ™×”b$Ïðñzï1â'Ÿ0&OA’Rx}€VÊc„Z*DbÕ4TÅ¥ÒÆám}˜EEÊA÷=ÀD¬ ‘ßO*A~t¤%Þ™ ààÇ@> hð<&R’6΋˜”@‰S Ê(€Mİ,ªq˜ 0/‚-Ȭ”oÚÍ”³ªS–cÄX r (Y0Y9Òpï4kŽÅγª`?XÖ?1.¥a!©å ²a*0­`HÌÌ `Ø`©Œ"çÀ®cÎ+ì`G˜àCç8.²÷`¶K&Î[Âx Æ÷ô)‹ ¿RÖÂ? X0§Ø <)ØßÇOù(ù æ°`Õ«™rš‚–X/ †Q8¶/[ ö„ ÄêǦ‡îËqEQóÛœ_‰fbïˆÊøÙ«W4?¥ù?ªOͧ_š|ÑU)Ô¯ôÛo³_Þ•m]]ÞuÏ~=8Y÷“_7M¾ºXå5•yûWUß4O¬¹»xX¶~ËÆÂl½”®êjEùým^·tSV-óËë|DÞäc¾¨Ê¦­÷¾Ì¶XåÔäu‘Á3½¸7užu‚ꬼ„€g*gûÕÿ*«ÅÍߪ»–°šª/y ¥ê¼i0‹ª+ºÎË' r de¶üÚÇßmÖÄž«»eÖojڬͩ…MÁÏÆ„ l¾»Ì˶¸*‚²BmUIÀ¿Ïê›ê ->gEIͦ±Õ«‹»¦I ep”¦YÏÈR·ý+¯¹Í¬ÝÖ;ÌϺ\Õ²º†rËcvˆÞ­n«º·'l‰Ë£hìƒ5²/›{ƒ@Fû9§“ªZ¼tU,sºªêU6&OoÁèœú µž¼ÿcD†Ù”±«“wRTŸ²Û›è눠“¿ßïÚ44cúý/¿9Lí`±×··yyYÜ}©[3ºÞǨ;C¶“ô‘æo‹öœW½z5›úz›ÓüCvÏæoª²…›4È-ŠgÎæ󦺫yÓ¥›îÑûü²ÈNª{:ã.9¡‘{¢U"¦ó$ÕÔ0Hx]–$ž!Èv/G†íÓ¶\?ø~ýû¡d?ôRR/%õRR/%õRR/%õRR/%õRÎg[jwàfóÓ»‹¶»ÿ£(of󓪾ÌëN=u>ÿçüÝüÍ¿Vž3!‹–ÎGE”œ'£@þGm€{NŽ6¥,潦ãùdZ 1ÙR[/85"ùc4Gaè a€h6ErƒŒ‡+pÉ “ÐÉ=b?÷M %ZףƂ}¸„‚—âzÊ`%HÁµ“I JµQ ;ŽÃLÃyáQ)£…Cuf}€µô8;½¿Z`(hµ†¿¢°³yJê£þúÑRx.àáu±NÂ¥QÛ˜á®Ò t(:`!–Yå„·aÉôÞj,Ã]]@XGc¥>¥q(ӛǀˆA{ÌÇÕ8;=@HèLLÂ"Ù™À~ü WqÓïc’hp´±"¡Ù16‰èާœÀˆFå!Ñ´:…ôNß8‘¬cÄþ€Íc” =#!cŠãP¦ß=:¡ùÜ¡„HŒŒ°Õ8’é7Žˆž8¾öCÕÀ~ý:©·j×3¡"W`A6Dã~Ô[Ýôl ,ë˜@9àáµ¹PÛQømoÝ( ÿýŸÿR¯¢¦àŒHP±¼[.Ïεý\å…Díúœ¹•‚DE¼5÷-*ôò[¨£¤êyÅçBn¸±|&†ndnxɺèŽúš²çêjqŠÖë ½Àïoiþ)¿ow«åÝ&AÙ½&Aéïi‰à³¬-&œæÃ{“RüHÛ69ì³É@*å×7ÝAâpÃËfñ‰ãz=Ÿ•éµ`ÏGŽÃ5Áé‘®ãéÚ¿¬3ãSA†Ä‡‚ýè¦l–8(Κ\yò¹±G@ÞB!lÂOëQX@·ià|hÌÅ…ãd*8¦ŸVy¤ Bx [¼;Mpðv'ñ™îóbÑ£óØÿ¸$#Ÿrþ Oþ^5ûaÂèz¬Q/óP\nšÅ¡êµì\jò§€$‚êK‰§sÕ¢hsq•ÝÕ¹ô»†1ßÂÌ!ÌK)4Ìû¬ÉΣþ ñÉ=ŸÎûãñ'*N`r+÷M_˜LšÎß·â39±zýË&_üqÌšý4ðÝ´¤=ZlxáN°C̶ný”±›;>täB ;$yaøk —s?­Œ³–+Ø„ºM‚þrÉ¥§%‚q?/zsÊŠ}òàsܯóWÒ$…”öÛ·όî¼åŽk—ÃåÊÛù=vö›<ØÅ]v},ç{ýh¦ŒíÚ9aPà¸À¹.ƒ-ðé$¼J‡ƒû2Ë?_æÍ*Ëo ù"'ÚÆcL@×x¸}·É<O‘•×)N„›"þLk1ò—x.Ód·¹P@G}Is›/—«¬ÜÃ>íÜóÛ£ÉCæCmhü³âùV?\ÕoÅó B¸ßá>¼pøÁñý¤e·Aдüÿ ¡[õG5üÏ¡Û=}RsU\£¢yÙͶ“YíEBw«Qøä:kzoÐ]ì;ÙM±’a׿ü·ÇÌ-—Ùô…g÷¿ÿz1ÏP endstream endobj 175 0 obj << /Length 443 /Filter /FlateDecode >> stream xÚSMoœ0½ó+|´¥âàÀô%‘Ú[%nmH¨v¶»¬Vý÷7v´$Ê©B ãñ›7of„=FXSèÚ ï­.C-úCö'ÓÎMÀËW&¥¥ÀÝ—ƒKöžÛUnj«CéÿƒÍ¾gË“ÀÜV }p÷mv÷D£›ÊV¢}Æz +¬¯u0¥hñ]>)#Óûr9‘UîJ'Íg•ûàd;qÀÊ+ '˜X½|AFw$3Å´å9¢×éFŬ=™e>“]Ás!Ó¯Œ1rˆ8ðŽ«²A^•­å‚¼Ý¦8àÓraP÷”Äšc;\%oŸ«ŸíWž´ÑM™tu¡–?вHä élâM7'mäßÄstc‹tä± Å=äYÐŒ«*N„ Ç7J)°K£Œb÷ û@×/•cë«ÄC’¨U^•|Äü{0L±õŽ„á¦|0ƒmν.$ÎÆñt±žó8c)È8Gô2o2™a>Åän¢3BX`a„ëNi[i9|_ˆGbëm­îmfp8r£æn¡©ÿ«‚—š6ô¸ª¤¶Ó¾ªcß î²Ç6ûã0 endstream endobj 163 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./wiring1.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 178 0 R /BBox [0 0 504 504] /Resources << /ProcSet [ /PDF /Text ] /Font << /F7 179 0 R>> /ExtGState << >>/ColorSpace << /sRGB 180 0 R >>>> /Length 1966 /Filter /FlateDecode >> stream xœíYKo¥ÅÝß_ñ-aÓôû±DBJ$r-±@llˆÂÄFJfÁßÏ9§ê»î;ƒ[$/ÆãÓ_uuu=»ÊéøöHLJ㿗ïìß‘j¨ÑÖÑB¾ý÷¿Ÿï_/_}üçßÞﯗz/ÇþóúþXíøíòÃG<~º¤ã[üûpI1ÄxüýRs qµ•0Ëñ<ÃÊÀ=¤~<_j)¡uàÒžÜXÛ «×r=jO¡áòΡâCJÀ —0H_¾†ðšÄ=ꢽ…’…K¨Y¸Úwðo†›ð sgñ)äeü’0äOÛyP]+’gÚ÷JŽ’wàþ]ògÑÏÊÐýJN¡A_3K3‡¶¤,~³H~èËøÍjúêa.Çò´út܉«ßçÄ%ä¼Ó§°ÖÎfÛyu…7yê µoòV\sn÷™Ê~ß }ÖMµ:?×W…¾ú¦Oà\7}à Fßì\Óf/ºÉnO`ó'·7pi›?÷µùËí<÷'ÈÓæo?ÆÍ¹\7ÅýGÙüú2:ý=ñZÏŸÄÃçøªyÊ‚³/Ç'ÇÕòéãïäǧ_Á`™‰¥y¹a.Ó]$ªšˆ&âàh!Ç›\Ñq2—Ãéå’5L£_ÆïTQ‰´µ°®\p÷*zñ¼À†6/¦|¹ÀäÜ_–™ 2id…ùOŸ=Ô%ûÈÿV -Ë<ƒg¯J—udÝ5èÕ4ŽˆSLæÓ$K^Ø„å)fb+!‹µhÎ>…!©íWp¦Ôt3ð_ÚŸ½ôõ¼´EGšJ9Yðt*”¸0ª)}Â'ër¥7ڜΩd•²¹“?……§tM®ì˜ßá£#9F”Õ2ü>'V mô°\Þùy2;Ï+ž²É×µÉKHÛ}à 5n÷Û:6}mÙô•=™úÌÝõãúÆ1cmöÈž\N{çÝžÄy³7°’ÕéäW^Ýå<ΉáQ_]  º#ân"v7ÅÕ•§Ü‰¡)yÒéâ•ò?ßÀgðzYGÁns"ÜGÊ–´;äUå,@Ù¼<š—!ƒ–$fª€dÅl‡æ3±,:L”aÙ”IŽÄ£²ªòCv ±Bó-°ßû-°ßû-°ßû-°ÿ]qtdû? h†$UõÖßÁóú—®ÇþlôÔ„f ¨‚ŽÑÈ'6j&`ä„Äþ^ýØ’ ‰mù5°waÑ·¨~3µip½­à~¡—ÛŽââäXÇWíà‰Ðì‚ížâ¸ªËm¼µºT×ê’­ ŽÄ‘dÄOˆ£™h r´®•';AZeל€ç)ã¿zê`(?¦[—>!ÿGõ¹ÔJWÓ‡;Ddœ¬D2ýø•zg'œ0u sgWgŠæjH @.À/½Ê/Åa2àdÛÅ ¨Ô¸‚uŠ ÅδŖž2@[8»¦©Ñ O˜Ã:ÑlBÒó“¼wX'L©•¾mû¢6›zâ´Æ)R¦ç«G¥7Õ”,E,Ÿw )A& “iÀæ9ÔËÒ Ö Ç[Â5'¢·y0çÈ*ýü“%T5ÏQ™S µÈ‰¹¹Mµô0‘3tf ¹ÈN—fù1]½y:GÀ&¦ v™(;1¼Ðr7ûðFXDŒsa(î+– WKä+gZšžHÅ1ó£dŽföB€ Õ×)Wâ|¬ûˆ®Ðº\¡:„6‡I-eõqÖLL°7ßJДS$¯P„ž´™+9ÉšN “FFŽf” t£*Ój,«&!æÉ‚ÓŠ—¢ ©>'V°T«I8ËÉé2hÍñ”‹Ìàor4è•… õNCè•n”4Z¤W&/ƒtðnžŸ BÉ‚Ña±FÍJ 8ÿ ò\UtD 0Ü\™à‘)_°¨dÅ‚P»#[¹à8Ž/¹âÅÄÊEË® 8•šW¨Y+]£* ±ò4«KÙ+O,^y8”*šj)qd†fÉ‘iÉ)k²IïbÉH0°©€á  Bøä.RiŠuåĦ7•puŒ¤·HÆ‚üêù}T×m2(ËQžn€‡.´ÿäxƒíxì?9?&«Ñ^'ݯ+]+e5©Ëî[£ª’£'PÓ¾È{çwŸúÙÞû ¨}…sÓzÛË”=n¼ ‘ú<ÛVN¹lï½ÜO—w G …8 º‰á®ÂºôµNbþmxPJÊåþ•ï°ìÛO‘ÚBÕ‚ï+VHk¹©ÆŽ4l¢Ø®]LÜhn}Êmïùî»4˜,¾ÍO19}Áp¶ïî5'R[à«wžûpÄ£s5 Cí .í»“ÕÄwÝ^c¯+(ùfîdp“9Òa}_9ß%¾÷î•"j_±>÷Z¥> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 164 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./wiring2.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 183 0 R /BBox [0 0 504 504] /Resources << /ProcSet [ /PDF /Text ] /Font << /F7 184 0 R>> /ExtGState << >>/ColorSpace << /sRGB 185 0 R >>>> /Length 1675 /Filter /FlateDecode >> stream xœWM5¼¿_á#\ÛíÏk"‚ ¤°+q@\v‘9äïSUíyo6 Äag_Ûíþ¨n÷äð&äð>üyyë!×XÓ~ÖÑb¹þûë×ðcøxyñé‡o_†Ww—{·p~Þ½úoG Ÿ/?ýRøå’Ãü½¿äS ß]úŒfaæ8Vxº ‹y„YcÎáÃeŒ8s˜=æ 4K,-ÌW"ê±®0W´´Rl%àÙ QÖÃʱSËÂŽV‰6rʱÂe‚5ö–Åâ«#öAXµ +[Ì‚0¯HØa‹­RÕ‚#Ž~;(¯8&­ÀKÀ’c[„Iš‹”Àâ¼+M‡;Å…[œˆÊŒ¥ ö8+]Ͼ:h3"°UM¦ÆÙ6äªÅ^7œ= xq¾ W½©3»„4´v3ctðj$¨`vsa öåæ jëæþ([•gd&ø:À’n`Î)ì€ÖoItä±¥ÓyGÁöÎëd/˜•ÓÉ0&­“¿,¼~ŠG_[ߎøÖæ)žöS¼ë9ÀÙNùê}û³óI\Nù†|'>P_9ñåzÞæSßÍíàìÝØù<›¯¬¬vâ3âå|Ú|G|Õ¤Ÿ×Ã?ñÞtg8Í@ù!9dóžGMy ÅlˆιÔxaP£×5VitÎÓgຶ¼r¼‡b<\ͱb’ôƒ¸wU}†»Æ¬ Ã4ø ZÖ$¢™×íS°¤tuå–?0 ¨ ÁiZÑ‚eó‹R‰²‚¸\«uu^…È]bˆŒ&ƒjjZ€IÈûZ®wTˆµ>þœt{=Â7^ áD'ìW³75èÆÞµ[M¤Ëwf_ôrÊ0·±ü0ŒAÔ«Û’Åi‚ËÛ©1uI×hlc£8¹—îK鶤F?öôÀ £·3ÈuC« ¯Àc5ëž+eCžkÎB¤$WѢͣߡ[b‘ÞQËÞ¤ÑMMÐ{²ëéô–É졦ÁFè “ìE›°±U´­Æ$ªã W†íƒÌ@šÐc´÷áBf@¼–ÅéðIu_ íž&. 8»cÂd’y» F¤Å¬¶1jŠX×I­C(åÕžjmŽwF*Ú¢~slq¾¦NXhq)8:bD‰ŠüDldn÷ÉA¦UQ^±³»˜-î ÃCôÍT„ ;;×ÛØúrîÚÐ`£*# OyˆýœXÌ AÆTò$܉›·b¶ØÖýÒ¿ÊO·˜µ¥–ž½Å·áµ¦‘D’ü^Ë u3}½ĺ3øÍZmÝ'½~; ùžŸ„×ÎO~g„`ªñã[âÀœÀ‹è èíôûr]W˜cŸÉ|Ïy>“œðPóõ=ÝÄYéóß”«'ì6øž³}——dI`.wO·®Uøû±†)¸6=Ê;c´÷ª“iïsàZ%º©¦{Ÿ³µ:¨Ÿé/¶5¾ï™­n~Å‹‹§¢†ÕKooºÞ°(0^Ö!m[l#ªŸßÿž¿ôM’Þo¶Ò-öÌ„$½Åöúþ÷üå¡›¾äÞØ®óìí '>´n~ pžì¼(²£nÄó2¾&0(í7ÇÝî{Ÿßô”>Þt¿Œö^¤¥èv$Ýûì½¾íÚ{ŸÙM_øáþòþü5q.—¶‹èÅkì ÷¿]µéúĬ¸¥qkß?…¯^ÿñ{ù:Ü¿¿|s/Õÿµ——îöã¡ÍwŸßµÿ»™Ý᫸Q²}÷î1ÿßÝšNL3.:w¿úðpÝýöò75ÌIM endstream endobj 187 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 190 0 obj << /Length 2619 /Filter /FlateDecode >> stream xÚ­koãÆñûý £ µrùêûk¤ À͇ôPÐe+–D•¤ís‹þ÷î¼v‡%û¹ÙÙÙÙy¯¿»~÷ÍUyV…Unò³ëåYlÒ°ŒÌYåalª³ëÅÙÏÁõÝy4ç³$Kƒ§•mwößí- ¶KúvLÁX3·Úmoÿа¿ùÀëÛ-#…>-¶ý$ØÉmG÷°ôÏM<­ïÂþ¹å´§fçÀ¶„¬&‰»9Ÿ™rhë—EPÓgG‡´6p£›<š=•Ënƒþ‹Ï%ÂÿFg›™¤ “(a¶çží".I’ (í¬´ˆføþÅ) í ·Ü¡@ãÎØß 0AÂKHM°q#õtNÀqI=¡{úo,â êH75õ½’CØü;†oÐÒºíI:Tš4 Mîìr?ÒÈx¶Å—ŒLÁVRL™Y¶Y¶Ô!û¶ 9Ë=_6Œ -}Û”U¶J0ROö4Œsç´Þˆ EV‰¤Vtf6²ø¥!ðY|hƒÔnyÇgéóqP@¶ûÑ̰a'=3QÆcep$5ñtÓ`¿¦ÏN†oj' N:H4,\|hÅáà¤Öî’pŽ‘Žm4ŸÅ×s6v´'ËlQÜÑÓ”îã'ˆx¦6jÿZI± 5D(Ó%¦]zì#%¦ žîœQ0ˆ«ý:?fÛ“AÆßÎ>³lNbÈš}£Q‚ZÈÎF!èpI',G EÖ+F-á#´oØßcg442ƒÆh‚= ŠËg¦[Ç=â–wò ± N WÄ~yøŒaä-5½DÀ‰ú[Ò|Ï–™(Ì Cä¿·Êc’#èþ=6ß854]H¨ãµ8øj®V0ÿVqà_• éÅöñØFŃÏ_Lù´ßÑ17Šô;&ö¸´¿ß0=:úÒy)š¿ðhjÍÿÌËSíK³ßù)ÅÌ•bø*ÊurCR°w]sÏêÉŠÃßDõ‘\ð[>T£lòÜKÂiÊdµ‚ö+I°+5'«¬Eë–÷X3È DçÙ«åkÝ)Æø+>ÎÜ…‚Ô”H5*Xò¸2,DîøG^Å1½W¹Ë?t­¸õ [%r_)q”ZÔG¢—;t’÷’ñ¦+¾¨Ï#!èTFÅ€WµèÖæíhÿ™šœOü“¹ÿ_)ŽãþÄôŽqã)/Q]±9cíaëÓ™…“x£8ÑxÃ*¼»q 8Õ"{"Š»ÐÑNYšÐdí|=aÒ³Ð^a¼ãУLJ±yYW§M„ØâךŠÚ]Ù)Óì=ðË µÔŒ(+Ë"L‹jRÓÅYl”$°Àþ:# /_Ù‚}-¸UÉŽX¥^ÉÊ­bìG=ñ\¹¦V™šWx]Mèůu9ÅK<ýûq»| Ó|¬² !NÂÙ„Ì«æÄ'Ë• M}Í!´@u õxžå”?HÆ]¹R 4O[Y7néX­‹ÄI "hÅ›PXÙö"'7\ê€9Ö höÍp2D·z”¤>Î"«G8‚õûiÔ×±xK ËZs<¤-]aÚBáù{„ƒR¶Íš°SâÁu‹ÇÀ€ÛNÉK„bW#‹xÔƒÈÒS!úDdì5Ï;w™ˆÉ3¬òu\¢3y:YW¢U C°Âe‚йºgÂ͸Òñ<,ê½Ä,hÅ‘ÔÎÐ9TÜ9Gìi"g,¬dÔ¯IS'ÎþaÍŽ'¾€L&PÛŽF©tïT±•A¦—f(‹‹T%Ív>Š©±2¤¸$ÅÛÕ”n©rcÒ—Þމu‘ÝìO2¦ÿÚßû)M°cz“15_¾Éƒ_·ÉçÓ~ñÁÆÑksè OyJiöôMûò¤ ËÔ·èŠû– %˜–ìø™ÆZãnºH¬žHb1P+^‹³8¨è¯T2 Ë9P¢lXégŒXLê|ÉQyS—pynd´ØÛ¨7)²ÏøŒ£{›´þ[*Ð]Ó«ÄžIÊìºÂ½ží«|§²jè_»g ê«Â¼øxc*—•+£V̇jŒÛÀÀTqr !ôve5â6‚•Z¿ìü ò,ΪÐñ˜ƒ5•ÅŽ…öй‹¡h®Æw<ºÇÄ•{ênðB7¸Ðƒ«pΧBo7Š굯<Ãúz±ðë¾DXDJjJ|XÆ·°&<âË”2½çRãkÜÏ!ÞX8æ*+\sÿY½J7U·ÌUÝ⬈«Q~|l³K¶'bÀ^ñK+„z§—wiÕ[`ú W.[¨mòdÆ¢®tJi’(A‘ŽR ˆzŽ·#®Ûñ8Ѝ1²W$ Z}`DªþО×ruXSw6 ؈–¾>ÍÁøõAà\ìÆ;“õò3*YG©³“Ü¥ØÐN+¢(O\É#‚í~?â‚~±Ðެ¶ôu¶7õë¶ø4S3Àop-[æê½ùDø YRR‰©>x.p.öcôb’Ó> stream xÚíYëoÛ6ÿž¿ÂL6jU”õr°°×í€nCçaÖ}PüFl©³äë°ÿ½¼%J¦ü˜ÓAöAÉ;ï~wG2¼áèêåmÔêÛýÀ Z£YK¸ž9n+t[¸ýÖhÒúÝú­yÖ´Ýíy®5Žj$ma¥m7´vÔ¿[ÊŒ7ògùIþð”\6Sù“ñ@¬ë¶YÛL†éhrxg²»!Ó5ü$À,ÍŽ“I)Øþ*»)5qò8m2ŵ•ß8§Eòj÷Ç臖Óê a÷}ŸLMQyùÍ—hËJNèIcAýÙÉÈu ^Þ¡†ŸçJq""qßµ»¾Û³îX(ˆü—&–ÜΈí[Ùìîψ5îOò¤°ä˜0‡[ª†! ýÊðç®p«e†H“ƒ¬çÝRs]ZúgÆ¡šh™³¬e×µöCki£ÒCÉ 7à2ùcjT°Q0|¼Óë3\þªÜvfå^Q—†‰'¬¿Ñ-äžäÇyÇ“2-ò¯‰Ã©%ïÓÂö=GgÓ€ô×ræ4,_ÔÆnx¬Lž}žaÕBóƒ£}õ~Ó÷Œ|Wîc 9QÛèÌ>TP÷ËàßýG{ÚMSþN¦ã>ԣ°·=s¬§œƒƒµÊê­ :¾`'À˜ù^°—O‡rGœÀsÉwVŒø.±n}sjüp›Àtlb§Ý9aü"põKâÈ@ý 1f_ív}Ùmã‘O±Î…§ZçKfÝÓß™ëéÛ¸;þÝ:'Ã/uÃz «Ãç ÀÚ?®ÇÁ=”\MÇà I' }çý%MÓÙfôëׇÓýûךüßtèâLz§þÜ6Ý GïÃÃcsJp’ýâ¯Z¿¨fòOˆnˆh#N^¶B»"Þm=Ç/Þk¡<ј 2õ‰»vWÎ&M$ͱÒñÌO¥bœó %° OÖ¥8|{/^¢3\r=Còg¹ö0»*e¤<}uˆ}Bñ~^«sŒÕqÝš™ž5 ¨àHSÓÍ=Œ‡ÖCu õd<ßÖ€³ÛÝ0ê[o¸=€´P UöÁµ6dº ‚ON Ó5?€e ”4ã l§jjj§*ÏþñÊô/3†y½X#?©tà„e5+ ¡"%T‹BqÎ-$dó.¡ GR’ #" TM ÇÌ )ÞhliNsgÛÂýTÎÕ>ÊØ ¬é˜ü࣠rÀwå&ã†f?g©Š¾^d‘”4«l( -z½~i馜ëí¬ØÆTÕàLï…”¨ûµá¶ã ©ªÓÙÏRßv]EÆnÎW7£«ÏV¦Ô endstream endobj 199 0 obj << /Length 2117 /Filter /FlateDecode >> stream xÚ½Y[oÛ6~ï¯0г±šI]‡m@³µè†®Öô©íƒl)ÑØ2,¥iûëwn”¨Kš8Hö`K<<$ÏåãáÑÉ飧/ÒY¦²ØÄ³Ó³™6¡J3K‚Xi“ÍN‹Ù»ùÕÂ$ór¡çð§Ë( æ§çy³XÚ$œo€X?÷4šçHŠç{ åøkà‡ý9 ýŠ½Ñ¼€Wœî} Ã¾L?ƒ÷K$¬Ý°jÇ=WØFâùâÃé_O_híÉlt l˜Í–vË,ý]©0MC^7"ÀD‡ß§š×Y㚇ƒt×ûÅÒÄ DAlÄC+Þ¤Y‚Y¬²Ä¦´’¶ÊÉ̪XG×ʳ´ÔÚÙRG*J˜vZM™45TO`}0H…|e¾câÙ%´º«ÙZ¡Ñó?fã Ãk &Á÷Š²ÓºF†•QrŸl_?–$*(oúçØ¬;Úx;1·#²ÂŽ@7`—¥Ö*‹"OC7`hKmj:#æè=ÚÌ«3~’0%¿w~ÈN؉ƒ½=qp*™é?„žÕ¤nt]Š7N¤,a« ‘È·Ž´Gvï<šT‘óPç€KRÏR:YI1³àLhòƒ¬ýüNà÷zìm!„GªÝÜÎ!X›ƒLRrû}кBá7kÜê9w䵌ò¶ÍyN‰”Ù>“¾X4bØ‹”›Š¡H0ÖNS•ØV 'ÄÆ¿ Ú+¥¹f‡Æ üŒ’“Ö­í@£ À5‡Eó §:°šMœ©0Kûθ…#›Ó¢qwd¡[µ@' ÌüGqi#D“È ûE(øXhDØ´:’¼,žZÝ*{Ss{K:F´Á|ÍqºÞ–Üøk A<ò¶b|€Á ¦p±4þªƒ„2ï 7ÿV<0±ÊÓ× Úõ²qHÐjÚÚôij5ai x«²0å™>Šew–É—$Zàwêæ“öoã°š€’ü—L<>‚DÅIìô½Fà´èÖ!ʾáÜßÜô RÝž¥`¯6 g2j÷Ž@šu{2Ã'Ù5#ú̓¤%Y«¡‰IÿNøžò@¨¼¢Ðkeú⯬ëÞ‘ð³øòÀ"F«0”ÿ78ãדЦ®_žèõžÍ·’ë5y&?/¤ïÉÔ¹ñÓŽÓDg$È¥,xÝb¿Â 8j¶¿Ý™#³8.½ííZÓ³ÊÞ“ÓÇö•§Ì án0{æxBþJF;ƒ¾’çgO×¿ŠœJf££HŠT®='/ ÊÃ2Èœüœ[£T¢è†xP»v\N0ˆ¸é–˜ž'™Ÿ!¥Ú2SŽVEÙ`”ЉF ÷‰Ù¯ÎIû唑ªÄ}³sSBXm]*FÎ5×N$;<¡¡"4¾NC/?Ñ„-4 ZH^ð,$Ò®vLð"ˆCàYP¿75Ÿƒ4ˆŽe d9¥‰ò ôôq…ô¥íÚU›œñÉé-Œlº;€SÃØ@š¯KîßÓvɽ0ȇ¹`e¬Fx`ÛÂC—]R§gôš»gQÈt4-Í ÚŸÚ±³ë¶”íL$o±J’6ý8>’GA'*ÛDHMà5œ¡Šmrlëùb¼;H7Üo„—wòÒï‡9>°ŽdÆ$;&…cR4&ÅcR2&¥cR6&9`þ Y¶ìÊÑß½³çD:ÀSÌCŸ1¸>ä» ²HÞ'Üò_2È'÷¶XpWaž‹‘_à…'´·ôn/Œo²çÿ³Ép-}“PÏF(ÒŠ>FS{1[Ò7Û1 Ü“S{ÑVˆ– §?àÎZ¸Ÿ*ä&¦Þ§Ü&¾/Ô[AmÔÖËÎÜÉï‰'âcúîa¼@ãÌÕ;°^¶%¸j‡6óÓS •×(ïÇœA§~m°¦ƒ”Šp;qš™¤º‚ƒxuì‘D¹=w¯Éj€3ßï%gÚ¸,FwY ¼º|ßé1Ö5²l:¼z%†¥¤d‘OÛÈr=Œ® äÚÈDedîòCΔ኉zh5R·ÁâE”P1ʺ®ÐÔ®kÐòø¸f]~Œ’à%Õ—·L,õŠˆÎ 7|ýôß‘û·rºÜUmW·£º6ôâªHZw¿šª{te2=¶"R]õÍ-·é–ÿXº2¤j·E)Ÿ²/³1c”µé°t¸ÜÉó.¥¯éUÔ4UØ+áùts-%SqЖ§ë¥‘‘ŠkÍ{ŽŒá;ó^¢¯«(h?^°Iéßd—Skœ‰ÔÕVj%Œo³¾ï×¼oŽo“dÓáHFus#—ÜwZÖàJzõŒlyv½]GnjØE–w5VdëÌ/ãÚ¯.‡²9é’÷.sw䂊ýäa éÁ~²î ““O:õV‡Ò+:z½ë7ùv[y2½r°5·Ð+—1?n¾0Eà­]’+÷mÎ:q¢ä« ¯öF2<ÓÊ•ãóÉ+¬›à[Ùzi.°snçRæ>#=!ûí«hÇ_¹†¶{¿Ð •ò Çá.nÞJñéÕw¤X-tû•çÍ­*þˆÜãþv· äujx«m=Ø<—R@{,ð¹õ …‚ß¶¨öš¡7C§JÊUgíªÖÓèˆFYËׇ>žbsÇ"k_ØÕ~Õ2,h4k‚¶¯žzñ—ñ£~â@ µŠC}õD« Nü ¶Þ2mT ¾Ü”íWÞÛ‡ê®5íÐÅîù\½ÙÇ9ênòìâEékËÅ¡“½{åIØ,øøu…´ÇnöAºÇ*MBÐx¦ÒT>úhú|þèùé£ÿÄf5 endstream endobj 203 0 obj << /Length 1061 /Filter /FlateDecode >> stream xÚåYKoÛ0 ¾÷WäèxMjÙŽóÀ: Y[l; EvÚvpÚ$5ÖÚ]ì¶ †ý÷Q$e+Šòh— rP,S¤H~$%9êŽÎ£v­ÛìF~TŒk›ϯµ½¨)ünmpUû꼩7D(¶sWÎÚZížûCh1Óh´ZíÚsä¾y-Qÿ>øTój !šÝV‹ŒyWo´üÙF( ´szÕ™ÏI'Dºc¡vÅqÅ~å©"_CDúÂøKÎHžãVjús˜9Ö%YH œjÌy–òt¶ëÙ`?a¨ -iS#Q) ¨§Ø¦I%e“%Æ 0>!äÇôx ”1•˜s6¬<áüưPxþ@ãÂc!…ÌTKýqxFõjñÛl/8;­˜j5³–‡íL£UeA4{]Xã!´á§´Šã‹Q-ƒ¡ƒ° ÷ÅÀˆ^Œj•]¤õ0t×d€»-v«ª«nIe[ =ŽjmX«jKÜ8vˆ‰°ÄÒµ´=ŠY)=[ ZÎ,ëc¨g…e•Ýúª¹±‘¶c…±Þ~nÕf ®=<'1V-ÌÏܹ^ãd º}œ›5¦FprÏ~"zÙtFÓ¥¿‘“”æ€|œ[ÂN$•é¶<QÔì´C(Ùn³Óé,"cgƒƒ¿]/] endstream endobj 213 0 obj << /Length 2535 /Filter /FlateDecode >> stream xÚÝYãHù}~E„„”ˆÄë:|!@b‹†•öúi!wâtg'±[q2Mï¯ç;ËåÄÉZ^†‡ÄåªÏUß}Õû‡w_}]Ϊ¤Êm>{ØÎŒõI™ÚY‘扱Õìa3û~ÞÔýÂÌwðkŽ‹•+Íüã‡vÞ=.ø½F€–×?-²l^å«î =ƒodî‡Ô¸úʰ}ªsýËbeóy×âÙMÏ‹øÆãúð·“=[ø=ñ1ü1€¸q€ˆÖø¶ëZEˆ—Ÿë6ì_Âþ?>ü}–ÎVÆ$U–1~Â]zÚn團)g¥±Åƒãíˆz}ŵ=ü6üÙ‰ìä‘_ð£Éû¸†{'ˆÌW_ûlÆØX”àf«¤ÌãfÎ-_ëç!ÖˆiÀ«Èˆ­8ÙnºÎøyÛœ€Ñë¡,ñ‰)t\¬xXš¸B{X”eo³tÞo‘:‰õOàQçuÌùzÏð/²Ú! óñ¤ªÅ"A°nËÏ÷u{¢¨åI]Cl|Å¿NЦµºeNãXTÔf†t®9ÉǃJ¬EbD“g-Zêá±iDÎŒ bº EÛ‰²ÚRÈ€ç£ éèžvkåHyA Šû(A°,&…Ãu‡ˆ¿£ê;\(ªù©cZyÜ "Ävü{û…ƒ–°^ñI§áÐÞ®i§Œ‚Ûïô8$tlôÆ)ûqøÔ´ì:Äü¢ ¼ <ŠñÓP6‰á’\v­äóI‘“ ÜÈvÛNÐoÈŒp«çTlÅdUbËb̵àÔ(!ØÌÂØö,g­‡Ô=ïæÿäxØ?sÄ­ù1-jÚm]˶q¤¾rdÔ)½‘`K¼Í‹‹ø t€Z¬2+‡³ÏÅ×?ÀpÅçIÀ’È­ìÉÕ-Àï ^·3@˜ÄvÑâÒ,•Oÿ??|_òÉeÚ1¤™Î"ZžÕSbú”Íך¼Õ§f˜­ùq‹Ýà^5j=3¨Iù©ZÁaÊU 8u$¬“æá÷„G¼BÙÔøüAT\š Òè»Ï 4óԯרä$´ i½æ3íF‡%Úž.¦†'4]A"¡ëùò,轜%å„Éݰó¤&¬‰-Âq$:pv K¾ÌŽ'Éh.;M’ö¥÷”G“–l];d¸kf)Ö^‚tÇï!—ÂݶœŒ ÁlB 2iȹHjMÕÀ™´:ö5L<ž¾e8²¸àoœ½`°â1ŽÇ.ÇþþÿÂdפ¡UCUÁR¬yÍ»ëöΨˆAv‡Mÿ]Ú•Q}#©zÁÒˆ¶;ñ€4m/šï=êÅ‹”†G± /t7ä!QnA¼áé5m ªqÆ!é$#õž²sÔWÙ#h/Çe+JgT¶0гYqüê&ÝÓ¹¡€( ž¢—ºÜõq9k£´Éf7Ò‚‹ Ƕe¡& ¼,ªÂÕD}PÝ+»–2TPIQaDÂ/‘¤;ÂÔpå|!iø8)’èÓR¨ ÙÅaN˜+—d™™L˜©:Ɇû@REL>!st]©¤ì²>„*pŠJcó$Jˆ}ÔRø(Öû¤Ùü˜Bz{M¡­<9Ú1ªøšßŠE’ÏàœÏ¬G+d}ŽðV&wIZdc6n¥loÅs„#dîowüÙwŠ;œ$ìC;ÙÙj]T2±YÐkx£~]+GVÛ©Ôw$:Ì?ó‚CH¯í™4$ÏÚ¨£d1ç ÚHåœA`úóštò¸‰yZ°¹TiünŸ¹vÁE6?t=ˆ\\Ò´?Â='Ócé^’šžØËqØ^å¾&ºfžÁn Z÷¡ŽÀ¦eÎ$rg®EsAäD•q>F«râß¼òø¾÷UèÁGÔÒêAéífSL_Mðse$áãrKº¾{ÂT4Ooe¼üÝ–ŸQr‹ša«ÁoÁjO%‰–!£c §v(ˆ¨^…Ö-éËyTåfHós¤3Aüú¬[‘ãÞý,ʼnw·Ïƒéyj×ÒB8lÆr > ¬]oÂr"~W&±EÈRžÄuäW_û'ø& q5¬àUMI+Æ’²Óø¶‚áêý "Mª \ ×ryÁ)w#-l´%1Õcýÿ¼š‡(h¤}1ä•}#·3X–!SÔò(‚¶ÒÉ뇵à#6K®hMnDD¦Æ|Qí ™ºæ ‘p!x Úñ9ÑÙ"fqÕÁw=nuÃÌ+br­–ÆŽB¦¼Þpà¸|ÓÓ*ù×ë=£hjì”g£o[%gÊ! T½ò6•žŽµ×[–èN:A@®á'*ÝCçUh› ž0|Z ŸEšK‹Jù"i£Ç…K"<ùNc!ã¾S±ùôŒ‚ô]ì+HÕ¯xÑúP~™(Oý@@Eˆô®”†KÇ/R÷½Fü½:–2d 0¤6-Ô±*D£A.‚£BÎ95?‘Μ¬ë=OÀ‚S9vfå#4Ô•äv5z[ˆç“$ÎRÔ›à±Æ@›WŸWåyR¦•zýŸ#'„Žä½zõé«PïïCŒ ªMF÷DU' ¡,ÄñøfÈ\ šáG¸³„qÊG vgA,D`ô Üæe( qþ·§ú[ÀBˆ–À—/ Í5!ôß- ¬- ){ô{ÿ›Šw #Eáo6²¶œº-˜ÜW9>!%ÿeæü²_,°ŠéËDÒÇŒò<›Ù[íw„Ð[æÌ’Xžã@ƒë£ò¨9½î Cð}8ëN(B¨‹Þ†Në½sfÈ`º/¢}‰[çP•_ʹÈ~;î ~lœ3EwÈ3ƒ¾ ð³•«oŌǵw}x÷.‘CN endstream endobj 222 0 obj << /Length 2548 /Filter /FlateDecode >> stream xÚÕYÛÆùÝ¿b…¬‡gP°ƒ8qÛä!ݶ®[ÐWR-‘*)ÆYùïý®/­]·@û q8Ç7ß}ñùÝ“/^d7¹Ÿ'arsw£ÂÈÏ‚ð& _…ùÍÝöæ•÷lµŽRåVÊ«›_ï/Õ*̼K#|Ûø—åw«0õ ü{à‰úÞ=§¼¿*îp?¾lÌìŽoB@{Ly÷0ìhßEîª+†¶+ñ þ5Åx Çí ¼ÀkÏ«u˜x%] ˆD„ýzõúîw7ÁÍZ)?c&Ýªá ’Ïá]"í|±Ù@¸"R›ß‹+€ˆWGÊûÖìuÀßw‡Җ—ÊŸáí ¿#®ld·pG<Á©Äét„‘܆¬™!·ØlHÈð·ud¢µö.5? ~´„Íà—F€†“¼a^hZ‡Þ)(Z„à#_¼H”£‚ˆ’öó(c”¾ÆÍUgÞ ¤ qгYÒZé*uÁP`¦±Þè°@N ˆS¹Å©ˆ8ZójMôKº†WñÆ)þ'N–l)‹1ä]Ì:‚ñƬwd%HΑ·µx;‰êÄÊŠ'^Á0ym˜s³ìr‹Ô‰f`Âø½wE–,Š ½}ÑòÀ± <ú…ì©{Ñ6´ò‡ávÐ/z'M’³æòsGzIëŒ ·íRÊ §[îu'š=k’ˆc‡ðóØûi'Ñß• †8Þ;,—ø¯Ñø,.øÒϵ<,ð‘^…0Ç;YAS S0¤ªvmËÞÛÛ#jç:‚ø÷GAeƒ¢ßÏ>ËKÑû¬wVQ n›ý½Lë–çñ²ÖUÒOJ¾¿;Hh fà ÐÞLSáË(ƒ`ÈSÇ2Â\ùqËØ‘Ö0:ÆÏß¿¶.umN£¿œ-l4y›%1ÈÇ?ÔÔR“ÀO£Ð*ëÖm•û:þ`¬gëÌm…šOÆXéØOµõ-_ŠŸs±]‡*ö3 ¬Êý< müjµŽCmqF¼Oý–˜LÃÇ(ûÑ¡€í—“l¤ø÷åòÔ¼Ž0ÞöTáѧt¹òò:31âóÕZ¥ q:ˆ»õdg<Úi3+ã†ÊÜ·WHs÷=!<¦–"Èë¿w ãíÏåt!ªóT8„A?…_ìèÄèŒtÃÿ=éÆÿÒýTó½®ÑŸ"õ¡'†þò‚›¶Udq kk~á¹nM@_,ùŒ”Q³ ©@á4§£¿,±j lvñ%d­IB•9A˜%¸6óf”ƒ²*¼¨ì³VŒäGrxðœÁôÔ³§<{n¼© Ô6G˜p=Ì›Cb „73î0³Õ­³ak¥$ˆêeN° 4»òbRˆ ³Š-³Ò5rç.5Mð)vª ôµ §‚Â(V¹”“Riy”²Kßšj•“©5YþÁJøAö„°ío°tLÄ$Hâ5¦l_ÒùLùIðƒbJÊQÍ:›²·”¼ãM[ÃÙF Z¹Gªòa™ÿE¯¯Â$V«Åv-:C*o3GÐJú'EuÉ'L^ªÙMV}=È“÷¬Ñ4vp³4MÀqe#èa/ƒ&j!âà2©lŒ¼pYÆÊá5îÝ~@ó)P×Ò×@Q¢ ƒ€rׄä³]kÖ@ðjM^ly A°œ‘^¹SoöŸWV”ñíNK àÎí>±ƒ1ýÄ{jkEÞ»½±Q[`ÃlSظz2ê })GZºÂ½06L;ÒôŽçL+†?lçP  gß8àÇ:O¨Ú~×\ÃMê/ ±‚ ì%cH3¶É*êrè7_HQ—¨§Š˜´ŒY”ET–š2Åvú~F”@Žvüßóâ‘´Wvb4KL˯ä0¯ØæPÅïc}ZÏErÛ@¯|›ojÓˆ:ØN&à¾Ô…%êVÚv±ä;â<÷žU|‚Ž¥8=܃±µ[¶R  ì9Õ\cKì# NjôhVíC_²®užöý ›”_=êíö†í2M;2Çòs®>o¤óè(m0ÞµèLÓäÍÑvÄïŽÌ­í‘™ºôårg#Õ\ÌãÀ28ÜÖëy`1f_!§ ÞO‘˜Ì¥ÅšƒèÊ@8)ç;Ü}ã[#.Ó;Ó„0 €…²½âXð:§s‡Fwa.ÌŠð#(•€8¼qºò˜4‚ñüXh—o%ÍŽ«šõC=“|#-O\6z¶4zhÕ¿¢Ú•=ð½c/÷lÔOÓ‡™PâüŽò•âz¦8i¹_oÂ3Ïp2½/ž¸/úä±å)lv«ˆ»ÝëTÞ_ÐjK^¤ˆ†ƒ±ÛÅЀó…,Œ‰Q#ã;È‹™¹ÞÓB¶-oMΘ*âõÛ>S²­>—nç“És+¹šš™ê¹ß­`û¡ê¿[Ò÷b¤ï”E§Ùðƒi8:Jdfx‚§ªXÍdùò—†uœø©ÖC UtʜȒ1oÔ>xµ©íga%4M÷>7a_„H‘æÊ*ªsïeÅ@ Þ<ÈJ^šKb'¡£0iî :ª(ô3áç ?ˤ£b\{òÍÝ“†D…l endstream endobj 228 0 obj << /Length 2530 /Filter /FlateDecode >> stream xÚÍËŽã¸ñ>_aìIFÚ‘zI€ÌîL2Ù<€Ä9%9¨Õ²Ûh[2,¹=¯O=)Ê–gw.ÉdQdY¬w•?¬ß½ÿT,ʰÌl¶XoÆ&aÙEe¡±åbý´øgÐm–+›¦Áð¼4Aƒã,`XàgÛ ¼z¨–6Þø£kaiσ×K[ÏUK<µƒq«Ð2÷s87õ _€]žÅÉ‚†\E¨~ðvËDƒØ~Έ.W‰Éƒ?4Qã¦Ë¯ÿ¸ˆ+cÂ2MùÞÕr—Y°´¶F\%(.SZéN<¾Ðñ|Ožé˸¢ñëh¬_g™Ažã»’£vH*]`à‰-ñB ‘Ý¡Q†p­gêçùÔôs&’˜iqœŠŒé g6"›î€ß@r-㯸9¡&ÁÐ1 ¶©¯ åñxÖíà]„÷–;)ÏL5áôÜL.TÏz]9p–Xaá„ñÙl"’2‘ zà0»žß¸a7ðøÐÉ—!u6(Yi³`­rïyG7ŒQê)K'Q÷«¡¡-?Š=Ḧ{I ÊÓ-o¨z„`yA<¡K @g%Žj–äm‚ d¡ýΓ*êºBThÕxVV`ef ,0>T_4& *Ÿi+6 ëŸuáø—ñ‹‚OÆxƒÓaÂÂŒµàÊpv¤&Av=1Ô#ô&¤)a|¤ô¡:(Sàð[~Ø2†<ÄéôFtv'f¡ dò0‹Ê)ïÎêVàùìé½o;Ñk¾Ô ³<,2Ç_Òvˆ$VÍ4Žc>¡ÃÐÓÃÒ2ϳïq½®z ´ñ´,ßp·§ {›÷Ÿ2Ÿ%+¡jeÁôýv¹Jmìl}àÏ_‹hø?ðˆúx <ѽœêWË•Éò,'D„ŽòUH›˜ÜŒ?©á«o×ñ´ï\06ÁŸ½µNà;Eßý$e×êøí*7å˜>ó~5‘3µÄ9™dD)k&Wð’–A\FGß&â7{äFöQõE„ib‹‡ìÅcÂø+N6c·IejD‰GçBAþ,õh:ÀUò>)f;—áÍ¥i•˜ ;ý^m(v‰¿šV¯&G)Áþ ~ÿã’ñi@ÏyëX¶ä%©ZCR>ï…ʇ/•Fa‘ÿoÚ²T:XCüPi‹¯ W5Ö!o‘̳¶“O  Ûkd/lŠ$4y<µJ`¦QSS»PHÃz,.&‡Ç&æÐ(ˆMÔÇíJ5ÔP$!Ƥ^–ÐóíZ zujxV«Lâigmšƒ"Œ+ïtQ+“qJMHwÐY*ÚZÚY2Q—¬”’îNË’hL£v=C>ºÐ+¦–‘»ÜiÖâ3kNíiìdˆø® ¬Ú­¤˜ # žÊJ¥• ¹@…¹ÍU÷Ô§~öÙ,^²·bMTæÕ³<ö÷Wö4¨ÁãÈ¥œwdš1?Æpñ;xþÏßïäWYh"«ì)VE¦Y>õk•ojƒ£+(Æ ‰r!\£®:°{6œäö¼V“€R_@8ÛI~&ìw9)«lëe¬ŽŒÊc—’ž&©-uÇI¥'”H%5£Êóô£n‚mií^–SK. î¤Á#U£Õ±ÁätWo¼ÄÝbÇ`úô¢bÈà›zGàebÇgË°Ú ð鬖§ÁºÚ3ÞíÔ­æþQ³ca–zkDj`»£Ô¬Ñ`êJ2aòr%蔑äV,Çk€ßœÅ6öü}Ò¸Ó¨áP5!»wì´0±F¨ìz*ß±ñÚm²-rC-2ÉIïÉÕœØjC¬«7`úÀôL)‚d¯Iºà­¬f1%$°1ol.„ ²üàǷĶ@ÌánÕQ»+OD×sð±K8æ˜7XßOdoä1;‰ ¹ôЗrÛÜ©·,øŽ\¨ù n«ŽŒ¡øÆ7Äe˜Ž¾AR"Äk½`4-s@p¬aø b:9Í×6iÉI1»Ntëäœ_&Ž  >è=]×±»1ÓY£Î·ïýöh™O%NhC¶¤F¾Zµs­³øÎ͘&˜à=.~ ÍòK%¹>s2ç]½“¯Æâ̸Õk—Ïõ\S{7ëJ##í6qdi8;æ©ñ3ÞÑýŽ!uÆ zm…£ÀlZ2œ/êï'½Yƒö†ME‘âjSX/)$bï©?¶w-e¬ë{Òœ°,ÏëÄŸŽ¹øÖ|`‘Þ/¢•BÍUºÐR÷NVS½²¡Ò$9·ìzÕsôò6aWŽ«ê%p|Å–û€5]€ú&½ØMûäëqRÜk]vBÕ}¡¿Rð8×ÖFu 0d%Ú;÷¿€Ú\žù6§”²GÒ$ oò*1EÔiëDÁÎ:;é™áJÕVì*äš=Oßn¡Ur?t>`æî¯PÞGÓD«Ð· Ä¿S£ Iá·“…À×tZƒ]åg,.>"ù0Ê7Ž{± ¼À RKÙev¤"AB$ǃƒï‘_õüáwÅ®rà¾=sÕºñ‚tÌ=yÚ|?–›ó…·üÙay²Ñ%lÜ6y0.ÁѦ˜´wüÎG5Vƒµ—\ïåûMÞšpkÅx})ÙùÅëƒÔBs#õé_õo³›¦ÒFä÷e6Kÿ&úxGì¹|ï-ÿàú0´üõæˆÇ°NÒb°ka¶ÕôxöÚq“¿Ábc?ÌŸ-ýçJî—Â_ó-¼ô‹†SiÊ è{tØ8y€µ3íÁy‚aLx·cèHºk²^Vïš»FÊjÌjˆ _§!WM[ åxn.a†Ú‡fˆK×½À™âºsÕîèÞ)à<ùYBº.ZìEÙ;Ê”O”©#›K5èx…¶æÃâ™ÿ߆k~®á®}fÒŸž¯5YF6X“T:¡&õw×ïþ €‚¼G endstream endobj 234 0 obj << /Length 2042 /Filter /FlateDecode >> stream xÚ­YKsÛ6¾çWhr¢f"†ß™¶3I÷qH;{jz %ê1–(U¤âº¿¾û$AŠrìŒ4©Åb,öÛ—ß]¿x}•¤“ÜÏ›L®—c#? ì$ ߨ|r½˜üåý0Å6ôöSãáÙÀ³’wOÏžð”ð4Ìþ|Îøs)ÜÿÂó“pUò®áùļn…Œ Íå7²,àù ž 7Þ+–ú>ßÃs/ì?Âó²žÁ§aáfú÷õ¯¯¯2ç Ádfr?É">"ž«,PJƒý2¯ÀµÊz:³YBë®i?ð3õVt„’ÇdûËý‘ßÀ+ñö<…(·|¬™Ma§ðç–ÉEE§£ï=Ò¿Lmæ•´ÔÕ5NJB-mö•çl6s• )tläîÅßáBû#éÔBš0~Ǭ‰†w†!]™HÄŸûöò7tí[$[¯FÖ•ß ý<ÊXàµìE !œpò¼Yp&’R Õ²p1Ç›(ýõw¸ñ“›Î?l;éz)í ¶P–Ï”šH«v’õæ´ò–í†XpsÔÔZvS³ùô€2°ˆõÝsÀa.$Ýßܱõ­Œ‰­Ï»Y—Qq>öAhdSc™h:¦GÁén-G$k_³¦ÏA e½ý©á÷ݶY÷bãÄ$IéäHŽªºÚ¹úVПwÅùa”XÙoùQ(6N6ò>D`¥»iÈ^è@ Óˆ\\E~î^îhCïV2H%ÛØOóP%Ï7"þÓf‡âOÛB ™?,°_ò›Á„£%š£*2]™TÞ€ |˜"¨›f!)ÛZ6úZôiÛb•‡ áhôF4Lú¯7àpÇ4S½|#}ÁV ·£œK²4–Ϙ‚á‹"OiMo]ö\ÀŒºpö¶b‡ŒŽ±ê¤u_±.b¡Iý$ÈA)¤ŒwTö‚œù©™rõü_Û3ƒ…Ç™Q¡äI‹§…ÄŠ0]׋?—'Á·ëôÎ÷œCÄ5­ôöŒòÆ-]륈<µÃV¬Ð¼ãHÍ2?R]ƟΓäµnwÜGçâ—(ÀÕ9Ë™Ù`tW¢d Îòó £–LئØÙÆ­O$•~4hZ÷íâ¥zŽ%ã}<¾ÁöŒI6Lé¼ûí–ô3ï4­Yñðœ=Ö¢›p ‚ú %-µ«y¬àêà¾êü³î+:PÝñ4-æÂD >8Ýç‘¿ÝàŽ¢zð‚>”z·?Œñl$Þ» _••š1úÞc%1µkhÓ#iAÕ¬…}Wìv”"løHi)˜ÉR̺Höà¾ytü]8ˆ)žI-CýˆägÀã⹆´C7Û8¡8 Ç=gb?Š  Ï€S£ïg"“{À7¦«AS6`Ṃh§ÃLáœöVæd^ Èjë³zÕÆhãýÞãdPîÉ:™Ö8 mÏ'´gfð00/ø“þ¿ À(Fð‹Ÿ|ñç½CÒÛn‚]å@×%¹Ãe¸3= )"i‘Kî#·¡¸:z;®ttY]‘-¿G´m‹f.,b‹8nB~,~ãIÌà$æ¡“DÏ|’ÑEâ ‹O\¤w'çuŠëO%‰MÌàB@œŽZ/xd§ôÈu3ç’@J1&É(Ž`Rˆo'MŸ5ºéœPþ#í¤R<#«$žùN$¢g£wÏÃÌÕwâP[ ~Õ}Båê¥ä·œ^V í²A.Æ’ˆÇ×hu´C/W¤® °({+vê&Ë㈓±½‚Æq{'A}ùHoúi$E)T ”áYÔÖfµŠz±Yò»`Þ³DûV†µW <ÂÊçsOß 㱿=î¯le;å‚ð;‹£Üû¥é9†d¨ç<àV¨´IMו«yMïm°­©ðäóÐÉ A³ÍrnÊÁ ®E…\ߣØhÇ$ï¢~wwý íBw…/3p["ˆÜXCdÄCÞàîï;ïQ6Πç`ˆ?±môÛ ¼_ʺ4âÄ_ž[bý$Š»¶š¤½¹o“¼ïy¿úÿ*u“ÄÏ 4ƒü,“\ɤ8öâÃõ‹ÿʽ_ endstream endobj 239 0 obj << /Length 1894 /Filter /FlateDecode >> stream xÚµX[oÛ6~ϯ0ö$1+êJ ë€tm:oÅ.·X÷ Ëòeµ,ײ›¦ýó;7J´­dÙ†!PL‘çÎÃïJ|øÓ…*ŽÂAìgÊÄfPTï/Tägt#ZÐÂ%OÆU8x^_ü vid%Ž‘Ï&O®Í SY$ƒÉ| ƒH?D&UY4˜Ì¿{×Cí­àYv𿎢$ó‚/‡£T'Þ¯¸Òà_¾FºO8Úã¨Þ ¥ñê9säð“ú^ƒ2ÞÃ?ä)7𯑖)ö$¦DÙ<‰j6<ĵ¥ðTHWU¬ÇBS ëš~¿CEø^ÿ˜|i­²8fÑŒr? Œw; R¯FGßÁ£†#‡Þd)Žƒý(¤FɇjÓ™gmwm#¦b‡psµ·¥AÃ!µ{1³&™HQ$ èÖ´ª| <÷éGæª×eR‚V¬H xE§a’Ùy³Ç—ÀÑÚ¬X?Io·ÒìÅÏ|†!á)7÷bD^àâNÊЛ©÷ïø÷ä:IDoC­L ÙÛ¯‡£89ùàió²Š3Ç4žWh’¼ãüxÞú±O?,â)î®°[û/Yû\6dí~ñ‘JDáø£ð€5šÝ6Ç^°ÇÚ°×…M·6W(ðüóŠÙÓA¢²44ÈEJé˜ûê\~¤B&˜P^Å*˜S:’ùíüÀ™}Óí)ŸŠR2‹rÔÆ%— t`bw_¯bù,s+\µDèæo"){ؼ4T¬hܬñÚs„€†¦ÍêáÒ¯ ` 𺷉ˆ[(0z¤CÀДÅ «œÎû¿tÄ0G|9gùŽü’Ô=7 3å ÏpøÖב8ZΘfê(É;Ü(÷.&ÃRÑ 2Æ[_Lì£rˆË|ÖJq%`9È ØâÎ܉ðÍ‚QAÚ\6h½Æis‚@÷(­yõîù6²^Ø“LTÔÔüÂêmbÜñ$ÁêúŽu FÎ2?©‘kÁ‚ŠßPj³’(/úµ«ó¬Õ©ÒalSkád¦EáÜ9ã7k¹3×h•gn?JŽ2£Ò8;F +­;ç|[F¤_ÆÓð?øféZžBÒ§p ó²³m+S… èS‹4Éo ÏeÉ4I:§¹:¡¡hwA?Ýñž@íBb]߈+ç¬Õ2ÿ\×Ü7MŽÓÐWQ­`À$…ñ8D£ Ñ™÷ÆSûY X®½žëáHÇéq¸^ôÌ] ßVøR ñ£”hfBƒó¾Ã;““£9ž¿z&ýVvÂïQõŒöDÇ*IôñÆ€ PC7ãßóûØõž£RÚ$†Ä"·›vX¡µOÕ6òã³þ * 7?ùÆ"‹[gp¹eÙÙÆ’7— ¨+&Î…çTÇ-AÒ®›`(dh´F,»åõ,´ãz¨3•¤Ú m§Íy”,íѶ«³ÉH™3Á= HBWÑRÚJ&tˆcÁ€u»ì:.¦“[A˜@ðÚR°ãE§ì µ£v «˜m­€%9Æ·(nE©¥tÉJV4lï.@»Úžu,ÙH7Ež;î "¨&ù·õe&(0T8ˆ¦ýy–Õ_øžÛN ϸy£è—Ø@àä}‹—Ckg ˜GÞŸ¥-­ sc3…¿_˜úŽNà08´ÞÜ „UsØÓ¬W-¢aeˆå‚Yâb¾ù¡”Ý:v…Kë@EYz¯Kt6±Å.  ƒ>=˜S:o»Àšž{: ô;öÛ )§Uako®öVþ©¤ƒO‹UM%„3rµÇ¡F¨¡¡Û½H¥­ÉùÀNã…U'Þo8Šª©ê¶QÝ9Xˆâ¬ôUçµu£¾ân›Ö K\ƒ ZñÊ~æXó|–Á†÷ì$¡h©üHNm;TBÑ”C"Ñ^Ç/¯qS ŽÑ¢Æ²/Ö”=ïŒiAua6ݶwPZØQæ–Û¶©~ ·ÙÚØ-Ñ7öíõlÉ$ô¾jä­¢®å …à W6Çœr§'=—ï†1Dza¿p­ qÛëØ3ÕùBQç®–™¼ÿ{@O;s)v €>ê¢Ý~6IcH@: ³Rê LÙDA9I͆IܰÀ‰=¹˜Å±|T³×Pàh#ãyÉ1DÁ`L6«xcS~zÚd }j±úŃŸ`<¿ÇäºB¸Ù÷ {Ü_˵MnëZ{ë³;ؼUÇßv(Y‹%ïßø%÷š8Î7²©ã×7-öûÇ ífhN?.ç»ÒqwE^¾~î°u²´ËŽ•ìvC…‡™Î”páð¼ò¿‹)Žw6B ªª0E¡?×ÿÐÉ®Ï}{á†í³|œ“Ù×Át‘Ëy<:P eÔ.Î ª²;†=W`$ʤV•™tß×.^L.þÝ:O endstream endobj 230 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./sequence.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 241 0 R /BBox [0 0 504 504] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 242 0 R>> /ExtGState << >>/ColorSpace << /sRGB 243 0 R >>>> /Length 915 /Filter /FlateDecode >> stream xœ­WMO1½ï¯ð‘0¶ÇŸ‡…VH­D“ªÄ¡ B[ˆZõßw¼¶w7°³Õ’hòö'ïyœ±d§L²{ö£9˯ù²9xþônÎVÏàB6|^=6' 9Ë&Ï@zK±.ÓÎpO­ÙÞ†½a3¶¼oŽ—möiº”–[;ä‹ r®·Èrw²r‚«-²Ú Úq±E†ÝÉZ÷[d]ÈÉ‹£Åˆ‹£ø­3ìWs~Á»j$;Å×}#ÛÜ㸊7Š­Y µð<öÀ¯pÁupm9èOáwKÛã)ìq%%¾Ãs8Àµæ^ôx ¸Ã¾¾ö8àÏÕ}}9ࢯžÂî,}}9ìñ,XÁúí°!57À¤\%c~¯æ»oŒ}Á¥Æ$@Kÿ|¹z/kBG/¥CIMZÿê¶¢%|d+2¸Ì^©ŠÕq[K†¢n¡åW®®v@»C§Ýa-„å ý¸¢vÉe`hvRîXÔœ%±¡ÁIî’rŸ.+*ÇÓÀá>ÃJåo ÏhVú²ÝŽŽ+b×<]³/ìqx‚û 1·*¾Ë|‚O*’A*^ÆÅƒÃl [Å ¼ŠKÏ3(UàHÔªxjQh0Ü8 UÊs$jeì3 :¶‚²±G(Ô„ØTÜá¯PÁ¡ÕÝâ^Àÿ–Ô—ÆGã3JIX`BÃq¿ ‰v²LJñÉ•(# L81YeP ‡&뤌S`¸"-/3s(ãÆë($ÒΩ•H;'V¢ì,0a\ ã2LYT`¢f@:«ÌÈÊŒWuQ!UuQ&ÕuQ!f¸ª‹2‰²¨ÀU]TH”qÞÇoã2J÷Ëè¯È¤:ã2©Î¸Dª4.“(ã2L—aÊ¢É:+Ë$ò«d7d’Ç;GWÀâ\ ‘³xqÉÏjPݵ5í(â8;CrCã´sÖúã¡Ã!´Óz³h4žÙÊ7ëæEÎO#ã¿Üg!ØvÀ2&.‹ãØùÞáfó4éží}]m¾=Í.ØòôŸ/k8ç¶—®óíø¸¯D¼IeyÇÌÇ«–r¸±ãÀ¶n<Þ¼MŽr„#¸ÂËL~²D·ì†úcĹÇí’R*oó%gKšüð0+Êý•ý¶ÈmˆÞ£…¯2)ŒºÞýœ1eØÞu'ïprË"¶Ã4w£‰Îš?ëšm® endstream endobj 245 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 250 0 obj << /Length 1432 /Filter /FlateDecode >> stream xÚÕXKsÛ6¾ûWhz¢fBo’iÝ™´·nÍ$º99°mi"‹ª$ÇõôÏ»X EY+ÓéX|ذ»ØŸF¯¯L:È“Ü3ݸPIÆÄ e&á"Œ&ƒ›èÇa¬…ŒÖCmìWØoEÿƒ1hKGúƒýÝïŽòhAíªE݇À£OL3ÛÌìËoí÷ªáaITcûAÿ’þiÕwö»¶ß/ö»¢>pGR7ŸG¿ Ø æ<ɵÞ)¨gi°¾ g4mEãϳ¾_} s¯¯tË2:1†b!“œsÇo#f,X®±ÿac®S½'UHûýN4oíÿܹº'Ùþ ¥?£¦vN Tg‰R¼­;»Hr%ë–ílQ¶,-ö°ÙCçdsp£©;MRˆèšd„àÁ \o¨bãHB ú2oš13Ïè—peÈ¡ú tPz• a¬)>·*¼6ñœX2Øsí¯ã»ð­0cEVTž¶ü®õ>ðŠSrDàcßÒØ&ðÇõö4F>xÀ=Ó_( ´}4ïuû—ñ·4‰Vr§ãÁ¿ ÝŽÛ†¡sxíØsÞ2¼tMŒÄ.xpjÖô·z÷ònÃòóÃzˆ3Bò$? ÒôAŠüt.åÈn æû!Õù!õ‘n„ä‡C¦/‚ìµx¶ã\¾€Ë|ÏQ?avà¥<–Øoà™8ºÙ—Àš]°êØvbÌZ)ñ¯åŠ" d™Ê4ÑØ®ÞΕ‚>bÚ°Ó€f*‘*·ØÄ÷Ö®%”Ÿ¿$>EXbrí)>1ÖÃzš¤Í&¢‡ •ä÷ß[˜4zq ô¶P¹…åõ*FR®(WQ²­’§ù@´Þ&¸+1EXÕš›ÐBÜWù)*’ÿT»¤×’º' FW.EÂ쓹uÚ|þÆt´ª¬™Ïþ'nÆ'Xöwíž-%¤4³[ʧíø=äýóàÁ¹ôµ…,áñ1ÓÉ۵៘™zÁK8KœaÂû>±‚=þvƒøjÃ4b¹´Ôþø´ôðT^Ò›Íë»,h7”î9b÷èi’L°Õý;|ƒØ.yõLŠ™ýojó:ßw({êAɃQëÛn©ã¨ŠÇnµlç¶­‡ûšÛzNBánH ’Ï×==vÜà~g”À³Å‹–/Á3À]\a(zÀÛV]»E˜:8T³p´uÁÅ l¹·P³OÏ•JRólÀ‘Fï 8š›ý'ÛpD'àô0c÷JsyVn8Þ>§7Ðsåßä78õÕ'_½€A|½Ïu(P‘šÑgÖonèÑ:8Gî20™(‘µ3”G_O˜cÔ0MY¥MœJ£ùëP›ÆÈ7]+ó'Ñ›`@ Ô,;Üà±H³ˆaYME£iÍ‹ Šu¦¸;ƒ¥ã|è¼Ú4”¾šaçvT3HÒNıËmÄ¡ ž%YÚy#cxuå ªì„u_~³#5’œí’¬_޶f7ˆ4ãv$9®œqTÉù´*GëÖcõ¦±ÒI&(æò/Þ.þTü]Ž endstream endobj 256 0 obj << /Length 1441 /Filter /FlateDecode >> stream xÚíÉnÛFô®¯z¢P“æpgpËU{hÚ¨í¡é"©–HEº_ß·ÍTh'@zk`ˆ³½yû6VSþÔT¥¾þ4tS' “i~˜¼Ÿ8›zÐÍè@É-Ù¸^‚éëzò üé#[c´{(_.'×ódš:iäEÓåzª¼ÀI\o$±“Óe1ýӚϔµƒß¦=Á·œÙ^Xþw3x°~Ç“¦…O¶G¸pvÆY]!¤oÕk¾‘áZ âxŸ¶„O•w(5`sÖ8ʆwFÅSÜÞvwws¦R!¶óÌK¬3/¶jdõÞ=×Zö.ä5²‰üªfö×òGPŽ­”“†!K‹\øQÔ'¤—Ùjßm.Žð91£ð©ü™Q®º¢í¼%ÖX‰È¡/Å[L<´Î”ñæAÖ„ó$›e2‚U­›µ#B‘åÉ0›S†Ôˆô‹;Aƒ_º’x nX–³Í@ÓtÔ L¡ÉU>&ã&‘¥’bhg¢›<%ç@]Ñ9RÄOÑÁxP ™Làyg‰o‘ák‰Ü÷޳ßWCÄj茋h›3€+Ó¾fp9Pw”´®é°bÞqξ¬žµ¡‚01®€{o`ºð‚¯}s/¢Ø‡åÏ0üÊ j¥Ãq¯©mÆŒgh…<+ÄÙ|ßHuªÑi7[Üõ8Êp¢AÐR}ëhľrñêxC(íž&4b Û6ćöFÞŠøuE&n:»3VÜ3ê d14؈TÍZR¦q¸ëytaØQbœïQ&ÿ¿°QÞ‹ÿ½¬eÜËÙS;ÉòØÝVtÊ£±¸¹p\G¹ø~ßkÆBËèVöj)5Üé|ià´Êu‚*´ž«X7¯z¼F«B\Y+˜»ihÝÂÜ£Tm«0VøÛ‘½¹w”{1À¸AL0…Àx$w·‰+â7"Ï ?u}Lê%9  (RCÿD¾‚ZõÔè~â¼?ŠGУ oaŠ˜J“Ð$5ñâ áòœ5åÐÌÛ’áß¹P¥Ø½!ûÂV`mJ´g)À¯ŒZ¯øõYà ŽêZZÚ‚@&4m%l¬©A9pÁ€œ$Çrl#¯²1’À[òKh¦”âÌ$å~.ücØ%+çê4ïr–ÏÁÈQ7ùNÔðȧ•ÎT6R®vƒÌá$ç_Q«´“Ø£°Ýé<ÆxÖÒ7ô+Žp¶¡ZK°WŒ´Œû#úÑãúé$ÿ_“ÌÕXCó-ÓÙþJÆ7=\+¡·ñ÷ê(…Æ áCsÉßx EÈçö¼‹µÿw¾dO¬Eù_Óñ¦áÏLǽ®P7^ˆyòäEù¯$Cß“_®ûoNÔrºò±c^D gÒ†˜äŽsÉäåó`úZ˜<ˆ{“eç|[.špþ¿Õ.dhÔc¡·â†I'^iÁj~TàCT¸>ëÜ{°àš;ôR2¡&K Srm¿äPÚäœé]&رš1¬’9ßR *{ÏOf+ŠÁJ@ŒF‹¢æ‘rÑ™çÌ\÷ŽñõÃeç›^—˜)Xљε¨€8"oå¡©ïìÅ|°Iþp”†¦4¯èY;®k#UõƒvT1iQÜFªäV;í^ßg> /ExtGState << >>/ColorSpace << /sRGB 261 0 R >>>> /Length 1104 /Filter /FlateDecode >> stream xœ­™Ko[7…÷÷Wpi/2áû±è"6š .úˆ% ‹ ‹ÂI¸–‹ÚFû÷K^¥+[Gñ ]HýÝÃ;gf(êÒF](£®Õ_Ó;~­§—÷—oÎÔÕý¤Ik­–ï÷W·ÓË×¶jÖ_”±Ä ¿õqLä½ò)¯WmÔɃúAªõõôãzžý¸<{²{rý|­Ñ‰‚^Š@ì4¥°[8øö±;8%²{wöÏ[­)˜¥8ÄÖQŠKqˆ}"½wç$'MvïÎY .Ž‚]ŠËóÅÎ8òn¯I-æB¡²×ŸFÐ&^ÇG‹ÃJ탥²×'f[®¾fÏWÖìêü—iní¦•VŸ&£.êëz2óä?O!Q¬7ñÕZQÕ‡.×òZu£VO¸&¿.xIä¼wÜzOYo9¼X²fÇûpÇ+wœ‡ ÞÞò]üßOí‹H%WKbn™ýp²YŸÖr©“_/ÏíéGµ¾x^x¢Ú úéDF0‘ ”cMRõRæZ¿úãAò•B&+[SPô¬þí­ûI°ÀÙ–á@®7ÚÛË•X-%V¿y=Ôu‹Q£Z•¼ë­uk†»Ï꽺]n@¹.6M¦²¾Þ€Ž÷ºi{ìõºxê26’Ís¤mAµõTï}6hr ¢Öš¤1·ûêLý0FGÎ>¥¥´•€bf bîÅÌÄÜ)Š™)ˆÙXK> Q3Fa âfŒ×äæ~ŠuÕ]¨ô®"àçp+¶oŒ„K30rÙ1tɹìXè’E2—5‚r¤–Œ‘ËŽ¡KÆÀ%°ÑEÈûÀ2—mñØ%cä²cäØ`ªpÇÐ%càÒV™OÐÏá$ pyØ‹÷KÆÈåÀȥ˔pÕ€KÉ\vtɹìºd,êX \áe.»ºdŒ\v ]2–¹Ì¬;Ráƒ6X¼3†.#—C—ŒE.Îä³Ðå—Œ‘ËKÆÈåÀ2—ÎP’ÖrˆËŽ¡KÆp9§lo"YF‚ŸŸdaÊHÇx/:솎…a‘,#)·# aFX¿ëŽÜ vc”‘Ž…a‘(#^›ö(Ëȉ2Â"”‘AFË22D²ŒXO ÷ÈÀÀ;cè’1rÙ±Ð%‹d.ë×}`ä²cè’1rÙ±Ð%‹ ËÝ“ºÙ=¯óC’¶r?GpÞQšV®úÅÞùvˆ·©³›ù&}Ü{L°m_ò.ÖœªÍ#ÅÍŽÏ?En¦Õä£_üe3=šsÇç›â9(oÔÔúÚIè|Vôêááî´fBü~õðçÝö¸è?îµöhÇžíWtNíTé…­=Gz2Õgûú˱´ÖØLÙ‘<ºáQ+n®£~å}U_ÐÓUmCg¶SH—íœ<ÓðÅËYkº¿“弟äy˜ûïüÜŽÈç ×¼~ûûTÕòž|>xwh–ù_q9Í·Ûƒ½›þƒ¤} endstream endobj 263 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 268 0 obj << /Length 2332 /Filter /FlateDecode >> stream xÚåYÍÛº¿ç¯Xô$£»z"õ] 6m‚¦‡‡¢ÝмdYÞ5b[†e¿dÿûÎ'IÙô6-ÐS¶(rHçã73Ôû§w?},ë»6m+[Ý=­ïL^¦¶Èïê¬JmïžVwŸ“?.Lò ¿~Z<ØÊ´Éß ½„vÖ–Éh[ø}\<˜²63ú‘¾G™wy5ÐdEM4+¡Áþ,˜‹ý/ð3‹‡ÒæÉ?h{&ý3uÏÉu«÷‹/O¹3eZUæîÁ˜´-K>,”›"¿zf7úo?a‡Ÿ>6AB©É,<ó´5†÷û´‡ uK‡>Âo\vx€ ü¶øœàï„éšäýRª“‡N&ïñå´°Mò ÿÆãWè˜îa°Í’Žih¡—¸ã$;v8{Úè>ȃ,‹íIÙÃ]™²ñ7h|‰û¾r»_)*EX¥µq“g’z6ø¸–ÀzÆ5>bäÅww[an8ÊJ²úë‚Ø¢Ykx?ãh„O‹à(°M”C×#¿/<òŒçØË"$•´Që?MQ7SN¬jë!n²‰¥•gpv=8´ÑTÏGú°GžO<jÓ$éâ¡ÈËä)˜º& ÙÒº ¢oá2ÖgÅòdÁìDR0µcµÐsNqvdá]ĉôì×­V—°GdDZáb·ãÐ,ÉÃÛÿüÜÇ,à·ž±Ys’ýö”؃Ö4GÄ0 _ÁÁìÅÁ¬?Øÿ ³ÿ)•Òü·È’¾ãtŠ^ðÌä2èR6hS?j =QŸp#”’BûyØûEäya|>*Ý971⽃T^ÑŸNÅ?¶Dñž›\䜲ԊòŽé¬ê¦M›*çY9¦¢ cl‘|B¾a™q™9“/1J2„–ºàää¤îÕŸpè8]+ 7ÍÒ¼–M9ÖM=±è§a¥äá$h¹•³ÁP¯EáVÀ; ìùIG°"’ʨcÂëb :£ÅÀ{ٔɣìà´¦%Ó¸SÇݰq…J©|ˆRU×ÙE 0q§bdÕ&ß^œ‹SfM.ØVU£O]qˆ¢ÁûJO½»qB›ª¤Æ©çÖ‡«oé†{®V;§˜®wRV XݱWƒ€T´FÂ= ÈØÅ6Žròg ŒSú+“i”­g51‘A`ƒ¥ÆCúI<- i_JõKýŠ¢û¯¸n„úÀ2ŠñÄe±ÛCöÿÜÜsØ/d‘ã>a µtŒèkûDx)lÏË7™à2«Ù@XרS’rmÅ4mø•Ní“<ÝV7ÒðB+~ Ò’N·ŽYE4QŽX3;ƒWÚúL¶¥Ö²0ÆU"Ò„»t’ÿ–” åe=$oü „­}æôä¬N5”E ê`+e¹;ñ»J^º\ yèx¸§ä™Va%Ť…90¤Úñô¢¼ xV&@Ï&OMÓÀÊ´ârÞ i §¨9×+jÉ|‘¤€û ‘“‚HtÍ4ÄM–¶:þ^2„QœýgQÑézá¤Yë&nÔkáøâ\O¾šçFn8^ebÌôâ@X¥U[ÌqW ðlB_ÞsíqÔìv> stream xÚ…ɲ›8ðþ¾‚£\5$öc¦jr˜ë¸jIŠØ.“¼¿ŸÞø=lZ­ÞWýy|ùð)‹ƒ*ªr“Ç6Ð&ÊØEœGÚTÁ±>«ZM­áó ¿ÐáÙNÍ!LÊDÙ £=ág€¿Ñ¾ÿþ𩼓GZ—AÌítÀŸ©ð#üì ¡AÇ×x>ãÍ„çD†//DŒ„Z¦¦Ë+Êø¾aÀM,ÕjÂ2ÏÕÇ+QƒµAXe‘Ñ:µŽª,c3«zTuÁ#êe À{ÛâýÐña: …\n•bDån'F"C¿Ð<`Fº i¹e7²aì•)NÖ‰i@G¦òM¤Pòt(æêÉAúô Þñ®¯EÁ°aÓê×^Öö!„n®â¾ÀÝG<dz¯èýbӣآ•ïÐï¢E~”r'¥%8 Æ—8‹ù£ßO€RGIæ¥cýÌT›ž “8ãf8y?8ö.yB*‡¦ý‡¹oFÉ ¢;oñy ÆZZ®Z,W6…îõÕ $0xk¾Ä:EëlÈqÔ±Ž²ô}Ǭ–óJbãç!%„Fâè­X[Èvº€æÊ0;‘ƒ…@ÀSÒžý¾oÇ"Mõïætô·‘ã=rLlÙ÷hB< ®6jv‹þ;#ˆ¬aøâÇJž}¸k¾ìl×Q©µzFžüŒ»®çW/A¤îºÌWV¬òâ¨{ìÚL”œû€‡õŽ·ûÓ%LrNé˜òÐ0ìüv±õº&·3hv‡ó8œ³{YhÛvlxä+÷Øuý*â:¸“¾p•ËÚ ÷\ÝìRPŠdES•TÑø-øsïC«ãtíÄ  L=ÜÝdÕ5¿[<©e¢Ø‹‹üé—ð™Iµ6bÙÝ Ç+E®Ù-åÏp•}õ£j»2’¨JeNBÓ¤<°KšÔÆøÜH .áŽßK¼'!Þ®R8ÎËž¨dO”2ÐÌÎ^Äe™hLúÛd£ š´Ð—PBe•VG”|ñ+¥äÎÅ7Ìoö>=¯L¶t.Ânhïšlyµ™|-†qEÀÐR:;>Xé`„y›ŽJ훯‰7’¦f•DBs| ~Ðò¤‹–梈–BKÝ®×Ïž æåÖ.@)Êåõùö5ˆ<óÛEreV+"é1p[ýG$U7Ð<¦L58²_V+(M–ë†f-×·Îó¨,`‹AMD‰–ǽ1xùò×ñå‡ò endstream endobj 279 0 obj << /Length 1158 /Filter /FlateDecode >> stream xÚíX[oÛ6~ϯУ DªHÝ‹®€»%ö2 s÷²íA–eË@b²Ú,@üÎ¥Èilè°æ&yüñðÜxx¨w‹‹W×Iêä~žèÄY¬¥#? ´“‰¯tî,VÎïîÛ™ëÐ]Í”[@k¥ÿ#ˆèJh´i8¿—þFþ¨šý¹øÙ O)?ãgÃ[ä70ôx¸&øï|€d9J™ï…vüeÜ«ë,r2°X¡Å`•N|±Ô—Å#žŠ»- +»P‡¢#õÚ¡“qBŽ“¬K™îÄ[é[#}ÃP„­-ï¶½y‚Þ¨Ô@N«Îp.c#ÔÂa¨Ú²£AÆBÄ0TÐôÓ…Qîk’ ò“<G€û”Hñ™ˆÛküXû$Òƒ‘?u®} Ç;³)bzVNÐÿµœþ#9!ÿör‚å‚q~øbN8•P†LŸÁ@=—ÁXuR…lÈ@=ÂäI6P$س¨s¼dæÿ[f†ÊÍ*uQ˜i)÷3EÙ²YhMl×ÇaèÇykiÍTmhu臩6à²0ö÷ê8À$¨£Ü= OܪDw†ˆ(DÃþÑð'âme»BŠŽGrKɵµR q¸¬í·´ƒ$\%] ó‘hÂaÁày}Ä‹¨ØQDS4ÇPû&ñ°r¦˜-è¹°”Û*Ìr9P¥`3g¡ëÃùRà´Šà—3/ ð!è±e•dm†¡¾Ø1à„äeuEœOXDN–(ؽ06$9ECQDœ?!®2›)÷rêÙpGö•c«M%n[#èâSþž‰û5£mÁ”·Ä îœàÒøpG&­Íû]¿zCã;Ò;ß1ˆB±5‚î S Èv´XìˆðVB¨‡¦K˜´ç i2aKŸ0‹)Ý·•qQLz‡Y4ƦŒÙ‘´©v¢2Îäâß’z@öÉ%^˜³ƒën‘1‚li¶Â#ƒ€¢é÷Å*¢j{‘öLV\æ„¶”Ž&‚Šc;5XÛ “ðGÎ^¨RL¦Zk˜ºäããÄJdï #úF©Ið(Ís“n_&É·}©d^¼Ãlæ~¤fù­yq×]®ÁÝ‘ú×Á‹²V+„{ÝZÍs|²ßŸ’`>éèÁw¥QÕuºŽz¢ÝÏy¤Œ¤ýõÁRñIW‰½—zç²|®›:Ò°H²¤Ù˃ôë|¤ú&"søF„cÿ˜$Ï^F*IàyÁ3)„>dtˆÀ‹«ÅÅßÉG endstream endobj 177 0 obj << /Type /ObjStm /N 100 /First 884 /Length 2005 /Filter /FlateDecode >> stream xÚåYY¹~ׯàãú!l²Èâ xgâ]IÖØÝ A»ÕšéX‡£Ãpþ}¾jÉ^vK=‚õƒÔl²HÖŪúØ6ze”IYCxfE”•MF9ëñ´Ê9y:ÅtÉ«"ž¬b} *f™0ߦàЃŸ5X6a92x  qÄÊfÐx–]0ÌËgü8cÝ š1”e /C²„‹2FzeHèÀa²X™°‘a4,lÐ!çÐ0A‘wd¢¢`ñž(2þ dM™AqØ9ã ‰ÉBjK˜Dhk·‚4@ò19å‚—†D'DQ¹ʼn]J4’L2ЀfÀ’ò&€[g•å‘cå–™w• xì&»zÏÎ%åÙ‹ > »ú!®ÇrID¢|ŠÒ0Š­¨â°õÐE4 _ ;ᆭbÉ'4`bVÌÉ Fá(ÒÁÖœ„&€8‹6!|ÝŒF5ô% ¾Åé*&ÍtµP9ÿ^Í–õ¸A“ÞÃ4°X4Åý¼|_eµZÖEÕÌ«Õd4®?Ëf<¬‹IYÍgÓâͼ ¦”USÃ[,šE¡§³å°sì]T0ãx\~ê|XMïËùj2.WËbv?›Öo‹ª”õïʪ¾ûƒY2µdü–,y­nm›toTñëoÿ@rt:!æFv:#êMWãñiâtFXD¤Öe‡¸UýÓ§°…dóÜÎÂPñëÏoþUWë¡$ßàÖ+¾˜ uÿ‰ÎP½ª—Ðdñòú9¬XXª»]ØYÙ„¬”. Yų)4)f”JAXÚÛ¹ßr¿¿6Ó·pÙ|XÏÛì]ñSñ¢¸º•xaî„'H}kCÔR/ íhò,uüaH›äA÷¬UÍ+Uü8{=SPúw£æ~5¯µ}"zÙ²EÊÛ†ó:"Ê5Ü1[Ï‘2Qm^$­ ›)À2õ³ÄaòÈ}’‡È›»:êqywDÜÞJUØOÞ|(oì+oêe_ŽÖ~”²Z›¿ üŽŽ.Ô„T×{šJø MHñ¼« )®ÏµüikïÆ£KD´‡"Ú‹Dü=Ì6–¬ŸióÌýš[á¥f)šMÔFHŽš,PDk"üTͲÖoËÕh„òvêÇŒ3VGà‡ÌïèíÌLvÇ p›"ìA|{j+xáðé4+åxXNKó˜Œd¯½NØZРÕÞ·€¾ÌÊ?i/QíHŽËY ¼ØÔ%êHNÛøðÞ¹Û‰GhˆN!™ž§pÃ,ÙG=užáàâØHþ€û@ÎÐ}†VY‡ä¾ìçÆ?¢{±ÑR9}ëÔÂcZ{º šZíœ`fR®ª‡zn÷˹—è•–·óÏ©šäbI‡>z&#Šgœ¦}bQŽKQÁ÷*ѶŽÙ¥ºqþ@7Žzžg³X`Á¥×ÙÙ6²Üº!Ÿ?W,Ä@纣œ=âM D‚ˆ”º3ò†íTšt‰[8Z8öðþÿÜOÛ¸ÿ§zü¾^6U¹…úåvòõ û¶P¿Üävb;Ä‘P ‰å _᳑—¸uê€Âv/ äî¹ßaàƒ»¹s>ç00í§Ÿ¿ .ÙÇn/ýb=‡áÙ_"üV¬÷q7Öÿ¢C cÑa}Eõ­D‡ž9;H,Ax0°TTñBVÞ¢¼4ŸMÙn?e3Ÿ¢vˆQg;ù Õ=D}®ðÜDòõª_Q‹ÒzF^!´¹@•/[`,…¶ $XT>& A¿Ì§1Ãâa²×ï›êÁÐãAﲎÉ Ȃ#áœ#Ížÿ·÷žITóŸ˜Yc»/ò2nvQøpˆgÔ¨á(²pÚÓI‡?™nNA‹}tÑ7÷R—úþáGE:ï£âßô5|£R±Îµ ƒ“׆âi‹ŽJD1öºûy¥Ó-î–žOF©‹ pˆ bìYÅt†ßÆt[ØÉÀW ö^»`;ÃÔÏnÄ$upW­•+ÍŽÄÆ ºr7bN‚‘CGb瀳ÝY4øŽzf:¤Ü‘ØùÆ'‰Å¡lG=³±‡ÿ±ÏFg×Qu>fcGÕùµ±Uç9iÃUç}ܾXø/¢™U¨ endstream endobj 321 0 obj << /Length 1999 /Filter /FlateDecode >> stream xÚÅYKÛ6¾çWèe ¬U‘zm€¤MÚôЋ¢HrÐÚò®Q[ÚXv6þ÷å¼(R–¼Þ AZSähæãp8ó‘ûrþìÛ×y<Ƀ"MãÉ|5Q:òPO²0 ”.&óåäÝÕÛ©ºÚ›§äßj:Ktt¥Mó;jþhšGó,Ìó“y®O»_tÝšæ wÿbežpø«—Óó_'ád¦Â HÎ㉾t/¹[ûX¾Ôø"¨#˜dèŽñœ…z9¦äQL¯Ë믎%ýR,"ùj âå²ÿÙÀ³ÐÌnœf3ê6#à̃(V„ó¯i¸(ŠPQYS»ÌÜ¿gmåÞ5½WÔn+Ø-¦:72(¾fU ¼~*ˆÎjIÝLg:½jH¯5w¬q2:Cc;ó4us0?-É”{ö% • h5Ðl»QPÄ9Ml~‡^Çù'™ã­m:B{Á:­^v(jç¾7æl+ì;ñh¦‚"³ [ÑÈ$4vÆ]±Ò4Ѝ«–zĹ(pf’$½®é·ä_ð~½@\3ã¸e…¾Ç¡~· ¦³4׎;&³" twàIB°an‡Z ¯Ñù΋Lè©ÌõuÞKù–å?²W*vì‚ÛïÃ$¤ŸÀU* ’¼Û pÎb¦ ^ÔÚB˜ÁÈ^ü’\57¸×hÐÞUÔn+‹ápw³¢[ÙËû W¨’$(òÄ÷¢¿ShG5µ|Ö÷‡.!`PwñK&kôî™ ­¯ž¸ApÇ•­gg¹tSaBBg§Y/M˜·„ÓÄsÊ-_iÁËžªëŽ t±àÅ¡Iµ±IaF?¡¢†?°dôòê@NȧØuÏecõs ãž©U#å}fgã„’Q¤Ã"_Æ|­’ µH¿—þTvÜüF*ŽœwI’Žýˆ‘ðB#˜#ÑQIÉH|¡‘pĈêtW2bD=b$|Š‘ô#êB#g>»ÐˆzŠ‘S¢áìN¬y²Á!¿UŸ€`Ô¡MÇÐîò­ÔI€¼Ûòü˜†÷Ž—R­ˆÂP^’§°À`@¹&Žý2l$³YÛ! ®±ÊŒŠ$j9äñ¥¨ƒl ýJ4m¡˜zý°fý@‰”i2»ÅÄYqª@…,ò ¼.š 'ÛmÝÉ—àÔ*ÜÍ´[¤( T ÎZb§â ·žMW‹¦:Eé¡E¿Žs±YdÔ—ËOÓ$Ã䰼őËmÄÎÕg)ª €ašŸ>5?[¬Qw-¢î5ûCl`•6Ã{ÇÚ¢ÙB)ÞH´V<®óµà ŽÔ_j·ºÎ¢°3lšÈ±7ð÷°é I Ó:…™K—’š-`Óm÷ÒL oä³8J®æ0cÈ HÙuÍ®ê¤ÐèJ lKŸMÜ¥?bÎ\»Žÿ¯™™(†Ãa o,ÚÑF„¤œwœÒÞ^³êm%veµ-#ÂcH»¬ÃTÑ;…T¿ƒ±û÷47ôÉ‚ŽGš‚ƒ¢$Îsr0¢AÜ‚k‡ÿ5uŸu\PV¸óÊÒfŒˆ3F¹u¸cÍSÁ9ò¾B-ëZsàÆAÁÇ·#Ì/²Ä#~”û°ù½iÎNéàÜ¡µ¬;qL7÷Q(ܯf¦^¨PûÕgà8Žõë7Fð¹›_{*Š%²Ïw¿aQ™oÍâßt ûn º¡†šå‰nä…v&ÎäC¾·9ÿ ÖLó¹-àDB•#¦¦~¿)c©Î3ø-âHN5àüw\<åù0ÄÆ”§uì9©Fæ£<ðR3H!ÚlZ^ퟣ'3ñò®»‹q#ÜYÐŽ‚a^LY©»îðáÚvùaW¡˜‚DïnìîçIG•%ù¿.gùÞ8g')ƒWÌSä(.«xZgÁ.#^CrN»SzÊoCÌ^Õqá“ZÊ!¾ê2í»É©ÜÐî}[“0§l8ñBF¢ØÖD¦ƒv¡4™Ìckx{ 8X®ö6hPÂåDü:X\®a<í‹‹çZ®¦Ëƒ6‡ž˜-Ô1^˜œa˜sÓÑ[ •øüÁ¼ 0MžB]ʦ;R?îç’ÈŸð(Ó½BVºuÔ:º\j«™#…-¦òAÅš@r+ËÍöžÄôlx Pwû˜\“ á«a;ÞD(qÐÓug*„Ôíã»wåâbC×Dî]˜å-ëÇoZ Ò‹Ó+%gQÞ­=óD]­Ýù—¥>%bP>Ñ•óÓŸðæñR6ãò–—'õ[]ýΗ½ç®¸\NsþK^i 8N™w¬—ïøfQ:LÓ®8¤À¤[¥üÄÅrÄÄ}P(o% Õ?Óx µ|,ô´pNàðâ’g®y¢³q¬U"mtµqfp8S ÄË™í9`ß#ßrÏŽ‘Ó>h@O7måê#›Ð’KÓsgg÷øEz"–á]©põûÛ'ã: “*´ ^cÏ楔-PhËèd,iÊÖM¯ês§5—_8P´ûÖ¸x›ÎœŸvL»³ë®b“úûzè;ï>ŒR¸°Å[,ØUëüGITœ²Äƒ¼|¯Ü3ÙsÀ=ÿ;ì¨4 ò,6ܰòœ®‘Ö>{5ö/¬ñp endstream endobj 336 0 obj << /Length 2428 /Filter /FlateDecode >> stream xÚÕËrä¶ñ¾_¡²/TEC ‡Wâ*o²²ƒSeË''j†±<¯"gV«|}ú €9®Í!A Ñènô›ïÞ}uŸ7U\å6¿yxº16‹ËÄÞI[Ý<¬o~¾¹],mmnMÔÀs‚çgy×òndî ÏN\ëày…çŸÉ2 ÀO²tǘWÂÐìçyJ÷ú×Ãß¿º_†¬Zà8]Ø4® 3:åj‘š,~?Ñ<‘ÜOAM’Ñ·#cPÜÖ³ð/yY¡kZb°Ø/xXOpWÀ€0bL\-sæÄˆ®?„õ/0„6Ë‚§“™'Ü–Ü.r[‘½]TYŠsHE2äw"°½¼{Ï@ÇÂÂO…X‹&Z ôš—EN*„g¿ñI6låÁñ‹“¬M%°ƒ§xqü5/ýUôþOýÃG~€¡…ç~ üA¹%i/™Ýà[Þs…G±ËB §ŸýuüBd0ä÷^äc:Þ³F—B¯àAä•.Ëè£È¦Gó¬·8ü7ŽP¬ía@Eô„‹û•èÂÀÊÔlŒ)ãÄdpó–Sø.Ðì£p*¦îí2ä¢4qY,ý®þíÖ–QÓ3çÞ3uxâw úÙÕdDí·\?ŠÞ4l@¦ªâ²¬†Tã‘ÙôÊÄÉvËê“åeôɪ€'Vrœ«ñ•{“Þ«Í{iÔ†ÖX"4!ÚNG";í —Eâ±á1¹’¾už‚&Ix¸óõjxdÕ`XÓ:òõBXf4Z©IS‚néºLJVÄf »Q©eóÝ¡þާHþkŸôrWº¯zE¾­.p¹ó Ïrì[Y¾ÀfÍþ1®T4p‘FJ¾eO“ R²AœC[vM9ˆpÇÀŸü…ûçy×£ /id¿`I7G¾{£ŒÂŠE¹D¨ëòy82iÌÝ«ÜÎÌ0˜ä)8…†¡·¬ T*™€¸5[6@×GòpF×à2iÉ ”¨ëv‰m…lÀU“-4ÍžïkHJz”Ô“rQ¯à³bä« Ýp@•þHÞ†çWä,·øQÒÝÀaè zžÙN< {@#w‡ÍÊb-@΂aüX»4@pÑå!)S>œó0¶`¬È{‘¹l)(Ðl”ëÅœAwêïI¥*ë,†áuÀçÑy´C½~€áSª*+Xd¸nÔçvj¢ YRð­ òU-‡²{c‘z ·Z¥¤Ÿ½L×Bâoðfš—V%Ø’G{E´‡³ˆñnNû^Ôµ¬pzØeíšZÝé’÷3]~h€)HàáQ§aâáC)ž0 ?yÔÊõQ}M«w³rþ®ôr…Š£oj`A´I`o7¾ý‹z5ñ×éØ8§áfä¨ÇÑ„&‰¤uˆ~åí‘ O½1 !&cú½.¼ø_ºð;µ•Ý+ykÂÙË7æÑŒ0ü…2Å·"@9ŒiTy‰¢µˆâ„»G6¥÷°sÒ"dÓHR$Ý¡€´~"wE6§ú¡ÞЂK'ݬ;Õ<œZ‘aS¼ÝI–Ó5¿ž%fÿ;œ÷¾éi´NZÞÏ{EqŒ5d³;p I»^4ZÍX)ð{-ÝÌÙ@¯i/•A­ƒ$dEâ$Šã=§²@'¥}töo¨I6u¸!ÈOñ³=É›S¤rëÇ­žŸDO¡p@OÚeä.ÇT°|q™Tuš˜§I›¼ÔÌù½ÖI?ºD}¢ Ý:×ê,6&|A¼IùæÁ‘Qôì„GŠÙ5p9¼Iü&LÛ‘gg®J ìªLX3%iœ”®¨ùizElóT×¥o3RIp垈¬ænF–e\%Ÿÿ,‰ÓÌ^#tàÃéc{Pï.|ò ”'TOÚÐu¬À_z nW$U¼¬ÊaL&c4öN¥p$Õ§)8ÝçÖ£ƒÕ ¢p§ö3O’ý!>¶­ Wÿ´:PÌÁNC5Ÿà j>Ì‚Ê$úþ"£¸i|Ý{mcÈÞR‘~Ö5j÷NAsËxëИrîwtäÞs΄rI¤”wAq–í5\ jÀq„'š(:äLð©>ù "uypøv^LJÀ,€3…üZq7ýZ¹ÉI±žù˜YúþšëÃ-E/fJûž×ŸTê;Fìèë=ŽÞ#•]œJkE™–¾¢T2ä:°8³Ÿ3ZXjœOuÃUŽÑͬœ%ÿ8y i:Eñn”޽új»VFüÁåÊJS§:ÌXpTÃìØ—·g’*ßCúf®ïHS†ábÚw?kÉ—NâˆÔš%ÛÒTJûx« Áµ•5ÉÀvÁ)ÏA¿³®/FÝÓµ¬ïdínÚ²í®¤‡½  ›¡—9”–ˆË™¾V5j+ K8^“šVÉÀäƒ §cU¢!/–j¡ÿÕLô¤Îñ S6Üà –)hžëmÔ“ëf?£ÅR†jw*Kמ`;Ô-iη­AØt ¿i áíÀÃ͹™h‹½™ ä$<˱oÅj> stream xÚSKoœ0¾ó+|4Rq°± ô–¨‰ÔÞ*qk{ ,ÙEá‘òÐ*ÿ¾óÙÞÍ&›S…À3ß¼¾™1’¥ôH&s+2S2­ a¬aÍý„Îó¬t¢3É€›ïƒaߦè'=o¦Di)LYþG6û1[rb˜¨ÔŠÒZ8ÞUÑÍCÁJÒ•eÕ“J‹"ULF¤º`ÕŽýâ±ä½ûm¦o'Êä\^Þ°e%¹^O€åû¹~!íàÍÓ“GápC= êQ =Ø´¤ô}P^Ii„Ö5V?ÆŠ²‚Ô³¯°‘¸ Óº[/:þ{xõ(7Ǫ˜³”¢4Æwë,HüŠÓ¶RhVðß©I]]É'ôDºô–zÜyáªzVR&w ¢o×ÚNKë£.ëQ7›+rYò‘4˧ՕN¥%´©ø}Ý€èÁÇŒ9ß…ž©´ß™ä/NXð€tË;’Kè/lð“Ù`ƒ™.΄ŒfÛ«uHþ…ÌFùéÀ@5U5<ç ÈÑ#Ý,8®ø8 âì®Ên%nÃ@JÉ« rÍ„ñ:N‹OànÛü …ÆÔ¹qÊ äæÖ­Žè¬Ÿõþˆ@¿^¤Ê”ŸF–y~gb͈9éŒßÆÊßû÷ngbÈ~.d>¸ß ·RXX»óÛ©ûqï£Ã%A·;ô'´µ×’´V¹f‰)D®CcÊÂÝWÑ?-0. endstream endobj 331 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./stategraph1.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 344 0 R /BBox [0 0 504 504] /Resources << /ProcSet [ /PDF /Text ] /Font << /F1 345 0 R/F2 346 0 R>> /ExtGState << /GS1 347 0 R /GS2 348 0 R /GS257 349 0 R /GS258 350 0 R >>/ColorSpace << /sRGB 351 0 R >>>> /Length 125057 /Filter /FlateDecode >> stream xœ¬½Ë®$K’$¶Ï¯È/ȱ÷cËY 0 ½à‚àfšAž†½àïÓDDÕ#îˆ*=¾¨*Xeœðp35}ŠŠæŸÿõgþùßþÿ«þó3·_-ٷٕëþßÿûçÿþóß~ü§ÿßþËÿôó?ÿËô+¥ôSÿùßÿòŸÿ—ùWO?ÿ¿ÿÇÿù3ýü¿~äŸÿõüç¿ÿÈøØÏÿùGãW>Ÿõ×?¿~Ô•ÕrÖãW›?ŸõøUëY¯_c`½ó¯|þ}¥_]ëþkì³.¿2Ö-/îg]µÍuû•ñïíWŸ\/>oõ_•ÿžó¯•¹ÞZŸWÃçÏcù}yáAX÷ŠuÉ¿FÒ:q}6¦r]ø÷eêùçû ×ûWkOÏ«çï Ïä÷Õú«/þÞ­uçûŸuÒzüZï—ø}õüþÎ÷·Ïï_åüûÜ¿&oK¿ræ~õfëóyÎ_EÿžqtùœàöuÃ~·_£>¯ë¯šž?Ÿíùü}IçáÏÛßO¿g,;û½câ¼ï3ÎóóÓûŽök§§ýÕÎÃöë¬KzÚÏQü<´ßgòÓyŒlïcçuÖ­>'Öéé¼ÏZòaòpÖ»=ÉËõ<“§ó{ê³¼¦ïwy<ï7瓼ž÷¯Ïò|ö‹çqÉûù=\ÿå>¼®ÿåü7¤¬Ÿ_?ÿö‰Ÿÿbò_ÿýÍ…ü÷ý·ó•<+ˆDÚ¸rGVÖàV=rñ'éÅ~^ñˆHº~Rã×´ÏãÈοëJB“DŠ~ðК[üß~ü§ÿò/ùçÿóî÷AaðÓGaœÿk¥Ÿç$©ˆZ[?˸_?[-¿VùYŽ„ä‹ÿå{óÓ·Såò«žß½ÏÕ;ïý3Ÿ£ÜçûŽÄàê¾üýßWëõ×ìçó?ð<¿ˆ>þ~ŒÈó¨Ï#Z{CÎóëüµêùûóµ-òü¶ SxŸŸqÇò.8Žþ|<÷<.cãëçIÆÏÇÍ ¼>÷­´óºþø‚Ÿ?pá¯ßÊ<Ÿ+N¯¿y|ؾÈö×Ô¥vlϯ?¯iCQ=ôö×ÿýéGß/ç†Î¾@¸øò¡³?¸Æ4K½?ÌkÆö>ŸÍË“Ï_Õ^þ\<jáŸ>¿ì }Þ $/_¡ŽÏÅ+=òôó¶GEàé¥ûÑÛÛGžÞ:¯ŒÎÐÍ›zûóüÐÍøÎóÒ¯ ÑÉ0•7©ED¯žÓ;Ú²*ùóú燴sóŽDCéþóçN®çâӅç1«½ãç^?ÑfÕÿRø½Láô7#”£{ÞF4ïbÞ5^aÝýi¢J螉hϧӄӯ²½o¦W§¼0±´³þ®"\ËDyÿ%QŽ­,¼}f‹Ö~¿¯n× Ï~¤óùsã‹2„2ôþˆFòOä›è—#cvγKø6¦{y>_S‰:è~8pU¾@ é^„ÇÑÃ×ðü‡‚"äË"ò·óØêÜx[õþðEz4²2lEËIÚ“ÄyÖÌJžlÎñuN€¡4Œî •˜ïUikwSL _,acÙ œÿ1ú9%İp»Ê#ÉÔC1qŸ°µí|~ëüÏïÏzÿÐþïûÖ²ùŽX[Œø,CqœÏWé«/f85b¹ÿÙ¯³ÿÉ´/¢*$>>Ì!ý§ 4ÔFÏ&ÿ(-_(˜ž¸åX»E›‰ÇW_lÿ]¿#~ÇjÑc›öø>¸;týŽÜÍM‘ÉD¼>\ïüÁuy½~®skMê×ñèq¼þÛ¸úïÏG€uöùl3*ˆþŽ6ã½ãþ.ð@.íØ>™~äòÎåßÑ\Ü,Ìò<•“àab÷WèòMfௗio¿ííßýýëåK8öã÷­ew¯Wݽˆß£»R;®¼tO±»:ü)Ýwî>£VèÂ"á‹ÙžÎØÛß»Ýýšx÷߯M¯ºJ÷R½™5 œAìðe´sóµùðÚ7ÿm"÷uói¹wRЀ³Oû›ß™‰j•©½üñx°ù!Ãd ’|ûÅTT9² z S©õ(ʼMñ—,ÅË·°ø ÿ)»áÛ™†ïmNëUö­ ©Ø]ó ÃÿVq¾<ÿ8Ž]ÐÝÜð«Â7c†—R C¿\ñÇ£*~ºÎ–9>ƒŽÏÛTö;Ç›‹_¾‰ã2ìÐÝ?rÚ´&ýpü–,éÀ WA˜”ÌñKÈ)¦X*®£;ó±r¼ŽBEðœÿiþó $]×Ýñéxÿe¬×ógé˜Óeç?U1Þ‰ƒGF·%?ÿÌóO‘°—ºŽ—ýtüßÿmØú*ÊöÈ_½Þòý[Èñ>–åÅsÿ“ßÿÜxþ1ÇûħÜÖ4ù+,-—õ!›ÿúþ“–¿ œtŸ|ÿ²}çý¢Ca{o{ÿÜ©ÿBIÇzÂÜž…P(vþcªâ <ŽÑ¯JRêü»îÿ ÝÿÅï¯Àk>-x0M}gÏïpäaübú¿*ðÜx@t6¾ÿ =ÿ¼ø†ãÛ­ |±Wêÿ·Žó»ûÇ&ßÿÊ@Tþt¬x~osûšb)òòe°>›Ñãó7çŸð{VHú3AÇæ2ëVUzA «D«Åã_ʘ# ï›ÛßCÇ¿‰Ó¯(ÝÇ 4¢¾·)ã×Óxm¸°´Ý|û©ÓˆýúùGÚ¶|Ÿ§Ìt½~¼Zå B’¾˜KÁ]èÁì§z(F':[r°xe'7©FD´ä¤+A¿Ò6©r“ByihD¼F»TD£Â?¯9#Òä ‡Hп€yÖ‡ó¢‰yÍ$àÐtÈ ŸoU²vŽ4A\… ¯1V˜pQÀVb³˜…·ë^¿« PAd«IAá4Fy±šdËbQ¢^“„{5SÐ=LI€¹¥ÓË9õ´S,6' ¯ à Ógj‚B‘¾É´RÅvoþÐé«“5ŒU¼*PXD¶'†Q[pÆqú Î¥‚‘4EDÇîU¨9š§å@Á”ùÜÄ*Z–\U'k{ëêFDkL ‡µ¼r†Jd$”BP‘c[¶K•î`ò ª2VùË…… YwIxN¹I3‚Q…"]Ýó7<°Fýœ§™ù,¥ÒBAnfY(—mI–*¬_%.bç˜ ®ç‡š™°Ï\Çt¨‚ÊFðÌ|f4¿Ï¿èp•+Pv×71Vî±ãB&פêÏ›«­ÏŒƒ%Z'tüKS‘çg¼81°ÃÜ<‚l?êw6 Õ”£M˜$Áûã ¬L2¡¨¼”dJvþ¨îÕ}ÑœLŒêýÀª<ÿ·Vèåù½ †,ÈÊöÏÓâ(ëAÞ†é!Fk“çÿÖM}yþѨe¥ô>“<Ì•Ež¿èÖµ+LJ䀶ÿ­ø¼ÆÚbXÁu¨¸…ׇøMWP›NžßB^~bTç¼Ôçë?‚ŵÆè»¦ârƒòåñ¿ÍÏ¿zùCÇ”£ÄuØê x[œ{‚ŒqýeÁ…ë¼~)æDTžl ؃2ͧŒ2޶=·™ºlÇ?ìñ±Ÿ¹¨ù¤Ú*£5܆PŠ뱨ýû¶ãÇú8¦-†6&b´Öˇ¤óY3µ±Ú6‚¬aanÿ’5±7 Ú‡¸08H9÷Lñ,Öòª: ¾È)¼ý)–b%„&—ŸW)VÝõCmþõý7r;¸þÓí3Ä?#$þçÞ²‰cšö9×?)ÈA* ñ?û½·‹’õ™1ñ¯ÇìSûf)¾²¸ÿ!–¸¾ó¾B2¶b²D¾bÖ·áúY¦^ÖŸMF9XÞCÄ5(ïÜ?$] k<…©ÿ°¸I3·¶âR¯QqH5¸ý“¸.&j“åxªÿXŽ©âÁ4‹_‘pEü»ýÌ­µd jsK-,Epy*E"Èu¢öš3ˆ,ô O,ãW-êAT]b=p{†iµ×ï¡×Ï"õÜõkË…!¾Ÿ÷Üõ±û,-×`›É&¦¶ªÊ!Ï{Ëó •W˜™›Ä† ×Ó%\C¨¼Xô‡p˜š{~CÏ¥w‹Ê°@ÈÓñ8q ½ûÖr½+nn$“«9= gc¨*–’ÑÙíìWçæ¿EE¼ž=Ñ,¡øÙÏ$ÃËo±¨è¹¦×vüì‘\ÄÙCÝlw;/~¨ÑûxéÐÖÛ?%ùoSï.~’Ùé~ñ»Ô^ R•˜ÊïIgWCt4ùÄàœ…‡F\¯Q‰ã%ÞÖ…^Ž>SKfÀŠ ~™ü˜›‡îŠe€¦Å’B]ïÝÙÓÈ7œÕU+þ[@äke¡²bnÕe»HëÇêjÈü$ù¼ ù«†‡¬k'ƒUšÄÌ~Èè7¶¤!ROª¬d¶Yöù¾.ÿêóGßAjÁû€ÚõÚœƒC%aúùOb„òÆœ¾=óðšÙ[ ù#òG™™”¹êʈê~ß$öòw¥‰‡u÷tv Æ®Aï1Ž”*ë˜üùíê2c3οÊéÍ!§³².÷j)ÃuôÄUTÖek­æõ X¬<ÿÛQÕÝGž;½lë-A»@FcÊGÏΆ7ætv¶ÔåJŠy÷ûÄ÷»ÊVNÊQþ:;Ñ©üc1¿iPø=¨óŸ÷¥¼àä¢l±³éÕi!¡Ä9RS¸ù]çþ#Œ 4dú‘#Àù{eS¹"º}¡ó?‚ËÎ}æ6¥ÿ’ô_Èög+4ìlAçVáno ×´Øž}®½êúG3å8‚¸Ž‘õ¼â^?›Dyþ!ýÓXq@ªDö_xÿbAçêr>²5³ 5¤ÿb•UÖËaô_t`Ý=‘Ô[íñÎñCÈy6QÒ_»:'{0äoJ8¶mÒß™@fÈó}gÁ%ªîû,e¼bÍ4Çìè¤Ø©f¶‰£¹$”qBO/x+¶C:SC®†­\±çw¶~§){;CWwûÛÂð«öÙÞÌÓå}%äžÐN y½$Mi’ ¨µëmÁàµpÄk%,<³pôleŒ¶’q¿“R,[6ýþØûSmâ÷«TTY©ÆóCÀ¯ÎÁ÷a ÂÄPØÒÈÝßÄ fÌ•-ҥŲÝè¥É2õË{iéZ3©:ªƒ}”ÍMïÂ. —'Tm(‹½£™ç©÷@Ì9z` Æ‘¼¬dYδ[8¹XÀ ?)1V¢ß~1Ì|C¿Úb'ö[ß„Â7ñÑÏ,îiâI7 ÈoíöËëÓm¬pÛ‹åzQiê=†¥FØ“Ð^Ï숚ûÙ´b?rôaÏâuþº³™*òò|K‚1ÕF Ü“vÖ•k·@±ðÀ“ˆUYãø‹iþ¦½#±Aèé¬Bg,kÞžjîv°Lxê¤UP6³ó<ý­Ãú&Éo¯\ƒH.pð±${&Ž•6±:45­˜Åm’ñ±k­ßý%Æ»hÓP¸iØÁ÷Ä®ýPû`gv/›±wº;¾…RŒ™¾FÍY(@¼{ë*ÈGÞ½´¹úe1ý iùõ,İl}‘O¨u µôóç¹Bt âRy‹±x5uY 2ÉU ©û]ç¯ ¯°S1-cS9 ¯Já…Š‹x>ÛŽ‹ñµ"×% /…‰‰=å¨ )k*.ÂÕBŸo·â£«k?h7"}¡ðÕ9Š¢|ÖûG;W—n[·Ðµ]7;oßb^Ž_LJTcµãï²w1'Q±Ñ5»§eMï±þ‡Ž}šNãT¾ùúˆ3&{ üRHÚbTÁq=_ùõ<婆I+÷ƒ¿ÐÇiH|cTFƒˆO¶¹»§›—h±bÅM^_ä–ß~tÎ}‚`þýù'ìg»³qœ[P…'Ô=o§_ Xƒ·ïúõ1€VëbÑ* =Âo»Ó}¢6!ßß4éC–u+ë¹°û®¦º§2Ó5ßruS%Ñ%}S·!ض½EÑY¦n$j1*)âA9ÁâXS–·ù-åÄËéo‘ˆx~3YÓvéëâ×'&5ÁÏ ð¬Ñ@Þ ôv¥Ãõ Â) :ëýjb**5-פ^g²ÊË cbήüED‰í¢«$€y{w_ߟ¤À7Èçª,SÑ×Á#sõ(q¨i_½w©FûV79çÐ+MÝ[ˆ A/O¬otO„Ä2­Æ€Û×£9îÎójbGR÷ÂÙ8v/„b£ìëËÞ_aaf!Ó¿H‹ ú·å½[Åb§Xe»°’^Ö—»1çÛ¸·U½*ê]ìêÝ[ÁW¬+5ï݇úPúª}HzYl¡ü¡iIçƒ5v±‹¦jr] süŒ†=®YÕ¡2`¤ÌYÁ‚ÄHB‘ÒM;âë?`_u?QˆWÄÕ¦t%µ_ YÅlMvD4eâž{›°|wþ`êT›¬î?rHkFõÏ$†³7,–˰1ΔQÔ¦\­È£­¦ýaN‚÷lÃpDïÌÎÞÙ²k‘äêjÚ¯jÚ9^Yà"c["iƒšöcÆdÜw ÜÈV¥û$-©bŒn.ÿdO XÅšöÙ?…û±u±Ë0Í•=¥Àd •·«Ú˜wðü‚t|E˜ùïß ‹B£îqõŠq ¬ Âƒ6MQü–%h†»ýG ÆvÿìÞR7“0­Þ´ÿëëUúé¶£F~‘UÂ&lý©æI/:Mû´/è¤ìxâK²n²ý¾éþÕû™jßYÞÍ–‘­ãD‚¬•m[(X¥«›KˆîXÛvÙ »­·ÝL}>%½â]™¥ˆ~<Û]¬Œ>Ièó']™Ö-Ÿ$7ߥÌ] EG(ˆ4^M?B߯‚c%³Ô(üEß±aŠ6] Yª(¥D¹Oa£\Ò)!QŸ±,TV´ê8CFt‰Ï±ºŒàήùþç¿óP¡á°{ºJÖŠ QP,^Çåʤy‰µœ-Ö‚—æððn¥g6@ oo¢þÙRKô—ß!¡Pþôjl£g[F ¶ä&b¾©)Täí0j$3Ê<`(‚´¥a#Ay1‚DU‰íMë!ôUÒã$²]x³™=H˜0Éœ‘Œ0‹9jËÆrÂâß*Ãâjrª×zÔ`¯afå;¯fŸÄy$lûˆå¤Eüº®z{|±ó!×øÚõ‡³·³… 3{ x¼«U›H„Awß4Z’qÍ!èÜÚ/Z õg}qÎíïÁ6SØ¿¬®T¼úÒ|˜½‚c-†’ÿs)&Ä•CL=Z0&Oî\€Q\¹bW.” ^J×lˆGÌðZOň¤ÔS<½ÏªÓ™Ãׯ¨|–bð¾,!äzÿà•YóæDtYüÆß¢.êK¥8vù©8{ÿFúI|,NåÅ'à7Fäµ<SJj6 {¬`“„Œ‘É콨…b1é"3 {ü—#:Ï?VŠ<פfBLEä×Å|²Æ{Ðà«WJC"/ÅD¢RšA"KTÁ42‰w³&ï©ßë²=‚›È Ü+ê:ŽåäpÞ›€ÿä âYßÇA'¶šSD‚hx˜?-Í9vÙ"´)ø¶.Ï·Td¯'Iǘl3ðœ æg­mÙøReHv ÆöìöÓú&¤À Ý[ˆ±ƒø…í1ñRN$4=Å/È»€:ÿ¦¨,ÆeµX…ƒóöœ`]î7GäŸ uøÍøß,F†‹¡ðÔá´lc*d m" ŠÈ?7šú&[N ‰Á<„âô”Lg)g/‹Ø1&UÄ»‰£9ªÑŠ1ÈõdÕcèRòœ€Ub,4™3½–ćÝÑ 9•XW}žfLQI1ë×’Ú=.Qöia÷ƒíü JŸ‚a-þú}{V0Ju i][@§މ1­=)7,³iª`ý“Ù.2Ñ]bØÌ‘¸AT@$Ú3ϵ؃=Y=ˆýá"TjŒÑÀ æK!éêIö-kZÈDn TiÛ`ùÀKt©ˆØØ»$®Óé$÷ù»f›L¬´’²•)‰¢¢]mQ"¹8€ º‰Vm} ‘y5‘ò°-²è¹·ðÜ*°j¯ß¤!CU+`Ñ·î”xª@ú^ ˆY¨Á Q)‘!šò*ùøY´x(ãXËK¶Õ[òKÅÌš‡ÄéñùsWhÃ9‹–!9i™0ÖÒ–ä%dÒ:T4Ð,´=,š+Æ1 Íal&ñÓíï³ÍPû;K¤Rc3v>!:T«1¯B¸XƼ‰è5¹w6Ø”BªµTiÁ° b0½\â×¼‚£˜£bìN$›Ž^ˆU,1R vuP¶oä¬;çél­Æùåó%ºÆ»ÃY’åX÷ÁÍËãéj†Ñfn´þÊí¯z´ƒÀ)]ó@ê¸[tºEgïinf÷ÿ-ç;»—Äi¯nÀ±}¸I¨?Ã|4¬]å¡ra¬\D04ÊC³»ÞÇ{ŒexóÖeÑ=5P¡‘ð¶\X©øD&¼øÕWJŸ£Š—•‹“Ê…1¨Ðb8±é#ô†çì…Øq2DñrùR¹<¦ø›œÃæÃe¶Êe\ûWçp)‡8¶a¥Gp‘ØŒ…B-É1¹X‚ ¼U¯†—3à¾Hõ«¦A?0V®½†û wŽyûgÐï‚Ç DQØâü+Ë•)V0cé†b”Íð3ü1¨ñÕl!wŽ{¤Jz ’Ènù}­mç_©ýbN6c0ÀvñbŒà"±j&X.††l±!\¨24 ³Ðx˜ßý]œ°ô% ¦Û ¦ÉBãçQ¶ÒÊëQ0lòûcúwqÔ8îÿ¸à6Å7úþ]©8;ÿBB°Þ‚-B«§iq›=4])ÖÚØ[ÄÔÜ´ÔìÑü@¡õzþ•\© RÉꮋrü£{[Ã妧@a½R®5²àAÙS# ac©©É2\_V ‡ÍÜï+*¯Ú‡£]HéQ™ r@»q6Fd©1³“=Ò˜bÚPÉä\To|Lû¢«ašöDMÒcÄÀJ%O>?8-µ±NxÓQб´$3¨…&,4¦`z(zƒ,*xz„ÕÒm:G‘mé’j/%!& J3ÇùŠÌ’NlÖøfJ¸àži¨Û|ðî¡"8JG¨ Ùp eŠHî;Ÿ5’•G?÷©ll’uã<Óe­Y£k w¶efd§”­¿>=äs´¥îå-‹Ñå)@ÜΚVªóÜ1Û¹ï¬î®`#ðù»êï¾é3WugǬ ËçmƼÔó߉‰+ÇÖ±ú:†ëºX„ ¾Mº·â»¿¡çC;?(_E ÆsîtTˆV‰õÁ ¢”ÿò¬Þ=Äö3²‡˜{3HQ…ì{p‚šÀœo4mh†P'QTq,ç`¯|êŸ~½ï]ÐáfÃ#7¡ ø5¡¬b/T3P¤|êß}ÕóD¥•fp­o°ìüdÌ„°>„%㾇ºH›ì‚ò:Øù- ²2lU/s+§8D$ i8±¨[À‰´MÑ}±&€NœKjsêéYs»bÏâ$/BRëÝ«¤0äÕŠ ÕV–BÌàîÌh4Qµåì~$ûÁ¹‡2 Cнoõï,æÇ¬6Vl#ºnùÌćÌ=j´¯yyVМ»iU; xºÑIsôgØ»Xl1ÇDöœß^¥çƒ0&ŠxõîÐãCÏ蟖?¾¨evðü‹X#çÞ„fsVÍN?µ“½È•š¹FKÔã+Ü«?Ï!¡0Râ´Ã´kùó¡$z'ûæ²$³qCÀãÀkÈ»nÜÌÒ>=öôE Îø¢Mb&œ{П'—bÕ7[ óo=³—wg½‚b“õîIï»ïuéÂf{z§ÖÂ}‘Ñ–"ŽcfUIQ0Žƒžç»{¯%Þ½éÝ#z¾³øP•5á»/U׃Ú™WÆ¡ ¬šƒ££Çª¶›åI$¯Ø+´›¤.Úc>™ô¾èeªÒ&ø5¡wÇÍ–•aîe7M‹ òbD2…É;üÑóHHÅ`ƒxŠ"Lïé(«<ôŒ{°Þ…€ ;‹n?JԲɶÌÓÜ{å>vx6« ¤­YÕLc"‹æQžÎš8Ï™vÝO¬àК!,o)៨ë$”7Z,ó£ìJU½Ù†§‡"9$Œ04¤7YüŽ$”œËÛ-ËÕ-¾twvP×KÉPÓý퇘^B5ÃÍÖ`È== uSîc¥zÁwŠƒYWÒ¯©ïkí/oŸøÚe Y*SX»ÖLN¯†ØËÁ™ä÷!1LÄ­^dßDós~[Êz¯Xº)' ‡ÑZìèQ.*=ˆåŸˆøÔ’wö3º‚ýM‹~Tž¨Ã—¢C¨¼„žÀqXÊi ·*}.ñ¨½X0ÉLÅKÙ{%èoX¦pê _ú­„i3âYòÿfB…®]b %®úº £/ŸMJqIÝ£PW÷‰ m2ÓÔ=äxå k­†R›OËàä¬CnÆdc`Õìlª<¤ wA9*ƒ˜š Á<·ä®ÅºZ·f§,±ÝMO_ÁTùXÌ}UËÿTÍ@Æú­ÊzãZgÕĤq‰½öŠ%p¬cT*ê(N¢’)-خֳ}öx¨{ ÑÞÒÍ¿Ê=¡y¥M¿óÄzAîCýbK³^“Åd[r³g 2Ô.UºæûQý7ž|»¼iÔHõ¹¤íÙ„3߇âïÂ’;ïÇ|($”Ôdxw•SSLãñg(qX4G.žÀ‰Ü8ùÐp2œ<Ú9œÇE g©ÍX0OþJ‚Ô7÷¼~4ðæÖ6nr»)‰³ÞSð¼jû,½,Ô5Qã'r0‘´µiëEI[– ³}/Zëê<u;]ÈÉA«l6þ°Íî+¾{èä7¦³ÆÐéÎ(r‚XY˜iV›ªÈ©ŒS.^ à .îü¸sAœúaªèËÛWB‹uØn’A…ß¾Šp)êì  Òÿ‹òøx¦Ü±ªŒ IÑ ^oræ—MÄœt¶ íc "bFg|f¦©û" .øØ,ivéÑ,Pú{æ»Wo9a…x#›X” w®XF•C[b1UóOàèE¸¿cëéûƒ‹ö÷§j…|õh&Aa× âáº9ÅðxM­>»y3ñ\Y¬1x¾èt>áû_Ÿ¿”+öVÁ–uú5H3™<ÔüÇ/ÎÕ<^WF) ßÐZª™÷,Óü1Veûmœ­yŠ15†l[õUÇA76Ç–ýMõúü&4ÞT"§(ð޲ÖuÏb„Áôs$ñl¯%¿}<äšAÎÖ®¶Ž4|²Š¦a¿ô;¼O±Å„_;}vó¶Þ}.­‰O£s¹Ðs±šÔs²gjÆd_ôÐË8/!ûYXȘɭìœÕ¹C8ËtEaè¢:Åx w-fó€Œ ¹¹­ÐAÍ^¡n"ŽÅÍ5É BFËt8dIöcÔ%ÌÂôå(xF‹s¿·¯oÏ‚ôVÙ¼Í^yœ}¨E|3$*ÉNÐÏ'£±‰Ü|Ò”‘{n¹äg¡‘bc 9ÓKââ9?çÓD¥—§/Ž®µƒ´>²Ø`O±*5˜‰úër—(ù²1f‚®q€©XƒvËŠ:ÂC¨ Þ’oÏÇ Î£C{ðl¢×N¦õaŽÖ5ÿÃÚ„Ú¼¬y–1ʺ,$J³öì‡ÍQÆ›µª=sÛî/É^ ÜȆdîðÎõøø¤÷¶ÍÃâ͵BŒ«tTµ‡Úp ¾åûÇ0 •mBc»ìS˜WŠ15—Ì1¸é",º¤Õñ>1ôºû,o>XÒS—4¬`sª"‹&ùŠλFRFl®:@–Ͳ䄈êˆôÈóYVG:#W?ý¦ŽŒS´M` u¾ÿþDì3Ê]öþ6X%FŽ N;,¯6ˆ¥Q«#8HźàhféýXýŽd(€ÍÓcÁÛ'Ñ—ÅìÎàâك’}Þ½B[5½J kj?( z?„Ëúîz1Ù#Gk’’ïüÝ¢Fð”Lö¶Î>6‹ª=É.yØÙ×¢bB ¯@F„‹¤{°ù`î^äæ ÊìÙ‚|…Ù«²z¢P"9Ù5—fóæ9º­‚X=½Ä6ýo 8ˆiG¦ÉäÃÂÖÛñ°ù`hnªîï¬N’·{i}›FÞ·¦ O±9hu;N'†E=?t“¨/óõÚš;ÆO¡<Їk}4=~Jм¾}¢[E`RÚ<Ź1o»mÎaVÎÏ¿Mòcø0B¯·õôÓåXìžU8Ž`qú´X*1„°S‚cÃ!Š8×’1jàùh;)9Øð‹þ’ÌžS _%Ä‹ú#VÂå —aŸ®Rúùilü«Ò'Ç(L…8RQJ]¤Õ‰m~"P¬(Òù°€%G'6õÖ7ó·*½eS±Í)!º4¤u§JY%HQ[Õó©I,¢£elê± ¤&‹›¿ùÍÇ\œòß÷ú|ö¨!U•}2ÉÔúZ©ˆbYÞ—Áxø± ÔÒôÏm‡úü0Ôèõ퉥¤¨Û}¶– ÿ&!ÔÎ n&úò?Spú0õnv2x;ýñÓ8V"Ï:ýj •åî~ìêkÚ¬n¼ž_$}o{G^ŸOfdtÜêòU:Žx~lþäd~Õë°E ÈkÆ5&3?Ÿìô]›#–e@–Ô;yÙ\ ¤Y<ýØT ¾‡Qž¡²ÀÓÁ'šf¡±m¶ýUúbEô:Õß—,ËREŸ‚³×yLT}ÅÝ]%Úî[ Te¦Ìníºú%¦úPü?¡ú õß—‡ˆkDy˜8DÈæXêðPÅàô˜Ã·®)ë)Ð/Ñf÷Ì%r“ûÛƒ5ä(þPEæy‰·ÑýnÏ…z™V]õ ùWC‚"ÂGïÆ(½Mø„¡ˆ ©tWÈ’âO,ÅWšN{y ÏvGšý(,¼Oyxq= 8l­©Õ4€ìû»Ï÷¯ÄQ¬lχxÞ?æuÕ¥A¡½Þ_>_(ÜA†âˆé$ÔPw?ÓÄn6UçèøÝÏ[T’1ÅËÉY4sît!á ÚØL…[%«4B‚ûÊ·Î…±E²á»´×rC‚¼ü“n¨øÜì‚'_òyË5h¹ô!ÍSÊûV¢w’¬Õˆ*(}EÒÙÜý£t—ѬÐìo˜ýØèc¡´«z¿ìôO?VZÙ*n¤¦ 3Mw?&}pq Ûì·¢éw¯NŸôZîv€:¸|àz=}¶µÃîÖëî%ÚÝX’Q0Ž|~FqÍÏÛÅPÓª^جJ½ÀÅð¤þ+Ö6—¿³¼+é‹a`¤éñXéçŒ|ÇéŸÓÁk;ð€ãfŸ¾*Ë~õ³â½X†UöžÕõ†tñ>…_£CÊ0òá146;;'ÛÀCX/XU7ál§3=kSºÕ8TÑ‘;賘¤ ü܃ԣj AÝÝ¥Jº3¢}îM\çbÚê«AÛtäÚ¤6ºfÇCÕìifäòiójQ繇:Ñaqlv·§õ†ÄhÏI0Fò¬:ÓsÕ‘ÖÞ‘ÔƒçÞØ­‹`OÀÁÎðç‚ëŠw]9ôTÁíìÆŠ%xX¶-Ë24¸qÖuš~Ø—JU®ÊêºmÁj¦!ôw“º¦%«ëQM¡ã€Ê@³V X¾Zb–„›ªÖ•íH`3%!¨s¾N%½š²³†ªÇ¹™£ÇùV'ßæ¬}˜²ô"lÀ\ól$ Y !…Œ«a0±Mâj´o\ ¦Ìèù†5¬µ ÂX*úü‹ÉÚÅ#¢”&™RI\Ey GE†X`ROg£Ý €æÜˆ1l„äg¬BÅïòÞ˜¼ª¶–‚xäjÒ¸®S¯sª){Ë‹{ª‘'Ö *Ó9-ý9hRÈß =áh8SÈ,óG'nD^åÑ"º dŒXÅÓ§=}ëé! ø]vY.¥=ñîß%aè¼ïn ¿õî]7lA³8•ªÈ ˆ¸@è°Zìvã_ê݈7ç2Vºx ªjTáû.‚NŽDœ’yƒ4†ZÂYXƒ”n§¿`Þ¡ˆ¡7äþeYÒmÚ¦ªÀ#ßP¡©RlD¢|‰QŽì–3H–ªJÃBeáÜc®ogËL6[l3Ýö.À s²-kŒNµ“Û7¹›žÇÓ{Žåx'»ù ¯-’)òÆÄB]uw®dDÿß§=YÖ(aº®ZسïêÑÅ,ìbw=zFBÚÜSfÅÎZ#H¡½9£©Ý;µîÕ3j^´!Å1FØÅ²?þýéd3þr&RQn½Å¡ÓlþφghUT"98óyïÓús¬g%ñíc)ñÝV7¿WmÑ»S¬§[}"ÛW1™ZL£ÚRõÆÃã°í1ŠÆ°ê֞͡*,hâ-uûß/åØD¿Süè9I šÚÕ€]« þ•‡!Ö¯#Ƕg¿vêß ·j ö&kQTn.ܪ5«˜V²…K°:Ÿ:>âÃ5x‚˜>JÝ­yóáßò1ÔÃYAÒ_å#6Ü ±‹ènv³ ù€AŠ_–ù0m¬ Y*ª9©ï²ñfËMQŸØcñ6ºçZ~t/³‡Ä¢¾%¾¹ižÐnRÓ-:Ø‚ ]E~Ö¿«îá5OS˜¶8)ïʶ‚h݃]›Þ;½ñÖ“³^ž>ÕÁZ„vØU|3íeæSäÖÅûw±.#,7ÖÃ1Ý*?ŠP3]–\íš{7d‘#5/U)Ø=eÝËÍš™b#]¦º6»1€1 £kžÝù@ºÜUuǤþèSØÿ6møb/*S¨{˜Ü>5[Ì»«ü³^O~k±p瓚:cFî*ÝŠ‹œG’o§H¿¾}k£Aƒñö#ãä§œh£˜Ýñè¹çœkŠ–‡ÆÉ¼u!œ&kO¦~ò"+·#û4^š,Ã'J}>=ÄQ¢T ˆ1ìä¿C¿WD”Œà¥í1ɧõÍ;g²ìäqgg”ÐÜè€Ks ¼MÞZc(£[ÖM! <¼}Œ\xˆºù ‡­‰ÁË’üØÕLåtG‡Xf¡rðò j½¦H‰*VäG¿§R”ÎQÔØÊ9 ëwkrŒ²|É05ˆ*îÊwãX¾¯bêÑ!Îç½›>gPyÂÚb­D‹tTJo‰)È•!«V”¨ûîæ/fr‰§7Éãѯ åç"B·>»­C0[k,öµÔšW‰wÕÉ÷ ®Ž‚|ºâ”\Ö´óñD¨¾MZ·æÑu÷(¸Zñ1*²¸w¡½—K¹š9ÞUC ‚­ €Ed ¡®.Sñ—4‚C *öB¤jbÐÚ Žð8îeχߢmÛ™IƒÒÐ 0>?w?3ú™Ý ZF]ƒ6%벬ƒ,+ã݃Ñ7ñ˜Øî*­Çá7Ûš#€×eôÞíùE&#¼ýÅÔŽ÷OfzR´T<C§?¿jûS Ü£ø?Ù þ‚ãë0¼>Ÿ>¨]æ;±d‰Îð©•1/†ÚÒÛ)jN¦S¿>ž‰ÕËf²/B„ÝAH7IaК×óíÛ±‡½+]„ÁÝnßÖö¿_Ÿ?¹ÝÙê¹Ü~ÜÆ¼jïžMß •›5ÄÇÿBHß×µÅ}íF8/‰ð…í2îœ(­ax6—%Û‹@Í)oŸ&QU|©1bñøCÃ¥Ñ×ÏFÌíÏ|ýØŸfƒ<š±6Ô¬©96\·Ù¤Ëd¿ŸsY‹”qhû‹p="Ðí'ãtXûL‰ÿ6hc&ù Å!úþYdCsÛûÓÿЊörüçEO`ªd7ŽŸe+’ýÅ:Ùä²–­Ž(ÿ-åеpü E’lÚë#ã‘>`_Ÿ¿H¿Ù|€XY©—qü]¶žÁoŸžëäCdâûŠº…žÅ*B ÙYÅ YŠ”7ž_d|bé×®Ûޛ㊋ÀJ%˜úδºËùÎqüSÇc#ž°yŠ'+ÉÒ×ûrÕëë‹á¼V9Ý´ýƒÊ8źç`i]e“géÝ>yŽíg/žÖVÍýéÃGËgVFŽvñ2ÛÍùmÕŸ/W0ÖÁ Wó©GzþV+­ˆ¶CùkˆRa LÛm¥$Yµ~¢L\3oÌö‰7]<Øvûuß*Ï×çËsÖH!ó|åúÄÆ·ÉæmM Ø~ÜÆ4‚·ïlwÍÏÛÏqRTþÑ÷‡ñÈ]õÖKûíª‡_â¶lîz&3~¡ k&WøªV{)„ºâøcÓ畱Î_ìö³\¼bÓÛ8ïx«øö£à›F0ò¨Bf·â°öÄ$k|ûi¤K^øéöå|•&ôþ˜F8¿ñ| XÆó«\oâõüX/g#¦¬tó¸·?V{+—gXVsýb¶_ÒÞšn?ÝþØðкwwU)ýK¶?¦ü-k`ŒÄ¸Æ•ƒ¹ÆIܬí¢AxŒ™˜KÒ—²· i]¨ÒƒâãÎÊðÇ<À›7 Ãè—¡ÙBÈ AÕcÒ­§øÁUW>¤Ë^- ‘«’m›‰$¼¡£Å@ÚUX’³Æ^ŸYÆš-e´mÈM0߯Ñð‰x‹´¡6nÀò»Àd–o#ÄðCmèõì3³âè]ìvöInP [&=»§åyhP/×">;˜<ÏËòxÌ·ù. ?[N7ÄÂþ6WùòöÈÊw2”VÏö9Ö%¤w’†»@â› ,LvŽXÄW5"ZÛ½™†ò"·jå¥ÂÞS\¼ŸG5ý`eÍ >ýEµ-Nž´œùþÀ©üöì³XU«=< òaàø«Îe=õ¤úŽMº .Øn É/¸`…¥ÆÆz-iV„רMµµ¥'ŠV«4[I·¾ÆèY÷Ô”,õ¾KBLèœe_²ËvúౌϢªU”‡N>&ö‰:Ç/MµföRc- à/B2¨‹/ÉalüÀÔ°„2 R*F}8b‘f‚Ý0¥>~`Åzç9ܪ=ãëŠÃŒB•½½DEî +ÃF‡ÝLýy±äŽÕž 3wU#[U?”óQû&ت]é× Þ–ÔÉ^j¢Î&<9Œ:€”u†¬¿¼}ç„¡¢ØØÐ}’û·´¶/oÏÜgr7í}36îPˆ»–lºnÌËMM”pE•9M°€ñ‰ Þ ODŽÞúÎÀ³Òddv4A¡±{«3^Ïž%½=½°WEÁ_ß·Ÿ½ÞzV?9aÚÑ}»‘bµ p<Á\ ;¼üèÇwL=kKvfiÜ*x_Œ¢m˯‚Së·~j@ÈÉ]]ŽFµ‘'EtÐz/^_ÞÆy5>P­A4 K 2µ—%Þ¨F»¤¢nw(G|+Ô¸øV¢ù*çÃñY%ÆKÊ‘+E™i'á߿鄦L±LÅŠºFÌ»wöùÒm2ýRÓ`­AvÀDUϱ5ýióg°‰t0ˆEQ´_ÃÕ’@¾¡z>«*{yøÂ…ŸžHÊÂÞÓiÆ~6MÛ IžMÝÝŠ¦ñW”ŠBL¥ô7O'D¯k¾¡­ô>\ìcÞ?ÿßÿõßþɯ#©ùÚm•XwÖïÎIq u£ƒþ›Š$†zÿ}ZôÒl½4o,?¿5‘ˆ+¢ †¾¯éûº&pqòàïÿíåmžwãõm^u2gZ­ó0ƒá÷_Z†k„7¨Rk­!£¥é÷ÂÀl!®€­“à'ù*Íÿ½òû‡¯‘òδcï~ÿ÷NŒ—È¡žùÙÿF‚\\0³üG$JECÏZŽBšw[ë÷k¿›–æŸ'Ÿ<e™k·,UïóÇû_EÐ5‹k„—¢hüÍ5¯=o%>øûIÖµn¶öÏó¼*™ñð}:/Ñð<ذöŸÃ€Hž¸ÿ Ų  Ú_ Ö¤ÐÝtž¶Ç6yn*ÈâïGõµ(y{¶5²k²¾ÿçûŸ5ß©\ìKoÚ?tD“õ IÚRL~3ó۬\3"é®j’݇¬x¿;¯¬†…¢¡¾7ì!VV ¡/í÷dE•¿ëj–¤ÛþÁ,Åê<¶Ö:Ÿªû  U¼Iðœ^m½4€Ø®?ßÿó}ÌeqDÈ ¥‹­ñû`;ø{Éýñ[¤ÃòÉLÞÉ5å%‹û»¦ý=ð Ð_ÕÖCtVýñþÓÆvHâçWá0Ðc é±–¢!0‹–ûç$RLËãRMÍ¢ÿÁvËoù#°AÌ!DZžã¦}ðBz 7Íç+Ïz^¤ Á ¿™8ZÒûÚÇ$;vôj’^çØŽb3šˆbÖÔÛ­xk¿+õIƒiÔ&y¬"÷9 ½ü›µj5A±NNºãiZG\v\'ûw|hôp¸F:{©Ëû‡Ía0`)7H}•V.l›¢TNiž=¥xi÷§IùÕBß ×]ëÊuK^ˆ.ÝþÞN·ÿ>Yùz‡Ögú§aX \%9Õ¡ûN÷‘•IËù[ÿÚP%F¶ƒÿz,–ºL?ŸSß`yNv2túÍ´ÓÙ¨)ô-Ú¾HÛ#ùÃxXé­dÓÞKç0§kwi›]lLê‹}>I;µfÚ>i4î¦í‘ö2rß[´= þ‹b_ÔÞCë)ë™8ÂçZW–9@ÊåÚ(Þó°ÏgÜ#õäpn­%Š$YÛ.fù[ö¿‘ü—aU1mOíÝÚ~h-o¥qž ÿ}úºèß]›·ö|TF*LuýM¹óºÃÛ´QÇ–ùb1 Y”‰ßÇ|tå jM®Ó/­ÛµŠ½uÔÚçW¶õ®ª¦éóçYãó÷%Ÿñ=ê(>@+ƒÀ¿Oi‰MÓÊ®m7 ê¾Ù‰°²¶TWù“Þ“­Ïa¡çJ ý‰Ôîí½Åú¦ì'êHv˜È~bd…µt¸êPsšmm¨ö´µO¥MHl詉œ†Z³ÑQì?ŒÜ-,ïïî÷ö^ÛXºòïX".ìM'Û Ôµwájᔫ~ᢔõê¦5êÊUè+~“œ)óAû½­ú¦Ìæ¹r$rØcS•AMÔçC:ѦÙ2wa]Š|~ųC)·¡é·ýZëœFõ¿×éwxøƒñÚTªÅrf.©ëíÆ@k44 º©cK²- cƒM§ø0cÁ[¯šö¯¼éSdøÍ}ߢ‚ÐT¶/v9pnz’nA=¨l®‹ä5«”hvëm5ímë¬ÏÏìkZåŸÏ¦{Þ{Æß”wÑ7t%q¸œ‚™g )ÜÇ®lâ%Ñæ(wu"uµ;‚†f &§Ë¡öÎÚ%—E·áÃ=ý澫…ÜÚ—¾´^Ü—5LGwÓÍt:¡[6‹%ÙÂui®Ã;?_¥ó«’Òì|ÿ­Ú’ôØsD»þá¾ÿ£¦ò´$‡jbã6ª›ø[Ÿ%&©mV£@Îcž=kXÓ&áó4 š*ØÖäZm"l‰ë[|ûÄÞCC”|I®¥÷M¯sÂÞÓ=(Ùy® ÊÒ/»0e|=4Œ›‘ )œµÿ뎌Nç5+¢‰ûÂJET@Q6ÕMà’Ø5¢Xp`~ÞOŸŠÕ{V{X*‘Däüª÷¾ÙwõüPmh+&©"Nñ ñÔËY³«ŸŽ©ÞPÕ#4ÊI¥-ÚctÞÛç)×d¾Sñض^¦çïˆhÛ°jë„ü]j¿+Ï:¨Â¹4µ?`štß`»–4Y Ãùoô dƒÔ’vˆƒ±‘èçyg å¹PÞI{UUîÿM1’®j(啬{Ó22©IþEyÁ¿7{ª 湯Å&OKÞ·Ïáf´öÇòÞ¤ØÙjø…¥uqÒ£ïJïtÍ´ºþUCš°,Rû´¯]Z±ªl„YíV sYnÉשnÝDø¨rK5~î«8¾‘™ž‰Ï¢uÑ9Ôæ¬3iÛç‡þra9¬—ç$†Öó–X*i}Þ’®•i§?ËõTFGšê9„ºmÝ”9£Ý¤{¯L%åæÊe×ûB» 2p‡_ÉLº2ÙÍ3÷C±š*#Ti\+3Iòvf˜°Æý.W%Eø¯2”Û`T™|Ëô'ÿ|òÊJWOxòJKØé“Ýú®ü“\ ú(T®—ôOï&ßIúb¸¼ïö¨¤q†q5l»/,¹kš ïCÑ}êÕïCܯ?ßÿAL—R£_¬¬²b£JkÆ×ô¹rUuªrÉÖC­¥*“fø|ºrÎÂŒYNZþŽù–²:~Ÿô—þ°øŽ•Úú×JlW.S9aCøËÚ?_žíQkuÞëžÊ•®ÐøMÿ4U–´Ð›•¨ìú~)÷w韵¹Aü=ïë°x· eW†ùEr績¥rØšjÝ*·%X¬ó_*Mž+~Ê]6['å:¥ŸZQî²)3ÁJXzØC¬—ìÛ|ï·}ßþ.5-U‰Ge7Ó´ýcw“CÊ=wÍUw}‚vÃêó“3X­ò>ÔŸQ-kª¹ˆÊôŽ\þðšF¢üg± »}gw—ìgª¶^²·ÝsùS­®\¿øa/ÿ'7GBt¯ì&ݯ}Gå°Ù dõ0*—ߤÿÓøyåÞYiuý>MžÝy1dOYéªÔ^öXö L[oõÚ®{üü̆ÆuÒ@•ïºdóc]„žžŽl°ÚÉɰþé`ö6w[CŸ)qG~ ö•C@Eìö®ç Î)egz߸7\ïÇMr?©Ç3ý©/®‡é!G^Z|Z|Ý•¿–Äÿ]ýÁÊÿ(?'lÛ{TÊñVrÿ»e“{ø?Ûuô‡äÏgÏ_rmuæG;׿ï°óáßW²Ôf¤Ñ¬p`õ¾%ÞU"Е_ÌÿX7ž°#…u#šÿpÅWh—×Zz§h"C±xŸ•?²Ï~>üµÿ€ü£?]LÈʯe'.“ž€^EZÖ±<°[©¹^IâšiŽõQ>'ËO7¥ËSöüP…å3þ\þ«ìRr½ß”òüXmÂò_aÐ “G¦-éýîùÎüŒ”­ì”âqá Þ½§žÞ%Ÿ¤©ü"S*âic+aËÇ•“—R‰ýÎa‹**’”s¤¿OhNq÷ƒ‹HubMüÃ:ݲÿe w‘ »V¬>—-Ÿ\ºº.i_ä—®­b"וkù9€È­õïƒ~Ó2lžÇÑ[úíϱS¤‹È½²Ý´ÈtCÒc ý‚÷w²€ž5$ÊÖ‰ëîŸÇÔnX1|?â3Çp8¬>ÿ{÷ÍýŸT ©S)ÿ“Ô÷XËÏŸìRk¹ç1§ò[ø<òGÓ0µøþóû±nú÷N2(Qûß°ÿƒ‰1#<û?x¿ê•¿êøòúP‚¯]ØN±Õ«ž5è€âót•À=Œr1{–5'²:¢ùÏåJ~5ƒ—kè ŠÈ._`”»aŒ!ïÀ$wGÕb¸æûã;óþ˜¼“?kúK¼oú¾}ü3ÿØäÇ~ñ>l[s?'ñGX·dòÛYi”¿$¶ÄZù¸É€ªånû=iÏp¤¿& 1¸ûŽ|'óÏ•F:û_(É‚†Ÿý*Ü8+Sü&½ ΧšÏõÖèçiŸÇyÔ©juÕ`õ,7Hkp_×}~Й2‘¯ÍîÿÎNúœ“ªÐp9Ý!þËpG~­i>²·Âæ—m}x”GŸœO<ç Ë[ôÏ`}”p$bgÛj9›ò?˜÷ÉjZÔ>¹8N-g\ BvnÐe}žŽþžx8¬óà÷÷;°³Ð”×jû?Øy•¿>Ø y6ýß]ß«£b0ÏÅûàú*É>è|Éמì\ß‘÷ÿ“4³{Êÿá|D8ÍÍ^UÀ£Ì¿a¢ð«ækØ·çõú¼ü%ú'ü¾fë©)Ñ·à ÑLÞ4±Jÿó>bÝ]Ÿ÷¤‰Óô=ðÀ¢çÒ:‹Âì8†«?š¾È_ø61ËÞ°ÿ…®œ™û"¯A[”ç&ù¦ÿÀ‚éòœ~ZÙAë1¹.Å>Ÿ›þò~¾/i­>‹ÎŒ°µ8ܱÿlOÂ0qÕ{ÙòšÛGú;G¾J±N¬ATO»ò÷g]¦Önúàç¥&±óø>Å_“y/¬?ÔK¿«È}¦`®IT½}+ãÙœ/bMŠ+Ã`}=ÖÒïâIÃç/Œ,}¶â|–ôY½¥Þ2ˆ`n‹|i4˜Üí+îó…@‚%N\v>y›½˜ÄƒCRþÓ$§U“Ñz/®o©wA>‘GÎ?b(¯YyM¬Ñs¥–í/ö/[/׉ë•ü¾èßåvÅ ¹ÚyŠHîú÷;ôÏX’é:Øÿ%ýA€-öKöwLÉ·á9²ç\û}°Ï¶Îs¸ÿÿ©´Ox™oîfDR¶?3ÎÍК™(»aí|ЂǘŽ!٨ʡa¦!ÓT® 3¾ù\aLmÑß¼ØèŸ:Œ¿ŸwÃ$ôM¿LÒÀ±kªê)ÀKÚÈ2ÖS¸v?²Ñªû©cô8Ä4_Þ[¼ôžÖã%\NÕ0¼;ôÏÑ`Ò_Ľé™êýS÷bKÎÅ*š‹ëRóQïLû÷óø¼zˆjê™k-¿êœÃ`³©c^r¿¤§—ËqÊ’ûnr¾Lî‹ÿ{’Þ¿ä|óóªÃ& ¨ÇŠë¥Îç}À |wÿÙxC¿ÓûWðg¿uZ5òj=äg¶í~h—ßévaJï\ø{Å]ƒ@~|ÿ==‹šýÛŠõ=aݵ–]x =^Ü®æA=ÅaØÏ¼-1 ¨ÂyPï"ÎZí? ›XðÛ¾÷&ÆYg¿ºöË/I¦= 2íÀ6ù.]zÜû‹²â€í¸s³»ó¡Kþ‡÷!ïœ>ÞßïÊ?ë9æ×ËïOŠ{UŸ °±–>R¹¨—­‹üþ韇_œ§é§AG’ëï“ò>†‘þs½Oö0qZqyÎݾ¹<»;ª9õ™NãèvD'?º…dŠå‡UŠaΑOX ð:ñ }gßÕûBá ¤zK³µôôòÏŽ§ZzÞìëu;S‰€y´íï1ws[G=™5íÀ¸GïO×3Õû)Ú|Öó¤G8^ù)Þíº7Ozhÿ]Oå¿ê1ú³K&ü¹Yze™Ü7ù‹òÏ-Þ-Éõ>=ê_/ù›Ýã«¢ï³x­Ê*uÝ´õ–^ÝÕ™?€W¯.óÝÈ׫Ÿe©þ"õu‘‚ù~ùŸKx¥ä7euÑKgïóugÊÞÇUõïIòuG½‹üÝâ­"ÊÄÝ<ŸO…h[ZgMÑeü—Xqz³êUŽ«¯U/ÝÕü “ ôž^iÎV@¾³pÿ''ú ß)¬†‹ùÉìùN䟻á Iñ8¸nZK¯wà ±^ µü(¯'ä›öÿØÉ¡|¼üÎIƒ…üêY°k…ùí§ZIa²Ç[Uù›ì~N.ª\v9óû…,„stû=ùþ+ÿž•ïäç¹ü½òÏüþ¸òýúûåùþcò4|ëç<§á Y_(\¯»â-æ÷†~q ý]²ô!ô ×Éã[6&`-üæ  §>üPQ²=âaNˆÂÚò¬‡TÍ“º§ÞÕ%ßÓë]ÌÿWák!ψ»x“UßúK=‹<—ÙÛíñ÷SkQcLöË`¯zWÑßß“o á‚< çf~~6}ˆýB>"Wë'²ø7w³§ƒRM#]´ßöy³ôëð}—½Cò‹ýÝ<ßâ}u0üŦE(_©|7Úœ¸[]ÆÉõÉÞ<. õ\Úò¸Kô­°'mÚz¨þ{¾¿X?¦‘¬°¾ÛÉ$º»éoôwmëºìE²ü³€ XW¯÷²ÿÒpxdv±Î$ζ¾§zª^U-î]CõXÏ/ÕSzsî ñˆk™ÖYõ`ë»î^/.þ÷¼~^‹ç»õ‹ÜQïšWþò‹ë¤|ÚUŸJòoùÌíC8~_ù¹¼,ß3ÙÆ MÛ⬢ú˜òÑ“496ÅáýO–e4æÛ4OÕYóß›í_×8iÜ$2X\k¿Ô‹éoãûáoΦúõ¿Ö÷àM^U¸Wéÿã(Ô«¿Ñëµ.ï}oç!{·ç÷;ûàóöÏóEâl×GÌ÷kÃ-õ^äq:ýAÕ{±=»ÿ2áXÐ>lÓ÷Cö@ùÎIÇ™õ^·Uø‰¾ÍÕ{/üòÛÝü»;ä¿+_ÏÆÞ¬AX‹ñkfÕ¯ýT>?Ó׋kÕ'™¹n.ÿZ+o1›êa–‡ûsýCý˜Åà ÿ¿imúeøè¶åþ>«¹ÿvûT<^¤óÃàû ¤´çªÂ å›ð&… ƒ¢Ÿ!¼ÏÒ:%Óçø=kZ<[4qvY¿>õ¿†KÎø¼pÒf_ÖðzðÐÔíþ ¯÷Ýý—?ٶȆ°.ºÕ¹’²üuÅ·˜Ò]eœ;© ï.<â‡Õ,~½gåap?ÐÚÓMý¥3KÿWãј,T°¾âõÄ·%{½eK¾Í /{!t’ ÷§_øåÙ–çÝšê÷ðö´!ý¼…3‡¾ÎZ›ÿ¾üß›ûÿØÿiýCUÌËô÷«}õ/Q\Ùߟ.÷Ÿ#ó*wåè/×bxUÖ{a®<3Òõêïl@ }pÿ¿W®§Û‹TiO ïC`Gõý¶zN-ñ’ßÏ?P?'Õ‹¨/ åUõÙUåÝgðÄ󇶭Íÿ‘ü/ØéÙðZšñLyþï÷í&¼ƒòÌ"@Uþ‡ñi÷b>ðžõz<óšówÊ‹6Ï{.ùCã–ø ޡţ”ÿNòI®©/4|܇.ÿt.«/b­xwûçMþ…?µä_ù‰^Å!iù£?×ÿÆ+ÄxJýí6%Èô·˜e¶ñ|q=4^¤Ùš>²ã{Š^ü/´>´ëûÛ=ú‡Šþ"ñbÐ'Ô7ÃJŒkÕ¹:G©b¿Ëµ.\×K? á ¥¿8Ñk÷gG{ä+îÀû Õ©¨?!ïMk“_öOCÿ[>gxÝÅôÏPÞ[_ê†w¸üQÕ½ªë³=Y÷*÷Ä_‹ì²ÍÜÏŲH9å½°ª:‡“X194­Ëóä¹ Zµ†}xx$v¾sZ#¶1õOóSï¨7&ùùµ™ß_ä×'ÏÀïÏÖÇJ=¿ÿ¶ÊëLß×&P¶¿_òû g5Gt G'ä°KnÙ˜ 9em›ŸÒ9@ k‹»ŠòjÆ“¹ÇNcèÆç‘GZ^/nìOÂZyÿF€õÐ=yL —ÄÉsÿ„ó©nG‡p Wg®Çå~ÎÁïÅP½rzhêû–Ça[¸ŠyK½ËìlÕTLÚYð˜¨mÍò ƒ8Îáv_P 'þ6äMë2?sÑî±}áúüþií9ú<òеÝÓßÅ¡)Ç/Yšo&¿çø-kzœJ@—¥WdG!߸ÐÝ×ú|q\øÝÖð’ª~i¿§­ÁW·Œ'ŠóI?/?iwŒïS]`‹×t§›pn•CLeŸÖÈ“9¯ ×ã.eW+á:h¿Qž¿rD×¼•dÉékœGõ¸«øßÿÁoøæþ7NC®Jç|q ~¾áv¶ÑüËú­é`î8lMþBϳ5‡ .ù›ïþ!?’é¾o]c´¾§ÅqQ×Péú¬¥Ñ‰[ÏÇÐÌlà8\PåzÉsÖZ®èô-?²ª¿·ªZZÓ¾‰Òm+E¶¦¨Éõd®d2yvWò’©nµØaÝu?þ~_¶«~ݹªÛ\Û~¥$!8G^j6ˆÿ¢M…ÇR=eó.[„º„ð %8,…°šJNWTÌ\W-Oa1JP5™ú_„„cý¡dñ½ýŸÔÓU•_?&ÊĹ@z–èõçnvI–§éšEØ?–ü©K`¸9¥™0w_µä£úWí{†àpQâ|ÓäCˆ@…ê.O3*´Y}ˆ–¨<çE5ÉÒ(×>„ˆ#BËc(çHÖÇP.PAÌ­ß”ûÌžQŒ¹Pk{fÎTM‚š¨'‡ÔN>Öl µZ¶Fªëmkû¼ ²!VÍYãhúM­›P;Ê}7½?$§Åõ<ì|ñ|޹tÅZŸe˜\ ’»‡þ}¹ âß'×ûú¾{ZÕWÕ1ýç  '- Aþ…úÍÔ(×ÝJëšnV‡ëQ})¼lé¿ÃKc™­!ô¬ï¢òÜ&ÿè5Pj›FõJê¶Fy-Nebò>} êÂç5¨çfuJ¦ ø}×}jzÞ=CÐ2¡\’Ç/­›¨Ë²É+SÝÞ"‘‰ÉÊ´=mº‚”g†È¤zżZ ÖtjJ¥j=D¾jRå}LËuémKùŠ yÔM/ yµÀj %!õ>o¥r¾=ýýV)j¢"ý¦Þge“I„,‹6ñ]ÊÂŒò’¢‡O*6.gç’ªs1x㙼Z¬à›·-áÎý‰êþ»z_3M|)=7õö5|%‰™’€ÌŽí>…÷fl§ªÒðÈ™‰#5ÙâÚ(}X»ÆúêrPÁZÃ(œs÷qHJ ¨w’ã–’ÙR¡y*A\\g[£¥s9ô?3TΊçÌŽÙ™{â-B*,ãóÅuÓ=°–Þ"å6ˆÎÖÈœ2ÝŸ¯Òë6Â(Kj¹â5ùÕã5Q¦àyÏ­]ÿqÿ\(øgê ø­pm-ìÃÿ]©q'¡ãFv·pFÿ^%/Q6Œì%­Á‘>à üþÎÔÏMTn„Hq®»SxÒ¯±qT>\qZ|Kj°-=ïW]và¢ð±Ïç‹Ú­óû’SxVÙ{ VY°k¨DÊqgÒÓÒÛ™IŽ s*¼-ù/î!u…uµûRå÷Øø´Æxåá÷¨…õ›(5K ¤ppˆ?RgÕãÓEîR4x‰©²º=~b‰„Ó>;XâóSÿÉÿÛjNöŸç{˜Èá0¦:XW/!3¿Ó™P K_Êïø(–ΑU“ޱfîç t"+•?b‰‘Û ýÇѲ¹2+Yiì§u[rë­ ÑödwRÆIÍzK¦ë’˜µýóа7ç’"ñ£m’? wú¦¢×É%RV±Vñ¦¨)¾V+öTe¨ª“T’)òDEÚÁf)ü»<ßÂi'\ScŠ2¹ÿo‰¸5– ÉA²I€½Òä¸4œg=’ß(uÈÙ­±¨¥±j…µ,VÛ>ñÍ$"i˜Ï¼Ç Ó¹ñcÈz²ªÄ^s%"Ÿ:lÈ @ê°¨3[Dª’ëâÿÞùù²móË"ðÉaIÄšßSìiŒ„ÅâKŽüÓf@©8õ“±jºÁ•±£êÓ íždÆ/èk“½‰X¸d߇ŒáÜŸšs¿«å¹k0¼@vË4”ƒè¨!„Šÿ^UÜÌþï"­±óØ’ÿá$[lÖÅ÷ _C£ûýùs ȹŸÜ_i@‚Z©¡¦k´$¶MãËȺÌÊØÊÂk uq§Œ«eÌEú´,ÃyG±‡ —áM~BÞŒ½ý߭Ƀ´Q{±3 $£bò¼@2Û‹?ÚpÖϧâѺIÿì®ý®Vl»»­­Ø£ usy‡¸|ˆÉ&hœíjò=u~Ò_›1©Á®*N̘}WÿYä&ô5ôMµ¥ÐçÍä·›¾ÇTkJá:?YxÍÉ&8àÒÿ]A7ýoÆmãßÑÄÚ·R~tM6×’g‘Õ>éÿ¢Œý| LîfÅP õëÛÿ]3:Gz P-*vÖ{ŠªØŒmMfƒ!wæ/@ž«ç—ËûTqø}Ø\O—o?´ ÷‰ ¼l U/væOãÓ¿¯ÿé!•‡þGf`ÏPC­Çò>äaígÿf9¨nó‹ˆ!Ù~²äÝ‹§Ì§›2Þö>‹·C¤Bð°Gw£š*ÇPf þšH>²ƒ5 ¼iŸ‡E°$Qé\« ­OÙçy™ú6–œX_Kí3|„UÆ!¦IIîåTêšÍÊ4¾Ö’þ5ÍZk¨¹•]´Æm[ë%Þw½Š9¤‘ñÖIÐó^¬'›79» ÕÅ)üˆœãmHöyìöLV˜t«Œ Ò¬¯Nïë»»´s³!ð¨Oj¼tx\*­ÔoõL—þ%kZ׳t;¥â&Âͪÿ˜5¸§Ô_ñ_2íßµ–µuoÞ(×èí‹ÒOûíÑÀ°ú¢yGj±,ô6P°2õ}û&¨E¥Ú$4e˜öçhM£"…ÁâZÚ¨1ÑK8}DLR4°|”ÀT4‘¼¾ JLä?œ'+?²oXZ/È+[T ½éÝ$ƒ &ÙI­Ž,è–S{(1ˆuöy´ì«eMÚ¿ê~\#'›Ý—{¼fM EY^ïWýÞ¼ù*|E7ïñ©¾A]¤öu_–¼£âònÑ‚îG¾ãc‹Ö÷óO¸i)ÿÇ|FINϯò¢ÕdÑ’6ÐF píùXäÒpÊiB°ñ}×ÖOfoÐþ*p ™Lí¿µ”¯™È”úd ô]Ö ŠõÌO§‘²ñª[øNËlÖ¬^ïO¾ÃwmoAÄ_ò²á{™öî"„öÛ‹ ¹ÔæNX©ÆX+V'{v߇ìñp‚¹žKß5Àp“ô¥ªj)߇Õ«Ž“É]h¡ê@¯¡XË|{³®6€ˆŸŸÐH»¹5ž^íOZ¯{²¯BK¥! 5_`€µ¡uš¡IR—õ²U5]Ue¡eRy >±Ï_ƒcìöXÕŽA'nÃßíû¾ÿvç€oš•Áuqß·­/óáë+w#tE+žËñ™b,Ã\¬ÁpßÞÏøØ ý]ùo"ô¾|Ïæ„Üjðt'ÔÕÐãì± ÖMkYëNµ”/´RWu¥O'´$ ¿ïß_Ìèä!Q¡zCsŠU%Rïfqj3×ËÖöyJè"0¥âkÖõl0Ë-UOÕ˲{TŸêrôÞ3oPÍÊ~O_È»m@ójÊŽ›¶¿þÞQž]òŽî@;Bþ·yÈÍt­åmv¡.û>•+ZŽn$ÓQõ\Ì þ}ŸOï¹f¬\Ýåžbl@U®RÞ˜Sæ3Ð}ØkÕbsäý«^­9Y)!ý; àí'û{ H¹T&‘²øïÐÿt˰?Ê=o ¾ß޶Ûò&|€kbÑÕ•û”}6`o‘w´ V…sâ9DëûnííhFpƒÜ|·èŽ ©úÅô‡P ÝsËÖÖ·Ö3Éûª\€ã²×Ë Ðð:ò'ùù®þW®¡p?4Pƒ «Û¢/u˜ É>P¹èâ@k Øh\o¬ï¾ñ£u¬àûºà@tWÓM¹g# P ôKÑìþi<Áy–ë®B¸ÿ%×Ï\ ãZŸW5nVå6–ùKSþÔ˜75Ú¬"tã°2‹ðªQÕ²šg#äßÀµÜs÷µ€ðB}­¦\µûŸJZÚm ÿb­O ŠßÜÿLÂê½Õ'A×L¨ºúÈ2£z½¢öobªNñ:Å‹éÁW6^ÌbÛùóñ÷FþÇyã\ßÓg&pò"¿µú̆’ *•€_N©eëãËζ~ï¬ãë|¢ã¨¾®*Õç#ª2×å“ùú®ù%/Á¾ÅÀ¾EàôyñGØÝÁ¿]üÞVœ^â·w>(5lÖJ ¤¦¿¿øç¦Àôóžà—Y·%¯²žêöùj$¦úöä5'ˆ?k'«Ç#ÕY”lHr½VU1V8ô}íðQÊêK)*þc]”\Ò¼°$àeîDKlâØnë)˜•æ©&‚PI»âk&»|žyªJÜ6?^©û² üRÉ»Jõ-uÝ4ÏÄyC«Ö¼Ø_‡ø º%ƒªÜ›bêÒP ;ûœ½"0t¹tJ>Aã?ÿ¸H`uñÑoî'ÖrgàWHÞÅ_#ùáZÍLAùŸ¶nâ9N¾ø*í›øm¶J)ÛøîJ^—'{ÌÝ\îþ˜þ1(ƒ¥þ‡'wŠúšÖ#ù9¤þÛÕü¡tÄ=üf‹¨ã¹ý⺉‡x\Í3ý¹yFÉÍGsú†±öfû¼é+֔ؼ3lžøKïH?ÐLƯ²‹š‘<|2wt9¿ŠCK¼_~m¹“ÕÓDV¸½T3~Í«T),äºEÿ«¹†üò ¿6ù€û«d 1Éä—÷Áç[)yhãFu_všo¢¬¸:ÏÍ®–«yä–>?•jkòÒ—ìc»J_ MO÷X¸»}Ý•Ü\Þ×Z¥¸Â†ËÎϸ« 6â÷?±Uo6õªXRrz¡7Ñpñ@‹”Ÿ@3ЗIDD¢\3íÃç(¦uP3óø·TT‰qå¼mn5YîõlGi¹O]<œV¤µ¢£üÈGÑEëô·¦Êæ*kº¬žf°&³äû?ÚSܰÕ¾šü [@ײ‹MM®pÊ9TÅå{Ëʶ¿K|öÕ×SM~Å› ¶ü(kB£ÁâþûyuÛÿ{оE<çÉÒÎ[ ×Hùm4ÛN*’ Oë$P­ˆJ=¯²ËúKšg=Š`SßwK³MÍ$ØSoÙ—à¦i¥R:¦ãyr6½¯Z&e.ËxÊ·œ–à‡UhäµQ×Tb×Äl7Í1Xœf_PϬ¹#Éõ:11ôø–?ªrŠš+xNÅôzQzó’]iþ}„öÚ|Õ[šÌ¤Ç[3½Oþzç-Ðà9ú3Ãü›ªÏÏË¿—¿ÓÝNxü{ññÿ}·5ïMþ”.ÿùûh~Iïîõˆïl@=ãG÷7Q>YõÁë1ä¿EþÌå!ý|¥û7»DáoÞ3Gþxñt¾Òý£<ÍDÕ: ¬à|ôH¯U· «Š·ÆòÖìJ°ƒçø}žXÌó_¼7žï©ëdA…ɧø½_<6æßkœ'ââ‡ë*÷6ÿ|’ÿºOŽéfK'ZôÄëßMw6•c§ñ™MUþ%=9ÿ–¾ã9½YÅ u¥?‹¾ù:K¯ybã£ßð]ù—×XcñÚôö ÍOò{œ7Kñ%ÓRWü¥ònöü•Ó‹C?‹ù©ÓÖ;sŸöóšÜìÖŒt~OüÑ]àž>OŽ(öX(ÝϹ8œ'ÌÏ·åüë²Ûmª<ÙtŸïÐÿÖ„+»ÛÔ„ Œ’Ò÷´ûÄ0)Ÿ³”ÿéž"”ëêóNºš——™?šþYºEÿ Àß×ücspUOÍr^'|ÁôóÐ|WBŸê y¿B´¡üÅœ>oOÐóùÑoø~¼K??{¾]1X7WÉ딟ò›Ê/ ÷û ݯü„¾¯úz©ü[®rX¢=¸nbåÅjóp˜­\Ð|A•åWÊÐÙ83­gzÌ£å÷©Ùi;Ÿ´Í³}€õï Âÿr¯òýœ?ÊAòÛ«“ÕT±ïéSùçÂÚÊ^ÞMû) E ¸BsÆz•;ïÉ7[w:˵Ý俪œÛªÏuõrnŸzu°gV+@õ¹n[|¤Î?T/@ŒÏ…#?é]¼Š&¯s;Ø“ü:¯|§šè—Å!„Cî¯V/ƒ;lÿwÙ×îŸOò¯šÃ#–àšu¿«ÿÕj„ž6ç3.‚ƒ(¿Öijսy¯kžj_ÆnóMºå×Yî­\«É»1ÀaG‰x»ÿû‡fÑïæû—VÏ;¨Gç/ùyk2—>©déay××Såßíåà)’ùÿÕø‹ ~À‹Ûï,÷‡Ap2ó±püœóÓ;4ÿ=¸Yó´§Ï³šì© १¸Ö[ð‡›àUpÀdsÜÈÿ_Nf3¥ÿûå¿ ¬iåß¿åŸíþ Ëá&ÿÛ×YÍöéùŸd°ÖCͳx.»ëû"xÎðV¯"xê1+9üÇ쯨ΪñDú<úêäP2ÌDÜ£ÿ·ò:Éæg ‡ñh êj}\ÞüÝM¿ø¼7õÈ<Ù‹¥<›Õ³qñ›òÕŠßúøÜâã;øì³µ¦øþ—ýìÏkŽáôzùdä}»üóþx«Ëœ\çA°³ÃO&Uçñ±^ú]¸Ã•7Vüµ'²2ÜoÁ†ê³Ûô·Á7‹ÃÛ¬Õ×>?{«ï"|¦ªG@ŸG<&·è¸mѼŒ.¸­Zw{uÞ\ÕWz³y gM{1uÿÈ&ûœW—ó˜šÁÙ`ó˜Ú’=¨wý™×&¼'y½w=ëoúe½·›=ØVßuxç]-ÁÊ¿W}¾2oE:Îìë­zï=úŸ<¥Ö ôÅ5ôû0{UEØšÇå_Šgwfkµêÿé~ðâçaþâäMÇ6|ÊÔ}óxøÿg©õ<;Ü õÀ}µæ’”ñ¬ûûÙòÔŽ¨†øK«×rr³*ý´½’ë>ý¹üS²zˆ¾ÄO/þôä­YÈ—M'±±yòÓý£A\ßÅŠÏ3¾šÎCmóܼÕ¬Iñ×=s„E>²²òWÈÿTÕ‹ã{†â+íßHNn`ó”,óøW¸f¶ ûç»ô½ñL'Åé.ý3|C©¶ÿYùƒìðf ‡ç4‡¹[ÿ¾Õ. üâÅÏ«ùŠ+smçYi/z¿Iÿ¨Gšfk¸þªÇ’¥FøË÷Lou48ôT¼[ÝßïÊÏY+^Fîg­¥yY Ý4?^ó“ÏQø{Þc¥‡7yŽee'&jfù,I,ƒúÜäÚÕ¸²{®Ìœ.^Mà®tO“ ô~,³gÓûIz?¹ÞO"å±oslÕ´TgU‰C éÏ=zGyÌNw^0Î->÷B¤(}º‚íoËKø½¸Ú`Ø{϶Ý&p Ý­5ôPŸwñy %?ÞZÜm}µ¸ Çðhjìz!ë½jêÊž×$®¡x^¨zh:¿±é¹[(Z%iæ÷p]ÎÚDkÌyjNžXYX,uùb¥ƒT¼©±UJK5ùÀsd[’|5Å™Eu7ì"­d¯»$âNJqœO¢Þ+פ÷+ÞD—8Йkµ…Uÿ¼òü‰óð}Âi¡)xr} Γd~ç÷׬z;Ö˜“R““ñqPz)W5µì—bõQ’D%®ì’/ZŠQn éß_¶“ÿi.K5’×?Ï;Ûþ6›ãÙˆ+Âúªbî#ÖÞ&ù(Nb\·ö·®äXW§¨I•椨.Ù×È ¿»ÿ¸¨½4Èë®u^¶_hÂÞÓI¶TGñ96$ÕÊ\Wí·ììÒWhëZýýðÿP·ûæþg¶Í!¹åÑ7åšû•@ž·¯óx:ŸL ×"‘cm»s5˜¾hNâo’lÙýúà7|wÿ™+ÅÈ9IÒ·(Ï»þ¼Úì°¾öŸ¿×æÒr=$OÙ÷q]œôsçJÿÿ™{“d×r\ pž«ˆ%°oöwÿÓ¼áÑL}3Åc•Õ,‘jÞ Šw‹ÅbL ûíNßçK¬óƒhòE¡3×[¾Ìãß .ÄIÏGmü|Qù $‹Lƒwˆ|w¥îyåÏW¢ WüüGãC]å §½Òþ0éôοÁ”ZÙ@Ô¦ÆhˆämÑohIg®3´h¥ Šô²•ž‘¾­¨”•^Å:‚&iG\­ÚøkOWlj™Ç·è”7´¼£-N6>5b“õÈr¦Së—ÇoeÛe‰Æ€x .ËåÏBœ­I0© |4aãø]·<4*æUbÒá‚·ˆ4´´¯‘füÿëÇô]üŠ±Þ²¹ nsß·eâ÷ɵ°¿½æ"¡Ç†3Ú$ qõÍš ¶MÀ«bSÛø8¾öiû.jD¼Ù¦¬˜Šž• ÍŽHþWhå›RÉ}‘å°Ñ‚CÄTÒŽÿº~4äÈ`EË20â­¤ O·ém­zYŽ]Ó&KK@•O~Cc Ô>±Š7 …©âz†„ædÌ¡#:°¤$ãDP7i÷µ²ˆ¯k8kåµ|+zÔœp-}ðLé â—>™ÂãâýÚùž¿ï(—í€ßJ—ý"]ì"ÄcЀÊÊñ]ÒË)5SI&N«½¬ü‚ftÙÊÒÑ,ÿЭK È"1Ÿ*°ïù(ÍdÆËÍøÈº{ݹd aÁú/’΀A:Ò±vµh8)Žÿ–¥ÑEÀ3«wë¬)VÖ‡'tdu^iµK mCégR×ʺm–nlK®ï;y‘…êN…Ù&âÊ3µ;KãHü{#ë'fùì8®Œ[[Y½!{QÇ>q2¨œÌøa¼­/B÷k³þw0 zBi¯8 ój¨“­x1t¿SغÏo­?‡p]'B¯ÈÓ¼;±å—0Šw[êòÒwÓ弿5oŸ ƒw+ü}ŒáqèE q§qÂ'ñß4ÎòܤˆŒÓ. @ ÈpY­¦½+ü}6;À¢›o¼IæOÚêßÞdAÅM–„ÃI×:‰$¸áZ§ÿ>6BÈF웫€Ïa‚Heãdº±ˆFÆ%7<è¥móÓë„=½Þ‚h/V ½©}ôÚpfuÑ_˜N»û¶…³ùš)¹‹¢zo¶Õfß‹›IÉùFòoìJaZ]&þuÇRG[’}æa0þ7'ÿQ߇ÎÍYݵ„yë `ÆäÍøC¶7aLÂÀ쯷ÍüÏdvõÛà ˜9?ìBÀý~˜jãQž.mþÖh­%axwi=½Š.7­³ŽUR¨iXÅVIã/ •é÷ Œ¼ÃJhyýßbäÅd4­Kch$ë“ìóï®íPòwÜÆï8±-@6ëŸg6ùNñÓ]ªuïýû²šªîŠn'w=ÍÙ1'‰[ÂzJí#[t.¶»ßIþ*ÎYGÁ*ÀþVÉ(ìþõVCjÊ6ÝÓÒŬ‡m–‚/OW£˜ûh)úmòW;°àA²gû@Y¥š—­¥£Ô_ë½}Hk­5IT´ÏórñCöo¶GÄh'Ö;€&Åa /$?ÿÙDÒª² ýEKuzc'"äž=yk‘.äî<¦:ÁÊÌ”ªÿ à+ÂKEgexSI’Õ¥H’Öd3l[²u¶ß$œ™ç»‹Ní»éöUã¾÷ïÒ:‹æÉ"äFÑ£¢$'=¿Øžk·i§Š~A]íÀ¤x3O¿¥ßí°Á¢çŠ:Fœƒƒy<ŸK—býÑÜå­èKA}Ø"!¹¿%ï¼äl³GÏîsÏÁ¾4%]tÅM2D+hCƒ=¼¶}TAœ‚È‹¬©DÀªV¬…¬¸ó’˜’â&öÏöçù{¤+y§5ñhÇ’-•È6“Èuå%q’•ŒýNvŽÎUTÓÅSë‘wõ:-:_ŸO¾t%ÆåNÝÓX×X˜NS‚ ti-\O×Aï¶ «ãˆ5ÑxΫèUÇjßêù¨jùíúü½¡bÁõ'[.³Ï’_WÞæ~È!¯ ÛGÜNû<^ÏO]6™ØÉ¶ÎNûŽ9ÙKÅÐòþä1€¿f³H©±Ùp!:°¥ÊM}^ ìàßq¢D¿ocÞÿŽÚ.©A6ˆ Ç:õ¥uŸ\§ézñõgÄ:M³6#ï%Cš j硸L¥åsõk|¾:/­‚øƒ‘á·y¿²^ÉœnÅôþ;¸ÐÔvÔZîK`­ñ9ÈGìß·ïô–w3KöÖ¾i6eE1'¯wL#î7z,Ó§/¯'Φ™ÄôÏzËdqAÎ-\ê—¦CKv@ÞŒ¼¿ç[½Î„ô°Ïòrý8œÇEÓa½™!'†<“«~N>GÌŽ»ñ7Œ”¤Î?î_ ñpÝ%[ê<—`AÞO¯gü÷¥þÜÏâþœšë¨Ÿ”¤:C`\Ħ˾ÝÿdYç-ºZÝf±6ÓÏJ¿ïê>V= ‡žb×Az1ºE*ŠEW»¤Ž`¬Ô\«iÒôÔ!ÖsZõ.îK©Ê݈§ß?×›ªxøa#–:\/°þwÀNž“œîùµrä‹elÁ4_Y²œÏä –£SÐÓ(G}?>?Ç9ß?ýù×~\å’ü’Ø{£‘a¥X7¦µÜéÅ.«É az«(.õM=f‡éÒ¥8Ô~z±Y E¾ÓÒé¸×óÔH;“vB¬i¸ù¿ÑÀÂÑíõ‡4ãpx댇â×ãýTqƒŸ÷ó2@3k¥1Ÿýù”P²¸;eÙz¢•Yñ4[¢úQõ´\¦Õ“è°ãó]æ tÓL%MãÊ:ŠjT°úÆŸ¯?\mB½C•s qFL£×ç#bâ?\ÍKxÂ>1Áü®QÍš6Æç÷+V£=â òä~ɈQf -µŸÿÈ3ü~›­¯C}§ë%‡ÛØßË„’Êý.³L5%ÙB–wáûH3\4Oh§[¿]ÈPµ¼¨®‚iÐŽ˜÷¬JoÄÝÏÃë<ŠXê` ,àõ­÷ïx¿ê³ˆSåóÁ÷ƒXØ|¯þãõ§ëBæ=‹FÔA÷.6—°Qµ :…jüUÍΈ£^zbªT«c¼âPs+VÇ  xü{wT9 ÖùõgÁï|TÿD½»šÖ·`J®,YëE<•ÿ»ê›À›Uc&Mõ¨gŒÅF|÷ W£P·Hhfý ®TKæzŽLõ¬éò×óY¨ÖÌ Ñàìí­÷g¾Ÿªœ¤D¬)ÆÍ÷çOxí÷ù§ÆþõƒøµZVsñkÿfMÓѳåㆀf7âåçcãýÛù¦Äœêzý÷®Šïï·Ôà_ù%˜$R9 L«W¿þGðc™ß7}3!-b¼ßùf£pŠ÷¯óþ„ï#. È…ïŽ:äký^û#ò7§£Õösýbê3‹è‹éõÈïÛç-¡ˆõ{€€éÆÔïjÙª©…xäÿ+fhðˆ\Vo§ì¦¿´‰ª³2?ªcó±ß94м…*³÷{•Jí|ßïV¦¬Ô;¯àžeäãauÈ̸ÛÍ#ò}±ZÃ@#/ò{qþ1ïý‰V²ë§…jÔC¤$ò¿?âõÛ·ùgRxIxК4m¹ ’ŽJð@›4'b÷çlu¤þ\|^çF÷™‡EÜߙ֜b=8%:P7–íÜÏe`=»ëÉ´°ÞRÛ„9âíý>ùy×?+£þ,®§ÆFýùaÊøÛõ§úiZVg ëµµ^RÉ>ë9¨6+ciN…:VæGœCqåù"*bñïqG•j*¸ä✱Þ¢ã5ž®ðžXoý>P¯‰õq&Á=bއ穇H¢ ^¿²ÿ ¨²Xþà¹E¢î2´CÇVD˜å"*Ti"~µÄ››ßüú’Qlc„‹ÿÈ—Ta*&ê^r!’%ïžÊÓ D\·eˆ¾(Ä»âPƒß¾Ë’uË Ó ßßý:\vö%U¶¾èTˆ›À=RyÛ*0%ýÎó‘—²,`Ó•‚ªIƒ*a¹Y•„c‹Ù\ºjèøÎ¾ŸÌ;TƒŸ…yÚ¤6:¿Ç¾gÿeàœÃ>ïÞ÷ u?ûð´FÝ?´ÏŸ Ö­-Ìs/¸Ai^t}¢*瀜`NR‹s¡°¥ ÌŠv±!;Î-¸% •çHÆ9’Þ^O듋Ϸ몱oÿó]бžSy#ë^åõŒs{­FïOˆY§NóÞëõ—p‡±èJ³hál‹è´Ç“ÁEkh½Cå.[•pÐä2Ëit<÷ý{Éý`WÅmúœ¹sîNÖ!séÜ팫ÏÍÆ:fúuîÇ©#ˆ‹bÜíz3&ï¿oxéžø÷Ú÷?°˜£_Õi¾K÷¾mõv©õo™oÂ5ð{ñïäªRÎXî‚ÚfIcXT‹ŒýÂ×~ùþ9ÞÃ9 ’©‰÷Ïeë¾1F8¬vJyŒ²Ý¿âE¡l÷å ùSÛnQyŸç÷±u¼¥†üçëO²÷Qƒ\4ËíÅëÛ©"ewËUø~»O,º õf|¶\ñyæ&ÊT/µ»T¯>ªª|»ÿQü6ª[ïiÂÿ—öëâý‰ëI5èvøŸcº.Rž0÷=?•ýÝÏÀÞG™fÅsHŽ­Q-vŠôuåLuÁ£¾LuÁž7ª½Ÿ÷Sí½Úl7\£¦ðôˆ¡¼‰ÿùúK-åøï¯“88¸Mñ‚özÎÙB<ÿÜ…ïX…¿o}ê&È Eœn¹,¹$íÿè‡ÇŒ«óÇ¢{Á²Ùwåûå&Z¹ß;ëH»‡7…×÷…mWÿ ߟø|ÜÚÿØïMýöÄûu¸®iÜÿÃù<¯/~„ý~¬¬ó¢ÏÊTWoî×ßXÿè?‘ëÈü>‚ÕÄe1ööúŒ|Oüs‘——²]žˆÿïã;ð{m«¡.©T­Kª„%sà¾K ˜ÀF+™¿ÉÛêOG|‡…Gûõ¬º’+ä÷¢ó#Ø?Û|NQá¼¹¥†ýÚ¶ùüJÖ2òó°ÛAÜ›ºñ{õ«zó~F£ýa  ±û»XÍ<êþ.žeÈr,žwêÏ×¶¸•â~×ä½Éý«É{“ê÷®ƒïöÇŽû1ïeÛý­Å{.‡‘§?÷„?Ïÿ”?šY÷ÞF—³)^ Øï­v_‰ßgJèjÍ1Õ÷{‚ÌÛéf1uoxB}ú¿7ðþp3ÈÃnD°ÕÐ Eø}"~o|?3OÇq~d»¤É]:竆÷ÜŸ8ÔÉs»„÷/ÈÀ@…³+ÿdªÇfדÑ%¡|¾BŸdUºÛHUôý¼˜úüoþÄd?¹^â9Sõ¢‘Ïú_õy³cûÛ\¿4æâl¾ø<žPÄhE.’±1ùÝøéâ÷ßqÿÞhdEþ_äûÔ/[ýh»o»AíD>¡pËJ=%ÄvGËäÏm»Ãâó,a¡ü·+<Ï\&ù8Ãõ?äû"&ÎV:ù>CõhAý\–qžRÜÿ%Q@+ǽ¥ Ÿ¾PVÜÚÃ'úóýÂ9ò}éЀŠlzÜÏŠòS½Ÿ¨/~Of=ã|³ Õå³à†Å߯'»µƒï¾Ãý_ˆÃ@Xˆý.ÔïùÉ'c–üäûMœg¸ÿ+\sž~ qSáB çE9îh˜r>÷?Ïÿˆz|7Æëäï˜|©µî¨çYÿôD>ÏrþÇÆÏK’ø|ÄY8uð}bž¦\Â=êÛÊy§÷kè~ﳞ®)É÷3ðkêÓ@^Ï<qºz†«ã¾19û¶þ?öç®’ kí­Þ ™0òÕ¸ÿ禂ÜÌ`s¿O»­ˆÿÃ>ÀtC³Kì$NÚ+û7ú½‰÷×Ã÷Ù¬çéæ1*qäíý á àþ~ú`ÿ7ëýŸ_¾¯ÅóRì.2€_à<¹Â7ér7[VƒÇó{Ôò+ ö;ë!ªÊNK“tðÍ2MXþ†*¶žŸnõ÷Xï%™¹J`#âîåÿ‚ï©z|[ã7Í|žù²õ{G¾GýŸÌ‡FéÐ|˜ùqþV(¶°- Q¨êê9Ÿ?Ï? zeº­±þlŒ«ó dÍët¿´;OÄ-Ô~‹÷Ç}Înó¨_ò ûõÏË*<¯àŸä_r¾w aùYõ&î/o}€åýÏóu,ö]ü|LAí¨ÚÎÌzÈîšç΃;.ÔÂæ õ2‡ÑJ(qNëò„Û=NakÈ5STxs‚¿úög_K>»í«)aÛ.Õ=‘7"ïƒ̼néE­iÔýçÀ©ó›G>°Áëáñÿ×9\,â}p<ÅWxæ „ÓÀÙVѾ‡‹Ðü½ï#ýï{æ9•G6óÔö¹Ü˜‡tïÚ>·Ùlry¼5ç2p!i,|÷4oYýàiœÿ¿pžú÷ Þh¼ß}ƒÌ~×:÷â¬du¿Çâÿ¨M.,èK“ñq‰:ì²Ë9–ºÅ#‰„CWÞ|\]¸|7ºîêûy£ã“àß÷¸úPM|‡ùF¸DsÅõÅ.ºru¥Êà‹éÚæ!Ò–æ:º|~'ºj×K|î‡pED¿’b±$Ãèf?Í_ ý.\í:¸ÿÔ~¨´›ƒ«Ž%È]uª%ÈäŠs‡gµ) J×\ºÂ5e)O‡k.]vå^Ÿè*:첋3bþ>»Òg<îp»ªƒ6æðú­sw°.¤„[[tµ‘ÎÎá\¡ÙekËd)^ŒëînaœGn#tIkƒ.¿¿]pÖÿ¹þåÿêû‚G¸Nµ c#ŽS¬“œf?.Œ™ùÚe+ß[7sÛºÕ8¿æU‘«yêWö?÷wIÞÿr µ$^a,×E(ËâõâýO×Qñ6ó»]YWÄþg>óœ7WêÎ:¾ÒŒˆn,á^³4§7•ýæú GºþåÓE.Ór_ñ¼ï¦ðåªvµîÈo«Þ™oGƒ¨ýE%<òÜ^ya»ÊÏ`Ãì­ÅÏ< ’’iåí1é"ܾ#gÈÏíåOC/ÈЯ|—?ÙÒ7„!âã¿«×›ýá)¹ÔLuΈ9ÑØõKJñWË?52$:øÇ_üâ–Épüù–tRîLf›&ãóMˆO^3ð‡‘á°ýzøõ&ûÑmèæÏŸïüL¿EèÓ.Ñ}Ø_nq=y,PUì6½žö›ÿñ•¥¶}‰ýYÉîj¿ÇtqÛò×ÌÚú 8âãâ“«/¨.ÁŸbÄD•÷œ:i7JŠzn¸¡>Iÿ¶JQÊÄýX.ɹ5f–ÒäÜPbFå|@bÿû›Q ±'PCÔö0©ý”‹+!W×ß*ÿÆç¾#wn\fº]¹&™ºsm3ÕA¤?l6‚³ ŒØ÷,¿ß¿Ò'®ŒÓÄsƒÂûˆ-ü¨7ý‡ös¥Ÿh±ÿ:üé$á ÿuV2ìˆmdQi|„¯ÚÚ®”*+¥}‡ñÐ:®„eL®Ä!Ï8ô÷µN¥¡Ê¬5N0MœFŠKÊ=šÛetÇh•EÜ7¿ÞïøpU"¬CˆC"`IŽúmñ¶¸ç¤ñC±?ä}K™ _SÊ4‰…kØ×‹¿¥ ó?ŸpGǽ„Õ ) ’ZÆ‘#¤’ÆÐy‰8s}—â®õîú=BAaLM¼w$®2ÄØhl%Ç¿WnìvîácÞ3k¨}ŸG13Tl’§ñNJú…Ièƒ_Ï·›Å0’.Šù$ùÕñƒ‹Ûu¥x“~=`Û,œÎû7«Ã òV¿SÔ@Þ%¶}ø°Ð>ÒGaxù«Ð­.ÓGÐD\ÇÃ_‡éäèG@­ÎôóɶÁ‡ñƒïÛç“æÛ”É™0—•ù9î-–;cÀf*†Ã—#™pF¬÷ó÷â89ÌÚýþh¬t‰¾6o£«‰õ'o<ºž»š”»Û®e°¥.× =%¿ô„8õ†\ØW|5}!Ú½c^¢ïPÇmìÿ…[3XZ4G§¯ÒÒߟ‰êèNÍæéó1™^j³ðòš+oµ³¡—Yþª·¸Bßß„å›éûƒ&Ü–×™4¯?mÅBóz>ä]ånzr“üÒ6]“cw]y¾RŽ8¶áú×—ëO‹ŒZ“½Û´Û&®Š—eO'Áu•áò7Ï£OSuÉãñy)4¶[>^¿Ýÿ°]`Žâ¹ ÓS®êŒCÌÆqˆÎº-^G[ªûù€®D´©Ø5Ÿè·€~ÂëßÿAîïû6–ÀIÒ×6è+Øß†ñÃQi ý,)1Õdð2賫?`eg€çG´ûË”(ˆT¹îÈ%E>¨¿›;Û¸Õù<3Ÿú_ÐCm÷È%-Æ–KÒûÙ6Y@Õâû4Î…ÛŒTÖo€ùàQÆóOǸR]’ëËtBCëßѰˆßƒ`sŸÌ÷Cmö9 ´™ÿáv\‰VüæAáûÛ•ñ­pΩ;ÿC¿¾üž¿¹~Ó㋳XNL¯ó<žÛÐA‹ó@cïè·Çç æðæ#¾ã®»)ß²p ©Uþ’íšö3_'Xìýßtžn\ñ{ùyÁúWå/öçU60Öù|‡¾ìüÞ˜?£ [ضe§ªq¬½G¾mð|˜>@T¾ÄçÞOúøëûãüîÃã]3ЏßÉÿãä4³*6väçnYàÍüßœÿÞKcB| ĶK_βÔÌ¢,o|ß‘›|ÝbâßËWi •r[•h€¦ñÕÆ­lóÚ¯r²­Kð~¢ ÄÒûƒ.8=ÎEç4ÐHc˜Ü[çïnô&Ô¾Jæ8.›…hö`\·+¹Òdºí¦Œ†Ð"Þ¼\ò>°“f;ÛÝ ïwŽãrý ê· cNÓ÷Cþu'ËsVÊ»mËo²Ù`׿xŒ'¬í÷Ê{ZV£ _”Ï.Íßž¿˜SÝž÷/ü¾Ó<þ•‰ã†¾oâ|Å8ªî烺¢ñùíû[Ð~z2‹ Dn—d²=®U²òéà ë[^-è™ÇÛ‰±Íîè Áõ7Y’Ñ(o•=þ^9¾XL»Âøè¡Wš‰­S>séþÛ8Þ6—šµmš¾<\ïG³}Êù_tæ¥ü¯qRÚd·Cã´ðLL ×^“Ë[”ßlG®M±Çi=Ýtð µeÑAãìïãºà“ÕgüŽã¿y˜Æˆ¯Èeã~;,Ëûï˜oò²ÁçÜoò³¼<ò´tù~äk'¼¡ð|LÝVyßš4¬vq|z‚V99>7)OUMƒG)—˜”ûzß]¢q’v»üþa9«¢q0ËþLþ{wÆG{ñ8"×ß4YágAÇW¼L×o¤Ùò>Ź»g|½³¹:}¦™vžrrĸ@ãóteÿ‹®¿*ïïo Üò¡ë‡ÜõjÏøn؆,Ù4`|·R®ÓïO”ëÿñäe¹IêÏ@ôNý¹ig“¹"ÞŒ9žÒ³óÅ¡ïWÒù5NzÆ#8N×3óMñzˆ ;œ|êÕŽøC“èÛýƒûqš¾Ïñ*É=R¦ªËE.Ë5$3Žôú>Ïâwã±ÈÿYñ¦<Ü9/rSoe‡sÊ b×`ä3ùS[ãPÂ<ìçöUT¼)4 iLk»- ŒÎ~É­ƒ½j¸\÷޶Ôpn™@ò¦+cìêÈ!%Üc‹šÌˆI Ò9{ î¦?NZnÑg{f.ëæˆëúnz~&sxßGÝ3§Ÿ‹Jíiy6Ì"oùž†s¸ —nìèyÌúŠ\ØÃ’\e˜yOÀÅßd›\Xr^”[– ‹1ݬæ(æ»'äÁ4ÆR9&?øÜ_‘í¡]JK›†mÂzdy¢.NÓcÓ8wa›0wÚ, “¬ÂŽæõyÉ Ð#4m“¬0vWòï{ã¿§/gŽm±%¶t`”e9°°•k¨û9v›7eœ÷#Ãö=Ëy'ƒ'þÈød9Agáž ‚b[¾k²%ÓsC“²=㑽HÄŽL ê|q-NÜ=¦Î:¶wãtƒcGö„L×E7êžQ×=é±íâX³}“íÁëîs &Ûñð›cÀå{¬£ˆÍÄñ—v‰ÄÙ(+2e·*›ì‘T§/×=÷ÁûÇ3.TY÷¤#ÛSžñàþŒy8´Î:hÞ¢ C;ùß2ü›ÑóùïÿHæ=ò½ÆY0qòû7ߟν«ò<8²Ùì|8¿¾ßÿ²¡(Mïb].’fgߤ=û¿ì7\n'Ä=Àû¿Pæªùó–ŲŒCÔ©=_²ÅÅc…$ÑÊk–ìó³9®–QÚ¼÷NE'Ê6Lß»&ï½ÛcëuÔ‘ÑF]T?ÝÛ¿\²ssÅ6þ>mjQHœ$bŽÏÜÛ'ÇìHÖoŒ)Þ81ï8o¼ÿNߥжfaº[¸bÊôÓ™ñ‰ÛnC´`þ6bÖ¥ á´IÜ'QöA÷ØŒÅãƒÜî·¸'Ê 1'Éô/’î‰;Pö¤dŽŸTËÛnËöƒ´¬ýŸú'ûž0ØgÉ–èÛÍé–MH¥­JUß1ö{¿ç6ŽËÓRÖß6[™b—ˆ=.jœÇ2b“÷Þáçgj\òJþ!,dó'‡(xOO–}q\µþ‰>dù‰óPï 1Iûãý’í`ßGr[J´h—lºF¢ìÂà‚lCÐ×u=¯|>‡ g)Mß²ýß@â©¥Yö sŸÑ—)ãÒØz_–›¥lF‡†T,׬XòÁGž¹Yv<î¯xœ÷gļ}uö½²xk¦|ó¸RÿÌL¶J@4Ø$SXU¯`<7;ß/Ë µ'ÆýÜs‰1ÿÌbŸj¹æDY“qG& FȘfõ]‡ˆªÇÝ$ÿËë+Y¸Iµ<ð¦L<ûÀdVýyLxmÛ,`z2­Wú.³.–k&9Ûëƒ(óÍôzWÊœzÓòÙCïŸïr³X>{{ý§â[6 Q¿'÷}YÚÉ2I´=M‚m*åšecÑy>¨^®´9Áï¹§e9è¿)û_oÚ$p=Šúv¨WÖ#+eY¶RŒsâDÉ83x1¨ÿ-ãS˜ÿDZyÑ8¼_‡MQûDRýrý©77²–?ct`¸Ë’±[Í Ç"äš9Е¡uó-ÔgQZ øËþMågHü$ÊMªýðÂÑïM[§\^…üMÄÄ *æwÛ|lŒ¯#»Ï1wõÑø@c½èo…Ì:ýaÊþ_^=Kf^)Êûq~Õ-CO–×9Pp¯ÊÕöCä[fיĭ0Ìxìˆæ{¼øÕOcÇßçÅ<³w„Wrýff^J|INd™øFùÂ}ðLâŸG&>îÁÙýɉ‚¿å}Éžh°•l6’í=”·‰Ëe˱ öksÕ9:Pp>ã#Ñ.§Xž‡Ãx9«NíËvS—äbºíúše3åM‡óJ'Ž swò}ë·Ôü[FC2ó\ê?pŒBœã’\y¥¦ÕXÇSNü±Wá9œ½Þ›ë;\÷CžÜ†"üf ÿ&ý~£¼ ï·Å¹rïO´SY–+Ï´ß²ÝÊ(Ä)ßä©j{ÃEGç¹»ÌÇ­Ä÷ÓƒCè÷‘ŒIf¿ìÖðhÆ0ñÈ¢›ÐþbÈ\ mÐ Ç< KÆ©]ð¾~³Çž7†!ݧ_Ì%ž'íX6êýºiÇ2u_ª(ä"OŸ!^ðf%„¡ÞÅØ¼ÎàÉmó[¢ËRÞ¢m2®1wò>€p ݪÞg^GVŸv,Ùyßv,ÿ¨÷ç©÷+êyö};Ø÷“÷è}›÷)H3áý²µ¿çëÙ}ÚNÙÚƒgB¶Ê6 ¼õÀó‰‡ÎÂ~@·LU¥ÍÝ-™Ô¾hðn(“·ÙçÝKõ#mwÅú›2›…²œG$€<ÊB’p™Nó€¢¼§E(k»Ç%›„2,Ã)ÆÀk¢¯»‹ñð6¼ž~±¿x?1g²mK __®ÿ$/³i˜ôÈ’»n¡®d;Ùÿ¢-é׌ ûħƒ@"™r~~rn#Ëîh’gÅq²KùZ†œù¿°{ú½iÿÎ÷ï?xσcÏ5ÿ9ç21'ùŸÃ¼³ÒΫ_²e_˜kŠ|¼†D3ÏßÓ²Àj"Ÿ“×I‚däûê~o£l¿l“ÉsÛ[çõŸ7brlpÞ“é‡ 'ú?´QÏéÜ–eF~7ïJ6ì;ßÇ…±e=ÿ߇׃ e|_µË# zI¦œr^´%]’­5¿Á¶êÝý+âýÏ땼·îó¡Ûæ¥ê¢Íf¯žËÀ=GZGwø‹6»eêÞ+û²bü ¶DÃ<Ý{çcò†átå{oظdãË®Ÿ$×…†£;õO›œΖIåï±’ú‡mQö4Ù†=yHËö£?ì¹¼Ü->OÇó³|n¡*Ä ¾.ìÀûQÿôMüþ ï¯õüâýÕü±ßù>êK0³ÿ„90Û(TöÚ™rü{ 'ßëÙ%_‰Jò–«ãÝßmX$—WuOâFÝ6"da½Ù^Ïn²9½±ÿ«xÍIû_øes=/›‰i|¹“ï3Íÿé²m7¾ód=6¤âñ¼˜| [ry<ÇÌ6ÖÏÿ¨×‰ãœüϹ¤üÜ2yÿÕ|¿ß¶.Uç‰ÏønÖÿ‰²ùìwôû£KÛiúøº…ñ6sûï3Ýß:8\>vÿoÞôáUßáû,ò —ó#ÿ‡ý”FïÙ›®¨æxdúå§yü¸xαñ÷œšÄ\ßÿAîõ_Ôÿ¬ßûrý/yÎc3Í×Ë‘éo|ÿ‰uð}!ðŸà'º¿çK¶Ý/ûO°…¹fÈýI›¢5XÏÛNtཚ¿VY¿7ÛBÚThNÐ:Ýs«±¾Ê~½sÎ.]ê·OÌý5–‰ì÷6âĉõ ˆ²± n¼Òc+©Î…þïÒûesqúЧë!Ù¡¦+÷/ú— Æ"Ï?ð ÙTÿwÚ¨ÏnÙ}Ö“ÓsŒX¿-ëý™ü8Ö£½pNf˜‡^(3?nÕÿ‰üÌÎ~u¦Í6ês×÷°ÙªâO0†M—yû}½Ûv¿9Æý¢ÿ¿2¾ÿNߥQŽyÍ™þSV¿ƒH‚9ÎYTê~¤Ç!îÇK6•‰=>ßÍû¯äùËf!häÝÀ6mD›ù>ÑŸu_xBFý..Ú:æ!q«ÑÙO–ËF¢ú?y s`ž– Fn·î¿ðõž]¶ìœ?* â»S"3‘<^Éåh¬.™þv ¶ù×1pdfšÃv fš‡~ãÜÍœÏE¿ë&^ÏÐ:6Šwž:~7ˆmÛ§%Æg¾.óýéØ;.ÄÍ}÷DñÏKó-Ëóq䙼ÉêÛþ²ÑÎòwÙ–ÉÖ<Ò»}Ÿ¾¿ÑÎ%®¶ËÙÄåîÌÍÂþk‹òÿçáéÛÎoâ9k¶…Ï2Â>w¬}¯{B¢Musú4°ë5o(ì)r¹U÷cþ¹Äñµ$V›).ÆíºÉ£´¨[4ÂîjÈî*âB=%‰×÷‰÷'óÜb.`èž<·J‘¸+<«¸¦†–ØÀXS„ØÝƒÃ¼[ È¦ßˆQ 9¯4¦Ð!£ßÁ oTúòN6F!þ³>‰¼~»î¶’ýˆÆ ¿ƒæ¤œ@t÷­n‘6ñ ;Eà$s¾!߯9ìE,Í/D¶Ê3ÝáW àÚ±²Ð.dQˆµËÇ&ºsݹ”˜ ”6øæÁÏ¢Ò¨øŠ•ƒ"Ž{^²ãí¼§††iÕ9v›]÷Õ%kžçVÄš.1ï¹8H9¸D‡ovéâµBÆ?!þÀønÝyL•¾¹mV㯞xô,^JGæ!¿0Úg¸³r!Þ\üfT ÈO|ÃÌ¿{?ºÑ_Œz‰0 û‹;a?’?¸ÿyÙ¦Wꄺ˜0žÔy“ m³‡mŠ6ˆºø¾ìç§ñùºÑ_§{F¡fïk¿cšh68ºìúo +kˤWózÁ£sµñæ¡§! Ë¥FÀ€DYí ¿[÷ C?o°/„üK1ÈyÄÇ)©u%O~÷@¼sneKÔS6 ñ}ˆ«Ä…SüÛˆ?ð1¾\wÔ‡Æ?@·ŽµÃéÄ¡ u®]ÌînÝ‘†¤qŒjc.T:qáUi¢æ˜»"œ2óï”8­×iX÷b;fžxֹ߿C-¿§tÎÑßû¿3Ÿõ+ó£#¹Ý½È‘¹”í†ñðnSñGÓ¹B[Ø£úLF'`¾yðb<˜göøT|›ßч-mÿˆ¹Ñ‰øÌ›ÇÓצÎÕN;¶vôÚ(”¶µß;æ¦âuÍ™fœtmyž¢Âm}²‹ünÝ'x~‘”áÝ@;B s&Š[þ± ‡ ´.3Söæ–@êx}r»bÐP¡¢ 'Ô^#¼‚_bСa"Abþûû›âÌÊÿÆ‹ŸÌøì÷LqfdÜFÌXŠ+:%t2#Ö3±î[ª_OiX´Áw%0™ÐË@!ìœÇ›ÑyÛ_ƒ½œû*”1¿Á”x;ì•ÀÛÏïÍÖK:G­‡Ôç#’]y@–ÑÝÇï—~^¢¶Ÿ‡©u¿¤³`_k!]–ʳ¡å‹b-B,ô&G¡Êºï†OFÍ,7n~µÊ .&wCˆJFíŸt=¾Å Ž(r^FV¬“MV ®+ý#ßk~¨²¾~ï߬²ùRƒõzñ÷E<3ùò;à,LE0¿3Ä©> “rQ ÎZËÖgOX•Ð íÁT@¨Ê– Êà9¸Û';ìSF=ÞegÜ+ëÔ&ž`ÀQÏWÍ¡tê5õl}Ó”cwÜ!œŸ'/¡ƒ ß_ýzœ}Ü17XüÙý‰êÄbQE6’ÎÆ…f ÎôÁ0Ž®¡‘Ê¥'³ðú:7\ù+¾Âà·|ÉNnOÖ×™ˆ¥ë}Nâ¶ëÛ,kŸý=(/{,ÜO… lå{ÝW“Mo¿ïŠÇ™ µò‘ß3ÙÈjAZï$.mð…í?TGE£©÷»&6IxÛ>¯…+wæ°„Çä­ü¾(‚O’‰r6òµìŒ3ÍTºõ³Å߇õñz}ô³3ïÛžMâAWx cm‘…G¦îxL!VM£l4í#eãÐç GºG »q¶Gˆ«øFë ½2ŒW•‹t"ëø¤ý/ðîwž«ó©Àg\¿èþ9ŒÇtšßO¥Kž=Zø~Ý«k7ݯ+åÀg®ä÷fzÈGмµØ‚Ö.qoÂ&Ä¢¶fƒã®¸ª€Álëi@G9¤ì?¨ww‡‡Ù¹Ÿ{!x ãìz¯g×ó •.½íÊÿÒÍÛ錣#S‘ÿ?ÌmY¿ãV_†Üê…51õðV‚¿‹´Ñ¹GÎ$øî(ƒWÝ´ë÷ 4 nMb oð?2ó¹øßXŠ˜ú ›¶ÖÃMŽ]ùŸ2=ïLlBŒ»ö·ãÀsâû›b'ë NÐX±H¦rÀ„=ªl<*QÝ£9ÏC©liÎP¿n†¨X&+\>Ñe«°àDø7ñí½ ^(sÊ{“ðšƒÏšeQ'Ç÷&Ï1¼á>7uÏ*ž+¯ë¹âžFs­+}×AÔpmáÄ—~õQ-²ãsµS#'ëÕå„îC˜p PC„ÎÌ6Úà½~çO&_ß×ïQ°^gýžØ—˜žOP}röwbý>]¿«¢z>óþ*~5tOùü7Ë‘À°ÿ¯äwÔaj_£~_,`¶@s„…•"¹÷¨IʯúGÑ(Äv„Ø »Ð¼îö‰'ú/òûþÂz¦ƒàñt/ög“îð˜Ãù×ß˦·¬‡íä_qã¹Û\Ÿëw~^f{p²Øÿ2'»b:xMÛãôW£߃ß>ùhª…4ë[#»ó‚*j\¬;¿Êmî( ·è)¼Ñ¨”îÔ‘s9‘Ï1‡ù=_¯î¯*^Îï¡Ø¿ƒsOþ¦ÞjÛ~r}_Ì÷@}Ÿ>õ‡¿¬ß'=ç é(s-UÁ>7ÁVõ=Vf±/ì4ÂdoNÊ ƒûfuýžÞp×+õ óûÚ6D=c<1Ñ´L¿x¨Pϸ~™äqlëºWöW“ç;s{ú­7ð÷#³Žý®^]Öž­ißÚàKÙTí˜@ÀÒh ŸQSÄÁý³ó'Þù·ø çBÇ _è¶ Ö‰ÒKÁ¿ ûeÍds[ÖS}Âf]–;žûUtáƒ9ßVÜßêÔ?]wÂÖ¢`lœ¶L¢[°3 UoPbÁYÄŠè¼àøpÞ¨bÜSè?™"ì>|jê¼Ä—ߑߋöû&öû¢9e:>Âc²b<¬ú{✼œswðûuîw˜ùÒ½‰p*mfÀ'hó™>Óbt8ÔÇ4 CÁ4Ziô&*æ(~ô4 žØS|‚ÄoN·ty#AR/ýù9ê^­#¡ˆ9·ÓùpvÏ…wÞ{6o•F—¹xåÀC|ÿv\ˆ÷_Á h§e5dyWg5¦©èÕ¸‰2wôâÉ(ê÷Êù3Õo6Ù&á¡‘múþä£ó=>óô~°3÷gó~]ÄÏ»ñá ê¿6âïÓús•õü~úQ;ÿæãdñu®ìw–W ªN¨ß «ìá-LþÌTÁ>ɟɪ#qd15p >àe㣳morŽçC~ü6¿Oö! [,4ÕëEùZø{6¾.bù ðwcKù¿±;Ë4w:Îü¯ð#7dã" wäwœêH÷JÙm#LJèƒ })ÝãÍEè|e÷µó‚*#29n0s"¿ßÑÙ›­0ŒEÿ°ßÖ‰†1OŸz“U5äÛqç9ZÌ>™Ì[Jü<* àpoñ…{SQB¯¼75^PY±4ÃdU‚Lü½û6ËýÎËmcºO‡N“dP#¨GרrE÷²cNü—m~¤êsãïªÇçÉß|}ýê¿&Ï×çG‡=³+ÝÅÄIøNÚ÷36hý¨“÷åºw0Âw##LÜÒ V&2¸ÂI gÑ&„m2%•—ÊV¥óýÜuIr*öƒþãuOz{æ-%&Ù:›5qN²X· !¿gêú0‰'®˜s9Ť8抋ùò©RgwßÁ#sÃ@zYY:mпG}ÅÜ:ýx„ÈçFè`%éªD<s¾¦Áø¯Ìí÷ó>?­OsÀñúú¤‹ýí¾±:ö)±/cÎÏé×YÇLlXìóî˜ûžs”…hìó|žîsÕ£õ*åß®ìû°ÿJký‰0Ü$SaÕ´1]Rvžxæâ̓‡2 "9á¢úÊ÷a<–Tõ/YÓ5? >ƒ-9ϳhÉúA¼ëUû4¯rÎûè-ÆËï_Ì/ÕþÈ_Ëz]èTàw¸o >ëàýWrVêž •çæ<_¸î¡˜;ƒ‰82&†:x ÜÑuÂF/eS—!b¬S²€çR³u9`^ªóË$Î^­[3À—Zìߪøü¶Ÿž‡ü‰oø5>°UÂô0îOMk—˜œkFXtaBm"/3à­ëÕpdJš8ß0ðÁºëÕÄu¿¢gPx?Êe1ÏêÍG̹ÉD×b=¦/díxþ&\#&¿eA.Ö7‹Ï/Ä<ŸY_æú±_ùmžg8õ§£Ÿ®ûYn,^¦õZa,þlă1ç¿Áû³Äçãž>å1øŒí’o<õÅbŸSÏrBØ1ö%ñÈ©:°˜WMÿ£Z +Ïˇ­ŠïSEÉ­–ˆX<¿Ž~n-wænDÇ_[¸ð »‘nqûLÖL%˜Â†SQžO¬o²«Ÿõ+i NˆªÎ$ÆÈßÞãË"° ñ‰üÓì/û¢&;¸%æñj2ü'"v>ŠC+öõP¾Úü¾m¹È_åO5§Ä3³P€–>»ekÌ„¦C½ÞL~1y °1ô‰ºóCTeÂï ¯ê„î¶M¤Öõ6ÑÁ¬ê«ÇƆ^φŸ,èŸÄÏxz¡æ«ËñD¡V÷sèÿ`xðõEª²Þ¡FÜSÛ ìJI÷*[äå­‰°9¨d@pÿwžÕ]OG¾w‘Š5„ûJ¡Ñ}CÎF_ÀúGɉ‰_mÄ1.°ñù0(jHáû7^O|}òõƒß&z^¨'–ô‰‰ºË€³‘q3m´Ó23"@D `\:b¾?YØ8óû7°ÌvI8%Œ£X8ö&áV$v• µYôÛ·ÊE›ˆeЬÆFa‚Š8@˜oñ…²?D}Æ;jÙ’IÛh} Ñ Ðd{zÅlnRâv€€G©p½ÄÉ{ícûïó ð=”o&óÍp¾™ÌåŸùÅñf¼,×XÀoǺHm_¦MÁ…|ƒÛOá9Åq TƒBÓW{«Ñÿ+ÁàDu}O ç·ê?”_ßòM+¾9ܹHÅå¢e2SpqâºTïïÅ §ŒÚ Ï9bÁÕ7ÔÑ|npÿGÿ²zŠÆlx¾®\`—užñ¸Òæ©p˜€—!Žz$6Rˆ`ÏnáÙþ-"ó“o¦"ôÐgûôƒu¸²›)ÐEà»p8ýb˜ç1Øšm|𿀜0<*ùjÂ`¬È€3â6 Ü\j@X! —ÜD¾TÊDz[7ÈK²+FÑ­a˜È˜‚Þ ÆÞw7Ñ— íÖ `wÚ5ø• Ÿ€“o@ñ^h¿·ãÁ‹qUc_4h¹”~4y“ýãF¾ð Vú™ÝÉóÑø¨ažÏ¼è(ã ŒukÎëA ¨Í#U«ŒÕpN€gCkv^,7Q®áý—„˜x¢N>„®Ä¾uF @ö í“uÎ×Ä…FGô›”tëG†JÔ´'ßÌæý8 ÐGC¶zPr¢•Ɔ/¬™ÏG®¿ãb@~0jt.ðo<7Æ¥<@)–}LàgÐùšXÏ EȤ#-½•{â(#5ðͺÏþCw ÇS6@O¡”CóÈËÜ¿ òð™ßÊÓUõýPŒ×›} ¿QÏNÀMÆçdÆsÛ7â;B”b³“qÀ ™‡°Z%à>$„Ûà8õûr½z]ÄEÜQëÜ¢A=? _|›ç9Ñ’œ¿ÔB®ÛBè$,UqU ïÆ};]ÏG¾7ü:Ÿƒi#Z7Ëõ¿„ _æùí›*|g9ðŠvédŽš\ÝüÍY¾-ÔM½ ­)ÁV“FA74@* Î8f*ÿ<ßh]²r&¨šŸûP(j1p¼qï«M÷X7›‰7àªdø&«µZ÷Éõª—„j¢O8üÛ8 £ Þœàp–1w· 7O_ ۊ”"N¤ToK?Kjc¯[Ö#lqU!Þo'ìbeæJ7Xf~Jy3‚'0){‹Íÿªæ>_ñKžî&÷¡2û:Ó£S$%5ÞU±M7q'ê^Õ¤ö†Éc¬ ¡Ž…Îvùñ`;k··W˥ф±¸Èì £! Ôd(•&eîø,šÓ™”„–T¦Õ3{X¸Ûb1vn’‹ÿʰÊ+åÓˆô÷­Ø¸MI¶G¾Ÿ =*„¹¹)4·!xZîLK¢7Ž©MÂñ}Qþ<?$gѸƒÜ@:3 [ÝdIå(í”pgìSYædîëj$†¢Hµºâ×ëɖ✤+mX(>š¾bùµ1ün ±dzžÚʃEËÓëoÄrþFú…X®ßBºJýr“ãg¦ol…S9 !xÞœ&ï*µ=-ðÊŠ½¹²DåX5Ê6»!üíŠ~µ'_]8a+§X¡ôL…L]ŽÒ/L,I&X,ø-¹ÊÌ77"]$W‰f-¢m·,Åuk•uá*ŠV¬ó6NÌìʤy©O\¹ÿeÉ@)–šÔ²Z´P/¦à/>ße}¢j}T&îÊ-ʶ6&6`I\[¸ä_¡J™¤ó·°›žÔJ–žç­x·FÑRe7õ UæeŸ gT¶µ-ÞO$‡£Ç<€P±;ÎDnúÒ¹Ñþ½}EbØy}ÊZªA©3âÆ¼ÜHŸO¯s ¸‚×9A«—†>a™j5ã†À¼®V­¾Ob¢7Z‚@(³(Á¤‚0/s$¨Z*•V$Q±Ëʈï±Þ¿ŒhF %žT‘–ïHËïJ’¶#â¹ß6kãÞõVf®{ƒ†÷úý¬_Éo¦ õ€]ªè¹N¤´Nê,Ôm„@û‘²A³ùrC`é¡.ž–†Öp^K®ø)…Öò§£¯³EP`uI×0œÎóãme+G_eß%u¯¯eßÂê>gjR©àTBDùJ=?I¨S@Ðþ‰Ä,ÄÝHM$Ç_1‘Ëñë|~»Ó‘⃠JÛ•ºf’$%y P#©aƒO¶3’n°"&,]J‡u?ˆÍP3eK”3ç.+;W 3ü„bPPbë°`ä%Ñ´^›wíˆÇþƒã÷Ç`°ÃÞ[ˆñpãÞ>_JôºŠûYQ¢7£› Ù¨\Ûœ¸qdO€b*âÔUЧnUyˆ4ùTs-9KÕ≞3PeÙC„3åEÞÙHÜõwÞÈýH.ÐUà¤s0¨ wá²ù;A•ñ¯6ïàhÝÂùY¶”6¶v÷£P)šð¦ŒêRvê$ÜO–ƒåNìå"/sßѰáÅrur'"NŒL·Nj^ÃÚaÌKÚ*Gk+â„PP|~;ŽVÔj„,#îô²¸ã]ÚÔ¹“Ø- –ôãpǨéVL)hìÒ ä‰çx3.æšiæø\t'ã+³R-Óó`'råZv±Ö{ÑÛ+yÖ‰Þ:k[¤ú¼D­‰÷‡·ËÚ~?DÎâ÷ÁE<þ½àŒ¯uG‹ëߦֿr>D@@ååµ¹Õ—­gÓNL¯Æ4àl®òV{û=Í×ëw¼ë(à5‡ ÔkœÃݘS¸åi ÐY¦e)઩)Jmž)“êJóôÙ?µÖ¾\wš=·–åÙÂæ`kâÆÁœ­ÿÕª¹ñÜõVå qxôVÍBúóUêÜ™šñyBÿ‰3âKšÃ¨"/Tî{@Æï¦}Þ «{_#d«àE ÞÉ‹@ä¡à¸.ipÇëáñ¸¤±†ÏÓ³÷ƒ÷Æ÷y'“d9Šö½&[WúëȶZòA]’²f“~–ÇfÃP!ŒÀÏ'ƺ…Þ8uû¡Åö}Þ*ÙV¡‰¼¿穼³ Öõ »øû·âXO óÄç£~Ú|Œ¼­,#ï$ÆóÎ, µc×d…õ*Ï”&ZQŒ·×»‘áAÞ–¨óŸü{eÊ*.S²Åëõ{ÐbOß®?ÈÂØ ë_™·›×5ös]ŠÃ3|MŸ«ôåHZą笴B¹éñ}3).Œ?´|¾]ÿâÑ>ëAõÓ%ÊëŸx.°Ò'¥š×3ÑÃWƒT¨G+Ñ5·K¦r8ã,’®ìÿÚ‘ÄyÝúAy¿Û‰8øt_°ã©žGÇ |ï¹=‹5à 9Bt†8³ö7D‹7Ì©®\°"o¿öycçô‡ñD̺Õ88SE03ò:æx2i€7Ÿ áÔ’_GŽs…¿ [Ï@&òÀľ•f"óÄ@ƒ<´×—‹õËzÏCkÙ;_Ô§Ëy(ñ9Øþ>=G(£ßç}”ã‰çìK;Pï0ï¯á¼Âíí=ÜÇÛ÷¬Á{™¨•8o™ÿu¯÷5/y8Æ÷ÃSpÜñ‰}OÞMJê|JìwÊßNÏ=+É£ñÔ?òh÷ù0øùæÏçõ~þ’‚·æ% –Q”ï7­ Ù?»ˆ9§;iN¢m8 vR"rz,s éËá5†¯Jcv d‚Ùnå{tZ«ä„djõF¾gÝH–wägâ8Ô‚‰üN*æFç qò= ñ|p<'>¿œÿÃÛ½}l4[çlÖ9Ð&c¹™ß“ëÌ H­éºñŸù½³.’·v¼¿ðûFS¸ÚêŽY‡o¸QçtÑ˦êÜW§îY-ûþÛ=¢0ˆGT×™SãÆÝ&û„ËøÄd£:Ÿš©á©s… HSé••ï;¨“ë8œ¡Š^E×ÝŽ¾è:þ `‘¬þØ¥½Îॠ^jÞK£a0S{}³èžïÑ“mÝçì¹ج%©#?“j¶ôœ¸^\µŠ8oåÜ—]­ÎóÁË b3ñï]ÑÚŠ}£6k°N‹ž­G³f:_7ß_§Î×9:ˆÛ¼Þ_ù}ÃÏê¢îç&gØ÷wî·šÍ}:h££Yübîáº&É£÷Œî×n&ÙËfj öùíé~ý ®e÷DAO&f‡ýëv~‚âÄœ6š:.Ί½3-ÞÛÎed¨¹³äÇØ;÷Ú 4)psèý\&©_Œ³qà6Ò°Êd+´h¼·A=×y?c¦¹1W¨¥Ô<ºw¥ÎÙÀÒÒ¾ü“Þ§“xgÍ=x&%¼'Ô9Ÿ=`5Ê€º‰ø%òLü{¨ï…“\©ïiÕ]ç¬e|Y÷Rîó~ðã ¼xÜ@†#ÆdÖÓ­Y‘ê;¾Ü­þ}E'Ö£ð|=ufUl|¸pýäÍB_6N‚û×suŸ¯¬3³¿Æº²øûï[W´Y7¨$<_^à‹¸#ò þ“qÍ/ã •cnÏù¬óôÌš+¯|štÎõÂ÷y?ö+-”÷'p¯s?þ%U×wâÿ]q&þ?‹ï|ž„ËaôqÖþ|ÿ‡¼ùýþ‡y`%áû•ûyçßûyäßû½ûhœ>¸åbݯ÷S>mç§Ï(›~¥ÎïȇäþØ2jÇ@TøS ‹Hô¯ÿ%«u™+YþµÃq ïh¥>¨$±#¼ƒçcÄ1ò:ñ´xˆÏ¯í<>³®ÜÀ!šG"Ä\ç{~ÄÕø½ò>îÇÈûqnô;u&òLG^@û6ñþézå7NÓy?=ÞÒh!=¸ ÷'ëzõßqØÄKïb3F‰Öð(3ë™5=ªìüÊQæJíþrIJ$ÅÖÊ«‚kOV\êã ›cV•ñ•Q«ß}Õæu®Ïð½ªòžÔÝ铳â*õÏÚ·4½á½À›¤äëëçXšo”Bë÷;رËþSóæKžþ¿þU…‰6ܼ8Gx*ú ñ-¾³ˆ×Èk"ó`˜8æB¡ø ë—E¾BÓHvæ¨_kÒâ÷ÇÔ¾Ãf¿Ç›øQ¿ÓGAŸi°¿:µï+÷}ÙÚ÷ªRÓ¾MÌ÷ÙçíŸÁ¯÷ýÞ¿íî·ýþz½3€õòó¦ÆUÄMù¾ª>Yœ9'>VÅhkêŸ@‘~Çšƒ«ç6þ:ÓY§ß»ùûþy¾Gƒm6ͽ…´oÿ‹óæÄäËúÑøEaF;WeÿŽßlZ\äu ˜È÷ÓØPÆ7ðý6ßÔù‘q¿âÅ´‘Eü½°[ݯ¾V]Æ÷Ñnküùø~ÄÒª/háóÉ÷†E^Ð Ïo÷=î‡È¿SufeÙŠöõâ>>q™ïøúˆOɺT<Êó£_¨ìsÕ[ƒoX`?ùçô[©I«'á÷ É®ƒãdÞ‚Ü9·?ß/E}.š_Ý1ïÐX‰ð@øô „/€÷ç1È$€üx2Ââô_þg' '¯:F‡WþÔÿü6ßÃ4"ðõŽu_ðIüç" ’ç3®ä5È‚$s@ ñRÜß¿£N’¶´.*ñï}ÐâÿW©ûyšk‹ß”P€E,Þæ ¯çqåëÆÍñ}åwj<.ñóÀ“`àÎúG¾æôxmªï5EØ|Ÿ]ìkUÇâë,ßgW{«÷›¼’¦#mözž‹L†y‡¯ƒ„Áqâù Ûä$]ó¨ÎZ<õ[DH¨Feδ9ý Ý (šÜQÍq Ï_¬;ùÕò2ïRõûéÇVâõü]v'_Ç<4ÎûGL¾HàDä÷°.Ú ãõ[x2p›E ð »ß Þ™újÀ3¹Ï³qžÍç ùý1 ·¦û¹œ‹X:}ñ_þp?ùvßSšg/>·9–CV¼Õuôqšëžþ¾ïû»®3ëöû9@W·õz›ë¤¾ýœ]âç¿Ö3OŠ•£Ï‰Ò.®¶8 èûV¥”Ôù= %Cšq…À!²¤Òðþï_ïüò<>íŸo×ñºöÅúãb‹˜8LPG€lʆ/ÄÜÿ•}à¤ù‚Ì nÀ%ü}ЕÆ5ôÊý6ò~Æúfãù“¡½jÿ.Jyeã4ñ%»¾ÁþƒäËá§~Þü´Âß³ï4ÏO^¹ß®?âÏ"O¹òÜLÒƒÊî&¸¦³Žü½ÄÃŽ¸•¿t}áïñ:ñù¥8Îñ´|nàA‰eú€Ë~·þ’s[™eB8` ¶Q–t·ÐuQàì®p‚¯–øfP`é!:EKÑ…s6ë£Ó—ë>qðÕYif’'Lˆ‘'/ż×u‚§ e“¬8¤‰‚ ê÷ÇüÛ¬ºD‡c¼â¢úˆÃaYtÅ“ü‚‚}(ž&ˆ±O“óÄä r:y?=RDî#–ü›×“׃ÿ·Æ¼æûm¾œw ó5¨©A†x)o¼&â¢}<æ_ºž(ïðu='•ÏQ×¹]1i+Øqôí¹L7òþÞü`?%㿱û~˜W”`'pJE©o刻ëËAé)öOâ\gÞªî£oJ^Â:óÆfÝéRˆã~(¯Ä} ©ïç²Î á 8§Õb¬÷+/a¢½ê~Jô»Òþ$ñùíþß<§ù;pZ‰ýÛßûâyûÔTÏ~ý¿ÏáżŸ|ˆº'ÏgNîuûŠ8]é§ÔÊst‰ÇPÉûN®Ïÿ+CáV¸•)gž«ä1Wºd÷³´oià æT'óþ+o¼²sqÞŸ -Wæ} ýëÌÞBópIØl7®ðU1,¥Å1Ðp ÎWöýÄ $ô–òþëÛª[Α·q.L­ÛÄù[ÍLÊÔR–7ózÌ9OIÝÆ÷‡)œÑª"ù|½ß¹çàù¥rŽ8òò„¼À1?H¡¢êç`•G²d#Ξû‰zµˆß—ù\Ì¡xG@ãJÞ<“w€ÏDL¼¾VÆâ·Æs€z¨>ÏEàTâSžŸˆuO†P`«¦8³^ºÄ/À ~å}ÆäßäÄõ+O_y½xN5%-;õùμOœ"ãiˆ¼t§î©p`S^`Þ™ÌûÅë«<Þœ7VùgpN³Ê4ËÍWçFÆ÷m¿¼ý´/ñwr¦$cííœ4¯^žKÓõ~áúgŸ»y½ÓÂ…ò¶—”TpÿŠïcwæq}Ÿ’gýù=¦ïG`Àk¬[ëÙ|?ÓzNÆ®ï/ò×*äðŸå×qnì;Òà¸Q³Ã" | ”ð@ ÇLÊB´~ú¯[o~UôrI•`DˆDfÇë«ö'a¬ïó~/ÌóÕõ~Ažß§^ßÉ Dy¾ o·wÄä‰sŒ8bÞ{'pPÐ-Îûí/èqÝÁy î¡¥ çÉÙ^aÅõbeœïþ=Ï«*ê+ÿW}y†BIœóÊ™w·øâ€¼Æ(þGžVÞ×íy¨#æ9Z;qƒúv?ؼÿªï;ój¦¶%à’;ç.ç5Ë  #ÎÉ=‘î¹}E5ós8÷`kœÃëÏ>KN¶’`}ùvŽó>¿w½ÃAý‹ãý\ânÈÓSõzaý(þ(y¢½¨žOïñâ}ÀóXôÁ÷ñõ}êÍ;÷](¡þîšGo¬Ï/3xœyyý»ïSgº·ß1¼óÖï¼O<}°øRÞ§eûÆ¿Gœç•(`Åëº'úŽ)Éj£vâhr;¸[yu“úÁ…÷iÏoÕÌs&ß‘îq‹ÄÊï`\l®¶ü£WåÃåÿëÇ NÉRøÚÄKb¡v†™o…-—%å8¾êŠîKäeà0 Ë1ïoÅ®÷Ãàa6áÅüÕýäÌ7V¦ñý8Qó9;pæ‰z/pž}‹¿3ˆÃŒwý—¼Ìc@ãø§ç ÷}sœ%hwðgí{ßsu>ó»ÁK œç†D{ìÃ.<¸¨ÞoŒÅKQ§ëýè§§¦9ÃÚ‰ã4×7˜}ÅÆzÿüá½UÞƒ×'oÀïóÎH¾÷3ïânëàhã7nÖÿ‘wZ{ÇÙ0„õ7ϳWØî¯Ÿ*Oög®œ»yƒuOß¾Qßö×ý‰|¶ç~UÏ9œÿRÛ_çô|ÇÿAeŠxú¾UÛs_¸rßÚ8G¡;…úŸçj=uÎQ×=‹çè™GTÜÜ·­´tÚUçnå}L÷- Öç~pgÃ}i“ƒs¸òþeuÐôïÁ~ã;®6Êïsx g3¨ßßî—}ï¾Bïú‹Ó~?HÖ¯ëû’L²<ìVêýytÉß;0¥º°÷¾Ô–tÊ’þìÜÞÁ÷Ñ”Åëó˜ë:QH@_ïà:|?q„ b¬ÿªòþd?€xgÓâàÜ ½êâ¸âqˆx&æÌ¤î÷¼Á÷ÈûÃy}²8N‘yè™O¬ïçõ}òzðéÆ<÷ÿõ}ÞÉÌ ª÷Ÿ<á¼_ˆË çÔ›*Î=¶ïÀ…²ÎygßoÆûU¿ÞÉûúuÀ†pX9$ãÇœß/Éøð$îö†ûâýÉsY¶jú|%>}â¨W}®ÿÿ2ï”ÿïòŽïWY÷ÌÍ5â>^ÿÂõïçÑ}Öó»‰}Ýí>°úðËÏÏâzOÏmåôàýWö?÷sw_=1î‹çùwâdÍý’Îõlš ­pIÔX÷;úîòh?õÿ¼cv+ |Ф²tªz-ehó"Ñ7×û ‰¾oå}v}0ãDÁ{ªÊû_uÅúíàJ¾lx"±o–?B}Æ+ëO ÷ŸúÆŸýÕ_¿q†2÷ÕƒGX²#Pž­ Öy_Ð9Lã‰,’øòæúLãû¿×K}ßÃ#1ÿ^ÿMœçô+ñèÙßãe¾Õ`ßrßÒŸÊÜÏ™Búè{3.ž/×ëÍy¿³^oÎû6öp? ðïÎó;½ÕMÂMóúd<òý¹»¸¬;éEúk½P·LÇÿ£¾ÿ»õ÷¾úbÝ$^GĸÞœöÛ¼‚`5Òñ"Yw´j»ëý'O½ÿ*Ò–zÔ²¡^jßy2½p¤}M_pà žá•u§üø7Ý}]æùâ¼Ýbâk³‘¯Óžs 'ÄœKàžõü<¸OFžŸþ>ÜÒ§ûÊ·y§‘¿Ç½Ä8Ã6O¿qß&ã›x}÷ëSü†£OÈúRÏIq}yô÷zøB7ðå|ð^îû>ßñàI|ÿàÅ⋼ísñw¾œÚ;½øœ¼zù9»—w¨¾|îfZ9Wã²zžçœMÄ|Ò¹{t/tNŸ>ºð}ârOÿγ+ðäå¾:ú'O ™Ésß"žÜγó>ó¼9ó>QŒ³e¿þáÜú~ýCg¹  ïÿ\ÏĸܝÐ7ÓCu¿åÎ#KE¬?ãôþʺ³ÿëq\KȧªÄ!»ÏÍĺˆ<’:yîæÍNÖïÝçò<ûßÏ‹ú)ÉqŸêJ_—:”+SN:A ádªá£\^醺 Jxõu« ›iôŸo®fyJÑð˜[Wx„Ã!_‰óÀû8ø=Ý}ݾï0žfÐV¾O¾ÎÁ÷'ûÂä½MÔ×è³Þ‡Þ7â;:Tüâáù\4ÞðeÂÀ}ªëËñ^_öÓ·õ<Ö®°öÅÄÿ)æ±ÝYÿZ¸¯…œ€'WÄ'ïlâõ¹½?Â8êÿìúž÷ZêˆÕF¨u6ü}ë’+çõÊÌÔ¿«ÔáŽÏYÄ1O— ò}VE·tG½ß_<Ž>P}\2†Ã­!Ò.Æád•‘”“rSCbu2K~ý8ÀÞ¼¥N¾9žô¡'q¡Ñ_¢ïA8ÂçÒ·û}Ò`Wgæígø¨Oªö«ò½ò{çëÃy÷[œMçþ^Wú½ ~º²ß eïÊ¡žÙtÀÂí{T‹(WÕ3›šÉÎ$‰œ[ }ròÜudež1vÈZ÷Ø?^÷Yh„œ$°3é;ä.@0Ö±8Ž„:Žu͇x£fÖó2Fl¬!Ä!€uêûÖú?×½|^wÐÖª1¾ ¦ÖA¶“Zµ» Ì‚«´K™«½Ä)q]«~†ØŸ¥.Ð㛯è©Uêb©žæ¹ùz&)ønúë kön”o÷¦ÆzHsÚx}1¿ûýù<9:WoôIt’”q®RÝÎêi£?¸¦ Ιó=Ÿ[UüOCž¿>+¸¦ý.];y¦Ã€¶4 ©uÜ¿K;v&ÔGi6ìxHK[ìwDy¥­G‚$Òb Ñ‘ŒÏ™‘ªøF~Ÿ8ï#íBÞ%¤='údR1–×RÈ*|v…P=B¤‰­RFåBO "Êÿê?ÇW]á#¸Nœ™S¥aê™Sªžñþ®ª_²ë™Ô7SõLWþ?žØïYqDÏ|Ÿ…&Í“s±JÜàø×GsØTΧ7m‘1(ñ«‘s®?Ž ¥û6ßJ#¤ß¯àJQÈ#Øï3¹nä~Ô³=÷¨Yx«;ù¸cÄTM{Åz?½‚fá½Êç* \8OnÜ›–ÒnáµoáAïÚ·îAÙ˜a¨U³wdQGˆJ‘’uµªƒ°Ðt_eCùJY‘î¯ð* ,c ó;G±NªÇÏÑe|…ÈÓ¾m•[ì¬Üðyæ{ž³{óy™Æ5ï»ëÓ¾ùz¿/Ê>A®ôµß‹ÜÛ„ÏÄå$ÌP„|ÍühŽÎ«¨[£Ò1s‡ùI’ ô_bºU¿gÜá:üâ% •Q¯+ƒxq:õwG½ÎsµóJسñ—Æzݪüâø~¹DTß>è0}¹ßi[K®Ÿ£:;øLáìt¯Zì)Ø7Ëyt(šU†˜¸+1ÝKhsׂo¾²îñ(Vì÷Ô…G.îwíç £õ¡¹@àé½~§æÿõó ½(i¼Øqe~¿ÂûòÈ^ìß ¹¤ŠÕï"Ä){Ø4«~ï/UÝOÖBÝà%¿y¾ƒ—›)ëþ^×;þ~ê¼S÷íò~ï§ýs®v^ú¦qchÍËVbĺó>»ÑøÁº_¹75Ê££Ýòóº•B5W‰eñV5t.ެ§Aãj¸FøÌf¸ß.Jƒ÷É­úâÆ~oÄÁ0S Ö½õ9 äq6®Õ™¿óÁÁâRô~ýNê{0ǺwÇÜïWúNÿïî÷ýÿÞ~ï4§îýñâåÅù;€§Þ{Â@Z»ôk§¯aÝÙ‡ßÏýß1°ö†¿ƒVÿÞ‡{ß×øŒó{&>Ó™…›:še"¡D(@&1Œ“óÀ5¼y„gogºG‚ÕÀé¢?Í?ëŸïwžs3Ó÷Ï«ׅ Ÿ¼£÷¯®<“X/ñwÚüf¾£×2eÏ åŠFæž{„VÆèÃ7îYh kFmÐzÞÍ£ðYiz3/ò[  ‘é×/éU$úŒ%£Ÿ½]籿´ÏÙƒ¯?}éX}öׯ¾‡æ©t?ÖeÏÄÆ]Æ@ØåA+ó;zRcX%ˆ‹*¿7zÅp—5Q3:Q…Î U æ bKíÑÿ±îƒõyªZ÷­û¨×—ié(Æ:ãñë¼/WöqzYÏëñýºW>Yáû¯Ì+è‡c¡ó“ßOƒ‰àPpÔGÒÃÄ)[–&< 0JŠ©ÓÂí?Xû'méË~è|›ßáNR£ü žÏŠ·æož›>’Å/ñøô(ÆÆ_ß‹ñ\R"fÚéoÔë½û©k^¦çÜd;¢x“¦CCO ¦„ñ›g!ì“WoPÌæf~—Bö\L:¨&ñòÑøpüy~‡wä[ïáþÿ2#Í/¾Âü^Œ¿ƒ0e2°A4.T7.ÖKª÷Qâï¼RGföù2ÏÕ‘‰±H'^·Ù]ÔneOfë8:[HbgB§ˆÊ;WlpfB=¼Fíö‰ñåºÁC{ „¾'qÞn³†e<†÷"ÄØUñä¶èCïÌ'@1û„<€#\ál‚*m› Ùƒ¡ã©Æ‚9:à`ÚÏ€qo&\“£RoÞ çþ~…¯û/òÌ„¿ ñ™”ßñóÉûçr=O=aÆ…ñ4žþ€Úð•€uÄÒ§KÄó×ÿÂAø4ê÷ªüN }b|/Ä’v?!è4ýÐi¦.Y Þ, 8Ü—|j_‰y )Êï‹ùxÙ„3ök/:g;ü¿#ßK ¹›OÃ磓ýÓD%Á¥ùu>ú½ò£ør¿'tý‡äŽWâÓ¦Šee^ú “ò*Üí 7ªßq…[b´HqfÒ€ +é¾/wêw®ÛÌägƒ—×É»ð½¿Íwü]™1Íc’|ç×4ñ>–ž—L~ïM|bÜ®ðô&€ì¯ºª1ƒWR3DŽ0_¬ð 5Ë£¨€y-xz+o2 EÐb[£×7òû{¾ýa>'Àsqègâ‡MñŽTD\Y#”®|ŸÈÛcþôéÒ§Ž¸“?ù¡.ø1îZI‹_ƒŒMQ<¢hÝÔh©…÷ÕÒ+¢à mä÷,ì­Ú~ÂÒŸt£~ŸÜ¯Ò³OÌïóéÿ'Þs†ó»Š¯ƒ{_Ù™÷P¿ï§‚ú±xç~ÿð¼~¹ßÑÐ_ ø `RÌøê"ç‹4Õéâ'‹¦º¹Á³n³r [¢RÏÌ6¼‘•<=àé‹|–-|f‘YÍ,â;ó7ƒ÷Ÿ2foüÈI|¿¯/â†t·WÀµo©;–xA]™Õ}aÊ^¨U’/h.¢4S~ÇRy3i07¥{Ü/é×µœ07ü`Ôãò ¼r°^Ÿæûž3†y{â}ØA˜¥òÊÐçÕo¥µäæþüóÊ}}`ÌItá3*º¹H´ž”rHvåÝ{tfY3rž¶¤G1Û`꾊zf|ú»¿]wú7ß›V!_À÷¦õÿÐöîJ¶ìº–˜¿b›’%>3I·#¤/8°"d(n9ýÿ† ãdí>«;×ݳ½0ÁDåƒA`€»‰î}SœÉ?§î}ÓB¡%hÌßnŠßs]H<‹ñø?ßQ'þÀü~s;8ή°»;3d › ¨ÈF9‰[9µ Ioµ°¤ïŸÞ—*é…Z‹}S‹ÿû§÷ûß¾'XÀn]QèÎjšÖ/å±ÁNëêKzƒ†›ÛÙ!húÿldÞÏÿŸø¾ÂkèÂYúÀ}ïÌ+ºïºY]GÕˆ8^Œ8>÷ýò}§®ÒdüoÄB&nøïà­Å­Àú]¿?»ïñGà3Á,‰ƒÈýi)‰“H¹(Q7Æu¶ ±.pþª~ßXç·YKüÐÖ]µXÏÿ)<3õÿ]D²ÿoø½kðî¡],Æ7`ã¶²êú‚^îïr5ÕÛŒ‹}Q»û7ß”÷Ïàªh¡õ¡ü¥›y»]¸‰Z¾ñž*_][÷ú{W°uU$hùÆwÒœŸ‡ùÊÝÂnlœr¾ú§÷Ÿ¯t¼€ÏetºG1-\Ä+¼­x'œ §T0ø ûb–B¼›Ê¥p¾ÙèÐCa£¸y ò3ûVÖÅżË8 ñ‹bžæ{}à šç!±»ã¼®y›³£ûÔÇsˆXwߪkº(Ëy½³s¬+©ï^Ø×ÅÍšã4ÒÍøæ—épïTQ£Þ´»;iGJ«)Êü%vIÜè!§¿<àÏäIÞ¨ßk_Ôô¾ß|ßy_Yoˆïaþ|ß%ÇÉ2¾‡æïc=ó¸®0ï;5Öï~}¦Î‰wq}íO*cê±¾Oì&vßh¯¯óÇú:”°ÔøcL¤kqäßâÞýé<¿Øß~Èæå»ƒf¦ a§¶õÌëèã}mÁ¼4óS‹ð œÿT¨W»ã1Þ÷øý·x›:Ïߜǫð ãÑ«¸)ó–û[ΜòôEÀ*ª/_]•ó‘ïÿîzüžñ@ø©·ü¡J?ö#~e¸êÓÀŽÛ¿‘䨯ºVƒwàæ<¯^jø†UºÕR`I"~\¸ t® &‡º´åÝz‰ûÀz§”qŸ†×ÓH~è®wZŒÇ3ý?ó9¹Ÿž£î»Ïe÷¢k—8ê¸ð=¾sQlìŸ{¢Å›uñ¾Ý÷Ar×÷½\?È¡û~é1L>BÝ÷¨/íwx_>ÏÇÜåÉÝ~Í…yqöjÝywϼ^ÿF÷ôkÊá¿ß“~Ñå¼Uæ#þï;ò²c<ñÎ œãNß$rĺÞY–?Mù5[-×=—¶¯§*Ò䜨J ПšéÑ‘áf%12¦’æÌ ÄU.Ç#2â¥L UÄ7WÞv’lú|c¼­™¿‰$¹^>±‰™'97\+[*ÇL¬Ž§¨þº§_1“¹cðÄáÞ–³&öVm&ôc<Á±;Í{~fG…7‘oæ\öpH_~óý¦{Št1‡ù]•ªá™ÆûÑo{8L×êúÿ;Ùà©~"B¬Dεùán®›[ëìV»pu]ݬÚ:µÞ,VÝŠ˜Åù,ãöt%«ë^¹í-ÎRøÐNŠ'Kœ©yß·èªûX¸‚*/]0ÜX :h®°7B­»äd[ÐÛôà}ÿ ¢ûŸ¯°Í‰¸ï Ž$Si ÆZyÜ÷ªÇ  zùX¿HŽ4Vþâ1ŒëƒÚ ¥a˜ÉáÑ/žxwWX.VOôaÏ ûAÓÓ\žŽ=þÅìó®ä­Ð‡ç£œ‹?ŽJ{ûÌû¾¸Þ›ˆ¾q¥~˜:¦®œé‹^ÿΩýö×À {A!'Uï{¯Çî®v°Ÿð(±»è¡oÌó‹AÎh*1J®yžˆBŒó¾=v Çi;ŽÂ…y¾vÑ;†Ï S iǼ{Ñ£g%Ömd”Ö-;I FVï%dÄÑXQª„1GvîëY*Ç'bSБó©L…#mDŠ·"ÅSø–G>)¶‡^öéY6¾Ç:©éì ¿Ž+‚ÀîzÆÿÐ|ƒÆâ*$¢+³Â¥ ¦éU¾;4íwV¸6Å:盢Á%¸âûßʉýÄ|£õsVÍ7…4w²‹a¥® ÜWÒíotÍù©s>º4¿zªŒ ±5zÌG¿™/ÿð¾#.žËTãNê3m—ÊŠî„C…)¸F2øˆ0ÓîÌ7S×å­túÅ énœÉýë#ß"oî¤>©„-DÚ&~á³§~t>Â…;‘ù–çyvâَЫ3OÎëeáÏ#Bàõ•­ÆÂïc…å­½þœŒtú‘#Ÿ ýÒ™‘eÒ5#ÅôC3‚p“îÙÇ–Êœ¦Iû+O҂欱-ž:ý¨IYB+(LñÃ"¶7 ð‡c|‡¶Ð5ƒÆö ÿnþ_ðéy/p¼k¬öy}io5<·wFņö´‹ŽqÊbZŠÖtÏýLYìMÕ„‹Ùf½~¦›²Š wá)ønw» Ø`ýàm´î1¹'Ð\ŠØ}þßœâÿ霃 Xë…hùˆ½ð½d6*Ñ/ã½­ŽÕ\œƒ¶Oýà[Çrn® ®N¸‰×ÕõZíVð|â4Üog O >Nç{¿µñPö–1Þ¼®«›µj4Vv_åŒK™™dW±}S½ÕGª-¾žSpe{\޵Äsï—²÷Ž˜™OW3óÚÐèkÒ½yŠß—²ÎnVÈôߢ2üá}_H¶Úr™«$ãÁLÝM¬“àAƒñÓ=yH8òP<òXös‚>Y¬ƒd3æ´öïP_þtž¿ÒÁûN[ÜÏÛ•÷­:vS¹×’¯4Uœ®VÏó?ö´0_Ž™3v³8g¬E±˜íXbøË±š˜Wï%TaÏûî^4ø^ÝÓ{t7ØÍoªÔÿÜ¿¹¹§ç<¿4ï+ñßçõ±ôžwú3ChŒpXÀëíÉVCL¾>Ùhˆÿÿý¥ËWù7Âë(Š÷þÿᔀ;ôoÖñ/i+ºÊh|b}ìB¿³~ å–`Üûüœo<”ýç›vžš?óÍGî;Bñuѯ„¼ t)¤PåH.¿6Ý÷Íc@ÇÌŠb)0:qßù±•ÿLÌL÷EpæqßpF¥nh}iýmÎnb†b5ža©†.~u¡>±JøÿÊÝ :üý¶óûãû®Êa€ôîÂ=¬°öwe4²Ó˜Ý™n ø«ÒP%]Þ>fµ/[”Õ iÿL×:Äè ³%§üytI˜jîºü zØG—„ùœÅŠÞöߣfËÎR‹úêNúóLàó<«¹îA‡2hTy*ß)h Ž^êÒÁAúë“r5@_¢õ{uñÝ^GÔgÓß×YÑ'Þ{ÄnµÁü³@7ÏÓƒ1ùá}lç™`Í}l¥ŸiH~èÌXqùIoÒŸ™o˜´UÔè´> íF²–Y~“1‚[ÛÚAK.«îOw9±sÚßJ>ûq•þqµN#ÚxQVëhÀToE1ÉAG§AŽŒÊØr‘¿t!=IÓ¾2Ü•”XwEg„9^ûJò¾÷óݼY6tD¾¾éÛݤ#Æ7µoŽä‡‹¸NÌë…¥#ŠÌÏf.wsáº:ow«+X÷æoß›?½ÿX]ZYê¢m/ÐÈ1l´º0­±åôšÝÄ[åóº ž/Ÿ«§3‹âÿøþ7úKß÷g¢{HC7ϸìÂÛnÞ³kZCYnVß=ŒKúrÝÏ›ªšTÅtl³æþP¶ÛÚìÉ÷_Û5Û Ýc¹6É–Çß®À0­Ef½’/B5$qʼՀ,Èï)(Ÿ»Væ‡Ï®þ•žýt_ÒŠR’¨×¢ç^Ž'SE¾éðjeâBÔs5ѵ>xɵ6âñŒÏx˜1D´¾t¯ 6È zÍaoôGeÿ ¶±&oN¹¸" 6 ýÛt¬¥¹_šèú;\ü?}ó‰K™à 4ð.ÜÏ»1Ke.¿ùÂÍ×ÎrU¸m𩦾¦ÎÒÝö‘4^å2m¶ºÓ¦|ÜúÛØÈŸúœêDs*‘7î§:‘6û,Å>háÌS탮û˜y:óüær‡pTl`¦Ù¢;}Îß ²ý¹Ï+i-¬œÅLAºzæŽHQ…fš†™éÊ•a‚†Œ™Š3÷ÏLÖyÿYáPÖg@â~ùäK>ÿÍ•R½›=›•÷›3:´ ¡ χÏo&Í•„3Sg‰ô¼>S1Ž÷‘ï' “âþÅÊ_Uë÷?|èª<í¸ß“÷{敨,ïÑðÅój¾ÿ•Ïú•“e(O¤IàBa»:’¾³S2é펋ÀÝîȸX¯ç#DÎòtJŽþÜŒá£C!=©þ‘ØfCÞú¾”Õæ²/eÿ5üwnzsw$_–¢2ñ†âŒZ|Ц~Îø[Ã!ÝÖ§ä÷vrÏÏd¤…¾‰á0èóH 3‘ÏÞÕ³ji`Ÿ²‰ŽÝÕ\ÚMÕæWürj%FçÅÝz­…»ka~âÍ—Xmˆ/÷û2ìÜ:ojúð“»ã;}žösw\9Ý·gœyÒÇúÄ›OÌŽ¹FoîâLs»—ý&È(ï–CuOjaƒ C©2Œ‹™jŠnóðù{£Ïý.³îOï?ïwlþ†û=­)ZyEoûü›{¬izѧäÊú?ìѸç)B÷ :|¼"< ~ÿ 1©Ž=תGt¦mbR9zÓ¶»¬É'å©F÷8jü3zÄð,|ÜOd¨ÁS©ô|ny>±²ÔfŸžUªU‡ yÿU OH+ó¶ç£ïé\‰«°¹ã{(Ú“}ªGø O^ùþöhÚªÝì{¤­=ng-ä¥^Ïöl®ª=q'fÇÜþ>ºcÍ+ƒîÿg2ÁRT÷ÅVϯù~¢Ìá›ï×jk²ŒàÏ¢ÏÏrvDFi¤\oã…pÕŽ8?‚ŠºÃ½>笷ÑôYkU‰<4ÕÕ>ýÄJ š¹ Sqà5S%•A¨JˆqOÁèCeŽÝ쟚yø¤‹`7àsŠö›¼§lÞíîn‹ßüθ%»V7vw)“o| rÄß´Ò?Só“3Ã¥=W[öoïf«|Ϊ™¦Ð笞i6áI›wÇ_£qùQs=»ß‹+õGªÊ±6ÜOÏ`¥äýíö!%GtÒÑŸ¢Z¼ô9oï©èS—‹3;V–‚ç1=ót­$ŸñùYUÊ®8ô9ÑMEç•EMA¯Ä¿¿LWbB ÿÞ3WÚiø)æ*w¢Ò\Ú}bå÷WÞ‹tµçy}ÎY£kÞOgô­ù{‰÷£¡G·ê=Ãå8ÿEú3ïºuã÷÷ë§O?Ø©ºë=÷8d´§s5¾_Ø#(zëþîä1oejúÏg~¬„Û¥ž­Ékg†2wÄ{ ¤!K0fúËÇ‹ôý3?+ ù-l2„µƒüLvrŽæÏSY=5ç·oòÙíãÏzÄ‘ëðÌBŸ²2Ç–q;ùüŒq÷¯ÇûHfò…83€8@ßð¦gúÎ/a8®?(ý¯ŸqçK>RTcÕªþ;­0º£/3ǯŸyó r6·ð,˜j Ÿç²ÏÃÆ>ïß\¢»¢AyÎÒù<}‹•¼6G'˜Y[Û±2>ßœ0vy"ðé¹ç’gÃhegóÌ© DËúƒ ‹=˜V^ï©WÖœ©ãØËôäžkÊçÇLÞí9öHŽîà¥?ç*ñ½aÑÝèùÐǯ·Ï͸Ò]0þÈsžsý¥àÏgþ¾­äÌ?Dg´†>~óý+Å+ÅÏè¿5Òë^9~~O“žíúÝ9ÅŸÎüÈdgðý‹¡ùú34?îK?£=8T­†k šg¸Ë[‚ÇÅHÛê\ Ÿ~œ'¼ìÇ;˜V§;`¥ÝóñÛ±›Šaí|Bܹ²Ðg­¬¥›ãC'Œ õuá®-Ÿ‘Ι;²ÃÊÅ™+C¡ÏŸ+÷Û>'|Ö©hCCoø˜½Ëêü’æG|Φsø¼ÌmXŒÓ7ç64ÎüÝ'\}"¾ÉHû±ä ";÷2«ñKšF6j,ôõnø>'NÈQ'#ŸórôGÑî™®œY8Ó ¯ 7}ünT÷»øœ&|êÒ˜±A7Þï¹;ú=÷lLJ?Oì{ÿdœ¿2ÚÙâ5øÊs•ªúI¬”\i—WÖ°¿lØV"wF?=FG·÷\[çŽû¯úœãüó÷±#“ïã¹ÛT¬;èÆh(ëúÛf§Šª¸½N௪ù§Ýn‘Í=@»xÎ¥hn|Êú ^ÄŸÎüH×qY²upÂ+§Íûö­Dý6òDבûÁ™ŸpR ¸ÿ[õM޹D:¶_8ðýÐ o·Ï_.Åù£=\C+»8.™wŽ3O8{ëÈ}¨ÝYkœi*wÇs*Ë¿2}ÑXщ3s÷_òÍçLÓ=sˆ^žy¶fû ‹+C÷LU™•Ø2NÊèNuÜ'’íC¹URolQ¦™‡qÈôéuÂÈ,¶^Ø[ûœyÚßfžùsæÁ‰Ö9ó0ºô›žŠîóG4¤–Ûà~6úüÞSɇ¿ÒǼ9s8×jh–>*g2å^1Ž^;OP±2“þPV's¿91KóØÂjü¼Ÿ{÷»mö÷ñóp®W Çýï' 3Ûõ™ŠhÄéî?ªrA+ãÁÑ5Eƒ¦ïwDŸj±'t3¢ðÄ6~¿yÿ«ßÿ›¹UË+ÉäžîCç\IJèÍåh£7Õ>ÿÅhZ­ý»èZC4ñjß¹({|²×BñžXXõê}ùÏg~D ÷Tˆ‚2£8‡“¿˜¬ãÜΙ¾zKÐÆI˜ôù9â)ûR;àˆ]íù!¬ïWf+î^Õ©\œ¢™ý¦Ï¿œÅYé“>YÇY9V¾Ù̧­Ú-»^‹éy9þGâüÌÒ,ÎmØ¢Óç×îÖ3Ë`ܹøËèô93¹$Ó¹$8ÊCœ¿É‚¾Z~"Ú³•‹àÝnåL¢èÁp\xf.£ ·w»Êj»ÝéôñoÓ['ðŽC7æOÿ&Nþ‡oþ€~ÔóÍQhÉ]Þ‹(øõAs–B7ê4}âîzÅûvýÖçÖU£;NŽ÷›:œ?»ÿME£j¯ñy})@ÒKÀ˜½P÷)Ћ‹ š„üÒ.¨Û¹“ú™n·p6=<uð}G=Ü2ÆT!vÑ¥.@«¸;A1æ]eýê q®4Ô!ú&ZjÿæP—^ºˆ="¸Ò­ \j.’žXG,¡ÜK½ nU­¼n¤ðÏGñ>âã#§¨;j¦ êkY§U’¹Nksgkí&†ëëÂlÖë¢à ÓG zÙeÿ#šD©gFÏ@ß™¶”%úݺ&:ræNKÌ‹hËÆÜYÄèáJý`î$ZrxÖ«ün§ò‡÷_Øgm³Ð2ê°b¾iîz½ˆùÙ³+›¶öêzÞê.…¸ŒÏ-Öµ¹>1èðôÛú]Wã?|ïo¢I5&dìÛØõ·¦Áv]†Á¿ŽÂP†ã¶Âmû&²‹J—Þñoä´vBÈ~¦.z°~v».ú&–Qâ¾MýÎú8¢¯ß®“žìFp¹÷Ý]˜Œób´öÅóî>?ƒ¾ ¡t+¡(waqgÓLÎ^@„0e(wª×x1…ñUˆ¦¾Ó‹)G[A®µ,ýHOg$Þwc«i}åûK•X›1¤ÂîšO0ïÖçz¯¬?_Æ2­ÄRjÆÓè¬×ýˆ¹bÝ—º,=ÝO:o¥€î/Á ?›¡°ûÉ­V)¨DTß—µÙO^m}ßׇ晇%R߉Ê^àWV&Ýp¯ÄaHÜ…Æî'\OyÜ,µ©uõºÍ˜›Çƒ¾±’ç z|fžç[z+ó.hàë ãíp‡{_:5̾5Ï=‰Ëp¹7N©îK±çÎnÔ÷ô) ý¼{|¨;ð’?³d€®?D_×üØÉ+q¦Ôõgz¾*xõ|£®?‰+¥®?Óóºþ|$¢V*;kÀ9Æ×Â˼Û…YÃoþMÔ®K@07Att°³Yɵ•ëR‰»Ý¦ÿŸ¸–zM|¨Êv‡€A|5B„/x±#‡ïþb.TWnOWGúÛ¥ú÷ÙÁ®ª±˜Ÿ=~Û‰ñ}úpU—\c#×)Se zËaÛƒM!ÕETÍì×np®Y9=û¹ƒÖ¦Ù û÷½°CÀ¸|߉'x³.còÞëo÷½ý¼ïúýÓ9b§“´;|ëH¨û&æŽ0ñE(Gå}›8q[¸-[ȰÝÙ~܈ ;v“:[„®Ïàâob#lF/£ÙØ%1r°Ðvv<¹Oüän,5ùø•¸øÊš…v_{äf!Èû™(Ýs/:u†Nøð@Ÿ¾;A'ü•6°¦è>Nl†êß »¹’·rë°v\Ä~øÔ|ïyCý ßûɘÂXjòIìÓ á;zoÛë!x/Æêƒï|vÍðy8Þ§pñ'ñÙ·ðÙ…¢¾:2 Á³…—\ùÞwM?…ïýØìE ¶.Øð[s•`ÃÕýó#çåð îûíû±.~¼ï›ØDwv4¹\Í¿?‡›9¨½ºóÏ눙÷Äv"Xþ‘Î3Û`jmp¾>Ú­°ÀEx/%lµûßL?D#ÛŠ*±Õ ¡ÂñþÇþ(†ædðãÜûäÞHÝš}ÊKâT—𨂯”þýE »®“ÇÀ:ÒøCëkåíÀk³Õ‚Üëë`T¬ {d¸-VzøÈŽ®~Ìójج’uöqXçg°Õ»Ÿ¾1vƒ@{øôêt5kÑyrçñaÄ^.Ëc1·}þYðûÄØ4–šc=QºU÷‡òCáïÅ>è@Hz83~øð¬Öº·û™ðöÞÎ\Ävºoã%OûøÂÑgEô}}Ê¿á©+ ¾žØpv\bÎw¯ÆñÝ~§qÄ×ù^ÿ˜›üN{µ­ÞZ¯Ÿ9¥Ú=«ßüJ¡yW{0ê ´IN‚zá„jOúûK`î[,i7Éþ@Ý)táQg½Ïì¥:>ÉôçWw?‚™vìG0Œñ5è¿Ww¶Ä©.ÆðjÂNr_ŽJ¬¶ËXH›k?R»o{¨œgÉ<& MÝÂc\îe¥ùFüÞþ:qª ¶Ž½ÀƒS}ßn|ð‰ûÎ}!h¾þÃÜš2á¿+ö8½¢“$…µVcýc=¾™?ëi³ßÃõ»~d}eûƒì;3 -xüþë„üÞÜGUÝJƒ©iQh×±6 iÐû1ݵ?Ô@ ëf/hÎËÝýMàßW÷CéÄÅïêçy]=©Ñ7¿_öç+c5Õûƒ˜çÛ‡:5Ǽވ‘98ÏOúÛ—11ýwU©Áßvòy|){g0F~«¿Kbp*ã…ÿqÏá³7ÎËÈÄ<,?Ñxëz¯Wvª%>ûm?²±Oc5îä9”özOöOÑþøìŒåüîß{õ,|Î+ûVM0ýúÑ,¯«…¡9íO·0äî¨ÄF&ûÜŽ‰ö‘¹<¯«XóYˆbü‰q·ù{ö[ÂÁßÚ¯éŽå¿Á^ýó˜Ù,ÆfÌì"½Ô.opŠáÍdEâVÄn_œ€ôpO¼Æ‹$Ž"ӘͷÀJqgNÞëíö2U·¾2¸i äÊ&æØl&Çm½VÙÞ@¥••ÄøùG  öÐpë‡ “§cNÌG®ÍG¥³a­SJgÜ®¶>¢UxÓ¿¦w‡opD†|È­w3vã]n½Ú.»å‹Ð÷·ÛWõú´1ò¹Ž\§·LÙ (ü ´BýüRî›1‡O@´ßás5ô¬GhÝ›z÷tïм`gèþ&> mÿ†Xן©ó)쟵ݲ™Ûj·ˆÙ샼{ö¬Ugkç:ïcM^Fš¥GÃüÖ©(“o°UûT”=Ù°Ê ÉhM®VÀAî ³U¹A’4™MRŠA“q¨{ñ÷h”XÈo寣áÕý;¸?Ô‡ƒÆž9_}9Ù¦áÅZ ô!pÏdœËtgì ðĪýý]*ÀÙxžG5?”ü´æÑW&׌â¤2¦á>­Ç+A‘oƒ7 >Åk8¤UôÍñ†' µFÿM#Ø?NF¸•°×8á8OsˆB4MMPäãt…&·WF>›Ä¡kŽæ`“8÷D¹ÞùTò\µ®Ãp45iOòM׆+ÁñHØÇ/L YeW­m°|êõ{%Y–Ï”4ïå&ðKMP¦š*aO}UL0·œIM?B¡Ü<ÚÙ[q…Í0Ã~NÆcÜûw˜Ÿ:Ó3«WEŒÙ7ÎÈÎîʦ!žNO¸®ÞæÞùn>ˆìò£™Ùƒ÷ JxÿL]ÏRs0GpŠ_Ú)tüv÷’QÀ¼ÓÝé6[)R›ín·ºAÌr#ûÊâ,>Á ýº?Õ…•…ÀÅWF\<;"Cí‰Ø,×3(¢³Œf¡ˆÏR’™#Bk8‚ÈÁ~脊 ³‹ã„ŠQÇßN¨2Rà*O8“]QVv=¡GT­¿9AÍ<¡¢õ©ˆqe&BUÄøb˜wÉi¯õpR&÷¶>¡â\˜‘ËégºHýqØ!‰õêH»ÿúk°!A»ññ¢Ò£¹ÝX¬Æ Æ1©_ñk÷Ó‘œ] ¤k có×â 3ºu/ì=6)üZ×–ÜvQ÷‡Ý¿þã¿ý/Ÿà_íïû«Ü¨¢û:9È^¬„%«<IR¿ðkœ¥§§©+ có×â`·”º©­kK.»¤{Úýïþ׿?õï{7yîß&këEŒÉ3Â>‰¸¡(Üû `¤”³ÒÛº¢06-ÎbSaî­kK.»¤{Úýò¹v(êV5ãÁÁ`esȺуøËî}Ç´™r”ÿ¦®(ŒÍ_‹3‘@i]¸Ä96(þZ×–\vI÷´ûåsØÔkç÷*Î]øÍE»Þ•ß#»4’â½ç+%ùd¨Iº¢86- ·­{!³Êc“â×Ík[.K©ûÃîwÏuÞ¡T–><Œn¨£âÜ}»Ò¿ðÛO)? ìÖz"0*~*’à©WÙΣŠÀOqMKe õN[ÿàô8A®¬†øL"ÜŒk|FIå'zÈQ¸‘º¢0v~¢ÁÁYFêê£ÓØ ò=ä²Kº§Ý/?Ñ <’€XúDÍvo¶EAé÷#ªS帠ðM¦ INä]ëšÂØøµ9À·²n„Ç&űymËe—tO»ß=WµB“v­QÕPoÜl¶ŽZ¿ðSÄŒ,E\Çz$0*JFgõZ¸óÊkJJk¤wØúîQ.Âg±AË×Á@iÁoA¡ïý—zw‘CŸ|¤ìÏ!=?/™ô ŠB5* ü”×”TÖPï´õí‹ézÁcÿ:9ÓÙ÷^©^ødbÊÛIñËZ…åíj¬k c{:™<©‹í^Ž]sQöµ%—]Ôýa÷Û¯’° ϳL ßê,£g ÚdJ;)9í/¶ò‘®¨|¢ÉÁ£±.ŸšÇ~ª¯my7#tO»ß=Wt£jͺ–‡Q3V[þšÍÕ#ÛÄ/ü!Kw¸hÖ#QùS0¾×ÆÒ­7X ÏQI𧸦¥°Æz‡­/×Êåfîž8f³e€-ê»'…{ÍD ”7¸oTM #ó×âÖ(uqjcƒÒêZ“a£ ùÃä·K& Ýk$è6-™ä,”ŸÄ²¥í [­XòFRüÜÐ|Ãò §™Öűñks¿³î6 ›”—ãvÈe©tO»_~œ‹ÄêN¯Vœ†„÷øî# ¡²^Ü“â"Èà¬åL³.)ŽÍ_‹ƒ€ºu+jŸ<6)þš×¶\–J÷´ûå’_í/ É/®™æ žOÕ5€=¸þÂ9SRXàb¿ÈW–º¢06-z®¦.¾î;?þ¼¶ä²Kº§Ý/×O¬Výî~…ÍZÜ®ï•ÿFàfá Xij(ZŠ•õDt¿¼f áÀz8cô¨Õo®¯I©¬¡ÞiëËO´`s˜¡Èf98À)ãv~ý£ 4/ ŸQY¼¥’oÞ|éŠÂØü59gÏÖ%"¤Ç&Å_óÚ–Ó.ëžv¿{”c±§c!ÜöÃ@âÖØÎývWfeD¼ÙGDi”´óÀz&ŠT1þUé5ü§•þC^“ YC½¶¾ü*'’@z½CHÞN`¬¸q =­…/çBDÇò«ñvS×Ôå¹993B]©‹³{øõÎkK.»¨ûÃîwòÂy{¿†÷šf ùBÁJ¿“!}JDØr!zn)B¬Ö1¼×4£Çg=œ¶yTø©®I©¬¡ÞiëÛ A ûNM°â`Såˆ<Ѱ_î '´¢p»#ÕSM™kêšÊur &éVTÕxlRœ`ymËeuØýò«duõ¾*’ ÚÀmYMyÓ'—”¥Ò®Iš¨Èèȹ^G>†F%Ÿòš’ªxˆz§­/實(>œ`“ƒSºÎÐq4‰Š5΢øpPc˜r ‘¦®(ŒÍ_‹3ðD­Ûý¬¤üšàÚ’Ë.éžvçÿºþ§1÷öûØõû×ü_ÿÏ÷Îà¯ý¿µ¿þõßÿ‚÷ý þ&b óÈ÷”𯯿þÿü?ÿú×ÿ÷-þ×ÿÿû_ÿÊ ²Þ‰»ý0°!7s¯±U‹Îfn$ÆfJ#³0»z&ºßn3°!°¶ 57¾&¥²†z§­o÷úÄY“%ç’ ôWžd̤¸GnÊ™‚b]QÓg@ÉŒ²J—S‘ÇîÞoæµ%—]Ò=í~½i2αýªÀ· (¼‡»¤*dLd>K¯ìZr'‘!c3Åe=Ô®xTø©®Ii3Îrè¶¾ÛÄ‹QÕœåàÀ‹ÐI"U´Eì Êa›ñÈ/@™XׯvØœ‹¡mé1Çå°M9ä²Kº§Ýo™‘|„F2C‡ÌâÀÍ Z^±Æ§$…ÐJkŽ¢BÞÝz2tMeÐ)9èé—º@ʱçs$­kSn»¨ûÃî·ÏÃõž>POð;´Vf~ö›•gRû‘’ƺ¢ÒúäÀM]¯åØÝ‹U^[rÙ%ÝÓî÷‡Ì¥ˆ±ç!sÈoµWÆ«;›‘ñìŽW*åDµ®¨ô“Ój`]ài䨠~É’}Èe—tO»ßžT¶¡klxpÐ 7 [¥Ç“Šz€¤¸5„[–œùóÖ…±ùkq*ž”u‘K“cƒrÂI™\vI÷´ûí÷ t“8Ó½«¾WBF–’LOv¾©T~ó‘9K”Ææ¯ÅI”=¤ˆà0Vc‹â¯qmËm)uØýö¹ªiZ}ζÄiLÁQ£äÎôBw‘â½gz¡äZè¤kª>g[Z7ϧ¨‡Z+Ç&űymËi—uO»_>×€¼c’¥³-sЬº)d–U&ô‰â)ÇÅïFòË_7tEu/—ÉA…Cê¢gUŽ]ó-ðµ%—]Ò=í~;/\¬l88L–š*äE¿‰AüzQ\1ÓF%Çãµ®©+wtæ C?uQø–c÷ÜÔùÚ”Û.êþ°û}&A8jNÕ|8 )h•]«ûµÅ™ãJʹå‘G——™º¢86-Z‰[·" ×c“òyèuÈe)uØýò¹²j¤ 5»øâ AiÜû8jeÎ8žKR|R+¦å3ÎíRWT†z’ƒpMê"”“cg¨'¯-¹ì’îi÷Ûï•m˜Êð fr˜{%~¡#¾Çí¯wè{­ÅÀÌ!¯jK]S#Ï0ÍÁö5uÏ05vóV"¯-¹ì¢î»ßomÐX@_'§1Æ-&ºÆöc$å­ÍuÈÁû›³sæöØÞÚ€ƒŽÎÖ¨yöؤ¼µi‡\vI÷´û­ßtG£yîëä 3EùM®j±œõ\ãé ð'¤JR>xš)]S›¿U¹©‹Â¨ý&][rÙEÝv¿ÏèŠ5¦alÂ`!rêLÊ{‘û£|$uE5'£%]pR·à´ÇcƒrFW?ä²Kº§Ý/1o§ þ«f¬c1”á !–>q“]ØŒ-uè™È ÉNxõ¶RåFuú›ö5)½£ð­÷ÃÖ·SoãFˆ­_'¡˜c«U6ˆÉ[NP9™îGÎ"ëŠÂØüµ8@K] •æØ%SŒ|mÉe—tO»ß.©-7ÅúDÍa¾cù¸ÅL ŠÍHÍgT'Ëw,¿˜Ê']Qù˜’30}Zí[sìžS¯¯-¹ì’îi÷ÛO%u­gê p<ØyØ‘BÇ¢Òù9äÌîµ®¨u.Àà >ÀºëÂÔª±I9p±¹í¢î»ß»À…ɬm¥ µO ²à†¦ÂŽ njKŠË±m,'F¢uAil»Àà ì[º••û[”]àrÈe©tO»ßçEïáÒ½¯“Ó¼™ÙŒØ…‹;‰ZLêo½ÎhbôJ×TMXœ¾éÆVcÇ:‰/)nmxmÉe—tØýò¹6ÖIÏg•)$Éõ§³ogµéHŠÛJBÕY®NÈÒ;ÈþÍ™±‘î Dåeçǹô¾¶ä²Kº§Ýbbià:BL e„r.W¯>Á‘”Éëó ɺ¢0ö‘DÂ+u–&M*CL‡œvY÷´ûufPc£Ò5œ¤5æÛv"äÇdWZäðô$°ø±Q½¤3“©GUID`Ãz@øõ¨ÅÇá¾&¥²†z§­o—Ô‚âÆ: ±|pm½“Ê:§Þ–”§ÞqÈ `]QÛSï`K¨ˆ'XÁ°Ô/í«Ê!—]Ò=í~û‰"š¾äåOTœ‹•ƒˆÄÆôù¬‘ZQôL±´¥‹ uMÍŒ›#?Vºø—sìþÄŒumÊmuØýöåN0Pä*™ƒÎ»±ãˆÒ§Ø.ð5/SöLçõÈYŠi]Q—c'ÉèHêæ1ÇÞ¿çµ%—]Ò=í~¿›Œ™¯g73ºs‘cG18™ÆÆ£oO­J‰2´­äC»PêšÊ”¨ä ­)uÙÈÏcç-е%ÏÝóUþf÷Ÿ%Û®›0¹gÇ,ã„×(Y{’mI“©åN¶¥®©'7Ïœ‹EaJÔÌQ&ò‚òN©rÙu¹àì±ûm¸³*ävd49h4…¶TZ2JûvRŒ'ÞÝr¢TXWÔyóæG5uò‘cGFóÚ’Ë.éžv¿ÍÐD2U%Œø×ɲíP ™LÃÁ*QÌèÀŸò‹³tE•\€ÅYhgmÝ…N¬›Ík[N»¬{Úýþ{E±sŠfr:"ôuã+¾©–”¿W€+S>ØFRº¦ZÆÍ’SêlÅ=vÉØ¢¯-¹ì¢î»ß¦k^¼ì¶«dëö"-2‚a¬éëì?- ©&ßßÜz京+Šc31EøHÖe•ŸÇ&űymËe©tO»_>×P–‘þ«rs*y¢¾ñÛãÐDqX“½ìòCŽdê’âØüµ8 ¸ŒÒ-7k'96)þš×¶\–J÷´ûåsm@a©wc+œƒ3œb›Ìð>îëJ ÷žð4)GqzêŠjžm’ƒ~$©[˜ó¤±K&íúÚ’Ë.éžv¿-z¸™9ºUýp<}Šl¡®JT”‰ú¥· '' ‰LYéŠjéy$çö?ÙyK"¬¦±[z¾¶å²”º?ì~›vÆŸô½¯“Ãô¾ (Å0•@MY´ÜÔÕ2íÓæ_Y¤sì’iŸ¾¶ä²Kº§Ý/ŸëBFp¼÷Ê–4§¢|6¨([ÍÅ@´&…{ˆ3ë‘Àº¤86-΢#@Ý‚y›Ô/Y²÷#—¥Ò=í~[ÿ‰dx.JÐ5g²e}ì¡H.+IáÞW¦œÞ¼tM ‡“ƒØRê\.Çnæµ)·]Ôýa÷Û}[t³Þ×ɹ™¿¢žJÀ©D·¢¤2\pÈ/®‘Òue¼Þ¦oXw0÷ep¿yŸ£kK.»¤{Úýv}ÅŒ°ïL¡c{½Œ"HB2uA‰ú¥o{r”TY•Äùób¬Sб#»=. /Ã5¥2ˆz§¹ïëA#ÞU‘ñþurˆp<µjvº¨yåÐî}ÈQ>Ÿº¢ªßóä°#¡t£ §æØ¤øk­º’Ë.éžv¿M£Lììspж ³5g¤q"­í DáÆóƦ|1aTº¢j–˜ƒŽ2ÖŽc“â¯ymËe—tO»ßzKÌ.Ó3Rr¸–Ý›pJ\ËVa7Ì;ŸTÔrÀÁY×ÔÌ'eÎ`´[ºÝÇO#)®Áº6å¶‹º?ì~ù\;šÄ‘­r “ƒ‚ÄNˆ\`ª|$ØT¢pïÁV$„e‘®©å“Øäòºlëî±Iá׺¶å²‹º?ì~û\QN)Q{깊ˆ†pùPº0‡t¬¤~é-(‡|‡Oº¢Z”šSQhn]¼•9vÉ‚R_[rÙ%ÝÓî·³/\‘uÛ0C{¸& QƒÎ„sÜ}ÔR$6XÄm×Á „¬‡P®Gö|MIiô[ß:H•·sBêà`ïGäF–œ´ÀÅn`ʰÀY©+jäé‹9@„H]ì[rlPþ ËýÈe—tO»ß~¢hˆ‚,(9¾æ`›ŸQ81Êñ‰¤øÑ!E*åHhH]Q=·žæ o9u‰'籫ÉóÚ”Û.êþ°ûí†ÜqÌãª9¨ *œÏH¬/؂Ԥr‹rÈ¡u¨kê~6ªâ\ÜlJwz#Z“ú%Kö#·]Ôýa÷[ˆ ²>µ%ftG\¾÷ˆ“PQVfâ~Št]Kïp]¬G"kKÌô"ô†ÚbÔ§¶D×´”ÖHï°õ}fw¼êÙ_'2‘‘ŸI3°“ú%Ïxr4=±®)Œm²Òv\Ž= ½”צÜvQ÷‡Ý/?Ñ›©ÄÙ"_'ys¨ïLV\,O ŸÑÍVG–£¬)uEenŠ8ú^­º‘5§‘I𧸰¥°Éz§Éo¿Îy°OVìç㛉ê•Îý WF”¿·uÈù¶YWÔ“n@•R—÷Îc?)à¾6å¶‹º?ì~»€âž-Ô¢~ T«Ænáû&.ähǦâû’à.OÎR®9Bñ™_à^ˇ_¢p»7°-S>ý¨ïòPWú¸æLfƒHwÀ‡õØ#}\_[rÙ%ÝÓî·_'š&³óü×Áüª@bÅßÐoEñBåì”.U¿ƒ}©ÈVv—‡Åe-¥AÒ;Ì}»ŽÌàyö×ɹ°ŸhosZc"ÐLÊiC÷!Ç JêŠÊÃóätLZÖÅÙvŽççymÉe—tO»_>ÍÊeºº^Ý Î•Kz‡»Z™ñÙIø÷#E둨®W7Íâ¤×9srTŽ)õGJk¤wØúvÙDä*j—ÖÄÙˆ7Õ‹uù@Kð8&•K[r¡{¥®©å’øÞÖÔ¤•c“âØ¼¶å²Kº§ÝoCºhñ½·¨Ú{Šv&Á^‘ÅŸÚ…# Nœˆ1Jz£Å“ôD,è™qWzkV£’Ȱï#¥5Ò;l}ù(Çâ\ÕòQšÃ–&c{ž‹G5‹çA?ÊY=OB޼䅮©–Ò¦ŸY—ég»ä£ôµ)·]Ôýa÷Û9–nÚNl´ä°3cE:\à”,ÆKBÝÝòá”6èŠJG"9À7“n,2ß˻ƕ³ò#·]Ôýa÷Û(.`Æ#£)(9H_¤¯˜ Ê$Ê5¡WJ!#£d?òŽö Ö5Õ=%§±ƒ½t‘¾šcWÏEymÉe—tO»ß~¢‹0›a|œ‹°*<µbõ "±Å?(D¥|Â]°®¨çìÍT¿¤.NÄrìçìÍ×–\vI÷´ûm|ˆkG„“?8¾ò 8fLI2I9†sr4­M]QÃ…ÈÉé<{“.b9vËú*_[rÙ%ÝÓî·§¤@ÑxD×ÜkºIÆAÝÍLühÐÐKRcsa/É£§pO]SÕû­ä@‡Ì­Á±Iñ””×¶\v•<`¼Ÿ±ß‹:ÐZJ!¿NÊ%# Ó y†d ö%åó±û£kêŠj‰½jNa2u+Ps=6)¢ú!—]Ò=í~ÿ½Þr¬J~¯7]ÀÑ\…^ Ñ\Ý9 cåXö#ç¹§uE§Ææ¹èŽp–u !ై_ÛrÚeÝÓî·ÛÑaÇh((Nþ{€ô]<²•‹1WRè”C®˜€tI•'´d`9­[ðñØå -éÚ–;GÐ=í~þ2™.®“~qbÅ,&B9óO6{z•<éïlØ‘òÅ:鲯ÎΓþä0ÿ„ºX1‹Çåó—Ù¹,•îi÷ûlЛ]awÍlPpˆ¡Ù6cR7ò:ЇEqÅlÙÿŽ‹Iô'“®)ŒÍ_‹Ã6tÖmp 庶䶔º?ì~»¾Ž ½Þ ~%ÎÂÁí…ª•XÕâP÷f–©_Š ÷CŽŠëšJÄä\ñu§îܹǞ‰†îkSn»¨ûÃî·~’¡ãìÜß«9( ßfº©09ùNŠOŠà–œÀº¢j~¯ææ,Q·næ,qìš5‘¾¶å²«dtyÆ~·åB½3{;9›È°Bã.H\»±t‹òózä‹.…tMeövr-]I§ÇÅ·`¹>üš]Ôýa÷Ûõ•­yוÑBs8XCòe[¼lCÆ(ïHÇ#g?K뚺ò-0‡GÖUXÝó-ðµ%—]Ôýa÷ÛçÊ=ä Û×ÉáAôÍçàIô}1qùJ@9¶eM9Ú§®¨„|KrxR‰»ÚóÈkK.»¤{Úýþ{h#Û6}t†FžßHúÍoj^¦ü½Þ×#WG#éŠêé=›ƒ¼ÆÔe†°Ç~2ˆ}mÉe—tO»ß®¯D†‰‰¡i}Õƒ½O–‹¢…d€CR\o$FY¾¸ØHWÔíƒÑä mtêNtôØÓm`òÚ’Ë.éžv¿]_Ñ!°ÙÎGøH®LE^LUNÊq‰~ÈÑŒ,uEe†drX}kÝÆ|#Ýž|$][rÙÕØüØýywàH6`—0‡žÐBkd{N@“Ϥ8³ÞèmùâSº¢FÔ™ƒŽÔ¥'ä±[žÕùÚ’Ë.éžv¿=µA¹Zœ³’‹£sB¶Õňü‰â Ï–Úº¦06-ÜâÔÕ9ŒÆÅh²®-¹ì¢î»ß~¯* ¯YmabXá³Öä~3-)Sã¶Äº¢j¦¼˜ƒŒgë.ô!òØ+ÛùÚ–g;tO»ß®¯„æf=Ó×ÉÙHj´G¦Ofâö¤¸b?ru¦®¨å:ÏäÜ(Ý“n@·ï›Ík[.»¤{Úý~ŸuÐ×6ö™9qèÂX`äT1Û îæØ¦|ï¯ýÈÙÒº¤8¶÷9à ȺŠ<6©Üç”G.K¥{Úýö{­¨]é€Jþ:8£ÄÜA3¬ " «G&KŹéØ|àMº¤86-z™[·Óc÷Ä öµ-—¥Ò=í~;3Áè~¦a2–QÇ#§h{’í&8OßARB?HOİìÙ$½Éé•£Îgöå5§'ç°Fz‡­ïCý1Ô;S·ÍaG³1‡e¿—½¨ë8¶Ñä¾>rf¨ZWÔ“lÎåZ#è"M7Ç~‚}mÉe—tO»ß†ú;Î#Vw!yr2î=è® ºÝÍE1Ï:jËYcm]QÝ‹Rr*a¥=cW/JymÉe—tO»ß/©Q¹LŒÄ¯“s¡H‚mÝÐ^¯`Ù»“â" LË/v¦®©™æ y¥ÛQ@á±{XøÚ’Ë.êþ°û}“‚ÂVš ' Lñ¦Ä™Ã÷ÇÕ’ò·7yÀjêššÙמ®ÖEØ1Çΰd^[rÙEÝv¿ÝÚ {°}„#ÎÅZg|1tdz.|ˆ¢~)ÐXùð¥uMe %9lŸg]B°xìžGs¾¶ä²‹º?ì~›y6±QŒü/§ž‰ƒúö(E'Ɇ³ßï·ª$å<±öÈ¿‡‰×Mº¦Š{™3u°îDƬÇ&űymËi—uO»ß†„/¤)ôzø:9›½#oj‹›®¤ÂÅ[ÄŽhvÁI*K$çv®AÉ;›ß^ÛrÙuÓ<í~›¸„Ž'÷Ñ’Ó™ú-]ævxìäÃ×–\vI÷´ûm"gè{Ð89ȧŠÔ…˜%¾çÏp¼ïû2ÅCí‚ÏœI‰/Ô¹X¢f"™ƒ8Jê"+Çî9“ûÚ’Ë.Æ`~Øý¿¿ŸSLãBïçû9Å‹ÌÙëÌ©Æíœú†\¥Ô>%¹º¥qøU­'â:êƒ1œPzÝ õìÎx$Ô·‘RZ3œPŸ¶¾]ç0ßâݵΑ³Õ+ØÆñYo‚œF|çÑN€ÉÍúÈs*…®&·,uJ!YkNw‘ߣ±W–:ùÚ–ËRéžv¿§»¹xÉ )z2Qž›¢¼×ë둸>uE=ÅKâ º[wMÑc„Z÷µ-§]Ö=í~Ù·ðâñlfQ‰[¼;ˆ¸ØFNË…~»"–k#ˆCÆ]ì}|ë‰X™?eR ¤·¥QW&Oéš’Ê<ê¶¾…õÜè ¶^s¥;‰Ü½ ³å|Û¦;ÁÇZ>Ќغ¢^s¥kÝâNÞ;)þZצÜvQ÷‡ÝoáZ v=áëäL,sckɪ`:),Li~È!í©kêÁj0­S³kŽý`5øÚ”Û.êþ°ûm–ô=ŠMÝ=Oœ›]êP,ŸIãÞ¹'…{>òHxì©kê²;œT1ëvVƒhìžx„¾¶ä²‹º?ì~û\+瑞%Àæs± ,!¾~ìh;ýÊ TÅŽ¸r<ÞÔÕ3OÓœæ8to™c×|g|mÉe—tO»_>×_ùùú^Íéè:00·ß×6…{¯dËñJ¥®¨–€ÉæTÖ*K· #Ç.Ù±ÀצÜvQ÷‡Ý/›vñôùº ñiÆúU4.Ù…Vç+ Þ÷ ×ra,*°oÍŠº2x`Îä3—.åxèaxO_˜R™Å¿uN·—³fçT4 RËá ó9“â·ÔàRZÞáL[WÔzr?ÅA9ë²wœÇ&eÇ·''íºÙzô´ûåRº± ØÍIf L#΋åf·>Xq|e)À®­'¢9ÝÏŒŠÍ®ôíQ‹sý|M0l ô~ØúÎ$"ù\d¹‚ö5nQýÚ³…Dî#¿P·a]SÙ'9ø÷Ò­\x5v6ÄÉkK.»¨ûÃî·5‡pBâ#(nê$Z’ÄAà¯^<4®§Å×q¨\¸¤éP™1'éšN•KN#´¯t+ë5v}êumÉeuØýöÅqRø§™H/£N ÚvÖ¨_¦¸ÇãžÕrîn­+ª>‰ôâFO¨;6å§=áL¤çµ-—]Ò=íþß¿‚½DþÙÿ†~Àq vau ‡…‹cˈ‰Úc²shó3¹C~5Iº¢JvÚ$§m ’H7PÔÚí±Eñ׸vÊaWêžv¿ÏQv·r“Ôû†‚âXÏЇP¹ÜÙÔ6r:ö!G•xꊚYý`Ëo¬‹4­»eõƒ¯-¹ì’îi÷ÛÍär£z&§:º…¢Ç†º÷.ÊѶr=r& K×TÉìLqÚæÇHݶø1rlRÞzª 3ä²Kº?ì~ÿµ]+sš’ú¼¨“gx+Œœ“‡™Ó‡ u>r$k¤®¨ÌiJQ¥{#gÉcß™Óäk[.»¤{Úý漣ó5ÿ×§’H[ŸÌ üö>ÿ×SÉ¿™Çþ§SIœÈ6N¾·Á2Åa>üb ÀF s$åÓÞë³¼@º¦îL’5SyêNæskìy&ɶGn»¨ûÃî·gˆü\Y÷ûurX\Yn¥šabˆâ Â…ÒrvYWÔÊ“ds˜! ÝÆ ݲ™”¯m¹ì’îi÷Û ÇçòT’œÍº&ÒÅ1ÖP ER«ÄéIñÞ&÷Q~W&÷Q×Ô•§øæ÷+uQ“c§nçµ%—]Ôýa÷û³ð—îts’ÓÙé(ιÔÕiéæÄyƘ|F4#uE¥›“¸*Ö½àÆxì+Ý_ÛrÙ%ÝÓî·gþ,|îw¦3›³0©;„Y¼‚(Ÿû·CŽÍ‚uMÝ™Îlb©‹AŽ=3ÙצÜvQ÷‡Ýo·%Lн.ÿ¯É¹¹<T˜}¿Nh“ ¸(|S½LSŽMxꊺ2ëÆœ™EÙsi-ÏØ⦯=\𠻨ûÃî?€CHRs˜þÛêÈ`ŒN¬ GY#)æ½ VNrÁÊI—Çæ¯Å¹éDP—©s›Ík[^œˆ´Æßì~»¾.W|*Òš¤¸E× ÔoœÇTd†‰ú¥¯û*¼!Ÿº¦î'ëF¶6³.@Orìéw&¯M¹íR[´Óî—ÏuT.@þ:9hÃÖƈû‡ïOj®³Ù>=åŒ[WÔíðlrŒ–ºoÇž>tÉkK.»¤{Úý²ßPË"è«6vfé{SOí<§»Ç¸Ù'*'-E‰¥õD¤+ij·¬÷Σ¦ékR*k¨wÚú®qW×~\¥Áœ÷Ew¥1;þ¢;“TºJ<\¡’º¦Š®æÄ±S÷B‹XM*]¥CN»¬{Úýþ]LYQKrn7NZÌq¸Ù«Tÿò]ó£k×#Ç«g]S—“X’ƒ–¶©‹&¶9öpK^›rÛEÝv¿]R'Ð~‚Ã_'}¶»òkãˆÿF)ROê—àyÈ ho]QŠN mSè9vV¨çµ%—]Ò=í~Û?‰)ˆW~£ÉÁÇës%ðU§Oѧ).{Lx”| Õ‘uM=Í^Í!дu wø;?Ö¼¶ä²Kº§Ý&›Ê8KœÝᑌ:ö‰`ö…³*QtSÙóÒrö¼´.©+;Ë'‡ICÒ½˜5¤±¯ûI©åµ-—¥Ò=í~ëfœ4§;%§ó+bAøü€(Š_àílÈ ¦n]QÍIOÉAƺ7‚4›”ævÈe—tO»ßæ4¼þ½¸ÓCrJFáÖ¢‰â$’yRŒžOôKPåÔUl½9 YÚÖ0ÑαIù¼{¯GN»¬{ÚýrI½Ð£\®Œ2ãŽãÐÈIkÌñ¿Ð.; ,~› 8ÀØ@É–ž‰Ë»x3ôl=ä<{Ôá-¼¯I©¬¡ÞiëÛâÌŠ¨Û¼äxqnÌñùâßþN¤³v~F¤ðu~f–󴮨,3O+¬;ˆ ¯±GæùÚ’Ë.éžv¿]R»#µ:dI¬êóQÞ8Í 0ü¤U*‡Ô•SÉAÉKê¢jiì‘ì¾¶ä²Kº§ÝoÓFàŒÇ-t Qs:JÐ:\÷xê2±·)Fu?r4ý´®©–§ÍæT–¯I·°`Mcg›¾¼6å¶‹º?ì~»¤i«3íëäLYud§u"°Å.s'õË pyä¸Í©+jdÓ2s:Û J·±å ÆnOKB][rÙ%ÝÓî÷ßk°ú|ŠäÅAê{Pêš›çŽaQþ^ûzä8_N]QO_s Ý¥ÛY¯±Ÿ¾¾¶ä²Kº§ÝïÁJâ]øv×óÔFœÁS›‹Á®‰idñ{#•'+|+€J]Sý9µ‡]¥¬[}*S’âØº¶ä²Kº§ÝoÓ÷oçYë×É!uA”+"±7!ß®¤˜ºs¾Yò›ÐÎÒÕÝd'9B•®`©5vÍ2_[rÙ•ø¢Ýo¿Wä2‡jh”9Ü.š°¨tˆ¯¤øM mNòD›ƒ®¨§¦Önµ­Ë͵ǮYçàkK.»¤{ÚýX~1á4Û>ˆC(ÄûæF1=¸’TnB{ÊW5–$2§EÍ'sºK áÒíÌ±×ØýI²×µ%¿œ÷Öëßì~[c²|7ÝÎ܆ƒÀ¨rÒ:jDVR\óÒ$6ªfŽ»9…›Ð–9k·Çů[Pà¤]Ðýi÷ÛŠyâM]Yå–œA“-9®AoôÆìw§)hâ|B¾‰Ï2ì­ ­%›‚ŠÃЙuQÅ–cg•[^[rÙ%ÝÓî·ß+êh¬òurxÞ9t,ôl–¾’ʸî!ç¿l]QË3YrnSS7š9Ü96)þš×¶\vÝ>â~ì~û½¢ß’=Ý7‡A7ºÓ!ås2æ‘”Ã@óß@î°®¨\ÈY—àAûòµ%—]Ò=í~»¾ n¯;ÁçÍa l (7äÄÄ4ÈÍIq ì<Ÿ“|pR’®¨ûㇸ;ÖtœIñ×Õå„„]Ò=í~ÛI Ý`²¾§£ªàBßÓV‰f6A²tj‹Vk·_u3®£yÒ÷¿pJ‚?Å5-¥5Ò;l} V‚c]¸:Æ%ç&v¥;C´—hù“nwt:ä{늚Oß:q†+‹¡ÛÙ—Nc÷§o®-¹ì’îi÷Ûü1œÝí;k©Å`ôo!ÁÏÝWÐüœHôG·ÕAÖ#q?íÈ`÷é VâpÔñôà5%¥5Ò;l}»K°ÈàáÞ×ÉiÞiÖ’9‡ÑG1){ a1)¯()¶®©š»TqxphÝ"ìgŽMÊ{ÚyÈi—tØýÖëU¦ù°w”œéh rϱË:ýÙO>ö#¯È‰·®©Œ'$år©ÛX·©±¶.¯-¹ì’îi÷û–8Ö) Ñ×ò ÐÐ@eC;½´Šˆ^“ÂgÔtÕœ…8ïÔ5U!Hvœ±nGxÓc÷,·ôµ-§]Ö=í~û\1Wîah3&@`§4ü»fâ׳ï±CXÄðQ¡PÖÔÃpµe®®))­‘ÞaëÛX/ðKâ ¹ëgÅRÕ$2¼Dï¤|Ú²9JPSWÔm—"9L¥ è¯{Ú¥ÈkK.».¶>v¿G[,í/–4~ à‡c’,¸“ËsÝ"8/âÆR̳Ö#‘•“b¨jžz [5ºs\×´ÖXï°õ}“3%3MŽ‹s!(î:tk@ÜË÷“QƒÛˆ÷õztE%ìgr\;ëvY_[rÙ%ÝÓî?˜m‰Ù²Ú3Ûª¦­qÆS=\ùËJÂCªåß/“ÐeJ{¨„‡LÓï­[ ŠÓ’ÊÙöË®fxÇî·«èÄ G®U«¨8è?y}H›ø%çzÁž‡œEÖ•ð3ÉÁñAênZ4ö?ãkK.»¤{Úý¾³NÃ6_q3X´‘Î(HlE¾=­'H§v×Lé¬Éº’ȉÌ8—O;5j†G|MIiô[ßï8ñvg<>9ˆ©#¥g9ÞÞˆ0uÄãA¨RÞüU†®©ŒÇ'§1×Wº•¹¾;ãñymÊmuØý6ÕE™ãvGm3Øbª q÷„‘ùÓL0èŽÉR,òÖ#q'v¼ŒÓSoLD¼8* þ×´”ÖHï°õÖJÞî»{~Շ꙰kNãò*ÝÊhÆ®¹£õµ%—]Ò=í~ÛŸ.7›ÛýéÄaÿ¡«¹i¤µ_Äh$…{ÿ}›ë!¿X+"]Q—g¥ä°¯ƒu‡lvRüµ®-yn8¡{Úýöh¥ðè m†¾NÎæ>¸âØŠM‹Pý‘”?Ú!Ÿ<“®¨;ØÌasEé^*áØ¤øk^ûÊò™ÕÝÓî·Kj!èl‹·îëäô¸q†™¦Ñ‡—5)nöC>²#v}(Œíä¡NG>`ë.Þ;‹óÚ’Ë.éžv¿MIÙ¬iìY˜hÎD9ò(e¼ÐdT”+½€’ÒÛº¢z&šÓl"ÝJ`]9ÓצÜvQ÷‡Ýo N+Û¿Ô âšƒ„¥z—l;0P›" ßÔ@Únʱ%I]Q5ƒ¸æb¥Û¶S”kRü5¯m¹ì’îi÷Ûì]lñ£ä,³wÅÙÎ[¹_qvUI ÷þÚ^Êsï¥+j=ٻ⨠0uouæØ¤øk^ÛrÙ•†»ß®¯hþ§™Ó™.„)ÉCëcOÊßÔLN´Ð˺I5¿•ÉAšqê7ëIyí®‡\v1Eù‡ÝoŸ+Âÿ(5±8•€ÂÌ‘ˆÎKŒDÍË”çÊûzäø˜¬kêéÚ-N[ŒnVaJɱòT][rÙ%Ýv¿/8E/ˆ™}BÍ!HwV—Ï-m“½¬C>ØÍBº¢f"e˜ƒ„¾ÔE:KŽé.ymÉ‹[A÷´ûís¥›áb­¯æð¸ö¢S!c:Ž%©ü9aÞ­+ cûI56–®ëÑåQ¯Ç®Ù¯Ù×–\v5>ØÑUº¢®ì8gÎdîŒtÖO=r}õµ%—]Ò=í~»¾n×) ÃO‹ƒ‡XùÍ\\1露b6S|(uE§åƒ8 ÍIÙ½«sÉå˜K—Çæ¯Åa]¿tYGï±IÙמ‡\–J÷´ûíúºyX[Œþœ9h…ç·Zñà›Kw~È¡åÓ¹«Ûcó×#£É5uoöiÓØw–’ùÚ’Ë.éþ°ûí<< B–±µä 1HÌœˆõ±¼là|TçJd>¤¤®¨Œ­%ñ1ëvÄÎÔyNÚø:9Û ÈýO,Ž$åPÿ}È;])éŠz`=ÌAWW뎋iÒ›”Cýý‘Û.êþ°ûí{¨Üh—ûurVlƒc“Yù)ôÆ#˜¤¸­œ ëJ.PéŠÊæ¼É™ Ï '_ÏØÃoA^[rÙ%ÝÓî·€,4¿º§£ä°«Ñ@5`»&[qÀ]…ãîÁ’xÉ'ÜëšêžŽ’ ÔEŽx¤ymÉe—tO»_6XØ)íæ–¨f Še"#\–x» : ‹ÂUë%ffljRíé3!Nu/ÅÎŽã­=cïû}i0l4˜üö‰Â£jiô_'¥¿ƒ6-Ö½Š{Ü’â]¿ãb)GžÔõäì›`¾ÔEJ}Žý¤íûÚ’Ë.éžv¿w’ÓÇ•NÒ`«AtnÀÌ”v\™IåA÷!Ǭ“º¢f†ÍÙBU°ƒë»gˆÑצÜvQ÷‡Ýo{É$Žåè›SñÞŒKé‹xq»^ŠÂ½¿°Ì¤\©“Ò%űùkqÐFú ›ÍkKnK©ûÃî·m^Ø3x¯l¦nz‹Tš­ó³h¸3ª)Ü{žb§¼ªÜº¢²Trp¢&]$ì-Š¿æW,¹í¢î»_>×(Öý¾?ý¿¾NN‹¹-îö·KÚt¡¢ÄJÊOªò>yêŠÂØü59‹3R7 s®›Ík[N»¬{Úý‡r‹ (÷s('”›cX™<8K*å9 æRWÔ̶Læ“7uyﱟz_[ò’À0÷ßì~™›¿ :3îmC× …M“Qí†ù½þAKw<2ë‘x"Þb ù‰õZ,Ƶe‡c]SRZ#½ÃÖ×èHÑe¤àøçë` ƹ€®É=T¯#ë]aJ'‘;5¬g"™ÈÀÑø%=|]K£ŠˆŸòš–^Nwë×O[ßζ¤D ZP˜Ó™Å‰o%Icþœ ·“¢§Ãp¼å Õ[WT3&hrŒ Ý X{›Ík[.»¤{Úý6µ0ìñ<º±ÔÅQüs1[a H}lÎõ#k›&ñÄ$ŸpЬkªem“9ûë‚%ÇNŒë¼¶ä²‹º?ì~ûU–˜¶££…ê÷ÄQðMs¢=2¢gÎ÷‡B‚ßÀ{,E]„õH4»®fTü;Ò+X5jq‘´¯))­‘ÞaëK·òSÛÆá£â@vs~¯8¹ÝœúIàS›ÌÀ§ôbr>õHpTüT ÀJ¯ å²F%Ÿòš’Vã°‡ÞiëÛ¯r!Æ´›öÉAŸä à/#=V¨xivöóŠõ¬¯GÞ\~7®‡jØ'§23[ºLT÷Ø™#ž×¦ÜvQ÷‡Ýï±r:‹ÈæN¬álÞ<´î,I‹âú¾HŠ!xâZ¾9JWÔíÔÙä\Ì´‘î„óã±§òÚ’Ë.éžv¿ØG'ÝVÝ/,9HO$±µî쩈ؒr¾×GÎN`Ò5•) É)ÜJS·ngWÕ¤]ŠkKn»¨ûÃî— çbnmsž¾8¹^lH£~e«£p–·ìæ"ÒÂ'—ž‰l­lFE÷jé•p€=jqÒ·¯YÔZúÞÖûaëÛ:6Æërð$9h{ɧ;nȸ‰tÓ’>£Ø/•Gθ´uE­'Û^t±nF>ˆ±kžMúÚ’Û.êþ°ûÝ£ì8ŽlïÂ×ÁÀëÐýÒfc&;<åEO7Iq&d=Åé'bŒÅ.ЀѨ#QHtMIiôN[ß{/BlÖtYœŽ”ˆ_*¼èI9•$‚}–vÕº¦êº,NÁ¯t¿ü]slR>ö®ÉI»¨ûÃîwRÈÛßs¼À>Íh1éO‚$\(ÇŽŠÙ$–ÈMHÆU˜5=ÕîŒß{Y/àÛ‹G%QyMIiôN[ß7¶‹·»áäëëäd·E|•j¨Èî¤ø Þ8²œ½(¬+ê9g3G=©[Õg‘c×çœM×¶\vI÷´û壬ð¤Z&¦˜Ü’IP±Ž´“H…K7…J–^HOD¦¤˜Eé5ô[Ш-Û=êš’Êê¶¾}”i*:GœÆ—ëûvÇüÞØãsë­ÞQ¹Õ'9Q“Õ‡uMqlþZQMʯÉ>ä²TͲO»_®•“­XšÑDÌ証ضe¨˜òNâ—ÕÝRºÙ¦«"sªp3%ôÛ‘µ^‰7Ý£¾&¥²†z§­oëØ†×+åd$ç"’a"êÍõìÂé)®gêŸ%9¶J©+júH(9ƒ(BÙ{ë*ÏØÝ9ymÉe—tO»ß=Ê@}ëW"PˆÁŽÄ è˜ìÎDЇÿ)éîKÒq%ö„ðÒc':xBפTÖPï´õíZÙ¥÷ýU©ì'9gåèüS¦*«FR\Ï&!û$g›4늪.ûIa¤[ k¤±I¥¿{Èe—tO»_N°Lwúžo,Í€×ñ=û 6Oûþ¦&±gâHMVKz៕žˆËfÌøâ¬‡$ :¼õ5)•5Ô;m}ûU"zw5g ¨ZY§Hýk4ÖpÂ{ÕØ-Ûr4v·®©–Ys7ºˆ§çØ UצÜvQ÷‡Ý/=Xê·‰ƒš¯ƒsœŽt€6û?Ç| B¾f¤È3°žˆç„V öNÛ*hÔ§ë‚®I©¬¡Þië[,lY…Yõi¡Îây&Š-Ú·_ÕØB}$Å)¢!èj9#ÈÖuçƒ7g+[ºƒç•{äƒ÷µ)·]ÓÝݯ×ʈj¶ÌÀ˱àu4ªÆªÖ’ÐZ9)hë‰Ho1 Òa¤ÇxŽF%¡µ²ˆ„®¨éŠõäÀ2u; 4vÏ£5_[rÙ%ÝÓî÷‰%qœ?‡k¾“ˆ–HÐJð»]QN,‡|sÑîö¢šïä û;uœc'¨r^[rÙ%ÝÓî·( ~ey™IG'Ü_agÖɹ¸x™AæR}äH;N]QËËLr.”dI÷ûýß=Ç&Å_óÚ–Ë.éžv¿ Á³´†«××ÉÁ ÇUqŒ:PôGY#)uÅ‘²åȼH]QygÌ ×§n‡½»çñµ-§]Ö=í~÷\oZW‘ÿª€G¸—€ÛÞ›+Dbß.œœˆ±p¦"=ÕSªÐ‡Ô X¹êQIÄOuMIe ô~Øú~ê]‘ 0ôJvƒÈ¨Ut.©%)O½í#ƒ¬db ¾^]’½ÃsË.¿„Ýýþ[¥—ϵ¶J7‚ÿ…i~QYÑÑÃÛ™n)·J}Ù™cìíóôZƒk¨Äâ»É±×¯ÀsË.¿„Ýý>ß*]¯Ó.?»Œ ±]¹ˉ½+I“%y«ôÞËþ²æDØ×(ÓiÒ¯ ‘bok,i×V šé­ÒT‹6.°ï°äoª¦aö–XK÷Ú*Isq«$ìðVéMÉß+æÞ*͙ؿÏúuø”ùYšxáÝäx©\£ô¤Wæ}oå‘){Ç]’±ö3­5ùc€ÕIScïgZÎm»=}Ì6³ü>¯gÑ{¾YÏÒøºùÙ7. /¿·Ñ-ùez÷e®äv°6çÍs§5ú›‹_AõØ’ü›Qvy*ìî÷iŽ.’ÑtÐ9ºÒ4ð BÞÎŽÂ…¡&=‰jFgðVöÁÀ®°’J>¯Ô`ãúÞ‹~²¤Ä¿ÆÜ¶Ó/cü>OVÁ¯òq¶cjx ¨ ©D›®”œ¬27ûC'a%=ÎyL hf-h"í±)9Y¥oöáÂÛ·üÍï@–ò²ºÔdÚÒ n%#Ïz,N ´†ÝƒÀþFùRÿ*9•úJ l,i”%.ÆZª+5šà`x;¦þqlJøkÍ-»üöÇïÓú3&ûÄéQÑBk6gþÏ÷WÐH=)qÅT¶’ìLH2VÒôýwjnA½Pýë±/³äܲË/aw¿O+ö'Þ…¶sŸ]3Ý3Þœ×Ã6š/Þ”ðÙJ>Ú;< kéö;5—›¶±ÆÎ̹e—_Äþø}NZy‡©üŸ]Ã~ÛØYƒV?Æ¡uIøì£íT_v$x$VR[Ò p'±(ÖɱKÖ‹znÙå—°»ßçäÍV_÷å’Áv0ƒÅ0h”²ì÷¬bëèf8—+) ™R“Ôe“ Ns®±³–)ç–]~ »û}ú¼vlÚ™õÙ5ްb9TŸ i‰ÏäÓ¶»ÄJZUÃÒ0ÇÊXfUy캪†5·íôËØÝïÃï•džºªðRƒJºÈ½BNVÙõ†tƺªð:8i'ó¥±’² /5•éÁ²ºÇÎ*¼œ»8ý~ »û}Šà±¬Ï®Áýe­ÜõEŒ7'OJ  gXÚÁÏžXI%ɤQœLXEÆ46%þ5ç¶~»û}JnÄÅ¢T§¦\¿@B‰†‘áȶŽ%;jõ‹Ô«¶£Ü'±’ª¯ûSS¸L싪J M‹™eµSþ8}ÞÑÀ½äjv4€ ŒÀ#Ŧ¡ 0D­Ž$^«ŒøTÓŽ4ÁÄJÊîG©¹Lg:ضæékìl€”sË.¿„Ýý>} 3ɺµd¬²†4„S² $ÊKâ6‰ô¶¿H²7ÖRKÆ*kÀù”Xp>åØ%«<·ìò‹Ø¿¿WrÍD–©ÒRƒ"—Jö™Èï¤b_f]Í 'z‹¦ýe¹°’²BÆš"JMb‹è696%þ5ç¶~»û}ø½^h0<Ú ZSI\tñøi|¼®”üøÍͦÄR*«'±5¸˜1¶¸HcSâ_snÛå©°»ß§‹+£Vm&s 5|æ.ƱŸÇ‹œ>m=¯ch¶3¾f¬¤Œ”§æûŸ±$ó÷Øy_’sË.¿„Ýý>gHG=–¬+Ò¡!—ý÷m2ùZŸ[x§„ÏþF KÚ_ìÑ•T”&h}.CƒÉgzd üSLl+|2nwù|¿{–Þ³fØr@_¸/Á^È3HIÉ; ¶ÙJ¬¤• j )%aŠÇ®™¼è¹e—_Âî~Ÿ~¥¨Áy«s)­@Ð'ªã< üÔ;ÚvËŠ»mã(¬¾?R6îîyÙ·³©á› ™9§­ôF¸Í×Ó# zôÄóäœBk^3ÿEÞFgÎàì¾r Tû¤™d‰•´r ­¹T¶áåê±)ñ¯9·íòKØÝïÓ­/Û÷‰F±¶‚aÕ8 -¿P)ÔÃ8·÷À¨ø§lw)+½nóõôm dÄ™U…Þ€<¸ÙÂÇɰMIÉAžö,;zt&VҪϰ†™ ÂVTMxìºê34·íòKØÝïó. IÓdöTL’¿‚ëyHÁ‚ÙÇ—3 ž¸ÒzÅiÊ8 ·ËM­@dãb‰ud¨QsÊJo„Û|=½C}©=ÓW¬a(ëûθI'y“èIé6Áe³÷XÀµ”Ì#©idù–a0½šÏxnÚí±?~²E½õE¯nß*ŃK5î*’Å´€½ o“­ØÊgaf¸V ¤µw‰^£^ÙµUsBao€ûñõtá|øÔ=™±b ol°º®JȵÓ×UIgÃYÛɾ%¬¥'3V¬™X%„=ÃcSâÂɹe·_Ó áËïÓ“'÷Ü‘¢ž0Ö\’G +{‡‚ b"šO‡/n dz¢žXKéAHb+º{lH[sË.¿„Ýý>áÑQ”¦æb|†A'Éö=%.nˆ«ÚÎw„±–’ 5©ÀÆ6¦kì¶H>5·ìò«gC€¾Æ>‹©ÑÔ•ksAôÆæn1x¸úSÚð¶ó­d¬¤+# Öü„óƒ h®±{g{nÙ³%Övà±ÏžW&N¿O&m[ƒl’ØŒ†Ûý'‘ù—’¯6ßÍŽ¥=±’žLÚ¶ý¼…m‘^ÿxlIÞD_›]~ »û}NÃtÁ›5“†#4ÅrA…}‚GeSF“)1¦‡¯4 ÖxµÄ±qÁm̓VrÂvxlJ›sÛ.O…Ýý>}^/Fc“¤†7{7xÆ{V¨zJ~¦®Íþ"QÕXIO&»X3ÝëâáG ²zJükÎm»üv÷ûô,Šv¨†4é‘4Ž˜ù·H÷sbÜ9PòUÉ|—oGc)qlŸ^'ûDÜob'º3{lJt,޹m—§Âî~ŸÇÂÉŠ¶;Ÿ]ÃdëAœ Žˆ[úK·$ÇÆXö—ÄÂJšùZÆ€Æ2QÛcìXì¹e—_Âî~Ÿò’!7$ $§2¸­ÿÿ`¶Hd²Ù8³E$ñ äÍžìÌb1ÖRÒRƒºèÄâ ͱ3–sË.¿„Ýý>/ž™ [I ¥†%f7®q‘\Àâ™7%?Sq±üº‰•ÔÂLMÃOÙØÊg]c×õ.ÐܲË/aw¿O××Á4(Å~vúg]NšŠÞÏMÇ7[ <3›¯²Ý§Šû»¤ÕÈ'%Ã9ö•\ž[vù%ìî÷éúZ¹bââõ³kÈTù}?Äå]D©C;)ýÑj\7;Û.+©®²DhšØé‰mb¤çØ’þ(¤57;LÝý>ï}¹ƒÖúÍæ!Ð |7lÑ ¶ÉÉ&›)m1xÛ£uø•XK}u|’†MNŒÅÅ`Ž]ó{õܲË/aw¿Ï¬AWPß¼—&ø) ŽÛeWž¡•·)²7'VÇö÷bÎ]\i Õ‹-Ǧä#k]v{Jìß§Bgã5p»çš4§‹¡ªº §‹<2I â1¹Õö<ÆJÊzªÔ4÷s–M˜=vÖSåܲË/aw¿Ï£J7ɦ;·†Å‚°ãy,ì·ó¤ä¨RÙì|+©$Ý95ñÌ6±ñ<ޯǖä¨Ò½Ù™ümìî÷é~øÁïþêæýL̓\¤0G'~`Ìç•Ä5qõ´w²C›R¶ÎIM%w§°…¼ž;[çäÜd>µ_Àþú}øEòL°ôx?,rn' ƒ½Æ}·d÷ý³>ÂV±²·±’8vÆÿBópJlìíGŽMÉaâq/»<%öÇïÓï¿“únß«4ú^[ÜáœØÈט?û‹‰É²_&hör}¯©Ñw#¬¾7½}¯š[vù%ìî÷yå[¤÷Ä!Úñ&iP®Õg‘ô ±E¬ˆß_Ž$_½”²ìL;2VÒ•ÍG¬> ÛyÚÕØ=ãž[vù%ìî÷yKå:5—†ùŠìÅëgl"nê{òŠDÞÉXöïW€¶ËÄZê™jdMcÜBØŠöO»:½+ç–ývÛe`w¿O¯ÅØg×°ëá¥XÞIJù@)9{¨möŽ‹na-alïp¡éx±Ë®‡»åoÆsÓn¿ˆýñûôüʾ¢ÁÜãó«4Y¯Ù…4(Üã|ú H‰gL0tÙÞÑèÎXKcuT”¦!%ÛØŠk]÷ Øw³_n£þ¼óûô=ü’øôΉÖðüÿðÅа›5°¦Ä7k'ªì|)+éΉÖð¥d,’<öȉž›vûEìß§ñaž5:²Þ?›æ»nD_¸‹'“@uDtgJŽø¾Ë~ã%i¬$ŽíThPNelGU½Ç¦Äø0ç¶]žûã÷é~‡ÝˆÛ¼ÊL’FµJñèH%ñ!}XÊ=kjbÙ¬°’86Ÿ@ip¿o¬XZ4vËÌÏm»<v÷ûôyelà¹|]•ÜéÆÖØ9¶d[SI|™Ûl;¶§‰•tå×ÞÅËËXÝ“(ßsÓn¿ˆýñûü>'ª»ßש°ÒàdÈr³Énlµym#É÷9u³³ž°”4¶ïs ÁÂFÄwÞ[’£ÉsÙí)±?~Ÿ~¯7ÜzÐâð³i^&Ç7p;Æ»0ŽÆíá{´æŠùõçZö^XÒG¬$ŽíoÊ• Ob±xrì'«~=·íòTØÝïÓ÷põô(.a úUG7šï7O`„žy=/‰{V&$Ø®Ôa%MßF¥Ù™Ìpᣱ)ñ¯9·í5“kæßü>ÝãNåJ)nÐèÄŽ5Ú˜"C1Bí…?:}r¶¢†Ú8vqJö+@ #Ünz%õŽæ´•î ·ùzúU¢à(~A·¿JjzaÃ#¦àöÊË6RÎRú£øJM,‚A`+¬$ŽíEòâ/t܉Ui‚Ʀä|™˜Ûvyú8»fù}¾UŠŸú÷4gn• ¹ŽÉXe;ܘ¶§ÄÇWiǵEb%¬±½ Û"ä›c7‡„snÙå—°»ß§!áឦž´æõÅId]…'7¹DJfoF'ÝÍ®\a%=I=iÍdib™¯46%þ5ç¶]~ »û}:l¨ «#CLÖ°CyÄp*8'f|Æ^›’Ã{¥,;Ræ+)éNRƒƒYbAB’c'ÝIÎ-»üv÷ûüj®‘ ZÛýÔ¼ìK‰VM l Þ”ò›Úìˆ $VÒ³˜¯¤¹Qd"lg±Ç¦äk„¶Ùå—°»ß§[àF»7CÂÒƒ?a/‡Ö0ÝïÂŽÃëÀ™ïn–œô¤&ÎŒñêÖÒÌåÐþºŒÕOŽ}årè¹e—_Âî~>^ÇÑH‰ñ}jPH¼q¡ð«¾òÐL‰²ÃÒŽÌ1c-uj¦† öÆâö(ÇÎÛ¥œ›vûEì߇Ùìî,$°B¥WHŸ(ˆ»ûaŸ{_„¬ _…“%V€YX¸›ÁAŽz¯Ø!ç´•Þ·ùz,(ltÓ3‰ÁšÁ;x°HÅÛª‘ƒc¦Ä}w¬¹‘ƒ#ÆJê™Ä` rr[x¯±K&1xnÙå—°»ß§‡äFÆ­¯:ÚT¾ì¿ëñ‹«ÌhÜóXð•Iiiñs2ŽÂLêO)pË)܃€´F¥àÄ¤Û {ܯ§O%ù}£³ºsZ3L)‡t :V¡Pâ“ä´ƒ,9±’º›†¤¦™LØj¢ýšÿZsWSáÁ¯f2üå÷ù9²ò#C™4ñ‰Ž‹wìÈ)¹ ÇJrŽ×˜ËÆÚÄ>üŸ×$?©ÁARX¤‰M-)ïlže—§Âî~ŸÇßÛ…7Dm‡†%ÚfGzS¬§Q]7’5~diGƒnc-­\|i*¢pÆ2CÞco¹øš[vù%ìßÿ $߮◢áiÌÿùW4„¸Ê|ïq/ëƒçG8 k/+EAØ™¸Ø_>•‚³PÚ²Òá6_ÏÑþ¢XZôï©yHJ5¸/}É ä¹nK|ŒnôR°5:‰•4½ü¤9E‰Ec;ïäܲË/aw¿O™¬Ð¼¹Md›}v ŸÆ8Ã|×äÉÂÇ8צ„wcœ{7ûec%%[tjX i,.GrìæÄÁœ[vù%ìî÷á#ZHUÄÞ&Ÿ]Nä•‹:¹£y¤„Ǩ€†-í`ÊK¬¤‘Ì8Ötæ ÛXG«±[^¿ynÙå—°»ß礟Ѷ&Ê1ÝÂ@šÆ°ŠR[”‡N4¸RÂg!M3íú'VR]- ¤)lC@l¬¼5ǦĿæÜ¶Ë/aw¿» Q±Éül ìA#cd¸-ù÷½ÑR_í¹iE«ã$äí’ìH.ÜËKJÊ9e¥7Âí¾Àܨ™$jîm­Àq-·"׫sq½ðºˆlþe}°Ü G¡ºàÀŠBV’ÉT •ÿsÚJo„Û|=¤öT[ùi*=+d7¯¼ZœÁ¹ÙRGæ:­Íè1jâ$dÙŠ;~Œ3OZ_Ÿ=êådÏI«¼!n÷õôËî÷céÔ¼ØmÞ8¶ VòqãŒ( ËäIöÉ#’°–’Ð*5¸õ0ö͔Ǿ“ÐÊsÛ.¿ˆýñû”òF´ë#>ëÏ®™zÄ_1Õ3ÚXSÂK°2e;ƒSÆJ®µ†Æ6|›»e¸ÖsË.¿„Ýý>}Á¢¹AD*.³ïJƒ8Sð ©]4ž&QjK‰/A”*¤ý½kb%MïãSƒ&s‰%=ŒÇΓ{Î-»üv÷ûðÕ-X—>›âŠË£­;žü‡ä“ð*$?¥¬!q’ÝÉ dî‡Ä]šÔNž {ܯçmœ˜­ÈRƒ[Úß*îëÚ?)áãoÿu\ E‘XKYêš4=IlGÓQÝýHäܲË/aw¿Ï¾J&Ž¡È‹+žØV~×w'@«‡ Â¦·ÙzóœBœ„äq±âŠkãáãQ3•ÈsÒ*oˆÛ}=\+'[jÿó¬` +nšº;5N´„£€Um¢K¡­èGaøŸgû8 Ç7¯FmþçyNYÕ-œ¸Í×ÃÎDÏw-ÐfÝ Ði>ø.°}A¸äJŸsa¼qÎBñ6]Š$œÂÝ`ÝÔ¨´)êËJoˆûñõœV9~%j>»ÙTèù:°}Ò³ØbéÉCìzŒ•T\idÍD"±ß}ÂÕslJükÎm;ý2v÷ûðADž’º.°âFY[)¾o ´’A(ñ¸Ðq™jû`–·°’FæßYCæ`c[œ®slHükÍ ÝôÇéóXAgÛDsØHÓ¦xØL‰”9q°¿Rr¼`nö'¯ÄRâØ@ó€’FXö!÷Ø”5è›]ž »û}Š8̼ÝË;5 |ˆ8L0‹N(#NƒÎÇOVñÞ 8N{à Œ°–nwôN n‹îõ9vv·Ï¹i·_Äþø}ʰÀzjr }v BA…øäOB¥m³ÄÏžÜ_¶ƒL2±’îõMIŠ…Ä"cwW äÜ´Û/bü>ü^_PÉE ¾:h¤†‚5”‰ƒÃ Â;Iøì¿+à³ÙIºi¬¤æªÙÔT|ïÆâæ!Ç.®šÍ¹e—_Âî~Ÿ^TNV.‰mï JÖR÷N85üñËþ»z3œsÓn¿ˆýñûô=LÚ삟Ëg׈¿‘”Û°q›SRb¼œ”ݶ“Î[XK}UgK#Šla“Û±¤ä·ö³ìöKÔܻߧÜÁÛG|LŸM7C/[°|¢òd¤äì½ÙqJN,¥'«S3QÎ ìs³%)ǦĿæÜ¶ËSaw¿Ï©’£ž«­û2k^3®¶UL )ùÍ:6ûÀ=³±’òÖ,57ɉmà÷óØ”ø×œÛvùu›8yù}Þ:$âNßiÅG𿽉±¬G*Þx¹<\ùf½àí$²1ÖRÏ7«5HcJlÅBä±kR’ynÙå±?~Ÿ×†N¶¸»œà% RÓQŸIª¸½yµC‰¹$f’}æké1ÓKj˜^"ìÍôMÉé`s³Ë/aw¿OXg0³¾95[³³*a²õvôJê–˜{pãÐe;©Œ•”õÍ©aƒdcYXè±³¾9ç–]~ »û}JY?°4Üm}vÍ‹ÒÈïbjøï‡Þ‘Ÿ'‰+&¶§i')¬±’ïåS3q5*ìÀí™Ç¦Ä¿æÜ¶Ë/aw¿O××Ëë§þ­©¹ñvf•v4WŠU­¦ä5°/û Ù¯°–®<·XÃW”±z½iì¼àȹe—_Âî~ÿVÝÎòòXu™?”_Weú+zMvÖ'KrrÝ,ËNVc%­ìvkÐu4±l.౯ś¤¹e—_Âî~Ÿ®¯/‹oÿ[Sý`dÙ©{±¦ä\¡¾ÙË&…•tûßšvS6–÷{øßšsÓn¿ˆýñûä0h^V;Ø—‚¡+ðD¹ÓËFÁ”œÃpmöÇŠJYR¦š¤†4qÆvn@4vwãÒœ[vù%ìî÷yíJìÚ¾;fOi*HYxŽkÀþø.‰ÏòÒŽc-gŒYóð%ìÃW”Ʀ„¿ÖܲË/aü>ÿ^ò#¨åZjÐ=5>[¼”.dï¿ÌÔ¦äoªmö ÆJê«BXš†ì~c+‹$4öâVöܲË/aw¿ÏkÍ"hï3§Is³ÛÌMî¢ÉN4X%yoónvÐï$VÒ•T®Ö°Ñˆ±l4â±»yßsnÙå—°»ßç<»áä³öMÖpïe§ƒUF*tì–xÆäu íß›±’־ɥåû(-—c?kߤ¹m—_Âî~ÿn£à0¸DL úð€_HÌñ%ù‡(á³?‘í<¤+)O.©AŸÄ¢kOŽ=²òÛsË.¿„Ýý>ç|™­ØwàKF¢Aî@Ô~â.³³°$®¸¶°ý&—¼°–VókÐÞ1±u§»eÝ©ç–]~ »û}ZðððÞ©9¶–šÎXÒƒ°³‘ °vKøìã^¬/{gy ±–Z–¦X£â'b;8›£Žœ[vûEìß絡âÖýxjÐrUl¹ —-Jܳ6×lMVƒ>}a%]ÉÂj nzÛMöØ=ó=7íö‹Ø¿Ï¹¢…äS“SÚ†Dñ†Ì“à?˜ìõ;R∪™´ƒ !±’VCEkXÎ$ìd9“Æž«¡¢æ¶]~ »û}ú½‚Ê9öâ™H ¸"âó{ئðad°¤äïµõeïæ•Â9GRòL¤\‰eÉ‘ÇNž‰œ›vûEìßç$Ùà+ÉwSj.2”\d7¹ÍPRRâ¨&·éíZ]XIùnJMwžŒ”{列»ù^~ »û}÷—Ì•[+&‰ÁBsac!ž×‚cþuYAo#œ„Üô[}»qƒW5ßvž“VyCÜîëéã›%ŸM3 ãËw¼$‚E ‘htÓ’äk–xëË~ã®ßXI=©¦SÂla;™·4vO¶iÏm»<v÷û4q›ë£*thÍ`lzâq_‹“Ä‹Z½XÉ_ƒHâ5KÅ5‹í i‘ÂZZß”5¹ó„ÅÁ,ÇNjðœ›vûEìßÿàjîý«}_ ¾rµææµ)­£¡;®T™íO)¯æ6;2þ+éZyÒÇËØîŠŸžR^Í-»ý"öÇïÿïµfA¬4KÓþ¿”šýÿ$Ù— Y¤Q±!Òyã1¿X q¥ÄC ƒ¬¶“}ÃXI‹ КÁR{aAЗc/*@Ï-»üv÷ûœáez’‚$©a‚ÂD‚]H/wP5%/R}³#•/±’2H’¶E6–É »/jlÍ-»üv÷ûü­ùhílùÖ|˜#ª—ùÀZaÏÑ’’߃mÙ¿ E«‰µ”©©÷‰m\4v[á^ÍݼPh{{÷¿ù}z¹qÿ…f»;ixî½'ÝÎÎQ7©õ)ù°p/ûDް±–îÕèLšaÒd`»éÒGJ[sË.¿†Éš—ßÿ€ô‚mÞÝ¡Ç䩃‚b"ð^’¡B’Bå^ö—DÙÂJšIeÍÍvxÄ·Nϱ)9 sÛ.¿„Ýý> ݨj;f“qR3’nèÖ!‘]ž”¸)ñÁÚœƒob%qlÿ54{’ÛE'ı)1 Ĺm—§Äþø}ø½²±Øæ²f2 ~gHûa¼"nØ)á³/¨´Kûí–DŠ`Ìâ±ù×Ò ²K Ûq7è±»Ce9·ìòk˜?sù}zá‚7ќР’àÀ…• r•ï–-."c³wÖi+©ü$4(®%6äFŽMÉ×3eÙå—°?~Ÿ’¬¢Qô‹mÉgSL¾)ÑTñ+º:}¾I¿—3­êJœ„ä^·{ãÞ.ud¢æ”•Þ·ûzzq¦ZevÍÍõtÒj—+ù›Ò[êfuLb%m¹¥Á0‰mìw­±[ò {nÙå—°»ß§¼å(*JÅE¬iHc‹òÜIîߺ ¶óJ®Ñ¨«›5/ÆRªÉ5šT„[É족)ñ¯UÑ"»<v÷û¼ƒlgîγ:ÈBƒ èÈãsNS6¯”¸ì ÒcÉ~‘:KXI=»ˆXƒ«–ÄVæjìºçöÍ.¿„Ýý>ß*…“A ðäVéeïã †éHþˆb ÄiÈHMÉ[¥¾ìÑQèJ¬¥¾ÚªIƒE)±X”rìäÏ˹e—_Äþø}΃íüz˶”Öt3àÆÆ´6K`·¡žÔI•Ǩ´Þ|+)©“RSÉê(,£u{yîbÆHø%ìî÷ésÆúW$ŽQÁ6sü AyÉP±àœ v°ã³Ñß’BIÊÅ'3Ù«qÏÃ1õÉìlÍ)+½n÷õœr3Š-båI¹y‘ ­°=ZG>¤¬FëwIü¸yâ°½“^QØî®ˆÏúâÕðž ÛIY­±û¢´ÖÜ´Û/bü>M3™O¬Yú*¥¸¾yƒÜçUžª«ßu5A+$ëD…µp†ïz­è8ó×È,ÏQÛ"žçœÍ¼ôá q»¯§«èÍêÈw…ón÷fPòh4á<üŠ$e€nÙo”m+‰cÿÑ›š‡)PÄöÉpÇîs…ó8·íò”Ø¿O7ºsöÙ`ãŠiù ËD’¢nDŸ8ÚÊêBá(´ÕS ìïŒÃ±Ô£– iNYép›¯§Å…8‚ B{[kÈÝpzŒõ:¢h­zçà([Ã(í'c%Õ É[SЀXÜâ-‰Í“«ìö‹Ø¿O÷¶l‹S¡õÙ5,Nˆ/êA‰yäüµ'Ë–á=[Ò®fgÂf[5sÁYƒ+Äòⱜç–]~ »û}ºpâoKý[­éŽG¼M€ ŽX*šg¤Iî÷²ƒX"±ÝM€5°»}cÛÍtyŽM‰͹e·§Äþø}ú½6”Tå>WŠ(¹‰_Ô÷ã{؃.òe£Á`JþZÛfG$±ÞÜæZª/6±øÍ=®æµ•> ·9|ºÁíh¶¹†ÞàJØ›d¦£0ftñu\VÌèf;ÙÙÖXIOÆŒ¬¹÷Aý»ZìqlJÞ<_›]~ »û}š”ÐãéxW(P Fó‚k¼;.0ɽ+ø}ýבVpÉGa¥`š—pˆ^{Ô–¡šSVz#Üæëy¾u´úün/jÏ|ëB&øˆ[ ¼Qû/G¬«¥äÀÏXvR;k cÿÑùv°óÛ¶âÝ䱫‰IsnÙå±?~Ÿ3ˆ0߸T—8©s¢L›5VdΡÀûd±k“?¯òx ŽÊ?¥‚WÄuxiT øSÎi+Ý#n÷õ4õÅ4Aíä=­5¸‰©$¹;(tÎCYŽ$'ëųd;V‰•TsOk ‹’„-àKóØ”ø×œ[vûEìßçíwžîƒâg× ‘¬“ž"´‚Å”¼Âµ²ì >L¬¤±êHÓÙÍ[ØÆnÞ;ižrnÙå—°»ß§g¤Ãâ¶ÐginÖû7;BïåFHÓÉ?·ÃSY4ea%]¦àNÍ@‚§±•¾»gëÏ-»üv÷û4BÏ‘lhùÙ5«{pÛX¹ ‹¤+%FÑñL;Þ”‰•4ó¦ÒÄ_;pnõØ#µž[vù%ìî÷éó:@ÍñÖÜYÓ™‹¼£¸½D,ò$qGúÄ//í*Ε´­­A³±Èí<6¥L,ÚìòKØÝïÓ¦—}Êj+ +äß«VÒG´ %¯u³^a+©dÖ‚4ýer-±qC5slJô ›Ë.¿„ýñûô@J¾ŽNrŸ]ÓɃP˜ ;XƒÍÚuJ´—ª›D+©ùÞ(55“1Ø¢T©oJ>ìÎe·_Äþø}þãõÐ{gûXk&ª§˜Oàë»vYbˆîB5†íì~j¬¤; ­¹X¼",‰s쑊ž[vù%ìî÷yø/òëz^­á3ÇHN´ú,ÕQIèÕkÙÙÄÐXIëyµ¦0¹–ØÂçQc—õ¼jnÛå—°»ß§1£×U¨—öJw^ã`ÇRXWXgUyu—Ä =nä7{G¹±’¶Ðž4Õ=ÂKÇ•cSrLêZvûEìßÿ Åz` sI¿5¬‡z°eu gBt”ÄÏ]ÉÒŽ.‚‰•Ô³¤ßšÆf³ÂVwGi)ñ¯5·ìòKØÝïÓ÷ðåVÙ&G¶¼ Q³Ú˜•S9ì(1^û¸U÷Ë·£Z¨½sI=É‘­inlEÊc× PynÙå—°»ßçëk\…”ÌcLÍD£ñ⤒—U »¼+-_ÿ¬× @î²\ÿæ÷éúŠñ⥑™H›‡¾l\V˜iûž7©‰"¸Ó˲w>EÄJâØ5&$F4A؇Õî›×WÎ-»=%öÇïó}Sl¥ûjÏnÍËt…½R±œ ¥[ò¾©õeGcâÄJÚÚ³K£ëÄjƒ¡±ûÖžsËn¿ˆýñûôz£ÄKçWkÐ.;j‘#O¼ƒ6j‘²7£í[ û¸uoÞâ]_”½¨·ùìšÁ+Îï»Ø…¾8y\ݒϘ³/{‹í“±–z’jXÓ˜&le¡Æ®~kçÜ´Û/bü>__‘[T3ÃÌt,C«íÍ=c«”¸N²ÆÊŽe6±’jf˜YSœœu1/i¶›’×׺ÙåWqâÖòût}åÑw\k}-.¤ï¼ú¹YûØÅÆ“’×ÀR–}°`ìöÚ¬"·\_‡ËËÞ¾°ë§Ænk}ÕܲË/aw¿O£ûÊü{L#“Fïnæú]ŒÞÝx1Hò{¸?Ë>˜»+¬¤Ç¿øÔLó—vÜæ/«)ù=ü¾Ë.¿„Ýý>ïÙ[.ã~vÍËö€7"}…Ðß*%Æz¹9´]¯[ ^—Çæ_Ks³U(±·ˆ9ö}ímFë³ìòëv›Ñå÷é9çfœ{Ň­élÅͦ?•¤UÑÎ6¥<¹,;#^ÆZZñakø+Vñ_½Å‡5·íòKØÝïóçµóT(º‘Ô<$P¯ìyó’jt =éF¶ÙIÅ`ìpŸžúæóz«‰ð»°h’šc_ŽäܲË/aw¿O¿×ÆNtCøì¸Å„^GzJŽ4\eÙo·ÚVÎñxlŸHoãÚ\X´>˱/³†çܲË/aw¿O÷Ãl¯¥N7£&‚Jëb ÀÅ-YMÉ{Ö¾ìƒm…•ı39mâê“ØHJ/96%G§ÞÍ.O…Ýý>/%'¨\Ž…§†åÆT¾2™±ÐñO¢ôǧÝ{Ù/¶(VÒ•E„Öt$¦‹®;S¼rnÙå—°»ßçßk\’¿ƒIÍàé‚• ïåÓEIÉßk[vÕPk)c0©i,!¶²U´Æ®ÙJÚsË.¿„Ýý>=çL4÷,ÙRÕšïûnŠßŽwm(ðA²$¯÷Lû’fc%•l©š±¸[Èܪ±)ñ‚–sÛ.O‰ýñûôœS"paöÙؾElïûö¸[p…xeü%¢‚ï²âÖÅ8 ·Ý¶›>ãx¾Ó¨Ãí¯=§¬ôF¸Í×󢨋ٸeE]Št³(ê"ƒQå…ØLÉ×gq!l;Iø•Ô}˜OMeË1a [Žiìd‘ʹe—_Âî~Ÿ>¢d_ün›U{[C„NæÆØÎ30ÑSòCÙY!…µ„±}‰z1‘Up`çËîÐ{fVÏm»ü"öÇïóö±/ãd>²Z3q윓Œû'¾l«ðä‘õ)|Œ÷nlwb-]ydµFyÁÂ2/Øc÷<²znÙå±?~Ÿgæ7R\•™ßH‰­l;° =BL,õ”¸…VÚo²& +)ýSƒbþÄ¢˜?ÇNFÿœ[vù%ìî÷Ù÷:£±6Hh"Y°B~y6iÂRnÙÚ‘ .œŒŠ?•¢ÇÁ8tKö¨ÙKÙsBao€ûñõ< üN(Õ;£À/[tþÂ^’(u¶#ªÃ’ãº},;:'VÆæ_KfcŸ‹I•›Rži¯e—_Âî~~•¸„Žgª7ƒ9ùA9P°#d ¡_pùm+îÅ“0œdß§\R‰¥4s¿—š‡Ím‰“íl9öÌýžç¶]ž »û}öUÞ,Œ†YÜ#Xbõ›Å„7Ê>o$¢K_nPÈÚŠô$ã$\.4´¼Æ¨Ó£v·|ðœ´Êâv__°õ‰×uŒ6øïK ŽQ&ÏÊcºQ§„WÄ÷h4æ²7¬wÂZÂØükipÔH,Ž!9vSrnÚíWsêå÷ÙWù]™©…´u·׳߅,¸Iñ}Œ´ÞË:˜JDœ„â_ |®„› øÖ¨3™Ä5§¬ôF¸Ý×ó¯òâ/ó½ò«¼Ø5«²ñx4ó‹Ú6¿SòWù<Ëj7c-Ý£µ×¾‰Å¦-ÇÎB±œ›vûEì߇k%êç{ßÝgSTrŒ!¹¼ I˸‡ƒ_&Cu´¢Èß8 É«GE{_¤ß×^pÝqT ¸X?Ë oŒÛ}=]+{ì"ÚhyÊ´W¼ kÿþ<¯Ç:·&”¼žõÍÎm±’Z¾2­©øç›¨±K7=·ìòKØÝïÃlÅ-É€?Kq!ùû´OË…,åèÓ–^…ÜÉŠ®ÅÆQà¨zCñÄ›I¸(Ú¿=*…?|Ã_Ë*÷ˆÛ}=}*Q\/1qø¤ u"m5Ö³Ÿ\¤´^)ýÑ3<7;8+©fã5kÿ36ºh”›ÿšsÛ.¿„Ýý>|*ÙÔ f5© ~Ó^³ò€·œF*.l_„³u¤V (gªD=j‘zNZå p?¾žN<j†_!=kPÝŒ‹7û¡U²5>)áɹA1˜öNúb-­Ä$k°ÇN,.rs았ä¹i·_Äþø}¸ƒm ‰Tp58”My&®H"‰<ú×¢9‹„ðe2!QV´g1NB7ÿˆ¸¸4®Ä‹Ù£¿¶='­ò†¸Ý×Ó(ÞÅ»WôÿìšeÛmwâË z½‰DsIÎ?x7;Z %VRv2OÍ ”°è/žcg'óœ[vù%ìî÷á¶ŒcíÍVàŠçBf´c»Á\×SÀ£FWd±³q²{†h€a(¼=j¶Îðœ´Êâv_O 'nl6¢g—¢xÖ _””ů?". tÏm‰ON‰OÖö ¼‹ÆZ*I¬"ÍÍô^ao¦÷jlJ<…rnÛé—°?~®•Ü‚D}£=V ¬yÜ­ ÜÂŽL x~ ÎTL-dÀYhÎÔµ¢Æšg\Áj¨QK®•š“Vyܯ§ÑÆ52'~v /Ñ hãYPüæM‰ë( m¯•b-5‡ªSS¸– n­±‹CÕ9·ìò«86´ü>ÞÁ‚çôÉô )X:”å qûx¡ë í`KMëd‹8â$<¹©—‚!â”bÔµàhNYå q»¯§éÖÆh·;Hž¨XÝÆƒhd¡ÝÃ먣å7®¡Ò~s½VR¾¦R3ð6–AKݳøÉsË.¿„Ýý>\+'—ª;~ ŸM‹Òù˜w§¢ëg¬—¹STµÍ8 ·ãV\ñ[3nDÈΣ“ÍyNZ§×ç/îÇ×Ó§²ò#iβH͈%9ÂÖø8Q ‹Rõ”'}æ²_þªÊ\Ró+35•×zÂvÓØÅY9·ìòKØÝïõ‡Âˆõ+Ülúk^¸†ChiàŠ-­•íM+ÛÛ 'áò·n‚ÄÆ—È£&m‘ç¤UÞ·ûzz®Ä["¶øîgMå/¯”Æ~ú±j«q$ÐÎÍÞ¹ž +©dÿ;i.­wÄ^Z 9öµ­•œ[vù%ì߇_%8Ú"ˆûð©´âŠmUT1Øü]¿™‚%A'Àº¬Ü“g¡;oÀŠ¿LãPàáQ«©aùÚVRÉþ;ÒÄ'ÒÉȱ)ñ¯9·íôËØÝïÃ,È×bëñŸjÉ=_²v“•1¬‘{M5F¡µóf8 U'ŒÆˆWo‰C¾ŒG]é4š“Ù4ò¸_OŸÊΕ·ºisjpDZ_~pßOÎûXòsVŸe¸+©®çìÉøNKì|Yp̱)ñ¯9·íòKØÝïïòBÕxyL `Å«tž›…\·žô¡—Ç …³ð˜:ÁЉ{Gâ òe4jÉtÍ)«¼!n÷õ<Ùyp­ë+Ùyðî Bp 8A–-É7ÏfçAÉXIÏÞ¤A;nfëplJ^‡Çf—_Âî~¾`AÍS%Zº1&⠯’‚^°±_“•qß\Y½«p:µiT Úì>©°7ÀýøzÞ*G™Í;ØÇiƒé•'77|ŸIâÙ¯:Sb°±R%k©d&º4ñœÍÄ~',oŽMÉ÷(mÙå—°?~¿`cÝzîl‘+ÏßõT°I®pª#R°»£p±+x=*=ëO*äp»¯çµñqš‹,½’µñÐTFUÑ£k!ùÕZJø¸Ùe8íÍY±hÎ+©$ Ÿ4Ñpª$v2™DcÏ•l¢¹e—_Âþø}¸íŽ#ªã¥Oìłѳá·Ù;3*$%hƒÒSñÝï´7q¦ÏgV€)Æ8¼Z=êåÙç¤UÞ·ûzºVN§,»c¶5dQ¾[BvqäßÔ”x§¨È”ì Z k©fÇlk N¡ÂF­O˱)q­äܲÛ/bü>|*o #ZÆ„ ).„ëŸÉ^îˆÖ(H'ªþYEl-ßÝ{'£ê©|ÙRä»^ÝnJÁËê“V¹GÜîëé¹òæ¾0+àSó2‘xr[œH:•‚v°}Yå q»¯ç1Øhw?³{jîX~#ª¢Ctw :Ù”øä\,³“{ïÄJÊvî©,5¾\¢w•5v÷V=ç–]~ »û}üTÆ åä³)@q}·›¹0H’-AZOÅZ8 Ã7 V •²qU—5=•ï²Ê›¦¦³Ë×ó„¨Ûøþ0.SÇHCÂéÂ*è ¡n)eBÈf¿¸%VÒíØPj.–ð «0½RÀ<·ìòKØÝïç½fBˆHìúØÎëïð/,ÔLy;ÙGhåéH8 ™b’¼CŽ·GmÞixN(ì p?¾ž¦iá–xÛ¡§[íÎ;eí£ž|ülÒãÞðnËÎhް–rŸn 7ÜÆr/î±×VÝsË.¿„ýñûð«|òäȧҊé\â¡o>ãð¡ã[°µ16 œ…æMV5z¸ó}›G¥ ÍÔH…½îÇ×ó–…-2œk {Nò²1Õ öaxòìW M;¢¦‰•t¯ƒÒ äç ºŒ»¯ƒš[vù%ìî÷)¡ÄÅbà>sÖˆ+SìB:9J´'qŸ¹Y¼m ; Yµ4³Ïœ5¨AOì`/3=V¯3Í-»ü"öÇïÓG”Ç‘²§ïÕ2rÞ°¯« ZJ|Œ6¡¶³¬ÃXI·7í©!wбäNñØÃûöœ[vù%ìî÷Ù÷ú‚«£sñþlŠQP ßh94¥ ÀL |©nI{c×@Sº“-Ñš‹¿caÇ{˜-ÑSCa§€üqùœ:±Ž;wµÖò÷û¢ˆ•ãoô[±ä@À(ËŽüæÄJºsWk ʼnŊ‘cg¹QÎM»ý"öÇïÃo”­$+BÈŸMb÷NF®‰N.ÅÂ~ùw*^ä'!CÕV T¸òªCæHz›©kuÈn÷õôágEk`ÿìšÊ²Ô3µòx¸Þ”øáMv[&VRr[S_òD[YÛ¬±)ùÁŸ›~»û}¸~‚Â/>«Kë§x;>ÉÁ‘ÏøLò‚·¬TgÜYV$s'¡dÜœŠï÷Ó‹qäeШþ0šøÞi¥7Âí¾ž}•q0-¢ïçmIjOÎx× áäI¹¥ôweÚñM¬¤êK÷Ô2NKM‰͹m—_Âî~Ÿ6],*l>l¦¦“8ÿv`PÖDŒ)%¼<¯—qbÚo€ŒµÔ|äL h:[À$ã±K2ÍxnÙå—°»ßÿ c$ޱHÇýìš$€ü{d¯,°Š,eJ™1R—Lñìë±1š†+jc®¨=6¥ÌiËN¿ŒÝý>|ÛF±±þl ¤W™+¡Ç¹Ï4 Ý1Éï‹òši}˜»Bœ„ꀤ¸ŸîF ‚F¥ð‡¯ûš {CÜîëéW fßÖÀðÙ5è}~œ/šò%Á,‰1ñ‚˜¸ì,Þ1ÖҕˬA=bÙ—Êc÷ ÒznÙå±?~>¢±Wf¶æ«ÎÖ ÷oueúc÷œ÷7¸ŒN»nÇ…•4|I R„‹«¾»%_›ç–]~ »û}ºŠ"Ú¤ ÷fæadkÄ66<7˜}%ù¤x-{Ü…ÄZšÉl *‹’ð{¬2\Í-»üv÷ûpÈÊiI“mÆÅ̀υó|KAGÿØ–R÷?Ý8 Im^SÆa³çQ“ÛsÒ*o€ûñõpèut(~¢šê³kÀd†l‹½'‡cì’þhÍ›7¯ÆZzÜk95¬§¶² FcSÂ_knÙí—jqv¿O;ÍaIˆx²¸SR3ÈQ<°î]ÙŒ/V´\yD¥}²"FXIÉ’šòKcAs”cW—çܲË/aw¿Ï¯:£ÐŠDJŸ]Sqy± 2? 6ºSòUç³Ù™Ø*¬¥’]±¥!Q“±ýáÅ'Ǧä«Î±ìòKØ¿o­_&¬êV× P˜? )‰ÈóÀóZ‡ï^SñrƒFœ…áû\+@n\Ó­[MAñý÷J«¼!n÷õ|C„„¹âfî©a/ÀÉÜÇѸ¦‚ÆW’WººÙÑd*±’ÊÚâPÓ‘æf¬ZjlJÞÍÍN¿ŒÝý>ßF¹c+.7±ÇýoˆxÙ}'{‘Ê!A¼;jG)œ„â¤7)*§…«HœÖ¨œ«pY!oˆûñõ”ˆ‹1’`|vMÅÆƒ ©ã¹ãñËøÍ•oÑVllvÆ~Œ•TÜÆ±l;@^ä±GrynÛ v÷ûpoûšQ<*V w7B6âtü'"œ3RÊpÏfgE³±’F6Þ°¦³k°°ˆ^çØ™SžsCc·ýqú4ŽÛãÝŸ®¾R)DƇL¥ï>ûbno±À8+wlEÞŽqF~™RtFCˆköƨ«êSs6‡‘Ÿ‘¸Í×s.þ‡µZÓ¡Û’5Qäû}Èïø°ç—”x˜\ëe¿p`¬¤éÌ“ÔÜ$¦Y/õ®±¯ì£ã¹e/Þo_óo~Ÿ.š7RuûX‹¦4MTΈïÆR…Ž;ÍXØR ß艵4Ö¢) yCŒm^[J[sË.¿„Ýý>,!BñYü ´²Tp,T‹k‚ï{r¢O–„ðe‚™ÝVÞb '!wAV`#cö85·@ž“VyCÜîë9÷O$Y7P‡~6MG†cg˜֑ ‰Ø÷eÉ‘òv-;/œ…•ıÿ(ˆ 8 Û°vzì–dýž[v{JìßÇ‹fåÇÓ‡Íʯò»ådwqÅÖ¿Ø|\‚Í+l[nœ„¾]^ü*Ùúâ·Wïµæõ¨æ„ÂÞ÷ãëyÌ6BNÑ­ gÌöåso¸›écI7 ÐúJ’¼If;ÉÓŒ•„±³í /=}aÊÚ=vË[vù%ìî÷q̶2E@/ +zÜ„#Ë#ä@ÚU{,(Sd¤âÁ¹È8 ͯ+j¼6Œ°G-~ïxNZå q»¯§1ÛqÓ’,*©!aÀ‹ F­¤x±±‘„ወ´#k'±’’K%5,–4»»$Šç–Ý~©ül÷û4f[˜Ý4Ý :5H$¯ª, X &¥”We:í~–ÆJš>Ǥß_b/ôùðØ—29·ìòKØÝïÓ}í #á“eÔÖ0ðÅDȶº@ {¥Ä¥íüÒþ€6ÄXIO–Q[ƒH¦±ìß{$;¸ç¶]~ »û}Ì^•××»Rèá¿ òä×|­âs!3Ùde’›pJxUI)4*ü)ç¤Âî÷ãë? Í+ˆ„jcš KùEv;ù÷ewÆU£ãï\v7 ki$/›5§,cv»eõ‘ç¦Ý~ûã÷ñ¥’éSeÆV€(6Ž •Ä£±Ÿ,`?“ä#ʵÙÁ–XIÉ2+MpŒÖר mÕcKò¥¦†n úãôéãYpØc˲ϮÁÝ»¯•¾}åÜÞõÀu~¶²~ ÂJšëþ…ˆÑY¿žQר—ëærnÙå—°»ß‡+håÒ†xägS ~)âJ¥«ñTÝÝ‚ž¹'Q_P'!ãžRTÜ“ÇX¤F]AOÍ)+½n÷õüÖóÑšöä­ç£u1þè€S^3«•”|Ù6;R˜+))¬RÃk 3vrx2Šeœ’BWjðyk©%‘¬5%^ÆVÔrxlJÅܶË/aw¿sÅü˜ËÓ 4 |‘KU¿"^YSP.BÒÊü%á$<Η·ë€p_¡JAð› {CÜîëáÂùb˜Øj=|뤦#>óÞŒ-ƒb56^Ñ)‰‡ø÷Hƒí×elJ5ãÖðî‹ØïãØÂ¡)ü‘ï“V9%àîôiÀ¶’6ü‰cÑg×à—-M/æëÄ‚‰e)9`ûnö˧T`%=΢JÍdfÑðI2:°klJükÎm»üv÷ûôjŒÏÈULI’šŠòî‡OÔ…]'è RòÊölöŽp²±’JÞHD-±Á5rlJNGË.¿„ýñûðùDý(.÷¹ªXÁh—´–q¼ô$Íe½ü+œ„îä/+ÐÓ¸'NZùå9i•7Äí¾ž®š— ]1oMg>äM6Æá\Ê7%ç”ÔeŸÅ¼µÔ²bÞš‚²°pxslJ´~ÏÍ~™üäóû8ö~“öå¹{¿¹w)\´v5Kè“‚VÍ’ Üga:‹ßŠ;® ,J£–¬¿Òœ²Êâv_O¿J8—™d+ÍËDÙÊ›ÆÂ$ÚÆ›È²’l;`d›Vb%=+ÉVšéDÙÀ!Û̱)9¬›÷tÆZzÁKÍÄ?KØ×ÂûÉ[cÏ-»ý"öÇïóU4’è"“aä* Måiüa±›ŒŸ›èC(y›y…‰•T2ä' “(Œe~…Ç^éž[vù%ìßǹBz§wVàõHžÜؼ•æ"w º5™ËÊÆ-ÂIÈêW+î8™‡¦ S£JP®P_VyCÜîëyO©¦]Ûê)ÍtO©áÜ{JËR83˜0“väÒki1Ð[3ÜS ØîžR#%üµçîî)¿†{J-¿OÃC¸ÆR¨5¸x‹ M$¼¼¸¢‹€Î’>Ïf[Lb%µõˆJSùˆÞæøÇ#z™þߨç–]~ »û}Αp ´­w-kÈH½‚ZÞ¿dÓ›Õ’?û75ñÝý^ÉÂð}´_œA±õò°g4Û\Füñ.nzé>âwu_LØŸZb)ilI&Oe÷clã’Æ–Äïõõ3v{Jìßç¹}õßæw—B/8\±ÞèÉwÝ÷°¸ê²×uÆQx’Ù] t]îºXÔ‹Q)ðO1§­ôF¸Í׳¯²´‘dülš`R‹Ê¨ÛžëßCweJXÕ+z¤½ƒKÀXJ›- ŠŒˆþzì‘ÑaÏ-»=%öÇïsVp½Z›Û.Hƒt×`æŽXúÄjÌÝ#%>FÈCL;öv‰•”ëbjÀÅjì÷œRÞ›ÿšsËn¿ˆýñû|wô’é]»£——Ñêzàˆ ƒhŠ}Uîn.×8ƧmvöXÖRË\@k*›Ó [p¹ï±KæznÚí±?~Ÿ¾zQÏX_ð3}–¦Å‰N#~É.3Ia(ùõ8Ʋó%a,$ýGË54Xm„­/V-‰¹Ó.O…Ýý>ÏY¸Y)¤TêÔ€ä*>í›uîãáH³äe¯´e'´±’ÊÊB &Nß5±Üzxìµ5ñܶÓ/cw¿O/E¹M«~v ¹W# íÍÑËw.‰”ðÙ“§ɉ[kô2=6ÿZä–'õx9vÖëåÜФ_Àþú}~“6˜TZjÞ¤©Î¶|Ú$¶•ÛUçÖõ½ÎgÙ#2VÒ³îÆ¤¹QÊ-,iA<6%¿ bnÛå—°»ß§|}è|=Y¬-.‚üê"•6›‡M L0@:‚­ m7ŽÂ“eÚR Z^¸‹õ­•ÿsÊ*oˆÛ}=]R+úÚ_IPSƒµ¿tHÜ´‚ºá±v ­ ªžvÔ#$VÒã½TjÐÈÉØØ<96%þ5ç¶]~ »û}úêÅ;³>=û‹Y3Ø# ©0õ»Œt.’=¥?zQ_›ýB½«±’úê/&MÅ?ÒØ?½»úGžsË.¿„Ýý>ßõ‚Î5Ë^Sƒ&5±óD# ô¯‰iKɻޱÙñPk©,Ò j&JW(kõØ3Ë^=·ìòKØ¿OiÂJ,ÚdÄül œˆz¯ƒv°RtpÓPÀÃÔ{ìˆlE¶qó¦ ¸Ž ñ4*þ)æ´•Þ·ùzøU¾ ýw3 QjÀà t°”³ x}QÊ) ÷‹ìib«0š±)%…jjŽ6öB¨Úc_ÊöܶË/aw¿ÑöD±² ögÓáÇ"†,éϦ˜2ßUÌ‚‘³9|‘¯Ëz‰Ípô’ Ý ¤H7p§ªQGža5§¬Ek,p›¯§(ª¿G܈PÁÜăM•Ù×#ª™’ºX©‰µ-z0ê¶ÁRÍ»ci"ï¿'–­Ò<6%>¢œÛvúEì¯ß§èÅßDÆS¬™8;.œ:/<3ã)ñ•ÍÎ7‡±¯Y•̈n b"ÆÞˆ—xì;ã)žÛvy*ìî÷éÁô&ÅHwÇÕÔà§E¹±ï*è*GÅšÒwú²_•I¸ÄZêkë* àÆ2 ê±k&t{nÙå±?~ŸfêbCùý™\º0•‚Yš×­­¬:J¡À-)vµ²r¿+œ„'{ÓKAîqâ.¦grT sÚJo„Û|=ü*£à)6ªÓµ©A‰pÄ#|ÁIe5¦$>FŒïÈþ¢ÖÜXKÓ9n©A%UbÑÝ1Ǿ’¬ÁsË.¿ˆýñûôe%üìÙ²Óš 5ÖÍÏ|Ñ’³u>¾w¶ìl¨øK;¨Ò+©çÉÕš†˜±H`ȱkž\=·ìòKØÝïÓ.¸ÅO}^ÚèJ3x;Öxè^2Û¼)ýѶ¸>Ëþ²ÔHXIÝ?ôÔ4ìæEÃä»fJ·ç–]~ »û}Þ¿ó5AýgSp¨››säjÝ‹Î$8gZ‘Af…Åe"EcKâXȬQkÞ¾iNZå q»¯‡gÑŠžuc4ïRÓQÚXù üºÇ‹Š?I ÁN†`eð+)ËZSÃZdc 2s=vÉ“«ç–]~ »û}úˆ¢±k<ù¢n¶æ-¼+CÇÅxÔŠu­¤ÄÇ?ºK‰cÿñ&úÆ»$HV… úß+Ǧ”ÿf—§Âî~Ÿot'oÆÔ :5 ÝÇ ¯)Öü¾)yëZ7;«S•4Ü :58 %–!D½BŒž[vù%ìî÷é÷Ê䀵éfÍÐ"Æ7g¶ï«5šx5&Pâ‘„‰ ²w&-ki8M!5(èIlC|Âc·Œ_xnÙå±?~ŸîŽ&ˆ+Êl>»¦3l/rDp‘Ä&šQòîèN ²Wb-U³7¥e<ÆF 46%îŽ8·íò‹Ø¿ÏcG¸í2¤ä—¿‰¨ôËoª‚N’cGïf¿øt +©¯;PiøMËC­Ç^‡^Ï]Ýé~ »û}ú¼¤Ç>EÄ6Ò¼…7Az¦ØÏ[O‰ÏÔDÑœí¤`1–Çæ_KƒÄFcYžî±Ÿ¹nc9·íòTØÝïÓ%u s32Ø>›‚ùméjÌ‚NbFy|´ã(¬~öRÜlØ Ü zg‡æ´•Þ·ùzº¤^¸¡ï‹Ér*}º¸`ä[ª²ÅÇTÑÃö†îZÆZZ|LÖ?LØŽ:PM‰csnÛå—°»ß§¯^Ä,â7£<ÈÔ<Û»ë;%ßm?›ýÅîÐXI¹-LMg„°M4vn sîæãYØÝïÓïµEXô´Š>HS™Ò5šÉt‘u9p®¬y÷†·ÍŽ6‰¥T²ëWj>sWÖ§•›Òyònvy*ìî÷yÁÚ…ì ]WX1áÔÄÒèí4PQ6/ Œ!¥UÖ‰lWá$Ü‹˜µ(¢«”û-Ûß7G]-ê4§¬ôF¸Í×ÓXoÁ ý½˜9­!»æ‹êšØD0çEI$†† ÙÖéÄJZÌœÖ]ÓX2ozìÅÌé¹e—_Âî~Ÿ'«Tnæ;gK3y3ÉŒ›ïþ2Y¥§äd•«/ûÃÊa%Ý~¥&;k_Z2ë{øu”sË.¿„Ýý>Ýõv6ÇÄEìg×ð²öl—9¢ §Ì”¼ëm›ýñj¿–Ô’æØ”"ËZDMÉW=ÏfïÙÆóú›ß§»^æúeCt+ðéEë£MgpZôG;Pp;è²Füç6NB¶B··ÆáRãftÏ)+½nóõ4©}¯ÇÕO–4Gi,L‰T‚ 2)ì¿u%g~+ŒÇÚÞÐÄJJÎüÔàÚ8±y »:Ÿ,ç–]~ »ûýò W£±ò¯ÅºÈ$›©œ®Ê&[Îù&lGŸòÄJ>¤¦3«PØÆuQc'ëgÎM»ý"öÇïÃG4šU´^0yœ57ŒøU½húFüàRòδ,{¬m3±–®$³fxG]Ø£'ö;»'yœç–]~ûã÷éu Xõ®;K…¥˜$+Áš~=ä*¹•öÓ|–:[Ý´Šä„w›.–?ã$ó¨=+„5§¬C­Û|=}Do„#yÝ©¼Òð¬Qð‘ÅCYz߇êM‰‡G0šØ^ñåk©»v?5ìªmlÅÁÓc×<˜znÙå±?~Ÿ`¯<Þ‘hÀ¤‡ˆ m™_DëQ,ñÁ£¦í(ùH¬¤ê:„Ô ¹´±7*H<6%`bnÛå—°»ß§×1$Lš5¯Ù¬Q'Þó[é¸@¹Sò˳ìw!-†¢³’ò›JMÁ¹LX'qrlJ›sÛ.¿„Ýý>M ¼•BßHIþŽŽQ¢ÜÐÁrXàÒøjTÇëùT7Ã¡äž˜Š¸yºŒ»ÈîÇQ)pTÌi+¼1nóõð«œàÝÏG]i&Šã{­‰#B¯gJ¼ÕĹ"íXÔK‰có¯¥yH6ø%FŽM‰͹e·§Äþø}¶>@Ïp#´Ô\lüù€æ%l.†ÖSʰý²GX~&ÖRv¶IMÃæÀØŠ¦ »fÓPÏ-»ü"öÇïó³èÈFŸ]Ãì‰ÑI*4y²Ç1W’Ï¢Q¿aûM¶"a%%!Sjøž1–oÝ})—sË.¿„Ýý>}D1PTâ*ïH –² ›ÎŠVÙÃÂ=Í÷²â_k…’,TDŠM7îBF½²”OsÚ oŒÛ|= ï2A”ý>»Fl ¯h÷UqOYSò­fßìwV+)¯ÊS3X>#lgùŒÆÎ«òœ[vù5\š³ü>}D w 7ûìŸEò@”3< FCšAJÁÞ}ÙqlL¬¤j֜Ԭ¹Nc@ŽÇ¦Ä¿æÜ¶— 1¶¿ù}ºÑ%¹zÍn°©A[×Ú;¢ _kÇÉD7£ Ù>É(¬¤ì ›š‰µ°1]3îâ¹m—_Âî~ŸÆð€½™6vvqà¨è¦CþwúÞ{ àzÒŠŠAã(d 7+ðŒרš£¶ÕšsÊJo„Û|=ü*+ àbç§XƒâÔ‰ìþù'—!’ðq+1Áv&-+id~Š5<¦ËcšÇ^”ƒž[vù%ìî÷éW ’'5w*ÅDÈ E $ç=ϲwò¿ +)IqRƒba£Òezh ôªV¤Sþ8}ú¥"ÿ,Öj½‹¬é|â*ê1boEb›$~ð//ìioH‰3VRËþ6©Á[ÚØ†®3»eÏm»<v÷û”"nÅM¬9v©@xMW¾K!"wƒº-` xÐ ÈV´ 2ŽÂí—˜¦„èw§Q‡cgžSVz#ÜæëyênÄ®Ö!5Xë‘>+êÊôÚ”xXo 4JÍ6¥ò·ÔÝÎßXn<öÚ+xnÛ鱿~ŸDg¼^T‹}6Äâæk€¤§±ŒónËy¬ˆPO´ #NB[å¡T  M¸Eß•‚oÛ¾sÚJoˆÛ}=%Oy}[ãË3kx%º7Ëð‰Þ”øä4ÞÉÞVÒº<³fUZXÖÑzì̩˹i·_Äþø}žâY¸z JT·7Š”îàjck¤HþÖõ3%ïo"9ÃvÆŒ•t™Ø*5hÚ–Xôüȱ»c¹9·ìòKØÝïÓÝ^Þ‘v Ö“Ö¥ÏÑ+s÷*êæ;sI)yÇòlöÁ²na)qlþµ4Ȭ…-R˱)ñ¯9·íòTØÝïó<£·a5*ÞIÓ¼‰\ ‚ƒ‹´$ïˆúf'·±’²’@šÅ‚¾¨ÐÈo–hb[á“q»Ë‡_iq$–e…‰¬á—ÔÿŠãbö»^=)ùc/Ëþ•"Z ¬¥’I~ÒT´c1¶òKÒØ”¸ÜrnÛé—°?~ŸsìÞ8ä)›ÊЉ©Šj¾¯q•Û=¸Ô]Q9`+ú%Gáq•(ÈîB–F¥À?Åœ¶Òá6_Oë š+HSÓ”ÜßõÕæ ªSâ"×ÉÕ#û °Ã¬>Îÿ²ƒ;1¡Ç¦Ä¿æÜ²Û/bü>}:' 9˜§þÙ5{I\mVã7SKÞ†öÔÄïU$S÷µ¤ê¨ujp€4–?DMÉw­X¨d—_Äþø}¾Ç –ÒK >ôJ.yÔ˜)ù(ònvt¹O¬¤æXjøÝuëñ½qlIÞã^›]~ »û}þ‹_Íö5©Áõò§†¾¹5)9üw×´w’¶ k)›Ø¤Ýh[ù-kììc“sË.¿ˆýñûôÕÛðI÷Û|©A ñÊ o¬a|j5%¾IN;"Ή•tçiĚ㫱ÇWÝó‚ÎsË.¿„Ýý>O T“Ý駆¡¬¦–ð>ö5±ñ£ÄÏþ&o«ì ®J¬¤Ëç’Ô0’m,#Ù»¹|3ç–]~ »û}ú¼¾7õæêÔtTä°çJ|š1t¼[Rú£_ÁµÙ;ö¤ÆJJ’¶Ô ÑhbIÒå±³A^ÎM»ýªîî¹ü>\Ro¤Ç?™éi’5ËÿäqÁÇk‹ß,ê¸XXòZÜwÕBæxZq9ß‘=k‚˜U£—5yNYé q»¯ç¤ A¨ù€¸ï³k:Ò' ØL°dNd ””œcÐ6û< c%e+°ÔP؉÷±Ç¦Ä¿æÜ¶Ë/aw¿Ï+¾'××a]i^–¶¼1Ž_Ò‡I€H‰/SPĦ½;FXK3ϛ֨¼¢9F2GŽ]WÒ¾æ®Yº1¯Äþø}úˆÆÛJv °¦âЧ‚6 ¶Ú‘HQ3é<ÜÚÝ“aÈÄJ*Ù@šÆcÉ}â±7–Ím;ý2v÷û<\n1Mú³kÈ'Ô˜-ÒÀf/¼+¥|=ÞË>ÈÞ)¬¤Û=Ss‘%@XœSsìá…œ[vù%ìî÷éõ"ë`‡å³kÖîΤïï(R^¾kå›Ï'hÂbû`z‚°–º£¤©©x5[Þê±KOynÙå—°»ß§1$ð ½Õ½_¬hÎy~P NÆ:©wQ6–[Í`EΛqª/­ sq욥Q)ðO1§­ôF¸Í×óƒipDäí̓)4¬$jx>b¯7¸A ‘ÒG&–½W6ž!ÖÒ³’†¤™¯=§b ȱ%ù`Z6»ü"öÇïS^pÝ·Yœ¬˜$lñf»Ñ'4Rȃ:ðñË$¸%­(¶2ŽBÁ[bSã:ó9jVÀ{NYép›¯§ÓBžA¬MŸ]Ó\"ð°Ëp!»NI‰9ƒTˆ²_ø:Œ•T|KoÍ 2]coÐçzlJükÎm;ý2v÷û<²[Ø»NÖTЩãµ~ãµ_{rôQrtw,»ÿ„•ıàìó3ïÄFÖÔ“cSrŒ·lvyJìß§«(“¹ZÉ,@k*·ÍEî¸#ëLàhyȨhi˜ö éˆÆJZ´4õõ™Êt¦kÓ’CÈe.;ý2v÷ûô{­ñ³Ѩì³qw…³¡Ä¤T~˜bæ®+»ëÂ!Ív°s'‡Î·ó‹Ž¯‘ïäÛ Sø£wþ»¬ôQ¸ÍáÓï³1“íò?257NHµ;ï-õŠNvcõ«Ã³#‘+±’®¤Òµf0š"lw|»§äWÝìÍùzÀî~ŸîŠ^Ø¶æœªÔ ³E¹f‹ò„Ròn÷Ýì,Æ6VRËÜ^k*Ç%fJb\Ën¿ªCËïÓ]ÑpäÔùcÒ4æ€õ+o* ö)OJNKxßeg ±ª(Xùc=k â‚EØÊü0]Wþ˜æ¶]ž »û}z —ÙD«Ï¦¸Ñ…ùÆú?AZçÈ×½¡<[Qþ,œ„˱ +Ô>Œ8r½kÔîÄ^ÏI«¼!n÷õô@ªKΙyFÖ°— ®5'Û ~Ÿ–š«FÅ«„½ÜÆÊyFÖÜàrö¾˜"ϱ)íWª¶×õÌñ7¿Ï¹±ãæsº¼Ç †)êä•M %qi$_‘ì ó *aú(mÏ“º>ãîåã˜ÖV:$ÜæîéY ±n›¾ÓšŠKî"P¾ŒíTKŽý̺ìˆy$VRɃ¥4åq$iòª÷9vÉBiÏm;ý2v÷ûôÛì<+_îùìš›wbøuÅ1÷e—ófò>íö1öÉ€€°Óá²¾¦Ù÷«c`u5¬±[–{î¼:îÛµóî÷ù ·)L9ò…ÛHÒyøkŒ¨tJGJ~áÞeÙÉf¬¤™ì Ö cSbѱ)ÇIºì¹e—_Âî~ŸßĨդÃFÒ(¹¿fÔ\;°‘’Ÿ½{Ù[¶†®5%Ží€4, V¥5[;Oo¦9·íò”Ø¿ÿÙei¹MÍ•šéI|ölÒë Í’üû¾ð”]—¡ÂZÊú®Ô ½3±ƒQ%^9÷plçn‰ýñûôL:LÐé3)8F}ñ÷Ó‹ê$žI‡ŸIïeÅbnŒê3i(Ø6W¸ŠÄ$ Ê9e¥7Âm¾žfU.fÕ5©A§°v ´2kG·äëÏÙ—ýB]‘±’êbþ”¦ 9SØ ½Z=ö•½\=·íÕMŒ€Ýý>Ýë^VŸÓRÃÌà†ÔRÜù†¨§äë”k³?Þ¾sI5cKÖ”ø±[‘Lï±)9¡¥nvù%ìî÷éæq’bFvÓLtÞÊ"¥QFafÌ•‘ÝVŠ”½1©‡ª9¨™ °4•·ÍÂÖ¼ñMÉW«eÙí±?~Ÿ2“;rõ¨JÍ$y-#{Pá6%ÇëZYv~ÚÆJÊU©¹Øk@XHsììQ•sC“~ûë÷é«w85SûÔª®]¼êbFxãÙ’’¯?çf'¥±’Š·÷Ö44`36¢~OŽM‰͹mN-÷ßü>^Lx]bM-N {ÔÐN@ñ¥L)cÓÛc*ÞS¨O´CÖ<Ü˨¯Ç¦äç5æ¶]ž>¹§¨kì³­R'ApGç³k†Ï€ÁžÄcbl^®”2ª¾Ù™ü`¬¤ž[kZÞÜø´±Æ®™ã¹eï¦2v÷ûülú=L°eÅgS þ…sâŒ6ã¯Î¦·„<›ÞiEÉ¡p2ÖdEAKNâ&Â@uf¤IsÊ*oˆÛ}= ó^`úº‡/¤æ2]tË%½NÐØ”Š}P„dû‹>cÆJÊ{ÞÔ Š$±ØäØ-ë0<·ìòKØÝïÓW¯~ê‰|v ^àýÕc‚bœ¸()ýù7¶¤h›„ÖÆJÊLj  û"*¢¡ß ¿hf[唀»ÓçG™An)Ç­¿q<5CIœÇ~¬y¨~yÃC*öŽÊGIN'šï²7ÞLk){“§æF ÚØË·ëWJ~KcnÚí±?~Ÿ®§5~D¸¦rò‘4ºæoÌ>/hJI&)e0a³_àE3VÒã­{j”œl\ŸÅ©›cKò®ªmvù%ìî÷ùz:¹è'Å'5]…a"°ß¯¡¢ÑYJ^Oëf‘êk,¥¶Q|J#šNb[R|¾)y=›=o×gÿ›ßçGÔÊ'È= ¬yøi>Lzùi¾Ü5½«-S¥Ãî¤jbWŠu]Ù¿Ð\ &;Àƒï±Gòä{nÙå±?~Ÿæó" !øè•œ#ÅËîðHX¸ ûÆ¿1çü‚ñûæ•õe‹p¿f¬+“pÁIß<*ü)ç´•Þ·ûzzDEbKÛ*ˆ‘¦“ËO[¼ÕÁU¤INªmÙ{|øÂ¦ÔVAŒ4…1ÄFjî•cSâ•sS“~Äì~Ÿ®§l×ÄgS°CÝë®òoÖ«¯ŽÝŠx!}÷lÄY¸LÕnňuÃ8½~8j÷áÈsæË©”Äm¾žß¬½ ³ùôbÍÍD¼Îþ“‰xLÇly3qÎ^–©œÆJÊË‰Ô ^5 ÛyLÐØy?‘sË.¿†¯©—ß§7¥Å ï»âöÖL^ñ¡$'š+^Ê IÉç̲ÙwM¬¤Û¡ÒÔ\¼öÿÖö5½¶$Kuóþw‹ü®ª¡A` ÉHøõ 1@×FâÈò3’ÿ¾O¬¨ÜmÙ4/"ÎÊŒ»÷®ÊÌȈƒ‚;‰nsnÙå—°»ßgßëDªd[ÅVàZ~v¼OHÃݲ áËD•€­ ¾1NBñADЉLIáØoI£¾4§¬ôF¸Ý×Ó.–`öjì'úµiâ-ØÐql´H3Œf”=%ü*ÁwM>E+LEt¾ð9¶x¸ð ¬ôýܯõÂÎ[¸‹ídóZhââ·t>Uþt°ì%²Ÿ±·ûzÊ¿pñäx™*57œ7ã³<7LÞ^ï±b¢j>íì¡ÄZÊ[ÝÔ „›Ø‰OÔcOSÍäÜ´Û/b?ü>û*yhm£ÇŠûµ)pW¯ÆÔÍzâž“VyCÜîëùKä6_#+­çÞÍ4iDûq{ž’ïPpkM{ÜêÄZoÅ¡4=«Uhí;ÙãrnÙå±~>•¸«‰ôo›[nhóö€Ü½¯(«“Wå}<«Ñoà,$¥¹HŽ×ö/“‘ªM5§¬ò¸_ŸÊïŸÍ÷_€D[ûkHÆÞË ÒŽÝÞu’ðäûÿ|íxß%VÒ•–¬!õ‹±ƒUa{dÃ`Ï-»üv÷ûø«×;^Û_›âR_0ÔßbJ)àûÁÒ,ŪæÁùÆYXæè²äšÆáyô¨Ý]ž“Vy܇¯§;ØÂ—9ë¯]ƒ¢¿þTw%¾ÁZ-ýTü¨Õ×>‘Ïi¬¤f¾ÔT&ª [ÐŒËcosnÙå—°»ßÇke¬¹q;¼VBÑb¨‰Sko(X™ –‘ °¦b‚ Á8 Õ«ˆà«®¢ëF­ÙHsÊ*oŠ6a¯¯§k%Úˆ€úL˜¬aàb I¼2 ½ZJ?µ²ÆúlûÍ"ao'ù a Ú'•;9võ“sË.¿„Ýý>û*ùvlqÀç?Õ dJ^ZÕÐçô™ƒ„ðå"„¬¤–NÂík5+®xý õcG¥€?圲Êâv_ÏÓqŸ8þ¯¼ú´Üqÿ,¼2ãj3ÒRâz†ÊÏ´ãbÖXK+¯>­™\y…\•5öx3ë57íö‹Ø¿ŸÊ »2ÝãÙ ·…ŸÜÒl¥ §òy­7¸$…“0ý ´b¨ýp þ4jw2³çìjÿoˆÛ}==Œ\Øl|ï‡}ÛiÍþÉ*âcW'ö» {7%®g¸ÆI;{ú kéòmgj@4ŸXt5̱§o;snÚí±~ç¿õþ·¿Ê°ÿö“àÿðóËŸÿúËŸýUýQüú?Ú_ÿøÅßÁÿ)ÆU-Ç_¿~üÉ?ÿé_ÿéÛüëùË_ÿÝúÛ^ÿíɹ-À?§¹YfjŠ"î‹Z Ç–£¤ôS«b{íùY„µÔLëŸ4Nl‰}tŽ]¼Íιe—_Ä~ø}öD‘‡Ûm´¥Àö€œý±) ¦GĆ%üd$ ¿ÖÎp–ÉV ¹ŒqûÚ3SQsBao€ûðõ”|šÁ‚þdKmi;öèè`7ĨQJ wGˆ,í^gÆRêIÍ–vK¶³?¢Æ¦Ä¿æÜ¶ËSaw¿Ï¾Ê…øzûþtu¥n†Zˆ··‰9Âí°"!Ò/Å…¯D8 Í—éV Ó8täö¨Ù°ÛsÒ*o€ûðõ|÷Ç’ûJ~Ekn ´ÔÅA¡"4{/KÞ}–õÚT3VÒ•,‹ÖLd…ŒÕjì‘D‹ž[vù%ìî÷á:–ÎÎÁ¯M(ÃD²P¯@ÌF†¼æ×ú$Ñ£Q"ã$dª´Ï•p¿?JÊ9e¥7Âí¾žvm˜Þ+ï95 Æý8[¶Å»!Ú⤄ûûhÚ^;›¿k©ù…’šÊt6aÕ?Tc¿íE=·ìÓ‰«ÿÆïç´¹Ú·~mŠß;|j|{W‚µûµ6±€³0|yjE‹›qãjÄœ·=óµƒD2±’fî>­Á-±(™Ï±{î>=·ìòKØÝïã3ᛀ堛`³¾´ ›õ¥Àã Û…k4[‘Àjœ„å ›Ï8ÌäQ“ÃsÒ*oˆÛ}= ºuóê2.5ÿ=HaˆTÁuáæ!S k¯]}ò„•”©„Ö\H4öBª Ç¾2•ÐsÛN¿ŒÝý>^+EV«{U)^³’¼ï‰Ð¨­• ®­ŠãÄ®N¸i[E<¬@$C8RžjÔš‚攵˜¥6p»¯§Û>÷tø"5ìŠò,Ç@'RjJyuœÜWcSšï+SšLÚêdȬÏ;væçÜ™¦h+°»ß‡_%r0⟿HÁ˜p&"iÍÁg Š^¯µ!8 Åç)"Uù6®"oC£RÀWÉ9©7Ä}øzz¼×iíé¾vMC׬8twDDã×uë\ØÝS5죽vÔ‰&VÆþ©'~'p{ƒdÃcSâ_snÙå—°~ÇO+¹Ù¯îøi%u;iÅkœ|&s:H® Û#Øz™.ží¹ÄÊ®íƒ#¾7ãÀ)ìQ»ÏI«¼!n÷õ´c  ±™Pr¤5tb‚œ:VæÁž%ñê¿2¥þ&i×:.¬¤ŒG¥<‰‰íŒ‚hìîëœ[vù%ìî÷áZya‹<š·V µ4^ãëÖÀØRÀ­ ¸1¤¸Ñ3V8 yn±ÇKãp¼ô¨ÅÿBÏI«¼îÃ×ß•çÚ†ùÚ5w ¬ñ‰4™ÊdÔÛ_‚ˆ¤©æ‰•Tó:Ëšb ÆÔ­2slJ>…ÆÜ¶Ë/aw¿w°ìOþ¬l,,ê³ÔËüAéÖ÷Þc¥ ½æýZÑuÒ8 +[ K1‘[.êØ=êÈ~š“VyCÜîëéad¹êÙ”‰Ö Ÿ36ýw A‰ø}5øÈŸ÷Ø3óë=·íòKØÝïÃhOcÄsy‡gF\¨ÞŒ;Z>)üd¸¶¾VÔ<'ayog.ŒÃý‚Gþ±zNZ›ƒÀÛ}=]+Ù¼åz[˜[ó˜¸*‹Í$‰©ZJ| ‚M?íjç lJYŸŸš’a/6²ÖØ”¼²–Ô¤_À~ú}¼VvÆúz®•¹kegªÃÄZ9SÐZy½V”Ö'¡ù[·9ׯáåáQß·”æ¤UÞ·ûzíAá8R•tÉe ÖèhþÕ´Ÿ}Ñ6Râ.eêio¬¾"ÖÒÈM’5HÍN,¨Âsì–›$ÏM»ý"öÃïÃl¹Â¶d· ¬xâóŠ0½è(8ë)`[ªÒeZGÜñ'áv©€KumS–GÝrð8§¬Å]Ó·ûzÎã)ldñµk²çJcÀ ûa¤äõlmv¶94VRwå{jÉ7„­dÐØÕE49·ìò«%ÇõŽ}´í™Œ ”̧"ºÓMã,Ÿ+¥(èb$Ü÷–nNJA§ÕçµÒáv_O×J°¡GdSµ¢©Ýs¬gñë_`ŒŒµn¤Ä'§r&{cz6±–’›25Ï™°øÆrìlU”sÓn¿ˆýðûp­GÄ5›î+¥ÀFyÃ#«KÜHA à*i½y‡Kœ„å{?+Hn/܈Ç£_úyNZåÍÔ²úúz^º>y©l@k¶Ø)H*Š7xÜ´GfuJ^ýžÍβXc)qlþuwPdç >#Ǧä0ßLMz ì§ß‡k%È)“‚¿6H-“‰rž%h\¯TÆIÈlF+šŽ ‹—(×ÊQ_6:ÍYu°m+q»¯§Ñ$# Ω¬5¸ZŠLP߸ZŠhMM‰«²"Ò®C¿°’zÎZSݰ§3Ü/]2ÙÄsË.¿„Ýý>¾™lP¨Ï+W5yá6üØ[¥ð“¡ûµÞHªNÂtv§XÅÉߣv§vzNZå q»¯§k%X0ã|¶”-gMEó• ^ÌØzDuU#×4%ü® =Ò.B4b[Ò£e+°îDëq%vÝì ȱ)q­äܲË/a?ü>§_|û_N‡wOóaËZ¤¬¬ÂðË'ÀH­\nÀY˜¾„´‚™%Â1çD£v/Ož {܇¯§O%·¼ðüÚ5¸õìê×OÆÀ“s§äç¬lö‡Aa%Ý~¡¤w°ÆÆî÷α)9¾»6»üv÷ûð©dAɸÝÎ ô“»*ƒ¨Me¢¬'½ÞDþé¸"ì‹1Öå²TH3÷¤Ö È…‹rŽ,Ë9·ìòKØÝïÃ,nQâd¯ÚH+PÖ¶ïfl‰ÛSжt½ÖÇ5›“Ð]iª”ŒC‘’G­>ÊyNZå q»¯çÑžØD¬ýL Š8q—ÁÛ–ÁýìHÉÑžµÙyØ 6¥¬µ¦ã®ÃØïsE¹rlJy’ûÕuO²û}ø‚åûúy|¡¨U#¬Q>ŽÝJ Êò(¯õá 8U "ÇÄáQëUþtñª„V¹GÜîë)ÕÝËÂ-bk:Ó–Š[un›Q„=Á‰½¿öÎ6BÂJj„¤¦0ûŸØò0ߟcSâ_snÙ¯är ì‡ß‡•è“'ƒÈÒï5¨‰®“ÇÖD×ùd®¡”Vå÷Bûâ©°–šw©A2zbÉã±_®Ï-»ü"öÃïÓ=øa"kxùd" 7Ø“7K$q–X)ytovÞa+éòv65‹·Ö²ÂcOßåܲË/aw¿O[nfÝÔ·å¦4<¸•):ÝÝËѳåæ÷ùê¯}0 DXI5[nZSÈÆI,{ŠzlJükÎm»ü*æï}ý>ÍES²H¾!+ Ë[â0’[”š7- ‹¼í/a-%wwjðÎM,¸¹sìäîιi·_Ä~ø}œ_0™ÔáW¯ÏDY•J!ñr+ Ê/xRqW–ÌgaúÕkøËC»gÚM­ë9i•7À}øz~L‰K§ ž}ò˜ ¶ßB¼$âÁàq¿TK¨¯ýAU¤±’F¦UZÓ‘ilCî‹Çn™Vé¹e—_Âî~~•‹ÉÃ]0¬XNÎX\Ñ ÙRÐÒ8Rq,'ƒ ê¬ÞÄ|Ÿkq>ö¨ÍÍ/<'­Ë¹WùôõœGmrÊt<ÐT†ln6Õi 1= Ô¤„•î!ç•ìÑ+æJ¬¥’¬êÒtT£Û/žO86%®¢w6ü)é—°~¾mƒµƒL]¬hÖ Qt]Ý—wÁ4½‹â‡ÅkäÊov°Õ$VRA¤—‘‰e"ýö0òܲË/aw¿OÓeÙótâøûµkx™xckW¥‹-Ç"¢L OšiÇ)4±’FrAXƒ¶£‰e}«ÇnÎɹe—_Âî~Ÿ}¯<¡™+Fl¤P$ôÆfJ8[I_ž‹™µ´Þ̬%NBsi½è’kº {TøSÍI«¼!n÷õ<’? -IL¿¸œ¡K8Éb©[Ã’—Â{¼ö÷£±’ºïySC6ccQ›c×ÌßôܲË/aw¿ÿÃK(ö1h ”ü¨ \ä”èh®ðµkvN‘mÄB¹©>G)ù[h›}ðt'¬¤iB·Ô ±<±j ¡±»Ó÷sn5w_Ä~ø}º-ˆ^ïµO h%‚8vÓ´Á*[RâÖñ ín׌•Ô½O R#‹Ôˆ»:ô—sË.¿„Ýý>_kUƒ—šÉ„âÛ<–±í¸.Yy‡sOjpî¹k)¯ãRÓpÎ0¶b¥ðØÕŸcÎ-»ü"öÃïÓ°3Ë«™"!5øÄbYz÷^\àjJ\¤.æ”ÉŽÖ‰•Ô¼ËK 6‰-h î±K¶ ÷ܲË/aw¿O¼·Ù458qlåâîŒd·+% ·± c%½œYÖàÄØŽS…ÇîÙÔsÛ.¿„Ýý>Liæ^ÒÎ 0ÊÝÝþßï{2kèöî^dy¢õ2%Tà.³Ai÷fňŠqh‘äQ{ng5'­ò†¸Ý×óãF\íŽL µfâ6&¶üAM1Y#8“À274 Ïf'o•±”F¦‡¦†•ƒÂŽËyìWJ>nÌÍ.OoçÈ¿~³`åÆZ5[qůâæF0nÓÀWµRP²Î}§ubINÂrÙŠ+‰qØöxÔá°¤ç¤UÞ·ûz›‡†Ëš¯MÓAI1Иþû·D…Ÿ’#ªe³#ê-¬%Ží h˜h*lcªÆnÙ­ÚsS“žûé÷áWÙ±Ã* òüÚh”;fÒ|t´H~RУV_+JuŒ“„¡VôˆÙ×ШͭO='­ò†¸Ý×Ó…±ð)›0531p}>7¼Oª)9¢Ú7û`¿a%-o4S3ÉÇ", E<öp2iÎ-»üv÷ûpáWÞ¤¨å“5ˆÌÔxàù”âxLJÚ•1:Aåm{Tžß‰µ”aÔ ¶•X4Á̱»·9·ìWÞÕßø}zrˆ" °r|í$Gùcl?gaÛl<ý’xºÃ+'í7—Ya%]­µIËÆ¤){lJükÎm»üv÷ûðäˆBòØfuþS­À ÿaŽÿƒ º§±N¾ø÷ü ¯u"C[8 ·“e¬K²p7ŽöõÎ4hÍ)«¼!n÷õômËŠð nv¡¥4‹¬&¢&2ëbŸrù\wdjâþJ¡òÈϵ4ŒNú ÛÈŒ¦±ÛËœ¦¹e—_À~ú}ø¶Ùm„Moí¤xÔ”¾±¶`—3RÐ+4.Æd}pBNFÅŸJ±bI.ªìŠG¥ UK…½!n÷õ4€Ä ºÁÈÕÙlèfÜ‚v+óµ"ò`œ„L¸´âŠÅC¸ŠSœF­yÈÓœTØà>|=]8ú×ìG–š+~ý‘S·nôRŠã’O…e³³c±Ù£õ¤FÄÂÒjìä ͹e—_Âî~Ÿž8•Ü×Ýg.5 :‰Sa!cZ¸µ”&˜GŽº@ÿhû…VÉÆZêΆN ª¡‹rè»:!:ç–]~ »û}úˆbL¿m­™xÛ’ÆÕ)FOÉÑÜì‹Ga%åÕ_jÐ"±¸Ë±óê/ç–]~ »û}¸p²ƒÝÈ¿6迟eò„H镂㨯Uü¯ÄI¸°_†q¸Ãö¨yÅí9i•7Äí¾žž8Ñx&Ž͵ÐÒ "§ÂÏ5pÑljq¤ä+«XîdBÓšXK—wð©C}b±iȱgî¯<·ìòKØÝïïò1M‘NœVà:Mh˜I…‡Fn¡•÷¥›qvv-0v˜Å¨90(Mp{bÑô;ÇnÙAÞsCc·ýpúœu"Æ w²N@ÃÄ76ˆ I¼üŸ‹—ŽYÕÔÙ¡;í¨ H¬¤’TÒD;± UÞ›’s¾bnÛé—±»ßÇÕA“F•å$oùÂCÖJs<†‚‰õµ2°#Üt]œò›Þ`RÆñvò @y‹Å9e•{Äí¾ž¦þ ö-â¢>zZÓH'„º¹èö5“qRâ*Çà±í  k©¾GOiDJl{|´l)á¯5·ìö‹Ø¿OWP–l®|¥†Áá¥RS¼jbM»‡%¯ %5±BÆIXKù*J ~‰Å/0ÇÎWQÎ-»üv÷û4fK"¾hk¬£§5äV*vË.ž-¥Œ«nv0Ó'VRKkÔ›SØ‚]\}sË.¿²¯çë÷q ¯‘µftú @Î#±[ ¶ùî­›* n²,Ê:ù³%NB¾Ÿ­À}„qxkzÔ|9{NZå q»¯§+(™GÖϤ† }ß«¢¬‹ìx• ÖIwßì¡ga-eMjš&À’àÏcg¯Óœ›vûEì‡ßÇ+¨™§¯ bZêeÎDï¸&),Y§ÄUŽiͶ3EÝXIí½þêÞÔ¢]3qU¯ïØÅÉï974v«ªÝëôï'\øNúN¸ýV8Ñï©pBJNÖ \ÐŒMi½¼MÒÌx‘&ˆ;£ 9·ìò ØO¿O¯@Á8Ÿœ*MRƒþÎÈž{ðùE¬‚¤4Iüä—C“°_^;žû•ŠëM¬¹x(ì…çÛc_ùø{nÛé—±»ß‡Ëé’Ýè<*jµÔ4'0Ýlw4˜Õ_RÂg_@ð+MÜ̶nlJ5#Ö Úbly˜ºÄ±)ñÂôò²²®àWa Ôî÷i&íÄoa¶Ì²¦Ç˱ÎÅèå@äÈM‰±YrFÛŽž¸‰•Ôrñµ4S‰ygŽ]rñõܲË/aw¿G{®Ž³A&»KÃXÕÃä96"DŠy±ä=ìH xÔncSZo²»4`™M,Xfsìáý`Î-»üv÷û8ü·HͦŸ°øH¿ÿ»teÞ#Pw7 Šé•TQ1ÎB6é²b(RXXŠXî5;tyNZå q»¯çŒN…u¼ýí\ S‘I̯¸Á£LMÉwßì ãO¬¤‘ä\ÖšÒØ†|Ý\6•sË.¿„Ýý>ÞÝŒ›ú6[ ‚ÜHÃè[ÃÍeIAÛöZÖá$ÌíûidS»ïÄ¡RÊ£¶¼ÍÖœ´Êâv_G÷>UÕ™yÒ<$ÁÃwç½N¢Ê•’oLîÍþà&×XIIà2r Û& ô8vKÏm»üv÷û8ZaF÷©âR¿ íkçt7ã;w \Á¤PÃ%â,äVÁ „ÊŒ ÏÎâO='­òfª¿Åëëi$4{Ñ´;wHšË—šqÞk죵Ò)ñd‰ UÚQú”XIË÷Ó©a« cÙ^Ãcg¥œ[vù5“ﲿc-œ…¢J”g³Ô } 7·¤4ŠÕ½ƒSM·Hvyí‘ìÒkévZfjØUZØÉ®Ò›ÇæÜ¶Ë/aw¿Ïy⡉þ^æÏ“'Ý܌⤋¼‚”œwÐ6û`M™°’º;a¦FnÝõh wÓØuo†y§&ýöÓïÃGôvA“J­À9ãâ#7^RÐ{±¿ÖNÆ]à,dίèÒe\A*¼F-Î¥òœPØ›ªû××ÃâøN·è;^T/Mt¥¸ÐÖ6Rð‚rp²­mJø¸ãîó~íxù%–Çæ_Kƒæ!ÆÆ-Ë“cSâ_snÛå©°»ß§(¹Üãí­Ëk.6?&|ãP¿½ûóeKGùí£0JI¬¥™—-Ö ¨(±(*ʱ{^¶xnÙå—°»ß§ß+³ëËÊ®ßÖ\nwŒŽ¸7›ƒK>û÷íƒa-%k}jÐÆ)±ƒ]¿5v×çܲË/b?ü>ü^+ƒ8éä_»¦¢_}ÜÈ©BéâM`Jøìë[ÁvÕ: ›•Oº¶¶f ¯§±}==6%þ5ç¶~»û}øê-¨¼P§ôµ)”D«EµhìÖ J)`÷ò},i­(bNB–CY¡íqH¢ö¨%³5§¬ô†¸Ý×ó°Bã±I] Ss¹(O×Lq ,$/hIÙÏk³£:#±’’ 05,*1ËMŽ=üñåܲË/aw¿ÏyI‚j»$±UjP·Ü ¦+Œ 6A%¹­¢kåµÙA°e¬¥¤·’&Z\Ïnl4µžÓcKÂ_snÛé—±~~¯MÄŠÝ;ÁÔ€9¶Z‹·¹áHcÇ#Jøìù¨eÿÞÛ—žXK}o÷^hˆ^cÑ{!Ç®ÙîÝsË.¿„Ýý>ü^ûô¶áz›Ôn¡±Ço#ßBcà– -‡¶»¶?H1VR6´L ²ÌK¶5Ý2?ÔsË.¿„Ýý>}õ2¸ßù½Zóð…÷05¦p3.‘âôàÚØR×öv8a-Ýù½Zsq{NlG>€Çî™/à¹e·_Ä~ø}º¤"12*忦f!¿¶#©2Éøl;¯ (ýÔÆªovæ +)ñ©ÈÍ5¿Ã;ñ9·ìòKØÝïÓçµ0C¢™_05È"¬¼Ø‰ç1’gx±#ÉߔΠ°#±6±’š7z©AÖrb‘µœcó æÜ²çr»û}¸¤62¬Ç´ÃR|¯hýð ¿N\kõŠsqÍ[¯¸í~­=þŸp8*ÿ” Æ·äÓ¨~Ê'­rOu›¯§_%/ßFq¥cjÐT6>àBZö5øˆ¥ä/glv^ +©øÈcM'‰ƒ°¹E»'C¶ç¶~»û}úêe¾â“ûÚ5¨Š d…­âó‹ÞJɯÇ{³_È,6VR~M©MbGlnsì‘ÇXÏ-»üv÷ûü4ÓØ$Fq²Ô\ñ|ĉÍgPe!€žI±$Êþpg*¬¤•‹¤5¨BJ,êŽrìî8YÎ-ût`w¿O¿WroE÷'/©Ò4/‹ñŠ«H~‰^K‰¯GtN;>c-•\R¥ f‡+±åæk›cSò\^»üöÃïóïŸm1KojÐòÑ›hÄrðkZò÷úÌ×ÎîØÆJ*f鵆DŸÆ’ÚÓcSò÷sÛN¿ŒÝý>ý^y÷üýùˆ,5Hñ7}Þ÷7œŽ·Ø”ò™z^;•T|8°¦ ÕÃØ‚TMÉæ˜Ûvúeìî÷yDãIR'òÔ gMÔ)4rtDnØx\®yÔ9ÌÔD „k©øDnÍÀ½ ±ãf¬‚cìyã¹m§_Â~ø}º¤â·El¢2‘Cõ†_Ñ…9{CC \üð´?Oã(¬Lõ“ÙÆ¡ Û£v‹{NYép›¯‡ äìŽÍ#ÿyV`ߪÔKni•”¹íx¿Mï8RÊ»ãµt»ijP·dl¿†îÉö¯‰e•K~8|ºÛÅ@¼2›w»Ò€ˆ3Âu‘1¹Ï âDõ*%yæzí7 ÆJêN OMK¼±,ñ»º¤'ç–]~ »û}úhòNd4GURƒ`sðu\\üÀ©ÑØö ^"Ø®þâÂJjŽ­¤jc;BÓ›ÿšsÛ.¿„Ýý>}å6ŸüE7Å‹0~EDFñ’¼KÞ"•çµ£þ<±’òŠ<5x€…­.®5¶¤ŸÚ¬E½íòKØÝïÓ­/xþÐaOw2Ö,äQÄ}:Ë­ c­Yâöô"¿ì7; {»Ï‘«ú­é¨þ6¶!mÉc·LkòܲË/aw¿O¿W6›iÕ©id¢¥w åÓ±i™%Ÿ ¯ÔĦ'Ê%„µT³µ5ŒñÂÆ¶¹äØ”ш¹m—_Ä~ø}þ¼.n]ï÷y]d<-|^ÿ…Ïë’ŸWE„ ŸWD‹„Õ÷r{éH òQŒ¢º+Ǧäçu­×.O…Ýý> ø¢‘À]œÊkEEANø+ªsXž:-04;ã™±uIÆQ(™½M»W Çî••ÿsÚ oŒÛ|=Ý#ìõ_»”Ò?Ãþ÷/èbì~¦äØýµÙ¤Q+)¹òSƒRáÄâ`–c'W~Î-»üv÷ûü®­/¾Ðî¼kƒõðù ¼LÇÂ"7SâC‡êú´_ùB¼_ézQi–oY€EJzŽ=“’ÝsË.¿„Ýý>ý^ƒ’ydÖT„棥Äà)…õXwJþ^õz„g,c%•Ì#“¦#©ÜØNz,Ýs‡é¹m§_Æî~ŸG°HÎ÷Õ+Íâ«UÜžM.‚Ë’ɶ^;©L•4ó{µføõ lç«Uc÷÷Õ«¹e—_Âî~ÿŽSÌDº€hCRó ãv »:Ò.œ4FJ>Å ãíÇRc-½çkVlu¨Û÷Ø”òÓ_»ü"öÃïÓ燈ƃâ×®AàP¢E¼î9Ÿ”|+Z_{äµÄZIo ¢‰m ájìæÌåœ[vùEì‡ß§yŸ ÛP¶øÚ5âLEJLc3‚ÝpSâ7Å*2ÛYmf¬¤žß”5àèK¬8Q5vuœ[vù%ìî÷é’ öë{e$).Ö.3íâEYEÊ8_ŒF+KYAJg…• ¤·€qh*âQGv?Òœ´Êâv_OïPuZ™Ébd ÷$¥ñ’š{’Òy}%‹QÑùDöåÒ`%Íd1²fà.ïÙçyÇîæªÌ¹eÏU×oüþw2¬×oí½“!NšùAAœÞÈöy:¯¶3Dk¬¤ås^j˜©d, rìás^Î-»üv÷ûôÕ;µt×f u,qRµEJ~=®ÍÎÔ?ct—i3¤Gzb+ƒS»fpÊsË>“%¼ÿÆïóÀàÍšjÜSƒæcq¼yG:¹À–”êk›9¹Æ.§êôíV”·ªºPªŽ® JJ Þ›]~ »û}ðíºÎnj†ÔL&" Ò3amGh=%e/¿Œ Có½¾XIýÍ”¦¡ÝØŠƒ·Ç®™ìâ¹e—_Âî~Ÿ~¯èDP£3ž/h¤AªS|~Aoö½ ]ü–gJÙ1VRÏ;TkÀnœXð6çØÕ"9·ìòKØÝïó%õâIò™¹¤^[O+ž*á$d+ð£4®“×’£vž“VyCÜîëéi†ŒC£º<5ŒÆó¢±aQú<)ùÄQçk_ +)s*SSXH4 ŒHšÆî™Sé¹m¯»û}~×Vyî\OÞµÅ^”Œ`Þ‰}ja¤ÎÖ"”¼ì!QIvÒ£ KIcû® 'ÍÙ<¶$ßµÕÔ¤§Ä~ø}ú½6W¾‰j$5ØBW57ØlW5>Ù ;¾UìÁ¾\±w­WJª‘Ô tØÎ+=’ËsËÞ\±×¯ßø}ž–tZOÏŒPkOš ‘› Ε3%Ÿ;¯ûµ?øG+©gF¨5ºŸ9:9vÍŒPÏ-»üv÷û4ðûðF[د]ƒÐ[$ˆuæaÆæ'~uÓ—½Æ[UÙ»_ˆÀv¿,½a¶5Q‰®“Ÿ)99­ç67ý"öÃïóç5~Guetk0J|ÈK6¥)ù l›½c#'¬¥õ†‰¥AqVbAšc7Vñ8'"ìö‹Ø¿OŸW1-Í,ö·f9¢wóó‹bþˆ0_–œ:Ô®×ÎF¥ÂZz9Ç­AïÄv=vÏ ²ç¦Ý~ûá÷é’:EFáSªÍ [$…8‡^¡ðÓ«ïk}"MÅ8 õ=¥RQxJ.¸&ºG¥À?Åœ¶Òá6_OO©"Åš÷æBžñ¯xèâã,è"‰'É›‘wÙIxb¬¤™1|kÈÌk,™y=öƸ¬¹e—_Âî~ŸŸRã€{?o2>5OñýJ”ù<•w/ܾ©Á˜ñùÅx$Â|Ò-%Ÿ$ÇfçfMXKëý¦¤èãk,Bg9öÛ×sÓn¿ˆýðû4ªTÙ+òÎ 8k°0Ä ç ïxìàxA-Éw©÷|í“ýÂJºóΚ‹´°Ä²k”Çž/y–æ¶]~ »û}š–Ôã]wÁ[QAÅÐ~½Ù/'z϶$qh¨W·!_ã(”dp bXP¸…š1º²¤LsÚ oŒÛ|=]RyÇ1j&m[ƒö>h@ÊöÂF£Yâ†÷+²ŸWI¬¥šIÛÖðV´Æ¦äåºõ×.¿ˆýðûtIåå]ôhó’* NHC×y®p¯ó$ùnfnv^3 ki¸?sjZ¼‡‹©—TÍM»ý"öÃïÓG”D×–_»<úq/¦®7ù’WJ?vº7{wq.°Ý[¥õÞ¶h«4Æ‹í1EŽÝ3ßÛsÓn¿ˆýðû”âj!h΀¯]ÃàM$Å7×BFï±–¨Å_žìW1ËÆÓ_©ûüžfHË ]}'sË.¿„Ýý>&‰,ä-ýˆèlþc  (ñ. á (l}À²%œ„é¬*+p a8{ÔîP²ç¤UÞ·ûzÞ—G­Jɾ<Ò‘ÛùýúTkH$¹ºÛ;Ï䤩’}²RHXI—ºÔÌXyËO=Þöwš[öbê­»üÆïßQ·È8cñ«WšÇ7aÊ}XFJ¾s[›}ù¬ÖžWº½gO £­øÉ{ìú"knÛå—°»ß§tHÕl¼jT˜u7åõ@UãÓNÝÇ ƒý²\¯étÆJºüM¥f¹ƒg¹2ƒÃcçË+çžÙe³¼ØÝïÓþ ˆi¾v šÇÕ5h…X"× %¾oRYÉþ°–_ØÇ|¾É±ïÜÄVü#=vÍ›Ï-û0᰻ߧÄ+¨Ž3‚Y¬i[¶e±[‹÷•Tó)á™"¡wÚ™6n¬¤ârk*Ø\ Ô̱)ñ¯9·íôËØÝïÓç•Âë4íAj–ŸÐ‹ägþ'¥ŸÚXÕÍŽÐsb%Í—¨Uþ\]NŽl:9·ìòKØÝïíRQ)@ÉLnk¯ É‚‘Ξ!WJØÎÁÚfŸ.(vº Ä·£Òt<ÏÆvddylJükÎm;ý2v÷ûœæêⓞ,÷P`óu³Ð÷ÁÊÍ:` áËÍ2a*‚Ȫg¡úÐcÊ?„»ÑxB£RÀ¨œSVyCÜîëéîèrýÚÔ Fš†îÂ})É™2±ŸY)y¿s¿ö‹·CÂJâØ^$¡¹Ý¼NõoàlæØ5c«žÛvyJì‡ßÇ,÷ê›ý²Ü«³6Yî£Ù`!}cöéËr„E[ÙÀZ8 /˽d¹gwë‡,÷UþsJaoÌrÿúú;XîYò¡ÃZjpàŠE"V«‚ÃX, OJXéî›g:Ùyûg¬¤<¬¥TÂ~"Q¡)ðo1³­rJÀÝéÓ€ »<­l†›šI–avˆZ‹÷%ì µÖ{_ÂS¶³pÛXIÙ 75<µÛÈ+¬±³nÎ-»üv÷û”‰Åý~ŠtW¡¡È`xeCö<¥„gè¹x« ûÍTóâf$ezlþµ4—›‚ TˆÍ656%þ5ç¶]ž »û}Þ1NwÏt×±Ô°kB™I޹¸eMÉKè½ÙydìmŽõuç*Fsµ=é9v&~äܲ˯ᖈ¯ß§G™‹œ/ œøÚ5TʗʼPÌßIÍ$‰Û2ÏÚN²a- wÎI ŠùÛpŒóØÍ‘Œœ›vûEì‡ßÇ=âÊîšÎF²ù%ß«U,AM¾¢;˜W}~d핬,ÒNBr’Y1Ôõ8ü =jÏn±š“VyCÜîëéWÉÆ|ì=÷µk&Ž/vñc'»øpGJü¸ÙMöï¯ü ÄZÉ¡mMç—ó¸íLÂ=vK6Ï-ûrîVŸ¿ñû<ôW¦7Xsãv^ߢúà91%ïDÇfgù¬±’2ç.5`L,2árì̹˹e—_Âî~Ÿ¯§c…úÚ5HU aãÅfÙ8AKâªÇè˜í7*HŒ•4Þ5RšŽÌecùò5v{ùô5·ìÃáîÙ~ã÷yýbò3Þd_»ý“à–_¬)\)1®®®Å²«£±°’¦¹QS3˜à/,Š€r잔ڞ[vù%ìî÷y)Ò›‚°¥e éíàîÆ&u`K[عåIÉQ¤H¦²-Œ¥Ä±EÒ=zAöû\‡í2Ǧ”äñÚå©°»ßǧ—B–kµ–â}ÀÍãf·7›œÜÙ W}âd}PS'ŽªƒÎà;`ÜÆ]èÏ©Q¯lß©9e•{Äí¾ž~•Ìá ××®>îÛtDñUôËÒO½¨çõÚU¯%¬¤l„œÜ K^+M)&÷k—_Âî~—ˆ/6¼«Õ%âˆA‘i„dqô ¦y¼J$(`û¤"vÞÏe %ŽË÷¨4Xé-ýðÀ00§•U·»{V(<ºg[ùÔ è„ã{gÂûÀAÿJ‰GÿÎ@ìLQ5VRrô¥¦‚WÃØÂ6§;/›sîâ6©ðKØÝïÓiLÁ²)öl)=}x0¾f6ë|èm#hŵqê¾}ºðL}on…»U¤Q)(¡}Ø}Ûâ>|=è‚»äéÎnµb ñÁ3þàê2ÎÔ·<8…݇de÷!à,tͬhñ_ã*û—sÔš§[ÍIöyÓŸÙ|=mC>Ê•¬@©³O]d¯$«R.Úűèà]^;»„+)YRÃ2 cÁú“c'+PÎ-»üv÷û|¹,@¸V.—ƒ…£<ƒ…—´•ÒO½‘ïÍÎ0²±’¦ùWR¶ÿÄ‚í?Çîæ_ɹe—_Âî~Ÿno šŸ´—÷Órw0HEžøÍ²§ž’/Fæfǹ0±’^ÞOi*¹;…­äõÔØõM`ÑܶÓ/cw¿Oƒów÷è!úµknøãÒƒúHÉÁùµÙ/òÁd¨RõqjÐxÍØ®p;ǦĿæÜ¶Ë/aw¿×ÎØt_ÍAN+zü6ž‹mîFì¹0 Hðr¨&ì8²0g“È”Þ*ckÐp*±¸Ð÷ÐYdì‰i•K~8|úœ"ìô,?§Ô´ÂhëòF6Xì/fà·,V‰£dí7³ð…•ı} …æâsLì÷¶õ¹slJÞg=›]ž »û}ø}òDðýY‰Ý ®‚ ¡á‹ëcÇ>äzWOž=d\ôˆ“PMò%Å÷[úžÆ-ôiÕ¨ð§œSVXˆÛ}==yÞ1ñsûzÅ mÂ$F°Æ6îIÉ7–u³wô2&TÂí´—¯Y+~ˆºŠx,8à{¥U·»{z z›µûôvæÖÞæ4󱤕”¸È1MÜvn§…µ4ME‘ì†Û¹øVs½zq~[Ì„ým?Ø¿OsMr,aƒõµkÎ-$fÅÍšM¦„‡'Rnö[(c%alþ55 ·)Æ60*{lJükÎm;ý2v÷ûðÁ¼â@ëŸ)RàìþÀd¨á®`- ~ÑÞ©ÁÀ02¥7ÐnMa±ô]š‚r[bbY借.œ\Êfu¶Bjº°Oñš´¹RbØœç+Ùc#>k©f^‰5Ȇ36zÒ›_Ë·IÚÖxý"öÃïß’¯™{mM#gu†ÅÁYasç^¿auØrVRýÈÀxÓÜ-±7‹d4öý²èhnÛé—±»ß§W¡ŒÆk¯B¥A’w´¼{È2ç L’x]¹°$ÚŽî·‰•T²“4…Æ4(÷Ø#› {nÛ›)âÝý>ÿ^c¾¸’›ù½ö†sÓÃü„Ø~’û;>û™’¿×k³ßèK,$íïp ×4óòØ’ü½öÍ.O…Ýý>=‹‚&÷>¿XÁ}Ç·¾Ol¸x=4-8Wèz­WDŒ£0|r±¢ƒhN¸†ƒ›Fm>¶xNYép›¯§gQDYcƒaJ2kØó—1ÙØ¿6å¾SÂÇ}ÆÝh¿H1 ¬¥ ¦¦ DØ…³µÇ^ôܶË/b?ü>]JÁ){ÿ¢[3kP¹ œ o¢†hÞ¼ ÍBûèû\^ûª¼ %ÖR’ZÓ±0¶cà±)q)åܶÓ/a?ü>D#ê[k²,[Ód/¸T4žÅ×ãýXòCWž×ŽëúÄJª™uk ²ÃýV¶;ǦäG¿ìòKØÝïÓ%}ùê]ÒàœËÞdﺋ?lSÐòŒÖt,H;YˆŒ•”g´ÔTö•¶°¯´ÆÎCZÎM»ýªîþõú}ùÓ¶¼™¯àÎ}z0«÷;^A¦Ö°˜SPʵҊ¬qš/¬­¨`s®€LM£S½{Îbªµ'q»¯§()Т›Ž¬A†YìOZEfï¼ÖQÐGv^ë¨A˜)w5³¡GZ xI‚ÍVäga8’fE§Ë8¤þyÔæ0šç„ÂÞ÷áëi®ó\¢ªÓÝg¥™È݉‡Š “á’òe(q¥[f ìjB:_ìeæÊê5Wœ>[ÓóØÕ¯£œ[vù%ìî÷ùîèíõµktœl•GÉ’’wGbF»YìþVÂJºÞ½”4¨‡I,Ο9ö|÷Rš[vù%ìî÷ùÁ£Ðøk×Ü8æ/Ò†5P&÷ÅfJ\$Y"iû⊰˷3ã=ÆB³|Ìýޱ#Û[ù«¹e—_Âî~>¢ íˆÍã¥þ¥R´øù‰Ï…--ùÜg z˜®TDSÒiœ…lHoÒy…+HçÕ¨0*ç”UÞ·ûzJˆìõ¸T׿ˆ \î\øÉ<Ü7D¶fG{Ëlξõ´? —2‡æSqó_ä[ L:»žôQ¸ÍáßAüX±Þ—¥ªr=ŒƒßdJñÃ…y"Ü'‰ë!ùl's‚±’’ê45ËÕ3ƒ«k»Þ±çKª¹e—_Âî~Ÿ¾r+.{w‚MjÀ’¯¶Áýk ^ÝRâkqàŠÁöÉ:ta%½é*Ö4ö”¶²§´Æ®Î´É¹e—_Âî~Æv{ævó´ZNÓ?ø̯»wRÌ>d+‘•Ggá$$¿¬9ä§”¤ û™ñZå q»¯ñÏûÛÿÿÄøþÙÿùoÿåÏüÅ>¾Uþ÷ñ7¿àÕðù»¿ÿQ~ü÷_ê¿þþ¿ú¥Æüø¯¿D¿ïO“}fÁ£öŸÊ–ÿø?~üŸâýNòóßúéTtÁlzD²³)ý³¤^â¿ÿ¬¿´ô?üã6É¿þUiìÂÜ ÉcǺûŽm)Æþó_ÿ¿áËo†ÿ³¿ú~ýøõà3(ùˆl^Èþw¿~ýø»?ùÏÿò/üÓïwÔ?ù‡Ÿÿò¿þø£þéßÿøõ¯ùË_1Õ¿?TÅuÆ¿:TË¡þö—ÿ=ãUæ endstream endobj 353 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 332 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./piecewisestategraph.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 354 0 R /BBox [0 0 504 504] /Resources << /ProcSet [ /PDF /Text ] /Font << /F1 355 0 R/F2 356 0 R>> /ExtGState << /GS1 357 0 R /GS2 358 0 R /GS257 359 0 R /GS258 360 0 R >>/ColorSpace << /sRGB 361 0 R >>>> /Length 124235 /Filter /FlateDecode >> stream xœ¬½ËŽ$A’$v¯¯È/¨µ÷ãÊ=,° sààe‡EÕË9ð÷i"¢ê‘Y1­Ùå‡éiëŠ 7SÓ§¨hþø¯ùã¿üÿ«þï#·Ÿ-Ù¶Ù–ëÿý¿ÿ÷Çÿþño?þÓ¿ÿoÿåúøÏÿò#ýL)}è?3ÿó_þóÿò#ÿìéãÿûñüŸéãÿú‘?þëù¿ÿþ#ãcÿóš×Ï2>öú™ÆÇïµÔŸm}ä”~öññë¬×϶Ϻüœ\×ú³àßÛÏѹž?W?ëo9ëV~–|Öógß\Ÿÿ¾~þ{O?Ë<ë¯ÅºþÜgŸ³¸ž?[çºñûGú9 ×£p]ñC°Ö÷ñs$®«Ö›ÏÇ÷e¬gæ¿_Ï›çïÏâ÷œëT¹žzÿù3ëß7¾ï§õ:ºÿLZgžNª?ßo½_ù9ª­w=ëü³êß+þ ö7u[÷…íŸåÓrÚÛèÓ{àp®/ÛÍÎBÏÚ<±ë§ìb'¡_º ìÇ‹lûõžkýÜû± g™>íÒš?Ë~lâöNÚã³Ìéqë|C}œÐYöò8À³´óæùž¥‰ÿ|•v_Òq=H³¦É‚dëüÈ^¢·¶í¼$ó¼o›ÁÝÕö]r½Ï¯âW}–ú§å¿ðãió˜êúøýñõÿbwî_ÿýÅû÷ý·ó÷±çÍk•!/ø>½JIü±Û¤_ŸñõÙ]M‚=íÃçpοêÊïZü-“^x5·]°ÿöã?ý—ÉÿÏ«_mpVGœÿi¥ó–Iz¡œÝGðëþ¹"ø(ý|àúÙÆ#E|å/ß›?};¾w–Ÿm|à´s=Ž7?_WGùYË‹?ÿóg•ÑxoΉωǟ?Ľůzõ÷>"³?Zi?w:~.Áù³†[ýêÇ?=½vjµ¼ñÿôòç5òQº{ž>޶Ëu.ìÁo\Ðs¸SuDžÞ÷Ïy„­µŸUï~ö®ñÝûŒl}þYúG=ïÜðç¸ë¼{£†û‡Oo­C¨Ï_wì\+”«#NÇÀüãgŸW­í£6 òoê½.1€2l|ÅÎyJlJçŽç\)ÜÿøØ;þ¼ûröŸÇžñê²yõ£m”Qi|u*²³¡C?úÛ>¨”~CµdÈ@…GÞ¼A£ÐP&¾9-JÎåçzµsO‡~Ô9Þ¼B óÐÅhÇLíоÍýÑ¡~;?fþ¼ 4Ð?|z9D¶3[øëÏ:«ÂRE„®uQÎÛIÏ|þ1ùìÆ9þ»|¶ù¨‹v~ÆÀËÇ(À=:›8^ýþ§çE¼ñü ÍŠ÷Ïøýy¤˜ºÁi¿oG[RtÊù/ç¶A‚väôaºyÄûÒûŸ»ž9ì‘ççcõŽ?‚÷Ïzÿ£¶Ûyÿ xþ±!ûh÷I3û–èöœóœ_ùžÿŧ,Ћ²_y‹k…ªÇø†Ôï;›ŸÎßy«1}—*wiE´C9ú¼a— ¤âì|#HÉQ;rKVƒ1Ìg— mâ¹5ÐVG_·ˆ†€;:¡%·)%íXÇF) †zž?ñ¼ á²÷|ÿy~>Äù¯mÐ8âý3ÄRòR¹¿2‹ÐIçx×6³x8J]À8P;Ôλ.ã©Kó `…q)Û|‚£æéDTäèÔQ]LEæ£2ŽçþRżRÐŒ|ºy$çå¡°Æíu¬ÿù•ŠrÉ'8_S'øÀÓÛäÖ µ(:G3AAÕS'p€%#úF²€ö‚a@æ•߯h&(º §´êäaÎÎÉï˜ÂÙðÿqÒ­û»7¾ûˆhÛsò á–K±DàʰÂDÎÑ;SO_¸ÃÜùȻÑÅË·¬K‡“?¶'_BAÐ1’P9Økžü¹£22!¹/phëñ©/7î|Š*{Ä¥›?{L$4PáuÈ]Æ©Ç1è @ÿÍ7ÞÜ+¹;á§ÅUI-fBïŽxsoÅ›† ï^B^ι%ˆôsƯ…/Ìðún¼úû§“LO £4xòðåÆÃ]Œì}=jý\¯³…¼ŠÍÈòÌP$rBþ#çph[5Oüh¬ši;"oŸpA;£©Af!©´Cfc´ÜRVÛq6ïžCïÞ•Ë1u[Þ;aÜùI=öî'Ž£Aÿò¬óŒÙÙŠ(¢âq‹AØq·…ÃÿÑ7îÙ ºëÝÎ}¾{,QŽõÜ4Þ™*Ç £ÐΟ§¯ÉÀUwæxJc+Qz÷óÜ£"PìŽâ:¾u9ñ÷ˆ¸8ðQŽÄ Æ™ÉN~@êHGä®Á;.NM äG}}rOO¯Ìó¯ŠüÚ<ùŠ?Ïk5Ý™åÇÓ™v;{¿Cï^èN"hîþô£»ñôPÞ‡t×™æUòá8 çÝkHê;³<—RìäSçÓcÚöÜš#ïÂÜÕ±S=¤íAǰ ¿)@ðpj z—›Mþ~îçÇŒ³rÈ»l¼û6ǼQ`°¡!©CÞãDpÝjªþ\>ܹÈ7O_R¨k›ßöìüË;ûütÆ“òktã3o|‰;m2RóÊ2 6êÔô+äaäýÔYžÀ¹/ü˜>_û'¯béóX$Jr¶s?[ŽsÏ¡|ßQ‹G_õ.±Á¹=™ÄÈ7!‚BÍe¾é¾¿ôL_í|3ï*ÙÖ­ƒù6ü/Ôõt¯ò‰­Ö;WÔc'Àž¸pu·s –f†ôM¥ÔbÏZ6}Ó–n|È»ÃÙ­eSdã÷ÀÓCÁ,÷z2 c-¿ÆW1èXšÄ‚XA¢w?[žÞCw.3f‡¾1ãòoB1 6­E¯~åQ\Èíµ®~>ùÉ;¿hnuò'FÂɇòܵ039· U­tQVг-…³š™—ÖÛ›•ï¡LÂlØ-l6nÓ:#8ˆÚø*)OîÝÍDŸ"¾%¤þhùcé™  Ôwº[¡3âÁB}—<{xÜ3xº1ß2)s«^ž'?åׇ4^_:é©XÉzhûµƒ~=4ítK~òí ˵ѓ‡7™·Ê+”û©uHÛ/Z‡ :ùH%¸ãH!¤ÒÞãÎk/^怞Ož·f%ì˜ÞýXµcÑ$ÞõÄ´òm©z ï^濞w¾à’¡Ú<š‡Tõäsì@BÁÑ;DU ':ö¡¢«‰Y¿®Çw5Œ­ƒ€Úº+¢›U>N¬œÊ2z[VË,ê"ó2˜~©Ëï|æf¼¬ >ïý„bÞ^XûW 8BÚY䌒eìyçeç[È»\t&s)¿é'ž»>£r7—ª¹ ^ž¾Ù·ô°pÄýà Ñõd"Œ¡EôÝÁ#vGmHÛ‹‰˜Oå.e'ÓöJŸ5šÝÐÓˉòWŽ ÜÃB9èB›´íBrt=ÃQ¾ûÆ»¿ôŸžŽ°ñ¼{õ¨Ù#óu³ÆÇ=8?óØj!P¸Éƒò1Ž~Ø:we¼±™;ª¦B[îó¸¯ ?¾"[<ƒ;;…¦t„ç>øî+fe+‘|î˜)ÛÉÚöZŸ0ñZ&¬&òõCF»µƒˆ E«È¯y‹¯<’Á¨/Ù å3ã>—`û§&Ø#¤;ÏÅÊIpÜ/±’ Q5— ø/YgËÔój(WðjŽkwŒG(WŠw­zºò6B(Wi‚È¹Ó ?ï>Ý£;ŠlEó…E6S%dytT£;†þxž§ï®Ä H‡G÷Ò+y:÷ã‘á6:ĵr‚e"†;½—½fù@Žø“@¸ÄÜí=ða³óÜ_z„¯,æšr½ûᆇÚùÍ@Oî­ VRw°" U2!äËÏ]ðåy•-Duà«mç>%/£ §w/LÆ[GÄ è÷?w:D—ú¹ïÉu̯u,w”h#§ùñcÎËÌ7èÐçs':ù“éÙ›­U,¯SÅ#ÙÌšT,¯·èþ².ãÙ›%M»qÇÂV^𽾜{ k–ª÷”É»H“£¿!–µcã2îíô(ž=Ô¡§³N‘[÷Œ¥eob9ïÅÔëòÜÑyèºóiqÎK缊;2­¾¶¯lÜy÷5MY©؇X=NØôROfT‹yV8ƒnX¯"4Ú BR—„pœC%lÞwÝÿX3õ¹\‰l ñî™´/û2_ù6ù‹%¡Å»{e4äÏ—Áþ•b©töÓ ƒnÄ0?Çñt-!Õ蘫*>†‚±QZÑÉ¢­Ð8r®& jhŸ©ÖBrnz3.@‘WpƒX3wÆ%)”>A ‡N¾XÇÜè äB$ŠEų†i±å¥ºúóé›È}04cØj ­Zc÷ Œ%t´Ñ÷dïX®z2Í…fAj+6Ì%¦0C€jd и”]]u5®æ åÅh§açΦ16×GÞi“=”±D{+j°ye2bFy¯ëԷܼоCæpÁ€,–Ìuµ•ש—§§7µÑ«]®©i*®Ül’šI°X¬Á‡sWöl¥©g¶Ñv1ÅÚÈÃtb¨ƒcPnrÌŽƒßl#OëCmôh•J9RZ& !Ÿ(Z¨†#Ah£)XžBkðy~˪lƒ6úlâPY 9ïä Ò­ª­>fl蜴aÞ!¤ÑÆß£­¢Ð4Y°ê¡÷Ï1éCº¹'Ý´âç¿ÔÅÔ %¿©0,@Ó]¨ioÑÁ$B·ó‡Æï#1= ò÷ ‘`¶—çzÿNtg;öIeoØÙ,"Ž´z’]i • Pã9‘òr´2=²†\aí›êçlo”·ÒÌEîDÃ܇`5ˆ‰2Í=C#XbR0o|Î ¢Íà~ìîêŽx;ƒ vÐKÝôûØ7Åô _5‹Ì}Ò¡ØjQç¢,?­g’ݲõµè<¿;ëZ PÚúܹÕâ„AH¹.‚X®w/ê“y™‚. /Zx½.š±²^û‰O/e!Šš13$v|V!bÒ¼äØ%wvÔ­Šª+òl^Ëzûª“±·€ßì-%[°“Z!çSû³ª%>ëèvSƾ½Æ=?}²&ˆ½ÿ£O:ÔK³HÖr¿Øf¡ Vy².,—š¾ñô®›ÄÌñ¶nÙ"°u¾}c¡#t³>.P$!”½=w¾ †õIgõ ¿ÌD½r·°×iÊ_b†¢ªÇ ââv£ƒÖŽöZ™Hr#„*U}µ\êEÉQß £_<ͺË\M#Q#N¸V­Ò%orBf^Ä’ìÇÈÖáÐߌ=ï=Ñ0.Iìï.ñ—õݧ[—¡ʺÛî|âÛÇr •ñ<Å—ú>ÂP›DÛíôX¬9xp÷w'Íä6T„¿{°{oRWP½ÏOR?‚ôpK¬ÅÛ9¼‡ªÇjãY{·Nvþ!Üü7Y‰'7§±(¹»å²ªxsÐÉl8cÆ›AFc2“ÉÁØÛù¶†5™oöÀì7™°g¸xvÈ+ÄQïÞŠö¨’(<à›døXûuÖ󻳄™Ïåï^ùî! ¢Š„!C[Æ'èoìŒÕ¦œ¢—$É?ù£F¹È÷q¯GöáÞ5µdˆc¸0`²Ò•Ù°IÆjU¶–’ ¾ÍI@RPî2Qžˆ‘¼{½{kÆ’Y¬7õnI ö¨wö¨Ç@tÍñ%{ÛÛ¥z$áeÿ«Ðö¨¦ÞŒ4†%JäéÌüÖ‹ÍD„ÕÅòÇD¼ö%#§«C>T/"JµèLýcK¼/Ñ4OOÇ&%tPY‡<;±úˆùWYI¼»úe3«Íäg!^é\€ä̻Ŀà ’õʹ¶CÕ"¯˜CQwÎ1X"©<$&ó©Ò°¶ÃFÇOO1ôšÕ,ŸB~‡JVˆÐ»ƒÆtê†{:QEŽv)‰tˆeco윋a°D|…~ünçNTT}}Þù _²7?÷1õuLòªfRÄ…²œ› }iDêX3ÉÆÈØÕ—Ïîº^½Ã1Ä­x ÖVXñ`‚yygžÞ~²×²æ«C¾ŠdEQŸŒ†V±¦ÇMU~z¯z×nU“JÎgôLÆF+¯ÞýêæÓcº¶“?•ÝâL0«Ä{ÄÙ'½éÍ%ï“îZ‡’Xä;ZlÝê“."ÌTX±XC9@,A˜Äû"’°ÍÞ8‰<ƒ½I›TkË\SÃL¯õÕóÓ³6;ÙŸW¶ÃÆ×˜w7p=WQÝ‚[Qñî1f†bžl7LÈ'+ÓõŠÝ‘¤cDv«ºó+Š8œƒD\)æYCîk¦ö\µiwž|ŒhªF +ïœ K¾n,šžôˆ–‡³Ö¼›b¨"@:Bùé}ÒC¬¡¢›H"ÏÞýHRBN*¤1Lòä‡lOèéfbwSöh'"&–6Ÿdžgƒ|ñsŸ:÷XoÂ^V5¨lÖ@Ÿt BçïZÝǰ˜&T4AÑi£ècø»!*¨`É€´Æw—‡óèé£<Dz<¢µ”…À»Ÿ¯Û#Ø¡Ž ÷ä¹_üGˆ°‡tÌŽ39̿ʬ»Î+Ó¯ÞÄ.C=>5ÏUf|öôN2u–Ì6 B›d˱Hè=¬ÁÞC$[= ¡Ô²Û'\¸<{m¹ŠY­AdÀÜ¿·ŒÏ…iL¥¾ìPÈ.Õ€‚ðî“)|dŒ£©²ð|²Œ;•7‹Y#ô‰Öӛ刌!’üoax ±CqqnÈ&fëXl²cì^š¸Á3©U³Œ½=kQdErܲ ó âêÙÜä¾,Á÷À$‡N~Sn¨M®·&ù%ôäééi«z4,j,DЄq;¢ñC†„wk1sÁÊ5$¶Êæ‹Ã²P€" yÀc Å¦N>Ýv­År¨þ6N•áÁµÎä$Ù[B)"èÑMÆjžÁ1IíÙÅò{xuP¬—s'¹Àá7½²Ñ5Øü‘šÈ±¼œQx[PÏ 9ASy–JX67~ (£KIÄó¢h¸ýÝÑêW‚·e:ÚTÀ¼’.|’pìp~“…M8w¼{zÓ°õtî î`TX:¬¢@ BmŽ€ùÕ-¢çæ;ßyáBÍθäbï^ùîÁçDÌi°‰Äî±¹‚`ð&ÕÖŠISÇ”hƒ)Åmg‡¢³h¼g0Ña Vb ,×_b õAš½ÅáH%ÅÚB¨¹†¾‰ð x»UѬ›˜™ÑH„\ÖYLÜP ŸY…€6Uwõžä˜…ÇãÐ`u13øÎF=¼ªVÍŽ­«Ç±F» +®Üž6tDq&r-±n/¶A ïžèo´à” €ÃT:c#ànAÆÙc€ŒE z[¼ö±Þ!#¿pCpÄUEä ¡ïvÆpøKlâÅÂŽ4 ªcISv¯9ª ÈÅæ­P+Ï-ªdØ«ó;Ö ²uŸÔèy]ô¾D¹Ž‰^lâ¶ÏÅ…zzSýÔVé7åxb±6œ0fÛûKvïenðU^}çû´¼.³{óõ¯~:+8kçleÙ{×L¯2<ä9­‚ ÷Tˆ1ŽëÆì&“ã&¼$9£¥Jß$猱_Röœ"Þ4ì± Z'9-J Â²Wé›õ¦[íéÝáËONA¸Xň«^ªó&{[²Ú É„ʱ”kVÍÜžÛ+œêñÈŽÅãÝÉN»¦FªßDܳ¤©iïb X&‹¸aɼ·V¥²eÁªu#6¶î’ ?ß%Îq9ŒkÓ…XbÉÅpð`U—ü×ÜoŒ–Ñ6žÞ­²?˜Šñ4vR²£Ê³ŸèFÎ+˜yÞT¦ÓH&QÙ?¦yÍX×;ˆš`¦Ml€=@ŸÈŠâ 2™qºçAZª²¶ãÕVÙO’ÆOÀ Nd{;È5ÔžT «)b‡Ö{“¯RkD‚V<‚ˆÂÜ…‚±êv5^¬+ˆbGGº]TÝŽµ l¢wºQé‘ y Îø²Nø*ï O $#§iUµõt¿ÕÏÔ­áŦLö¿ŠFÒYx±Œ­nNX“q£Æjœ"!$Ç+ûIÜ÷!T m3 ±“6›:²ÅE”†±×¹ øK<Ê+©žd˜†Ú:‰BÃÄ`<«êlËëlßCQ¯<ŠQ&ÖµG‹r˜¼õÀhÞ åGOÏtÞ4ÖT•}mEH×¢²OÝZLêDÂŒsñ·mÆÃÆÇh–—œ@ÏçΜ¤n{}·Ø Œ…œ$‚bK‹fæàÞ£»¶œm>`6VðXÔ·8eÔ¨¸`çăÊëzpÎ.õÕ¥>†Øl)YÃLRëS¡£3БðÙ÷ÿ–ïÍ&GKÓ?*û1PlNyxuykÞÄzí¡<Ÿ<ël@ô)§ÝÚâBúþ³*û5yOÞ,æ…žÝðîæUãÔÌíX“ÐõŹ SŸ|U~yÈŒ€Tø±)+•=ëÀ.¯ìMû Öw5Æ©æ^5g­`ß}1•çóá¡ô8Žªª‘ƒ•ýjæ­æ Ÿ&ë[B©n?ù$VðX…·uìfK9š£ÙÓkßôÕ­[6áÆý»ª 7¡:cшtm¶ÝùŹ1;Ë‘mU½òæÝUyw1>fÒ‘¬ú@2}‡û¾3+Âß_xÿc,#ä>ÝÛ§xe?„©À¨WdôVs—2~aê{¹R(žl/íw¦¹bI6õ2Oè¥}/† mg~«ûØÎ£¿Î¿ô$ÏÓÀñºêƒú$Ó‚uÅ=˜«b3‰ÛNògÆ‚š®”Zi¡2ó±[#Tînæ+3F¤ê%`¯| ™Yí‹Õ™ö®½ãùè9‹Í)†l ±Ê-XKdølTó¼>h’0¼60tí&Ó5¨ (ÏÖ›W—B.~xÇX,ë ㋤*DU^aŠûŸ³‰>§Úƒ ŒÓø@#=ExÿóO­¶×U™çógåÑ EH‹Ïͱç¿–=ÿ¨Ï&)Ž<5†õlîJ^%g ¯`œ(ù‹%š+}â–­—!ÓÕ-95]ñe:ÿ3ú$2ì¼.6•ãücôƒØôœ¨¶Õ›š4wlxmC-FÚÓYf‡ã$‘EÄKØ?rÅ.V§%G°Ä‚Éê©„o^ìlJ™GΟxR¨»Ë·LÿĆŒkþ8 {Ï4ý8ÿPc(zï1#Uáîòß)ÿ/©¢žõ?g1´fÒäMžˆ:·‚CD-Á—þ¯ƒç㊋ùKÂÆáü—Î?hýéfä+»S·&˜÷ ¤SH}<¿¹þ…öïå(Ögû³Ø„Ü­O úÍ¡j4"D$àù3™ü¡S¶¾ñ_žŸßØÞÇ'ýŸ¤B•uURÁ…ÁÄ"ü)ûóòüžåojhz}œÓý6« :¹8ŠépA”¤ËP_÷_Lk€äJÿ‡HîèjgÝÿaï?ôþ±çW¡gúð9ÂòCÿ/ì‹Þ öWÍz‹ŽÎ?æeÙ;§ž®šÛó%z2 êà¸îÿ˜”ÿ´u²¯/—jÝ‚(Hø¡ÑéüÃÌýV“jcƒ/ìlÄcg“ôïtý×%ÿ±&’Äyœ°ÿÛ)ë›ì_‹%Ö™]ÿ)®½Ä?Ï?6R—¸P5·ÿ,ù…åIÞ®¸÷»úŸ…0Øÿáïßõþ1LÓX®ïÕ%Üyqpþ±ö­Æ¢RkÖ²HýŸ¥ÿc ŸéþOvÿ‡CnF É—'¡!ð¿z/Æ­‰Ø'˜éÿ[UiqÄQ{Ã%óÊþã¾gÛ?6Š,6ÔØ@›½«šú9þ ¥™5Û¡‰fOç_õþ±6¢ÉöœJœTÿSßM£Pׯ5¥«cþ?ž×’g^ˆ Ç}ˆùŸÈIoÆJ¹-KiCÏW—#°›K3ÄÍTÞ$ÍžåÀðÿ‰AÉŸ| ohØ_Ùø»ààË:öþuðyl›Í 2Üd¨ •9 ¸%èbã©BäÏ €9k\":SDHÓ48aF½5íBúý+‹uÐûO¢£°¢.æ3!úÓÃXô…vM9¿9æ©é6ÄèÄG Œñ…fݦèM¬ÔÀ„#N[%…”Œ¾c¥UÂðþÂUNyß9Å¢ð+€ÎÜfÅ”Ñ9Ñ)…|ßã´¡e¸Ê~#qlüô OiÀ[!²j±Ül_ꯙ„ƒãôcËbÍbÌ.<}Ù¿ëÞÔ•»àÝ«¼{1heaì Ú‡Ý}ònyàPh‚íÕ„rIß|~QLþÂMôûð»Ÿo5”9= ˜Üó#´s5?°Û›§¿Tá,"hÊÁÌcg`ób ß¾;7WDó“]—‘k~°°§³¼“º'Û„¯,~f>?Ö¸N;¨fÏG&T ÁÈû“h´«öþlÅÀï‰=Õô¡Ñ5ºû ´Ó|òôôÌÖ„Åó>)ñôc˜jÂ…©º/tO?ÆAÈQò-/5e1{ãícƒ²2g›±cÄ-›gV,îÀ¤%ìþÃî3çóÞ"žÓ•—ôO_Ò¬<Ç=ì»@Þ©å¯v?T샒ܩ¹›®tÄîsê vûïèš?$}°û‹ÏgÖ„€ßÅçÇ€|jú ôU~“Ó}|04¿²NÝãÞÍ̺L¯sãôNÿeÌü¬ù¹íœ«Úíîd+òíˆ×³d÷¦åÜ A™†àð–Ù!Â¥}•ý—9“ç»ÇîHêšfw]E96T9§"Ë£š×ÃîÆ†3ª÷Û(·ë!}1Ý+€I+–3€ô­Mé‹~bŒ3¦•4åŒÙ¡§7F àa”ÏÔ—èøbo%Œ”§ao_d÷Bš#|v'ã¨~úÚý`Å>oÕöݳûçÅéåyÅU£ èÄbÖìV=¿Úï‰.H­€†nÿ¢˜#b÷ñõL°q¯ª uè“-Û£›××ó˜AR÷pÍ›q…òÀJm¾ûXŽÊÌ9iª*™‘¶àï‡2Yƒ#&;èð|´j…±ˆ³i„Ô(¦{;ùb8ð"Ö0½ÅihX­rÅÒ8TNoFU¡" m‹æãDvŸ˜"ðÖV{R©¼i¸~>}jnvóçƒ2Øuž¿¨)ADjÃÇÔÞ‘v¬Úk³¿‘4—×7È©ˆ(Ô^R&ÓœÐÐüù:ý%äÕsßÒ|ÿ¡÷Yò?VÖtÆÁZ @Uç’óô—þÔéÊTëÍS^ e_óB Yã­±ûò:;ãmF 1ËÃ9ôÕj9*}ÃÿôöšoAR³?Uar1x]—ì7Ÿ›·EŠ»c#baw9¾­[¦R•7?6°QÈã:Ùpsd^{ƒ“xzûAd]Y>P©ó,pöÁá2EÄhùqóræÍÖùXW@7êE”†öÂYƒ´ðøA¦j-uqœpö¡®udõ ξ…KÞÒ{Q¾‚)†ÿlF—o?¹1«ÓˆÍ«"SÔÙ}(Ë ¡M”|aáú·à0rBé3%¿8mymè 1#°’ïÜA‹ ­ù]äùÞÑ ŸCy¾.zÖÙ‚m ƒ Mh}1S.z¬½Ø¼ Ô¨ µ®0&]4gt ùÔ¼‹Ô}üßÃêÅr Är*Èýã°æN­#—Vz‰¸jZ¸Â¬1B˜Ô›@ún~lºÐªj¡\>­”ŽwVÞ,ró‰È0 ‚Q$Š:FzÂ#ݵ¶?kžcN€¿fÞacµðü)/ÔN€6jî'‡&/U!}!éGtéÞ4¨±ÁóM…ìéù[„šÓè‰6UWkÁ±è‹øþ²ÏâÝŸ±úzÑxb¼}ª¼},ÞÐø¸nâ}ó·cþBªùj£±,éÜ‚y®"D6M›]²ù+Æ[r¦žý¬¿X½X}­›ìM娡 ÐF8ƒy.4-fž=ÁEøÝH“õ`Ï$ êzøÙ—Á³e¹pó1[+Sýš·«›"æb¤=8¤¹»·åïÅZ¨ “³uz U!4j‰3#]è=µlfö9cc\5‹ÈH2㸯dOÚÁúJ“ž2z»[±F¬¾As]X‘8m§õX~Z~$z<òX‡ÍášA-ËÈÊçõê ‘Š?†+g~¼j&¡½}õŒ—mæÃÚ˜ª¶aDÉ7G‘¯Fã:DÛƒTØDõdôijtje+Ú˜Á¦Ñ-Ê„žÔ€¸ ­ƒ=ÈS­•Ù®C¦û1v°UÙš÷jó¦Qµ¯Õ(¢«’ˆj8g 8e¦Pv‹Í…ÖNã‚'·œó~¢Mêǹé݉;:|¬1b”h¨É”WS¾mç'Ÿkl„õ)…Ç­ odèÜ­o¼ëÝ Ÿ²ôYàÆTQç"Âl›]dxÙÄFVœûËÖ¿gm˫ݛҢhó=Áýè1KÇ¡ôÚŽY]Ü8D8g+c8žÆ"|ïÞFÐ)ó#H‰a#eú²i“í Œ·bÕ<²©dÅÄZ–A !'4lÞwbøôä‘~ä܉áÍá2É–ÆjúDR-DußY©B%Äjy\÷éjàá»Çúg”†`F¯ùÓ|¯Ð»“×jx)Êà³Wóp–ld²œ æ+Ò ’Õ°éqs>ÁÛ 0”Í$Wå»ëéEOXT ÁZiø¹g’_F;Ç8Øc1leñï‹*;›tû2BŒ*å3^gbŸ5mcæ²û`öI?64¤ë –6I!Ô¶¡6šñ¦õüôJò‘ µùé¾Ç(¸™të6QŠTãc¼ñžÏÍe}4=ßùôX>%ìÞ—±Žûw,ìŠU/IZŠÉiÚ¦rz)Î=TÁÀËjÄIsûJŠð»3Õ^‡ÇrÎÜF /N¨ÝðÂ}e1r̨w¡7óÃÊøÓ£µ»ó‡}¹¶!ê|ôàP£Í¦ <½ûÓáeö -Ñ~åcVKÃeޤÏDèéH?‰†Ú¨×r³ç±ïÈOômÂ#²»ì¹ø'ý¾G1Ô룹¶a.qÌ 1X8šîwýãéÑš5æøØL"\ÌsiZè:ýtc“ûüôPÕ,1{«ñ¸:÷óuHȇnÜ F¢+J´ÊÂ9Íyë~õgÓ]Áþ(rT5jÚ}yÔòçC$0ìGãOIž{(†'Eëfþd¸g•‹O<Ó À³”¿F‘1êMJ+b{w6yñKc÷C÷4°Áî{Ã2F;šØÉƒ»‘>=ô|ìÆ1Ë=†±Ý>bØÐÛlÓ–ÕÙݯ{3nó•ž¿73äêG_D(’CZ=?úò¦õåÅž_Õ8 ¡õí¾|ŽgiÕfü~îËYšIv¬,æ­O}ùÁv¤ƒ.ì Sî¬1‹Ž¾¬˜¶·™Äxßéﯾ¤—ÑÓóE ̾ õåÑr¶åZ.:ïÞòâWžlìA*êZV5@Íi©/6Í6v&tHVzË C ,õ%öG_zV_zÌÏSÃ#%Ô›0bA*ôå/õa²êÀ†ÖÅó©·_Ù[È›À]:ÿ¦÷žV_p5œŽp.ì‹ YĹH€-'â\ê‹ÄFa"NvéOb”‡×˜?ÃPýã_ó–ˆô¢…Ý[ÆWÄ6ÐÜ‚|ä@-7u{È›BŽ›EØ9ó¦)%‘ƌ…i’V“:>±7„†ÛÒF,6~t×’]Ý«±îÅÄIØì^÷îí&ö”X÷ü¹å@“]݃‰€A%ϯÂ…ÝM.ˆŽ Òó!qOOÎÞð½îatoö!¶go°îÝÐ$‚ª„6àØÝ»7Éæ2cda€ ‚’³%£*Sa Z#4̽jP!ä?¹üêMÀ‘÷oÄRÖiDÉ‹I+¼¬{³³Æö„yuÊj…05—•ö.‚OÏùHƒüzÙ»¿m%OO+Yʳ«¡Ëk½ÿ`iMøÆÞ!,k KŠÖ§Ì÷-Žãϲ±|·h²PD_Þ?VãZYTÓ–s†þc7yó—"ö†¢Ú<ÓóVJiÊ&P¥±7ÉKˆuïWc©BÏJÒÿ1ö(>ïo÷_} µßƒŠ7ïûW/qŲ¯h»m›úwyOU÷v ËÔEe÷®%ýIã‚îÝ{Zõ õOqöªïxi€% _S0Tco{ÓË!6ÏúŸö»‰Ôô•þ²×`àO¯žšboˆv¯Ÿßny $—´šä?lÿ“Fþ¸—Hö¦7ì3¯ô¿³•x”ûWf=H4I€)Tgo*bo õ°!“ öï€ü¬cç¿ØCØM~9wW÷?F–YÉÄÞY{Ãf?oÌÿÂ$™þa°²Kþ_¬çÜ_ô·%†ÝÏì1ûÏTD‰óêÞÏê1¶4÷?!¸‰ç1¯¹,ÍFòþ'êÿP6$¹Yú׿bo‰e Tl‚ý×¼mcÓ)WÄþ°Dö2!ë&“#줉²SP9‹É{Hss6Èó«:‰² ÄûÔCêÞOÃ2DÕû¸04:zYM`nîý£8£døÖ=_ªs'°FëFW-ݾñO¼=ú§ÓfŒ,îˆbÜ5AœE.µ%#¨fif/Il"ðäíwÆ£“(ÆÝ†ùS‹=œÕ»÷gU_Y¬{Ÿ]ƒ£™òÛÔ:`nŽé²¸£âž„°I¬FÌhf¶RZÐÇU¯.6uñźS¦î9»Ê×ÓeÎÒ×+ÆWHyÁ»ùÎñ AÚêªZ_ã=…‘Ýx›!È$ÆËž}ÿ~¯!'‹£Ó´{¿S)”‘PÇKÓ,x›Éȹ[3Ÿ´K¤±eAÙç;¹ŽÅG•ØU$£¦ß ¯Ã]Ö›íàðÏÄn8Y´`{Ì>o×Ϻ"ŸzýbèS–h[qv×ÙÔkW¢*I&¯.s6 Æ­vïÿ<¿;ñtú“‚1ÝÓíCg¯_Ì>€¼[ÈccwjF±‰$–ìòž_­c°×0««ºXvà» j°Í(û°ż³É´¸Šw™/u~Ƹ-F,ž~u†t}£Ó5Ò- ‘¿Øe–ø>bwYŸoöÓ¯œbóÍzÕpÞdÌz]Ò0ßT»_ÅæÈ ”ñè²FF·¼Á“½ª €I­6n·ø-‚Þ í½ïóMŠbDÛvÙáì*°¹s#¢PÄû×=Eº(v÷U1ƒæÃÆä”YJ_Ä>â‡Ý1—¥¦Ô©%hYìîcb£}Ñü±êafHޝ™ýëÝu\±Ó<ºÍ¹u”Jûu—øóÝ#¡Ü øŸ­Ç>v÷…ôm×üYº(6ÄAãY‘™KÎí3UÏ eƳ&&’G°¸Ý³S /±ÉPP 煉(®ž˜Ýf`„ØX=ÉíÚýÌ8*«h÷Õ7‹u<Ïvóz8ó’=ö1V=±°HÀØ]Äôì¸jòÄ»ååfÛK ‰Ýý,¿gûéñ|½Ìk¿òÍÉiÐ5Fƒš?ëù1n2qMÇêœÈð’ýÚ5¦½<8}Sb\ ÂòO®õÁ©—Åððr÷^ÅE]^ÏÅêF¯¯Æ85KgÝ–Åq•œœbœŠèk¤â­ìÓƒMï¢ÔÄjöx‚l{̾  •ÃÔÁ×jwD5ëþ^êvD8(8&z‰f† TŠžæƒãðc`¥ÁñPà‡ÊÞ:ѵù1‚Õâ0hOô•óŸ¨ÀB)A8i“f8”›N` ÒjêHÛ5=€Åw(_½ÿ c11r]§Ó5¼eMéÛÃèE }‰W8”„¿‚hš2–ÝØÑ^[{üt>yMiãÝõž…Œô¾pü›Û¡£¦\PÔäôÇå‹ñk ¯€ 4…8^^`Ìë̶UŒ(ö|ôdì}Bˆñ¼y]þ¡$ôþ‰ºÏï—ø‰ŒÙ‰ï¿›">œ>¦©&gQ"_¢Øå~nÎà @€Ïŧ™Õ]uùbª/±žaOë«ð‡êáäIì8Ô4˜©údIAË—ˆZÂÀ&E\•Ä$䯋vzµT²ò <ýÊuŒY«p.)¼\Jï÷U?éçvU9¦©µy{t‹ÈIT²•³çpõcä*àÄI²s—æ/|ùØæ#<ÇÔ¸-0ÃuõÆëtÁóæOC»ádçÔï©Á©ÍWwU1•‡/a Ò 4¹96²Ï`ýqË“YÌÇá‹JÞ¦æí ¥"¼e€RWº§TÉ~ÃDþÊí@ÿìw³»_•û ñI¢o0)Þ­×ñOåþ¢ÏßÒô¥þ†wŸÇŸ…Åù$~5ï§åÌ„¬Ä[ãù¡1¥E°~H±†N‚ŒñZ±\k"hŽO½ž_øüPš¿Óí«å«Û³{BÈO¯Ä>.¨ ÍÇÎö-åQD%™5,8rú™ËfÝÛîΩˆkŠ•¬ Cv?ñe:(6¤ÑvÉÅ4Õûzóå2"lù2‘˜šv5óýC¹N‘N#ªêÃŽ]>¸yÙ€0¼|[†?æö’ˆ¼¥d‰vw»Þy^9>&~Õ¡þHÿ l²}¨V¦»’‹_‘2 5]ãò“Lª*d§îo8þ˜ßÇgfûTçë`È«:|îF225U ·?šoB„^ÿºýM¦?6¬771jú5Ë8”ýšòU¶¹fá>,×Z¿‘m,C•çò`ò.‡ÇKïÊöY%ù£hÈï†Ïrät4gô¤éF¶/æu1x~Boåz_ò ?¿½t]­ÎäÍ3Ûcô$ùaKÓëðKuñœ!'xÖYœO¶4cu²é6GateúÃuº<Èv®«Î£Jx,æ\𙓖±Îéì¾Á˜.ÆØ–nÛ4½óMÄüôôFŽLuj´©˜¯ùTëtöÚ~q[«q² ƒt[v&o›¡œàÄNâ,0Šñ©fw "§Ÿ4ÜÞ0„È´Oeƒ$«1—G©ÚÍÈ&ÆT5Z±'`:."Råã 'edw±Æòz»ò=Þâ( óÍüç·ôªzñ¹Îo ІÝýþ¨sÔ{ÎÏÒi_š¿ %tú^?tO»j¬B¡¼üûgÝGG ŽŽ=¿:³x¸O†S¦±{Mv[²Ê«ó053ŒVšÿüùlÁlJñbUœÓî~(f÷jSUoØô"ÕdôìÊöåö©Â/»йPaþ\ÒŽâúô¼ª1U‹ëž­»Ã?ç$ü½—Ù|6¯zÆ*´tëñü$ùP b8Ïú4Á£(ŠÔy8k´vxÛÔœ^“Ùö@÷Áß¾ìoh¾‘„¯HÆfûi~ItvßP÷SuÿœÒm:íₜá0ƒ½G™MF†57Ÿ{ Ãw°w²Ÿ/Õ8c½™ЬQzþâ æó›Ï]’ÏNúnY½N5¹×ÇÖÆoèž1‡´•‹ÇÞ‡!˳I@ Í?Móƒ"ìó߀2Ÿæ¦~Û•—¦ÕT'S¦ân„N¿MªZfy|rV úü¥ytql×·ðKÒ¦cº{£Æq•ôzUÙ¸&ˆÍÍ‹EÜ'´¶doqdßJq{:,ëc%k<Ú»7ßpQ?ûüšßÒ}‚†ÚôéõÅ4Q]g<Ð=ìCY±l¦¶y‡Ò%Ÿg8\ÒWú|ý þý_ÿíü>šß¶·M—Íóï¿ÏzùŒsxg½•©ÞÄü¿14K¡k¨õ®Á"$s4Ûþ~Ó ¾/®2%úëÇ{z›Ïûñü6Ou5è‚Pÿ±é,T±üBÕÆ–€Äþ@$3`ëÅ5\:|­ÁáS¿ðeIŸÞü×É´Óà­~õË¿wàI•m”d¸F´Ð²~Öìÿ¿Öš ×Áïʬ*ÖlŒÍ•¨¬_*¹èïw±õÔ÷£¯û¯w~m VɶóL06À¯ÛY`\ålÒ,âbj+Yöi"¾åÒð[Ý–µ^ð4¤+bÞ¿ß÷F˜7‹ù›O2&Ö_º›ëÜM³>¿ý`NAS,?‡dßÏ/+?Ç5Î5'~ƒÄ+û:Å1…Nâû^¶w¤U“ù¥ÈéÇl[N.›ï{»f᫊œÁé¿nØ÷.´ÿ‘?d¢¸f?¢TÓÞ]ñb®²=\o®ù닳FhK :-µÍÉ~‹´äÉËùÛM›jh*¸†ælÑiÒ^T0àD©e­xSvöV¦b7Å&3ò=þ^ÚiúÕó›[¸¤íhÀž&.)ü…øõÍV-ϓϿRÑó.Ô­IüÛ£s€º Gï¬}“CëæÃs°$¦XYî›Ã\Aާíšñ ´;–Fzï&` Ÿk"^¡ï[õµô¿åY 2=XËoöï–-YiS5úùG¼Ú‰¦’þÏbû’>yÈóÈ_õ½ÝË”ìŸ/ÔïÃõ¿­/{ÜT¿){ ùMSú¿Qþ‹üM;%öÕVSl ûÚé&k]äe¿KþNÖ¿kˆb×äâÇ}ÚD\ß’Å„Y8VYLdw˰ü@[yËþ"Ž2,Êòµº.KµÏ³!ÀòBÌbŠ¢ [gU4÷ëüÈ7ãÝ­äÍ´,&ÝØÓÚ&uX££ÜMQfÞòúX'Í((–ËYJýðå6÷ª#÷—ÔÉ2|Gâ>‹ÈO㛔ȟ_÷Õ÷ÓÖP=uZj‰ü¥µ•¼ø¼LÙ`±ß'S'bw¬oQ=‹MÍà°XBQ¤¦‹ ?hpÉx|3¼çHiKëgµN‹‡°Ñ‹©ZļÓ 3$û{‘'#« ¨R€¥ÇÓÑ>7^¬™"^”BkÍוk…„m²•5U J5èßE ™éyÜ òY©yÖ ˜¸Ç°lõ²«B²4³•2kÍeäÜÓRY~zCnÂao–ˆ°ÙoÔ=;)­ßtyþ>ÅÞ_Èk£©íF¬9ÍTõ)|û4S4ˆ ñæ°uUû÷Ö\—›8ß‘øOÍÖ¤²ë{C*‘RÖ!fê•Ù¬*Ò4Ê¥aÑ4U½•ÊœÚè–– Ìf¿09\– ¢rŠ\.7WñUð9—ß%Þ]¾ëøôïX‹S¥ÛÆ!Ǥ +ö÷Y¥]¥Ût‚¼uGˆ«f!æÛ—J³èaù&‡9TvS¶>K…³È£õ”†_öñ¢¥gëñÝùê¬Â{Ü#ñH¶k†$ž€ŽaEì>ýßë2 G‰„Ý×=[r^Ývuzò_}×uéþòû ×ó‰ŸÊÇ3E¨¤¦ªOÙ”6›¸›Û2õ唆÷,¦4ü´RUW+ p<ÔðY$´”® §%»»æÇû¿®%~ Ó™K¨CupY —÷±È&N‚4 å]}Y¹í_lÛt’,YRqj3sìŠSÜëóMz§j-~…êNÿ`4Ÿ5õõ† *Ûp.QŒrÍAF<ÏÖ%–l-i„ž'š¢Ó:- 0¦›Ÿ9Ÿg‚‹ ^oþï]ÃïJ"ôî4¥™žW—²éù®nßfržt>9`vç×íó½8©™éõʵ‚peÏsíïîí·õ bXcHÅ’ÍÙ\HଘƒI„±}\‚/KÙ¨ÀÛÝ5¶ÑõqáurÑ¿Þáɳh˜=ù=¡!è«gîÁ+‡Ò[òŒz~SÏ'÷dºì†ŠˆMm7hœL¦ç­x^oÚ÷"k ï`eþ%dµFÍП_ ê=ú&;¹Ø”}-Š0³éme‡É‚âqP)©’’Ê®’¦bÚç§“ŠƒK–µ[guÖßµd«X ‰mÙ”’~&irN]Ïæ“wÒÍj)š.+`ɦ]e2 jä Rïé4ü²ÜN¸2aÓãWj;BP×WùU±YUÙ¬v“_>àžòëŸÇ¹äõáP¾·^ îÁõºcß=(îqBgˆ¤A][ùËGò«(CYܽWÀ*Ž-u X§®Ž)Ö5ü_oÙw€–ÀMLÊTЕ‘TÑ/ÑQf|+MÃ2^-¾V|+H*ò{š"H|_yèû’ÎÅ’µ­çQ”©$½ß, Ií¿×ÐóËüW¢%‹¸”+þ{ó¢î/tov1ó€jÆ,.ó—Qƒ»³Ddò÷û¯YKØyl¾Òп8KÃ3£CîD»kY»> yÑ’Yß5”[ãPã ²h¾(–Ç_XÆü{0û»Ñ7DG¾h^4úw“ƒ›g]÷­’ıŠþWk$Óò6{Ué_ƒéÓ>ÏŒ<ÖÊtW¾:SÚ-z~“"biÀ<—çw-Ë]°”Ú±ï2®›cúÖ6]"pñYîa>"‰R—m‹kú¿6þí|—çûî¾k¼û™¦Fž,‚h;±N‰ µTT‚< ßÙA¡­e™ëJ.>¯Ì¶$®jrÖß¿ö=qGª%àWé–qcûPaá—æ¹,Í$ú™í¨Ê “ã+8®¹`IËˉ勇$yg5|YÐßï;Ï“U ü‡Š…ë5‚!ÏÝ‹ÙêyÏU ÇZMJr¤Ñsjû¬a"~Ñy†ÜßU¾¹ï"ØôϾ/êw„ßT‹¥cDDÒLžöÚ¶³“wW-¿ø·#Öß²¾ÌÐB3#§Ywèwη´H´Ð >NÒÏ-ïËö ú JÜÆië)ùo®ÿùyÑžs 𮇽mÙjŠsþÞ¾2.î"¦õ,·CþHhˆUK)G‘×PUÂÄ2ÙòHtßÊôØ¿vug =›0×y¾ö ¾ ö¸5³R£|G±µä™~/ÖãoȘÅ)4X+¿Ú”Ë؃òÝm½ ׷įxz$ºd±çq}¶¡xîuxvkÍéÞ0”™©n®7×´óøû„ï«¡cTÖÙ®õ÷ÌSbý&þû®¾a)z]•´ªý\ÛÁÅEĢ룞öÖ£J”hUþAz=k=·éuÚ…içQÙ~Å¿¿Ç¾2µ1²òMpû»›W3/pQÐÍ©$ÒW5Ûòè¾Q%øðù!B£ý,ªc©å^ö¯·T¡§ÁT&°ÿo®ÑJ›«ò\ê}5¹4Òcâ(‚ÙyÒóÊg×­ïó<ˆFjâïU‰ÖÈ9Ú•;òIž/Buƒz^spF6©MìÙ­š¯çÝ¢ÔFKsýiâF2ÅžØX„Jó¯šP?û=}Xf_÷'p}60âµoVÕ£=ݲ¯¾NZËGs{=¬Î¦_½Z+ëø¾}‹žÏŒ›†•ªx‡Èx çÚëå\»™mÙ–©bY|ß÷úðÊ0þöˆž÷„á›ÏEv“ñ÷òÎ3Ç>/æùZ×>y}@z”zº˜^fv=Ó(<õŠÓ[S\Ð]ïSÐñýÙA}ˆ×rÕ}ùk=Sè頻ú›Ë³Y=›7,Öª^Í©*ììîÝÐ4…씪œcI”A¯† )¬Aw;Â"ØYÏ÷4«•ÌÑÌœjBýžÙŽ©[w/ÿ~ßYLªš-=“¥ºëú—ýF *;þ¤Qxhg½Y„v¹¹ÿHæ“j$ú÷E;þ&¿÷Ý}'˜Úæ×ÓÛ>v£/Ý>,O˜Ù·…±‰³ËDy/žBëòã—-ýøé¾Ðù™Ýhþ~ßɽÀ9uB ²õì:—Ÿ¹N®ßyN[~2×ÊëL¿Èû¢ ÞM¾»ò8ÛëšUyž7ÈÏïêw†“½»~'*[ Ñ!ÎÓ4øQ}†©0ÆÖPc}XWG™ûBjºî†«Ð¿ìó.ý.–MŽùÍ5ôsñ¼ ×å³¾'ªú<û~cµø}¯~n™Ó¿êER’)ü¾[â§ÄÞg¡ä¿Ë YžÕ=âäÈ7Èì¹ ¥M±4º7ÕýAçg›ÿ>©…š'Ó––·ÄMmJ?kî"±foªln`}鮸UuÍFè-Ù°’}•ò+/£ÉÐSÖ´6\Ý‚ d(Öwú1¿¹ÉFh;… îöbx¸®ÉÖ„ß=´ªÊï{>ŸóL®HÌÆù®| ÕâR5ivbÍ&—<¦F2¢“ݺjr²ü;« lªÚöù¢¸uL[sÈíÐûáû™¿éJ·Þ‘Ÿ\ÌíÎiùÉÞ­-‘ùIþ+ ÌO¦³- ódÃó“HíÛ›â«óÂöaŽwîñŽz7â̤ø©¨9™Ô%´·Š÷ÿˆCùXé·{\ÛŠç{,ÞR~F¸"B¯yƒØqiïiŽ]°3«©7 ËÉI—+™’¬’lO$C±ÝLõšF!ñðòˆ|sxÙæÇo"b5™û¦:ˆò‰ŠŸ*=0¬-ne7/ÖÃóñ–¯T-¿V•ªõyWÐY/=_?ÜJQ„UrÅž)ï"Ъì _ÛÑ7ìUXÓÑ7´Âš{??ÞÇÝßÍÛáa4'–dBô[ªÙC4^©(Ü×n_[V^ßû»QB5·Çý`Óüiêy}ÿ=äf•¾â¶v4ÚÈ…eöTÀy;D±pÃÜÌ‚’!Ba«>œIwiîFwY‹›Û…eº?™%¿„SÿÖZxÉ’\Ÿk€ªåoŠâÕå~{a^a-×ÿêós¿ú~·G¼Kû¡ï÷ø5ÔÝ{ w[+ç´ï­§ÖªÃŠ7[r|ª)t6‰<6š)Ù=ýÜy²­àP3ÞH&ÜSï‡ñ'H¿/Õ§•ÏG2ä9¹_bu§êúx³¥¼ >_,éõîlu­âú]ë|Kßë +K/êe;ˆ ­êº¡úëÍé!6«T–sÁòHt·Ò;þöèÂ~uè,s ’Ø\¾adø¾~ßæl÷ã ¹ÝÒ瞯1?>9ÎÆü!Óÿ—?\¿W»/—~/7æ'!†œ+3¥ùöpMB.µ=<É {›¯ÆeùØ—'sä¶ö]üíä2ÿãïvOÔ•¬úá\o®·ëç!¼cr<Ç®FòÞD휧ûíKu*ïóªv‚|Ç× ×pKÜÊ‚§p)/œhfç| 8·¬/3?™¨£æöj8Úܪ ૎m˜Û² œ5ß’~sß»ò­ÊG¿ 䳓ïNB¬­®J‡ð·í$;ðw`ޝÏ®‹“üBþ{ò¾#ä'“ºÏtœÂÝÄ„AxÓ†*ZÊ„Aïa Üxu²iÄ*]/ˆmÃ-TÐe Ùxξ/á1š1œ”Å ç"üïbC÷½Ø¸ì;å{‘¥ ç$Ü"`çH}¯<+ÿý> â¥&áùj¯G÷€H謺,²Ö8¡ùà\V,ÛE%ѱ”eꪰ§N!€b•›ê …“BÁÒ¤:È ä—ÖÂã•æÿ.»Yø+Aã$=R“c{Úç!ïÝq«TR»ó1hPû¿ïÂï |Wº ‹ë¼Y&&ÓKÞž—zu›Lñ×|ðfò>H}®l}æ!íá‰&ı¼GÞ•?¯V÷+‚ˆµxDÖŠµÉ«ðÕ㪳>¸Zž hŒl”ôÎbÁÕÊsZ7­ßà‚¾)ï•y£YE•.Æs0Ø£¾£:¦%qéDl,—ÇΉ³zŒ×‘ ÒÓ‡/¨igv»¸È4g’7qÇ÷ñªEûfxÕìú·xœ¼GKÊ»'ýݯ|^»ð ™qRËþùÄûÒÊ#¶¥‡nÉi˜éø½EØ×̦:Û}æ¥+tÅt=s-¿|ظ¯øU‹~JŸG\<¬Oߟ´–»PŠÿû=Œ”bM+0±¦ã«Ùÿ½{=¼Y­˜?PÅ;ÑÜžU1'¶êu}ú¯¹5ã¡P_ÖoÈÛ¿-÷Kä·ö2m«Ý¨ž Ä×­85¦ó&ò·A_»‰Ú§K’$÷œ™dá£*Þ2\È-}Þ’ûéÞ³Qη—žÀ;1§yë› qÙç1ñ~Z¯ëóÞ>to¬E¿‚ϻſŸ]cLYßý-ý/ýnúZ$ÍÞ—ý^4ø2]kn)»ª‰¢düt}¿d¤?çðO·ì¡Ì©ôËå^#Ï’÷)n1_}а§-[_‹ÛG*JÞ¯·ÙHÂír^œVïáé{ˆ#ƱSX5k™(“ã9 ¤¿µÜ&÷Y ¾éîѻ侊”ÙØAþÎy¼Å¿/âuS<õ›ëÒ)—jA+"‹Ÿ†ëà¡J¿ WPˆVÅÚô93ú{³ⵜ–7ê©é|®Ûÿóþ}Q¿ðhêßÅ~æ0îIèsúïÃ;T߆CÝìßÑÿ7¶Õ? «°Åíòžc˜O]„û>ë{†L²CÀ‘½ª¬‹A›_CëæøŸ$?Çúÿx`m¼ Eö ?ÖÀq·á¼ Y~’ [ùk¹§¿mi­ß?T“aÖ‹JZÆ´[%am® Î1èŸ7Ç R0ãÖ$÷´Fr6ÔoÒ§ò Ÿ§'Žp]\ÕøÎÙMÊÅ´6‡-ÕK9KÄUË»’É54½˜è Í!ûT¸§þÍáµMm8ò2UkËã°‡mæÕy`‘hžtjŠq}ý{áçûÕ×–ù}Ã×ÀW¶å¼ÈhtËyF‘\3D3ØZKb—U’yXKL;-=2~È4UgYl‰«lýRư>2wd¬O$¹²4õSš™v\Ñç/| 2“³d}U Š:Q|Ë;ΞªOSUO@{7á›'ïLrÍ*ÎHj IE­(µ[™‹¢Û&¦H@~l½íó\û¬JD7$aQ‹]Ñá‘E7{«`ÃjÝ®ž±&:w{Ÿ¨z†wQ…ðŽ ^1yì&ï.ŸžÁ+’Ïý¹BS}ÌôÒ8Ÿjž*3Êà%—ÿª ¶4ô"Õ3÷tàÒT!‘1¬"y~÷¶• ^P^ÓKç-§±3qÉêŽJa‰,Èó¢aOÓt^©D‡}®{¸íɤº¥yªuà²ru™ªl Ë ´yi6ófŒæÜ*ø|qfC8e°„>ÎÈŠ6ïéH¬ši¿‹5heòÎîê&…ü1ÛéÏr³’ûµ<Êp›Ó¯b5³h ÕÅjÒÝîªÐÐÓ®¢ÌWʱÈBhßñ¨Xv_ƒ)ªYæ‡ÿ® ãöÌ+ μXÚç9 [Ë=Ó.!¥¶SER½¼"yŽaYö„“™«ŠÎ‹µIlø08ŠQØÕ!d-u4$\Þ2¶‡žépâÿßôLQÙI ¤GrÏV•¾ 1ˆµfÁ,÷d«†t÷téŒ9ƒ—ˆ `ÞD ß$˜ ÚË…|¿Ûúß‘GšüWu©ßf[4Í%±k¢,*Œ·ÝL|L…Ï›Téuûô;*„­òA"†ë÷¡ »:–ü-y…æZ+£„ÏgUÖ†ù3Ce –˜œþŽ•IaÒ‡ =Û♪øb[ú áYãR½ü×2¥OžÖ3j_5mî^%Æ`{fõ`ŒæRE‘òžÍÎ6£±Âùfc´²ÀØ$lJ¾ÎŽœÐç(·fŒ_k±bÕ×ìÈËxß!ï¸Ü³p†÷îFšPaÞFç@|6EXM™áñ6Av*ôn t–ÏÓ+,íún¼ß÷+3¨äÖ©©é¬ 6UV¼ˆdE“W!ª#ÄWQ‡¹Á!ÿÓü—b|uõJÉRå¸ö»Æ2Ó1ZÉýwô+[^ª³A{9FÔ"ËG.+DzŠ%‰Ìw.”NÑ^>‡±Ó[õ®ÌôÐ÷bˆÂÒ•y°±•X›þ7"ÒØW'GáZú¿8MAUÚH±ÂI+ü÷áú]Ÿé_Þ»ôL5yŸÒ3Éõ;Õ½t´éwC‘~R÷ûÓ‡§+t}• ?È.Çú~^µJä_zf¸¿Ý¶ëóOö'äÚ“QóΠÕå¯x…øÿÊî.zÔÕ'‚üµ¼'eŠÛ4OD¨c­‰ÇýcÉ™;³eF¯8¯*㿼­‰mûç9nk1¢$'™Þe¿«ç絟Õô¼Û[vö,bQ/1‹>µzìYïOW5ä¸é³V㘻!æîÇ™°ÊBüæ èÎÏ©ñ5½Þ®Ö×¼J\HLj”<ªuUï·ué£W„-Ho&}WîIV5Ùé·„kevPQ—¨Ž4aœ»]1øì²U]¯KNVu½>üßi'ÚMòvQQüdgÞR£iL­~oáÁplç°5Ç*7#nÉ„üc̸1©¨BÓ õ\4¡e÷øóÙüí¦H“É|JóüKUr´]L]Iűî¿÷3Â0•…—&ËÏDP¢Ï[ÂtÜÄ´°¶ñµZÚƒjÇ{€ ʓ훎ͤÞv¨þÑíd÷›EÇ=B¤Äon(æ Åßã߀)Q‰Ré{ó¯ü ýÄò))}ÞÜ¿§>ÊŽ,QGzËDí”=0Éôýmx¶—Ìe¸Ùs.òç³ç\²§¾&—J6g¦Ä<SEî6§ñKe‚e¦4!·MAÎûyïYzz˜¢Ôä øç†2• åo–ÛÝíë.Ä ìhçXqêu9kÅê×äŠdzÿž±ãìjÞäÍV¾&Ó ŸŽ¨tÑ¡æf1¨Øt2i‡÷ðõÐÀœ! þ¶QmVMØ6iéïå½Jž§C#isê…tqyîžo,no§ûóÅþþù­sêŽÔB>²õOþÖ÷0}7›•#ðR,¶M–«âÝÛݰÊÂ)ìnýrxÿ«¥±X´c _uôÏ®–®läôØõÝ=ýæ¾'†tA¿2‰±ezÅT¶EcO56œÜ)œŠçkŸ¡7|]ùù¤±Êš*9£ë¦õ=ˆ™ãăðû‡1në÷ ÁÏü*Mºb(ßl‰&ˆîé‚¿v}(–ÊVÛâË\-ñ~'"– ÅŠ_·ÛãW “Q/º…Bw—wèëG½©)?òn~S÷z4ûM3–+GwéòAÜåržý#³x¹—óï\†ŠÚEgõ¦1ò2Ìê¾Àèú0#ù–¡ü»ùø¤8™?£‡µˆ ¹èD¿f=KÐïO¶nó“]â\ŸßÞ¹µú§¸ªnýû[dØwý™Çu,»®‹ñݸ²,­Æá¦™XÙöXÛAŽF-c"Å7c£“2C盘HEÕ]5(àS~òú©T µ\ðʯ{Î2;ià“¢%ŸèÆ0»ùÊ©û0néˆëL_•Tôû¡ï¨C}Ê:6ú½P—ËÒ1!oÛĬÏ?`-ÄIc€„µ†ñÖBœôìÿ>îÐóÙ&°Oªûß\7 »æþQo÷?ôvL?ÍB~}Yûçet¾³¨Ï/+í]§ý÷rOˆÔ`¦÷·}~8^‘Ú±ºÍú*’Ë}¥(çõê’0œÛ ¡‰ß|Ód¶ ÞT0¶‡_yDÂÙ·â[¯;%é'«³&Å»Ëã]1ß_“‹™+ku¿fnuÝ5!l’Âslu$âqèõLnu²+‰«E… f{,}vÖEÂJn>a _U¹,Þ±rnÆ,ïùÿ }#=,$¡† Q_õ é—«Ù&«“èÊ dÕ?ºw$âûª3¿jðõ +~*:·7Ôïïû9GmôïÏÊùj‚ õ½‚½£5g16ˆE¸äô&×E7‹˜Ùãi”<ì˜`ãÐ=‰¢0cGÕµïŠ;Û…«±¼£ûéVwZéë9 ÇX2¹^7¿§{ÜZuéûŠÞæö¡>¸Ã,éMãŸ(GéÐHBN.××¥LX"æw:wv"éØ\–¨IL Î}®¦4ù5as`õ †(¬Wg§êÕù©s«Wg()íéO^rÙS㋯îoÞSÚͦ…%ïh#¼ÐUr/ÝÉzèÇf™žùTÚwËöIϸ¼Kϼɫþ“~ ¨_ôLvù5=³úWùž—¼›ž¹ä]òlŸW‘w>›ß3oÑ3‹£îÆ•^%³î˜n*Y½{˜Y&_g².uñÍô¹ÏŒå¿œƒ“Ær›ÌPaÌ{&¤ƒ[ÅQCfãÏ_*1)þwÏØê%¦ihX§uõîêõÓS>ÉÞΡµweßÝ÷bûnjR#¦WsXæëÑf6è±,Ç^u9îžònWÇŠÙ{í\ÝŸ‹î_u‹¼+þiù3n2»‘¿ä}î¯ò~½™ã(=/Ù•ŸŸ^‡²:­’®kJ­›:$ñ‡sZ§âèÊéü×i›Ž¶¢­Ø—%ó’R*1Ímž—¡m·)ÜÄÈ~¥ûô»Õ)j³Ž ¥:†:6‹ù'n©„`§ßXl݄ñNÄåA[õsûwå“ëM82sÇrwŒà¯áQ7¼bj’ìòžÛ§¾èášÙ¡¹—Óé~d—³_M¿.oÊK-U5ðËòðSyx—_c¢hŸ”`mùÓÚòð—^Q>¡yÜêyxÇÕtÕoñgØcr¥ÏodS²“&œ(vZ1Š õ£Ì<€éR9Ù‡E!’ *ž Èr±ãü梖dÉ\iþZÛD¶"¿Ñ™-›Ùƒâ“šðNS¦˜¼4WÞf wSœQ­(¿| ~£Ò…]ÌÍA6O¼æt»Ã† ™‹Ô=žY ÜÃh©3'…í¦›Í!ÄGUf"oÃ$Õ™šãȬδ½S¿i_/\A²|ØýîE³O¸³/8ƒì¸šÿžIxîjcš Õ²*B×nO±:Ïg}£™=K–ð˜Âa.y_9üÁLó¶åæˆÉ7ø·ïæáÕ/5‡çá›ò3ãø´óœ# ±†ÿ?1$Q𑯑žI¢:›å’&îÍúnòÊ÷å=“LÇU’U 0ä{"Fò®íF&*ö=ÅAÁùº/«°µ4³òŸ“9w(x/,y"¾ ¨qµè/ošg,Á»Ý±ÜRà—ãXuAº+xêx¢ ¶G¡êކ„³Ó³‰z””bJ:{Ihö.ÿ†õ?6ùl¯ð©²jÖÜfw%U™(hƦiÿZo]Ò“Á§èuT7Ð\…Õ"`-A…@”F¤'fšó0‰Ú±5/ÄÒB€sK¡5±µsw94d2’ÎöbiŸJ©LÐl'ͤÖÙÓ† e‚KίßËǤÒÍÜëÝ„ï+x—?Wð]…Ô‹úü’ÉÖ€ó 8üG"Í>oMòû£Ÿºï¢ÜÆÊ€ ÞjÖ®•µ,We•…ÖqÕ]?ñ©=ª²^YmäT·NcȽï¢bL¢È™Û€I…¥éQ‰ž Ö ½“¼õÓZ0þTUHõ†›DÁ‡0\—‚2¼wPuuögÔaT]™õîä"¼½ü-µ“ö'ò9öímcéÿt9œšîG˜XâÜC*ëYS¡ß@¨¶æúÛ zõÑè1t²¯§Ë+ÀM_€8F}çåË5Ä©÷'«…¤U?ËJº­á­Mç»§eù¨…°&×$È1:N>q|ý…y:#fbè8ûM@á¶•ž>js+PÞÈ´å8v=5ÝÎÊN¶©žê-{°Lß/Qš~õz’¹;€Â“„¸3y#H}°+Z¯m<>U(¼ œÉ¿²§+Rîñ ©ì Î="–»›€ñÔ_F†ªÄXVâ÷W%–çåö—Æ?æ¥ ì[„”ßWDdÒ#ƒ×mÈà,¤˜wr'eȳW 1P/F¤~98ÆTàMU•¾áo™å‹ ¡È ÜÒaY4t´oÍ/êäéÑù„™žAçeNg.®)ÛÔ9Þx8{s'݉f²üR‹UºÆvÞáÀSAOqŠÑ7‡Ü3,Ð Ó¬>öþÇZ_üóžÑiæÀ!)-ƒÓˆ{ï}_Þ{¶9^êÉ\®«©ƒC¯ñR@;z‰ÉÆŽxÊ]­ WCÈ™tòÖj¶iît'ô­Ý+N†Äh7nýʹ¸çgÄ€4Õgü®î÷åª@­ô¨t0ãi•”[K-йX‹%õ^ãzú aÌ8-ÆÅ=C\†‹1KX뤯¹\z–­áX_Ü'àZ+ó=¿¥–A‰ ¿`ƒ~MºKš<‚AÚì_Mœ_Ì£Y“úÈ<ŠÝÜ[D£I¹>õY“ÿ g±§x×ö=`ø¢Éɹs :S‰YSc¤00nª:mŒ¦ƒcÚãe«ûdšSë|ü=h^«åføýZï;b¨Å¶4ý"¶Kf4¸ K:”›ê-Ù@9X2õ¡!sø0Óì›°Ê–“)`6iÓæ´Þfú³"yÅ~hÖË6& ë™9†·ºÈƒn+W3ah!¬­8³}¬ovš~ТålÅË65,¿E|Säk|³©ag÷Ä©`6É¡éØSfŠ_~ý3ã´d3@¥n‡„î³ióe6ùʪÓNÞ!n`îæ3}ñÀc½½‘4ŒÕMΠäj‰yšjÝ£Ú ê¬>gw=nØ÷-6¿Ü´ïmQ*©è7¢–Í/ßTë-ÃfÝKÖ}ÕÉ…Ó&í*Y#çÔïØ÷VI–“SÝ%ÖG@7RÅ·š©G4­î¬‹š¶¤€KñYöiäì^ãË”ÿåUmU͘ëÝäƒon¹è3÷ö7ôqÏ4ƒù-r™aMÆxAÒÔ©k¬ÉùWt·¦LÿŸº7Ér$W’÷}Š<æáNé÷ß6U=ªX¯™M¯ªôÑœ„)¢¢"UÙ˜ Q;{RÓ´ÝÚì˜ÝËlRsR+4s×Á¼ÍÙrÆjH2Õqg’™zÞãÕÏ£œÏ”eRƒÞ„å#~abµÑý'½"…±.kì"o„Îeêú]pÏ‹çЂ”>½OJZ„(èÉÀŒpÝHî­RÖ¤óLmá-˜£Qùu7'­à?Íêå°`x©éá‚v,Ò||sÅm?`¼œå¹¢Ô±ií5a©òé#ÚI3ë|T»T›%š•'€’z`A›|¸‘ûŽVÜûC­Má¥7$­8L›=mÊÆaªz’™ãyÿ∢$v#z9[k·£ó˜³˜ñÞðð”àJ…ó]Øç)£ÙÞç…ádƒG´@ºÝ¶$ßXI: âî‘ãq£[¸*¶¤‹í‚˜qË·¼x £Âª™æSÁßxˆx‘¨…;äqÔÝóg ª_±Ÿ?ú‹ß— ÖG~¤¾¼7U2u_@vçãñÄQ©ÌdJ!Õ¬n 4Њϛ½hgؾ¿R*.â+“qGر~‰U®¯õê† éÝ–ª" /Å$=Á°j0bŠ jŠvÝ‹`~Ðð÷œ˜8‹ï¿2ù‘CQæµÓû >–Zô­‹± ¯S4âÄmšÖ5$šyS¸% „ç·ÿþ•Z·í‚MKëë’bÇFc ˆÖ’ÞÜÏlŒíÉØ S¼ê÷úXó2ʼn¢øûjméÐÜÕÆ§z¿ÚÅŽÂÑöFës2ÈrÄV#å(ΠæI½×M¶{TÜB#&¹ÁxBÅÚ¿f”ÅßkrÀˆ¯xʆ8o\6;Úr?ˆc½ºÛw#¸Øß]ûŸ7 hJe‰æ÷Ô¶ˆõ~`Ô:b6­E(MÜ™8Õ®uôý~Gªï‹EK˜±DrïÒé ³”ÐâîêGFüJ\Íïoü}æþç~ñiþ=•²6¤š…ónäÔ±_9ñ—ðû"fë´1¼ÜïÄ]†&]ÐOÍÿÈr”Ïã}©~?PGL¾A”~ ûÿÎäYÅùS©]ÇüU‹åéì¹¹×#•Å¢·æó .§a¿eOåÀÑöx&[G‹óáLºfþýý*>ò1LfZà°èÎÚßQ·tõ‘ß™ÿÙ„˜ h¬¤ÍB«qyBÄûÓø}—”Wq­ˆ|,ú g{ÅyY<1\q‘Ñ…çC åhJƒ@†óa(ßë| Ó»A¢ñ•ú§£¹šÝ( T4iÿ#_4ýK7Ôh•LžEqxtëwŒDe %'ÎF#,Š·ê¥¤zë²ùù•ob¿–¦ü€M—BòyÇþV¾/±ñQÿ Ź ¦—ò¦wO¨²/åÿ±SAkã‡Âçw@LÈpä"f%)¸}6!1ÎËâüØÛNßO\+÷·zžýÐÀé¥ô §ìúã¯×?Éëùù‡1•––‘ùFåTÖŸ‰Îñù¦2óUÂÌ)¶%Ÿ§Wp7Œמ)·Ú„Ñ6©òºöž³<ë@H2o9ê›ÏÆ27±JVw|Q>m#Ö%aÕAÁ Þ+Âz㊀ÓÚÕŠD`÷¥ÞÁ¿fálŽÐ÷ÜJˆ ÛÌ”p\lg„BÁßÜxî.ì'üímÏ#ÀMÛ~‹çµ°-ÇÝí©ør{Úô€#š^­3²-Å(x±x_PÊùïlÕ gŒ Y¡ØãdYªíîÄu4ü¼q#‹°ÙX¯Q†]Iàñ|s€0dî>ÃÓV0XwjöÇþÜn}Çõ*N)öª2Ò½."Æûa~èí#þžõ9‘øþâ¸Ñ‚éJ¹c”*9€y"Y'qÞŒPŽÓœ*|ØÐM醯Edž0%"û›Û¿ º’g„5s±7ayñé=-ÄǺ¶W«â€Š…ð_ÏHã‚pLDÞI:r=Ö5áwXSy“:àuyLçõ|¼?KípXJwÄ멟Z²üþûùXÔº ëûGñúZ÷a·'tMÖ”dS Ä’8u„mœ)~ÕFt†ûßœñ·ƒ* ð¬mäÿ°ß_û‘ç<÷{Üë³ © ˆýö7ߎ:>q>ïGÂ~ïSû½ñ}ÈûŒ£:ÏOÂÕ_®û‚#ç.Òà¸9¥×bQ ÎI1Ô5ÂåÈ¢ÛÜ®@’–Þ0áx,-²–}+EE×¾TÇÓ±¸®!\¾ãÖ_—éN}s ÿOhcÿc#®ˆ•Ïi´°$ cûcÿïKsø…ÞA|@ù<{ÝãÞš§ ¢H³ÏÃ÷+å÷î1(‡®ä™ `ƒÃT„É24R†SöÆAJ¬%¦Q‘ЇՆ^É2ºƒWé?Cw~ǯÂ,´¡d8ê'C½ïÏÕÌzN†oç èÚÚ¯[ù™ú6ˆ»ÏUž“Ãua]¯ç)ä]$ßõRÈ^]1Ü-€?9\ùƒðu|t‘Ý#|ýÏêv…, tcÄØ_ J±®“é~㨰SGEx…¶ùÆt‰ÄÕÈÇ0X±@yf}R‹øUyÓXÎ~m™c!µÚž{'çsèÇéòbƒÏïÜ[‘F–>hÆøÁ0¶H¢ÊÈ®Á¢ê*ór£3‘X\¿o\b'š>ÿ÷yFy¡J—µ±Ç‘Ý—lècBßw©¾¬_¤—K}Û<­™GÒJ?]Å™ßïÏo¾UÏ`dcLYx<î}9'GáÞ¼Ïvk~h|¤o/Ñ8¿ªøÂñûìÃ7³o˜ø’ü=^ŸJz)ñšÆ{' ½;Oqo}ð™B|f+nÄëi ÖÁ‡‹ÏÁTÀ÷Ÿ!¿¦~Gp¾â€Úòå¨L—6+†/Pþ‡*0àC Q½Àã¡çT’¦£·îòL渂8ÈfÏÕº†ý³O–3j¼/-ÝlÝ—þ¨sNTXç/×1QOæéó–:£Y=Û¿?_QmSõøák,ÛprZn-Õñ{êg Ö±q)ÜÉ±Ý E:ð z®­Ä¹AÔ]—´…àÉIÜEç+M]Óç'F"ÎÆß'qò±*š"&ϹÂÝ3b=ñ±º¬=S1¯P©&wg¿/ô2&÷ûˆó#ºÈù×~מ-Pä“¿Blpæù ¬íÙàèGã`h¿ÇϰnR…8ŠðøX¼[ž·y½å}á,ÆãWzÃašp™ùÔGæá{,ñÎ×¹ñômžq<Ó²›@ ú¬ÍY¡ÜDŸp¾ç,ƒû·˜cÊÔ9ÍYÞ¢ËÌ•ù$ãÒXò n@´ÿ1ðE±1ŸÛ°O÷PœÙGjÛŸö•xÐÐqIwØ}Ú¥y–˜§Ã¹Òîh EaöÊ«r¾%îáëµ;›V¯ i/iËE8‘~8²\€ñ-ÙyE[j ¥Eø¦é¦¾u„`¢…:ä=èÁ}Ü}¼GuSvöI»ç.pÁýÔ}XõQµïó¼Ùéô…zÉŸßÎp#ÏÏúÓÕ^ÿœe»¥ ß'‰¸ %¨úED¤Ÿ¤<¿ð3ÜM?R³ÖâFú¹SWF'žxürßu²ÏTN5¿÷MadP©º¨˜}+æ— Á¢º¤u<¿ù¼ñÊÌs¤Üé»B•Uªnº•Út÷/ /Í Ç/\ʬ0³W¾´£ãå€I´acݻ܎ ÑçÓÀ…ëŒa\˜û·xœ¾°.Y.|ðø÷:ç ö¸¾qáÓ.|ÇÀ¨ç[â\¢àÈTæ"ôÌqã| ›Åù‘úvy"OxYÞ&÷GVHd‹l €¹Átgßçɹ JFž§8ÙÚæÏ°OmªDèò Õï'nO}:@zO8n‚_üfþ=¦b#žÎû•òiNýû{T‚ÛVñº[u©¼Û*ºb¡m/ŠÃòؼT¦îá‡QI†>ÌR<>’ÝÈï1²ÅBßó{W~ŽÏ—æÏÏy ¸¿?a:äwÿ}ܳ–Ì?‘ßëž+uM…|ï^”#Œ0Ãô‰b(uÉåè¬Ý€¿H›¿B¶¥*Π=|ÅEvit^Úóã÷ù½/3Ÿ¬#.žÿiåm?ü±úŸ¬>Yõyñï¯ûðñý"®y'+tÂ혚øa8¦'zDÛÜ."S ùLo“È®†âá׫@<'KÐòïv hÈõré\­˜®d ¯a.ù²Ã“Q?ãà5óä{á5í½Ž·=Cm|_ºy:ød¿s®Êá7^Ü[ë’3—ö;¦!¶µÌ*Dï¶z2›ÙV^¤ ù–PO Ó?ªÒÆ«‡½ÒÿcŸ¨»ž Û0¿²ýÂé·û¬‡?Ü-ó"~q3>)¼óØf¨>úÀïÿ¶ŽÇ?ŒZ¥ì‡¼¾~6‰deŒwx¸9ÂpR—)0¸PðƒÝîx¼^ÍÙÓ@˜¬w¶áLuÇX½Iæ¿Ë™\ë|æšÛ`ßéàº`°ÍŒ'©3ÏtÔ‘õ]®‰6ýÔ ÿ½+2¹q@ØVfðV ü!·îüpÈ™0õ£? mJ— `i§# †7³)þ-ö0}ƒ9{|ÒørÝe?Yfü£õ:ƒ×ÁuO¶[H\÷dûñà]×õøcþE:ãÍïì:ü£>̧¹îmË] >ª0}¢%MŸP]mïÙ¯“ãba{s†Á²ý_|UXÞÉè-Âx¸üšZÿ纗ÿ£žÙЄà‚\VÅ}~ú¾’Ê•1å±ý¤,ÇD¯Éˆ%¯"SP õ÷˜¨+YnQ¸¦úq÷{ý½ßëïýÞï÷úk¿¯ÿÍ\íÙïÃûÕΞóØï´ZUû}Ë–v öRíÙÈ28NR­£{Ú±ZÌSM\Ø÷0¾Âº K@‡H“&¶ä•ÖðY—f#0€™}çélf]µ£ï—âáSQ¼þ¥c™@ ï±>é|›ßy߬K¸d£^AY¿Ð4l\² ¾ÑËÉß2Z7ŸoÓö‹þj!ïJ›¯â{ŒÜó§ûÇ—ë>qo›É¶’­­({ÔÇ©ûf¢úúÏâ=x;4A2t?ŒQYõ›MÅòñÆ"ž?y~ËÐÏ—_>™Ï×% ½uÞÁÇ‚w]±%¬¼¨C¶”S2p%è’‘Rzd&‘˜qè3•¡oÁ4tÍü÷ÇÍ6ŽnÙß®ÿär·Ì>Τïˆ]ÐçâbË\|%æ iÕ¬D‡F{Ïɯ’BÃ$@Öd@:‰Û·[üÉ<¹ÎEõk•\ì÷KÝœ M^÷èƒ)à N” åóÔÉ*]ó/$ªÀ¬)N|þÜô—ë ;¶-ÚP´—>§à\.^p _Ð܉µCnY²d÷Ê.;£–ž8kbËMò‰[ù¤ðݺ‡ŽkèÒöúqR ³.¾YbŸ¾udXÔTÅ¡÷”2×1žŽP¥ïˆÑ(ÞjƒF8á²så” ‚ah§¢ƒ\½¡wüÚ\Ç2:HÉóÿ ±Ÿ!h ÞÛ {ãÐk;`Kú–W\ÁîŸØÝh;Í?°›É[ÍT3,MY³ Î‰ÝZ½Ûc•c÷žÝΘÓ-(k.ãa“f™ÝÝÈò UF¥4ùO„¸»ªç·82ßÔr\rŒ®Ò™äÀe‘Ý©ç¦ xÒ»Õ$  w²;¡b©tÒô#ë°+ŸQÇï¢ ªJñ> ᩈ™í9®1Ñ‘,ñb«Ìqì%â+UÍ$ùºÊðmr¶¬%žì“#•-k¡“o@8i…ËÈëãÊ&Þ§œtxnà5~%ÊðŽzÇ“mÑå.lÇGÌ©¡gÿ.Ÿ¢"Ðë¬{áþ>ëNhvÝ2L<âT&ÚGú ÔB¯œª@k#CC,hKoêÑQÚ*ªc•¾ ž]³©úh<§*Ý{‘²è0Gí[Ù=TP4Ó•ÝÃäHìHÇ!vÅmS6u«Ð”ŸŽ beûFǵâçÙç¤[9Tõy:|x_¿Îïqy“C!ƒZÀCx†ó»J³Á‰¦±x3ðqÁ§‹uè „džƾé6*ÃתÈg2Ïĺ©»bÿÆ'Ï(_'Ǭ*›Ÿï-_~_ r¾Ôepµ´ïL[N’[%ª:‰5MÎÉ„.• •X t"ë¾ í÷ËQ¹ß߆®ýŽ·Aïýß³&Q L0èòºâOáÀgqNSáÙÍecgýÜâå%ŒLÙ;ÇW½Žþid-/Ÿë:F×\\²ÉÚÃæá:=«âr™RYN~¸ö}{¼¢ë»»HÂ9¹%Ê&7’ážî6QçjJ.ƒo}šOºoO+ã§q•huÿQôâËu'ŠëÂ!œ¹xÒ‰ì?³HaÚN>NŒtaÝÕ¬J.jºŸÒG³øýJóo‘˜Tv£Æš­8‡Ó|E;µŸîjÁÃ]á„q,í¼à¤]ÅYm ¢»z²>ôäîˆÀ%˜(Gæu;Q,®%áºñfšÇ¨t†·âEea^Å!¦ðË’$&\$zÊ1ëHów¼¡èºå™{6¨¤–øÉÈî»›yÝÄ%SêhªrÈáËð§Û¢Ó‚.‚£Y [Ó²$§ª/ƒðÕO¾ŽÏÉɪ,áeVø½)È)à=Uù=³ ªn¶FÓ»Î;Ã~È$$©÷®D3oWî“Þ¹~‚ª1†\§j÷ÎÕÅ;E¡É}çßç„!Ú}â‰8]ñ$í$—®EÓi™Ýa¨õˆH’YIzdž­[¤ü7Êê!W‰TòùGÄ’¢òÈåq©oËy°LVåíµÒ¤e5©Ó(ì’_*[,xÑ`·î1›Ù ÔO;eâ9'^Px¬vGd$^á±®©€ßê…•·njK”,/éà|{†+¸@ÏpT=C¯GœIÃ&WH5ÁU/¦–ùÃdç´ÓÑ‘dªþÎG¾QÝ©p7 &ëaž¾Eìè®÷.—Hd•æ6TæðSìoŠ ÿ‹á§JQ½C‚oÛ'&©~Y¤rqð ½nŠ™‘óYqÖµ>‰~¹ß9{ºzýX»L¡=·ºÕñÐTëN¦½{æuX‘Uà|Øó²Õ*qœ¦½#"ј‡)R÷CqƒI1‚CÞàþçyÙ ‡¸§šj Þ‘j59oPœi»~Œ¾U>°Aµ8Ó¥aú.ûÜ4|Ãò²x €Ÿ2‰Sšh•ˆ •=dƒYa3½›' ¸U(ãÂÍ2çÎpëæpß’¨ðÀù‚˜Ã¬ÓŸw’Ú;E(·‡Yù;YD2ž/aŽ×~HÅñý•C!¼â¿]w4¡÷¦ÉH„#ÂÄu'Ñ÷pä1š37Fì¨òE!F#~O? ~í–Ž»h.sþ>Ï€¥€‡@¸î¹yØlwÜÚ,&Ö”Ÿ«âJq>‘¯Iôý"ivm¯Áp Ä@þžÌ”EЇÉF„¤xVQ”›^äìDþFW7¾ÐL¯‹4!–=n0Ýâ{dw¼þCWL "ÿ“>©9_YןIÛJ`~mݧþG>Oü\õ!†açó¾`è‰ï ó’E Ö%Q¬Ø†`I¦é!laNoŸ-\ò'¶°²÷»t? ^Ê~K|ÜÝ=ǃñ¤Ýo‰næï*x’?\¥-r8¹“÷÷P>_Š;÷¿Ä›E9ºÅ(§ÅkÎðk¦Î=‘ÏD3ƒª:>Ú«Yb-Pý¤ Åðpk¥¹Ù´Pc<¬9‘ÿ)È>g·Ê[0ÜFüÞÆùïdáB ò^öÃa¦Ionçñ¸Ïn½£0/ƒ'9xP¤5ê,Šp(s«Œ¼¿àåM/ê±X7I\ÿŠÈ-ÊkŠÁiµ{¬ ×|+‰Äš0¯ó—‰¥+N_ÌÉ.‡¯”»š «Þu.$B < '‹ûhé!‰»T×)´¢(ò„ÇçïbÄ t9ˆŸ!„®j6°ZËÇ÷öÛ:ª"Ë œú[–\ظn,ád®~Ô³#œPšg©¼Ñ†²Ly!ض¤ªµ„yäѯˆ°NçT.ÕÅ 2¼œ·%Êaq‹œáV‰x¸Õ"v’ˆAý%*¡á×·5ɨj›ÔwMÈó4LâB7Õf MVÈ”s"6¡ÚE7Æèü ”®UCÃ.7†‹QO¶ë!.LsŠ3,¬|tú¦‹ÃÃOÌaãy†é)>qÄ;óÓ<ÃÅ|þ¾úíºciuòÃpÇÏÒÛʦGù-CL[¿ ó£XïLºXžß¬Ûœ…:ô}¢Áý<ž÷M®{åºgµ€ÇKôÙøûÿÀãçx|Ço<Þ¢ýÂwúÑÉŠ÷­gšEøº&toÒŠã«×'¬18_¡4ßµÅÊöÃIa‡l1hA¦ì™uÅ qaÐŽ’Ä2¹5›.>8<,Áuˆ S,ž¢Xð$\’žï—'ÝÙ›Ø<‡¡j½c¦[i‡Ê.×ÂDÅ÷®-=øbƒ“ô”šÏ«_Ž×ëfÞüùê€æß×'“‡oó ýгÝ8†SÉo#þ=_wîçc–Ð(rž_êyå•D±îú¼/âÂWpa¤^ž1/ÈÂêªfœœ"`)„Èß3])’az…l%tzV_ÂK¼šÇl®ÿ·ýS ¢Xôð“ÙœÅUl6—•ßm67”ß}._«g:ê™æz|¸Dábu½ CƒP3ê™ý»ž9âñ¬gŒ5¨ž¹#†5( \æçˆ0åîºq2ŸñÚms„âþëdÎyðbšsx¢ødõYŠç›9ñè»C„ØÅd'ï¦øÇh2©·™k§ˆñÓñïû®2ûƒ¹eæèÇAžN¼f¸ïšÙwÍÆëÅ»~4µZß1âMq¦í>,þ¾9úŸÄôé›,Ð^Ãb5@=–œb¤zv1놖£dpÔÏòȱ%)n+Ö<.,6=¼r¢éYµHòúá¥NнœNS‘dq2™¢Qï«ÉÔL}ü½ú¬>“Ln™¹,‡é7ø±”ÇÌ áñǽõx»ø³Z]rï#øß¼±ÉÛÌ;ù¦6óNßuQl¯¸ïj<Þ}ÖOxüŸ¢Â6ù3¿ÿùÇß=$Ýeì_âñj´ñøÃ«YG½ùM<Þ¼‰Ç›”0¹ýâBn‰uðñisK™45›ö©¯š-z2ëo±ÉeQÏI³V‹ÔÁ{ð2>F1üñòmžo4í2·¤8E¦ç׿fÊÚ»™Ç“⡼np8ÓÔ[}YŽ·åaÓIsvq½¯ˆ Ó”µ[T¸_ >*qU^|~Ÿ¾ìzže:âòpc<&Ç8WøžÜÉóñûÎØŽ4YŒŸwÿcénˆ}¢ÿÇ´_Q»,qk¡¹ ß"2œVª1ÜëâõYttó¼Füä]Öó+¹¾ÿü:Þóv¢X¶ózÝ vÞ¯“ü±a“ÅaGa$øÎ¸4’Ø’–Ê´¥’¯¤’¾uq’`ª!Ç ÉaRáöÖÃ<Ñ6dÂ-øºm©uÇ$ãmÑF[æOšÈŒ²Ð¤¸ùž7ûº .kŠXù)SDÛ¾W•¦E¡)3G0¦ÕîìwŒÉ­æý^ÐÒkoªÙð? ÚaÅqpÌÈ Š°:œOÿ¯‚ò<‡¯¸ê-n=ˆ×pî˜ãcÊ×2O0R<‚éüÞe˜”ÿ!/Y#ÔùüþâÏ£²Ú¥{T«zo›ƒÀ,|o›ŸaÊl/@Ëâ‘ôÇ¿íùðïiõlóä;G8Q‹îùI<ð?ôCdbœÜ‘‰±M‰›öû1-–¶ñ››ccæ{j’e•ÒÀ‡ØÇ½ÃŸìÿUá5‡a—äu(¾OضfSßÓÔΚ¢ã‡,½)g=påíÖgMŸÞ™«¯ Å~ÏÏŒ»ñ—ÔßcίáüXç›)êüî~!/ƒQ×ÏcÒ_™OÀ@'ÆÂ6çB4vu‰‹ÙmÒÒ™ÖѤΚwiù°¡0݃7â©J 3`³K}WtaõlMõŒpõS ò=NýçbIæK¢¡ s…c†Cœ^8>˜££çþç½ â‹|²Ü¥ˆøU—·mˆ”ÉÜ–­Bøåv†ŸppåfÁ•†VJ&ÍŽ|²˜m&·6è`Ä÷ù2Ï/ðŒZz0u qrÅÀ_ˆ³/¨.¶*ÓÝÌyäˆ9µ`Ø,ŸC†¥¾b)™D\âïç%ùšØëG—ÒˆëáßÅïÑmü„ Qníù}ok¶lè‘çfzù ­HÜ?âׯÇóxú·ø¾¢xvþ÷î˜ä aû]®P€â#žFß“Ü'߇fã×ÿ¾Üdb…Š4>Ÿo6jÌGÕ fbþ¹ÂwÊz­nxE3æú“ÿ‡óãÊIÕ»Œ GþÇÀ_óù’)vۊדf‹¿ã‚øBæÜ}+K÷äõ÷fñˆÓÆyqçžËû_¦'öâÌ|¾\Ï žìâX²ßõK·÷YàÆMõFåüê›õ^ÿhn'êŸè?ZÇêï÷¿ö+Èn?Øß¥c¿ŸÌ¼PÅ~^Uû}ìwÕ?“õi×Üæ|4ïp>×þÊpkqk¿"ã<·SïÆ|­~+ͼ›½æ.ÞÈÿÖ»I•ùˆ8=õåš§òRœ¿¦T…LqÛ—æ 7 "‘õbè%Q}–“ùex[’éøÃ ñðóq¾&[dØôEÌ~}ðùžÜGãþU†¶åoÛήƒçïò¸+åŒÛ1N›|_†™ ƒçÅiâbÀ1¾_ùŸ}›ž.åÿYß,òDP¿tìwÕï BýÒÿ·zgAN÷×?…õOñù[yÞJ~±òüV_÷ïó?x[Ùõsäû¨/kQ=ÙqðÇùÀýÞ©‡Ý@ß ï„&: œ®ÿã÷­Öê¼/×|‰—Æyâ¨×ó?„¢#¦~SÓ}7ñþ/æëýŒ|>¶âÂ|?‡Îƒºð÷ç|Àù[xB\Pÿ_2 DC>öã*"ê„||ìW+‚TîÖÑç$þðØ vÆÆ#Pïo¨îA½“]¿ò}WêÏÕ¹¿·úˆ4ƒjÕ÷«5ø{,Ç“çƒt2 PRŒõ|öù°•ÿ§îñ>4­ÏüߘO(„“*×{˜Ôùt}Îü¿˜ÿÛ9XÏü,Ö¯‡·™y`}”ZáIWðfèD¾‡À9’ùÆ7|=Ì'Žz)É1¾pà-âjs޼ÞÏp#&Ÿ*o~ ÿiÀš‰# ƒ ñ/›kb[Òõ͉Yÿ$ß·€ïTßÇ€ŸdëGÊ)ʸ~¥Ï²áÄÜØ%þá}©ñ¾äûÔäþf> bó}öy0xKÎ÷™qý…ÿ¯ÛÍŸç+ëßÁ…Š|O^²Ïƒ,«]ç#&¾ÙA„‰Î‰7ñ£úÇ}¡*ÿG½±ï‹ñ;oó?xLÀËÀWãüòõV¾Þ<УÀ‹˜ïy>7¡!öy€û²øûrùýÃxQÈÿwtZ\ºïqÿ¥iêCË8)Ÿ“7Ri®ÓºX÷ƒ4ÙÀ+ëσŸNæ¿O›xôžé÷û¿ó~[ªöÿ"~ yèÌõ”YÐÙïïxhC¬ú÷Fg>íâ§Ç$2óù+s†µªþ_ä/ãy[ÜY¯\Ïáúù¥›;˜¯†f‚ÈãE½Ÿþ9äÀˆŸàù[ƒøÃ&~ž©'Ýh¶ývßz»OýyÞ ï91~¯%¼‡¢4ø¾ªxïÛwøkÂß&Íåã÷X_¬ï‹ë÷Áz3˜õ×»æŸc OÓˆ³û_úüCýüýþ/Ê÷Eû?+Ÿ¸ÿ¨zŸ&¾«»Þi˱ðg¿/S÷_ïÿÀçê4þܯïÜ¿ ؼ!K³4ÞŸL-I<ŠÇP¿û~ÀÆ(~÷g„? ÿýf¾YÖ´ÛÌÿóÎúcP<òëŸÕx[îç‚uñôh ‰ßÃ÷3Õ§ä÷S:¨Õi¼Bõ”yŸ ¼Uäÿ;çof}>¨× êÚ‰™¯ ûëÉý®¡ûÂÛ4JnýéwÍòöþÔÊ~Áôù>wü>ýNÿæFªï©5ðœÓÿe\O¿—õÍ8õúÁîo•ôôÏý¢Øž£ñ~]˜¯ôM6Ýÿ…mšÝ:ñ´2UoöF;÷7ë§füsÕç<¹¡ï2˜$¬ÃýÝ4¿‰ù-ݟμÖ;ÿ‡ò\¸vrFzøü þhòÙ¶ê©ÔwßÑÿÎè¯5zzÿ |!'éq-ðŸ}ð~â=Ãq¼”ûþ“oë‘~¾m¢›‰ÝÁŸÿÿâ ó¹ÿ?Îç™õŽî+™ƒt8Äý/¾tîpðý×çIrþg<ïà?hE}þò?ñâÍÑÏ-¬ï—ò½ø?{üŽUßs¦,ß@¾Åyâû@øC”~ßã?ç!ubÛ0^Sªë}õXÏO÷w÷á-ÆËŸoâ?æa½‹êÓ¶ŒG\ÑÁ¨ÔQB=8…ÿñXÏLß_·ûWýüŒ÷xýñ<ætñ}QŽó¼§;6n™ “±ß‘¢>G}¨üõig¾&guò§šß‡N¼¨qÿDýšžÊ¿¬ÿ‡ù¨‡4}Eïˆøù?i˜5Œï/âo¼ÿ¦åót8.âû,âwfÇ‹ýœêù^ÔÿùþÓô×þ̰—ø±Ý0΃¢üß Îƒfü¿±ßK° þFÄ2I‡p)ú½Cù?ðˆ´Ÿ~À~‹¯ð߸žËøOe,~geÿ|8ÿ?ü·Cvæùq†,ñ$MYÁkk>]"ß냽ÿ1Ï…ü=Yÿ,åóÂþ¯ø;›xš,£pßoîÿ.žõðÝ2ëáúGñ•õïà;Šßóó ¯IÎç<êùþðA_”qu½Ÿ~ÝÍà?ús}›ÿ óO"~•›ð¶¤ú³‘ïP¶ëyö#Ëzú¹“1û-Jâïu?hÄë²êOúvž~ðúù£©ÿòð•ë©gÈçIž^q½sêÖ7þ£zÇügà⯂oùì’¾càÅÁ—¥ÛÄðaóu¸¿!ä<™ñd}#­¾ø<ó| ·6ùÓSõÇ2ãïÉ?߉÷} ÿ,‰ý,´eh˜º;xÑ[j/¸ßÄþ•”uv=ÃþK ¢%Üw³=Uí³©ú˜ÑxÉ¥Ú?_®ÿļdËÂqyÂ6=bòÏ'ù›YõtžÌ÷YrpãsùÂå ûÌø{Ö¯Ê-›2Yïæy‰ÿS@´ÅzP˜‡ú¶'ežAü€øe!_¨h¶Ò¿‡Õ¿¯ûïa÷ÜÛ«¸_”ý£ïùŸ…ë7–æ/"ßÄ\7ñ³Äõ.^?ò©²ñ乸¾Yü•ø{d=¿à³1û™ qž_Á?[Êñ“åsKx¦»/lç9µø—É)nåòUØ6›š„i”0œòóp?öž¯žhS›‰[©¡~„Êû8gac»'ÚØ 积۱µ%A/ž§^UÜ &¾/ûÞs{3_Ê;pÁ¹ˆ¼Ã?Ü›œ'ïQ²zËæÑò.Ùsý<_ßú.ó8×cr/âK¸3 Ú–ófž›<Â)óÄ¿¿%Í©ç‰{a³žA¦G,â¢Ï÷OS÷†‰ ÏøþìÏQwöK¼sZççÀ¼³ÈƒEä¡%[Q^QŸk;Ï݇AJo}® <“A܇˜?ó†¿Ïû™¸Lï„EÀipÎNò¢]§Gs4«‡˜÷öå'qºlžÜÄ@^ÄìKŽÿ!<eý³êÊ)!ÂÌ{S1Ζq!yÞ‡’™Ç·ÎÕç}`]ÏZàÙû_<•¬ý?Ä[¼sï-¨ãÃ`8ï7ÆUy¼Öwó~~Ö—sI9 g˜Û<-õp£´\GeânóÓ¼ì—ë¿1‡EWî×òoèL+ùn´Û§$“Ãçµ™¦f"|þS”ŽJ#¸i;ƒÑ½i-òøôõÍ铯Î÷y¿)ïÓßõòþTžï´#ÏžßÊäý½~Ç¡“ý<¿ø¼”¦1ïßÑW.´+§ Â⨫ûµ‚޹ZT–ƒµàßÅÈëYŠÌ¥ùyÖûQM|ñ¶ÿØ\û%ÿ½ AþÈÉy‡÷£Ô½ÏÅ'œâ{NÌŠOHŠÓxð…ÈC“çF;õeç¹²Þ“Æ'¾ð÷y_y˜úlOžV}xò8Ç¥Ÿ<¯ß£³^•îGeá~XÖßOÞwYïå#¾–wâ¾õ`WÞ¬'“óNWžŸ®7Åu½™”÷]oVžšWʸ¯½âR/õ ®ô ô¤2iý?Œ7ö'u .ÂÙü°ˆÏôü&ö;ùãú½:ù)vÕ.˜?ÏæOÂõ¶ þÀWúrýÇf¿m+ž»•y›ýrˆÈë¾OE]“³ëøxŸó¹[8¿¡s a îùýÜ-Ÿtæ¾­÷!>=îKÛï¹Ù±­§„7Íiƒ  Í¥9Õzܘñš:‘pu@ˆ!.¯4Ç%½ªVìOž“pžÑY¿§ =‡©>‘Ç'óªl#¦ÿÄÌûàF,Ü¿@Ç€eéœsÒ§€A÷év}<¸gßÃ0y>+ÞgÍ–¨%³Z¸à‰sÄqôåë¸4ç; d„}]´ïƒž“óþÙǼ§>û¼ÿóžË<öµž±t#7ç–¤ƒyå¾Õ<‡¢z“ç*w~/9«äñï“ì­6Ó^“¸Ná\Ìöý+êÍà…5ÕŸÑgüÌþõæ ®°•÷£ï•‹çì”÷eðŽ+”ß±x…‰}ƒ¬ç|pn°Þ,Ä1>ö©¿¯÷‘‡³tØW@\´žúœ:’™²ºŒ;爴¾hÐä*màlsLç> ÷ã Þ0¶q2èýÅ~튽ÿã\Èú½£JÌÛݸ[â~g_k’'—›x%Zàn:'°wKWÎ]Z–Ϥëî†3]EnÐ §Ì3£À­Z”zCákm§Zt¾JÎi› 婆V8l®ÿ¡+zJ‘—COi6⃙ýûˆÕ¿Å¿*ÎiÜ&ôÀæ0¿ðܘ®ïшÏ9ïÞ0ø±þóï;¾ˆ…õøé‡y:ý‘§Óïz¿çßõþïy¿ùyòáJã|E·="Cß™¯^‰x0h?ˆQ?vßcÉßÉÍ8àcŸ/ÇQßç¢ù:ÿ}užÉà7äæy/ò‡néGHÀ1Ÿƒ<“‰gå é‘4ã ½¿×óÙ|7=y‡˜îó÷Èœ7-ãRePŸxðϯúÐ8Oáz§sŸâóªGÙ/ÌE|þ‰ÿ=±þÉ8øBU¿ß ‘Û§ù„ï÷Ì?ÄÿºïF½o?X܇;~òõ ùÿÅú%|߈÷ßÒe¹U ñ™‹|È!$5ˆï_™oY…uMå|pžÍsØ8ðý~î[Â÷ÿ:‡|_çðƒï[o©×§®ºïGfŸ¼.¢H§*7¾?4ܲåOk—lôFçxš€>äøª¸+èâá+ÑÍv‰Wy˜õ{Êû®ÏÇïOóôñzó–)(U§çXýuçòó˜ó Ô:”÷C¯v ?¿3LæqòJ çè Æ{éÖœÜÁ¨«1î ü؉øf1žœ˜—¶ñæEo¿£a£ßÛóë‘]UÏÞ™=ç2Á£Á{2w¾7ӸΠó‚fg½¤ËdÄ¡ûpÍ'´ì3‡Ò~ã<½ý±ž6õÎSÞ/œgé÷Z:¦þ~±ÌW§@ !—¾Tßãû¨ï;ç·Ù×-ÆÉ‚g•›ëûÆõ•9ú¼ŒîPØ'&¯arNÏ>©è³¯ûÁì?ãlmþ^«¼ÛÁ\€³¸¾ñ £ÁËýMÞCѹ.w|%ï|^ÉûcS'cËïfâ\Á}èÜwu_rE÷Û–~ÇݸP!Owù¾›y+>w+ïWxUü‚ë–Á³Öݘ4(`g<~À>²Ü(T#Ñ7Ÿ¯%™2fm´H›ëµïùœ¡£ÙºÙ“óè¿ ƒ^À}|înâtÝý0Ü×ÞúcèÇœþ؉ïôÕ7æË¦å6t‰f5¾öú¬"%ì.NNqŸv#9¸ÓNMžEW—(eJwtP¹Ä£-äëTé WÄå*¼¯r@Mø§ú²ÔÁ8}¬J¾ÉyO¤Ã·O½É÷(¹¯8Ég¸“ww!Oðà˵¾á›+ñ=(š“p_ñàîpî¹<¶ûŠ:G¦çxû|òؼ#]6¶Ø Í´çù•G>ϯÜ'×çýð§2ë{×ûu¾ñÈÙ@O|kýq. óát|Ô!ýuúäæóŒ÷>úJž«›æ·%ÖóÉuPJo÷Å~VÒ9œ“|¡tpê*µ:(ðó?d屯%üv½–ÿôboˆ´M$l>Ó>Z[FRÀãDx‘Ç™õéa¯Äç1ö÷ƒ83O³žé˜‡þÿ/ø>•ø=ßîDÞg=Ù3?¯âvœç‘çÉóì™ç@¾4?Gsyá0Ú÷š‡p×çãä¾Ûx}e^9¸øÎÓï „*€';ïdò¡/ñq €¯³3,Ä— ÷íÐ},9Iž>×á±±~zx ~¡¾Ÿª7ÍŸ¸âGD}ÜðÅ¿¿Ð` ¾\˜]œJ6—[œ?ÏšÇBLß-úvÒ@Ÿc~jQßÖ÷—²ÐŒøN¥wÞg±L?ˆçrû•¾Ä§ê˼fæ¥W\¸ßyÎv Ú¡Îá縧Çß³þìô[ûô ^C¬Wô?’ü.#|>i> ,òí“}ÆiY¿}—„’²ù3ø½&bÚº.ãDL¿ E= ´?á„ß®?Iò¯ù#9ˆ7’Õ鋸‚ë"ê'#_=_ˆWp^‹^)à‘Wý•ßw…¿_<«.?®G”kÞF•ÙÚc¨—oik lÿxtþº¯PÊbøæŸ&zyq_s=·HA-¸|A·°á.[8F¡€Jü›è›ÓA¼([ºH…ç@Ùj]À$ýÿƒ}Dà C2úy£‹¹â“³¨3•¦ü Ãt`ŸkŸbÝà×çGåóšøyž9ïgIý”Ásy_Ïþ¤ã’nd¬Wœ£i?^èq¿ý üÒp.d­wcÞ ¯Rä…x:O%æ)ÎÅ.³"¦•u×q®\áóŒ×€í¹þÊÛòÏ ÿ-}NÜg€(¥çw>ßõ¼îÇÅ>¼ÈcEçòÀ~Œ¼s-ïG=žû[ãÜUë?SGb±~OªH ýÒ³ëc¬?¯å¼¿¿qŸøÌCýû¿ÿÞÿáÿ7¤;û¿-ŸËÚÿõ÷þoû÷þGü¾ÿÛûÜÛÿЩûÓOÈØB_,„D•â¡uL7ö9¿¦&HP¶"|?%N*ˆH‰„ïO÷”oó>ŒÎ mn"ïc>çýÌ0ÀyŸïq0ÏóDë°‹Œ¸žsbòœØÊû¯ß5b}ކPÄéN½ 8“§Èzs˜y<ðÈ\ÞòLäýì}½è®ó?ö}ô¹²ý‚—|`¥‡S¨§þß—ææÄŸ*ô»Šzó žíýëmvÜsÑ?©Ž™§x¯íûÞú$Ô¬¤ù³ÞìÄåê|dä?" s©­»« ´(aR<Ñ„åWXRº§€ßÖúÃô¦µƒøª4þÔýrßÌeÇ>§NO_°PÎô_Ĺ¢>QŒ ‡T£Þ1¾¯Ë76#‘–-áˆ+ë©:ßî{\øsÂøíâè{$Í鯾F~®,4r#¿'×ù›ç-ýTu†Óô= usüý¹·5Æå ¾Üá=ù—ýÜÝÕýÿ"Þ¬wØWì‹ï‰ûçÔ-N‘õ|â=­»îÇÜP?â×½îFßÉÇ%®!dŒu+åÌU«9,)M¿£G!IFÔÈ8 °²±e¸ÑyÛ•‚wî·¥£îÂþ€ýYÄø¯÷áÏéÓÝëø!?ÌÞx>H_¥ð~‹}Ÿô÷ûžûŠzEe_òçŠ|?‰`Pu9ëxÕù¾ÞÉù›ú;Æ 3ß«íÄÄ ˆï žrÖܲﷹ|š¯ÿ¶ÎÁ¿7ö!õF%¾à~ì(¾ß2ÿÌûi•ÞæÈ쳘ï6 ëHë«ð˜qoðç™uÕ%|ú¶g)HÞmÈý©Ð½g˜…‹Z‡;Û¦©³˜bUWÝ8C×ü³õ ßîgŸWÆ]õý`|ÏŒ{~2î¼£ó÷àdÁ«}pú•ºÿpÎÛäû×9Ÿõ¼ðülŽþ³9߹߯=?ÎϱÈ{Œ8³Î$.ÐQG¢þuG‚®`œ ²îLÎKqžNë‘wê éÏ"¯~ÿ ƒëÊšþÆ5NÃßg{½…kæ_yÿÁ5÷kv¯ÿâß_éã °aýYï—Û<ËD<>7Kæ,ÿk½á:}ûyáù‹¸Ñ~Î Ô?ê÷ý=®ÃKiјb’ܧXâ Š M&äó$änj¤¤²ŸT·T(Í.eæ„(ý”‚Ð} Ïï(Ì"/wôú`^¯Ú'ú)8Öxà`®“ ßîÓx?®Ï½u¿q–^œ3|„¿ß÷Á¯ÉÍyçO‚„QŸhßR/Æü‹ˆUßtßo£o››ïÇœ̾÷,ô•rŸxwßî{ ¢.Gq4ë1ïÊy Müß×}v*nÌózOŠÏÎ ŸÈ;Cß—˜×>èHÿ‡{–ú€¿êMá©ïyü<~\Þózw^Ÿîãþ>Å÷¬À÷·»“w:õ§POrý×zëÜ<çðk½'ן:|ÔŸ^ßÌõgŸ}G;y òЭý|š´8ç‡÷ç,‹Hê¶FÜÕûÉï‡Ö?©?÷v/>ç®îÅ'ïó¾ðA×àû~JcÞ&¾3:ëwóÕFã\gUvžÃöÝ…ç@5ž_Í;§NähìeãûÝçø‡9³oó~Šo­â!Æ”÷¯áîc8Þ½ÑMMÑ.aC¼‰m:æeÃ=lLŸôs¿ÇwVäõ¥>n‡Ðsíƒõ»t"ë^Küƒ~bhEg=?‰ÿÊ긽?÷¾ø¼ôï¯ìûŽ}ß§ëMÖ'ÙxêOÞ»ßø"ó÷¾ù÷¾×ógßoóbž1çKþOÂ%æ¾~¾3įÁçÚ§®?×—›}DëäuéÞéß œs ή7+ëŸþÁßâ;ÛôއB>ÚÓÌujÍCXHšm˜˜è K6ðál%Îx£ê3( ãÏOøÈ·øKq·Æ¾Éèû`ŸRgÿ*à˜ÖÑo ï ÷}^¬Þ|wß žW¿”ï«ó{=ç­êôS·s_—³ïyÞÎö;^ç¼MϾv﹄B_Ÿ8oïÔù³_»“y;ªšöéú…Ï,ß[O«Qïñ<_ê[¿¼wò‹ïÅù{sß7å÷ÂçˉâìçÛ þ³•ïñ¼á)»ÃÓ7¾uÁ©¸«.O¬ —ëúÊ}|x<ø|ò½uj}ðà÷Ò÷Ž8x¹Ò ý¾ÎÄçkS£þ-ûR£·¬æ‰dÍ»¹îIì×&óL2ññJ0ˆ_§ô&À#aþÿà—ým¾ïôo‘ÝMAuÔ¬K_mzø?*™a­_p–Ø P;·Í^^•Ý ¨x…îôo3Fã…ßÿP'Ÿ8%û6¸Lìûä|¿*òûÁûgA\†ÏÞwY´QPãá5ÄEt=ß÷÷ûçvàŒâ«Á ü)î{ú¨§éûÖ2Îvx³ƒqó{Ò„ ¹îiìçNãù¡×“æ¥yô7Þäoa÷w^w§Œu¬;þaÀ1k&Îvãšü©bžl#Ïó½zNôŽî]ÂjÓxMà:!Û×ì¹ j˜שÀuÈÏOœ>Ó…êz ¤¬ƒë“†€b¾3—UxîÎB‚iGc¸l½Wâ<¼mt ñ^‹¸²oÅ{{/~>ÿßâeŸÎýäwò–yjQ'ó*Ì;XÏ=6ø:^ ~5x›¾ÿæ“·óž¸Îq]u§U‰+Tá ½/®Æ+;ëšf|yß·Þ{Ç\ ø8Þ÷àët?¯}oRãùãŽÞ üŒç?cJn³B/yè6n4cG(33°‹‡õ)^÷| ªõëd¾¯P¤Ôâ?ôºÈ E½ïC§(p]Œ½½öÍ„`iíò¹.“÷®®¹ˆ2Q…ýE>ñúGöIÿâïCo׫ñýWð牘s+}]Ò9màëº uÏf/åÄÊ.¯{Á¯Bí‘ ‚ø˜,að#åX÷uçV„ Aõèwú¶±¯Š¸ö.?›@3lFȃž DÌzqWçù>†ÎøDLäd‚€YûÁmêŸîü³@ô¯½Ü™ƒ+ ‚-£s|»DÞÀÚÉmÍoÁªÃ­ÞJÆ?bHÒ:~í¥±ØÙ‰oNQß” b¬;¼À¯ÏkÿÕ¥ûlEÃ-쥈¿Wö¡ê‰ˆ†¯Õ¾Ä…Òó_[™wÂÍqàiÕMé @¥Ú׿¯÷{€4ŠmD1ò §]Z_]þ*Õ†zξŠ÷™”ÐZª¨+­Ë‡èT5òù+ì¿…¼Â¾ÉâïÐÍCý;þ‘ÚÛþöýÊûèží÷cº_­÷çðâõ~}Ô'ûvÝ™ªä¬+dóGµ{7²â0§²¢I1ìE¢¿x9’Óדo´–¯è¸õ/nä™Äü½²Ö=ú%]ºo±ŽqNv%ÁB!ªX7îçˆ7âæ¼4ËÛç <‡ˆÉsˆuçó×ÎÕ×ï>ºl»+t‹†;‰~¸b¬¸”Ë|Qp蟊w¸ÇĦbeb©N÷NFýt.}¿ß+ÏÕTu®F£»~ )bîwâ«qŽòw öA ìÿõ¿ýNÔ5xx¿wÆtɾÍïèoE:]„»DØ£_¯íð°Õ}Ü3C8B2¯r–™f&XÎNíK‚¡ñ¬+ù};ŸÿÊïìÏpÇ Oç÷„˜ÿœJð¹d>‡~Y¥ïÿ>ê!ëNÆ÷G½T?òÖ¿Í3ÐÉ’ý‡-tAR¶ësFÚ9&o ‡ðtÈ…0BEqX1œÒ/CBºµbà`”;sV¨_ëÊq’ÄqïÒµ-ÔÏA]™´ß;ëÆîý?·¡ççfÞÚÿÑWì[¸ÂBƒ4â;þL‚i.e?L÷+BªVTL[ ‘+7ÍPΫ4õ¢Já0¨ú*þmEžÉþªŽu¿Â÷F=­|î:²³þž¿êHYE^ >àÉ×3³å6¡÷€üíú=~×nÎuø#îw|ÑQ½ûAøªw‡u\BVpà\MÚѯÝ4ìI\YGß›ÐëTCóphÐLÂ%Cxà•ú}q‹Öë4ž{PÜg»óõâŸzf#>ð>¸¹¹@¨8{ÝcΪ×;ý¨BâÙ´eŠýúß1¦ÞVÒ¾‡Ì#¡Wäwfÿ[„„:ØK¡ óû+ÝGc.)¿óÓ+z™¥0ÏÔJ_ŽRÀ[ŒEm¡>JT¯¼¯VþNuˆ¯R3ó½yŠ4ÖÁ+ŒÿmÂŒ,Ü@EwÇ=Åçj¤0Ù5 /÷J;˜~Ãå<ğDZÅXóhRP®PÕÅÐGù¤ïü}=x9ó/÷;ò†ýµ)0Š{ÿ¹¯fÖëg¿3¯œý>Xgr {á8B½Sœgøù‡:øûü¾ hKPYÏ4_…P.Œîc¶ëåè'Ý#lNèQ‰1…³aź·üö3”;|§X·Ð Y}œ‰‹GÄÉëyb$×ìö)þØ_uâÖ¹ó:lëw㹬ùkÔÛñ}î}ÿŸÉ‘XRÒ~ç^rÁ_>S|«zÕÈc:û£§0º”+ÒÆ*J0£]šßœ“|ÓBŽˆãfªL4b²×½hÿWÿ¬g„›‘L,×=×÷¿ÇPGº…ϸ¬®ßJrVSGžÙMT#SpÈïõS#€í”¨TÉ¿ÍUÊkL÷¯̬—ê™Â:±VêTD|¤ÚT'œ+ÈÏ[ù¼3Ÿ3ÿS5XS>{U•ŽLäsÔï‚õJ¡n~—üVÆ ¼ä²Ò.©ðûSÀ®ö@Ç<çp°âÕý…µÁ—ö{Ôóû}=Ó·ëÄŸ÷|<Ï ž* &^Ò·zGqðœè×vŸ£+70ž¹ø»õvGIÇÎUˆymR¤„kø3 ™1º4Ò¸¹F70jò¨~+˜ù¬PõpÃí Ïà­~÷¹ª{Ñtž¿ðöÏõûÁgT¿{Ý×ûïB½¯Ê¶àuÿsHΫCxÒdæR2Gc¨|ÈÃ"‰ ®iõÃËÅ> ÍƧùŸÏ} éf#ÿò\$»dBªvëùLúmtç•ɹØî¼C_ÐÚ§yÒ‰õ‹ù~±ßßáó©oÂg2ÚÃ݃ì›Q" ,‰! ¶_›w,•Ĉ!†v¡æð…/acôOzßæ÷É|\Å.ô%¬M¸.… «}²‘Ï™Ÿ…σx¯;O#êÍÇçüßFŸº·˜þXu|Ú7ßîwè÷,þjÅŠ¿ƒæøŒ K”³ßwÿöüö0¤¬ž¯‚PùÎöß×3œ÷Iýmú™Ä~Ÿ® §pâ­úeG`†V À'ÕËó¼ G;}>Å·ÎÕÄ1 ב¸ Ÿ«m¿r0tÛe¥Ú~~x íWÜ_8„™ý×ø4Ÿ×¼«ëžþ÷u¿“ßáû2ŠäF+òר®gFÀoCdòJwžÑ¥¤[—þ f%_n^µ¹ÑXùS=ðýºc> v²Ä#7ñÈâýÞ„Ç»~G}"—?ü‰ùÚù=xó}Y/ñ~»žûjâïðø}ý÷Õ­þêÍYH$%º¡™ûŒpRwÁ¢˜Y'LhÏ¢ cBÃÓ–X7êwäë£ÿ¡üÜô// Tû8¡~g}N½$`¢¯9ô|æy@ÞeÁÆÇ })ßÇ}õ³Ô¨ß7^ÿS¿34ãõ¿.Âáúô‚d|fãÓíûêëpö¨@´G“@fÐ:êyunÔ‘m÷UýÎý[ŒŸ«/7Ý×sÝè~“ëù_õ~ðÈÅz¾9Ï â™éŠþxøW(¿w¬ìÁ ªÐÊ_„™ÓPEBzƒšíi·b’yXü[ ‘ö GýëÎ{Ó¨^÷òŽ·ëtúÖgÝóŸ÷¨ú{݇y“8q=ëÎ{Óž*‡ÆØÿ—¢{ $o®ßK{ã`ä’Šnë'v´ºQˆ`¬v«¯ÝÔçÈì÷öÇ~ì÷ôǺ?ö{ÿ½ßë|ßïퟠPX•äjpÂÂcª$ohdOógØ}†ãB\ w:|r%Ö3.—Ƹ¤sSyOª[ºUùÙç`%µ®·þªø5ûw,|þéǺŸšYï“ÇT·ñ™+úB±£h-}h¿'!bâ¡Ñ:ìP«~¥ KátQ³á¡Š xؘ³l•7ü;ßï™|™î>ŸyuçþÉ:ñà™÷Ó~ö»pƒ³ß¹ÿÏ}Uý«|ö;óΕ¹cÔïh!¥ƒã :|TNìhŠØŸú}¹¡ªú½ý®ßó?ð;„"´¤#ú>#l«žY‰ü˜õà3•ù~û\Mœ³™¸Ù8y‰8Ar9Ç®°@ü©ý£¿Ó8WÉK]¿y©^JæŠêr^¼T¯{Fb©~øWñƒ%&oGc‹-”;÷¦E]Él|†¾à4EÝqò½©åwÜ ~œËæà¼ØÏù ügºïQÙ÷HWô=BGŽ‹ªÝªiEäèþÏ0ù:CÁ`únrB1dððLd°õ¦Š„×g¾ÄK-ØÈ@.²ñÖïÓýÕÊú»¼]øÌtœÿÀgˆÇóù>ÃøÁgnáâï·ý¾ü]|àƒ0±8íˆì:R|`÷›ÈfÑÙ°aFÿä›þøƒõÆ~ÇßûÃÓÓçÙõ:ú©Ý¼<õ[ûÃ/C?Öº‹î×Vóÿù4å’ï{ƒÀUØ×`þ 64@#fg»ÑOªÙl«ö4ùdñúO¶„wü}Ì]ZÛ/¾?ô…šþ÷VŽ¿F|§É G‹,FÿSÀZÝš‹\“S¶Ë~¨“òâ D>ƒÓïwñy y¡NjU>Çä#¯;ëºMFx•Ê*°‘ËZϘÿnÝü‡c½§³yø7_O9ƒxký+cý º–­]Ò§ßðÇhµÑ_"â¼Sfþ˜óÜ ¼êVÅÀ}‹9EáÝV탴±ZõÕ†Îr³ßÜ_¯Gw.|xзDAÐÞ|Ž:ýòŠp¿ÊùøyeÇôÓ`/óèð™áóÔ*â‹ hŠøÎœ1ßÏV–}hqŒ¸ÐcXˆí;ëY$:ˆx!–OU‹R¢Åÿ¾®¿YÞb]•˜ãŠõOŸtÆ¿ÝÿÔÍn]¾<‘/¸ßé¯Ü óÇ¡ðÑר5_mOL¹Ã öäýŸ“ÒóS½3‡û÷õþ!ÐÿOä ùêP £Nù¹/9D¾á<ìZÎGü}6eâyêømúxÖ)_¤|ß '†ÁXØ“õ"âjè¶ePóѰ±,O©™í Ú{l#NÈV ÆÄß ¥m;7±Ì0Ëðú=»|¯näŸë7H˜ˆõ\_ú„Sæúžßƒù(Ÿ|”oöÉ?Ÿ×_ù§I”ÂßÈgw7ÄúÒ‡¹ÐÅùËóÄAœ‡*Ï÷¥îAy?ߟù\…'Ïn&rÌ‹·}§?_*îo\Tò‚ u«êŸæ…ý¿ý ÀV»ÏcX󼯀þ¾ëïC)ž,Æcã}»âKU©£Œü “s¹ðQ.Î牾¾Sù¾ÉgÍù¿Ñw™ï ‰sðYNúûøýŠë§ƒæð‡¿ãÜèVºæŽå[/‰o ¦_LæÚŠ}²Œi#ÿS_¥a çAR¾¿¤²ìsÅF{ãù#f±?IðsýèR¿á^ÿLqmpÃùàz¨³Þ,~>ôšüv#ÿ'¾?DZåûrÍ—m9ÿo䟵¸_·tÉOû.æóîý½ £Z…Ïã<éx¾û<èÌ÷ÈŸ8ßÁw(¤¶cëŸ`«3N~Ó‡¤Ù×=¡°ÉM8GÄQ/=ñþãy)áû蜟zþ5¿°þÏõ/ÿÇý‹:-uͧe\«óNbjÄÄ“3 Ó–¬×1€q·îAœ'éM·8üR“Îè(dÄίoó?ëMÊÒ’àš¹þÉ+Ô/ë­9ÅûB5ó¸ðý8SÇ‘_Ú’¨tEá¿G7Ì÷·ž.ù5,\Dc?&çÿÎze8ë|à|÷}<ù~°Þ9ç3e›ç~"Æy!¿´L?¯VÅi¿‘ÿC?´¢¬býçoà¢oçr¾gýÏõìÍ~À„9¸?à¢|/?àáü¯Ï¯ôË‘ÿ ò9õµ ñˆ×¯ü¯óè-ßË_œ åEýFÜ*ò»üÊ!h1uiáÒʾÅ)ÜŸêcþoÌÿdi7œâŸ9þÀúç È8?ºÐü·û²ó¿êUÁïOçûñ÷õ'ÏÇ:I´@ýXYïLåë0<«²)‹üŽ|/:(bÞŸ©›¸y¾žúhKQµ»þ¬Úþ¨Çümþ§VÛ2dN ­FLü'j‹ß‡Ør‚x=ð ­8tI›òg¥Q#òÕÐßoæÖOOü¡÷%þ–'ýÝ ëèàÈÞù;Óÿ‘ºŽ…=|N}Túœ>ºhô<º9“q±nŽ|Wë9ªÊúe ‰i¡WÜÏ›ÿyŸÄç†éfƒxÐ0… ŸÜÖàÝü=Ïý!ð‡ž.ù£þÚÂöó̾O½ßŸ|?Ö<ÔþÃ÷aÃO5â’|ÿêÀ{˜Ï6Þ߈ïÌå“À%_á?Œ›óyèæ>1€ÜºâJŸešUõÁû߇>O½ï8üåKÿÔ¯ø6ÿ—¸¸Cü³áþùYù¿E¡qsýß…ù<^Äû.}Çãût@¨q qÉÄßîðÀ¿ý8Ü`ìܝӸNÓýÕãQõO9HÖ£ÙõMáþWýŸ™ÿí_÷~ÿ•>cìOÜG; ±7ówéÚωûü¸a¯ƒ¾ØŒ§÷¿Þƒ?TÄù§ù|Äþ^Öˆüm">õ¥ð¶lµ•Ðmªq[ˆ‰Ÿúüµü“ï_å“ÿÍ÷ë?‰ïÀÿæž— `ýËëŸÿXÿùÇú×ßëO=¢gýÓ„Ïøçðúÿïø§f˜?âŸëàÿÄ?™¿ÞðÏ;õ?ØBª_èKŽû®} _÷ƒÍõ§Ogè°ñùäz¾±_@_È¥õîÏß·ú‰ïS|?ã}…ÞéwQ«Ê@Cܪóy¬g¿5ò}a?`»Py˜ÿ©¸/pd¥ÈÀý¡«þŸŠ¯Õÿõ;î¿ñbõFü¦¨ž¬ÿ¹ßL"&þ@`oüg³_ ~@åý`?Ç÷'œüX¾ÝÿøïáZÒ½ÿÓ¾ÙŠãdüg¶·~ÖÛûPç+2™ˆp­9øg~ºƒÿâ3“|àŸ¼ÿR'}á†ûë}Œ”¡^*Š…©>꬟¤1ü“ýËîÿ^Ò%ÊÌ/ÀÈ?çú†—‘:øàiä=x[í<G?²¯ƒ$ÀƒçUõ—5ü÷ëŸ'ÔŸKç­úéñ{ä?ðeü^M>KÔnœâóƒ¿ýÉ(|Ís‰ÈG•x÷ú‡z¯mS÷ý‘õÔ'•@!î_¦>LþÅtKxû3÷µenðÒýôkbý»fFoæÿõ;ÿk=Ÿü?~çâoù¿:ÿ³žb¾YÄ3<÷‰ï_ü=®œ¿îÇnú Tú¥¼õwO?wºþW¿wø<@?XCY8?xÐóÀ##.ÎÿÑï/ãÎüg¦bgÔãðAC¡ÀzëÝ:ó…~o4šÚ{~‡ N+ò5Æ}`¾×û^âûù¾è¾Pë-]…ÃG ñçá+°¾ëçšÍãzóĬgÖáKlÔ—Ûùõ•tÕ#Æû“/õ_häˆþcuÿqýÑ,ÿßú¾ÿ~ê?šÿàþã•ú'öo»Ö?¼ŒÚIýß®ó3èGþ7ž£~$û[‰ýÝ&ý‡ø>ô 4_±ð¤ºÁßã?‘ïsaÿøM#þcü·ùŸ:Å´¡ãôbœ,ZQ˜ÿµß'ùWâáÍõnž6/<_·û“÷Ýíñ•𿺇ÿ$ªZ‹gq(d×åú}“túÁðÀy</æ{Þ^?™ï§ßŸÉzˆýÌ×û¡þÂó·ƒÙœ‹|wOþ7~Ö¡ç†þðù¾~ûǼS×?»¾FýŸï)П̯7ê¨é/õßyÑþU¿GýR4q)bY+óÉ÷•üŸÍÏ~ϲu_kº_'ý~Mùè£/×·ù?¿ßì_D\ˆwNÓ5Á™d<ÿW¿ËùªeÖ;êoWÞWpì-ßø}|0ÿþ@¼anã?ÜÏâó<øOw¾þpò¿ð‡“ÿ…?tçÿ_ü¸¸rþ&õ_Яcþ_¬×…÷7â5Òë |_üM®oÂ|N>®µlÄÆóÌW¯ý÷åçO}{‡›q‘ˆ|L?@÷•ïp>ÄÂï)lž–ø¶4T‹X’ˆ¬^±8Ýx±#Öy±q_NºÏÜà=æûJü-‘»ß7û+ËTÿÅówø>¼ÈwèÆßë!{ 7𓟿o‡ïuE·1êñÀ¨Ãòó܆ï[èo r½?Õp¼ø~,ó…Ô?çïÉ">·”Toߨÿ£ÿòÊgø÷#_gà3ωû•ñŽ“ïÍoxヶ÷ób›tÎîÿç¼¹¢›)¤ù:ÿÁy°Õol¸_¢¾7ß³ÿÙÆƒšú½õŸï/ÛüŸÿûÁ÷tþG?3ò¡þÿ/ÿ¹¿ñZ1>zò½ùÏÿÿùàŸ¼?̃ÿ0&÷Ü7®è#ÇþOä/п|eÖ;êGÇ~M¬w’ñ®úÞû¿‹/íûo'~!¾P¡yŽæ#ôÎþga’ÙoþA>IlCþKó |”÷±Bÿ±*þNÄk!f½ZÌ~Êû0 ‹ˆ7¿oñýúÈŸùrý']ËSü« "sËæ›ÌÉ~­×sˆk¹ Ÿ˜î˜xèÐÏ+ÞØïYº@£OÓ6n„e]â= °_òY"ŽS<àH qWÞˆ:Æ÷”Zðg›ŽËÛ½Œ[6¯µr.bYóéÞuËçj‹}ÁÌù~ìûöǾÿcŸ³®yÛ÷í}¿þØ÷Æ¡qŒz%ïPO/ô¥'®·zÁLÝÃ[(ô%/ªÃ"®‡7Áß}°îs£s½Û!|`r©|;n¬Ü«’îíîЄ‚ë}ß$³ œ ýY¿s.$õ'*ñ}Íy>Îõ4c'~>.áe»®äÜE! yºj¿¢NÜ~ºëÎvâõ~ðœ-ªëãï7qkšm¿½owæ^ OÝýÑ87ÿ_Ú¾i’&ÇNïS”HJ ßÝÕ1#OÐ7(3 ´Neî/0ý-Ïš®™¨þs”²ðÀ‹/X8$4Õ¤þT¸ß ß÷¡^§Õß÷{à{ž÷iÕá±Ófªßé7¶§ã÷|8ŠÒüÃY é¬ÃNå…è×pŒkw0œ›ä`[i\§ÇÒ½À¤/ÕÛ¸ý“ðÞ7õÇkÜíþHû%©Ï‹»_ýq8'Cx©e®Uñ–7½Ô÷9k¼Â¾“_{ﱟÌìg[X§¼÷Ëóxçþ2æ‘Âú¼ï=ãëÌöþRëÔùUÑ‹û¥õ­y¿ò=Æw›ˆ'Žy>æñŒy|ü²ß©¿ÌûÅóTëç<ŸLgÏû…óÚwpÔİî‹ûE>ÆkÏS% ¬:³þwïï“èÉ|­p„Ç~~Óûü[ªæ´¸ßoœ×þj¾?âíô÷gÏûÊ÷”!îûõþ_¢÷y,9¾51W÷OÄ7…ÿßñÞx­/á&Â%vøyýÇû•/ž§t>Ù=%ñû$ÿ>ƒváÁóÙòù`ð<ÇüÄŒDØMÿ&^ú‡ïÿn²07Ä»o°iÎ'»b¿çé4*ÏK™þ²Ä††›^”gî“*ã5›Þëvj^'×þzÓzaŸ0€’Éý~ÆžÞž½gÏ «æýþþ±az_Œ®£ïB*ϰ'baë<˜Û#§+Ê7öûè÷Øé'Lôkl:êv7nõ®Ó"á°ßì¦ÆÃùÁyB…ç Õgöí[ßÁÕØóðŽsåN<ôBüн¡3ʇZ¤dô7F\ÅûÇ‹uwÙûÓŸJõyûÓæïFqwå!%Ï!ÑàýÎö›¥æýýbœ°ûM®ÝôÎ[KÙyxñàwÈšwv³Ø$¨cÌ;ô·îÿd]ûHÞo’ÖýVÞóvϽßÔý ºøy©Ž}ú|å:Êìýæd^ôWâ,lbûqiÞ©¤µ®"Ž´iÍCØ8â~WÍ;»nšqbÍ3œw´ÿO<ÏiJl(Œyè;ë.óš‰;Ëy?“.nq]V³øŒ<´†~º×彿wÝrÐq~cŒëNþºŸ ˆ8Û¯V9ïá¼çå~3îÿ™Ç?†ßßlºp?ϸÀÀÁ ó¾ý>™÷¿8ÏSç‰ïàl,€iî¯xi¿ÿ^V§²Ü÷Tþ›¾¾ÛÏ3”C²É±ÉiÇÎöM~˜è ÈrÌïà]#¿§ºo0ó{Ð_Ûë+1 Xÿ`~÷ûlþü‘ÍñöeñþRþLùyÂßÉú­xÌwK#ð;HËÿœ¾”_ÞßÛëžwÒ¼óIö¼±ãQ)ù=/ô3$ùÝnš÷$¾çÙëÄåý×ñN¼ˆT¾T_§óPîjÔ”'ý:ýžÇëÓå7¨ô›¹~Bþý,<œÂw¯³šwº×YÉÏ~Ÿ¿>ïTÞ¯ÁwÓ¸ŸÂYN~À=1?j0ß-ßïÆu;hâŸ$áîoºs^‹uóÜüR}K ò½—ýû¤¹kL¬§.—ê³2ð>°.{ÿŽýÿ¥u"¡0/½O[¿¬ã¼–°ÁK¥|©¾àfˆWï÷IÓo³ÌXOWýþ/žŸF=éw›>žo¹ïøCAO½ÿ…ôoòƒÿt¿ Ï@V çý÷í±·[xÃüÊíÿYpVè^$6ⲑe¶nß~-ˆøŽü»þ™êçABÈž÷/öÕF\}¶Ù;Ñï<ÚvqhZ&˜ç—~u@ûÉM#^ïñp~H_ê/‘ 뢳p•2þíÿÞŸÀ_YýÞ÷*»™vά“¾¨÷7{žñ~§P_ç\æ åò¥¾æ“u»©)¾Â>Z8÷η8 5wÏ‹q/Å ±ñÝt ÿqå9ØþÍÖs±ýûùwx€>ïï8wFˆŠó~á<ß}>úŒ—4ç¹%û÷åOf±ŽØO—XÇȼˆ<è®_ª«è‹~¶¢ºÒ÷<¡8cö:Ú8¯3N¸?ËzÞæ=$ÅÛà—h§_"qݨʃ ê:ö›ßºÿŠ_âø–hßÿÁ¸¯Þ¼h‰îPÑɸ4Ǻjrûûw•'ÏÏíKy £qn\±»½N–XW×Ѧu4]¿¬³<ß²˜ýG·ÿÏ×8c2?~×÷îÏçý–¯´{c„"„ɺcƒï‰þmõò!/ÄÈÇP(f!×g¨#õê=Å 9¤àPZ?FÿžŸ§Òϳ’ü<»ÏáPþ"ü6~çoÚ¯~Æu#ÿ§~øu éÀwøÞöKû¾·¨ÇÄ~ÿ¬§`¾Þ¯pïï{ä7´£ž.€uïªó÷CòWO $îþú{?Gt=ѾÑâ~Ä/Ì7¿ºòûñó®eÿ2^ðMËõ{ù7™ÿvi±é½Î\•óð7îg\0ßÿß䇤_î·÷›‰õ0ÓûÓÁý(óo½¿LòaÓó+ñ•Ž ÃŸlÿò M¿æHÎßYöë$Ææ%ózö¼žé'R_Q¬ôã §8æwpÊ3mÛS²ò© ó©ªãYòÛ¯³Šw%Ÿ·Æ<ó«TOšu£Üûû„Ä ¾rÿëk¯.Ã`>òe<‡&òe}ÿ óo™¿ïûùø;¿³îªŽÏ_Œ3rž}ÿ/É>OuæO%¯ªkäýN‹ùVîä’¦Ïü8,á<ñ­y?3.qÅ$¿™ýû™÷÷òýü=q ™«¹ïåï—ýl˜çëÐý×õK8nm›qʧºۄØO@ì×cž×þ?‰n<ÿ7Œ‰W)ËŸ¾õ/žw«×§¿“ÇÙåOŒáþwÞ_¯›™çÓäû=øûe¿Ïä÷‘ìòùÍó¾â3áç\éŽÿß1³wæó LbxöYص ÷]X„‡kZ7ó^C}s—óy xXÀ¾PÙå&»_Ùï3Û—ãºô´¿¾r??]»øûÊý<û[Žiüà¥îý|è¿/µó6•Šž@e¦ßÕŸý ûMîû‡©þ0¡Ðù:öÛ$îO#_!sy¿¿ë]öº04Ϭ'ç’¿”ÇÉ~Ðûœ{9¼òœçÔÂüƒËùãò/kÿÒ¹D>ùä~¨9ïmqê|«±èGê¿ë/óg÷?$^§äþax)M÷Ã#^mžÛî¯óÁåþHqØt›ú=Îc—û©?5_Ö'>D¾¾_Ép¸à‹D>Ofÿå|ûŒƒ.öq¸¿LSFžèš~¡ <ºý•ÒŸŸß‹,<Üÿ½ßúÊ‹þë÷Ÿù8i©ïÆþý¦[ûå~F“:úŸ`Hî#F<ˆœü{àOlšý~¸M¯ì;÷ý©?0}ÂϙѼñQÌû ðïûÅ} m¸¿Yôî²ÔoAƒ>ãò ìm§ ýÎ<˜n¯ÉWê§÷Áä½/X‹i¨ûÜò~Ý—Zlícö{v]“ûýÚúÖ[ƒËMö¥¿_½ý—Ðσ¨ïRC”}¡7õ/á–0àƒ¸-ö;EþxÇaÙïjï÷™¿P*ó:U7À¿òw0Ïð¡púâsÙýÔ‡ë¦YÐ[ÆøNþxfãÉD÷ßûÃm§ÞûzyžÙçÔ|¹ïrç~óîâ@ãÐõó½yqÌô¥º]n\Ë2nFFÝ禙LÇwY΃% ΄Ótͺ"nÜpHô<³ãô«J?@aÓ_©Ú÷CùûÕóþàþP}#±ØûÃå¾3˜W²û*)ß?s]Í£Ùß½,âÝéoþN^ÉáˆõýßïïšòëäÉû7ïû¿ãaË8å…}v–úÔhž¯Öú»nñrmf𕸮eÝMXwÙèu§?¹9÷¨^ró:Û¹îÓ\W{ò÷BZ} Ÿ—qGqÑóõ~Þçû8ÏuW¸”‰€`›®¾ÿéÝ}ÿwߢ¥â'¬Ó\—ùûÜM/¿ÿZ—cÿŸÎûðMWfãÑMïùÆëÊv¨îùe¯;œëQ˜³†.òý¹.UKlí÷´ÊES©ã¥[ëw¥O>õkjOœú/ºà»\”ÇT^5ÕÏÆ-þe:.}úb ;#ëÑðÈK®JþÒ2 ¯"C»uêÕ¿Hß[ÈuÒzõ³·8 d•ÜBgm¡3ö%šÎ,-úN*[nœú[^[ÎË[ÆNš)âÇ–³÷w9å„¥TØU½ú‹S]E¹sjúmJØŸÞB,äÁ’Ý}?!Ebj«GGÌXBãE4\þrAg¦¦â uëCAà^ÖOtM̯„X¶á{*HrñçÁ©=ûþc»¶éåû ÚbÌýÂÔUuÿwkÓeW[f ðU”‚’=ú[Îc+’/Üÿ{‹î÷ù"Ýýþãy%/½®žä·•ï·RSñ¾ÓµS¼åß%ÙoúK÷{ØBdfm}2h†Pòä‘À©"ÌE‚wü2Í¥cùþt<Ÿý=éyÏ­ÏoR±ÿ|Ëÿ¾Ñkq­Ò&[ö.džšèßã’›dûá]Ãþñ›¿¿ä¥yÿýÉ{Cäo vÿtÞÇÑ|§Ü,¸øÙšg§ä̘×I[þÉP/Cì3#s _ô{•ziÈ,SA‚0-6ý›”˜?ßò4–„*,3© .Ϫ-daÉgÖµïõò–³ò=¾|P‰iötOï=‚5š.¾3ïO¾§,Ù=ÞS¿Ç][ ¿çÚòÔùIw»°E5´Æw~lГZ©ïÜÿíªI‚Êð–1EëTäRc j×”ë¦{Ý¥ëÐ6|1öµNÏ;…G8o9ËAcÞÁ* ª*³$}A fœË÷ó¸ìjØ-¥W”kú6M(}ÿ¹½¼ål¤*¾×ù¯¸0ï/ºÊšç}ºÂ–·ü]7Ùûœ¦uáãÈ›×dÙ®¶Äu`Äýç¾è7P‹ÿ‚«§ÐÕ3ì꿸zÆ/®žÄ}×Ý•qõÔ_\=×/®žLWÏw €ÙEwæ}xoàðÀ¼2'Oôø±fvxó×`´óþ…y?{Þ/{¢o^ÞèúÚ~½_ÊÐ~ ûîï ‘áyZTXäò÷þ0$°<¯oWÅXþ=¿“á\µúuàïýÞŸ¤ÅïÖGß|ñîá½çwÐÇç{ŸÚ'óÎçþH©Ÿj)€óéö­ýþâ{Ü<ïË…Ù¼· Ó.åB—só¼_9Ïï*÷óÙóРë)UÞO­o¹ø›Sø'÷ûóx?æ†Ùwz¨ÅD±+H¥ZÅç©áTÁ±Lóü®¢~„&¿1ï_ó< ¦C^Ü{Þœ÷"9æùpñs^/^wåš ”Þ÷µ.{ÝÕ¼ÿ•”*¸Úx­vuºÞ²Ï»“ÐË÷ÿ’«Í´æùá}’ 1º¿‡Eè ü”ž Ÿ¸æuÎû…®¶nWÙ†X‚¼&C*Ëï¿]ožç/ºî.¯;´»¡sì:EJÜ— b0;g¸vš]=ûþ\r%«WÛ¦¯KsýûýZ“ÛÐM¾·ÑKÀ8˜úÓvæ\Þã¿¿bõÈËŸ!ýŠ—³dWo1º[n´…¦-»²~xT*ïï¥ÑZ„!kçò± 8i)H<,/Ñ™Õ]_©š;ŽºåcË“¼Å×ÔŸ<•(Ë!KÁ=íåDÖyæ§¿?¥Â©ª:ÚÕ™åÿûx9Ç/^NOÕör†ëLSILEÿ¢—ó¯~¸Ú.v§Àý§9¢&ó—¥7×OºÄÒË-èôý¿¸å,Žºì(NÎ_B‰É¸‘Š’¼Î©:–NÝÿ¶>ïÿˆ­ Ÿ×òRÝézãïsçóUªvbv妿’Íì­OÎL'ü[ô÷ËKq§ëóò÷0ê¹ÅWEè®™YdZZô=°ºîKGÞ¾çĽÔÖꥷ€^öò3JußïÛõÉ÷¿^¿<¯8r]ç÷Z)Dï¿Ýíˆî^ŽîbfŸÞò+ºK7}Dw³I8‚º]=Šî¶wt·óFÜÑÝßTÛÿ [~F[™UÂò=ÌëÝ[~ºô™ulù³iFw—ï-ÌS[þü¹å_‹.2š•¼åÙÙ˜I]íá:`´WÑ®ˆf…ë¡1ËdDVÃǼ¥ê¯ËëH¶|~%IJ·à]ÌY[¼çÎÌ“[zåx.f»~ìbö–Ó.æ¢÷Gã¢*H1Êïº:üù– Ã.þ¢-aó“óDç_]FUý¶éÌ-©æýÉy¾y‹.ý+‹®BÛûÖ¼£û«#ì-KYÿÁe¸”Ëñ~¯æç¥u×.èŒ#Ïႎ,¢¯Ew›²/íj« ©(+P`{Þn>BÙÕé#Táó¸ü}$Ž—­?u„[¢• ú®¼ÎzJDÙJÌFÝÏ£ø›y$K¾ß…G°.þùCðÿÄ5·×>?º$rã‘ZòolùwH꺈6€,"°1ñgÄgSøøË^>\?Ê”Á*E#_šø·Ûhú°`§Òo&Î?í–å2ͱÙvoà/Â3h!Àº•êi=Þà7ÆXÖX.–o Ÿ}ËÆwà˜1±‡ž¾†DßB¤í\òùûEo|ѓϺƒ±Æì®3ÙyvîŒ=¾”VÅ4iäû.û˜Eû¬+yÿˆ-Ú·S°BÁgŸÄÙ±Ûä‰K>O}ž_I#‡ÒÇŸìãïðñwo8'Ó;›}k“¾·ä ÿ`šI¤íç¹}üö1gúüå ÊŽ|§l”ùB8 EŒ…÷³ùÀÕy¿{Lôgúf¹˜†åtÙŒ… ¾:ûŠ}Å q£Ïú+e,8€òýÅ é8À*ÛS™œøïØûG.ÓR²`~B¿9¾>(«þJ ËðþvÝmÈ—ïÿ˜}Üoûz }zß'c0ŠýÃwÄûÏ4 ûR×wÊ·PwVàë)C¾žÁ…@Õ¶HK[B©‚oi<‘ä31óפ™¿ çgyË¿ãÆÊ0Ö¿Çaâ[þÊè,9 Üã˜É‡·ð݉þ‡W9‘9èY=ôêÇÌ´ŸÔ¼¼… Z™×ï¥ÿüÍßY7»Î§yËÏhâôÌSˆ7¿Óõð™ÕpÝY ·ø­ü²å„Nmù¿µåLôÊ_Ý[NzýéÅd¥ÐYíÚ©Ìòþßü ƒœYº¿%JŸÑbTƒ«pÚ…¿N³àÿ(¤0`˜ )\@çB l˜Ÿô]Ha R|¨gøåjòò3Ú¿iaGgB¦gžô©ÏBéNÚ…Ñú}N7f« å:˜¾ˆ WNUát–ëL ±%k‹Þ\È[¹å.hT¢ÿ0` yssc%„ác¶¼ÞG„opõæû©Æy7ÂðÎ ´Ã(€«¢ ŽwÈ`+ýþ.È  Ü}§5}‚㢧Y.Ñ\“…uó£·|Tên„†@â,ú±÷ÑÛw$U\/tl}_¨°¡p^Gö ¸äÒO.Äõâ©@(<Á‹æ?¹€ ‰û]À0ìT[†¿›]0F×Rú -±w!m¾ôÞïDð↺¹³À¿`¹²7¦²7ˆD E²á™]ÈË,Xlò% žL ¤lÎI@ª¾‹ ´®u¶Mù¤ÀÙ@ûîAú˜Ý%±¡Ôw  0ƒõ»øõ+† w30R†ð: w/>b&ºzŠ€©¢!HþRtwTôâK Á°d°áÍ ¸ÖvÅ\õ“ntsÁÝbC—À1hûNÌÔÝð‰ ØyÊu¯»“÷{zÝÍóNEö†¶*œ&@Ætdeœmlþκ;³¬‘@r6¨ì0.€ëî÷ôòý\8œÐÖºÜýþoàÔKû@ŒÏF _9ñ¢"=U”͉m³Ë ÜDEñ8œó¡ÌksºÚ¯hnÀìÅÛÿKÿù;·èâI•Ùgnð²ii0Ó…ææ1èÐF@ºÔØQ¯ ÒÖJ€·"OÅ%0ÿw wóŠ÷~øÚQ•½Ÿ4@•Ç'-ÀßÖï]ÎѰ…×Ëów.Ú?ï‹æe7Þúœ§/7zîA¡îu7¤˜ùÜá‡*1 mSã?¿÷2¿+|ýÓû¯ƒÌÉy¹ûþBß pø<ªéÂFÑd•…׈+ªÏüÇÇóþÊû?€Xƒyš€lD—bÎÆéÉÙš•oh.¢‡œcÿÉÆ[Ã…ÒÓtå:ð›Â×áý'À]Iºÿ¼ËÚ™®Í~ÿ‹Çý¿~¨NMx¬ÊÈÞçà<Ñ}à:’Ûw_ºQÁ5ÜZÌË.<pÕTVÔ^ÁuôZâg#ÞËU+É8¹p½ñ<ö›¬È?÷1±ÌKýŸªæuOå€Ì9˜È6×¶7øîµÓuÆw+UýFd›Žô&ôr‘æ¯sfó`?õ"'ç}V›´ä”5ÒZhkò3ÔåóÀàN{òfàNWÃìNÐëÌoÈüù{¿Ô@%qÞîKïéE€¶b ~5Ê ßÜ /Y¤¢½çü¦ç›| ˜0s^oÆqîð ›ï±Á*Ùä‡ÀÁæø´ÙÏ£sï¸2pLa#¨o´ÍÌè‡_G ÿb?Ÿ=Èë>Íåh•àÏ„»ÐûÕ‹ B¦Ú$Ÿ¿T¸Ûý<ø° ý á7¨\g¨Gëì @lž¿Rb÷SÀ3É~ÓÔïÌû¡n‹âüºîìM46c!µü4¬º¸i ÷=ª(Út¡ßˆÎ‡\˜wÝ*%è;Õ[S÷W@Cј¢ºáú@œnp¹Wƒ¹ÏÇõ ßë åà p*éþ•û¿€(EX?´½íng³à&Y›PÖ~°–]mëðóTýX‹’«N€¶‚ }¨¤V0gÙxŸó<#•‘Eq_éå~§ûqª÷ûjÜÅy¦Â_ŽÆ^Ñp‘ã}­ñ–a]±ßç~fÀ× ä @U¹ÿYÞï6ø˜Ñ¨K€UM󾺸ᜈ¿rε¿1håðG¬É_Ù È68 ËßÀýE A Ȧ†ŽÜ?ÉŸš¾”ÒsÌû£þ”d}ÿhxû÷ Ì)¿Ïe`Îõ¸–t´Ñ÷›Ì€??oi^oÑè•@ï5üflŒP}¾ZüýtÃÅE¿ÄðùJ «ý‹~5þNqþúÊy‹”‘M€ÂDú À»tÜ¿œäyy_„yQEQüý ð>÷ÿ[Ÿ~ÒæÆ8oýàìO÷=“ç­ÁÆa Ù€ey?Ï_wccûyýl%öû8ïÚß64Z,—î+Õ£(è{~ûy®nG Üìè§;ï¯Ä>ñ™.æýc¸}ÆÒ~ÿý¦{b…C©‡Sè~žÝ—xã¯p9ßóü¥ý~½¸ßŸá÷i§ß§¡Þ~ŸL?Oñ:Py¾øMÃÂ?ï'ãVn`È’Ïs-RDcÑ„'xŸ‹†Õü.Øð"Ïï5`iôã4ï7K=÷ï°÷ðëļŸÝJq­zîïSòïo CC5ü 0ªãÕ€À¬¾*Åœ˜êƆ˜\gÕÀrD#4ú—{4J£?½ª1”°,ÊÕô+~†~4™—€³ýf]ó¶=5Æ“×ʸärLÌóÃç14vãØ.?Ãwâ+ð ±î0jçýÇ: Z¯³«穌 zê÷8oyžgBÃ~¾Ý@µhhÚ~(ýç÷¿³qÁrÃÑKÀ¥Ñ^„öó¸ñݾQïyt ¾ÎKûýF ÏßÄ'þtÞO<ï·Ãm%öTä} ï‰>HLå+æ}-æýôƒè'ÿ8 ßj°>¸?§¹uöÛ?_Õ€Ñq]0ÿÒp±GÃEÆy‡8ó8.&r¢è ·9XèÇpæó´ ŽpÝ´#½§èÇô¸-„p¹ïûÇßÙ8®/•nÕêFYÏ.^XºÏO..Íûn¸ø­y_ áêÒ¼“çç`xæ#ð~ç~3Ù±|Î]óÎÙ´~Ë#?¨þÎ?ø/øy$î<¶L þò±ßy5YwöMÿ9¿“âïââù  ­a\^W~Szö§óó‹9 ½VûÕÖtÜ—þ殆Sô¶,úqFÌ[j´pyÿ¿îýì_Ÿw€&‚†Û3¿BæFT¢Š1áÇ”ž ŒŠGBFƒË\z »5*‰Ÿ4`CÖHï´õ釈6SéR¹ÿÁÁ雈]NC]f5Qþ×!G³˜Ð…±c+´9pU†.üW16¨ŸÞfÝrÛEÝ»>ÊÊ:¿Ê£7ùÈ£1zƒ$ú^Eà¦+’ÒéÀµQñS10çܹ“׊QAà§íˆÙê¶>|” w&±>éurhÌt• _ôûQÐDn÷bÝ9eg×'ë…±÷¯ƒïCè¦m|Œ ŠcëÚ’Ë.éžv?{”¹+&âoí¥ÞçÓ>ËCneè·! ölð¼å™-ü¨k*ùo Î{¥{!|ã±Iý”%k…ÜvQ÷ÃîgÏ…ïûÓ!xp J‰•Þ[çÉ´ žß²Ó»l]QÙ›‡à 8$t‘Êc_Þ?ĵ%—]Ò=í~ö\·ï~ûp˜²ý:8 î¡Ùó{Ï6àsA&NPÛ4ë>ähUº¤86-±Ï¤Û²í±Iñ×¼¶ä¶”ºv?ý^g•ùëä 3dS_`ã÷8ƒâ˜ý…BŽN¥Ò cû×àS;t üí±Ay.èÁ » ûi÷Ãïµ5îµU#{pEÚœÉÅú­“<¢x8BvŸåßœtM]Þß›SÐÑÕºhÅ›ÔOç!§]Ö=í~ø½Nâ”´êç´Ý)…©n"‹[žÔÄ®:ä({ ]Q5ž«9ÏÕº@}±³Ÿk\[rÙ%ÝÓî‡ßëDºÍ~ï·æ°½mš¨QÝßãvjì£_6…oj.Ôò…žõÖűùkq˜(.Ýd'M ¿Öµ-—¥Ôý°ûás%fqbw•×É!p !›svÇ ÷>£7䨵†®(ŒÍ_‹Ã/ÖLlŒ Š¿Öµ%—]Ò=펿uþ§~öü{?õ¿ýýoÿëÿ¼ç†ÿ¿?ò¿ÿû¾—þ÷/øŸœ‘·Z:Òùþþúñ?þñ?üýÿ½Åÿ÷¿ýï¿ÿe'9ð‹Þ—o€¯xœ‰úˆ‰¸gj$Û/uÊŸ@=ätk[WÆæ¯ÅamµuÎcƒâ¯umÉe—tO»N›û|»_ÓˆƒƒÖH™ð¨µcrȨ¢x”ª^Èë¶ tEalþZL¡‹ YŒ Š¿Öµ)·]Ôý°ûárÈôÿô~oª|sæ þ˜§Öt¤±æIœoR°g¢É]È ©o]Q›¿í=¬ÛŠî±Iñ×¼¶å²Kº§ÝO·¯È!«¥2—ýà (q{è÷³¹b{ð[PŽìÔ6Ë9™YWÆvtœ²=8¡ œº;û$×–\vI÷´ûérH»žºàdúÑ*q/Bw/gAñ›BýÈyî³®¨ðׇÍk¥[…tƱk¸ì|mËe—tO».‡ *ö"³ø½šÃTZéVn¤ÒBÀX8:µÑº`ˆtMql<)sàü·nÇnÆc“âØ¼¶å²Tº§ÝÏÃ"™áÜt‡E2Æ Ã"™iårºÕ ì èù–W&×I—ÇvX¤3)cõÐeŸDMÊa‘\n¹,•îi÷CgðD”×ÁH{Ú˜€Ú,|%'ƒþ$àÙaïL2 %¤g£þ¤7Óqû~ÒÛIÓ£’·oÝRZ#½ÓÖçÁÊäÖ+ŠNah£x¡»P¬Ay:Ú‘|ËÙ­Óº¢’Ï£ÁAÚ»ué­öØ·3Û×¶\vI÷´ûaX$áwe‚œÝ Lpï÷áà ٠qljÄ¢*é(môPOFÅOÅÀâh=äÝxTø©®I©¬¡ÞiësÞÞI_êWqp°-ËlÁ¿Yד‚òWY9º‡„®¨k®9Èl]$ÆØ9Ö\_›rÛEÝ»úó.:_»SÌ@]Þ@šké„ÿ)8ïøI×ßî`Ó ´±«¥'¢G H˱“O5ju\ÓפTÖPï´õᣬÀ%@™/ý>Áèw~†·{t§¾o`%ª)Ünâ…3FèŠj¾!Á_(t‘«cƒâ¯umÉe—tO»>JôM®Ì˜~ ¸ w"NGо#D1› L…i<’VæP¯:I@^\3ÐsÃz€Cò¨ äÇ5Á°5Ðû°õéZ™¢äJ¬9HîÏÌ1G‰ýæ=(gó7ŽB·9Ý3’š|Ú ÝŒ´lMÊüzÈe—tO»Ÿ?ʽª ¿üf x²SuCŠ37EøQÞR–³KODµÌ@b·õ€@àQAøQÃÖ0!ü´õéWY±Ý¯Qê;÷—³ •“\åZWïI°²šÏòé¬,èNgdùà!NA#Dë¦êhlRþâë!§]Ö=í~¸VN¦fV^Ý ø:22÷jØ‘¥?.ž ƒÁþgÒ3Q•£5¹V–zè çQA`­Ô5Á°5Ðû°õéZÙ]Þº ÎØ÷*+ñ:¡ *§UOÀˆ7‡œiÃÖÕÀ NöȺ(¾‰±kLǾ¶ä²Kº§ÝÓívq&o ÌÞu'F7OÁÝZE(dw“'c ¨^z&’7fàH,½/•ÄO¾K)¶z¶>ý*‘ó¿Sq4ë˜C0¤Ü˜|Ó%˜¢è&ÆŠå€Ü ]R›¿©‚Ö­hDà±Iñ×Jü¡Ü–R÷Ãî‡lbºüåÔ3€Ë<””Š ‹+"ºÃšK뫨'"B;b\0Pz²4* }Àí–&W[—üiëÓGI8ÙšïG){÷$ˆ›¾˜ ƒòí¾nyCΧuMåûQŠ“ø(¥{ñQiì+¥¯-¹ì¢î‡Ý³|ÐÄ Ôb——ˆx/v'®.€AˆÀyžXq6…äÖ‚˜*^v‚C—¥u1uzèäUǦT&AñÃà§{Ádçur ÂÒe0±€Ì¹ĤFXº,—¿oùŽÄÔÐ5•½m NÂQÔºæÍ)—wJº¶ä²Kº§Ýý;žŸ‹gY3É3‰K›Ñ¹g¢Av)Œ_HÊ’é‰(žeÍ@“õ6âQ“Ÿ»¯I©¬¡ÞiëÓ§B${Èm)N‚ç" ñÈ ™…¢|Ì·¼o^º¢8v8q6°›Ö½pLñؤ¸`òÚ–ËRê~ØýpÁlø&ÚZ¼¢Iß'‚IÙ"´´­[ xDë‰À¨ÚÐ,êfè¡£‡GŸêš”Êê¶>ý*+‹¾ÁgÎäY¿±¨oÑÀ&;¤üå¬CNèKëŠw&8ø¤Bý¶cìæA\[rÙ%ÝÓî‡ fæQîrÒ¯Yp¾ßÓnfJ¶ºn)šYOÄåt_1ÎƤD«F%Ÿòš’Òé¶>Mj^ˆÇ·‹¸D‡®Uæƒm—yÉHJžAÙÃvrd†®¨+ÎâT€Z·Òµª±I9ßo¹ì’î‡Ýì¼g¥"›æurÐßpû66Ne×Í ^8Q\Ñc$ä@N ]Q›¿&§RºõO›Ík[N»¬{ÚýSb[Ø­$úc(ÍtÛ@ÏİÛÊŒ¾ÿëµÀåQ›“ý|M0l ô>l}¾R.zï±B]$p±³Ñlº}JP±ºåìéd]Q;NƒtoÃTì¹,•{â´û±Ó`©uÝ´Ó`±oûàneÀCð„„¾ÊrK‘*&=Ó‰:f 1õÔþMéi$¼³ †­Þ‡­O3UÛЩ“¦9LL6NÀcÍK7¿DîóBg›g8ߤkꊓ8Ю¬{«×c“bƯ-¹ì’î‡ÝN¦½í|N/œæŽhS‹ý…÷.› t¢°¸õäþÃ#!Öº¦Z,œæ(­BºðÅØ9N_›rÛEÝ»f Â΋8‡7øò…g¾ çù^ž» d€mKZq‡¥'âr@] ¢¤Ko+]£’ਸ¦¥¬•Þaëó¤ íàÎÉEzÁë!s2)Ä#Îï£('åC^÷ ]QÉ!­àÀ™g]BylRN š·ÜvQ÷Ãî§ŸhïŠ2!2&ròDÅ:ûõ쯢™ð'4BºPÒ"=•ß&è )½>ß•GÅ5-¥yÒ;l}ø(+rN·c<;˜ BÆÛ=ˆqØknïÔL¦ì¶¼Ò-ÏL<§®©â@sp º@W‹±SÌn¾6å¶‹ºv?ü*p²Þ³`ÖW)r°w@f÷i¯¬|©è³Xýwîµ»ßR÷¬G"û”lF´!=$n{Tü)¯))­‘ÞaëÃG™Q©4ë×ÉÁ±_ÎÛø«1¹i…¢øåÍÁòŒëŠÂØ€“¶“ tñ cìË)TqmÉe—tO»Ÿ¦t¡Xl%×¶›´²°[€“Ù5ÃnúB-›¥huf=‘!d·қ‹m½1êŒô ]SRYC½ÓÖ§Eðu"ZIÍæT×]d9mXWQƒâꇷ.äx!CWTö98€™]tµˆ±/ïãÚ’Ë.éžv?|”ï÷í=7·â„53 ú~2 Á–÷ix˜ÀM¿pŽ·m­G¢Ä²*B°ÖÃûçQ“³}MIiô[Ÿ&Z¢y⳨îÀœa`…ý½¿-Ú‡ŸN$.Rô_ )EÈIJ®¨~{RÄAÚ}èV+hìz{RtíjÐØ%ÝÓî§,Z¶ï%XáÚà` ÜÔ⢭CV 7¾¿ÜòžXþJ]S—ƒ¶æ°´uVBMê§,Y‡œvI÷Ãî§ '{ ¬ê XpËç/¶—ï,ŸGɬ(GðÒ!G”5tEÕã0ùM¡ œÂ;Gb£¯M¹í¢î‡ÝOë„€/ÜÕÉþfme$Þ¯Oˆxæ5Ipcƒ<KÑaÒz$®»üŒ8Ué5´òÕ¨$|ðI5¤°Æz‡­¥Ô_QÜÙí±p}óWFPöv¬CôñÐUÒâìú¦V¬»+šZóØ¢ìk‡<¹.«•_ì~ø‰&î©æžÎ^ƒQ€ êû½Mž&ð ±Ï«¥hÒ#1¦4c ³9õ*£•ŠkJ*k¨wÚúôd‚ º}ƒ†ËÀ)„nÏDúÃéøàKPܧ Lòì}ÌÖ%¥±jUYœ†rèîÒӨαEýÔ)',¥î‡ÝO%Ú^4ôP{ Vmí³Îû èè÷6í2Á›ž÷Çb)6ÑÒÑb⃒Òc¹–F-±ëš”Êê¶>-ذL¹Š«l‚S9 rÏv¤pO‰ø*›«lö”¹Ê-×w(]QÅU6ÁA‘IèâU±¯;f¯kK.»¤{ÚýÔ¥‡¼åz¨Å(tœ5„rÐjﻳ »Üê-¢›õHÜ¡i1]–ÏõŽKëš’Òé¶>­Ñk8+¤E æi×Âí ~B{‡]57ƒÂ–s"Öjùbê€tMUïô‚ƒ$‘КHŒ½Ù‹kK.»¤{Úýt­†p˽1£p:@<½þa—¤_&¸ª!QÖR,nÖ#df\\K W—ŒZ€L×´”ÖHï°õyÙûn´¡ó½{ºxݸKÓkP0†P¦!ǶÀº¦¦ƒeÁA`Óº"››”7¿ù–Û.ê~ØýôQÂÅÂæÖ¯ƒÁ䯅d]ž¸› ž!X›¶¸ø°Ÿ3ôLôXVÅ@s=ë?Ä£ÖXptMIi ô>l}:Á^ôŠJœE(ª„ïhgêtLy8=\QsÑèÿ°®‘Ð5ŠÊíw¡›½ßÅØ¢")*ÝrÙ%ÝÓL@uµá¬ô‡^€øjô‡^k‘ž¼ß§tKf=Ã;X3:–ÒkðWjÔv£Wðš’flsù´õ飄w×è^À‹ƒ_Ùkod2Rïô}Â'ÅÛM(BÉ;2˜¬kªÞß™8¬ ݄ȠÇN9ôµ%—]Ò=í~øU^¨Ûž3ý©bp¼Ð»‹‘¶|¡íŽÃe"ÐJʶOÒQ¹[#ƒ±é;D£ÞÐ"º¦¤´Fz‡­O øÐ‹UQŸ8lв°ƒÙ莢¾?W¿Ž³Ÿå€]Q3‚*æÌкÛêc“â¯ymËe—tO»ŸúÖÑhnmi-£á5œèÖÖÐ({»¶› {ÁÇ-ÅÁz$ª½¬f…Tz ïŸFÁŸòš’Òé¶>‡œðÍm9áÀ·£z^‹_%²6Dù«¼‚³¿ºꮩᇤï….Öþ»:â×–\vI÷´ûéË: BÙ¾NNáÂ˨ÿ†â„Ûƒâtìò£JèŠÊž‚ÉHº'"Mê§æúšn¹ì’îi÷ÃOt$â V¯&ÁiÆ%ÙnµÙ‰`R˜LÞ]ߌö­ë–7f»KWTdŸ§ îi]tˆ±³—•¸¶ä²Kº§ÝŸ«ê;àö:ìø¥‚O¿©à“]n.N…”Å©ÔQ}Ü0uÖC†GMö¶øš”Êê¶>™t.äÉh?ÁÉÌ`\õU"ˆLQÎ¥¸ny.¼uM%£ýçÚ‘uéîSJ[”výË.ê~Øýt;‹ÊÁ™ ê3˜v³Pd8™u³º`ûê}2%¤È´‰çn1’[ïâ&™£^qèÖ5%¥5Ò;l}ê-plî =Js›ƒÂŒ/cç3ìò mD•­HBWÔuQMÃË¢˜‘ºlè±Iñ×¼¶åŶ*¢¼í~êhGp&/,fà«ßÄààÞM¶"âlG86â–6Ýgè5=-)b dØJoLÖ¶aTþÖ×-…5Ö;l}êÅ+{CµOøJ}Î`TûE´#Ú>=v±M‘ýœ ’òÁC¨tEEtpCÒE’sŒ9ÐqmÉe—tO»Ÿcp5¦ø8jkÐp$r¨p²FP>=®CN%êUµ ±U­‹¤Ù;EÔÖ×'ì‚î§ÝOÎÙ¢ÒëäÀÛ´ñï÷R1Ñ—bw}¨AÑWs14IùL [R×Tñ^.8莺l ã±S³øÚ’Ë.ê~Øý« ;ëeg¨&2¸áÎÀ&ø·°: &뤽„IºÁb»õDôpäŠÑÇ’ºÃ{Ôz;ryMI‡ °¶ÞiëÓO´a)L)šæ _5³…æv¤íE"!ø&*œá#äAëšJÖ4‡+…tßû¹í‡ÑؤüùyËe—tO»Ÿ‚S¬ýþϳ‹Êl¾àõÝ.ªe‚,L”–Öm¸õ@pTþ”Œ‰©„z![J‚?Å5%•yÔ;mýƒHfFš‚ˆ³ößP»3öÃiÜx­»QÀ^ 9¶_¡KjÞÌ¡Mº“4ö¼èÚ’ÛRUŸv?ßξïýªl0r3š¬ßi¡do<‡‰XâZH+=5bZb(AˆzÀvô¨Ù. _“RYC½ÓÖ§‘̆[²=7ŠÔšÓYÛÖ9û ¯;ª`‚â•á1Ééý·®©æDp°"†naíšÆ.á.ôµ%—]Ò=í~ºp9)!góurª!`“*– Y‚ŠÅ-8{ñSýó5n*2Dƒƒ‡¡‹·3ƾ2Æ×–\vI÷´ûiîleyt7ØlpЙv¼?ˆÌ·±…Å­ b7J>ëXÛMõ8CšÃ.¾ÖÅwcÇÑ-®-y5î#tO»Ÿîm1Ð a3Ü0ð$BpÃÑr€ðN䨷]­¬GâF˧õ°|zÔtNyMIiô[Ÿ.œñ¨å,Ds2ºÎïåìbÄVé,9(/œ{r<#ëź¢8¶NpÃlÝĈÆ&åð•n¹,•îi÷ÃOtÀ µãqZXÄ@µÓ†­»0/Âi<âuR¯Ö%Ùz$®ðG“1'vЛ¬Sá¨ó.cá5%¥5Ò;m} KøNÖŠ9Ojìd“±ºëÀ;°'DÑc<Ì7`â[”Ææ¯ÅA·éîÒƒ âØ¢øk\;ä²Tº§ÝONÄ^Çb'Ò`Ìh A45…(Y¿ŸKÈþÈcí² Žê5¶¡·Ú~3©Ç„z×èš–Ò<ê¶>]8;3åÐYôurT%3˜W‡’»˜´å…swÈ”|Wç×Ð5…±½pŽŠU‹2t÷*R›ÇűqíîÐ=í~ž½‘Z/œË_'‡!¾÷žlÔ^Øî)nåépµ[Þ ¡/]Q›¿ga[*Õ…¶Í™Š [ ›¬wšütͼ˗ämN#zÜÄ)a·~cU]´\{»f$gg¶b•£®©@Þæ‚q'£pUcGô>® È »¨ûa÷ÃGÚ«s’È‚Õݵ<€W-½°Ö§ÚžVç-'ˆuE%'¡jé.à­jhü-®l©Œ’âiôÓÕórîlU¦Œ9ˆ;æÄìù]¦´~™nHÛ»Õöºå•_µt«sk ¯c6¡ vŒÝ"{Ã×–ürþ,tO»ŸVU³;Pß_Àë`LO èQQ°¿£9— ]ßÖYŠ£¡õHô˜ºÄ@¿õн̣֘·tMIiô[ŸFÇP*ˆã›¦\qÖŃ$RÆp¬$àúÔO­µ¹ÝrTþZWÇöz˜ ÇŠµ–ºsp­åؤ|OfpÂRê~Øý<1º ŽÀ´b$Nus»YWæTçó Ñg»OŒ“YУZOÄгdL4H”ÞDí¥F¥kZ k¤wÚútõd×­«†ëÝœæÆ*ÈénºRƒâ We‘€À¡+ªÞ Žâ¢vH@œ1v×»¯-ùåøc^¿Øý4f¢µ‘½2QÇ%^€[Ø)žÈê#ܨܺ¥½Í¤G"ÇI\ Xø#õŠc¸®))­‘ÞaëÃG9+Ge¡NÕæd6áL^ ëS™ LÊÛötȹ„H×ÔQhq ­ûÞíS³Æ&õS§‡qËe—t?ì~êAÈÛs¸~õ:ÙÉq«ÿ`ŠÜŽT%?åkØ Õ$èõ–Œ·‰» P Ho2›£Î£ ×´”ÖHï°õÙ£DækÂ6+;$/Žúët¢ÿ¢KSPtyÐÿlùbsR銪Η NAxĺ<&{ìlgP\[rÙ%ÝÓîç`2ï-Ö@£Ý×Á¨ìC‰mçnk\±N&8CÀ}c)¦uë‘(†ß5}Ü­—°ר)uMIiô[Ÿºhõ¯¨)xœBhEæTbõU´ª娿8äÓß0tE¥ZUÔX· nÄc“â¯ymËe—tO»Ÿf’ì'sÄ À†`®îÛïÚµ¼˜ðk5o)z@YD ˜ÁmôuàQjÄ×””ÖHï°õᣜŒ6–êÚðà`·µ'þʪì]®4£FÛÀâ …Ú–/à¢Z×T~Ìæ¦H7£þÆcçÀkñµ%—]Ôý°ûáW™puvw ´*Ú;èBj8›8ó]·/ŠsãeWOôÐ#1"iK ¤Jo U£’àOqMKiô[Ÿ& œòJ´ž1§ª`dr-T1É‚ç´ÞÅ&Ôæ–ze¤+ªDë™àÐ? Ý¢bŽ]îb]ÛrYªB•Ód8Œ;<1 Sr‘ 1Ù×dÜÝ¥±’vÀNHOÄM+ÒZ¬¼XzÓêš’!no½ÓÖ§kåÅpÅt.´9æƒ+g2À:ðÙ_AyŠÈ‡¼aª°.)ŽýSë08uŽÒÍ>l}^˜Nwغ Ó7£8ue»C3 Ó{a7Òì!íÛ-b=±í2#$eë%pÔ€Ûô5%ÍrÐ ò(l}¸ÈÑ%Òð’â ½û.~šÜAì7±6¦X^ñ¦Vî‚-ð›YWÔŒ ©9ÑOéVTÕ{lRü5¯m¹ì’îi÷?›0þÉ7û¯O» ¢¯·xŸ þëùâŸLVÿyÃêè/xò»?âTä9$ì÷ ºKbºˆâÀ !Ç´º¢Š£ùÁÚpè±c§û¨¤kK.»¤{Úý4HVÀÿ¾rËv¯¡Gßöp2HE‚oö®–æýzHOFý©×xÐwceJïBÁV5ΫÛTëš”cĦñiëóҸƬ¼rŸwÀi¿oçFj¨åÉØªUº¢¢d(8…ç!é"LcçÈšñµ%—]Ò=í~:7¢ül¬èvOÆDÞØ.èi ‰Ø õ<Ã_+ºYŠ)ËzLŠXÑç^ ”­Jo lU£’àOqMIeõN[ŸÆ2•›Wñàпq’*Ó²¡E‚r|¾rT“†®¨€¾Ž ì¥[Œ‘“‚òÒ²¹ìªN—¹í~¥³Xnæ£Ýèv±·&¼ŽäR”ªRÏÄU&F5ÐNFœ}—ŽiÔ•Eº&¶†8˜§­O—9,¯{arwMq*¾Ñ61ólÌ2¦+™b,‹Í$oè½k]Q5z˜Ö­¬ר5ÚøÚ–ËRê~Øýô«„newW0£°6Í VeõjîHðûAÙ¥¨î–žˆÀ4ƒ-2¤hRÉ„?„RYC½ÓÖ§ñù ßó†ËÒ"ξë,)èÌ\I¬6˜A9ëš·¼±NDº¤8vxþ¹‡Ùù&Ò­h‰î±IýtTaÝrY*ÝÓîçDßo£á¯ƒÑs©h‚´#âì-7LøµZ·Ý•¬7•m•õdÀ¯d½âæ¤Ã„“IÚ-¥5Ò;l}Ÿoly|V™9 @¹³Yrfñ ÛA’âQ†`º’ïÆð-tM]hg;ûsèng±Iql^ÛrÚeÝÓî§A]Ô[¾wU_¥XÔf®áÖCï7…„ƒ®+…´î·Îz$šo‰•½„¨W°*hÔˆ.º¦¤´¦ºQØúp­L€Ž@÷"ý}æp.LDÞF ªx¢œ”òë–gFÍ¥k cã×âÂ}H·pÕØ¤¼ßm‡œvY÷´ûi²0ð3×´»Ì ½QÔÜ9ôE AÑ߃¥1äX5­JbÆ]C¯"—ÞDŒK‚?Åe-¥AÒ;Ì}ZšÁœÜœ/ zÙowAR4wÀ]P‚B¡1Ør€r‡®¨ìxipp‰ÐÅÇcÇg×–\vI÷´û9Jë@öš?L1>°´Td,›– ¾‡Y§’–½¢HODSŒbSWíœGˆ°¯I©¬¡ÞiëSG6Âh©áp°8lç± ÐR´úx¿%+(®Ý—«†¸ÊKꕜöõ•®Z}h죈®m¹ìb+»Ÿ.—èÍ;n2&ëù+Šy&+ýßSc1ñÓ+ë-mj¹½¦f,®ðcò4 ½!¯F%áShº¥4Oz‡­Ï³ø÷{ÖsD»Í©ŽXï»Þ£ÙȤŰ0R+9O Ö•ïh·8‰Ñnéì)ƾ"ÚíkK.»’#å·ÝOÑ9˜z¿2Jb0c11«²\ ½ÇP•?66fµE=V%1#ÓYŒn€ÅŠoNK‚?Åe-¥AÒ;Ì}¾bîhï°z¬˜à â^µ1³¡rVP^Ó-ÏØÀZ×TÓœFÀoéVbzkìÁ×–\vQ÷ÃîgO3­è¦-‹àd¦“Áq¹'û–°îA1(]ѵÌr¸GCWT4 zs[·“Äc“r0½rÙ%ÝÓî§k'“›3œ,¯“S€BиsËp´¸˜0‡K­®Ö-üvèŠ —NpP‹aݦÇ&Å_w/jkÜvI÷´ûiý8JÏg¾ëÇÉ€Wb ¸HlÂ+7ë÷„yK³Îr "ßõãYP?½±X?ŽQG@ êš’Êê¶>];yœËÙ›Úà0=k±Ã`f ž}PŠë–ö8tEeojƒsgŽº±=ÇØ¤øëìÔ–™o»¤{Úý4 #waìrXz`®Ææ4tÁ\hd% ö\@¡9*BWTò‹vI—înê¸blRü5¯m¹ì’îi÷Ãçz-VFgïù‚ÃTúD4#îDwây Š~ÔL?ªäH‰ ]Q÷)ÕœD@2ébûcß§T_›rÛEÝ»Ÿb#](öåë` ¥¥×Æã(Ì7e ðâ|SD=,Ez¸õH”ð¡‹$ë%ì34jŠmˆ®)é%,‚µ>m}ºŠ6Bø\;¯ûurà\Ôºu5C̉rژЂԴn´[WÔYäâT¢èI·çÚc×@Ôöµ-oNêšã»Ÿ÷»ÙÜ ôÜ!™÷öj`Àû¹L8øžoißûQ둸̓h@Ôë„ÿá¨$øS\ÓRZ#½ÃÖ§•™Ø„=ІÍøØîq{d¹EX Rœú;A%'î„uET]p*æOë.; êâÚ’Ë.éžv?=t^è+×üUšA´ˆ„Øü"¤E"ÎÊðW‰Xä-­{Õ¶‰æ¯ÒŒÂ]AQS¼+ŨÅ_¥¯))­‘ÞaëSm§ƒ<‡cÏdìZ¥ÄXYQU‚â‚¿<ÁVVEµº¦î jsPïºwûº7º¶ä²Kº§ÝO¡ÊNµZ8Ñ¿F¡ÿX¾‹˜~ÉYëFü{,3‡tìÅÛz$r´¯CɻЛJëŨ$øS\ÓRZ#½ÃÖ§pç@%(»­®áÎÉÙw ¨ý’ Äîv•I Šk·:»J®®¯Ð5űùkq†kZ “¬v~¦Æ&õS–¬à„¥ƒ5+§ÝO¿Jì¹àý_£ð†ýÙBŸ€=Ûg^Hê-E¢¬õHddšÁæPÒ»x¶â¨—i¾¦¤´Fz‡­Ï·³{!ÚUO-¶³“±äús"+ÌZDZ+Çw†<ÊsÊ´®¨ë†o#'£»½u]-±Ïj^ÛrÚeÝÓî§iǨÿp²¾ûs%8½GvD¾šà '!Kqd²‰ëN}ã½’*àÞÑ > Úç÷ˆkZ k¬wØú¼#ň6Zæ ýõvÐàqAj;ojPvîôCŽ$tEÝXUæÀϺptÆØ-♾¶ä²Kº§ÝOw°hòÓQ„÷: X×Y½ïwC¥? î5°‘tÀÉ/=wo1€ñc=xï<êÝÛG×””ÖHï°õé6±ôÆ1'1›'3û23zQ°Vòßò-ü3SèF '/ƒ(oÝ<#›§˜rŒ7•[N»¬{Úý|­ÜîÁ«9và‡î•k; /6âÙ€jAy¼9s¬+ª9vœJg¥t \[»DèÛ×–\vI÷´ûéÂÙq€ïÃàÙeMîã~:ê^®rP\Ü„Î^üvðœºAÝ8¬æÀÂЭ{ cWïâÚ’Ë.éžv?à}Ÿþzr"ðŠî/‹ÅþBÞLÞZ_5¤hßa=ɉ@f .½í(•„¿æ÷5%•5Ô;m}޹²˜<ít^sÌ“™UäZn¥1µÞ3ýYr`ÛX×ÔÝÇœÛ3–b—ë=öÝÇ×¾]n%t?ì~>Û¾?뎕÷u3ß=ó% ×ìO©7…çExu,]ŒHGõÄÜpêÜßõzgý9Fíý®NÇ5-¥yÒ;l}z2Y¬¿Ä©LæÙ %ÿ¬I¼‚â>¥0ƒUrÔ2„.©r'™3à¢nnÄzås̼嶔ºv?…@lbN¿«+¯øR;d_»Ñ˜ø)/QéFãÊÖ#ÁQíÏáÆfOŸÔÓóá¨$˜…kZJó¦¡ÌÂÖç{Þ/ëîFNØâŽE&& t楕 «,NPèl<Ùò­«EuÝÃÄ™lFÝ÷£Rw°”ã éËRéžv?  Ì¶÷Åc¼°‹uP¨s›h©»«5.˜ì߯N®–.ø¥'"ºöš¾BÒèV¨QIpT\ÓRZ#½ÃÖ§kebee³£=8hµc4¨µðõ®ÂTäaGûŽñôCÎéÖÕün‰m¡‹ýSŒû«¸¶ä²Kº§ÝO¿JÄ&Þß@s'¸¥ï`D3·äôí:½LØ!»½q’Vøé¤WåÅk7¬½x{÷ =t ñ¨-R¥uMJe õN[Ÿ;dÁr"¬)ŽÂš¬†( k&—ßaÍ4¹eqvž·®¨;¬i3H¬Ë ~û¸¶ä²Kº§ÝOÃ_mÔ¯è +Fâq£¾޶ín&"PÕBŠÞŸÖ#qEWX2Ø0Lz;-myTö¶RXc½ÃÖçHð†Õ½yœF$†BOZgÓ!bq’²¿ òN/tEÕ€‹1‡{?ëzÙcßÐ̾¶äÙÞÅ”~±ûù£,ko<{ŽG¹á~_¿£5žéÍ„帥XD '1ÐLÀzÉ/H3áGYn)­‘ÞaëÓµrÒ×?”0ÒvòùEÄ¡}Üߠ쮇<óÌO]SΜƯVº•-F4vFâÚ”Û.ê~Øýt­Döò{ßܼV’höÆ,7^&¸ª•ÉRT™[Dvãw3óÒ»ö#ó¨—=ö¾¦¤´Fz‡­O×Êì¤)õ#2g§xpuTðÝ—+=iáHÆùnÞòÁµt‡ƒÎJ+ À¬›P’ì±Iñ×¼¶å²Tº§ÝÏÏ•‹ÎçÊÍ=bÁ(ÔzÂIlgceñéWP¸Ý¡†|'æÐ5ÕÂCmG¡‹ÈQŒ]ÂIíkKÞ RÊ/v? “$¡©–ÛaYÐM§é¦'tÅáÃj&ì­·´¡ªRz$²`fð$%=µ™â¨WÇtÍ»-U ½ÃÖ§;XF[êpð28“å- ÀTõêȼ¹+2}S%-g¥uE;ÙWDC·±‡ÆnÑWÕ×–\vI÷´ûi*;ö#³»×‰¶wàÀï*“9WñS®Û”C äR둈^Àf4†ä¨‡\ZíCò5)•5Ô;m}šèƒcLyÉC_¥9¸ëÛu¼ëWŠé”½ª k–äï¼W7éš*ás4'žOºÌ(öØw±¯-¹ì’îi÷s¥Ýº»¨×ÁèÈzL»Ë]åûœl‡®rK>&é-}ÍëFN*(#3ô2K)8jö¾Ø×””ÖHï°õéZ9z“¼VŠ“1‘­Å6BX½Ño#({df½åŒ–P7¨äã…9u9ë]5y«Åؤ¸VòÚäØ.ê~ÚýôQ|×ñ»$ŒÆtz´9ÚŠ¹ ̽:žYÊò-é¹–ËzÅÈHØ‘^bsrŽš"ÑG×””ÖHï°õicËyÎI>Xs0—ìòId/:$2³“Wø+Zeö²äN?é6çA; ÓœÆbMé6º=5vø†âÚ’_Î|†îi÷ÓmOÝöê7X2ƒ ÇXv÷ÆŒ˜Ã_Bw[:UÖkýK&£q/3Ôí.µ=È×””ÖHï°õ’Ø ËѼ§²@{ðËa†Ø{îØ³z½ÈòÅî@j/—X)[]ú‘“Çæ¯Å¡»ÕºL¡ôØÉ¯I\[rÙEÝ»Ÿ/Þ_# …ĘȩîÈX‹¥LÖ‰J—Å»n)6žÖ#1bû –9ëá„áQ[ìtMI›2Á wØú<)vg’áÖ‹ÁÁùm¯n{öÛ &0¤ œßP9sš¬+ꉙÃfIÖmhkè±[à†øÚ”Û.ê~Øýô«Äâ¶×•dtÖ¥c\l}ÁÉAÂdžfö\Åz"êíË$ƒý£¥ÇÊšï©¡Š0Hiô[Ÿ®•,ua+€×ɉå™DЙ#±_¢öê×Ë-/Ds”®¨»§Ÿ9•g'éN)ûnëçkCånÝO»ÿàQ¢eÇ8%ÖÊÅGya5\|”Ù„e éûaÕa=õÎÙ"ƒaé1“ûrgv?Êë–Òé¶>_+; Ñ.ÎÎX¬X¯:72ˆéewãršën€˜nyey¨tIqlÿz¸ ×ЭðxlR^+{¾å²Tº§ÝO·=81m?°“bÉP‰ Žs®ß+A3Á¥!ïÿZ —õHô(nNTëUCiÔ6tMJe õN[Ÿ†ž+Ö£<üª±Ž 5°÷œÕÌ;Mõ Šy“墒/V’JWÔˆ®æ ¾9t눱[F|mÉe—tO»Ÿ®• ˜ëÝîŽe»#3AMÞ‹Ø2á´4CºTa =õnt¶ÔõeÔÐSi"G½'X]SRZ#½ÃÖ§k%|ïûìflps Ë_*fÎW’‘64ƒòÙï:älm]Qws.¦ÁR·sÕØý^‡umËe—tO»ÿ >»œHŠ%c9@÷>ìJË•]—/Êߥ*5KàvOªŠ˜1ÇŠh£Wgi8Æ%áSè0ÃQï4÷¹Ãg² Joá𙄛ôîÜÔ GF—ã”]8ùs3m]Qé*çbN]u¨eŸ56);|æ!—]Ò=í~Š„î^½mÄ´ o ÑN&ó­'ÛìFºuf?bKѪØz$ê ˜NFAåôP”ïQó–ÎkJê~½Ð;l}Šó3øpº ‚ÃVìi hM:Å“ƒú©ÅµÞòÆÝ‹tMõó°ðCï1v‰Š=_[rÙEÝ»ŸGv˸µÝ=ävv͆LjîN&ÆÈû´´È³=#b°M¢ôØAQ£¶3…¶…TÖPï´õiÈRÙ¦Å@qÁ!ŠÙ¥ÜÔÆ­•rW[•°c¹ò^¥ÛÜqÀ‡Esˆ?b]âxìu5¾¶ä²Kº§ÝO ðãVŒ}nRSФ©þhÈZÉôÔ“àk…¾¥ˆXD‰€¼Hh±2Xâq·š0§ïy}áP‚Æ™n¢xü#֥廔®©»Õ„9la]¶’ðØw« _›rÛEÝ»Ÿ&àöÌz'ј€Û:;Sðj’pÈÜÒ˜Bé !!ö»|m T²æÐËNh&Ý,·´¨ÐºæO[Ÿ'h£x¨â ^T¢Z.C– "€qÈyH’®©€sN7Ú_SW‘cç€s÷µ%·]Ôý°ûiw $.¤Üâ³4§ãûʈ¦ÌóOFy(ÜøŒsÈñ$CWT‹ÓÄVCîê;ÜÙqmÉe—tO»Ÿ=׉â‡í‡ÓÈ g.²""±májmiÅç$=Í›3€Òn=ÀÙzÔâ¯I©¬¡ÞiëSÐQ”ާš£W¯98ãt€ZÄfYAýÔ|œy:„uEÝÍÆÍI†ÐM„0ïåû³Ùø-·]Ôý°ûÙ£^æ›ñ:ª!s›nbÛ20бóUªõLÄhFF+/é%5yOA`T]“RYC½ÓÖç$ë…~æÑ ^n¬6 :[eïY”uG¢"~ȧ»§CWÔãoNb7wé^îôÞ‚â¯umÉe—tO»Ÿ=ÊNÆèg6y,ÎŽ —¾Z¹9;œ“1äQ…ž‰h$:ÂßšSèUeš® öO}MJeMSêémë@¿¿“÷KîV‹âì¾y áþ§q{E9 bå[žqø”®(ŽÍ_‹3‰³IÝlŸclR?5?ìkKnK©ûa÷à vìi¿Uðu0P8Ñà¼fÔN$݊ض¬´OHb,dïJÏD ª›Ñ€&=¼é5>_“RY½[Ÿ=ʺÏHo·ú)aµ"|uý=TæŸ_Ñ‚°Ò_h9=‹Ö5]ƒƒíiè¢Ó`ŒãÚ’Ë.ê~Øý𫤷¿#«æu0˜ÑËÀ€²Á&[8,ïh: ¦Å{A}ór» mgÌ@Z¬õëQ›Û¾&¥²†z§­O·=x­SJ£fNf 'Ð÷S`7×3Rür¸ÞYεк¢R€©™ ë^p^zlRü5¯-¹í¢î‡ÝåņöËè!dÔ Iª=ᓹ!¶ <ƒÀM¯ûdkiÛQ ë5¶º_.–0çê•…ã GŸâš–Ê<ê¶>ý*ƺ€pö:8ê׊ƪ쳳?„i‚_ÍÚî I7ZB±žˆá2Q3pÔ·žqԻ͑®))­‘ÞaëÃNæGÁg3`Ù':FBß3û޹ñS›¢[Úqk¥'"ÂÎf rl½¤$Ä~ªk&%!Âê¶>]™yüž•ÒœFtz¦)廓¸WPÞé¤C>Ñbź¢J,¦æd`[7q—¤±Ó½‹Òµ%—]Ò=í~ø!ò5K¨z IíbÎĦFØ ¼/)B7ý ÆÀE­'bzûbJ¥·!šG%¡éM–À°5Ðû°õ9&÷^fF±³.8,¦¿¸D±—)â‹A9üØoy®¢uMoCƒ#P#é²ôÞc§;!D×–\ve§’Üv?ôötôò©×ôY28 p}€êö^Twæ ðjuô 9ò§BWÔŒ’Bs†¶îÕ ƒâ¯ymËe—tO»ŸÆ¹pÓR68Ø]íßÛýÊTïˆbT 0äx¼¡+*æÙà` ]Ì¥1vLµqmÉe—tO»t€ÕŽx÷ëä ž:Žðu R¾¡ßÞ§{Q?ñk8òCÞöþ$tEM7Û ÎØ¹kÖeC]}÷Ûõµ-—]Ò=í~&A¯ô¶uÀHœl¡Ý(‰Sˆ wEá=cqoÈQªn]S×åGÎ~ rèvÒ56)Gvû-—]Òý°ûiвkÅfûurPßÀÆú¼¡YjðE1 ‚ü£#)tEalþZl¸C7¡Û‰ÇNÑ Å×–\vI÷´ûá÷:º‘ù#NG~&²ˆ _§Ä쥠ðM±Ïò‰bëŠâØøµ9FZ·¡fÏc“âØ¼¶å²Tº§ÝO½îèÿ³¿—$˜ƒK#t\ñ¢h\AÑ3؈/<)ëŠQ’`NG6®uÙÐcß-}mÉe—tO»Ÿ~¯c{·÷{osжñÈŒ/pÏô‹(~ø`,_Ø X×Ôq.q gÝŽý“Ç&±ÐCN»¤ûa÷Óõµ¡!䘾×ÉA{³½êíFÊ×$R》×Àµ£V–o(®º¦z X›CÐhëV@¬ 8¶®-¹ì’îi÷ÓõÉXôo2§#ØÚ‘uLù!Añ›BÀò‘ˆZJ]S-rÓÌ©ÔZ—1y]RÑ×–\vQ÷Ãî‡ë++@÷÷¦5Ç/¤¯S%&Cb%i½!ÒD’¤åR³„®¨ø±Á™ì>NÝŽôbM ¿Öµ-—¥Ôý°û9þaå¾ÒÁ]s Ý5£Üï6ÖÁô ¸ÃcÈ+¿^銺ƒ»ædWMÎ iÞc'çĵ%—]Ò=í~º¾®=ÉÕÝ~¢GÅ?8‹Ø(ìÄ]/~3iO{¢øM!žò²§ãÐ5ÙœŽ “t7׌±Iñ×¼¶ä¶‹ºv?­'jÜr-ÏÃæì][‰_“3k'8gP¸÷ïå®ò…þÌÖ%űùkqX$,ÝÎÄ1Ýï¼2]ÛrY:Ý•ù¶ûi§7Þ[¦Z¿NÐwRó~ÌÚÞ Ï+(Æ©‘ rd†®¨þhs€íºA]]"æëkK.»¤{ÚýÜ'ØÂ.¤2€‡Û/·¿¢ ïH&ø«(û¯CÎ¥ÖuR™C>ë‚Ïc'bǵ)·]Ôý°ûÙsÝPÛóÇÑÐÔ äæ,6UÜ-K‘/~÷»ú[v%øˆz"ÂýnP£­—•ŸV—.ÌuÎÐ;m}Š?‚×Ý­9ªoÄ鬠){}ÞÏQ]ƒÜWQÞî÷CŽ ØÐÕî„*q +h¤Ëc‘ǾM¾¶ä²Kº§Ý½JìY¹š£¾fŒ½!éìa¹°‰éha)BîÝ¿')jª­'¢9ÞkúóZ¯"P£;r|MJe õN[Ÿ~•è¼}ëõîŸòP|ñ:Dµaqû.;Àu BIAå–²jžz&¢ÈC ÂÒI°tµG‡®I†¬¡Þ‡­Ï¤ÛÝ_ª£†ÁiN¹Ú§º‚œ¤=¿åeʳa]·|àlo]Q‘ú8ëCÎú;»­X\[rÙ%ÝÓn@車jfL x®=`e3 ‰.*õî4ÑèÓÒ¼'附N3à!³^S f O]×ÃÖ@ïÃÖ?À*ÍìÂÕn°ÒŒ}qJF'®L`Ñ ¼ÿÉ·¼ÎJº¢j$Tg°AºùN»FN•¯m¹,¥î‡Ý})`ÝÂÌAU0vàÉ`k{w>Ó Æ–vLú£Ò-tE[pwïÒ­ÞùÏ øk][rÙÕ|¸í~ºp"' §EUÊ™3Q\XبÈoBBP\Ü0-„œ!늆 ²žB1v Ìl_[rÙ%ÝÓîǧͭv!¥äu0P_ÜѯkûÙ™öƒÌ¢i?ÙE”¢éƒõDDæŠ(Q±ÒJŸm··m›•b¶‡‘àZ‘›µ ì ʳí,·œqÖÕãˆbN#`–t+Á´4v==FµÞrÙ%ÝÓîÇ{ ]'9#$j¢š¾—BœÛß‹?Ÿ[ OõDD0Ô LºÖäëQ“?_“RYC½ÓÖç> ½óh—1ƒƒj™í‡Ùé°-óÄ?({uÒ!gœÝº¢®pЉSq6±nEcMÊ> qÈi—uO»?ÊU‘?r?ÊÅ£`†ƒfñ˜áØIAèù”[ 8Yë‘à¨Ú΂"é]8gjTz”ë–Ê<ê¶>`ç~Éw-‚Q¾Í鈼ï\_˜Èv ®]l†9¢ÛF˜·ùˆÖ5U#7ÇœBÐnéfâykì¹9¾6å¶‹ºv?\8¯aHt·¥6gÁ¡ôžL&ñ¿åzºš).nÉ¥·‹Û¬®©ˆ“gì§uÙÍc—ˆ“úÚ’Û.ê~Øýt¶e,2è†fJùw—•Ý7"+SS¼(ψãc¢]Q#`"Ìaµ™uQƒc×€‰ðµ%—]Ò=í~œP½:v’¥8¡ 4<ßaVî&Î,)ìBY†BÆHü^»Úhê}“8'[½Ñ=jñ¦ÉפTÖTµ!¸m}ú(/Ìxéö¸›C¯ùû–íù1Ñ£¾onPž´C^æ²®¨Ûãn½æÖ¥GÝcßw_[rÙ%ÝÓîǾ½Bm÷̨؂4 rï¨-66-ÝôqK‘Èd=Å=3ò~nÖC‡cš¼Ëó5)•5Ô;m}þUfîxV»û.uæ ³1v®˜,’ö!Å”N/·œáë’ºn\9sä)¤îÕd[ƒòW¹¯m¹,•îi÷ã”ÜÖ±L)»ÚŒ±}–zï$’ïn!çÁº¥Z廓Ÿ³«ÅhÊ’^ÜÛ–£ÖÈ®Ö5Á°5Ðû°õi¡nG3éœnôvq˜4àÛžÊÆ*#(&Æ,ø!%Ÿ\ü¤k*†»9ÜÒݘe3Æ&űymËe—tO».œûK¾\êê¯`jÓûõ¸ÛÕ…Haq+p±‡¼2ˆ%]QÑ,8,x³.JŽcìbç^\[rÙ%ÝÓî‡)i± Å×Á@¦ªFQÈP‰¯;M E`C4ä{Mz$z´˜¯Ff»jèU‡ƒgùÿ´½»Î,»Î-–ÿO±B;²îU•Ú°C'Þo0†;9ï¸9.,õ¬œd¯MògwWI¢ÈA üS·},+½nóõ4û«1é{½´Ò¨'£äUíX9Iî,h\ØÚ¥ýb¿Oa%­,h´yL‰E¼>ÇÎx~Î-»üv÷ûôÅËëFÞÆgS\¤Ÿ@1˜ôDYà‡W¬¬7—ÂIHÊL+˜±*\ã«Fío*Î)ë%*ùûùõõ41莽â®Qs{I3ÈÏ¥d»É¾;åKÊ[¼ûµ7¾‰µÔrÓfMEÚ°±…iB»¼Ü^š›vûEìßçÜ^íÁͨ)M©`MCÝÔ,¤`ÕKžŸ†«[ñ3ŽFåŸRmŽqØöyÔŒzNZå q»¯§OåÍ–"· ÉRóðYxÌcÔÈÍr¥ÄßúI¥½™[)°–ng¦f!ãZØïsv?96%~ñœ„Ý~ûã÷áWÉ*0òÇ6@,{Àû?ŸÛBø¿™ÒÒŠM'q’=Á ÓFšÔ žs2ƒâÖ;kÐæëéZÙ™3ÁgÓ°â½òpÔùÉۂ'%®gJ.m¿Qši,%ŽÍ¿–c/ÝÒrlJ^Y¯Í.O…Ýý>'þþÂæx³0©PKp4ÎåËazÅ¥¹­èˆi…ñæ_RÑ™BIù4j{“/9gsnfx#Üæë))?ÒªƒôÇUÖ€1]»â Ñáh¤äƒ×Úì«›±’FVqXÃüc^™»e‡ç–]~ »û}øU6PD4nG?»&Ý &Ö†¬¿úI‰¯C´¾N;šd'VRn~Sƒ#GbõOÒØ¹ùÍ¹óŸ ¿„Ýý>}Û*WªEˆð³kzDvš³¬ÀgÜœ„52 ¹˜Pg;j+©e@Ò#$ͨsìbj¨œ[vù%ìî÷yߌûû@\îÇhÅã7zEòr ù0½V43ŽÂ嘤‹›4à& r5*þ)æ”UÞ·ûzÎ:,2_áZCÖŒZHýÓÈ Œ¤uIø¸#D³Ùi…„&!ò®4 °[ÀËæ±)ñ¯‹©ƒÂ.¿„ýñû¼¨ìûD û­) w“7'w“ѯÝ|y@.f+âRÂIhÙ$N ܇“³G-Ù$Nss„†7Äí¾žæC“ã1¸œµ]·ýÖð“h>xj')ýËA”Лe‹ÆJêÉ` VŠÄ¢Ô/Ç® õܲË/aw¿OO&wDfæÁY)¶BH™×Êqò¿,ødò¼Ö†¯äq¯×îÜáKÁœpâ&ÞF•‚Ã3­ò†¸Ý×SÅB*»Ûe­©yH3GŽ» âHIê)9Ýinö/ÆJÊ.Ó©A´±Q&tçØ”œîT7»üv÷û𫌟N”ÍÄûú³)XÅ@o\?]ȺŸø³BLËVD»Œ£påº .ùŒc]”Fy%£9e¥7Âm¾ž¶ #ÉmŸÔg×4·¿¼øë¿Ø:óI [NË~óÉöös¶ÜLÔâ[¶åØ%{ªznÛå—°»ßç\௳«&x(œ¿‘Že$õdZQø£eõJ+ßüÂI(nJ1ÐÁX¸qûG=-pÔK¿%Xáq›¯ç\àQÅV3"›P3ƒŽ´š7.çVJ¾¼»7ûa“±’rŸšÉüa‡{r¬”ø×š[vù%ìî÷éÉ9õóÊFñR<|ñ ãÙ÷ZÊ*þ8´Ö†˜p®l/Å♸9ÝÚ¦Xð!æ~­ôfåY»ç¨§;X<øŒ?»Œh±‹Œç¨0å(êÝSòvnvž|•„±½ƒ…¦£ž±øsìæg8ç–]~ »û}N9ü]Þ¯Ò pwýïBO÷Ⱥ¹±b­7!ò¾Õñ½’äü;ªqò«´_‰pü²4êûUjN[ép›¯ç‡Ìxž[1TjÀ²½A¢ù‡×¶+%2ïÍ>Ñj¬¤’ÌÒÔ‡ÅPÄFßÛ+ǦäCæØìôËØÝïÓµ’¥/{´dn¸/ä‡n¼m}Ù£plEpÍ8 /{´dŽüÐõeÖœ´Êâv_×Jµ/‹Ø8ÿ}©yZU¯³†~ÉÑt¦Äõ ìT¶}z«ÖÒísTj˜V*leZ©Æ¦„¿ÖܶË/bü>}Á¢&f—T+:Ï5|~ÔĻәÙVñimÈÄNBvIµ‚=x„#q«F-ÙONsÊJoÔ»góõtËžx¥9U$5|‘ ²èü<"¥¥äÔ•ñÚå”°–Þ_¡5àƒNl‰å$Ç.YRï¹e—_Âî~Ÿn{p~«ìgùÙ4lyCÇae sÁ™N7)¸‚Mûàݤ°”86ÿZš¿Wa Rd=vÉ"WÏm»<v÷ûðl—xßÙÝ×&ÓO´ê‹ð ØXëK Ñ÷Ô7;"ý‰•tg_k°‹3öÆÎÍcSâ_snÛå—°»ß§ÅÔ#~÷ãC¦_ß+ß‚'Ú¨mû>(Ox£üy®´"_Ö¸[ÄðŽIq±Þ%Öv4Ëèø§˜ÓVº'Üæëá#zUŸÂOj ¢4¸å`< °ƒoM‰'ÞéxìËñ`—£ys'MEN¨±ØÉçØ%=·ìòKØÝïÓ=P÷È]’K 37öþþo^±ß4…?Ú.=¯LlÆQ(™pGÅŠ/á.ðciT -Ì× oŒÛ|==™tþºqÅôÙ5ëŸ \3!4%¾?/>Y²ß~ꀕô^hY3b»“ØÎzDÝ“ÆÆsË.¿„Ýý>|*£†kÆÅ²*á­@¡uôxÔbΠtn˜ Pãa±µ‰—5pî\c¥ Žp÷bóWŒJÊ9e•7Äí¾ž~•IãzÆÖ­ÑRx³µ2è¹âšmmç[‡w¶GžyI¬¥þÆÖ¥a$ÎXFé<öÅóܲË/bü>|*£­PA‚[ÑÈTEìÈo­hø<[JŒ´>Lµ»¸T¢+‹°)eX'5ݺ…mîÖÝRâØš[öå4=uý>eoã!ü^¾ëK ÞøAb5øÆš¼xÀ§„Åm1`;ƒÆJZ¤¥‰¤ÐÑØÃŸcÎ-»üv÷ûô.l²äŸM1‘iÔÀx“e¡Ýñ" À ë(Y;Èׄ“ÐÝ–Â èˆÃáQk†Œ4§¬ôF¸Í×Ó½-ŠÐ,ÈíB¤Œ‰N?”ˆ‰.?Nc9²ßŒó+©gvŒ5WÆâ–cç.ç–]~ »û}~g2ÐÈÙNR q*ÎüJé¸ÝXøU}{°"[E8 ɘiEcSBâ@‘èQ“.ÓsÒ*oˆÛ}=ý*Ù¥ü)þ©¦©õþ®¬¡- ÷”2t¾ÙÙÄÆXI%û¨HewbodzlJükÎm;ý2v÷û/n¨±¯P¾¥,Ýn(òe—’háQæÖÃ$ž’6ÒzÅ2`…ò^6Cq&Y¸‹$?•‚ï¥ï™VxcÜæëéõ׃»‡:“–Í–—¶ÂÐ啌”2>2^;9$Œ•4ó i [PÛq7é±{RHynÚí±?~ŸÓwU&.‹Í>5¢ÉªèúV;û¢6ÇRòÅ´rÔ«RKÖ‹•Tì´¦à²ÒØ¢×ǦĿæÜ¶Ó/cw¿OiÙȲû]T –š+Þjæäý>&w0ƒ!Ö( ‹Û…°FÚ¥L¬¤åаÔàIM,žÔ{8c>ç–]~ »û}º·ýÉuù'lÅõù»›ŒÇåAÌ  ÞÛ¶‘ÖgMá$\þñZÁRTá&Û7sÔé_®ç¤UÞ¨„uóõôÄYü›èê7aMCdœ3ã!X.\¾Jâ©pðQ‘}ò¡vúJÔ-´¤‰®D5±QïØslJtö½6;ý2v÷ûô†zÆ‹ìn¹pJÑÙå ´Ö÷`ÿ7l)Ðd}ÔÊ8 ííGEeÞâ­þù,¤ä'çÙì¼Ì0–Çæ_KÃKaI+ì±)ñ¯9·ìö”Ø¿O7±Øê?Édâɽƒkáa—³ŽRÐ'I€b»¹ZZQ jÜ}®6lV°í™p${Ô¤ÿñœ²VíÀÛ|=ü*ãêJý¥G*¡™È¯ûJ Ob[úvª]oÒ6HüÒάWa-Ìͳ¥ë‰mxÎDìÒù±²ƒÈLßkŽdeÍ‘pšCVT~ Ršœ#ž“VyCÜîëÙW‰Î`5®Ä4nÅ`IÈ¿ýM–ÐPÐB8AŸ´^èù-œ„,–±AQã ›•qÔ¬”ñœ%[™Uãv_÷@ç›è"¡Ü)68ÀçB«“ O1y²d½püNÂÉgR,D»‰[X4*î0§¬ò†¸Ý×óq‘þQô5©Y¸­  RǸ®eÓgI~´ÊfGŒ,±’æûØJÓAAc,*/sì,Ì̹¡I¿€ýõûH}{u4ŸMqEžÄ…ˆ ò÷hð¤¾\7K iÿ¹q²^Ç ðÂ7"zîQ‡ƒëž“VyCÜîëùW¼ªu¹$5¼‰óÁ›¬ê«¼-åWy¿v–%VRÞI¦†¥tÆâÊ0ÇÎkÉœ{°zX~MVï~·7ˆmcÃÅÞçU|_i"lx¥± wŸ=ov•Ä/+³ý‰“ÀQñ§RàRR¸75jËÏCsRa÷€ûñõt§ƒ´ pº”’¦£7y|ÀØTî6Iê»È µ×0‰¥Ä±ÿh ȽŒe2ǦĿæÜ¶ËSaw¿Ï¾Êß{ÄjtÕhÅÍÞ’x¥‡ 0Á'Hoz<޶>xk 'áò… Ý¢…›hH¬Q§“Í='­ò†¸Ý׿XÉO®È]jØzH­4 ˆ’ÔJS’×½òÚÕâSXKÙ$)5àRJ,ø“rìì“”sË.¿ˆýñûp­Ääx-JW‘;ïöëâ§‹ó<Þ”aO"+ÏyÂIÈò+X+\caGÍÚÏI«¼QÕíæëéS‰–Ô ÛÒYË’³|?9Ðb²vó¥ä3BÛì¨H¬¤žñ;k@õžXr´xì$‰Ï¹e—_Âî~ž?ÈWWA|ÁZÊÕI¦£NöI"$ 8)0;FV¦Ñ'¡8 'Eô³XÆu”»jT øSÎ)+½n÷õôz±¢ŸÍL’).J–GÍLâvï{˜§ÀC0h–má–qf’ H1˜àG\g~G홼ª9e¥7Âm¾ž^/.l;"³[UYÖ ë%Z,Ä…­.¢YXÔQQbȆL²?Ù¨%ÖRÏüek|M,¨ósìdÖϹe—_Âî~Ÿ&—£ÁÛSÌ=dEe6ê|qâ±àëŽñZqøNÂ[£LÅý0À ÜEO£RàKsÊJo„Û}=½ÁŽíŠoF¤áÃ}7;»wÛ{f®*÷Àv&+©fæª5`ß5¶aGë±)ñ¯9·íòKØÝïÓÄ*@=‹ð¥ˆ\©›§T £2m_Ý×…=`l⥟XHšL‚$B>’h` üSÌk+}nsøœ•'ÒÖôõHjp:fœI'¢ºúáAž’Ù”h;ø*+iúUœ\ò&¶ãSõØÝCÎ-»üv÷ûô-Ë»úöp·†}Ø [íTöhúò”œñlöÛ}Œ€•ôöp·†}Øevýöp÷ܲË/aw¿÷>ÁMÎlÿ­ÐL²ZM¾— fJþ·^›ed‰•42‰ÐšÎDsaÍ5vË4BÏ-»üv÷ûœ¢gÐÝW%R &– ñæšÌ9Aù?ÞÛ ÌÁV$AG¡ç%‰é(ÄUæŸpÔš7$šSVz#Üæë9ÚÅ ãú¶|¼x¡ÜK¦ÌŒÛý;¯™rnÙå—°»ß§(÷IuþÙ7.éÈÏÅX 8Ýš_ÁÝ-­¨ZNÂõÞíQÁüá˜9 Qß¼ÍI«¼!n÷õ´îãò±OqôÔàm†¼Ž¯*2§®‡ûÓ­V'(Ûo„µ”ÑôÔL¯€…_lmïØ#WOÏ-»ü"öÇïÓÕ³¢’ññ¯VŠØmT$ LJ^y¤B…?Zh[MëÙD¯8ªWC’?<Õ¸ÈÓî•ÿ´©xVº'Üæë)_( ¯’O¥5©©…E‹ÊÂâ<ÔSrLdnöén!½¾RɧRšØÔÄÆ¢ÛslJ¾Ž¨›~»û}ZžŽ_ØS÷K½P4ßé}O÷•Þ²à½{Ig‡ø 4ßçÝC£ú:O?b`5ꛫ9m¥7Å7yéëéZ9}Uxùø% 2‘ˆÉ‹Çxû•Ë×ÏÈÕïÚì(LM¬¤æ®Ê©AçëÄ¢óuŽ]ÜU9ç–]~ »û}ú‚E±º¡›šPšJ® ”¹E $ÈJl@$ù%Û6;2µ”CÖUmMlÐØö›’?ÇûµË/aü>¥è©™ Ëi°sV’Ê‚y¢Gù“öŸ“K¡í‹-@„¥Ä±ù×Ò°5‰°Ì ðØo‚ç¶]ž »û}^ÓüÝ#ÆÁ¿gMóDР3«š´*]Ix@œ(˺DÖ…+ ¥àvI8n—4êÈKÍ)+½nóõ4E¤#Š¿ Ï®A­J Hè1˜¦QRrGÛì·YÝ•TóÉüB-(ÈöØ”ø×œÛvù%ìî÷iÁäЩ\}­¨¤ôEê÷IT’lþh;1ZZoEZK¡d)6Q Ü»A˜­QïääÖœ¶Âã6_O·³èÙ­tœíc ÙíÍ-€T?pTKÞ ^õµ£ª8±’fÞôXƒ+ëĪóŸÆî™íóò¬þú%ìî÷i^ÛOó½‰<¼¼ÆuÊx‹Sà½*êSlk—q’{Ü „°Œ¸GMâqÏ)+½nóõœÛ¶+ƒAÖ¨¡<^ÚØ(ߨF-Ë>neËÉ®l9a-­ YÃ-©±Ü®zìw;ë¹e—_Äþø}ÞÍi`7¹\ÌCÅ…¢Ûï«?x(xššø¡_Fµ©,ÆQX&β‚·ì ÞqÔáÀ甕Þ·ùzN.v›æxAjŽþbÆ™+%¬g×efØÉy`¬¤æxAj¸²Ë•ÕcÇ rnÙå—°»ßçuYJO_Y—Õ×›ÌáT\¯#‡s¤Ä«¡Æ«(Ù;/­„í>”j·'xÀ…Œêí)ðO1¯¬ò‘¸ÝáÓ;X„*Ù°Š‡‚ùÙ`@6`зö”Œ]È>M£^KJ›- ³-,!ÑØå-1éºÚë©°»ß§9•¸îˆP„Óž©hî3D.Ö›íº.mlå×ÝÀˆ ¯è_¤¦óy&E!ËpÝÀ9j›…sN[é q»¯çœvñáF^BON»¸aþþævEÚö’ð6Q ‰ïÍÅÆ†²£  ±,/àØükiP9"l,¯¨¬ey%þ5óm—§Âî~Ÿ–¥ƒµƒ‹ÞgS(6Œr¾‡©e‹+ÙʃÕâZ'+XÛߘrïÚ*îuŒÃÂçQßµUsÒ*oˆÛ}=}*'™v{,JŸ]ƒ qát)½àjêé–|VSƒ&5±–ú»7!¡³°…„λø›sË.¿„Ýý>=‘ ’/|ýNM/fž œ(ñaÍhO‰çìÎÒ>A7l,%Ží3ÌPâÇ“ØFFFMéGu³ËSaw¿ÿÇWj]½DQÏô? R«#i(U]bIÁíQÝÛuóªôrxɸt×|3g·­ÄQXùmI1±nà†J£Žüª4§¬ôF¸Í×óàøÍÄ|„ܤ³»XÅ}³ , ¯W(98Þ6ûdذ’ÞÎ0Ö°¹€±È_ͱßÎ0ž[vù%ìî÷iýõ"¡Ïa8(n¾œ"›Ã!nO3t@°máƒÀQù§T`îbõG½Þâ(Îi+Ýnóõ´ž¼“#y¹7ljp½•FQ÷€³9ŠÚm‰‹îrÛ=Ø/¶¿ör§Øå²‡ËÝbGy±#ŽÁ9öp?Öœ[vù%ìî÷9éy½ÿaaéçUDs^6ƨ`öÙ²J(ðå…JYƒÓ¢G£þÑ7d¿"Ž%«õz/79§­t¸Ý×sj€¥~*++Ñ|i³ØƒUýZ>À;%~Ü“Ù'ıý×аŪ°…=V56%þ5ç¶]ž »û}Ú…™×r#n+nÜg>xø/®½Rß)àC¦Bq°.1#Gae8M ”ÞÇ„:²^YsÊJo„Û|=<ôçŒL8U¹¤†%(Q¡¨‘ŽÛî8‡§Ä@§ÒÍiŸFk)«\RÃòcY°â±³Ê%ç–]~ûã÷éS‰ Û‰lþϦÈ&sfHÜàRàóƒèÿÛZòûF4ŽBIn*ÆcºÓè4~óÁïêás¿ô9ÓZ•Kj¦¸+G={*§Ѩô#5øÙÇK°’‘jñ•ÙSò©fnö‡íD„•T2ä*Mp3ôÄ~ß2mæØ”üò®›~»û}Z?ù˜½ÒÝ·­aÀ`¤1´0ðaJbp‡‚´ã¼XIýíÁ- ùØŒ­ì³­±ëÛ†[sÓn¿ˆýñû/ˆlG¯û«Ô I‡4¶º½ˆ+wþ> Ê®¢°’†Y©AVNbA”c7ß_åܲË/aw¿Oix‘VMú K‹&dy ð T\_xÞãhëÇ£P38NÅ|L„ömŠüË‚ïäçk…7Æm¾žÓ#u%\z;+ 93Fc0…œ£3ÐÒ“&n(GSv¾õ•TýÎ’&nWŸel\­>·Ç–ôÇaúÍ¿»û}º-qÞš+[J"ÍØ@6TF"æƒl[ Üx"×V÷JÎ]”ܺP ´°5®£9¡FíÙºPsÊJo„Û|='†¼É‰3¶s›µ<ÆÌÀh¼7Ÿ•ŒyqäŽm³w³^å•0ö=ñ{¼H 66y=Ǧį’sËn¿ˆýñû/PC¬ˆª3îð£˜sñc}Ô­Ù­<9¥¢3¨Jœ…‘ÁT):vî‘U£¾ ©šSVzܯ§‹ÄJW&@XCJꊟžnöƒ¹aKpæû9¯Ôò¼Ûö›Þ'J³ðu‹VŒ9ö̯Òs˾’:ªþËïS:Ü·³ågS;ë+|÷¼ S¬–‚»Á'+˜È„“1})TíL\„¤žŒ_Þ.iNYép»¯§ù®ävþ>GŠJ¥¦£$ì!tô›¾Ú»%l9¿;ïÙ_;s]Þ¹W–5HdJ,ž³»8*•sË.¿„Ýýþ«vLä[7¦H=ÈfL“ÍÚÙ/‰5d,Ø rã(Ô7E…ŠìLŽíÈ.LüÏ×Jo„Û|= ¦^lÚ9ÞªiXõÞ™ZÃRø>)9HÁ"Kâ&(·4êLB.Íi+½nóõt­lÌ”1æg× B0Ò4^Æ“Q³ç¯|rêdwÙ‰…•„±ÿhcì-ŒmØvxlHükÍ-»üv÷û´ï‰K”Yò6G fq²õÈ÷­QÖŠ ö¥¿Öí¥pJÞãPñÝ—E”•¸q‘¼ £RàŸbNYép»¯Ñ…’‰QJqMMà uóv:>UvŠ\)q=+$Ë¥ýAv§±–ªS\­)¬“¶°†FcSÂ_knÛé—°?~Ÿî`Ù‰õv@ÖŠÇ}޾/³…râÆ2î5Q `+ªŒ{D¥æ–¶R\h¦ñ¸Qlä¤qT ï×Jo„Û|ý‹.”¢&ŸoÊÌðC'ÈÊqZ±äÃH»L kif‡Ukn…í{‡Ëö2ynÙå—°»ß燑¨úŽÔ…+O#Ð46Ò¹]|ÓtøMÉ›”º¬‰—ET£ûõ ©¾…;Ô°(Ëô½%JhnÛ鱿~Ÿ¦íl"ïjÊúÔ°&Ê;9ñkÔ ¤ÄÔ4£K;šÑ%VRVõ¦S{!ùÁcSâ_snÛå—°»ß§ÑY,Ô7ŽtŸMÁÔòÊÖ ƒ/!ÔÌßïɱâ¶ÇÖ;2oŒ£'G+X{ SÒ5j6Öðœ²Òá6_O£xÜRÖ¬MMeìŒÐÚ;ÑÜK&8߯²O7¼R\n Í¿¦&úz܉-7ûÙu§åe¿;m~e׿WØÝïÓWôt¼g2gIÁ.âßÎBºéà Ùm!÷z¯uºÆãJaæÎW öüŽs5jOŠ Í)+½nóõ¼u!ÒHAÙðÙ5 ;äèßZp7Ãßµb¦Ä`xqRk×Õ•XKÉ‘š ±h’c÷ ‡ynÙå±?~Ÿ7’ø w2¥Z>üÈx _“wœo? "A[ŸØ`G!9R­`ªµpÝbÙ-ÄÙ–šSVz#Üæëiâ9;WÜv nŒÁ¸üžnÁ'¥ÌuÛìê3E¬¥™w“=ûP•ûÅvfÝiìžõž›vûEìß§ñf¤Ôš­¸­!1~ÁB ãÅØWK‰K!zÛùB0ÖR6eH O[ØyBc—lÊà¹m—_Âî~Ÿv¡|P¬s'ÏKj@Ø *6f°ª]R½Äâ×7ûÀCe¬¤d{IÍb«°3~ê9ötp;ç¦Ý~ûã÷i¾+ú\ÆÅ²³Ð©`ÁÇÀ;ï.ä’ñ³¡À»*>LÅ´3LêPépwVâI±H}œ >8êVuË9m¥7˽hÓ×óÚÅ<“Á¸;îyóÆRô=ó^ɾhQѱ6û…„{c%­·É4ì×d,û5yìñRknÙå—°»ß§{[CßÅÉV4OuÖŠëÒ‚Ë Þ©Ž×Š– ÆuµËr²ß/Z×G­×ÄþÑ,8|_¬7ÄýøzNwÛQŠz'Q4¢˜¾Ø…‡ÃÆ(°$% [ëЮÞÂZº3,oÍÅòb/1TßæwX^sÛ.¿ˆýñû4?_W'±‚Uù¹7⇑W-àCèùk_›qŠ#$RDß0.rø–G¥À?Åœ²Òáv_ÏïLD,ó¼w&×[ƒQùqÆ»›w&OJ¾©+í­šÞK]5ŽÏUÖ4ß©TÞE‚¹Ç®™€î¹e—_Äþø}Þ$xbùlšZù° °–1Zÿ¤š’·¾ÙÑç%±”86ÿZš›Ë0±‘>?slJßìòTØÝïÓ…sb·yϤõ³æâE¶ÈiLu1C‡Ò-³åµ—ºÒki:à™, ‰%¹”ÇîYTé¹e—_Âî~Ÿ.œ+öQX¬GT ÜøƒBeX“U=³Ià÷ÄKÖYâ·%œ„’­B¨ˆêóaÜlºw•ûû2^ ^ÂÞ¸åWKá·ü÷{}{#m+ÎÀÆÝjjèkx)xý*of5ê{q«9e¥7Âm¾žÆ÷&öß%÷v|š¨ú(q´V‘†§¾`Œ(–¸ÞlLûƒ`ÆBÒØŽNfÚF+Nbã´º.-é"­¾vy*ìî÷ùv–‰Î÷ÌíìƒxNI‹_!ÙM­¼Gí5­Wìj£ðÒ7IQÌ|ѱcQcµàíìÓÒJo„Û|=ßÎN©Ôº05oÀ < ¯ÀÅÙšMŠcKúlv3%VR6)N 7cI_ã±k¶²òܶË/aw¿Oƒ¨Šâ9¥;¥¦²ùÈÛ‚2ê«"ž>øUIª%;™y…µTòåIÍs“ƒ PVkä·ÈXËJŸ„ûqùtÍÄõUÄU‹×Li@‘+Yã*üëFçzJ^3WjbMŒçMXKÍ;§Ô %º±®¨=6%ŽÍ¹m—_Âî~ŸÇƒb ’üâ©AQu´ùŒ¡ ŠªãÓ,—%ò-5ñÅ€2‚XKÉ2žÐ…'Ê;‰ÆsnÙå—°»ßç µ±©í­X¦³ê`1Íj°"A¼ã­Xx˜¦Eûn c-½é·ÖT\‹¤Ø{K¿ÕܲË/aw¿ÐºY²§¨—‹5àÂmæä‚Átw ûþQµ±äÛ8 oã>*ÆÃþ™À fùqÔñærN[áp»¯çÉ$¨An&ÐH ŽLHèxðÆ Ý™’t'u6Î’wÚGs‹Wõ´¬Ëc;™DçT\·Ëyý¦Ð{nÛ³Z:°?~Ÿ³°a¤9ä¥Xä¯(ºðèì_)x©»jZqd…ù¦9SÑqœ®á–L£¶—CžsÊJo„Û|=¿H™¼t^5¨ ŸØ$Ïz„÷gg3Ã+ï#§(Kdg‰°É|â¼ k¯F„íÈ^ðØ=³<·ìòkøZåõûü«L¦~§ff«ŸÜ4Š´=)ù;ª›-+)S¿SÕÞX¤vçØ™úsË^Ì„3׿ü>¥ó]ä £Çg×\x­OK޽u‚à\W:°ªÛ¾@¸n¬%ŒÍ¿–†u¥Æ²®ÔcïûsnÙå±?~ŸoŒâštdù¾5%ø¸©(—)ܾ̔¼1º6{C~¢°’FÞJ§%øÆ”ç{ì‘åûž[v{Jìßç‘¢ï¡ctœz>»¹8­)Ñeʈ洔ÍAÉ„ílùj¬¥7ÇÛP1$¶¢´ÌcWßçܲË/aw¿O;Vv2Ò¯·e¥4dFeÑV”"?,|zRÂg1Pb;ƒ(ÆJZoãJi&;P ;ÜœòI‰­¹e—_Âî~ŸWŽ…ß}oY9ͯÿøÉŒç1:Þ P5JÂ3Å$uÛ'Jµ´Ì—ðn%«9ö0ivÎ-»üv÷ûœ~ ïB°}|v Nù}ãÍz×KÂgÏ:à´“YØXI=™.­iØÌ >‘»&٥疽ù­ ìî÷i 5!ñ½èßš0ú£¹F4/Ù|#%=·ìòKØ¿ÿb}-è-1·õµ ¯nï>ÛÎR¸ M«$y}-›­«+)3Sâ5ÜD J{øL—sË.¿„Ýý>ÍghÜ›ô$Ķf°r¯“{u²t¬ð’°.DIÕxí‹›Ca%eBzjؘÑX¤‰çØ™žsËÞÌ[žù}Nɧ‹zg‚§5¸NAºWTÏ¡jr)1 „|Ä´ƒr-±’²?Mjgl]¬@âØ”2Mí~íòKØÝïÓò{ÜxÄAÙÏ«4°%òÍ6õ:êÃMëÝN¹O.²ã)±”86ÿZäì;™P¤±)ñ¯9·íòTØÝïÓýðí§@”Ê©Yز=ŸvF.…ÏÔ•¤ï.vlöæ'tÔWšYÄn ÈÍÛã™cwßwåÜФ_Àþú}úÆ…4zÖjß$Í@â{´1Áa®™düJ‰k`E”ÝöÆ·#±’86ÿZšyŽÂv${lJ|snÙí)±?~~¯!åQÝŒ 5$€ìŒ?@vÔžHâ³r7CûhÜék)Oi©á…†°»çzæ¹m—_Äþø}ú¼NœïgóY=5Ý ™/¾•'Ûþ>)ñ™züÖ{¤RÍ÷,");1§†.ÆB™cïSrnÙå—°»ß§ë+èb—ùè{•†cVr?Ä~7¢‘w™×@—¤ýæ~YXJ›}{Ï{ÄF´l娔ø×œÛvy*ìî÷iÚÓjgs{ŸÔ`°ÆÞOñ½‰Ák¦ôG«ñµÙQœXIÙi-5ÈsI,×+ý®gž›vûEìß§ëkÇ›1Š2t~µ†çÄò®XÕ"‰¤#kE×À…’í¨ÆI¬$ŒÍ¿–¦ƒ÷ÃØ†RÝ2ÇÔsË.¿„Ýý>}·˜/^·»kHƒw;.îIÙ_ãI‰ïJœ°ÓRÒÄJjÉBd Ù±Œ-¼“ÕØÅå¤9·ìòKØÝïÓø°ž‰æŒ³Ôà"ª>ãb—±­)1†«'Pv¼2+©e‰­5¸¼H,cUûeynÙå—°»ß§çWÄëÝY¡Öðº÷â¾sð*øµ®$Ÿ1c+n;w¸ÆJº37ÔroÛI¾¡±)y5®×k—_Âî~ŸÆ‡;ß~=õÏ®ˆ4ÄWÄorò@ÕSúãhòóÚ/Æ„•ÔM=š†­¢±¸ûϱ«ß9·ìòKØÝïÓ8âôÍ›÷ÃÖ\[f}7»‘Þ¼g»óü:žNhŸ,¢ÖÒÊý°5è器ÎûÛwxÏOÞ~Úå—°»ß§Ï+òâ³3±5dC¨l‰;ȆìSò ÍóÚ[ƒ«±–jÞþHÓ?¶ß¬éæØ”ü.˜›~ ûã÷iïõø^nÇ©ùžU ÛgÇ`!“.¢wñã¤äXß]^ûÍTUa)ͼÁLÍEJ\b';hì™7˜žÛvy*ìî÷é¾iÆóßKw9¸4Øõa73yëys§“’wBs¼vc'VRO2kÈÔk¬vY»:¡"ç–]~ »û}ú½îdð¼}vͦچ-ñM 2:E¨…Òý jíHL¬¤÷é¶æ"ƒ,±|æ<öötknÛå—°»ß§5ÄHÅÁû¬«†XšÁoó÷¦øï•c¸è>‘öÉs°Ó§¢áFÒ°3±ì ä±ënþÞ?†_Âî~Ÿî›ÀoŠ.ÇJµf! tò4ŽP‘NµÀy*‰k nm¿*» kid ©5¹ Æ6<»½-@5·ìò‹Ø¿OϯØÇç£ÜÔ°$ ‚Í<ÿG³ÎŽ$4IvP%VÒÛÃÓšAa»9£FJükÍ-»üf‘zý>MèÇn<ò“†ëS¥¹@¤ÛÀ“{Òˆä7ðhHâwƒiÇ-bb%-S©™Ü= ;¸{ÖØ#ó=·ìòKØÝïÓó+£²œè³kDRqÚH$¢ø.%Ÿ_ËfGÚgb%5gÝ¥FD#Â’ZÄcÜäܲË/aw¿Oï_SŽÏîÑ{Ø„õâŽt|Sµ`Ú+%Þ¨"žvøk¬¥ŒÄ¥¦ƒ›ÅXÄÇrìŒÄåÜ´Û/bü>]_ÑJ룞Wkb÷SÙŸqý©ÌЙqÿïÿí›}ñ]*¬¤æ»æÔTÜ» ~¥;é—rnÙå—°»ß§y07ߌ+{ ZƒWE0i)g!2ëkq|×™÷‘d¿ÙãÄZZYèf ~ʉÅÛ&ÇÙkÐsÓn¿ˆýñûôþõæí:6vÍâ­'6qºxPëÝŠ%|ö¥2N{™±ßƦ4r—e ŸgckQ5vËNDžšô Ø_¿Ï›ï ÆwuŸ“t>Žnä‚VlÌ#¾;Sb ÷fÄWvÆŒ•”-¦SCæ:c'Ú xìéûΜ[vù%ìî÷y¥h®÷~5)ACB‚10ðU™=ÑRú£hòØì'c%alG|c¼w{±‘A]’ð×sÓn¿ˆýñû4Þþ›x&Ìÿ`͇C”¹0Ó,bï ºKr ·löÅ|Ca%ä°¦ƒÀX4äØYœsË.¿„Ýý>¿½Ôøè½½ÔiâTwelF±ª=)e w½vÐÍ+©ecÔ 9†± 3e†h¿œû†{¿Ï®m{ÜÆiÃÝ_¬x%%ߨ¶Í~“\\XIyËhÍw5=±ÁÝ7slJ¾½7;ý2v÷û/ú7©´ÇçWiHfVùsœø‚g?¥?Š&Ï•öVw ÖRþ†SÃn†ÆªåµÆÎßpÎ-»ü"öÇïóü&ÄÖ‹ësRƒ–%‘cT¹"fÿ÷fÉùM³½ö†“ ±)åîÀšï+jÄ~¿ì¨¿ÑØ”œßsSc¿ˆýõûôü:p¾byåÁHó]#ј´Ê”¸à)qÅäÛÓv.=ÆRâØüki.”ê Û›qlJ>í¶Í.O…Ýýþ‹øpgÑýƇ™G/õŽnÓÈ#bô’#¾¥¼vU¹ K‰cg|øÆ7UžÄê쫱·³±æ¶]ž »û}ž?ŒöTÅmSSÝL4nYÎ˱Ÿ­)qo3ã•}2þ+¬¤Ìl±¦“¬NØŽüIÝ3SÓsÛN¿ŒÝý>½§#{Çxò>Gšï 9îd † þÚå+%>S 7ª¶wÆ…¥Ä±ù×Ý±ÂØæ Ü3ǦĿ.Ž&‡Ýžûã÷y1îTbÍhG„fÄ“ÐÉæUl…ïÂ'%GëkoÅrµÔ’YÒõ²¶ÄCœcï?snÙå—°»ß§û&ô¨ŒU+Y$¨iÈ‹ýIt[hÈ™Q`JÞ7Õ×»ù’XIÛû¦Êà`ÑöûOÂǦôG;¸k³ËSbü>¿WÇÉcæ~Ø\3áÆ´±ò‘÷ê=%ß«ÏÍÎBc%ÍÜ[3²0¼!ꨢñžRÞÖnvù%ìî÷éúZ)è&½KÍ@óƒfÄb›Ï[J|¦&Ö9ÛVDc%e[¡Ô€š8±€Ç®Yƒé¹e—_Âî~Ÿ}¯ƒ|ý×ô‘Î wÅ&È/¼ß+šÞQ_â§ZÒÚÐøN8 Y`Ë„ëñC÷¨Ýë’甕Þ·ûzzdȧãý³kn¢Ö T‘X„Ärì ¾åܲË/aw¿ÏIï.(f‹ÍpˆÓ“^ÍyÙSòÑfnö‹ÉÛÅÝ!ð@>N·L 9ß„mìñ¨±[†t<·íòTØÝïÓ«¹‡„YÕÜã©i¸S¸‘Ê}íbwWÒgõܦÞH…M;n¶+©¾‰2ÒðÕLlPdÅž‚cKâ_“l_vû¥×úî÷i(‚Å^3Åßö¶ì\º:Þt.()9Ñ6;Ic%ÕLñ·¦ \/lc‹KMé‚"÷f—_Âî~Ÿ.©á»r¹ß|j¯Z Á¾ÂÈÖk‡$_ŽöÚ'?ma%]Ù®ÔÄz« 1(sî7ƒl¾ØÝïÓçuró’x©¹Ž_¬|põ¹ÃŸ)¤`¥ýá(ìãåÖWsÖ€7-± »Ë±“ /ç–]~ »û}Þå O`sÚ@j:ž’,$Ñy2ž’gðyyXyÐü2í`EK¬¤–‡k˜PAl<‘PÁ±%yÃ<7»üv÷ûpIÎYÏ?d0ûl Þt]¼< ŠS Xü‚ôµ‚»Æ8 ŵéRM8R¡iT üS¶¦•Þ·ùzÎ"ñðRAÄL©é&Q‘&HIRœ$1É×>™"¬¥$fJMaÒ±3{×”¸¤rnÛ— @q”Üý>g‘(¬€ºîd‘(̵"º¦ÚÓÊ}¬êRß—iÃ^%í$A0–Çæ_Ks›vÇxäxlJükÎm»<v÷û/:—‘òö’* ¯ñU+^xů:ò’ìR‘+¸6;úñ%VRþÐSÃc‹»¢Œ”|Rj›]~ »û}žÅTø¢Uæljöä­×w!‹ŽÉ]e\Åm#ilvÞ¯ kéö/>5na…m‹õR›’³˜Êk·_Äþø}-ŒÛÊ‚ƒÅg×€ 6"vqÓY@dÛøBäháµÙñn6¥é8jjppI,.grìÌ+ȹ¡I¿€ýõûô{åÒÔïÜ*I#.ñÆeM<ã YË’òܹÙ0KK‰cû›‚µaÆFqÜcSòÓ]7»<v÷ût«ÄLÝZ¼}H é¢óz+©¤~@’!ˆ Ûž·„•T’OKšBª)a É¥46%o¬žúÚé—±»ß§§Tpj½zÑ)•ŠÎKzðoÓßÅúk >z^im`NBs°ØŠŠP¨pœRµ8Rì9e¥7Äí¾ž~Ñ®ó˜ûÙ5“ïÐ."Ýn*“+;“Åf~<¯} ëÎXI#Ï´Öt³g f~•ûû%/õܲË/aw¿O„ˆˆÇCe:RkxÁ‚Àîb£Ö8Pú£¸?¯]WÂfù•éH¥QÁ•°÷†»'ù‰ç–]~ ûã÷)A^ÍGPß«57¼à¿EhˆìRQþM‰›ŸÉÇPöÅ(H÷í0¤–gZkj|½‰-¤¼Óع„åܲË/aw¿OO3c /‰¥5d£¬…ÑUVdùIbp™~iǯ2±’^*KkÈIi,é*=öËfé¹i·_Äþø}º¤² ›½>»†õ¶‹ÁƒF–×qOJ^RÊ…&–L|7À¦ôö³†›e­®ÇÎ>b9·ìò Ø_¿O¿W»‚ÖT«ÖÝ*áî6îµÔ\*5ÌÚ®¸éõI±N‡Ø}’¬ËaxØ/DËŒ•ԳŔ5j',³¶=vM&SÏ-»üv÷û<ª¼8õ üZÃàíÀËa°€Da)ù¢f¼vRÔké üZÃà­± ìzì7ðë¹e—_Âî~Ÿ~¯8æáæY[%k·3 ‰Ï­ž*¯G’1ÛØÍÞùMk)sSSÐQTØÈ´ºslJ¾^»ý"öÇïÓÜ}Íë› l óyKgfs}Ë`ÖØ› \2óú&¥²²•ôæ[Ã|^c™ëë±ß\`Ï-»üv÷ûô”Šèä5œâmÅäĈd~ÏhÈ’Ã-ž'qik+ÚâGa8¹ÛŠÆ:â*óç8*þ)甕Þ·ùz^^+Â]Ý]=5ì ?‡m0˜eQSÂcÔȳh;y…µT“ÔGš‹Qya¯›OǾ’†ÙsË.¿„ýñû”¢úæÔ´ÐÖ0”;šO‘ÎÀJvIxŒÄ;n;yÇ•Tòe*MÄ“®ÄF<éɱ)ñ¯9·íÕ·§Àî~Ÿ~ï‚]«z¾¤†U?*G»ÜVúIɡܺÙ1Lb%%ùKjpa‘؆\ÝL‹“sË.¿„Ýý>½K½™$¿\ª›¶Ýé¼9h KÏÏö%fzõÊÞ3Í¥½ÒKÌnÍ$í–°lÙã±GÒ{nÚí±?~Ÿß¥ÞΦղfaê¸ešøÞ* KJâÅBhûÂ}¨±’F>Ö ÃBbïa5v{ïi5·ìòKØÝï¿è¨ÊD1§u[ƒv…ñM,³6J¸Sâ7µt—l‰•4ÞîÒð¬dlÃÍ«ÇnI"í¹e—_Âî~Ÿn•HŠÿ}ƒ/~­©ärzHÙ¼ùé)ùJmnvŒµTo³&Ú×Ä”Òyì’¥vž[vù%ìß§K*†_ɨk²B`VQMbÍ+étÅi+’qŒ£\ºVW}qëaF]™ñ 9m¥7Âm¾~•íf“l½?»æv¾M$ÿχ9¼à®•Äà,ÛÀÛÎÆiÂZº21ÅšåÞÂbN¬d{¾ °æž^mà±?~Ÿ§'Ý ÅšIKšàƬ‡àÝKäf—å*4·X-—‰a¿]Å,%Ží䈦ÐÒLlœ4WŽMÉéI÷f—§™žôú} DOÚx ß¹Q‘È@Ü`H/>Ûh½wYò½Øš¸7‹—%±–86÷±Ò £¨±…$»d Ïm»<v÷û/ú¼u(å èwœòsx‘Ä GC"¾$ŸfFyí`ÂM¬¤ñÆ*¤iìË ,k=vÝóƒ17íö«¹Nãõû4@Ȭ‰šUש¤½@4=ÞX$+bb5«®ëRÐ]öÎoYXIïí¨5•‹dì¯ç;«®snÚí±?~Ÿn•Ò®l´Ishµ2²3*o?ßÈÏ@0 íèAŸXI-+­!¿°±äöØ%+=·ø‡å—¸‰w¿ÿ¢à…­¤:-¤ù¬èÉÇÍQD§Š–$ùvt´_HÍ7ÖÒtíSj†9öUçAÝ“YÖsË.¿„Ýý>MOªXÞÐòü³)ÐÈ ®â¿ŸìBǃ¸‰Ÿœst½Vt£4ŽÂt¢²ƒÅÄa;ìQ»Ùg=§¬ôF¸Í×Ó݃öŸMÃ.ŒQÉá¾~Ÿ¿z‡î¸Ÿ|õ¦þ&® X _+%¿zï×~¡¶ÐXKÃíRÓôróýªïØyr˹e—_Âî~ŸGÙéY¤jÍt6ö`S/4ÇoPÒÅ @¡#;"¾ÆZêùZƒ3vb‘‘•c×7“[sÓn¿š³À_¿OŸ×Î7øÌïÕP“DnãI1¾·grSzç÷ú,n\e¿PWb¬¤™ß«5|) j’»ç÷ê¹eï^£€Ýý>/¢ùnPîa>d+Ø5)îzt謺Îh|ô|¬@™L1NÂðkÆŠnÖ“‡:kŽš¥ÛžSVzÓÍŸ¾žîz™|W¼ÞõJ3p4š7ºéV -¥Ü™Þi_(O5ÖRÏ[4kXÓd,ë<ö[å¹e—_Í”¯ßç_Ý])Õ,5èAöÏHŒg¨¶¦äWoßì‹Á[a%%³nj@Š”XðÝæØÉ¬›sË^}çVÊ¿ü>Næ÷ö+„“9—“'äáâS}ÉßÞ}iŸJiæÃ{nb')q56%þ5ç¶~»ûýßëw¼'~ŸWCu~²±²Æ¯K<…í;µ• w„ƒÀQ·/4¨KºqAq0=*…ü6_+Ýnóõ”‚òBOÆ·ÌŸ]ÓÑìâ»…ŽwÁ;ëÆ®m’àLÇkÁv²Œµ”I/©)¤n!öB*ŠÇ¾2éÅsÛ.¿ˆýñûôÕÛp [šk5Sƒ»ëx!F©UÁµv¼:kJ|=.$¦Ø6«ÄJj‰§7߉ÅmwŽ]Ϲe—_Âî~ŸSO¾,³~Qšê°]\Ó®æÞ•’C~Ïfgórc%•·~‘=fÂêÔØÛ#ª¹m§_Æî~Ÿ¶²!³HYÎZO ŽMí&IÜ üdVJøìo³¥Õ¢ÆJZIÈg ©EZsŽ=œµžsË.¿„Ýý>½#Çcѵųæâ`Þ5Ši¯‡Œ¦/5Ë÷í7^MÆJâØükiH¯",«,<6%ži9·íò”Ø¿O_½Á×’¹©ákäÿc<Qâs1Œ’_”µ½vpO&VRæ>Hó }AЙ ùÉÄMl+|2nwù|÷Ûx6ÞRãÆ³ÅRãÆ½Éb©ñHÉßÚìè0”XI+Óí­!±$¢ñØ#{g{nÙå—°»ßç¬gQt„d‹Ï¦‘kÜp6tEo™ì•ËR`[/üÖ„£0ò*G dqÇã‰Fmy£9e¥7Âm¾ž‰¾p”P—„@@?6øÒ¤&K‰ë£^A²?Ø +émAo ’⌽p뱯¼¢õܶ¿¯ õ/¿OŸNV´Ô,q³¦ïL"Ú*·&h:)ÉÏÛµÙ‘užXJ5KÜRƒ25c+JØÉR\ŒÀ±FÄîz¿,82O—¬ M„£°²C² OÇè„FÙYsÊJo„Û|=å„E†EýRï眩cÅËp|ìq³wã÷x“|?vöµ–•-¯…Sÿë‹Ä©#GÝ:4rNYå q»¯ç´êÑS:=·ñ“­½‚Ú¼ðÁˆðÍ÷×ÙRÂO«t°¶}¢»µ±’z>ÐÖ¨E °Û[]30ê¹e—_Âî~Ÿîr±ÞÖ ÊÜÏ®™ ^uüëâ©»I¬Ûì‹´°’’ 75¯é—A|2»¹tÎ-»üv÷û4\Ïkª9rµ)4•,«ñ˜\*GOé‚Àãµ”pki¼«¨4+¡°ùT»å*ê¹e—_Äþø}ú½²L§äϦ¸ù†/ñÖëH`ŒßÒeÁ›—(¦µ#›A8 — ƒ­X\c‰›kÔ™ÁbÍ9,Fx¸Ý×ÃG4:‘L⟭5xg´¡xEÚ@‰¾$83TvÅ„ͨš¶Ö 9ÉØ¯×ñ³ÔØ”ø×œÛvù%ìî÷醕 哵4 +ˆ%9®dã"»—+%oŠîçµãkM¬¤îlÂÔ4žÔ…­ü4v†ÛrnÙå—°»ßçKœU/AÇbÕî$½4Dì²ÖÁXo¶Ž/4íÈ J¬¤ñ>tÒð¢Ð؆6;»9è’sË.¿„Ýý>¿)m ľ7¥ÐÜ ¹Wä«}w(Ç3—’C꫼ö³·±’®7\/ÍbÈ]ØépüHÉ7¥­¾vù%ìî÷9ABâ+9¯fÉãj/Š`/l@v¥Äìƒ ÀÃ>y¶VÒJÎ+kp‘”X\åØY˘sË.¿„Ýý>ßõúÔùä®WO`¬ôßçÍðKfAÞ %ïzÛfoX…µ4|ŸšÆ%WXîý^• 4½}H ÓÇ/9¾S\ó\,¤¥ä[ê¶Ù[1VR¶»KMgÝ·°àkȱ³Ý]Î-»üv÷û´ #'O;%)°ùjdÑŠ´·…¾‡.~…·ñ¸K ²®*œ…‘,¢R€Á8Ð!xÔfn$Ï)+½îÇ×Ã%õFöV{ªŠSÓѼ™[óôøäx‘’OWˆµýB ÖXIÕÉÖ©)<{?\996%/Jë~íòKØÝïÓ]/›¥—+¯†­A“µHB’°Å>´¦äØsíWa:±–®<ûXƒVA‰EþyŽ=ß³æ–]~ »û}^ËÃ3Ÿ]ƒMg/ž?â<¬œ^ âÄQ6;ž&c-õ¤}°¦áEmle«+ ‰a'ÍM»ý"öÇï¿àÐÁþt™éÖî56ÐõшÊBkùgg°jd ¦µ3Hm.ƨüS*:ºZ ‡þ°µù’ÇsÒ*oˆÛ}=gÔÓòôd„ævɰ®"¡í¼$ü´¢$85ÁˆÃÍrbI›-ÍÄרár╾JÏ-»üö×ïÓG´2Ç ¸Ð45Õ!†‹,±.*cÒ=е¼v6$VRÉÐ4åá @¸hËlÀÛ™XžÛvúeìî÷é#z™Þ­‹CÇö¸wÒÒv¹,ñ¡+ PÒ>Qk¬¥•iDÖ0!ËXvÄñØÙ'"ç–ý2-]mÿòût-L w%…8mÆ[|!ºÚo,·®wìî.ëä–‘8 Ó5V ŒÛ8v¶Ó¨oã;Í)+½nóõp½–o˜¶ÍÞMŒ8Û+eYjj&R”ŒÅ Ço^¶æ¦Ý~Mgt¿~Ÿ`“/û{€iLî™êÓõ ¹'ÖÅ«“˜ªd¬÷»áœ›}ò¡vúñíïš‹bhÀ<öZﶘsÛ.¿„Ýý>çK*2 >‹äÊlÏj» 7¯¸4>¨¦µf¥'! ô¬`·já:™9jÏ0“攕Þ·ùzJ>×™è2Ý<25H J8Dtðr º¸'%®‹²£{b%%ûkjx’X¤šäØÉþšsË.¿„Ýý>1æ½—7Æ ò”ʃJW*c -¥=¾#{äOÄZÂØŽ1|5êýn îæ‘)8ÀP^+|îÇåÓ›{ûz{îIs1'¡ãI~ |-Ü›Ï0DWM&S¯ÄJZoÏ=k¨`,S<öz{îinÛå)±?~Ÿîq‘ÚûF«P1É_2µ­EÙ¥-­» Ô‹µ@´ÞÈ^ŽÂÈF"Rt‰k /oxµsÖœ²Òá6_ŸÎ‰s\<bÑN ™°gËç÷ ™=w¥z‚æt¢ì:X +éeѶ†,ÚÆ‚À*ÇNíœ[vù%ìî÷éWÅaïÓ¹²\,Þ-ñ+ÑÓwãàE”|°l©ÁuJO¬¥÷餯O zþ8òötrb[á“p?.Ÿ§2DhæÞó¥FŒÈw‰F â-¥LeèiT…šXKïçÔ‘ÀØ–¬ýÃR¦2Œ×.¿Ä¤°û}øtN$d®fv=+Øfm"y“»geî¯äÖŠ‹¥ùZqci…—IRŠŠ>·ÂdêjÔ’]35§¬ôF¸Í×çóaWã…@ÌgÓ\Ì}Ôç˜Ã2%IŽƒµÔD¨«Uc-­ û¤æf¿1bÙ946%GÃîÍ.OÉìñã÷éW‰Þ¼ŠþlŠÉò¬@€ç†µXÍ<_è)a+’Ü£0²O©|àÄáŠÛ£¶¼˜Óœ´Êâv_O¿ÊŠŠçgR3qêiì ±™8-D /%Æêf'´±”8¶ÏcРEŒ±ãbä’cSò‘ìÚìòTØÝﳯ2¨¾¿°hÇçÎ T4ìw"ŒZã“llGþXpФZ1‘òg¡fi/ü!ÂÍ› ^1*…? Ü\¯Þ÷ãëéšy1¿»CjXJ2o&è³èdò"–_÷|9È®·ƒ°–Þ{'k@R™X0åØ5“®<·ì—ëûã÷yßˉw©Z¡XŠšÏxÀ£'ãƒÏe'Ž+öÛ¶ò‹ŽßO¶ÿ³ ÂÍ‹ÿn~YW6眶Ò=á6_ϾÊ(‰ê$ƒZnÿ( :⢉*w£±©,ËçH¶¶Ž²ÅÆJº²mŽ5‹Y—¥Ç}™Çž¾jʹe>‡»ûýtÊëŸù6—‚}½ƒÐxü3Ùò{ <ߎàA‡ÜÓŠØ´qÞvàR°£·pÅôs1jÙÙéêH+½nóõð« qÝ_]IÔ?u¿u,ðX¯b«|µ}=‹mõ³Ù• -¬¤é“ZjXîk,’erìdPιe—_Âî~Ÿ~•¸Ô˜3û†H!\€Lt@ˆcZà»j[qÓc…™wcR '¤NÔµgßÍI«¼!n÷õô©œøH¢P×é4Ò 3Ǿ1"ñ¥äçìÙì¾*c%ÕlOe ÷;ÂFÙ̱)ñ¯9·íò«¸óë÷éZ‰MWdP(- ÄœýëÄ¢(pUC¤ÊV±Œ£pe¥œ ûná&¢xuzyòœ²Òá6_O3‡>² }v º¹‚) bM*¼ž)ùêo½ö‹òÂZ*oQ5 CŒ%šÇ~9×<·íôËØÝïÓ@ÞŠàØlo?K*:ÛY^±íš¸#ŽYª…ŒÎM[ƒš¯'!¯¡­ÐJJœî­9jyÛXrNYé q»¯§7Öƒ5K¬aþj\}Á‚Ìóû ø\)…¶Õèñ4Ì »æe«Ú#[ŸØ ÌÜ ‡ÐßT 4Ҹ܋/ üSÎ)+½nóõô0¢C/Ú®}6Íbæ³Öªñꎓ^O‰÷ÍÀ–ììSb,%ŽÍ¿–æ $qÒØó%yÒܶçñØÝïÓ§kÒ¼Im™µ©…ü,ôQ²à@øz­X2£pgÏ)@|"ÜTä£Î,/Ôœ¶Òá6_O×JV$F33zKƒ ´Nî>¬ÞÌDm)qkRXŠB{E_\c-•Ü“J3Øv03HcSò:\6»j'‰ýñût­Dd~ ;K1ݰüFT ñXW,øØ^+nY£¼%V4‰«ìDÎQkF›5§¬ôF¸Í×Ó|ƒ›ßÁŒÃÄg×,dQ=àäŠè°ùÞ)ñî êÇ´³y­±’„¾Æ6P®zì–”¬žÛvù%ìî÷éS‰F |>›BÊ]Ñì ìz¶öó¨ábëˉq¶GŠe†€Š¨M-9êÌåIsÊJo„Û|= Ü ¼ò&è¸>»fâ†)‚kª³«ØÝÔ”|uÞ7;3[Œ•4Ü%"5¤û2¶1GTc73ÞäܲË/aw¿OÃéH,Ž”[ýS¥è$ÿUGŽ1F¾,ðÜ+Yƒå '¡å¹_ŠÂüWàÆCÖŒ:r Ñœ¶Òá6_Ï¿Ê.:Ó÷«ÔEÛÃ-bg@DÜ‚;%'L\›ýÆÆXIIê‘Ró ;AÚá±g’zxnÛå—°»ß§_%š5Í™‰!R,l£ÛÍÂ-ÅÍè•~è#–0[ѦÍ8 IaÅÀ%¤p qð¨Éá9e¥7Âm¾žF{&óhª¹°RNËÈÀÒý*²¤.Rfö—åˆQÙŸ!ÖR5#Vj°Y5–´˜{fÜÓsÛ.¿„Ýý>L aw©¨ ®™¡vc›¹dìKEŽóƶUxŒBg[ÑðÊ8 3×)°z×™íÍQ{.8šSVz#ÜæëiÞd¤a¹]sjnT…°v;V¿ aí¶$û½6ûÃhˆ°’V2×ZÄ¢MyŽ]ÌsnÙ§#&Àî~Ÿwcù~ý³f B)?ŽÀñ…O2M:î_(øQ«¯̉ÆQ¨Ù|PŠ‚qƒ‡Ž:Þ#ç´•Þ·ùzƒ«A_ƒ…[(ÜÖ/Ü@½ÚÃ^§”U­›é.ÆJJÖÉÔ ¹EbA ™c'ñdÎM»ý"öÇïÓmÏØÊ•LBRÜ®(¼Ð°1lùXpBH}­p\8 W2 IÁÚáKÙ8êH&!ÍI«¼Q±øæëià®ZÉOŸ]ƒ(ã™´UEÈ9-ñÐÎÞi$VRÏ \k@.’Xlrì’w¸ž[vù%ìî÷éSyáØmH¬¸œÀK|T <ÚÛ7s(8ê+”X(O Ù€Ä 2 ×™ÀQ{öÛÑœÝ ó2n÷õ4Ú3øqu·EJÍ`H\÷‚“áò…m %§R=›]·—Âæ]¦sí­Aùb Τ»ä™õÉJØå—°»ßççÊ…žæI’‚„7¶—¹ol<¯—j𠕬x&„“ðò JAª@áÈ"¨Q_’AÍ)륾ÜÛ}=]+ ÊàZñÕsjjló#ç(¢*­1NÚX¾Öò_˜a;&Œ•T|õlÍ÷LUÂ~·µq‰¥±)9ßiõ×N¿ŒÝý> Üæ.²Üt_)òà"Nÿý'ð…aúÛ‚³ÊkE^ƒpŠ ƒ¥˜LŠ!n2w£Rð}ØJ+½n÷õüfäY¾:úì\ᦟ{ΈªÖÜú¯ê–Qö†¢°–®¼Ê³† °ÁV²rlJ™¡ðÚí±?~ŸßW~gx›Yþ>-­¸&‰SdùYð}å|­‚íÂ=޼_ùýLfD^‰«¸²Ö¨5/´5§¬ôF¸Í×ÓmOç†åSi ‚œ*ƒ 8ËAž”x` »íäj7VÒʧҚÉëca¯–§ ƒüTznÙå—°»ß§÷•·î!”/…ÿ¾›ð–™È½¼iÉ>~?Ô-cpG£z[º°¬öeÜD¥ŸFY¨9e•{Äí¾ž†¸©ÿiZÒ•×…Ù Ñ ô8Ä?¿‹—ÿœp¿VTCG![#ZÑn¾‘££hó²À?圲åã·ùzºV.Òid{˜ÔtÒf\ìF5Ȩq³²?ÛÃ`…{íµ²±–²=LjÐâ%±È ̱³=LÎ-»ü"öÇïÓsåPËÜÇát*XyMì¥È!(ø’«¾VöGa™FÒ †£„ÜqÔ‘lÍ)ëPßëùõõô[H|gr¨5O~ꦻ°miË¿œŽ»ÛÅ$¬¤;—yk@RdìBG=M)¿øëµË/aw¿ÏCwŽ"h°¢sGq`Ä#øó©xî¯È{nVȪÚS¨¦f°¢ø—×q›yM:“Ü]sÊ*oˆÛ}=ßö<üHž+·=¡ù~9•7Os•õ´5%o{P,;ëzŒ¥Ä±½íQS›ëJlÔÔ<96%o{žõÚå©°»ß§çJ$˜°ÏgSTp->:\l1ô [Ÿ×ÚÃ1ã(¿z¤X3€[ØÄhT ¾i¥7Âí¾žæöð ·!å³kБ7Ó±NdãŒß¨*¯mçÕ²±’†[„§¦sà ,2^rì–Äžšô Ø_¿Ï³ÓodW]+³Óo47ǹ¦Ä·¶˜ [ï1j‚×ÙVpGaî•v¡dá$®³ŸGíY&¯9i•7Äí¾žF{˜/>®¼±æÆn¿à²%FŽw@|Ü)9p×6;®t+éÊ^!Ö°ÁX0~æØ3Û…xn2‚Ú/²…þø}^”\¯¼ñüìšá\“ A˜l¬ÄW£$¿9çfGöMb%õÌÄ·†—Œe«%Uä9·Z1É/5mÚý>|Do$ –-|v 8#ÎôÝ™Œ8Ì]x;Ԕ݊¦Å¶£Ÿ‚±–F¶³¦³™²° ¹aÔ;ÐÕÚXIãÝÄJÓI~-lóBû¤äøîµÙå—°»ß§[%prx›8 šš¨1c¡Þw$–(^$ñÍzG(2í߬ÂRâØ´ ƒæbŠ5±_)H,56%þ5ç¶]ž »û}Îýs“ {Ì$ÿæb<Ûë °^Ì!{Rrh.çe‡i%ÖÒÊl&k&¶ÆÞÀkì‘ù`ž[vù%ìî÷9Þ…wæDK3 )ñøæ•Á)$çKrªÀØìè»XJÛyР€ÏØŽ»Ç¦”×6›]ž »û}ú½Üq‘ïä³k@ 7B ”ÇUN켟”þ(ºT7û$™½°’Ö`’fx¯,øTrìþƘªÉîa—_Âî~ÿ)í…§@uo©¹‘ÝyáfaAıÞ© óiÇ}b%%WAjØÃÔX0åØÓ‰p9·ìòKØÝïÃïui+^ÿþ^­™ì!vcÛ÷¬š|·$BÇ5ljp ;k)‰ÐS#b>aAtžc'zÎ-»ü"öÇïÃïµbŸ6ÚÛµJšŠq°sïÒÈ`ÞRâˆÎ‹¶Ýêwb%µ·k•5ì<%lcW*ÝÞ®UšÛvyJìß§GV¬çàcTPPšÉl‡AjçɼˆAÚgJ¾C+›ýæ»TXJÛ #‡ÂŠÝQc$@óܶËSaw¿O×WÄÛñˆÈšË9ñ*Fr¥”!”Í>¼"+)oR3\",êKrì¬dɹe—_ÿ_mßÒsÛ®T×?¿b7¡áÇ|6‚HHA"œJ#Ú ŠŸ¢Ü åïgy¼ìo„oƒ‡[Uß°k¯µæ´]®%ìê÷n_¼ÐÑY»Ì¸ö¾#ÙƒõÝ£Õ/¢ÜxÅKJ\{Ú+–c-R¬9±¥0öÄ–ÂcSJ\{±Ó/a¿ùëó¯¯Ãþë'ÁÿþÝ_üÍoþûoöWŸßÐßÿáGûñû~\#¡âóüiðýóí”óÇï_?þäŸþôÇïÿø1ÿþ‡ßþò÷óƒþØë¿>ù\ê裨¦‘æeYNñG9þñ¬ÄªË‹µbghÊXIÏ,À•avcOp9{lJÎ/ªÓn¿ˆýæ÷îrˆ®ècéðW4ȘòÓq”ïö•õ’¸dáž+ö¯>c%…nÊšCÔ–wÏ'cSúé…¹O{÷ ìê÷îq³ñxºKy4¼4½qÌ^H7;@òOÉGÂ÷™vú‚•4ÖL@–A==c~ž[vù%ìê÷îq5‘cÓ½Q4lúÔ?>:›>5œá%ù¸YïiÇ¡*XIÅ·GÖ4ËÛ ã±)yñsÛN¿Œ]ýÞà^ZÀ&ÁÈÅ`Ûͪ݋º›G¾'’£¸e±`Ò3VR™ÑYj¤s{®AcSr,÷švù%ì7¿w%¸ÁKN÷±DšÔ¸Ý-ÆÑs°«JòAã©ÓþŒd°’zRý¬i>¶[Gà,c×TÎ{nÙåWóqiú½Ë­°èããf4Ì“( ©Žº=2ÄõH\²’µ]áZa%=9nZs“*Eá\tJöØ”º®Ñᛄ«ß›ßëè«=ž‚ÓìôÑð¥ƒZ›ÆŽò%>ûŽ»Ûì[µtš£>¶Æ6–­±=vO/bÏ-»üvõ{?ë]Áï×Å(Õaú^ëÍaúÂr”‰6€³=ñŒ•ÔR¥c ·AƦÒjì23m5·ìò«:~ú½_ù÷2«ík4 TÕw/þ£!]õ$|ö¬Šý‰zÁJJ¥[4l3l,Û {ì– ƒç–]~ »ú½ܼxv:çqóâ‘Pyþ¹vB½|ý÷äƒÝ¨¶ýF”ÙXK)‰†ãÂV¾Y5vMŽç¶]~©Ú|õ{w}}p<àÄתéø54oÖA´ýYÎÎHX;¨Qb7б–x‹£±£R®elJ\_9·ìö‹Øo~ﮯH¾«KI§5âî<|²lóÀ®­.U¶í±3i¬¤YØi +4eñ¦Çžµž[vù%ìê÷îóz08þÌë—áøq…RA&>>Íq½Rµ&á¯}ŽóO™ö‡»,a%%á/ö¶³ç°ÆîIøóܶË/aW¿÷S‹puÕrÜ´Ôx•¬%’¾]”Éþ`‡k¬¤ÜÛGS™lqòÉW×b—_®~ï_«}öZ¸0é¹Vƒ†UÔ û´ñ½ ëVl›Ø û¼Ø± VÒ¬À¶†UÔÂvVXkì>+°5·ìöKث߻ïáVµ].¾V}\õFˆ¦»j_ß•ÈæŠý⥈°—/rܺњNFaÛ ɗæ}±Ë¯îvzÓïÝ¶×ØlŽ÷¨Ù[­Aè<ü•ØÖ;uar%ì7²kìz[k)5wѰñ¡±(‰ËØ)»ËܲË/aW¿w¿W±Äß)=Ÿ¼ò"7~È‘mÞøÛ’Ã¹-š…ï^¤Ìîìž­¹È‘-,Ø»2ö™Ý³ç–=|öGÿÅïÝõ̸N.êfdîe‘C{0cên‰kàí·#ìßœÀJ:\3MÃòbl¿ÊŒ]Ý”¹e—_®~ヌÁ쇿‡¥!mç š›ñ<>LÝ쑜Z2ö´²_ˆêkéL…§5IÑ„%Çîá±ñܲË/b¿ù½oº‘2ÆS8×6-¾Ñ¦{<#!î)#gDSK*QloãWi¬¥žÞGÖ€â"XZdìš6»ž›vûEì7¿w›1Üì|Œ‰¾VÍÉÒ‡çž1+hfÖ3æg¥ÐÕ.Òš;F·wJGø‹­i¼(¶"T걫׳Ì-»ü"ö›ß›ßëÕx9ŠKú¯Us£7ÔÕy]Ê^dŸu¡Ý–øf=Çá2vÜÔ+ét$.ö3å+»;¾“¹e—_®~ÿ\ ¾—n^ i°fƒÙ€qØSd ‘|~m‹¤‚•”ÖFÑ”ÑX´.ÊØim”¹e—_®~ﮯ/c>ÍÕøÑ0 6Ò…ù<Žmú…c…$öu±32h¬¤–7«5wcBóØÅõ]™[á½×Ñ)lúW¿w××{Άی¯UÃÏÑ àÁbñ’ëóŽ”ébo¼UÅkóUjN»Ò„…÷e¦ŽJ™ïH|kknÚí±ßüÞo»Oútðh”eõ ¢ûyÇ–¬ƒ†F>û£ðê‹ö]­µtzG VÅ`q“±»w”™[ö;¿™þ‹ßûë븺â™ìkÕ°ÙÝàp+üܾØVú`4̦1¯üyyÍôÁA Q§ýmìCJ¬¥¤Fƒ 8c\¹yì#郞ÛvùEì7¿wãÃŒòŒ~¢:¿ZÓqNü¼÷?¯‚•Í4;úÎKb }écGÏú`%µ´Ó³†‘|c‘•±‹ïŠ2·ìòKØÕïÝõõôªõ(%ßšÛd'Z_QF÷x}5GF½¾ª„OëëÀZ:C“a ‹ÁŒe1˜Çî‰yxîn.ø%ìê÷nzS/ÐpGÓYßÐyGz°¾á`ôé˜"Lô´ýçí`%…Œ;šÊÄíÓÑ«‘nä±Ãǹe—_®~ïß¿*­ÇMs¬aòôÝŽtëþ5Rî_;H5ƒ•4[çXÃ8Ʋ=ŽÇžÝs<·ìòKØÕïýøpaîSÖû°0û2®ƒká2.V%9>ÜŸioŒèkéJ—zk43–a2}˜D9sÓn¿ˆýæ÷~9ÿ I<»{&FÞ϶àÔ©‡w±”£2í/Ã%ÂJJGÖh°Ñ ¶°xWc÷LÌܲË/aW¿w××›©Ô©ÇŒ+8¤*VµJ¾©'×ÀÊÏ—öZý+Àú*)U™Ñœ\_…=²~FòmíµØo'}c}]ýÞ½åKå<Ì•ÍIúÝýD™Ë‰+æíPìߎ¢îÕ›óœ,í»†‹ÅýáiV ïW$þµæ–]~ »ú½»¾" y|6-XÕ¬9Ƈ>ÖÀ‘oBÅqëY"ùŽt¤vÚÎÌc%5G⢩`x0÷Ô;÷Ø™[vù%ìê÷Áf­R$S©HÓ˜¥À\ô“½d™)/Éw.÷bçAÚXIÕ‘¸h È…=Ø McaoóܶßÏ–ú‹ß»q‰ƒÛ×g:km䑨Áˆƒ0îpEâYš±?Î:öqF’ÎtÑ€®ÉX–°yìY,—¸…ìòTØÕïýóëx&˜¥óµjÔ?îEOÖÏû¡«d:’ϯ#„i;~RÆZšœ:ÖÖø ;ÜšcCòùõˆ&~WÞN¿÷ãçnoŽÄ‡½·a–òy;û[†HŽ¿‹ýa¢§°”8vVLÝðÁöÛùÒw$LJÏÅ.O…]ýÞg>êŒï:Ûš‡= pß;ž™Æþg$ž1q_;î’µ4ù¬Aµn° gÈØ“ÂsÓn¿ˆýæ÷îóŠmÎþJã¶a½ñÏÿ|ÂîH~ßÅþ"ÃÁXI=iÜÖ0mËØ‚`©Ç.IãöܲË/aW¿÷Ï9ˆ¶£fökÕ`qgΛ·AZÀ ,I<‹<¾™;“Æ+éH{ k:ÏP²&×c·™c£¹›slt/P®_üÞ-W[ÜÈ.9Ìð-ÍäÆ)-c·r²HôŒÄHþÃÒCÙA𬤞è”5 Ʋé­Ç®‰NynÙå—°«ß»iÜ#{Oz×I3Þ~lk2–v¤aGblž|p¶cSc¬¤–v¼ÑÜlkAìà_926%æ­qnÙí)±ßüÞý^ÁI8v#îb xÔꃫ™£‚gt|šo$~ö GŒ¼‰ÁJª¦qˆ¦øW2°å寀cSâ_snÛå—°«ß{ßë1ʲÐÀLWÍRÜL¦+ hºQ?rp7Ý)/N<±VPG£âO¥ÀX86VÖ¨8*æ´•î ·øº¿¤Ž"ç0AR4'cÏ Gí¸ªÇ/h0nPò’zžÓþü`%égÒ¥„m¾Î푼¤bnÙå—°«ßD£P&—]fÞ=|ä”Txcè‡/â;_7à ‡¹™jxž)ͺ kH/gláõÆ.ózHsË.¿„]ýÞ=²bg>*‡­aø¯`?+'ù£ÏHâ õHw$†÷p¦‰½ñõI¬¥:+¡é/#ÝÄ©T-É ð9íôËØo~ï>¯ŸÏ3CÂÔŒeñâµ(+ò »‘¼¹;‚!ÁRâØ~º/æ\W°¤4óØ”r»Øå©°«ß»ß+Ü:*¢É_«æÆ؃ÄQYˆ÷0Ké§à£O;úÆJ: ‹æÀ‰ÍØŽx‹Çîá.òܲË/aW¿w—ÔSĬ:ÅY*ï!¼¯zÞµŽ]Ðt„«abÅ9Ä8 ©R²L“Æ¡rÈ£¦DÉsÊzŠë>¾ûº{š)$¢º³ëµ†\Wu#H*47Šô®÷ê¼à•ý`3Wawö®×æ<Ëœ'=ïd=·ìÅ”YÀ®~ï³fZµ~$ëÐœÅÆ"8*0»Z•¾à¡ä{˜+š®k|a-É:´¦‘VXœÅ2vMÖ¡ç–]~ûÍïÝ%=s±9±½4#D{­KWaþ‰ËÈóbGÎd°”8và×»?cG@÷ÉØ”~.‹»íòTØÕïý¢Ô‘ju³é¸4'‡ß¬pºÜTü¹,ñ|‚ׂí/c-¡`²ç­`ò=v›Í5·ìò‹Øo~ÿû¥V^³|¾«Ï›ñß¡(µ‚â}$8IКêö4?б­ËÒZ’+ú]ÚþÙ„Œ5KXK%I‚Òtd¸Û¹eר”86ç¶~»ú½›t„*¦qY­u4È€¯dÙåMªø*‘üjk‹%=ÆZ:r¶°¦c½4¶1aIc·$4ynÚíWwÃô{wÄønþZ­èÜ€# 3 aùÛ:-üÔùó¾b½G|Ç8 Í_¨h„n\áþ£_ÄxÎ’ÝãÜâë.-2ºÛÒ¡{Pk¬i•£ý~qæaý’$|ÜŸ}ËyLûÃ6ËÂJºCddÍ…+}cO\é{ì3]Æ=·ìòKØÕïýC%JlÊ8ä­šÊÝɬ®Æ–G3¾Ú숄kÀØqE¬¤âˆ‚5ŸgSY•2$ÆØ”|¨¼Ÿi§_Æ®~ïæ-pOÔÒ;+š6’E@–Ðð`¼•D ‘œ·P;X‚•”ÞYÑ ÿ•±½±L[Ã1ŽÂåm¹Øð‡R8šJ9Ï)+½nñu7N«žqàtüZ5Wò§D¢tú²Rc©¯w§( `-á§³†…ªÆ&j«>zŽynÙå—°«ß»‡ÊÇ $îc HsQ¦O"Âÿ;‡i7`?y #ìéKÇ}¤iì 'lcO8M‰ÝÚ†~»ú½ÿêÅU 2:¾VÍÁÍüíø'&~¤YÑŒ, ¥¨”{J)Ä‹†ÌÓÆfBkìœ2·ìò‹Øo~ïSh²Ph«$ m•DðFòv¦.ö‹,%ÂRâØŽþUR€Ý5Øz›àÄ¿æÜ¶ËSaW¿÷)v:_Zf¢aõÆ *Üñ2ø¼’ðÙv¤×bÇ‘7XI5Åß֬Ž*Ò#cSâ_snÛå—°«ß»Ï+ÒVÆBåÒkXÞRN†fXúR.†mfiLaÚ—íL 3VÒ,±|yÁ²ôÅcÏÒÏ-»üvõ{ÿ”:6¥ökÕpê“DåvAJ‹ôS¡ÀcÚGï¡+XKgøš­¿e°üP»‡ ÞsË.¿ˆýæ÷î)5-Ö¬¯Eqù’òE?Áѹ—´b¸øa%·”àÂI8½Ã³âÀ?U8dç{Ô$ï{NZå q«¯»_es"Ru•“4(N©n/S¦ºÈNKü¸yaiûÍÖÂÞn]Pý¢–† ÊÂ^LPÖØ”ø×œÛvù%ìê÷>Ù'RžŽ•ìšÓdŸ•ÕD"û쑸er¹í̵4VÒ$…´¦™¦ÿäK^dŸ=’÷Èu±Ë¯f²Ïé÷î)]gÆ íPu¸5 ¿h=öšãõ÷âI”Ä“$óùlgб’ÒÉš-»‚­"äØu!&äܶÓ/cW¿÷«õiU_‘IÓÝ5 Ÿ-5ŽE®Gâ²§ïFv}oÂæ[tkkÀòiìXŸŒMé§÷ºØå—°«ß»÷*•Y#·™Ü¢AÒÃv}ÂÇMH‹ä›’c±ãJ/XI÷¬•æJž&·Y¸“ÑØ3SÉsË.¿„]ýÞ}^‘ËTÉšûµjØÿ«£õÍØ‹7~ËO$¯e±8Š+é·4¤Û5¶áÜc·T{î– ò'Øo~ïn•Ð>|lu¼¶¿c;ÓH:¶¸#8‰Û™‡'IÙÑø$XIG¶ÀÖ ·_° …Ñ’·am±Ë/aW¿wO©mDvn„Ö¿¦â)üyáöî©ü塯®“ ´ìÆAà¨>ÐÅãåw+ç £Rðê{N+ÝKBV|Ý?¥^ Ü-§Ô¡y¸»lŒe<Õ¶O$ŸRË´+oXXg¿Fó ”+ìà—<26%ŸR¯Å.O…]ýÞÝõžÉ.0oëéëÉF~Ô‹ *»“=‘œ”W¦½âÎÁXKKz 5íeƒcbäóØK8QsÛN¿Œ]ýÞçÏÉÏ¥¥pØš>>±ñ(ŒT鱡æi¥Fò#Úû;¶BÁJj¹¤¶¦âilñã_#ýÔËâ]ìòKØÕïÝï•üâl>ùµjHXSÈMÞÁJ5âo$Gêb'ï¹±’šÏÑà©uÆ.>dnÙå—°«ßû© A8·J¶¦™‚¸óe) â3’S®wÚžB…=|JuÃdk ²U…­Ì%ר”|öéeÚå—°«ßûMKUãîfíÖ¼ì=õ²ª½°‡c!£uI¿ö±.ö†R_a--å¨Ò\L7 ¶3E^cSrNÙ1íö‹Øo~ï~¯ pçÊGÏ«5o8_ÔfjÝ`Ä“Äg ¬x±7”î kéò/>š/c¼f<ö1OÀš›vûEì7¿7¿WµK;Ï—ë}p{£qâX)^ð/QÀçþÙ ÷i—“q[ëë—Qkã¦ö¨=a|Í)+½nñu÷.• 3ÙýkÕt¤yW9¸­!öH?ÈPdP#9%¡/ö›9ôÂJšÜÖG[ØNŽmÝ'·æ¶½…ºýâ÷nô/Ãú:ÃÆšVÜÅçÒJ:\qIJ°ç˜ö— „¥TgV¼5S)|ÓÑ36%þ5ç¶]ž »ú½û½^Þý9KÌò-–!7¦š<‘œ˜R¦½†‰µt%K̦iÛñjõØ=¯^Ï-»ü"ö›ß»ß+æÃչ餹YÎ ïÆ§9¢ 'Êß$9òÓ;Êò‚•t%ú` 3‰E|7cφnž[vù%ìê÷þ’:®×I4õµhHD5–µ“dà…ËÞØ¼Pò’ú–iG–’±’8¶—Ô‡Ù ãÅ",i«<6%/©cnÙí)±ßüÞý^O°ìŽ— ¸Õ­¹MØÕù„2ž‘ü¼Þ‹ýåõ‰°’ÎÉ"øúèz'¶“¢Kcwÿ[3w7ÑX?&võ{wI}Paòæq¥âF~ØÈè>U4Ò„ Š>ïÔU÷sÄÚÆJGœŽÊ?¥âFÈŒ¸ Ie•—TÌI…Ý»4H()•$·^½Ö€T 7ªXóž‘xîì`'¶'ê`%Í/Çš6¾µ`+óA4öÜ#{îê|ø%ìê÷þif²úáûŠhN¬Ý#9”Í.Þ¬âà}ÍóIg’‚ìja ¬¤cžOÒâ Ý‹6’»ùu”¹e—_®~ïžR“JRuš±ÏÀÈUW* R*È(1%¡1¸{9%á©+é0ñ}4l‚a,›`xlHükÍ­&òK 4V¿7iNtr»,åDƒ¦±íD¸±gô²çíÝ¡égOtRŽýß¡±’ºó¢!%”±¨åÈØ©ÉܲË/aW¿÷¾×ÁºÄk1퀭@(`041¿ÿãÅgÝ# _>[ñ³Çz‚ºU8 á´â¨q¸ÿ÷¨ð§š“VyCÜêëîWÙØ¨Xo4¸á™JÃÚ…÷ŽÄûriì7?`a%=ŽõFƒòAc+Ê(=6¥ŸúQ‹]~ »ú½{šAàj|·3C¥!IZcêm-Þ ´H â)Ç^v’+éIƒ57/9”#áeª±)ñ¯9·ìöëö%Çô{3ÖË[°mq¿¦¢¶Îm$3)¼h$;¡„Õ±a}‹·ÞÆBâÐüc*°Ùòs,½»¦À?ż¶ÒGá‡7¿Ï‚l8«ÍpeÕ‚†ç#ÿ:Q>Ï쾂¼•Ø‘U¬¤–6|Ö€Ò5Ø‚w“Ç.á½òܲË/aW¿7ŸS²†jùµj°ldE3›Ï‹îâ½;%kIÆgû º;Þ¬Iù^»Hž„ å“9Œ¬!Y¼±$‹÷Ø%ú<·ìòKØÕïýõõa´ííY_ÕÌfP\%’W̶Øo&‹ +)íÆ£9ÇK'XЖeì´ÏܲË/aW¿wŸ×“å[s}µ†Õ0E9v¬”)LF/³’¦¼¤¡½òki®¯Öp$v<ëã›âØ’¼Ëz»üvõ{w}ÅYoD6^ÕÍZƒ>ƒíóãì¬óܱ÷É õ´ÇŠy/ö{|èÁJÊA;š2Ž2ƲϠǦĿæÜ¶Ë/aW¿wŸW2;Œ<퇭QàÆ½‹Ú³m%?ïbǧ¬¤3Ù)Ö0ÕØÎÀ§ÆîN³ÍܲË/aW¿÷×W±“‹É*¤NçBULŸÞû´äõõ=§Ac%…É*$'‹TðŒTñÌ-»üvõ{÷ym&ÅQR@4OiT5ÌÄ(|>éÔ7žPÝÈ~‘GØË¤9Þ Ysð„(,[Æzì$ÅfnÙ›‰q€]ýÞ__?g£_‹âD3G^EŒ¬´Å2ô`%M’^kØ ÛØÃ¤2%’6Ï´Û/b¿ù½ûˆÞÉ1ò#* Þ{í"]Èàv [XRâë±8/aØo6ÄÖRÚÇFƒf°Ø%dì´ÍܲË/b¿ù½ÿˆ‚oæôv?äðÇääÕýXéG¸.’Q4˜–ïÜ`%)y´¦cí7¶1H£±[J=·ìòKØÕïÝï•… $PûZ5 Ì¯Ç©ÈL¯Î)Á…Å~ƒþÇXI¡k‹­rƒÅÅsÆÎÅtæ–]~ »ú½baž]ó¾V ‹Çç7‚B/‹Ç'Ý"ñ³G“¼ØA¬¤Ç‘Ýhn¬Â~^ÔãêBcSrˆ©,vù%ìê÷þóú(-úÈóú(ûÀ3£mè <¾‹_:nÝ;®Ý»:7k©Í•4 ¶5¶¾~zK$?¯Ï´Û/b¿ù½û¾X YÝè7*t‚uˆ§ð§[J¸6Ü×`-%y6É-/ãh›’“f®cÚå±ßüÞ ƒaþmþ [2´ƒŒó#kˆ…ΟÁ(8^{ß±b?k…æ¯ØßWœ}ZàŸrNYép‹¯›4Hå” •‘n+®y}‘Ú…¼Ûwì ž¸JAR™­,£NÂéž8ó‡#Gm>ÝyNZå q«¯»4º´âH~4ˆuŒ+ñÆfó³h‘|{vLû…äMc-ͦ“Ò|ž³»[Ñ Òc×ÙtRsÛN¿Œ]ýÞ⬘=šÆ( qÔ%a¤%”ûÁc¬°’Êl ø¨y-aâÇýƒG®Æ;ScD‡h;©]ýÞ=˜.’8Õ~ÛÐ6#8{ðpØp”l‘|Ô<ûƒkc%-abi.îž„E]tÆNvæ–]~ »ú½0Œ"ŸÇúj9˜sRÉ?â ¦¾ñ@@;«º•ÔÒlšŠ²±Å1Ï+’¦G›vù%ìê÷î*Z¸{Lf4¨³ÀB*…‹ÇTìLS£9v)Göƒ»Za%¥F3ÄDƒEL4c§F3sË^¼oÏ/~ï~¯4c%­Ú¬iŒ{v²o¢~|w$SïbÇup°’JZµI3ÈuÏ`I3æ±)9øx.vúeìê÷îÁôÁ@¹B›dÍŽ£Xðf€•Ýé§Ýs±wƒŒ•”FÑœLzl{;,27íöëtRûô{÷{}È©p¦Å­5w! ö|ïÂ7’/àêbï(xÖÒ™ä4kºk½*»œ=Ï;¬b™;ùxbx®_üÞ]_ɲ~­ABm;U¶ørµí\M_·I ×;íHN VÒ üZÃà­± ìzìø=S2 »üvõ{ÿ{­¼L19¤5ÌC­äÚø¬q'?ûÉkà¹ØuvTkλ&‡l9[¶:±âjì#u7ž›vûEì7¿÷úã¤8Jg[ú}*Þ•çœér’u–ì;++©z͉‰cÆVt ðØ”üŽï‹]~ »ú½{JEô ÙˆŽ>HÃýIQ™záI‘<0¥Ì“äå½쨛VÒ“Ê7kîD'.Æ*-)'àÅ.¿nGE¦ß»ß«ŽÐýàkÕ 65Nƒ/IhnF~j$G•ú´ßì¼+¬¥ÓŸL4¨ ¶ó›ÒØÝŸLæ–ý2c÷À~ó{?ú0B±oKKjk:ïw¡`ÿŸæÉŸý»ØOG€•4y­)#¿ŒU(Ä|Grôá\ìòKØÕïýÀï‹üŸ£'ð;øŽ ,(<2ò]QËr¢ÄûÄö±B†Jxú·½æ|A- qß0hZ[éq«»»ßæƒ|Ûûò•E47Ãå`U¡Ø‰dîRú©=ó{L{cÏWb-]¾²ˆka°3u4öáSbæ¦Ý~ûÍïýX6ÐØ}}­š— Hßyω'éŠä§ô™ö‘lòk){½hЛÀØŠ~›’cIÇb—_Ä~ó{?–t2Öæ†ŠÖ¤ @ÏÆ‘¼ *Ó^›«bÚ5¥3Ý­éÌX¶!cÍc·”NznÙå±ßüÞ?²6ÞÓëº*š‹÷½7ÿÉ£Üì9JÉKà5íL…µtøº*µö¶áŸä±›/¨3·ìòKØÕï?b3ÜHRtÍÍp#A¿Wl:+Ä¡KRÞ•oìc³{+‰cg3LÆþv;®iŸŒMÉßëQ¦]žûÍïýpáòpÔ„„¡A2Ôˎ뱊Öö#lÛ"9$|ôigc%“FÓGH,Ø6ÍØÍÏGæ–]~ »ú½¿o$^ìAôµjnî}ÈDWï›®H~³>‹ýñó¬}¤3´Ö^º=mŽÝç¾Isw{bW¿w™ ¸½í-¼vÖà¥>:Á4æúŽ×åf¶Ï~¦µ»1ìjv/¬¤IlMa{bÛËÖ)»MÂ`Ím{q«±çùÅï}Ò¬^Mmóµj®þ8V'ŽWü}ñbýÎåø8l/vÄC‚•t&ÆþxíøGzìžtÏ-»üvõ{¿_ç=”»P[S±1WMuC+ƒÑ&Ͼá ö—LÂJ*¡N“fp7¾Á²õ™Çž­Ñ<·íôËØÕï}†y­ùµj$Ûg®M Çýý•Ü®±ÜÓ +i^¢Zs»ÙýKÂàQ•ª±)ñ¯E¾$»üvõ{— ÇÁ+äCVtܾäl@]×j–þ+ÌCºG²×HÆQí(òî©F=Ã9¤9m¥7Â-¾îf» Ô FÊ-”F;ó†2-‘KdMº¤F’7ÛÙßÊXJ›-Íãüó½Â?sEòÝݘÛvy*ìê÷î#z‘ âtÓÞh.> 7é,Hï?Ø#áƒÿ¼ Û´¾Éw°–Î4³Í?ƒeê‡Çîiæ¹e¿L¥1°ßüÞmÕVÌ»íÒk°K-Ѱ#‚5š§EÂ_:6²<º+)d«Ñ ²3XTvfìÓuÝ™[vù%ìê÷>Ã⹨`úZ57èBJe„÷±Hiä¡|œi48;J›v–>+ér–t4øÁlq­±gIgnÙ‹Ûû»ú½Ïªÿ©›á£;^5‚ £+ÖùIüÉKj[ì ÿ VÒmräh%,²¤3ö™JÏ-»üvõ{¿ Æ­f2Oº`Üj6ÃorÜw…}-XÓGÉßT=§×ÆJºÓ)Îö3v,»ûJ3sË ®öþâ÷.U,2ºÀpînÅҀߪ^Ø  ë× ‚VÔá¡äÔö›-”…µÔÂCi ™¿Œ7VÆ.á¡ôܲË/aW¿w¿WFØgSžhP—4ž"Õô ÊÑx)š¦<ý`E°í‡S‘€•” Ùh vöÂV¤¿zlJükÎ-»ý"ö›ß»ÏëA¢ìÊnkÐ7wtd«"á®XÈz$/{çb\¬¤°þEà æGé¤GàØ’ø×ì¿cûJïþ‹ß»K*âíOš[q²á2z^?SŸÑûI§bsîËŠô]ã(¤M±¥¯Ä5ÅrÔæ„甕Þ·øºp@öAdä\`kp”!‚Q³v! YY.*‰A‹çNÙovdVR™D•Ôœì»,ì‰ÝœÇ>³oôܶÓ/cW¿7Ñσq3PÜŒÑÜHº9ÈqÙ@¢1±7#Õ¼È~›šXI×\€¥9Qži,zqfìÙ™[vù%ìê÷î«÷tðÕ$kÐRb¼â´3}È”]"ùÕÛ¦}°lÖ`-õ’¬iH'¸²dï»&#ÊsË.¿„]ýÞ üžîhàF5Ö4lPXK€e­ƒ”·Fbpöqµ1ì/©„}MÔàF5Ò4Ô*ÛP±í±[*º=·í§;-»ú½ÿ¼žŒ„*Vš‡t¯,ìêž©;’Ÿ×·N; Œ•tÍ'Pš“t¯Â¦‚ÅØÇ¤ŠÕܲË/aW¿w£JÍm}7–jníSØü©2¼UØ8ªGú©0ñ¹Ø/·öZÓÊ=´HÞÁšÔ—cO 5Ïm;ý2võ{·±òçqÓ§Sª5ì¤÷"ÛÞôÞN†½’ª¨QÃÙ§5ãÁJš¹¦ÖðVØÊkX]g®©æ¶]~ »ú½øEƒðóM³*.0ÉŒTòó¡ÖÆúÛC´ÏØ´ÚŠôHã œé¼jEÜ?¸SÙìõLçUÍi+Ýnñu¿Q –Ìâ’Õh˜*È.òX2Eí‰Áه˦ìŒF+©¸pÕšó!±'S5ö™Ïm;ý2võ{ÿ4£nm rGs±3×é4Η]Ä•âùº—‰(mØlFXI§ƒÜÑ ÈlÇ…±ÇîrgnÙÓIî|~ñ{·êÉ2ñôÍŠ†îÇÅ­¯ægI`<áÑHÛÏBub-¥oV4¨[ –][ÕHs¸ÙÌÁ <Ѩ5æ9Õ¨u¦ìj«)¬¤>‰ ¥il6#le#]'´æ–]~57¹™~ï÷ô{ÔÚ²¥§4C~*ŸáŠðŠ/ë̽Øû:è>1‹ø°€ÔC£P§5æÆVÌ=vM®’ç–=<^µÿâ÷î÷zñÖûu¤Åš£Ž§~|öãöÙq–ßˉŸ=š¶W¶„VÇææG\¢ûylGu‚Ʀäß̱Øå©°«ßû”ÝMgþ3”Ýmöj|À¹€S~­ö‰'Ip¼Æ®¾áÂJ*¹õ–fp#ŸÁŽ^ŒwƦĿæÜ²Ë/a¿ùýG$÷Ñ\íYò€ûèáV”\Gw·¢,` Ì;{ø\™F5ÒtšÔX¶Çn¹K÷ܲË/aW¿÷_ènÅŒÒTPª(B0¤—­*J±ÄERË"í—–Lb%qlž;¥yÀy%ìÈ ì›ÒÙˆ]ž »ú½»UÊÍ€þ­Ñ0y¤7ߥ¾l”ùDòv¦,vÝq+éò¿5UŒ=òë¾KÕ¿5sË^}—zÕ_üÞ ²‘äh9§¨’5' ùÄúÆiPý®H?N|;cfÆJ:æ-š4 ¹Æò7á±çoÆsË.¿„]ýÞo,52ÖŽ’-°5•g~0ù%óeZÙ‰ÏóËmg~¹±’J¶ÀÒt– ûù\%cSÊ»`±Ó/cW¿÷ïROvýt;UknÜ=  ÁþDàöŽäË”wÚmVÖR:×Eƒ®PÁ¢÷WÆî!¬ôܲË/aW¿7—Ô‚äÏšÕÝ¡œŠÞŠ×ÏR­ØK·€Å]²Žâ„Ë8 ·³Ó¬¸Ü4oàN÷Óë8*ç<ÝÇnx#Üâë>ψ“ßH˜øZ5¢«å¦î¾ÍìÕ#ñ$‰ÔüرïVÒéÛhxwc,s:’·3}±wv_$ÖR5Çm4…̉ýL1¶Ï›¿œ[vûEì7¿wŸWÞZ“ÔükÕ3‘í&R¤W¶¹äÀo]ìØ}+©ä=,Ma˜°… ‹›’ó*îÅ^\óìê÷nàaŒóõ]£WaAÂ#´Kê°n!Z³lE¬Å8gî8¬¸Íî¼Hÿ†QÏ\phN[éžp‹¯Ä’z!p[—%õBâOã{=Ц1ÿ·GÊ’ºØy®4VR˙֚âE8i¾ årlJYR»ü*nŒ4ýÞ]RÅ p¸°$š ¤ÄUL÷ØŸô*¦€Û…%X$Ïiœ'ìãÓˆÏ>Ö€­'X°õdì–³O KìòKØÕïÝÀïÃSæk.?kØ9dg+_qã(ýyáõH~=ž‹ôáÆJâØüëæ•qÔvdwÞ›’ƒÊuÚí)±ßüÞ}õŠ0%G_«æ@¥U]3Ò€ îÌÎH|=Š"_öWÆJê¹Í±†T·-„û£O°Ç®¹ÐñܲË/aW¿wO37k×Ûø&¾VMGfÔó°Ð×cã…WNK~=¶sڋ艵Ô'²Û‹` ¨ß<6$'½B—ç¹i·_Ä~ó{÷4s»#´¿Ö ™8nL ól oS"98[¦½Vw²VÐX•á üVç#¾mbшÊÿ0îšÊ?üÇô™“üü×~G#cðxðΫaKéŸ$ f!ñ/-ýÏÿ°Lò/o»°y‡Æ†ä±y1à±-±ÿü÷ÿoøòËðöWŸ_Ñßÿá>ƒ’ÿ@lèÐpÉÿû׿ÿ“ÿøÏÿü‡?ýñÙ°þÉûùÏÿë?êŸþ׿ÿõoù;¦ú·‡ªhŒû/Õ2Ôßþöÿúr endstream endobj 363 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 367 0 obj << /Length 1425 /Filter /FlateDecode >> stream xÚ¥XYoÛF~ׯ úD¡&M.—WÐpÑH ("š>P$u "©ŠRmç×g®%Wå¸- J«Ù¹vŽo–þB'Ì´ŸÇÊѹò“4uÊfö÷Ì×:RqXKÚ EN·ïšÔù¥›ýfË3:=KéÏ‹Ùí}æä~ž¨ÄY¬œPi? Àpø)P*çO÷~º[xÖ§|ÖsO‡Êß̽$Ý?p§‡çTì„ïKq”U×"3|¯Xé›QŠ!‰ø…VÎUænŠíÕ=‹£ª–· ÑH"øŠRVzçƒWYà.65ó•zu‚§iÉQÒþüµøÂâ…!ÄDÎiyÅš=[îF~6qÎ×-z{äí’Ld\žLþAQÑ[Ç%oˆÑ1-û“G„óÅAâþÆ1Rzuƒ¿sÖB*"w?÷TJ¦¥å.¸°®Ï"sÈ“HÙnöLÙ¡’¢âL@j±íqIfy:9Ķ•cò—ÄìÑyª´QùèØí}’ZU nFŸe)»ùAáéX®wò}”ð ö…†F?q Û6û k5n-…»–áQ,²‹Ù¹‡*ðóL³‡äZw”ŠKÎ+?9 0 ìSb°*?QÜ8âÆÆœ_ˆW¢Ž[[!løwzáEÏÐ9ÔØ®ðäû­ĺ⮂‰ú¹@ Ìs 5 på~Í?vÅA¼šgLO&Ý©$½xe’òû½ð,$•ÿwÛJ޳ÜþnBë5}TxEöåÚ’ ×È0ä¥Eí싦¾hea+–cÝó\šÉ”ÇSƒè¸¤’§a«,'[ø}0°Y¡³Hzf¾9úVôÀÒòuÁ%Á¼e¨,ïM¥ÁS¤ÛxJüü…Ü®7̳§è-éap‚ÅÀâ¢ÊÝ;D’É ¥Ì"%Ö(š8ç÷ªRp»€¨;Sø|õÂ{ õ`öÌlJ– 5:¹¢“5ðd¬c&Š_±“®ùR3õaà ûeÄŸ²CE{—GÙ9ƒCȉóÒü“Ûd»nµ¶¦Î[,“ÍOA¨Ùm`C&ذqŽîgM#Eøßæ ‘~ |Ñrm͇yý(Et'O)Q.­™r3¥ïç^¨`Pâ'JîåN4nÄNh`G/2/[j¬cnDº²,šã¶Bïæ,ómÍNˆ\°hãU™­Åðò¼jZ–qêd’ÈÅü*é+S?N=sôtù=„@ÒÙ ~ÇAÀZÏÁˆ¤X‰Ÿ 6ÖÆͯJ‘¦8®›¢¹ Íð¶EÇ€Wª'ÁfÄnIÅdî‡ÀÐr×°‡h*|–W¦$rßµ,G ˆõ}-3PYóÕ–Xõ̳½ÈØ·5Ïdå^ïL82Þw'Î> ZQá½ç¯‘t“™Ä~;i«Ë ÀÖp~|þc«Ý7W°Cù©Ž^À’Ч¤´¹T} @HkÈ_’"¶3\\·ÒyÖ»ÁënÍÄVZa´õÖô”W?díhpØõm+X×›n¢wö?‡$ñ³Ÿ$9C¥È8{»˜}½S± endstream endobj 364 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./attractor1.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 370 0 R /BBox [0 0 504 504] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 371 0 R/F3 372 0 R/F4 373 0 R>> /ExtGState << >>/ColorSpace << /sRGB 374 0 R >>>> /Length 830 /Filter /FlateDecode >> stream xœí˜MOÜ0†ïùs©´{Àø3vŽ,…VH­DÙªà E…¶ìJ¨ÿ¾c{Le¬õ¡·6‘óæµ'óŒx‚[øÕão±ìvןÞ-`µî¤RÂô¸^Ýw»‡ï_~e ùÛ:H$8)…ÅÛîà`™:­»ÔD°`ƒÊD×élo³y¸Xm~<ÌA9˜­áñÛæ<¬7›ë³Ùúl>?‡åQ‡ýÇÀsÔû'¯D}²ÿ¯zÝé9H¸êáï¶S)„×ñl‚&ÀäfÐÂ{ø'/åÞÆ'¤æDwF8;ê¹9ÑÕ úaÔssÔup"¸'šÝ¥Ó“ž›]¡&þÜu¬0êI§æDwˆ¬õܜ誽õÜõœ¯"ÙÛ¦¤4‡~Q”1ð!†ƒ¥1Ûÿ½ZÌayÛ•Òªº±ÀtÑêø´Ñþùrõ^Éí;ˆÃã ¶éLã_ݨ»Nö.eûJ7 o¼pišX ÑÿSû¶à hëc­QòöšíAÅR&ûACìN¸+ÝÅ™íúp{·Õ‘œ±ƒÐiM˜}ºlŠ\{œ¤FÈP"[ì¸`Ð$Çê°8’ÂüàÉ;¡%<\øŸ­‘ûîCG=PÑÖ̘䜋b+ÓÄ…¢ïaÇ$Â8ø» ƒÅÎTW©> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 382 0 obj << /Length 2253 /Filter /FlateDecode >> stream xÚíYK“Û6¾ûWLùDU,šŸJmRe'žÄ©$‡õìî!›gD=bJTDÑ“IåǧŸHQ3vRµ§=`F£Ñ¯1¯ož½¼ÎŠ«E¸ÈM~u³ºŠ“(ŒŒ¹*¢<ŒÍâêfyõSðÇ,æÒþáõkÌ~¾ùî*ºšÇq¸È2fôïÙ<7e1=ÁªZäµxôÍæqVŒ¹çÁÝ?ןt†y‚Bæ& 1óúæjh{ùífóÌ$AÝ# ѧRÜAk¡-…zÉÓ[š¦î º·p% iØ¿‡¶†k&ke;å‹ýÏyê+è>ÈÖ_óÐ?¡{ËÝ7Ð5ЮωßL©Î'xÅk¢p,–Baøšüá Ý ý‹Ä`ÊoíÅžÉñZå ­‹Ú_ÁÄI¶â“èèÈ|ŒÓ¯½úÑ‹ØA;ˆnQq¿A{é麥•ö:ªÛV¹ïeõV~OÓ7·ân,:¡uî‰âý7Ê"áÝxê†*á/¦•@[éÌK÷¥SÉTêñFhNþ5ð^¾KÆ#u6þ‚|Ížó©UÑÔÑ~‚‰Ðk?Oyþ8lL·Çdº¼ê\ÿwÿÿ‰û¿¼.½Ä4¼‚ëY™-x^§¬¿šûwíκöoˆ 2µ3eZâëŸ4ž'IðvÅ“dT=s¤£·jÖKl„ÿ{ò2'£JÑ°í‘æXD6‹©( Ž)ä©åÝz;Tc9¤\¶ò³ gåã{&×ËÓ§ ~´3©õh¯YDa)œ;a[Ê1Ø’DÞé­â–Sjp:O“T{¯Ï9…‚k^Œ¢+0‰Kfòåò¡!†ÿÔ]‹'Ê Oa$‹+"™ª½wçÅþGO÷àØ„?ŽCjLëÏeãNæ4ûnDÅ9øÛ Ýó'wÚyÇÜx¹\wô‘ÕÒC˜Ï/nËÙ{Gé¿›€ì–y¸äq™+J\,ËVäzçé­ý{í¼]®å:¿—5o<Üyž’Ñh Þý-Zšeƒàå ‰yßøhxÍÄ£|CÓùš¦î]v£ï86¼‰U%{f¨2ÓÔNa‹YU®,HÁi-m52Q)HòëŽ5¦¯$1A»b?K’’;.a5ˆÌC“›ñ«™ÚšD8HäÙ‰ñ:7`F ø /}¥ðí÷ÚÅ«‘=U2¡ìh`=¹~0e…Ï}‡½`KŸ4âù›75~*zá^uzq®Îƒ_H½,d»ÑK"Œµ·ùA´óÜ-[zÓ÷’¸+ÙMþ_Oî¥gÂíI® +œÞ³Óð\c¿­Å`üB&§)aCÕîa«jÕzÇ@ä9jÍ#yˆ1eü½Tvkw¢X8Ùk̤¬”'ÖòÌþÝÇAÒìYp°®¢Q¾÷p•‡_ìûϤºØ¤ôÏ ÿ÷ ²†Ì$¥3|£11סØ›AšŠ´Ð"”ÁGm‡ÿD­ë`ËWW 'ˆý¹¿qÐŽý¼šäa´°VöîAj­ÛY¼ÙÚçCT)ÔA-# 1Û¤Ã{Í ïÏ/t®ì‡O,ølš¿àr a<Žcø-¾ôÿ à}+4Éý˜hØ£°ïCøQñOGÐñx’Cô'V›„®ÃüD½eÅ—\WUþKÏ„ > stream xÚÕWIoÛF¾ëWðHá˜3Ü4@“؆4‹£ôÒö@S”-Ä-µ øÇçmCµ5 rh! 9œ·}o%¥½~Ú3¡Q:J½Äd*ŒS¯š ¾T”%aAΖHZääàär–{¯›ÁGøYR`uŽÒ—£ÁÉyîªHMê&ž6±ÊCã%a¢´É½ÑØûÃ?j ëf³„k= ¢0õÓÓa›Â¿À³r—[$$þ²†ý‚8Wx™M /ÓfÎlÍ„ïxx[ó¾jf({‡b|DB¸ÈL…»fÉ$„4g0¤¤Ã†ZÊÙ¬¼à¥Ø¬j<¹þ5z1 ´VE’°Õ#P*¤¢úóš öû¡ÉШö¿(ð9Êü³²B:¬3À˜†0Eö`V,Qò ikrPä(&@pÝG„ÕÌ8,°DÉÞÈhÿ’ ðyÌJk›¾=^—(°l~Ü‘9=Š:ÜúÐAŽ€”ŠÕTpá½ÁeMGZåF³éË  œƒpœø ªŽÛ6Ø%^™ÆY†Ü ûXcDˆ¾Å©AûÉy’¹e¬*²l’­—”!^¨æDrÍ¢nD©JâÈ b,ãœë°@QrbÊÍÊ:ù7¢®™N®ÏüF,95ôÊÖ"쯩bj€À@¦0ìJâŒÄ¸:.T¢³­ÌI>&èÖXãD®NÙ­ÔDßDªà¿Âà,2dz|Û`›¢;_Äe„ö ֣ЯÈN¥‹~“³±ð#íÏ0 í$AGùH÷ê2=€ó{98”ÆÖ¡TåEÁŸŽž ˜9kmÈ8mËÎÎaoˆe»„jÑ/:çmEi(af£‰Ñz‚wVdþ*Xk[â²_±ÎI«‡ l1~1¬¼Ã½ KÚï¯û:% °Í%‚÷rÄó§Õu«ö5‚uë3¬3å‘Ðìó%]ÔP°ÈL7ñ8 na( (½°óNœ”U›áÎs뛽ß0k[åXµx–mŠu[‰ýrúñ°Þìøá†ÑtaŒ~nån˜ýWåz[ɳ­`´rºÏü? “ Í·i¬rwÄ,Ú®ŽïR]õ¡ÅF—$'ëNÏëÃM"i\ÙÈQÛï ­hè»vÝžZ » ´Ÿ«Â]06 ±J‹¼ŸÎ'ܼž;{w=íƒÿ;|Ïèb›(ZC8ýè$ûWÚŠ]Œ/Žb ÄÃȨ> /ExtGState << >>/ColorSpace << /sRGB 411 0 R >>>> /Length 4948 /Filter /FlateDecode >> stream xœ[;¯åÈqÎçW0´“#ö‹l¦ll@ÞŽ$;Xˆ¼øï»¾GñœYÀ€o3s/»È®®çWU=eûãV¶Ÿ·ÿþö'ýÙJõÝ÷s¼êóÏ/ÿ¹ýÛö·o¿ûõ_ÿé÷Û~ú¶¿Ž£mŸÿô‡‰§çØþçÛ¿ÿǶoùV¶?ÆŸŸ¿•ýµïÛ?ëÇùjm«ízõºÝÛ¨¯«lå¸^{Ùþºý׫” 8_G‚~”×qnåj¯9ж‹¢’b‚´ÖëuNS¯zÅ“ØëÅ|øÄÜñžÎ×uÁxõ c¾öõUòñäÅÁMúë ¾÷ñ:’¢ã«µŒWã7úk‚Ïòšõá¢_¥é¨}ÄúVÎP(®Ø¤œø(6¹^µçÉ’¢U~£Ídã§)ÈsÝÛk4Ppÿ*‚FñìåÕ)ŒFœ½Œë5,Ðø±´dýÞ ›–Ó'B½#ÄsYâ!®zH\Þd ¼cÇ'Î×YR"8^g¼r†X¹¸(qpaŒ‰ÛâŽhCA{]‡ä·Sûk\âÊò kjÁgíÈMBؤ[iýàQGèj˜Rl=¼I§vJ@«!¼8i î›í³Ç“Ø#¤x6[ߜҙ¥*eM§ÐfÊfÚŠÑIq’"^ÆïñÏåo´Î³Å“ ¥…Pz nl*‚óU‚6_…Z ‹†}†½ŽÃƒŽ/uȳï'غ®Ç€ƒ ÞA£§Õ†wK¡o"ô›Ž*>qRx-þ9“Í’Á%.ÜæšZ­¡£Ô·‡m…ö-L­–ç³ð“Z ÙtI/7‰Oƒø¹ŸGŸFÝñQ<Ðûl^m¯n ¯RZ™ø¤OÂ'Æù|öq¦Óª”âKÕ¶U*‚¸Ð Ú5µ‡šÃÁ@ ¥†yÒI®ç ñ‰«ÅR¡‘0»ÐHªlï8;ÀÍô¯jý„¯Çó)7ŒvúT sgؾÅ"¼2Q$³+Þï<Œ&‚ k ‚Æ3„c„ŸÀ¡æùè …,Ä«sòHölìÎ NÍÂI¼.­HEwêÌÁ³Lxì ¹G€IOÆŒÈItaL ‚>2…À@CkgƒóÃÇ/ŒðS§<±(ÑÀû:wh=¡üvœz0…¯‡µ„´§YŒøŽ‘wÊ #¨UèH‚ *’ ídÈGP¸ ¡˜¹AǧõÔ©ÒˆRâ0í;•Å7¸CöÜS ¡†q=a}¡?² Eâ ØZCb‰©8Xyâ~fþÃw<4„0,XÞ‘É­Õ‚|B§×¶½‚0‚§Ý¥zkË“:«ˆ•° g%¬7®KB!p7Dôú^?°ÎàEv÷mŠÈïïf¯rhî?±òBÂñ`È Ø{J¸Â@+SøG² ;FzµÖÉ/9AXY$Ÿ°ç®7$ Ôp°ã6¥TI\‰ðf*Œl`d"J(Þ`Ì"|¹üëë Œ·@°6ƒÁkäË`€Ù‰2B/ñUTHK,ßB—¤õ ¡9 ñ@ëv£÷ûD@d€äVq…õíL¡Zç¯` EÖ5õ蘠å²È¹.–Ÿè@Ÿ'‡{ŠhB"MñÒB}d,‘ÊXð­1+݉ÞbÛ*G·Ú+Q|Z ™„ro ™³fg\Ö® È5üfG„µŒ#t_8bM!–«Â$;w„Ÿ”Aøó(&h8]: ðI ˆ"ÇK‚Îá ãL5Òn›<øèz>àr|zšQ]¬7Ø¡A]|ß µÌȺG²‚*ÂbGu8üi|¾Ú¡`ØJq@G+¨2ÌA`šýDô56hŒõ C6f s¼¼‘üÚ qLè$6BÈ1ø4ä™Õ*sN©Œ9Á…ðB(O˧¯MsàÕŸhZdwïhjLªðt'$UðÊ÷Cèñ>Á…é $¹ %âFÄû>ï¯N㬉7óD†¨Í!ýæ{þH0õ®.v˜Uî0ÈÁ!OÚâá°–;ë8¸’ª`Ò†Ñ7oäİäÌ8hç@õ0§#]…ñ¬äè5±ÉÁn¦›C¼0~›•ySIa588u£Ä ñ]gBbca`TBáˆ.vv]àõfä 5DÐ-˜Å®x€è^™™.Ë8„®qÁW;?p=' >íiFÁ‚Íõ™0àNˆ+ uFü`à8’Aê(ý(„H퇑RN¸ªá´&Ëx‰¤±B¿æzÉ,x'üUŽäú~Ñ*.©¨A§Ï«ub[eñ;¡­r¼Ö‰lîÓøõfx^ߟ¥1à²[’>±.\+Œq'¬á2Q-ê—]õOy@[쟵A QD”‘½z=¼ßéNL+åõRÉÞùƒžb]ˆ" v…h¹¿Ì/ßvI`º½Éc½Þ w' ÄÃúI\ì $Ä#çd'¼ky'Þõúü(´Àÿ,´‡aƒLE‚Ãå'¦‡m ÂcST÷:,”|çzÊu¢eo6vˆ–qJW”\a›åAŒàj¦%®ó$>ÖÕ©½þ²ªu´úYTËìT·½Ì.Çu‚í¢^Ðm°Mþ$ßAQÆa<…NœçíÒ”Õv§"¥U®ÓOIn'g¯—#»?ìÄ9ÜbíF(Žuõ‚Å™ú²Ä÷•Ko§OçR®—ja±³±·ìpy ™FÌ‚êì ¹À%€0š¸ Œ&¼ÞZöážóµí)Û9õÝÎ…NŒ~‹÷¾Õ¶*yþv©M•þ£_C 5KSHÚ ò6ª4ÄTÕG†‹7:ËW˜0äm4+Ϫ@Û0ü6Ðæ÷Ÿ÷ãàè|øs;ꄦó‡9ЋK®‡ã=]KAJãK¯GØ'ʦÿ0“;Šx ë.þË]–˜?´#Ñt¬öŸEÀ:ŽÎi‘G¢ Ö/ÐxÜ7W·aö‡§:Ä !wªL“;§Êf$ãHM/}`¨&D²€†›×Zëµ Ã '@¼Ù|Ï\.êäQ”^‡LUÈ܆é>×CØxÿpŸ3tCÜG*,h¢tdO ±PXy–Œ!,6›t†Ž²ÏD6Ðö®j$¤QèÃêºRãA„ƒý“%²ø‚°‚ŽðÛÀ¯#žYZ©xÀrçLåx¢·¡›wb7²ÄÄá{Æ0zã&ã)¤C›°Ôª,N a»ì@ëahÌb­1ŽEØ<]%Fø@cqM ¶ñ"¤?Ýö0kRçÎ^{¦`'öNtP;(Y(žRQH@•ÜÉr¿Ž§RJãœm·Öq¬ÖùþÄ®O¸Z"nìFÑY‚˜í ë@Ù›DÜ' ¨u ÏÂÂÓRÜÖÄß?zK='qw½þ¶ßl€©ãõ§ƒGC Œ£í8ªz ­Ÿ™ô A “ Ab.œ­Va¾®ŽÑ ½ý–‚àÖ&'ÉÇ›âdóqÏîAðéžá‘‘#žpxbèØ‘0û›â"EWOX=pýþ 5ë/»&¤~ìÙ1€„D9 ùÌûÓðëï1¦§Éw‚LO›ó Z¨Q%ù°<„C¹K—³ŸýMáoLLäãÝ<=ÌÙTôcI.÷­Ùã–»-â¡ó‘ºÐ¢ÇñwÂEãEÑÕ]œîs ïù–)÷N*þímóð’‚Œ–ÐßÈy†ç ‡‡ù(8.kâHOèï„™žàó "Ã9Æ|xœœçíwâ<ÏÛI¡ ñúá#v;zà~'xôÀÚðâÄÐGŒ3<´߉íç¢ àóÄýN<è‰»Ê º°Ñónt­zÀ𸹡æ™ÐñèÅË“ê;A–'Õ¢ îóýNXè »@¿¦Í×<süNŠú$š;”‘*B'OžïDVžL«:œ~Ä?õþÆÓ4BZÞk:¥Ü6&0äYÞ3|mç‚]Ú¾xÒ|'ºñ¤Y%LSÿ~¨†ËÌÎç*‡ Wßåic.û¨(º<xæÐ&E›‰™ïÍw ©“¢Ÿ›Öwâ2O¬UŒ1e´‚ØÉö_;gšس62c p9&dæáã3’÷l2)ޙՅš¾H‚ã1cc7c¶;ðãüÆT…ÒgåÊÉ7)*v›n]£U8ó×$hÀÓÓY9ž#§(hvž KIB((t#üóÁˆØ-oAPæ!Ñèy¤€“ÕeØSÙ‹Bkn¢˜éú¾ð¡+ŠŽ oƒeÓ×ö–ã¢1ì9:­VóZ 㿳Áûr‹²ERôkó þNœéI½(^=ü¿Üún€ŠõýÃGÁéõáÂIb8Â/¥[8ôsŸHjy¥Ã·ŽûBŒ"Ž)wFÇQèZM–Üìâ—Ï’ûéô'€W uDó²³ôyÛY\ɾjp'ˆöMµ (ÔCí»·gžý!(ÍÌCöš †Ÿ¾\p'<õíQ ˜x«UáÇ=ÿ·» 4?u>;$ž€p'(ö Q°UÀËš)ì¼ãæÎ™ƒ´>Ílß}e:ç½;3¡ó¢(¸¿ï!܉O}AŒO5¯ó„׺^•gAÀe ¾m9Ç·ç)<Fƒz}_À ‚ÐNràc|&7ëÓU³1tÕòžb¶Õ|Oñ£¯ œäjHä¨àÈÞ(¡7Z{¾€…™1šïjÜÞýtíýÝCƒbƒæ;A±ï=$EØŸ¯ZÜ Ö}#wièq:O#H^æ«o6ØäÌ’ý"ö€ºÓçìž>ªƒáG5o¨>TÝPýè¤æ=Îl¥æ=Ïù@ÁäCYõࢮ%>gU'@(£µöƒË;Ô<MÉé$Ù8¼¸q'Üwñ ]åý󯸴‚úüû×?ÿíîìîÛç߸àûûïß~÷e+Û÷ÿÚêöý—¹ (ôŽv^îø~o÷׿߾ÿËßùößÿ?¯ïœÄù^'¦]+¯w6y ©¥×  ¯u1[²PÉȸ𺠘üþë¯cÀ¤Æp_QRO&ýúëY›]ßÅUn—ýõ¢›L“YjáõÊA‚J„¯¿ˆýÐ?Wûúë¸ÇÀ6fEtúúëqhôgêšÑ6õª}'ç믇ÂQÝênÇ×_Ç€E3¦¥Ý»º$&~ýõVYj W}ýõpt&{Šàë¯ïº1(dúå×äÐ><ê’Ã"Ä"¯œ|ýõð¼mÈ$üõ×¢†×¹ç‘ÜŽ’uÉ×_Gõ²¯ï^‡:^‹gì­ë’¸Ê[–kzG˸­[]9Õ§]´y4ï1oYô8 `´‹þŽ v_Œ6%2óY—c]Q×l5Ò–0´Wã|A§ç\Î2¯m­¦¸É™Îj~=i±«ÉýÔÅñEdé —®aÍàõZÅTª=–ï"®£I´u—¡ì®ú~’ÀKWA|ãÿ\­ ï.¯–/w·Wk§VxCj±póÞºö»znÜÙ]á\2×eºU}kƺhkœ„®Ôl´sdµkÅKècHj+]þœÖR©b RÚXšâ.ìË1 m.HMñ÷&ʹ•KÎÎ…½•Ç.þ·“Õ:Ùû^Màçš¡=œu)œº¨í¶Š›Wöhl¿.#Æ Ø¹ W9Ø\ÆÊüß«@½­Á=W ˜¼®Ô*Qû¯«õQãlkµ8‹·÷se¸º·ÊÒÕs«&^•¹ òE}g7`ÍÖ²±fçÙYó17aýÛ ÅØâöÓb\sïk1¦ºñ¶ÏÝõ[Ì%n9.æ1÷;Ws¨»­« ܽÞUôàNó*tqŸ{7¹Ë¾ ÚÜã_EŒž0,ÃUÍ7–±²§+«@ݳÅ*!'K‹%Jεþ¯úèOßþéá‹K endstream endobj 412 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 418 0 obj << /Length 1882 /Filter /FlateDecode >> stream xÚ½XKoÛF¾çWè(&Ë}\m§h·(ZÄn/M4EKªmQ%i§.òã;¯%—–lÇFÚ¥åîÎììÌ7/¾9{õÕ[gg..²ÌÎÎ.fJq:Ë“,†Ñìl9û}þi¡æ‘<ßãðù´øãì‡Y2‹T©þ¶ˆ¬*XT@•ì=‘JóGÔKÔK<‘ú2îa‚g‰¤þ‚ä%ÉK’ÿ… ù⇡ìöäõ£Ù8+Ü,2:vyÎÔï`µ†g+ÿÝ"Jµ™—0liŠ^ýŽ žž¥ì^òò†–iØÃp=^Á•<8þÏF®x[#Çy¾8þš—N`ˆB¾_ßÃsʯ¿À§ Íï'ȲH'¹ß«’HPój¢˜"ã"¶G }DPîºdºuÙy†Ã2=”ô:,@³‚¢j!™™òõòŽ9í¥fØÅ†­„ÛFÒw©yLp4Ôóa®¼p0Ĉ§ï‡@ÃeŒÖhÁÏÁ?" ¬w gÊÖà|´òá«òå*Ä*Z9èq|‚¯Ñ»ÊGv[$¼›©Lzr£4ëN^äêä€"HEÃñBž²htæ¾—Pk`~Ät|)L¢kªîß B…Ñj[úþ„Î\ñrEå6ý.k>Š*¨!Ý”ýØ!Á9jûŽwžPÏ÷2PÂJÃvì“”T·C$¿,½ÿLïûDKã˜öÞùªãŒÕ7[ŸçGz'ÕÖ‹yžŒÔfÌÁ<Ï® ØkžýIw»@yõ’÷÷Í!“†&²ù`€k;x¹‡¥Ž¥óx=öE8~¤"ö1ÁWÄ´Ek»5¿qî˜rܲjÇÜyÉ–Ò¿nô_.@°U>ü é¶ó§W£†äŽ{l Y·äÞÍ/-î‰ÃY6ãw”¿ME£w¨œ Œã`=í&pÒbŒqþk _dw5ÒR„©*_–uè7ZRŸã¿zÀ¤X´¹Á•Uãs.Q°ª;odš-iÉQµ/[ÖÑ3U`RLK(0µÓß ÖÝï¦AÕ¥*`6Cp‡ (,aí³L{ÚIwc)<ÔM“0†²Mª$‘[}lë§2ÚÖ­í¤7ƒ6µÖ í—aÁ'åóèXÀ¢l%vkòo,œ¶C§ÿ·¾T¸iGÎ9§w•A5Œ¸ vN’¼¡èÕ÷g¯þƒ%ÉÙ endstream endobj 318 0 obj << /Type /ObjStm /N 100 /First 876 /Length 1796 /Filter /FlateDecode >> stream xÚåYKo7¾ëWðXÊå ßEP ±“4@ÛI€> ÖÒÚÙVÖºÒ*Hÿ}¿YŽd¯e&JŠ¢=-Ãá<>Î ¹Ö2ÊVÎãcU–žSd¥ë%éÅ,ý¨8J?)KÒÏÊôÉ(gÜÄ)ç0Fà–¾Vy+}§|rÚÀÒ*DéG)ƒ'¾Á*ËF%ðe•}šX¶ŠŒ‘ dv…d²ŒEd#Äh$EŒžG∨@6@NìI.£a¢ÀàŒ•ƒÐ8Q«)ÊÊ8§ØÀaqÔ§,4ПŠ…E; mÙ:{ƒFôëI1ŒFƒ¥†óÖ{Q| #'±·à Á­Ã 0Ìâƒ0x[Ȩñ<±"®½œèŸ±Jl;ôˆmÂH"FâÀ[D,«de¯ELg±ª¸ gø-zøN²Ö*ˆ,K“rÃ|Èp)‰ŸAã‚€Šx3‚&ʪšÛXlì2æ-lä ‡‰MAyÂr¨xf,V¼ØÏ,Þ "·wV€‰–ƒØÃÃ Ñ ƒ8qf4M,@à£( ù(æ…ƒ}/ç p“‘ˆF’l‘­Œ€sÔ5*ÜÐËÁåØš8˜&—‡Fá·NF\N2Uì8… °Ø&ˆ»@<œë€BTb¾ M=šTGê˜a8£^©ê—_RNrúlÐ .ÖóùÉäÛow³×‚ù2brš!X±±`-#†3´Ä†2âDZPq4ZpQFì³v8§eÄ.éR)˜Ž¥Œ™YçR²!-‡»ˆaI BˈcÖd H!t…!pTh ¤Í·Ìü¬[ôêÑ#U=á@`¾Zõ §ž8®;Þ¯Û^"»:àPý´ì¦¯›^«ê§£gªzÓ¼ïÕ ó7]6˜¨Ï›IuˆšE¿B””äöjR½jVÝz9mVCv†~hfmý¤{¯Že ŸEÞ ’#ò v«—`¡Q\È?¨+IjK݈à½ÕÙßõçb±M¤¨Í¸Ç‰ âˆÕG‰´ XH›ˆ ‰#‚çBâÀš³½Ïù%þނȧ:ÿjù–ó±?ÂùH©W䋇JBD’BB¾·$è&Õëõi?ô¿oLª'ÝrÖ,‡è¤ú®zQ .͉È6…R$øK­¤²ÃÚ$}otð ²Çƒé^«êy÷¦S°üWgíùzÙhw æù> stream xÚ•TMo›@½ûWp)lØè­QãÈí!m‚zi{ ˜ØVbÖ»Qûë;‹!–S©² ³;³oÞ̼E üd -R£cS‘jÔÛÙÏ™0I¡(`´È!ý)¿q¹ØÁ7û¿Ñ«$Jÿ7”LN±â]¬Ò\è„è]•³Ëy¢°Êåc •y¢¥­Ð¹Êeð-œG2ÜÀuèàÙD±ÎÒ0{Å©ÊÃ2Êuèvàð_1´?À£zƃÐÚ{×òi÷Èïʯ)ÿ˜¡ªÑrºL¸_3-– ‚ׇ{ˆbeæg<µ2 †ýŠRë90‰—Ñò#¶XJQ¤)—ŠÑmU{2þlzÂßæo_§„åg0ú<ã÷O$Þ–·ðºãˆVíÐgÛ®Ø]WPWËsHÑ9ìéjÍ7s6*ÄZrèâì{q®°r`© ‰Ã´‡-æíy‹êQ¯ëñËêáyÜ à°;>ÚHeáÞ#s‹Ðƒæal"ÃCôûAÍ¿“³&Xh94E#Ã[J|›/Æ5G’”¡óís\-¨.¡&ž0˜v2sË1p3ùЏZ‘YŸKbvf¾|+Iä^pxA+ KRt÷=‘šô;È—¼Õ0äÖK‹¥|V…›á–²Î¤µ"ÏLgF(i˜–è›]—³¿E^ M endstream endobj 414 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./attractor3.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 448 0 R /BBox [0 0 504 504] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 449 0 R/F3 450 0 R>> /ExtGState << >>/ColorSpace << /sRGB 451 0 R >>>> /Length 766 /Filter /FlateDecode >> stream xœ•˜KO1…÷ó+î2YÔø5/!*ª> ‘X ”Rµ´P•ŒÄßïõøšDcáÅLäùæØ>çÚ3£:#C÷ô¯9çãhÕl.NŽh½i´ÒZÓîy³~lŽß¿úAÆ+é”ÚvÐjÐÔj­<ßö@WS§e• ^O~pʸ¨ºšŽãÓízüû4'ÓÒlCϿƟ|;mÆÛñîz¶¹žÏohuÖðqæiÚ‹åži/_øjßÒssuCš¾7†Îø¸oÌ4‡ÏMoã¯óAõ=PjÝ*çè-_óÎGÒÜálz[žš[nÛé'siîpÍöÍ–§æ–›Ö+k_¸4wxšð ßÎÿ=eµR ûª@S»Wž¹6JKyVsòšf_/ö¥S¡ßÑÌ›~LE?^+Ûñ²¢Qîhvø{œÓêþ}jgT;õ½ê¤þvê>UÈYÇå ]ì%ÊO/–µjç[åû¤>9Îj^Èyñyűx3ÝìûVYMOwtI»•tÚr×ÝÐñÙ©dy#°u7Bà~OqZY¶ç~ˆË˜?jâ‚öÜ™™Æ5&(";-··¢„mß)ï1fÐv›~P]±¶â¾ ï‹Èp¬¾Å63GŽöÇ *h4säT8´šy¥WïùJÁ«päU8t²ôš8ö*¼ÒkoTЯ¡×Äq…#W ‹¤‚^‹^`&„ø®Ä^…C¯‰c¯Â+½&U­WQ!¯ÖvÊökæÈ«pè5ó:¯¢‚^3¯[öuñµ‚½ ‡^Ç^…#¯Â Ü›…¨*½¦EìU8ôš8ö*zM¼Ö«¨ê¼:=(¾\ùjÍ*ü&*ŒsÉå"¼2—¬ªÌÅñ·Maoƒ±D…r^xkæ‚sI¼6QUæÒÙøX›‹¨`.‰ã•!? s­ÍET•¹ |{á™ÆÌ%qœ‹ðÊ\’ª6QÕåâM§Bõó%«P.Âa.™£\„Ã2¯ôÊ_‡¦ú™‘UÐkâØ«pè5qìU8òÿÅ8oþfzŽl endstream endobj 453 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 415 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./stategraph2.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 454 0 R /BBox [0 0 504 504] /Resources << /ProcSet [ /PDF /Text ] /Font << /F1 455 0 R/F2 456 0 R>> /ExtGState << /GS1 457 0 R /GS2 458 0 R /GS257 459 0 R /GS258 460 0 R >>/ColorSpace << /sRGB 461 0 R >>>> /Length 23202 /Filter /FlateDecode >> stream xœ½ÉŽ&MrºÏ§È%¹PµÏÃò’Шnà..nQˆ?%¨›€^_~ó/²ŠlªrуUÆჹ¹ ÇÌòûß¾ç÷zÿ_o§ÿ¼çö­%ÿw›ý[¹ÿóÇÿòþÿ½ÿ·ßýÍïóûûÓÛïþôŸþæ¯Þÿú÷oé[Jé]ÿùß¿ÿëÿ÷üëHïÿûíïÏ?­ô^Ï¿ÿÃ{zÿÏoùýoÏþé-ãïÿñ­–ú­Ÿo´úmõ÷C¯o³z|«ãý··Zë·Ù½¾õNúüŸó÷ž¾µúü0Ÿß÷ò-ñïm~kýÐõ[] {þÖ÷¡þtÿÖó¡Ïœô÷ý­ˆ^ô(ßžß ŸýÛ¤[&½¿¥LºnÐóL°‘Î|ßlúþyŸŸ{}ožßŽgðï+}Û‹ã]…tù6 ç³E7 ¤il=Æ?8??¾ ¬Ïþ68Þ5¿õÂõjúûú–ç¡ç·ÜM¬wǰE/<ßð³]=ŸxþLs<ß—¼þ^ÝžŸÇs¶IûáñÖ³ û1ŸÚ¿Íý˜omAk=ζ¯çz:íÇzÖâùy½köû½‡Ö|¼_‡®ù±Ÿ‡.û±ß‡6ˆð¾úà—û=óÓOyòÛ-~<óO~­ó[yòóY/íGðû÷ãÓyø™þý=Y:Oø}mÞxþý÷8°¥ÏבýÇ?ý GöOÿø?Ϋx¯Ú:Š{ ºpéÊYŠFÖÑÑ:Ÿj“ŸkâÓ•´¶ò<¿'Y«éùù--±Z3½·þŽç¿ÿ«B£6îNKg­8²3¤qÞ”³õl 61רÄO¶Ü½¨#ƒ[æÌÄoy™i“`fy[èÌó¢Ã$%Å¡>§Gô\fR0yÉq¨¸ kJ0Y &[K:ñ÷»ðûxWn7Løõ½=¸rgb‡¶¥Î;ëU+éÃ=çe QÐë•°Þ¢çy>m‚K/Êxÿ<ïÃgžß;ÃàübÜwNCÙ\kÐgÈ '~zIA¼-Ÿµ9ïÍ%Èçt-=Ï×çs:Ç ÝIŸÓÍÏOð6èsóÌÇ÷JèA'¾¯[1>2M>’¾7Ÿ7Y® »‰ÙU¾WÆS$®3®¬ÁÅHoåiÇZQh€>§¥¬%qœÏÖ —¶}&Š•ßùI7Ï'ž÷Mxß—u¨ï÷¦ùÏÙ²ÖãÂ1œ­ý˜ï´fëmt>Ökúz‰õ4…pìÇ,ž÷ëÐ3?öóÐÞí÷¡Í⼯<ø%¾gvšMìaf;£åÛÍŠgr<ÑfÔ3÷ñdc˃`òUá·ÏGà'òÇÃ~~œ·ñ¼òãýóÓç¨c~•Û^y  ôß(_Œtd#æ9«ñ¨€SŒø¾£›óûE²0wîãë{G÷'/dé=ùHÿµ8ÞɃܗæ¿uæ³0¹q~¦)½1½ÿ¨°8(c@ý]ɉÛ–GÃÀ þ§šîXï"íôÄ÷¸,:y>~þ ‹ìïëÓûáïÁñ`šõ1ÞcâÌñ˜O/ ž/.½ñX³Œó¹^ÇÄÙ㱞‡Öü¼ÞÇä™Ïý€ ”ûuh ï'èñØïC›?Äx_VðËýžùé|6—¿ñK°›Ï0û“_Ï4r{ðó™¦öÃü~–‚åÓqø‰üñ¸ã×¥ò´ÉòñþùñsÞóÑ*fâGî>•?Ø–c­’(ÇÏ êÔ ¶?_Ij³ A0 U!¼m/1¤" 7þ}þÙSeìØ&Zž¼Î~—³{Z–c2‘¶Ò”[¡T<Ëœ³·9W.³Ø¸gm‹•¦|,7.k÷6õ-¶ì¾Ÿ _·A÷ß9?`ûCo‹­mœRÚ3ÎwÍ™Oº ð¼î‡#ÌùýáûèHs²q|oq‡JxòŒ)s¼¹:&º_/F²‘èÿS4ÍCon ØPbð\ô]ÇBûº©Dc=ußo þ£ ölšÇÀÂüÒ¶4ïóÁÆñ¾ìýð÷Ž%«ùy<ÕFJŒ÷lcïùÔ5à5ßj#!Ö£¶x^냹?Ö3<±Þ‡mús?­ùx¿ÎéÝ뱟 Çc¿ñ|yðÞ—ür¿g~ª6wƒßÎx÷~ðã™_}òë™ÿ~òs½ú—ù½„¾÷<?Ó?üó{Ô³ŸG úxÿáyœü£QACj¼Û?H׬_Hc:3Ôtbð†¤7¬ iíXÑ ‚cBƒ£ ì/3‰¦`ý~…OWCú7}„°C¤¬g%ÏÎ}¼ÁÎ=¦ž•ãIi…3‡ÍAM­™c‡s;dœ7GøÁƹy^t¶°çÃyUðwkæð@à{¸0ô÷‰#Pq’À p¾ÕJšÆ w‰4%Gë4 HÓ<>²M=Ï÷IÔâý´R4™õøÞ fŠñLý}ƒÓj³»¢I)MM¾A%]ï¶©@7°tzîÇ14ïס[{ìgivox¿K þ?š’#øå~ÏütÆSçƒßÊ´ûÃüXì®~Åq|òóY/íGð{ðûá<üLÿ(èçšÁŸO&\ðµFÃà ž£³5|#WìÐy’ct¢ð…LŽG‚žúbñóXáj+Þ)Òšáàƒ.Vk¨9a·òãtÑŒðnê`2SìÜï‡h)aÁ< ƒŽü[Þ§R˜ÜƒàUùT ñ°²\vpÁä€+”¿ó*›sõ\Ú‡up.è 0ßÃ’…OùlÄôvÁûsø¯’Gšýýй–Ž”;Ãp¼a‰fÓÂÔc$œwž«MŽCX`ù=LXø¡ÇŸÔ›1µó×d¯è!ÏF8¡Î'Îý~–N>Q `¾!óäaFØùAVOÁiìñªìe÷‡’g¤aõVË®Aâ ®× …í×áu_¯éã€>§Gp@K×ëË­v¶Ûîò²RN9mJ/R½eˆ­×†ö»Ïƫʋî‡Ä*Ð4Û‹‘BÑ4›ás&<Ó§ÚhíÖš‚‹lƒOìýù“_ï£s:ûÇûç§áÕ;Çƒ÷  cÃbdâ¯óŒo5üZ¼rƒÔ¾À·^ÁòÿÉ•<ÂÁž©Äá¯ÞÔ‡]pþa7¬úÇlØ£ìoo>Ld–“pýU)'Ûp-!8™,'áZ8ª!Lò;][ûöÿ¾é€ã†RŠ®8Ð.3êÄ)‚V€¦Ô ­3&Ø‹tñ’œ]âóZ¢¢ïû^Æ*äþú^ÍôP`<еeÉòuë"P8~m~¡ÆH-bA ´=x¼€,Ÿ_ÃX<Ñ(×ô¹Ò$ŽrÏ»×s”n—`5?¬:š¾¤Œp•à~®ï²‚îå?L )hwVv4I›·"î§½]9X[^ÅChΈ™qVÕ}k¾Z6DÌváå2Wžù¶Ï.ë†ÁÑYªè'~ÿ‰üñ<I_„%po~úœg¸tκ¹ Ö÷Α’x¼ñå|¶»OÃùõœøunñéÊ—’\®íÓNgÑ"©aSÜï&Sî_?ÏP *å%qëÕÌF:T-ÒvR·#èj§êTDFrŠ#3PýŠTÁªlƒê·­êMj Tù÷E#ô`$ëð]/T5¥º;ÒÕ“ŠŒÜ&š¿ÇjMþ^ªó^RU“ŒÊ.Ùs¿×S‘*¸¥êuœå$Õ5sGã_Òw~Ü_n]íñÆ4cDú"„LŒ±žçˆ“rÌ(„NÌ8…2ìAHn=Vì~Ï+ŠØÝsÅÓöû½#ç°Ù8ÑŽe›©±£Ùfpìx¶PýÌ?Ó?)«]ªbI¸C?Þxþp=°T×3üX¤¡lâqÛ2’üµ|CÒFЃ´Õu­ D‘ÔÿÄh_Þº½ þ/ÓýÏßf²Œy8(Œ#à‹ OøvŽ*;šÜRέßð÷­½¥KöxØé¢iÂŽæé€lÁ…°Aˆ|ïè\k ÎÚž¢+˜Ì$AFý4gÊ8Ù­ ±`%ø<¿»¾ßtšÛJï«ç(v¢xçf:Çãõ…I ~)šÂü'M´À1ÿ{Áž•E¤‡‚LyþÖKZØaÊ#ú³€¢;Ö»Y ?ôÄzV«!A›WïóÉê£ß—}zã{‡3¬h<ˆ£ÏÇx³ƒ81Ÿڸ盭€Äzäâýðzeƒwb=³ ’XoÄÙËc?]Ÿû¥‹ïµŸ9IºÆ~GT6øáк×Ì/÷{æ'œå'¿åw„ø1;¤üšm›?Ÿ[›ûqù=I¶|>?Ó?ÝwGûyîê÷žÇŸÈ$L0º@SúÁwÕô¼¡ò ä¸"p ßXü»°þoanˆ’À†èE?3ËÏD;%Í &ïÖ¿Hygh¼µrcò•ð Fí¡=´dÚÙ«ÃØ+ü!µó+4A_° ÚXæozÅ;*oÄña#á‹+EÒH鹯ˆ_TòpW}#=ÿ#ÝíŽ ­3ŽÖøú¤ÃpБÁÜóÖó±3vX¼#W?Q ŸX1—J„P£2€¯4œDÌv8l3ù·ö–BOTc°>ëðWà¤Y2/¸ëðpS¤à¹y×ô0(F¸Ú :_™;¾‚5]•·”¼s\ãB›Ís™Ysá;ßÂî·òšK}ÌË­'òºã Ã¨ãÎÖªÃExL’ï8¶€‚yxo{zò)ÝÏX¬ÍÙ†;Á53µ7„œ¸Ð,ðD¼C±M«Øœ-vÿ¬Çš~Ç–³Ñ:¯ø4ÑàH ã¢Æ•ü‡U’—­‚öšGz8 ûrwŽLŽ (we6~ÅœÌ(hâ;¼s)Ô?s0”E¨$­zZ\ÓÞï\Zç\Z÷šÂ±ºi;iYÚë€R¦'–ÞáÅÎ; 㘱/KòcZ~Ì©³^lÖä2ij.u(rA~þ ¾P“.ÕB*󳃊^A”)Ö9F›ób¬÷ƒ:ˆ±?¹¾†q6—Z‹|ŽÊІÁ8òÆ ~H-€&®»ÂÃ8ÌV×+pžêKÎeÂ?8 ½ƒ–e=F€§Â°Vá0Zñ¹NØVOåX8ƒ‡WS©ó‘xž 5Ú5B6€)åñÄ¢3ƒå²_Ñ´ñŠ3ŒÃóðÍéê(ŒóV|bðRêšJ-×°ð0ÈØÕLZˆ¬V1 zÌ1 J}¾bq5Z¾Ã€î¦\XäÈ"Wº7eBüà¢WP£‡âõŠ%ƒiðØC.â¦â"Úƒ!æ!Ðhó¯V–˜úuG ¢È‰ÐL%V(û…FD³–ܦQlü¯HÅ£@Ü|+†W4ˆT¼¢ToI28m¿&¢µ°T `Ž KZ„“v€ßÈS?h÷@oÂê1ŠZâ•OøœQ@Fæ,îÃLÁ©Ä+€¡\¾ÑL¡¦l¥‘ËTEcCF¿Á¼aCÌO@µÿ̉Îû†)HÒh~ ë¸ï~ÿÒè¤ÒD»6–ç&Á4 1W¥#29ßWL¿"NÀ’%^ðv>©p!h˜žè^‚Ñž–8ØbÞ>c#q%´_P‹å…%çQóˆ›áJƒN½óÈÛß_¥{U@ÙZK’Ž’oÑ6 0Í/Nˆw@‚›0ÛTîUKŒç}¢—“”¯bNdø ¼OLJ{)’ 2® çùA bj’È1Ž*E’Q'J‡JeÌÊ<”-ÀPÓ´ø\„6‚?óÇ9»‡T«óDáãʼn!&Œ]âsR¡[^J`£4¸óçîÆÕ9¯Ä(òeTÀDï;ßa„˜8‰àET=ÖÃ"ƒÊ¨.äY¼¦\|%Ʊ8ª«ù¼sh\ë¡Xwޣľ`÷G¹wÖàeŠq¬XÓ.UÓ\Le´G~ÆÅPœfŠw@­Rh+Çqä:¤öy¢¿ÉÞ¿•â”<—õRiºÌ™¢ ‡wƒ¾²Ç]Ó%%PÇii÷Ï5êȡЭiÖ¾¬¸ƒ¨Yª(_¯ü–.Pï 6/Ž.‚éXDæì;гóˆqj-v“Î\sxi2‡HSĆHƒÉÙ ˜ }Îð’y›0Yt3‰ 7»Y˜Zìbá7– ÌtÍGHak€Ø=„™[W‡ÄO‹ÆÀý€ê"e Ý1@éL¸ó4br”ƒhò­HÀmÆt±¶bU|j$¿"k%ÆCõ’™31Ììy\-˜ÔeÐ#ZRyó·ñYýËÚÑêºZû#JÒšJê ÀçcÑÇJ·¾aœÐ²F¾ÆÉÄü«@èdË6¹é¥Ã’‡².×­)Œ·Þd䇚_ÓN1e(+KÔ-KŠöJg)¡i‚) ë÷›Y™åüOöH×zèmGöbkŽuß[¼B˜C›X›!Ì‹ƒt>©ø’•ªzÒ³ú†î‘ô‚N.€F…˜7ñ ‰/Èíª¯“ÿ@^€ï]Å‘à!Œ™Ê6(ͬs¡Þ¸,޾¿·` [þ£¬,9¼ÏñŒÁ(F`§L ï.R{õ@Ñ"m=ðçautˆuúRè±©Š ÚY,éÂìQ¤blúÉ6/Ú,ÅË&†lMv„tëÄ ,MŒz^1†|OEù>Ðåå•*¯|‚‡ÓŽÀÚý: 5¬ýŽrSàyûÈàMÇô_>cPŒµÀг”Ü ƒ(ÀÌÚŒEy¦pR"z-² N›kãµl– Ê š%`°¹…òç lßô³­D–e{ÑõuŸ`šS§aUù¨“)TKðØô¹c2Uä£?i”Œp7å;x‰2µ}†xg(éC¦ïbæËG8 Y Sotñ’åíZä ´’¾èS†C0°=ð#U%Öƒ“À/Ù¦xàË=œ¸G¾ºAàé¦3+öþ|Rj8R5BÊ,á…ÛôˆØ‹_Ø7Ò%Þ8óo¬à †„ÁSûZ”ÓÂhgŠ8 …ÙàÔ)~œ…~ ^äÔg ]6ëÅ=’£kÅÁ‘7i‡‘ˆq$ûF‡6Ï^<Á…ãH“¹g^¹Êå|eeÝ¢thë–þص­HZÖl"¢ó:Î)P}Ž ßâPFŠèþ‰ËœQP& +“†y´P&90,èær%~u\Ó[‚¹©Œ>Â}!žXˆ‡ž&=DƒÃ 7Ç"ŒWbüR☠$+.w+p2<Áµø/òèmr6"üu›àU†F(‚‹ÎA«Š|G—ë¢Ç­¢RH¸4¥œbE9AÄ®0õƪ’˜è`óÖW{ž—ኪӠϗ½ω˜<±Ø}0ír´¼¸ù“1•þÒ%9Œ—ŽÐ°ÀõòóÅšWâPËå¯ÅôP%ßoHç(Mšyïú°&Ý#Ncò¸Åu‚:°¨oœH#$¶ø†Ù[ð†Û”ÜÆ3œ"bÞ~~Ò[Ï7¡Gò…5ƒ?Úá-s¢÷m'²Š^2¦ÿ†ÿÞ$¸$§Åé&¾¸…èø†íúX.g°†äƒI:;3ʆðÞð®dÕ}àïƒæˆ·þþý®Ú’ºDñ´å4JÙ}aP\ECE”·$Ûþ ž¯>­€læëSúþr_÷½lãÔ&Ý!C[è™–‰²×~ÞLSk0«× i æð²ûdÑH^¤Ž Î$ë.sE ƺwõ /ÖzÞ !·™Ÿœ¬3uûH’dàîæ´4Ã? ÿBRÎævûŽXϯ¸W>ßµ]kè»ò;-Iæxn /妰Ph,¾:QwöjèÂM´%–j××2uÊSfŠï›ô#Y*gÕeCü¹dË`*w‚.K…¯‹ë×Ö¤BÛöÊÐÂQ]nß\S…´«ëÛjÜÖæ³ÊÑžw ò–ï¬x ªš,ØS5•.˜^^˜¦œ»z },}y `7VË@®I‘/­ú}lòàoÒÖ‰3]ªKF´@R`JÚ¶[qÚ˜Ž´o:iDж=WÌÓóª¹[ya”5ËV­åÍ¢Yi“ŶrVqÐöl£Â;’Bä3ù`)æ! £U­C)Ê#NcSÆ}RÍì‡Zž«JÔÿ. µt[wsj%‚tµ~ htú‘lµá‰Wñç¡_ˇ¤¿·ëÅõây7±•ÇÉ–=¶îJwžÑ_û2U·ÉÀh7W}y_#)Ý…ÜÁyÚ•?×MÄj–ÝÏ{Wm­¥ïÕðîUírɃªº]òhªô% b†~ U.ïË¢)-γ+™t_ƒO2ŸŸ¡4Õ Û¡@ÿ0bÍ|€¼—­JÚ7·€Ù±¯]•î¾7µ`©AkŸS<Ï›,Jv+A?’×øþ¡-=ø€Þ¸"ß·îÆ)9ž®o¼HÎG‰mç²µø»ÓØU”=îkïÔµÕ'_Ÿª2²fÜβ0’²Öƒ3‘Õ5 o\ê¯65®B Óú¨JPâù©ûýåõIÕgÃ^ßd?õwî eœ€õÜ7Xó©F#KøÆl·Dûüß²#ø€ ˜Qè?Ëw–\Cßs…<Ç\é‘(|ÃŒ5˜š“Vù5§×´hý^­ Í|Î(<áÌ”+–¾{S¹QžOzÛ‡hÝ {ZÎSWNæ´lªxÕ3ÃA¤cMšt.÷œJûÝq·vÕ‚ñ=áÛ¹ë4ŸFWnT1÷,Û¹\ÍT5jŠR9þ…Óé"ÜÅ*7É—ë$z¯ª2d¹|À›"»ïK&SWc“ø ø•f¨/@ŸÀânÓC´õÂ0"ß4ª éº'Zÿt3uþ¸±¶²d…¥²JÕDÊš§Nß¼1iiæuFÎX~#:ϰe“1ä;e‰ŽÊ ü±òHxóü…¶0m_#WxdÒ*áÿªer£¾G®¯­é&«áý¾©‚U֥Ѕ&NÄé*Öÿ³šä‘š9mh•ç“ó_íçmÕ©@C Í53¤N¾‹È*+ɧQXübÄýÿYÎñMÌQå騑§áì”ÛøI•³J ½³¨bI‘Þ(ë©*kÙbQåúOÖ{¶õ¾L'y($¡Ô}2Š )–fë=ns·)»LR+®+‘$·åó'r{w õv6#ççUìw4§PöKÙWM&øl×·&_tÒ)ngæ Aåàƒ,‰áÓ³”]oB/nŸ’—*ùijìƒ̪5M—.³b©ù Ê_°ã^`={iü‹‡.,”X ?Qž}i”Hº‰jÈ“*)ÝB?hz¾‡oÝE£VÜÎ.›¤„Zï[Ú¶ô…¢8ÓõPyóŸÖ{<K·7àZ÷²öÃfZÒß·¥òÖ*Y&ªr@Jq÷-Ýd%¾@ó ´FœiLa KÈÌ®5–)Ó¼í8€Æ#Eôþƒ4ccá3Y´¥ T‹+Žh(Àl|Õ 5¾ *4*çePŠéuköq –âªtóAÚqÒÌÛh¦*2æh~$óÏh$´„œÓgi¥Ï(wm‰³§µ|šˆôÞ3¾°ªð5Ö Ê7®Zk\“¤Xºü‡Kñ‡•cMjD¾ŸX-j?æ(8ÝM›Ô Î9u¤‹¾ N[Mqãd)몿sºy‘€H7.åºhŒ3Eó¡åªuÉk4D»â3Æ)<¦ýÊB„GñÑ=Ò’4'œ¦áZÞìØ”îÚýã-4¦±kã֧؉[ªçÊtO¦]‰odkv£¾ªÚÀˆo&"cLDs®<+΂r³ÉŽ5(Š#I³M¸–õjbeÚM”Ôºd-éßY3Öñ@au§¤æÜö'ª³3{{dê?Ðò+Ϧ¸U6Z`º®e`÷¦nçõº™¦QÝúÚËdFÿRìãÆáÐÐH· -”ý0Uz†Q•¡xV¶×dìgäcj7V®5¨žSŽ9©”ÎÆ¼ì–Œg´/;þ8Ujc¹©6ÞG4P‘µÏ•–/ÖP–cëYÞ¼¬TŽ ù<'튛…©#íœ/ºK¶8ÿž£åÃP1&×YÏæü©R0\¼zÿƒxqpâôß\úû•qÒ¶‡5–(XƒçµF[åŽÜ^‹)=:ŠGLÕê4Žk nUµ¸Î¨>Nê38⦑öý*¸¥³ò¢??ß­Äûܺ=Gû‹8}#" rmøÞѰäT iUº"]YÁ¬‰Î»» ¨´“h¢8’ù"Aá¾Æ#pME¯Ø%âPÚEY¬âö.‘§ò!–@¾$¡Jhmâ¼U¤‘¸AÖ±%FcXB¨Ó¨¶²Wúμ¡4Bóü Ý}“HOÌB<¥m<‘¼yKu­]€Nå°4‚#d]©l{b•@•‡í,YU¥Ciª|£åvV#¦±ÍÂKív¬Ñ~ìšu¬>”Õõ|~ÑKe÷fÈ¡@æv|a²ŠÎÅ¡lK•\—Žƒ+̈¦lÚ÷„|oS~¦¹­+ϋė¿—¢nï·³tÛ”¿§÷=Ð;³J#1®(Y s{Fh U(ÎÆlB¾¬´ÿe¼Ów5vŽDží™„ /ÎLÒ(vèD)džìƒ©buË}‘˜Á8ø¼â *ó÷]z¸lãKS漚ªVi…Öúþ•ʺ¹ZH妺íòÅO:]äRt—~qé5^·ýwÞ]]ºò¢Ž4†4”eáγVôÞ¡ ó<ƒnÎÕ©¾+³°<òt©íèá«. ;ݳªj#׉,)‹»Lþ‚¤&x£YËJª?ÆK"eÙûJißÿ!Ñ–ì‰mê® d\§ &5û^˜|ƒo–·«ï V¢¨jŸå¸Dc‰/4 žŸº­kŒpx›IOdIå¬{"¼4)Ëp?/~Qµíh­oÆx °j ¤È&¥¼c§PGîÕ˜%pºIÁ:iý¾xRŽ76 ”S¦²°y2(’¯"æT"ýUGakQ”p*åÛo ³$Ò,TþŸ†\dIë׈§ O'‘daú(u”Ô.&zü}ç¿PÕÍ‚êfÙÄüâ¶Bhë‹%=…²¯ÊæM›*h>k,®²$–èp'ªVVuÒ|CCSªï´È‹K_¬±4H¢ïª…®ìY"v†›Y­AGxa*´¾²Ueah îtÑv™¨ê4€:»Bðtc”ár[$ÒºíNs•—@Úª˜ë6ó0º˜Ê'“bIнb¾*œîâfHÎ^4åÐpw_™XªÕ¦Ì0TuÆ ‡.ç±”dŠçÜ`EGuú(”CÚ3£°“ÎäZ]Ž/·žú~ǬR8¢˜¾BÖEýGå©d#ê‰v`ÉŒÔY×Ìì× ‘Q˜ö]_ΣyEî]uCF› µi²œ;®Î¢kÁ=³UŒsíàL¥ò4—¿WÊHey.Ð>ªòjÜ)@ó"Z¬æôêmPˆÂËEø#yh šŸâ"ÚªUœCmTì… ¹Ò¶êž©ÿâÇ›Š>³+Þ·‹šn;.¶Ux|ø× £°|F8g$™&[¥¹Ð]–¿et€Ó} ¥‘TU8ÒÜaÖ u®¹bv̵hî–2‰#…/ X•ƒ¢¹øFûVÀ´CéB)ݨƒÍFYè@Î3·W4<×tÔŸº,»gt¥§×u?ƦõC$›©»%îžêUÞ.çí¡ˆ¡xY1v„Þ¥”¹€éîæeV0ðµLgÑR‰ö«Ü y³¥H‰Äº¼×-êá²X[tzƒ µjw@Q¿ò7jìÎgÿí[swtåÝÜ‹ï[*ì28û›SÄ´[°’M)¼‡Â©@1L<F"– °nº>A¡ê“Yv‹9³˜2áÛkФV¢c¹Ô€.{´G8=ÖCÝ7ÝnÓÅv’QÔ%ÀÅ,nªß§`—•—ŽlHÝ\ Œ]r²äëòÎ⌘Vp/Y޳0`¿5‰å¨Öó’HKµÛ•1ø›œûjO·´^ä1u«¹"R©Û´ØPÃ…h§M@XT8Yë'².ì­ólæ0RÊÇi8M&2Í©@’LÜɹ0q‘쑳ÃAK€ù´ãü+.E*†«+ç¸,5•ÊõèhZ‹¥S¸…ÄîM1=Ÿ™î$…­ØR·uÓÁÇ?½2éqþµŒ}hv›°!ˆ²ê&*oîõÊý–¡4¡þ)rÈíų dg÷§¤/§ø»Ÿ·¼( ”¹GyV,ßkZ/*»íÂæ'¨&²#½ˆçuEš +ƒ²°t Þ_¢ÞnûòÀ]Ñ#„Rº¤kŽâYÖR4$ÒÝ%ºÄ$Á‘jÈï$`»tš­‹; ªÆQv8÷wQˆvzÄ»D¸2 ˜* Qª›QfÀy-±,-œ<‚” VÆ X”€•¨à()\èØbUÈ2uóýN˜*û¾ERÿ‚)¢ÐâÕK„<6v^¯ a%—Eú̪m¸Üq¯ÛøøaõHé?÷ðÖ§P¿émPÀ0¢ƒµ%þJ±¢ÎÅ,èD‚ùÔZó¬xh ]£–—“4æËN¡÷MÕÅvwž7ù!Ërøaæèöœ])\¹$•Ê™Uº¹éá)ñªÖšs&éû~¨´£ì3g2¼ÌÔ/]mÅ­2ÞÆT±`»üä|Œ’äoÒ§K„qÔ™–ë%’Åt×µû 4² Ës©°U ÓúÀp«ÆÍNŒ®$r‘aªwÉáv(f:l –Ϥ­éd½À±—€v¼mFCAf /Àø"±é;a-õ¥‡§–ЯºŒ¸Ù%.Œ—&ªëîøñZ‰ê;Sù%š¥o1ùpí •ØYû´0r¼$z¹2á*ößz²»Ä\ÊZÈæì¹ñ¯Cü´‡d”PªªÈ-)>u!ð´ïª ÁÝ7·*¯÷~2EOg@+¥´›Š(PK[!X3œR5½Eëþ*D¿±ëÁÁª‡Ï¾…æë}/aÍé˜`è–é™e¡Û-E@( k­‡þ2¤ÓÉÉ\òí»¿Çæ·pKâõYQ0Ö€þ þË2 ÷Tó-JHÙâG´¢¼ü-žàêï9CEÓ6Àž¡Þ䈮–Bbc>>en€V²dz .ø9’¸›z°Óvé/+-kªJ/dz}a÷þ»>&íS=PEôMîÒ)ër Ÿ¡õXª’±j¦ÓœÔEçM­Y „x§Ê™¯2~êú’Gž_®ú2µÛÉJp%r.‡¸Ëí9}™.‘©î*ñ¨ß.¤øËC…Õ b•Ž«P [⛸Œ}‚ý-'{ µ»ˆ„—M“¤¥×o4•oÞbz PFKwHºª¶T¼Q¡7e’ÃÒª¸}—µ¶&9Ê9ï.µHEÙÜ„ÒM‰U"Ú¸µ­£‡6ÉPÄÅï0}%LFòöÞ²¼]b3W ¤CTÒ~º‹ndU!mw-FUk¾% »ªìsªmÍbNW™gNU†=Oª€ôìÊнLi±aŸÛk(jÈr,‹`7œÊiÛtœÚMÃVK!Æ §ºß3&93"‰Â§ºlIjä°M©g­x~K3›Q”…e](JœZÈÖ­öê%Wtc¾äN–u á~)·ÂÚåßð¼­1eaXÝxJ.LÿΆvË`gˆµ”Õ¡Ñõ…k®§vj-´ß,{ªµ°§~,A÷l|ñs ºÛb z n]SžiÐp߸7餦/ÔmD`ÛŒmz§è¢çת&z=EOAý_¥ªêÒ:|Ñ·HÆ_õ°ÊŒ)n&)´aÓ{ñ¿«@âRG¦%6×ú¶nj¥€‹u;a–I2½D+¹¼uµîö`AG•óâ÷¡Ljž·ÌY§i°™ËýA-(ÜzœJÏD‡#yv+©ìV’Lž%• ’®äíÒz–9®8,²¨ä¸q#›^ &ïØø¥*»ÉÙÕ‡\Õ6¹Ø•Xä^ã™f”­ÅcÆ#-ÆDºã¤Í4¹ñx ä=UH4¤¯S@0‚ÒÖj]ðFoUaõeºŠV%>•^aiŽ5ô~×;«2`œ @BYEæIÛYAqÏ¿Ã9ê<?…{=»þ{»TÑ‹´ò‹²³@˜Ðž^Ηn¬¹´,WRíŠÎ¡ `3Íd60Mõ½bàŽ©VOÙ;f(c2“rµ:lÓ\K°V™ßx?ÛÈ•[óQ-–ŠŠW¼[²Ñ7U²…å-yÆ„P(Ù¨‹ª*ë,w¥¿«SÒÙ½êS}hÚcWr—4á—ƒ#t±‘¶ÐRÐ9CÈÑ·Dm„Ö†,P÷C~3|«:©¿ãŽžÆL¹·#ZOÄ.Ès_«Ñ½ ‘ªÖ´šëU«Ÿü»r²é4çß•§J{¬É[Žçɹ(‡ JÍra¸x¾·]uRížY4 sXŽETYO0¼Ç®°&:‹ˆÅ®°í‰3a1ܵ>½+¸è²Uô*¤,h«Hf.MR^*‹-˜¯+ù¸† Îû¹¢JSß÷šwœÕt‹Ü–ÜW&MZ¦™QQÂ)Z]ïy©Çé¢Ë+_fMžï«; 9›Añ¦ÞCÅÏûr”üꔳœ·z‹®–UIÉ_\“¤¾KÔ>±&ì`ã\ÎQMKtÚš;(©64Ÿ‡i–4erö~wy‹ßø~x|²m>j¶Òã4¢z5^¨ªâ> îmï3‹>OWÒ\URy*^å{bªFöéCåéb, äõw§rsS­9Üf„4ªÂO5XèèÜ ÓÆõËíÅôVÕE'«R¹h?/ÎÓ‹ñ>U±UT=»ù#o&fDÚÓøÁ›7ÓvxÞ±‹¼sÜ,vôÞ– ;i!˜7¯Qx:ý¼Š¿«=Þoüž«Ü®t0…ÈÖlDqm{Ù1§àªU¥ŽAÀûÎëÇ;ênåvô]䨗C*ƒ|~û¦È3w%»©´!"›‡5hg8ލ¿™X‚% ßlYÅrÊ’‰]²†áµøíY&7P囸û–UfñP¼‹Xm¹¤ªj+1»S Qt4þ›i(5‡fH'· ¢›XÕ BRÿŒ¶œñVPТ‹4{ÏXû®‚ãóBoVŠ:­Ìi:«›Ê+dì :: ðÖ&'ëuË?¯Ëo˜NûªêOW¦c {ãj)qùæÂ^RÝ4-c_ DŒëyO*xŸ§ºÍ"79l¤:¼UÅøk÷ªüahïÎ9TY0µ¼h˜âµX®]ѰåG×° Œ:¢Õ…ñ¾³OGÓ…ž$Ü$Ü6<ìÆl4ŒÑ’%Û]BZ]˜´K³«y]ýžÂº žN%0ç°­ª. ¬°Él«(¿²Š_¹]zØrvu²ÞÎj®M=QâyXMÙª*+õÛmèÍU„YU$®"¥@JöÉ.c‡0[¶¸jºT_5ŠãL‹Q¢­Z43M_Œ¤ß_ãïXóÙÊúÑT!\~4 Š5k›Ë ×"!G:K •Å¥t( XSWÏ· Ó¬ælׯÅ÷ ¢d'¬¢ËK»`ÚÀðªÚI¼ìȪ,_õPÕÍŒµX¸&»ª!aö¾oêõ%"UuJÊþþæÜ%*ø’ò×§§OÑò´ât&õÝJV±h/Z8°rË O÷àû’9îš(îñ&#d¢‚b¢¯’,L'¤„=º3;Çø;®ÛeÐ4`h@¹ #ä$«“Œ e«O”#ýNû÷ð`Z²ŽÏþÎô²pÏ  9StÇ#yæó")._ó#Ó`§ªªóF qñÃÇš¦’+ܬœµ?µzR¯’ËÇTaØx*«éª.h³ùù¢*Œ<»”-— " ~‰òÓRn ÅKÀ˜°à)}»¤k(ÁˆÍ««€Õ“¦´Ž2äB5 XåLQ¡ªìxl÷ƒ´÷›ÑÐðn,—61ì…AïXãªý×2}ÿåØï,~¨gÇZq':_7«GÆi¨S--Ša³jÄŽ[Yýǽ…ÕCP©O›1GT…P:ئ¿¿W‰U÷Áûó¾»Ðäsò.¨?î*aZÈW‰…®êȼ“lz+.çSɪ¯ÌO µÈ¿.GIyôÕ¿|TP)÷Œ5`‰ði¼#áS’ŸE}?ò-€¿ ¼­Yr>Ê¢ÒJîð´ .ª;‹÷åH‡nÅ~n.7Y„D½ã4v5¶bn¬NcVçG«Ñj’TÂì~õË“$zuŠœñ|•öåÓ8äÞ ÏãìÒÞæ½uC>ÈUm´ÃÝ’‹Zü„Iúê<)yð¢¥f·óuLïë´ÎŽ< ÌɰËJñI„™<¸JÛ(ã•Ô´¥bߢŠ91pù};pŻзf’iò/•ž›½µ=ß™U¹eW±î4<¶Yies¬©æ'®Ë,Ê¥¦™Ý4†^oæ!C, ßÓ=Âß‹¡šZ&ÞcÈ–šéZ$ÝéK’g¨Uù¢œ§Å¦œSM9³ÿÎ燌üÐQ·“í:HóPÑ^—/l¾Ôs\Ÿj’'õœÑù>¦ K Sß>Œñ©üôMô߉Ö$˜%XbØç=ÈË!ûܪ)=†,Ž(¯H DS¯aý½Ñd¤Ês̲ïgØçS¾))Q•¬EÕô±úB‘0d¹¥è¾Ká6{¨®6Dçt{w`?ïnÈÃk8õ÷öywËÊPŠhÓg0<‚¢f¬3üoUþ7¿Au"r}™$¼v]Ù†ù(®8¦ZÂú{})†j’™²rª í’âZÝŠ¦8ÈÛ- ]¥É‰Ã¤Ã¯»eöõj»¦d ñ͸|dŠgH¡—ê!£GÅ\2[ªè– 9n"óØsûy6èŒ>5{DÇd«¶ªh–öËP¤²ÃÒ(;뱢˜WMMbw¬²›ÆzŽM}/]éÊeĉïJ> ü}‹KU½ù¢nŒLÕ®¦¢eøZ'¦|PB=ó@Ì^„2-ä·èÇæ.Ü/S®ËkÚJ9õLI ,@#C‘š!K§6_9mK¦é‹ÔÃï•BTºdªÍñ¤–‘;8îX–› u­ª£ÞqÜ/¦H…oÐ¥æ.jŵïª;©Q¯%’º¿àuîÒ _õTûàggÅßw¾#h6%·Oc7çÛí¨½ î’]^~Ü-#(5ÈFÔuQŒù0m—”æt«:V•S£ÚLNܪ²€ÍªòlüÅ2ïgí³ ¯&Áù>?¥öOŸH¨4½‹FY§[õ¹JOÂyÝÍæ:$P ?« ƒÁmãÓÉN­à¤¢(‚ÂC(•¿'oùëSy™ûH)Ü©ªÎæœC&VÑ%N#Gaú„DYa,I èÁ¢:.ém•TòåÊÈ0mÊkt:Xí—ªýÛ5nSü6¦Ó|ÍyÉMá²XjTí5ìZuge²9‹Öhy³Ká«á¶:}5Ì1ZÍÑõÍè $ €֮LjKç™È‘‹»Q!-/…ò»?Úǹ-l@Êw=—âs®­É¦ÏóÝeÅõ÷ÝnÛl©¨rãØó,KrÎX/×»]m>×ðT5¡­±ìØ^#°’\ÛgZòâµ+”ä"yq]YM-§Ãa°…%j¬û^H¢/'–z¤ÏûÖã¼'I¨œâܘ'±Å¤ƒ“»žâ¤7«^c ÜÐÜRùÇUU=Àæ› ÌSã3¿ÛûÞ}Wj׈ìçÙ‹X–ð}i«RË긽¥ðÒ銢Cr$Øí£šz>­‡;o 0—VÈH"ÒíÝÅDÝJ‰¡¾U‹6%T¬%ˆÝU ?<ÉôP[ô«Žè\j¯¨‰#Ó7ªBN¯Qžç¿¼»@½4”þ|Ãn:Ïýå,ëåÛÞ5'‰êöíÞBª3$Íòó!/¬3µˆªR¸!RÚº»rH  " ¸O¯Ò¸*¦qwb  UA”N'3Uù{ñEf«U%¼¼Âým'£(éN,Î*ø„"MÅ.Lv=¯¤U§5é%àŠã”¨ ݦZÄ»ÇÞßD;ᇡC>õ©q¿í²Ý)gɈ®N+*A“é «VŸÚÙJë qÜzB¢KÔòßÙÞ%e•‹];GI¶¿½¹ ÿ®Ø5`{Ç&0”.‹t >-ëaÆ›C3ÆÛ±¢©DÊCQv?K7³:Èb-Ú¡Q1©x†Õ3ÆšÖU ¤×Ö賘ŠÚÏÓÊÌ5º\.†#P”ôÑ? 7Y^*NŽî ‡:‹U‘ïn᪛±GQ¡Ku{„àdýuD(¿ô ÓÜŽ²|¬]£c0âáZN9€ŒÏ²æJl@‘yEàò‡PljœåFÑÍ£5wð~´êÖó9š–Ûk:I;ÖY+­¥ëb„Ú,× É$Öi×5}][*hº´¼ç©ž·;kýÆ÷D“v¸B¬,ÝÆ$®†ÿÛ¤Ù®z¬Úv£•þ7«cCaòðË*ÇœKnôD°­$+þ»"¹Ôôz•Øo‚˜•hêÙ óŠiùež_×¥¾µÀßÙH–8n:F¡,ႨëùûÊVD”[Ü '?±,ã)UÍcÆô9Näùa¨É 2Gt=çÎJ¿‰áôäWÅûšªC‘"üúÐõ‰îÜ3Ô2ùñçrdiÒ|w©ÑKÉW<ßÔÝ[»§°Óú—¯÷fÚ §ªò›É‘erœèί&u]P²&Ì=8(„Ùj\ Ž­r84sàÝ“9ÐE‹÷Zü¸Nηðz­ïN'Ðå³$&]ÊŽíÆ@Û‰J×3ûšl_FZÕJP1¦Þ „N‚M˘£¸m ;€_J8Qˆ=ÊQ’ÈÎ6ÐVei £:‹I‹Ðr”mªŽ ÌeYÜ%#+OÛà–!°Jàe—ètÁ-•tÉS~I!™p&¢XwQz%"TZ“Í8/"J3 ·<¢©ë”ki8Ã&Îõ¸nj;y8!‡Q´¡ŽïçÃ)ËnIéa¹±ô|ìB–Ú$_©# ?F6é¡IÈûf\NŠª†C!“ ¹Ì5"’T¹E/õhH¢^LÒu¸¤Š†$Ú;°)Ž’)ŽWš›slÖá!-äNs¹qß$ãڥ&v!±4vY÷â6QT[Î}€TœnµÆ´qrÓãuØ–¶‘–Q©}”@Ó¸gºMˆS…MDÓøH“ð¾ ì@×pÇ‘.¦áe˜g~A±+3¿¢©8óºq-¡®ÑDo €_Ά¥]ï†ù„Ðt¿šß(ž‡•äU´R"÷žò÷øû€4ÁaX"¢œ$r˜º‰U÷XŸ¶Þ5 ïw;Q'³Çx6â,€Ç7.­â<"~¿§ÿ”ÿ,²}pãw&“ÂH·dî›@Ð@öNñA¨·0~‹šäƒ*>hÁE|Ѓô>¹ïÀM|‚ªø t#f :…JºÑÔª­g@IÝH»Ô^dzã"kO]*”Õ*ÚE8° M]R.™¯ÆjëÒÖÄ»ÅodI!@˜Êl7½¤ÌjÍŠ …1âªcË—mºÊ° N쌎îèw>x#ípy ÚWÛÁØŸ´QŠ¥íÈm´LåTqUĪG¢ÀO%Ò¶Ü-BO)zƒšžþöæ"á(®Ð. ‘Và*”UrDÁªº§äs*1ä¸Ô uJ¾/ìä%ÅÉ6i‰¯[¶ÊnNîN²"o´sÉÊìa56E3Å"Ýkc1‡M½…VnZ‰¥J`ÆÑ.tÕ`K%œThÝízDsÍB}* Ñ7ÐLg1<ÿ ¼0ߢ $±}¶•¨ä%¬’ÔÙ’µŠ¡«d¾ˆëâcÓ‚)‰ƒÌÆû¡¬äîæ Í†a¶ÑÖÐA›¾”–.β^«ZÒÓ{Amù»¤]ØQ ˜Vf²¿dY]«JIç²oíÍDP^SÛʉAª¼—nô[ÚKQê袻—"<-€;ž¿×¨! +®Qþþ¦l« ^ïöب†CH½aIt66¸¤P¦Ö,hu謬¥JËþBÌ8Sr>'Dé‹¶Õ Ÿñ†-NS]ÅiZ†åLÓ0ú9nÂ[x ų’Žlz p£Ê0Rt‰dL c4wK˜’”iIaJ–eËàLˆÏù%ë¬Ä• $9Ã7'f­©cJSi:ÎÎ*^ÂlÏ0NªŒûÅ5‚—tˆñ¾.cÇ`“$µÛ±ÄÏÆ‘Nc“f‹)ò7eä•ðSå2ÑòÀ‰}nÈCºÇél|^æTa8çk¢©IsxΖ£›á93ܹ†ñÑ$wÔ Çª½H¤³ 迼Yá6™Ññü6 =qT‹%†ø½À Ñ'•d"'Vñ>EtðØY#:É\¿¬è,'ÖM«ÙN*î» ÿ›w‹Í%ÜX·T6Œ wU¦p­ÝïMA¿UT<’‘]“|ß4kFC*ü«Ï 3#÷×LyRÓx†o-c[yBSJö¤WÕØÜ2š± nöç±?Ɉ;–`×ëëa’À—'g¸j„g×+{µ¡Žô"ÚtrkÎÈÙN‚vᘇž?{äncŠM\oœCÌ<,@!Úó Í@¯( ƒn’Eºw'ãtÈÅà\ª©õ7ɺÈ+9WŽ’Û1?°_ø{²>¦N  ç¥+éèÜIsþMÁ„FöbóÀ‡;»ª]!+žnÇøy®ÆCvdÒ+`åI®š²i‹ÎOÙsýû*½Í %NIæ9-¯Pú9¶ :ÉYl,èÒ¹ ›U•ÓYE6PDt.í× ±ækä·S²„‹_ ‹t6å{³"‘¾“ˆ¬dµ§eÞÆR¤¯©‚vä1’¤›Ã™š¥§w*#=9ú2Kºh÷ª«ÊÌpùs}Ÿ+b< ùPœí[™és9½¤äè)€,œ+\+\VŽñO¼(!TcV‰]ña]oª~>{8kËÅfI—wW€ÖY[ ›´àË®/ŽprfÍ0F ‚çYKIºÃ{ܪ:›ÑSˆò\»˜Ã…8E[þ0šoÖð9rI¶Àï`ÄcDtÙ•s³Š‰¡Ï·êŠ¿b@ó;Ð/*Ù1 «ù†Å+MÑ Úƒ/ïÉ£~X—¬1—¼½ûËA‡:PUV¸l%Ôê“ÃO=HZ’#Gs¹ç³«ô<0VºEµ—`Gy»¢ö鹸O[Q;d:!G¼¡…I_Ìù‰EIŠoŽçé)1I‡â:ëìt ±µa1 ©oádV”76«Xñ¶Óg¸u)¢—}«Ÿ}£­Ê/àÞ|Ÿð³]4kŒÝŒV4ÔéO- Ã3´ñ ‡hYÙMɤ¯5`‘=ƒ^D3BæA¦e%YqY¾Pa»”cèöâyBùåÝÿ yŽwtEyf°vH1”¢Ï,ÿ:HêÐs¿Â—ÝùÑ‚ÎÛO ”¾L“SéÉÊ_˳Ý9Ä¢öK–íèþØ©>ìOu®ß °[>º*ëSŒ×àyZK}ÛÜK„~÷ %ÚÜãF(Y«û~NS‚ºSþÂÏ}ç­Ñóýë+?ÝD“ú_?q®=LÌΤáÂUšÀVŽ%PÙ é ,O·‚:ßí/pЏñÕ¯\øK—¬øåŸ«r!_ᙥ^m©IRUeš§ö¥Mgq”¥Æò_`Ø™"fáãÑóþƒ_þõPò¶Š AÌ”(6Û¾À®M5ØKý’ˆDýž¨÷ó…u*éUSñ ]@µ3üõ¯'ö8ÔÐýãUEz Uø_ÿy§ß}ç/1+ry|EÈTÕ‰»§¯ðLSw¥Ì¢^¿þ󮬱Ѿ¤’0èzÓbýë‚V$øÂÜU…^Iü_üŽö•‹q,ˆ~ÿÂa8P÷/,s7PÙè+ǵ&FS+û Ó&¥Ù.´}ãm};‰¿Ä6˹7_”½(:JÏì–®^ߨUYàKW¦ÊÄ´|»ãk7óbÙìÁèÌÔ©¨Û¯ìºͳûßW.×I¿‹jx~Áò£G]-Á¾`½0¼Ýë—øEý`û°îíÏ¿þ»÷ÿu-úßýé?ýÍ_½ÿõïÿÓžµÇþ÷ÛßÿÃùñ~Ëï{þóOo™åvþã[fVàãÇJ¤õï hÿñ¿¼ÿþáTÐGþñ³ÿ _ïBfq¼2Õ¿Ú};¦=ij›žä½Ñ“Aý÷÷ÿúÉsñ/Ã÷»Ý‚Ôï6âÎT‰j|ÒÞUþáõé‡×ÿî?í× Ýÿ"YX~²0‚}váïÿâÿùçþã_¾çôþÿÿ?þóÿüã{þËxÿÃßÞ ý7_•Yæ_|U¹¯ú»·ÿ©E endstream endobj 463 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 467 0 obj << /Length 1997 /Filter /FlateDecode >> stream xÚÝ]oÛ6ð½¿Â(ö ±*’’( 뀶XÖl(6lykû ÈJbD¶2ËNê¿û"%Ùòšdéö ˜<Çã}çíù‹W§Ù$óT§“óˉÒq˜Ezb£4T:ŸœÏ'ƒÓiÍz:Ó¹ 6STð-oaž¸¨q! V¸°™ê,¸Ÿj‹ø*¸¯=™ÎL o‡-“k.ŒW XÐP—+Zœ^ÀWW¼op˜Ì@…ç ‘f½d ÅŠQ«/½F*Û–ÎVÁâù«UÛKd1…Õ¢~>ÿeMfJ…y’°6B¶•í`/€’ ½ÅÓJA[â/ÔlxÜआoÇs¼ç&Ép…<·(Z¤Ë2!lb¢rTq‹o<\8qð)—¼õª"šô* .¶ü ˆRÔÄ ÉÓ({p ]õˆw‰l˜4˜Wr¡ÙØ!Åp:‹“8xO‡—Õ #nœô J7¬K¼Â5ƒJ|80c OðZÖíZÓ]µ0Q:}œ#†uúAÈÅŠàX:yX$‚ ÚnÛ$S6ñDƒ+™ó>Ô¡Ö™ìõV¶ä9)üÞY>ÅMœGðbÁ vá¬×RrŒ«Ñ^rœ{Kå=¥óq0–°”™IÃ$6CÁÁª¨ ò‚Ó?Èiú; dàû•Ao$ÝtÞà¾ßdã;:õè’æˆ6Ɖ|Í?3Bž©Ä=÷«£<ñó3,ð±ÝïhеOV}…¬rêád#!}…ä8§éIµG2zÉQ.õ’ÑÓ/n¾B2z<ÉøùI&$ùY¦ÿŠäè‹Û§’Ô&ÌÕÐðõÿÊð§éC ÿô?z~“Rϯ¬úùMÊÀçh—ï®ôn\×rqWùv<^¸fôÊõk–]O¹Å&_j)ÍY¹¤5N©»Ö3BâIjßa—ùH9¯óØ÷ðn·ÂnËðMÿ®'ÝaË•Oä‡WW_]óœª}éí[×C¤®·ÿSÕNûr¢ëâx؈s}ß9ýO@uÿ¾ˆ¹áq´©Ñ9@ èî\0-.ê.¤öÊsé]tÝAš7rVÊâø›uÈ'fK»Œ c«™IL‘CH‡”ÒqðZZ7S ÚL ’¾ÄñuÁýß!åSaeë½ä‚ô¸=ÖèõâC߈´Åá5BúBš.â€f5ŠY%çÜGÐÖw£Ñ¤vƒn•ᇪ+Òt޲¨ôH‰ôŠ‚]ð³ý®“lôîÆ(%º!ľãíÞ¼ ær$ßk»fY§š"Dj*% pg+§ÜU!3QÜ/K4Kfø¯¢K Qt棕;ñ®µËñi-Ýö˜s*à ,S_­÷ ÒËDªóÜѦ¼ Æ¿½pO@O™Ù˜”0ˬ(!ÕW/~:ñ7Ä}‚ä endstream endobj 475 0 obj << /Length 1802 /Filter /FlateDecode >> stream xÚ­X[oÛ6~ï¯ð£ ÔªHQÛ€h€ ë¨ßº>(¶u$ò›f¿~çJQ±œ¸ØlQâá¹|çB^-^½¹.'óxžÛ|²¸ëâ2±“"Éccç“Åjò%:LM´†_=¥‰‹v0Üゥnà±ßÿS[FH“ú%Õß+^ºD.{¢…9\Ôð|w`b’F›ŽŸH\WKd½®a¼~·L‹š„H7¢Ã¿¿ã¤“U ²9ÞãÿÍtf‹A{+‚Q»ZLœM¿.þœ$“™1ñ<ËRÉÚ¦ƒÿx:sÖDa½Ís2±=âbœ¬_£œùÀ>œÒ"ûqU¥Ïƒ€ƒ ª%ŽÚ=OœSPúû”4gz™CVwk~! Zt ûg+ꪦm†<ªY`ÁŠyÐ öûj \ƒ\Ê4 |õ0ÊM(-K-cõ_§@#2ôj´]-€ÁW4ªB=ïDhÝðwkuI½Wšo¨PËØ)Oˆ' @üÒ‰¤õCzT¯[vHGÎpœC½S6Kˆ/㢫–"¯ÝÆ ljõÏÊoIéŽçè %MÍ6„¯ ³[¡ÊKM“𒌰àóz`rúî•"p‰¬>ð³Ú „i}¡É¾ÊÛ[Q©‹‡nǾ^ k`Ä%%DÕ‘îg|¼ ­b ­â­o’ml©5}8v ZÉþ¥Ì?n55‡‰iµÉü®•eGŸ<çò@Bb–¦ET`䟦=rü Á•÷X`RjÏ›{‘iPecÁce9}”!ò‘8éR#6CÀw'nöþØËçF*áfÄÂPòrÄ“HÆÏ²PSá¼÷Nƒ ”™S„k&Î@þœÇ”@ôùG‚~ƒ!d‘+`sNÍÉÃ1½xY‰Í)#Ñq13®Ïe|ò!ó²]€ö9}ÎØ5Æ'ýI>Cèþ»>æ}Ìó~¿Ø_ær¿«>Ù˜¿.àcžåèóLü$/ês9ŸŸÒç»8æ™Mâ²´ƒ½ë#–£-%÷,…¶‡jDØü¥ÐIȯÌAÃ;”'m6“¨ïÊCØ·§rÓÁ„KV˜ÆÚl´~¯øqGFí©‘¥«†4(uA›}2v¼{éဗ)í‹WD0 ;ŸÅÅGVßT…m†6Nø|¢F˜®ZeAïý\gÃw¾uƒÑ`,•JÚ0kaywä«Sš/1Œ#£Öòí;1ÐËÛÍR*5Niq¶Ã{|=Ùû,·ø´î màP’{Îh¹­WtñGwrß÷öµÇ_QàÅþX­”µU³’™N_5-ÄBà/;”íZH¨q¬‹m³9 ^¨–å3)8bÝËÑø®§¥“«' óÞ4Y¾æ 3^ò`¤º¦eìÊR«CÌ>Á†¡™º8wºfÇå ÂìÛ4Ë£êNª–¿t쬄ß8úš&‡ºvÛ2àzí5Ëc›9xdqO•Ò¡ùջū_W­a endstream endobj 480 0 obj << /Length 1450 /Filter /FlateDecode >> stream xÚXYoÛF~ׯÐ#…š4—\^A[ ilÔA[´µŠ>4} $ÚB‰*)ÅÑ¿ï\K.E*¶cÍ=fg¾9vwFjêßšªT{YLuxq’L—ÛÉOë0H‰ÂêÒ’’}2q}·Ujú¾šüfÍ5L]‹ë»ùäú6f^ñtþ0UöR$'¾—ÀÌjús;SÎÚ㱆ÿÅÌ cå¤ofnä+çþsù¡[À.Òå»÷dsµãåGZÛ¯yT=t›Ö ø‚[ø·/;¶{ÜW-piüJáÛK¤ œwH6sƒÄ©Ê‚`ðþ³ užf¸Xšý;ÿ–q•³ˆªÈh·öÇŠ_Í\°ˆn¹¾Ë`Qè)°¥ÏûY:7dñ)€‚i§mé0ö"šÞÌM”ïÜ â%\³Ø]«Îªà™ùíkaÜ;Ô ÐàzàäLÖØ~Áy45.©»iPØvñ'hW°¬5šO9b‚‘¥° 禙—b½ˆ•Èqs]!Ÿ'°z8›†¿9~BgÏŽÁÀhРèβ`’`œ8pÚ.®„'.í*k!E9 Äy6kÃ2´bsÈÕ dŠj‘/d©Ü˜È9ÍR ž’¸ }/ÍÖüo\!A¦¥Dös ‚¦âÁ‘ü…ýÐù5gCW²×gž×ƒÍŽgå鎥є7Lp Ø6 ìáÔQ‰!×At¯ó¥ôÀó´ÔȘmÚgŠþŽS1vx¶th·¹9š¹Ø%%òÈò„ǵìÜÒ‹Á”ΦrÞð‘‰íÃßËÒŒþWP:¨unPCûèG>]¥4Ÿä[ʪž*Qs#šlyø=t]înE–9.xà?C»ow(òwiaÛÝîu¯ÆlýÝÌU¡ŸeÄì(ïDPaÂ|D0ªô4 Ðô@Jt&¥nï1–V ·¹HYXx‘;>o¡ý"&¹y­‡—,ú=ðÙpoùÚ¨Û0ƒ3®»{—yu­ÃBB´ÖÃ(aóBSøN•Oµêëû“åã÷ÌôO2!uoÄ'·<´‰o†Soyj/›’Žb%ù¹7½&÷ÓÔ_â;¤ü¹Š˜w<õ»¹e—ñ¼ýh½=å%nAnàg~•¯¦¢„„šùvÝÌÇ*k×á*Úcá£àfæöÉ¢ˆBh‚ˆæG¢/¸Hò/RÏRF  ¤sPøB@ê™CÊÁ{ Fé3FêÌeþ™…Ô+E–Û†mPôŒ…üºL}Åe*îÅÎWÅÏõ%@ꀰŸ ÜuHNYòB@ϲáiퟲP@ù=kX(ýF@ꀱÌ0°¹wÿ=i“·Hc~FOöíœ †ÛüK{÷C–Æ.­PÆu¤Ùw Ì¥¢rn$0cQS8 ;TL¦ü@_!ƒÌyZ·e †M3ŠíY]Vǯåˆ$Ç “¨+Ç ©@€Š=uG[4eøILïKѪºÝÈk8¨Ôñ°"£²#L€¨‹´hí\Rw & E·Nô`X†R–Üizy,Òåœ Œhÿ€9R Ðfø*ô2òúܪ™˜CvÃXÁe*F®¹ÖÝtÝæQ&‰2%&1X”}RÕUmÆE¾’gÚÈ¿ããa¡ðÑWš3¥ãPUTHŠ»!Õ›’SAäjˆØ;´¾f”9š[sÙ§ÛÚ=ïå S£iù¾>½pÖ™‰õÛ€–¬£1‘jídek.Ÿ¡×Ötº5#vù·…åA@œ,È%¥|#Ê“ˆ0èpô‹Õ†ÏËs‹¢r̘¨ÈIøs~¥^¥3[2håÔ¸6¹™Oþ?g#9 endstream endobj 472 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./pbntransitions.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 482 0 R /BBox [0 0 504 504] /Resources << /ProcSet [ /PDF /Text ] /Font << /F1 483 0 R/F7 484 0 R>> /ExtGState << >>/ColorSpace << /sRGB 485 0 R >>>> /Length 1886 /Filter /FlateDecode >> stream xœ¥XMoE¼ï¯Ø#\&Óó=×D€ ¤`K—8Dq$’ŸªêÙ÷68 ¶‰”g×Ûžžþ¬îµí/wÛßîm¯üÿn%”¸>K¯!]~|øcÿe¿=ûøóÏ÷7[ ­åýüyóâ'|Ûëþ÷öëo{Üßl‰ÿo7‹!ÆýÇ­ôÄ_J›a¤ý¸‡”w~óþn+#9.¡&ábn¡ñ´ÐhÑà×Ä5Ì .æ ²ñ§>ÒСo4a?ûFÉ,ýZІeñ¥…H ø†´½ñ(g¿–\ÅiCUL¶nlÂÚ$e‘Ø)F±O>jå‘äyП/ýjkE¤‹1I³/ ³Ç¬³ƒîtÂ’ã¼,¤ÏÄeݘ†p‹Ë¢aNXsáî7T÷@[9ªÆu~Tñ\nK#.Þô@ú3‰á²ø%•_Ójj>ì}5°âU3Ž"ª$hd?&”J°®ÅTè"оf#«„T4ŽÛG®a?YãQó0ï¯7¶jsG9ÜmlåîxRCÆ(N·ZŽs««nDØ&ÂÖ†"ÜÀ»ps¼ú‚祯yÖ©?ñy÷Õ1#§Ò?ŽN¡FL ²¢iQ¢†wš¬>dOGçaĈ”Eâ4/C¸¸Óå×ø^ùœÌ ïuŸuNýK¾èü0çud9BBlâ˜ÂXÀ,yX¢Ï¸vبŽTãPTÄ(Åá,¡Ÿílo‹ 1éP\Ð_ J?žêÕ öÿ±¿äÑXŒyh#¸,0àüc…Þ¯j°éÌД¨“†úP ih÷QqÔ³†ü`âdÖsÔrr û¯ópÔR<óͨøù§\Ÿp?‹p ²òSB˜ùúŠÒ1#‡=%©úÒ²JO´­„(°Uû“Ò˜k½`%Ÿ·¥Vê~þd…ÇSÅû'ÿ8£ÛÌoCV>ìz‚„ÿµâ?ÐG¼ìoÁãÛc¿|œ[9#N|ÂqNð²¦ÙxüqnüZæ.ÙzœñFÚOí’©Gæ‹U,~|>ár¾Þ›6xì4¿Z¹5’RïŸæŸö¨áúW¤smÔU1_§ëz—ç_V;âðÃ;±repA^‡íáDô:‘ò¥&Í|3_D£ú™?ÂlÍO®--«|¶ð•$ùá²âõ(îä{¥\·úÁ‡¹Q¡þùÇ¥¾Âu9ûjûIØQ endstream endobj 487 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 490 0 obj << /Length 2340 /Filter /FlateDecode >> stream xÚ­ËŽÛFò8HÄðý’öîöb±X$““ER3LDR%'³_¿õìnR”'rÈî®®ª®w5ß<¼úæm±)ý2‹²ÍÃ~F‰_Ñ&2?ŒÊÍC³ùà½?ßm£$õº Ÿ™WîBo‚߈ãÜ;Â#óÆ §ºüáz˰g vÂY„Á¹S5 Ü“Ý6áråÞñU¸ŒSã°@ Ü0vÄÕž{…°:µ–ʸç'/‡Þñb×”3¢ÕN ®´Us÷Ëÿ6Áf†~™¦,BZDÞe&‡GœˆYN^¼)#€»âà'Ë Û¿Û&°ÿýÀ;\iÁpÒ8Ò¥ö»ËbøÑõG„Áá×°RFÞï+HÆA<35M"–-MévM.Ë LàY™U£Ýøå±TÆ*èÌ/ªT؃°e ò4g8î¢Â;ãp¯ìæs‘ä¬MËLæíà‘“(t°G+¡Ü¥,çcÎTëH%ô¶î ]d,Z!ãF°š‚Ôâ8òªÇªCªßâ¾oÞf¹ãs€%,aÎX~¸Û¦Qì©1õ<üéókØ…ÊoÄxè}‚ßOfGÈ^#pÆwÄÌ>i Î× ØAÆÏò<ÈÚ×kÇüênÆAY²‹|¯>¢Ç_!ŒGú~!üƒ~É•tAå$XÏBí$Ø„ÊÎ᱿…ßkøý[Drÿ"ãù‚ý,;ÏÎ9Z‡ÿƒœK÷‰@•Ñ£ ‰¶=1L‡‹Ç cW@6“.m&›á ëÌeªÍ>ɸáeÞA¯Žá°1 àHÞ¶8ýI³#Óß„Ÿ$áÜ þáXÞ?é¤Xz½KyËCøþzê5OeSn!ˆH³é'RMý,…ïŒæ®È¼á©ÿŠÚGÙ¥öØ9Vr¦mxöíìð¢l eŠÏ0€<ÄÂ4Í|`Ÿ4ã,,Í<ÀÅa»ðižá˜¬&I7L-R³)ý"‹™v ¬ù †´ïý8î(ƒ2°Ÿ8OèD8;É$ëBpŒ'#ÅÂ.?Î…h#.Jo×i‚)ìÖiÒÀÃ9e¢‘C-±ƒÑkE P¤iž’€MÈ%°Ó€”à£ÌË€ŽÒk^&ÜxœñÂ)Å’ÄœN Žêè-¤à,Œ½‡§«ð/š¤äZ]4i;`#ü˜©¢”ëHæ³Ãpøßx½éD”ê¸Ò¢éNž’ Àððo?ž$ÇETÞH¶"µ¬À†çv(ég‹‹{vK—(3†;ñp)V{X‘ƒˆ;É:"K°Å‰Øäs|ïU´}K¾ÐIz›á¥ð)â‚=Êï(\ÖÕÁÔ*E‚ÅL‚µÂɉ:ƒSKïhmHðб1bìxt|¶m¸FJœD7°XVò"É覩ȩÑ0cª®¨p‚'Nï¨,lŸ(v€^>‘§pš#x2Ä5=n9 @ªÃTOŸ<†Œ¤ñ ¿4)4Ø’ù @yqàD .Q%õ~•Š&ÒåŠmIì¤Ó¯:J<<«aaÉÅ‹'‘(àêyÆQÌ·è§œ´UØlìÂÙ“e·¦ó{¡éyåg˜‚ã­ë FEêi¯•Ôƒ&Õ­7&‰É¡’w™pÀ €éPÈØEûä)KLÚV¡éçXœ´ÚDfjS!µögÝNàÄ£Ë`¶^˾À®¿R“¤%€‡ö¿‘¬8 éÿ˜*î*gÄ¥Ÿ¦…n$©k zi¤OˆƒˆŠýË e¡;KTjÃ;K}”¾g$ø†z(ÙD®ÏG6 ƒ6ýÁš@{.‰"îØ¥¶Eéçe±æX€ âå¢G"¾ÁRVdWúai„wt i·ìÝIÙ«ö¯§¸GYëL x%ì0ˆü¸0”–‘bb®Ý(YÆàvÜCm×I’QàfË9žêÌ%A!b+uQúi^¬¤ÓΖ«Ú|Ž+-p$Á@!Z‚Ñçšû,›lê±s¾í€}Ò¤žfW°©’½­mÖõ@夎×UÆ5¯° öTµ²­Õï‚°ŒG«zšDÎÉ¥$-J}%]¦pr'U ¾Ÿ8“cÏœ¤#ù­ÓßI`§í&à€(sˆëÜÎxLiÞIû7+ 'YÎìÌ1ÁJ¢\ìqù©ØÛ+#f»äßæYtZõ|ceÒ6_&RîÖ`­vªR:Þ‹O<ú¦²³Ì/òd³…Jw¹òMqíÕýëÿ‹Ù endstream endobj 494 0 obj << /Length 1838 /Filter /FlateDecode >> stream xÚíXK“ÚF¾ûWP[9ˆÊ"k$ôJ%9¬k]år 9Ù> Y$QØ&¿>ýš‡„–Ý8)R9æÑÓÓ¯ùºgî¯^¿MÒIîçI˜L›‰ ç~„“4H|æ“E9yïý<Åaäµü÷ãTy3n ¹†¯…ïßIÚKøÒ.àûCèVB×ÈÜNÆ;ø>q $8´—ûgùßËÜíôãâ—I0™)åçqÌB~?©(¡*¡*„± Ç~‚ïFƱ_K{'‚áÿ'§úë;Ö² îü›ìŒíƒ#s'»+øùú\“×¬Þ §;G.—ÛuÙM] ¼qìz/cà5ÆÌø_y߉ îDlaÍë·±GÀ!Œü\1ƒ÷"êGf„ºû2¤xq6²VWäÌŽÜÈ–œEQDfØÒîÔ-¦a ’…™·¦¨{qò4¹ùÂÇG¤>#Yè5þ'®kÛn‹‹µMÍœ7¢~­£zÇ3!Í4-S=ñ…ã²ø=©¯í šÎSÖt!ú„YBÆmꇙð&¥*žZÂ_â­·äÔš¤â0'äv‰¹³&ÕãØ+´ï b^ât ´ÀíÌíUC\ècZ?0 ÇìØ¥õl(s¸[v’¡bY´:X†FÀü±EKkáä¸ðÌ®œYÐÇxûhÔ’H!–=.°ªåÛÇ ÃÉ’UsÐPÕù­É0ÔA•ýWÁ²AŽŽCánž…³$ã¯Éo m9|Ñ×@Û<í±y{2úÊÅFÈÂÿC±'Èr=aƒÃ[Z qžÚ˜´©‡…NNÀˆ„x´‘â¬ãsoWÉQ1zWT¢] W+ þt–~¼#ˆn…ˆ† ƒh´º£¨­´´0d0gžæ^W|8˜! ™àÑÇÜœ•Z25;¶%¬eMG´CîͱC1P}TŒB®u²pòËÖvñQ´™‹ø8uø”mñqŸ^ú²,)éSšûŒ?MûHŠ–uɭΫ5 õ„wFºÕYh/ÀY5Ú‚ûsOÑŽ´Eµî'Æl˜S¯#ll$ŒqD£Æ  50û8ñÝÜÂ9J’ªR¯(KÛi9ƒÂMÅ#äU\Ó‰Œ~¦éHX¯Im¶zÊ&{ä)Mµ7ès Ä°Ý=eÛ”=1‹]̬¸´ Y:…¬æ¦•îËòÌ`“€·¹–¡~•9ÿìÿ£ÍFcû—¥~š-¨h¢`ëù­gÞïµÆòGªäF$Nñ~2‰ÄÏåÔY2ðU6¿,HFòí¸†‘ò£0Ô"ÝbÐÙè×…qþDÁÆ™WJ,¥T³àˆl;%ʦÑu Œµ®×â”KÔ èBœ„‚ówb<ÅÕ-cƒØLdËÒ^-ŒÈr¢wÏp˜*†UõÅQïÁ’= ÀŠ£T^RÇâštÐÑ$`ÇÄó§®Ô6ZNS嵺ԾÌá.¾ÜIH4r®l°_:;§R/°³Öøs*MÑIVŒ¢œ¯Gbk°·w"ò€¾` ¡µ{Ñ¿|¯ƒCr'ʹ ad­—»Ö˨´³/ueO°á‹OY½žOßN³¹ÜgBoý…pšÈ”—/ªˆ¯UF.×ð§z~6ý£J9I“ôªºR6'Üš¤ŸnžÝ©rÔÙÊêÒÙeéÔ¸Ãú÷æI”8e…!°5¸ÓtRÝ…aNãXM”`áßM|°`¤Ü²Œ"É9«ØU²!؉ÔèKÑ™ è^v s6Á‘¹ïjþ?ºp 4ã +¾?fø;D+8d‚£&¦J '²|… EË5¬Tj—£TègJãD%yè‹D«¾õ¯+>‹C?´Éî–¥9“mO,‹9äÐ&@ìî A9(¨[Qí& ˜ê]6µUnÉâAI1cƒJb?PƒL©ÍõDåöŽÂž¬T”ý§+!|®ÅíQþÇ—oŽ/ŒŸdǣËñÅ=뜨gQªWNS¯èj”öï0ÐmN"êAŠdói'òˆå¬¤ÈJ•}*J•ƒsݺ¶Ó,žyú5©¦Çp£ã5N¾‹ìFËôƒ¹Ç“‚ü‰²©Èʤ".ØOZÿ¥MøD;g=€.>_Õ`@a!)Îݧ#V…”ØéÝpyµkOèÞ à“G `Ù˜ÎL¾"ΞRw¯iÍN†Jjù˜o4b ¸‡tZô1/Q³9'œ/6åêmK ”GDjë«/oÚÞ%(°ï°°SwæR ÍÓ꺸9‰lal0¹ T6ÑÄ,(6»kE­™.:F=š\Ë›}ìÔEÖØ“ u†ï´wVÏì9ŠÅ½:îŠ=ðá`x…}\¸Õ¯í½'ðÖÄØÕWUÇŸò@@¡XÚ›ÁÎ1?tà9×&(–†~ ýT’øY )Ìý,-£ç^Ý/^ý’¸Lç endstream endobj 498 0 obj << /Length 818 /Filter /FlateDecode >> stream xÚ…UKoÛ0 ¾÷W=ÙØìZ~È6° X‡Ã»,·uÛ±“ ‰ø±¬ÿ~$EÙJ›®BÅ÷GQ÷ë›»•Ìœ"(d$uëˆ( ò0r²P"*œõÆùå~òü4ŠÝ“'ܨ&ÞWÌßýàý¨U>ÀÖ[{ÑîHñÝ#ÐC˜†°Ô,r`Âó¯¾{ïý^wBÇ"(ÒTÿÎó…Ìdöß>Ý2y%P4홿çÀ ÿöMG+­ko,o•e½å<ð|ºj]>³Þqèå'[)ym8Fô$€B]HïV¹8XÀºÈ´õoMoón•ÚÝAS :${Ï))}Añ…—¸d"Œb]'Ü”ñàù±u­½¯ÕñdàÕYiBˆ`¸À¦Ãk®C5·ñTûÒz§c2h¹(wUÿ¨ùdy³ØB䚎 ðedP‘ @B‘b'ª¹ŸÄÀà'I¨ÃCk[™ è$ªEh+BV碰I`b(4G¤ÙsÃ^–Cu‹ôR‹Àó3»+/OÜ^-ƒû%ö£ò|¨É†Ã„ìý¸g¥­ëÉ‹n? Ö .rJÀƒŸ±ÔJ?k¸ÊÜý ×µjE˜|¦Út2KíËŽ2ÝrYÐ< 6ì,OŸè-ù‘¤6@éî@cƒTJH-&×#3´PÛТ½Åp-iNçW«ÆwØ;©{DÆv‡Œšƒ*ÞWTåF,Pc!ée”ß¹ÿèÀÙ\Œ0ÓPÝÖ2ÆÊ8U¦Nçh^É ¯ À}c®Mmà²d¡R‡©0­?˜IcÉ+³ƒ™¸ž'­;˜Î¤áâhH[¤ö=\³1P¾Úâ(ÚNüÈ.Rœ{æ37¿3cÐTŽ'šxŒò´4QóÝ.3h¸š2?æ4Œ]n@ÜÒˆh:Â9aäÔ`~”ŠGÊŽF,~þúÚ'dGs=pß!zðæ2AwX?4C=1.ÑX*ó ð€³Ëü8Ü[}£úÅ3§P#\;µ Ú\ù"žç­/p`þÄ_`k}ç·/ÿ‘<Ò(3ÿH@p/N`&'9üNÿcq†w7_×7ÿà è endstream endobj 503 0 obj << /Length 1869 /Filter /FlateDecode >> stream xÚÍZ_¯Ú6ï§`l B'!iÔJ­Úiº›:öÔVSá’K¸WS¿û|ìcç’Ð{¥ûàÆØÇöïü?öíëù³o§½™5ó¿7_õ˜ãYSÛé¶o1gÖ›/{¯†cÏ÷ËxÈoa²áÿ¯¥œŸ oyÝ­œHWòÊÏ~8v±0Êtx[„j]º“„@rÔ¼›áÜwC¾AD“A’K✯añ“‘_Èõ9 ŽÖp<õÜÁ{œ‡C×69t<ü<ÿ¥g÷ÆŒY³ÉD à ‡1ëGñØfÛ6ïù.e¤¥YÔÃKIª=ìç0âYÁLìÄH‹6¢é…÷¼E›’fÝ0ÑNü"w ³Xv"Œ…¤ãe‰<Ü•˜Ê“+d "8þ!W1,;<ØÁƒ€€×ÛV„ÀŠÍw/”Å·Ô@Ÿ¥ð3=ä’@ …–…öÒLÍe¸¹äAk$^ÊùDB¢ÍBqCõC™÷%óQºGb°6nHžÇóµ²{¾±ã ƒ„o.Œæ@Ga&GzèN @%=p@]K‡oû V8¬o'uÖi`¹SƒE+e¥áQ÷âmŽý·¿‘N‹ç?Ù[~˜<Ø̱¦¾>÷˜àFë ŒŽcM¦L‘nñ€!=3È7ã‘Æ0¶œÀú—¼õq¶ ü}ÊFÿðÔµ&N @píù<|¼“Aaˆzÿ H÷ +)AãA-!ÔÙÑø7J·{©\ñL[ƒŸéÑqzôuývYâêO6scô(aÇB4ÛŒ8K ĸ$¡¡—HújI*8ædKÅ. ¡‹Y=+±6kŒíàë®SÍE.ç”Û¹®†+úõpaZ2\½Že_F±[e"ŠUþEŽ/`è^öã;Ø'<Ð) N— Ëh(´¤ûA/°fÍÀŽA¾å¹S)Ÿ‡ã‰ã¾—Ÿß‰û¯ˆ?låt(?Î,P’9ŠaGœ?—¤*äP*í‰ì§Öñ‘œúE©ofñ\]…w!™èF¸ð€@t)£ƒ¬Ž=`”]ÆóçJv/EEÌÇ—ù€M›xQ (ð!aà2#m"Ú9S'›Ð~KŽ ¥½›ü^<ÅK-ª²[xV ˜#^#Òs× ‘¤ÊgRámpqXjc‹?·ØBÜ;Áþ®;)ÔÐ=ÊpcÚKG3]’|–ìšg²Š[²}«!u5„¤”@'Í·fý žû“ÈÚ'à¿´AÞI€£R™!r”wŠˆI¼Äêæoòö¦­ü#R_(†ÑZïÚºu #*ìzªÁ}ë5¤µ±+È æ …±–SeØï`RµVp‰åDi¥™$_¨B¶¨´žwØcÛ˜Äÿ#~mÒF%—}s8Ç»$õ†ð\nô_ï|ŠM¦Œ¤^Wh.]¹‚¦¹U™ ;«Ì3a7›) Чz¹´úæB‚ìîÙ—NRÅ~“žs¤•9#Ö7I¶$Û-py[«|²ÇùS[™t—ì«ÇŒ›ÝTûX1ôy³ÏD:ºÉSÐŽd¸ ýì[ë"’¿¥.ªô`ñ&¤oùÚgêüær³Þ·Ûˆä½Ž8¥–ãkbðy À?´¼çÂúXÛ@ÝfKvÑA½€MÌhN}à»Zñ*úÞ‰CYg¢3ªÆ× ©ëCWivÉ|mvu. ÔŸ2V'Ð`:™Õ¦2U:ªwÔÞñ[€ÿªH.Ê6°.CÄÂØ-‰V¤°0 Ï{¼ñTtíf˜7Â8êÁ©tšÓgÙŠ}Î1Uî)åks²ËHxRöÜÑÀê#QSYvŸYÁ?pª2ä±ùNŸo [ržJ7w÷#©GÖ•¹d…™™|߆<…l9 M‘Qh6=I$—sHZ•³›TÕ"?HÆ„ôk2‚@„ ]XãZ]YÎh›Ï-²0¯w¢ 2ðœ\6jî˜wÔŽÚ>kÕ˜Øc>ÛåÄëʇÈ&íÔÆBK–¾Ÿ¬šUTF‘§kUÊl’ý{Œù7—*ü…FrVB·SjŠ G䨌$Û¨í‹É 'Õ¯>µÞEö[7‘ŠõÊ’´[bdƒºú`ƒxû‹Tx))’èÞ€5ÛÛ§”t¡ºz‹õ¯¼ý·ÕÏe)—W_£¾{Û*:Óå€F•Å!Õwärh+¬ß¤¦*­­p2bßÅ›m|ˆˆÊ•~ë'‹}¤–OŸ˜ëáª~£ðÎ¥vÑ<[½×hBý4ÿàVåeµhkD}SUŸ~DUorõï}3?™Çö+,íäÁ]_O=@½h7Ü,(x^ÿê}µÛ‹û´üöׯÔu©Of¡DÇyT©©IT{òîÛoqá<ÿ/.¾oM¯7ö]+ð™$w§@øìÍüÙÿsÞ“ endstream endobj 507 0 obj << /Length 2292 /Filter /FlateDecode >> stream xÚÕËŽÛ6ðž¯Xôd£µ"QOMh€öé=$9в¼Ö–’Ýí¢?_΋¤lzã=´[9Î{†£7·/^¾­n–ѲPÅÍíæ&QYTÅꦌ‹(QË›ÛõÍÇÙívžÌšù"MÓÙÃÑüwæï`~#-ôxªÙx4sõ\•³-M莞Í_fáa¾PŬ,íPusU4Q÷°w·¦7ÀßðrÖß»™ö644qÂZ áÇùçÛß^¾ÍK—øf¡Ò¨\VÄÅk¦~p¾F:é½ç9ÃK®RDÙÑPV`ꎟïÞH‡Ò!D²{óCº€’$‰–y~-%ˆ7qÄ0]š#Ó±G&(—F ®B]ók‡¸Y† &Þ9l&  œ¼Šó˜q˜a2Ạ®5ã]–-c˜²¶²³É©˜ˆÜ óS×#jÈ#¥Ð&– ‘ôÑ,EÞï3‚-Îà®T˜ú¯)¬üŸ+,¾B[S˜w™XÒ+Æ>œ‘Ô³k†ø×0Ç5dz@ñÖiïŠè ¿)ì€ bû ÄË¡6„éõÔn˜¸«¸º> _Ð`? 4ø}{|TØXe~KJÕå,ðǼÊ0}ä í­Á1áÞjHDyLy…F4R½6ÿOæ·@ûÕ '¤ÖHä@K 䬚ɖ2E'Ü÷ƒ Tˆ§=ÉW,}=­?`R´Ê·š× zŠÉŠ¢!'«lé+^G¤vnò*«f-/mé½d4èß©~€œŸÏôH«´ák¢£2VK,á ¬Éͤ0õ)N2À¸f Þ© ©w[öx˜ÄÚ⸇ÿ•'³€\¤xñD;u*™^S±ƒnõÐ ‡™]–ßR%†·Œª,£#R€ËçæX•Í~E»yjDÑ¢S@÷7A<-s4CŒYojᾦ¥‡¡w‹hL‡Y͈ó\µµƒ¿;X¯9$†Žœ;ï6L£íÝa׉£´LOÊÀäG‚†–T nÒ2ž ¾õ&tÜ8ÒF,úô(’mxŠ%åš&ôŽ}©äZ„Ý£œvp@h9^UilbÃNV&"SÖdíUMèy‹p¸µu+¢å8š% JžÈ’½x„ãûÙE ©˜~£î%œ2Žü0¬{t@-ieìyù„!.®Zß/‡'XŠ%•ºcYô{L©çT…HB éo!NbË ”TïzÕKCNë;¶ 5Õa…}C¯.ÄÂZ0ªP¸4¸X ‰|öx`KÞÑ›ñT¦#£]\j¥P‹æ„!))+ƒ# VÙ(ÎŽ9 «Ï2ËÌ  #=ÑÌ3–ËÓ›SüË9r·œUôÀ³BÞÉ—2r&JUKŒÔ)‡^Œ§à@† Ðæ–îh¬dŽ¬ä˜æL@?è•«qac’ÁgL›ý0¢(½â@7hrv/@oÚÑŠ$à<úˆUÚI¾›œeioƒŸ½Œ®—Ý$d0Î’Î~—¢ÝI•3¶Ê”³%GáX“8zPÝŸ|S…ùšn²œ0ÆÖuhYn¾*Kè¦Ü`qzp0š˜©Ä5ƒ•Ä%\æáIV:2l~9š¥p$u8qæ0ƧW(ÀkØ'Mb;óÉ{šçp„›÷Ã)  ¢ŸV8µÓ¾cRsNîÑJ’ë vŸqǬP˜|û#‹ÄêÆ×°ý¬8XTi<{½A]XS› ¡ÀFcÙÒÔãŸãŒÞ0v±Â xZª€ñ1º!FdoµêLbRgŒU¼ÚÉ7$XGñÆËI‘rÕLß5ð¢îÂKbå$ÅÐÚßôh#ÞA¼1žvŽáÂVê„tk{ÑÁÌZÌ6ÇVxi´4¦àwá_–”SçA€€QS5šKK àxZÜÂü[µ U(‰‹!;5ã‹bxúîd^}©@pKMº Bz&^O‚"9^\°eÖ1` ¡£=‹ñ… ͤ:ª·|-JØü ?Ÿøß÷|/R%Yª*K„Íœ/áÉ=¸ LjwV“;yõMžf‚\@¯xsëbÁsGÇÜ´eè<3$ÀãáÒÀ¸7Wåd+Ñ5¹ÙÙ Ö&Wˆ£dÁ´0Eëµg8ヲǚVÐBEٞ¤|‹ÖW‡-ZI•°ÏÞîfuÚ×MÒh™ñþ wzNÓïl÷âìB“%Q'_ØB[jú¼î²¼’À$·œš7è{R´¨¨¾ó‚Ê€A;¨aeK|XPƤó„uœHH9RšTIA71þ fjb)HÄ‚q'Õž^?yõ(øûî((¬6 ’ ‘3P=†Ó1(_<ö±ÙJ)'™`5úDç€P©3ú#ïãÚýxÁ Zº¸\Ÿµ-%Û³-*SvPƒÛ”\¥Â,:Ëâ·~%‚‚Ö™u *óÙFˆÍQ‡•(ÕMà71¨¨! þ(½žVîÂ|Þªô¤Ý¢èû\Ñ¢mïkøâÆ÷`jU´Þ'šÎ}Ç‘Ž‡ã©Ô=žsÞ “ôn¶]*¾ùûKqúý%‰*ùŠô3µêÖ^ïW»Þ¯´\wü«¹Ü¯íU"ШÎ'˜‡ió'ÌŸ¶¿ÙxówÏ48ßóXº¦~“µõð|Ý?„ˆþ~¾H”a&-ë,›‚xÞ'Å=ui?Â)ûoùÄÎë«¶ÞÀþÝü|ß5_Ð>ðxÅgØ&‡kdüÿ.Õï™"¡lïLá=v'N<ž÷ÈCBF,ÏuÞEr›/Ð*à¯bØçí7ðÎsµØ·>HSàgxŒ%͘oæ™Ä1-ž”4Eúl“Á,³`°\Æ “”I¨óP¨I `$k°óŠkBFW!à'Üàµf#õxz_4¯+ëIk&3êeÈŽ†æêFú ð‚ÞºsÈ‚M2ê¡!ÂnÍ©áçÌw£ÐapU+ÙÀM¯,È õIQDU™Q'¹*¹“Œ_9^ürûâ"X†G endstream endobj 515 0 obj << /Length 3201 /Filter /FlateDecode >> stream xÚµZ[ë¶~ϯX(àE’º§hèIOŠ Y MdYk«Ç–ËÎfûë;7^$S{N€ôÁ¶D‡äÌp曡ÿúôÅW難:© S<<=?h“%•2¥*mꇧíÿV]Ó>šjµ\§Æ¬NÏø«W×G½Úwð5vÜ1ÀswEÊü:]>b'÷5عåçgx<]&L¨½Åñø:p_û Ï-6,O@„|{•‰Î@tÆA8º‡Ï°{ü÷Ó?¾zŸ—Á>MU$¦*ïðL“èÕå‘—t“ç |þ)}ؾFVk;z­uRç9óxÁmÉ8ÜùO*Wü£y¡œÓ<œþ¥þûØRÓ$ÕúsVúgø| ŸgiGyµB×ËêÒ ÒÝ­©®]Uv¢äq]¤Õêýc•±¶ê’ ¡$C€·‰:J$â¿{\g:[ñžˆ’·Ô¿· *¨½‘®õªÁþn h;–³Îˤ¬Š©œÏkS¬:œ­íhG†G5;´“4e M 󽊀šöÊvÇ6 dvUÍ•ßQTÍÀÏc ¶ÃÙmxb& #¾Y«†Þ~à_·W¦ VKêb]Q› lO¨ÓžNRBûV°á4©³Š7üäØU¬ZÒ«SêÀ=gæéjwX­þÙ#ÝHÛß‘(ŽÜÎr‘÷~Òœ67;h`í¸î#.µÉò:ßÌܪ©˜Y3l‘¥L+vcO“š£Ð–F´¥Êž¥±c¾Øô^ö¿#‘Jc¶—Ö´+´•«3ùr,t5™v]\;¦hi:Þ ëëD ïAœyÌ‹™íMFá~±'Ø/¾¯~׋à`Ï!ž-²cösØký»›ÙÁ‚®tÕ{—zvÚ¦ã#ε™°áŸKÐ…ô=Éâ6dSN'Zƒ×:ÿúùƧÂðFûÀ÷¿e!1Ï[7AÁ"8Xiw¤žð”Lñ#ú!˜ØäÆT|F»ì¨]<(žf÷‹Eº%ù nƒ¼'ù $C}—Σ¶Û©Pp¼CÊɉÇï^ëeO—‘ûDOv…ýnþ¤t&ë·Å±ŠF퉔V}‰Y ÕÄy‰›ÙXo@ºØõ­˜:kNe6¡=ˆ:ì.9$@¬ ð@¦“ ´ä¢Ï]ÔÈ¥SÛ¿މ_œõÇ HñìY‘TE=utÐW)¨›øŒ¸à=_zI¢Ö :¦½ÎɺI„Üxª½D+h¤#2ÚÆfË­´‡{Ù:FŽô8ZÄ(ý["z-Þ¸Ú#Ã0)ŒPÙ§Á=ø¨à±¶Yr÷ìaA¦4–êË0”Âç?2³|éë0££LUÆÈtºú€g9K'qßɈGôV¦P*bO< bÇ~%‘½ù•ú³àŸ@¾L u¢§§ß(7!aY$ª6Ÿ M’æNóGkª2‹]}@Â&0(»âùJ#êÒÊ$ºÎ¦¦²˜Âeÿs¢ÐçüÒ‹áL10 ‡õ¥’"›ˆEˆÃLÁaî:4.îo¹kádRôÏ•Z}xš™Ìàß»Ñâ(hxÙ[È"¾Ù`|ð(Óá2h&Ǒ뉯¡†sÓ‹àǘÑi–ùt†üÈÛü‘Àç±9 Éôò%:t®ø;‰5Üà Æ{ÏkZP»„j€nAµ8Ì­_XöC°fâÙtLÍ8vÝÀë´ÜN#ÛdúñBÌpt¦I¶'‰æØBx·— r][@ÂÖ"àE-8$ã€ušŽa«&ö‚¯Q”-¤„-U ¥Ò-^;G¼(ž&ø¡•²s€øS`ü)IÂð™#ÍÕŽâ^ò9öVŽzø:æ{k•˜z~¬ÄçЧÚdµ$±ßËóF–kÇ¿Oú\ÖI^9ÿFÁÃ:|S'U•ÎsO°· $ëeùYÉúï;´Î¥ÌçÖJ£KðØKÿQ>6·Ù-ÔÒDû $f`VæëHø¶T>ÿ\Á Gƒ›¡µÇ¨TY¿í)Ón[—…S5¦L#èµÌ\ŠP¦Qg ÍQg íKú¹›“+aÌâ*xð¼‰Å ì8²Û- ñ], ìIù°°€*D]>Dë¬à"à©—²#6X7]L@ ¾NœQ@KYX~cû‘*Òpá,?±Xô+6ë¨üìÂ"åϘBmd¦ø³£økªiÄ4Ó¼F…‹sáâ25¡jìny"É6iÙɤϦ©ç“­ðQc”Ùºf´…¬Î7?Ÿ¢+é°·çÍRÓÙ)!ª –á…{îÓG #s¤rŽ¥ìïvt†«½1NQ)ô,Ø#O‘—ÅSX©ô|8å£÷u4Á¶?¹^Âl˜`¼Â•kòünáÐdát^P/B=z>ØèˆUÃrÄZq±‘Xdž#ZÜm´6·u¬•ß?[ÀœO1k±rZ†‘è¯Ö¼‡Æ])œÐ˜&÷f‚h,Ž à¤!Ìse³À,uQú쑊pk!YC”«µf¿€ü¤Ä"°°?/ÞgO¨„0ŠG¢rk£ƒ|Z¹hƒ}½‹YÌ×Ú¨œ¥s“øú}¶²ˆãlÁ£Hë™J>oÏ0ßþûOÜX½ü¿Ú—¿ûÊ¿“Õ]Übåe+–—(0ÿÁ°óÌ0ç"—ŠòÛëÿ}NÃöSSc·YŽI3äA$1iºj.ž¹ïO”(Ü+Õ¤>ºª1Rùͦ–žpü™œ[?ÑQÁ~ßsyÞJ¢®©æ£Vßì(ýÞq‘4œ‡¨Ç›š[ÓÈ,lHÙíÕÄ",õ/Õ\aNñ½=d]·•»+€.ïÒ†¢€/ÃQÓÖ]¨4]Í¥·–Q6Iæë^äf_šWŸDLÊs€Ÿ)/©b”œªkÍÉ´ž®“@ì,Ø1‚Îò¤Èf·hKhÏ4$@U$|ƒì5D9½E3Ep£[,Ä_èXÈe±‹o IÎI‘[‡·6Çâ2N{QJ2‡˜öBp>qAš1äè+Ô®°n|–Üú JKЄ·}?_B°h‹iX£"V¶F•ÞÃâÅ+Ào{Åb¡0f KR„®³_ÁýÆÕ^“CúÒ6’9Mjìµ .9%-éÆðboV-!;˜½ho½ÝÚ hÜ­´sÙ¤á¯!8ªøÑgtÝœ Nƒ³hÊšìΔ¥÷ eÅz³µ6làkÏ3ßu`ù¨’Ò8d;;Äu¡À…Cżìå|T–7Éœ,i ‘´Û½8wŸÆUî’WDøƒ5Ð º|D¾³HõÍâA•&¹q¨*p…rY1`Cw=ϧg;¡4x³ÁÞ ¥g ïfþ~_Ž|©(¸tzÒ> stream xÚÝS±nÛ0Ýõ©A´Ž¤$2[Äh3 ­í Ê²jÔ2[ÙFà|}îŽ4„éеŽ ßÝ{¼§A”øoTe°Ö)g­è§ìW¦lé5,;N@b%`õi-îCöŒß’+tÙ(mþ]Ëü©UÜÚ+´U÷·n³ÕÆ ¯|­kÑîh«\©…¯jÐV|–›äc¼Ì¸yQ—þ./4²Í‘á'&ð!×<㙂]O»0G!á.—ÕI‘v§˜»TÖQf&\×X–T‡mÄ=çÚɺ>PÁ¤ªKù¥¬J<}OFNEþµ}¤ß  |UE›ÜåÈÒ /ŒÑ\¤­‘=Ldµ›Y&c 3cÍ9]3ÄãÔ‘©# û.•÷C2uXt¯ýa!¾oˆéÉÌœìtˆ]"ÀƒTï\‡ÛXÂtG?¦‘O,œúÃx¥ÖH´©äÇØ;KY¹eÛ¤Àãé‡ÓЈ1ßinטIôHˇ¶Üñ›M‡6ÓЈF>ÿ2±úÔµr>VƒOœmZ \öÐfo4ƒ endstream endobj 510 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./attractor_robustness.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 522 0 R /BBox [0 0 504 504] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 523 0 R>> /ExtGState << >>/ColorSpace << /sRGB 524 0 R >>>> /Length 668 /Filter /FlateDecode >> stream xœ¥VK‹Û0¾ûWÌe!9T«Ñèa]zØ¥[´Ð&°‡e!Ɇ<È‹Òߑ嗗®ƒc>™of¤™±&€°†Cöƒï‡Yvúùõ§L )%´O‹]vÿ¤øÿ³7@%J"þD¬ñCä9̶ð2ºƒý¼/W»óûb¾ùù|JÍçýñ4~…Ù$û2+~ç·ÎÀ¯ìå$,3„ ßë ß2ã„•àHH[ˆH/Á¦]Z ]¡†ErÂ`M—°á•DámÍ—°Å[Þ×|„ O$E®k¾„-Þ¡|ÃGØðe:ßÊnÀæÿe‡´¤ÀŠaƒdµ1ØÝh‹¤¥32ÃC®Ñ‡»V¦Ž‡û&Å»ÂZ ÷My.¬ŠÖÃ}kCUKlõBYÀå¾Sa¦±@Ç<Ãî¶fáʯ»ÁæaÛ”çbÕA|š¡Fáò„FO‚(ÒJúP÷mšr+¬+iǯL*(hÒ6(%â’b¤5êÐtmÚ¹ÚõÍS"&—u º C¥t‰dÕň ]Á†7)oº¼Oyßá%|> Ouã£4>êÆGi|ÔÒø¨ŸNãÓÝøtÿêÖüÍŸ( ÃÅ†ÂÆQQòÕ×vý ¨xÎè–™…ëãJv4 mùr4òŽ1˜ ÙŽw–˜‹Ö ÃÓ,ÉeØ0ÂÿèIÍyXÓ”M„Ú…¹ª›kIÝø4Ɇˆ9; Ó‹$?ƒ÷w}‹ÔgN9?»…ÇÆ“Ÿ‹ª£Ðn¹ßò*œ.›ss"j‡‡õ*hU µ:ÏÓ<¯-ÿ™Y Çò>4GHÏ›;8\æ|nÛ¬êmÌþníå endstream endobj 526 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 511 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./transition_robustness.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 527 0 R /BBox [0 0 504 504] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 528 0 R>> /ExtGState << >>/ColorSpace << /sRGB 529 0 R >>>> /Length 636 /Filter /FlateDecode >> stream xœ¥•MkÛ@†ïús ؇Lvö[ÐSBÓh  ‡ƒ±•â`)$²)í¯ïH»^IþHcrðÇëǯvßшàžà%ûίË"»h~|¹„y“ BÀð½™×Ùŵäÿ@#oASNè-HôŠ î'·Ï¯S8—&Õlµü;â¯å¾ÎªjYÿ‚ŲYÏêy9}€â&û\t[Ø®1¸ðù`="4¤ò(l»Êäúµ|Ù”õüÏЧö"m–äêî@»«[þÕøÝ?€€EFpï§Œº¾eζØ8´*ÐF£Q®ànG%PJ*G§ÞÊÄ¥èTâ[ÙskF<ÊÄ•ôèdâ[Ùs.‚£žG™ø(NŸ.ñwoX8P„¶ë‚‰@ÛÒ ë{¤‡8Ï®]ž`ç¸Ü#»~¿]òi3¶Û÷Û9zl÷'Ø= 5²ËŽNkµgOGêíT{¸U¬¾9ªPõÜuCP=%þ ™p”=—š8nâQö\IƒR'eÏãv¶|°»wŒ-PI°y{³tÙÛ›^2 ]Þ™ÍÉf©4ê̇»ýM·"Æ÷ékk!6¤îÛ…‡`¬r<\z„:õZÂO¨?6%ÛÈRÅ.á¦3aЍöâiŒ ©×í­hî¸7GTy‹Ö‡Úsi}t+ËMÇÝaä ±´ó<`-Õ®ÛònL¤a¡tðœøÏ¶Ÿ¨AiÇݽ?Q÷/0š¨ùø¾î$ßæ÷H¡Á> qv¨MÞ°óî…§òó#ðc™Lfõâ¹âdÍfµnÒCx¸;J!%—O»þ¹ä8æ¾ó¿é$‹ §òM˜Zæ ^6³z½\•©™³îBÄ} endstream endobj 531 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 539 0 obj << /Length 2099 /Filter /FlateDecode >> stream xÚíXKÛ6¾çW=ÉèZÑûQ Z l[EàŠ4(´¶Ö6"K®dg³ÿ¾ó$)­¼É©§ñ1$‡3ß¼øÓúÕëÛ,_”~™EÙbý°£Ä/‚h‘™Fåb½]¼÷~X®Ò(öÎËЫáàÃöoÒÇö#||=|áû]Ú8vº^hÎ>i¿ 5òaÿIþÌÝ,?¬^‹Uúeš2kß.Wa¤¡×ž#|ïà«–<¶&ކñðïá á ä{ù„éõoåÄVøÔ«u2†»³|¾îÎá Çw"šZ¾oX,!2óú¶p”œEÀYX0g(צãˬâ8÷ª–ÿûƒ×ípçêÈãÝþ ï­pÚÒŸ¦ÊÑT!2­ ƒ€ÇúʈõÈSدÏ˨DpŠb`ài¡§Å[b©åd_s›øb¦fAÌÐ>/WIÐu’8â-HxÐ]é(KÐ2,¿y¿jàý*&ëkæÛrVßÀ@š -Ì#Ñ YÛ¨že ÓÂv»„ $éÔÂ-ÜȽxÆ¿uí. U úð mì—Iδk9*Îxæ®'À8í;£„¬ôθª:KG5¤)žéR@h!^iET¿º0ÝÁ6«†ü°A€x²3ÄøŽnÒÛeí(éFYäÝ#¿]C÷%¥À!0^Ũ‚›ð†û8Í“z²ûê^¼Ñﹽ؃IĶé°4œðïÕ99ŠŒbú‹‚çb hñ˜r2#Ós81Ö³RD±‘ƒc@Ý ü&³€ºCÉ „í 8 Yçð¯p× ;]ØMuv|ËéF‰E¶Ï2ð–¸Ç0·¼æù1íId†ŸÉ…ÃxáË€Ù—°6tÜA…À½=ëž}Ãtuhð·é0‚œ*Q¹– Ý­Bè,z<Ü‹RI&]˘BRò\‰55lÓU\™ˆFz’tÏÏž}Õ¾ó2R$8:ZË ŸBž| C·ÐëEiaø’Àû‰4^߇p8¹úµ&¡jäî™|ë:£ªÕ(%Œ'$q ' œP”48AÒÑah@QŸNrîA\1Î(âs”NAˆŸQ¶Æ©Ü;.À+A,Å„„ —GèöêÁ· ‘ðŠuÑ\Õ×ÜØÉtö¼°ãVˆZièMº³YðP±s"æÒæØÓ³k oÍ"š¹ðXƒæÆ¢D°*1RQâY/½A« 2MâØÈØdâ ÷6:ÖóHÛs¸“Kã~ŸPX²SÝb‡ ‚$4Ÿ4¢iФ\'À@Œ$ÇÚecDr$-,úY°‡ Ø ª ÚæÌ§Ó¼Ò9j•àʽWØ_¬ŸÖ0zï¡™|Pµ”Þx÷Q´gœnz™8â†Ñúñ3$l4Õ<îû’®çDó܈1tX#¶úM´ÄÀÜðP'–É—x$ É\t™éB¶ïêljÕ[pfyœôLj–IZüµò_W+7sAÄpRɉçÎÆó½ÀÉG‡Î VöÁ¹¿iÀ*~¹Ž’§çX$r¶˜4 •“„`ÚÎ^YLB]À©ÑÒæ‰ÚÖB¼ƒ¹Ö‚ëYÝö‘‡¹(`xÑWmÑוbwÈ]Tƒæ•¬‡æ$ω¡†?$`^ ƒÔßÚÕ{Ùi&Ñ8]þlÈÁõÜQCÐ è‘+…lÝ»°³Ÿ11ÔÚGyQŽoÙŒÊq]ƒýqÉÇMNP£õs6ŽS¤(Ç^½ï«PžzßP­/-…õ·O`öåÛ —Pí^É^kÕ0‹“?—ì‚EV YIË ›-ç§BÃÁ–>HAó¤¡m‹7:ó4Y@w?\mÊöçZoÅUÇ*Í#HS>r+p„æ(WÅØRd#;вo4íÖ@£ ÍHi¯fû‰q½JrSÎ%y¬Ì`S¬I›GµúúÈÖ@© ­¯˜Š\Ãäh76:9‡HŠú¼´Z Jö`–h}Ž}z—`o#Y49¸Ô ‰Q™ùy”Ã]-^pꜬtÕH>S‡/¦5ïYãÄ/ÊL|>g-Œü$½ÆØò×ì§r¢•ìwÒÖêJ×¶Î^× ãÀOCe1ˆ¯ˆÁgÚ‰Ó’µcÊp7·‹¡,Ú+~8u %l“¥63È ,4IèažûÍQð${Ûµš&³ÇÿnFšÊÀžC^öð… /"i_H…n8{úš ]K°^‹Rþ€ïÝâ$¤ªÇ£ÕË•˜l/bŸ±J Üf¼1/¤ ¯Žµ 4Nå~îˆÚ3ÅŸ¥Ñg/8†_ÅôŽ[”¸ÇV)רw‘–XDtÒ ¢âš„úsÅÅQáÆTÜbˆ29²Ã—5ñLžIêE¤ûO¡P¦µMt÷ü~ ~U²ý  †0»klÞAåþž/JHÓ¬ËÆæ ïòi™BµÖ\ìZ Î(À/6“ëíè}:ž>ôpÁ¯¥+¹êµwA ³oNx©- ¸&’wU~‘:Ê/Òk%;3_‹‘nF”0Zñoô2[/%KðÑ!‰* F'¹Í•ô»âdzOš¬QX!&Í ^$Õ¹ó,·R›çS~Ë“åØDèÉU¥”Il2«uí$vìÄyÄc{yX™µVö5–8æ_c‘FýÉÃyê¸C­ãö¦¬„]úÝe’·[h”Á÷œ×S[r Ùj6në[j˜e~‘'ÀUZúI1[I„“¯Þ¬_ý Œ¥‚· endstream endobj 442 0 obj << /Type /ObjStm /N 100 /First 871 /Length 1898 /Filter /FlateDecode >> stream xÚíZKo7¾ëWðXÂ7‡dHì8 Ð6Eb m 6«µ³­¤u¥Uþû~³²É’’µ¤mÒƒÀ×p8ïrå­Zxk„h¬È‹ WCÊ– ¤üðá@ˆstZ¼ê—__Ãp½LR4Q²’&óÑèbðèѧ5I6Â^À”ƒÄ|?Øä¥5¦'pt’UÛ˜¬´0¡~ÀÁH‡8ÑØkébè l³ô½¥a’ä ÐXGÉöß 8d’¡'!ÉÞÑ8zI¶§N9IÔS'!Xu_š½‘Ñ÷Ô N²çô6Y&ÛS'ˆ,2QO ŠÉ|Ģͤ uš8`»Å®S$¤E!Èté“0Cão¡8¯˜Û‘À­~š6嫪çBýtr*ÔYõ¾Ž=ûóºÂBqU Ô1H¨&í :ðözYÍšù´¬f]Êé¦~¨†uñ¤y/Îù¼·H ZHù§S xÇöí)ÇÓªhëfrR´•øæä[侬½AdEî÷GÀÚ ·®Õí+/ųiqý¶.gâż½ž·GoÃyYMyÕÉ ÝÑÍY O­2ɨWó7m7äI3P?c^³õ¤˜UÔwÕè]ÕÖe1PO'e3¬'W]~_â¨J·åƒ'Íh¸ï¹z~|Ì[†˜íÄ}±tÖíŽÖûÕÏõäñdV\>©//+hÕvLj\Oæ3‘Iý1oÚjT]¶0¯† ä:›ÕêjZ¼«TQÎÛJ•õ´œ/GÕ{ÕÖ£a¥ÆE9m&êÍ´ ¶e «a#fõLÉIÓ«K5ÅÙª„qŒFŇɷóÉU1GżUÍU3©~WeÁøf×EY]üwìÃ,+óuq}y~ßíì 6FlìéûöÙ«̃ôÇ HÛO˜­‹eñ™Ý0wí¾*;䀒m)`»EœÌaCúZ¦, ¥„õ %EÚÞ?DtŽÎ¿¼xó[U.–žQ›ŒÏÇè0ó½â8ŵ8Na8Î,­&4.Ô·Êç.0 Ó¡°Ÿ—Ïö¼4|#»àÆu›gO‘»ŒŽ{‰-®§¿¸SúS'°ÀÎüi¡W¾|umÔ7­éÚ;uû–É÷õäw8\3VÓîds¡¾SÏÕ1@pÁ´ÂŠÎqE–×M‚-Z W.i +ŠQR$À=î¤üJ¨gÍY# ¤oʺ­äìíx>ªÞÕå[mXp!ÇyˆÃ×'Ô¨Bq·Y ÇFTKöŸ&÷jI¸Â³‡&¸®µV M"_/þ~rX×KäP@C†r ÌF+SâGƒ$µÙLÎe}5ŸV2-SÁŽûF­Í޶â[K^·«%½îAé‹. Q Äegõ¸š=xÙŒ‹Ér‰hS¹˜â×–¦c¾GZæÐȯ‚ ·LöICë ÜðÓ’ÝËuòºë¤´gÎNù5MÊ›.Î g»O(9HfÎ~M8Ùî)œìzZÒG~·ó¸ZÝíÄbZg‘îÃbÐzÅxïì°ÂâgؑŠÝ]ù©v/ùõ÷¾Zìëâ;±×Y û²Hý½øðÍ»S0’/÷•Ç’ãD8f­¾æî„ó±¾7”ó«ý^õôM“Ô°M (Ílæ22Çîe_RGÑÖ-®Pt…"šÁé„ œ5 l hß›6 ãç&+w°•x±ôR¹«X½n#iúž ù“Òzí,ýÿT¸Ð•wÛõØ­ýKôèô&=:ó•ÕðüµB[ŽB%g‘üIt‡§6þz{É0r™½–ËkËÅ=“š[$3þâ»héÉÍ‚¼NÎIþÛ¡(ù_ä=?}*¯}ÀW"(Óñ7t™ ?ƒ@¹&2÷¸¨™í¯2eó®šfsÀ<›Œ´±wZòP\vÒð_ )M®¿@Ø^]ÚïZ±SÍýhuÆ endstream endobj 545 0 obj << /Length 462 /Filter /FlateDecode >> stream xÚ•RËn0Ýó^š…?wµ©úØTb×fA«àK DUþ¾ž£\EQ¤ ÙÏóœc4SéÓL+½³Ì¹Zúа> éT0˜ðba@çªì¸úµc—âGú^b¨Zûÿ½üë^â€'ŒSÒVˆïº-®nd¨LÅÚ;¦“2ÌèF:¯Y;°Ÿü¦Ôü”Öô´¦},…©=×êC)œv¼-Ë—ÇA‡çŸsúù™Žì!;û1mµXîèÜ’kïö£wª8'[@É8áÈ7ŠÀßAÞ°Ä9ÏT:à1ŠòŸ¡Å^š†ÿ-MÍ—õ[Þ¶_Ae­eð±ý¥¼J±{ŒÈÒZ¦µ‹éL1] k @ij_ÀÿØ­™ß¶ä–iѼÉ»Ý|"üÔÀÍs¾Øf: §Kôéþ@éî -Êž€*„|IÓÍëe?ÈÅôp¾2ü[º<ÍyòoÀ×Ã4PJ|OÙ9“¾ÂÃWÝöã5úq£¼œD8@8!Î×9{ÖØËQ »ƒÊ.e iÐ3L#Þ ÷ŽbÝy C+E‚Ñ¿4 ï žˆJ¦«J6µc"©]M#…Xñ©-þó¬ endstream endobj 533 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./indegree.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 549 0 R /BBox [0 0 504 504] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 550 0 R>> /ExtGState << >>/ColorSpace << /sRGB 551 0 R >>>> /Length 638 /Filter /FlateDecode >> stream xœ¥VKOÛ@¾ûWÌ)90ìììóÒ¨ !µR›H‡ˆ˜*(1" jûï;~$öÚAMàà•f¿Ì7ïÉÜÁ3¼f?仜f›Ÿ7—ð¸É*¥ {n‹ìâZËï§O@ >j™¢Am@c0]ÁýèfQ,`QÌó1°‚Ñxy‚Ív¶Íåò|žÿZçùfüÓÛìë´2¿ãïžwl¡Õ 9 r¥…Ñõ:}ˋǿc˜>—$euW“AL®¾Ë­·ð;»óŒàV¾çŒ*ß2ëÑ)ðŒÊà j‰}@fX¤+4;©EÉ z7b‹kïІ=Þˆ-Þ˜Ûáë'Tè …¬ÁEô\%PíwDök]rÉVÊtº¶ÓQUÚútmö„®®<«NÉ›:Õ§áJÍP%­s¸ƒâs=!>Ó”ÙÄò„BÉ=ɈFý.ê<Ƙ ¬ÐrjñQ:9Ñ5k`çRÃ:_ÃL5¥°\ÓÀN¦15MZ#Q zR„xŸó˜®Xöj 7RÕÐË*k ¼[ܦ¸íã1Åcלà;±ÅS÷tß?Ný㾜úÇ}ÿ8õûþ™Ô?Ó÷ÏÎîÿô®6¶\Õ,óêE€ÖrÐÎÊwÖ½p8I»x<‡V/Fâ=# 9b`ëýñìAH\ ã9Ì0§Ñ‘¬oû±UEÊÃ}c¼x6lœ¡¤qbd%¶RdIW(IäYwêìP–ést’™Lõ#AÞë±ÀhVÌ_V’†ÍÛrÛ¾ ºþÑ> ä-àÛ«Å4СæãcÙ,5Œ±üO.ã‹ö ^ßfÅv±Ì÷uÌþQ«ã« endstream endobj 553 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 534 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./indegree_kl.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 554 0 R /BBox [0 0 504 504] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 555 0 R>> /ExtGState << >>/ColorSpace << /sRGB 556 0 R >>>> /Length 678 /Filter /FlateDecode >> stream xœ­–KO1…÷ó+¼Lß{ýš-¨T¢‰&Rˆ„T‚†H¢ªÿ¾?Æžx2JÔ.tóåØ÷Ø'wvÍ€=³×æÆ½.–ÍùîÛÇ ¶Ú5‚ !Xù¾[m›ó+tß_þ`€<‚ðjŠ÷‡[Ë–/ìvöiÎH°Ùûfóp¿úyöyýô0wßb³Íú=>í~ÝoWëù[^7–~ÿ´A±êY±WÈ,ºÛbvõ¶~}_oWælùÜ-Ò ..#.—_ݧF±ßÍíì±ví^Ï ø ¾4†¸L™îý…ɲܰÅŽ•à2P ·¸ìq*3·†Û6óXö¥â‚zžÊž“@¦ç©Ì\µœ óXö\‚æRgw±Ì|Ü}Ïÿ9"ZqÔŒ€k‘™àn®¼þq1 v”j,{؇(T™Bø8aÈQ ÑtË%ËÌÉœbùXÜb¹~,3í&^tÄ4’.AÈ´—ø£;ÖI-H“&Ùh’'ň²ë¹FqRLRÛ£Yš»ŸRlÛž,–Š’D1¶c€â½PHøêm;³íÿ˜ë!î1"ݯÑrmºµõs¶„^åYëgä!?ÁQðó÷ O‡’‚’K?ÜKl 'ŠTU~ÀMóÔ4èʆ# ØT¦Êµme Üëq[¹B#ú¾*[$m¿5bek ¦úžDÛÃÕY­*_eç¨'¡©Œ p[ßWqäña|HMP+Žœ°òURšÊ ÉÊU©US$SyÊÉï¦åž£¶•Ÿ ¥¹¦~ÓøoÇ)Vn H•™ª /RW^ŠŽnš¿ù 7Õ endstream endobj 558 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 563 0 obj << /Length 1890 /Filter /FlateDecode >> stream xÚµX[ÛD~﯈*±v=ã;¤VbQ)*¨„'@Èq¼»Ñ&q°¦[ÔÿιÍxœ8Ùm%œÌåÌ™s›ó™Wóg/®³Iîç‰N&ó›‰Ò‘Ÿz’‰¯t>™/'L_ßÌÔôjæ…‰šb³n 'Ó Úà+6;ø]W=Õa¦S˜ª˜Ûõ)–<²†ö ¾{‡ªC¾Ì¶¬7ÐÙ ü:³wÒnqéGܬeúúÆ!2k’é%#âí)mÄø5E)­UÍtÍšO)?c6­ÒÉ´}@nåLgÓ;”ŽVÔû–gGxÖÌ­¶ü¿ Ðõ-ŠVkYŒ¬Ð>`dÍ}°Ín+bû²5›{•ímF+¦=²7Ž4bðN¬ŘžèÜ=n\v²¢F¹C=]‹¿2Z†ÖØ8Þ~ƒÌ^\'©IÀZk•1ëïg^¬C‘€eÇö+TUúÆU¿Iû£¥¥¥ßBÓã&É)ÔÖ}@<ögÒ¬dú Ó éA†CN…p(…ãFþ×"—‘÷;øæð½ƒïwø~èYì„´‘ÿ¨B¨1#ÍËþÌ%vNÅi¿5EÓ‰ú·Ž^/”Ê*Ô9ú¶O3ÉI¨Åùª•U;ùв½@Å‘ü_ŒÓéê³¢¡xDE sG^qfÃD¢|Ü—öøtYä1qºaõñŸ©'œûÐ UN'öbLÇJ™.†ÃOó½ìþ¸z•Þ^0ÖS¤ý,±ÎŸÅOœ¿²óéknsÝÌ‹‚ôL¦Œ‚„2ºx‰\C~iyÎÀ¶7gyê, Ò@zÔfñi³B–Üeü!x,JãöfådÕUÉ ÞÏòHž½ì*qE\)šötRGL³A±fÐ];„‰øçÜ`%Þ©–KiÀ…BâxѺ°eNÁë$t´Þ„º@D ¬yìÔ-aè°5Å0˜æUÌÿ"°šx¤Ã~[V ×é^ù`BˆÎף㒋Äà–G¶µLQ­Û7Áã°çOÞ{t²  ›ÊºWøBˆP¨Æ.Ôê0õÓ$ÉIâq@:‰ðPù¡Öf‘Oº{:Éý KÁ¡ŸGüokŒ…Ë`k h—…Ômg„½ )èÊjk}wûÅ5ÃÛ ö«´kA›ÊXb¡Âa)CkùJ§Rú\Ò^Jæ['¿sòæR„Ø ÜJ1Y2ïòÇê_?wÈýùL}a©Åk/KôÁ…³#Ö"ï£äf:à¦è7£¡º‡¹±TÞžP]* \#ìMk Ž‘zKGAðžÖq väÈka6ýEÒ ìWÒ½žîòª‘@¹ÀJÒj)–Ê“¶æ+[·t GÕ]ðS‰å¡M>yd¯Ftsç,Aû)&צ䥃ñäý\­dpmŽ+¬@Ó­LÀÛÒÔ 0u0vÇývpša€Þ,Õ†­M Ž’¢Á8{ÛcÀ»{yÊ]f ÒSþ—2÷·Û³H¦|~ *Q~†ƒ2èHxÏÐð¡M{àøŸª’qà§9Ù*¯(É«;[W@Ƈü\›´ª¹.Ž´îc Ú;SY"Ye/Ó†þT{'~š)³­y{Øá¼1‡[yRSfÊ’d {úúèÍ#&¼hš4„¢5é}è©NákªRè’lÜ’ö]ã4Æ´˜qZJ*g±qK*’~EgÊ•”„­é´äLOÀ‡2a±¶€‹Id¸7§bÙò*¶ñđǂßý–’ãð ð„Ó‡;¾ìá}Gƒ¬!uhÖ¶k“Mér‹ï‰ŽÎìH+À±YšLKùÅ™(ZI÷¦(k¯Îç|°ˆ‚|ÌOÈhMG&ÅC{ÄÒÈà¡Ï8D†Ø¡r×wts5WÀX¥|áÚ Æ-/6Òôû‚‡«Îc³SÎ;e}ÁÈÂÕÍä8×PõÓŸ)/°­øOlçÊz ‡í—ûZMTôÒÛ¹ØòJÈÐE#LkžuѺ#Ñ€Ô'ïÎ ¸âÉ9ß}[¾pmùñBbÂ…Œö‰/]c9> @5¼êêØÏ5æôXùQ¨y*ŠpîÙógÿÐ2ß¿ endstream endobj 568 0 obj << /Length 340 /Filter /FlateDecode >> stream xÚmRMO„0½ó+z,‡v™~°àM£›èÍ„›z@@ÜÈG6F½3Øõ`š6Óyo^ß €Hp€ÜjאּÖj³w¢ê£ÏH»$7p‰kÕšØÝ÷ŠÛ1zĵaj“T4oŠhwÈD®óÔ¤¢x`œÎ#,€¶Sµx’‡äw{šðlbe½“W±r™—×|¯NˆÍ cÏ™%Cï–ÁrYÅæ-¨˜Ý»œI…^9ôàEè½a‘×r^ëgЍxæÄ80“TÊ¡†:<¿9Ý6¤¬â—â碰ÏÜ{î³™6ƒMdk$Q›%6™üŠÍ^ŽDø ó[ùœø„¼‘#²ºo§’zA X„L„àÜÆ}Ù«ìŽÁ&'+WvЯ‚mQ·Îsÿ[ 嫉TjfwçaaU°R‡Þ!Mu†2I†Ÿßòœ'0º+¢_¥¼–Ù endstream endobj 560 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./basinsize.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 570 0 R /BBox [0 0 504 504] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 571 0 R>> /ExtGState << >>/ColorSpace << /sRGB 572 0 R >>>> /Length 651 /Filter /FlateDecode >> stream xœ¥UËnÛ0¼ë+öÀ>tÃ%—¤x)ÐM-ÐÚ@A®ã6‰œí×w%R¯Dn+ä`Á£Ñûâàvð}–ßÙ2;-¿|8ƒu™)TJAÿY®‹ìôBË÷Ë[ ‰ˆˆ)W˜kИ簼ƒ«Ù»9°‚Ù9h ³ÍãHàêûÊíoÕK¸¿…o«r[”Õ¿ÕáÐ|µ>lï‹ù5,/³÷Ë:¸f÷Þ–oz‘¡•ÝMŽÊUûÏ.7O›býkË]µH•eLñ|1’ââü“¼õ~fW× à&#¸”ß.£zƒQ@Ë`=:wÀΠ îañœo B޼V9oùv| dêø[Þxƶ|[~P_Ë¿¾ÅJ22`]Ýã™Vª©n¿EGÔAòõ=5OQ뜪<:µ›¢6NjÅ=u>EÍ0ôÕ¤:y,·7¨¼="–OU¨‹þŒ®›QÇ3ºŽN°ã59ÔyË'Øãs_º–°ã È¡åìønÃ÷¢ÿƒÇ Лº6£uý«–˜ªæTb;Y¬e&%…Ø•éj™*MQ=}ocÅí(„ÉjÖŒ¬£ÚöL*ÍPÓš8T£Ç |…âu.fL7¬1x©ެ½È¼C뇤Ä!g¾f“£õiýJ´Óhé(ü®O×!E’sägKç®:‘Ž^8®5F8¶prÉq’u݉#dôÏA1$$J!Ñhíµ5]óÄÃ#doQ¿4á—K L8 ½¨†Z"vbÁ.GŠ“÷œ:¾19Iƒƒ“Á•¢P¼¦åÞm.ÝâæþN’+Ÿö‡²½{ûáQ›'ûAž ó|©ügz\Í¢´>È E« öžVÅa»ß´‡$ûиÉ^ endstream endobj 574 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 579 0 obj << /Length 3017 /Filter /FlateDecode >> stream xÚ½ÛnÛFöÝ_!äI,zf82Ø] Þ4@¶IЮ½Om±`,ÚV#Q®(ÙI¿~Ïmx•c£‡ÃÙs¿Î/OÎÞX7Ñ6I­7“Ëë‰66É”™åmòÉåbòËÔÎæ^LßÎôt}7›§zºávÃ`§EµÀ›–0ù¹÷þ·Ëñ:É£Ôdn\ò4®­§‰– .Š|{SK¸ª^¶*w³ÔLfq]¸>Õ¼÷²b˜ÌÝ–¼_®ºûiŸ'^yØ—ö;À ®²ú?ˆñ(–6$6ÏâG¿*mWN›]ãˆÅºh¿Ï&y’{ãñë¹Ñ!ÑÊÂ@%€&¯òOú¯².?ÝTð° ZáBr­&R68T=ª\èlûĸ½ÕŒƒØ,àj)ÓÀµÓàúU9Å7}ˆwаlê«Íšh$$O¹‚o8R1¬?›í'˜OóéUQ1找’êbfˆ KB‘f÷0¬E·ε‰ÓÀB– £T •÷BáwS ‹gÞEJ“ÙÜëtzy‹è feù´ÞE)—2CÒ-ÈUŸA?1$Kô‘¡’¡^¶À=Û1Ì‚ÑÑÓ+œ^ —Hßd.4õ1Ñ`\Ȩ«׆fÝÔñ…Ì€,D´BDˆ;€¸[Éç¥ÀFeE€a/Ó@áVrbÌm®ù^±Àú,˜•âNŒc+‚{}Dð/#º’*›X•÷L\®UOIÔ õ‰³i«ÄGPN` é3òÍ,³ˆ¨¹™–ŸQ×È‘®|ÊÓb®4¾*#;ðá ²ž¡ib”ø*%0Œ[À7]+ZðÔ¾n]%Ñæ»lAO èŒ)øÇlîLú=&t% +¹ð¹¡HÞòêׂPœþ;\/¾q‰D°ø,÷G­w@Ù¥˜U€jPu%KDMÇ7}ƒÆ™(/—²ñÝ6šX-“G°Ê6¦ŒÆˆŸ Œ.”Wˆ˜t,?~½eÙÊÚCÇP¯‰/sïÜômEê©‘œ4îA–[N ›6ôÁ¾ò~M²'+¢gDe³ã1™/i£@0Ý]7@`|»Ÿ9±ø%;œ¬E¨k\€y±‰ W 2àÙÝ â'¬¶=þ ®%ÎÍÇØÐ5£F`¨¾Q±nˆ‹Yô©ôþ˜'ÂwÛ¸Ý^äVIè—G=‘öYâm˜oD³+¹oÅövòüoy®$poˆyl“?>%¼éÔ‚c‹h<«¾¥óT¥‰Î²>o·‚EL/ ÒôÖnß—*±çF 2Wâ—H4šð‹ZPl‹udy‰nÖEmÄÐàL£«ø¢&¦édN)4‚‹ôÅPSb§£s‰¶Mèx¶ü2©44#*‡“%!„>oÊŠ‰&×B o$ =Sò=S2^±X’E º¼£uºÎ WC«Â{ôyqÌ.‰âH×ñ5šÊ¾$ ¼ l/™¾Žìþ=j©Á’II} 뛯g¬ ‰”1Ì"å…˸Ň7Âî—G‚] !¡ëªF|ôø7Úž†eVþPGU!?ÉtÚN=ÝÀxI„{×;¸.àú¡£žC‡ùýÙ@Õù?Q{„‹Ý%Æ¢þé· éµ üF¶¼Áýg@ûaòÐjÊå1_ˆ•[j¾Õ“·¨–*ñú«®NçmÖg‡ÕZk£Ú¬©jŠU”QMÃE\´XÆLÇD»ˆ5¬j&?†#‚=Ä„á–A×\Xñͳ7Ë Uü"n{·êjÙ°óaceaPý›¶§¿¼"\YõH Wc.šP˜rB ©FÁ-?þŒ Ø’š#sHkºWÛ/m±O,,ç¨å¬ÝûÈSê]ÂgëØhV¤¬”‹“#MÒ<É|·Ij¾Þ…½F†mÖÒ’ÅmcWV˜šêÈÔ¦cºáávLÞ¿1 %ÌôÑ«zao»áþE,¹wXSVxmŽ),ÙùuÁÛmä.),ŽšµÄèq’Ú"¨7øp!E)•ÿåšù»“¤©wz#¾§èŒéõ¡ØŠ„’^Ô{Gªw³/nÄf%7ÂÍÎq•w”{9Þ/É}X“}Ãür=Tvv M¦×qœ#.+ó‰mö°Lˆ T%üj±â\¢lãý¢hð•’$s#öù”!êĺüë-ÝÇau¤²6®Ö!Ÿ¾B ‡Ð*JÈ(NE…ÏQç p±‘<ˆ•^WXjâ+Šc«6¨àÜH—’>:-m’ôæ×Íü"öÀêSV.!à g»nÓ#(aS9cqö0áiÊÝœë( ?·®¼)Ž!ÑZhŠïGOLª %éÖË%©_Q¢¨§HµÂÉÕ¡ÈTâtÖˇ)5ý4s~Jö„x?Dg)i+'R™¦c·ÊÏÈ\-D„x˜ù€Ò±¡1ÑËþ|Ëaƒ¦¼W1¶Qc‹`ë$£·w&öÈÉ×!Qwß°ç‚¡}÷<ÍK‚i·0ÃØI5ù•õvL°8Ç?ÍD§©Î_âd*=/IŸ²4kÛô9Þ\Wéiú°Óy×ëÚyRÀeÏ’ù'(‹õIžÙNêdóÀåòµOHî®`kmßU߯€²CÁ¼„ëì¬&4VR}n¶7g¯v¢£Ø¯{Ý”úì¢S+–ä´½ê* 7kÏ¢ÚF'?\žüq‚APMô$µ‚÷3!O´÷“«õÉ/¿©É^‚À“4Ï&ºž@yšawl5¹8ùùäi{§6$è4!ƒ¹ !©lR”ÕÈævÓy†Íž§ýÍÓ³Ÿpó¾%;~nMJ4±è6†µÁ'.{.Y(W]péýˆ+>D¹,<h¦„„4Ò}bMÓÉkÉæàp±c;Ùìñy|ÝvZ)K]a÷߈?º”â5¿CG€í¡½Øl]â1ÑãvQ7ÉóðTCïÄ̓N§oeO:D¬¶Ô%[Š• ¶í*ñ¾Çäè¡ ˜Neôæ1ƒ¤sHÕ+Áð¹sH€ ËêšaÛc[nÏFöñôX7‡¹4.‹¶£ˆ]M¸)Où°ó!F¿,‚aYÇ_G^²Å͸b5R•SºŒà烔d$¾ŒŸJ7ðÐÄšé»NðååZž÷¹F`±¶Ë»Eaž ø oGx–ç-Ïr.úàvSòY =ð»ì0Òáds`Tuœ¹xl°£“žmÏóKÒwp{Ëq6²}A¨«1b`…iÛÇyìµPkð‘YfÅ'ˆSyEű6×h®i†~‚Ï1”¿nÜu$>§d”*Ö'—íy…t  -à1‘F¼$›¬Ûý(g Ê zÿuˆ;> stream xÚ­XYoÛF~÷¯óPEHswyˆ\ÀŠm$E ‰óP$} N«EU¤ì¨èï\K-%:ŠB ¹çìœßÌjtwvq›¥ƒ,̳H îæ¥ãpéA¥¡Òùàn:øä½ÞûÊ›\ûAb”÷ÚcnÞhhßrûõ~ÛÁ WÜÙ@[g2íé·E20½‡ŽâÎÇ1n{£œi"4òÿ¸ûy 5 sËÔݦŠu ïe³¬à³æ=ó¶' NTkxׯìþ<ŒÓ¤G¦KüD"õ»:æÕïǼâ’׎’X}Þ‘õþœûV!£'ƯûÆo|"-ÚøçpŒoX…Q»U¹ŸŒú¯‰ˆÐ:Ý5Ûeçüœ;î’½êgàYž…Nä[5ö“8f7v-uÓ±àŠa ïOˆÝ1”C‡h¡ÞžØäý¸Ëÿë)’ÐQW ‘\Yu&\wn壎šzUÛ§§NØ8<äë^u˜ý8ž¼ÁЊgxBäœ=éâTGªp­Ò¼:¤@8rÖ½{ò±L=¼FM¹þöýñÖ'¾uŒŽU/{‘ÇõGWÙG~$~¤œXÖq 8»};ÀOq´kÕóêvc¶3e£J¼©3ÑîAë¨c^ÖûÕ‰´û÷ߌùщŽm$D=ñqïjäâv8ÈÃ<Õ)fµ£Ôq…š-¶Ää èl«’;uUθULÑÎKx|Q&)V<7¦Ü3ñuæ}ñõЛa²ÁLôæUîaÕH¤´‡«gR)ýöU8ˆëfS¦¹žÑP{ôiþ £«%ž>A ÈÔ¬fº”ûè,› U˜'âÆ>p¹XR¢dQŒÑ}Ç*/lé™0‡Lïî/E'«b û£”N©°9t$$™cT‡CI"…ª*ày ÕÊ{'_¤ðH)í‹ï"Qa³¬:´dÑ’;ÒT#l’Õ^öð«09lläÌ„ Êûž_ž;;†J ZBböUL›ŠikÖOÁºA‰÷%ªyÌæ_ ‡œÏØEÐ-·¨‡_뀬h…J¥§Æ-)¤«9]ËC÷ÄĤÙv¥SG9ÎÓ™-¥Ä2K65û®¯_ⲜLvÏÂÀ¦{Þ[ØÙsg]5Ü(Vdblñ4R"VX/Â2M>ø è¼ Y¯ÄKÂ>o¿Â˜P±7ñNÍmÀÜÙðw¿4 ‡ºBƒßÄ^CªßJøKK2V z~ðUtÌèÀS¶U¤ÂL{ÀB–®Û-,‡%q-²Üöp ÒQІ9œkn´FÀNÍ:¡6Gû#Ä22ÅêO…µÙÚJ]4tH^cR¯Þöé1Gˆëý0ð~F7x­Ñ_›®‹A†/j¢´K\ûçNtÒ†ý2Ó~Gþ^2Þ% ›aÌ!Pòü\Ž­¤ßÍ´èùI¨-0é®(zCÖœ x‘–¤spÍ[btdÑ7.ï-²àaÄ÷HŽõ²·ñ :& ue݃&KºÌÃÚéêÎÏcr &I mpÙ¾75¾À^f˯`4ãÝxƲÒÖ2d^pŽÇ61­èå;‹bSY¹ÙH“Ù»v…y¤ÚrûAæêÍS0XVäší)ä ž#܃_9Òbg±£©ZñmG~{‚Ž,bœxŸ°ê1ìq–{oÉbÃ1cb'f°3·.ª Áb2±~]cº§±¦/Þ‡i8ÌÛœr/šo|¾E¿‚çBžGç éÆfš×²g&Xmýx/ë-Æ-N]B™$ÌŒ²\ˆÜW(¤$£u˜ê¬¿Þ¨v H1ȸlù ½Ù ƒeÁlðèNØ¢¨ÔŒ“5¡yìÐû»Í’âGÍ,̘t]Í;i¯ØÚ ¤²qSõá¤Z|~"'Î÷Wëñd¥Z°GƒŸêXs ÒfͶ©e}\ÇJ’ vÖ6µ;…¼æÖ#1^%¾}H^'†4Pó&íFrX<›ü³˜òá¨Ø´Ú³í ý' ¬Ë€ºâýœAMŸ•‰o*lœ­\°’VÞ X™.*Ê ¥AIÙÉ„ T" ÆÍù[pÝú"ÁÊÏ‘Š…)v%kÿH‘aÇ/_Dz=寤¢<Ãâ±/ÐøÒ6(Hj¥ŠÇ,kÕ¡–›ôÔ‚'Ýš:;T-ˆ ´¾TE¥ÅÊXŠ(q>â¶‘PÎx“µ¶ GÉžN7„5…9mQÄÜa,6‚[@íD¤‹µˆç§~Âôˆ+‚ â57—‡ö(lP¼D]džõ:µˆ@ô§‡‚€×9#wIú‹ïìæî a+¨JòPe Õ„1Á¤<ûë,Ô)ä[Zá4iJE‰¡^Ju"^¼-U6¸®Î~ƒŸ%XÊCz„¤v0TþGÅÅIlÿ²l‹òœ¯uÛ¶Þü[K"mm+Ÿ PËQÀ&›¤¥IÕÑJ ijór;y :îË:Êþ è¤ °q“ ÂïÈ}µcn9sBcj‹n ½rÙ–¶\g&q˜%]ÏYàec³À=÷©ê°d$³¥ÙQµä”\iòƒD¾œ9yr&7uD¹½ðʸ Ë 1Tåó ýB¦¿Jê-swNÑ‹^pÒÂÓ7²e"@Qï¼íR–>­žï¿ž¨Ê ¨ìHèÚˆÌqfCå_¿L€D endstream endobj 584 0 obj << /Type /XObject /Subtype /Image /Width 1053 /Height 678 /BitsPerComponent 8 /ColorSpace /DeviceRGB /SMask 590 0 R /Length 35184 /Filter /FlateDecode >> stream xÚì|eÞøWïλW_½óôïéY°€Þ DQ,§¢Ø=QA齂J¥'B(B$!^H…*½C•:ìÿ·y`fg'“Ý õûýìg3;óÌ77÷Ûo¿uè?üðÃêÕ«å})€%J–/_®7‹ôôôeË–ØF$"55UÓ YSPND%4­(,,\lF~~~nnnzzzldäˆæ-Ÿ{> Zuyõyöyù(+e“`Ö»ÇGΜÕôÓé5«E<þOyÉ‚|”•6wŸ3³ÍÐÏþÝµÖ ž|¾ã/w}¶ÍàÏd¥õîPшJhZ±ÈÙÙÙÉÉÉ¿î^ùáoŸ|*øõ7§·h1ã³Á¯½ñMÕ§ºW~H6I f±{ô×_Eüýosk=šÕðõ‚N- ;·ÊjT7î¹Çd¥l*s÷~ãoùÀ³_>þöˆWšOùèÓI¼ñ]í§»ÿóÑ–È&‹ÝÀ>ó¦…†N›WqÇO™—{…Eú¼iÁ¡Q^¦63%!ÚךVäy 55ubß¾=ï¹?è¡G3_ymçð‘'7o>¹aÃΡßeÖùwÐCÿ”M@‚yÚ}Î7½g?üǬ—îÜÔ¡Ö/³û/þñÄžuû£‡lîôBÖËwÊ& `±{¿ ÀGšßýLß4šòï ¿ßøóš» †¦¼=±VõÀ‡þÑü àiwÓ®epów^}§”†÷únjFéÚÈ~ÍŸo<Èco’=«õ«¯žÛKö;¿ðê ï ž•qùç9{~ÐÇZê]Én8jn¶¡X:W–«Aç¤ÒåA_mÜo†0?¨¹Ãñy²‡3â÷è|dr[)‹vÉÞU¯Émކ³²ihpm¡iEŽ¢#"«üsò½.ÿÛß÷=YëxËvg§Gœ Ÿ~¬E«}?³üoUd“`¦»ÇË®vëºØÕñÏ¿ ¬~df›K£Ž/›sdV‡ýƒjìêøÿd“`¦»GÌžQ½E•š}zsê“Íb^’Û=a}dôšI½3Z~4§NÝ©Ue“`9vIûª†ÃñtÃÏ?o¨:Àw¾)kg}]Çáè–äi§¬¸~í>ÿ¼‹†OËNO«åÏ›´ ‹Ï¨¨”fÎصýˆ¨tß”2¹›$ú¡—>iw.Ù-†ÏN1K¿—Žš}Ò\Ë©UU:†û- é“_p8:L]°Ð|³.:?Üä=ûŒ‰òð±lfö©éxXÅÌ›<¬kŸÉ–û.,ZøMM‡ã³1´4¸¦Ð´"ÓA-ÛŒ¼¯Ê·?xðÆJgÿø€ó‰ZÎ>v6üÈùxMù(+e“`¦»Ïi×8å•›úêŽCCª ®vbÆ[§’:Jê|<â£ãjÈJÙ$$˜éî¶¬ÙæïïG=óIbíæ¯uÍý`ÐÒŽýŠÚvÈ©ß,ý•Ɖµe“`™vIþêiÇÓ}cV­Z½.g²(Bn“emþ?®[·"×ÓNY X¹jÕJóú¿ìx¨ï’ÒeYU˜—]Q)͘ZÙáèžæ‡<ÏøJºú¾sUª%Ù«–.ÊѶ¦§»Þ¼$¶ôU²kEöòµëÖ®(ðW‚Z>åp´Ï*Êó°]Hí!¹í2ÉÃDz™.U䡯JK%½´pÎ1µG5‡£ZhŠõÞ¹‹æ~-öŸNc€kM+2<0¹Î+ îyèÐ-÷;oªä¼±’ó¶ÊΞp½þ¯²ÓµòþC~PL®óoÓÝÓ?ª¼®íߎŒzìÄ”Zgæ¼âŒ¯çLmèLm òQVÊ& ñQÓÝ߬ûÞ˜ç[f¿Ñañ»]—ÔïùCƒ>Ë? Xþß/—5èRôŸùo·Ìzã1ÏK° »$ˆVt›ìZÌš!Zñt÷PWwðŸûß ˆWAâ'·©WUu÷×k39þ‚ýÃj8 HЭ‰Û½ÖýçºÓW>í7WõŸõ«Ö;èsµ¾Ö£uáϽêÇÍMU+§ ëTõ|ŸÜ=4>#uÚÕ1|Àá¨7.^°ûÈÀOeÝ}4¯ê¸¿Óع玘ZÿþûÛŒŽŸàp¼ï–çi²Þ0-Ű^KÉý¯¼U]þ¼XšÿÀ7Ÿx3 Ô= Bô¸ÀWΧS’“ôkª~нžku›¹ú8R§½ëp|”œSZ&ŽZŸGß=²ãþú““ÎG§’4RKR½zµªÖúo¿¤óÇo3hÐçµÎ•ÛØèså–17ôÓZçÎU§‘®c‡vK%ZÒ^?`²á£§ò×3-à%©"£.ê¬ò„óÑÎjÏ9Ÿ©í|¶Ž³úóΪÏ8ÿù”óþÇ×VzD‚™î^ØìÎÝ;1£ÎÙ„7œ™õ‹>t|äzÉBVý³ õd“`¦»×P»EL½žË> \Õ¸ÿŸ Yûé÷š}·¾éൟö[óIŸU¿\Ö賘zõú×N°KB¯Ž*Íú‡…n]ÿI‡£ÁÔ”LY;¥guGå. ®Ó›¸úÅ!±iióCT‘å&ӓݪìÿP¯Ý#†wí<$,)33¼ ýU˜kãÔžo–ö¯o ‹ láöíŠ>¬§,<$"73¶K YÛqž¬M{Õá¨Ñ%$37mvXXäü´´”Ä™!I:C"""“õ Ÿ›1×uÄ×¾RɘøŽèÑÔ”¬äÙ£>nÐ#2Ù-ÏS{Iðÿv4zôðáC‡O)]ÙÇemG$e&…ônì:ö‹*_ ¥…æž•ø-†ÌÏÌœ=¶Ki¦‚]{$…©Ä5ï?6<":Ewlˆä²G¸+M³¿‘0íGÇ”nˆi÷ øFpvÆùèÒÒæ…uSÇOÊL ÿ¶¹ëˆÕ{ÎÕ¿NçáC^r8žj7®ô Ó?”µoÎÏÍ ”Â`èì´ÔùSdé¡OúGDDÌIL5|4/ÿ ™Úë\lús—‘Û³ôþ·þ!á³ç$-ð|ŠÓÒŒ(ÿÓ/Ö× šV${`þ“Ïny¤º³æ Î_sÖûóƒÆÎϾp6oélü©ó÷¯¼á¬õâÖÇŸžW½–éî…­Ü;öÙ³‰o9ó>t.ýÔ¹ª¹smK×kusç²OeåÙÄw$€3ݽÑwu;&½?àÇfßmh>vóa[ÛÎØÑiÆŽ·¶½é‹ašø±i‡Ä ‡½ž `—y/žûþÝE½oâÒReíd×жç¼ääØ1euϨE®»„²D»ÆÞíÆÎÑöŸÜS´ÄR#kÑ’%‹R’“cFŠ…t. VGF¯‰+–,Ê[T”ßO†ÂÕ:ÈQFµ¯&cùñÑs"¢¢B¿•ÑgµÑ±ÒÛNzC¢©Û&$b^®Äœ‘’œ’ž›;SRÚ}ff^^nzŠ:àKSsä€ säDq)Ì€ÕŒf²Ô"4/=95sÑË—d¥ºåyrOõ½ ‡ãÕ.dåø.ÿcˆ_º8kAÖ¢¢Å®ÖPùš'…Q½ëD÷4”&¾A²‚ì ró—Dt–qùÛ¡²OüDWnÇ$.+Ì_˜—­?v\‡£Ê¸yi²œšÒS èÕ@)ªy¡.Ó“™¢E—œ\zü¸¢‚¬™ óU’æ'Ÿ;~ƒ~1+–,Î[˜óœÒð±ã\'«Å°iÑQ13‡É±ÛŒ“–¹@Ôè‘———#£ÿ ?š—ÿ…œ?w+.8w©Ys¾­'êž¹07gÅ)NNN™öÕKŽ*£impÍ iE¢’þwíÓ/¸„â£&ÎÖ휽¾râzõt¶ïälÒÌùnõµj'7úÈt÷…=_Ü1îeg·Î>sÙÄ–öÎ]¯-\W|æÌýpGÈËÌt÷N¡Í:Ä6¹¡UÈ–vÓwtž[Ü3e_`ò¾ÀØÝ_†oï²¥íˆ -ÛÇ4ìÚ4À.s{TwÔè=gåÊ•ù)S\_7?Þ.:1q’¬­ÜcnbâüðÞ2 }.t¬a®óC£µý'})ƒÚ/çêŽ8mx§gÔ½1UÔOú²º£J@B’ ’<±u!Ç%ÎøaǯTv8Þ•c%g¥Nÿ¶†Z÷xÃáÓJ7¡ºmœóñJº¿JI;ifÚT ÿBÇ èñe§As3¬ò<éK Ó{N‘z¶â‡‚¬ÄÄè/Å*^ì›p.Hlo#×PùrQõΡniÄK˜¾Éç;Ùõu} ØÄÄy¡¬Û´“¨C»¸ÊsöüÒOiq£‹Ý ‹žÿÝG²ºGZf².ºsIJIrK’:þôsë{ˆ&tq%oþÔÞŽ ¨89î|€ ç“ ÿè¡ü/Äpî¦tw‰¤7¬‡$¨Nh¬y°ó§Xmªã¨Ò%šÖ× ZÇï´~ý³_xÑÙ¤¹³SWç7ýc‚œ“§8§Lu;ûrvûÒÙü‹œÚ¯¤õ`º{ÆÈ.+†½ä,øÔ¹¶µK%vuuîëéÜ×˹»»skG×ÊÂOW«#ÁLw5{ÈgÞ·¾Ý´]ç÷Jß÷mÞþÁòJÛ÷MÌîžáÛ»Œ]ßö³·GG ‰°KLé v¼,%¥gϧ㩳ã'ö¨&ZÒIzÅ®ãcUèØI®Ûr:O˜£í&ûWq…<¼‘Ï:Õ;M^¶bÅòå±/ºÇjÁâÎr ˜«÷˜Ÿ8¾½ ß_¡X¾bÅÒ¬$WˆÔ¬üå+–¥ÏüÎ%ÿ t­šëÒ9)Ö<Þ䌠Ïd„\õÙª2öî’‘h•ç0×SË=¢õ+‡7“Ý[L׋¤0F-WsT+-¢ Ó ‰—Ô5šrþã;ËÆ7&Å Öyül÷¨“æ—hÚ=W€é©Ó¤ˆž·á“ÇgAñÉD—ÚQŽÿîxUjq¹n‚ê<;Þp|u'ÄŸ?Y=fæ¯8_žù™I*@•¶ôgüüGå¯Çù“üº´bB\Ád¹ÿ»ð›y´6¸fд"Îóç/hüéö_8ût©Ä´ΘX×kÆLgÈxç !;Z·Íü´™3Ý==aÞâAÿÞ÷¡sS{çÎR§øù+çO_¹Ìbgwçæ»ç}X0øßÌt÷ÄÔ„NSõOm:kû—‰{úæþ<¸àÀðžÏþy`Bq`äö_'Únr# `—ÙÝ«;*7 øU‹ÒGw›ÍŒ‹›Ð½šãÁî³ãââ“fÖw=ûù¨ðÈÈðQM]ן™”¨í?Aö¯â yލq®ñøçý§„OüªÉË¥÷äL* 溭éöÃ#g‡ lãº@„%9r€k^ãíö!rü“‡#‰ éÑ¥oHø¬ys§¸îhúp˜väÚ ˜1{¶I¼qóÒf}­úðV!óTúb&mÕªGèl·š—\d·­ôZ—Ès§ØüÜEiézò}„Äi,..¬±Ãñј¹óimpÍ iEŒæÎ›=yê¢ví÷~÷½k’B„"!Ñ™˜äœç Ÿ¶oÄÈÅ;çN™"Á<í¾ "xÉØzûrZ8wöpî 8¯Î]=öå}¾4èm `±ûÌäi=f4 YÔ.~g`ÖÞA‹~þN^™{ÎÛÑ'8¯M×i #“¦yÚÀŒY½jÿzLµ7ZMLÈJŒ™Ø«®ãÁn³\]OrNÂÄú•µÛd> IÈIÖu3ã»ÕvT/ ©˜—0®Ã*ìsŸtiUºøÉ°ðñÝþ%ÃôwŸ?w˜:­Ædå$«Ã§Lí[ý×$¼'Ïìï*€©É±çR§E7/57eê€úµŸz৺Œ™PÇ¥±Æã«ðÁ®ÅØÄü¬Yç3á¢ÃXÉüÜy“ÔÇ&C ÍË?f–k®¡Z×YçN±ù¹‹O˜Öì\Åhî9ØøžïŠÅÌIO ±ÀµƒÖ«F{`öìÙ)))9Ó¦-î°yÂăQQ§â抛0jöæ‰a_õ‘M@‚Yì¾`VHÁ¸†[R›ZÙéÔ–î§¶ö8¼ºóÖÔ…ãɦ2wJ™ÕdlZ«ˆe=âÖÆ­í3cY÷Ñi-"?‰L™n±;€q9…K5Š ¥'ÄÊÚ¤œ‚¥KrãJCÄ&¤,),ý¹K—,Î(  ‘’[¸´è\H:z^Ê")äÜÒ3?-w©:ióÜ?š”¿ªçOkJnþ¢Â‚¥¹†s—’¿¤tÇEÙr óS<µß}b7S’µ“p- iÅlD•’œœ\3jtÁ !«Æ­¼xÈP×ÇìlÙ¤ÂXï¾87+ubßÜ Ÿ­Šl²*òÓ¼Ðæ©¿–•6wÏÍÏ?oÄÐØŽßÏoõݼVC¢;…Ì!+­wð9±s…X›¡c$tìœóû¹–Æ´¯ìp´ —M®ÃĸßµúÂõ1±±î1–9Æ4ÒïZ>+xмd_òiii˜SZ6slG›µ0¶W‹À)e XÉá¨ñÊ{½y¯ëêT{|\’Ýò7$è×SböѬüõg'¦4h¬É¹+ݱt³é)ÿ¾ëƒçˆÝЄàšBÓŠYž™9s¦¼ÇÄÄddd,+Eä£kÚø|€Ësw€KELÄøÁ£&GV` Gjpç6­?û¸y—ÀQó²§Ä^a§8:)37#žúךVÌ´$""B-üúM—íî—„ÙqIé)ñQCd\RªDyu[BJzVvvNnNÖ‚”¹³¯ñS pÅ iE€WhZñ.€WhZáð ´Ð @+­P„……7îæ% 99™szÍrÉk åh…u°·ÞzË¡ãÆoTë5j$›Ü—ý‹§Ø Üu×]ƒ ªˆÄ´nݺråʆ•‘‘‘ùË_NŸ>]q·S2/¾øâ•Xñî½÷^‡/½ô’×Ǭ ¡U¿ë®»îî»ï®]»ö¬Y³.m鹟÷aÆ]ýõ—¤|Ê¥ÕªU+<Ï’%KÔúiÓ¦Mš4é"h…iìZ¡OX\\܈#|I@NNŽQQQ‘~åûï¿ÿÅ_âºF´Â÷"]¾|¹:›r)Û9sæ¨ëÖ­» µBU¿¤¤¤àààgžyFüB†ñ]Dh\•ZQæðµBµÂÎàY¯zZ´hQ»vm_pöìÙ{î¹§k×®Úš’’’o¼1==ýÒž¾K¥¾©F||¼T?_lâ"h…¾?^·nÝn¸aûöí§ˆÐ ¸êµBFÚmÛ¶u´œ9s¦gÏžwÞyç_ÿú×o¾ù¦‚ÏK·nÝî¸ãŽJ•*5J¯Z†~ë­·ÞtÓM<òH»ví¼NƒD$f!~¡>Κ5KÝe(ÓŒ¿ÿþû’<µœ””$)Ñ&>$ÌÀý[2sæÌyï½÷$U«V;v¬ZÙ¬Y35·¢X½zõc=öË/¿H‚ P¥J•[n¹åùçŸ/((ÐÂ|öÙg½{÷Öò%É–Äû±H-´Â"U›ô5pË–-üñí·ß.åäßê÷ã?^wÝu}ûöõTÚîEd¬‚´ÂSëÓ—ª´ÑÑÑ’)¥–-[ž8q‚þ.•Vxz¶" ࡇJKK‹ŒŒ¼ùæ›cbb|DÕªUkçyŽ?®Ö÷éÓç¶Ûn“AÚÊ•+eØ,#=÷g+6mÚT¯^½'žx"33S‚y†¥K—J)åää¨ 4ÐFéef¼cÇŽ/¼ð‚ ТE 9ަ÷Ýw_bb¢µBÆ´cÆŒ‘¡¯Œ{ÿûß:tHVßpà â*LçÎ_}õUU†22dÈâÅ‹%#^JL…y饗¤Tµ‘ª$[2åÇ"µÐ ‹TYlÒŸˆV­Z½þúëëׯÏÍÍ•sçw«½ûî»%:O¥í^D¦Á|IÒÓO?½Z‡h¯¦žZŸ¡µ>øàƒâeS¦LñùÝï~ç£|ZaS+~ó›ßüïyRRR,´B†ý7Ýt“Œ£Ôúºuë6lØÐÇA”þ©^õùÉ“'ÿô§?uéÒE v×]wiÃu}Âüu;ÊÃ?ܦMY8zô¨dP»ªÌŒËÈY†mGŽQÃQ ¬†ôË—/—QŸ/ß[ß%cW)®ùóç˲…ŒfÕIÑýå/™9s¦D- nß¾½ úôiI È­µÂYÁ7AY¤Ê:Áú“.úá‡J²}O¡i!׬YÓ°R_ÚEdæu’D¢oÐ!ÍSi…Eë3´ÖǼ¤¤D} z÷Ýwéà"hÅÓO?½ò<‡¶ÐŠÕ«WËŸ|òÉ:¥Èh_Æ`>¢ä8§Î£îDÚ°aƒÄ"cc½V˜þ”¿ÆÀÿ÷ÿ'CÙ¨¨(µ`3ã2x“ŸŒ$W¬X!+322DÍdlÿí·ß6hÐÀï#^!33³oß¾jfdöìÙjeýúõŸþyYˆŽŽ¾í¶Ûdˆ¾fͽ,ÿþ÷¿µ‰•K¥©²N°þ¤Ë9ªZµjZZZEhÅ<ФI‹Òv/"Ó`þJ’v”Eë³øÝ¶¯¿þúü£_, Ð /†¯¦<ËûôéumvÃãºåË—K,©©©M+Ö®]«blذaË–-Ý Á"ã2ÀëØ±£$ïóÏ??~üøÿüÏÿäååU¯^}Ú´iþ-q®?üðþûï8p Ä®ÁÎ;÷ºë®Û²eK½zõÔþË–-“2°×vçwÄ/­VX¤Ê:Á†¡ò?üðÚk¯I–Eßü[È?ýôÓï~÷»þýû[”¶¾ˆ,‚ù]+,*¡…VH‰…i\Z!Ãæn¸AÝ/äLc—!Ðí·ß®y„Dªÿ¨O˜ŒäŸ}öY¿¤äÉ'Ÿ”ñ¡þ(›0`À#<ò¯ýKÆöòñå—_nݺµÞ¿¿KfåÊ•r6UòNž<©ÁÊÇÿ÷ÿþŸ$ï·¿ý­ ¹eÍ‘#Gd, í.7n¬–_yå•>ø@-/X°@¯~,Rw­°H•u‚MéèË/¿üóŸÿìË÷ðî…ܳgÏ›o¾y÷îÝ¥­/"‹`~× ‹Jh¡o¿ý¶ÔOúC¸¬´BèÞ½û­·Þ:}úôcÇŽ8p@ÿs=Þ ¢ôl êy„† V®\955uñâů½öÚ7ÞhúlEhhèÿüÏÿÈ Ð÷â2dˆ”•þ(›/,,”ÿ÷ÿWÝÍ.–!c{_þõ›§’Y»víu×]$Ë’‰Tû*¡]»v²¦ZµjÚš¦M›Jfggˈ]R%[óòòÔ¦¯¾úê¾ûîÛ°aCTTÔ?þñ½Vø±HMÙ¶H•Å&ÃIß²e‹ØD‡ž{î9¿òÖ­[ÓÒÒZ¶l)ç.88X6mÞ¼ÙSië‹È"˜ßµÂ¢Z«™zLIT÷Oú“I´¢"´âøñã:uúýïÓM7ÉàJýfŽ/ƒ(ÃÿbÎÈÈp–ÞU©R%ùxûí·GGG{º êçŸ~æ™gn¸áý/¬zǶmÛd|¨¿ÊfÆÕÜŠ¸ú˜ŸŸ/É9r¤ïZa(™yóæ‰;Hþð‡?ôêÕK²,ÉÐnƒ‘¦„ÑÿÀ© ;4h #R‘²?ÿùÏaaaÚ&ê?úè£þïÿûªU«ôZáÇ"5Õ ‹TYl2<²-ƒ-‹C‰ƒø¥%Òûï¿ÿí·ßÕ›šiiŠÈâ¤ø]+¦Ù·Ó3{a¦W±2+Z¡5Cià{Ìðâ{æ=(ÔµÀS\vbÜc—¯5¬ãžž=åÇfÆý—ô½²¼×Ê,²,rasG‰B ùR²iò C}‹r0Á~ê#Òe]Už[oýSõê5j×®­ÜA¿IÖÜw_¥—^zéõ×_wßêKÆ}ÁfÆíÔ.q‡   qãÆ™¾+³ð®vé¯ò³g¯QZµfÚ´¥‹’å3~—Ò‡¬¬ÃÓ§/[´è¤»VØl5^k…´&5Z³™¯Š;¡žâ’F¡„B¬©è^΢ë³ÙHýÒ(´lj½iÆýØ(<¡:^û]n¹´B«‡vêª/³¦ÙtCù…we}‹žÙ ›p_0í4jZáI+¤™üTŠá ª5É`@kY-< o˜?éÐŽ&Q¨ki\ZxOßu«ìÈ‚û.žâ²ÓÿX$FŸyóΔ”•òž•µdãÆ½j¥Eú½Ë¸ã’¾W:áŸl£ÌB9…ý½$ 5@2äK&÷´©¡¾vŠÕ(BÛä^¼¨<†•ÚEA-—« }¯ûÌP&wÞù·û*Ý÷Ò‹¿ÎVx]yü8 µ™qëÚ¥œbâĉ2lvS™òK£°èе[O­-Û;­Ð×C;uÕ—› £ÌÂpp†¸ì|­á)1Ѳe{ÔPÿÛoCµqþÈQ³òó·ËP_’¡ß¥ÌÄØK>ú—ô½—õµÌ&*°§C©’!_êi'ÔSÊUý˜_›¼ÐÎr¹ÊÐæ×P¡ò¨ôÜsÏ=ÿÝ5[ѰaCå*ÀÍ¥<öØcÕkÔhX:[¡æ2¼«ö<úÙ Ãmäj¶Âqyª¨ZJÔR©æ¯mU뽎KßÒµV©¡*’~ô(k´‰?6 ý‚{—«ªŠ9)}å)—VØQ`ÓºZ^­ð"ûÊ/”Y¸ÏY”7û=syëÉ0[¡0í4jZáI+äýàÁƒ8XŠ,hC5ï´âà…È¥o×þƒŒ{\꣼ëg+Ä)~øá˜r Í,4­P­[;Ž{\vfK=e\†÷bÙžI“’Ô$‚ o'1öã’5>Æ¥:yíëAÃ7„Úµl’²»ZP=¹ ü‹j« ò¥NvBåÝ=Ù†Àz§Ðê@¹*¶‹{\jt­Å¥w–Ѝ<ò®~åéî_g+(×Pï·Ü|óc>¦ž­øäãÕ\†•ÇPÈJ(Ôoû¨q£öÛ>ö+Ük—ö<…§ÐÌBÿœ…ÍÚå/­°Ùj´¡—aþN-(­°Ö ›ùÒN¨r Ó^NÖ|ìy ÏVî'WíÑ_q¹WTý¡ÔÎ=.µÞë¸4}0ˆ†Bë|Ôzõî÷Fá>ÕbZU ÕÃ0-å^y,îM*S{­Ãør”ìr§– fQÞìÛé™}|¶Â¢Ó`¨ h…'­6âÞ£úQ+ÔÕD] LãÒ–µg+Î9EF©S”¾'%mÎÍýI»æº_ qÙùZÃSÆ7oÞ)/Óysç¯YsPêkX'æbÆ¥ú^­“W×Ö‘#GêµBÖ˜j…lUfa,»ë¿úÓ®&îùÒ*€Ì«lzJ¶v*ÕPÇp›e¨†Ój}\†;¬´+…6´ÐbôcåQñ–>[q«ölEûöí4§(­¸ó¾ûî{éÅ_¯ûz›Öm<5û­F«Kî_A+Ű_yì|3é^»¤žH/1jÔ(›N¡ÞUxƒºZ×.¿k…u«±9[az¡A+¬ó¥Î æúvaz²üÒóè¯0Ú„éeÚÔž´Múi›e¨Ýóã^D†o_Ý¿†Òbôcå~­xøÜ³½.œ­=?[ñqélETT”/­F)’û÷Ïúßö±Yyì!ôµKÍV¨Ùûfa:[a]» Z¡nÒnÙ²¥,¯Y³æôéÓëׯ?vì˜ÚºlÙ2µðÃ?h÷>©œ´Ùj¦ûŒÍ| z§poîçËÇžGkžî'÷W\vžqÐJ}”Òð._ž0D§ïµõGð½Qüb†4}_ªúXYù‹%úÊcó&(/ð]+¬³/MUË»,¨V¯ÿa(ìe¹²oÑ3—÷Þi–­_cÚi0Դ“VH³UíEû7£z­(´ñå æÚOÿ/)õ_1™ÆeˆTœB|xpppݺu“J™3gÎ_|! rœ^½z©322ÂÂÂLk—§V£#Ùyj@²cÀS¾TJLÍB¥V ¬%ÛÇžGoåz§pÿ¯ÓþŠË¢0Ìèoq÷¥QzòæË»F¡¯}|l5ž¦ ?zc§òØùfÒ}Œíûl…ûøÜ´vf+ZžG–ãââFŒñÑGuèСGíÚµûä“O>ÿüó™3g¶nÝúÌ™3&33ó»ï¾3­]¦ù²¯ú¯aUûRklæK;#úg+|ÔŠrU½YTh\¦õPk¡†Äø1.ï´Â—FaÐ ½S*¶I±-¤Õ¦VhO‚_ÊÛvL¢L­°™}O†ïxQ1®Y­0\Gô£2u”ôZ¡MPÞ% u-0ëÈ‘#^üGoÙK;¾{\vúO‰‘Á|~þ*÷{Ÿdœ?gÎB5Ô×§w¤‹Ä\̸T߫‡LËœ­Ð>êoÒS5ü† ò¥Ÿq0äTd«>ÙZ¾´»’´}Ë,CÃl…i%Ñâr× CzüRyô³ê½ôÙŠöú5»óN}˜N;j÷A•·òè‹Ýz¶Âfå±yÃa€íßÙ ‹ÚeçÙŠ³¥œ>}Z–Ï”âÆN«Ñ+VÏëטþB‘ö5¬jk²l)YäKB•YèµÂý|ù¥çÑÚ…~v@­© ¸´ÿL¡¯ºúCiN!´Qœ×ÂÐó´Â~¾¼kúÊ£†ÐšS¸£œB¯¦?e1®Vµá_ì]4­°Óv´„)§ÐÌBŸkO«Ìì[ôÌÒ‚VV©bý’0µVV±~yQ1®q­8rý0Li…—7h…þhòn¸˜ÆåÅ¿­QÍÜ4.;³¥¦‰QË2ž—×…ãüãj¥ö¢Xa*WÆ+".õÝ‘û˜Gýmý·©î¸k…öl…ûWµú’–ý³Z6 —uÙê^j½6$¶Y†úg+”›¸£O˜û³¦qyWy4Shß~bppÞ÷ÃÓ† I5½z\# `Ö!IB÷î©­÷®òhå`ñl…{mñºÕ˜Ö.ÿÎVXÔ.=²m³Õ”K+Ü¿†5ýaXÓ|N¨zZÍ žûÒóè‡Óúi;-¼ãÒc  õÕ£yxø’/m¡ÿ)o¾¼kîZa˜ó5M¶ÐŠ2¿®×›…êí/ÚMPvÚŽ6+¡7 2—iöíôÌJ+Ü+† lÔ‚¦îC…‘£©­Ö­ðÔ õÃ0Ã#Ûž0h…¡Ç¶¸èãRéße|»aƹsçîÞ½[ÞåJ+¯§ ]¯2ã²ÿµÆÈÁÕØ^{ic¶qÓ×.PW(‹Ë}™¯ˆ¸´N^ÿ.ê*# ÊdAÊÖôWA”V¨½4‘Ý\ˆµV¨Q„û)Öžep/5Â×Ó~êÿSƒ5­Ð;…_*²ƒæå}ÿ}Zø”e¡¡‹bcÖœbôè¬!ƒ“&LX4&;2rUøÔ"µÞSbʬ[a³vy§îßZØl5áö°øÖf¾­ÅSC;¯ˆ¸ÊÔŠrQ¦Vò¥?)¦ãÓ̺W¯ËÐþœ…EzWyä°C†$Nt9Å:5O‘¿IœbvÔÊä½wïY³\NQ¤æ)r²÷‰S$'mÒ'Éï•ÇbßòfÜ¢vÙ1 ;NaQ» uÉâf-ž6­]>j…r 5zT jÍ|YŒõX?Ýl¿òØ× ëèÊ[Qõÿ˜Ro†Šjj>6 }1^œFaªÚ³Z¡‰€ïZaášV(§ðñ&¨2µB¢ÐîƒÒË…Á;Ü×{¡Vh5­0½ )”V”·b\³ZqøðaÕ;vìèy|™­P‡R¨£IêZ`—}§Ðf+<Åeg¶Ô41zô‡5])iq~ƈî2Ô×oµ™ñŠˆKßÉ«_Ø6`xF[ÿ”Ÿ)Ú¡†’!_ÚI1dA}W©P·èèÃ*ƒ/ehsÈdQ†ÞU•/íÞ§„ø…s²÷h¿«îƒÒî}ÊÉÞ›‘¾ã‡eGÕ\†\ª*®ò¸ïë]Æ­k—fcÇŽ}0}7u ›µËÎiÕÿÀ¬~0¬ÿ¡f›­ÆpïŠ;~¡°™/Z!žn–ðù2«\³§Ð¢óº¢j]„:¦wÕ~£ðT˜Ý(LµBûh¡ÚGÓÊS.­(ó© }_n‚²¾â¨õê_Thr¡÷ m½Þ8ìdßNϬ´ÂS4­°#[ˬhE™£k/þ—„õhíbÆeçk ¿ŒÖd//m¤Z¡#C;qÙìäÕ&ÃoêÃöõQ+dÁpÛ¿>˜µB(¿Œ®mV#©»nfL[’¿©àü<…r Í;dMHpfNö¾ôóóÊ)*ºòø%ãeÖ.Í,<Ý¥œÂ»ÚåÅ­;†wE¹´Bû·/Ú»¶¦Ì) ï´Â"§Z+3¼—«òxýl…¡M]Zq©…µ‡Z„ñN+¬åþ0…FyµÂ‹>AÅQWü€úΡ\Ù/S+LÛ”A+L¿’B+¼ÐŠ’’’ã(ïuÜÓq$ u-¸hqÙé,S^<¥ÇNÆý—ô½ú>Ùå²  ™”YØA¢P$C¾Ô˜ÁSʵ–±ã~„ò–¡ŠE;”ŠÑfÙúXy4³ÐžÑVN!ëµsgø½Yå¦R•Çnj۩]Ê,¤:™¾+§ð®vy1Ö¾i×›…ÍVãÝl…©VXç«\¨º­åK[c¿òxñKPÖÑÙ¯¨v"µSQ/ÿF¡~Ì}ÅÁ¼iƒVè+Ål…Å¡4,Âø¢6¯8†^Bó Ãl…ia}‹žYi…ÅYÖ´Â"Œa«ÍŠp-kʼn ‘†sÂ6ª¡YÐ_ .N\vfK¯ÊŒ«NþÐ…¨Ÿòö„ö¬À*€~€¤O†ÃH'ïcºÏŒ\´Ê£F°úwC0ÃVy¿‚ZÍÚ%õ›«îï¾Ô®ò~ó Ù„öº gĺՄûŒÍ|•÷„jÃ{­òjQ™•çmT`Õ´M£+oEÕŸO\Y—/* c}“’iå±y”ørTy¯8†¾Bù…z¶B}ôÔ'xÑ3ûë¿l—Y1Ð ­;vLËÉ“'õñäyôËú5†NXÖœ:uʰ‹¶U¢Pׂ‹—¯5®ÊŒKß«ºtíæ*´ÿ.ª_Ö¯1ôäîôa$ 5@rÏ—Óø^†ú™*¿2~ik—×ÕIÓ Oµë’·ïN¨óbVÝåPQ¯ÙFqŽ7ü•}í_½ø’}?ve^’jZa¶ÂïX|ÅTAqÙœ-½ú2núݑ߱øÞ•Êsgüj­]´âº"Åå©—Oö/«ŠpÍjÅU‰ÙÒ«’*ϵ–ñ«µvÑjàŠh—|tqYeÿÒöÌ 5­0Õ ´Ð @+àZÐ ´Ð ¸â´â¯Ð´â»ï¾C² ¼ˆJ´¢À5ƒEÓ pì©ÜµbܸqN€k©êZAC°?¦ò»VÔúlñý¢b h\ËŒ1bðàÁC‡6lØ÷ß?f̘ÐÐЉ¥„……Mš4iòäÉááá‘‘‘¹¹¹6µbåÊ• Í@+­¸*wظqcAAÁ‚ 222rrr JY²dɲeË–/_¾jÕªuëÖíØ±cÅŠ6µB â éééfVZpåºÿþ£G9rDE¢ëׯÿñÇ×®]+ ›6mÚ¶mÛž={d«}­ÈËËØ¡cçÎóæÍ“ˆdZhÀUÆøñãENœ8qìØ±’’’ÃGÿôÓOÛ·oß¼yó–-[ÄÄ)T€riÅ¡C‡v_H||¼DáÉ,ì ÝŸoQðMè&ý‚ûëßm‹êuZŠVZpñµâäÉ“Ç?zô¨hžŸö‰Vl)E´bïÞ½‡.—VäææÊ.{/$11ñÌ™3Ê,Ôc­x­Ý’3g¶—ÈkÍæ#îC÷[8|J¿ }¸rõæ#«æ¯<°ÿЩ£×¡€V\L­8~â„8… Š6lذzõêU«VÉûÚµk7nÜ(fqàÀriENNNII‰a¸•’’2¡”I“&IS­8vâŒÅÐÝB+^hQ°cïqm ã_Ÿ¼Ò¦­´à¢i…Xƒ8…xD~~~AAÁÊ•+E.Ö­[§übÍš5bÀ¾Vdee;vÌðÈö¾}û¶mÛ¶uëÖââb P¦V¼ÑqÉÒµ‡Ôr|î¾Ï¾]e¡†¯=~òLí/ £ýAS6oÙ},½àçÿt_&ë´,\»µ¤ئâŸOÈÊ皻ˆŒˆ’ìÜ{<$z‡fðÔÍ»:‘¸ð§/¬Þ¼ëèŠ ‡_o¿Äý€hZV'N”±Pnnn^^žÄæÍ›E"vïÞ½wï^YÿÓO?mܸQäB>ŠnØÔŠÌÌÌ'N¹Ãç9~ü¸0ÕŠS§ÏŽ™µM^ŸX]¯óRê«Aû¢•Z Zc¡ßMßR°ú ûìÆ†í%òÞg܆©ñ»Ôš3gΆ'ìz©µË>ýz¥˜È®ŸŽ¿×m™XƒY0§Ï¸’!›öür"%ÿg œ²øç>!܈V h€0iÒ$qŠüüüüqÆ êy M+áÙ$LµB”^+òËÒ Q’—Zª©‹þzÂÆ£×­9ØvèòjѵaÇ´R­Z/ÕšIóvÍÞ®cÐ ÷¢hZ ¤¤¤,]ºT¯Û·o7hÅÑ£GÅ,V­ZeS+ÒÓÓÏœ9sÚ²I”©¯´):Trê¹æ‹?ûvÕñ“g¬µ¢öÅ?Ÿ2u‹^+ê´,ÜóˉWÛ¹?ô­iÅ¿Ûmßs\v¾ùâeë5î³ÂB+܈V h€³tfaÅŠejÅñãÇ·mÛfS+RSSÏž={ƲI”©òJ\ø“ŒùÓ ~^òã!k­W³oWmÞyTÔ ½ð—]ûŽwµN=sñË¡“ WXPô‹©VÈÂÐð-²×Òµ‡&ÍÛicÐ ÷¢hZ ,Y²dåÊ•ej…zÛ¦V¤¤¤ˆ;xŠQ6Iw­0}½Ôº°\?ôúFÇ%ïv]føíYÓùÃ?Úû×ç6£0=  ­@+àZfñâÅJ+Ö®]k­%%%6µ"99Ù:R÷ÿÿbó+­ðêU´b×®]hZh€¿´âðáÃåÕŠüüü˜˜˜3fŒ?~ôèÑ#J‘ù(+e“@+­@+,´Â Ð @+Ð ´Ð ´ЊK«hZÁh Ð  hZ€V hZ€V  hZà7Jö;ó®¶×á}œX´­¸xÈ üsÇÕö’LZ€V\d­Vû*™§Œ hZpI´âª‡_eÙ@+Ð Æád­@+Ð ²€V €V h hãp´­@+‡“´­@+ÈZVZV €V ŒÃÑ ´­`NvÐ ´àÚÖŠý%ÇÂr—^†¯}‡KÐ ´­¸"´BðŽæ—áK†V hÀ¤µ‡Nº|æ)$1hZ€V\qZaÃ_RÌ“„V hZV hZV hZV hZ€VT˜V$l£ÆZÁh Ð ´­ð‰JÓœ–Ri­`4h ­ðI+ÁÎoЍ7€V 4´Â'­×ø5T@+Ð @+|Ò y YFí´­´ÂS×9kÏ=÷úÃø_µB^‹Kr†ýxm½ö£Ù Œ¦­ ! åClB¯ú—XFël[¯Ö—˜ & 4´Â;­pŸ­˜µñÚš­PEV Œ¦­ ! Þi…¼;uÏVˆ_ˆS\kˆP h£)@+Ð ´Â/Z!Nqmþ_<´­@+­@+Ð iEôæk´² hZhZ€Vø®θ¦ÕhZVZV ¾kEÁÞkº² hZhZ€Vø®×8hZVZV hZV hZV €V h…_8uæÌ]ݾ“ôh/ùxjü®Œh¯6p–ìG+Ð @+Ð ´Â=f§êµB>:W&\ ãù+.´­@+Ð @+Ð €«R+ÖìÞ§× ùè}Zmüøñò±{÷îžöòDÛ¶me—ßüæ7îz €V pyjÅ™3gþüç?«a̦M›ôƒ"µRD@>víÚU–ÿûßkMhXh…Å^ž8tèÐõ×_ÿÇ?þQs´Ð ´‚"¸ÌµB˜0a‚ÆDGGk+eü£V6kÖL>Š&¨Úÿª;yò¤’ ­°ØKCFV™™™ò®>ŠMˆæ|ðÁ×xeA+Ð ´Ð ´àÊÒ ÉË0^=µ-Ã~µrãÆz­Ø¿ÿwÜ!Ÿ|òÉ+V,]ºô£>’1’lzä‘Gd}ýúõ¥Ïh«½ÆŽk½—†_üãÿX·n|Ÿ÷Þ{íü-ZhZ€V\>Z¡xñŃ‚‚f̘ñúë¯ÿîw¿{çwrrrT€üüü*Uªh¿F»dÉYrýõ×ËšÛn»MBöêÕKxâ‰'¶nÝêi/=¹¹¹êŸkÿñ|ã7ZµjeúŸ/Ð @+Њ2‘kJ앉¤œjW‡V(Š‹‹SSS3226oÞìþ@Ä™3gd˜$¤r³Ì½$ÀŠ+Ö¬Ycÿ ´Ð ´ÂŸ½2‘”S àjÒ @+­¸Òµ"44ô š§Ô¢€VZhÀå¦WÖýJL3 €VZ€V €VZhZVZVZV A+¦L™òî»ï¾|ž-ZH“¼„yLHHxþùçïºë®7ß|sùòåh €VZpùk…0}útÕ þú׿;v¬Â¯óyy½zõ2ÝéÐqë­·JŸ€VZh —¿VhÿÚõÕW_­è,Hë¾ë®»Úµkç¾Išy:u¢££/^üæ›oª$ 6 ­´Ð @+®­Æhñ?X÷ìÙ³{÷n;ñÊAž|òI‰ÈT+ŠŠŠ6mÚ¤–%;¿ýío%d=Ð @+­´àJÔ 9Ô 7ÜpÝu×µnݺiÓ¦¿+å½÷ÞSÿuúôé7Ýt“l}ë­·Þyç;î¸Cö}óÍ78 ‡½þúëeSçÎ÷ïßÿþûï_WJtt´ìØ»wïo¼QßyçÏ=÷œ4‹DVªTIBΟ?_ŸæáLJؤW³°Ú×»%Í­w ìêfß¾}hZV\d­{ì1Ys÷ÝwçççÇÄĨÉÉÉjk:uäãm·Ý¶nݺ“'O>ðÀò±cÇŽ²éÞ{ï•åN:9KoyR;*­}ôQO³zöìÙ#ÁjÖ¬)Í_ŸæF9üK•'D+\ïpU#fV hÀÅ׊jÕªÉÆË²´A`âĉj«„”¯¿þºúøÁÈÇÛo¿]–|ðAM+¤{§:t¸ãŽ;¤70¤ù*ž­¨]»¶”Œ¼ó"³P,ZV —\+NŸ>­Œ?ÞT+ºuë¦H›õ]+ŠŠŠî¾ûî+VX¤ùêC®we^õ |ðlØî`Ñ ´­´ârЊ€€ùø›ßüæäÉ“>j…4ÿçž{nݺuêcNNÎúõëÑ @+­´àª×ŠæÍ›ËÇ¿ÿýï²\¹re¯µBÚ»8ÅÈ‘#%m²Ë„ î»ï¾C‡¡€VZhÀe®™™™ªA=ñÄZ˜GyDÖÔ¯__–;¦È^z­¨T©’4Ò“'OÊà_>†††Ê&u «½¢¢¢ >R³fMùøâ‹/._¾|Ò¤IúT‰¼Ô«WÏð„Ý?ÿùOÓ4£€VZhÀå£S§NU¡øøãW­Zrýõ׫ßzÊÉÉéÕ«—æ[·nÕ´¢jÕª/¿üò=÷ÜsÝu×uéÒåìÙ³²)!!á/ù‹z‚»_¿~²pÿý÷¿ñÆê¾&‰WÖÜpà 7VíZ£k×®î?ÜÑ´iS´Ð @+­¸ÌµÂ;ô7AIû•Øõ[OŸ>-MûÔ©S² ÿ5'ÅîÝ»÷ìÙSÞÑ @+­´à2ÔŠÐÐÐXo©Zµªš­ˆ½XHjÑ @+­´àrÓ ¯3fÌwÞ) ð–[n9r䨋Zh €V\&Z‘››ëËÄA§NÞ8OÆ çÌ™sÑæ,òòòÐ @+­´àrÐ @+Ð ´‚­@+Ð @+Ð ´Ð @+­@+­@+­´­´­´Ð ´Ð ´­ ƒE+Ð ´Ð ´­´Ð @+Ð @+Ð @+­@+­@+­´­´­@+è`Ñ ´­´­@+­´­@+Ð @+Ð @+­@+­@+­´­´­ ÀÐ ´­`4h ­´Ð ´­@+¸ê¡h €V €V €VZ€VZ€VZhZA¡€VZV hW=Š­´Ð ´Ð ´Ð @+Ð @+Ð @+­@+­´Ð ´­@+¸êZh h h €V €V €VZ€VZ€V €V hZÁUÐ @+­@+­@+­´­´­´Ð ´Ð ´­ ƒE+Ð ´­àªh €V €V €VZ€VZ€VZhZhZVÐÁ¢hZ€VpÕ´Ð @+Ð @+Ð @+­@+­@+­´­´­@+è`Ñ ´­@+Ð @+­´­´­´Ð ´Ð ´Ð @+Ð @+Ð ´‚­@+Ð @+Ð ´Ð @+­@+­@+­´­´­´Ð ´Ð ´­ ƒE+Ð ´Ð ´­´Ð @+Ð @+Ð @+­@+­@+­´­´­@+è`Ñ ´­´­@+­´Ð ´Ð ´Ð @+Ð @+Ð @+­@+­@+Ð ´­@+MZV €VZV h h €V €V €VZ€VZ€VZh… h ­´Ð ´­@+¸ê¡h €V €V €VZ€VZ€VZhZh €V hZÁUÐ @+­@+­@+­´­´­´Ð ´Ð @+­@+Ð ´‚« €VZ€VZ€VZhZhZh h hZhZV \õ­´Ð ´Ð ´Ð @+Ð @+Ð @+­@+­¸FIýÞ¥Ãj»ÌÂó+lò(—VLeŒ×eý:¼­@+Ð ´Ð € !²ƒK+Êz…µxÂ¥-ž°˜×eú²œ“B+Ð ´­@+À{ÔMPÌV\Ý/9¿h h ­<[qÍŸe´­@+Ð ´Ð @+­@+­@+­´­´­´Ð ´Ð œhZV hZVZh h h €V €V €VZ€VZÀ€­@+Ð ´­@+Ð @+­´­´­´Ð ´Ð ´Ð @+Ð @+p¢hZV €V h €VZ€VZ€VZhZhZh h  8Ñ ´­@+Ð @+Ð ´Ð @+­@+­@+­´­´­´Ð ´Ð œhZV h hZhg­´­´­´Ð ´Ð ´Ð @+Ð @+Ð ´­@+Ð ´Ð ´­´‚³ŒV hZhZh h h €V €V ZV Œ¦­ ! €Vp–Ñ ´­@+Ð ´­´Ð ´Ð ´Ð @+Ð @+Ð @+­@+("´Ð Î2ZV hZAQ €V€Z±é<"ÅÅÅ@+Ð ´Ð @+À¦V¬Y³fÅŠEEEYYYééé™™™²,~±wïÞ#GŽ hZh `­Ë—/_¸paè´¸×:„ÿåÝi¿«?ç/m㛞?qÚÜÜÜÜ;v=z­@+Ð @+­OZñÃ?,X°àƒSOw¼5ÛÑ4ÕÑ­ÀñõÒ?ô)¨¸ð« ø¤¤¤;w:t­@+Ð @+­w/^œ——×¼ÇÇsãj÷Ïq´Ërt/r Zùpð†7·4ÚöѸUýÇ'dee£hZh `Ròò¦Ïš_§yDû‰…m#Ö6š¼ÎÑwÅÍ#Ö¾£t¶báf+Ð ´Ð @+ÀB+ª¿:hΚïSvpÍVßþÝÆGÆn{uÊÞcŽ´d¶­@+­´lhEwBÌ^34iW¿ÄâžqŲñ£¶½2ioÃÙGš%m›y´í‚#oG+Ð ´Ð @+ÀJ+ú»´b§K+æÿyðÆÊ#·½4iÏQ‡›'–jEæ‘7F hZh `¥ç¬vî&¨=· ÝôÏÑÛ^›¼çÃÙ‡¿H9Ú!çh§ì#oD+Ð ´Ð @+À£V<ýnèàÒG¶¥÷ž_|÷°MU]?0»÷“˜ÃmÓöX(¯#õG£hZh `¥ßŬ•¾shZq`Bq¥á›ž ÙöÞŒ½-âw^p´w¾ë?â5 B+Ð ´Ð @+À£VÔ|/tøÜÕc3v~Ÿ^üuRqå‘›ž™°­Á̽mâ™sô›¢’~…%Ç¡hZh `¥#ãVgî± øÛ”â‡Çlz!lÛ£övL:Ü'ïè e%C–ùtZ€V €VZµâ™ú¡c毟½stVñ€ÔâÇ‚6½8e[“9{»¥î·¸dø yi1qZ€V €VZZ”°zbîα9ŃҋŸ·éÕðmŸÅî H?<¸¨dÌê’ UGZMB+Ð ´Ð @+À£VÔz?t\ÂêIy;ƒs‹gW›°ñé[[ÎÛøÿÛ»ðªÊÑû‘©´~íçhOµ:­ÓN§ÇQ‡9Ãçåpp,”ªuЪUK±Z¦bÇ»¶¨(Þ¹‚$€ˆ¨xáF . á‰$@¸d'p$Ù $ ß›¬š“r‰‘‚$ðû=ëɳöÞkíì°óîõþÙ—Ì+¸"ž´6>Ⓤ?¼)+@VÈ @V +8lVü]F Y±pKbZ¬ÏœØ¿ Ïÿé[…wM)y2µ¼ï²xbN|XvE7dÈ YÈ deÅгG¤Õ¾·âÅÙ±‹‡åwSØmbÉc³Ë_ȈÊ KÅï^— +d +6+ÚÞ0rð´ì׿o47öü¬¢Ÿ Éÿߣ o_òàÌòÞ‹ã}3ãýWVtóIP +d +4š¯LÉNœ»e`jíß­øÇÁù—,üå{%ÿ\þøÂÊç—ÅÃrÇpY²BV²YÁa³âß~1rÀäìWçlé7'öÔG±ï ÊÿפÂ.ï”tŸ^þðüʧ2âO-‰ß2LV€¬€¬@VÐXV¼8!§ÿ¬-Ïψ=>­øì~ù?yµðš1%¿šï>+~ÿüÊæW\;HV€¬€¬@Vpجh{ÃȾs¦lî3+öäôØùýó4´°óØ’_O­¸wNåc‹+]ïòª¬Y!+Y¬à°YqùŽê?1{ÐìÍýf=•ûûùÿ2lãuo—Ü=­â¡ÔÊÇÓãO,®¸9QV€¬€¬@Vpج¸ò¦Q/O\3xö¦þ³‹ž™ûþ+yÿöÚ†Çÿ×ôòGçÕ¾±âéE·[ýþûïË ²È 6{öì¿}ä c—½’²±ÿì-½“·žÑ?ç_†¬ïòNÑï§ï|,µ¢÷âx¯¹»î¶lòäɲd…¬d²‚ƒÍ›7¯Û£cþÐ'¥òº?*üÓôÍ /­ùá༟Ýô›ÉÛL©èµ þÈ”­=‡Í™;w®¬Y!+Y¬à¿‹½ýþô¶wŒýíðô‡ÆçÝ4zmÂSY ý?¹,© Ë;[ïšRrßôí·]=ê­‰kÖ¬‘ +d +lÉ’%¡,îzì„Ë_kÿ삄ߥ&<œ‘Ð{uÂ+k/¶®ãù^^ùTâ‡óçÏÅb²d…¬d²‚ƒedddffÎ;÷׎I¸dX¿K¸)9á÷ ^’pß‚3š÷Ø«Óf̘±eË–²²2Y²BV²YÁ!³bõêÕ«V­Z¼xñè·¦þôž1ßê4úÔŸ¾û­;'ÝüÜäoM^¸páæÍ›+++ãñ¸¬€ú¬(**š?~ïÞ½Ã×°.+d +Ü˲BVdggçäädee-[¶,Ì‘æÌ™3oÞ¼°žŸŸ_RRRQQ±gÏY ³"Œ”GydذacÆŒYºt©¬€¬p/Ë Y²bíÚµëÖ­Ëÿ̦M›b±ØÎ;ËËË+++eÏ?ÿüø –-_ÆÎªU™²BV²Â½,+dE}Vlذ!ÅÖ­[KJJÂi×®]²™K—.]¶lyEEE Ñx1d +Ü˲BVÈ øBYQTTÆKYYY,ÅÅŲBV²Â½,+d…¬€/š> JV²Y¬Y¬Y¬@V€¬@V€¬@V +@V +À„SVÈ Y!+d²BVÈ @V¸—e²d²d²Y²Y²Y¬Y¬Y!+d…¬²Y!+d +Ü˲BVÈ È È dÈ dÈ d²d²d…0Y!+d…Ù²Â@€¬p/Ë Y!+@VÈ Y²Y¬Y¬Y¬@V€¬@V€¬@V +@Vø'’€¬p/Ë Y!+@VÈ ÿ +È È È dÈ dÈ d²d²îeY!+dÈ YÈ d²d²d²Y²Y²Y¬Y¬NYá^–²BV€¬8 ³¢]»v¯Ãë¯oÛ¶Í È dÈ Ž,+ ây+Y¬@V€¬à”––ú/z‚víÚÉ Y¬@V€¬þÞe#+È €¬È dÈ @VÈ d²d +îeY!+dÈ ²BV + +Y!+È €¬È dÈ @V +Ü˲BVÈ  +È dÈ @VÈ d²d +d²Y²&œ²Â½,+d…¬Y²Y¬@V€¬d…¬@V +@V²BV + +YaÂ)+dES²¢Ý”Ú•–¸l«’²d +dÍ"+ZîâyY²²‚㞥{Zêóí¦È Y²²‚f‘-øAûBdÈ @VÈ d…¬ +Y!+²BV€¬d…¬²BVÈ Y¬ +îeY!+dÈ @VÈ d…¬ +8é-\¸pr‹n¼¬²BVÈ Y!+²‚ã.L·¶XáÆË Y!+d…¬²Y!+h&Y1räÈ–õz”¾æškŽé·Ç‹óÎ;ïøÃ!/MOOß±cÇ·¿ýmYaÂ)+d…¬²d'XV„‡÷0Û?ܵ5åû†+¹ôÒKÃw9\VD.»ì2YaÂ)+d…¬²d-=+Â/gëÖ­O9å”{î¹§[·n§Ö¹á†jjjö×½bêôÓO—^{íµ×_ý9çœvìܹóÎ;Ã¥áš[µj.}ðÁKKKo¼ñÆSêLœ8ñÉ'Ÿ<í´ÓÂÆçž{îW\(G<^Ÿß"+d²BVÈ Ðô¬.ºè¢pòüóÏOOOŸ4iRtéÌ™3£KÛ·oNžuÖY¹¹¹ÕÕÕßûÞ÷ÂÉûï¿?ºô;ßùN8ùÀì¯{ÕS´oÈŠpòŸþéŸþÊg+n¾ùæãõù-²BV +d…¬Y_(+Ú´iN†9|XêÑ¥£FŠ. ›…“;vŒNÞrË-áä7¿ùÍèä÷¿ÿýú¬‡†£›_Ú³~‹¬È Y!+@VÀgÅÞ½{£K“’’™<òH´A8 ë¬øÒÞ[ÑÄ^²Y!+dÈ dÅQÉŠÇ<œü›¿ù›êêjY¬@VÈ Y²YqYq×]w…“?úÑ¢“ÿðÿ +È Y!+@Vp²eżyó¢Gé‹/¾8:ç / '»téÖ«ªª¢KÃ^ ³â»ßýnxد®®¾à‚ ÂÉ‘#GF—FïJÛ„?øàƒ†IÒ¶mÛ°~ÕUW­ZµjôèÑß¶0gœqFØæÌ3ÏüôÓOe… §¬81ïåþíjWNÔ¥|›¬ +8 ³âÍ7ߌ""rÇw<ýôÓ­ZµŠ>ë)--­gÏžõѱqãÆú¬¸ä’K:tèðw÷w§œrÊC=T_ÉÉÉßúÖ·¢7q?÷Üsaåïÿþïö³Ÿåææ†ïN¶nÝúöÛoŽLÑ£wGî¼óΩS§Ê Y!+NÀ{ùÄ^üË Y²‚“'+Ž@ÃA…#Bø}>`ƒ½{÷†ãEMMMX ‡‰†—›-+dÇ_¼ôD~ž¢;Y!+@V +¾hVòOr7ç›-+d|ɿòBV€¬à„ÏŠ‘#GN>"“&MŠþàÝgœ1~üøÉ_–pƒe…¬È Y!+²‚f•G¬k×®í>Ó©S§ÁƒýÉ Y!+²BV +dÍÁÂ… '·X‹-:²¢ù¼¼¼ÁGÖÈ ²dÐ’²¢ù|N³úó²YñUU×È ¿wÈ Nö¬8¾ÝÐGÖÈ hqY‘úIA¯)©²d…"8©³âøNé›á;–ÈŠ/ža8<>iެYÈ Y!+MV´Ä² +@VÈ YÍ-+Z\YÈ  +d…¬€f˜aiAï³ +@VÈ YÇ1+Þ\œÙ®ßèh¹¸÷°†Y–ß½95ŒŽã¾l+Ë €¬Ðl³"ÔÄ)Ñpù_}_oäÒ/mùÜ*+@V€¬²šCVülE÷±Ó–nØr|Ÿ§ˆnž¬YÈ YÍ?+Â×ýùÞŠÇÆ§ÔìÛwü<›6BeÈ ²BV@sËŠæó1P²d +d´Ä¬è>vZsxžBV€¬d…¬€šÍäµO²d +d´Ð¬¨ª®ivž²d +d´¨¬hŽž²d +dÈ Y²²Ž‹’¼Ú_Ý1wÖþ‡¯a=ñ5ûö¿™»ÿιµY¾†²KÍW„¬È Y²BVÈ Nجø¯¯Ôþ×/ïüÑnJmSÔ/m'É·’²Y!+@VÈ YÁ «»ÿÛ~sÿîòƒ"¢W@Õ/‰kd…¬Y²BVÈ 8è8ZÞê~ȇˆòêýÿÏÈ?7Å×’ö—dÈ Y!+ êªýŸý笨{cÅ!"î[øç¬¸9å¿¬È Y²BVÈ NdïÝWû;üô…û÷Õ”––ôíÛ7ú0؆Y±wïÞè “’’Ùå`Ë–-;ÿüó³²²Zú• +àdŽû ?Èñúë¯?ìTVÈ Nûöí;óÌ3£„ú·NGsãèÌÑ9?üp8ùÕ¯~õàÿ‹8\V4²Ë”ûŠ+®LKKËËË“~?‘4[ÉÉÉ ³bâĉ²BVp’1bÄÁayçwFç„LˆÎY´hQtNuuuÔ ‡ËŠFvi(̱CS 4hòäÉá6„ÛsÁ4|«¸¬Y47á€~ÞyçEG®³Ï>»ªªJVÈ NrŸ~úé-·Ü½k;Lû£3ׯ_@V”––žsÎ9áœK/½4++kÅŠ·Ýv[ô>ˆ /¼0œß¥K—ýuïìŽv:th#»Ô òóŸÿ<á/ýä'?i¹#TV€¬€“Äã?¹ºwï~È ÂL    oß¾a›ð5¬‡s>ÿzã¥û·ìŸÙ·6Â×°–x©¬´cÇŽ pÕUW%&&¾óÎ;;v<õÔS¯¿þú´´´úmÒÓÓðƒÔ íòåËÙÇoÕªU8笳Π÷ìÙ3Úàâ‹/Þ¸qã!wi(z¡Ôºuë&+̦4s999Ñ‘+¬rƒ^½zpˆç|þõNíU› ,S{É YA ‹ÅRRRRSS ù†ˆ}ûö… s˜*7ý:`—=BeÈ 8y´­s¸K£g+úÏV°x¶BVÀI6BeÈ 8aÕìÙ_UÖpI4 ,œùe,}¯¬ÍŠð5¬×ìqÏÈ ²Y!+ Å8èåI¥¿©]ñš¥/s™ú”{FV€¬È Y-7+šÅ"+dÈ Y¬ +d…¬#TV€¬€“GÍžý»Ë›Ýâ½²d…¬@VÈ YF¨¬Y +Y²@V²d²d…¬@VÈ YF¨¬Y +Y²hš;vôìÙóºë®»ýöÛ{ôèѽ{÷÷Þ{oĈ#GŽürn@QQQ¯^½:wîì¾ +dÈ h‰RRR¾]'à¢sòòò~üã‡ãWbbâ±þîá {Ûm·µnÝ:|»K.¹ÄÝ!+@VÈ ÐâäççŸvÚiáP5nܸ†çÇb±3Î8ãKÈŠôôô;v„¨‘²d…¬Y-Ô5×\ŽS_ûÚ×±쀋† r@V…Q|¸« ÄŸßø^‘Ë.»LVÈ ²d´D¥¥¥Ñqê‡?üáÁ—îÛ·¯¬¬,ZÏÉÉiÓ¦ÍÕW_Ý¥K—ð5û¢ÁÞºuëSN9åž{îéÖ­Û©un¸á†šššFö’²d…¬Y'’ DÇ©+¯¼²‘ͪªª.¸à‚a¥ºº:¤D§N¢‹.ºè¢°ûù矟žž>iÒ¤èÚfÎœÙø^²BV€¬ +à„Q—_~y#›½ñÆa›óÎ;/:yî¹ç¶jÕ*z]S›6mÂE7ß|sXÇÁèÚFÕø^²BV€¬ +à„‘››§¾ño|úé§Ñ™ƒnÛ¶më:§Ÿ~z×®]xà°Í׿þõ_ÕéСCûöíW­Zu@VìÝ»7º¶¤¤¤pòÑG=Ü^²BV€¬ +à„±oß¾3Ï<3:Tåçç7<ðEg†'~øá°þÕ¯~µþMõÉŠFö’²d…¬Y'’#FD‡ª‰'ÖŸŽqÑ™wÞyg82!:¹hÑ¢hƒêêê(ÉŠFö’²d…¬Y'’O?ýô–[n‰Þµ¦ýÑ™ëׯo˜¥¥¥çœsN8y饗fee­X±â¶Ûn ÇÁpÑ…^ÎïÒ¥Ëþº÷hG{ :´ñ½zäŒ3Î[žyæ™õ¯ÅBV€¬È Y-ËØ±cC\uÕU‰‰‰ï¼óNÇŽO=õÔ믿>---Ú ==ý?øAý§Ñ._¾<œ9|øðV­Z…sÎ:묰eÏž=£ .¾øâ7n¯ů¿uM}ÈL:Õ="+@VÈ ÐBÅb±”””ÔÔÔ‚‚‚ƒ_­´oß¾p( Á/tG¶²d…¬Y +À• +d +@VÈ @V€¬@V€¬È Y +À• +d +@VÈ @V€¬@V€¬È Y +À• +d +@VÈ @V€¬@V€¬È Y +À• +d +@VÈ @V€¬0i‘ +̦²@V€¬ +d +@VÈ @V€¬0id…sd… +@VÈ ² +d +@V˜´²d²d…¬Y +Y²@V²d€I +@V +@VÈ ² +d +@V˜´²d²d…¬Y +À• +d +@V˜´²d²d…¬Y +À• +d +@VÈ @V€¬@V€¬ +d¡²d€¬dÈ YÈ È ²Y!+d¡²d€¬dÈ YÈ È ²Y!+d¡²d€¬dÈ YÈ È ²Y!+d¡²d€¬dÈ YÈ &-²NÔ¬(..– +d¡G1+vïÞ-+@VÈ 0BiÉ’%MÌŠŠŠ Y²@V€z°åË—7’;wî” +d¡o–ššš••ÕxVÄãñ………²d€¬#ô`ÉÉÉ+V¬øÜ¬¨¨¨ÈÉÉ‘ +d¡{óÍ7ÓÒÒÖ¬YÓxVäççgeeÉ ²ŒÐƒ5jÖ¬Yééé999‡Ìв²²p2D‡¬Y +À=¤¤¤¤P©©© .ÌÎÎÎÏϯϊíÛ·oÛ¶mýúõ!(b±ØªU«dÈ YFè!çH;vìØ¹sç’%KÒÒÒ>þøãyyy¹¹¹YuÖ¬Y³aƲ²²ÌÌLY²@V€z°aÆ…¦¨ªª _×®]»råÊåuÂÊêÕ«Ã9¡)¶oß^YY)+@VÈ 0B)11q×®]{öì áPVV¶eË–ÜÜÜœœœyyy¡)ŠŠŠÂ»wïö"(²ŒÐF²¢ºººªª*‡²±®NhŠÍ›7oÛ¶-ú»²d€¬#´‘¬¨©© áPYY "LBPäççoܸ1$F8ŠcÏž=²dÀ±›´´ë7:¬X,–æ¶„±ù…²"„Cô„ÅÎ;³²² 6mÚT\\\ZZŠCV€¬8¦Ya±XšóÒ”¬±wïÞº¬Ø²bóæÍ7ÝtSFFFX Y.ÝSGV€¬8JãUþCØbiæË¶òxÓ³"zT¿~ý®¾úêûï¿?ÊŠè ݲd@³béÒ¥;v YÑ¡C‡I“&•””È MÏŠ²²²»ï¾»>+n¼ñÆ 6È MÏŠ·Þz«S§NõY¾0@V€¬hzVÄãñŠŠŠÐ›6m*((ðÞ _4+¢·l———‡ Ø°aÖ-[¶mÛ&+@VÈ ²d€¬Y +dÈ €Ã5jÔ Aƒ† úbذa£G7nÜ»ï¾ûÞ{ï}ðÁ&L˜ùdïÞ½Ÿ}öÙçŸ>4ÂСC‡ 6|øð¤¤¤Q£F=úwÞ™={¶¬€¦dEJýúõ{饗^|ñÅ^x!| ë}úô ƒeðàÁãÆ›8qbrròä:S€–oÒ¤IãÇÇʱcǾÑr„[ns¸åáö»áM-Âc„ a²1f̘0“Sú0?I¬3´iV®\ٔ͢dW>räÈÙœJV +ÉŠ^½zedd„“¥Ÿ ë[·n Ã<»§M›Vf̘1kÖ¬”””ìs€–,Œåpø8dô­÷½Öù·¯_ÓuÌOóÖüæ­kº¾õó»Þ˵w×~ýYX~ûv§;ßîxçÛ?íöç Â6îØ­öÌN¿­ÝàXïÖÙád§;ßúÏc»>8"ÜòpûÃOᮄ-Ì(¼"Œå0Ç30߈þsÛ¶ma*²s×Î]M–••u¸‹vîÜYÿ5Z “œ!/¾ø¢¬€£žÏ<óLjjjyyyUUÕîÝ»ãñøŽ;Â`Ÿ:uêG}VÂ¥óçÏOKK[XgÐb…±<~üø›îÒþîq ™ßçýÌ—§­í?=¯Ï´¼§ä ™•7lvÞksòg×®š‘70y]ÿ×õ¶.\úÂä¼ç&¯{i꺾Ó×½œ¼nàGëÏ8滼45¯ï´¼þÓs_žúÉKïeö–öóûjoø)ÂÏâ…–+šT„ÙEËa¦æaÖ1eÊ”Paþ&${öì©®® ö~žo®¤:ØS®3LxBÔôéÓGVÀQÏŠgŸ}6 áeeea¬…_±bŤI“fÍš5wîÜ0ä?þøãŒŒŒeË–…óW-VÅa\ßðûÄÜòÖ3“²¥l2gÓ«s¶¼2gë€Ù[ûÏ,JJ+µ°hô¢¢‘ ·&-Ø:lÞÖ!©[Õ]ÚoVQŸ™E}fõŸU4`vÑà9ECçn6ë±Þ¥neëà9[‡¦n2§pàŒõ¿Ÿõ½[ß¾öÞa3gÎ ?‘»Z®0¯£8Ì1ÂL#Ì7æÍ›ÆõĉÓÓÓCYDÿÛ¹§ V¯^ý¹Û„«Šþæ]qqqrrr¿~ýd‹÷V„¬(**Šž ܲeKô2‰ „qÆ{ffæš5krrrÖ®]››››´Lá þêˆw.Öé•%/~T80uëÀÔ¢sbýfÇ^š{î£Ø+s‹__<$-6x~Xõ¯»èÅY±çgÄžMŽõþ0öLrñs3Š_˜{)%ÖoN,ì{¬wynF¬Ï¬Ú†%uë˳·ôþpÃuC2þgÒà¤qá'r·B fa^faŽfa¾fiiiÑ‹®ÃEåå•••Uuv×%F°sçΤ¤¤è_× Y±û/•——'&&†©Ní‰Ú½«Â.¡)ÊÊÊ·þè£ú÷ï/+à¨gE©©©ëÖ­û?;v„3Ã?þüŒŒŒpÈÎÎÎ0??Æ ›6mÚ ´L………K—.mÿÛ¤„ÿxÿÍzâÃÍÏÏ,z!¥èù™±Þ3bOLýijìÙYEÏÏ.zaNѳ)E½gÆz͈õJ®½èñiÅšRüÇ)ÅMŽýqJ¬ç´Ø“Æžú(ìXt¬w gö ¡ñQìùY±f=;cëcS ¯JÌJ¸vBûß ?Qø¹Ü¹ÐB…yÅÆÃ#Ì4Â|#ÄE˜{,X°`úôé+V¬Øºuk¨ƒxÊ:!:ºvíÚ©S§ús"Ÿ|òIå_ÚµkWØì¶Ûn 3œøgBSÄb±U«VÍž={ðàÁ²ŽzV 2dáÂ…¡&b±¢0„Cò§¤¤,Y²$Œî0NÃ`£¾¨¨¨¸¸xÛ¶mÛ·oÿ?@ Fq8"ó§#nŸ™Ð+3¡ÏšòIûám†æÿdPþ·äÿ>ùÿräHYG=+Â×¥K—ææænܸ1ŒÄ0Š,X⢰°°¸¸8jŠ(%jjšô9o@3ŽÝáÀzÃÓùøš±…wOÛöÀŒ²gÅÿ0£âwÓ*ºM®¸åƒòGf–õœ½ë‰Ô²?Î.{hVÙ}Ée¿Ÿ^vç”]·OØuóû»n|¯,,·Ž/ûõ¤²»§–Ý3½vƒc½Ë­Ê»N.ÿ¯+þ{FÅ#)ñÚí?Üöë÷7Ó{ÙÏOÎÌÌ ?—;Z¢hRQ]]}¸}˜o”””„¹Gôß›YYYyyyaZ&'õïÅHNN¾õÖ[›þlE×®]SSS£7q„kŽ$\FFƨQ£dõ¬HJJZ±bE4$ÃÐ +¡2Ö¬YÖ·oß^VVVUUF}xØ÷™O–& á0ƇŒx÷̇æÝúîæGg—?½ ÞkQåŸÒ*œWù‡”Ê»’ãÏ,Š¿”ï—áãøÓ ã/ˆ?œ¿?%Þcf<\ú›éñnÓâ¿KŽß;3þàœÊ?έ|"­òXïò»•÷ÎŽ?4¯òñ…•O/Š÷^ï5¯âž©Emž^ïùq<ºô÷©•÷Ì©¼^å£ +Ÿø8þLFüÅåñc½Ëýó+[\ÙkIü¹eñ¾+â//‹?³ üŽákyeò‚ ÂOän…–+ê‹0Ç3ŠŠŠ0ësŒŒŒ¬¬¬‚‚‚aZ²cÇŽú¿‘}8ùùù\º³N¸ò0ω^gµjժѣGË 8êYñÆodgg‡#:Gº"ú[±X¬¬¬¬²²rÏž= Ÿ­Z¢êêêp˜ž4iÒÃ&Þ:,û‘‹ž^°+dÅñÇÇïK‹Z]‘øIERnÅœŠ«+ú¬¬xvYü‰%ñGÇH‹÷˜_»<°(þÇôøSKãÏ-¯è»ªâXïòàÂø×®<v_´ó‰±»G­}|ÐÄðSlݺ5üDîVhÑÂì¢þÙŠ0ës•+Wnذ!Eôé²á¢Ï}›F(…Ï}Gô&ŽÒÒÒ0ÉÉÉÉyóÍ7eõ¬7n\¿aðÖ¾0ŠCчAr>ŒñQY„_ó/ …–([ ?üðÃCÇÜ÷ʇ¿y5ý–¡Y7%fÿâÕì΃²ïz}Í=o¬¹÷Í5ÝG¯ùí¨5¿NʾíµìúK:°v¹vpv—!Ù¿–}ûðìߌ8æ»D+7'fß–˜u×Ð% ·|t¸ýá§?‹;Zî»*¢7V„ÙEôg&Š‹‹CPdee…i8¦"Mÿ”˜‚‚‚¦ÿ•í;wnܸñÝwß•pÔ³bΜ9™™™¡ ÂX^Õ@V°’››Ûð/VìZ²0œóóó/^+üµtàÈÔgÅÝG¤>+|pBJÈ @V²€¬€¬d +Yာd +d +YÈ YÈ @V²@V²€¬€¬d +d +YÈ YÈ @V²@V²€¬€¬d +Y!+YÈ @V²BV}Vú¬YÀ‘I8Þþ™Hu¨ endstream endobj 590 0 obj << /Type /XObject /Subtype /Image /Width 1053 /Height 678 /BitsPerComponent 8 /ColorSpace /DeviceGray /Length 1910 /Filter /FlateDecode >> stream xÚíÔëJÆá ( £ˆH¢sÅ2››SÆð„x`(N7çNNDDDΈ²Ý9#Qîɰ€høé¨€hôÙ¸€hüÅ„€hâÕ¤€hòõ´€húÍŒ€h¦'o Ê¿5;›3ͽŸ7Í' F¢BbÑ@´ø¡h *~,ˆJ}e#QùÓ²€h9Y1Uú«F¢jªf ª¥Å臺€¨>Ð05Äè‡ÌŠ€heP€ŽqhˆšâˆðqX5­Š €8∠€8∠€8∀8∠€8∠€8∠∠€8∠€8∠€8ˆ €8∠€8∠€8∀8∠€8∠€8∠∠€8∠€8∠€8ˆ €8∠€8∠€8∃8∠€8∠€8∠€8ˆ €8∠€8∠€8â €8∠€8∠€8∀8∠€8∠€8∠€8ˆ €8∠€8∠€8â €8∠€8∠€8∀8∠€8∠€8∠€8ˆ €8∠€8∠€8∀8∠€8∠€8∠∠€8∠€8∠€8ˆ €8∠€8∠€8∀8∠€8∠€8∠∠€8∠€8∠€8ˆ €8∠€8∠€8∃8∠€8∠€8∠€8ˆ €8∠€8∠€8â €8∠€8∠€8∀8∠€8∠€8∠€8ˆ €8∠€8∠€8â €8∠€8∠€8∀8∠€8∠€8∠€8ˆ €8∠€8∠€8∀8∠€8∠€8∠∠€8∠€8∠€8ˆ €8∠€8∠€8∀8∠€8∠€8∠∠€8∠€8∠€8ˆ €8∠€8∠€8∃8∠€8∠€8∠€8ˆ €8∠€8∠€8â €8∠€8∠€8∀8∠€8∠€8∠€8ˆ €8∠€8∠€8â €8∠€8∠€8∀8∠€8∠€8∠€8ˆ €8∠€8∠€8∀8∠€8∠€8∠∠€8∠€8∠€8ˆ €8∠€8∠€8∀8∠€8∠€8∠∠€8∠€8∠€8ˆ €8∠€8∠€8∃8∠€8∠€8∠€8ˆ €8∠€8âˆp£âÐ45ÅàßãY1­ˆÐ1 #QC€ŽqH×DõtÍ@TKUDÕþJ½¹¶¾±¹µ½³»·pxt|rrzvÞjµÛŸ¯ÝnµÎÏNONŽö÷vw¶·67ÖךõJ2ÊæFÆ&&§fò³s………bi©¼\ù¥ Üx¿¿¾\^* s³ù™©É‰±‘\v(“þ ßüºœ endstream endobj 597 0 obj << /Length 1111 /Filter /FlateDecode >> stream xÚVÛnã6}÷WèQ"†W‰z5Ú[i»5ÐÝ>hmÙK©e7Íßwnº8±±À"pDÉá™37.–³Û»˜”ªÌmž,7‰±^Em“BçÊØ2Y®“¿Òãܤí²:*EÿØöù£CŒVÞ›±3æÏ”`;¶Ã¤òÝWŽJŸVÃî…ÛwȪfͼYUÐïˆ#E;æÐÕŒ€ŽâïwÁ°¢(ËÄE€ –S—þ*9ÚR'`x‡ÉVJJ¦þ÷‘´øiÓœý¸œ!˜Ä„R™Â%ÞJ1Yígÿ̔ͭq´c2¤%£}I³¼½ôöÓÞÄä‡vöüõг^s6Q½¸öñÚ©(‘OèàǾ cª¼­4Ã3:Þ°~äÊ »¶7Ø‚„jï Ð&ñzáq’{Uä±§ëgá~;„ÍÇZ Uîü´T_)×%ÊšïíúÒW¯Æ²rþêÐ@BøV¬{UC0õ÷Ü0š2ˆáŽÏCøJ5º*Æ;Œ—Pq¥)8R†-Úrœh7“òzœLô^cµr(BàCoƒ¾9ô¶w“úÜ{븵oxÇ}ÿ‚’¾løs­"™`T>8üOØuÍQ5„Ò4Þñ…d=â¢^û/Æi=<7ðYÌØõ›În‰æV{™¼¢†ŠÛ<Çåeì IAµ²¥ŠQ>öNýSÍô endstream endobj 592 0 obj << /Type /XObject /Subtype /Image /Width 1049 /Height 675 /BitsPerComponent 8 /ColorSpace /DeviceRGB /SMask 599 0 R /Length 64735 /Filter /FlateDecode >> stream xÚìxUÛ†×O?Äòa£HñWP&MЍ4A¥‰€(M5T!@@z@  $¤'¤÷F:5ôÞ¤C ”ýßÝCŽÃÌìd¶$„乯\›ÙÙ3sÊœsö½wfvÿó|ù >6mz||Â)PdW|¦ßtçEŸŽnذñ–-žûöíÛµk×P„ÄôáÀ“'Oݹsg6¨†$"$d[&IVVV†ééé)))±±±ÞÞ+† ·mÝÆ¦ISú›Ý² =¥•ô% dÊ›‡z{mýõ—Í-šx~òýÑ=¥•*7ßà5zéЯ&·jkݸ̈́O¿œÜrô’¡´Rys@Q“f€¤¤¤ÈÈHÛ¹SëÔŸ×ø3ÇÎÝ6¾eèpÇoºþÑ賩uêÑK”€’)lî?w¦ç‡oµjØ·s¦õȬ‰£ûu nÝVÒK…n>­í'#k·üý“+: Û8à·»þÙ®ùÔŒ¬M/)l@=!ÎÎ!E·ÿ¨°”g¤)bC<}L,mBTX,z l‘j€èèh—9s¦¿WË¡^ƒ„Nßœ]¾2ÿøñü#GÎ.ý3¡ýWõ>¢—(%3´¹ß³|뿒رú±ñ­®ø.¸{áÀ½‹‡®úÛ·n›øeuz‰(l>ßÁöãaï~>çÿúmüjýö¿Žþ³Ϲ̥16=\Z5µ­÷ÃÞ£†6Ù©eɰž_÷ÔÓwÐŒ?7Åé×zÏÖfàbƒ³IÒV«¯¿~¼mW°ðuÛžK¶Æ•ü:'msÄK¯+v_û $Q³L¬£Ñh&Fè—üzàü-,À6‡a͈HGÄâٙɆ1Ôc#Më^Fk4}·&a ÊÉð÷ô´­ûц÷?Øýö‡—·º;rì£ÍžÜ7ç ué“Ïw¿]—^¢”Lvó`Ï-þMªlïRþÜ„ªW5½å5úÞŸ»;ýnmuq³s^§—(%“ÝÜÓwKÓáu[Ì®×mSã!íR¦†öößï6+nä¿ö]65¢—(%KµÄÌl¦Ñ4ï;bD_žžó¼híÖ¹í5š)†6J ž?vĈ±:ú6§š³åƒÇº†ÆUIBM·Â'Öü=Em˜B…®×ñ籋=|¹o”¨Yæ©Ñ´˜£[޶©«©;ÁÝbeˆÝÐV£¿)~»üË‚ì,ÔpMŸ½ÚÇÀÓÂñšÝBSŸ5Å„lX6yöŠHÅm·goÿ£…F3t5F ì`‡‘£WÖ¬{ Ú×_ªñè•ÚÚO[i¤í;@ûI zJ+é%J@Éd7÷;0ªS¥Ë3ÿwîîÇ&÷¶|{?Âú~ÄÄ»ž=ï¬mF+é%J@Éd7¿hd‹ÑööùüçðvÃâ¾™œòãâægŸÜkHl§áíè%J@É@-‘3›kšÏ ÈÍÝw(yiA³)hmú®‡íI1´Qâö]{ss÷êYð¥¦Þœý2­ÊJM*ª’Æmª£ÑLr±@·Ì$•˜ÄJMÅÎÝ‘öïÌ«{XØ‘ if¤nEÒîÉ´TF~¦ÑŒKÌN5ðº ;Ë=j;ÉÍÀÓÂÙL]¤ÞL}«Äêç1›¦5Ñhš8G)o’4—2\à‹Á(#Ä`CûNñïÕ»Q¹–¶b íK5´¯ÕÑÖþT÷÷f­ne­U? Ú%»yì€:‡Æ¼}˾ὭúuÒ†v×F÷ÕF÷¡zJ+é%J7 ®ìæ½m»|¿ºÍȤ®ã3¾›œÓkú®>³w°ÙýÓï;ûLÊþa|z‘‰]{®nCÉâ@-á6¤S6è·J4Ÿê¬›îl~¨ÕÍ&”% Ý0º{#v΢V÷ÑBŸØÞݦ™¦žM˜`Ïš©­j±äšN¿Ìbó§M¯F½lÖ,ÁÖ·úÉÖ_þñÞý´6(š­ôXfýx¥F3Õ94.Úã'¶Ïjk4Ý׆²N]iû ­«ùã°FšZÖk‚ï1¹W­Z£×ø‡n°Ñhº9‡JêìAë56Q¢õ¼$µ:}Û”þu´ ××ß¶Û§Ýlœ¥e ü×Úv*(''âß4a3µ»nõè aÑßi4?;D&ëÛDÓj„OÁ+þ+GkjõÚQ+ÒJ^¤îÝ[5jõÓüˆ‚ý^¼xD«Çí¶Æÿq»Å9ÿÒêñ±²^©Û·óÔoY¡©ì½l6ˆžj!6©‹Ø?yì"6L-¨7•mj¨áCœ˜5–”c²  Œcÿ¬ñ‘öýÚºŸj4Ó6i­ý¼¶e{mÓ6ÚFŸk?úL[듃5>¦d²›g ©~~aÃ{[Ú? ëªMè¥Më¯Í û£…Ä^ºÓK”€’ÉnÞ}a»áݧïìo›;pÁŸíþòב!þuÉÁ_æïÿyvîÀßwöнû‚v1 –°Í4u‡,pu]eÕ«±FÓgST­Ý8½©¦Î¤0]‚̓ua§À˜˜mN}êÒòàÍ‘ÿn¿‰¶¯7#L°GÏå“'Ú¹F$$¸/èC©gºê^Ü4½›>Àìjçêéd;\·Z­Òeï:–Ùy¦$NjFk'„ÐÚHׯ5šf“œRb|]]½·ÅÄD…{9ÙÖ£rØ:yzzG wèä¤Ûã73Y16Ùö$%Ú•ék?¨Ï4ïHI7Í ä?MY¼jÕòåK—:n Яœ­³‡1+""œf Ôí»«W˜¾1\¥e`…o6Ün[B‚ïšIúJ9궈pe…¶`»§”0ï@'ªå4w]™â|ÿ 4ãVè_û9†cR\Av11!®SØþ#bÜç Óí±éô ÁþÛO\áén×Q£ùlìZýN6÷§µÝl·¥$¸ÚRã×^ê½m#-Õûy§§§_x´è©|û?ɦs»¸¸ÀéúkÛ8¹ûúEÄ>Ä11ñ+(Ëæ‡a´Ê‘ØÖ¸å‰›j[´ÕvøFÛýíµCÓ©ø‹¶gom§®ÚVN~Ò<¤i+Ùͳ¬>ø{MËGáßjSûkwü¢Í¦=8R÷·o˜vç/´òQxOJ@Éd7ï÷g— ½òç‘akŽÿæzrÌ–3Ö[ÎŒw99zձߖ¶ðÀ¯ãÃûô]Ö9ÔbÛáñçì:ºÿMk7èÂÙé!‘‘«'Òêé>iº+€’Ò2ýuñöØ5~|û ÓIEt)9‰i99™iÑa‘‘+É<&:û듵§ˆ5|ÏîÌ´Ô´ìôùþ6O{±ׄâ÷uþ~ž>>Îó(âl²*f[·®”M—ÑNž!)”s\TdTlJŠ•tªWBjjJlÛaÇMÉ´ÃíÉñÉþv:mY¸…²Ú2„–†;§ÆFF'¤íÚ“-©ó†éì“yÍדÖÓÊu“¾ KÝ‘‘Ÿ˜–¡+a3V¯jŒ¦“]¤eоOØÎ̤øø”ôω‹÷p¦mB]tµ]¾3+}{j’0ÿÀµã5šºkCto4ÑIQÓ©¾¶¥¦ qÖÙ]@BÏ.2ÒQ¿ÿàìÌÄø„íYé¬HÛ"ï¿Ïü€=9©Û“ÿ # O¸Vw°†/óð÷ô ðZFû½Æ/&!ž4›ê©»"þ'ŸÊ·ÿ“»=O»èD¿yÝI·Ü¶§$Ç+âÈÈ(™5u'úc´ÊáˆèûÓÁæmu1`°Öj¬vÆLíb;Ýß,[í8kíà!ÚïúlÕ.²ßÙÍ·Oïpfí—ÚäþÚ]CuqbœöìDÝ߉ñº§{†jSúŸqú’’Énníx}SÚÛz¿‚|©Ü3£bgš³‰Ò·àà¿nm´8(N©În¿SšY~Ùì^‰]™‰ááþ¿“It˜ö8Ià,Š‹›±z隨éDgI¨ð”fÏØ ûX¾½C`xxˆ3%›â&“µó$]{únÓ?‹ ¶HF³ÌÛŸhõ´˜„HAv‹!)ÛÿæÇë§‘LÒoÛ¦Yš'¨k»!¸ Áú‚"Ÿhÿ'»SuòHûuFjï(Ÿ¬à³—ÚkêNòÇh” B 3ARÛÚÁô֓µ,ЮvÐnبݸIëà¨]°X;åwí°ß’ÛuŠ™¿Pv󸕓ö,ë¨ÍüE{ÐJ§ç&k/M×^š¡=?U{r‚neÖ/{—µ§d²›ÛûÚ ]ßsíá±g&]˜{i^êÕ%ôsé€óÓÝOOZsxÌP§«|ìB@-úÀu-EÄ&m¡(SóÙ ßP—iMH%BCý¬)Äœ¼.¥tÓ]r3q½ßÞ•¶¯«KY°¿•-5š¦ÖvîÙ³{w`]â@ž,¸ ‘.Hn:Í74|Ý8 Š{‡îaìÞ³gGb„.Etbúî=;c½þÔ Å¶ºUAº0þw·@ù|#ã†RTܨe#Š·gEÅ…+ÕÙUwçñ4WáÊåChóá›ÍB% `ËM4MôMôd¨ðTº~ ö°n"½ØÕ-øq²‰ë|¥YGl[GÙŒ[ó¸c£=¨‰Ú|×·±F3Ô!4ò‰ì"œ'Ðþ¿[ÇZ-x}?ÝN}CEûgGp}hÁÁ𿕾§ =Ó"X‚ºcÖ xÁSƒí/ÄÀ±£úêTb}p!ÉhyÁw”ðŒ6@Ù ØqÛ¶Åüåôðß´ éôÁc‹6 P÷·ÅKë´N»ØîŒÕ˜„_†P2ÙÍcÃB2u>¸¿öØ8íY½Gü3S{y¦Î&ÎNÕ>¤æ’¯(™ìæáÑaÖ›ú-ˆþuëéßÃ/ÎIùgIæµå×þJúgQØ[ïÓÓæFþ2vC?J jñÚTSg°­ƒ“â™Ãõ·ßñ ^?µ‰æƒ©¾ÁÁ¡^½t÷ÐŽ°w÷öv·ÿUwKo/¯ˆp¾ýzÚ¾®.åc|Öêbð 6º»Ìü¥þz7}2Ý%K=Ç-r÷öuZ4ZwIýBOÚK¤÷BÝù‹ãœhÿ[6,_´Ô=€ å4mÒ'÷­!AuW+õ_Æ÷ÜvôÂ-¾¾2ù‡ÄlË>[åÂʰaé¨QÓœ}%u^¯»eøgÛ?œtØ;¸l ô_6@W*«ù..öãz°›¦z³&¢ØÞÚIZ†àºÛ·¿·ˆžº,Ÿ¤»'{ÈÚXzð×%³^ë#7•‡L­«ùÎÖùñÓиµCØy^[ã#ƒŸÌ.lóÝ+-z7¸…>QÓQ«uo0Oì_w›Z¯Õí,:P×\šÎsì7Pk:Ù/µw§rÌÕµ}¯åÔôÁ¢§òíì=­GƒßLò~|ˆåÿꑺ»×WP^Þ É‚ƒ]j4VmÃh”  ”´aSÚØqÿù—îdIDX¸6%#$líø®,mëŸ'Ò/þ¼Ì}Ý”/(4ÿ®ÍãÝ´µ:19’í>jÓœ¦ÿáË•´/Çoÿ½è¦—SPÛóªQíõ«j,Ù¢/aA¾º]…ŒÒ½:À'&Œ­ñt°Òhj/÷’ÔyÝ”'/Ò|òëŸa‰ñ+ï_SûÇQ¨L]føè“O¡Ø~‚ƒ´ ÛbRýWŒç;i:da\j¼.™#5êÔõ>r ¾-x-Åû-Wx?~éµ@× 6›"—Žgµia¯vŸÕ®ýÙ¤Õ.6íuŠ(Þ?Kï¨[ OOÜZP ã×PåƒBÜlØÓÁvòí°UwN¡Éä­±ü± óò¸c w7œlÝôïÈ\übÃ0ØeøúúFEE%{xdL·9¾ÞåºÏýàûÁÛ®ûøwqÍœ9›^¢”Laóø­N™kûžˆvc¯õýSvsßÄ“ÑóÖõ£— ÝÜ'j³­Ïà51£d|pö–SWÅŒ´ñþÙ;j³Âæ GprÖNvfZlX ­HÎÜ‘“¬O›™“¥ÿ‰”9qúœ¨”¬ÙS²äqÛ3Ó(uJVVzjš~)9:ÄirMÓÙ”Wšþ§²Òâù&¡1ÉÙ;²t«SÒvìÈŒ¦ÝFeîØ‘–’¢Ï1³ ÇÀxÚN·n{L°¤ „ñZý ÅóS6FÌâÁQ©;väÄKꕲãI²·GÓêÝþuäd¤edSY’õ›§dïÈN––ˆLؾ#+Mß6YÙéIÛXÖÑÔ¨)QÁ²-· ‹Fóõt–62‰ •ÍK'ÈÎ' &)3+;'';5rí×M»)ë$û¦÷÷‰J£FNѨ Ͷ˜”ì@Ä„HŸÊ´?ë‡5*%=-++3kGŠèØG¥çè7LK¢ÉâMók’ÑlŒŒÀX”| à£'2223))Ù~Uæb»ÜÕ¹k3ì–êž&%ÑK,òæ)‰Ñ.sRÖÍõœëýKªó°h—¹´Råæ)é)ëBV, œð×¶Q†Œ²ó·v YA+•73ð "U¦ Ô~Ûé–V«£ÑŒt§—t» î_·úÉõÒõ{ÍôÏ‘-5CH¤9õ”Í´2øèÛÆOu&‰Ûg ·ÝXhB÷E54šf¾ïׯÛûºOúÛ­ ŽPÛþ¢ý{HäžÊµ¿ðèè“Ê;ý†ú—e±û_“[âGFƒ!(;l5Œ——=ÄÅÅeffîÔC ôTwJ¸ AÉÜžžë–Øoð.Â<]V-[bïø,4‡Ï¶Ä”¸€B“ùºÛ/™8Újè a“líC’2¢Ÿ±C쑊þ(Sx)âééɤ›ð—JìæðT𠎈 õ)¼ƒ#¢) ïÒÕlaQ±‰IIÉ)ɉñQA¾eüÀ³'Ïw`¬ÓúûûSy¨•FŽyïÞ=Lt(N•0t¯„M½zõbbb¼½½+Uª`fî­Zµ:[ÀÝ»wÙúÙ³g¿öÚk˜íÝ»—BeŠî¤÷J;v¬{÷îŸ~úiBB%3¹ ;vì ˆ799™=íÓ§Ì ­ø„ Ú¶mË >œöÃõ¡fÍšááá–=.Ç®^½šÂ]Šu_|ñÅ7nÐJGGÇråÊ‘;°4'Nüúë¯YRÐkgg—‘‘A¡ôÔb,MÇŽ©UytJŦJY°ITB¡T / ĨQ£:wî|øðá””:vïüï¾û.eg¨µ¥M$›Ìœ"5oÞ|ŸR]®†FŸh´~ðÁäb7n$Ùùïÿk¦p(„.Ï?ÿüËDEE)¨…ú+V¤Ø‰­ïÒ¥Kß¾}ÍÌ]xg.ûl –7nÜ^Eøw™™;íç~ì*£#GŽP. UBöœ,÷ÚÚÚ¾ù曾úøø°•§€‚=Š÷ìÙC+ãââHÇ(žŸ7o^Ÿ>},å sæÌag@|}}ÙÊ^½zµiÓ†üýý_{í5 Ë÷ïß/⫯¾â'Pž–J(”J¹ÀƒNLjԩQ£F111E¡µk×ð³Ì}÷îÝ”Kttt±©ÄÁƒYŽ}ûö9r¤´*NAÝ„ ¨x#FŒ¸{÷n… RSS›6mêááaÙ–!Ïêß¿­Zµ-ZD¹ £Ö   çž{îĉÝ»wgìïܹ“P0Ï7ïÙ³'9ãÓU …R)XïÚµë›o¾¡*“²Y¶‘/_¾üßÿþwÁ‚ ­-l"…dW …N¨ ÔDd^üV €§¥*—+WŽ] Tt¹SØS­Z5ð©°`½·lÙÒ"%iܸ1ń«›TV|áÂ…üñ_|Añ<=ýòË/­¬¬(ñÕ«W-Û2{÷î¥H’/??_µÒÓ×_Š÷ /P˜MknݺEñ§ ßœ 8-wêÔéÇdËñññB•°`“JUB¡TÊ–ý†¢ßÿ½jÕªæ|Þ.mäéÓ§WªTéüùó ­-l"…dW …N¨ =zô þ‰‰O]%ˆ©S§V©ReóæÍyyy×®]~ÍŽi¹ o»&Øý}ûö­S§NtttFFÆ7ß|óÒK/ÉÞ+áìì\¡B üÌo;;;Š…W7©¬xVVmøòË/³«ÓÉ,(ž7ççØ µÌÁƒŸ{î9Z¦ÂP¦üË£ˆ±cÇÒš&Mšð5¿þú+µaRREéT*z555•½4sæÌš5k9rÄÇÇçÿþïÿ„*aÁ&•½íZ¡T /‰ú‰'È Æߺuk‹4òÉ“'cbbFŽIÇÎÑÑ‘^:~ü¸¡Ö6‘B2‹«„B'V²0vÛéí«¯¾jf‘,¥wïÞµ¶¶~ñÅ+V¬Hû®srý&r\\œVS5èiµjÕüýý ]àôÏ?ÿ|þùçåÊ•~ªiœ:uŠbBáÕM*+ÎΡﰧéééTì•+Wš\D-B¾@(_¾üŒ3¨ÊT ~‰ E•”Føe¤jöéÓ‡¢P±ªU«ºººò—(¼oР¥ÿðÃsss…*aÁ&•U …R)¼$ºíš~ŠÉ›È;,ÒÈ”i­ZµzôèAê*´3ÙÖ5‘ÂA±¸Jê„¢ÑÚ²eËöíÛW®\ùù矧"Ý¿Jœ?~¼¨C”Ó§O«¹|åܹsyyy¥©â P¼Í+{öìY¾>!!bKzU”þöíÛdI²—Ê_¼xñi5©B©^âPÙ.\¸ð[[ÔD ÉŠ¿r­ ãË¿ECôèÑã§Ÿ~B;üò5PÏõë×I%¶oߎ¦K–,1ÿgèŠ[0žàY`éÒ¥¢€J(ƒ;G:*E©©>&( ¨ L©ÄêRЍúÒ3¡¥µâñÅ:OY«xií]5à™O=(QÕº33¢J•½¼¼¼ûE eÁF_±åUhƒ”ÖŠÓ|{ýúõ›E eÁ‚"tž2UñÒÚ»0j×31(J`hQ¢ª_¢:eJ%®]»ÆFë7øCôTºRúªh%[¦,Øü_ly©™sJeÅÙ|{Õlmm½½½Ú„½ƒH륱iCkkkÚ=¢óX°â&ô.0Ô»´Â"£Æ‚õzZ‡†p¤sGeYcP¨é<%S% UßÉɉÞ\è±Øª_œ“¢J•½Ó§OŸ9s†ÏpÆüU¶‰4±h _>yò$›ÿ‹-/5gBKeÅi¾=þü… Ø£+W®¤f¡¦ôHk.¨ãܹs,(Õ‹b…Ù˜‡÷ iØÌlCQŒTü§R¥J”5=ÒûŽè€fee _}¶FÊÞ5wî\ÚVöÑÓÓÓäÞ%í-YYFÿÉö.Ùzm6GGG¶ ²^Oeæ¡زÅg§N¢¡GZfƒ¥øg9>H‹F¥¬‹mPˆ`‰r ½¿+÷C5}Õœ œd«O±bÅ JO´,[}õÈV_ÍÌl‚5Ⱦ‹Ú1(ã*Aƒú¢&|ž|Ñ”›ÿ å¥&Ç‹ê`y©ùøB¹0Òò\4•·`^4ßÒòßê`6Á e •R,(Õ‹M²Å…÷ í Úƒú6fÄw¥œ]už*U^mÚ´Y»ví˜/_¢55kÖèØ±cçÎ¥¯šSqsPYq5½‹|ÁÁÁaíÚµ²Ì&Lë]Âwv_ßýL%||ö{xìHK»OË[¶ì¢?¦ ‰‰77oÞ™––/U •£Æd• ÑÄ"4•õ*ºj(/L"„К¢žå¦>•ƒÔ"ƒ‚W“Ï6²·à 0›xÕO¹F©ï‡júª9g%d«o+9…i ¥\}…™Ùƒ.ÈNˆ*TB8ôhh\Ö#\Ï|4 7€p0^À÷FY°ù_6/žÞÐgÚ콆¤›ÊKÍœ£P–ãñãg£¢öÒcbbÎÑ£³• å7­â–Í‹æ[šx/«†Ùóõ[Q,(Õ‹&iÙXxÏ1‹øKÒ>`Bç­äolÙ¨64¿ó¼ûî»õë×ïÞ½;-GDD/+Ø AƒfÍšõéÓGÔ\¦•U³HÅ í]Ì#\]]ííí׬Y#}\´h³ z—ð4W‰~ýÆ­Z1wî¦Å‹}~ýuý±½z$›˜1ÃiíÚø9s6.\èEɘJ¨5¦I‡"4•õ*º*›¸–->“ii½°¯Zp–S˜úd)êAAYðùŠeÇ+nñA!‹°«Ðô«rÊU©¢~¨¦¯š£²Õ•`ËB§0ª¹”«¯03›p>BøH½‚½dBÇ*ÁÆQVV©DVB}®d) C‘$ÍêU",ìèÚµqôèä”wŽV²@h ïk,/5gB †2¢xž¢ú«WoÐ òíìܧ§ç~öÙpõo²…VÜây)¿¯Ù‰¥TB¡äL+TBMªA}šÓyˆJ•*UyõñY‰¡C‡ŠÚ¤zõ·k֨ٱÿg%Lî<Œ?IÁ²Qm¨òã¦bè<¬<ï½÷^ýug%úöíË|%¨¤§aÆM›5ë«?+ÁÎY˜ÖyÔ4²QGÍ'†zW¡a”MÈö.…{%ÒÓHo‹HKË'­`fA™™˜J¨5&«ßTÖKt@iFµÔ•ÍKv¼ð•,¤·T^Ê•‡m,SÑz“óRÿõB›àŸ6XpPª*=‚w£TBÁ#¤iÌ9+¡P}.¢5ÂsæW_afVo†zK`BÇ L© Ñ·%ððÌ4•ýú6ÿËæÅ—Ùæ¤Ì#üüö’G$$œ=|H+´ ö~¡ðU*£ACç礱vmÐÎ)Âg‰9Ê…QŸ—þ$…YyÑ|Ë>?~ŠÂ—eí@šXøf'úˆ'`A‘¨^Ò PláÅN4uÚC¡‡o"Í‹öÌwË(ÒÎÃ2Ò•ÐÝ+Ñ”Ÿ• _àŨ^ýíï•èbe5zòäɲCFý¨V\tCŠèUó+n¨w©ôY›Pß»¸>˜‰ÊQ#ºDŠ¡ðŒ?UY/á¥é”÷RCÇËÌ™GxVBtY8;+aÁ¼ uT^öERløóWÙz“óŽt>*9¬# #FZÃOˆXpP¤S.ë*jÎ= ;Q*¡F{eûª±*aBõ™S0›ž›0¶ú 3³±ßÑ$:+Á4U¨„pèÑãõëׯ]»v]-ððÌ4•¸þ$´CšÏù¯ºHóbOéQxV‚/Zcf^lbçŠ> äï_nrÐælÍÞ,ñ ìU‰êÅ? ô(-¶(±Ð#x0ªóðM¤y±ˆšç%ô”¢è<ôȾéÝÏJô±±±a~Á+WªÔ°ACv¯Äσ±s&tQ#3‰`ßÉÃbEþ<ê;š‹¤½‹ß¡Æ#¸Mï›PÙ»,¥*G ·DçéØS eÅPY/~@™GÈÎr£fæÌ#ºWBt}8–ÊKÚQ…»ba›4/¶Þ伸2ˆä‚Á'¶ž=Z|PHO©ÈvQ÷~’v…ëŽ U]å4æ\दú¢Ú±e‘M[}53³™÷J(Lˆ*TB8ôh\HgQ ª{aó¿l^|™ß+ñØ#âô¡Œˆ8ž’r™¿ÏJg~Q^j>¾0TñãÇÏÒŸì9qŠí÷ï¿ÎÃ{ŽraŠ3/6ßò‰½Ÿ®\¹R¨´FV%èUf¢Ä´¹ð#>þ"­ï,€gÕ4Tl~(Yx#ÚƒÊ6d!4ÛD˜—èê)þîÀà ž£;ËW¯D~¯Ä¸qc¹GèÏJT¯Y³fÇ:wé<Új´¡!£~Ôð¾$ý¨™i…úΣæHiï¢~B³„½½½J`,½HW•{—ÅUByÔ¨<+!{q H%”ëÅŽ ÷á¸=X™y„·Kˆî°l^²{ãƒ]¤ j Q1ÌÌK¤lPð ÙË é•i´ ÛU ¥—í< g%ú!G!9g%TVŸ?å @Ë\%ø Jª¯03ë¼Wˆl„Ž@™R á ÌNçñˆNA%DßàdH%ØÞ„¿+$ÍK[zzfçäÜzìúóqqçÈ#Üܶ“e(„^¼ÔÌ9†*ž˜˜cè|Åö[¶$°ðþº"j*.͋֘™ŸØ…°›ûØ.«Â‰ÍÆ<1ûŠ'áÙûÿ±-a1ø‰Ù·fYcâ/ O¨lC~=´‰DŸ²J?nâ9Z°óÿž•¨ÿø^‰Ož• œ•¤?+áããcΨaZ$ýœYø<*;ú°AØ»ØY v–A½MÈž•Pî]"•`]9’–÷ïßÿàÁƒÃ‡çåå±WwîÜÉvíÚůkb_©rÔl6•õ"„!ÒãeæÌÃ…¡ëÃ-•—š{„»bO©5L«—!DÙ g`¾¡pæŠ+rÐ0Î¥lŽ¥•Wv•8™€ù*¡\}ª¼î´ÀF½ð Dg'ª¾ÂÌlìïÐq³®‘4U¨„pèÑPec„ÿܧP%²T|È]ƒuŸ†~”$›—(Sòr~>‚–Ó¶ÿãá‘ÅîÅ]Äh(/5gB UüèÑ¿¥÷G¸¹>Ží»+ ï…¿—jlÅ¥yéîÂ6//>±‹®"f6ÁØZªì² Ú›Ò¹€H [‰ê%< -³¡‰G|[5m(<× ìu|oüê)ö3ÜÒoùã¢a©ÎÃ}Ax¯Ä¸±¢³oרùøœ¬F[QØ5N&Ö‘D2‹¾“GeçQs1ƒ´w™VBeïÞjÍT‚˜J,_¾ÜÑѱK—.züüü~ûí7Z ý̘1ƒmçêê*Û» a\¤æ.ªŽBCõb%‘µ VZž˜ÛÌ™GhâBþú³¥òR˜Dg„—¬›3(D³ÇØz™6(„‡EÎÌ#è‘O°_©²ó˜p’e1¡ú—XYƒ0`·`Ó£òà’­¾š™Ùäß¶–®Qî଄²J¨ÇJˆ>JRV ‘Gd¤_åÁÏJ(ÌÿÆ~°,- Eïbpã±}‹íU†÷…V\”¿®Éä¼h¾•ÎÞBT‚y=å*!D5 ?_ª„ôÃF; IçBÛP´‰¬Jð¼dÏJðd-Õy¸/¼÷î¿g%Ä÷JT®Ü aƒfMŸ•˜={¶™£ÆÐéÑ—Õ¨é”ÆÕæŸ•Æä²½KtVbd´¼bÅŠŒ?~Ú´icÇŽýùçŸGŒáååeeeõðáCJ“ðçŸÊö.Ùz©W áÇ­l|±5*ëňð^ 3U¨Î#´‰"ÍK¶ò**Œó2M%Ì"•z„¨óð—X\­ ª*U‚ßÍ]<;vd=¢P•PY}C“†ù˜Ð1(S*!zïFbì'5U‚ïí) 6ÿËæuëÖ-~Y›¶âû—æ¥fÎ1T àÓÓs¥×5Qlïç·…÷ÂÏînéQ(LqæÅæ[á<Ìo-ô¬*¼,Šßj*ú ‰ê%<³ ª)‹èUa±y½øG|ÛBÛPtVB¶“ð¼¤*!*E:ðì{Ôß+1N¸æíêÕ…i¬'Là×8Ûy„Í®|VBeçQy1ƒ(¨¶ìY …Þ¥æ^‰Gz˜ÏÞ•Þâ ­xQäÅ'váW¯°wZ`v@ Ô¶²ßæÁT‚mŽƒ6¿ö$Ê*Á"é!æ÷&H[€EõÜ+Õ·¡ð—”©„Ð#,Òy˜,\¸ÍÑ!õ¯¿bÜ7îtvN 8$òˆU«í–D¬_Ÿá°:ÉÛ;×}S6[o¨0…vž»¡opm«ÐyT^Ì ê]柕PÙ»LS é'*G»:>nUY/CTV%„ ÌŸy„p•0T“óâƒT()§¢¯ôçk¤{3¡^R•McÙA!ê$,`fWÒS–˜ßò, ªÙJÙÎc¨ lfl¶§§|W ¸ººšÛµ´ú"ØÏ^³/kiJ‘‰¨¬¾z•ögf B•0”Fô*T@%dUB:‹šsVBöMŠÏÿÊyòzª¥QÎKåœ#-Œ4È!”/Åö¶Ã»¯µ5ôƤ²âE‘›Ø MéB•P@”XŠ0(ÖËÐAÞ]h%Úƒš6”•¿6\¡ Më<ì|ÄZÇÚ‰û¦.Îi‡½½÷löÈžXjN¹;¬IÚê»iSNX؉µŽ ¢³&t…ß•Pq©¬¸lïâg%Lþ] •½Ë(•ýøšpAå¨qW a€ÄCGQÕ Õ«P• 1¾À¯5jæQ)ëTÖz„ùÕQ¥²Ï'7ѧ¢GógTÙ*ßR9ƒÂuÒi¥1ôËqLLP füû]ù® Ì&ÌT‰kŠ0‰àg"Ø{‹¹¦£TB4iˆTBØ(U QÑ«*;eM%htÜÖÃF -˜sV‚ïí…ó¿¡¼ÖC¡y©<*-Œ,|aO)kŠí)ÂrOËÒ*+^y©T 5($¾zõ*Š„õbEZ)aô.*¶¨âÂ=Նƞ›PhCÓ:íÖÑ1å¯å1›6±ó‡·zí‰9z”Ÿ•°³ _f ;‘z"0à@JÒߢv3¹óˆ~íšíD¡w[qÙÞEQy½½½ ¿v­¾wûe°¢SQGŽa×N«5îÆÀ BøÈ#ÆBë%{@…Q·èx±y@ô¾úÎc쥼yϳSÙQ…g%D*Á+ËvËWò˜ß"3ªp04óXvP:uÅlBV%„i(—í<…ª„ì® I‡lÂÌ œÔ¨—k®löPóf$[}533S é›s:Ä\%„C”†½ªÜ1€JŠýL;+!Ý›pþWÈKý»?+a(/•_Ü6ÝU»Î_5©ÿ¿ÕìíIåŠE^4ß*œk. •JC½ÊÊŠ«ú64êÜ„BšÖyÈ–ÿã®óˆíúó±1gÈ#²2tßKAÎë3t±×]>"0`?yD\ÌvVÂR‡_bÔ&*?€•í]êm¢PPè]&|¬èÇׯ'Û»dëe¬Gð[ù•õ24:*¯—Ô í<&Ü›¦œšŽ*üâY>EwÅ ‚¯4¶^…6¦úYÈüA!í!ÂoÛ6¤, õdéÐ0V%„»2¤”†yÿy8ÓÎJ(_Ý$¼À‰Œ2•ÕW˜™ ©sz*T CiD¯B%TBª|ƾs玬J{V‚ï„ïÏÿ yº®‰i ­]¥œ—š9G¶0Bîè1´’ @±ýÖ?F]Šõþ™F”FMÅ‹"¯BUÂ( U Q½„E6&‘­¬´3˜Ü†êÏM(´¡i‡vkgî¢óˆCì|DXè1ò_Ÿ]ÌèqÖ¬­[u‘ÍÎG$']"ˆŒ8&,’Å;¶ÆV\¡w©± 5¡Ð»D}IáË`îä•í]fªó1²¶Fe½â^!Êw(«ï<êUB9;c;ªðÇ"…Ö ê¨²aæ 6cñ Y•à÷J(¨þÍW à*Á<ÂÌ œ U Ê‚_ã$ ‘kH×› ÒICV%øS®²oC ¦Æv Ê”Jܼy“ͺyyyw 0ç¬Ûƒí²`ó¿r^ê=‚Ÿ•0”—š3¡²…"Ü­ìJ*Åöq+¦Rx/|UeÅ‹"/áÄξ[„è>káz²ð]1DA‘¨^ü ˆªÀ>“ä Øå7Â4¢Î`Nª “ÚдÎÃêůk =š•y=9é"ÿ®Wv¿®)9éï¸Ø3»vÞaç,èí©è:t[Ó*®Ü»¸M¬Y³†”AöQÖ#Tö.5‡Uøe°ÂXø¥Ê*Gèº) NÁPY/ *AˆîP¦ô õ’Í˨³"àÙ™ÜQùÁöiZGU?( 5fQ Y•àOT‚?•í‚yw Zã䘜t)¶à|óˆ¢î<©x¡½‹Û„¡kœ˜G˜Ö»L¸,GôÈ0J%øÏ²ðG¾¦ÐS¦©„BMù(=ÕyL¾WB4¦ž •xZƒBÙ=Ò˜¦Ê»’ÞÁ1V%L˜„ï8ìv ‘Sˆ`Ÿ3UýBUBvL‰TBöc(¨*UâöíÛw `ì{·¡ýPlþ/¶¼ÔÌ9 …1CåQSqËæEó­pV€y-ð0‰Ù„( ‰êÅâC%ç_£FºcÛåÂwÅrTÙ¶fvnü>kæ´ž;ÑwÃ2m¢è}úøñã'Nœ # ` U‰7nœ’ÐÐPÚ­!›P®·žù‡ó1á‚ôï«1ÙÝ­w@%T øU"??ÿîÝ»wîÜ!•¸tù©Ä =¤ÿý÷Í›7 U‰””Jö÷“„‡‡?|øÙ»ÕB¤ߌÍyøH{äômúÛü–4\ï02ëÚÍûÂáß Û½ûŽßÊÜw=}ﵫ7îO[u* Å©wïÝ#  èÈ‘#ûöíËÍͥǃ=z”lâÚµk…ªDrròíÛ·E!VTTÔz=nnn”@V%òî=T×T¢íðÌ3ßå§*¾‘Ùit6T@%ŠM%ÈÈ#ÈÒÓÓ333÷îÝKBqèÐ!æû÷ï'› Ê*‘˜˜˜——'ºíúÒ¥K§N:yòä… (A¡*ÑuBÎŽƒ7ØrhÊ¥¡órTÂzùÁ»ùÛý–)Šðo<~â|^læ??LÝIOÛÌ:xòö×cþ¹G+[Ó¥!! 9û÷]'ÿ3<Í’MÇÏ_¾¾ýòo ÷?wgÏ‘›ÇåHw•€J@%Š…RRRRSSÉŽ?Nâpþüù¿ÿþ›Ö_¾|ùèÑ£$ô”CA%îÝ»wëInp÷î]J «÷-R‰;wîMäææ*¨DllìÇ€^¢…ªD§ÑÙ7nßo=,cè¼Ü»ù•U¢Ýo™þ¹g·é„P%Ú̺xåÞ×c²¥7ns•øjLöé‹wió6Ã2vº1pö•î*•€JhõgöìÙS¨Jܽ{÷Ô©S *ýèÑ£‡ —(A¡*AáÛ/Sœ›ùOÎÊ*ACæå?{‡t 6ëʹKw§Øb÷P\¹‘¿}ϵøì+²*A KÝOÐV;Þp 9+J#R é¡P ¨‘““³wïÞBU‚ÝR­ QQQä †r¡—(T%dÿ:Zeõ¥¬]'ä|7y§è{beÏ#ˆ~üî‹™*³Ý!:T*€²LFFS‰ƒ*«ÄíÛ·T"22R9#i‚âÿ}jü®€JX öC"•8wîT* æ¨ÄÍ›7Õ¨Dzzz@@À–-[Ö­[·jÕªzhžÒJz‰@%T*a~•P ¨T@% Å£@% @% P  P  P  P  P  ´·¯jS]KÛßÍK8°@%€J@ÑB÷Miû£J @% TbY»Rr>‚*•*TŠM%JMì]ʪT¨ öFu€J•¨ªT¨@% @% @%*•*T{C%€J•ÄÞ¨P  •@u€J•¨T¨T¨@% @%€J@Ɉ½¯ÞÎsMÙQÿ.ݼ •*TJ¬JPЮf[ÿ¨`P  @% „«D»¥n%ç|*T¨<*!ŽÛŸ*òE‚J•*P ¨P  •€J•*P ¨P  •€J¨&ìz €J••0šÚ…;ÐiT¨¨„Ñ*¡qÔþ‘~ @%*•0Z%èoÝ~t•*P ¨„Ñ*Av;Ñ{T¨@% ÙtHÛ.èñ_ùuÿªýÙdhw\Öº([—ò0l @%@% ‡ B¨Â?2 «$ƒ¯–Ö?² •**¡^%¤g%¶-[g%XS@% @%@%Ô«=j÷JSG”5H" P   &«yDÙü­:¨T¨š 樄ÿñ2ÚY P  h"€J˜¦l)Ó4T*TMP ÓT"óï2ÝY P  h"€J˜¦e¨T¨š P ¨T*T P ¨€J•¨D¡Üøð)Ryø=½¿îG]EøßèòÚÛW¡P •*P Æ#=Ó|¢4Ãfó?zúhO裚ÿœú=²íitÀe¿®)è<] @%*a”>p>|˜{ö¢fèlþGOÞ¿÷pê;‡kÿí}h!¾|¨qÐ=—}º¦ Gð1G+ @% ì¨„P øb‰‹fè,ÍYŸÍu¼Ïð™r˜F÷7ñ­û÷òî[ˆ/üïkÖès®®)è3žDV+ @%*!+,‚â‘U~~þú„LÍ™ô·h[ü=ÆÑŒ{Ã4º¿M#ïY޶~÷4«t`Ý]SÐ#(~òõˆäB$P  •INW¯^=sæÌ±cÇŽ=J!ÐáÇwåî{iÀÄûÏܹû gü‡ûi¦„´ÍjæèÁÂp]SÐ#(f:tXu~4HhP0§P/P  PŠUBx2‚Ÿ‰8{ö,Å<ÒÄ÷<Ìðð‰Uhä[¶HùµwèÁƒGº¦xð-Q" AA~-1•*¥X%„§$®]»FóvZZšùûÿá‡^P¥J•âiÝRÖ%äP* oœòåË×®]»S§N¾¾¾P‰g —/_¦Á"{b*TʈJ°S QÃNI\ºt)55Õ"*ѲeËìŠí¢©-[¶lÚ´©¨sÙ¶mÛªU«ÌQ Ö8QQQëÖ­kÛ¶-9ÅòåË•UBe¦ ÈGpj*‰;1A‡ß1•*eA%ØEÝ«›ø)‰ .$%%YD%¾þúëÒz GÕ©S'sTBØ8‹öèÑ£R¥JgΜQP •™‚¢† ,ìÄ„ð'éíP  PŠU‚_ÝtõêÕË—/ïß¿Ÿàüüüûðž0_%®\¹òÅ_,Z´èqœüàÁ÷ß¿qãFöô÷ß7nœO£FÞxã +++НØKT†Y³fÕ¨Qã½÷Þ[°`ß!m2aÂ//¯† ®\¹’¯¾ÓªU«š5k®Y³†ª3vìØwÞy§gÏžשÙyrrr»víj×®mggÇÖÛÛÛ¿ùæ›U«Vmܸ±µµ5­ èÛ·/mÞ¼ysỞJ•Ðꪠ|ùòóæÍímãZ¦ê3EM||<¹À¥K—hÈܸqƒ]ã•*eG%„7Jð«›|}}ßzë­jÕªñpˆØP&¨Eàç  =°õ›7o®P¡;ñ±|ùrRþRÿþýëÔ©Ó¶m[òˆråÊ999±—lmm4hG¢AÅ â±ú‡~غukÇ‹¢wZþè£Z¶lI[?¾bÅŠß}÷ݘ1c¶mÛV¯^½©S§ºó?þ˜¼ÆÑÑñ?þxñÅ)Ôêì˜ ¨Y³fT‹ÜÜ\&”†bErÊ•+Sxi¬Jd+”^´·Š•*_ºzƒTB}¦ ¨!9=sæŒè'C·K@%€J@iU ¦ ì»›rrr(È×h43fÌ%6M%„·]GEEñ—LasVVÖk¯½ÆïË \~ú駦M›R@EyQŽ]»veq8-W­Z•"g–²G à±z5(*ã;©¹ÉÅ‹iùèÑ£T öÒØ±cI1 Ý9‰E€´LâË/¿LŽÃ^2t­Åó”KXX˜ *ѦMÑJÚÛ å^  S¾ÀI”)(j¨3“°kœØ÷8±Û% @% ¬©ûØk×®uèÐ<‚‚Ò€€QzéN²¿Æ%Š–¿úê+~•KÏ)ô­_¿~¥J•Æ'Ü„ÞT6ŠÍfÍšõúë¯Óòþýû©T-Z´øJO­Zµ(ê6«‹T‚/Ÿ?žv’ÀžN:µyóæ´ ~ç¤ŽŽŽ†T"))iÞ¼y´žöæïïo‚J|øá‡C‡íTÂÓÇßJÈf Ššˆˆˆ“'ORâßãÄn—€J•€²£Â{®)ÂÑè©]»¶òçÛì’§ü¸kÜÕÃĺuëFn"»Q”Kùòåd-€]v5þüÊ•+Ó†‰Q¨Å:†……µiÓæwÞéÖ­ÛîÝ»¡€R¯ $€³%¨%_%ˆÍ›7³ß]}ë­·òòòŠü½=5Uø¯B¼½½5ªT©BóT•P ¨T€’©4NYèþõ×_uhD¿óÎ;cÇŽ•¾DC»}ûöþþþݺucEZ¶lT•P ¨T€gT%h^¹rÅÐÞh€Ÿ?^M¾´“ÆSF²*‘}ìØ1¶LÕyá…(å´iÓ ¨€J@% <+*A»*W®ÜsÏ=geeõ믿þWÏ÷ßOƒW«¿ ªbÅŠôê·ß~Û³gÏÿýï´m·nÝ®]»F»ýÏþC/Mœ8‘F}ïÞ½ŸÓãïïOΚ5륗^¢ÄÕ«Woݺ5 y…BÖ¨QƒRnÛ¶MXæåË—»€Jf qm§Ñ=*2d±=©=E\ô8;;¯[·Ž¦V‡Õ«W¯X±‚˜%K–Œ?þ(.”Ý*•*a)• 6lHkÞ}÷Ýôôô€€– 22’½Ú¾}{zúÚk¯:t(??¿víÚôt„ ôÒûï¿OËÖÖÖZýåLlC¦Dƒ •B“%kÑ¢ ya™ûõë§ËR÷SR ÝãÓà.(.È& P ¨€JJ4iÒ„ÖPèNË4îXö*¥¤§;wfOüñGzZ­Z5Zþàƒ¸JÐÈ5M%Æÿ¿ÿýfQ™KñY‰víÚQËÐ#>Hg%€eÉÏχJ@% <-• é—% ·BY•˜2e K@ãÔ|•ÈÎÎ~÷Ýw÷ìÙ£PæÒ…Ô2ôˆ~€ÅÀ½€iƒP ¨T€«666ôôùçŸÏÏÏ7S%hÈ·nÝúСCìirròáÇ¡¨€J@% ”J•6l=ýðÃi¹N:&«qòˆ•+WRÙh“õë×׬Y“¦¨*¡Ì©S§Îž=+ ®6nÜH³è3zè„…WSå4&«„™mH‡xÖ¬Yýû÷°øñ…J@%(!*‘ÀþO?ý”§ùøãiM¯^½h9//% ­„*Q£F ˜ùùùðÓSgggz‰]óO h+‘ƒ´hÑ‚žvèÐa÷îÝnnn¢©¾{÷î¢?úè#Ù2C%P FPPM­¯¼òÊK/½T¥J•;w²õüᇊ´iÿ/ê©Zµj£FØ»€E^ME ¥a%|á…*V¬Ø°aC…ʪ„9mHojo¾ùæòåË“’’ÒÓÓ-~|¡P J‚JlÚ´‰YcРA¹¹¹NNNÿùÏØw4%''Ϙ1ƒ»ÆÉ“'¹JÐÇ—_~ùÞ{ï=÷Üs“&Mbƒ:,,ì7Þ`waÏŸ?ŸjÕªÕµkWvÍåKkÊ•+Gó3˜ɓ'K¿Ûä×_…J † ‰”âÕŸþùÚµk´ìîîΠ§xT¢uëÖiiiöööMš4)_¾ü®]»JšJP SRR–.]JïY %d*²mÕªUQ‰íÛ·W¨PzßgŽuëÖÛP J¾J˜†ð'³”»è£Î4ÒiAø-LŒóçÏÓœ`lŽP TBJNN΋/¾˜‘‘¡>º¶¬JtéÒ…-GFFRIœœœJšJP ÙNaaa %d*1bä¨N:Y¤ ׯ__µjÕ¢;¾ÏÔ°?þøc\\T€Ò¡ÎÎΦҨQ#vV"°¸ ÒB%P —/_®X±âüa(ºNNNn×®]íÚµíììøKT¤%K–|üñǯ¿þz‡²²²Øúþýûó Y£¢¢7nL¡,{º`Áá¤*AÁ½ló€€€¾}û¾÷Þ{Í›7¾7ýþûï&LðòòjذáÊ•+RR *ù¬Y³jÔ¨A›P‘ŒR Š0JH*±t¹}µ7Þ¤øŸ*ÎîøShÓ'Oþúë¯Õ«W§HõdÓ¦MTÈ *Ю¨UÚ\¶YÔ_…þöÛosçÎåɨ t4 åE –/_þé§Ÿ¾úê«õë×÷óóShg3U‚1yòdv…T€gZ%LfõêÕ4yRÜ[¹rešˆÖ#P TBİaÃ(B¦è‘‚%‘JPœÙ¨Q#GGGŠE) Wì%Š3ß|óM ¢(ú¢d4™?~\«¿Ð´cÇŽ,ͨQ£h<׫WÿJ©¬JÌž=›~nooO™RD7oÞ<Ú9ûö V¤?ü°uëÖìÛùRʪ„­­mƒ âââ|||ªU«¤^%lllJH*qàÈñß}߬Y³¤¤¤ÜÜ\å6;vì·ß~K!ëöíÛ¥÷/Ðñ6mç´+¦c†Ú\¶YÔ_…~óÍ7#FŒà*A›SsÊ‹öóÒK/ýõ×_ô4::šUÜP;[D%*!5©è:g¨ÏŠJ¤¤¤˜s‚ÀÚÚºk}ûöõóó+¶s©©©P TB”E¹åË—¯S§Ž0¦¥ ñ­·Þ¢°Š–óóó_~ùeö3£JU­Zuâĉ,…Ù+²/Ö §d·nÝ¢åÚµkSÞ­[7ZÞ³g¥¡ ¥:…ÙË—/§àÂQ+++Qª/űaaa¼H5jÔ ÐNZ iJ©JPRÉÉØú=z 0 P• .[¶¬mÛ¶´…ºÀI¶ µúï4h\CÇeýúõ¯½ö[Vhsåf1t|•w¨¬¼¨IÉwø÷1ò•†ÚÙR*Áèׯ_ll,T€gN%T¨D©Q‰ÇuMMýàƒªT©Â?rE×;::Ò„±%ѵkWv2‚B¬J•*Q\M!Y­Zµ(¦záÂ…?ýô“l þÆoPL8|øpQ]’’’æÍ›ÇNmðï— ø MÉ—÷ïßOiZ´hñ•*a›6m U *a‡~þùgÑ7²ŠòUs¯oCÂÏϯråÊÍ›77tñ¿P%Ú\«îŽ ÑñUÞ¡²JóbMJ2(ÌK¡-«½{÷&{…J•P  OW%´úëê«W¯>tèPå0x×®]( C8ŠèZ·nÍ–)tœìáá!6ò<\  <Ä8b›@Ä`‡Ráß_Œ5ê­·ÞJJJ¢JB• T B¨mA%Ц‹‹Ë±cÇ´©DiiiHHÈÆÓÓÓå£JKKóóóC<Þ¶mâ–(?uê””‡ñ±‚+Þ¦¦¦Ê[POÂøB⛟={vß¾}6l ”äâäÉ“žžžÈÕhÉ\y„UUUÑÑÑ^^^hD]Orss½½½‘äÑÆŒ’øøø¸¸8$É-[¶ˆx/ßÇ­[·K*!*¡í`Ì8Fróü׎]»±#êÑÍÍMŒYÎÞ½{7oÞ¬0ØÐÕÕ6¡‹‹a„Ø éW÷C¬í8‚¤¤¤HÕ0Q8 òÝW™+,øûûc77mÚTXX( û1?88ú:e•|ôÑG%%%T B¨„*AUâÞªˆ‰‰AEtD**‰|ˆˆ… Š:èZ¬BÈDªÏÈÈ@ÐB5Ä]±êÈ‘#¡¡¡¢Nll,6‘⽯¯¯”E5&aÄNé?Ïa è´²²ý¢q„7¢‹°°0Èbä?ü <ÂC‡íÚµ mHƒê— "#÷¢)!;h j——'\@¾ðšÕ«Wc<ÒÌ@‚ƒƒ;ªÔ1°/cæžóöñ•Î>’À¨06´¬R~üøqè Ž¯¶©æää4«ø ˜ Ÿk¼([Û!ÖvÁŽ;¤ß.´‰Í±³Òî«Ï•ø†oaXâè$''ãè@p°áºuëÏu94º¨3f Ž»ˆôT B¨„*AUâ^©9ÜÇÇGíׯ_/ò3Æ€À,®®¯¯www—þ#DPD>Ä2ª‰óÿ7n܈ ‹ÐØÐtiꨟ „ „ˆ Û·oG…}¨T@lÃÀΟ?/é‰Ê NGBBB"##nv”••…!É›òöö®®®oUöóïää„(.UÆ\‰Ê—.]ÂÅ N‚b¨ô…PŠ:ê×DgggKú£q*´m(ŸÀ 6`’¡EØ\’]±ÂqlV%Tæ ½K$o\º°e÷îÝû÷ï×ñÐ袂7ß|3O• „*A¨„P%î¡J44]†Œœ‰ø'!£r%B;²WåÁ ÊŠ/# ®®®HþH_P „1¤SŒÿøñãR’TIÂÏØé­%%%H¿â« qÂLCs×JH#Ø# ,..ÖQ%äM©ì#‚ñM¨WF¼DMì©P‰¸#GÑ©J_˜ •@ ?°4N…ذ  @A%6mÚ”’’‚ÙÖ8à ‡Xá86«ês%]ô!/ ÚÞ†'Í^³‡Fw•˜2eJ\\U‚ª¡JB•¸·*¼¼¼bbb”ƒ:zGJDÖ’VíÝ»wëÖ­b¹ñÈ‘#éééˆýâÿ«1Ôàààüü|IX峑‘‘HÈh¤¨¨¨u*!ƉlŒÍ!2-U •}ÄŽ _ÉZª8|‡qðàA„m…©€šaÃääd•[Aß”¥Cý+GÝUBøŽÊ>D!§ðòïV”.*1zôhhQ³É JB• T B¨wíi×xÿï]Ô‘oåùé4**J,§¥¥áÓ$44ôܹsx‹ {èÐ!WWWùÍ‹”Uâ‡~ἡé´%• ÑQ%‰‰‰(W?FY%Tö*]þÛ¿¥*öíÛ9’‰ÔÓÓSúOumV…BŒ_å(N÷’Î;jö+G4‹ÅrII‰‚Jà—“&ïE̘òWÚM³*ñá‡Jç¼Q%¡Jª!T‰{¥ˆOâ¤&Ä?)[*uô»yóæÒÒRÄQ¸r&Æ#V‰["¥‹+&°ÖÅÅeÇŽÍ&a q­qff&v6!!Aº­SCÓÅnnnÒQFˆšUUU˜½#GŽlÛ¶M½ke•PÙÇcÇŽ}öÙgÒ]ƒZ¡•••îîîØPH?æ$88Xrm*„ Ï•À/CYY™tƒ|+´‰P¿;®Â!V8ލãëë{éÒ%xœ¿¿¿‚J€£G⸠c¼ÅPqìàJèZüöJ·‡jöÐ(¨Ä”)S°ïºÛU‚ª¡JB•¸s*Q\\ìáá°ºaÃÄŨ¨(éâh… ŽÁìß¿_<:å*·òòòW[ä^¹ è¢ MOa@âE:MJJ:xð Äé1˜ü+'ÝUa„!!!Ø)DYÄuDåV¨„|QóäÉ“gFG•hh:石hÐÛÛ›lܸQåi×§BØÚ‚†©@J׸Unn.ªá§Ž‡Xá8ŠT€ú[¶lß)¨~?ccc]šÀ Å-^Ñ  cØÒwÍmÀzšýÎ…*AU‚P%¡JÜ5•TUU!25{kMêêê¯îÐÜ‹¼'–UN‰G¢Óå)Õ¨ÓÒä©moýuê¹sçvìØ犎ŽFvUnYš8…¶3nå+ÇM &\½üöâ7VÜðööª!T B• „*ÑT‚(sUBÔ`ÿþý{÷îå S%¡Jª!T ªU‚P%¡Jª!„*A¨T ª!T ª!„*A¨T ª!T B• „*A• Jª!T B• „*A• Jª!T B• „*qŸªDiiiYY™.ÿ º;«û¨„*AU‚P%¡JÜs•ˆ‰‰±±±éرcûöíMMMUž7§Î;ï¼óÚk¯ÝÞÝl騄*AU‚P%¡JÜ[•@(²°°˜>}zUU–wìØ!ž+}'T"66vÓ¦M·e T B• „*A¨„P%î­Jœ>}º]»v§NÒ}“V«ÄܹsGu[Æ@• T B¨„*AUâÞªDee¥¡¡áÚµkÕW¡_++«nݺ¹ººjT muPîíí=`À“Þ½{GDDøúúZXX˜™™ 4hÉ’%ºÁÃã_¿~:u1bDff¦´jöìÙNNNR54{ôèQñö“O>Y¼xñž={žyæãQ|IIÉŒ3,--Q@• JP%¡JP%!T |ðÁíÚµC2GX’—;::öïß?)))<<ÜÜÜ<&&F]%´ÕAÈoß¾ý† Ο?_PPP\\}lmmwî܉hÂà.\øÊ+¯ Lfddˆ«6¨T ª!T ª!„*¡±‹µk×êëë÷ìÙSºÞÝ™™™ùúúŠ·'Nœ6mšŠJh«ƒr“—_~Y¥#m'8i2Ú_ºté¯Y½¾9_•°²²B”öE}< ;hgggoo6ÓªU‚*AU‚*A¡JhÛ×ôô'Ÿ|ÒÔÔ x[XXˆpncc3º‰=z 2DE%´ÕåÞÞÞº«„Æ1œ={V.`ܸq#GŽÔE%äWshÂFDD[[['%%Q%¨T B¨T BU¢Y*++---ßÿ},#S!i;99EÜ !!A%¨k«#ÊÕŸ=ѬJ¨Œ!77íÄÅÅIk§L™bkkÛR•Ð8…yyy&LÐ××wss£JP%¨„P%¨„ªD³Œ?~èС Mçÿ-Z´H½Žü'ujkkQ>iÒ$•òyóæ 6L÷1TWW8::J«ºvíúÞ{ï‰å±cÇÚÛÛ‹åcÇŽ)¨„Æñ(ì ÄªU«ºté‚ù§JP%¨„P%¨„ª„ ÙÙÙ{öìAãXÎÌÌDº–¢ûÊ•+-,,ÂÂÂÅ«ªª¤»'Ƀº¶:+V¬èرcLL â7âYnn. CBBLLL***tÃÌ™3ûöí›––­ððð€/œ8qB¬Z³fÍSO=…Iˆˆˆ0`€‚Jh¶Ácœ%%%˜öeË– >¼ßJP%¨„P%¨„ª„‰‰‰:u244ìÞ½»¾¾þ»ï¾+"}CÓÿÛ/_¾ÜØØØÌÌ €|®ÔµÕA8Ÿ;w®aæææâó4C‡…)ÌŸ?_Ç1 áO:ÕÀÀÀÔÔ´K—.¡¡¡ÒVçÏŸöÙgaýë_ÿ”UBãx´ ÞÎÎÕ`ƒ†ÅP%¨T B¨T BUB¥¥¥ÈQ•••ê«Ð52~*l®­<˜J`+//Gy‹Æ€ä¦ÞŽ@ºM“.hÆÁ£&&ù7M JP%¨„P%¨„ªi9T ªU‚ªU‚B• T ªU‚ª¡JB• JP%U‚ª¡JB• JP%U‚ª¡JB• JP%U‚ª¡JB• JP%¨T ª!T ª!„*¡‘ÒÒÒ²²27\U!444((ˆ*A• JP%U‚*A• „<ä*cccÓ±cÇöíÛ›ššæää(×WÜ-Ò³gÏvš3f U‚P%¡Jª!T‰¶©EÓ§O¯ªªÂòŽ;ŠŠŠîJÄÆÆnÚ´I½¤¼¼¼ &èë뻹¹Q%¨T B¨T BUBGÆ?tèІ¦“‚ŒŒŒ-Z¤^G~‚“Æ:µµµ(Ÿ4i’Jù¼yó† Ö"•(((@Irr2–ëêêT 8ÐÁÁA,çä䘚š •PØmCZµjU—.]¤3¨T ª!T ª!„*¡Bvvöž={Ð8–333¹Å*qsXXÔ ªª kÕ3¼¶:+V¬èرcLL â7âYnn. CBBLLL***tW Ä9}}ý€€$:ô…µ~~~ÚT:tè0gΜ¥K—ÚÙÙYZZJ'Yi§Ê𶤤¾lÙ²áÇÿ¦ T ªU‚ªU‚B•¸™ÄÄÄN:vïÞ¡ýÝwßZÑÐôŸùË—/766633CÞFtWÏðÚê ±Ï;×° sssñù‚š¡C‡ÂVæÏŸ¯£J€%K– }ˆÉêÕ«±!z§'©«D]]ê@"æÍ›WTTw T§Ê°-Œ œ––F• JP%¡JP%!T eJKK‘£*++ÕW¡kd*üTØ\[˜J`+//Gy‹†WUU%m‚h§Ë&'NœÎŒjvœò!aÓ«ª T ªU‚ªU‚B•xp ÷ôôLKKÛ¶m›µµµJVl5T ªU‚ªU‚B•x€‰‰‰±··‡D 6lÙ²e¿d¡JP%¨„P%U‚ªUâ®A• JP%¡JP%!T B• JP%¡Jª!T ªU‚P%¡Jª!T ªU‚P%¡Jª!T‰‡V%ããã[ºUhhhPPú2U‚P%¡Jª!T‰6«¯½öZ;¦¦¦¢\ýpºÐ£Gõë×k[[YYÙ¡C‡—_~Y¥\Þ—¶~‡:mÚ4•777ª¡JB• T B¨÷J%œuƒìì_wd÷îÝÛ·o¿½*±eËØŠAyy9U‚P%¡Jª!T‰û]%^zé¥Û5`e•°µµµ³³ƒMx{{S%U‚ª¡JB•x Uâ“O>Y¼x±|ùøñã'žxÂÓÓSª†á}úé§Ý»wïÕ«—ŸŸŸ‚Jœ;w‘––öÜsÏY[[ß^•())™1c†¥¥e·nÝDaTTÔo¼t'ÿŒƒ`ÌVVV={öĘnj"펃ƒVa+WWW©>?}út•ö©T ª¡JP%¨„ÍÄohT /»F›Ðþúb›o£JlóU®Öº×/i[¯ßz-5øç”À+IŸÿ/~ËG6ÿ7vã¢ÿõïp/=5\¯¿Å×k¯þã¥QW/gêÛX%-÷{ºÏÀ¿>ãï·yíÇvúã…¢‹UNŽ«³èüù¿‚ü¼Y¼¯ÿÈŸÖ{¬ÓØ‘£ÃªÞ½zþRí_ë=Ñ™¯óµõ%-Ë_Cmÿ6íí·TJÜ\œÅòÂùó^?îÛsßd¤Ï9% }7zcÀßžqvZcÜÁðU?Šò•Ÿ|lÑÉk ¾^üáÂÆ1¯ÿUŽû÷”nnn#TbÖ¬YãÆCÂÌÈÈÈÉÉ¡JP%¨„*A• JB”Ø»¨Q%š{}1s@£JÌ Kå–¾~™¥w}¦Þµô~~_ïÊ?õþ7CïÇ÷ôþk¯÷Ÿizÿ~KïË1z ×~¾Å×kÇ·ävì ^ ‡ŠòwÞz«¤å.æ¦ßäa¹îÊåúÚ°E,[¶',ÕÕÕ¡›Ì›7¯èÛóš~þëî`ž—/_Ž­ÌÌÌPƒi¸qÙ5ÄD¥ý3f`„"Mo†ÞÛ]ªúI¥œP%¡Jª!T‰U%n ÂÝn#ÕÕÕ999È{âë 9µµµ˜•ªª*”‹eÄBõO¤§µûƒ^rb‚¼Ž$‰Ÿâ­8Á ]«·/Áœ¨„P%8ET BUâ'<<ÜÓÓ3--mÛ¶m6/}úØÚÚîܹóüùó(qrrBÚGvBèÂZccãââb±!Þ>ýôÓð T†tèÐA öŽŽŽýû÷OJJ 777‰‰‘6‘·¦&Mšô /¤¦¦4Ü|­„¶F.\øÊ+¯ øeddäääP%U‚ª¡JB•¸›*1pà@ooïQ£Fµoß~Þ¼yRÔ·²²BŽo‘ ÌÌÌ–.]*¥kDz$y©òóÏ?/"€¼þúëXÀ°±•¯¯¯(Ÿ8qâ´iÓ4¶ß v‚“¤ ØÙÙÙÛÛcŠZ¿ÿT ªU‚ªU‚*AU¢µ*ѹsgdø™3gÊT¹ÒÙ³gÛµk.•Œ7näÈ‘+»¸¸ MŒ¼°°[ÙØØŒn¢GC† Ѹ‰‚J(4alllmm””D• T B¨„*AUâ.«„t‚“•¨Ÿ››‹<'•L™2ÅÖÖVce777$| Ù [999EÜ !!¡¥*¡ÐÈËË›0a‚¾¾>:¥Jª!T B• „*ÑÖT¢ººÚÀÀÀÑÑQ*éÚµë{ï½§±òäÉ“ ÔÐtn’‘‘Ñ¢E‹šmÌ›7oذaê‘XµjU—.]Zs¦U‚*A• „*A• JB•¸“*fΜٷoß´´4h…‡‡G»víNœ8!U†Y=z˰°°·+W®ÄÛ°°°ÚÚÚªª*é¾Oê퇄„˜˜˜TTT¨WÐÖ6)))Á-[¶løðá¢ÐÝÝ}äÈ‘"ïi[¦JP%¨„P%U‚ªÄ]S dø©S§˜ššvéÒ%44T^yذa£GîÔ©SûöíçÏŸ1‹UùòåËÍÌÌ` ¨©­}| :ÔÈÈ›«TÐÖˆ¡¡!,cðàÁpQ8cÆ h²ŸÂ2U‚*¡¬E7€P@oñËO• „*A• „P%nä(„+•&Åþ‹/"q©o…]¸pá‚ä ”——×ÖÖj\¥±TÆ„´~¨T‰›U¢°°0???++ëØ±c‰‰‰)))X†Sàw»ººš*A¨T ª!„*q{QÿŠá¾*A•©D^^^FFFðÎ/Ç,ÚÑùÕšÑyÁÁ¢|YÜÿ9Äÿßìà³!;# ¨„*A• JB¨|ñE•¤¤¤ÌþlDzÉ.1߬=T²"æ;=‚¾›‹^ÝU6çËÊUI5Î5+•;%%7}C• T ªU‚ò°¨„MÊ|ix-ÿ¨á£¥?µ×¹þÑG×–.ÅO¥:ËW\û¨ñç}³ãÆQ%ä•&Ì uÛ™µáH±ÇÑÿ¬>XnáUhýù…7ÂÊüߪc5n§j\Žÿ4ïó¬èèhª¡JP%¨„‡H%š‹‹¥¥¥eee*áê6ÔòC{ٵο‰J=ztÄÛ¡^>ñ¥^ åkâ*žÜøí‹Ÿ_˜²÷¿ó^þôxóW5.§ªß (Ø·oU‚P%¨T BUÄÄÄØØØtìØ±}ûö¦¦¦999¢üöÞßµ­ÝÞ ©vM˜™™ 8088¸¨Ä=».UBM%þ6å ¯ÈŸ„ïÖ7©„¥÷·6þ^ »8;öò²”‡“5«OÖ¼ífÏž=T B• JP%!T‰šš ‹éÓ§WUUayÇŽEEEbÕîÝ»·oß~7U"66vÓ¦MÒÛÛ;ônkk{âÄ __ßçž{N__?77÷ž¨ÄÝMªÄ­¨„ͤ­^g6ÆÿÇ3¾Âá`E÷ E/l)¿ã¿3¢//J¼òIÆ••é5S6S%U‚*A• „P%9}út»víN:u§çR•˜;wî¨Q£îÐÐûرcÅò‘#G°×÷D%îènR%nE%¬_ ^·¿pC|Ùº#ŸÅþ÷Ñõÿt̶‹ö‘Õóâ¯,=ŽWõD_ª¡JP%¨„ªD#•••†††k×®U_õÉ'Ÿ,^¼X¾œð·¿ýí/ù‹ŸŸ†´páÂÇüÿøÇ·ß~+ªÍž=ÛÉÉI,c؃ B^}õUéØØØ§žzjÅŠ¢Ú˜1cfÍš%¥b4‹úê­!NûûûóÍ7ÎÎÎÆÆÆâÙÁÅÅÅ“&Mzá…RSSÅ}ûå›ÀPÀÛ¾úê+”c+Ô—ZFì8p Ú„¡Ó .(«ÄêÕ«¥ïbÞ™úvŸž=l¿¸sçÎóçÏkì ê!ToŸ~úiø*C:tè ûU«{=Ý?>1 »lnn# ¯OŸ>¶¶¶¢}åÝtttìß¿R’j#°¶W^yÃÈÈÈ.f¡JÜv•xþÕàu…Ž–¹5~+Qaþ¯÷ó+})ô¢}Tõ~+AU‚*A¡Jhê \__¿gÏžò˜ª¢X‹~±Œ~‘Ã?ûì3)åB1Z¤ØÔ9tèx«ræ´ÉÕ«WÍÌÌ–.]*Êé³Ñ¯T­K—.,×ÕÕ!ÞoݺU£J@7¼½½ÑEûöíçÍ›÷ëæSß¶zü±‹åâ­Æ¾PYR‰çŸ¾¦¦F¬…¼þúëXÀÚŽ¦fë½}Å N'Nœ6mš4<++«‹/J#Ѷ›h]óD¹¼;;;{{{LéíüÝ¢J¨©Ä ÿvÛ_¸þð÷.qŸ~Y¡ïùï§}KG…\|cõ?_YreArõxoª¡JP%¨„ªÄÍûšžþä“OšššbA£JHËåååÈÿ)))âíŠ+¬­­[ª©©©ÎÎÎÕ¨©œ±Ïž=+o Œ7näÈ‘[†VøûûkT‰Î;£ý™3gÊç *ñÚÄñÒµûB’—TBÞ—‹‹ ÚÄžþñ‘vŸ·9j4èÑ£Ç!C´9”¶ÝD#èÚÆÆfôhÕF"""Œ1ÏIIIT‰;ª®*QÖ¨1fÿîéS:2ä¿o…_þ ®I%RªÇm¤JªU‚*A¡J¨RYYiiiùþûïßQ•ÀÙÛÛ÷îÝÛÓÓ3!!A•ÈÍÍEµ¸¸8iÕ”)Slmm[ªÒ NrTTBc_/¾ø¢F•pssCÂÇ}ýõ×P‰•«öí`×Zªh];99ED¨6òòò&L˜ ¯¯N©wN%Ü# ½~=Áé¿®/껩t̶ÿ¾½ÿòì£W¿²$µúª¡JP%¨„ª„Æ?tèÐV«²:4A,;vL£J <99¹¡é|$¹JÌ›7oذa껺ºÚÀÀÀÑÑQZÕµk×÷Þ{ïN¨„ƾ°SUbòäɃ jh:7©}£9 ©ßÁI]%´í&122Z´h‘ÂZµjvðöœéD•ÐtÙµGÓe×ëâ+b+þìU4°ñf°§G]^xåã ¼ª'o¢JªU‚*A¡J4’\„Ʊœ™™‰(+¥èV¨Äš5kžzê) ,""bÀ€UâÂ… úúúßÿýÊ•+¥;)“ŠŠ õNgΜٷoß´´4D}luâĉ;¡û²¤0 q[ªXXXHƒÿøÓ•&æ;w‡ÕÖÖVUUI÷˜RW …ÝÄ„ Í°0ÕF°III ~–-[6|øpQèîî>räHqᆶeªDKUâ_Q…¾‰eë*UXy=P:i÷Å™_^^š|ÅádãSêÞÜB• T ªU‚B•h$11±S§N†††Ý»wGÂ÷Ýw…V´N%Ο?ÿì³Ïbí_ÿú×3gÎh»VbÉ’%ÆÆÆ;v\½zõüùó‘«Å™<ø$:t(t…*› WO:ÕÀÀÀÔÔ²ú› Ün•PïKº,ú6lØèÑ£1iíÛ·Ç8qhÄV5µ?¸t¹¡‘±™™ö5µ©„Ân¢—åË—crT±³³Ã1‚e <^# g̘÷ÝÒ¶L•há#ꂽcÎø%•mH¬p:\ÑÓ§èÅ Ò×÷\œðò'ǯ¬Íªqɬyçsª¡JP%¨„ªÄo”––~õÕW•••·eÌò»iq½¶¶V,ÿý÷òUPi• 555ß}÷J¼U´<¢NÞ—\%DìÇ>^¾|Y^_<¢îçºk.\üB…ÝÄæê ²¸ƒÖmƒ*¡I%|¾<ãŸR¶1¹ÂùhEïÍEC¿(~qñá˫ӯ¬Ë©ñÌ®~/ˆ*A¨T ª!„*A”Tâ&MPS ut~Úu[*¡¦/NÞ{&0µlÓ± ·øŠg¶-}7ââòøË.§j¼óñªž¹µ€*A¨T ª!äáR ;»ww¾4¼\]\œj¯sÝÕõš³3~7.ñ¥—4×qs¿æÚøó¾Ùñ1c¨ê*±åЙ­ie~Ç+Ö%V ú¼è¥¥ïG_ü,ñ²GVÍæ35[ ªç†P%U‚*A• „Z³øØ•%Ǫ_ñ¡JªU‚*AypT‚ÜüVâÁ¥'8yFzÇÿÇãh…ClÅŸ½Šúø•Žßqqú—Õ ¯|œqeEzÍäMT B• JP%!T B• Jܤ{m«W䟄ÿ¬O(w--í¹çž³¶¶–¯BïŸ~úi÷îÝ{õêåçç'Ïó «TTbΜ9]»v…­ˆð&W 4âááѯ_¿N:1BÒf»vpp°²²êÖ­›«««†`__oll<þ|m»,W‰ëW¯x¸»iƒ¨1`À è ’¤XõÆo`˜1|€*«Ä¬Y³äƒ),,ÄT_ºt‰dT BîG•àœ¨„ª„„££cïÞ½ÑrB>Ò”´ÊÉÉé±ÇÃDAAò°¾¾¾”çV©¨Œ`ÇŽhyÛ¶m**FÑÑ/‚‚7òqqq³ícÀýû÷OJJ 777‰‰Qé ‹ÐÐP]TÂÉa¥E'scÀÛ§Ÿ~zذa[·nýðÃ;tè Vùúúúûû#v:;;c“úŸ‚JIî°bÅŠñãÇó/Œ*AU‚P%¡JÜ×*.zõê…ÜŽe'ƒU«V‰UuuuÈùÒõ Mgyzz*¯Ò¨X5jÔã?^UU%©R™™™ÙÒ¥KEÍúúzxÁÂ… •ÛÇT`+$yQ>qâÄiÓ¦©tš’’‚.šU‰«µWÌŒ —.^¤>QíùçŸÇ´‹œ&Mšôú믫4…µèëÀÁC *‰€nˆ»9a×0ûöíã_U‚ª¡JB•¸¯U"55I9êÇ&FŽùä“OŠ”….°Jz¥³ŒViS‰ÂÂB###ˆƒ¤gÏžÅBxx¸Tyܸq€rûh«lllF7ò!C†¨tšŸŸ¯²9ˆ‰‰#‘‡ü³g ÚýA/|ïõ14¨]+áââÒ¹sgiêœçÎÛ¸‘Ê×J¼õÖ[#FŒÀBttôc=&(E¨„P%U‚ªÄ}ª³gÏn§B²ÈÕó¼Â*m* ÅÉNØÜÜ\,ÄÅÅI•§L™bkk«Ü>òV999EÜ@ýÛ‡êêjQG^ˆÞÿüç?«„üÜìÓP‰¸ƒ±êcPW 777ccã_š°··ïÝ»·§§'z×E%8 ¯¯_RR2iÒ$é‹B• „*A¨„P%îS•¨­­íܹ³ŸŸß7¨¨¨077÷nEï–––’ ` Ò[…U *]xê©§¬¬¬„J ð8::J•»víúÞ{ï)·e##£E‹)ïÚË/¿üøã£ e•¨þßOú½£Ã*õ1¨«ÄäÉ“ „ò‚‚ìBrrrCÓ Kº¨ª¡e 2•——Ç?/ª!T B• „*q_«Ä¾}ûLLL“ä…³fͲ°°@Xž6mZß¾}´&L˜`jj*]¡°J›J€¸¸8ñҸìzæÌ™h$-- ™ßÃÃå'Nœh¶ý•+Wb„aaaP¡ªª*ù=—$²³³Ú‡ vþüyQ²|ùru•h¸^?sÆô¾}zkª!ÿc̘èèht íB9r¦¾¾~@@¢&ƒM|7û5{3Ø%K– æàÁƒ¥ww÷‘#GŠhªm™P%¡Jª!T‰6¨¯¾úê»ï¾«RˆPÄÙÐt¢Q¯^½ðÖÒÒYZ~“Â*•o¾ù¦¤©S§Àºté"¿ç’Bû˜ x±±±™™T‰]ãÞ>}ÚÚÚZ´ xôÑGÇŽ«®U•ÿú֛ǀj'NDªG_hgþüù8’ °cÇŽ«W¯F¹QG“ƒG”UʃF䟶3fÌ@‰P9mË„*AU‚P%¡J´A•Ðt']k¬û*ÝA6ClS‰vͶiAÞ“²½6‘áKJJ4¶/=¢Nã0áÕÕÕõõõ¬GeS”ÔÖÖŠåïʾßJ(šš ñQo‡P%¡Jª!T‰U%dŸv-hÑÓ®˜ýôS++«ž={úùù3&$$ä×DýºƒƒV¡AWWWm*1gΜ®]»ÚÚÚŠ(W ´àááѯ_¿N:1BÒ ± ývïÞ½W¯^èW®ׯÕ9|ºÂªÛŸúÕ¦³fÍš?¾¤9_|ö¹K—.‰ˆŽŽÆÌXZZbz‘?ußMB• „*A¨„P%Ú¾J#‡††*¨ÂùÀýýý×®]‹ÊˆXb•¯¯/ ‘»œá#[³›¬\¹ÒÂÂ"lëëëK‘ÞÑѱÿþIIIáááæææ111UF°cÇ´¹mÛ6•prrBãˆvÈ„†„½bÕc=†¹‚‚äÿ›úuXÕ¿O¯¤„x…~µ©D`` ‘‘ÜA¨Ä¢e+^7^ÌÀÓO? Ù¹sç’%K:tè ûnª!T B• „*ÑöU"%%ñø·ÛiR‰.]º \54Ýâ ©xëÖ­*u0*4rèÐ!åMjkkMMM—.]*mØ£GñöÎÌÌ Š!Ê'Nœ8mÚ4m*…Q£F=þøãUUU’J à¡©q„õ… Š1@1>þøcÍýštôݰ^œà¤­_m*‰€°ˆ;\Õ^­ëôØãa{÷‰xþùçEà“&Mzýõ×ußMB• „*A¨„P%Ú¾Jäçç#ïÝ»WA%ä×JÀüýý¥·©©©ÎÎÎsçÎE#‘‘‘Ê› ¤É«5È®Y(,,Ä*›ÑM |È! *úFFFI%Ξ=‹…ððp©ò¸qãFމLVíÛ·Os¿ú£ÍsGÿ}¤B¿ ×J¼õÖ[#FŒÀBDT´YçÇ®ü|U}\\\:wîŒã¨ãnª!T B• „*ÑöU¢ººáÖÑѱ¥*ÙÛÛ÷îÝÛÓÓ3!!A•@0C5rõH‡UNNN7@› * ÅÉN˜™ÜÜ\,ÄÅÅI•§L™bkk+éRbb¢æ~ÿôG'‡•áûúUP‰èëë—””L|uÒüEKÅe×*3àææfllŒÓq7 U‚ª¡JB•hû*ÆŽûØc!)µH% Š“““šÎ ÒE%ÀÀ¡b9''ÇÔÔTDzì‘‘Ñ¢E‹”‡*W ÌÆSO=eee%TNd`` w¢®]»¾÷Þ{b---¥‹#Зô¶±_Ãö‹æÏiõœ°ïè#×ooøUvžF•˜}ºüi×mêáT ª!T BˆŽðªªD[&&&ÆÞÞ1lذeË–UVVÞû1ÝšJ aB%Nœ8!W ///>Éš*AU‚B• JP%pnù[‰_ëÈT‚P%¡JB¨T ªU‚*A• JB• „*A¨„*A• JB• „P%¨T ª¡JB• „P%¨T‰;Á¥K—’’’ÂÃÃÏž=«þ–*A• JB• „P%¨·Âž={Ö®]›‘‘!/D(ܶm[[;&b´‚7nß¾ÙOZ ÒÔyzzž8q¢¤¤¤¬¬Låí½R iüû÷ï/**º•Ùï/¡JB• „P%¨÷D%¶nÝ*/LJJºÓ*qîܹ“'O¶b´ÁÁÁåååØý¬¬,üªcœ±6???77W,#:;;KSy{GUBa×0~L5ƼyófŸ[™Cùþª!T BU‚*q÷UbãÆäKR!R. ï¨JÄÆÆnß¾½£Ý±c‡<äïÞ½ÛÕÕU>xDÃÝÝ]ÛÛ;ª »†ñïܹS,#¸bÚoúŠ„P%¡JB¨T‰ûJ%<ˆ4.ýGzEE…‡‡—TÃHKKóóóC9 ‘¯Dù’““¥¦P„Ñ¢~RR’··÷† RSSÕ;E_žžžÈöøè9|ø°BÊ**++È;†åøøø¸¸8,äææ¢wggg´®òVt÷ë½Ö§&ÅK*!Z@¤Ü²e‹ø²5Q¸nݺõë×Ë÷EÔ,-- v¥¦¥ •Pß5m*Q\\Œ‘#¯J“¬qÒPž€rŸS§Na÷³³³åcP>FêCMOO§JP%¡JB¨T‰Û¢Hªø)‰Cbbbttô¡C‡¤’””Ä㌌ $«ˆˆx†òÌÌL///ŒPTƒ’ˆ ¿@¦ETF0CG6S雇……–””üðà ]4«ñ›4È®@ðC~vssCûååå*ooá×ùë\œ¾)üõ‚ ´°iÓ¦­[·æååá“QÔôõõ={öl~~¾|_P-øûû#‚BdÖVTþ•Pß5*cºwï^ÌžhµMŽf†i‚À>$_+¡0*CE ç–*A• „*AU‚*A•h…J ';;;#,¡YQJR‰úúzwwwé?Ø1$]¬Å2†äâârþüyQ QË¢¾ôÇîÝ»÷ï߯ޯü, ….tQ ü‹By´ÎÊÊB#RùÛ›Fx½~÷öýûöJ©ÛÛÛ»ººZ^Ñ]œà$ßÔ\¿~=â}cׯ;9»d|uZ—œ6lذk×.x ²½Ø\uH²Iá—ÏŒð&u•Pž@•¡â>}š*A• „*A¡JP%n‹J }WW×ÌÌÌòòrÄNt*©„8ƒH~£$$áÐÐP)ôFFFb’1`Q?((h{ˆ¾!åy[¹‹fUJÜ4Âm!½<¾R çòšø|Deqv´/*5×y®?~â+]T£MIIASrÃÒ6i?üðÊ •UByU†Šã‹ØL• JB• „P%¨·E%¤”ž˜˜ˆ$Œ·’JˆÃ"\I›ìÝ»WºãÒ—»»{]]œ">>%ˆ^¨´\x·<•çmå.”UB|3’––¦»JÜ4‚¯ ósо=¯1u‹š˜“œœì©|_Z­â§óçϣ傂 C’M,ÊÏ;§¬ÊH• JB• „P%¨wT%òòòɽ½½¢ä*Mpvv–_^íåå%–±*qâÄ l+. ¨¯¯wuu•.ÖòvHHˆÔˆBÊ*‘””G§fé~‚Óo#¼ùN*©[ÔÄPÕïबÒ®iS‰†ç‰“©&Íßßû(–+**Ä W*cPž@ªU‚ª!„*A•¸£*!Îq')ÉUBD²Í›7—––"²¦¥¥­]»ZˆŒŒÄ†ÁÁÁR‰¸RÁLŒ\ã혲³³ÝÜÜ„4Û…|´H阇ªªªâââƒBa  ê™YA%náÕŸ®þéûÿ|§1u‹šHïØüç&¤}Ѩu×oâ”y:ÛÙÕ­ê—±¬òÚ¶'tÇN±üÓåjl…ñöH|‚»‡gnþ×?×]«©ýù»²ï¥r'g—è/Œ;üEˆÇz¯´ŒbÕ¾ýÒæQ1_úlÚ\\RZ{µîØñ4G§µ%ßýG½^èôÄ©¯Tö@>¦›*AU‚B• JÜ•ˆOÒcä*Þ÷ïßïììŒP½~ýúœœy â\ùt×××=z~úðq{%°;øEEè@³]ÈG+žš›6mÂ[¹§è®¿ÐÕÅm­cDø>m*šqqq«W¯†³È÷E£Jü\ßøt‰/_ñúbõZ×È/ŠéºkÏÖÐÒÛS§s?s\‹ŸX®¹Z î(¶Zãâîèì¶{_„¨s¥îz\|ÒçÁ!1±å?\rv÷L?•%V¡Ë?Õü¼kïþUkœ±¹Ëºõ'³r¤^äÕðÂZi¨Ò«þAt ª!T BU‚*qGUBwêêêÔŸ§FŽÑJ·ŠÕâ™ü Ô-íâiáÿU^¿z¥ÙGÔaò+++•÷Eåÿù«þwùçºkê_L(¿êê¯W^ú?5®-ùî?ŽNkÿ]|AÛæµWë.UýÔ²¯S%¨„P%!T ªi…NÜž§]ß9nÓÓÓKKKsrr‚‚‚ooûòçtS%¨„P%¡JP%¨äQ $ÛÈÈHq7Ú#GŽà×€*A• „*A¡JP%¨T‰{U‚*AU‚B• JªU‚*AU‚B• JP%¨T ª!T BU‚*A• JP%¨„P%¹¤¥¥Eß·`ðT ªÄàÉÉÉEEE­Ø°ªª ÃÖ±rNNŽô¼9ªÄ©eªU‚ª¹¯A ÷»oÁà©T‰ûýuke¸»»k¬¶qãÆôôt±¬þ7 ’¹¹¹‰ÏUTT4»‰Ž-· íß‚Jˆ©ËÈÈâè Pzºßíðíž u•¸ÓG*AU‚Û®ÁÁÁ÷×÷0U‚*ñ`¨~™Ëo -ðËU"???77W,Ÿ;wîäÉ“êõëêê<==###1r,£þ¥K—î¹JÈG~»TbëÖ­ò¤¤¤û]%4ÌR 00°¥7Â¥JB• J´µL~Ÿ›*A•h…JìØ±£Ùjr•»}ûvõrX uYYYIÎZ¹5•À´`7åOèÞ¼y3 ïk•h›Œ5ê­·Þ‚©Q%¡JB• JP%Ú¸J ë„„„ 6øúúž:uJ®ñññqqqX8yò¤§§§»»;>A>,ߣuqq9vì˜zËHII‘zÁ¶Øy¾={öl`` ——×Áƒ¥/:EØÛ²eˉ'Ķ–ÞÞÞdjjªÊÈQîãパcï²³³UF.ª¥¥¥ùmòõp]»í‹­R ¢ZiiiHHv‹ïVêof×®]8P ÌŒ(:¹¹¹EEEmݺU”àØ¡5ìËúõë“““¥m1]°°óçÏ‹=ÍÈÈ@û˜Ì'Œø*ªíÛ·½øûû{xx ;DY]ZÎÍÍÝ´iv%øˆÇÄbsÔÄ!C ö]L5ö1ø‹mLMKWÙ}ù²Æ#r÷UBðÑG•””P%¡JB• JP%Ú‚J 0ÿïRPDÚGòÌÌÌüᇤÀ,üXÀ`ÂÂÂ2íPM¥å˜˜l…xŒÁËË•¥‘cQùMjyóæÍÛ¶mËËËC$†Œ`Ò*dcDt¬ÂgVCÓ•àø,..ÆæëÖ­C5áäÈÌ•••ˆÁG.vÕ2ÒŽ_Z¾ÏÕÕ»#UCËH°!GGÇŠŠŠŸÕ E´ÆÏ€€QrèС½{÷B%¤ìLQ:ãää„Á‹òÝ»w#…¢”ãŸìuddd~~>¦]LšT ­a$˜OTƒ4Û22?„ › £ãÁ¿ XFBƑ߰HûxâÔWG“Ž9:­•ï¾4K Gä^©3f F."=U‚ª¡JÈ39>—_}õÕ¿ß`æÌ™R̸'”——¯^½züøñT ªÄƒªòË®Åè1;>>^ª¦í²km'8 ÃѦü e•@l®««oá)HæÒ*ooïêêjñaØÝÝ]ºLùyÿþýXÀ\¡\þ‰Æ‘‹Í«5àôKý5ÈD@ª†<SüŒœY¯Æ®]»Ž9’““³fÍšªª*” /Qˆ€øV±ÛJßY`DZ;Ò× T,ÃÂ`+G«°9&Aª)¨­­owî܉=m¶e¨„hYŽ™Á2æVR ±õ¿4\©»îäìrúôi*¡íˆÜC•¼ù曉‰‰T B¨„*¡’Éñ­×D—.]ðzgÓbzúÊ•+5®Â'Ë´iÓyäŒdàÀT ªÄƒªpë7…—.]BÂ/((¸E•ÈcP äv,è¢òKRSS=<¯„*AU‚P%ÔëãŸt…»Jâ#£¼¼\—~ÑÈ AƒÐ‹6• <˜*A•xØT üK ÉSþVE%BBBší9VúµÜ¹s'ZË%%% *eé³Ie†„L«ñ?¥ýýý¥ûüTTT¸»»«¼®®ÎÙÙ999YR ì`TTTëT"//ÏÅÅÅÛÛ[耤 ƒlJH¢cË*@vÖ­['N—jJÈȽR‰?üðüùóºlB• „*A¨âW÷‘GùÝï~7oÞ¼3fü©‰I“&áã@DCCC¬}å•Wþñ<öØcØpüøñUUUX‹–ÿûßcíÒ¥KñQ2eÊ”ß5éààо}{T¶´´´µµÅ‡H+Táá‹»ˆú•­T ªÄ­«„ü²kéÊëýû÷oÞ¼¹¸¸i e9ÈÎÎvssCÊRiS¢)´€ÜÛ˜Û›À‚¯¯/\¾°°±_E%éÅõçÎóôôÅÚáÇãí£>ŠOºººº'žxo/^,ÖvïÞo—,YÒÐtV€Ø*·ýû÷¿Åo%Þ|óM½»H³Ž@• J´B%ÖތȴøcAàÇ[$ɳgÏj;Á £Âï‚ôÁƒåÍÂA<<<é°Ñþl¥{C‰OnÙ²E\Ú W‰Ý»woß¾Û:;;£Méò õ„Œ‘ºÑ54:#}ÓM’’’ ±±±¤ß¬¬,õF0¥Ð%g§5îÎkÖ{¬ËÉÉ‘Zn©JLšô ¹Jh¤î*¡mBtiY€©ÀÀ<㸴T%°¹ÆÜeà}ÒE÷T B¨„´H%ž{î9¼EnÇ2þ%k¥›Q o_~ùeñö­·ÞÂ[sssñöÉ'Ÿ”T·W%îÚ·vvvT ªÄP eð'£Ë#e‰o U¨ªªBÓxÓN±ÝâfAØ˺Œóƒ9Ñ–o1Qò”®NÝϵ?ýßEåGÔÝ:ʃT Ù ѱe1áêÛS~D¤Ø\Ç#Òv JB• T u•À‡ X+ýÇŠJ,_¾\T']ÜQ•¸k×JèèT ªALOO/--ÍÉÉ ’þ¡Ð’ò›ÚõƒD«Uâ~„*AU‚P%Z¡Ÿ}öÞþáÿ›G• T‰‡ DAüC"BBBŽ9‚y£J´Z%222äO§JP%U‚*Ax•øàƒð¶OŸ>âmÏž=©„*A¨­P‰ûª!T òpªDJJŠü %ýúõÃÛÉ“'c¹¶¶V¬ÅVr•°²²Â?õuuuùË_ð688X¬W 6 —kˆ –GŒ‘——§ñ†–øÀ511A333•ϪU‚*ñà¨D}]ãƒújø…*A• „*A•ؾ}»½½ýš5k~ÿûß‹{4?~|åÊ•’h”””H*1pàÀ¿ÿýïݺuûÝï~·lÙ2écâСC;wb»¸¸`¡GãÆ;wîúÅÛGyäwÞQ¿2\\Á-øç?ÿ)OnT ªUâÁQ‰û%ûÎ…*A• „*Al•hòœð)€ßg• øÜw_Ç‚t÷uAyy9>eîɰ©T ªD[±‰õU_G• JB• T ]TB㣱Ûò°©T‰ûW%BCCƒ‚‚ø;rXU‚*AU‚<*Ý*¢¢¢ÄCèLLLöïß}·À€©T‰@%^{íµvMèëë?ñÄ£FÂßQ³[½óÎ;Ø¿#T ª¡JP%H[P‰Vóî»ïÚÝ`ìØ±¾¾¾~wªUâP‰Áƒgee‰‡,:Náíí}ë*»iÓ&þQ%¨„P%¹s¤¥¥Eß·¤§§?*Qócc`n ¯Ë?P%î¾JÈODG'N422B·¨sçÎ5jÿ‰£JP%¡JBî-wV%Dfn ¯ô/ÚФ?”*ÑÐtï}}}ggçÆ(zýºƒƒƒ••U·nÝ\]]5ª„Æ:¾¾¾fffƒ OuÑÖ¡JP%¡JBî{•ð²»—ßG wªDÛP ðÄO@°àèèØ¿ÿ¤¤¤ððpssó˜˜u•ÐX§¸¸xÒ¤I/¼ðBjjjAABSäAR tÄtª!T BÈC§÷6Æ·…1P%n0dÈ¢S333___Q8qâÄiÓ¦©¨„Bù N ÕȦ?_«o#6A• „*A¡JP%î¾JôéÓçý÷ß/,,l×®Íè&zôèÅPQ …:r•P¨F<•h#6A• „*A¡JP%î²JTVVvèÐaݺuHVÈÿNNN7HHHPQ …:r•P¨FH•h 6A• „*A¡JP%î²J888˜››WTT S##£E‹©o%?ÁI[yóæ 6L,+T#ªJÜs› JB• „P%¨wZ%ììì™JKK“’’,X`hh(Ö®\¹ÒÂÂ",,¬¶¶¶ªª*33SE%ê„„„˜˜˜@I”«‘û]%ê¯ÿRW_/^Wëëå*Ñhõ×Qáž¼ylôØ÷å¿¢o<ðí¾§JB• „*A• JÜ¡§]ôîÝ{òäÉÈTÒZô»|ùrccc333x¸­“ŠJh«ƒO–¡C‡ÍŸ?_¡¹ßU¢NMä/åµwô¥÷ÒÛzo~¨÷ö½im>|Œ*AU‚ªU‚*q{UB0$+ülEòòòÚÚÚ5EîS•PÿVâZSb¿·ßJ¼¸jU‚ª!T ªUâ^©¡J4«uMm¶ÁË®ÿu˜*AU‚ªU‚*A• ÷‹J´›ÁR%¡JB¨T ª¹_T¢M=¢Ž*AU‚B• JP%È}¡mÄ#¨„P%!T ªU‚ÜG*Ѧ JB• „P%¨T B• JB• „P%¨T B• JB• „P%¨T ÒFAN†AÔ_kT üÄò/×ÕUqíz£Jà'–['T &(B•à!T ªÄ}ª„¨óõ×¹§oz}â¼¼¼Ó§O㧨•“_p:ï·WN~kºÊA›¹y97Úl#P%¡JB¨T ~+AZI}]ãW¿¾®þZ¦ö­ÄÏõ¿½ø­U‚ª!T ªU‚_/”¯ë×4ª«Dë J0Aªÿ¡JP%¨äAãÚÕ_Uâ—ëÚTB\+W]kA•`‚"T þ!B• JP%ȃÆuqÙõUé×IR )Hÿrã§ë­½‰U‚ ŠP%ø‡@U‚*A• HË7n+~‹ä DÔºz½ñÕj¨LP„*Á?B¨T ªy©¿ÚД™ÑįU~ás%¨„P%¡JP%¨ä!^ùu¿<ÍÕ¹¯úë×ÛÎüP%¡JBÚ–J\þ*A• ÷‘JÜåU‚ª!„*¡•³²öQ%¨„*A• JªU‚ªDËb|È»5S©§J$''µtÕƒANNNVVV™í{;°ûª!T BH[T ¼²#©’J q—;w*WÛ¸qczzzKWµ‚={öxzzŠÌ&¨¨¨X»v­tÓ¡»ODDFÕì°1ÈŒŒ y!Ž ·mÛÖÒuœR]F• JB•øÿöάª2ÑûœyΙѼ¤d™Ö©ÔÏɲ›N¥ÇLm&Òhfl™´Ô1kì"–if¦¢)‚r ¹JxCTPDî÷k€‚\vˆ‚‚Pº7ÂGˆl0â||yOïYíÍ^l ôÿ{öã³öZë]ë]ïZ¯ûÿcÝ¡Jô •°íÓÅ6A•¸©*…¸koo¼Ôµ*QZZš““s*úDDD\“J\ߺº\%”#“““©¿tª!T BH/S‰ìÝm®Óþç³òÞÿQ ñA‘ªü«ÿþúŽâß.YZVéöP ¤ßÀÀ@$Þììì®U‰ÈÈÈÝ»w_‡J888@måÌW‰ë[WתÚõDò”#½¼¼0’*ñ+±²²š;w.¼Œ*AU‚Ò›TB$jS?µ©·Àç6P‰ÚÚZ¤ßªª*???ƒ $&&º¹¹yzz;vLnU&Irrrœ·lÙ‚Ÿ˜ØØXQ*33ÓÛÛÛÉÉ éZš‚q&ˆˆpuu•áWª‚Héî§§§w¸®ÔJLB[a¤V«_QDTU¥2 111È–>>>B¯”‰±sïÞ½H•ÆÕŽŠŠ‚É“#¨6Ž=%UBe¥*MŠÖHMM•³as°QÆ*ÑaËÜ2*!X¹reee%U‚ª!¤—©„ñY‰õcÚN%÷ óÝñéìù··€J¤¤¤lÛ¶ YYYˆë55ÿ»Éˆ¯...¹¹¹‰Õaª ·*“$¨mpp0ôÙO,¥ø±"„4d`¤nÌÓ¡J Tb±* #ŠWTT ømݺÙÏx]qqq»víK‹ŒŒTVA]äp•Êà+Ú"STT„ŸHeb///‡° gšª6þ•â””täÈ‘èèh9Fe¥*MºgϹ»qT`¶ÝX%:l™[L%ÀŒ3|}}•·ÒP%¡JBz´Jàß6ŽÂ#j+¸kn•@´ñÆòííí‘~Åx¬¡7!!AÎ)ÿN®2ÉåEG­­­áâô„Ø:Ä]ÄlS™(‹´†Í—*!"ÿì¿oß¾ÐÐPãu! nÞ¼¹¥¥EÔ Â0’!VÚÚŽJeÏÝÝÝe•DbÇÏ%6V!_W…£TUUò'¢>"1¶E]%ÚÚo|§KÄmט„"ø‰–‘A2X—V«E˜‘¸c«C¼ß³grKMUÆ”J´µŸY€‰Ó ¦ª-®qrssyUyÛµÊJUšöŸª««+))ñõõE©ÂÂBà•U-#'<ê:?•IÊ©buÝúAqESll¬ùB• „*AéY*An-•6>)€”‹¤ŠÈÚÖ~Í ,¾ºººž:uJyÉÊ$%¨6Häjq‹6ÙÞÞ9ÙÅÅE<©S•”*͉Ç2±¸ƒüs½ÁºÚÚÿÎ/î¶çÏŸÇäbÕ+£¢míq‚•@Tª,Š5Ša¥J¨¬T¥IÅÏ4&ùøøÔÔÔ`Þ„E!Ù*+ÖaËà(·3äœ2ÿ‹ È©Q3£x‡gjº H–ò.xª!T BU‚*qsUÂL£Lý)Xe’Ä0埬‘N•/q»>Ð2h ãøj°®Né’Ê\+*+UiR™¥å} æ|ƒ–9_ŠŒ,"Æã_q˜‰ŠR¦Š˜:J;ç¦@• „*A¡JP%nºJž†ºJ(gä}âJGÃr ò~•"‚ãSøU‚ª!¤§_=[[ÛÉ“'ÃðïÂ… ß}÷]St¥JP%Èí€8 PZƒ¼ZÞ¹ ¼xI"R´)•P)ÒaMz¦GP%¡JBsæÌ±PðꫯšŒµT ª¹=èð¬R1¤ H/0^B§*aÎñ©´ ã|N• „*A¹éDGG+UâðáÃT ªUâ6GÞ7­¼[Dª„1øûÆ#ºõ½T B¨„릤¤D¨„xÚ¿1ëׯ·ø%cÆoíú«š`ð9ºž*A•P§   //¯;–\WW—œœrêÔ©Ûðpº¾†ljú­ /•“¤¤¤”——wZ¤ûö8U‚ª!ä0±SSÅY %×pVÂàó·“Jìß¿ÓÏ|ùå—»wïFšê´”ñܺj{³³³+++åûݺlV'’¡@§ÓÉáÝÌiX±Ë²²²”#qT`¤|žù˜z·àÙãT B¨„ná§Ûš”7| FÞˆóóWUÿbø§¹gn=•رc‡V«Åóòò¾þúk$R„ù_,KKKsrr®©2oööö7,É‹LqM*qÛÕ* ™œœ|k«„¿¿?ºU‚ª!ļ_AÃK~xó꧃ë‘näçèî™[O%öìÙ#¿¶¶¶îÛ·ÏÁÁAýÐæËÈÈÈÝ»w_Seà2[¶l¹aû›€-…¼ 1š¯×±]]®Èÿ¨§ryyyaä-¬VVVsçÎ…1Q%¡JB®C%zć*q««¨­­ELMKK@xswwwssKOOï0Xv8ONN޳³3¼?.±±±*‹’b*‚=Š„„„`LBBBLL ž8Q‚…dffz{{;99!6K3———`9ÇŽCÓEGG#ìAŽð3×á¶GDD¸ººÊ¿ð+UœíB=±"1 {#µZ­øŠ""¢wZgå*ávïÞ½ÆE QQQ yrÕÆÂqUWWWRRâëëkê¶ksvew¨„Mll¬Ê½©„P%!„*qƒUBäg{{ûmÛ¶á«2¶¶¶"‡#¯"p"?Ë?Y+ƒ¥©yP᯿þãÅeÿ¦f»&•@; £ªXˆ‹‹‹xìRW©8xð T 3·«­ýïüânkpþüy,A>!Öü:)//Wš©TÛ(_ ®T ••"ÃPITûÔ©SÊ œDÀ$ŸššS*aήìr ?ÊûÓ©„P%!„*qÓUÂP¬·Ã‹m:LùÆ7sÕ)---êoлÛn°]=ªÎæ¬ãMýyßÌÄÞ%»²[¡JB• ä6§®®nÍš53gΜ?¾­­í»ï¾{àÀíÛ·wødËî@«Õ®_¿þÏþ3÷Åí¬„ôF¨„P%¹IHH¸¯yFYYÙ£>jaaáããÓÝkÇë¼yó~ûÛßbuãÆãî JB• JªU‚^Ayyùwܬ¯Óé tT"''§®®"C• JB• JB• ¤1}útdø>}úÈÅH¼¼¼ TB«Õ¢›Z~!ÆãÕK &MšD• JB• JB• ¤·€¸hÑΘ1cŒ§âGP¾›©¤¤äé§Ÿ¶²²š={6þ·X¢;ÿö·¿ý·û·%K–,Z´è?Ú™5k–¼K´ÃRT ª!T ª!T Bz;éééB%žþy•Ùš››GŒeÀ@KK ôÁÚÚZLzâ‰'Pü?ÿó?srrÂÂÂÄÒâââÔKQ%¨„P%¨„P%éÕÈðÿÜsϩ̶sçNÌsÿý÷‹¯Ã‡ÿÍo~#®Yzúé§1iΜ9ÆoŸXZ@@€z)ªU‚ªU‚ª!½šÒÒRþ(ï<=='NœøÛvúõë·páÂåË—cž¼Ñ΋/¾øÂ /¨Dkk«XšxKתU«L•¢JP%¡JP%¡JÒ«ÁÏœ¥¥¥ÈÿåååÊ;1á_W®\‰áßýîwƯÊRQ •RT‰Þ¨Å„#¨„P%¹Ù¾}»Èÿ‡–#ñ»&F¾õÖ[ø 5_¿ùæ1CKK‹•P)E•è*Aéª!T Bn[ð37wî\qç5¢¾‰ŸE¥J U6 _ǯÑhòóóçÍ›‡ß>Lzì±Ç0~öìÙmí÷Y‹RÞÞÞê¥ €ƒ 4sZZZüìª!T ª¡JP%éÉìÙ³±ÿü£Ï¾}û^~ùåÿøÿxõÕW322Ä 999¿ÿýïå“cOœ8‘~~~¿ùÍo0æ®»îœkÖ¬3<õÔS•••¦J&䯿.#å…Á•*AU‚*A¨T Bz:.!!!99¹¢¢ÂøJ$ü&âç?|×´Ìë+E¨„P%¨„*A• „ª!T ª!T B¡JB¨„P%!„*A• „*AU‚B¨T B¨„P%!„P%¡JP%U‚*A!T‰^ âRrݵliiAA¤D4,^ªU‚ª!„P%®›¿ÿýï¿ûÝï\]]•# 1òücl𪪪_|ñŽ;î¸ë®» 0{öìÚÚZƒÍ–––ãÆÛ±c‡² µµuÿþý‡ Ò·o_ L™2Å Ô=÷Ü3oÞ¼„„•¶}úô5j”••Uhh(»U‚ ŠP%Ø!ävV‰É“'+GÚÙÙõL•@´6lj[^^ޝfìØ±cÆŒéNl¦fgg{zz>ýôÓÈüÐ"ŒG,:tè“O>‰¯hÕææføÂªU« J¹»»?ú裣G6ÕV“&MÊËË‹÷÷÷‡‰`ù(¢^çÈÈÈmÛ¶±§üJÐàèT B¨„B•èQ*1räHDb'9ù#{ J¬X±âž{îA#È1pŠ;î¸Cæyl޵µµŽ‹‹ƒùùùaxéÒ¥ƒÖét¦A–Ú¿?Jåäät8ÛôéÓåWì”™3g0»C¥Îï¿ÿ¾••{ʯm8wîÜäädª!T B¡Jô•°µµ8p §§§SPPp÷Ýw¿óÎ;R%ÂÂÂ^{íµx`„ ʋիWôÑGÓ¦M5j”³³³œdªHkkëgŸ}öÐC=ÚÛÛ{ÆŒb¶ÔÎΓPÊÁÁÁ¸ª(;hРåË—Œ·±±ûK!¤kAAl lB¥d)„U”ÊÊÊêT%b',ÌÞÞÞÔ&£U‡jii9~üxQsS-C:U ÁÊ•++++©„P%!„*ÑTÙÿJqX·nÝ¢E‹>üðC9yØ×× ™™ÕãçÏŸÿØc7S7mÚ„ަ^dÍš5ˆÖ˜ZRR Awqq“6lØðøã#ɇ„„ 2$<<Ü ªX8V±wï^ƒñŽŽŽwÜqGKK‹¬_¿ó;v¬¢¢»víêT%š››!&÷ÝwìÕp(´ƒ©MƪgÍšõì³Ï¦§§«´ 1S% m(¯j£JB• „ªÄMT‰   ¾}ûŠëy䑘˜¥JHPdòèèh©÷Þ{/¢W[û“‘ú÷ï RA}ðàÁ+V¬SGŽ)Îe`---噑™3gΛ7Ï`Q©©©XTbb¢ÁøÀÀ@ŒGh›µqwwGà„_,Y²D4u3µ(õàƒ¾òÊ+ƒ zê©§Ä™©Ï?ÿ¼ÁHƒV2u“ÁlÄ|•Ì™3'))‰*AU‚B¨7W%”ˆ‚'N 6 k4P‰ôôt{{{¤b¤ßÇK•@q9´Â××W¥rš²¸P qV¢¤¤“&NœøR;ˆnPU$=ÌcüÐ$ˆ,M$6çž{îAÎ\¼x±lFƒ‚Pi„1cÆlܸqÔ¨QÆ £®0¯·ß~[¥•ŒU¢ÃÙȵª„ œ—*AU‚B¨7W%ÄÀŒ3Ö®]‹ˆ‹¯R%P‡  i;;;'&&š£¦Š ›a822ÒX%„& Ìúã³h>}úlÙ²Å`¼­­íý×ÉÍ‘8I±ð 6¨4‚(…9ø êR%©úôéãçç‡XµfÍñL$u•P)‚¯ýû÷ï½÷V¬X1mÚ´áÇË縊;²ƒƒƒ›››ëëësssk‹˜ûX°`4ÅŒ3&Mš„ùÕU"??¢4qâDñ^ 4iNN޼kCY Ñ2{öìÛ uÆFUUU%''/]ºËô÷÷WßäÀÀÀAƒ‰ûPTf#ª„Mll¬P%¡JBU⦫HII‘ïSPÞ+±|ùrXÆwÞ¹~ýz[[[cqõ‘ʽ¦Š´´´` ù’%KÊËËá"Š·µŸ˜øä“OPÊÒÒó‹Ç"£ÑhÆß·oß#F Š5Êàmת8qâijÏ>‹"wÝu*öÌ3Ï ÌwXj÷îݘmÏž=Æm%Þvµ3ºü)§šÚdüÂN™2eÀ€©2QÇËË«±±ñšŠP%¡JBU¢[UÂLêëë›››Å0òU—ÉÎΖWûH°±HqøW}áxYYYÓ§O>|ø¢E‹BCCóÌ©U^^ž<‹qÃZI«ÕÊI×јä: JB• „ªDOP‰®"$$ÄÙÙ933sçÎ'Nœ0a‚ù׫˜jðÆoØØØüúEªU‚ª!„P%z&ááá ,€DL:õã?V^›DU‚ª!„P%¨„P%¡JB¡JB• JB• „ª!T ª!T B¡J°ý ¡JB• „ªU¢'ÓÒÒ‚œ‰x©|×6¡J0AªU‚Bn[•¯]suuUŽ,,,ÄHùŠºÂèÑ£×3fÌh3z_^RUUemmÝ¿ÿ!C†ôíÛS¦Lé!m"ßš×§OŸQ£FYYY…††²WR%¡JBU↩ÄäÉ“•#íììz Jh4š¼v¶mۆꅅ…‰¯eee˜ºo߾ݻwwùJ‘'‡úä“OB¯°;š››V­ZÕsTbÒ¤Ih„øøx8œÂÝÝ]½Tdd$Ú°wu4lºU‚ª!„P%z”JŒ9ùÁIŽ;v,Fö4•ÄÄÄ@%„At7K—.Rô¸qã0uÓ¦Mˆ÷`êEÖ¬Yƒ‹©%%%ˆÓ½...bÒ† üñäää!C†„‡‡_“J(ï•Àðرc'Mš„E-[¶¬_¿~ûÛß`‘‘‘?ü°¼<©Ó5VTT`E»ví2UÈ6yA+Å–¢ˆ˜K‚ŽI)Àr°Y½GydòäÉ{÷î[Íùë_ÿŠ›•••3¿AŒU@ë° S{5œ5kÖ³Ï>›žž^\\¬²³z¦J´-*,"=U‚ª!„P%n®JõíÛW\ƃ”‹¬®T *€H-#ñ½÷Þ‹èÕÖþ€£þýû¨inn(®Ø—*LÕ§O???Ī5kÖ jz{{««„J|íß¿ÿ{ï½·bÅŠiÓ¦ >\¾AÜ‘ÜÜÜ\__¯|Rw¨„™kÌÏχaMœ8Q¼Wû"''GÞ±xñâ±cÇfffB+œœœ°¢ììl1éóÏ?øá‡±›:ôÔSO©«D```ee%Zþã?~á…̯–ƒfD;WUU%''/]ºµõ÷÷Wß XÝ AƒÄ­1*³õ4•°±±‰5Pª!T B¡JÜt•)))ÈÉbXy¯ÄòåËawÞyçúõëmmm‘BÅÅ6*÷J˜*ÒÒÒ‚1H¿K–,)//GT¹·­ý4Á'Ÿ|‚R–––˜_<ƒ¨[UÂÌ5ž8qâÙgŸÅBîºë.lÑ3Ï<ƒÈ-&!á¿ñÆ}ûö}FeeeJ• JB• „ªÄµFÊÉ“'+GÚÙÙõ@•Ðh4yílÛ¶ Õ _ ^{M•DFF¢­Lí÷I“&¡õâããýýý§L™§pww¿îv7¨$ºU‚ª!„P%z”JŒ91ÁIŽ;v,Fö4•ÄÄÄ@%z…AÜ\•xÿý÷­¬¬Lí÷éӧ˯8ÀfΜ9`ÀZ×·Àîë;wnrr2U‚ª!„P%zŽJØÚÚ8ÐÓÓSŒ)((¸ûî»ßyç©aaa¯½öÚ<0aÂåÅêÕ«?ú裌ŒŒiÓ¦5ÊÙÙYN2U¤µµõ³Ï>{衇Fííí=cÆŒÀÀ@1 [jgg‡I(åààp­*aª¸¨dbbâsÏ=7bĬíùÁÜÿý¯¾ú*B£r¶#GŽ ÂÇ_ºt)B£\²““Óc=†fA›äææ,|ÿþýO<ñ„‡‡‡Ê†›£*í©R½wß}wãÆ²ªãÇÇ0vèСC---1fùòåê*¡a”ööö¦¶Âx¦6¶›TB°råÊÊÊJª!T B¡Jô•@¶Ç¿RÖ­[·hÑ¢?üPŽA†ôõõEÄB΄t 2#`7S7mÚ„x¦^dÍš5ˆ£˜ZRR‚lŒìêââ"&mذáñÇONN 2dHxxø5©„©â¨äرc'Mš„ñË–-ëׯÒ;¢xddäÃ?¼jÕ*9Û£>ŠMÞ»w/rrÿþýýüüÄ$uÔ¡i³as***d©GydòäÉ(%ê£ÒVª„J{ªT:ï“*RØR £’³fÍzöÙgÓÓÓ‹‹‹;U ÁŠLm…ñMml·ªÀ&c½"ÒS%¡JBUâæªDPPPß¾}u:Æ #«+UB‚ ©FGGË|{ï½÷"za¸¥¥ù6 @¥HssóàÁƒW¬X!§Ž9Rüíhii)ό̜9sÞ¼yæ«„JqTrôèÑh4 £ÑPpíÚµbÒ|ų=óÌ32"3ÿãÿÀ¢#–,ëÜÚÚ OAAYꡇBÚ4®¤q[™£¦ÚÓTõTT¢íZ.p<ÿüó# ¶ÂÔ fën•Ì™3'))‰*AU‚B¨7W%”ˆ‚'N 6 k4P‰ôôt{{{$I$ÆÃ‡wƒ}}}UŠ §)‹ •g%JJJ0iâĉ/µƒñˆµæ«„Jqe%µZ-fKMM_W­Z5a„·eóæÍ÷ÜsÿÔ©SÊp^yå•?ýéO*‚`N[™R Síiªz]«°È·ß~[e+ŒØál7F%lllp$P%¡JBUâæª„@(]»v-b!¾J•@,X0fÌggçÄÄDsTÂTd3 GFF«R&mܸñÐÏ  ù*¡RüúTÂÑÑn… ÏÅUFV$XùÀ+ƒRæ·Õ¯T Y½.T‰ÚÚÚþýûoݺUe+” T™­»U¶èááÑéõTT B¨„B•¸1*Ô¯_¿#F¤¤¤(U¢¸¸)QŒlii1G%TŠŒ7ÎÎÎN  ÿüó‡~ÇáC‡žzê)¥J4HÜc¼ßÑþ¨gUUUrròÒ¥K!’þþþê[¡\ Êlݤ666±±± @• „*A!T‰›® %%%''G +ï•X¾|9,ãÎ;ï\¿~½­­-¤¸|H%úš*ÒÒÒ‚1±K–,)//G$ñµ­ýÌÂ'Ÿ|‚R–––˜_ œU‚*A!½H%:<1!l¢¦¦FØ¢Nyy9Â’ÏÉ“'5 òUAA‚Ö Bn!pHãÀÆáƒ\¼ ƒ]ݱ]ÝÄ7!ÓâÍ5þ)9ÊS¦TóÀÖõz=l 9ÓŽX&(žE• T ª!„ô•h3:1a`âÜÄ… v*+++**Ξ=[VVvºD¬’vNrK ŽgØâÇ¡Ž´Ã?º:‚<‚nòUR¶Å¢µþ)ÇTNIH•Jƒ5  CÇ’¡ø*ÞpG• T ª!„t­JLs Ä@7}2N¤ç᳟´\„"ÿ”$ß„Lï¸ ¯Ø´mÑ)žQÉ_Mp ÿ",ö‹Ã1.‡¢]B£œC"ñq ‰à‡Ÿ[ì#Žmä8ÔqÀã°ÇÁ.à™„î€N®‚n2eËv‹·Ö¡ãèT%Äe„P‰úúzF#.—ª®®†›ˆ·©„*A• „®U‰nþ¬¿úy»«Ÿ·ðYg±h­Å›k,~fñÏÕÿüôêgÁ*‹ùŸXÌ_i1ïc‹7ðYñ?Ÿ×—óÃÏ­ö‘‡7uð8ìq𣠈¾€N®‚n‚Îò–4\åê&¡pñfùææ«Jûþûïÿñ?~P Lý±ª¡JP%!¤«øAßÜ}ç#~qb¢ýÜÄãs‰ßˆÓÞ±é^±i?Ÿ¤ŸdÈ$ùù2"‘~zõGy<ãðǹ8 qõLDlº8N®‚n‚΂®¾AÅ# TB\ãäââbeeõÑG •7eS%U‚*A!½åý×Êû&š››Å¥Ý—/_nhh¸ÔBÑ„ÜàPÇ<~tÆÆFtt ù Ñ_Ô=ÂX%rss_~ùe¨Ä‹/¾vñâEª!T Béí*a`---"ùˆ¿£ §@šºü3 „ܢȃ<{qü‹¾€N®aìfª¾xñb©666çΣJB• „[C(ÄÝ£B!Bžª ä–Gœ€a,æx„JìÝ»×ÚÚZªþuss£JB• „[Æ&Œ…BÐÒ΄Ü6ˆc^vk•c•§öàß}÷xq6ï• „*A!·žMH¡N!ù‰ÛƒÃ^ve1§Oßv}ùòeñòÇóçÏ×ÔÔP%¡JBÈ-ìJ­ ä6Ä ;\SW¢JB• „j!·3×Ý}¨„P%!„B¨„P%!„B¨„P%!„Bz,^^^p __ßÀÀÀàààýû÷8p $$äСCGމŒŒLJJ:~ü8U‚P%¨„B!ž• „*A!„B• „*A!„B• „*A!„B• „*A!„r«ª„^¯ohhøá‡*++Ïž=[UU¥Ó騄P%!„BÔU"$$ÄÚÚúå—_¶²²zñÅñïÖ­[©„P%!„BÔUB¯×/]ºTªÄ¬Y³***¨„P%!„BÔUâÊ•+ÆÚÚZ¨ÄÁƒy¯!T B!„NU¢¹¹¹©©ÉÓÓ*akkûý÷ßWWWc*U‚P%¨„B!ªÄO?ý$TB¯×kµÚ9sædee •øá‡¨„*A• „BéT% ËËË«ªª øÚÔÔtåʪ¡JP%!„B”*qéÒ¥––ùR èCYYÙ™3gÎ;÷ý÷ß_¼x±±±–¿ JªU‚B!Dª„¸BxDuu5$âÔ©S§OŸ6qþüùºº:½^ϳ„*A• „B1ÈH0…‹/–••Á 5ÍÉ“'KKKÏž=ûý÷ßÃ&xV‚P%¨„B!’íÛ·ççç'$$DDDDFFÆÇǧ¥¥efffee;v,77S¿ýöÛòòr(U‚P%¨„B!www;;»7ÚÛÛ;88À¼½½}|||}}ýüüüýý÷íÛ—˜˜H• T S*îãââ²uëÖ-[¶8::â_ ;99¡³xzz>|8::úH;á„ÞOXXXhh(~÷ìÙ³³÷€Ú¢Î¨9êÏHÈ-€ˆÈ‡BØØµkÒ;b<ò‰O;ÞæQPP`ÎlB°ð;v¸¹¹]_¦¢Jª„J¬_¿þøñãøúÃÏ`øÂ… èÚø½ŽˆˆÀ@lll|||BBÄ<‰Ò›A_ÆO¶»Wàë˾úóÛ_O_¸kÆ›{_zsïô…{ÿò¯ |þºøê¿¯àóvõ[A/¿4cÑÿÌ€f~yÑÕ‘Öo_¡»‹`#ñÕú­½·Ý³pÅvÔõÇVpWÒ«A¢@®@_FÆ@Ò@Þº¬©©A©¿TÉl4©Iõõõò_1€õزe U‚.Q‰M›6%''_¾|¹¹¹ùÊ•+z½¾®®üèÑ£111ÀÔ´´´ŒŒŒÌv¾!„ôZЗCCCÿ±Ôë…ÅÁŸz¥9,ü"â´kd™SDÙ–ð2¯ø2ßIJ¯’Ê|¯{Ä–¹GŸq:ãqS”m>rfëÑ3Αg¾ˆ>ãsÆ3¶Û‹l=ZæQæYúÅÑS[®ñÍøË²«õÇV`[¸C 齈Pt¾Œ¤¼Ô³@æG ùñÇ[Z~­•PŸ i?¶`™<'''ª!]¢öööè¶Ð‡††ô/{~~~XXX|||JJ ºyvvöñãÇóòò0¾€ÒkA/F¿žõ¾ÏïçîÝvÒ#áœWÒwےΙtÁ-ñ‚kœÖ?C© üF»#ó‚úßÔ ^É<Ú§ºÄkâ´N±Z×x­[¢Ö3IërÁ7íBwi¸à™tÁ;ù‚WR•{ìÙµ5£^úëR߸¸8lw+!½ä ôbd $ äÔÔTôëÇçääÀ&Ä_84ƒo¿ý¶Óy°(ñºêêêèèhª!]u¯TB«ÕŠ“çÏŸ—@¤§§£/£—””œ>}º´´´ŒÒ;Á÷¶íû-žòµþòØ–˜*÷ä îÉZ·$K¢nkœnsŒîË”êmiÕ^:Ï4 ë\Û'm‰×9Äêì£u£t›¢«7ÇV;Æë¶&è\’t(ÛÝE6Çêœâ¯tÇ'ù‰ç7F›éuÜâYOÿ`lw+!½$ ä ¤ d $ ä ¤ŽŒŒ qA5&5^¾ÜÔÔÔÜΕv­õõõþþþâ%Ԩĕ_rùòeD«_®–nFxDCCVãêêJ• ¤KT"99ùÌ™3ÿ·®#Ñ©aëiiiÇÇÏôÉ“'ÑéÊËËÏ;÷Ýwß}OéTUUåææ¾ð¶¿ÅK§zkÖE}ï§uLÐ:Äé6ÆêÖEê>;ª³×:$j“´ö Úqºõ±ºõÑW'­¨þ,¼zuxõ§Gt«Ãuk"tvQº 1(¨íî"¹r£sˆ×9Ækíc/|z´ê>‹¿záØ"lw.!½äŠÊÊJd $ ä ²Gzzzddd~~þ… `úvšÚh,\¸ÐÚÚZŽœ:uªé—\ºt ³Í›7 Gÿ3ðNWTT”˜˜èééI• ¤KTÂËË+33¡ÓiÑm¡ö ÇŽCFßDGO×jµÕÕÕ555µµµÿ—Ò A/Ưð;,æÇY¬/´p*~ÒëÔ ~O{—õ(¿Ï­ün§ò'½ÏŽÿª|¼ÿÙ'¿:û¨÷Ù‡=Ëv/Ðíì½.gït*ï·µ¢ŸSù].åþ8û€ûÙQgÙv¶»‹Üë\1Ê­üQÏò§}Ê'uö÷%.Å -þ•<䯻±EØ.î\Bz#HÈHèÅÐŠŠŠŠÓ§O#ç#ÄÇÇçåå•––Š/8wîÜÆ_þŒ¹¬àÌ™3—I]]œÙÎÎ3`u9(((@ìñ÷÷§JÒ%*áãã“}òäÉsíh4šÔÔTt4x„xküÅ‹Ñ%ÑmÅÍ ‘ÒÛÀOvJJÊ¿[í³XqÌâ‹Sx•Møªü¹íçžÛ^õŒoÕÓÞU{VZí¬zyOÕ+A•Ó÷Taø…€*L}ú«ªÇ¼«FyVú²ê±/+Çm«zÖ§j¢_Õ¤Wgèî"l«|§ê9¿ï0Ï”€ÊÉþc}Êïp;e±&ÿßÿšœœŒíâÎ%¤×!ârÒ2:2r>Rl ÿY8q¢¤¤É_$+Pó Ξ={þ— ”rþ×^{­°°°¬¬ ËÄÀ7ß|³}ûvª!]¥ÇGç*//¯¨¨€S@%ÄëÑÑ»ëëëÑëÅõŠâÄ !½ tä«g%þyØâ³Où–ý}ï÷o„V/8tñõ›àÚ?ï©~qgõÂCÕÿ ¯~÷èÅ·Ã..<|q~èÅ×\|5èâ+»/N¼øbÀÅ?~]ýÒÎjÌËhZ‘ÚôABÓ¿¢õ›¾ÑoÍÑ»×;fë?ÏÔ¯MׯLÖ” ·ÓcꛑúEúw¢õKãô+’šV§4­Ëhêî"ïÄ6-MԜڴ6³éóoô3õëS—Õ>ýy–çö`l¶‹;—^Ç+@Æ@Ò@Þ@2Aö@ÔÏÉÉWY㫸[\lRàíí-îß” ºÈa1JA.\¸Pý3⎠,³´´ôĉT BºJ%Л ѹÐõÐÑÑJJJòòò*++1ÏåË—¯\¹òÓO? ƒ`“Ò{AwÎÈÈøð‹ÃÖ_®Njp8®wÈÓoÌÕ¯Íjú$³éƒÔ¦/ õ^½Ï·ú/ õ.ùW§~~\¿&[/¦¾ŸÜ´$©é£Ô¦U™Më²õ›Žë·œÐww‘Òš>ÍjZL¿9Oÿ"O¿)ýò¿âO¾<’žžŽ-ân%¤÷"œI£±±©Ùãøñ㦢¢á±¤®®N¾«Úååå*SëÛÁ‘sÄ5TEEET BºD%vîÜyòäI;z±^¯¯–ï’Ðét MMM?þø£ò¬!¤7ÒÒÒ‚Ÿæ°°°•n‡_÷=ùI”öóôKP‰uÇõŸfé—eè=¾mô9Õè_ÚèUÒèþm£SA£}ž~Ý1ýª,ýò ½mÚÕÏòoô«sôrõ›O4:5vw‘™úÕYWìQü›úu±ºÅ§×zÆV\¸p[ÄÝJH¯éBž•@ê@ö(((8wî$B< “:½ívÐé}⦌~ø!§¤¤d÷îÝT BºD%‚ƒƒÑgÑaeCÏ…¹££AÛѯ!Â&ZÄ ìyÇ!½üžVUUEEE¹yïZöeÔ›ÛræzkþásòoÛNþÙã俾.^²³xéîâw‹ß(þ§ÿÉy_”Sg¸_ýüÕóäl¯“¯ùžœïwòÍíÝ^D Ìñ99ÏGó/ïc+=Pó@Ô[má%¤÷Þ%!n”@º¯¨®®†Dh4D}|E1ÿI/æ¿íº¾¾¾²²rÿþýT BºD%’’’ a è¿E 4í` ´´TùF‰:BHoݹ¼¼<++ëСCþþþ^^^½ÔµEQsÔ_\ö@é½È4‚‘ŸŸ/Òˆ’Bóøî»ï ÍF,633óWª!· ê*A!„BÌÌTB%øÇjrû ¢lB!„ó3Õ„B!„ríðMå„B!„ë`1!„B!„\;|v!„B!ä: JB!„B¨„B!„ª!„B!„*A!„B¡JB!„B¨lB!„BU‚B!„B• „B!„P%!„B!T B!„BU‚B!„B¨„B!„ª!„B!„*A!„B¡JB!„B¨„B!„B• „B!„P%!„B!T B!„BU‚B!„B• „B!„ª!„B!„*A!„B¡JB!„B¨„B!„ª!„B!„P%!„B!T B!„BU‚B!„B• „B!„P%!„B!„*A!„B¡JB!„B¨„B!„ª!„B!„*A!„B!T B!„BU‚B!„B• „B!„P%!„B!T B!„B1Å™3g¨„B!„kõª!„B!Ä|ÊÊÊ൵µT B!„BȵzDï• „B!„˜ÇéÓ§¥Gð^ B!„Bˆ9”””(=‚÷JB!„B®É#JKKy¯!„B!äú<¢÷JB!„BLS\\Ü¡G`˜*A!„Béw0þŠB!„BŒØ´iÓüùó“’’L ÿ~C endstream endobj 599 0 obj << /Type /XObject /Subtype /Image /Width 1049 /Height 675 /BitsPerComponent 8 /ColorSpace /DeviceGray /Length 728 /Filter /FlateDecode >> stream xÚíÔ± ð̔™J¸¯)¥\8鸚´Kà•D`žAà—û&²ý endstream endobj 593 0 obj << /Type /XObject /Subtype /Image /Width 702 /Height 603 /BitsPerComponent 8 /ColorSpace /DeviceRGB /SMask 600 0 R /Length 17866 /Filter /FlateDecode >> stream xÚíÝ@gÞÇqrɽ¹K5É¥7£Ñ\ª]“X¢&¹$–KLÔhŒ½÷.ŠD°cGcEŠ(M¤÷ÞYª4 • ذ%êeßÿìYö%|?7GfŸyæÙç™Yöù͸€‘‘bþüùqqq999Gô>~Á‚Fed=33sïÞ½ò5@²²²ÊÃCDDDFFÆN€*HT S“ƒ>>""ÂÛÕuõðæíÚ›¶l%‹ÙÇíå¡Ê&© ÕªÚ=!!!66600pýúõ‹UòP e“T¨fwõÙwxm·|ئ·í0¥yûÉM?›þñ¸¥Ã¤°úgw–59$VAfö[óyÆþ½ y‹_us1Ây؈_v߬…q£·d“Tj•î.ÓzTT”ƒƒÃüùóW­ZeµÙÊÁa›ƒ£ÃæÍVòP e“TjÕ<ûÂMæMF7üxV“¯W>|냷ôíº²cãwßÝP6Uó쀉s³ßhï¸=Ñö–‹LMM—mt‰ç`÷ƒš4U ³;×äµÞz?úó/Y®¹œ—w9'çØò•Ñþ³á­we“Tj•îéää´téR+++//¯xMÜž½»÷îÝ­ÑÄ{y{I~MRAªUõì 7˜¿7üÕæ¾Ógë¬V:™½ëxÊòpÓ¯mÛ¶2ëá¯I…ªžuÏæÙÞ¼ö¡ß×FÞ±F–ôÿ¢ÿBçÛî`øTit‚MM«G:oÿÅBçÛ}yGz¬üþ‹o®ù~€ùÏÛ"ïÛ)ºGrÃðr[wnmÔjZÈ-¶»måŒ/ÊβћͿø~†Gì]ðŽ¥ÃË?ˆþÍØ¥Á|—â/A}IÇUÁÓÅżñ»ö¯¿™õòÛÅÍÛþ:zÂïN.¿;8]1¦¸ÉGY/7–MRAªUº»ŸŸßêÕ«·mÛ• IÏHËÈHKHH‡R(›¤‚T«twwçV#höV·m͇z}µ,Þ8ð «gö–9‘£ôèÔe[3Ù$¤Zê¼h¯ÊKù³I¶..+êcÔÚ8¸êºö&fëÜjÜH˜ic£Æ“n»asÚµ™åWÃŽ…9´222u »ÝgÝj*czë¿'Œüïµ)lÁö{vZ®?Ô·$g46úð'ï䨓pK]ZÑ¿¹r>¼ÉÍÛÅv­ñ ÏŒŒ[…Þ•ñ;Ï0z¾­°ÿ&y9}aæÈ·*þÔw’è*l=nÍ÷ýëͳÔÿýɆڦmµ}h¿ÿQÛäCy(…²I*HµJw···—l)QAýTƒúÉy(…²I*HµJwŸd1úÃqo÷rûh`PÇá‘_Nï»$}òÂã'Åõñyÿ Ž²I*HµhÔyAv³å•l£Ù–šš‘µ÷À¾ôø*ë†Í”ªÓ¶Ô¸‘جýöïJ©P9"4ôõˆˆô1Ø´µQë™Û¢kرؔýd%ÇÞæ‘ qþIZë¶{OöDû62M±Œ¸G§¥Â¡®üHÞ„ˆ­ŒŒ>ýÉùÖp§¼åµ™µoOzJJjZú®=ûö¦§%ÅÝ•ñ'gîÙ“•–œ”œž6Hz>בoUü¨É!² ö>zí­Ò'h­¯}¤¾ö™FÚ†M•åùFZ¥°AéÓoJûNÿ©twkkk///õM5&&F‚J¼Ž¬ÈCõýV*HµJwïeÞåÛuíGÇv”ÜczZO“ÌÞfY?šfõ›•Ñ{ÚÎï&%}=:¦ë7ëÚKµHÔyAö3” XáXVuí¿>6ƒÛª/óSÖ¸I±zéýf#£ž¦ö5h$À¼[Ón¦6Êj°MÏm§,Yد™®¶ã\ÜŒ»«í¾Ð1àZýîÍÊ[v4ïÙ »©nCðìVF­fèÊÃ\Æ}ÞìÚ]ì¶ýÖ»…UÒ±`›ï40¶QÛŒôÜdþyÙ}ïžÆk‚ÕR¥?ÍÆ-Y2Rc³~ë=Ã*GåžÃ {?åAœïyÐÍ,P:Ù³Y÷) {ʳ5X¯Ú{šìßl²òd!v_H£Ó¬¢ãÃÝíì\ý+žd?eìFÝM\\¼‚Âþ¼ÏVÞ¡úÃ\‚Ã[ãƒ4‘•¾Š*ÔV“Nêy6±rXo¢œç™vUŠBì,—Ï7™¬t´»yD²†oUü¨É!¤ þÍ?>ü^+퇴¿ÔvÿNÛ·¿vØ(íðÑÚþƒµßôÒ~ÞUÛ¶s~“6~­ÚVº»ú³“’’ÔŸ•y¨|PI÷ÓjµõYÙerp¯Åû†®Ì¾>o”]þxç£SœN²Í·6wÔŠœá‹÷ ™Ôûû_…a±™»¢–¿v Øgæ&)óÞ¤|&qÄ GO7¯í+Ëeðzðè¨ù­Z»È+0.*üO ñ“ù®Õt[e5ÐVf‘낲v&jâ]e~j240ÔgJãk•+v,ÀVI¶Þ²éç‰-Œzf¤ÄFEÅ'¥¹L•™êki4@éOï…^»Ò’5 q²{ã²ç-çg¯ÌÑF ›¾¡Žª»IHRœÚI£ÞËR²Òâ#ý7)SöT—ô¤ø¨¨Ø”Œ™ñ[Nܨë¿<À ]Y)‰šÄI e˜-'yø)õº/ððrwwßÚKÖ¿š©tTןë‚2R“4±‘õG@7¢O7{z¸¸¹Ù,Pžm­ìï¿¥«4Õeœ•‹_|bb\dh…±DÇ»vWþµÂU.?b‚¬ªíó§Ûâ¤Ï ןbß9²¥óÜÀë·««‡RRÅ ìM$“´^–&G*)a»¶i6žUU¾ÅØ>_~ÕQ9ò­¯wôã;ê{IP‚¿ï·¿M%3ü8H;v‚vöOÚ%Ë”e޹vâí ¡ÚßïoÛ1¤Ï•î¾uëÖ€€õ‡.%0¤é¤§§ËWy¨þئTj•î>Åfè$ïï×䌱:<ÁéèTŸ_LB‹ÍCŠÍ½ g9L±:<~uÎè‰^ßO²(¯×ˆä´ÌNÃ[+¯ê <ý·Í1ºNcs{ß  ï™2M³®a#AA>3e¾›ªÜ@ ò³‘Ù|†c ²îk­ÌB³íƒ•ÞÊ”ÔÚÄWY÷™¥´o£¶·eVg£Æ³|tå´ã¶ahgÝLÞ@¹ÞùZåë;¦{®©6J,~Æç†”õÑ^¹¦î´Á»¬?NAz»ÛTÏ–YÊ­…™+mll<cvg¦F—uÒÔ)ôÚ®ÊXŒ¯.Û)d®Ì–ŸÌòTúßʨ±i`ðµrÛ±•aªõõl×9>ŽÏ#úãȈëíÝH:h#û‡Ä„9-h­–5ùÞÒѧâÙÑóVS­ÿ¼Ï­ ¯äô®øQöékëÿGɆ1Må4¬ö,kð†AéZ›¢ž”κäPUå„&îÌÈÌÌÚ­qUÒE³iž|Ÿ¢öS_óU_¸(¶Cgí áÚ)Óµói×mÐÚoÕnݦݰQ»h‰vÆ,íðQq?_¸¸ÒÝ%ŽËåFrr²ú[+³tÔßt-… RAªUºûÏîˆY³éàÇ£Ó}~™Q¼@sz©,áÅó½ M ¦­?8~˜Õ×kÝ–e‚ÂbvFm”WuyvžVS”{ËÛ“v]“•à%óWãñÖ5lD©ßÒ¨åÔÍÊke6ßì®®«³˜n¯Ÿ”3½tëÊü8k‹®ÜwÙ ½ò²vÌ”Kë}R¥GYKZ—W¾¾c>›[^{® Íe:í³µ¬{›§J/ºnñ½¾?êóN­8./;åSг£”Œ -/ÖUÞ|푯r±/©£lëÖ>2N¶‘ƒe§ôi¦oÙ^³>Q†ã®«ßx˜õ®ò#›‘\áøÜ8¢?Ž€ŒH*ö (Û{×®ôeÿ€°˜¤¬]ÛW*ùá;óŠ'Fÿ˜ÿYŸ½*9±KûKÃý̶”ÙÍ’&;Y{]kðÆA©­y–u@ µGU•«³¬›rWÊoQÔ~jrð­B¤¿TÿÁ#FiY(iÁÑYëå­,ÎÛµV›µK–;>zðP©VéîÒ¾““SXXXjjªú÷2Ôä þ]-)TþÚÉIy¨LPXà”m}… ÙQ0+¨hnüÉ¥)g,“ϬŠ=iø‹¹kÁÌy!ƒ'Ø÷‘j¾¨ó¬æŽ1ÍÂÖÁÙÝÕÁb‚òÁË\¯óŠBc¼†ªŸï˜ha/òr^1BºÜq½»Ò`¥ƒº®µòVu®ã¥”Ú;»{)gMùYЮó|ø^Eí§&¯*øøøÄÚoKœ0ñÄÊUÊ­É AÚ `­¯ÖÁ±xõšäÉSã·n•j•îîíííáááîî“––V~ÏA’ƒ<”BÙ$¤ZUϾ=Äq¦s«Ä ÇÌcN,I<¹R–è~GÍ6jÆMwüÞ5رªgGb=óý[Çc–;Ç„øxy%Åì£w[yÒúíòÊòÛbª>´ÌáÏñÚ1Cæ»É”neæ2¶vSÖ=¬e®êhl­Ûu‡òÑ»Ž³uüwX޹ÖÄ—“LÇ´2j9c‡®Ny;>[ç6ºö}fŒQ&×7®¨Ø1· r}?c³Ò¤¸Æsõ¤ò޵º8RU±?×ÚßXáÈxØ*Ÿ4Þèv}qÅÊQ‰‹‡¶úã@­öLˆð—òÍ3¤z´¿VÞi̺˜¸)OˆµšÑóƒõù4—ŠýñºáPë¸Ðmsÿx>£ÏÖìPvÿïÿ‚ÑÓÊ'ô†÷”m’¹º˜ZWßgå(©ÇüÆw¥à¤$ß¹C¯ÿ§†F?lñðªjP›gw4jUÖšn€“u³ò#p—iÍôž¥Ó$Ϙ8Þ­ð ¾¢=« 3{hhhœ£c²‰ižµíY7·+¾~W|ýϺ¹çÙÚ¥üd&›¤‚T«jwY‘xž˜˜˜ª#+R(›¤B5»Kãn¡NænƒÖ‡qɘé{ÀÜw¿™s†ñÚðѦ®]CªyvÔ)!q)é‰ñʧwâSÓcÂ¼Ô ~¡‰òPù½ Rœ꫼êÂãuEñqá~5hÄ7~gúNM˜²êVÞˆ§whJzzj|¨nWßXåAœnƒgptbª®ýô”„øDÙ9Þ÷úvüÃâÒRuÒ’5‰Êï7Hˆ «Ø1ï°åÏ%}‹NHOMŒÖcgR¬¿:<ýþè÷SwH\ºÔ ó½¾øÆÊþ±I;ã•#%G,!:D-µšÞÒ¨•Yœ å©e\Qe ùFjR®YÙ!E7öëúãyá¾îIÂãv¦§*»Ç'¦§§„y_;¤º>È‘I‰ ô®x𽂓¥j\hõ}VÎcZ¼oU¯ïà¸$9?ºÓ¡t>-9Ä»ÊA…Êàw–µ¦ æÚÁ¬ì\ãvÊiVŸ(>=5!Ä—ïTü¨ÉÁ½ n:òªO‰ûymÊ’e{Ömس~cò²åÊCÝOF¨uªÙ]²Ìï;vìuY‘‡R(›þtwå=<)~³ßêåÞ“WùYé7f™ç+¿ÕRXý³£ÎñòöõõÞ7n‘×ÝõÅJÑ«kä¦xèÚ¯¶Æ”ûfÖ1]£>>Un¼C‡ÐûºÎ¸»¯›ØÈÈh´ƒlRžÚ«ò#ëåQ}£UwÚCÙýúfu}ð¾>×ðÅ¢œf_ßJ:_“AÕ´²œfõ‰¼ùÅ_†švTmûöíòÕËË+222%%%CGVä¡rdz¬BU\u<<<ËÏž¬ÈC)T·Þ½gp›¼\6/ýÙÞ• Œš¶WËÅÅE]©0§ëoªa jT¸µ}oùÙÜ2wßàˆÐ7€2jrp¨59ô¨59œ¨’ 9’ 9’ 9’ÇÉÉÉ€äÜÇ-^õMw§¶Ú|ÜÆºMKëÖ-6·j®,-š[)KSÝÒ\o¹‡%Í›l4®Ûf̘1þ|WW×ÂÂB^®É¸ï±áÓÿ8L6IÚu"¯ø×c§/;s¥ð¬º\ýÅ–¤ìã¿©~Õ[þÒ%¿ê¹téÒ… Ž9²eË Â@rî/S“°{¹%æ_È8viWá¥ÝE¿í-ú-ûÄoûNü¶¿øòõËoû+Þ‹ïÔu6½nù«—\Ÿ.]¼tQòƒÕæÍÎÎμh’p¿7ùÐj{NdÎù˜¼ q‡/jò/%¹”Tp)Y–£—RÊ–äûWb{øbv¡Ìùóç80kÖ,9k¼t’p_üòË/ZÛlN(ößw>äà…М á‡.Fä^ŒÔ-Qy—Ê–‹z˽.±Œ8¬Nu‹¾¿j‰¾ó:çÎ+--=qâÄœ9sä¬ñÒHÀ}‘——gÔÐzEl±Ûîs>Ùü÷_8p!ðà… ƒƒËó ®«Ý¢ƒõJna™¿Ùc—æÖö]œwNfÎóçÎë©´ÄÅÅåçŸ^»v­““ÓîÝ»k¸—–T ™áléY!Éá§Ÿ~’³ÆK 9÷ENNŽÑ{öËbJ¶e”îØsÞ#û¼wöŸ}Êâ[¶4þ e!Õuýò›*éеװYKnv/uå§€ÜÒšiÑ¢Å{ï½÷í·ßÖ¯_ÿoû›ä‡Òû!;;{Ïž=w°Á³:§N***Z´h‘œ5^ºÉ¸oÉ¡…ã¿‚M)g3Ïmß}^òƒÛÞ îzK£÷[~=d¢Gö½eQ •‡÷ªdºoîÙš‘ä0iÒ$u½C‡Ÿ~úéÙû᫯¾7nÜjíŒ,gÎHlóUXX¸råJ’@rîgrh»½‡SÞâ¸Ó«ÏlL=k“vnKÆ9ûÌsÛ2ÏmÍzæ™g>ùä“ÐÐPu¯Þ½{ËÅûàÁƒëÕ«—øpUu¤|Ê”)/¼ðBÓ&MRRR6lØÐ Aƒ·ÞzËÙÙY­³ÿþnݺI#5òöö–SSÓGyDJ6lèäèXi“7t 00°cÇŽ².}–ú7ž©’’â'NäÎ_¿~=É 9÷39|êþo»‚¯=Nô÷)èW2Äÿä°ÀS²Œ<5RYN>÷VózŽÓ­«…'eå•^núIo«DY^nÒþÕ–Ÿ R*¼ôA»—š´ïc“:Àyý»>üX=u¯—>hÛ¢Ÿ±ZçåfŸ<ñâ_ÍsîûKO«„ -«uôKÚ[í=v´¢JKš6m:fÌY‹‹{üñÇûýðƒ¬oÞ¼9$$$77·GÿýïÕÊjN011‰‹=räHUuž}öÙiÓ¦%&$´jÕª~ýúß|óMttô Aƒä‰Ô:íÛ·ïÛ·ovvöâE‹þýïK‰Ìû? •™) VZG¿±º´lÙrîܹò\yyy7 î¨lÊ?r$÷Ð![[[’@rîgrèâóÖ–c]ÝŠûx—üà{ª¿ß©Aþ§œ¨[N?ûV‹÷¿/+åKo» ùÖûÜÌY}øÙGyø½ý®^Ö;•rs—¡ºÝ?m/ÉA­óâíšõ3–ÂÞ¶éRçˆê=ÅKe%¬³ÖŒL诽öš\Ú?ðÀ]ºtÙ·oŸþÖÅ‹ËÖò‰»_¿~7¶P¡ÎÀÕõ±cǾ÷Þ{2ÅËú–-[þñÈŠF£‘±X[[GFF>øàƒéééRþùçŸ1Bݱª::ЦMɉ‰‰•ŽKbCÁ‘#ùùùEœœœHɸŸÉá»À–…½¼J$-Œ>36øìØÐÒñ¡¥Âd9'ËóÿnѼ÷Ä á×ÊòírùÖêz@}8Äe¿<ünePOË ]ùAµ¼‹™ÃÃ×S×_iҾ̀Yʾ+ü¤Nßqå­é·\iI·­Ž×L³fͺuëæéé)³sy¡LôÍ›7_çÕW_U ?þøã©S§Ö¼Î„ Úµk§®oݺU’ƒ¬ìرCÆÒ¢E‹Ve¼¼¼¤\’ÃÈ‘#ÕÊUÕ©Ðäää:<ôÐCcÆŒÉËË;VFÿöŠÄ‡Ã‡{xx€û•öìÙãï│Ãlmmú…wp*àZÒ”ˆsÓ#/G_4޾0+ö¢º¼ôvË6}'ÉŠIŒ²ÈÊå¾A_Kµäû>òp”ó®éa'zøŸ}Wúª;~9uÍ?¯§Öy­Y‡vƒgKá(—ÝRY6•·¯ßr¥%}œrŠjF’ÃøñãõKd:vuu•õÕ«WK*PËeâž6mZÍëLœ8±}ûö꺃ƒƒ$YIJJ’±lß¾½B7þóŸÿŒ5J]¯ªŽ~ãå$T<óÌ3‹/þEOaaáñã²— ‘ŸŸ g—.ê,™¸eú¾/ÉaïÞ½òMÔUFÃbº¹ŸrvFôÓøKfšßæ%ü¶ ñò‚¤Ë “//LºüÊ»­Úõ›"+²,P¿&üúÒ¿›7ù²ïœÈ“¦a'Þÿ¬ç+ï´œŸø›lúwû®/6nÒ{®}硦Ï7|÷‘zÿR÷z£ù'‡ý¤îÞ EÇç¾7Æ>QÖ'íØ#­•·\éÊP÷Ã'j¦yóæ’ôKäMFRAjjêîÝ»{öìY¯^=µ¼mÛ¶Ó§O¯yI“&IrP×%9¨ëRØ®]»´´4Y?|øpnn®¬HlÂò>TZG¿qáãã#Ù@ƒ aÑ¢EúCPC…D©päÈ‘ˆˆ9k¼tQ7É”-·Lß2‰ßûä*}ܲÿþ@]•œœl4!©¯ÏÉéQÌ~[œruéÎÿ-Oûߊ íªL­e†ve¦öµ÷ZË7ÚeÞhÚV gùxíÝVÿxìɇyìõ>4ñ=¸R*ghç…¶ìÖ_J>:ë{s›§^xÍR×Ô›-;~1ÊL­37ô˜<”6yòéz/¼º4ùWµÎJuÑÕÑ/™àw¬ü;·DGÿ{Y¿DýÙŠ uºvíúðÿ𠖖–O?ýt=¤P&î3fÔ¼ÎäÉ“;tè ¶ììì,É¡üä³Ï>{ðÁßxãgŸ}Ö××W*È›[ƒ ^yåww÷ªêTè€Ô—Äòúë¯ñÅÇŽUoy„P?8!g—.ê&™²eâ–é[&ñ{Ÿ$´È·s~~~AAÁQ ®Úµk×fÃΚ'^^ž®]½K»nvC¶v£nÙ´ïÚbµïuý’•‰%«’OWU§u·Þm÷Å{©Ëʤ“²oU-ë/ơŧoÏ¡C‡ä»^VÔÜrª¨?RQ¡0;;[m°š:ú t*žÒQßµ$<¦¥¥ÉY㥋ºIù!£ü|™¾e¿÷ÉA. Ô}:Ôa»wïn±*~Xài¹Ìß´_k{HkŸ§Ý–¯u(Ð:h ´NG¯[þ´¤¯É’î£gŒ]ëØ±ïЇyÔÄ%¬&{U_² þ|i]õÇïƒ:sæ¤î7AÉ{—œ5^º¨³dâ–é[¾î}rHHHÜÂ)@'Úƒæ¬\j›«Ýþ‹Ö½Dë}Zë{FëWªõ;«õ/Õ”*_ýÎiýÕåÏJ,£ú›ÎÿüÇÁ½§ÎZ—Výª/Y»ûÂ¥:Iÿoež?¯Ä§ââbKKK9k¼tQ—Éô-“8ɸ_߀‹-šl'±!ìª6âª6Z«,1†´8»ð¿ºêêÕ«WÊ\¾|9""BÎï]à‹äÜÇû~III£Fš²xuZnÈÅ«W´7.‘z˽/‘ä ­Û$6‡‡nÛ5hcLË€Á«ýedéW¾¨%÷±üƒ¾!M~nÒ/¤¦Ë€Ð¶ã¾Y•5Åë°ŒNÆ(#åtÉ·yÃ!é`Ñ–ÄcÛ$ŽÝé–z4öÐÙ¤üRC[ÖŤ»¥—¸g”xèÏŒ“×/×ʥŽ´Çä⥾y]æ$|2+qŠWžŒQFÊm 9à6o8øf. =2tÛ®1V1Ïœ¼pù×+ÿÓË„3šÃ瓎\L)¸¸ó襴£Ó^L;¦,å+R.[“\LÌ¿uè\@öÙ5±Emgƽ*KÆ(#å¶p;ÒrOÈÅø$¯ÃÖG®öN:Zrö7qYqåÊ•«W®sù¾–‡Ÿößw.èÀùçC*KXÎùðå뎄\ù¦+ 9¨TÚÞ?»ÔkïYÛÔS}¬ö¶œ#c”‘Êx9é@rÀ-‹;P´.ö船ƒ×†8Fî:qòôùóç/\¸p±Ì¥‹¸¿åÃN¹í>ç¾çœÇÞóž{Ï{éï½ç·Æå¾ôæ;vQÔϽRáœÛžs®»J2K­’NÜ‘ÿæ°H£ŒTÆËI’ÃWTTT\\'nkGì-´Œ::Ð9gèÏnq{¤ä¬Ni¹sº/çΕÈVGGÇ©S§N˜0ÁÖÖVv)ßäìì¼æç5ÂÇǧ¤¤¤Tß íÜlù÷^%™¥Ž™¥NY眳ιd•º(_Ï}Þgäÿ=úd‡o¨%ÎYJ`š[3Jmwžý9áô×ü†#£eŒ2R/oðWM!!!·9j™Ë"##ov¯¶mÛΘ1£Ò.­Òs—NÖ­uû–“çƒÃ×KrÈ$…§N:}úôùŸ²\'//¯cÇŽo¾ù¦‰‰‰™™Ù|ЬY³={ö¨õ[´hñî»ïöèÑã•W^yôÑGƒ‚‚ªjçÊ»¸[ïEM¬rNK 9@ÝLìÝ»÷³Ï>ûÜsÏõéÓçСCjù¾}û¾úê«§žzJ.ugΜ٬Y3µ\*/Y²¤|ß~ýú½øâ‹=ö˜TS -,,>úè£gžyæ“O> ½…äðÅ_lذA]_·nt£ü©¥q™X_yå•Ö­[—7~c7LMMyä‘zõê5lØÐÑÑñÆnW:äªÚ—’aÆÝlrc!ÉAãAÜÜܼ\ Êÿå«<îîîò2°±¶Ñ/÷óó“B9RÖ¤I“Q£FíÜ™ºrÕÊ¿ÿýïRXi;2„[(7Ú\Øß§x€Oñ ß’~%ƒ}Kû• ñS¾VX¤‚Tëç]ü½gñWÛ oÊm83™äu39têÔ©C‡ :íÛ·ÿì³ÏÊçúvíÚ¥¦¦îß¿¿K—.2 ߘ$¼ñÆ...………忈ÛÞÞ^®—?Þ«W¯=züirj!:årxûí·Ëgù… ¾ÿþûå<ÿüóÇïÖ­[×®]«ê†\ã˸† "—žTè@5C®´ýÀÀ@™âo69ŒÝé™!ÈÉɹ6ƒ«S·J÷_kkky„‡‡ë—Kýx`Á‚òH’ÃÿýßÿÉC©¶mÛ¶\Û¹µr#›¢¼K~ô-éïwR–Aþ§ú,[dýTÝú_YJúùœüÁ«¸·$‡EM¬7œJr€:˜ÒÒÒ¤êUùIÝçåaff¦YqrrRË·lÙrcrعs§Ô©æÃË—/ýõ×ÿ49¼øâ‹éÈ%ÿŸ&‡ï¾ûN]_½zõË/¿\M7*ükEyªrUí߬òä0Þ&Ú%*óÀd²>\™ÐÐPyöÅ‹ëÊùUs‚¬Kr:t¨ŒñÕW_8pàá;êù­ÅÃO <5"èô¨ ÓcƒÏŒ :3:XYÆ„\[,›NIáA§œä{²§gñ‡vù Ív’ &oooéÆÞ½{Õ‡»wï–‡¾¾¾ê óòòJ“ƒºï?° “r‹->Ðyíµ×þ49Üx¤šäPÞȆ ^zé¥jºQUr¨jÈUµËÉa‚mÌö謜œ™£å|9r¤àzR"þÏ?ÿ|·nÝôËçÏŸÿè£J˜‘uõs²²cÇŽ¿ýíor"*mGu³åï8ŸœV:)BY¦FœÓ-¥ :~÷Ïçüóùúòõµ6_M;=9²tJDéİÒñ¡gFŸùÑïTÇ­GÎÏ 9@L‰‰‰Ò OOOõ¡LOò055UÿÇ?þQ~‹~ùòå7&õ¾„lÒo0%%塇Rw\»ví-'‡E‹©ëS¦L©>9TÚj’CUC¾ãÉaÒ–¸±»%6=zTŽçñãÇ uŽ—Q×׬YóÏþÓÙÙY-”ÌöÌ3ÏÌš5K­Ð¬Y³±cǪ›†.›222*m§ªö«)oï~ffÌ…Ù1Lc/ΉW—K£¶íüû£õ|äIY†nŽ•ÂŸâ/šÆ]4‰¹h}A"Ĉ Ó_:m¸hÉê`r(..nÒ¤I¯^½¤A¹þýæ›odªRŒOf^™²7nÜ8}út™Êeκqún×®Ý;ï¼!ëÉÉÉÒZ`` $‡´´´ìììÞ½{Wúéˆ?MÝ»wÿî»ïdj[·nÝOúhË–-Õ«o¡NýR2iÒ$¹.~å•Wnœ¾÷ìÙ#¥M™ø^~ùeõ³ˆ]»v}øá‡_xáKK˧Ÿ~ZýäM%Ÿ_|Q‘¦~úé§?M•v#..®AƒÒmõˆþ¾U ¹ªöåb¿[·n7›f8%{%î—Ø …gΜÑÿ5’g¯§–dff¦§§Ÿ>}Z¿¼ªúw¤¼oȯËÓ~_•©]©]³KY~Þ¥]»[»2åbÃÖŸYÄŸþYW¸&Kk™©•jRÙ"åêœøK?zµX½äµ%9ÈõïÿíÓê VµµgÏž;w®jkNNN…}¥5õÂ_ý‡õ[è\WÓŸvC UýÖëê‡|Ëâ­)êrp²C²kܾÂ%çÏŸ¿téRÙŸ½úÃoeîWùØ8í¦}ZëƒZÛCÚ-¹Zû<íÖÃ×¾Zí½¤®K¹Ý!­MŽRM*¯Û«]²óýÝ‹¾Z¿KÆ(#åïVÀM%‡šßÄ6„{7ÅÌÌl„ ›6múñÇyä‘ò zêßÊœà‘ûãÚp»Èì£%gÿ÷?CüÛbÞníö_´;Š´ž%ZÏ“Z/Ýâ}Jë}ZësZù*¥ÜC–b­[‘Öå¸Ö±@»vïÕn…_¯Š”1ò·2 VÜs¸7ÉÁÇÇÇÄÄä‡~˜4iÒ½ù‹ ¹Ç‹}3 „ä÷\7Ã)9<»øô¥«¿]ýÝ“ƒíImð%mÈoÚ°+Úˆ+Úp½%âªnÑ­ËÖÐËJ5¿ó¿»•\]š~¾¿]–ŒNÆ(#•ñrÒ€ä€[Vx¢$é`‘\ŒsÝ×}‰ß°µAv‘Ùq¹¥©G/Ú²îè…Íù¥vG/ÔpÙt¨Ô,<§ïÏ¡2.ŒQF*ãå¤É·yÛ!|Ï/«" ƸìýÆ2ªûBÏîæN_›m«í‹ŒBÆ"#’qÉèdŒÜp’îÈm‡ì#'"öÚhŽÎ><Êe_ÿ­{úl1Ä¥¯ýÞšW–QÈXdD2.Œ‘@rÀ r=žt°È7³pKâ±µ1r‘^Û…ŒEF$ã’р䀻‘ÒrOÄ(’‹ôÚ¾È(d,d 9’ 9 9 9ÉÉHHîxrÐh4$jcrIüÞ'‡ªî9DCb ÷HHHH€äH€ä@r€ä@r€ä@r€ä@r$@r$’$’$’$’0ää ÑhHÔÆä “8÷€!ßs 9@r 9@r 9@r 9’ 9’É’É’É’ÉÉHHHHÀ“ƒF£!9P“ƒLâÜs†|ÏäÉäÉäÉäH€äH$H$H$H$@r$@r 9@r 9@r 9@r 9CN†ä@mL2‰sÏò=’$’$’$’ 9’ 9 9 9 9ÉÉäÉäÉäÉä 99h4’µ19È$Î=`È÷HHHH€äH€ä@r€ä@r€ä@r€ä@r$@r$’$’$’$’0ää ÑhHÔÆä “8÷€!ßs 9@r 9@r 9@r 9’ 9’É’É’É’ÉÉHHHHÀ“ƒF£!9P“ƒLâÜs†|ÏäÉäÉäÉäH€äH$H$H$H$@r$@r 9@r 9@r 9@r 9CN†ä@mL2‰sÏò=’$’$’$’ 9’ 9 9 9 9ÉÉäÉäÉäÉä 99h4’µ19È$Î=`È÷HHHH€äH€ä@r€ä@r€ä@r€ä@r$@r$’$’$’$’0ää ÑhHÔÆä “8÷€!ßs 9@r 9@r 9@r 9’ 9’É’É’É’ÉÉHHHHÀ“ƒF£!9P“ƒLâÜs†|ÏäÉäÉäÉäH€äH$H$H$H$@r$@r 9@r 9@r 9@r 9CN†ä@mL2‰sÏò=’$’$’$’ 9’ 9 9 9 9ÉÉäÉäÉäÉä 99h4’µ19È$Î=`È÷HHHH€äH€ä@r€ä@r€ä@r€ä@r$@r$’$’$’$’0ää ÑhHÔÆä “8÷€!ßs 9@r 9@r 9@r 9’ 9’É’É’É’ÉÉHHHHÀ“ƒF£!9P“ƒLâÜs†|ÏäÉäÉäÉäH€äH$H$H$H$@r$@r 9@r 9@r 9@r 9CN†ä@mL2‰sÏò=’$’$’$’ 9’ 9 9 9 9ÉÉäÉäÉäÉä 99h4’µ19È$Î=`È÷HHHH€äH€ä@r€ä@r€ä@r€ä@r$@r$’$’$’$’0ää ÑhHÔÆä “8÷€!ßs 9@r 9@r 9@r 9’ 9’É’É’É’ÉÉHHHHÀ“ƒF£!9P“ƒLâÜs†|ÏäÉäÉäÉäH€äH$H$H$H$@r$@r 9@r 9@r 9@r 9CN†ä@mL2‰sÏò=’$’$’$’ 9’ 9 9 9 9ÉÉäÉäÉäÉä 99h4’µ19È$Î=`È÷HHHH€äH€ä@r€ä@r€ä@r€ä@r$@r$’$’$’$’0ää ÑhHÔÆä “8÷€!ßs 9@r 9@r 9@r 9’ 9’É’É’É’ÉÉHHHHÀ“ƒF£!9P“ƒLâÜs†|ÏäÉäÉäÉäH€äH$H$H$H$@r$@r 9@r 9@r¸ÛÉ2’ 9€¿Xr8|ø0É€ÚE¦ïû’ÒÒÒrrrHÔ.2}Ë$~ï“C^^^VVVnnî‘#G €Á“)[&n™¾e¿÷ÉAH²³³w€ZB&n™¾oyê¿Íäê’ 9’ 9’ 9’ÇÉÉÉ€äH€äH€äH$@r$@r$¨³ŠŠŠ""",--Ç?hРüX¦ŸN…‡åî^¹ú°ÿþ :tèäÉ“W¯^-”®Ö£QLJ·_ $¸%%%QQQ“&Mš={vhhhqqñÅ‹¯˜K—.IÇ"##ÍÌÌ&Nœ(+Òíºs4êøðïÞ¡ 9ÀÍ:qâÄ–-[äÒòСC¿ÿþ»Ö€ý®#sGnnî˜1cììì¤óuçhÔñáߥCAr€›"×nööö3fÌ8vìØo¿ývåÊ•«W¯¨ËW.ëH?å*8//oêÔ©ÒyB8u|øwíP æJJJÂÃÃå]7!!áìÙ³—.]úõ:þ¼¼íÿi5™ôJ'e¯ .””œLNN666–!Ü‘ûö÷÷hüņ_Ók‡‚ä5wäÈ‘Y³fyxxä8púôé :¯'ºå:¹¹¹k×®•k½ ·¡}ûö&&&Õ×Q;PÖ“?œ;wN.0³³³½½½çÌ™#¹G£™4§M›6qâD;;»3gΔoÚ¾}{RRRùCÙš’’R«‡/ƒuss355>|ø‚ œœœ kxroÊÝ;$¨!y¿ Z¶lYjjêÁƒ‹ŠŠJKKå}ø| LŸ>]Þle¢9ÔÉåf÷’–ž+•‹âãÇïÛ·oçΫW¯¾Í›ö·s4ô=z´S§No¾ù¦L¦sçÎmÒ¤IóæÍ÷ï߯nmÙ²åüùóÕõyóæ½óÎ;òDµwø2MwìØñå—_–˜´jÕªqãÆ½ýöÛ·|rïË¡ 9@ É'ï´r¼{÷îƒÊ, W‹R~öÌ™³×‘‹æ3§õ”?ÿüó29Ê”!õË˯«¤§ªòvíÚW_ÿŒNéõ½)))‘ÎçååÉ'—Ëäµk×JÉ}9F7lذ×^{-??_-ÿå—_š5kÖµkWuk‹-暛ˊ<Ñ¿þõ¯ôôôê’РA¯¿þºtC¿Ï§Nªáɽ©ò»w(HPCòf»`Á‚¨¨(¹^ËÍÍ=|ø°ÌòÆ{ìø±ÂÂãò?å‹âرòåØ1[™õüüåýÖÁÑ¡¼¼gÏžóæÏ>|ø³Ï>[¿~}[;ÛêË?úø£)S§Èzïï{O˜0¡¼ÑcFÏ6]þPþs\z¢ëÈÑcÒ»£ÒÉ#ùùÒaé¶t>66vÉ’%2œûr4Žé=ÌÞ—ýÐC 2D¿Üd¶‰¨˜ØYoÚ´© -:&ú©§žruu­ªëÊ uø{³÷þío[ºli¥Ý.?¹²ìÞ³[^röŸ{î¹^½{ÉŽj¹·w‡ž|òI‰ ™Y™jaÖ®¬.]ºH¡DÓ;v܃CAr€’k4KKK¹ì•wZyï½6M”½;WãÓO?7nœ¬È<(WÓååüñ‹/¾8wî܈ˆˆ¾}ûÊä( V_>uêTY‘«Ý'žxBú ëû÷ïä‘G"##Õ6Ñ) ݼ¥›3t³†ì’“““‘‘!Wš2œûr4ôùû+ijëÖ­ú…aaaRhcc#ëÍš5?~|ƒ dš®Iƒ†<|u°ááá•n-?¹â“O>iß¾}ŒN»ví:w·jÕjÞ¼yòÉÉÉê]!Y¢_¿~°°°xûí·ïÁ¡ 9@M”””ÈÛ¬­­­¼ÍæååÉ{¯¼«ïÏEEE¿)_+•––öàƒ&&&ÊúŠ+þþ÷¿ïÙ³GÝ$“Å„ Ôu¹”wc™\ª/Ÿ6mš¬ÈÛþã?¾aÃY_´h‘L(EÕ¹6ƒ¨‡ì+زe‹ ç–Äà–F2ºøøxýBiêX¶l™¬KrQËtvv.ºE†2|u°6*ÝZ~rSRR¤Ú¶mÛÔr{{{y(¯"Yÿè£:uê´sçÎò½$BÈVN\\\hh¨¨]»vÝíCAr€Nòž/Âò5??_Þ{Õi¢X§¤j3fÌxòÉ'‡ëüðÃò–;wî\uSÛ¶mekyÍýë_jX>pà@¹Ø”•·Þzkݺu7>oy¯dåĉê´!žr­š™™)ó‘ äv¦Î[;Hf²jÕ*ý¬¬,)tss“õæÍ››™™Í™3çÑGˆˆ¨yË8üØØX—ŸŸ_¥[ËO®———T“9]-—$ }}}Õ'íØ±ãC=4~üxyÒòÊÛ”¹±ý;~(HPÃÉBf4™ãd²SoË›°ú~[þ!7uE]WWä½ú¥—^9räò2;wnÔ¨‘ºUýPœº~ðàAy7–·ñ–‡‡‡Ë…ùúõëëÕ«'Á©2>z§Rû/–šr±™˜˜¸zõjÎíL·p4n|(³Ø /¼ðõ×_ë—/]ºTrBNNެKr077—IJÏ>û¬Ìq•¶S+†/Õž~úiȩʔŸÜ¤¤$9ãžžžj¹$(y˜ššZ^S²„ÉeË–ÉúÎ;e«»»û‡åî ’Ôо}û,,,¢¢¢ä-Wý³Aê'ØÏVÍÕÕõ™gž‘üP^)ïºAAA².“…\BÊÔ#oé2?Ê´"’Õ—Ïœ9³¼©wß}÷ŸÿüçèÑ£«zöÒÒÒòÕKWOê~–PšŠ‹‹“ÈpîñѨԦM›dêCID2-š™™©•Ÿ­˜;WV¤ýÏ>ûìÍ7ßÌËË«aË8| >øàÂ… åÌÊCõgFdö×?¹RØ´iÓÞ½{KWå5УG‰OjËòD²Þ²eKÉWj›ê‡"vïÞ-ëê¿DÜíCAr€’9këÖ­2ÇÉ;­¼ñÊ›°úóûÕü6ž®]»Nœ8±Báûï¿ß¯_?õ—ÿ|ùå—5zùå—•¾ð÷/ÿOU•ëÿ² åË—«ÿþ§¿HýY~uþ•ky¹h•ÈpîñѨŠÍSO=U¿~ý† >þøãr5]ÞŽL‘ ,P×e‚–CצM¹@¾©ö jø6l((aI=¿_}õUFFF…“›™™)‘é‰'žxì±ÇZ·n••¥–KpªW¯ž(Ù«ü äææ~ñÅH4hðÜsÏßíCAr€’™+>>^ÞÞå]ýÍ?/^ü­Lùߨ¹:˜ššþú믇VWpõåÈÕ¢\¨Ö䉤éªL2н{÷Ξ=[ýP¢á éavv¶ôíÒ¥K¿Ýi8|™îeÇjN®8~ü¸´\¡PýÄ•¥K÷æP †äûСCÖÖÖ2eË;¿\¸É[ñÿþ÷¿[þó…;v433«y¹¾+W®¼úê«5y"é¤ÔWaãÒ¥Ke2ÛüÛ wühÜ=u|øwüP æNœ8‘žž¾páB™/äJM®+oçmÜÖÖ6""¢æåúòóóçÌ™#—5Ÿ2¤ÿË–-“ÎËîÈ›¾³GãnϘuyøwöPà¦?~<>>~þüùãÆKNN–ùBÞŠÿýwÜ&¤cÒ½«W¯¦¥¥M˜0Aº-WOr]8u|øwéPঔ””È|‘ššºvíÚ‘#GÊ›ð–-[öïß_óËÿ{FºtðàA{{{é¤tU:,Ý–Îב£QLJ÷ÉnAQQ‘Laaa?ÿüóÔ©S‡ Ò¿ÿ ŒtI:&Ý“NJW¥Ã·ù±ÀÚu4êøðïÞ¡ 9Àí\oæäädeeÅÅÅø éŒtI:&Ý“NJWoó3µëhÔñáßÕCAr€ÛŸ5ä Ný‹BEý±¾»:còѨãÿ{‡‚äH€äH€äH€äÀq$@r$@r$@r 9’ 9’ 9’ÉÉÉH€äHÀ0“À}ôÿÔ g endstream endobj 600 0 obj << /Type /XObject /Subtype /Image /Width 702 /Height 603 /BitsPerComponent 8 /ColorSpace /DeviceGray /Length 1465 /Filter /FlateDecode >> stream xÚíÒÝJÚ€ákè¼£±“Ž"¢Uf"f‰æ_-¿5""¢ˆˆ ¬t÷°uEÝÃÖlk§;oýày.áåùTûöóóã9ù<3›¼(AD/ÉìÜwˆéynþUbz_¨5 ªÅ% ˆjiY¢ZNi@T©´D•Îh@T™ ˆj#«QesU.¯Qå U¡¨QKUiG¢Ú)k@TåŠDU©j@TÕšDUK4 ª¤¡Q5šUs_¢Úoi@T­¶DÕîh@T®DÕíi@T=÷÷Þ¾DÕh@T÷÷Þ¡D5t/qïi@T#÷â^xÿ{5 ªC÷â^p/¸÷‚{Á½à^Ü î÷â^p/¸Ü‹{Á½à^Ü î÷‚{q/¸Ü îŽà^p/î÷‚{Á½¸Ü îŽà^p/¸÷‚{Á½¸×½¸Ü îŽà^p/¸÷‚{Á½¸Ü î÷â^p/¸÷‚{Á½à^Ü î÷‚{q/¸Ü‹{Á½à^p/î÷‚{q/¸Ü îŽà^p/îu/î÷‚{q/¸Ü îŽà^p/î÷‚{Á½¸Ü îŽà^p/¸÷‚{Á½à^Ü î÷â^p/¸Ü‹{Á½à^Ü î÷‚{q/¸Ü‹{Ý‹{Á½à^Ü î÷‚{q/¸Ü‹{Á½à^p/î÷‚{q/¸Ü îŽà^p/¸÷‚{Á½¸Ü î÷â^p/¸÷‚{Á½à^Ü î÷â^÷â^p/¸÷‚{Á½à^Ü î÷â^p/¸Ü‹{Á½à^Ü î÷‚{q/¸Ü îŽà^p/î÷‚{Á½¸Ü îŽà^p/¸÷‚{Á½¸×½¸Ü îŽà^p/¸÷‚{Á½¸Ü î÷â^p/¸÷‚{Á½à^Ü î÷‚{q/¸Ü‹{Á½à^p/î÷‚{q/¸Ü îŽà^p/îu/î÷‚{q/¸Ü îŽà^p/î÷‚{Á½¸Ü îŽà^p/¸÷‚{Á½à^Ü î÷â^p/¸Ü‹{Á½à^Ü î÷‚{q/¸Ü‹{Ý‹{Á½à^Ü î÷‚{q/¸Ü‹{Á½à^p/î÷‚{q/¸Ü îŽà^p/¸÷‚{Á½¸Ü î÷â^p/¸÷‚{Á½à^Ü î÷â^÷â^p/¸÷‚{Á½à^Ü î÷â^p/¸Ü‹{Á½à^Ü î÷‚{q/¸Ü îŽà^p/î÷‚{Á½¸Ü îŽà^p/¸÷‚{Á½¸×½¸Ü îŽà^p/¸÷‚{Á½¸Ü î÷â^p/¸÷‚{Á½à^Ü î÷‚{q/¸Ü‹{Á½à^p/î÷‚{q/¸Ü îŽà^p/îu/î÷‚{q/¸Ü îŽà^p/î÷‚{Á½¸Ü îŽà^p/¸÷‚{Á½à^Ü î÷â^p/¸Ü‹{Á½à^Ü î÷‚{q/¸Ü‹{Ý‹{Á½à^Ü î÷‚{q/¸Ü‹{Á½à^p/î÷‚{q/¸Ü îŽà^p/¸÷‚{Á½¸Ü î÷â^p/¸÷‚{Á½à^Ü î÷â^÷â^p/¸÷‚{Á½à^Ü î÷â^p/¸Ü‹{Á½à^Ü î÷‚{q/¸Ü îŽà^p/î÷‚{áß{GÕȽ¸ÞÿÞ¡D5t/qïh@T÷÷Þ¾DÕïi@T½®DÕíôGGÇ'§gç—W×7·w÷ãñÃãÓd2~…a:LžÆãû»Û›ë«Ë‹ó³Ó“ã£Q¿³’ZËllnŠÛ;åJ5©×›û­vç.|o7¶[ûÍz=©VÊ;ÛÅÂÖæFf-µòe5YÏæò…bi·\Ù«%õÆÛ¿­ö߃áÿk·[oï6êIm¯RÞ- ù\v=“^ýò É endstream endobj 604 0 obj << /Length 1357 /Filter /FlateDecode >> stream xÚ…VYoã6~÷¯öIVŒHê Š¢@³íéÛva´(º}PlÙ lK®dçè¯ï\ÔÛ(GäpÎsðv1»ùè‚B™É‚Å:Ð&Q.6AgJ›"X¬‚¿Â?çΆÍiÙL‡Ë²æE¹›ë°kpcÂî0LVK =ÂoýÊL¸®‘v”¢ƒ§yš±ŠS…zXÍ–MËkTÕ l‡²`Õäá‘…7(R“Ü{¤8R­àWá?¢c.ÖøŒ\¨ìÕÔ8‰VèÊqþ÷âç "­U‘¦þN\¯·¨JÍ£$·á‡t‚Îæ«@ObXµ¬;”Ø£Ï'X Š’ hj>Gsm#¨µâÊT34küÚðnäh /I®˜¶DCÓfäLÃ*ŽxRah7Ó|tÛ6ΕÎLþŠ Ð/ùîIL‡¡yî 8Gái f21Î'H']Þ]ä="^}@´<‚WL! ó^¼O&ëwñswn×Êe^®GÊÚ,!’ÖˆZz´€C+T7ûq1Ó  t ÓܰAb²E,÷³f°2ÎÇhIGyÓ&‹­'ÞÜíMüÐÌ~ƒ?¯7òŠ£‘æÛk%™ÄN%TU-¥6¦‹KÂ/—¦tk1É f}TpNEÔ´„3¸ú-t>WREÔh½beÕK}¯œ²Ö+)m0±a}£Z;¿V“:¥ãïç`ût~‡:VIâyZ ËoÈÆŽ~dséA)>Ÿ¨/§R¸ÎZ¯ÄÂ(¯±N€«¨’\ß4h3i°—¦uØ€¢½¢4t&](5!µKàl°DŸæÆq¹Ghçå •SaZvo}ШW3sŸ–üXs­¬Í=d·tûüC”>K©Ï¡Nbël\g{nMM{¤˜¸„6µÓð¹a°#ÈÍ>©àh?êòÒÚÚô¹×"!å…@áiÌ_´¸ÖBjKèã¦æ„^±–{DøU4Ùí¹'Áå¤& ËŽÙŸQ´’TBBÙ]št £f]úÙðoéIÔà¡\p@íôœš¦[ÄsàˆCÎù–´©jŸªwƪ"qìÌsHyª¿ÜE¶ÓÞ×sÌà5ؼP@- p8é¨kr2æöAºænR„ Á¼8±Ê¬¢Ëš4 ¿j›TRUå3|WI]Üe–½CÖ¬Ojv1G±Hë3ùÜnçÃ#bséNVÈÐJj/û.÷Šo™40B/Œ–\9Ó· /ç5‘*c´?ïÇ8õJADIec½QfUœ@‘pRË]}‡éfVî ¸ý–f+-wR§%%½¦Ú}ÚBè‘î$9Lí›Ï;9~M~"z~ê/g‘Çâ|>Lm¸ñDç\G}ø ¿[à$›lksH -ye… ¿ßõ†º͵4Ç_^‚'6çöHq”ËA¿>¸–.¾Y/÷²ºç »äâ²Ùï©í¬&i%‚ÊØ9Bª¤7lÇß¾\xê|Õ¸i¹q]àÖ'»ËG£S ÐûmKc3b_3»¯ Ú¬Ä0B×™F/d± ŒKBPFâ5?{ü.T˜tVRnh=mI’) ¯:ݤåJÚÑ€ÃÎ'Ù‘UNôÝð¦Þ=Ó÷Ø-åÓ|èÑ7Ê0þŸ> stream xÚíÝ\×ÞÆqrÓÞ›\[cc7¦Ù5±EM¼±$7ͨ‰±·Ø Åö^£¨( Š‚HïU`éEì‚ bŠÆ÷ýïlVZ6bù}ï|¼³gÎÌž93;ç™a!FF†š;wnxxxjjêI=)))óæÍ“À ÿîÝ»÷àÁƒòo"€%$$''Kf JJJŠ(‚DÉ 2 P,É qqq1…‰ŽŽŽˆˆ rupX=t˜YÛv3š·É´u;y)…²H*Hµ¢VŒŒ óöö677_´h¡bÑ¢EòR e‘T(fuåÝw¹ì½lÈ'·i?¡i»ß1¹õè%C¤°øw—d†¨"Șîççge6ǸÞ{óš6ÛÐõ«Æ٠¶¡K÷¹Mš×k ‹¤‚T+tuÐCBBlmmçλråJ‹M¶¶Ûl·ÛnÚd!/¥PI©VÌ»ÏßhÖhDÖÓ}³ºóЭ¿ ÜòS÷Zðш:²¨˜wJ“pG› 6Ž~tDɄڬZ0cÆŒ¥ì#è àIÌ *B@@€ÕìÙ&5j¯oðQhç.§W­¹ž~;5õô²¡ÿ»¾Á²H*HµBWÞ±cÇ’%K,,,\\\"Táî?xp¿Jáâê"ÉAI©VÔ»Ï_oöáÐw>ý~ï­ÿݹòØÅCûÎÄ. œñU›f ÞZC*õî(WÜ6Mo_7÷—€Ú]üÐ6°¸ï—}çÛ•¸e£c- ­l7´Ý—óíJzn;¯èõå·¹zõ3û}[ð;D¡'×m&½Ø²SK£“üþùêanë{=Œ^ýýïë¼~…Ù¨^íë~9ëžò /Ân{{³úؼ[7¹zÃ̦mþ1öÞû{¶;n™ÙèÓäêõe‘Tj…®îáá±zõêmÛ¶y{{‡„„DFª“’’"##å¥Ê"© Õ ]ÝÞɮŰúŸ˜6øj[ÓÁ.]—F{§8ì>´eVðˆ_œ;vÛÖDI©Žò-Ôe¹f˜ÿb¼•½ýŠ™½Zû]×f‘‰é:Gƒ70£¾QýßlKÜÆ€Y­ŒZMÛn`Ãl[Ͱ(é»n!ûÔàýÇÿŸ’…¾·ó±–û»ºä=é=¥¾Ñ'3]=šzô@äô†Ídéc[ßG¹›÷±þ-/ƒ¶šåÇO9C‹°~Äè5µê~­îÕ—jÞ«TGݸú§~ê^¿¨}"/¥PI©Vèê666’ üüü‚ƒƒ%$(ß^P¾á /¥PI©VèêãødtÃ?íïÓahp—É?-Nüm~ü˜ñá=uîëÓAI©ŠòÍÇzºœÆ–ªý qqIÉNŒ(²nÀT©:i‹Á K>rôȾØ|•ƒüýÿš 2 ¾3Zµœº-ÔÀ†…Å9z49&¬„=ãg7S¶:Û5aÿCG£lZÕ´*è1–|]]xOþA[;}>Óî7à«í©Û|ånÞ'**2vßA÷9_5˜éÏO9߃‹`Ó±sHÙk«_®©~©¦úÕzê:5SµzjMaíìWêJ›Žÿ-tõÍ›7»¸¸(WÔ={öH>‰Ð’y©\l¥‚T+tõͺ}¿®Ýˆ°îãc¾›œÐÃdoOÓä_f$÷™–ÔsRü㣿±§û·ëÚIµ`”o>6S4þ—oÏ+Éý7Ëm”Û¼ÚÖ8J¥±r»]·¶‘Q6lÄËì«Æ_ͰÔÌúZö¨ÝfÂâù}šh·Ñf´½—£ñ×Êö;Ïßî•[ÿë&º-o7ëQûëÚ¾Ó[µ˜¢-°ݹIîíg›>掅4Ì×ò‡Úµ-•mïÞhÖ9ïϯõ0^ã«”jÚÓdôâÅÕ}lÒÇ|w@þžÙ®yÎ0ÅÆCó"Ü}˜¼øÊÔ[Ù£É׿÷w«m®yß5Æ}òÞ¡³ÙÆÝ¹W€=dgÌÏk¬Yî‚`¯å£s÷¼ÍðÅ^zí>Cé’Ñkòwµ^O;šçvA“>Ýr›½}ù„¼~1Òí{¯¹] wîM̶ûÛfã5f5G}¸¹þ&|·O×ö†Wq½§ì…ÙŒ¹Íë±ÆQÓß¾öó›Ôî‘×(9Êr`mŠ?£4çОð°Ðí’Ìð჊§‚œîEØÝ°É‘š¨ßýH]¿±ú£–êæmÕŸvP·î¨nÑNÝäSõÍÔµ©ù¡T+tuKKKM¤WÒ‚J¥Rž3ÈŒ’47w>>R­ÐÕ¿^Øa˜Ë×&I?›è»àpÿ¥G®L¼"eÐ’#çêoz ï´¤ÞC\¾þzA‡@”o!!»ûk/Üøm³ƒw^ñŽŸ5C¤™gD¨µYO#£:Ëœ<·Ê\ƒþ ìíí} ؈·I £z“¬5³^Ö_)£¶©…½…Ií|½ÍìíÍ5£d¿¹õ[ÕWênÕ¾ÐnË[›¶hf=mÆžïäè´ús#£fã6JYþ†ùZ·02šlí®YÓÚDóCüaK=CCÌ'iƱQ4ÛñÍmOlj«ím—j65vc¾žñÞ¦%gØú˼ÃZÍ“ùÏç9„z›vÒ®ù£‰µ­“4oÃ(ÍÀ9ÆÜ)4Ôsé0Í2kYe›‰òÝ—ZÛ[˜ Ó¾õÚ@Mý¶Ò¢Õ®š]hidôµéýö ]`nk¿Û7WÿÕ“Êõ[jê:IÖoò›æÍü¬¿”N²t²¶vðÌ=,5ûnôµ‰­½½‹OÀß·ÙÂÖÕ?¨`oLÙâQ\ïå•Y`ao­)72è _óî-7yæ;ÊÅœQ:Û¦Kf˜îÍOùHøÁ³iëã¶PÒ^Ý©‹úëÔ?õUùU=t„ºï@õ·?ª;wW·ét¢Q+m ]ÝÚÚZù½ QQQÑÑÑÊowÊŒ¼Ô|%Iû›Jµ‚z¯èö›ï ^‘:Ô<ýWëcìNM°;5ÞêÄèµi¿.Oºðð ñ>={-ïê‡r. lï¾¥crï|{OÝ(e®5ß:¶|ûn{G—ËëË­¯¹s`hÈÜ–F-íåô  üÛøùyÈH×b²•fÖÛª£lpOr|”*ÂAF–úÃÖ%'Ç«T{æÊÐÒb‚³R_¶¯Ô÷ó³Ñ -Ó=òm'0IqÑ‘ª°àü]ýWh÷èóM»í-çiÞm­¬ï¹¥»lªÛh {ˆ¨¨ð`ÿ|ûáðµægr×±ÇÇ¢Ø6¾-\Ú™ï+½¡ôj‘½§-³-<)Nö96ÈZ“”Øz{l•¼ÑÒÚ#wKº£\Ü•G{˜xð9ÅSA>>EðíÕçH«öš´ðËõ¨±êé3Õ‹—j¦YfêqÔ«¿ëu¤M¿Þ¿ºúÖ­[½¼¼”_¥”¨ •˜˜(ÿÊKå—1¥‚T+tõ –ƒÇ»öZ“:ÒâøØ§&º3ñÏ4óË4s=;Í6c‚Åñ1«SGŒsé5Þrà“°7>hÇЖš±qìúÝžÛfÝÿßT©ofãîãã:U®ð“6¸·©2ÒMÔ<1óñ°”q|ÊvoͼûfY:M·ñÕ¼p%/Zš¸kæÝ¦i¶o©loË´NFõ§¹iËÿÚŽãúÁ´cxíÚòO§ÜÊ÷7Lû^-5 Xô³l|¶_^m4÷Ñ×»æµg‡Þê–ùvÈmË4Íã„©+,--½÷ìßì›×È;üsWÕì‹ÑÀÕy+ùÍ–»öϦíÖ´¿…QýÞ¾¹åV£êkvS©¯ß³Ýg¹å럂{ôWÈÕ×[»ž4ÐRÖ÷Û°c^K¥¬Q¯UÛÝòmŸ·˜¸ùïÛÜr¦`!‡×m‹æ«Ú^-º÷´å“­mKîNï\1L6¼ÞÍÏe“æ±Õ­Úr— ßéý¿=£ŠiPæÈÁ½Ážž!}f ûU½`‘&'l·S»¸j&»j‹MêÅKO:p°T+tuÙøŽ;âââ”ÿÂ…’”ÿ–j~ä¼c‡æPŸï Ûz/´+cšÏùÙ—Ä^YseeØÅEÞçÌ2¦Îñ8Ö¦·TsGùf1{Ô°I‹¬líœlÕ|'ÍLN«×Áš[Ö®³·qp°³ø}Ùï¶Nîî.s4CvU¶N.¿ww'cé&XhjìÞ(£É„ŽšyÇ4?ŽØ¨]ÕÉXóÂØA3ï0Aî›»ü¶ÞÊbê5µ?/7vRêämGóÜÀèûµÛl×ϦýíÇévš ÷7l·…d† Ú÷Òþ¾ä÷ãI·Z5IólbðÆ ÏûÛ#Ûo¡kÏ_œ6iêìÌW|_eÏ #åÆ¿ö¤UVš}÷½æ+ˆVš%›5múvÜ"i”Ţњo ,´÷ñ Ún¬¹Ëï3u•ƒƒ­ÕúE‹Ö»ä럂{¤×~ 5OY¾ga+GÆfÕ¢e¶RÁÉbê¤Ù¶»<ܶjÜÏËófý>/®Í2@+}î^xo(½ZTïíÞ¨Ù·/†kΛU½ëhެ§¯»»ý2)þfÒb«õó»(_„ÈíÀ"Ï(Ívm­¬l¬æ “& [ceeeëÀ§eœî.Epss ³Ù5vÜ…+5$-xû¨}|ÕnîjÛ홫×Äü61bëV©Vèê®®®ÎÎÎNNN{öìIHHÐ=gÌ /¥PI©VÔ»ïôÛ>Õ®·EÔX¯Óf{.,Žº¸B¦Ð ‹e—¶Žn;n[g×ËýeŽÞSFjÆ›Zý—ço˜ãz¹§Ÿ²I³IÏ@ÕîÕãu k1xa°*${r·¿!_Ï8[i¾õg¼Áñþâü•C¢‚nñWG­Þä)囦H+:~×.·¼ãÈu{Âý¤<02ÌbJ¿:«ó$ûüíq)ÐÕz=àî¿mö_ïgôÅš]šÕÿ÷×Ï+zX¸ù¸ l“´ÕmÆæâÛl5½›Q=¥ÏóÛµIó«1J¯Ù{ŽºéŸõ~± ‰”íºúx.ì‘{Ü~š½l| ]yF óß:Ý÷SœZÃìø¸¢Œ“ywdL÷÷÷ß¾=ÆdFúf««ŽŽwÜ=î¸{^utJ·²Ži*‹¤‚T+juOOO™‘`§%3AAAR(‹¤B1«ËÆýw˜90iŸ4Õý¨™ûS»$ãµ#f8ôwðßQÌ»£üð MŒŠ Ò|?'".1jO€‹²ÀÃ?J^jþ΂'Fø»kN¹ÀmQDx ‡qˆOŒWhf]tÙíꛘá¯]Õ=Ló"\»`·ohTœvû‰±‘Q²r„ûýÛñ OˆÓVHˆQEiþ^Adx@þ†¹ÄëÞKÚ™ªÝøè0Oe÷ôÛ£ßN=®~á‰R'Àýþâ‚•=âã£"4=%=ê§”ZLnnÔÂ4\zCóÖ²_!yrVÅæö¬¬«Ý÷ûÚ³»@Wß÷¦^áñ‰qšÕ#¢c\s»TÛ陨`o×ü‡ÙÅ7Fª†ûßfÍqLˆp/ì;î\¿dåNW'Ž>P(É ;‹eoo¯ÌäÍõ¸%$<غü»o¿—c¹Úg¿ w'Ž>P(É öGó{èG2ÃE€¿Cfd@fd@fd@fd2 32 32 3(èìÙ³óæÍ›2eŠqé3|øðfM-4ScíÔTozJKZ4ÝÔ¼Ù¦–Í6µj¾¹u«Ím>±üö닆œ9sžÓ 3O00,Y²ÄÆÆæäÉ“999Üï–â½é±—|¸k×®UªTùøã§NÚ¤Ie©¼xñb¥NJJJŸ>}Þ|óÍÿüç?R-ß–/Ýÿîò22"bÛÞk¶{¯m»*XRçÃf_ úM™ÿ¢×ÐWß|Gêôº´AÓÖ*¿úÁ'Ͷ‡(kµùê§_¦,îôãà—+VÞ¤:ST)ÿfèä*U߬õ~“¥îI¿.ØôF:Õk¿7q­£RÇ<$½ùçÿ“¼U«¾ÉfO)ùqŒé‹ÿ~IJÞx·î„5…ÖÉ× Õ™Y6~ÚIæ¥ÍæÁiJë¤kV ×6ÅIZ¸º*êÊ¢°ËßïH7êäHfÈ ÀÉ VVViii'OžzÖÖÖÊKKKKy.3[¶lQÊ-,, fe]33³S“Ì0Øëò`oíä¥7(©Ú Y…7jV~§¾Ñ3ÏÔló¿~NúuÚŒ^Qáw•’7?nû^×·“¯Nï+åz޵Îǃün”²å¢êüÕí{½ñaë·›}ÞkK²R2Pû¦<5S_K}Ü.övÍúÊéÂÇ[O}ïIfÈ ÀÉ ÎÎÎÇÏM §OÖ:£§I“&#FŒÐ/Ùµk—|ô•— òR¶³{÷nýòM›6IfPæ[·n=qâDݺ~~~g 46àZî˜ý×|’jï5«ÛþÛ«|;¤è ¿š³ó†Í_¯×X¦ŠoÔP ßnÔ®U¿i†×iñó¤wštPÞëóŸ{ñß2óý2OÙ—7ßoùæŸ(SU~R§Ö§]›ô£¬XT| ¸ã@fþõìsÍzå•©-ÌãŸ=Òïê¿«C½¯HŠèår±õö³F?û’€ÇŸ8àéé¹ (Ǭ¬¬äS ™AÉ gµÎå9¯%™aäÈ‘çõ(Ï•—öööò2**êĉÿ÷ÿçàà ”/Y²¤råÊʼd†I“&ÉLtt´T–Eç <-ì†n2Ù£™ -y«aóOúLÔ/n—,qïîòò«i+½ñ®²J&íÛ œnxÖ}§ÔlÖQÙrÏÅÎ’dþWûý²/?-wËמzmºµê5V™/ªÎ»ÚçÛ‹_~÷{©òkÿým¥ÌOÝsÃ8T¦œÉÁ9‚®òÏàuùËçÉQãÔE¹%—,¾sf8xð ‹‹K@@@XXXP^y{{Ë]|FF†tÃô=M›6•Ì _"55jÔ£G´´´”””o¾ùFr…²Ö—_~ùᇚ››KBxï½÷^yåe•6mÚLž22R¶v¡X¡¡¡ó£oË4Oûo13oТ}¿Éú%Ã7…J˜´ûèT¯“»þüï U”Eµš~ÖiÈLÃët0µN‹NÊ–û®pyþÅ+u¤°v³“\Så¥iÈå™Áe¦ÍOã¤P׌Bë(×Õº1h®êÆÜ¨[ï|Ðò«‰+çi çFÝžyËTõÇŒˆ›SBsFú]ýnw¦Ñ¨p9jœº(ŸdÈ–[†oÄgf땼»d•#GŽÊ«˜˜ù œ:uJñ333³´ô?,’äƒöLžV­ZIall¬ä„Š+¾üòËÍ›7‹‹“BYQ>È={ö”’ñãǯY³æí·ßV¶&™aÊ”)Jýû÷ËKÙf•*UªW¯~æÌ™| r•X±W­™’4Óª$õJåe’¶ì4Ð8_:}÷Ü‹ÿW©ê[½L7½\ùÕÆ_ö’ u›wèò«©áu¾bR¯ÕçÊ–‡®õÌ ¼û쀳ï·íö¯=ûê;u*¼Zm”e¨;î«Z£^•7küºÁ¯¨:²ñ/5Õí…Ô©b•W«×z¿ýW‹cnÈ›®L¼·<ñÞÒ„?Çý¹0öΜÈÛ“Bsúz^62Ž•£Æ©‹òI†l¸åª%ƒøãÌ Täâ¦|ïëP^íÛ·/>>þìÙ³º_´¼¤uÙ0ÇŽ;~üxQK{ôèñù矵4--­˜uõÉõaãaµLÚõ'KVDem8ø§Ì¯I¼.Ó×)ªdMµ¥çòÕY¼ç´l°ø:úÛYŸ-“®pÃ!õúCjóƒêµûÕ«“ÕËÕs¢oö»úÌB9hû8uQ>É-· ß2ˆ?ÎÌ w.éééšï|å˜ÜòïÙ³G2ƒäÝŸ‚,ô¯AhΜ9ãÇ·´´ìׯßK/½äææ–]bÑÑÑ;N©õ'» õÓ]²=Cm+Ó õÖãj›tµÕ1õÆ#êUÉê±þW¿_-GSå– Ü2|Ë þ83Cdd¤d:åܱcÇV­Z•™™)C³þ×òæƒòóó355•À0yò䨨¨›C||¼W¶Ú3[íqMí©LÙê§¼D¦«j·Ëši÷EµÓõγšð0-ôúˆÙkä¨qê¢<“á[q2ðø?z , º}ûöÝ»wïhýYÊìÛ·oZ]ަмƒÿTÝQÜQïÎTÏ´‹ãŵ \¸È ÀyÊý믿®Zµ*%%Eƒºô‘†É )S°ÞôÔ—È¿!2sWrWíwãîÖ¤c“­‘#%Ç‹ª‚Ì@fžˆŒŒŒˆˆˆ©S§öïß¿_¿~}QúÈq‘£#ÇHŽ”/NZÈ À|Úpüøñ˜˜???”>r\äèÈ1â @fJIrP~• ¥Mî± ™™™Ì™Ì™áÑd†‹ ì 32 32 3¨TªB3Ã0PšÌ 2ˆ—†ç 7nT€ÒAÆåRû³ 2Jƒ:œ„à$,™áðDÉ'…N'!8 ËDf¸uûVá“âöÃ›Ø ,l’OÊlmÖ¬Y2/Ðlð ž„´yÇO_´h‘2Ÿ–žvêô)ñS–‰ÌpCÏ /¼P³fÍJ•*}ôÑG*•êÆã’““så•|Rtóýúõ›6mšîå¹sçÞxãË—/\«bÅŠG¥÷ðÐOBÝ•ð•W^éÞ½{rrrÉ·ÿ§«\kÕª%3ݺuëÚµkûöíÛ´isõêUÖS|–‰ÌpM|RöîÝ{éÒ¥¾}ûöèÑãÚcQ£Føøøk(¯ä“¢›÷ññ‘ó!;;[y¹nݺºV… :Dïᡟ„º+aVVÖwß}7hР’o_.¿º³Ú@aaa’[ôK5j´mÛ6ÖS|–‰ÌpE|Rdfþüùü±ÌüôÓOÍ›7oذáúõë•:|ð\ÉëÔ©ãìì\T›Æ¿ûî»~~~£FzóÍ7øáe©ƒƒÃ{ï½×ªU+KKKy9uêÔçŸ^JF]piÁ·ÃÓG>)ºùË—/ËuÒÍÍMy)7VÞÞÞ…žf’8 õå4;s挔¸»»Ë¾ÐÓ 0ü$Ô¿Ž;¶gÏžETööörºJá!Cä\UNàBOH¹Ž>|¸à­˜möë×OftM:zôhÕªUU*ë)> ËDf¸tñ¢n’OJppðöíÛå´Ÿmf&%áá³²êÔ®­Ô‘kõO½{Ÿ8~\yYhù”ÊÈ)ú/å´éÕ³§Ì$ïÝ+烜Efû’“¥P>'Oœ{;»O>ù¤¨‰‰Éð“P®„2²Ë©(盿Ÿ_Q'•\Ö䜔ù™3gÊø®T+xBêN×|4·©L:u²Ü¼™#õtŸ„e"3œÓ#·ü 46l˜££ãÙ³g¥$##ÃÇÇgÆŒ/¾ø¢RGÎù¸¸8Ý*…Vˆ—™ßÿ½sçÎJa“&M$?Kð~íµ×†hÉGC’¶,’Ì.3….Í÷vxúÈ'Eÿ¥î—_~955ÕÄÄdܸqÅœfr'(g©|.¤²”ØÚÚÊýZQ'`øI(W¯¾úêí·ßž?¾RR𤠔1]Yêïï/£¿ÌzBêN×|4·)<==û÷ïÏazêOÂ2‘Îë‘OJTT”î¥ ýo½õÖâÅ‹%BȵZ)”s>11Ñ k×®ýïÿ«Jfعs§¥¥e5ÜóòÉ'EH€á'¡îJ8zôh9¯ä”+xR¥¥¥I‚MJJÊÊÊ7n\Íš5•ò‚'¤þéªA3|›§N:{ö,‡é©? Ëîw r×­[WÆôüQ.à£FÒ}÷Ì 6lÌ ÔlÖ¬™ò;;»×_½eË–7VJ–-[&9sæºTÿíP¾~&Μ9#×Ò… ršM:õ7Þ¥³fÍ’K´²JÁ x€ï@ž;w®^½z&&&…žTrÕ’s¯N:RA÷}ÅBOHÝéšï‚fà6¿ÿþûU«Vq˜ødiÈ ×ÿŽä[ù÷òåËçÏŸ° ù\»v-==]þÕ•ÈŠ’«‹ZЧ›|R ©VÌi&vCN3 „'aÁ“*33S®öáááµjÕ*þ„ü§Û䠔Ó°Ld†?€'J>)tÊôI(×XÉ t#Jx–‰Ìð'ðDÉ'…N@™> oÞ¼™‘‘A7¢„'!ÿ]K€ÿ¤ 8 §æ¿kž´R’T*Ï(å Í 2ˆó³ ð·™ï3E9~üøµk׬Ž!뙡„™¡F~~~Ê|ÿþý‡ ¢+¯ZµjõêÕ«U«Ö¼yó+VüùçŸV< .\øä“O:wîÜ Aƒùóçÿ£:E•oÚ´é¹çž{Y«B… t22ÃCÌ Ë–-k׮ݭ[·tå;vì™{÷îÉvêÔ©3pà@+…¾}ûNžÊS8)—yI’±;vìÄ1Å#"WãvíÚµnÝúÝwß]»v­®üÃ?ÔýîCQuŠ*Ÿ6mZÓ¦M5j$gopp0Œây{{¿þúëÍš5+˜¶mÛV±bEI¤råÔ}rÿþýrvÉÍT½zõ þD xZ3PJ¤¥¥ýíï¬U§`¹ÜÎ ¦â3ÃíÛ·ÃÃÃçÍ›wõêUÆ2˜È 2|Ë ^Úž3œ8{Óø÷£EíKÁ¥n{.xEdê—˜;fx„g¾&¦|™áƯ¼òJ“&Mä¥ò_È Ld†Rø³‰®ã:ü[Ô¾è–&Í6ÛtLfF-9”sóîç#ãtuRNæŒ[~˜ÌÀôÀ™áÞ½{7oÞTþÈ3™O$3è.qLLd†b2CÔ¾+c—Vf¦ü~Ô?úâ¥ìÛçô—Z¹¾}ç^Ö•Û'ÏÝülx왬?fç}¸~™µïâÕÛí†irÅf×SGNä\¼rÛmÏ…¶CÉ Lÿìû d<©Ì ‰k?,V®{37¤Æ¼*×CYº/õÚ ¹”“V å¾IfzNÛ»7åÚµwCâ/}1*Ž3S9É º1]fÎ_¼µd[úyäã£| AYÚyt|jFÎ2Ûã_OH”Â-§£ö_QV·ñ<£ ’Òœ¶·ûo W®Ý¶à ™‰Ì€2‘ò]âäªuúÂ&æ)ÊËËÙwF,ʽ IùÄUG4÷Sû¯ü¾ód×q 23Ï*3S9Ì ¿;œT åã£Mg2ÿÐÅÝèª|úÈ Ld”•ŸMè_âäª%wOºµ`fŒqã?û™íïe’lézÊ3"“3S9Ì ºÁýPúõb2ƒLÒ®KÀ¾ð d]áÌ ©1#ö^¾ríÎòíd&2ÊjfпjÌ 2ݾsï`úueR~„ÁÄDfÐÏ ³õ2ÊÇS3rœ‚ÎÛxžQJÎÙëöŸ½LöÊ|ìÁ«d&2ÊVf˜]tfP¾ÃðÙðØ‹WoK`2ïÀŸÞûfR"Ÿb&2C¡™!$þ’.ÈÔm|»÷nÞú󗼿½0iõ‘¬+·;Žˆ“’Œó7×;e˜È (+™Aÿ—ïªu íú*»GÇ{EdÞ¾sO2Cûa±égn8œë4BóíÇ/ÇÆóqf"3èNXuäRöm‰âºÝ Oºœzê†î¥$ð}©×®åÜ•u·xœ¾ríÎÀ9ûÉ L†d†œœœÊ•+W¨PA^V¬X±Zµj gxÌ™Aÿ—ïª5gó±ë7îÊ5mñÖtÝw åæ(ådŽ\ñäI•|…3S9É †O’ ºO(¾N×q ºœ Lÿè9ð3Cñ—¸ÏGÆúwl¤¾ò¨‰‰ÌÀÄDf@ùÉ LLd2S)Ï ÿ]K&2CéÏ  4 32 32™2CA*•ŠÌ@YÌ 2ˆóœ”¶ç dÈ dÈ dÈ d@fd@fd2d2d2d2 32 32™2™2CI2ƒJ¥"3P3ƒ âtèÐ>PFÈÀ-Ã÷ƒû%É  ü 32 32 32 32™™™™€ÌÈ €ÌÈ €ÌÈ €Ì@fdxœÎŸ?´jÕª1cÆ 0 _¿~¿ä飕ï¥Î£+W^öí۷߀~ƒþí·ßV¯^-”¦–ŸÞ(ç»ÿHÏ2üSYYY!!!ãÇŸ>}º¿¿ffæ7î–27oÞ”†›ššŽ7Nf¤Ùå§7Êùî?¢® 3À?ráÂ…-[¶Èíä±cÇîÝ»§.Åîiɨ‘––6räHkkki|ùér¾û¢+È `8¹_³±±™2eÊéÓ§oݺuçλwï”R·ïÜÖ’vÊozzúĉ¥ñ² å¢7Êùî?š® 3€²²²åzyõêÕ›7oþñ]¿~].ø[MÆý—ÒHY+'''+ëbLLŒ±±±ìÂCyJÿd{ã)Û}îï 2èäɓӦMsvvN=zôòåË9Z7î'Úé>iiik×®•û»œh×®‰‰Iñu”äµä/×®]“›ÊC‡¹ººÎš5Kvä öF>2\ÚÙÙMš4iܸqÖÖÖW®\Ñ-Ú¹sgtt´î¥,-Ó»/;ëèè8cÆŒ¡C‡Î›7oÇŽgÏž5ðàþ#¨+È `¹Òúøø,]º4...%%åüùóÙÙÙr¾n€É“'ËÅV†˜ë%  +ÿt-iaöµl¹>sæÌáÇãããW¯^íëë[ÂGô%é }§NêØ±cݺue={v£Fš6mzäÈeióæÍçΫÌÏ™3çý÷ß—7*»»/t‡ªW¯.iåÊ•£Gnذ¡——×ÜÇßd0„Œnr•;ßýû÷§M‘ë¿Ü!JùÕ+W®ÞGn”¯\Ö“•™Y­Z5e°úºòû*é)ª¼mÛ¶ÆÆÆÅ׿¢•}k²²²¤ñééé2ºIãåÖxíÚµRòDz#ßÞ 2¤F'NœPÊÏ;פI“îÝ»+K›5k6ÛÌLfä^{íµÄÄÄâ{©”ïþ€Þ}÷]i†~›/]ºdàÁýGå¨+È `¹ÌΛ7/$$DîÑÒÒÒŽ?.#EFF†\rOŸ9}öìùŸæÓ§uÓéÓ–V–2ÞyzyÊõÖv»­®¼GsæÎ:thÕªUkÖ¬iemU|ù§­?0q‚Ì÷ìÕsìØ±ºíŒ9búŒéº—òg¤%Ú†œ:-­;%ôÜsÏ 4H¿Üdº‰tÔž°=2߸qcÙµÐ=¡UªTqpp(j;÷•—ÖÝ?xèà¿þõ¯%K—ÚlÝÁ•iÿýrÈÑýõ×ìù£¬¨”»º¹¶oß¾R¥J>÷&ïU “÷%wëÖM %”îÚµëQw™ !÷e«V­’[]¹ÆÊU7w€È».ãóÏ?=z´ÌÈ(wкòÖ­[¿ù曳gÏ úé§ŸdX” _>qâD™‘;ÜŠ+JdþÈ‘#/½ôRpp°²ÍsZº·ÐŽXÚÑB;^È*©©©IIIrw)»óDzCŸ§§&GmݺU¿0 @ ---e¾I“&cÆŒ©]»¶ Іl°4ï¾²³….Õ\ñÙgŸµk×nVÛ¶m;uꤔ·hÑbΜ9ò111Ê“ !)¢OŸ>G]´hQÆ uWàoeeeÉÖÊÊJ.°ééérÕ•+°re>þü¹óš •ðì³ÏFEEÉüòåËŸþù(‹d˜;v¬2/7}r5–a¥øòI“&ÉŒ\ð+T¨°~ýz™_°` %ç‹“;v(C†¬+ زe‹ìÎÿúÀ÷F>¶¶¶²wú…²©gžyféÒ¥2/™AöZ:ÐÎÎîü*-»¯ì¬ÄŒB—ênll¬TÛ¶m›Rncc#/å,’ùO?ý´cÇŽñññºµ$<ÈRÙððpé¨}ûö=Ò® 3€!Ä\íåæWþ=qâ„\u•"S+«hS¦L©T©ÒP­ŸþY.¹³gÏVµiÓF–êj¾öÚk ,ïß¿¿Ü`ÊLƒ Ö­[Wð}u­’™ .(†ÜlÊýéÞ½{e$’)É ù`½‘¤é•+Wê&''K¡£££Ì7mÚÔÔÔtÖ¬Y/¿ürPPá[.…»&ûåááQèRÝÁuqq‘j2š+å’䥻»»ò¦:txî¹çÆŒ#oª«,¡±Už‚Û¸]AfC† Ëdt“aNy,,—_åJ«û›2£Ì+3r•~ë­·†¾,O§NêÕ«§,U¾ö¦Ì§¤¤ÈÕX.à–Ê͸¹¹yåÊ•e¸”'ß—ëJû¥ÁRSn0£¢¢V¯^-»S’Aóz£àK¿Þxão¾ùF¿|É’%’RSSe^2ƒ™™™ÌHFªZµªŒn…n§Lì¾T{å•WdG.Fwp£££åˆïÞ½[)—ì$/ãâât5%HŒ\ºt©ÌÇÇÇËR''§‚Ýòˆº‚̆8|øð¢E‹BBBäb«ü‡~”o§_-šƒƒÃ«¯¾*ÉAW,W]™—aBneБ‹¹ŒŒ2 ÈÍcñåS§NÕmêƒ>ø÷¿ÿ=bĈ¢Þ=;;[÷…yiêEíoʦÂÃÃeGdwsojãÆ²ÎÎÎÊKÉB2 ššš*/5¿71{¶ÌÈö¿øâ‹ºu릧§¸åR¸û3ž}öÙùóçË‘•—ÊïƒÈ¸¯p¥°qãÆ={ö”¦Ê9ðÝwßIpR¶ìíí-o$óÍ›7—d¥lSùòÃþýûe^ù¹Ã#í 2BF«­[·Êè&×X¹äÊåWù}übþ®N÷îÝÇ—¯ð£>êÓ§òg|ºtéR¯^½êÕ«k~±ÂÓS÷·›Š*×ÿ³?Ë–-S~Òý·ÞGùÝ|eä•ûw¹Q•‘Ýy̽QKKË*UªÔ¬Y³N:*T;hÝvdpœ7ož2/C³t]«V­ä¦øm¿Tíþúõë%JLRŽo×®]“’’òܽ{÷JXªX±âþóŸ–-[&''+å™*W®,%ké:!--íË/¿”(R»ví×_Ý××÷‘v™ !cVDD„\Øå’®ü Ÿ7nÜÊ£û{þ†kß¾ýŒ3þøããÇ+é·øò|äQnN y#Ùˆ4U Ù‹ƒNŸ>]ùÚaéé iá¡C‡¤m7oÞ¼õ°•ÂÝ—^V,æàŠ3gÎÈ–ó*ßL(XY𔑑ñº‚̆kõ±cÇ6oÞ,ƒµ\óåfM.Âþùçÿ§;tè`jjjx¹¾;wî¼óÎ;¶¶¶†¼‘4Rê+tqÉ’%² ²#%üo.<ôÞxtÊùî?Ü® 3€.\¸˜˜8þ|)äîLî%Kr·²² 2¼\߉'fÍš%·†Òþ¥K—JãeÊúáöÆ£+Ëóî?Ä® 3€áΜ91wîÜÑ£GÇÄÄÈH!á{÷î•ÎB&Í»{÷nBBÂØ±c¥ÙÒx寗‡Þ(ç»ÿ(º‚̆ËÊÊ’‘"..níڵÇ—Ëï–-[Ž9bø-ÿc#MJII±±±‘FJS¥ÁÒli|9ér¾û¨+È ðO?^††€€€ßÿ}âĉƒ êÛ·ï/¥Œ4I&Í“FJS¥Á%üâ_Ùêr¾û¨+È ðÀ÷˜©©©ÉÉÉááá¾¾¾^^^ž¥†4Fš$ “æI#¥©%üÖ_Ùêr¾û®+È PÂñBîÚ”ÿP©¢ü²Þ#+Kso”óÝD]Afd@fd@fd@fd2 32 32 32™™™™€ÌÈ €ÌÈ €ÌÈ  \e€‡âÿ’“é^ endstream endobj 607 0 obj << /Type /XObject /Subtype /Image /Width 700 /Height 603 /BitsPerComponent 8 /ColorSpace /DeviceGray /Length 1388 /Filter /FlateDecode >> stream xÚíÒßJ“€á 褎ó¨ƒ"˜ºÍ¢0#3ÆtŒ ¿µ¹?N""¢ˆˆ S7ïÁº"“Úº>öƒç¹„—÷Ùó—o2™ù…ʼnl6—ËåóKSï`fü_2ŸŸì™ÍNO]˜Ïd^Ͻxµùðû/óëg2—<ê@Doˆ@L‹4 ¦œµ$A½—€ >H@PËÔ' ª A% ¨ÏÔ ê«U’€ ÊÔ†U‘€ ªTM‚ªK@P›T"A}“€ šTK‚jK@P ª+Aõ$ ¨m ð.¤ª/AíH€w!U»à]HÕ@¼ Þ…'ø.Þï‚wñ.x¼‹wÁ»à]ð.Þï‚wñ.x¼ ÞÅ»à]ð.Þï‚wÁ»x¼ ÞÅ»à]ð.xï‚wÁ»x¼ Þïâ]ð.xï‚wÁ»à]¼ Þïâ]ð.x¼‹wÁ»à]¼ Þï‚wñ.x¼‹wÁ»à]ð.Þï‚wñ.x¼ ÞÅ»à]ð.Þï‚wÁ»x¼ ÞÅ»à]ð.xï‚wÁ»x¼ Þïâ]ð.xï‚wÁ»à]¼ Þïâ]ð.x¼‹wÁ»à]¼ Þï‚wñ.x¼‹wÁ»à]ð.Þï‚wñ.x¼‹w%À»à]ð.Þï‚wñ.x¼ ÞÅ»à]ð.Þï‚wÁ»x¼ ÞÅ»à]ð.xï‚wÁ»x¼ Þïâ]ð.xï‚wÁ»à]¼ Þïâ]ð.x¼‹wÁ»à]¼ Þï‚wñ.x¼‹wÁ»à]ð.Þï‚wñ.x¼ ÞÅ»à]ð.Þï‚wÁ»x¼ ÞÅ»à]ð.xï‚wÁ»x¼ Þïâ]ð.xï‚wÁ»à]¼ Þïâ]ð.x¼‹wÁ»à]¼ Þï‚wñ.x¼‹wÁ»à]ð.Þï‚wñ.x¼ ÞÅ»à]ð.Þï‚wñ®x¼ ÞÅ»à]ð.Þï‚wÁ»x¼ ÞÅ»à]ð.xï‚wÁ»x¼ Þïâ]ð.xï‚wÁ»à]¼ Þïâ]ð.x¼‹wÁ»à]¼ Þï‚wñ.x¼‹wÁ»à]ð.Þï‚wñ.x¼ ÞÅ»à]ð.Þï‚wÁ»x¼ ÞÅ»à]ð.xï‚wÁ»x¼ Þïâ]ð.xï‚wÁ»à]¼ Þïâ]ð.x¼‹wÁ»à]¼ Þï‚wñ.x¼‹wÁ»à]ð.Þï‚wñ.x¼ ÞÅ»à]ð.Þï‚wÁ»x¼ ÞÅ»à]ð.Þ•ï‚wÁ»x¼ ÞÅ»à]ð.xï‚wÁ»x¼ Þïâ]ð.xï‚wÁ»à]¼ Þïâ]ð.x¼‹wÁ»à]¼ Þï‚wñ.x¼‹wÁ»à]ð.Þï‚wñ.x¼ ÞÅ»à]ð.Þï‚wÁ»x¼ ÞÅ»à]ð.xï‚wÁ»x¼ Þïâ]ð.xï‚wÁ»à]¼ Þïâ]ð.x¼‹wÁ»à]¼ Þï‚wñ.x¼‹wÁ»à]ð.Þï‚wñ.x¼ ÞÅ»à]ð.Þï‚wÁ»x¼ ÞÅ»à]ð.xï‚wÁ»x¼ ÞÅ»à]ð.xï‚wÁ»x¼ Þïâ]ð.xï‚wÁ»à]¼ Þïâ]ð.x¼‹wÁ»à]¼ Þï‚wñ.ÌŒx¼ O°+Þ…TíH€w!U} j[‚êI@PÝþ`oÿàðèøäôìüâòêz8¼¹½Æã{˜ ãñhtw{3^_]^œŸžìï >.¯Š«k¥òz¥Z«'F³µÕît'z0¦7vÚ[­f£‘ÔkÕÊz¹´¶Z,¬ü¶á? endstream endobj 612 0 obj << /Length 1187 /Filter /FlateDecode >> stream xÚ­WkkÛVþî_¡})ÌŠÎÑí(ÐBCë’RV ÝØöÁ“Çmy²œ,п÷v¤£DN<Aѹ¼×ç½ÉÓÑÙ$ͽ",2yÓkOé$4‘öò( •.¼éÜûßʯá™Á³…gÏ žFÞSû×°<Yù„„Yσ¿¦¿x‘7V*,Ò”u\ ÁN4,Oñë­ÝΩ{œG‰\ ü÷ ¡_ ™ñg”Fp÷<Çiß𠉞÷íÍ *Ô'´?þ¿')ÆÊÖD*ÉÂÂ$}üû6½ §Ø4Êër ã!4Ô÷3ñEûâÓ(ã_4éÇQ‚V“ŽÃB)ÖôYh*©þ[á›Ã3–sÇZÛOæ¼ÅÛ;ᨅ×ÿŠŸµì÷ò,:ÖeÏÀWi3gãôEë(Kù˜Ð&óËÙ–d’bÛ»ÁŽÙðþ²ÕI)*Ô&§Ö¸ïØw°ÌÉrE™¦q)fBiVßÚ0baE@JwYQÿEË@0‰iK ÿ…Á8s¶UÀA[“J,•ö7™A^¬»¸àÕLHè½Ë8Ls Û%ß“mëÜ(ÜÐ{ÕØ@£Tœ,?ãEFœ!ž£Åq&³ˆxnp±ë ´³ÊÙ¢¾•N³53ß) »>8¢)ó%í‘Wu"DÚlÚZP/l¶hYÃ9!3ýLá}ÍïæFôÀú7¤þû¯¸×æfoˆèƒ\!fßi ·#XÒ„8®*4oC^Ãv‚É\ÕÞIEQWÛíy¸=ÐèG;–C“³ cn| ZµD{JRGï¯P”6@ð嫽/"LSN$¸ ]2tœÈ Ô¨~€ò›-¾\ÞO’á´‰ù^ªÁ¢Õð)Db ˜Lû}(”I”¶úpm“{ÿ< †=‰îhâªæ›ŸRƒ-C[ÖN›°‚9¾ˆè†ÀÉÒK™­›K^¹Ùc•WLDv0  4¶»4Ò9)dqÌ¥V•µÈÞõ¼Å`ÆÚ¿çÂ$–’{­ï,X"Sò8Ø%+ôš\#Û\E¿AbÒAÉ}Ë"þƇÕHרšà4&n‡€íýJÆ ÷¨sžYþh <Ê0<ïxr´JDÞ•´C\ßËy-ƒñ›Èoõ9mnVûÉñt&¡ ¹|¥;˜´©rX;á[ñÖ‚ YužïoÈJ€í~Û]J¬&"gy¨­*èˆ:DÓF§#&EžòT‡i{:Bc ¯ÜŒþ…ITh"èVta¹äàìr£•÷¡ý önlEŽ™øëÅ üxÑÚ„E.³zÀhFŸCÒ'ÚM=Ž:.é‡Ïîw·êXõS6<ÞªºqF`¬Ž§gäïe"b=¬pØ#éœïZØ•Aµ4 |1 Ç^¢ZKµÛo±4,¢˜ýþé«©¤«8XoÛóþÀŠÖ®_*éû%*É@ÓúeàR1÷IÛSn-€ÞÚ güòÀ›ªUZ³„cˆ)Û©z?[ã(Á¬ È÷ )µJ½+Ã'Eg”WÂÈHŽUž„Qn°ê0@¡*%Ïÿ‘uø endstream endobj 609 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./wiring_biotap.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 615 0 R /BBox [0 0 504 504] /Resources << /ProcSet [ /PDF /Text ] /Font << /F7 616 0 R>> /ExtGState << >>/ColorSpace << /sRGB 617 0 R >>>> /Length 1799 /Filter /FlateDecode >> stream xœXËŽ]5Ü߯8KØ8¶ÛÏm"ˆˆR˜‘X „4!,"&â÷©ªö¹×“ ”ÅL¦ìv»Ý]ý8IÇ«#ïŽ?.¯ýçH%”¸~—^C¾þóçÛã‡ãýåÙ‡ï_>?^Ü]bhÍŽý÷Ý‹ï°ÚëñÏåÇŸŽxürIÇ+ü¼»¤b<¾½¤da–£T ÃŽGàún!µã·KÊJ!MáFž<l9Äy”–B1a4àZ† ä›Á âb¡R¾,ùÒCÌÂs×r®Á²°…<„‹ïCt\…aoÎÒCRu}IØ‚µí>*²gø~—G£ìmƒ´?K¾Ãž¬÷YÖCKòüÑs(EþÈÒ×MöÃ,×,µ0\¾ÐÐRkhcáB\Ö{Nl¼v“OaÎ]_d˜n÷•ZÜì)ƒjnöÂÍ6¶÷”lo©|O¡Jß“|øßéoDG=$Ž»•o>üGB~xó ¦‡xð%žrÜ2m™‰á 7±…™u¡§/ŒºpÆwᮦN.‘RÃå§\ZOeqWXOÎàö”¼ô?\²{/Ó), ü¦d>‘AÊ8Š ó‘:#P-2,nE¸PcFR$$!ÅŒ/Ì )H™TŽ¥(#éRžÌþ|‘Ã_i;ßË*êOóáS|wahx#"X ŠÂGÇt*†®òœJæœðœÂãLœGty–FÏ)jŒÒ¨Â,Ü…Ë)ß«8SËz}VW!ÕÆvŸP±ãfÊúbêÁÌ"²Þ\c×y†fa*PðR˜[Sqå+ã$…ÉÄ‘!@$¸!`EcrƒñØÆc‘9å!¶gfÛ,¦îýÅSyUúQÛ`n†Àˆ,¾`64±IE Ð}¸?vFöñ˜sÐÓØ,s¯i€z”W–×½2Àkòúj/òj¿eæ5 y‹Šû¨Ì%?Ì3·Q¨Š’3“Î4a"LVf‹¨½)+nèÛd°ñmÄQ'0 ÒÃý¬¥ ¹ÇÚ8½á2&p!câqOšÜ#ñÝE•ç•ûÄ–¤¿ÙÂŒ)Rjœû( s†´‡ &’‰ -1g yŸ­ÚÔU£ •:T ˜§#Í >ÈXÂ*˜» ÷é°º*ú\Y‹‹XôUtPÈg@yúá‚þI×¢v5Ú…bÌÈ¡´©Ñ³šÈ ÅÇ(Æ8Í!œ/²Ü8×ÉJhžk·L¿·9$CbôÚ»²üŚ€’SµE½¢j¾aÂh~ò)B•híª°š¿™»Ñ¡Ì¬ä98«ÃQ¥Ê’?‘É…‹LÂÝ™½g>(›!г7yBP±Ÿƒ< r4QILh)ð&Þ+ï²òî„pØuÇYi7®ã¬ä¬žþ¦”TøÈG·k4þŹ7Á, 8Ta†& θ´mÄ-VêÎÌuªÒ4¢ï!ÿø¶%9:uª{Ou%ÞW¡5\òá?ŸÐÃößœáXVâ±ÿæ§Ö¡ÊÅìâç­¿­tÿ€ã f ÕÔ53.ô†Òm_)xhŒ×³ ¹nI¯•ª`œg½õœºIzݽö—]ëì»ß\žC¾wÒãúex]ðkв97»SƒÍ¼‹tAÖÊ9"ûɧ³¤×Šxžu“–j^ûÂ2É>1ØßÀ~4ãm’½­pÖËê`¬ #º"+j§/˦¡üÜ_]}}Òã%½VŠj÷yÖŒŸZ§nG’^w¯ýe×:ûÄn‹y°seõy¼-˜†—¢¼ÖˆºÞu> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 626 0 obj << /Length 1670 /Filter /FlateDecode >> stream xÚÍXKoÛF¾ûW9QEDswù ÚIcIÚ M]ôæ°¦¨G-ŠŽ(ÅQÑßy-¹”˜Â‡ ƒÚ×ÌììÌ73»~qsqy'¥Â"Iôäf1Q:óHO²( •.&7óɇ žª Œ§3«ÁÕÝOgFͺû5ül—0‘%Á¶Â™)¬=Lf‚;^j¡»®qö°±Dãy[$ˆƒ}Ãí;d·ÓYª‚¿`¹º›~¼y}yOаHuŠZF“™ŽB fý®§yŒ{ÍL”‹0ídƒUEX(»…¾ÝÀϾÕnŸâ9L€+Õ~ªsP~šÝË"á«§:µ‘/S ò´,¹Ä…-÷o§3óWb+ànœJ՜װß0Ï;ÜNœ$îÄ*Í,Sü!»nçÄòZ4 Z‚½Ç–°÷¸áF¨K_ÛY Î#›À, Lp¿sÂ>#Š®Z¦û,|íÁÙlý÷Éé.a›Î™GìKÆE2UWÎ bÎvÃ¥ú ;KÔÄÞ¯xÔ Ã7/gcçÄeòs%^ˆMðºæ#BÄdQa±j²Å”dIø4YN…ÄÜš¯ú%N´3š¥²mÅL$?²%;˜°›dxu\„YÑè(+9íž ¢‚gð]ʇcŒÚB Oç0 6$͜䩆/ÉS¨Ë9ˆ,ÜcEíY˜%YNvŠÊ&29S&,✗nVlÜØD¤ç—{ŠÁ<8µà°Ü–.ð†€áa'{@˜Ü‹V"ÔA‚\Uõ$„›-qÍ0eùh4Âä‚L–›sÏÕŸ‘Š7² “è»PÀRá0£:{Ÿ`’Œ°f> stream xÚì½ûÓuWUç;ÿ«‹ªÃ”U<%tÁ›@ñK)@=M# z4‰ðrŽÝ-BÛJs Q[‹}ääjƒÝ-*"A@‚\3 —„p QºÏznûÙÏ^sŽ9æu͵Öç[³ÞÚï~ö^·=טŸ9Ö˜c\wƒ½î¤B!„:«{Þóž÷¸Ç=®ÛÁæß¹ú³×}ä³ÃŸúЇ¾ýíoÿ⿸A!„Bèûßÿþg¾òõÿåaøñ/rÚÃ~éÊŸ_øÂÞzë­/û³Ðh4F£Ñh´q»ñ[ß}ãÇ?7Pô{>zË“õ+}èC~~ùŸ}”F£Ñh4F£ùÚuw|çžÿçÅ×ßø¹óÏ?ÿíoûËßöQF£Ñh4&··|åî{ÜãBñ‹_¼âÏo¤Ñh4F£Ñhr{ÓW¾sÏ{Þs@èï~÷»¯ø‹›h4F£Ñh4šÜ^wûÝGi:6›Í•ù1F£Ñh4&·Wé¡_õöÑh4F£Ñh4¹½ò¶S„¾ê§Ñh4F£Ñhr{é­ßÙ"ô«ßù g‹Í;íÛF£Ñh4­Ÿöâ7]ÿ.ùcõw˶a›Ã–›íâ_wõcÿÕO<ì~°l¶9lÙwéþëîÎAèk¯½ö–[n¡i4F£Ñf×~ñ7^ôö÷|ä–/ßY¶ Û¶ÜlÿöÞ|ǯ¸û¦–mÃ6‡-kú®þ¤³±ùÚ«®ºüòËŸõ¬«†—Ën¸a÷¾íÐh4F£Ñúi—<é¹޾çc·—mÃ6‡-7ÛÅÃ~àïúè¾òÆW–mÃ6‡-û.Ýï}þ¡_{ͧœmËÆ·ÜrËU‡ðü¢'êÑ^ o}Ã[O)Ú·F£Ñh4Z?íÒ'?ï³·ßyÝM·—mÃ6‡-7Ûźw~ø}·¿îå_~ýa{Ýq;zçö£'¯¿|¦]qü­×]qúÅ“Ã6‡-û.Ýs>wŠÐ|í§mËÏ×^{í%—\r¯{Ýkxq¯C]~齎ÞÐz‹ÐŽüîÆ<౯ý´o‡íýas¬~úÿʇš ~ãÌ'‡wv·¶÷ß„6ÞÅTíè\œ§|ªÿõß¿3rƒùG•p}¶»Î<†"§h¿ÿï`ùJW_ÝvËí8í¨ý]w'ÿGFýF4F£MÓÌ·_*Û†m[ÖìâÙ/zõOýÌ/ùÚðWÍ.ÐýÖß^ÿ¥?zÉi{Ía;|ýÒ§=c»Ááµóq»í^2lsزïÒýögOúõï¾ÙÙŽøù†nøùÑ~ôCîu¯‡òóCÝë!/zÑ“Ž¼ÓÛ èÑÞõ¸Gž»·9÷¸?¾Ù·‹×ÿñ3îmÌÞ{úßÇ=÷ô¯OyäΟÚ•;³µ½ÿ¦´Ñ.¦jÇç"žòðÚ˜G^µAñJ×g»£Ì¨ÀïØÔÐý~ø/:êÀƼp÷3/üçŽ.õöÅëŸûŒã¿>÷Bc.|Š»“›*uÌ4F£ÕjÿÏ··ßyíM·—mÃ6‡-kv1@ì÷ýþªÙźß|ßu·¾êE·^yоxò⨠Ùºy‡×ÿïSžº÷·¯ì|þ`;‡[¶9lÙwéžiOú ×YgÛîåÒ‡<äÈù6¼€ùYÏzֵׄC¿õ­oþ:ü{DÑû[xÞE÷þ•g>Üœ»äuÖ³‹k.¹¯yøó|µoxÝ3ïýWî¼såÙ­])n\×öw1U;9ù”‡¿š‹þsԯ˻\)×g»£Ì¨Äï+nêÅ¿rîÞ¿rë3;=ÓqÍw>9îäÏ»ÈtÑ£h4Fó¶'üÚ ½æ¦Û˶›o¿kزfA„ö}qØævè~ãúw}áeÏÿüËÛË^pòâàß—üúS†íüÓ‰ö^ýÂá‡þ=l/8z=lsزïÒ=õæS„~ã{¬³mz`枟ô¤'.-<Œß¸öP™¥ÿ{öë„\ôÔ÷ÂÆÜÛãàä©ã÷Ÿ‘¹ï3_|¼‘ݯïmmûßà9Òß¿Ýò‘޶ðɇ?êÜá÷>ìÚÅó¿>|àÅOåþ¹ŸžˆïRû^Ÿlüô€Güô¯4F£uÚùö®knúrÙv„ÐÛ]Ü|à…þ²³mz/„cÇ íþâî.Žú–—<ç–?xÎðïç^rðïöÅçþà9ðŸ~}ØÔ÷Îjxgxÿøcpú­[N¾u„оK÷kŸ¹k‹Ðo¾þggä8í8Áæ=–ÞßÎ .2ºêÍ×_õ£æÜ¥opoÿÍo¸ìÞ÷½ìÿ¿?|wûþ .º÷ß}ò§½­ü÷x_·8>vüõás¼ýwaŽ÷þ‚‹Ìî·ÌEOÛ?†íëÑ÷ö¢:½wœ§üîKïk~ôŠ=`ûùñ‘Ÿ¼?ü §gqrî§oîÏÁwþ+ŸËöÅè[;Gû´G‰°eßÅ99æ£M9£ñå=óÝ£Ï;¯ÏöO¾ŸÀ×É÷6K£Ñh4ZwíçÿÓï½ïïn}Ùÿ ³ýÚo¾DTþêûâ°ÍaËš] ÛùÊ¡†ò›Â.ÐýÔ¿ÿ—»¯Ð~ë'þÍv³G[Þ‘¿2lsزïÒ=ñÓ§ý'ïýœ³áçØçÃ%„gÐz7;ôîwßsãðâ€._¸Ú/»ùÙ§{ö~Ò®úÑ궯Ïlíä¿Û1÷ùÕëv6»£G]uæ‹{–vá|ízs¼G×!iP:åëŽ/lp‡_¼Ï}÷ßÙ¹§WþéÄþÞþ¾NÞ<{<ãŸL:—Ýë³÷C:zçdãîÏxNvü™Àçýp{ ÊŸþø²œÀužN¾}ŸF£Ñh´NÛ@¡ïÿø­Wü9ÛnÌðXÃ_}_¶9lùÌ.þ燜mØÈµÇçÛ7}_|ÿÇoÛîâ¡ßù¯Ï{Ç#Î{ç#Žÿ=lç¿ó_Ÿ?¼øíÇ0|ñ°|þà+çµ#„ö]º_þÔ)B¿åo>ïl±Õ w¿ûc» cÎ{›œ»¸î ÷3?öûŸ÷ÀQ{Æ£·Ÿ>¿³©7=k€®gœ|ì%O:oØÓÁ'ϾØþðÇÎÃé‡÷w±ûIçk×›Ž=:ö¢?BÏñì|1¼Çá‹æ>÷;Ï<ú»8ûõ“ÝíîëÌOsz<ãýJç"]ŸáPïó¤ëŽþ lÇs²ÞßHÑNÞÜýØÞé;®ÕÁå=s=|o³4F£u×~á×í•o»ÁÙȼٯ᯾/Û¶¼»‹+ßvƒ³wáûâ>ñ¥í.Ðýô•/¾ö§þ÷QûWÿ¿óÓ?µ»—½×Ã_]_Bk÷v^óãæ¼_øoã×;í¿]þC[OÞý.Ùð΋.>~qÜ®ÿ…ûm¿8¼>ûá£Ïëâg·ù˜×œÙõøÃgvá;`×sñé›{{ÜÛKÔîÏ©ŸóÌÕ“÷xºÁÃ+vx­žõ˜íîv¿~æü1ç½ûã/Úý™v‚ÓC:þŒ÷\ö. ÙÛòÁñÌûŸy÷òzwáûüÙs?i/{òy?ôäëÏtªÓ~uòæÞGg±ÿÛ ?ÄÙ½Ðh4Ö[û¥ßx៻ãOÞ{‹³=ãy¯b¡‡¿ú¾8lsØr³]  û¹7ÿáûÿÝïÿwž´ Nþ{Áó.¹d»Ááõðæè v¾rÁûùx;Ã6‡-û.ÝÅ;ý?þö6g;õB„|ÄÏ{½eéC/´o;Ú‹î‡þã{+n¿Í.z?žC|k»ã¹ü'Í¿xÒ‹üÖËè~—¿¼ä6ß{0×xëmu$F£ÑFíÿúÏ/úø¿]|³Ã6‡-7Ûź·þÙ›?üë¿P¨ýâÑ‹a›Ã–}ð3»s‹Ðÿóƒ_r¶£4GæTÞFq½¹÷Ú¿ÚLÚkÿsþ/¾µÕîÞú›?ô/óŠ©ÏúŠ_;ßüäkKmm˜ÜF£Ñh•ÚÿýÔòKwýÅG¾R¶ Û¶Ülè~ù]o»ñY¿zãe¿zÓ³~õ¦Ë^·g=ñàýƒ?=ñ¦ã×Oì~°l¶9lÙwéñÑÓX迸áË4F£Ñh4Mn?þ‘S/ô_~ä+4F£Ñh4Mn¿á¡ßþѯÒh4F£Ñh4¹=ô¡1N„þçÞÐh4F£ÑhkncHþ‘ßyT!‰ÐÿôÏÿüý¢Ñh4F£ÑVÚŽEèïýÿô÷ÿð}F£Ñh4mmàáX„þ‡ï}ÿÎï|F£Ñh4F[gx8¡¿ûßÿæÿH£Ñh4F£­³ <‹Ðw}ç{_þúßÚŸ>Ö<ø·>ð÷®?MÝ>ð¼ó͉ø¼÷%nÇ‚oxÂvóçÿ—›7w$[¥níàš4û½vØ<ö yW»Òá=îO[ï=¢ÛÌè‡ksÅžðºê×gÜ+Úûþ˃M«ëÿ[ ™¬£ ’nÓh4–ÞŽEè;ïþÞm_ýΨ½õç̃/ÿw\*ÒR·ÿþç·óÅ×<î ¯){¯F±íû7^~¾9ï·o,ž¼÷·lÎÞ{¿Zï²—þí.—æ'¨Ýö÷uÞùæç^Ÿ°÷Ô㜠Û4¼éjlöàF>é9ïÞå¯oÓ+öŽsxÓ˜¶=Ó¿¯ƒƒù¹×w~ïÓh4ÚbÛÀñý•¯ÿýÇ>óQ{ãO›>åêo¸þT¤¥mÿƒOy€ùéWÖ;€Ñö¯þû›K^Zø,„Ô¾ìÅ/ò€[ž×á¾^ù;÷ÀïüyôÞ uËݦÙMWg³¯¼Äœþ@Îý§/|àýŸþÁ3Çpá%­{æÕ½õ F£´‡“úŽQ{Ó¡=?óæK/ö™bÃÉ_ÄgÿùðâêgßÿäS'ÝÝÔÑëáßÝMÝ¡mÈÄ}´Ãøhÿzö8OvúÊã»ÿÓ?ä}Ó±ýá4þðóO¿ÄŒ7rµãRDœ”ãúìŸÑÎUþë¼ò;QýG§¶÷±øÞþîûyæû?ýÙÎóÚû¥†ÿ:xØHT'9ùî°µ³?Óø ®ÀñgNä÷/Ö-Ïv›3Ýl¯ó+~¸ý^Wâ‡;ÙÎÎéŸô¢ý;Å{`‡¿ãŽ¢¦]È÷©÷Œ=÷áßí/uô ×?h✶HsýÇçrÚ+vlQÚ¯L£Ñh´”–€Ð_ýÆw?n¿9joúóÀ§^óMéOW^j.zÓÑ›/¿ÈüÌ•G:zñÍ_óìoawSÛ×ÂöýmØæ¹gÿåáë¿|æqdáÉÖÌžùaÏ)üÕ}ñÌQ¼9œˆ¹ôåg·Ò>üÔs§§v|¾ÛÏK—BßN/ÅÁIÀîí\«+/=xÓ}åOÏKõìl$²^Š#nat;Grøc)~©í! [8÷À£ ß}^y=…»9ü”Gÿè–înãè{Î;ÂùÃz]‘îô|÷Nß}§8ÌÑ?ãÚÁU2Û®•óŒî§·çñ¯&^éFÛv¡´žé7&ÖwÍi4V± <Ðw|÷ŸýÖ¨½ùg̃žzíÙ7_uéÉø{ô§á3—^qôásÏyûðâÚç<àøƒvÅ0è¼joSÛ×®íÛÙí{·æ8ÎÓ¿JGµ¿ý¡ £üx#ãýŽ.ED{ó.Ø\1¾þGµ£‹ÞìÚûB'{@Aq?o_ãƒÞ9½º_êä+W\ô §¾êèõöúÇÞÑö/×é)Ÿ½’ÇÇpx•JuK_·‰è{u¸ÑMí<ýãcˆ¸©“Úá錶9ÞQæw®Þq;»}ïiŽMܨ E_ÿIt F£Ñ*¶‡cúkw|÷S·|kÔÞ|yÐÓÞ½óλ¬ú+^øiçŽÿôŽËô€Ë>|ôïÙÏ´W\d.¸joSÛ×£í«ÚÞ·\[sçî·†7…£Úþu|ֳؿé'5zóìU=j£Ý|>â'8ÞÎÐ1ΜrÌû~úãwÎ=çq¿ÔÑ‹7_pðÅáõ¥¯8³‘„ëyôƒº/Îq»êÒ+Ö-•ÝFì{m8ÅéŸmä%´ƒs¹èÍ¡k•¹ÇÝ{üAO»jÛ¯äë0q©wzÈ$z†F£ÑhõÚ×âúëßü‡OîÛ£ö'ƒ=úu;ï Cí¹ç¼sxqÝ`ÞOþ4¼>wéç¶Ÿ¾5Xû“?™K_yðæ O?wòæÁx}ôáÑöuíäp´ÙÝìlÍqœGõ€Ën8{T»pöëg¶òE÷çwÞÜ¿úæ¼{»ÛÆI;ÞóR(‚ÓKº¿ñˆ>³ß³Û9=’Ã_MóK̹ãã^_ð³—FÛèz^wä6r¸DGÿ¦wK±Û(ûžó‡óôÒ?œïôGw`º+öœ“¯tÎÃÊ×*s{÷øø¾vž¦óF3ñ}Òo7¼oº†F£ÑhÕÚÀñýoýãÍ_¸kÔÞráÎãÊs—ôæ/|ôçþç¼Ç_xÞƒžñWÇŸ¼òbc.~Ëéÿê¹çNÍo?só«üÞÅ¿ðäýƒ/š³ßU¶íÖŽìèh·»çÁ_/¼øAÇkž^}×è+»¯Ïlÿäþϟùâþ¥Ð¶³{w¾yzU·»8<ÍÓÝí|^ùœžæã¯Ì8àw]þ sÞsßå<È“]œ»ü¹®+æêQq½Î¸žGè¸8ÃA>w8€£.´=‹"Ýr¯ÛŒúÞî^äÎÕë²~¸Ý›ú-£ÓwmèÀÒ.ÚÎÁQ¾Oý7lt¯:ÞöÒ…nœýÍy3ªÚIo?¾Î²1ñ F£Ñjµ‡cúŽoÿãg¿xWr{ÕÅæ¢?º+g õÛ[.2zæ{ªïh—‚¶Ì¾·ˆ£×µ¢Ñh4Ú¢ÚÀà }Ë­w'¶ëŸ{î¼ç¾;ùëÚÁÐ|Ùõ•÷2KA[bß[ÈÑÎëZÑh4mQ-¡¿yç÷>wÛwâÛ—<—|ðeïýNÒ×[¶·þlÝãœÑ¥ -¬ï-éhçu­h4¶¨6ðp,BëÎï}þKO£Ñh4F£­³}+¡ÿüêÒh4F£ÑhknÑ^h„B!„Ö­X„¶!„B­[ 4B!„B 4B!„BS!ô;>úÕÝB#„B!ôö³ü!„B¡„¾ñ«» „F!„Bè¡Ïr2B!„B!„B!„P‡ýοºÛ@h„B!„*Þãä³ýµÝB#„B!t‚Чœ B#„B!Bè¯yú¦¯í6!„B¡„>ËÉ»}õM_Û6!„B¡#„Þåä«ý}5B!„B!„PQ„~×M_Ûm 4B!„Bïqò„þØ×vB!„ÐBŸåd!„B¡d„¾æc_Ûm 4B!„BïqòY„þún¡B!„:Dè3œ¼‹Ð×þÝׇvÍI¡B!„¨ø’¯=ic„Þ6!„B¡#„¾ÖƒÐïþ»¯ï6!„B¡Š÷8ù Büë» „F!„Bè¡ÏròB_·Ó@h„B!„*¾î,'ï"ôu 4B!„B1ýWŸøÆn¡B!„¨x“Ah„B!„’ú=ŸøÆn¡B!„¨x“Ï ô'¿±Û@h4kul®B!„ ôYNÞEèë?ùÝB£YÃóæ°Ò!„ÊGè=NÞEè÷~ê» „FóEèÍN¡B!”‰Ð{œ|¡ïØm 4ꄇ£xŸñE#„0›¡}†“wú¯?uÇn¡Q£@,ƒÐ!Ì&v¡â½ÇÉ»ý7Ÿ¾c·Ðhò± -cüE":BsàIÌ&B(ˆÐ{œ B£YðsÔp0öÃ0š „ú‡ç4ïñöó9f!”ƒÐïûÌ7wÚŒÅz<$9¿§x ŠšÄi°kyd;ét€ÐÕ@è=NÞEè÷æ›» „FµáYv¹d>‘vÜ;ñ„¡©øy×ò-Õø+N³‰C(¡÷8y¡?pó7wš >„ÎáØí“M͸S–ÞB¨B †(ø-£ãp„¡÷8y¡ÿÖ~s·Ð¨ñxáûpšÍß"tìÞyŠšÜ«¤hÁR™³þgLBEz“Ï"ô·vz@è]Žåg!4«è[­wD'˜;„P BŸáä]„þàg¿µÛ@hTj\и\”H…ÐʵŠr „ziMZNg„*!ô'ï"ô‡>û­ÝB£²Ný_ 4Ë B=ø„Éû8¨#¸eÕCè=NÞEèßò­ÝB£ÌñB¹`PÄ¥Z³w<#„êû‚–ÓD–Â!€P%„Þãä]„¾á–oï6•âçà‚Á²-8d”d”Aµô'ä¯ÒâaÖÊDè=NÞEè|îÛ» „Fý tÖ*]Ð 4B¨+ch=Ù8•ÞßÃ>~„Š ô'ƒÐ¨È‘€WÖDhø!Ô3BëRÐAC¨BôóßÞm 4RÂsZÀ>šá!T•¢•Æ0Ö ¡Ú½ÇÉ»}ã翽Û@h”?48ó,¥±k)„†ŸB¸2š(„Z"ô'ï"ôM_¸s·Ð(ŠŸÓPGh\СnA:Áˆá‚F¨„Þãä]„þØîÜm 4j‰Ð¶Pˆ2.h„P‡`µÍ|„Æ !T¡÷8ù BñÎÝB£XŠ® ÉUšá!EËiù–õë>ôëqA#Ô¡Ïrò.BÿÝ­wî6)Ç”´¦õ~FÕ6tÉUÿ”®†„Ʀ!T¡ðøã·Þuôb¡‡7w¢Æ—¨Ñ¡EƒÐ¡â&n\10*Œ­8BÃϵGè=NÞEèOÜz×A»í®£ 4Jn’?PdÉaÔcM†„žŸ·´œŒÐJCB#ÔBsòI;ƒÐ·ÝµÛ@hÔEGhÆ„PB;]ÓEÑ9MC¨"BŸåä]„þämwí6MBÑ™ ?#„ªRôn î1Q—Z¢ñ3ã‚F¨%Bïqò.BêKw í“' „FU):•Ah„Ð$¦L.Ú°´°BcÓªŠÐ[N>zq¡ïÞm 4šŠ¢ÓÚÅ?#„J´@×¥2|îš2Á|ÁÏ5Gè3œ¼‹ÐŸ¾ýîOé´Ð¨7Š.…ÐŒ5¡‚\¶´P¶~AƒB#Ô¡ðx•÷z§Ð¨E—Eh\С–¦,'GtBÃÏM€Ðg9y¡?sûÝ» „FRt=„f¬AGè„J…V§¡AhlBmz“Ah´Š\ð3B¨B ³ø4«¸[Ñùy¡®úæ/ß½Û@hÔŒ¢óZã‚f A´`ùÕTC' 4üŒÐ$½ÇÉ 4šEë4B(Ö:EQqNÚ !¡z]¡hB2<ƒ™¬Jf;~F¨c„þÎa»ûèS´æM%BÃÏ¡(‹¤I©‘fX(ZƒÐ˜5„š#ôwvË Qç­³d4 BHÏÏE'ÏÍc£¦ËB#4-B Ë ?~ë]» „F F®XfÖ 4.h„PWKÑÆUI~FhZ„Þãä]„þëOß±móé;@hÔlüÒS±Í@ƒŠ¥è²šÏG!4f ¡Iz“wúýê;n–!B#ä¤hÊ „‚¦Ãøù9HÑÚú·ÐСhgØò´)á-rÕ´™Î¼Ðð3B 4B™#‹/E*üŒÒ°tTŽŽöm]Ií@h„@h„JQôÞBu†„ž·¯M6B׳99­åmÒ¡M” BHi7Æë 5 ùr.×ÑÏõ=¡ºžÛ~F„FŒ’ˆyBiý|\ö´„.»ññeÁ B£•—\ýµÂï„èç2EkÑÊlx½·q*à!Ð(Š+ hD?¢è¹#t›cF„¡ Z ´ª~.Sô" €@hK\:D?÷qæä])Šû‰~ Þo÷:°€ÑÏ5æ"XQeî@„Fkõ£ÐÈ„ÑÏØU{˜BÅV> õy}ß"t„Fôù4àœ ¡w=ᥪ‚ÐÐhµƒ †å‚b, ÓLC¡5Ý¡w ¼[ „F„Fðó DèÅS%>yE'`§o!a%„®Q=„F„F ´¡õи÷,>yBçStÙø %?çß­¬%D„FËË\Á z6^ƒ{„FXžd{5k„&!-ž}@›ðWÙ«¬‡ö•°%„ΤèªmërÅ–pš!÷º'´WˆÐ,'DPtòwù¹B_N8k„ÆR!¡½á`áäX9„Ï9.ÄÆKõVît51$!:ù¾®}í9½ó÷5Ó@h¦ü„Fȇ©FÐr"hÙ­äaßQ)öÞ±un󉆨s¨£.¡Ï‚ùB 4ZóàÈ\?X ¡†Z³Ñx¾Õm4cZج¼1B×¾Á¬»Â(§YÆ#@h?;Ç ±‘ f±Ór¤B+Sá ßê“¢}Ðbà9¨’Ss4¸Á}¸›¹rÍRhB#Z¶„ÆÃÏ׊xÍrÂX„Ö§þ‹€+üŒiL@èå!´­™%!-xà3b GÐeÔ mª3Yé¾îêù#Ö3o@Ñ 9ò)z¾EUv““€Ð„FŒ}FçàS™û.8Xì-LiÖsWÏAhBg"tÕ±`jl^ò9"´s,€Ÿ èàJ=ç wË.gîèØÄäo·Ù•ó„F‹¤èdîí>J(Ûºx„n3yA„FKûœËK!´¼äÐŒ”6HÐõ TER.7Cè„Ý-¡}„@h´Z~†Iø^äçä:‰òvB#”ߟ›¥æ¡§Bh졉вjŒÐš.i©AèàѶ1û±;bå¢B=Ýí¥öeivnDÃØi=¾,Í~B3¡¥š ܌㦴+AhRÞ!-läRæm–…4¸s²_:ø]S¡ƒµk›}åàËx„fŽúàR‡š B#B£žÍÝF]RD.Þç –Ã04ŸwŽDÎp H+zÚjà 4Zó¤¾sŠÎô-§Ù¥y!´l±W„Fs¡Œ¿N_{„¶b ‡ÌÏ65ÿž¡5¥ ' Æ#´Nn¶$°B[]àôJ¡-Ë7f;*‹ñÅfÞð%§JÀÚ½/ú–Z1\Ùf$‰BèÆË “Vº:ZŒÉªJÑ ô$í;eÌ¡QÏÆM^¬ëˆv2ùøcÁŒv‚!MsAGåß .QT†‚ŸìÔþ Bs™øWBh›Q:¼ì½¹B„Æ€@h4S~'ÙˆJ çû–Ó~:Sy˜‘Ÿyü¦ñoÙ¹Á¨@åö}s„®gZ¼ùꇢÓ>›iÓ®À `½¡QWëÐ8~O¯/Qž3ÈÄíóë—Ý‘+Óbw‚Ð8sЂ-˜ð4ªg„ÖÜÑ [K5e`M4¡Ñì(ÚxÇé;&#´“50‡¹¼ÔQ9¡°þbß-¹46,δNž„¢ÓÚ†ªõÐØ.BÏÂ}±æëà\—à3ñrÃ3‚É.d„.‚µ9ݤÓš‘­Ç”%LœKqrø4íûsBϹ&{ *¤D†CѾ%J„Þø9ŠPbЛí3ìÍ’B'|„Fk³c-|íÚˆ&&GÐ Z_!ºÙí NDM+¢åÝÎBaÁØ@ÈóSyûÂgÚt§d‡aá«Þw™”®§å×Ui6-B„.e] Ÿ1OŽÈV¨âKþì[cèthgX!I¥›õ¥ÌrfŒ> _¢Û ô|ïÜ4„fA¡AèY_«d„~×—ÛÙ—æÎøÝ¶Pô£oE’óulõà ÚwµÂÂ÷€ÐV—‚rµͨ@ènm,wb0ÏP¡Ù 2Ãgi…Àç¾J ”„nùxQŸT¤ìøŽÐb,|¥ è"‹5©ùjøº{@èX47¡''Fžk+/…õŽèàrBŸ7þ¨âü…ÐÎì"SMs@h„”fÍ”ôšB÷0Þe"´«èÒá=•™]ùY›øúÝš‘hœÅNNj'žoƒ>š­ŠÐÎ]·aTø¡‚Þ¤&í©t‹S[ç$ý˜Üy+Xi}¸&ÑB 4j㙉z:¦‰[ö}^X?èsðÚ ºÄÖ@èRæ= ¡Y ZÅÌäÏź` ´ÞÈ›úÙ„òWM=!B·Ÿ¯äL•Iô4háÖãˆÖ ´°)[Á …ÐÁ½—õ“¤-hbdA¨,KWª'n]êÚ tm®l*& „F#„žŸ“sû WvkÙ3œ‘ÏÖã‚®‹ÐJ€/è'QVW‡Ÿ*ű †¢*ÆëòĦ…¯íÑ-å‚?@h(zZ„6ê<ÂåˆN@h±—ýíZÉÏ™F^SZ~F¨%Í–MtG±e0å~%K•‰Ðúч@BƒÐR´]m(Ç3ïœÒ…ÐVŒ©ñÃi⟭:Š„Fh‘,]#òÁ„b-’·àK­?9B§Y-9ÑB 4]o,p–ÿÓ\Ù_müž%Bû¢¦}Žß¿ZA„¶¥9àg„&·ŸÅom%Çæ„— äÈL4S ¥£€gBƒÐS AC5’)ÚztŒý KO‚ÐÁÃ&ĮЌ)5pD”­~UÅU¿…"Ë 3M™¯übÚ@Œ}C 4=º–G MH,B Ø\•ŸmÈÏŒ$4{/’='Q•ÑèÏUµ“5"Œb¡Šlºß½÷ר¤v™^w B§åÔ»ƒ¡¡è©@Ú7jlüÁN ¯Gè½È½ü‹Ðšç¡‚S(?mæH4ÕŒ ¡…QtÁ¼ÐBÞþ CÕ‹]0^vÊDè„­9_@èIÆqn7¹pÛŒÈP¶–ÊXh+:«Ñö!t0ŠC˜eÿÍìÃ}ò3cZ³©,2`)ÁUð]û¡£iUBèÃ% 49:=‰•ãv¬±ìîðåPrx¾eåš!´ÓþËQ2B'DsDhÆ2„¦àMä‹a&Ðo³@ŽœÄÚ>+M¦hBO5Žs¯׳ŒAZX](§ìP†=7ægÙÚkâIL(l#¡çËÏŒehñ–³8“§eÒ»> "tærÂR.hÐŽã+¼×Æf-˜UI“ÓÉ·hNSmÐÝò׊Œkzv˜Ÿ KƒÐ]…@3–!:ÁØ•Óö=“%{E|#BpÈ(‚Ð T>Äæ :ßáˆÖ»4ÆÖ(j - ´¤ÿ.B++ªÈë œ9¥ªzMEÑŒe„޽e” |“",'L`õ²îš|~¶Š„HtNBçÀaÔ8¾*„ŠXù¬±¤ÇÿµžewN'³óOSñ³¡•YA‚ŒàDèÞº.c¡“ rÚz½`¼±ì”F„ü3õƲ­™q B+mQì8¾Î2ßÁbß²3Á3ìf‹ QS ˆ5:-ÿ’ï‘kÿý–± еmr”eÐd òž™•¡„b¯e!º¬!¢æQÁ«$ƒ´ñ¤ænØž\ЄÎçgê #4ƒBË£è„ eù=B'‚Ë`š‰@èsyÚg®“AÚ—HYùß~B ƒ­YH˜ÆÏrG¯ @è(sL©‘ó¸ÊºV ùöRpE°/¨/ÿRS˜еá0êÎZà hÄdk +W b³õrt‚Ðú\J«^ ¡ág„–Ôác³$¥!´f9a „.b¸4‹M¡KÍåAhÙÑ¡‰ÁSF’ Ø)0³õTôî¡óùYžëûä,B8¢Fy„@h•Ë|ëçïÆS|v·¬aÁ¤: 4¡çÈŠ 7×âÚ·`Dï刊Ž|…¼ƒyêdÜÕÏõ€ÐÊŒÙp´N„Ö—ÊÕ£¬ü€L³÷`Y¨à…"‹ÄõñrLÞ]и­¡bÙõ8´&S„¢_S°»7~–:Ê­Ÿeèûä|]ÐdŠF ´Ì¥¾ÌE”M@hMĈ2‘|„e“,Å"4“wBƒÐUZiÖõýÉW‘ÐæÑO‡Q"t?Gv9màLùŠF«EheB~_8™ÆjDèàÙiüä“#4fÐ¥ h…­©5#T¦Vbs‚ç¹OÏ€Úg´cùYoØé‚f,C+Dhá.éîB &ÌúfC.èà­]6ÏTÔ–Ðõnº"´ÀÉš, ºÖÄ9÷ì¶“ù9y¡ý¼\жÄòI„V…ÐJpY„ö¹DÆ™:lhM¢rAúT]vi$¡×lâVËaD<–c<Š(ÊêΡõÅr’Ú9+¼Ì$ˆHDP´&'³b5¬Ghë_qïŒÇ–od}tJ=‡˜2 ~F tέ·f„6“"´àñž B'eQI–ônÿe tÔ=ˆÐRÚ—sU¢Ð,W±¡¬›* ³žx½ôwú“ªä ÓçÁþ „.~œÕ©”ÙíÒÓÍ1#–Ÿâ“GL5-B0r!:!ˆBc-õ˜½gš|‚•“£ƒn™fM4¡§²r«_l<†âyçf±œ0ì-pÍ,&§'>k†Ð,$D tKP„¢eI3kÓ'jR‘ØÔô¤Qv4B‹AèØ|qJ„Þ¨ÓbD!´&kG0›P›@–0#ºCB³àˈõed~–sGǺJ–á‚fäB+Y¢².;­ÀÏõê’ñÊÄÚ]o9¡¡Ñ] @èäëÓ~R3ÉhèÌÅUÎ[YÞQ“ „Fh m]‹ˆƒëõLdzŸ4„¶ñ®Ýâ,øÐiÆéŸ„¡W8úô€ÐÎΣ bÔtBßJ¢YRŸþ¹«kRkÑr$˜Æã:vÈ•dKÕËž¡±<„žÊ0r÷ÐN·Œ&%©&‡óMÙã4ÇŸûÍzŒˆ½ ƒy6äÄ;>ܵ~‡ª¯2xpÔVIk8¼Èä¢Bcy=­o{„ö…pøø9XÒQ3LÏn .h´H‹”pKfˈ›€Ð6ô°Ì‡Ù¾o)£Aô¤F GŸ±<„nH 4…ÐÖ_,,Á˜›ÈR¿óúí¸ƒÐ2øYF%FŽŠåÚŠQÓΜÿ›¤LÎúÔ¦mÖâ‚F ô„ƒ>4(Zvžì\QÐQI®¢VÖ÷ÿÃqû :*ÑœÑA/tì¬Ü‰ôz„޽†Í˃@h„î¡e»»ŠP3L\ÐuFÑ9äÛÄ首óÃû¼Íò¬\¨ÒRÄÝ ® üŒ@èn)𛄛kŸ;ÈD®9éÏk9!.h´TsTi9a‚#:¡Õãåð§¹ Û 4!Єî¡!ÚÇÒš%„N`.ó™×pÀô­¤mÌê¹1I×WCÑr&ç±­ð-`4¢ö:Í¢Åà«‘>ZÎL’ù+#„Nýkwå|)Ú·ŠP¨±¢樮2ß\vt{´<„¶©emƒ±ÁñH~þeCIæ¹ ÇÈGhç–5nü(‡¿p’_Ê‚Ð+DèÌ_¡¹+ç‹ÐB•¤‹çnš© šÞŽ–4¾h’ÑÚiRôCR0„ÌúCdǵ¡ÖG+×?ÚHµpÒ~åyeE t%ΩAÑÉÍ]9_„ÖÚ®ÌsQ-Ø'ãÂäû"m!¡u­ÅÐG|ùR Ø\6¿u%/rzª•ƒ¦)óæÜ; „^BéóQ6-íØ¸+g„Žò(ÐòØfŠÐôs´ ŸŒ°.¯ÈÍ«I(!;¢õ)|e„ÎÌ„/TŒÍùŬAè• tAFÕSÅn„ž/=vòÛÁÏMë“QaÎýë{˜%'µK@hëÊÉ©GèØ5ÎD² ä0Ùž £È’@h:òÑÜ•3È~;¡É£®*˜s#ø"™8ƒÐÎ,÷z„Öóq-c ^ê¨å„Q [„ЋD豋 `^ç;¤š\!@NøÛÍÑM?GK¢h×)):ÍëbÅ›ºœP@Y§ó9-é½¼„DÎP­Ÿ˜(¤'’œ³ÐsGh“º¸#XŠdË.Šÿ(k¸˜¸ šdʬÌ`\¡}l<~1FA}í£Ê¨•zF‘RC.ƒuÝô•Ç5©“xRŒ@èM„¶ÙV襙­¥¹›<ŒdŽ¿=-¤õ„Ü  —/úÂú+ŒD£&ã½ò8ƒü,Ùié>2SŒÏh³iîhzrHËœ7E=ë¡õI÷Fk ê¨þŸÿà2HÑÉmý‘z´/ëݸ|Œ>«‰|:D/#º”M{#s¦¢ tÿ–c<JÇ‚ÐQ³º+ZÏt~ïÍŽh+æÄð­Œ=£1E 8½w$>Ìv¢õFLs··YÁP 4¬¡sœ yà£(špè G®|„Ž- ?ëg7tTTÜž/€¢‹D:sq؉‘Žh£ˆUŽ-h¢,n.äô0þ•‰ÎA£„@èR졼­‚ao ôä¨V„Ÿs‚ñÚŸr‡Ý~FiyFKº„åoõÊÜû(ºTmÙ-SwÂŽä+)§æŽzМöTü¡W‹ÐVW1JÛåjPހܘEx2-ñþ\zoˆé“+@h”Cƒr¬ì|£˜ªæ¨²Ïå#´D;?©7MBÙô1T; u©êš¥‘dç¡Aè„I±ÕåÉæö‘ƒ¸è¨™´¶ë”Ð[B}éØ~\ÐÝrüŒr:¾‚ö(ºì‰øªŸä/¥¦€sò³òÇ2:$öͧ*%à VZÁ¸Ð t‚ "´@_ò È-™0XøL«`åŒ?åQÐÃÐ º[®(µ4­œŸ÷iï—²¡Ú‚5(Ú– ýuºµ}2Mz$ö¹¸k[B3ç©¡'GhçÝäû“°Š!xr?ê‚qñ)åVÓõAh„¢zÖÐeŠ®q.ʤ9~$¹ÌJ „N+Þ srۂЫBh[(õ\Ðt$ 4Ô‘`ÊäŸ@ˆ–í¶`±ûŽág´†»{îÐ}3ªÞ&5z£îó´ä.Z³ 4m+doV>å1ºúj²+`ׇlB£°¼ »½}Ží{}ºæ@hTÕ–áý mצè"&Â7µ±þzß—×¶ÉSÇrB„¶u  ÄFº(Bû W~88N‚¤ñlwÕoM— 鯍 «,溓¢û÷šÊ6ÁYCì,cü_yÆÑØÏ ôʺ E§å æÞ Ú(Íc¾`â£nµu?÷\e «8ú0*Î~‹y€>^uÞìn3(W3”-!· ¡€ÐÊ”òªCà9託ëX%ä fìï¡{ã UBè%=@‚:úDè6ÖÆ‡Ð46ÐóEhã)3š`‹@è´§„Á°ó`À³I©RM[ ?£%Qtÿu9Ó@º E秆®:‹I@h‚“=;ŠÖ›q}}R(ÚŽ £l"3šjÖ ÏO}=XiMG2 4C*Ûœ›NµO¤øökç»±yOâ=S„NX¼¹/ÍBc:¡…E26ë#eh±³ˆa'mzzÌ 5°ê3­÷-[¼ gW‰Fé‚&Q3¡§škçx¡£ª„ÇšÍ5`L²=®œ‰øj„9—ù$¬CoÃÏöl¿Bµ¼Píο¤"qO¤Ô–›%²šwÐÎå“×&G}7!‘»p÷ U d„Ž:˜–…W„ÒÉ8?£ª¿·BWµ!&TNÅt¶PÐóEèC”œµ2?b„¼vú ‘üûúÂ#ÓZŸ_ºYX¦|¨EƒõP„vN“ 䘊~Û ´`–}S*¬¡ûDèÌÔsQë Ah¹w°fºìD>Áé!L7ˆì‚žd fäBm¦fÂYN8 ý6^Kè|á|Ôˆ B tû¹¼²ðh¾1‘sD¯¡åäÏÊX_}вœSZ¨5Uá•Xo¹i…ШEåMzÁÀÉ<C ô´†"™ê9¢×€ÐNú¢h£ð'ÛÐÊ;gÖ,«vA·éÀ² ÚL—ÑŽ¡ ÕèT2J-ÛNöLÑS!´à(¡yßåÜï9P ¡íÔÑ­º›‚õÇkú‚ö„ê*{Or\ÐU׳øP9ÈÏ3J0‹Æ8ÑY tË]4ð‘Ÿn99™î5iMK='TßhoˆVËatõ…ðæ ËÂÉÃA7u2?lº §uÂ06¡ÆSlëÉ“³ÔÓ_-B 6_„™!:ÁÆêyµˆ×·,B¯Ç­¬?hÄ'¹òÚ§íú«õ¬ÔÓ»AÊ"´ö~F‹3B‚hz’]4Ch£æg_Yp‚:­g0=E¯©]Ͻìß(:˜ÅHlV"´ÕÕ½’ÅýÀQülgXã ! Bû¦®«BèJwtç-™•]„F#º B[Ý“ zZ/“ì‚ZÎÂ!½VúúÂ.ù£›r •¯ üŒ`VˆÐV‘i'ÿ¯*yÒ¤1¹BR&б_I°qxXp1Úz Z]í?eIk%B+]Ð9E‹8 ”ü¬¹2 4š…MЯ"\Á›bñ¼Ç£îMý¤¸} ´Ÿcƒý0S„V"´œ²±#:Á°’X%é AËA„¶¢·YàmÁ12®¥˜ìÿ©Áϵ:ø¡|ƒ Ig·„¶þgmA„Nq ÒfãtÎF‘µÉPøÐ1Ž _¼\$'#tòcýuÆrèIOpËõÙ9¬¸òN^¢¢xšãô¶•ˆnš¸ Y°ƒê¢@PkChM=>Ÿõ-û~mõ„Æ_7VvËGù¨¡3’ÆÉ ±a±&.¸Ó•„C›$#¤Ü(„6.B61u^Êâ«Æ­I;SãÙeæ0ÕåT—'Å>–^ÕEÓ/QZW%¶Dhëz&«,ÿ­I‹ŠÐšZV›¢Ó´zmëÍ5§,ä|öå…³À̲¡Në“QÅÏúLªùü\d²€Ö ÏB~¶`†5#´~>²½˜Æ³ð9 ¡ÛÜãÁ_Vó(pÚS@ ô"óB§UýÎ<†äGiN”Z§WJþád·‰K¨WH³ÆöjF¢„†pL¼! 4ëtP¦·A?¡ö%åXBGY’Ø{3Ö…[ê–Fcs4Sy`¦ƒ ¥ÞB¦¤qÂÒšoyy±ž&ù•oÙàf䥑Zÿó™¢.èXÿsíhÁw„PG°l/5Çj)ºÈ"}²‹²PÌü”fk˜)Bç̵£h9?#Ùક¾Á…{?û‚7ö8Ùdø.œN’¼”Ÿcê¹½ B+Wï"”ÙEåä9 ´/‡Û&Õ à{Ò—ï%Pö %0ç B tÔ3Š–s™9ã±£‹"t¦ÊÓøƒ¢å:)¾çƒA¿M3îË"tÝ6)æôÑ×X”àmÐC#&ˆ^¼a”)Zv G ‘¾GuÅx)ËèTB„@èRδ„vòLZRÍ"t²¿wcƒÙ6‚&•S Zç¸Ú4é 5É«kß5¬ÓAõîôå!tÂ3)ã¯,´99Ë1Œh!…$Ì¥&VDˆ!zÖà4ÚÌdGô kh!jÎz¢8‚£C0áF¥…J~ÎÔŠ;J~†¢Q ’ô%µ›BË è|Q[*mN„:¸LÛŽÒ}lJxŒek Q#ºsž@Ñ9± tp:J¢Çj!èNCìUZàçz¨¬ïäm¢¯ÑJl¯>OÑ|—ÊIæ}ÑhÁtCA›£‰CKCè"¡Œ¹Ÿ3ûŠ’¨cSI9øMy` Fh_ú8¹¦¶2þ<ÁùtG+ Æî>—Ú´Yゟ¤v(Ÿ“)Ú$M®ûgçÊ_¹bµPë\0#ò]¬ü-‚±¡×É?–oa‹p<øF t{THóK§Mó•¶ÈX£+é(8”1F‘­.t—3\¦ýÊ=xØ‚.hÌ)Êœ/çhÁ…=#´\äÔè²g1WjpxÊDhù§ñ¥Ñ«Šì4’Áó¡=E§1ƒÒFiªíOÿcå€àº˜Ld5I¹¤œÃA'§ágT¼G)•V|ö4 „Ö;™ƒé(}ñ½ÖÿT(x#EHë_Â#»£E‹w$_h4„Ӭ´¾”mpã ~VnçœÚUú"àùÆ< øåŠ0Ýò3ŠÜïØÞc¡Å t0Ø8xÝŒÂulC‹6â~­'»æøOò4¡ÞŒL0ø,'D ôTä?ƒ6:Ž îeÁÕU‚!‚ >„ØZ*™Fz„Ö/ŸŸ¡ágT–Ÿå¥ ú¤jvžz Ô £Œ~õŸo^ï%ËÖ[‰¢è¨õ,ÜŒ„®}WÚl÷oÔSKŸõ›²_pß;š§œA«‰¦Žfa)M,?÷öx‘Ô ¡}·ü&Äýgä—Ê'hÅ‚ÝiC÷rÄ*ò´L¼iBCŽhB·§ˆüTštÐJ˜_DuÖ(•8Î,—éV†m+÷5#„†ŸQ ŠÎÔd'í¼’ÚÇyBaý»c‹“&#´ƒmÅtÓ“Àêxn%{<¸= Š–ý{Ê7sÃŒ2-WÊ;4ùˆìKµaýÙø•y9”‹õó?£õYÔ`âbMüª¯ÀJÿ£‰óRøÀX÷"¤‘×OL„@=âsV´·lBìI9=¡ß  •Ž¢èÌU‚g`*íÚCFù cB´dZvhMª´b>X¡QûûÚW¬P¨g½„–SŽ(Ak :j#=ë_wßÉó5ef'¬¡» Œ˜]¡E[ÿ“©({¢y&h»q*¯¹J!d®³¢SZ¾øÂ‚úâÓø­–®ƒ¡­¶§ 6±7—r¯±9Îø 9jfùÁ±3„Æš!ºBX]…”4²U"t&ÜšPà®Æf¶ÿäGœÁ§uÂWÆ,mÕ…Z|¾îzÝoÚQ~FS´PÐÙù±9:g„˜ä¨€^ù*åxuä圾yA‡#Ȧק~„îÄkÑ€Ÿ7!ìÌAh«ŽIKØ—fI'­|€hÅë1¢Ã9 hj¬¤•,œ EÃϨ~ÞøKÞ;oÛYŒSzo­3”e£Ën§Dèà=>^Dcý«#»Ê}!¤¿Æš!ºÆ}ê{è/¤ÕK8\0ƒðLPãvè¡•gçLì/‡@§+LðZ÷LÑBi!„&±ê>` Þ€ýÌ|O¯¢ÊùiòàÅ"´æ6ò É^‚N–Ò"7­­´Å\JÇ£Ò†ÐJ|j³x­“5n±µT¬¢€—/~Ãú×ãÝ\r6äßkª™ üŒz³êÿT×öš0߈Yâ̤ŒpKFh«Žå˜KrTA#Zii7b~‰àªœ;1ßm«¬¤ÜrñZ'„`éÛ1å:ëºú¨Ø†"œ} V‘’:3$¦ýý¨ŠPK«îó9wÈat¹Ôä¬ËÖõ¡IôW¡ü„Ö pέi¾˜?Ü´ù àgÔ­U.dè ê4Ø)§ ÷jÍòjëÉq—†ÐVíQ·ø{½¦å„ÊðÚögT$Ñb(ZŸCs‚J„Wwjj«õFÑ ž+„¦²ê¥Y·±Zšh ¡šª&#tÐèe"´ !4QÇ„^OR;£^žÖþ,ÒÂP3ã¢åqªO„Vò³o4 ®èÖ¡ «„䀓|Ä­ÊÏSÍJ³ê=#tp)Gp% W©û,CB[u^ÁZà@è5”VÑo4àSÛP´/¥[W.ÙnëGaù…ŒÊ{ÎÁ¹Tu©÷+à‚F3elÓwtnp… 0ß—]šÊƒÅÚú“-o¨@è tfzŸ6n–`ÝÕLÊÒ¬ÎëÄšÔeàš*´ã±8ê,jUÇ‘J¿üŒæˆÍ]Uñˆ½Ñ|7¡ƒ±‚{¤B›QXЋGèøÙ¨ƒÒ&áé§\௫ ­Q‹}´,\ád„ÖW®é¢žù"ÔÌ«L¤¯Ï¿ÔÕ5§£x<¯÷™Zdmãs.i‚úœC†%ÐKGh%zÙ«ó’ɹ6E „Ü¡KA$òB B;ÓÌÊÎâµS§VÚ!Ш%ï_e…Ð` œ`:ñ 8Ï%¸C™£,BûJÞXEél ¡iÓ£&”&ºT*†LŠÆ­Éÿí¼Fapl²b| 0lâG SÓ]t)°*hx56Ä„ª» V]‰ÐÝ:œÁf»öqÔDU„¶‘…Åå¡–L„ž5Bëƒ7lžÿYHnVäø3Sö50ošp`ÁQXSÿËøÇ,çÇôõ œS{à(U[ÇÂÚÎõù!ƒ«EdÀVÚ‡þz“š#¡x–/×tTþüÞ&/ÐÅIÃè,@Žm,~Éüì[ë=yaÚõ—OP3LD1°iUëÔì 4jIŒNtŒ²ŸÊ´ÉÛo<§°þ¬õV\œ§›$óåCh“ÍÏP4¡ÃϤ¡H£èà •¿ó:à{I–4¿Ž¾$wEoú¦høMˆÐõʸ4~¶¢#ºv–uyEŒ¯~“õ—‚òKkrDç ´syˆ)‡ÐDw zîüœOͼŽÑ‚¿B(ÛíÏ-ŒMz„V:äçŽÐð3jOÑÆEÑ<s¦²÷6N|§÷EhÙ—uSÀ×Rmý šŸƒãaÒ„î–¦ZòsKLÑ‚àqí·ä'¤B")!:gYh3¯Wª”UBJ'Bkn1!`XƒÔ†ç¨»Þiš3•€Ði£’/£¾0(s@ñù ¶Ð=íX´.´Ü sÂ.4ÞTù iÏÄô3±’ 0Z%ÿ¾-,9S*,!j@ÑÆÈ‘ÐÓ+†Tµù ¹@åê$ÎüuÊBᙌêtò #ˆr¦ šC„niŸ•ü\?:™#äP´ï#z¦m=Ï”VPÆú¢Û\±Øy\Ш¥‰Þd¤© f§Ì7}EŒO]ͦàêf_•¨4F-‚КHuÐýXæÀ˜é Û€¢gäˆ2`D•”‹³t~ldmwøMåë0þçä\‰¢•óà(& ´œO6ãÉŒjt©õm^9=-8i*n,ŒŸÇ ”3”ÈŽhßÖ'BËÕ ªÉȃo‡>y¥‹‰4/êÎäç–ëf7!o³f)´½ÉˆœIFè„PŒ¡§âg!±|lÌbˆI°?Q=#G´sŽÞ_¤ÌÚѹå>Ža¨B³0n>&¬÷ ® EËE‚íL7*? óÅräŒÂFÉÏš"†X$BwˆÐÍøy*  ™ì+WPúÖÅÏÈmCŒ¼œP.Î4g„ÐX?4#~¶Ù.h¥Ý+e|äº$FL(j\ÅSŒ'“¶~Ò‘6ã:-tNš#„@è™]„Ü:™Dh WÉN ÁÝí¢ÂàÚR¹*\xwü±>ÝÑÁŒ+X?Ô3?ûà-¿×@hÁ°è*xv2vÏ-§éaôD„’’¥FYŒ/> Oš#¡•>j(ZϺ¹XB´dlXu·ËaœI§Ð,àÙgÕ‹Xž‚-f(Ÿp Ó–+‹›dÞøÁI0I×ä`a-!¡;±ºz{XŸ•)Œb%œ…Qó³PÅÀ÷üQpD/¡/Šu9¢;OÊ„“õÌJ›å$‰² ùV"˜ñ8*<؄ܶ>GtY„vFÎ1¶ÍWÄÐ÷ƒ’ÑИ_¥•(-dòÔópò‰ë'ø>„Ö¬òŒùòø9xé¢L~žP·ðìt5 Ü ÎÜ‹ t¬û"*”¡5+û*!´ UðEì 4 4¡;1¿É5ªæB)úUÞÆc£ô•¡|[›—#º8Bûj„Í‚Ÿ¡PW÷f¬g²  :Ÿ¢ƒ¨/gxs¥:6²"áâøæ/Á± x)˜ã#zF¾µJ·gƒgåiÍpM ŸKdÁmýþy盦׼ 4꟟eŠ®á‚v‚b¦}0¡z‚²»CIÑÁ¬BG¦~-§àu‘PK¤¡gµïÍ·Nì‡ñç[S& ð9"æË‘¿àȨ t{)pò 9"´¼’·’•È¡h£xbå/¢¢54>jax*ŽÐÎàç(OŽe3¡ûFèÙÝž™&%jõ·f´’—“t›Ý®ì1G§.N4 Š<±õøÙiån.9øDvÏŽ­±•Þ ß“ÁàB¿(ã)Ç(>¹–.B tcó;S„.µäP?sÚU!¡¨üážDOÞñ–1#ChªÉ]„ÎtϧŒÂé*¿HCèñ×c'Ñš&‹53zBÏe9á¬ù¹¸=1êx¡ ˜ÓÕ`g∮”΀P»×†Ÿ‹ìÂ(r‡úÎÝ÷"ð¬IÊQjݼkMH¶%® ÐsÃÎYßL„.²nÈ웲•ÕÍ„æ…aÁH¼ wZÈËÑóJ:,3ÁÏ l²ƒå”;’«¥Èå ´/AJœg”B!ºf0S˜P‰UßÚpçŸä»üúÜé®­e‚Sæië÷EG!´Í^7$‡y œï‹]Ÿ 0$¸/&qÕŽ¡Wíð=°“ݶ3G4–™k‚–ÁÏ×$Ô‘=«Êq!XÂ;¸8Q.º¬ç‹ÐVç…ŽGôvB¯™”/§²Æ_a6XiÅçî?+2–™k‚æÞQ§òXfR´z5û .-T"ôxãÁ$Õšly…¡—Š Fô?Lk(|ÐëL[ª/vЬp¸È5A+éœã¨°©âfcsG-$ ¢µ°`Pȕ狣ênjkùp#B·aÔN쌀ÐÂÃ>M%V„ƒÐÜųÓÚLˆÐi‰”5‘Ïú¼r Øz‡&~¯B ôÂ8ÁáÐÛª:'?û¼ >+—2ìÊç² uKç¬ÜNÈQc¿&²œ®>‘…rËÆïN›ýÞÜAЕvZ~Þ3;ævóÙC_n:9á†Ô®{‹Áç² 9ò³snÞ~9a ï·~³N§´b§ßòÆOËÎõ2Dn ´H„î!:Ëô¿œkvÛ71‘ Qu)‡Áç² Y#t”íš;B›Px³ü 3ê€M¡IÝŒÐJzÚ{|‘¦Æ·ÚEÈ­d:óZ`í¹2h¾ÝÉRå5–Êõ@h1ݾ.x¶.”YquW×SÏ•A³›¶w…jÁ*T9EÀÇ,5I<ö ¯`‡õå…ó .?GЕœ‹לîß BƒÐ¥YÑ×’Ä‚¨r°0£´¢9Wj •de; lŠå„-¡;Á×ÅgËt®(tÖÌò­©‡Ah„:w†äÜ)QYï6¡ÊVroÙ8 µ­«¡óHˆâ@h©mº ¾-,×9HûVÓþC‰ 4B³@è´½+ gkòB;©Ø„êÀ: Yð*ûÖ-:í<¡…!t¬P)Òãa£«rÅŧ["$PôÜóùÅj>¹l·\vPCéc„–3Gù›Š„-¡Á•INMζ4¡#;Ï•™×Œu…j9.h™¥…”ûÂsÌo°Ñy Vf1äµC„†X*Œwr½B3Hcä¹8³à4Ôçì&9φÃ&/Â3’£)¢Ú÷²C#BOeüfm|ä,Ëú×¶@‰ tãÓPñĈu±}ÝÏY%XÐ*Á\û:ÿž‰¡¡§Kayõb°ÙêÖÂXOâß0%‚Ðíù_4*ÎÏÑϬÐ-$>Jö[q9¡ó¯r BO54÷ì‹VšbÁnËf}v[N| "‚Гܧu ²­ñ3û\ÁN¿Dæºìà’@_bRÙg‚¡kŒËÝR´ÒFDFÅB´ÌXx®OíÐs¸5òû•ñOÐdZÖbçàk0c¿/*φ"´B t3„¶Ó >“k¤ÍVqJcç¹>š‰$Až¨à}aDxS¨`r÷ªi'÷OMW—k¸Ð+¡ÛSt°¦jcZZQ=! Œ-רŠò¥d>¸¤Cr}ô· >‹*Ò*¯ãÞWz$dã\ÕBÇ@„n«AËÖìõÞc¿Â¨KÓÊÔ­¼°ð!=íÌU²™Ë»#ÒJ‘oåÇ‚>iV8*£²B tËAarG´ ¥'b¡å´¥AÓ=~X™éîkB¯ê"@ ý;‰Ð>s*B'8d0Vº¾¹)¡{³Ìmr#oBù‚ŒR z¶sX¡s®k¦Ú_ÿ~ ­àÞ…U'¼±/@ÚúSd$OU”ØD7!B÷ãoé„¢£Š›”ŠˆSúRr2xà6¡óoI&b±¬ÔÔ~Â{¶l´c¬ c6¡µ‡ùö_NRÍ„@èAKmÓ”Iɇ§ñlgnj|‚Øü5#´~ª3O±Ús ß;»ApV(ƒ¢} ‹OU6û©IÜ„Ð"çõ 4]¼¿%W’•ƒ¢‹¯|¡WŽÐzÒ“SãÒ‹4—+Óäl¹Û!!Ÿ†óräg%B;Ç •ÌëAh(zrä6bï½ JõôÃ…YÔ¨E²²çŽ”œ b.ã`=´œò™tìj(r„FÁϾ <£ÅÌëAè…ø=#ðœÑç9 øYE¥ï²3SŒÿâ:öDÐ%ÈDLy¹ò‹MûŒa³;·Ù,^SoÅVËã Ã^üÌ­v^B¯“azè 'jP¾ŠW5ΗÒkCè`͈ çðüº¥Ã'ÊG=¯þ/ã±oស˲¾ ¶Ð 4]jXÊli’{Œã7¢R‚¤¼Æ1Nß[’-5¡Ìšù 3¯(,,2=Ÿ¤kÃyð ˆPpZ< Û£ÎëAh(:s<’k¦Èùœ5{,˜£ÉwØã(ÜÑ«Bh£. aüéyñ?×@Ùi¿Þ¾ókžåuOÏGë™×ƒÐ‹žÄ ;wç[\Qägg¹ÆœÎ/¸qœÚ–Â…K(Ó ";_ÝyO+uó6pA;ã4”®æÉû!=­a^B/{ ©ZÈÀÉôV]Àæ"w«ú ºR Ý•;"ˆ(ÁtÐÎzδc\þs«Æsºàg6Š,ÍX„æ"za­\l%,²êND î¢ÔÙPªçÑÙƒjBayU¬plò*,ÓÁʲwμ»%?ë)Úõe@hv]„î v!ëQlú)9y)4XÚº<‡¾R/Œ\X¡‚ç¥,¸&,í}…0R¬ù®²DNÔ^Ú”¯ÚÄ"ìsFFßF ^ ô¼_©DÑÁ2aQ¶Ý·|OÌ¿nÆïT÷EAk’0¬Ç͸¼ê„ãóÒø™å‰äFLš‡Ñ+Þ¯b§*Q•\Úœ¾²ÄO·v:6bä¡ÛÃsYú*EÑA>*ÀFqÂ^°„SšOѲç|ŒÐBmáÑ?†hÖ-°o¡“ºs’ÒàCHæÏ´•¾ T?cAÿ†.èœ tËß´R2üœ>,J%§/ˆ¬¢T\Y„¶ž¢áã° 9Ìuãÿe#+ñBëïS9fÕ(úð\Ö¦Íâm+ò|~ƒYôÑ3AèIø¹FI©´žcBϬ…OÆ>KÝ;T¹(p‘Q؃í öœU„^Bk+ûæ¡B˜Çzâ:|ÎÞîãyx$»¦ýiæ;É¡=„^BËã{ÚQiêw;‡°(tI«Ã’ÏϾP Ÿ7bá]lÑŒNGv, ¦¯°ÙO ŒÉi°Rκ„ä?ÂÍ>áO3ßIè– ô´¦²l!XŠNG4QÓ¾¼pwŸ¾”aì}¤ xö¹×¹Xl¦'(Ç—Ê·žœ«\[õÅ„˜¤… 0q“ÔÈîħ1£Ã¡c=GÏUÒlXÉñøÎÂG§Î(ã¯g‘|3D ©EÆÓ ô’;Qyg OaÖ =£¤Ÿ¡uöIº*âæuÂ.J ñšEZ0<ë„`ùÁº/"EÎZ?÷r>„–?3v8'¸ ó§¨ t=xîg¥'Ð t%–N&ê`šå䃉Cƒ‘ÎÃ®Šº‰|‰ nB‘˜£yQ\0vüB¾A¢øy…}’sе?¶™Z(ÑAèÙÙÌ(omƒÕ=A„rò¸J² Ò±ÉT hÊzòSšpñ­œcÊ«XNØ 9[W~!Óäc"ìCtEºO_oÜxìÖ¬'ÒÄ‹úÂSƒÛQŽìújÎB ÅÅ[Ñr”uAÛõÕâipG(—KwhNPBÛ5­qXFWìð7¡‹ ñ•²ÛM•µ)hX|oŽƒ+‚ -¤þÐc•¦¨·þ»ŒmòrÂ(´†Ÿj'1/Á6ø„î͆*õÃn-0]¡khª‡È¾AJÃÏΰ_(µæÖP>ÜwÖÚ>ô_¶ïé“Ú9Lï‚VFϵ¹%áWã¡‹ât‰ºÏa„îy;íCd¹8K,â:ñFŸ“*XI\Ò¾»ø0×¥N äDåVÅ¡äg†ÔJfs¯6¨žágL½r~îj˜¡s~ñOŒ+Ðw’GQ m|E†(»ÛF\H([WÕÍõǯôBkøÙ&å¸C™Ü,ê”6{BPtÚ>..@—¡Aè©83‡œÇ ]vG™ülc–û%û„ë3Ù„ÒqXO°ôJÒD¯ ¡õQÉ9¢Q tÑ\på¢ BG¹«ª=:ÓîG na¹Þß$õjŽÕqÊs×ð³ï”=¾¶å¡gо©åø®Ÿ;üA|JÂb„•È鄯S™ u…Ð,'DVW‘$êÉfc~Ž­'8>kŸ#¸Ó`´=p2k [!BË·\È<ë¡×L}X‰M,tŸü< Ð’sðO“ó³Õå|Ötu¹vLðz„–3Ú Ÿ\I¥Œ…Ý8òtL“-™ŸakP´r Å•¨Ú ÝYÇëÿ·¡ÓÆô¨Ñ_öÍ ´`š¯´ºÇ2Ò(ë-êI;êjëSs¬Äó0ÓS“Ó>Ë5t„»5™ŸÓ’¥£´‹üɸÔX‰âXŽ®:Þ,~º¸Ù7êdšw:äçqB9 6OÓ¸G'#´SsÉ7o-ç‹Ð±y¼ƒ.èLÿój«óL莀Ÿ±͆õq¢E?ƒÐµÇt«p8' r„ÞãX͉kB&‚'>.¹bâ·©¢MÃõìNßTí¾çËÚÄrBø„îj”Ñø–sbH2ùÁ´°5MynájÜ™;¬“¢P`%ˆÐJ²UVÆÓŰ þ†ª©çQ±bÚüfľi•}Ô9é6Àss„žûÕ¡›Y~}ÚãTÐÙä}Z=?×CèäÙñÂ|JëAh-[W°PÔ,r%ƒlZ”Z)ëB·ÿq…ŒFm@L‚Ð>+±žÉr{ÞsµnzrGM°Ûh&ÅUG(cA¦k½} VŽë ¡íƒ¢—±ºmlx}«SÞ“œú–Ój–?,{Ô“íUq¢‹M›‰ŠxTZVž’‰½¶?Üç‚^† ¢·£õMÙ–q7Ð55{_r9ù£R›‘ 7ÈÏz¯õ´7ÚÂ|Ñ ;‘q5̨ˆŽ¢ÔŽ2+5DWÄd]…e®víáÀ¤V=(x¾*'ÅÚùo¬‹¬7âíû—m6AèJ3¬($–ïåÆ}XüAO…&ö„æ\2züŽP:3˜6\Î>MÚ+½[/Ù„npA×ÿ„',-Ì„\ÐÁYUj º ëÝìÅ/x‡°ºx³ Bï´±;j» £l£>àDŸf93nІŸ„Š‹GÉ¢Z¥ot¡‹¸Ô„L>ú)9ʪäéa³¬ªr¯ÿ§{ÂZ‰ª _ƒxû4P 4Ö=ø¹†Õ21m±cŸ°€KžÎoty³§ šZFñzZ¾…GÕBn™Å—P© HQ>7¶ªô%¨êõ _%rÁ-—~è-¨®`UNÿ B#›½#³žuñ›4ÿOBå„ì8¢9…"-—lÐ'f$sl&®¤¤\çcA½êÕ&ðFTœv´_¾Ø’f-+j›Eò™È[U¢3 4ÒuÚÌ{¹=B'”)Ó…Œ=ÊH’NºÞ~›™‘ååèsúa|w¢²xž×–º8EYK®v¥¡*˜š¦R– Êwq>E ]{ãm÷¬òA’É•£vÔÖ–w[е;­’Ÿí¤ cŸ«úNÁÇÏú¹°¦ÞÜ|)ºå||©Ùùœ£@T3£ðÏPdaÂé<Ýf¨ F4U‰|D­ÏYiF¬è‚nuPi8HöëãÖ¦M< B/f4Oža)óº7¸IåGÛ9› ¾V’Òº¥}^Þ}' ´…1 ÏIƒðÜfüZ3EÃÏ“ƒ´BPêÊË«ó|™Ÿþ¥ü²ã&4Æ™†.hÛGú)ù'ÛTÈsH ö's¶îœ7˜í–×ä à¾ûEÐÖ³x¾ÝØË±x„¶þDzÁOS¡l7‘Ò5®—±ø¼,˜ÎÑÔ *ûœ}•}‰22o®`äääO ûéíUG+2ràHɹ˚¹ “gš™X¸Y”aÕNc>íâây!ô"Îé…v:säRú@èLãûçÅðsËy™|k”’Œ˜=ÒˆQÇš…~™§/,|h“»ÿ_Ï Ððsr¿r2a˵g“«"t‚ ºO„®DѸ óZàç`^Ù²ñ‡d.Þ¹€¥,†o¥€ UƒŸ¨ö=™-8ò ÏŽåu=Å#úúïóU}òøÆš¥¥à›ˆÆ}ɨ«K$v9îB¿PðEÌ¡×ÿj3LŽÐÖËá[{蜚ÐU‡`ÙÌNU¤À‡&_MÚ“‚d„öYÂJ ý‚QжUh‡Ò•Ôá]Œ#„žÖ'Ѓ ZoÊ‚4(Ç„§¹ ­+®“û.ÿéá¦f¢Qùâ/ L7*C€ç²¸’ ͆HÂÈ…Ûv“Ô™üÀµ9¬?jÂ7šdÞ\B†0×È;7k¼„¢Aè²6-yhèÁ@tš…6Þ-#ô)ZYx«÷ot'ä²Ó$èHƒgß:ĵUhÀÀ\À ¿¥•ø –¶ÍÈu·ÊIó4Ãbþó;áÔôü\¤ªËð’E… tû1BˆòšÜ,ç÷ù 0G=ºê¡5yæk[cýÏ´¤ƒ -§UõÒLN•j c=Ó´¼ËX¶TŸQ#t‘YŒ<ýl©ü@3svf"“GMˆÐP4:äg›W FÏl±wŠìˆòI®^°BÇTk ŒÐ~NÞ¸ÀI´FÙÑ`r«[ë¼\Sx¨àêE¡*‡€µrâÊ´)›ðØHðÛlÊ¢§Ý 4œwz'YÚJ͈5|›ŒÐ¶3G´ÔgCåSÛ<§V– ˜»ƒÎ©Ø„íò>Š}+{g­¡7Šâœ:ÎÜéeëhËþs¡}a*™¶4Ö-WBoÉŠP4ºrA5ç„ÈÁ´½S9ðåª^Íx#¡—e*0s0a»f‚#?50‹p—mßêÍOWËÏB7+µ¶n#vøIZSy<ö ĺ 7bÎê–÷Hç·@›ü$ 4üÜ› ºT÷VÒ²LàÊúà=#ô\~²Àó&T)ØWH%YcÏö†pŽ:Ýiµ“Ø’ÊùJÈJZ5#¸–°¸^ÃÏÅè¤D(„^9B/•Ÿ­§°²r#ò(à‹Ž›ü¦ëŸ–ºÀMΑ•‰ÐQ·ðÚB‚“ÜÎÉ|¾Cã¯ÜgóÖÖÉ÷K儾¤î{ô•P: ¡}]׉÷=¸ ×CÑ 4nÛ™"´>Ž4´–À¢¾‡ì“ßwÂJó>§l‹‰ß™Ù„ø¹ÞÁ,¡;ïí˸ÂBä†fE^‚1 vàRÕ4„ gÇ8ö8?'‰\âVXÌRd½ÃJœ´zéAè5 :ã~2÷yåØŽE­çÒØpçî:¹ï„*xÓúÓ䇒‹Ah37›,ŸS/ð0òµçbGkf‰[ T®Áòj\_iáF3¡n)ó³õ¯/’‹c=UHÖ숡ی­¶ctlŒ„Ïà´É>›ôãc9ì¤á&´@f÷oí ¾nýuEb6ôWØ·÷%¡&)2Z^á½âƒQ2¢…ÛG3F¤ÙÉ`1åm¥¿×ŒX<×ç /¸¬²+L홢AhL†ßaoI«îí´ÿJóhĬ¤3EhÛ‡û·Áº˜®új!'c¶ü”ay Aè––D“tÂT èØ*‡J¤Ï˜'8"”–Mã‚v¦xòXšÎøÙÎB¯žƒùµºê'iU®Æ_f1’“iÖ+ÝÇÚ#´s ›„=–Z×Û7&Ös8Çnyy´©œç¢âŽ—½î-,'t³>µfZÕ/F§O”\QEéŸ÷mYŒŒX¥±‡Â‚˦hzÍfÐÒй ZcEeëm빂pbÕ%Â{pDËyH&ÌØ0U1—–°¡ìK¥ | Ñ¡šR†3Åf¡úÖ¾™öecÞl€ÐÖŸ¹4¸àWàRç¢9¿½#íCt¹0¢rìm­„¢Aè•ØÀM(eÿ­@•± bB·¿ªÁ${Á…3ml×ÂÖ¸iJ¥ѵì‘9îjº¡ÇfÙ‡&1ÂÊ E9¢ƒq}Ö³:ÛŠÑËÂå’—j‚µ29VŽÐv¹¥d@è–6Ðç¢ìùàÂc(&舞/B!m¨iIäcÄç# lý¡•J2‰:Âɶ±ÓÞÅ d‹AäG~òEÑEê³(ÚÄ ´0˜˜’…ƒ`¹çç¬nó´q©=GãBWÑÎÙ sóØ'Œ>Óê ÖD™úPyrŠöe± 2^U¸uÌ’Zø|‰4—½l}vÓÿ9èÏŒ-9ЦšõhÖ…×:hÿóoLeÂBëùYx´§M žKÚí–EèÅó³<ªÊ ìÑ`°Ò ×-ÿ3ˆ(YWŽS–R³lßdvr5±paðfzr, ”_6¨½g.v»Û™ݹ ì¿–J~ ‡lð}‰é”öS¹¬©%ÛȘ\?^ þ—ÍϱCjð±Õ=I1¡$c3Bèå9Ö<ÊëPñ¸l‘yi­€ÐÖï”vgð¯Æe!ŒM>ËS$ãß:):ah¡1q³@he¨F¬ÿY~\NèK'ç lÆ6Q…4™È®¿€Ð>NHŸQδ4•ðóï MçýV"%Môø8å4wV]q>"Œ!4¡²§“' ˜ B'{á@èuÂsÿ¹ c/žåÔwôÞ 9‹QK¶ÑÄÖæxsª€-ˆ’ü )ƒtrIú™º}€çE"t0–É–.?í\H˜PBÔ9d8M\l'.…p:Ò"5_'æq¦€B£à„«ÛþPÄ+$Ž–¡¼®Ä—¥B„Öx/eþ/²f-jþ2÷9©|éŸÛÊî)ÍÅŸQ‘ØJ£hv·ƒõ?›ó¡K´T‚yá;Ý)ã!ÃæUŒ ¦Š²b>Re²¾üß4' B/Ø'Ð'/˜×(è¶þˆh;xaÍ.hÀЏ,’/5„#Íu/WøÕüŽòãÝùNXÞ˜öš$d)÷Å(ùYΘW ¡•%k…à+aÙ‹r»å2XiTƒÐ›Œç†ÎÕ—‹Ah›{„¡íLòÏäØ#ä/rþI6È>önðdM‰ÐÂRš¿Ž™OOK>ë„©‡/_–¯k8Üf,èsn‚lóõȱ1£.fI›ù3‚=£…Ð6v ‚³#FPk(:'׫ü›æÐø"ï,zå½<ªØÃÉÏ‚ ÚŠQÝšî࢒6üœ Ò¸ 5“š¨t.ÊKÝPGuˆækº›í+Š 4)rLo=„–cE”¡&ræœñ×£øSÈû¤ “£S4?„f°Hж S¡ÛL¸6`d-j¡5#Ú$£É¤W;0;gMÍ‚ù9j% 2K‚s¯[?ç0j½}mâ×±ê+V7pAË5µƒË …°7ᡞqcÚ*ÂÀ4T¯¿+M(>$¡—wƒƒÐ€ôº´œ®SàgçlBHÓgž`ô9ükXÎBÅÙMÓ2ý²#.Ø—4±:}"ô"ûÆâZã´LjjÆÏB—`î‹ÍÙ`g‰ð'~o£ ä°¡´«ÊYy>¯ äX;„^¡AžugŽòeÅ’ B;s„úØÕd[žרmRÛšÍ%ÇZÎu.’ý/èÄKËëhæÃÏPtWF[€F3}Wz**O äõ/Ag¬QdfŽZN¨Y«˜– 4a`‘å„‹Ÿ2ƒÐ84æÛŸÓrV·œDv¶ŸtGÅ<›¶ñb,gŸò`Èý†¹DÑ€Ðù¾‚ªK’*gÑi{l67bP‡ó|…¯cƒy)5uo‹¬ΜÚ$/iYüýÞù¹€Ð+¼”YpƒK'dðö¹ }¡ãAwÁ´Q=LüÍr]ÐeË kJ§ù*©i@ºÍ¤‰¾ÑØ6ÈË¡\žVpGm&‚ÿdbf! “Þ™ã{r*$‰Ê¿ƒJ-·ñ ˆ@hz©=Ç„3ÊgÜúçkrVŸ÷ÏGÑ“X Á>U~àEFÝÛø D§?G^,£&p{ÁåEôyAõ½.-³iÂÛ‚šlrú&¾ZKÎñ(ÿGÉ¿Èi¾èÅO™{>#zµƒWfâ £HøéC#M¶%!E^ÝÃomæH¾dVÊq?ê‘«¯ÇF¥ sú«û¿€ç¯¡’ÖÊfÂlí&ìF̳·wŦ.±ê„¨>Ã^dˆ™„¢?e¡1¼ó³f¦I&/úp+ÁúŒÛ„Yy;¬ø,º7ßÉfTš©Øˆý]0/tÀ œXŒÑ.Ž%‚… ZÑ|«”H9dOž ßL}*?ÍúDÁf*)ºeMÌ’R ¾=Ah4/„nL*{* ´L>‚#ÚúSOOÎÏíÙi RÏa%§Ã*ò+˜P5åœq£µÑLgsÅ'ÈrþdÙŠæðmXhM¹¢¨•zš|wšAðÉ©õgdÝûLr¢Œ‚ŽhK-¤Q§¡QÏ “`BƒeOÎÒ ×ÚŠŽhÛöédÿ=9ÂÅVz™ÊÎ3﹇ÃÏ ³„Åï%¥:³­¶œ0*äØÇÕšOŸŲ½Ó¤ë¿¶¡hùð˜ävuA@hºeB•%ÙycÁŠŸ²Mr\|R¡{€ù„P¥ŽÙÔáç E¯¡LäªlàFá(•¹W³º$¿ÖF%„†uè…ì]4ŠŠá±Óy¥#ºÈOE÷àî¡Q?ÎCëª{¢É¯+¸)æˆÐɹC‹’QÌ_jt˜„qMió‹4ð]~Z4#‚ìˆÎ¶®\¸Zä.6ž‰Úí;…`¶J™ì+2Bû†¶‚™âƒüÜEƒÐ(Á2§å²›wë/JØ EGº©rqf?GõðœÿÈ;¸œ0jp45£UÈÖà× –ͤheèš/[~TtS°¶H¥;Eã –ëÒ&¬GˆºV‘|¾„Ž„¡ÑL{² UNÑäâðyôŽè––D³”rª(«XNX|Ü4ºGÞ c}Ôêe $cµƒò&ä¼5ÙóS!ÎÁ7M‹í–m:˜]D™IcìH‰Í¤ª¹äÆGÑeÉùß…¢ ä@³è´NÊ•áY7¡Çöv’¢* ´2– TŽÙ.p´xÕ`À|ÕžÖƒÐʧç9öÇøó×ÿ1Ä&œÑ¬ï+{§ lb(:'˜Jésš‘J©¡èE:7@h¤ï®ÁÌ5ÚzB““å1Ó“ º óµÆÚ·äGá .ªä× ®kË¿ 5ÏœJR-Úú× ÐÖ¿ÈQy²i3=E÷Ïd¦U¢{vn€Ð(ŠM ?[ t2Bû 47ãçÉ'Å9+ïŠS´sFSéHª>›F8 ‚½Ëq»„VYGÏø‹_'ðs•¾R)&í¼tr:èLŽÒ¤N­¨PôRB#•Òôþy½Œ`$ƒé§*ùX:œçÄ3äk.'¬„Ðr^F”Ù¥•PjýÁÆÉóPáiŽ>ÞÃúYTBèàRˆ H[]àw© HÁ¥:„½C„†¢Ah4;„z´ŸŸ¿ØBOõe^¾/:­¾vòuü',º–†Ê4« £Ñ(ÓèEù!Ù×K mtEµôáÐ{Ǽ)‘~–+ªË?Jqï¦A!;-zYmBƒÐx<ŒÐÖŸy „ž¤Å&—N.y wlpÙ+Z§Y6m!3ayõ<ôq–V” ^ ‡ÏÈǨS‰²gáK©7žt×xpœ°e½#³B¯ ¡ç2šËÏ ƒ3z««öŒî['?Û©Ÿ-Ê)[õÉ—‚!ñmºqKÃÛ‹i™W“«Ö M(Em„6b‡ 9œƒ‡W<‡æ¦ÜþU-yf9*–‚Ð+¤hŸµé¬ úmbK>)—®¡‹Foæ‚„d°4ÃÓš¹:§¢t½n£¹ƒLý)ªñ¯U‘ó] ÒÍüÖS ¡PT3OHŸu @hº¥M‡ÏåL09F„ZºÞ³Åd³Ì©å„™¤à£¯RI±ÕÉÉ3+90õ¹8j{Sƒü,¤] –èj0ã–W€VºåsÎûBcœ5«{æg-dôU"´º°iÿ¡'©Æ(<8ŽÊ­!<ž¶rºï` è•˜e Æz Ë&tò^ðNÑDYËlhý  =÷IKUÊ5á‹ÙnàˆÎ_Tˆ@èuÚíY ÐQ €Ðs™Å4Þ‹ÓöÔ@³HjB  _c8[ <ï=»O®‚ê¬Ü‘v<?m:W&MnÙõ’r,tÐmýõ»+ÞêE<#ÌdÏ^o÷H>BˬebÒz40#³˜ÅLµ/gRîX~nYË ìØZu>šÐ›P¾ˆülýKfÀX¿À¤ìA 1$AGzí\ñ²{§ñXœ¶} ¢|}›‰wAËN†X„^UQ•ö! QC@B·_7Tö%:zÁü,üרë &ß³šE»zòÔ§9*rÎŒpÖ•)ZX4UòöyM±9 4Ò8åL^¸Xø¯Ð mu6Œîу~îÓ-jB;Ð’Z³äŒ²(ŽÐòôݤe{¬~e±¯ÌŠ81 ÇŽkÖôLÑÅÞÚ}ÞªÊäÀòCºX„®J/ð³w„Nàg;‡ r ôª(ÚWʳ‘_$(#¡Ï©^ ¡­ze±\ˆ\Yµ°™¡ËOÀEƒÐ 4 |“C—óºÀ€ÐʽG!tTîÿ)*ü¼0ÓºKi;;§¹‘Ü+‚5@•-$–) íL¡,¬y Ö(4£Ì'¦Õý•™€„¡Ah@:ÿú"´ó¿ tãþfE—²óÂh¾€Aå„K5­V§±÷¦›“]Ðò­çãaBW*Tmüðì‹â}ÎãŠf÷WN(ЀtK~–ÒÐ '£=%³Ôúxaüìì´hUV×x”ÓŸƒë÷×PN¾…ËÖøÞ( lÉK}Ñ2-Ÿò4Î BƒÐhñ ›¦²Ha;Áë" ðsíaEˆÖ|qš¬wŒhŽV7!¹q°ÿ]ò ß­§)ð]ð^sú…Ÿrî©q°w˘d!Kÿ’»„F]tT¥$ ÍF-¾Vª#G{·ŒUD8'Ä…2  Ù[øé'Œ>&w:–å °Â:¾ØÒW™=öu ùL‚y¡MÛB í÷BƒÐ(ùVí¤cýÏš'nÂSmrTü³õgG.è+h‚7lc„Lf’Ò'BWr4¯ BƒÐØmJIš©f7]¬³½jœXcƒ6G~–Z¿ïHYh~Fs±Ãúά¯ë]6¯C„ÖŸ•')=›MŠÂYЋ7ÝF‘ê3Í5Œoj=BǺ¬û÷3Ì ¡e`Æ< õÙág4_„ö%¬Óܳµ‹ÆšPâ»É:mYeç½¥Ããd9!½r.2‘ŒrG׆UÊnä4¿“¤àèvþÞÌ/dv Ž€†ø ´,Š6þ4VWªÞˆ53GнYÿ*lüªRtΟþëJS¤²‡‡@èÕòs0àAc=B·L©'§Þèó5£GZ.‚3Nß-3VÍÂ;Ù/ö®¬qYkà¼õ‚±%5ª«È×0aEÌ,†lÀÐmyua¥}¼-¿3ùy*WpÏÝx!¡fî¦)(\ÕÓ…Uéu•¨(~ο|7réb„vúL/Î"G¡'¿媦 ùü­ÿ¹¡ñ'êsBÑ=öàèèäúËÀÜ`ÕÐD4 J69¥6}ülÅQ]ÝxãhLÙø¨jߞɥxû¿såYÜM 4ÝÛ„¼a±s¨e?vϦi©ôÞÛÁh²vû2Ín þpÖ¤£RÞŒX·í8Úz*kçtu#¦ QæÄhcö“ïÇY ´%ï=¡ûCh« 3pÐwaŨ¹•ßõý8ç;ç@ º±ƒ+j)BQ¨Ø§Éͬ„¥OŒ£ÿkËU0i{YEc|@hz*XÒä¨×ËvÂO¥2â3ý!¬ë!lW«ÞøÙ†\жZ¤¥üø„F•æeA¯£ÏfRä<9QGòʾR ijz;<¥‰¤AhºöÍ«§yÈîdæ`ü팟$¤d.-,G­½XIx|?£RÖXs3:Wj;g— &EƒÐÊå&&Ç{‡³õÌœéŠ×[9Òw€Ð tËYp‚‰’UF¥ÅƒŸ{£èn“Tû®Rƒp£Žöļ dk¬)'4¾œ±ÐÉöÄÄÄ–œÆ&5Eó’:˜s/ù 5mZÅÏ E¥Ð2½'¤•^-B[—åke~Vö·âWR¾D&r¾‰P‚öñ³õÄo$#´œIRˆâ $õÿ¼¦ÍÔ;sû¸Çd 4ÝGáYæÚº·±hÈ$Þ°nZY”°ÒŒ ð?£é š—ªþ)ÿ[cPRâ,Ü¡¥)X¹¬¥#šÅ 4=9GùrÓíoÑÜj)ZãŸ0œ£ÛA-ªRp=Ç‹&Gn002(ÊËõJ|ë Óz£(òŒ…Þø ¿vnð‹T¢QV.Ûä-*TÎßAh„ž›e¢VZeùïU]j«HN2 E÷ï‚Öx`ªŽB4£ÓÉ–Së!+Æùû|Îi­¼q”éL ogwµ¾®©\–ïŠOvDcv@hTž}ëD”ö3“Ÿ×sSë¯CƒJ^ó³M­?X¡•«½¢G×òùÙøK¶Gè±ÁO'gíMÒvMå²"v)ÊÁ¡AèzÃWfE Ïš´¥Å“ÿÏz@øyBŠî¡õcqÁqJ™s, ­q ¡4–Ó8œsf)9‚öÍy wõ(ÔôYoeå²| ›ƒx¡AèÚüœðä. ­¿Ö:ùÙù_aHZB;=iÊRà™Êäâݱe ƒá‘ mH¹HV˜\—BhÍrBå=;/„Óä¾ÖÈ·Ž²x%¦f…Y‚FùÀAãd’Œ@ëAh™MÈùßÀ<ÎÅ­O´hãk÷Ä.’‹ù&˜õ—¡p…ð ’—ÁXvü¦%µ ’¼¡gH q ÇR´Ïž 0¡Ahºn"×MkøÙê<®+‰å¯‰pÚ„st‹Ðšô¶J×t‚JÀ]M^ßH'd* dqÍ~ _(]0¾Ëy›$$–¿¨ŸÃjÊÏ¡õsåh E#z>!—~®Œ]«Eh!Üù¢1E÷œZ˜ÓEhÉc¨ìXö ‘ÁÏÔ[g„æËÏÎÕ¦QÞæäÅ>+-O}Õ[ì|.cýËv2Ÿp¹ú¥ý„¡[Úðä%Õz`^Bû¬±¡kStÏ.h$—ôJ¸”ùj”O½…Ä_ÄHc~÷zBÐmË÷4Ü9õždgO®ýÛÌ›düíË ïsS¯CÁñ„¡Aènz×Ë.èu"tЭGèJתC´¯#%Ÿ~‚#ÚWÀÂf$Kzç@è•[`ù™`•ÚÙ±õžd¡' Ëoû7×>~¶žX,u×®ÏEƒÐ to6<Íuà³ABLQqŠ–ƒ™c]Ðò;QîG´lókB9„…œÜK£Ú7WMFèÍLêzËVwlºåœò'‹Ï&’e!Õæ–X„Ö¸2„^ê]ïs¨ >yŸ1¯Z±ºÛÙ\Á#Ô/ª’S j\ÐJ¢®Q¶ ÍÚP˜Ð# aÍ ¯*† {9‚Ëoûü |6Ùz ›˜åÉÅáŸ{ „¡§‚½fÓÔbLÓ"ïz9 Nб©!j€e{~®Q865ïÖY9¢%dÂA+±ÃB|ÕB[E;¡Ÿg.'œÝ“¹b¬óRh’XN…ÐP4 B÷`Rô¥šœîy•ÊÚi¢… ¢É Uð iÏ.èm#—Äj:™ŸçâCýÜ Q&4˜füßࣖ`R»9>I Æ×  })¥ªYw h„îÖ¶Äò†Ï€¯ ¡ƒ.h=BÛ˜2yóEhá4+Ík”s«öõYE*]Î(í^R$Å"t°„“`¨ggUôü¬¥åÖpæ'©·¤Å÷&v„¡{¶?A<V©8IryS`Ôœ¡óãÕûwS$§R,{Öz„–¡%È<éï!ER0>_ÔÌmÕ‘Õ³Fhë_ºåÖb<Ø4–W€Ð ô\ìà¯P"ô’¸BX.'¤æ#t·Uää$5†›`18aj#à´P…Ó¢ÐΈ«!¬"ŒžŸ­?·›¡g”u=[ôå¬kŸÇ¯å"tB£~¡H–àˆ[B+ùù& ú(Y“í‚^'B/²¼\K3ÇQ®Í©ŒÖf]••w|Oñôd¡ÛG•Õ›BÃ6‚ÙG­'`opZ„Ž@hÔ?;½" ´†¦„E—AîÊyN×ç07 BËÑ×Êõžò­¡OkÃWdÕiÃåÜÑÊûÝg„²Eš‹%—iYXT´ÉSÝÅJ× ¡Q·F>X9+ì±0~öÍ5|ëëcýf ­¿~e³9 eª,ý&ÃyÔ=Åx‡uê•È&¡åÈʇ)3Bè`ÅXÁmÕj4ÁêU{BƒÐƒ¢¦0ĪÚçÃTVzÕ/H)Žú½]½ÎZÎëŒÂk„‚ü㌯Ð? ¤<÷_ Bû|Ë„Ö«ÈÆ¿EóT „¡»µ?{F^SKKJ:ëÛ\.lgî£6 R:âh6¥(Z“Ž.Ahä뜾ޥDh}‡³Û/,CÊù=%k3íTpB£äInÐY±„öevz9‚ Wë‚nà¨ñ¹ÚœJ”üœIÓ.DšË$kµ ­qblÄ@£`ì®Ãú<“³Fèà_ƒK ƒóâ6†·3 BÏ¡}®<z/rY„NJ‚v_ØBÃB½16£pÿó*­Y]hu1Á‚Y‚Åë¡M(9¿U$îÐN2ŠéO®ÂíBƒÐ=aì‚n§É²¡²ò¾zž\£8‚eeš!tçQ½!´rùgðì4«;‰…fž ?9y£®®Dhy²?„Ö» åwãûTXþÓ~ŽÌB„îi4î2Ù¢ÊÅaƒÐÂh¶„ ê• ´/—]³@0‚úª7°ï_…ŒÐšÚšA’TúL:äçà¹Ëšë³*MxqÛ‚Ð tov[黉¦hÅ|Z€Ð•.BçQe:vÓ¬'RÖG0ž U¡» ¢`ž Eë9”ÆVX17w„–²aÿÿíÝAz¤º’@a–ÓûßH¯@³Þ‡û ëÙ(üçÓà^—ËåÌé(E4Ñù‡M…þÎŒ]›Š3qŒ¦3H¡ƒ˜|ólàîf6³#.•W,(ô×"»ñç¸:î®Æ%LãÈÉS‚BsúŒé÷ =÷Hžà ÊA—z«—fäŒTv}eR´%þÑþœ2ØTèf‘Å:Ÿ®ÜTè­òße¯ØTr­(ô×D:?iSk\ùíq wÅ=’ÈqÞô»xÇ] ÷ášëfÎÌî®à]oüé ;Nêø{…פºˆn*t­4ÜšaŸZFtæl`&àL¡A¡‘™·K«ol Ó3‚¦±+O8ñ OfŒ_¬ÐÊ⸠‘£¦¯ÍPÓŸwUyࣼ,—ÒÊþ‚Ù8“/ÌHµ{0(›¼¦B'U¶y0sw7#KüÍm~ÞŸ?¢Ðµ˜Oæh`}_PèËŽÖ6>.áÀ®:½]ïÆî…Ý[,1Ói%Vè8ýã…Ϋl¼±ÝÝÔïúsÜ·ÔqBPhS÷@ºK¡—]ß›!èÚRÒ¥Ðs§ßõËAŸ§Ð]kzF¡“‰ëgEZÖ_Ö6q»GSƒªúú««©²ÁAÝø= ±šò ˜^R‰“VyÕ…ÞçäáìîSNÕþEÞÕ³zx-Îtñnž™åϸþ¢­]œ?‰dSèæå"“ÛŠ Ó®€3(4ŽÏÕG:h°à–¡Y?*Sõ¨©ÐÓ}é)Yw)tóRŒÆY"K­°VùïD6‚<„fáè¤B'›†_ÿ&4Å;ådFÇA€B¿ÞŸkGW2:ýWœ’׉lü} »/9®nŸ½?—0‹ã²ß9®’Q+MP[©3ûþŒ³÷¤Í;_z@¡o/j—,Í׋.õ öî_ˆ…ưBo­Â¤AºB¾\Þj¯7ˆ07[\ÅOÿ_¯ÐñNäßÛê:bnV?HÖ‚¾^¶-îfìÚa–f:ǃ:8ÜWKÛVhõ7@¡16'Ç{ðƒ }ûŠßUla@¡ãY÷k‰ÐÉkfJ„ªvhhk•nØîõvW9o ie7co‰Jõ] ]š×O)]%2jûßÝ—¶åz¯°hPht­òAE‚ŒB—ÎÖá·oJº;Øv ÖÙGjÙ]£ÐqÔ¸¥àVßøäÖŒ:“öß1ýÊ/‰ÒIµoÛÂ*påÖºÐÉœ8¤SSèØ™)4(4z(˜²2 g»âØ‹,@…ÞÂê :Ù•²«IæC ²·D èäヮ7ü‚òwt3vÜ€;ˆÇ>B¡ãF3™øLW€½)ê.9PhôÎ]ñd’,j·Z]» ¨Ò‰[zeRj¿£Ðq4l`Sr SJ«—q\ºY鮫‹ÊyÝMS(‰&ƒ¯QèLŠEæTKàÛÉÀ@¡Ñµúwõs€×©V[ej½c¹jÎÛSb—Å1¦Ð™SB™c°™DèÚ»^o×k¹ÒŸ­þ/›–ƒœ„à"©•ãèRèrww•æ3£àTK¦oœdPhtÍÕñ®ÿ¡ ÝL)É4O‰_ày ±OÌâèRè|ävËùs©´9TðâㄽÄUåz네ë×fàŒB-ÂoQè­§Ü\|@¸y^Ø- é3X×ÁÀLIä»Nv'ׂøœZRlºr¤gÉÿGzkÇÏ(tp1¾˜“.}Òr<œFž>gêQÓQò8amž¼qóÔuïšrGþ6|(4¦‡ž¢Ð§3‰:øÄ›«ù°ûÅ=PòiÏ»þXôÀÈ{S8N=Ɉ{ýùç@d£K¡k5ñÖ\€â™jKnPh\cJqï㥺+½m¬)L3weÊ´ü¸,Ža…îjm7l6(,õ’¹Í«½ùûO\Ž{S ùÀ+:H±‹x4ºäNLß¾ƒ^æ¯×Û¬ºC¡A¡±HL „!»[ҡǺfœ¡ÐÇŸé?1‹cL¡kÖÚ•âXt©dA×£ym_`°c-ÉÀû,:ˆ¯f²‰šu’ãù®ÒÐ?¹Læ_·j­á`ЇÅ- [b[n~[A¡BÏ8—Åm’D­ŸÅ1E¡»>Í ÙqœÝ±kÎÍÓ²Éé»ü9yKâq‹æ„¶ë„Ûg{BÇe‚³ÆÁßrË€Bã– ­«·õ]½µŠ<¡›ƒ }ü…”‡”ƒ>I¡KOŠcF¡Kýœi³ÜAóàá¬åø` ;&ð‘é7Hãt:9‡¥däs óæðÞÆ|W*ôßÔÁÌtšï¨˜Ÿœúóš ýëíJÖךõiƉ%QŽ£Ô‹d:¼Äª¼]¶îsÞZ½ùš²,ž³ÔqÂæ+:¢Ð…ÆÅsx²Ù]+~&$—‰îòœé¯nå,ަjN_¶¶V‘ØZ»Þ@tæÁÊÖ™6?ÝŸÉóצßd‰¡LÏ^…¾q Ú*Y[ÉsÇ·¨…Æysxo!²[òÍz Ó (ô©Õ€×™ðw ¶öÑŸ´ríþCµ‚ñòˆþI’ý9¡©Y¾µ鳓ps#ÿ&….¹ž¹Á¢Ã¢A¡±æÞUˆlÁSÏÍN+y—;¯ð"½Ñ·ôˆó:Ù^-(þ\[aãgIK9ûü yFrûøu9=B¡ãÉg÷E DƒBãA^=Pâ~q…NÊÌI¯n5…Π')tPÕ6¯ÐA‘ØàÁJÓ¢·y tÈ3Ž+ôîI *8£·È,´å6ïÒ¡A¡ñ8n&x,¨Ðc!èæÑ¶¹ 5ôçÌãÔ鑟ø$T-«9Hr®¥•æ{¢Å­..¸ÁŸ“3ss~^_¡ƒÝks¦r[BcÙ™<X*‘£iÈñ7ìF)¿‚®µK›¨Ðqïždaç¤B—\‚h© ý9ÇŸ·ÑŸÆ (tIW"Ý}„´{G¬´Év毷ËUYé8arþL–ïΑM|u«­\A™¬Ì§ükéê/Hu©'rüúÚ»|þ{ð£Ÿ"ã_˜oóGŒ·ÖL•™ÄžÒ5èE õzw¢Ûˆ?'v)ôÜW÷ˆÈÏy iß“éã„cÝë6M!Ÿ~mãòÜ»?ÚêÏŒvOÂfÐ|-!Ïz4³y¦¿š?×27b…~«E¿l çŠô£ƒ9]qžó^ïškVìÏ¥u/ÿrº9b‘î=N”϶èföHïË8øÏŸ)ôß¿•QèŸJvÇOå¦xeÌÇ PhàÈü¹ÂÇýy«´hOvÍž¢ÐÃÇ k&ßì¨Ø<Ú|E%\2{´f}˜äµ§OYÛ¨?ÿ´òœ3ùÒoRèÝv«×$(4‹â:“ç] ]3Õæ)ÂÝÿVè¤Éæ\SèÖ|ÞFaw•ØÚõŸfxyʵ'jón$»z÷F.=…î_|]íîÜJ ÐÀ°@ÞèÏ·(t¦ÞuF¡3¯nÊæ"> dw$E7è'¿o™Ÿ,Ø…x WG¸£ãÇ:¿Júÿ D¿/ ¼Áݧ Ð@¯@Þ¨Ð÷ús&…²™=W¡»BбBïÊIF¡›]83ý7ï&ŸfRn2ÿ'h¶°_³¤ÿoxíaÓ²Ï(A¡)4÷ç»,zô€Bg–˜±Õ츟%,­ŠÐñª)É< ÓÃÒüemN& (ôîLî—m,{ªB—ô醻›ƒBShPèÕºŒ&rt)ôØëÊw|ˆ:NìŒE=_1³ì7—ÇÊJÖ%o]?¤VÀ|â\lßW,1~pÖu¢k¿ Ph|Á¢ïª†q—?—Ñã„g+tWLJ@¡3óìãמ¡^¶^ß(cÍOKüirZ8þ)7÷¤_Pèö»*Ý5“d Ká5þ\n-µ{š©öÁÏVèxß‘Tè`éÜ=gÔÌÖÈ/Ü¥¿>Év_¯ l½3› ®ûeÖŠ­Uóù݉»MK›3U¾‘öF Ðø²Hß¹]¡k>Y« ]:+ÄT·ÎtI'r$º$ G÷¾ŸÃôn!nKö þÜUB¹· üp.tþj?¾i¶[[~–EShPhà^_}Š?éa…δVI*t,ÀÍs[µ¯iÆ=w»$ðµ¬BOÙ§gJ®´‹/aó‘(ôÀ›`? Üå«‹(tm• z©$Ñ-!v¥^…þåÒ%ñ·75ü)´h ½ŽE7/­®ì¹;¸ÞñÅYÜá4ùY$#îPhà; ¤CÇ ?RwD3±Ü ·à°B—y­aæ~â_·ß,Íœ‡±btµ=àÙwýëgÚ^…. É3(4ÀŸK+]*™Æ')tÒB“ ]Z9#Aêi™—Îaí¾÷®™µ(Vìú9U¡3{jw(4ðq…®ùsí{W.Áp"GFnÿ]ÈNRèaÙˆºÌˆE[¾o¿w¦$Õħ\ÏPèï<ň³ Ç,ú• A¡ }ð7 ²ÏS踗ß,….‰f¥Uìë âNO·ÆÓú`â»´ÿqþ\F+äÔ6Ý’©@¡þ\óçZ!ÙLï¿Þטéwp±B”ŒB³è—Yôôôô‹„BLÂ'GzA¡Ï*t-ºÔSÿ–¹ˆK.ÉZsº$z|+4‹~ßí|ä~2­èÔ@ô‹/¿Y ]‡SøŽBï[þÛ½:îo’,m7å€U&©8>x˜, û÷?Ž$rä…Ùúû‘>r…Ç—ýt…þHoF¡,ºë<5@¡éþ|—8õ&iÞåÏ¥~D.8zG¡›'k–§­Õ¯0Pîøç§ü’¿À….ÑæÖ×O*jW޵Ý|îdÛ•–œ¦\Ï ÐÀÅëæ5sïß3€¥4Þ-ÓÑTèLdf Aa*/õœäÏIz½E¡Yôý¹´*ŸSè±÷9.Ô3 Ðš‚BïVèLrEPºì…šWPè¸bsŒqD¡Ô+‹ÿ.‹æÏW*t­Ž%….ýu9\Ï ÐÀõ«çÓoæcÐ௙˜ê©‰™¦'A/òDŽí&…fÑ_ög }½B»ã@¡õWÏ BЙc/»užÿJòn6róÈÞ€BgŽ&›žÄY+AX>sðp¢BçÍJàë¡7þðfjºBÇÅÒ¿¯ Ð Ð…>®Ðµõ´ùâ$Š]Ù~Bºuºqð†Ç¯7øïUè"ýòÉòœÿÔ(ô Í¢A¡§Lé—YtsÞÂ8sR¡›Þ;w'R*©Ú¥¿!øyŸx2ä£Äš·|þSËwúž;Qèó6Ñ…¦‹ßyós-cëAǰµè•œÏPèLûÂ]…>õ³˜¢ÐJѾÀŸ›Ÿ…¾f¾m'ô¸øšBÇuêšëé–+¼œùçVPèd^Ç©keoEß &F¡)ôÁO<îØòM….­²<î2Ph`©)ý¤iyø©ñn<¶Ù¶ûWQ»u:ßÓðìµr–B[ÙßaÑGü™BÏšoc»¶W…ž9i±îZ²kY±þ:9X«5··Z`™2µï9i­xíqr¦çË»ñ›ŸZðiNœ72MßtQQhPh€BŸ¡Ðùô…žæ $$Y,ú¡ ÝÔ-,.Ò‚M¡Ï˜o›…zø3(4ðÎLþå–Dê`l'rÌ œnaƒÅL/²|"ÇËLGn؉SG²VÞ×:(ïq(4ð5…޹ÁqºW¡K¢šÇ”×Uó-ѯð‚µr8ܪýAn–m§Ðc[× È|œñå6…¾£ÐµÉ¿©”™Óë±BïŠ÷¬L‰ø÷¯•§þÛa°¶¹8ïtçð‡nù¦Ð³¦Ž|¡7)tfö <ÈŸ¯_§’’9°¼^£Ðq{—æŸ6%|Í­“¥üƒ™+Æî O)tíØß¯PhPh`åHÈíjT[)ºº~(tm;c Ðôdvô: Í¢¿3EäN¼Š^©Ð£ÍMaæÏ ÐÀSVÆ[fé®ðK\<ö¯$—½„êÚÁœ‰‰[.¢N¡ñĽvÉUŠ»Šz»]?qÊM*´“ƒ ÐÀjóy³.ñRë˯tÁÝŽK¡K%‰zX¡k™ÌÉ÷-熎'²ZÓ?>¼$ºBоä2iÉSÆ…™ÌNoÔ4WœZ0yX¡Ë¤'ŵóŒI…¾¾z……¾qÊMž)(4@¡{u4Ÿ‰«áýûÍ¥ybïÕðâ ç•SÀ¦‘ƒ ÝÕ™ô• ]Â:B…ÖŸÒ<­ó+¼,@qFJ—BO\¼¶3 },¥ÐýoÊs¦Z…¾l; PhàÆEp5.•º]mþ’ =½Máqû}„B{ôl>v5ÛÄ¿O¡Ý) ÐÀËDº¬EÜíÄÝ A7º„Õ<&šêI§§XSZlíËþ<|9‚~Bÿšr ¼Ã¢—Šìf•4OÛe9JåDáñÞmRÓà Óûø‡u¼¨Öz@¡ó!è—)4@¡·.ˆË*ô®7ÆgØoWèY{“௬eÝ%6ÍI#y5Rh€BoZ WP 8œ¤aÔ¾9£Ðçm%fö›?gʵ>¨ÐE"ÇWç#›IÓ™]f…(tÍ{[ g:8Q¸øaŸ|pïH=Ç 1|Mæ7S ÐÀû,úúµ)î™/¬y…N64_V{Ý8óýÍ„<›F’›ñ4 Ph`Y7»1Џ¥;¼ kðýÉòÑ‹¯ÎcU{Ÿ§3ܮнŸPhàv‘^gåmæll‰"µªq7™7)tííb&¸f/<0½¸P `X¡3>¼µš*Ž)ô‚ ô¬rÐÉÔ`øê>cH¡ àˆEo-…Î÷%Käx±Bÿ«:ɸ4pp›Ö{Ô‚B@~Íýןk>“3 DÃÏå8©ƒä6ÚšØ'-šBÀ€ÎåCÐ] ÿ+‹¯Ñ¿öç™y°yq‰b…fÑ…е\'rüý9z÷„f³©:0lÑþL¡ `ÌŸK¢ …žøVŸÝ±Ÿº£»va Ð–Ú䪚Lâ=¢ÐK­Ñ+tI”1¦ÜÝÍïéý: |jyMV„ÞýbÓ› ]ÖDÿíT~¶B—•š¿ãé7øØ ÐûuøÚ KÚÇúïï|B‰¸J¡kº¾€BŸõçLÑæ’®A(ôîY³ÂÛ½ -܇+ýùß‹­ëëÞj€Búb…Dq…¥ùïïs™B×6…(4…–²èfÓ“|ÆE^¡¿}u¾]¡“ü9¾%r@¼€fúÄŠã\è¸]Ë:9 É\n ç*´ã„…pD¤c{ìJö(õî„[ÿób œ¤ÐÁ Pµ(4€F'@Æ]Bjçã[^*ßòJ…¦%¸ÅŸíÝ `Š<ÿzJ8mìÏÉŸ³UR8¾£ÐŽƒB ÐÀ£WÞÞ³EùŸ«ø‚%‘ƒÌðé?Ù-ÜåÏ Ð&úó_ÅÝ=[Ôûs2®¸HT6¨OräWŠý™EƒB ÐÀ;ú_³m®¼*ˆô:*B¡ñJ…v±À\‹ÖÖ­õ§AâÇSÒ}¯Qè"‘÷ù3…(4€)ëo3J|ä{žµX…þ¦+´ã„ Ð(4ð‘þ4ŸÏ¼Z·ÁY }D<âwÌå‡+ý™BÀ5kt2q·VúA¢x†BódPh ÐI…~b®ï\…–­ €B,º™ÈÑkÝëÛÈA…vf«ù3…(4€ËVêL4•BþÌ¢±ˆB» àz‘N.ÍO À6ºK?(4ôg Ph+¯éOLž«ÐE"(4  µ.ת?ÚI*´ã„ Ð(4€‹ât…~â>ïög Phë¬æïHWh“¤ Ð(4€éþüh‹Î(4Á£ýÙ Phú-¡ÐxB»z `M‹~YšBƒB ÐÎXÐ_pœBãõþìê(4€5Eú•f²[¬Ï' €B`&ïög—.@¡€Bã;ç¬KÎ¥ Ph Ðø‚(4@¡ M¡ Ph€B Ð…¦Ð…(4@¡ Ph€BSh€B Ð…(4…(4@¡ Ph€BšB Ð…(4ðz…þÏŸ†a†a†ÿùßÿ£Ð†a†a†A¡ Ã0 Ã0 ƒB†a†a…6 Ã0 Ã0 m†a†aQèÿü‡a†a†a™±èäÿÃ:”= endstream endobj 633 0 obj << /Length 2900 /Filter /FlateDecode >> stream xÚ­YËrÛÆÝû+´«Lóà$ÛñC²Q‰+‰“*X‚(Ú" E9Š÷×o¿f’ “EÀ™žWϙӧGçO~xiݲ©±^œ_(mÓ"ÓyæS¥Ëƒó˃ߓ³új¢’ºÃÍE Õäó7?¼,Ê´ôÚcK›–…:˜jí·û,Õ“©-Ëä4LµÕÉá ^V ü¯°¨ôÉQ OŸ´7Ø3Ô€I.áýþšj¹€Ç J5í?±‹ún¢‹äÛDçI‹ÓûÚ›}ÃfwðwÍ¿WØK…£×SøwE«¡?ªFËöÞ¡'4jç8zÊëôj°P“¹4/ìAÆ‹üpý@ƒª„çétRa+pE™¥|9U*-có绞ËS§tèîédjŒNTá>e.CÂSÁó™uÞKµÎ2“Ê(:-K ƒ@‡ÚõŽ×Ç›<Ûp<öRdÉLªŽaá*áÅ£K:\Í2úO¬©é%¶Pɉ´ü0)L"ïo±g ý”)˜ßÔ¹<9Âß½_kÜ`ìb°Áè;Ù`¬ì®P¹Ô[^ì)ØE»„eBçØ¾]ã:nd+š9Ì ×:yÝ ‰O^¤ü¤‰’%M–gm™¼‘Ú´íôzІäŒKtK#–Á8ìÛÞúLž3ô ®´nd&÷ç“j%£áš²ÍåÔ—bI(¤ŸŽ!<á|^-­hóBÀ‡Ž¸ãQàèU¿Á½ƒ ùСYûY\…&ËÞlÑðó]Û#锨;n>“Ó¸ —È×»°ÖY‘z§›2rg·2kêyN¤2jW¦> ¨ö=ª úìΪä¨B—UsœÌ ®ú —G°Âû!ÙfÉi÷¢Ã½òà ¤ š|©‰?¨Å#?>tD¶%]µwvRu0(•½«içz"úÊ&‡ Ñ ÑÃBöiŒPÆ~Œ#7ÍæŽ¶Íï:“*¿ÅZ yèHù£Ë·”e!~ö°EVï’‡7Ÿ£Ÿ2E'^‘,p‘÷¸\Ø<*"há˱9”çùu‹ÐªV£Ëö6Í}$¾×§«ÑAmdÅБ‚y\“'ˆãv}PøÔk3@š·>ù(gŠÂÊä°tÒUÁûõöë¤Ð}èx*胃VffsGÀkJ¼7l œN¼FËF|‰ƒVën¢ËäS¦ÍÄæpR`.³Ñè$U:Ú~©?¾Fo´ë­á*°×Áâ¹{ôÓBŽ420{‹ºp† ”+‘úà¸@p ¡lµ—}1[£ðààƒ_ClÄ!J3ŽêCÒÇÂ%âjë.¢…/Äø5¿_ÀÆÃR±¨kÅ0ŒÊ‘7þ$°,—U }Š9ª¾!’ã.qå4›14n1ò‘ôÖM]BzX^ŒK :ªØ>‹:r#º „Öc­Œê¹Ï ºò2-Ìî‘ô. Ú¢$E±µìô2D2 »},Dnõ]n«v`s$63æ6Ø“uð×jEO ‘¢qèø1ÕŸ^/$ÏšäG ABüEíö+¶ ¤ És^ø†ˆ39¾êiõï0ò«ËQ­Íp u ‚—Uˆ?|¿!F€vþ{è­V^b¬CŽÎòÔ—1*¿»ÃÙH8ÌSåò8´É•©É·bË€H®2ýçÄ!¿’ráÔèÔiÑ×À)N)ՠ㧃ºC jŸ2“M5Œjd‹úUC\Þd7-ï±hǘnÆ|F[rˆÅç(¡¦T9EZœÉj?*fh©i‚\½h8Ë÷Í|/¨Ðn“@<ÄW+®b<ÐëYЇ *;¦#0ÝKl´Û,trúÞ%?ö€îç ^„`r÷Ð^–â"#¼!ŠCÛBŠà8Ÿç9ó‡9ÇG莥1Ê/±ŽÄDI ÚÍÇc"do©ÍÌpyÙ³‘@ÍšüÔ˜¨Ò—A†Y›zgv#]1Ø£9àã“÷Ÿ6ŸNê¨O2k<²j —¼ïdqó W\.‚ 5yOÛÞ¸ Ú÷Ì"Û¬Ð\an'fÜO…·ø›¸»EI}²†NcÛm±ÅÕ )ff,n2/îÃf¬-w³c¡Á Š…\çù×I~Q«Æ$?÷YK,Qá(à %aZ#èV½¦ ÚÙù´Ðùî™-‡{–Ú+ìxIù%t«–¢ÌQÃÄÔÏJƧ蕓@i1Ûƒsòº‰W]Ìøa ô#dßóõMØwTýÜ«¯¤{P—ûŽ2ÞeLk©;–þ+ä!ìÆ(6¡ú¶“Ö`¬¸b݈R#ák{.XbÓËA%ˆILá½iC0H é1Ed‹c^ Ìg}7݈˜"¡õ¸l¹PÃfúwÌŽåL˜Ï]7 %”f[Î…ŒÁö"ÎS†,Œ< …¬£vCe?‚ œ«j`³Rþƒi–ZЬÿ'ò ¨º9øŠwÜèÔãÚÿ¡Ù×^UHÜ_ËÐ3QQ÷.¸g®Ìч-zŠxÄK~¥,YæUÕ}‘[,@ÙeœÔ$.šá€bÒEœOÓï³z>•# »ÜŠÈ4¯­ƒa(Üì;?á‰ÆAQãûÑ™kŽ’¹BùiÔQÓ£€VË{*§ëäOJB褗öÙõ7HÅì‘Ý[°úR=ÚX«hØÎm»¨¨§z(˜ ÇU>¹L€>üˆ¢Vánò¥0ÙIÀ ÈÛóPF’a.DøSÏ‘¸ßkNÈz #˜ÉY…ã“Ä2›Gž¶…:¨+ôs´Èð×ÃEŒNßaFjÜ'mqÅ[WfígD©QEè*>Xw–<ãÛ]˜Ôhÿï„î6m€Ð%¥‘êþùž9¢Ô4YZÚ|„9ôPlfž·©jÐãVÛXLÙöúZhħÔËí„\ÐÁsF¬Úμ›Þ›äìÅ/(+Ož² ¦¶Y!1+D4ŠYÎaƒÃs¸-­¹¦îõåØÌAEÖÑÑKî=o»>áA~¢*¾sòK¢ÁU<ªÐšmH!ùa.>ЩXÑŒ]RAŸt(/°G\ÜI\&ñKR•À1zúAqø¬O|èè/XûÛ‹pÎ6^˜=Hô¡KË–ôûZ– ‘Š„—\/‚È% ,Ñ0è¬1QÚATn-â‡âQ—‚»Á˜².-Ë‘G…»Æx’U/àõŒž.°%ˆÕz~-ü¡ŠpŒF¯¤Ñó (Ò\SrlEÖ ÉËüu¸[A+à–'†Â–!Š iÛF€(çê6î,&Õwį*Vð¼ä)ßhN·KÆ \ÓðÀ%° ™^@”vû´ÔíÕz£ óYšÙHBÏ®á®{03\×]KÒìŸÅÒ¢ ¤Ý¹Ú¾Ô)ÌöçÁ§=.‘]™‘¯3Ê?Ï@„8¥´9Äx/^òAH9þ øî*)!«Ó¡«â’­]‘%o,úrûú¦ï,bz{%½æPÃÍc[é÷êÿÂî(aý"uj+§Úã2;ÈÐ/ük¹ÇÁÚ{Š øîøƒPp~3„öžkx þò1aþnU–è<`E å ÐÔ£rÆ«L…ûemlšåc¨ 7̯It:V²KôÔ:|˹ç鉌uZów¯‚I =”2g IfÉäØ`& Þ.dÍTÞßb'…àõ·kŽÇxË\â7¼´ýîÍá.gÕsÂ>ZÚ€ˆÜåˆÆ{)âßíVl¯ùè#/Í€øí’«×áƒÁ“HkѳŸd×€œ­Kj,’$ޅᦄ»yOhMºˆ8ûÜ÷/xÀãŒEú®¼ýeH{õ¨sÛS—fÂi(`Ðxe>(o¬zòâüÉÿ à€E endstream endobj 638 0 obj << /Length 1499 /Filter /FlateDecode >> stream xÚåX[oÛ6~ï¯ð2`€HE]¬C‘tM× ÉºÆ°µymÅñj[ž$'Íšý÷-*±SKÖ=È"ÅsýÎ…¤õ{™Ÿ%aÒœ÷Tùý ì¥Aâ«0ë Æ½7ÎW9*9s½(ËœWn_;¾ëé4søîÎ),]/LF³üÌáÉû°ž)ç…П^À×¢BxJâ¹ðó¦D:Ç0±¿È8¿È0›ѯòùµP¾¼vÃ>KŠŸZÞ×SröZì:ŠCß=üØ ?JtÏSÊÏâ˜}äÓ,FÇÞ·H4 €@„±ŸfÚ°BÊ+á?)W‡Î•«aP½ÃJ(o9å`4°Œ±™çTTwÐÈLŠŽÁ… Y£íÔåÈNw„Îr]Ç—&ìEË“ó U¯¤‰â¹ È'ÓŒ9ç%¹PÐò¶®ó²âU ÈJåÒ`Ö^¡!ää;¦´1 @ÃS¨-B!N»0Ø1=tÕRòðDêu€:ñãhÇÐv¢H3Œ¨^ë»~Ã7ƒ0D‘[û?ÄVçc^œ.øMö½i BM(sjz¸?¬Hï$_U¼D}‘}g­’âÏÑ»“#jr±âÎÒ~õÙ#À‹âÈ©¯¥¯›MUâ´\É~qÎT܇+Ž"’Ô,Ã4ps •áT`&XLŒ.–PàFXRLAñ/8Ýø×¼Y )„€lG—;ù’ð.+«##TVÝ4 2HðÚ"š­7kÜÖê'›“+XklsIéR½œ¼q ‰ý¼±­ Ynöe"£%#áÊ‚mÁÞâò¾¶šh±× ¿ž‰Esy ¡j>&D9Ãóí¦d‹+IØO·{H.`L,0¨{Lv*Ÿ—i.de Ðm ¼4ê,i·-•l¸[ªul,|aQHKÈ× }Šu·›‹%S¡‹ˆJÖjy¦Â³`1xèÜQã+Y*©Á0ÉP$š(6´§*çl6÷e†•·ˆí×݈5¢Þ$Ëd›ŠBf§ˆ¡zD~ô»FÜ´~|ÕúñïMÛP–*éÍ{š""X‘à xß<°6z}Ó™=,nŸÓî›¶{KŽ[1ÏEöìsÅÿƒôºý‡”ŒþS²kÏÒpýÅ{:-|ažÞíXµì•séèÍ×cKòËõ®Æœ“îÑë2ÁÆgö¿ÄÇt@oã>ûñUfvò§ü:àפÃHŸwcçÖ™gΟ¬$N×7Žöx+ÿ&àÐV.-/ÛKÂ]CèzÀÖniý;œÖ¢TÅöIjÿ¾Óê}±°NdkôÖ3½?ˆ—ÖÞ´’¥­Ní~¶„;f’néùúÕ"bŸ=A­´¾7mèM™ »~<Ýv!Ù|(í\H: ‘õ8­EÁŸ2 ¹dwRh$ùfÇzdÁ^µ9#¡ÚY™"~æÝ¤µ’hrNI©Áû³ñ¾ûà¦ìÙ]ýŽÎwÍ»õ']’øý4‹³Ôï'ò‡D¬‘òÑóÁ£rzOˆ endstream endobj 642 0 obj << /Length 1037 /Filter /FlateDecode >> stream xÚíYKsÓ0¾÷W„0Ã8CíZ~¦ÃPh¡Ê¡¹•Lâ¤8.©Û”iøïh¥•-ÇÏ&N”ƒcY+í÷iwõÚ öN¼N_ë;†ÓŒ;İ4O7:®îhÄèw£Î…2¸ê%試m(Á=-Çð=§?£~¸dL‹Ñ"¤¿~,×ð2ë^÷TÃ:ÚhÆ &ˆ{†§,{†Ëe?ésÃÅSgôçVà¡ÄèÇéL£¹¤4FIˆ¬oh°] AôM'”}µw9øÒÑ;*!Zß¶ù…‚hh&E›x$Ñ—Ž…Ê®á#´†>k‹ŒM“UbÚHa.ŒHë}„G0dx"°ÊðˆœØ®ä/JÛ0µ>!œöð’u& 7¨êzv_9ì©¶a*Ÿ±™Ï€yyÁEBÃá3s³1lFEÆTTz‚þaÎAüyb&^ñ×ìâ`«¸N QþÐç-c©Ñ,³gz¦0K™ûhµ‰dMp@—7;Çêk©©Í¢Ô’ mŒ¢aF,´ ¾k±WcL×4mÁø“d"xŸ!^˜¶!Û#üŒÐ²ÂT ù˜>÷¨b‘„4Rb%£©ð¨’`—YÇ'œ<)ƒØž;]•H¿™QsÓÀá$V=2@Qˆ´"É+@ÿëôÿiŠß~.& l²ªwëW 'å:ëø×ë-œ ›SUMÇqÁ{ÄvI ÑP¶Ò­ÒP}‘†j;xza4uÙFeëm¢ÉŠ S¼Yø< ½^e¾ÚµÛ.y¯Zæ]¹Om7»T“Xf2ºR¿YC´Xs*Žy…0Dùˆ2X˜.ùŒq\M·ÍìhvÀ¸ƒî·©ÅÓCµˆæ:féz p~ïÚÊÎó2rˆX?žÔÈÏ,’oðôâ‰+Þµ±mC3tëŸ1¶¤ù49êòž“ìU+ïš"S”¸föä®qþ»¦Ü5IÂõL³WƼÑK@o ½6iŸzÖ&ôV§¤æ±ÎOJÒ-ô"¥»J¢ñðQÐðiÞã²*›Ðþm“ánf°¢Ãëœg¿ä%àuk¥`U‹îY[£d˜­Q1q¿m)&Wu‘µûXq-Üwüõ> &¡_IC¿•Ö–E“¬ËMa‚õ—x &7#'ÖŽì5ÉtdUó|^gŒtx¶‹UÅ8 l1“vÌhF|‚¢Æ´ãÝ!ò¨ˆË&WޏAòÏñHfùÛ/Œaœ.‹‘œÌË{xZ½ŠÝI‘t‹¢ÊA¸^ÎäfÀ­,‰ÐüKBIÖ çŽ¡Œ‹µKoí_$ÇÑ<NKV_³,ÎØ¶ áÞñ`ï/fÀÛ endstream endobj 547 0 obj << /Type /ObjStm /N 100 /First 882 /Length 2319 /Filter /FlateDecode >> stream xÚíZ[sÛ6~ׯÀcü°¸ãèx:“Ø›43i›µÓiw]O†–h‡‰$ª•Ë¿ßïPŽ«›mÚrw;?ƒƒs? ƒ÷B‹à³0ÚŠ´°6ãi„3ün…süô¸® (óFÕõ¸ü úã›MŠ~yÚEÁ\¯Çvìï¢Ç¸Ué[Òã¡8 mº=ê·ÿiÑɄȃ“&=ž‡×G+=âòœô>+À­à÷÷¡‰„ô›ÛYR¿ý|ö¾ì/†^ŽÚäà(ñ†Äàü(Œ¡\6¥z}ø .?7âtÕÖ¹€…{€¥žŽ!KV$W LÒÚÊíø’ù½ªÆ`"õtPNÛÌ©úA½T'¼¾>ešÀ÷‰ÍFBÌHÉ$r°ÓNêÈ™9Jk#àž¶Â9êEý¦û“óêb>-¥1{,˜%u]Ö—É`«î¶©C=ç"yfñ@y´›ôÓ¦ôé/J!ÜfÂß'ÌD·-ÌDÿ­…Šw3+À@ðÌq¨˜îe¸ ßͲcÞ°ìwŒ+±-®Ú ÁÆCYriï\fL$™°WBõ(3Ù­áe†‰ð2–ÃË Û–E/W˶*E2ˆIìZ™ jà¥ó§W|´l¨§ûû-~õ´]X«_Ž^òõä]ÓL¾Sjv6Êzz¡k˜+«@OÊ~uçâx}öã«·¯`´Ã·2î€Âfê_óbX5ùX¾El(‡³·¿?ù¿ïí­FΘ:FÎmÀ­í’Ut'`ÊNúܳK!_gé¨É¾ôç™÷‚æòe9´/Eóµ8s3Þîä i3Χ{ÅyõbZÏ'í¾vÍ9Ò‚BÞß.9ÇÂj“`5o¦Å‘†ƒá¡ŽÕaù±ê—G/žÁíE3—÷t)¶íe—J2XÞ“Œ¼ L(x uïûØVŸêWM)‡5âãY1¿x§wñ-g´Œ¼w^ò.Õû$=Óãa‚éîÞõéÓ'yV!ÖOÊY3ýÂŽ¶æé.ÁzxaÃ6 ºÆ„—Lð«]1ô%Þàùüã–Â`°âƒÛL;Ç ÓÎáL{I^™v*ÚÖê´5Iðн*¨ùXÂ=„\Hûu¹ð ÑäBšnvy>ýxÐG_<ÓåÓîQ×Ê `$/A½ò癀²(óQ{–6ÄëË ³¢†Õûœv©‚ Xþ*DXÖ…3Ë2ðYzÔÒš|ç*hR¼/?Èjt>’p¾Aýa.'ï&{;ï€U%þFäP­9Ðeú‹©»{v ^froa\…a›H%¦•äþº‘mè^-®ß¼—ZFIIüÅ Åo0vG÷L¿Ø¯Ù‡©šÜÆq$ º‡³/ÉÄÙ;DÆuàVÚxj²Ý€ â¶”;” º°Õ²+ØqJ“LG`ˆ˜»b6Vz Ý€9³êÈŸwAF›:k¿y†~°C©pp-;"¶É·‡EÝ€aªÚtäÏdEÛQÌ(eôþÎ.ÎïíNç|äÒ¦ÃÒ®{‡Íôð-áq0ô9:óÉBð¾ü)Ü5ìþá€üæ6ÅëÅîÍCn³¯çê$/ù/ŽÇ{Çû)dÆ?<^yµREU‡§Ï¹}g¤÷Çû÷Gü?ùkBb"Ùöƒ HPÜŽ6J+rÜðÑÈØ¦kâ~þ-Mr¶ŠH ˜žÚ‰h¥å⧯¸MZ¶¿„aÃ?­-š‹{ÔIòïƒ Ø–å—íÀÿ* Ú¾/zv‰öë}©Çk½Ò»2³í·™ùËÞ_w9{«fN}"¦(…Kzc‘˜ë@mŽeÈŒöþ g‡D§ endstream endobj 666 0 obj << /Length1 1976 /Length2 14979 /Length3 0 /Length 16198 /Filter /FlateDecode >> stream xÚõPÝËò ãîîl4¸»»»;A6îîîîîn‚Cp îîšàþ8rï9÷ÿ}UïU›ßê^ÝÓk¦{†‚DI•^ØÔÞ(aoçBÏÌÀÄ•Ñbf01±201±ÀQP¨YºØÿc‡£Ð:9[ÚÛñü‹!ê4rù°‰¹|åíí2®6fV33'€…‰‰û?D{'€˜‘›¥)@ž cot†£µwðt²4·pùXç?Ÿ*j377'ÝŸáa[ “¥‰‘@ÞÈÅhû±¢‰‘ @ÕÞÄèâù?)¨ø,\\xÝÝÝŒlį̀éî–. 3ÐÉ h øC2@ÁÈø·48 €š…¥ó_U{3w#' àÃ`ci´sþqµ3:>V¨JË€v‘åþ"ÐþÞ3óÓýýG"K»?ƒLLìmŒì<-íÌf–6@€¢„ƒ‹‡ ÀÈÎô¢‘³ýG¼‘›‘¥‘ñáÏÒÂÊ£…ës6q²tpqfp¶´ùC#ãi>¶YÜÎTÔÞÖhçâ ÷G}b–N@“}÷düûp­íìÝí¼ÿƒÌ,íLÍþaêêÀ¨ngéè ”û›óa‚ûÇft°311qrp€Ž ‡‰ã ¨y:ÿt2ÿaþÐàëí`ï0ûôµ4~üƒóv6r\œ\¾Þÿvü/‚cf˜Zš¸Œæ–vpÿdÿ0ÍþÂçïdéÐeúh?fÓÿýÒÿè0S{;Ïè1£ª¢¨„ºíß’ÿë±÷xÓ³sèYØ™ÌÌlÎßÿÍ£ddùwÿŠ•¶3³pÿUîÇ>ý§d·¿{€êï¡üo.ûΨþit=&v&“æÿÏíþgÈÿ¿.ÿ#Ëÿk£ÿߊ$\mlþôSýEøÿñÙZÚxþÍøè\W—)·ÿ˜»ÿKÕþ5º"ö6¦ÿ×'íbô1 Âvæ6ÿÝFKg K ©’¥‹‰Å_íò—]ýA³±´*Ù;[þqµè™™˜þïcºL¬?®çžüÓüžÿ]RÜÎÄÞô)cù8a#''#O¸Cþ@ìoæq4züÙÅF;{—À‡8_€™½Ü'ÊÁ`þÃôâ0Šüƒ8Œ¢ÿEœ¬Fé€QῈ‹ À¨ôú`ªþƒØŒjÿEÜ9þAYŒÿAÜF“ÿ¢?vƒÑô_Àü/dÿXÃÌÒí_–ƒ½«Ó¿>(æÿ‚uXü²}è¶ðt°ø¸ßþa|Ø,ÿ?6Ãê_ð£rëÁÒmþ?j·ý~ ã¿2Œ<£ý?kp?…¹?jwøÇýëðq/ÛÙÍ\þ±2ÿmýk þ‰ýõ/ÑÌœÿÙ”?Ðí_"Ù?èÎWË?*ÿI÷1 Œ.NÀíëG5.îöÿ øØ×Á1îÿ@–ú¿²³|äóüþOך¸:}(qùó^ùhéÿà? Ðh·¼`oÂbÕòý¡Nß~’–b_3šÞ{Ù©Óõ :™º6+hÓéN8y¤emWœêVh…øÕû´­ :¼=I¹ãÙçÅ0Aef¿niëÇTÑ©pã !,½šÐÏ«£F 5xh· Ež£+’Rúƒû€¤Gã`ÅêxØÂ¾òA-‡,üKÅOúõ/z¥sùÆÙó8¤P.ô„04hWÈs·w³h¹SïÄ2 ´p¾g1¬ÅÞ:[,±ó^ëUj,Î=¸ä¸:8„à·hã3”Þ"G)2Ø‹Þe%_6ùs8#ã†WBçe5pIý”pœBÊéù3äºÑÉ{rÝM2l4L¦”Ÿˆa¼C)Ê$Í’jÈFÊ ³ ,ý_ÉUµ@Mi;{‰zÎ.Ô»i|ãpx˜c'm‰îøÑwº²ý8^¡+f$å “Í@6ÈV±~N¨æûŠ«Œ8Ç4yë¾ç3”ÜÓ[[…û”¸Øêmð À{pa+M>+5%]ž¿wÇ[Œè6×aÜbO£vqGìN»°¼±&µpþ ¡“fÁA:¯Ìæ–IÛdšÇ°u&PÓœV~2Õ:#!˜Dš}Íî:¯\U¾@;c;ªDKÅÀëÏF1¤;øNOfîq]äðØó´ªã¹‰%éèÚ¦05Ï®ø/°¥Â4Ûܰ 'Îcí»ÈñùQkf„V¹Ëq›£)Áô:Zl+dLæaõX¹ÕÌP‡^ê;×;ª¾N×…’½Ä/z[“_!udý•¤®œ$2ùîÅe ž3xñ·füNË4fëaädh g`¬f›và\Þ´Ýd— ˆ;z®0érWÊŽ±|‰Ò ¡x'ÜFß¡ 7>QžHˆµrK’it? ¹YG¸|c'ðñªìÖ)°ÌäÍQ¨GP”%fäzÂ%½‚™A)—^áìZ ­Ì)ÌÆv9Kq祙ٰa‡ï†—@ÑÜ{bU%"y+b¡i>Ã‡š›øŒÿ…‹G+¾=ð·z%ô·é‚A]÷J0¼qXJÃÏ¥¸3å¹]uΦR@‰’ÔOXßhœŽNª™rωmE£…®èÆŽ%§˜70w¼˜!Cë%C3Ãrž©L Re¼Èa[¡’‘غo°tuØ9m“ûD¿Ï¨¡ËAMÒŸö®Ô*ýüþÄ6È ™ìŽÞRµ·ê£ôÀ"rb¾Öä~mlÝ#Q—¨PUjfÅk*HoCJËqVIØgvçýx‹Jó¸qqžŠ;N§ª¼‡ÄRÒQð\Eù©Ì®Wïsƒ¾rtH0ÏÒÎz[‡ ®“1w˜­þ÷«_t§Œ+eÅzÚäxº´êâQd?¾}‘ÏW<£Bœj`{Ù–«Ý©ÀÑ»¥ÙzðbýTZB9ÌQrÅ’ºÕMIK•|“að¹Gló±a,Ùš m$16Î: Å¡ÉåóÁ±HÿS8ÎÎ|½žT ß‰6ºá]ùXbÓ&Ì3º E²É œŒÛ¢3²oÚ·ã‚ûÁô–÷nGZͤódª|H:ì¥2}¿CÐá§HʨtyÊÎ&Ô6ÔÍg='BödùÒoì¤A4]µÈÝ„g+'|u_&“Åb¿4ÒuÈ]›YÑ~M8íêì½;ÍÉ&õ`ê»· ¯ÜtÕZñÝ>Z&]†1•N§¥Xuè º1ôºx´Á`–Ã^&Z‹÷jÛÔ–øš†3Ðeà‡nEã“¡ýKø‰Ëew±šÅ­ìj¥I=1´ÂñÖÄZ|(¿çGôßZ Yfï[>CÁ@÷¨ûrjÜæÚ'ˆ_6SŸ8  K¿ÔhsÎöêI~Ù6Aôï@”$šE(øÁgbSþãrª…ÈKUTªÕ¼^.¦Œ";eÜe°‡XlMZ+oØÆ||´Ó:Q_›zÂiù’ëÓe»Àæ§Tn^ÇgÐXèïþŸZ¨QàÚwZ~Æ6æJŽ,Ô‚€ëøeЦÂE«3@ ŠG‹vl³æBú.|<Ò)¥;âè U$¢/ºã5v}¢ŽdÍdj–í (7–š‹Œ¿,÷i‚e?¯Œää ,¿â¿û›óNv'4 W% u~Xª ¨ê=}~¼,_µµãgN¢¿ßÏ{Æ,×EI­:DìG8t±â„‡a”_÷Üñ* 9 ÛÔ¹j:xRÁP±¸Þ›>-¾<[u‹Ð˜×¶°®·Ok©ÜBÉâ‚ †K‡¸¼¤êþA© §ìVÊÍæÕñɶxoˆ °ã¢&Ë>Ù4ÖZÎ~络P§2ß¿]zÜ *ú¬È’ÝöZ„³êeÌ É´ ?vK£¦Qçý½öÁPê2>Ú \· ˆn#2´³ƒ˜KøÂöEáW(`¯ç)«M@ ›˜[ʪœ4MŸñ‰Ésfó¼'7–ìVFÀ³¹Ï©÷ŠærÅ^³†Ëó•Ÿ8¶ò;îR;vrß‚®JÆv½{ t zHE¶Së-‚ŠE…'É®µÆ˜êp g¸4üƒšÅ°‘ZÒ-ƺýéHà}H,U ‚¦©³ºôÿ¥þÓl:мÏ,dF‚©Ìƒžv… R¥¤gr+›)ʦBÜ.Á7oR,›G½(€¾õp —\úèå•ð%?ÿÔƒÓ-@cÏÀÿŽfßÖã– x_Eð›_ïÇhÉã[^¿HKŽ1WÀtÛŒâBº|y]gÓ—j´¥Ò4K8‡Ø­´hê!§Ër„<¿½uæë ø¾Å¸ h>^SºZƒYŽâ}³l:¥‡É2Ÿ«ëï*\íœÍ7D–ðP-õ@€AwHcV¶ÂÏ¡Ž: ´£ìϵº"á]trs¶êYßЛD€ßiÈëˆíì=¶Ye(·}×ä]ºº½_^CÓÌÔyqÙÞ¢crp•¡¬Ú®ŸB¢ Ì;‰ÍS7í7ÖI(Õñ0z¾[D—w¬QÍeXnÚs»ëƒ JéÛM[éŠ8ºÓ‰“†z‚±š.c|ጼm1ͤ*Õ¶ë}5¹™Ô5wå™â±zNÚ̽³3‰ö_‹§ÑA õlr§ûÚì+zUœè·£ò#ñów:üW+Ò`Úåá*YëDevìȬQéà «±ñ°_ÆjÔȵÈy¤1aÍîÇënÏÛ>äØ l'I4B³Î‚«p–S Mƃ;zN°1ÜH•ý[:|n´£Pµr¢{É“´e„«\`q)žÑ ¢?—äRu«—%û.ëIïãE8g>b˘ã#d÷ló¬Š âà•¡©2ã¡ö2¤œ²Çh© |f\}ê,ó†æþ\õ…‰½3°"&F)4îc8ÿÆ0R•—èft²¥ºŸÊË©N1nÍ ¾+‡ "òùÂźÈV¼o¹9@/BJñÇ©DúɹJ]¸ÏšçÔ¥«ß¾2ªE¥u·›ôlQ(æ1š¬fûd6ׯ²¯þ}¬è± Ï¨óÚ/K ôç ËT¾i„¾ðóI × š–•˜FE?CðùA݃K *ñüƳtÀ٪͗ (¼H#p¥~Y&ŒyRGS•´D±ã"¶Ç-ôœÓX9ª,—¯a4¿Å¿Ù;ñvGÌwL1 Æ¶sœè–!È¡,\ ØëÅoUCø½Sž/ùµA€ÿ;ʯ%®«–(òøœ\ÓýhJ2&âû‡¯.®ºM³ÊãÏâêC$8ƒczÄñÎèîâï×UµËg핚‹1ðaèÊ\°ˆç|6”ø¥p 7Õ(~";ü[M›¤,zmút{þ³õBN@ª2$‰CšÁ(mΗ嘕¥ÏEðõª‚ß,}Æ¢]|@taùñ9åù³~rb;LÛ5ãM£´ÌT¸³°m ,†ö˜2_ˆùéR×>B›³•æ³½®KR‚0:(÷Q '.óVwI:@Måý‚ãpt‚p‚ñØçë.Ÿ‰Êâ [Gf²crŠ:ï 9‚má i™ ´Ï¾½2¥­SšXË$[é~É/²•Px cô;hÏ xís„ƒpö+µ¡bÉŠ&`ÀÑÀÞó5Æ ¯ò'%7úfjä-ÌáP%EA7ŸûN¿µà×IðÕ7+¡*%ë;,¶B‰·³0g_­×þ%Ù«Òôk}¿t.¾¡ÝøÞ4Ö–B«¶}–ìð ŠdPnN…É+r/¿xƒ¾Þ(0[¹~9…]î{ÏÈÓÆ^ܰ3€Ñ"5Ô±ú µƒàÄÈ÷÷ìZ36•;–ŠËØ­¶¶qDw2"dC/|qWjÇí-oÀúÒ- «Å®êÙfæ¡æªØè`¢5ÌìÙLÅBjß~¼²>ßœýÀ¸Ùt´ß‚Y&¿cVg+†Ì@e•‰Îj×¼¬þÈO“Þûª}¾-œ¡x†ì#âi©ã6DV)¬ˆ!Ðr™¸Û>p%·Äd²1¢8Úo&êÛ•„jjÛ T9ÔÄ-/Ⲧ«M=¤¿ßT£d+r)}8ÃÝç%_q—2ŸrÈ·4"gò»–Þllr8²èI‡ùo¥~i_™è>+"2b¥€ËƒUà<’ál$†˜Ûfæ,ß_mò¢çÅÙ|ÀAýlOáL„>¢"HI…íÙ‹Q¡¥™*¯±\ç+Z>ñH<1–mÞ}TnFI7¬·´py½Å§Ç8p°Ú¤U€Y-È‘h?uÑ¿-iø¶÷²`{•DxWßq¦`CB5»œr©ò<'6ÿ=GŸ>ô~OéÚŒúÓ™Û [ÔTe¯¸Œ†ÿ¤.w·m1/XÄ™S<’I ðl⌷ÉÃàçEðšBpÚxúqU‚§fÉ YfãÏD¨Y诋£#Cí"’Tþ[–{غ{Ò¥šÂ|Bߎv3ùë8îkÑÍAP¿#ªJ–Ÿ¢å2)8˱ß.ƒL'È_»FÑÇ‚r,˜º=ÁÉØ‹×~ûQà'MÝ$KªõkÒ½ DNù~Íû¾7Íeø•ÿÎä‡=L©p®pZï'VyätŸõ†Ýu`Q¹ÃM½3&º—,sÚ³'9ã×˲ΪUŸ%†®ÕðW“WM7ÙbXÜáÕj-­d`Òö¡œÑð±=wk¨óÛðe2&;<#´ªDÝÁPT€Ô#£ÒMÒ³ag}ÊÔÚÕý,ëëó>Õ&¹Kϳ Ã7«‡±4•žË]Àïñ¶y'ÆÖÊ^ìLsèÞ5OÂÝ ÙB:Ìø>{ vU)D2Ù\dl]J„Å*œƒ“A„<\Èß¼|™¦mÄ(ý ›;?„—?Óp yz*«žºŽ¢^~Òòz˱=^fõX¼‰´”%‰©vvžN4n\æw­׼¶ùœ<®á¯iê¹¾Ê.ƒß8sd½vÊt:ó¯ÚÞa¡º.Û¶Cý 2€(`ñ©/2¹Ùæ›ñ¶ó~Ý›7è)´wÓgJ€ªÃÛüBhAZBö†y)¸wùýôeÍiÂŒ$˜§pÓ}ˉx…¹-p,$ü$ ›!hÛ¡àv’ ÁÒÀ…B=§V<;hÒƒ¶^–¦¢Ú6%;:ÁsjÍVx±¦ “â»ÌËÊ—²z2ÚÌw’ PU7›ŒŽ³w¸Aiz7#eކ-8øeìˆqªOp×¥¹@£¡G$_í²²@§zenc¨ßœÇUsB/9ª5ÿàÕxD+é““of˜è¤/.™°ºi业k_j ;¯ß,oWøž ãFU'ÖÀØt³"g\‰ê½hºs¹¬RÍ»*™)(h$Ó¯¡†¼ýæip´ZýÞj^hë·•ñ¹A‡åËÑöt„O4ä´÷ž°ŒIª²ÊC‚£)Õòj–gúïÖ;{±‰Ïj2¢qk×Rá^*Fk7C³„J/ ¯…‹_QO"G=~d‰ u¼}I’w˜äÓ‹aš,{ñ‚é¨ÜÄц–«èX?˜N•Ƽc`Ï`5‚ í&­pD2¨7^¸ªëÚ\†¥Ù}ñÇ};sº?[þåSÃÃÓŠ¢©/¢Ø«î…4²&e|e$Y+&…T{NÎAÎæ"÷½¥VÆ´î»ô…‚4ŽèB–c³ƒl:*ÝjÑDO8›dÎO9¶fIð”Mö£ÌƒÛå<¡–o?CËQ÷] m{× S ¹é`B̼‘ç3Ì _ªü9l|%tÖP³È=˜Ï7¶îÏžàKU [ÝúI¾rL0ŽöÛ2‹çC€ô›åË-\¶½u Q‘Àr¹Ãg fgÃò*\*=–Ñ]½.†Ù58IÁûõüÀ ^ö—&×–®cDdÖ-‡”.T1Gº¤]”ëȺ¬ò7ÛÎP. ŒèS½ßÔx/Ÿ[Ey1¿ê‹‰Õ»2­ƒA"Ì)¿èò{¼+åÓÈŠª;&Zç| Þ%›Â<´n«ƒG¤–‡ýuþ,I BT7¤)HLª¢ÍyUªùÖ±ödödáGÝiäeú.­Ðdã¼Úº‚Úà ö—¢Õ‹@£™JO¿6.ÜaW‡æÄvAöË:Üwr]jçWS¾l²ØÚé­cõJù9*®iD¢tcñnåS)´}(†>3ŽC¼³…ü~uŒñ Ö \~£Bƒv?Ñ]ý×ë½²b–ŸØ¤v0 ¢e»†»2\3¯ý¯ã#,Þ7Ý%º&(¨ÌÁ_0‡`Í@µF"Û@’Ñ ¶½»«¤WBÑ$ †aG˘$³³z"¶ ëày¾Ï·‡7Kಮå”äRqåðð|öðÔÐ!ÇÏMx†‚X2—˜k9\Ë úe,¥¬[1]Nô‹¤Á>`=ž„ŠÍö2&ïêõ¾€2ĪxP¨æ/Äñí -#QŽYuŽ_ÊÝ+!e¨í.ôØyF¿·Ú ÜBv5I0 3"ý„­_—00 wHÍáÙD¯õa¤ù.ZÁ|õ]q§Ù4'I{~Ed9ï¤ùÚ„‚ó#UX’“uýÖlvÿ…ò5è§\æ§Ý6‚Š¡4Ù±*ƒÊ§Îà ‰Ò¯ ;žB^âø„aöù©yêG¦5Ï0ÜÚ"N‚ßTÕÁ¸ÖÚ;@ò›ÂôývJóQ‹D¥¶ŽÒ¶2~~þ²ABýÎ¥óRÑzáQ–çv“ô)xÐÄ_×:È®¯ë:©µ0ÄY»Çy¯†zpb ØK….¨©ÓÐå·PhÙ­ ‹âwq@¡$J&ã‰á„”è!7ï)`h €]Bbõ’¼±y5š®];õíë‚O Vq&,íÊPy÷™`¥Îuþþd¥è¢>|,áW“6ÐÜà•¤ ü¦‘ìÝ‚¦…͹ý`0±_Lƒ;|–ÌS†¶õJþ[9D£¿Ï¦<åèúqÈ—kÕ®ÚEåãåcøV›‘ž}CN µbgŒ–EÙÈ:&rÄä^@‰åR§î>ôÚ;É„T50§êÜe™dš„竾-×j-Åj]]<}qÔÒŸ2ÖÅ&|îpœõå´~Þi8§+ÉP&B£Žr¡J,w™+Ö,¯ õé¢$qÚ ¢$¤msQµüQ*//‘ž¶œ£9Å_ú_ªó ®M"bé$tÛ Ü„=XÒzFÃ_=ï ~ââ_>'ØÔåëy¤Ó`UJ`e óp¡ÜÂsN1^c­ÉX„ñä¡„º >{t!…ažLˆ›s‡,À݇,&_Ýá`!¿²üT+_­G –Êm¹¯ÃR¬¯šÈ. æ!Ì…ÙìWÀ©þÖüð<|EXÉcíÄv€n{Íúy4e])ê”Ì9ã‘V3PûvîÞˆKü»õ%úº&ÚÞ +ˆÜÆ?wi £ 0*ýÊ&IÓsM‹G˜Ùó’©.>±©ÐÏÙÔsñyŸGnh‰qè+¤«œeм¸Ý«É¦Û•Ó±Š%K'*ÔL¡Ò{åô˽€ +nöSŽM¢ä[¯é º¬èú‰½Hìdf ËA ù0‰_¢HÞ±¯„Hà@h ÂšÄ×c«;oõ¸øFµÎtPR$±%‡Ôà¬vàÕÛü0dw“ÞFdèuëþžÇwîå¡jn–öªÕ´=|T8±ÊˆÄB²ð™ zß–æ…Õ<”šª-¢î``ÎFPo!aŸh\Ü[_EbK •ŒîF_9h?GfÑ›kùm›1wPN±óUEÇŽ5¬øØOО^ÏÃÕ ƒôҰʉ’Bêg}èAømZ¿¨¹\Ɠ۷õøÀÙæU¯ø¨ªü‹Ñƒ‚uÒe@°öø›;ÆôÛ¹ŠÀ÷Öî=¹­:¸¾x Ù‡ï|\ãÝ1Ïæíq*æàgHÿ*¥¾ÒoS È8E¨„¨¥ãšÕºŸL¥©%U½B6 Æuß^ú‡J~&9ÓL5}ùÌÍ‚ékx|âyŸ›.áCpu/ßèOºeå†ûEó†&m6`BëÓ6î'QÑÆ”^ÕÝavél^æ!ÑӊF\‚ÖdpצV´YéKa9•@Hˆx…BT™x%˜$1x¹ÄybKå„ƒÛÆpej˱ƒ‰GL!ã~âïƒð¦™¸§é“¶â÷¸ …B*í9¹*J‹»2˜¥…w <É Éí»WËÎW¥ÍýáØáRª#󮞌Hî4(&6ž§©ˆª¶“×ÚÞ†K‘Zôoô–¢s‚[íØ›2I6 Ñ<ååaÅŽ5žk ¤ˆøÊážšRNðí7ªê¥+`^GÍršºˆ±ÀG~µÁ¿!u7̽g+Ê7$Ö  *ô.^:j¸ÜÌnçlXCï‡åy‡µ¤`LH,ËÌÅb+¥ÃØR³æòðC?¡aO&›«PS¶ð¾¨;L›W<1þXÓsò0ç·.‹¼1L´>x“j%0#º}_´£R!#…w†ò›Y=àÀi´i°j0?`ù®Aô>øŒ²Ò•éî“͆ªê…"÷—¸ç¨ð0«œBËXAG³­/ë´?áHÐn$£õLjÔö“n †Oj\-b$â/ŒÙáÌýž+æ³.i½©‰åaòfãÝ“!ªšSQ˜FÙ3ÅDï\‡š&l[<+ mžËwïÃA>aüáþói㆟_~/>®dés×3,ý²áÌõîµ%è:¡OÆènF^ŒI@`2D*â©SÚwkm¾’ô¾V]5Wk­ªÞYð.n{\uiÇ“€[,°ÕÎé_VALøßCĈQÛ™V»ï§·féÑœ™P¶SB3ãès Ñœ›†‚Mdû wG›?A[`š=.“ËÌ(ì~µ ò0ž8U˜­ójKkF,áŽ(‡Ãéûw†\Ë·l4ì)ÞyÏ)ÁJcÒû¡RA22aC:ú–¯­ª'” ó™L Ü‚§ð)˜ _˜¸¦¨æ¢"‚ÊÍæA³¾ºN_5>LuyÄ)+ï¤ßãÀãACJ¯=rhO¾iÑ€U ý<[ÅÞ6¤ë^Њok_ã@Ó(̺dm²xP$íÍü.–sÃ¥h~*êcZ«+ìŠñ°&)½–m£¤"·"@šbÀX\ˆ5Úî^¿²[)ŒI"V““ÿ]ê-Cò„µŸ¥K@ʇ!¹ÔäMk’P5Z¥¨š¹jÒ m×ö{© ãŽÙ‘lÁSt|ÉÿWû…52´—@%A âëËg’ÅïêÏx¶ŠfùGt£Ç[œTéá¥ÅzkñV+*ª®ä—ºí(Pw¾3T¬ÑP:5uË¡³Æ_¤X‰fJOœŸ ¹ŸÃ ý˜€ Xë™n2¨ª«¯‡©†ðÉþ›gºä\¡)Tr)õ•mØãc/PÛ°¯‘|¶×S€/>¥ ÈäåOß  ß)lŒÒÊŠP…TuÑŸfùݼrpDA¦jsC‡¬E¢Y°ë[^õRÜ YffIè>!g‚CkPC¾­>{õüðU§ßPî©ë4K,3•­¾}'gT¬ƒÒÓŸqHD#KªùÔÚI{#íön± ü¦F‰*OäêE1§^Ÿ#çû:dqRkšnÆÑÑ ÖF±ñmß‹ÒÍð>~ž›9Ÿ´‰‹õ{Q£·ñm?zs@*¹K÷-6Qɽrþ]2È Xño3*®ÛD2–Fí;láZ¯ú®k×$sHJá¼ÝŒÓy‡'uN½Wš·fÀ·Ü„Q·¨ŠŽ/^†ït@î)Òë*:Ø^[¿oNùøÄB Ìâ\^æ9IØÉBV›‹Þo©qÉZרž}m¾<¿ýj¾/­ãÎÞe8xòC Hk„ÁÇ¢Ö?˜„"é J_ºÎ(¯ðB Ä KáûuÙc‘á…ñìuó=6ó»È½Ìºuø•d²¦S8Ó¸`ÖeÆ¡ùDî|L^[|N*l©-N´ä½¤¿Àæ ¸q~3‰£}ŽCƒ9 fCŒWÚ€­kÅŽ02²Ç²ìa_ͽ}1Ãn‘uœ¶SÚ{ñçë84K`.â“ʾ2}Õú<æœÔÜ,ç4Äy~+E±<4Œ_U=ŸýW¿„ƒ¸›Râú((P´§"Žô›ŽE¨ûwpµÚ˜«„ÚYíéÚÒ†–#·SuE~œŸ´ªøãºÐàwH>(-ƒço϶*©v/Zއª‰’V pÜh…Çù㜳Me+Ö¬¦l0áŠÂ¶yU¬ƒ1s¥-K‚é'8±õÉÕÚx{k® ôÜÏ‚€ÐÎzÝKä_…/ïžUÉ÷kI—7F[jÔƒ ÂÌÂ…yT— MZŠyæGƒ8[+P¨f¥üA͈¦LÆ$ÕP†ªiiñ¨õxHª•ié8ùö8 7 4ãd¥ÍúP¢Ô(“õÖ¡ÓvÔ_¤ ¢èld ²xÔmfç˜ÒO°S¥(gå/þ4%ÍI¨9}ª%Á—!u_ÀÀÆFƒHÞ]Z*­Ù9µ”Ia¨—íÆXGɩ҆ {9+ç?{Å~Îm•°wÊ®IZB w>ó‚¯ñ,ùuJénH+4/3æ3V‚ X²Æö÷U½‰è|jƒEÆ£;`Àhõhȧš4Ť̺èüܳ~öNДâÅBS>Õè(BZ¢ÊèžkؾpL&TzUån­#¼ûòÜÂxÐóz"F{òx;^™ç‹­ÙO½7Ñó’¾g½Õ‡Z ×Çoù¾àL0`"VýV/¼_'@#]ó¥£QˆU‚°,À¢©×%\!Šk‚°èœ^;gÜÄ@ZÀØÐ¶|SÆø´µ3 §Ýét‘ÈäòxôëoÐ²Ñ ì— +,Ý|¹Zùxx¶ËŽœ:õnLÂR¿¦ÒßžNÕ¨´Îÿ†£êä=»(Ñï£ ´>,F €ÂàÑBoµtkióÍ@·šâ¦êgjñˆk¼¯.»àÕhù˜÷B¼~QÉ3„(^R&–f;»+/ígvÚ€pþ¦R:Ñei†:1Aà Å GÂ%±XK÷kþ“èò Þ#B‘#Sç„ݯ‰™]_]L÷„¡^ùíT™­ã|{±·‰(:„Fg§ã;[Q™‚‹ÝqtŠy«;~멳áïÚzêƒ+›1Ù¢ïaŸÈ(•òå *ðkUòSÂ9~äV” S{U×~qm¿ÝKj!&†Ä:C ÌÀ•ñx›á_l9ñ=5l£éËDTïoÊX™ì ý>à³ ­ÕÉt<ªCѼÿµó†m@Õ°Vž9rÈŸ©'e§8¿˜BsÅ]ù„ûí€Å Ôl”ÆÇ"c¦è¾ tSÈÐï2E(7%ùx1‹4:0‘Mfû ‡;œ:gnÓÒÜ8¹ê=æGsç ÏFÈtÑÞÁ/x\ègÎM—õôÒëÏÈ]”ñAýA®–ü^U~9\úA5)&LÆÓÕ–s!îéžÞÚÁˆüÐe칚zŸŽ ¦AŒÁ/^%¤:½ìh{ÐSº½ÃùA,åɇö¾ë.7=f6ŸdŽgEÁÌVÀ{ÜA­W1‰À¸’ àǹ’ £¡µ”‡i;xÖ¶Žx9‘gÑ•µÃX{*"c_Ìû´8²Ù ¥áØ‹[tj“™NfÓùÅ+\û WØ^\ÎËÖ¿£ýª1¯Ðx}ÎGU{»À"„Àhy††ŽO´<7-ÙÙ\?'çÒôv™P&_š²öYÄnÅ™æ ¤}G–’…ýt—4©Qþ÷˜ŠÅxy~7u´GðÖ …ú "}9õè *cóQBÞ׺v%Áˆ^4_Ý­8bƒ ‘$bS"Ý€UÈ8ùKö‚`R/ y>·­óVóùŒt!’ù}˜[Ü>Åþ‰y£æ³ø2Ï ešX˽ ³ÙQõ¡âõu„0>û儚Þ1¼´Ý«É “áx_´0ʧÃßaÍ)¶c4© ³ñˆ ]äÑa«„¶úk–†VN=zÎîy¿á×ó¥C¶©Mse¬òÝ:]€d¤†Øb_ÄAYê·ŽÞ»BEIOÙD®6%î‰fï¾µ0õé·òuc*RªGøÍœN‰hÑô.ôâ1m@Š«îg%zäòc¼(GtÒ;k¼ë:ŸåX+­V¬n[v&RH°¼Q û…k,_1‡`|4ÓüNÖÀXbJó{åX|€ Ew„¹Ãýë¹ßÜ4µ5Ô”@{  …—o2Á~öâaP´Ã3¶Öš,(±Í…FqØx~—̬÷ûöUulÁP¤ÌýPðúÇû)P¡¸bŸS^±¾eO -² BÍØ5q²#¤¨ÁŠi˜‘8>éñ|FaA’ÝÏ©{ªïù3Ÿðy Mª^²ð´éŒÂ¡`‡pÑyß<Û$.Ö•ÎüÌÀüKÙ¤4—|HÎÁW¡aÉOºïö•È$׬¹¿@S¶éÛBháhPIÔ~\jCXæ–ôʲ´*LQcë‚ âøC³Ð2FŸEùŤؾaé3ò÷!øiëM¾£`滚º\_ÁÎb¨wíšî ÄvAªÈ6 lF¡ˆ€ñ”k*†‡GòKZQV: á¡mîøàôb €´M©¿ô“¥* ýðÂ=B¯íŠÖÿÔµ1:5¯¶©ÑGŸ°×Î`Lå~¿X?Hn³œ`º5JFÚ6da€Ø‘8·8òüéO´7ôÝ·?`]UÓcôt„Òpm{‘¸Œ§r"fÓ±Ã- ©7h(aÍø5–1ÚYy‡°ÙËÔVª2ûþ‚Mz#åHïŽ=±G!ÎÍܾÚe?×€Oi¬@cÄ—=»Øm푲z†79u×Y)p¸§un尿ԲÏDëgYcl=ìÞ¸‰r¨Ûu× [í!ï’±˜‰ª7¤©ÜÀgŒËß M6ây gªç&ߢⳊK²DX"—´§:€]›{§Q=ßšåqÑâÃ`© ÿÓŠ>TyRÉý”ÁÞ±iþÛØ.(G'\¤(ÏN6Î lzeŽM.Ç;- ¶ &°KS?èí{“b/¿Î=•‰I°h¿ËcHL/Ýl¹F¾ÂO¢+scì |“=¤®T—hí&«~ñžSÇß:Ë á)Üœ©Ìnà7±oêO2ÖV³ Ì œÄœV ¥nÆEzsG±ÚQ•xMâ§±ŽÙW®ÉuJ+*qéF¬Ñ:Â|û†¿TWòó‡áÉ«›íÍ,â ýVÆ÷¾ò©.=•Ø' Y*#*n𾊟š­殺Dq!õo¾¡‘Nø”œk¦”Y d™£Iá̪5]‚‰,Ëv¨x&ÃüIûtŸ½ešºG·;€QÐúå¹,>œæ8Ÿ?…[3´±Ë#ˆêNÛÍsÊŃ+ê„{ž§"gÖÃúA—x;BÚtÖ»1ðÅ;tóõ“©"E$ñõòÔ+ëÔ¸(šÊ+žë-ú§Ú_¶Uˆ" 'ªl7úöo+#óëU)”ßmÒ¿ˆ…—Å;>¡-„ü¨ÀÏ­sÄx>eؘOaD²ä­Óÿ½ÌÐL"Mk^*=ÁÄEv'QÖyÝ32pÄÒʵ‘šKIžëÄjó z†=οž]Oû±¼´*Û[À°3”i-ËTëJËË“÷‰ý¨@,uÖ"p6£0¸½è¿*z@œ²­C–ÔeHb†£õ[¢„øÌmϺS’¢çDŽÝ„3L;ÄÆÁkܾ>ÞW^X±ÙîÐ0ï+N,EMl·Ùöç,¤ã£»¢p17À‚Š0g`]ó: ¾]ÑI\\«DêSw¶„ú«Ðíz® ò’Eœ{º t õ½m+6v*ÂwuNE„'Œ{1c˜ï*g —³5 yRUy&' Wãí‘pìáw¼?4v *»ùS¼ìÖ›#ë a‹-ƒ“¢ÑÉžæî‡^_ËõêÇìUé­8æá;e-̇d7±#ˬÎ@!¹0'>Y“OW›Šÿäâd…"ÑL;_@GNHË*Žå8Fš+aAY¦vù©)§äB Üý)b%S"dŽ!{¾]-¯Ì½<þ¶£'šSÏ|†ûÁá„;þí¢R…íBNZÎPTRß’yœc³´!P)ˆˆýjJ݆\”°¤at]\l«|*~2OïIL± (•ë_NÈ0å „µ Ž×Á¢¬ÉP†£•…OŸƒ©ËŸ¯­ˆº AáÙo‚;èI&ê7ï¥YÝß&D¢–˜Szta’[V¯3IßÕgÎÉõÎZ>,(œBzD$A‡üvÅ£çÃ8F˽I½ýÚò<×dQ/yPAa¯tI+ù,gê¦Y4_˜MÚR,O{ÄÏ6›zD7-.TàtMɆí:¦â>:h•oB¤#šï¾¸Üü`T3’P–­˜Æû\/h™T¨“ìØÏäÿ 8nÕÓN[q1f%y \l”¢$ªs>¾‘Eø$èuÕ|ÿå]•ð}–…b#1ê&An´³Z;ë–é°<[€ŒÞ ~nIù$)¼e>wÁ¢ n=1»_g!¹Ä·™3SÂ$õ› ‡i]eŠ…ÏÑöeè–ýÊuý/E‡ë*±a«ÔBÐ…Þ©Úõ>ß^ÞX‘=¥ ±ó+­ÞbfLÌÁ]„鳤5Z`“<{üõI¿t*X÷;…Ü{ H§ÙuÀ‰þks)´v$-%+–%úØõõ'hCþ¡Êˆ®FŠwžƉIF°Z„@k6ý –qÙ£b…‰±RyeÙ›âšÐEß…(òq lŒpÚF~yhîÀ|ä“ѸÁâI‡eBå/%ÝÒÐúŸ˜@–†œŸÒl6J …—Ñç<côÆ ‹”É¿M¬­…÷ܧiÃ~ú…?6\”L?*¾ÄüŒ­î‰¦_hŸÙ:ÜÎå=À+Œó¹ã§— –±Ho¦²òBŸV¡ÕÂõ†€J>fv4õ¹¦©»õYÚék—ŠDÈú VÏ”cå9H>Ô†/0;C<”|E}*¿ºÜöÔ7êEëÄrsêQ;´ÞGÖûógXõ õ–Ú‰Š¿ÙƒE/x¯DŠkžL½Ãð«;Á²QŽ#Øeµsõ¥tGs”³YQ‘LÙ,à/U<¶[„Nl£öùÎIá>w™ëô»ãà߯Aqß “fX®§/NRY ÚyìÚŽÂWúhöžäî^"ƒríjMºˆ=MÊYK ûá¯oZ¾q_¢“GCqI z@éï4økƒ¯ðý&Hû–÷jÎÑ]ITZ-¯kê™mSñXOBuKOüÇ Š—cŠ­TÞªQƒ8b0‹«&Ò°ßò8Å*+ŸúULȼ¬ßP±ù~ë_Ô~z¯R »•FÑnèÆY_hÖ;cÈOL_O#‚ò ÏoZå»AB©-³¦#|ŠãšÂ¸Þ¥fÄ.` jI”z³ÊâYn‰?šxD%eha½T)ZÁ2“«¹éyǼZéÁ/ÐØp~á²âTÌñ3öΫ;_æÃyƒ~ *©Gz-´šÃ(7=ÛL;†vëpÀˆ“”kÚFÛ|VpÐÔÆ?œôS.g_ª`äœÛ•)ãƒÄ÷†;E¥ÁDV]ìOj IÚ¨÷e+C˜W5þ½OâþÝÄu›ßØÓýȶ/,3ÛMnbÄ(nþ9ó×'ó1q‚[É"2¾Ì5§«Ý1ù»Aº¤oþ‡çÝ‚W· ×ßð¶Ú:½-'¶âÍ1FÄœy´¼Šg‹MÇJ±”N"š_<%B!ÍÄÌ>8 =æÎñ> {%ˆÇ^RÌ œNt¸ëÒKâ6˜ŽÍaØãKº·a²p¹ ]ÖÕÝÃémtçEgŒ÷¿Ð[·t©îÕ³;|œ›…4&§¸wµ?Ä€inS»%ë“ü¦åzæ ÷“k³×Dóì’tåi ÊÛ5¾Õ{wT>=†2 ë-9ÕF±•#^„ûÜ\Óö]é}·t‡Ì`Ê21$sl‚ò.r—çÑáÝVøûÝ 76׎`¸áO?™«8žÀãÃLãvÿi6ÙùÉP-PMº/àhC0·8©~ïC“D êÁ‡)lÛvêcëÒ0±=‘ëXH”ÑBa|L†  k¾·UL;zJš-|²Æ(q“çÙP5Ô­Púm4DpµO™—¬d*ª¹—\Õ³Š!âãüÕð™òos½¦•b1Ý PwÛ !*;·é!]Üq§›çcé(Ÿ­&*C­(–èöêvÈ¡}éT2,…â'«.¶•__ƒCvKøºŒgãò¢Ìû./Œþ¢QʤKô‹j”ù÷]Ô}Ÿ%LPY—ˆHH+ÀªÃØÚ>Ž]v¹ÄÖ×aL`°i$‚{uõ¹«ó]±À‰ŒGŽ7å‘;ÈCˆ\02¥fþSÀrÙ-¦=Ü7aÖ¤§µ2iÆ¥ Õe”¸ŽöB—ÆïçBÏì2ë~ÅC\Œ•JL:w*Â`vMƒ¡KD 7sƒÂhûl»Î£±C…R›8{)ñ7$±}šª¤+Âø;ï¡ë^½Œ.ð,¥¼«¡+w64‹™·Ç2iOö’•\ã|ÅÒH¾yÌ-O»ˆ¹Á(üƒìqCºÌz¬€þ°RKV µÅþ‘Y ŒÍ…Ú+øÈKì1Ëð8nÝqvNb|IÉôŸ[NdxDDÃՆr*–®^5¨Y0K¸ÒJ¿EØJ1y¸´eí_i4e°˜·…NðÒ\ˆÀÛBtм&Y¨F~<ò%„:iSA¤¶ÒZçØ¸& Ž)+0™¢“ºãÙ½ï×£î:î{¦Â7W˜[ÙHK,þ4EvH…Jtb„Ũ£*Ï Îùc©ò¢'fÿ–ú›ëTÑL¤4§è½Î‚íP¾ãc„K!6Ùœ?³øCOd/K«Ûµ8Ì‘äÂFÍâHÖ‘EqHz|§iðž$<ƒ‡Ñ.íÒ_þqOþ3û,X¥ÅŠLI‹²ü÷ÅçîL8{Á´c9ïÉÞ¶à¼Õ#wÕ‘N@ OA0¯stwÕR\÷ôepd/¡„µ~*¿k¾;Déë %ša˜œú{ åwÏüåËåXÙ â+FXòm8P&1-™Sû é–ÅÍá庑™ZÅ+},·-rÓŽ ÄÝOWˆé~ïŽ=uðÉuü¾U骄µ²‘|ãNÁ¯P0%>ß3fTŒY¸É’zPÛUkñY"o[ fŠ«”?çâS·0iØËyœ×|V8ä3¹úe:¨¡Jæy#÷ºÚÔs ­ßY¸:þr+â+#­ >Þ¿Ý8{€Þæõúsœªï·RT=î{0`‡òœ"`½]“:XßT$M±ƒÿ©¤§VLL¦Áä•W@¿ûF¬S 9"Ý5â6IÉëÐLb°F’q ¤¸ŸÙ9˜Zl/¹Z¥Hý÷eE¢È'ú_4ØpAvgÁïݲéhÞ­ù,w4M¾þµßAæjZà©t?ô¸¬Õº³÷pÄðe‡;ìªUC÷’›Þ~joé+®ÎâÃÒ‡Má D ;ÆRŽª½]2á{j¯oòp?ùÌ-@…và;Q}ìK5÷ë‰vY¨tám}Ù*Òó)oͰ҅P—Päµxùˆþ—tªOÖ›E>àú ê3¤;Ôè‹Ý¯HL‡AÞõÏ”û/ö XŠä’ä¿O—BU•RòØÙö‘‘Ú}/^‡”öø'ìß=ª@²Yc¡°’ÁrLr ÈôÍçdƒ÷+œ»c;͆ð4צ ø)ab4bò ¶—é;(óËà1Y›PßãÒÉÒxoHÌŽÚB„àâobÜᬜ´G×ÉÌ‹‹¤XDl<‘/ù¡. Ÿ)#öÌJ£ Mwï"…‘,z5`;{.¸•w¿À8ÚShPk­Ñô½«Ü^Ã@2¬³WæïÍ…·E?ÄboÍfWB¦ců"Û5`³qþ¶o÷ endstream endobj 668 0 obj << /Length1 2031 /Length2 14049 /Length3 0 /Length 15278 /Filter /FlateDecode >> stream xÚ÷P\ÛÖ€‹âNpÞ¸»wNð@pww—àînÁÝÝÝÝ=¸»Ãeï#Ùç¯êÞ¢ªéokŒ¹ªÉˆäé ¬ô€bV–ötLôŒ\a!5&f## =##3™’‰½9ð?çpd*@[;+K®hÛuí?ÎDtí?e¬,’æ&;##€™‘‘ó?ŠV¶\]G€ =@ÒÊhG&leíbkbdlÿç?_”úT&NNÚ¿Í‚@[}]K€Œ®½1Ðâ#¢¾®9@ÑJßhïò?.(yŒíí­¹œœœèu-ìè­lø¨hN&öÆ ÐÖhø«d€¬®ðߥÑÑ”ŒMìþ%P´2´wÒµ>ÌMô–v&–@[ÀGt€¢„4@Îhù/eé)ÐþÝ=ÓÝýÛú/G&–ëêë[YXëZº˜X MÌ91iz{g{Z€®¥Á_ŠºævVöºŽº&æºz §® üÐý¨ðßõÙéÛšXÛÛÑÛ™˜ÿU#Ã_n>Ú,ji lea´´·ƒû+?[ þGß]þýpÍ,­œ,ÝþC†&–†•aà`Í libã”ù·ÎÇÜŸ3# =€‘‘‘ƒ´õþ  äb ü[Èô×ñG nÖVÖÃ2€&†ÀpnvºŽ@€½­ÐÃퟂÿ%8&&€‰¾=@hdb ÷ÇûÇ1Ðð_üñümMœŒãÇ`üëï¿ß4?&ÌÀÊÒÜåúߘAHNERJ„æß%ÿW($då p£ccÐ1³1˜˜X8lŒÿõ#¯kòï<ÿØJXZ8ÿ•îGŸþ“²ã¿g€òß Bø__²V“ PþôŒlŒúLÿŸÇýo“ÿSþ——ÿ×Aÿ¿‰9˜›ÿ-§ü—Âÿ\×ÂÄÜåß“ë`ÿ±2V»`ùUUÿZ]!+sƒÿ+“°×ýØAK#óÿ¶ÑÄNÌÄh ob¯oü¯qù×¹ò_‹fnb ”·²3ùëjÐ112þÙÇvé›}\v3ù·ø±<ÿRÔRßÊà¯-cfcèÚÚêºÀ1~Œ3Àéc €ÎO1€ÞÒÊþÃðQœÀÐÊî¯'ÊÎ`üëè_Äþ1FˆÀ ü‡8 ¢ÿ%ƒÄúð"õ‡>¼Hÿ¡/2è €Aö¿ô…À ÿ‡˜ è#‚âb0(ý—8?|êþ¡Ÿzè#OýÿÒ_=e0ø2€ÿÀ†ð/2ù/~¬Ì:þQgûKnå`ûû£àG–ÆÿEÖ®»XÜ¡4>ÎLþ­2ý~Ôeöü(ÌüøQ™Ådú¨ìž?®«?±?t?^<ÿänýGü×úcû¬þѦäÿQÓG¦vÿÀ û?øfol üGo>²±w²ú‡ÁG-ÿÀZÿù9ý£ñÖÎÿÀ÷.ãÿ »¾ƒ­íÇ•ÿ÷uô± ÿá¿ß/@ 3PniÞJŸÛß´Ú¿õ¡R׉nwœw†lW5‰ŠÎmɶÍáét|X<:%=÷Ww3ð&ÐI²,‡/ŸäsМzÅkúŠWFçw¿íU°KÁ¿OÓ…+‡ýð)˜%ËÖKŸûL eO‡CzáŒ4{{7ƒš9ñN(MçqΒ料Éñ8çºVªÄl׉MŠ­þüutŠÜMè AkÁ­ðW¤d`è/C|­ù¾6$]Ö*¢Ž%žâ‘‰­‘χÚ>ÂÅH;S‘úß¶É„†Í3Û?£fÕpL¿2içÂÙ}kßÅt -›M³õãï7³?•gJî‰1'ð¿¥ä‡j?:HX`_ÄÎéïãôœ¦¨y÷ˆ^dÖ˶×èrÓuF&e:Zµ!Ùáúé½G6ãXßY‹gïQlsÁFi×ÁÑ X8‘bÊ%Ùe 1"õB¬˜S©wÜ—.¤‡Ê?Z*êkå_ÍQQ¨«›—œCÓdtSp/Ï5^;U4ýþРBÈ Æ}J¢xò,à«–ÓO¤ò’ ‰ˆÈ9Sz ‹jlng0ýèäu‡$=&ûBù,>O’¶ÌÐ qŸ¿ígJìRYߌŒ„m?’T¾uÓ®;㜡:š$å7§Š÷˸—ZÒ¨ß=“Û?¶Teé…ó)U¦œËîíáeµu7² |‚œä¿2×F¶ë*’ ”o¸/†op1Tt)ÜšïÐÛDëÑátÀ·Žè¿“ߌª”u°§’æu0.Š˜ó_Ênî’Ÿ Õ*ðøÜÐHÙÙ9 ÷›®pÜU™zl…€¥tßónçk¾–Ÿëî7.°¹!èÂOó[côqSúÎÍŘ¹ŽŸ‹q(S|QyÔyBØSؤVfSj@gh\_PÄÛ²A©:½l¿—Ɔp-T éç€b !esH¨Ìù¼BÎïf©¾7¥*h"Ö¥qöBª«§â[¸ëcYùUEù ùJü°” ô´LŽ;Ú=E¸ËÂfüýj(j ±8ßê#×ûî ³¼6v‘ZÖ‰ Î êO9L±¼Gè“ØeXå‡øÂ¯¯šè'’4ðŠ]øÔoøI¡ŸòR¡ó8ZDïÒtGÊ ©õZ,Ñ$1þê5gM˜€—CýÊ£(m5J“æØðYZ#yÊ¢Ž®zc§s“õ:éRœŠˆ:]EBWyò¬ê²T‚u]ÂYNc}¶§’Ã}þżÜq Ft)Ñ£ž§n*9kžß>dØáêtG4-o3ÍH±Š–þKKåöÀ³>xãmÈS(óŒ}AK˜¨ Ý”Ý:߆;ÙÎÄÙ®‹ìdÒ±L®I}ŒùdÓWágæß:£l¶åÒ‘×\¹Ÿ×ä >m–µyn¾ég¡.ÈèÀn£rjóÉUxÀˆåÝ•ñA.î%¡Å×'Aï°ƶâq‚)ÃÐH~>…|Ä6CÁFàá£ýêY®U2ªÌWቂºîIÁ‰• žI‡®íO31•ÈüÐe‘b²÷8žÎb[_trÓǧ^r6ºÎ?1öe[^Ôâ ŠÄ("3•Rø“½7:î‘ó—#¯±h§¶e¿KT ìC4%'NÁ>–Û³Ê ¢Å9ëux}}d1õð÷­Ó@Ê·8q½WÀx ÅŸy×ÍbuC èµvU`P}<üDÛâS¨«-¹Wka[ 4¼¢hmôÞ×°Im(€¡OŸftÀSιÇ?i#/Þ]¡œ‚u¢#¦a­!]Ïç›nÊKâ%) HQ«‚µŠWØChÑI¶Å Àëáçå^«D^%DU‡Föò9Ëžå¬[ïDÚÿJo—ö^’Ë7æ»Îœ± ¿™9Î*LÇéY–侤ùa7Nˆ'‰ýÌþy¸Û -bÞ‡“J #2Ý¥Ñv80fwrDÒçá]/wôHE’Î߀™¦q·\H<1”ê§¹)c"ò) /ˆU´|ÌëÛñ$ ÷ÒF¡ÔÄϨûarA„ñ(9f’6l3’d! ª¶eýt¡V|ýäql"®Âî¤ÛеEjQèȃìªþ WKznŸQöHÁ&åŽh…šcÈAZ®uœWÏkÌóìE{MöUØW‚Ÿ‡í2^ ÁÕ® öÔÃAZ'AfÑ»¸˜#Cª}üì~¿åêwàÚ9@¨ÛÕUTž{–£A7½H KöÒ^¼i<6zîlr+€–Å«:%azÍ®']«esFá=86¿[ ±Þ{T¿ º„ù$ÚÌçÅEä‡L-Š"ç×Å‹oá­s鶆7âZ/?ØØ‚âIv–14¾OÔRaìcJýVÌ׫õ´lJ.“ÁQ{¦ýBžË¡‹Øo@ú–¸¯eÏ Šê³è2ÑáÕÑû¹æº”µñ›”ÕïH€ªH«_‹ðhY=Õz)ÇÄŸˆ$ #ý®é^zGb IÌÞ!þIšP^mdÃUïÓ¯Lõ@ýé{wŸS*2,éE)C9f¤µrŸíM¥ìl­rT]-ð½ÍÖ+3ìÊA¡¤É%LÉÌ“¯™b³úëé Â:ç”/]ÕcdzC\§ ºy­ÁíoÖºÃF×"}i» XÌ%I( .ÈRÇqœ—€½0~Õ`Ù‡P êfÄJYH“ó3iÃkC±Y†~ø\Ñ8+äñQmÝ1¢¬UÄm¡#{Í[WßmX©¥ëq ɶ¬yÇǘ2O… ˜s © bN^ƒç@6ŠÍ+¯ZõNù1ëAЈ……ú_¶üƒòQºþCHãÒ±tà¸}pú(Å¡«÷,âùJ Øû)ËÙ‘–$ƒZ|`‘ÓYóYt©ÞëÞ«bíN2rJQ"v’I#ßp›kŸºüÜ aŸ}Ú”ÖÛn˜ËU°£Ëeí6¦#ž¯¼ÚÉ„ü–îVHñh·®ù2÷‚p®­¥—‰¿¦OT|šEÊ4–0 !*qPHVQÖŸ·à¤N]•é3ÉK¬EmÝÓ›g}›5#3Í,”¯…c:kqÕc*¯Rõ^—¡±jðoê0¤%^e`ñÌí­à~¾KàÈaàè*ã±¢ÛW óÙÛ´LÀ“ªÇ°Ü}gd<ì6îDWã¬ÌTšGp‹¢Ì!Oº ݈òâ¹1îÀ¹¿”y7í܇.ÌDXÄ=!‹ÃRñ_þ)¾=èØà ů£ÈµyÌ% ´Vè­BzðÚæL- ËYãù~¯a9˜X_v3°q ƒ>³Ù¾5ï÷åˆô©ƒ„3É‹:g†i¸n蟖9_ŽZä[‹ ï„+ZÇYp;A*Ûâ¿Ì“óZøþ“ØT ²EÍüUÆgñH´¢ö$}Nú…ø€è„Úð3M*¨²`pôÄ0-? jçŽ3GÂ%; nÇ».ÑuïÏ’A´çWø¡ø!‡|¬P½œF†Ø ñŽšUÀWùûE?tô¶væHïlyÛ©Æø£~áÜsFð¤Z¡ )#/q”Óg±í|ªßQ$×äsêV!BÛ!ÇwFa2Ú+8.µI2‹çM< £¨3µ†W´®}Õ8/Où-¦ Þ¬è(0krXï´?íBòjòÖ=rˆLf7¼á™úøü0£Iq¾ ǵ{¥ËÜœÇ?…¶ºêµ»#ž9Ÿ#PÍÕŸm^úÔg§»÷å`©]¼yZ%İåF¥5{µý8T”G§é,‚ŽÿìV“›îúJÜC‘”@×á~Ë a¡ÞÌâÜ)ùµ"ÑÅDì(Éݺ§–™½)¶×C‚z½KHx‚Ï…?EN{²•5õ…k;¾JOt?KEÓŸ©~ZåâQÖ8HÊJŒÑ@/J§ùû}4sÝU\k´Ô,†Òm¿gŒk&¹îm]“(Ù°¨‡?¢ï3ÇQ•ù2j*3 ÑËrϱ>Þå·­TF &oMpWdt`’ÊýY†•Jj³ ô8úA˜¡>0Ê?iï9οÈä°NáÁºpríŒÖl™¾YØ:Þ¦ÊßD òÅdÁèy;_µìhß·ü‘îiìÍ„w) ,Žõ«¼™`CšR`p3<þ&|éQb0Ü 3¸p繸c[sHTÎÚòš9uÛf(ŸkÕpêÝ!3C£EA›ôéŒ]›aEÕÍxqlè|ˆ!x*åhÔt¿FÑcúíT2È~Ê.0d®þwÈÖ¼)láz§kª´›à…icRªP.WYEIé5OÎmòžüuÇ®m­wb?Èvª¶ 5¶}\^cpÙi_]YäÅê"²p&ÈíyG(¦U#Gþ}oVöŸ¯wјÇDo×u²7¯]¦9Ûr¬ø…mèKízkï»yMá öÙbW.W{5»·—äçn×Nß4hÔC$crláhš¶àÏw,,i7Le,E %,à Äñ+”!Êj¿ªøÒò €U˜ûž.…Â…«Ù›'DT܇%Ëï-‰r¾O± HgÖéÆ#?ØÈ¿KÊ —³C¦¯Pë¸eÙJAí·s•’͉Žþ%„pUÉA[)ý(…©üŒ˜'«E^à á~ûèOó>ÏXTG Ïe€¥}QVÒÍ^®ìt+G,ºðì…?yquÌ+ÙÃÓO˜…4¥Aà̈‚²ó Ÿ|«îææÞs³NHïÿáôËÈE½:lmט¶.™‘¢g‹W”ÞΔêlɱr–kàè]Nè°lz`έ`xf»fÎWÿ²_¶¥¿“Ø IÃ`.”5å‰îpO·—ß. ™¦Š¦ªßb9‰vŒÆïÕ­Bkà úƒ”ûW©=ž’B'ºÌ—.‘¯ÆIéL»ïnÁ"µ$¬ð~"nºE?L¹H-ó‘ †3)ÆÆ¤D(¬cwtgîVµ…Q°@™æ >}z~Ñý´ÊJÜñ‹Gãh¨Ô’Ûƒl±9yßÛŒY¢Þ,˜¢¬À \gT(õÎ}€ûûv4|y‡y§˜Ûb1-Æ]Ú^>'-ŸŸù1^®º@¥fðgtáÐÊ3ÚOìØËîWÊØÕÌEn£»{n7Ú5x!ÃmžÞªÑIy›´*Zº•F^+EDÏhHUš…lxq;7{Ía>e™"ã´«Æ“ï>„ØñÝx±îô™™¤e˜Ë}d²•}={õëceþ¬™í¥§„?ˆhD¾ÅÍìeŠcYp…m·FŠs±¯ÏÖ ò÷†¤M[+®7z¿±*}“*qKl¿Oþª– ©Ì¬'»žÂ6‚¹ÄQV#7ûɵ(×¾ý´9«:Î\¥µüù! ô“«xÅé ÀD6kz¼äõÕŰM[ñx‰ï™ÞHçGˆ]|îuðX(žàeÐ@í,ªý6¢IMÔ¤*í4 `¨ŠÚ¢}inþ­ýÊĪÐß'FŒ§& ‡e6ùEümm[– sý”–Óøç5¿Ð·TrѲ0®3^Rð!îe žPaUƒ„{~<\¦çÜrj…¡T‘‰™s> ò̵ˢ®?Ãò´Tãiqj§K—ïÕ°cÛòµêØ.a9xùE½`·´˜Bó­K+‡‡¨ØjÐãžj¨ñ£Ø|5eÅgXc#ȵÿSªàÜïûkAKíÁTÐëv«ð¤ÓŠÙÅ΃&Ñî/ âsÈÓhŸ k \¼9Ô4²CA¡ PU)Ø[$ ŸÅo%ÎáI=…ñ#ˆj·=²w¼!d¤jàԹۻ££­<ÐGËže¯s…*†aÆ6È+BcŽï-;6½¦(çšÔ€~)ù¼|^Ë®©uw!1ÚÓZëç€@¢ÀÓµqµ]O|ÎE~ì9žüC^ö¸T§"+ËY#îÉK£;Þ¦›Íð´ØBY ÷×><ónËYlÜ81¸‡¿kÙ6M/åɳ:✴íà¢+KrùMëˤå#i‚†ö/ßî²æ7§À`e.ƒýÓãoíÉo놵ÁГuN\kk$#ŸÈ5dš¹S©Ø£o_¶µdº§]žÅ šn¥ñ ؉ªÉ¤Ö­7£iSv,­»0 ¤=UEhÜí† TÅÙË«]˜ õJСÕX!¥Äó«IzÏ8¦öYæèl1‘‘£Y‰-Ç$¯—Pq¡â·1¸é=A#E¤æ@GV­|ÕMrç:é9_·cú½øw«2XÄwwôã&Šn¶2ÙŸc¢ c9j±„ÊÌ]Ðh±ß/NÜgôµÕ*zIlJ+5þÂò}bvñ¥3†Aƒ.ž­ ¯ø©©WîhËݶÅ|SµÝì…Û|(÷;­®É¹uò˜%Ó†’FŸ¾ð&Ì?yá†ê8Uý9Ø1!”- ‰JZÏÜ'EFKãÑ{,& G÷7f;!Tn¯ÃÞŠôÓ£ù±Pp¹$‡xù?=ôPÊ Êcª§’Z§Gâ“A·8žJ²u†hý|¹]uÿØåïFvqâ ˆl]=¡ W׊Á–ë©ÃrÌÄg½qª{\fúl`¥4>p”L¾¨¹Ù#©1øV¹¦qà-0ÐAN"öÅdV‹3µž'6 Ôßi H“MW`ÞÐ&”m–êˆvÎ÷[¨:ŠÙz‹@ƒ óú³éìÖ ¼Ø¶b̘UaИnúôkgö1SÃÜjfªŽD®p 1'Oœ Ü¤³½üLÉ=r ’ùˆ‹ç&}ºL»3ÎbæÙ¯_¬n’åàíSÛ™N(„Ðâ| àÝÕÎâ´yõ¾ö.Xp›7m;)뽑×V¯X—L_ëBøI¿ËœpW[m™?gêfò®ÄãÉÒ &ó4˜ÛÒzŽ "œÃ«Žxƒ8lWó£T„€h·0µ#Åü ¹AÞ»d´C~ Èô[ç8ëw¤–ßá³OªSoDÙßLB}Ó„f“ìã¶¾ý¼ysÒw³äצƒÔeqÉë!MŠþ,”¨ªÙ¡nf•ö'é …‘¤d$DS| 9¼f¾|œ `NÕ ¼­íš$vû˜¼vÀ¥ÍóÍ›ã!B^´eù#–i¬}â‘qxSD,ÚzÔù!S=«J}»þq[tb€_ûµ—=Lë^ÕÓ:¡ÎÎRY¸qºzFË$ý«üN©ô${ÛaQº Ål‰×íNI¤¹½R3&u—O:cíNJ#Ï%޽§î½ Cÿ–Öªާ…Æ)8Jk+Ç^H}s…„ÇipÂäŽn&äŽxg.MŒBX½í9†§——¯î—ç{™Õ¿|)&z<®)Æ» W6õ4K–y6Ê©¬3(ý"@ŸÈd~R_ú9v&Èìª÷›_ï{ÕsjOÜ`íU.Ûà\Õ(Êkt7 á¯4‰_ŠY­5_3{·e&¿8h ¿(f-CÈêÔŽh¯Þï„>rapφ<áUÌ kñúo–®óKÙ오UÊõxÓb1åù,œ¿ø~{ßì0GÓRÿf´½êu—ÁŠqÒ'UÌœç›Æ«Ú¡òs¼«èF^@gC1ÌæU—7ÊuˆFžšQ,Ÿ iÒ&âÎOì ¾¥¹0ù «€¾{¿Ø óÑ¤× ÷:.Vèe³Š,Õ¹mb´3Ä E¨ù†ÙW»£H߉A š¼ w)\ØkG[ó´`CÃÈepˉ æðz£í±4*C5F͘¤·¨ŠÃ» ²:¶‰/ç>p¾&[¸cS-®ÖKÎíõô"™kž·™0Cá#žŸù‘;¨ iÄÙu‡¥P-Jç F|ÐÜ)`ó²?~.+E@qóRYÓ‹bÏ%êP šWŸ%«D×Ù²×cICLÇÀé/u!¡Q¼ˆzf^U,ÚßÖyÇåzôkH.¥™Ì‚š×øc½ïEÏew´•ò¬?“—4IÞϲ|rÔŠ¨¼M‡Fât½É·Ç³Þs㢊XškŽ„“µ½Ë+µÄFÌvÂ+g77@÷ŠwOYP;åõSåõùìËÆž=)X=R´ÝØ®@>ÑD o@*“?cƒ™6«oç‚IJϔÕmévzñeÓ²íù¶¦'I\ׯ.ßÞï*Ç’ŸŠ*\Ó·PÌ‘ਯ=Ï$îÑž„ùº$3*p*,ê^qŽÃÇAœ×b¥‰&jŒÏKÝL6/Ø¢Y)OŠ:̶t"YÅÇÅKâxó ¤gäÄH>5½7µz̸–eEõéïÀ¤cÊëò½ñÑn£´‚÷ú¬"ÙßMè…ð„DY€@­CN°–ß{ZaH¶‘å£lG/{Ù¡kIGj<—ŽšMélžæûO®!Ü'ú§z6ï+Râ°ªõfƳÚor*wÐP'ç-ªE™Õ 9$!P§Öu8ficw²ÅQvw,o¤×Ÿò}³zEÎöÓäGu~£ª àá7Ñòø ¥n´ËUjµAŠÛ'ɶ¡KûÝï[DÎ!œe9wÕ¿õ|õ³«Ã~¢†nÔoΠ'jz©våŸÅf|'æî_“ö ÃZ–å›AÆÏÉâ !¨°Ôe*/ÄZC¨o,8¸PçõGÞ¿ 7°˜³d¨C›‹æÆÔV¡ß ÀÙWG­æSËþzR&‚~m)ÞÈ-l:u*keР^.¶Sj£«Þq¢§¸ýÍQ§®V¹à,–¥pówYîÍØ×·'¸]a×ÜW¢vu*ÖßaGÞŒV,{tÏÜ…¾,ÑhOá*<ëþg¿ŸO6¡”ÆrNBQì¨O/s‰Ða—Ä–vŠ!Íße™ñ›xPeK$Xñzåt¿ŸEC´ú¤-ÃÆ³'_1ÎQÓ##9¬6t&§ë±ÆÏDÌ?Ëœt? µ_Ÿ ž€Wo¾­¼:"œ0›x{U՛Ў#%WPrëL鯫_´Ðy6Ýï&—1hý0³:Ò‚ËN}» ™ë äð¬´I+³. <¼v UYËÿ67ä ’Ê?f#‚Iù«K÷Äí“û0üH†Ûz­^,&ªð`­£×Å01[ö~]s¶ûIÅ(5ÄÒ¢Ï)èG SwÀ/å{²v÷µÄ…]ìK?Ž-˾6Ò äzt»LÖíèÀÙÚÓ†5—¿ZíVÕPø¬1¿ÏðÒ>¿?·¨Šò=²{‡Lô?=LaJªÅÃï³ ~78Ï¿§t†ëß(Ã|ÙlÞ…6ØZ ˧}‡j&0Bk r|Ô íL= ²Xh:³IâË0n•©å¡fÃ#Ÿ«ÒÓi†€XÄ×Ð\f. {°ˆT÷g…S#{Ž*¹™¤ê>Ôû¶w‚,Bc)Üc—¿ÙY‚7eú£ŠDÞ8"ƒå˜f\€Ý÷v=ðv¨è Üq_øNEŒ9ù„f˜Õþøbñ¨?ÖOµg8n3¾v~aé«1¹Ç³Ž=Mú&Ãô‚fBŸÉñÈ·rEri GðNÏm×\ð-\¦µÖøê¡ #JòôL¸ •ZdcÑSØÑ)b,’Åî+äÜ— …Ÿ&à—Ϋbë•I±ð©— 5Žë;'‹ÿ» hȲ负¶éÓ>Ǧ$.XÀnÖË*ˆ_¸`Â)^SÌ©×u§Ècók“²ÇýÎŽEš¡EY– Úì9s%çùû±~â˜BÉN w8‰Î]~DQÖ²‰×~1Å”è÷9^©þÖ€L“r=åˆñ &S©KàšðÖÔw‚¼‘Oa6øÊõè":¡4k1 È$mÆï{ªrßïŒ!j‘AõŒ%*•dJÄbÑ×1T²@Ž3.êFÚAÄ(‹¦‰}‚ˆòÒžøÃ~ ŠvÔšpM íqoôÖŽJÈŸ×}Uæ|ú©›´Œš%kP&Y²PØrQÔ·XêJÈ/1¨óì9¬ÓF#®](îk¢/GM´Ø: ;¦åÓÞ2Úœ™ É^ݲfú<ˆsÓ<Ã=—Qµ¼Z )û³Öø†hî.ðÚƒÓjy2ÚìBÒõA‚¾†‚ìSVLAÝås8“s@jÇp7¢×AI¡+˜-k›Ñ•ƒ‰øÇÏ:@ÕT!{™^a"Sí<Dt"‹=háv‚Ð3±?³ L°˜-qÀj ù‰<1¦¶³»î®™ƒ3T˜y óÿo×ó˜]òµVsîÌÉÀ½\t\Ÿ5®ìÈít³I¨¦J ñòº^ô; g‹œ€ž…*îã#y.JÆ:3|šcкyž íO´ž~d MyM4æõV$â?‹¨MKbÏ?ÁH³YÍy4 ´G:Ü+¨T'¨­F@Tsá¼P¶†øg>í‡O¼×r¤zÄï; ËqÔê .ˆˆ¼ÒLê#¤ëPö®+¾%SïôÌh3„ÿäÐüB²d¬Ç¡>Õïq ˆ8\á¶Îšö]d¦éüä!*زÆa{èÌì#‘%Ë@q<\'¤…W¥@Wýž˜L1׫=êv ƒ£ÑÃMñݦlÈ‚üüõ¹t}œü*±wV "ÏÕùá¬Â»3‰Ðã}Rç$0½¯`ò™vz+~µC–_Op,3VÚ}(ÅÞ5dOÇCž@mEû·!ôLõD€Ø;º±Ÿáü$â@‘^aÿhüp³ÚÅÊ%>¶„|®1ºèòEphQ;Ñ¡¹×èö¹ä™ÖVðpXjWÇC1.J§ŒH(¨ì§Ö£jMz—«`9U0†Hpçú*}2šãË6þ(B)÷BÏðôZØdƒö~mb¿ùÕ3Kfû ÇËòÖ@Z î`êÍÜêÏfíÐpF?Ÿ'3µWß_m´¢áctÖiŽœÉ}ž‚ít>g\'kÜhœ«Ñ#.ÈEæ•s¿¼YÐ}Hrm¼G^´ʨ2£WËÇß‚Z«À@¼ž@’ÓxÇ„Bñc[Eü¹o1N!›¥1î‰eŽ‘=Ðÿ}Yw¼”öó×·²µoq±ÂéÔM,†Z¸ŠÂeÂΖÏK« ˆKi”Þ½~"ÁÞ´·³; `Z<Øû¬yuÑŸýpØéø{½´ë\ùIoÉÎ(àQ®]N1›W‰Ÿ³9ö6r_I*D—4 ˜~fì°\¥fß'²›“×L©ËÍâ[“*¬®ê¶ûŠ™¯b‘ð…Íd AmbÁ†k¤;Ðìëh%ôûô„™‰ý12Pš…¬-qÂôN/*G)~Þ¬¾ƒ ˜¬ÀËâ•®‡Èà&¢'NJpÉ‚<ñ¾`^¯«tÇæ×Qú‚Ê4¿ÇUµÀëºr¼¸èYªëó—Aü®A¯ò`P&•ûÞ²žYÁD¬îxž®Ü\ŒhD/n<¶·kFtm„oµ³ÕóΦy±§}˜¬ßõNM"c1š“Ë °¬ð‚°P麥ÅìR’©­Ë#‡¥'w{3óù¢D‹ÇÐÜêm²ÞÁ]Ýn†mH‹Jj—T’ÓÊ-°ÂT!ù@ 8}*ÀËÙ¿¨mŸ)ûI SC °`>ôóhûm*mpGzÞ‰°ï›Ã>Q¿¬ÝkCæ¦ êÿ$—õ6­èësÙÜ{êèî ]ñ 4¯‹–"÷Jñ oWS4HÖÀóËšœ]n°«û”’\aXó³èI|høð—”‰J”×ßmCŠ\(}Ê]û&’¹ê9ñ_{žLÊß(WÊ`?1i‡H+؆©öŒ‡(ãr~Šƒ¦vø)‘’{ Ž  ¨¯o©?8u {ÿác{$ë_j1³%^À§©çgJÞ˜™~k*Rý½Hö«ÊØ5ä9{€¹šH\Ÿ@ÍsФðÙ´òýê6ñmmÛý™ÕÜ Ü×í–5FI ì“vb펱û[Cgdb¼8”¢aj²ÿ”Yâdõ·_…³ˆÍ²m¸tZ8èg°·pë½ÍR gÖH¹a+˽ÁÃU»ñ°÷(’…Ý‘±-Ç¼ê ¾QéVµt’k/¾ée%.UÛ¡ø§8X¿:N„Íñ^öû‡Æ¶%éÍb7´@> ˜-8Bט§ëoñgaÜò>-úSSžÕ«‹–L5wZ£Ù¶ç×Dãç§~êoÝH<ß{³:vD ³ò™ª¥;-·°£vÉÔÅÆðåê—$&,0•"D¬ÄÀ:˜Ìº£¯aWW6Ú§v‡½5äTøœÛ Ìi¨'¬u®ïŒ<†½ðâ£5ƒ&H7¾Oâ%“ª[öº |> ÎÁ0gË<ô÷m*7? 2&Dæ °+s>€ˆQÅr‰¿Ø]­ÿd®ç³,0é༣rMrž×R«mñÍow",gSÅn€£^VVy$pÒÒ§K—_Ÿü-¼´ŽKgXqÞµÞ)rrM¢ ¹HèºéG¿2“b“‚k|a˜amªŽN'LSëø½ïœ]~a IÕŸ,V_î„Ã3Åó;措{d»¨Ÿ53%0á³=™¾2UÏKµ"u*7ÜŸ¤‰)¨*l¤ôTme­3Eæc.ŠÁ5jCXu‡Ã›Ge ý.þmOjʹ̤¨‰Ä"K¬~àY¿J~ÝT7Î{^Œ¤w´ÒJ^žœ±ÆTéÙ?óECuñr|èL~ÐÒ"ßZÚaèô:+öÂe,]G™“>~)æ×ÕXiõU¯€ÍÌ“)0W]:}q«Óa²:IBÞîP~ñr·&b:0ý»GÇåØLm|E*7¸Ã„E½ú¡â³P£#ãjƒE võÆ/%g¸’hD¼ý"|±Î>Àí=Yþ¶cXe ÿiµàZK›`㸃…')I|(#ýXÐÝ;™vR¢Õi†ãl©}!ª'I„Îòh$|“&Hhsà¡UBçýj8.×— |ÆMñ®FÓÛ ÄÛßM8p}qZ'é$ñe㈒"ì2T´¥§‘[“öß°Q˜ºwÉèø2užsœf{—ý*ØÊTXÉ^üZ]Ãdt_-x5†šÓ%Ú¦ÿŒy9JÚUÂ5 *rm™ÅÚ„eW¯ÎHB(Qƒu+54$ß{|Mª¯×6-?Ã_´`@¾ ßµ†ŽçªN•Ò †cÈÎ*€)`pâè¤xZjT/÷äß$¡EÃ~C>ñ2A-ÊÖå£é3*§OŒgÃÂÄ~zŒ#¥U„±Ú²ÒÇÛ¹<¸ØM¸…Vio­«ŸölòB¤t»‰r?qÛ¡ZS¯’gv~ð_xid¤à3•‰œì”•íû ªòn:­‚çv©ãÆØPFâA9~±Ø7L»,$¾Aüù™û»Í%n­ŒÁ£ë«áHjtuŸi$5.Ý¥œ«l‚V†`‘y´iKF⬠ÜÊÂÃþ'Ÿ"ÓiÉu]žÏåŒøØºwØ(ísü›}ø –z³ÐI•m@bãÞoÜFÏð$î11·L»ÚJb…–l« b„“©œsžA¯—‚(-â(É–éP޶oGá|dòWN"D;€ŽÃcBqI=:è¯vD8‹´Â•ÒTcÎî,üÉnp ½)£t ‚+ƒhTS7+g¤ð¯É)ç&$‹xÄ;Ìn‰ç³áCoÓI¿ªtu°­ÚìªbY"ŒÑä£3¦WàúKáÇ—h ±xó3ÇÞ¦5ª%£t’ò²C=ÃÕÒœY  5ü ½ÖÅJØR%›'Þ;®—¬7#P³ÒK}\”îV#Œš»)m8Ï™XyRroXt€ÑîŽÌ• wj>),5e¼[R÷t¶¸¥+U! zo»f¬ø~Ð:Û™"yÙ©¨XA¡¢ÁÚ„/E ÷sƒ_䂟6XhmpÊŸƒx¶”øÏꎤ šñ]›.Dvå®E*XßÁ8$9 6§áHEDîßÓ×x\J`@¶Whèô{¾<.NOùþ¨ÞßÐäkü)(Á˜×É)*=AqTÞ·äÛ ƒ«DÞ_Ÿ­‘ßE9s•ŠM%šG){/“™¹"8@—^‰Ó¡W!¼¢Ò†ÄÞœfÈ”Xä!¡¡ƒ 1¡}jÏùÂ¥0B!³&œUãyY‚ÂRŽ?‚<9|Nš÷)µ7I¯þ×F4€ÃËnøì%1eïè—æ%œ‹–h´ ¤„Mç÷€®Ò×áYìÄÝŒ;‹ òxMóœß&VvE®Ü%ßáF6÷#ß ‚ÔcÐrÀȵb®Ý& ”‡z‹8ÒiùñÈý-Ç´ÒàóÆQ_ +jКñPaEµ”9Þfç{¸³‹r'<·œÝ ×ñ™ÇÏyÓsml†¶g’l½úø§A Ì*å `í©‚«†ï›±Ý'ô߃P®¶þšë}!uÊ]éVeñð° Û›ær8›Ùó ®&æôë&x2S7àC¯Áß]ORËRÎâÅhÁº"[Ðß©vßÃ]§@ w5”tïœÛ¤I£„¡Î•Dn½z*’@> stream xÚweTœÙ- ¸;$¸»‡àî¬Fº¡iÜÝ%@€ww·à\ƒ»k‚%á‘™¹3sï{?Þ굺{WíÚçÔùvµ>úêZl’V   cãbçH«Hék+pq89yØ99¹ÑééµA0à?tz] Ô ÿ‹# šÃžb2æ°'ª  Ptupñ¸ø…¹„99ÜœœBÿ!B Âs7@… ]Ðé¥!NžP-ìi¥ÿü0Z2¸„„Xÿ(H:¡ Ks0@Åf t|ZÑÒÜ ±ažÿ%Á(j ƒ9 sp¸»»³›;º°C 6¯˜Xî ˜-@脺­¿Û¨š;ÿnŽ m rù3¥±†¹›C€§€Èvy*r[¡€§õZ Ê5' øO²òŸVÀ_Çàbçú[î¯êßB ðÅæ––G's°'l°9jrÊì0+Àlõ›hîàyª7w39˜[<þؼ9@NR`þÔã_ºXBAN0vÃï.9~Ë<´,ØJâèÃ\ÐïOZ>¼'Çߨ q{ÿƒ­A`+ëß­X¹:qè€Aή@™¿XO!ôb6@€““S@€ t=,m9~/¢íéü#ùGø©_o'ˆÀú© /ÈøôƒîíbîÀ ®@_ï'þ¡sq¬@–0€ÐFÿGý) ´þ?¹ òq>™ Àùûó÷?“'ŸYAÀžÿÐÿxÐ’²Zjò,7ýwZJ âðfã°qóq¸¸x|¼ßÿVR7ýµ“Õ*€­!¡?7ütRÿÙ´Û_N`ükP˜ÿ­¥ yr0Àøá9ù8-Ÿ¾¸þ¿mÿGÉÿËí¿Uþ? ÿ¿{’supøƒÁøÊÿÅ0w9xþÅyò°+ìiT OSþ_ªðÏ1–‚8XýoNfþ4’`›'g³qñ²sòþ¹È<€Vê ˜¥íŸÎù3®ó{î@` :Äôû®yªâäüŸÜÓ°YÚ?Ý'.Oöü#|š¥ÿ^Wl ±ú=tÜ|üs(ÔÜýéi?!>€7×ÓtZ=þ04€ƒ =•ž:ôXC è¿-??€Cêwè$ àPý r8ÔÿA<­¿‘€ÃüôTgñpXþ¸ž,Ìüäp€þŸ„ìÿŸ”þŸ¤ÿOçÿ >)CþyÐÁ§…\þŸ:…ý >)»ÿ¹Ÿ¤<ÿ€ÿu¼–®PèÓóÇ$<ýðè´D_œƒXŠ„ØÕ„´ÝVI’»³íŒsóbö_F]£êmË’ºíiI‹Þ]ñäF/HvÍìFß­ãq=6ÚëqÚ›®ù¼&Z¬kC¶¶Øbõ™À»?rQvåÞUêì44ã[Ù5iº_KL3³:_ìÌfÈ‹¾lª¸)·={ÆÐpÌŽ0ýŒDP!¤]2£½BªZrz¦CÎåRbü$‰Rîàîýçn¾Íþ¥VxÐÆ{òÃCL'¥ëŒÃWiû=üdJf€iúíY’‡Æ ë¶@F —QõwåJûé žD— ïGåës|ß„Á„Ô,ð¹T÷D  <9L’Í%M¢tŒVg“PÌÕ.õu÷IY(ô?&BüÕ¦h¶_“§è¨~Zôþâ×ùÄÄMÆß$æ|¸Î³p£5ôs¸zK6¡Çkÿf¬dsÑ>ÿ³OAÉ I1]p¥m»¾WPäæÑHÊÊ7žÓZÜÞÙíÞø–ätÝмP<¤”ò‰,'uömú “ÝÜ„e–:$ ¢w¦£, û" 6JSèÔDîð“:ªo•FÈÍ}R™˜Žîú¯xqxVù™zÁÃsõgþá7Ãð€ïl–ÌImIîñƒÄf‹7ýfI lîÔucçw;RZ•{øû>ë ÏÉÑ1[ÇfÌ(?TâÝë&Üä Ú·'Ûí £GãÏÅÌ©Eb‚Öv xè Khê}\…á[÷Ìù§\Šš–É.7 Ù´´„#]’é0>YX˜À…÷TSñÿ*FÜ=#––ûŠyBîbäÇ/=Ú´ê½JQQÈ™x™×èlji+ì Ì?̾+§BÌ‹ñ5Ñ&ðA†‡ƒ––´­ÝIÉu>ÏÐ+_ù¸Ð‹4PeÌ©¸ÎŠÍ:ˆ·0@Ò·a;½u|Uãk…w‚'‹Ê×›îš9FZ&1–Q{!{„„kÈá[aË`ü‰GLÒ鸛!Y¸<­Õ-ã‚ØÅNû¡×KjÒS«’ù„s/ŸÃ@ñªÃÀJDé}òÕJzP¤s¢LO’wB¤[Tz³’rüÜ]’#!÷‘b%zæáà«4ò!wv–fm“¢”Ø®ùÒ—mÏøc ©™_ü&+>‡O9L®ÖщZL@(,kš<×Ã>,Í(²Ÿ(²U ±²µìàCÒyÈOdpÕ•,Hç-ic.P]&~-˜j9G¨Ù®ç•{ZÆ.ÃííM\TE.º9…ðžéü¨©±í ?j=H'=¬6r"$=Ïé\ë):I¸hêL©Õn,tuŸŸ{ÔÇê4£“Ã÷ÜžNöäàÀ Ëϼ/ 7 ^Dl픘ÞÑ8¥öŽ—iÙRÏÆÓÂÉ÷ NÑm—mÑé—“O3tž2´ŸQ¸.?](ûW ¼¿Ü>†áue·@ÃÔN˰Y]°ˆC%…^êPÊkù·Tê’Ö“¨oÛtˆ#+©j_9óòFnå@ôFäÎt¥ƒF«kCÐu„ îPš¡™tÌ+âWxtº mr©¬²ñS“ôC³0ë{§~†¹²i÷¡aÞk›Å¡n­§_è$ª~ž>“”0ÎDÐHiÇmk0«i0q#?Ão†wI|XàÜÚùÈP<Šn LÀ½dUüa^§ù«bfwÉ#8Vì”Ù-#ÌË©˜Î#?dÄtH‡ù §6Ûn Ù‚[¯ ™R(±ÑÓh}M$G'ÅH£†D/•/_±òh|ÌQÊ›C7ÍuÅò®<±#º”E Y¢ÿl0ö†OÊ Lþ EǬzo¸Îý^N4aÛ‘@¡ï5\R OÆžGØ ð:#ë™–¨G? †*–"})¤Þ!i>ZejšÔuEH+²mö†¯ÇæwÌ$%¥CB=<Ü b^îmé¾9‚¾Ž$tVÔdŽû&ƒà{B]¤ÌdÉïh:¿º“l»•˜uFWR¾\yÃù¿lüiIާoµ«¶¹4Óo„ë©/Q!Ѧ¿Ä6Šÿà”hµz\Î`Ô¬+™]V>Büq„Ðq5i‘g U"V™x°Çà 'þ8÷}ñsýã/}!æÀÆ%ü;<£…sf7Ä<W¥L“þ,΀/®ªYæoÞ÷ÇDÅ©ñÅ¡«;kéªÜɸìtÌBnò8± mt§'à™äKB^2^·ƒÙÈÁë|¶<& l¾Å˜>ÇÍ}/7Š˜Xüâýœ»zÿ£õ骀Æ÷’%ÒãSü»\¦dòIϦ^WçÚI’â5n\E3B£½ê^cc0œâÿüô9~i†«ÏÞw„R/ææ‚J –Œ«JâFè"§;$ mª~±S÷ãÓuLü³tguZ‘ Â-&+ú×g'JR˧ þ]åÏÞµ²ËؤoÙè*´Ò¬ 05"[ÍÙöòÇFÃÝžÞÏ¿hPYxQœËpK8ÜýØ”hÔàŸ¢õg‹3÷§šÕîHÀVVWc‚NU‡‰ ª 3v”éä`ß-äS†-ÅFdˆÀìÚWî°Š"})¥õë=vÉŒ“ õŒ%O²iNÏ4€=ù†£N+DÙXöŠöÍVjªÿ&ÞœµgaÙ-­Œœ…ý–͹9òáù\ÅJÿ¡Ón²PžHºNÛw¹Ißm˜›@·ÇÀnÇé8jô»Y~ôu›ÛZ›ZU(*ÚÒíiS—…ÒNÅ”ñÐÙ7È㸴kñ—ýªT ÷<³PÜd·‘¨z®â‚M42!ÓŸÛG7'‹›§øóÞ¼aX· Nï®ÌèŒ~è›â_{¹¯ Gᙡê5%ƒü¡ðY 2ÜŸ½à˜KJÉ‘VRúv-bâ–åz…~VÎÊwÒ}éWBq]êÎ(¦8Áp­®*±~¬X£C[¢6øÎ­zQä^ ¸ì:üyV³I¹&­ÞúkgÒ–‘VA4³÷âmﰃ鳖„!]Î~£CÏ—“TúŸè·bFß¹‹^i8@¹ì†%Åg¶…À<˃»byᆱ+Œåäâ©a0ZøfŽiÕY§F¦¹ ®øÌß³{‹ó‘ ±¢Û4èHiƒCjI…žá±%ïv9X^ òTÝaB$Ðe¹YºÉÅÁL„ÞˆØqž©QÃõœ:ãJí«[ð2rÛÀ˵×ì—à,šÒÓgÉQ]™7nÈÉ—åZY32SKQNÚàÓ°¿ŠçQjÒ´|qçÈR¬h†Ð¤—Ò2.;¢’ÈJ‡£,ðyA?#Û? ÛßMܺ"mMùVO-;ë HCBÒQ^6 „-<,O‹6UÏû¼¥Ñ¹*s6„'Dƒ/ÀWR}+\¬òXeG©hO±HªXnV‚Auržî •ÃßÔ{ï¤K7YpÍ4¤Ä°µZZ€À*\Ö‡¢ÊµªŽÌÞoý*~&jø›{Éi^ï†ÚW¾çbù,Ö¯µlºê8OQHšÜ:÷ÚäÚ%¼T›:¦ÍL×ДI;¦ŒfK6ùŽÕÔbÎó»ynDŠ_ÃŽ->Žx)ôåH*»h¶ʪQ*a¸Øë§0ôL>ذGRòR¢¬ê³ƒ¼± h=!s¨P2Õ#Êþåbµq$çÍmbÇË8z“Ø'+ePrœÒ¬Yxéí|þÐØÇËîv¨ü¶9I™Šgâg˜ôþlßB"ù]ïÜú2l!™§y/ç5›JzþÔÉÖT+Õ—¼æOBÔ_ÇÝYK=AÍ ÏÃ)ÓÆâ3˜ƆF¼÷5¤ó†éŒ´mWêóS¼^^1Qh.w2.%Âéî¸s[“‡Îš°Ûˆ²'óo¤´ä0!©JMjêÐü²Øý‚ÚÌš\ÕŒ³š¤ãÞ¶ó³·ó…YBôÀ‰ÕgéÎv0±ºco@§,Ö~Š·…¨úÉoÕ_ˆ™á<6ÌI{þUªUË`i‰‹TZázty#©É&aCŽ8|à¢@Ðñ0~ }EŸ%¨Ø_µí:'ão$à•Qx±ü"!ÉùÃGÃÍ*Êë:¯ˆáÕY¯ÏQš;òíÕÇÍoTFLß²^æ•„h>Ì$[‹±‘ O\ã®C7ZëJ§=Þ\A`lJu“[¬-+ˆ"ô R)Û¯taŒ¹ñ£ŽT¸/°B˜”ª+»õ4g½ÖjQΡX„,Ýy‰‰c:GÇM’#~R©GR×1~R|,p+Es‚²È)?¾Ÿ÷¶;ØËØäèåŠÀ¤{"µ•äáþDÝ5¿í;Q—¶ø±Fw¶ìó…óÄU«ÀÉõ¸:Q‡böŠJQ"ë üe&v† ˜6³ûÅ;Øô(Ñ@mÑ Ê¹:G%Ñc&7‰QZo#z$Þ¶~çûIC¾Dê¡A ;î&ΠΪF%ÐåFþýÓ{ èòû]$,‚–µ¤)Å• ßíïF„ºÉÛëcj"ÉÙâÜM*©Ö¾—G&œnŒª”¿V c¡xmi†ŸP‡Â¥|Üx=xó}ðm§APÄÌp[اñ›ß’ÏeÃÚ7/tœ´ì¤¼ì­ù‰‹B~b=X•¿ÊÂoB|T÷i:ÚYä’ œ˜¢íË‹“ö¶e§œ"fl"T¯~-ñÒ¶ïô5‡9Fö„0‚=•öTÄíÙ$!²kåǯÛK<¸l& Wï˜=°sã(庾 âKJð^î(&‘êœO+Iî¤~i#_…r°ÛºÜ}VÏe «ÏL¤¿¸¶òçeî{6¼¦\0LÎq]šéƒ(òƒpX‹Ç•¬s0×hïäÛf³óA¥ý uÎ-“Cý=ï$ &Ýî yÃOÂÌpl uÌÉï×Xû)¾î¨y~õ9<ð¿—Ï¡¼Z[J|wÎ¤ÃÆµøLœA’5õLjF°cÐ^_מ,ÿÈH¦d±±ûÝT–„ âž)6óRªr¢F £°ÜˆeéÚ´^ <5[‰C¦_¨Å¨âV+šÔ* |+,cØÏ ºRûC~Ç-ý5~¤žD«*»6<ÝÆ[™ ¾š¬4âý·I³¢ÍŠXbÇÃECtpåLš>“pöÁ7/YÆ›ûKŽd/ÝRúp¹pÃûiË4—¹G™^±º“Ke€o#…Sá{V$„ú-A£†2W }š„á´ýyÖ¯I?öCI†ŸæÖïȽŒà¥Ïû¸½Œ03ÑzJYÅ1îîxW†‘ÓêÝæ±¦ã¡3ÜùÖëi.ÊÒÍ:]勿¿˜7mi¿í–ók¯¸Üµ/%js0 ÂhHØÛuj.œš‘[*M"ºµÜwµˆÞù×õè*ºJþÈ;øt‘Zã#²å̉vRû(ã}í²9YðšÏ]ÙW,¾Ìü¶RÃÆ*ä&l¹‚;ûöSzFw¹íCÉ&Ͼî5•`FSFeOuro 4˜íËþ»–¬Í”½ éj)8ÒZ“éc;õ"YÓ=™ ¼­I§¨âÏô¢Ë¯™„}x<;âôw“åð;}Ðtb!ûÄïƒä hns8Ði^ó‚‚èé³ß³‰P÷»k)6•f¶X… ®¬8Ïã̘}èÓwù¡+Rd´?óv!aüG±Ã(Ýx€³dŒ_zí"»£ä3ßöÚ‰ñ'ßGDaýR§éŸ¤Ñƒ\ݲ5 §ÝP}óÆ­f½ÜÔ ¯ýLÞŒœäGÚÄq¼oÇ?Òiy˜ß./ìYÁ¬*†¤mF‹'ò pV3 –Øi¸ßn°`eÛÁÚÔΡ…„=âŒ!“÷xÚÙуa½W>:<^Zû ]FE·ááæÕÌøv\›ˆG‰@Ë>©¼ˆ%µ×û#;½?¿–ìÂK݈è<¨üÈYýâ]Zè9z-MX ’”~¯9Nz€9ú­få–zsUsµ±lŸ+{ø5ó4‰“î+”E‚ÊçÃ~Ÿ¼hu )†M7Öšjœ0×Åã[ngù•Œúíø6*$µÁ³åh‡ìˆ¸MÉ-õcoÒ}W±[[¼ñâám”é"Þþ”MÒ™›©ÊÕnS}YXýzç]£KE+¸ƒeF%`ÚÏ•:mu©‡ÿ¢á¹ÜnWYÒ.ÁJ© ÷UQ¨ÿ|¸]º¯±WtIk¦sô¸|¹ Âæƒ,¶Á¤K2 Óh‰-¥ySÒGV¥@ÙUAôF /™VS¿wVû…ºÒ+í—–8_î¥Ð'¥Ûûµ“QpÃЈ¥GÓ[O|Í<É·£(²Èá÷d¯x=Ÿ)Õ²—`Ë›ˆíJpлØ¨½ºv€î†~UúhLZ«7”šˆŸ3è,BžíÅÓ¹’ÃHØq q­\)? –Øï*.9x”=¯™û±zÁæ”|&&KâŸÐÁµ:oM•©¹=ÞPׂTüú|8«²@±ÿžö6@¿öˆp4ÈóÅ þÌ:1IÌ)BX‘ø#±ô˜/.~“c^Sd{=lºcOýÇ i…QŒµ¡ëÍä.Ú”T0Ò=ßüp—_QHË [6š8WY7EØ ÔýMúµIîáËoÔ}­‡ééėܹ§›­µÌ,vð°Ú[Ú7,+à\¾…÷Wsô!ðÌrÝJY:4'€5÷N>ƒæg£6é®Wƒ ÒL p)P.»ÈÌ>·i˜Lˆû½yl ¶O¦ ÿPDÛ³Ív”}‚L•F†:A»ƒn² ø0Æ›y!®½2]#9u_S‰6ƒ¶Ø ƒGeÀ¾âu‘ä!ŠÌ[ݹâ£;Gb-»‹T—»ÄFÛÉÛÄÜQÕ¨a(¾MóëlhÉSYÄŠã=0Çbs×Ð~5¢¶nI0ãY¥­ÁÕí½Ñs¸ªÂã·˜ú.±˜ÊÈᥢžz5ÇåÖr¡=þÚ08—©:7ÝÑÐÒ‹ñS1­L‘ý[xãõý@2B” Á a™g»g8½›#šÜÈñ ²ŸÓ:Œ4ˆ×œHõàÐz“xyk_“kKó½¬o»àl~¸Fqí‚;χüBj9}a@vê_„$L#ñãK´‘P¡eÝê©ß~ËûlAµ9#SB³T¯ÇóÙô;”9¢}QË@gpñÏ"ÌÊ|I FþÉVw|ǰ{UõX’ûü0êŸT“~<¿PÖEŠ/Úg:ë±É¼ïyô˜¥/þœ¬#V’2òwÇw]#'tV½= ”á<üb‰Hkz>VƒÇíLGpßVmS2ÔvÿäÁ´™€ºvíÑ7bžÙ ËòsA{îüÑÈãuf;ÏáêÛÜè½øÊêž;/í«.Sò&#Ÿ+Ęòq/>«N@~”ª?=Ù|@B½TÊ;ÆFƒ¢‘©Å\9©ŸOWà ?à früÈl]ažƒn1ó8ʃd†Ïª%/Ü’}©v­!èÉÊéø2µ¶ù|×}›ÓqžøPó£HXKÓcÿªB%b…Hø¬™Œ~áB´svå’ξ=Ô~«Œ¡@¹×[fܯ=¾8\P¸ÐÄ +3`1¡¿±¦¼"~Ñ ¡Ë’]oð}Uý§zM|ÕĽ¹BX¡jÝN½UŽbÒAWSÚÆwÆäÁk¨[¶~-i’AŒ´ln©°’`{Äà û˜C²Ob§Ø²íˆn¢ë ø$§nl+[4s›ƒP=™¯|ñS`O·ùÁ±¿5›Õ±vsw½žuDÝ}ß_Ùº˨֎;·Ï§ãAXÛ™¬ÀR’wGþúr6øCï`ì,¨Ÿ:1 ‘`¾y²’œyÓ¸¢í8õd¼ÖVÅáþ^ÕÑUÅÈû·~t”®T~Q¦=TãÛªFDŒf=òY Ñxª­½1Q¤‰éÜBGFalƒ®yÍQçárI ´ô"Ãçu\jí¢¼€¤¶ð§Þ¸RU¨{F B)”ŠÁynèmµ`/K?To“]»§½4ÎØ˜!TX\VºÒmðýðmzTóú¼±o˜A“1L9~‰šëš¡$&n„ƒS}]ÑÖňIët{ I6õ¿Uý­¤|#* w™ „7I{.Ñaª7À“¬ˆÿ²rÁlö­”Èp¢žØ^«ˆÿ»ÞñOmî¶Õàü›-}Ÿ¨êf‚×%4«‰!¤Z•ö· oÎd=Oꪓýc*;áθ1•\{™ô÷8帖®–Š¢xFŠ\ãVªšì rcË-½qË99ètín#ßîÑœ^’«Y—Øbœ‹]l·?ÐéH¿IN)—éGæ­Á—ëÞFž’IxÈ&)÷ zâÐ.hã«©á½ô{¼û_Sˆ ™×íñLº•ä`~ëZ ðÖ¡ï,Öy¦véîÃqJ\Ìò‰XO}¬æÑO‡ñØ´êÊ<ÅF“Œxvˆzÿ%[Uý²SßþõzϼJ«IeŠÓÚ¯QÓ/~,²Á…‚D?¥»)ÂÅ£‰ÎâW•j;ï6ì;’S¸à}Þ+}éS—ú¤tðܼMÃ{umZn•º•@­K!ßú¼ëÈß&ºÉmNA!\5ǥ܎…xäíà39kKÌöé$Ÿ0² ¿é|ÓÛà,ÌI¶o(ûrx’ìÎòí!¨“ ­×ó—Ö|‰lt»ØÙ(46}¢z—Þ¯àÝ, þ±>Ôv5«åPˆì„4ÿ#opq1ÒѼ 7Í…'óöñ}~ ïTœÏ‹æÈA¤k§PòÉHaY¸Ú1nǃ”ÅO>¢‡DfÙžñ9VzgŸØƒ·6ºÆåð]܇igÞ?ò.– '#!‹Ÿ‚Z*J”×­’SpýPIm)ºQš6Ml;òÃñãê«Ô„à9XG:¼Ç‚’G[S&.¢ ¼(Ñ µq£üžðÛ¬ñ‘bNÔ¬¿´Î0ñ}D‹óù„ƒ¨¤äÈÞËcg>µã˜;ö]/Gv,¶j‚BÕÃ<„j£w¬åÎî&ˆ©UvJßlQ¯ÐÒf>—´ÉÝñ«|¸§æúÑõá;þ¯5KR5¥N%§ÈWÃPo†‰D—T—Joж»!¹ê7¥bô!VÈôaç¡÷¾ÎŽÏ\™™Ùü\ÓÖ2Z7 ¬ÒƒìÓÛZÔïi…¦_ú‹Ër±/‹-mðÏ“a´Ýþu'pE ôï5n#Ôãî4‡Ç >¦ý :eÓåM8D7¶½ÿЀ9;g|TûkÅÖ—-´ô@íKp#×6þÓÀ3ˆx1à‡’®•ù1çEÃîÝg?Vu„X¡gË#!3e}ÉÅ[y¥|ÙjÞ©Èä†sá¦Î ;ô9¯t¼L(NÆ<_¡Ó{ðñÌ`I=5‰ÿPX+IHÍiÕÆô&œ‚(—Y£ŠšOYD¡ÿ»ì±cžB¸–Ä ÀsÎ2PmpTû]»¦„ÕIÒaÂþuËç©‹éø¹ìˆùc±üòX °éΙè›Q÷fC·U—ŠŠÎPÝV´kw¢úOƒù:CªªUK£ºÑBÛbçývcØãÚíªâÇÕåžs ØS·¢k&áõ\Û¢Ê3ŠÜ2㎷sMM.Ê ðwÉ exm½2\­Š½°a4‡›ÛŸ ôZöÅÃA%Ÿ3A<a ŽØBÿëëAÉöÂlÝ}wª!ÓçX’–Q›ª+“}q]ƒ žŒÙÔwrru7ôöü‰µÅ‡·Œ—Æå¢U\‚õs. ïN(º:0úUÊ4 ý/Ÿå­Û²â ½CÎðïäfÿŽŒ»Dÿ Hf^þ1+/ðZ4e95û›Ñ‡á&›+õh:%§ñPà5J}v´B/9?'¶AVËy{}A¦Àï!q²ðâ2/h³Ç{1f‡R#”}.mu늹mXü«cUNݯO×N˜ooöO8{Ev;ìŠ\·m(ù#@{\ ò‘-"Î<â]ªydbò8Èé¥ nÞr²)-¼ …ÖL¥‹÷y¤lØÙ‘ëD_ˆÝ¿ƒü£7ðƒK÷ šõv¶Ú—•Å~|ën˜Ï@¿T+~èÌÿŠw¿Ny?XyßËüü rNµ >oÞ”§±_}Kë²4³Ó;ÃÐÒdËiÒ`§Â…Ï:…U¦-‘á…A ¥ž½±,:õ;‹4mß“#-—ï.û®E=ÞϸÎ<žûù'Ùø_ÿÂGâ4+æ]¾ŒÃuÛ(‘Ä*›æ¨7Žj¨žÉºf‰§ïhF’F†ÁØ ñ˜¶Yý:Óè ¾:7¡b·ÉT›>w/œ¨Åÿ©‰3Âæ#~œD™ L >·Ð«±–Çi‰FÙŒ´?ŠÞ¼L®Wñ y)¾U€æMÌh”ð`Œ.5Ð]ž]nŠUîQ'z³ï {Я9öªA+v ÐÅó3Òa—\oNn7S‡£§8=E‹Yî \aø).îššÞ%©ç(n«9jqfÜ"÷äª;Xù€_²Ü={ß2I ;B—µUnL¢À_9~L™²@¯¬[$¿–í…YäUQ^„ú >.°à#Y7És}v§æÆ/ÒD¬¦E½Ñsz%«mIR…¤{Â:> stream xÚ·T›é.L)w)N @ñàîî®- @°Hq§¸»»(P¬@Ñ¢Š(îEŠKq.™33çüÿZ÷®¬•¼ÏöýîgIèi4´Ù$-¡æ`9¨#œ“C ­ªªÈÉàààfçààB§§×ÀíÁÿ‘£Óë] PG¡YH;ƒAðG™ þh¨ u(½±pr8ù„8ù…88\‚ÿ1„: d@®K€*;@ êvA§—†Â<œ!Ö6ðÇ<ÿ9-˜œ‚‚ü¬¸$ÀÎ #@·;Vl÷/ø˜ÌáÈùöO%U™ýWnÎÇè.ÿ‚Ñáÿ@®ÇBÝÿ9@?àÍÀâ³óãþXžÇýÿñ8ƒÝÁèß§¡Âomkß¶^ÖH’»±mŽˆ ¦]p±™ Â{e'LW´³³æ”Ëå¾÷pÊ™Øv¨I9]æ,ÍœzmÔQ×{ð\°QËm[S›ÇM?\<™JôúEA;Ó„¯Ÿ"E%TêÜ‹ A‰Û‰&niÝ«Mãý²¶{6ѰLŽ_)¸U­½³¦,K…˜BPïçš¼Ù|@g“÷ŒäeîšClÐz”QxªZ­²Hûz‚[5îJÿàÀ^eWd€’kàæ]OVx€B†¥Zo¡û6·Ôu/ßË\ž@bϲ·b™)å²VíÄfãdϘ†1©“߯,É*Šó§ç%lP*Í9¯p+Âr>'”úéÇ~±Ä_.zÝé…ÏKï×(í”Bƒ•=榺ÇWnß(§*¾í{ËȪš z_¹ñÓ§¾-ÚÕ*±åeM Þ†, qÓ®UPA}öÂcð”>×k4›V±’Á·-þxÜÜX®´*]l`Ã~”bà /Ožû‚Óöv)†9§êHÇhü(Ï•ºüëCNà—z‹ôQÒžn«ÞÕî«Æ*ýÐbŸ÷ž­¼û+3x1QP!uλݎˆ·Ñ$ì-á´ïç×{ÂΩ*ã,ÊÔò*®Ïˆ¿öA[¸Ñ]Ë¢®÷<ïö3jè°zOär "a½‰k¾þ‚^ D±ï¬Çb-©êþJ<’ÃwZÜÓÍÌ„^í,Ä-ø‚x«Á7›£ªIê86>lóŒ1X„šA; ±Q­’+g͹‘L“ȧö1[ËDPÙßýÈÚ;ã¶&';ÍŦ~ÝnJý`þ5%:’¢Ð+Z¾î Bi<ѧ¥Þ'EÜhÌÎü¼:Ù¾’sQgz›TDhÉuÒì¥öéý¤‚عŒÏùê|v|¯a2vë~ýNÛWUAÖeØÏ:8ÍÛ›³”ÊAÞfí6Ñ¥æ~L]n†A‡¯8l“Žj ø=.­Ñ ÒlHµ?0 ûùàÃîÙ&v­¦M ›iSô^r{O½ÓmG­Ó•JÓh°Du3¢§wJ|²>„ý£à0SLz¦Tˆv̲ ÷hl¬]«I”yBÆ‘çP3*c(˜ÇTêÙú.2þÂMßÈ5ç!ËøÞ䜟ú µ\ƒ0h–ÌMVEøÓvw±A«…ºë×ÔÆ:²]¶Z¾@–Œ â]@FÀ†§ÁB¬ö,73[Fï×B€e#M£¿°%OA¡N1Îw^!ÖõkWÂÊ±Ì ÓÂ,ž£D(QÕøžXv€çEš“Ën½b §>s¾MÎhÅëæe\†`qðØ·_ñ¢a»VÍ"G¶Ê·1“tvMöKô¦gtƸé‚ël=Ay›Ïí@*C~d Wi:£œ^cd„Žyá1ßräæ¼ÌuÚ†[­ž…¬íç½÷ W™ØcëìD4È\,Y¹þuа,&@0·Q¯“7;=Ðr˘\B¥Ê7¢OÐÂ[¶))ºHˆ=nö›°}Þæ…Â·æ ‚ZhùýOœàoW¬®}:ñ·Æ“˜jB´µ& ’=žã‹d¹ÔsÙ&«›´®µàÒwbÆêf·¯x‰MEó*«ßI;@—79Fè+}òaóÏ-xÙóˆEàG ˜¸É”I€5Ï,±{žî‚ –†ã&+ â¨0L·0Em€To³$%øæ†ªÿìóé8í{e‹-Stô3±Û/·:ÐqÑ"f ‚¦/C×Eþß_ÀžÑ¥ëŽP€Jüký³y5¹^q ‘d$1”÷â¼|°ÐS$­yÊÇhê¬J{¶ô÷Z,WÛ á2¶€€V/xND)¿:§rõ˜¯¶1aîRPþþÁÛèlÖ0Ü Lu¯›•¹¡'•ׇ½¼X°äyM.-¨µl¸“á÷”ï—rÇ©^ ñȧ(”ùa`)_§ïP8ljTBXß½ý˜[Â’Á®Èš‚atM’»+~ÿ†]&m¦9! cƒ§Œ¦–9\¸®{Ƕ¨©'ÛcCô‚çýä3ž«ô³åº…[IæL3ë‰PÍòµhŒ%?„‡j4±t©ßJÃÌ·¿J_vK#‚wä^3F¢Ü_Å]•ˆD;#Dì§µ¶˜žU£àMX©£ê/!®—å–½¹âXümL¨b¨æ=Çü2QvÕðm-àÛ²Š¡Þ«róŸ<9¯‡9Þ Û‹ÉNÙÕú×ÒôvªÄµ7^æ÷Çë¦Ö\d®TCí¯u('î=2{Àº}}·.Á’H YÐ`nêocj@µqúƹgsÀ¢ZC2Y’ü7]N‰†v  ¢pÿ¸â“ÝQ9Ï$º’vÝY 2âSû+>w§•™glE ä¶ (îSš2e¿J?2ãÊbkñŠu-x~•^•ˆ „öòâö»«È|íL‹hô»ëU+¡ÓB¨DîgYõ¹oqÉ0¦;æÕÎMgÍC¢ËGÇßE¹`uoZ»fw^B­yJu*ûúÛÓÊ»?ϱ·ƒÊ<ÛR6c«qvW&芥Ê1Tq?„š¤ˆÏÓK3 þòä9#œoø8Œ]ÌÐÎ’½3Z?óä.—2îIÕÞ±áÙµ~jÎéK±+^=»ù¤LUå¹(±dZ$ùrk¦óUËd'>*+ÍaJæõÓ÷ÑÑ0ß¡£ª£pŒg ‰’w’žßÏd!Y¶« Ón¤û’<O(k‡-·^¤5‘JË—`û'ªåÖÄô,{ ”Qøp;%—Mõ›™m´Û 1Ÿ#¼ª‹õ¸×-¡g¾æ#7š=m”ÚZMœ‹ÜÝÔˆ¢ƒ=µ}ïßÙ·ãÖ f”-AªŠ”ʧr>ÞNÚt‹{‡Ž\¶ [²mƒ} Ð>äwQ¯¨Òè2«›€Oƒh^pÏ:fúÓJ‘üjòöÝÑ;ïÏì^©5¡ö—1…aŒ¥Äs~Ò¨i,_)š(¾¿jº‡ÑŽqA¥8õt²å r ÑLËÏ—Š¸‘+áËZ›L{:zw;š;ét!Á¦#lŸ|ì|UÆ%~ìW~Æ’í1©°™Ýe²«Îl†  ˜OÆ_J¸˜<¿t—`AÅÙ#Qÿ’ñ*òÀ¶z]ŽPg¡u ‹•tD¦5_síb•T_X4käàoaÇ ýÀ²å‡:¼µŒäß%»j~É*]åtÚÍrg@°§X˜Ù7•†äÜf4ßø9ðËÃÚjæš°Úâlù&þstªª:Ëê›ôѳ鍊õ‘/`!S§vÏ ‚F$ó¨q¿«nÎàá á^,Ä™¼ÿ¦žüÁ~qtÌC”â¬ÌÄ“W6*€Ô“î>pÈb‰cÈN;Û&y„hSêì‚Üf†¬ô5ñÞ.²µyX^ÖfŠa[œ((PH°REn–œ½.!I“5’PIé¤kÁ1~âxvT¿$cîú¥+Â&;N¶œý¤c¾¶ØÁ»Qý±ã¶+©]¬â§²»wwñÊSx)åû̸1ïqýú0ŽÂaÑ-Ùx‰ê–$öC.“çºb¡\FJ±JðöœÆðbÝ”põ¯Ùþ™ü·>úY;lÇ ª«’#ž.f.æ>q9Qßïº]š$M]Zˆ©9ëraoqÔd?W¤ÚD.ÙÉ›™?¹Q e|¤c\:0Ñå&¨vʨŸ:?\?•F¦­xpíˆl:·½ÇCˆO˽^’¤œü¸ÅË^æ"ÔnÜO.¬ÀUÜV+nßQ_kAˆ¿q Qü댌Z8¿Ë猙’ûãÍEB’îìn€›^ËÏvÆ“ ™#yoc¿ö=]ÿY, Oiý²×÷QõXh2ùÚñî3…¶ÿ9/MyBN GrÄÚœD0MJ£ï† Úä aL¿ü“ú‡S$Ê\“ÝQk飂øú€Eñ«í½OáhSãÄVgßÇÿÅ ‰Õá@ø-F÷é6Ÿô;~yë˜æ´«/äB8WR¢‚tç(Çý{$t™ÌùâϯlœqÎi‚ШÁ•ÂÛCØþú½ìe–¾¿äï9dÓVGЊ–$87‹£Ý!5zåN˜ñÃMÕIïq§a?¬‹Ôž¸y/Oe-¸p99Ü‹ç°Ï+7^_{Ÿë4óâ†tæ~Ž-U+8œÂ]yÖn··Òc¹âÞ¥h#+ÚTVlœ`ì ÐIèôÁj9P ¼ÙÏäZ$­zUŠ”~¿Ûû­&ý[‚Å›;f]­»•§q¿HÃÉ+¾t„¼õn5ИÊÓkëeÜñ\ßuðrm‹éVƒ3çgXà"Ȥ&KÀ0†ÛM-±efïòPÒ—–6"Ë•]¦“b^.î×’=y*©žËXâòÅê=ã lDf^–‹9 ¡|è[n¾~ÆM#úFöTs')•qOFD¸Î¶¦gðãõòwÅÍ+.BÊ‚ÆåÉzëùįjÚý}\S·-3Îøì!‹ëüߤcL¤¥òV#·kEãÆÍRN³ìÞ3r/v¤«É³•·“8ê(Š—NÀ8S~c˜D§`á™iøj?P‹*/>ˆË^m)“gf2Ô±œ†:Ñq¡Ñ½ž‰ºOøÛöÖ uó+‚˜Íòœï~Ib¼OÔèëï…Æ1Ã\0)®°d‹/ìíJÍ%5YN‡…µâ£s¹²>dDäx8Áˆ€Ý ¤`û™ˆùUrVnóôõ\’0*aQ¬L$ùy??O\~mgCH-]¸ÝùÆW‰uÔ†’´HªØç”ç„/kÁÞ7igæÕkTé˜p•Pñ©ƒaÞ£“»íêTLËNc›¸rÉp´õ\ÄBQ÷Úâ–^äÈ9¬ÙÓ­^чDÜ;–Ôê uÁÍIŸa’|#ŒUVQwÓ¨® ]äO±Ëù|ꨡ¶RsëâÁâolÊ ŠFˆ§xsæ!“ô½ÅA¿ÄôE‚y$è!ÅÛ OÑlç}7òõ¹´±±+eëÀh¹$%¶<$Úö‰×&Ïž#v¦@±ðq2 wŒäÓs–abfþÆC…QÓKM‘3NWuÿæ 'uóvßxS- \®Sb>YÚéÃø7<´&Dú©VÝ1DÏØ²\ÃnåG }j ›<-ҧΪGÙ˜ ˆÇzÓËŒ•*)ëúÖ‘ïžÜ;ˆ?àt0pÊéøÈ·rç/—jÓS0¨6yDJ%¡™_­7•D³ Iº)¢ÿjP¼ÏB+”åÛ ´×wyÆs©:hJf¬–îû2͵šòF\ÓÝv%x,§h5ɯ #Í›­ÆBéíY½^î§ïbÖ¹Ê5YÿTñ{y–WC¹RQ–#:vE›P™†tø+|ýBã^¤M¬ôuØ' &j¤®ímk²QºùXÒ•GQÀhý`¾ÉL,ê "gµ˜HäÀïå°ÿxXSÿÕED¯Å ¡²Ÿs"éW>53u¬iÐI*[Y÷|ÝžŸ'”7h x¡¢Î²ò)®¬_âÍ C7aàì³¾Ò¢K?•fvqŽúE¶oësÚfÒ˜üN`Œ"âRób  ^ûqi¢®£¯nB1qÄîîNçžàþï8æÒ ‰4¯rÈZ@YžÐô€£Ž&`zæY¢t4<ê¦ßÊr‚”ª\×Úq;­ƒäöã‹S¨Ne»M ŸóÜî‰J"ƒ¾aDOkz<`ݺ¼¨AÅR,*<Q%Kâ†û›Ñ¶š@~!ñKk¤’eT]ñ%¦)-súñ›9hÔGÿ´m±>¬õž~_¦44õôŠwýn¼_´C«ÞvéeŒ`R: É’RE»ÅæC¾KÖE.ºÐèûÌOR`æ­= ›c{†ùå|¹îE¡æÏ¸êE;t/"Pid„Ê"ñ‚é™QA$뙪î‰wý´¦*©×âŸ-ñ™¯…B§9¹ŒùݶðÀ0ª4Z™)Ø‘\y)s\†ÌEÎcêŒU4C8™/•÷“gX>JˆÙÙæ å“±Û÷Ò¤U¤8H)ù}þöƒ¸‡}ãF¾¤Z,Dt®ÝЙâô9ëeÔ{€«Ý¼mÁ¼·cn"“gJ~ Õ»BÓ+o×HÞZZ" ø‹—'!›íÍáìOä dPµ•Fõ‡’‡ËÉÔ°$‘^­;_­­Ó|î7ÿ,¢Í 2¸“›èf»Ø¹öƒ:ªg¸òh>S_¢Xí×°²ÄwkuÑìxghI‰î}-Ø+²´‘‰~‹¯LWöiU¸-i•g‡æwÿ”dJ_M¼Ûc@þ>lvzœ·]Û »Šp?”Ï¿V6_ž·º;p:D¾F6cBX¦'‡ô÷º¤Ïàì¦^5øÒLé§OõiA»èåè+¦„þx*¯ Vu wmƒ¹ÇÃ"\e­ÃÑóÞ&®–¤î $9»Œ³ªçLWW’‘Ÿi†•æ"§±(±ÍZ8-i;½qB€¼ Wbë’A®Ü´5”FáÜI¶f1`ö$„=¹óëõªç´_à—ÇØ¬«Ú÷ìÕñá‹ö[=¨`Tnñ¹Nö…,?ìÜ êûæ‘H„¢_Kåµlq§ò|RÒ@E£ãR°X´æÍ5±|ý­gD/épkãâ…¯Wi‘FcÈ;”Yœè }}ûœ]ãìŒ9€Ï”°Zì/+GwÀ~÷{|¾Ä/ÏIÛZùfb³–½}yâ ›¸°G‡v{± ÃaÄü“akÊãgû“ðc/Ò%\ŽC"b_Ø‹:}m…ÐV^:68n›LK­+!Íå}üë ò¶­¨TðyìäÒ:2@ òó[;æÔb¹‹o½xà¶9ÍéŠëqY9:Úþâ“·è'\+Ì$Õ—M¯u«KcÆî_w"‰<}ö…‰ެß<%åš½RWØ>m­Oájƒâ² Eqü ›§]a`J÷‘^hÏ÷§@@L>P è2§UÃ3Í=Ÿ° wuÂÐuËTb —»ÄÁï: c¡Óp›ÎD;y@ŽNtMèÿß…¶>­=E-­ÂcgG+¤ÃjU yÕ]¼{MÞŸŒ¬ ¾Bɽ£”Ñk Xï}@˜C}ž«¡ÆµzŒŸ&{ú¤6QnÏtܽ×èB#&ºµâ¹dèÆ¦¡¨Ãƒ à )·-ýA=d®ˆ+›¬Ç<‰Õ ;y‚ãžäYZCrÇÛ@tç† ö¼.3ÃPõ©µÿЉ¼’Š¦ÐØÑ£ùvZ15Â7gËó²Ö›®ô©û7˜NÝ~Ÿ’îDê ³ôÍKE0ßázl"úéùõs¦Öfú +Ðx!Ú ¹cS‰ÙOÙÚ™±´E¬¥"n}çÐ~1ã-ãCUi梬ñRKÖ ijO³¥+»ZrAä ž4DÄ”ÎC†ávõáó‰×jl…µ/ÑTºhú‰uöæ22yÍÍ®εY&Z(O¸Ê‚¾&¶4Å-mÓ%FæÜ/f,ã|§ZÙçRç>³´h±n̲ÎÍàŸª†Å½ªyQãt#7c—˜«kM¦SÊ^VE[ÓÄ„§PÒˆ‰ü¾½ú†Œ¸ ©ª¬´·\Äï§4÷¤Uç¼Xý«Òœ!ƒQ'‹ݵÚi‘F•ÿçe¬c’¯¯Î*rÔ° O®ß9dDP&Ù]0’\žs±Ið%kĺԴпˆpq`Z×{æ òýêg"ÕíDËÀ—Ö÷×=F#/Caø'ñFd O[H: Õú[¾„Á½ÇøG_ð}ɶlØKNÙ;ò—g§Æœ-¶qà{@I7¸±8-cBqpÛÛÌ^|)jj.·u±Œ\°‰ ŸÈwkåF‹ªaÀ&Õw´Ø¶sD¿it$÷_L@1ý}•05B_†·\5·8J>°9 Uâ³?|å¤Ekr‡~Ǹ—Y4˜Ã”ŸhY–s7Í_Žþ$r)à×í¯Œ¥NÓyiBÝÚðl%jðŒïîíಇ…Íá»·ÎyèYáÀŠ|N1dR> ÂgzØqÏ#Dy‡ëG|±Ä¶ìßí³fF–K IÕî_c’`Ý/UÈçs›¹–9À°#%÷‚%¡ó‰dÈGrY”¥¦…2OL.iVïA]JýÒ:xÔKän Ò!óV±vÞÔpI¬é`ÌYíR—'›ê}†ñl*+©çÄóÎ;9É÷6ÈC…DOV}©©®À9/¼ »2û© Ÿª%+Ń!¡bVÆmwæGlÞ%ÎæWüº[ ˆÒz³ V͹~*03a!×fØ€Rõ13oºæÆä`“ë ¸¿bñâ$ºnEÁ®Ó‰À ××¶^ƒíüís~Ž1Gž‰Nä&Bô7Ž$È0„_ {"2UV«ð˲œãiIÑľ}t[“ÿ–Ùs˜kGž ötü\wùL}Œ œûqDZŠcÆ´¡Ò’ÕqjªPžÄ®©V 7Ï—)ŸÌ¶ŠôGÔ¤›(¦{•øô“áádÿŽß,ÒrOc¸’ÿ¹ƒW]ÞÆ Y¬ºm²áò‰M,:ñN–³¡ÕÞ¾(&ñÕ½3ì¡Áý¨PѲó¥@è7ÝG¦²Lºç èÍ*Š’ ‹.(ŸS<Øû>êë^§¯TS¢4  ?XIìy ª½‡Jbmâ®”¤"D wVVD à H‰‹ŸŸ‰Óçó¾KÇ+™ôç#¢âÀš¬mŠÎ‡Ø7>¡N“è–Œ‡(a{Ô@8ÆžË̳‹ƒT¶iÕOd¾E¡"Z*r_§ ÖešçÀ¹\c˜Ì·jätÞ}Q§iˆ¡%5»yšŸ~“ÛDâ䧦“â‹Q.ÍÄÒjÇEåV*î 4umÕMŽuÜòêëᣦ8ÎäzZñ~ûA~¾ëÊÝWRªTÂŽâ70]÷„o<Ê»Öh0PÃ+TØ­ÐÑÝ‹}ä'JëþÉ)Çu×€´_óblÙStG)húþ,P„ŽŒnUšìÄî6"C®Üµ æ*?ÅAß-ø;¢0ÿ”åóF9â—G>ˆoBø¯=æ4Gl œ‰fC<Å)—uç' k?Î!¶œ¥}¨Ôõósÿj†6a¶Ùï3ü©ä©„…»q~ù«„ $dEÆü«žîœËM$:-ˆž ß‡(hʆ J,ç°H|)Ç»XškØS*ø¼êL6 vÎI Ž¢²R«ÎߌæšéÇÐk™Wß·di¼/–¹2|q˜Ií§z³®€2Έ‰lÄ4Áψ^8¤êÍQù:°í,«„¬JmF¬-‰…ÿ‚Q™¡ÀxJóWÉ“g…XN Ä2;Œp޲ËíbË™µ|¹ô6Ô"w¢ÈYß×Ðæ‰ÁWå…mRµ5§hIÉá´8«(Cñ}¤c.››¦9"ÈZ–E&&Öl¯$aM/37—÷aë´ýf!Z…¸çdn¹¥R\k\3UwÓ•úídàÑ—Ë‘$YQùÙ n%µJÄȲ9¢±¢aõŸ9ò+±ÛrU‘¬<ÑZ/ oOÕ:”€÷ßéyæ°Q]¯Q0ˆÐ=ëš¿Z[pET«…¢Ýûë :4×CÙñ¤“;Æ»°îÄæ­1/éM]Ó“ï=sÔÕZ›¾äL|=«Lq‚KºV|lÈú‚ó;‡c%O&Ò1Ÿ«¾9 ±¸&êdW½öòCó'£ý,á¨MG<¼üt^(RÓÅDèvÀ{¡±Žù\òÃÖ’F· "Ö wí×túwÊZ¤˜•޹‘×JP^—¯>çhÒü]^?NGämŸÆó¾¼*…â[]¬`XÐt墔m«þ•ÒI¾Ùaóá—©ê>Õ;s´Ÿc#÷㊘‰qñJqÉÚÜwÎÂTüÓ-çÙ”= ¯*õ²(.i–ˆ›‘ãµíζ•Ÿxñ%[1àw»33Ô-ÄIÅ\réõ2%Ä‘Lukˆ´W.©Í$ôñ’%)opcÜ¢jÞñtÒ]pT½µŸä ÿ6Ö§øC—A…joò™ ²Š Ö&± [W#…$»Pß] ;6•üÐ)HoÊ/ÒþÕ´Ú°w;áqY[Ûõ{%gésÒEÛ4 ×ê¦íŽ?¥´]»rdœfȧÈ×0†(ql^‹ €ð¶²†|!íýy÷ ­q\%0WžÂ 3un̉£«0›X¼÷»‹D,þѦ#+¦æ’T‘".uõxÕî -Ì „IÏæâÊÂU”èågÄ ·š¢7i45ø3°Œ–öàÀ¦ç‚ÂUÝ!p’èÜ›Ž2w:¦h?ç÷º%ÖGR<ñòßè–`´aèeÒõŒž¼~úW½;ˆïðº6•üµ0ZßÓ\Ç¥ D'ùMdZÜ·MÊb­ã”½ ‘¤îFà;äžS!FgG­{H!M.aÙ]Ï>h¢¾ùƺXéø…#ip'ø©2P¡œ¯Å²‰}Öƒ^&;uý•´¡fAË(Þ”…J@_Î+€%¡ÒˆÎY’[«ÀqStd{ð¬ŽÓYЋÃ8U¡º™"psöÍ ›ýŒ…i–}ݺsk.¾Ÿ‡9p/9†M¾7ešóÝ¡<1f¦óD"ºÄ±YjÇWR•*–ô­Šá„3Ñ»ü\¾ïÔß›áÍ5Ä©Äð}P9,¯åÌs¶ øõ¶Ú dJ."u“Ù¶y0)Â*ÜŠÜ~ µƒÞ[‚j¥’‚…O3Ô) ˜,Ïoï¿¢¡„\†œ±°ŠñB»Þñ¸Ù¥@(ØsåÚÅüÙ•äÃ|\ç„SO—´d~¨)&-2ò‹å-e4ˡ¹>÷ÑNü—F¾?qYYÜý¶—q›Dr=އІ0HË(mòótDL 8|(CƒOÏë9{¢“ÞD(Z(¼ìÃCúèšÁKº’xê}!aËÇÁœAD±FƒM}Ì/»ŠëJXmñ6iLÉ€& ²G®5{ŒG07»ƒH\C÷­]ÿøÝqòñã÷‚âÖ¥îþÕì§$!ÏÁ’wOü‰?5¿X4ž{µì.ˆªé…1¿«D}PÁɽ‹bc©Îrw?«k³×bÓdŸk´÷±@ød[/Lµ&tñ1 Â×äK…y¡Öʺ·ÜòÁ|½zyéÕÀü2ÚçH§T®¡åŠ¢/óøŠaËÒ7_šÜ©”<Ï)©>ÍŠDÀ¨ÈA8QVÜ»6|©ççÉ^uÈRï6ɹÞ6TL-3δŠOÿZÃä¢è¿ùG½®?>2–3fšŒy¼¢çy¨ù³yï¬r“¨û•°œTðÚ‰@‚8 ŽºjÀwÒ''gÚ÷f×_(>å-¸O]–ÏÊ6^žÇ ÊxGliÈtèÆK„Fï»â›P]¯1ÜՔ¶Ä{ŠêiŠ+ôT(/Û ?[±Ô¡¡ïÆ”Ý n†ˆDl]Ý©>%”ŠtŤã¼¢éÚiª{³•µ9 ãÿrÓ4!¶\èGÓÂïÃMÛL9ýÊÉÔEÅ!§cʨ¥×o0ïï¯ÐIˆÑ,ÄGÍ¿¯U"ü¥ä¹Å;/‰sI=¼#i´®ºOÑ)÷¯„gœ·ì6`ŽÂâo \€|Éì5YzÝ)ï/#èïð'*¿ùù‹†DJEip¬òט°f¾##‹*v‘Ó?Æ+¤¶ŠéXXAÇxÒÖÌ#Ç·,³¸¡qØáº!*¿T…Û°µ £:«$šSY¯ Œ²'ʲ¶h˜Ú±9}xWè•#†šØ3_e×ÌóÝ*¥3îŠz”f¾ügTªÿ' 0QôúVT8ÈÀ¡Î\cãÕ­ÚÑ٫鱜âw¾Éb–ÖkïèQèWZ¨p¶Rͧ NCµÂ¥ƒ]rð0˜ºE¤l4»?rаªÊ/Áûzj•QjÆÎ¿›ö[Ë” b‘`H(óêÁ±¹ Ó:1’Ÿˆø…ÅÝ\Ç%±>-T‡ŠŸ–uݱ¡!gæþeHç0ÕØèîÌ;5‚Õ§!½û ^ñÅ躑K4øDíε/%ìxæ‚p˜> stream xÚtT”ïö.Ý©’ƒH×ÐÝÝ ’20ŒÀ 14Ò" ‚´ *Ý ’Ò ‚ðãœóÿ{׺wÍZß|{ïgïwïw?ÏǤgÈ#†ÛBTà0?/P ¨­­. y@#(Âò×MÀbq÷€Âaÿ  è!P>%…ӆÞÎ~A¿ˆ¿¨Åÿ„»K”@^P0@› ‡A<XᮾîPG꘽Øí8üââ¢Ü¿Óò.w¨Ð!!.¨í@ÎC¸‚ðýG v)GÂU‚ÏÛÛ›äâÁ wwáàxCŽˆÄÝ ü rü™Œ—€`äõøã7„Û#¼AîÊá µƒÀ Š{üà¯ß¿ß¬PôÃaξÿÿÞ/Ÿ¼ŠŽן‰ÿSP€ûüE<Â@]…Ä¢¨—ÀVÑAÿvüOª:ÌàþéuMÿêØë/ØÿŠƒðÏb:pk!öÿÜ( ´C=øÿ¿©þ;åÿÆð_Uþ_$ÿï†T<‡ÙÇÿ0Èêìû€"­'%m8J°ÿ†šBþˆV†zºüwTB Aæ€"3¿/Pèê¡õ€õ ;Ç?”ùã7þ%5g( ¢÷€þú¶ ²€ÀÿŠ¡ôeç„ú~x xù'ò@‰ ñ{¿lJNÿìCfÿÒ€°äîò%@­e üùQC|~3ÀÇ ƒ#P)ÔÌ{¸;Á¯5ó£vÎûå#øG];OwwÔÁ¿é€:ô_öoqC >;‚¹i¸dØ“º°÷ÈyZož)ì£Lä#ž‘"kê(¸!_.Í|ó_¯glð:çaTÙv`´Mš¾=GŸLõ¿ {0Mú-ß4]A¢Ô½M>–ì¾,ءۅ4€­®s6Õ›õ^™Š¨Fø{ŸjÊr´(éÄMö¿ šmûŒ6„¿S³å}uI ]‹³ŒÎÐÉz )õá’ Å»šl¥w o¼‹¾=ö™†WÈÆñù²d’nµÉBÉu^©×^Ö[Õ»r{àîŠeŽtdΩãúéž§[×Ë&ê.¼ýb-Õ”§Yù )rÃÉ5ß’-§+#aK÷|øG>ʆ°˜ÆÆ¯„$É7µ1žêû¶Û:ºhŸôÌ?¯˜9=”xm²8¹„–Т«zÃî2Hžˆû¢¾L°¨ºðì)yL†[vÌD$dgë žû|Åäšó±©ôšé“né”B¡cëùÝxÛ ÒçÅ=ÈÏ1oåÓÜi9úWD¯®Æ]-M%tWÞý¾¼ëôqëð§ ž³‡šÉ ,Ô¬ÅFEA«tOÈb\ÎbƉ7õrÍä_‹«[b¥§üL¢~ŒÉ|>Òüô ¿ð4ž—•°¢³²OÙ-Öyï>ná÷f¯búOÃè FG‰@LŒæåZ>’–'ïÇ?®g”ÅžZì¨9×{’¨jjv㕤|JvÊÛ¢ºÄ²`%Ã8qcîÉ}2û®§bà­ýFMÙœ !F´R±0¾zÅlÃnOüöZ¤usUNWhoÏJ¯-»œ:™1¢@;¡žÔ$ÍÙ”É$Úm¡‘‚g†v¶T~@Àò®QpÔá§ GNÊÛ¶‘ ®\(¿{#ÚŠïÊp‚Qn¼ð,ØôB‹Ã†k÷|ŠõÅÝŒ¨G¶$:-ÑíÖÈò÷Á9Á‰)õ­õ•Ó®‹L¶Ì¼jÃûΈԲ٧ÐGφÇðù`x¸›6ÏìÞ—ŠmÏ%öʺñƒ‡Z„eº·º‚ßý;©ôÔl¤ý¾díð•ÓìµîÛg’@GXpÉ-®“Öeç†á)ìö$7œ%#í—ÙŒÁˆ†p:¸á¢»z¦*Y6e/¾xXÉ;µ@]1×E}_åá¤MµöÖGІÜõåŒE¦¦þÛ!/¢® r‹¶òä„®‚QðÍk’螆¾DýåoÉÒDíWª®}ƒ»‹šâ"ØŸ»CŒŸ{*‘7^ 2œ¹L«þXçM‡„v¤ˆ—!m…â9lj½35ÒžzH7Œ{¢›$ÏÝSl­•â)·É(È® S@æ„—–* ÆåN´vž§mPÊÀh>˜&Wœ Õf6×Ñ1}ýÁ×P½uÙÊ#vÇfx¢`û£¾Dþ6Ét^÷9“’Å1aÇeF½ÉœÆ‰¨HÏD H¦ñûpzIøM£»=ý„}Ð9€›„ãµÇW!ú=ž7·mUEìù¼”ލJ†‰Üj(¥V¢•Ÿ˜f4ržk͆zAìS×Úò[è!oI~£é‡!Ê$e3Êdh֛ƌ©t-¥WÀ5©i\‡¥š¢—§wÖÁh8w¹sl÷æÃDÅ‹¯ IfAÝíe×àôà<¢ñà\©!’àŽ£Øs6è¬7äG A šÆ~‘¾ùF>¤DãC¯°Ðšës3霌9²àŒÕ‰PÿÈÚœ½'5s?&,dPÞyĶ9E(H0PÏ\ÎÇM²-yÃÐb*áX˜¡m‘Ó¡­1‘·?3Ýw7ÃÄ‘@ ³8V1ÒóhݦJÍ®05&šömÎŒVeZÚ¢ºÆÍ˜Fú½ðKk©¤ìXû¯€æ“`J:¶<² |©2Ã)…c·!s¤Ð=µG¢Õ4§±ÇvØêí8×,YH CQPu»9oÆ`~J`áW0oÑ«™=SÛ€»Ö’8fØ—ž³ÔÝCp˜qó1ÆbRÝMÑLBbin@råž™U±·ÂÉCrUrîבg¿|ðú;¤K~$ÌZ±Ûåì~pé%L±SåQ°a–wV©à Ì}-âq«vß¡ûÑ´_Ö"·M{Cf…’ÓVIü#›Ò] ë˜ ÇVe¿&lŠdËÌÍ Wi­™é÷jªËmyuxI>ö:Îb‡W.³Ïw4òm½>ç»J:ƒ"5ð1_¸·O¹ Úw‰¬ã%Êp57eDcsºZª'Å-ÐÏß׼о7³639ÃIA:}; ”ÉÝ(÷s{‡÷®í´JÎÿÑÊOC yØúµÁ¤€éëg¬ò¦l‚1ÍÜbN2O}tAzh„ËËæ\€ÎÍ´­ãØ¢‘7e{ÍîÈ zb0Öèe´ìÓ&ñ²ãIà×=ÊÄHu¬Žd‹ CMíu:<7)Ib¶:ìaÒÏú²Ä¹ oÎó!™å ."̶Ñ8yËñ“ZA|k ô Á>ž ÿÖXÅŒ€fw²é´¶"Î"éAûÌ5ÙD¹ì‡É4ï>ŽÂ¾—­S°JùäEãȸ}J&îÀTUI nºfØ‹œ™ù^ÚˆõÓ\WZb^ú4_˜vRšªéi [n§ÞH zä¿t¡éZYDætLœ2F¹ÝquXŠ Î#4Ëo&¿|RÁŸ:üù=_Ä#‰¬GNîàKœ%‹WqÖxçñÓÏ UU|OŸUÉ%˜Iwt ì²Í 4'b/Œ¥MS˜à.Ä2HšB˜Êµ ÚtI*!'×dóåRT¬paJèÀ\¡1Î}u³ÊXÛnÄkíçÜèl^püîÑÅÁy_Ë­Œ6=vmîI ÃPM£Øãæ­žý¥Êý¨§‘IE~©çŽåøÖóÉŸÜá&±@|}à Ñæì ö¥ Ábž—i_zArxÊN¤”o€È'Ûîíè ŒÛwÛú•ÇþTùyM¨5¡ºâçõÌáÈZ³vtYéZXcUWÑk¹¯a‹×½ÛèZë*Ëíú‘äxí_MiÊÃ[‘a§z±8œ?kéf)Z>-æum~­I<˜¤Y혬úžªûÒr‚®³lÓ‡v)vpBV1½á ã»ôмŒªÅ(¡÷ÅR54;Œ³;Ö¼ÈWÏñ%ÎLšíòôbä(j™nsWK•o²º†­È “ï)\S  zÒ|üÚC5‘˜¿ Èuó]cº`G—ºo4ÍJZ’vV˜ágz–`¸_¸ì¶b(>å÷Bï_Þ9ÛU±%»-Ç.CZLÅf¾ Ý}´<6|`™ç¢0´)0?ÏW>Ù?2Y|…²fq/L¥=¨ïÐ\XYpÚ¡&ô±F`ÇTp»SpýgË~n,ÈÀŠ·{EÝüuô„z=’›²Ç˜uÏ’lÝ<&|†òPø*«ýg@ô›7)æTòÐyÀhÇÙ#_q9] ðèå©éèæ}CªÓÄÔ?Ínªwν¹½+È[°Þ?,2«$ÓwÌÖHw”ÒSÒÄ3YÙ2D¹ÎQ^xvšCÉ/B"€lï—|€${çÂ-U#UƒÛ"Õb{µ¸iN$›¹º}¶‡JÞÇ5&ÌÏ´Ðl—>™iÚŽóÛrL0KLîrkƒ+츀kwOòN˜ñºâxú`L©ä_´@Ñ=§è¶P‘ä2—ÏAg–ÀŸõÌÏVrl‚$‡xñꡯ‘P®41hóèðI.­¾å3~áá²xüھ˖uj¥×Õ^(ÃU_ÇÄÓ˜´2õùÛ07_†.ãTV!ÙDL}€{€î¨Ä–}U_ÑY©Mð~2ªJ%Ūõ-Ũ„~¢m“p¶UsÝÞVŸMÕ(3C«¹ä™ËÐÔßzã"Çv:”Ú±tIð§ÒTÖïR¶ØÝ«=ËyÙçCv}=ìÉ]‘ô}ñF‹)²*HÁåRS²§/Ï9U‡ô~ä7&L w®¬â ¼²žï›!”ÌÇ´ 3¿NÛùY$mÔóÄáñ+ÄJñ;ï@)Üp|¼ ‘p.CýoV±]‹×…–§9SkKä1ÆJí‘° ^nç<ûTtwžç¢p#ü´`ÄÖ‰˜”\ºÁynaÞ¡ØÏ÷ ƒ©ç5¤òD&ú_äÃí+„Iç©¢«gC"ª%šC#.ÞßÓÄXz÷œPRÃG¤ ´û^/E0 G—Ã/¶²sI™f¢ñœ‡6ò¤«Ô‰X۽ʗ{` -ûÔбžöÉ”*¼Mò6ÃìHEæl+¬é#Í‚óIÔÝ4¼üàðÈò4¦Ï‹ž4SÛl‰4¸fÛV1xJI­5H8쵈X,Ù]°4¦0>n”j[Þ¼ø£Œ„G'ó¾ôн)ŒŽ%Ö~ms¹ýP¼ý¾‹E¬}2ì‚W ˆÉÈ™oêÛìçyѶ|Dˆ©ùúçþKW¼ÊħˆbÌçñG4Õ®c÷]¥&l&™ÅOz½jÛð”EGΑ™ÃíÕ4|ˆ»‘'nêE–øÂô›–âý°ÒêÖ-¶Iïhé°S\͇í2ñjÏz—cîÍP>JmÁº…MÐZ‰¹ì* G9Tªr¹ëŸ†¦~[úi¶ò8ôÀ–÷$ɉæañ‹î„œw»;¡,Å‹¶ _D®qn(¯€oF7fÆùSzô®gÆ~½”0Öû´wpb¼IC±»eÓ:A| }[_%†á>•eXÃÁé”бp·èF«KkLÏÊЙXt”‚jÍã1H2\¼šÃ™ƒŸ¶tú]ƽ-9¸ã£n·¶bý<Ã’Ì<éÄÂûñFµ¹b²2°­D<îëéÇ€*na7·S…¦A{ÏG+g£^“¿|n³ÐÖjßI_ ËT,ði¾¢˜YÉaHèp˜ §ý3œH¶o¬ªF0ÍU[ïÝ*‰ÊníCÒDÙ$vž8½Ê5õ*¼êS%÷“_p9úÔºêù¶:Ää4V çá§Ø7úeøLoÒÉ\_™Pí%¸cÇŠ‰æ>!ÓLª®+8z¯tnqú&ý"çõ3cU£]ŒI.ú~2̧etÉ~šâ²ä‡úQñøÖ=’Úo—1¨Ô {¾s’œRí»Åbθ U¥ÒY"À÷³& ¼ ´O%³•1ßnnœÑg‰ªùÏg^¯«õË-K÷“lùXU•¶¡+ûýz}äçi²W]Ÿ—}M´R²µð좰“ÈÙBçmù?5²›î endstream endobj 676 0 obj << /Length1 1445 /Length2 7145 /Length3 0 /Length 8128 /Filter /FlateDecode >> stream xÚtTÔÝÖ>)Ý]2tà ]Ò ÝiÃ0À3ÄÐ%H£´tHwJKHIƒ"’* R’Òñ¡¾÷¾÷½ÿÿZß·f­ßœçÙqö>çÙ‡I×€OÞaUAÀ‘| ~ $@QKKM  ñ‚¸ll†0¤#ô/—ÍêêCÀ%ÿÃAÑ FÞqJ`äŸPww€„ QI˜$%þåˆp•(=`Ö-~€:uÃeSD8{»ÂlíwÛük à„p@b¼¿ÃòNPW h‘vP§»!`G€ƒ"½ÿ‘‚SÚ‰t–ðôôä;¹ñ#\me¸xž0¤@êuõ€Z~5 Ð;AÿtÆË0´ƒ¹ýá 6HO°+pG8 P¸Û]„;Üê ¸Û` ¦ Ðq†Âÿ8kþqàüu6?èßéþŠþ•ÿ †@NÎ`¸7 n °9B:*šüH/$/ ·þåvtCÜŃ=À0G°ÕÃïÊÁy=ø®Á¿Úsƒ¸Âœ‘nün0Ç_- üJswÊÊpkE„“ŽtÃýUŸÌ ¹;vo?7ëGxÂ}ÿ60¸µÍ¯&¬ÝŒà0w¨šÒ_.wîßœ- Š‹ ‰  .¨ÄNàWzCogèo#è}׿¯3Â`s×Ôf½ûÃõu{@HWw¨¿ïþ‰pA €5 ‚XAmapÜ¿³ßÑP›?øîò]a^€ÇÀ;íÀ_¿¯žÞÉËwôþÛý÷ý èh)*Èkòüéøß6„À—à@ 1@ìnáÿÏ,º`Ø_UÿUƒÛ àŸjïŽé_{ü% ðÏdÚˆ;ÕBœ‹ü P¹û€þÏRÿòÿSø¯,ÿ›Èÿ» wGÇßfÎßöÿÇ v‚9zÿåp'ZwäÝh!îÆþß®&Ð?C«µ†¹;ý·U ¾y¸í˜ù@Âü@á?<ÌMæµÖ…!!v$ó‡7ú5jŽ08Táûõ¶ÜEÿe»›/ˆÃÝûáv§Ë?&°Ûݰ!_ã/ ½§Ö¡ ‡ ¬Í ˆ(ìê öƽ»ú;$ðÝ ¨5Ôë·²üpò.p׳?ÀáŠûëšA@€ì÷Øÿ8ü”8ý ïô"ÿ ÿQÄÝÕõ®èßRº+ø_ø÷Ã…zA!¸³SˆTˆ}]HÛY<'ßÚ˜4æ^ꙩ ßX96²OyÂb)Á +sN£Le¶¤bnß©­àr–ýmúÈwõ c½·ð £Êw[F«¸©ÛÔÉDßSzæ)¢f”\“d…û’Å®}(º ÑÄïpd­mû ؈ü8êzf=ÙÉKTÄÔCÛ´;ÞÕ”djRÒKï,ë#[¬ ×DŽ©9r–bŸ¯¼x™¢Î¬!ÝqŽ›àYM¼Ø?4ð…¤—¡+:HÝ#xmŸ5 I¢,5@¯$ŒUmü%ð*§Øc;Ô×ê!™‚*×㠮ǏµŒ>“mŒÀðê!§õ—ëîùRÝÏì·Ë®2忆Ô3ˆ9gZê¼_ûñ¦ö(è‹ú1ãí5zн¶Ø*¡}¹ìû;‡ªm@újÇÞrB€Ñ2ýƒ 8Hò8gšÑÇH0†©bz¨wm¤…¡µp‡DôËû®)“uÒã²€èÛį5ç…Q)¶Ûn ­©dëý¹©#®>• °É<û¨8 á‹ÏÓÒši-¿gñ’¼E@BB3K¿‰ÏñÀ&¿–ïØúi0!NÅõB¥²QÝu¯ÅGª›¯ŒYÛÜö§ä•çñ¯#,[9âÝä¾sb§Ç™©6~/mˆèðÝ,•yç69SR#ñæÛéxŠG[wù ¼ñÒ†HŽJÒ5t—lC œIÍŸ ñl¡5X°Gнv)Þ÷šÒ½ºÊÉDQ÷«ÃFϳ°p¿¾Òï]¦bŒºú’ŸzÉv(¤º#$wªX.Uç`gh÷ûª]¢@Æ)‡~è?Á¦2{Q¥ö%š§–Ü`À RˆÖÓgGT4‡ZW”=I{Þ°à«Ôìæ@ÍÏ#øÉÃÁÿ©mÓ®wØÆYœ?,½Ž~ÅeeâÃìvõèH¢z@,ŽýT«‘‚–íf}܃þìJÀ"QÍ÷’^hîYéîðצÈ0~ŽË„xø(ÁóÝÎÛ'\ÒK¤Q~eB‡J’ÂËÆ—5=ž¬ó.Yº9n¦îÍͬðâ6å’r[z¿>‚®_ô¦V?)ô@.lS'd'ÜÒÈ­¯$ ?~ÚnuÕ¶Ñ4Q~ûÓPUFÙõ~®Œ£íö›YÏš¢½ˆÐI¿0E:®¼)Á…A‡£Ó¢iþÇäE‚ 2„h}%#G.l+Ò••^£Â–Còˆž±\ÇêÎWú3Ú÷¦³¨h¾7ô¨^óPv±ñ%†¥¼=1Κp%Œ.Í5á¶Æ€—"3?W.­ÓR+Ù‡‚Ð3Ú·]o¨çKÀ j+ÓàøIJµZÛP±_U³Æ¨¤•ÆiÛå-]U¼·žíOGK90Uä`%‹edÜw nÇ—Pëe£“_{·ü-¼3P¬¸upq²©Ö™pM.w©<y‹Ç3SYÐyD¸b.Lð–—*uŒ9„%ÎÔÐþ³pØÐE­C‘•»VœPìÚõŒq¸…¶‰R”:Ô¸@®Ù_ëÊ (½Í°¥Ѐ®qÃ*ý£÷hÕ„tu’u²„Yï·L¬\nyD½¾¢yQκÉÈ“/èð£Y56G*0YkQô´khL£ç2ÕëO?É#æ;‘ئÌb-Eí×Ã%òl ŽÐd³¯–^²AŸpBÒò¦NKÑï+ë>*z82),üF)¤ö(͈ ýó™ìÎÃ/ÖTèsœïè­&]ßÕ]Ô›¿$‹’8k†kípE°Ü,ÆV’v¯Nnñ”;¹­K–­‡ ÓŒ¨ÐÛûCéù[¢üæåÍ[ᔡ¨"ð7ñýn!ªà³÷q¸^ÀMiŒq‚‰Ð¾v 8Ù°EÓÐuMé\ÌjU0CwÓƒÝ^'FíYƒJ,ÉfLéžIÉ("IÄEèžxÔ”VêëK‡ÂO¡vQäÛÜèO–‹MWܲæVšÑ(ó– ¿“о½qàåÏ#eüÔ?4¿Qïi¡Ø„I£+9±nÉf @áP8!:!›[Ë$½y.ºwTu&1¢_óI6s糇‹;¹Ÿ|Ót‹Ok¿öºR ¹9yÉåɨZK0ÚÃ×ésÐAjìžúÅç–ÉÕÓ©ãÔYïa·QÁ’… Çíó>¢èQ"Ië/J±GË>4I¡9äLë ìKî¾MüV·Ð:–5£Hâô‘Î:cDU{²Ñ ò¼ÈøôZoå X †Z³ãíu%Ff¶Í/HŠsmŽ&—£VŸ¸É¼Kì:) €ÐG¯nḭ́¼µJ‹¾p®u¥± ±¿¯rŸ#ˆ\ºS*Ù0kn¹7‘îy6ßGÓ"äuà” Ó‹Ð”9\Yœá¼Ç‚Œïýyøtñ/nîhÎK¨¬ß¾lcü5æ´ Cøýà¡0À4°3®†ë͇,[>ŒáYêáÙZîH§%Î#¸{ãf½ñFæƒ2¸<ï Õï«X'R³u¼‰*gÙ|0ðÝVY+z¥ÖýV/ÁÙ8ˆÒ™]채Ë<‰BíÇõUƒq2F¬–àSpoì9 ‹…±òjéÙµ_­Í¬À²J¬kÙ9v‘¾±ÇU¼ùñÆ~êɈ_o)_’óŒ×ÃÝë=ôr¢—YX²XѶ>3”Žu%‰ágû[¼¯×èÆÞ°4¥·È7*ªT¦%›9e‡šãíȽà'+šq›jÛ“¡³azJ?3­Nòzâ“"ñÃëwêÖÍÏz”1ÞŠ±mU&n³”+=5Ëì‘uAj†t$*£ÏÔw; ÃGDß_²óÕAY_;°QÕáô~¡ÜMöpd9á=ÈÀ‹~#~–M ºÐ!<#–‘ÿ´6A"5ÞóY]‹ð¦±yº»%s†êb¾f™ptQ×B²Àñ&ËÝòHè£kóp’s}T>5Ïнé3©o/ïyæ^gAjÕ¸äîa~$,.`%Fýöê9y¼Næм-¹øÊÎ膷t«Þ$ ¾ ]•¾ò¬äžç\Qæ*AÏüÕùÏ>È1 û-Ì:’V”„XÑhxƒ€ûE] jà)qŒÜrš¨ójzúø0gݯz® ŠÝ°Š´‡§. Œì…ÏÉ#ª®³“ž4éš<ñçh!|¿E èŸSÌñÉŠ…Jïq¶|¥x‡IïæWðq€U/Ár6#Kîò1eY¹!©¸òq'jÏrBöI³º û"s¤Bðµ$}:ê˜æþ ˆRК“’Qr›Ýä¦F H‹Ëáýþ 6—î 6Ÿ€#‰r³9õÒ~I˜¸dˆoa÷nÁ®õà¥ÃaJxgÛ—x†ÆðAņZGÀñ"†ÁîÀlßKmHÙÁÝ«ñ0‹@8H°Í¼!¯œ1íw½ Ü|*ºâV¦BKFÏ7uÁŸï·¾gÉçf²Ro¹‰ñd"šãýÍæðn;Ó²Jýçi6µâ ÍS6³¡½_Š9¹PÞT§1ë½\d³ú(GÝç“`®Û$*ÿaÕ±¬×#DWò!'¦ýó9Unu0³¥þܤEN’p°¯õ!Ê1}fö¶¯Ö‚8£w>ïÙ*_ùM‰þÔ·©@‹ñ<]Ÿ>½‡µ —{“Z\ÆHq@‡ùåÖ)AÝGØœ—h•ÁH1–§«Ûye¤^Ú¯ä•tí‘áz ò5±$†³â“àýˆô1l‚2jå©–Ð5 H¦~ q† ‡6é{G•oFŒÍ«Þ~ëCÊ(ù'd³BtW µf*ˆ×–ÝOÝp£"_±µ®ùÌ+tˆ¢†|ªLÝYLz„öî‰o]ë¶Ÿ³Î tÌÇÖÐЯþi4èoôØð V(ï à·|–ò.x•ÝûJ룢™êÍ–t¼ñBsïܶJ{.ëm!Õ%“š£¨]ƒú„e«£üüxÊ¢S’,‚ð¡y-æ² ©ø@ÛÐ#–Òzy;®Ú-iÚª'STÑ4ëOòÙæ’ u«DÇåìsT°8]1;—ÚÜV‚\BÅë…¸NœJ »4º<ºï>´ÔµˆŸ-Þ–cvOlÙ ml/’{Q¨û<³ž•Él%Ê©sëomÌ;¡[¢eãf)'Ïçå_ÛŒ.6N@Øœ„Bø¥ º>ühŽÂ£Ÿ DW;³ l:–¼¾Çávg¦Ö±;Må]½*¢‹$íûV¨'cos¬ORü“Ö°ë‡æÆn_ña=Ù¤/¶!cZ±}, g×ziy"U£ Ûæ°/˜Ÿ&ÞñÆW;ƒë„ºïnKÖø26Qc™êŠ)„K:9$œIn€[pQ0Ë›‚KÄ'r!UíâãúîÕ†u'û€ê3ÏQ¦ô’­ü—ý•ƒóâo-ŒÅ+(‡ Ü[,ǧºûΕV|ª‰/‚¼‡ë;nÈŃ#öyY2ž>¬™‰à†¯}yÀÂG¸QÜÃ%8û°s³™à ¤ô<ÿtTÚbÞ‡6Òä¶þ*ý†‹9ëcQ­”ÅÚ Y¢ŸÐM™n¿ý³úõSï+µlÉIŒ3 }"D¦;¯ƒa¦™Lbî\­*¨¸·¡à5Q/çÍ+<†ÂÂÍݦk&ˆS¶œ•V5ðlìÄ{ÙvÆP¦üøŒõìqe2©i¢¯hI±/«Qåq ¨ö½É›n°ÿ–™v³IÎ<(Ìæ«¸í‹vdÛW¦KÝ›’"5ÌÕb¶FãWÕ6RII ?èíxõ¨¦É#àØBº¢7¼SéÒaJ>[·—áyüqÔÜdÛ³÷j¿LOé)uFO€œxgóÍ£‰k£, ‘®t fÔ %Û#\XJª;­+S˜£ ¯ý¾tu )µž—âJÛ+SI¼£L¶OŽÏ^ ¾unž½ù¸Ï%NÄ¥ÛêhîJ[wöšï¸°bѵ6ÛÑ<î‹IM{å‡}BÙÃf–÷}öÙRá¶7þ‘ÎUÿ3c2´±Ã`«‰rÐî,úS ÿüËp̃@¼0ÁÊÉò8Cy²Êü¶±¡süû9pYÍd,=™0üGÏ#Þhm.w‚œ‹÷Ñ÷1;¤Ù*jNÆâ~š¹d.O|{Ü‘œ%s+K‚2Qá™–}»iлÀ-¡‰Ê¹š“m¸2Mk ¥á¶[Éã†F²Ñ¹œôØuÚÕ ŸS öËüJ߇IÝ‹ ðuôBÆÀ49ÇöƒTk–’úsÄã§»Ì]ûÛþ A=ñ˜’Û¡{Ü»”ä Þ@‚íNÿ©Û»÷nJ•žòÞE¶­,¦˜+Kîj9™ˆÑ÷£ ±WÑ“­=+Î@ßm°[=ë¶yyÞN+çÔ÷Æú¸¦‡0ÈoZm»!·ÿzã{‰ƒžê„6™qÛŽÞEç °á•8êšVs¥º¿3ƒs`?ñÛmúB*ئÁj§ý…œÄTÚ“¯¶äGbó)ê{2STé2tha.‡ÁJq©{3µ “1r>3.“‚fÎk_$wN¦HøŸ:t Zò 5FÓ‰à›(2}Ýš^$)Rˆ¡ðÔ¿*¿¡êb¿¬æ­fÙbÛaþ.¬ùC}¬6Îi“À$Í÷•øyWF5«‘,™Ïþ´Ý´iï§7(ñOuùvZZ³dI²3³ ~ì;3? íR½‡…g MТ§çžSsn…§ï‚âöòƒ@ 'àLk°”ãdFdìÏ ¼²)«¾t"|t‹~kæ59ŸKL'Iì¬Ô]³¸JÂŒåyñzœ¯¹9±«k\¶ó(aý3;Îa™`Ä!¼Á%-¨:f½0§È%úÙÓôšÜÜ#«»õ¾0ˇ¦˜Çù^«êhcïA„¸2´õ£¥ÉàŒMišä“k^Ì*ˆHà^}•Ï&ÏJH¸íI0m¶÷0ÔŒÛk¾…,e‹ÊæsÀÖ¬$Ëâ©oÝ)¶ÏÅviþÌ£­u/¥ŽÖCâ÷S^jÌê¸>U¨ÎU‰sú¯ÖP$(½õ°nk3J|·ÄŸ¤G3PÕOoî˜`aúÊó1»ãtËbÎ z¹ê@ZzLõD•à—Ù´JÉ3²"lL×mœgËøŠrW°nÂöÁ)œÒ¸üñ¬daÁ’&[ùY=“n†¦‚Š § )«áFÏŽ‹¹’WêÓËWçJ†:‰5Ûÿˆ,·ê endstream endobj 678 0 obj << /Length1 2810 /Length2 24227 /Length3 0 /Length 25800 /Filter /FlateDecode >> stream xÚŒöTUëû ÒݹéîîînÚ4›n) i¤¥[JRFRº»»K¤ûnÏ9¿ƒçÿ}cÜ;÷|r>Ï;ßµ™Š:£¨¹ƒ)PÊäÊÈÊÄÂWTce°°°3±°°!PQiX»Úÿ1#Pi]¬@|ˆ;M\Á6 Wpœ¢ çf`e°rñ±ró±°ØXXxÿèàÌ0q·6(2ä@@*qG/gkK+Wp›ÿýКÑXyy¹þJˆÚ­ÍL@EW+ =¸£™‰@ÝÁÌèêõŸ´V®®Ž|ÌÌL&ö.LΖBt kW+€Ðèì4ü dbü{2&*€†•µËßvu Wg l°³6‚\Àn s 3Ü .«Pv‚þVø;€ðÏn¬L¬ÿ–û'ûw!kÐ_É&fföŽ& /k%ÀÂÚP–R`rõte˜€ÌšØ¹8€óMÜM¬íLLÁ17H‰ªLÀþ3ž‹™³µ£« “‹µÝï™—oYd.î`o¹º üæ'aí 4¯Ý‹ù9x€|þÖ s‹ßC˜»92k‚¬Ü€²ÿ„€M/6K +€“………›—t=ͬ˜—×ðrþådýmOàëãèà°ôµ¶‚ÿCðq1q\Ý€¾>:þ‹XYæÖf®S ¥5á¥:Ø ´øƒßÙÚ ÏÖ+€å÷¿‚åeî²óz ÿë|™eDµeÕTßü=ñ¿>11O€# €‘“Àú[dÜà¾ÿ-£bbý?reAÞ¿Ù‚×ô?Æîÿ€öŸËAøo-%°jÚ‘°p²˜ÿ°þ–ú_)ÿÿþ»Êÿ›Èÿ/!)7;»¿Ü´ùÿÜ&öÖv^ÿ€Eëæ ¾Šàkú¿¡ÚÀ¿/­"ÐÜÚÍþÿze]MÀAdi÷ï­]¤¬=æ*Ö®fV«åo»æï[fg ª8¸Xÿ~¬ÁGó|à«ef ~t¸€%ù— ¾9ÿm) 2s0ÿ}ÅØ8¹&ÎÎ&^àC#N€+ø.š=ÿ1€™ äà N€ÇóX88#ü>Q.N³èoÓ߈ À,ö‚¸Ìâ/ˆÀ,ñ/b «É‹›À,ù/âf0K½ p´ô bKõ±˜e_€YîÉÉ¿ 09…&§ø‚Àä”^˜‹ò¿ˆÌE幨¾ 0µæ¢þ‚À\4^˜‹æ sÑzA`.Ú/ÌEç¹èþ‹xÁ\ô^8ïeƒ¬àH3°öþµp€Ù™¸€Åhíbû’.oú‚Àã˜:›˜ÙÁo/ ×;û¿ö¿oàÿl%Ý_ºð‚ûš½øÁS›Åmg÷ÂŒ÷·ÍÚÙÌÍÞÂ,§ÿ™9ÁLÌìÀÒý—ðï@ðCù¡Àšf6là‘Í­Î@ð à%Lê…XÈÌÀÿfeÖ¾‰‹Õ‹à~ç8¹Ÿ/eÀû²xà‹? ÇohýGM0~œì¿ákaýmx)Îù;ÜÁÍùnàË? ¸þ ;°\¬¼­€ ?"À¶?ú³€Ç´ù‚7cû/÷ÏÑÀ‡dÿÇhà­¾Tæ§‚À‹?üàÙ^È€“þããøâs€þ£ Ö¬ÿÕ;¸—#Ðü¶ÿ#”ë/›µÃý{}N/ 7trspš›Úý§ ;Ç‹ãÿ4âýÇó_3ëïsüãXÁK}Q'8Éhoý_YrþŽKþ ¸ˆ‹õ‹”9ÀS¹Øý)/VVðP/mÁo.fW+gà*oÍÕÃáp ·? øÝÿ€`fˆœíù—÷ú‚×åýB\Éèüw«ÿ<ýÍÜœÁäú×û|=þ‡ÿúÚ=fó3füÁ65Á-7U¢„ŒÛ#‚“TÛÚŸè}æ[ÝîP^'ÑUf¼_u¾MêïD[Ú”¤½Y }ô9l¬}ý¡)AµùþÝÃÛ8µñíf„¹1œ£‡¢_{ˆá‰5DvÞ=:½Ó ´}Õù]Ž*ÇÉE%óÆ£[ÚókOéâPè̶êN%—<âCéc´f”A`ÑU®iæ49¬+#1=ÆOOÔ©Ë«IŒìÑgR¹¸7¾GÑì…>zkl1·ÓÞË_4Ø\Úñ)ñõðˆ_]b Sûˆí%ËáÎú.ý˜ól($ÍFfHYbDcÚcK¯´V‹ÕwU»Í·±nå$‚i`n%T—Ôc½u&WÆ®l~‰éZÍn $Þk³[n¹Òê°°I!Zàøú ˜BÖµ: hèð¹¯uZîøÁxšÒtÓ_?°Ùá«]$Ü#LdéÁJ/i¥±´È—NœSê: Õ® ”ÅBcXpOây€1 ðy&vGÀºQÀ¢ÇÓ9Dt™óî,Æ·¼î§RÛÚú¬†aÐs—Ò³é÷”Ÿ? ð­Ø%3BisÓ%;ÂsWbiTùk€uSA¥Ì?×Êq˜$J¼Hâ78çÎz) 9d¥»¶g+ú# Þ{ÙÜòæ3h•k6äÌW%Û:ŠdÞ« ì éæ½2ßÛ¸*+3ÂÞwкýYî&Ö³®ÁœÞ¦Ý*- õùzsº Þ”âXCÌ̾>U[Cðns¸ýóƒC©¬Má¼bü¾À‡wó†s…]øU"8á—õl5­Ê7´HhË1T;‹¯(Þ¶ö×k=ˆªkÜäQx¯AtÍN o’ ŽoRúØ•qt7ø9£R_ÙÅQ“Ín¤¯ ÒFESÃTa—Ì% fä«F§A_{E‘C­d‚™ï®—s-… îòá†ýÈU@¨5Ö5Ö~8=#3M˜pÉ\2€"5kéA.Å™ëq¦Fù®ò9ÐAU`dw$qÜØï›@& +KÉ;¸Ôgæ}ûÓÚúÛ¹Œ•~«Ÿ+9Á«åûpuuUUéÂýøÆÂçÜɇ8ˆo‡r`ô“ÚÎyÞí±¾²ÎfèPÚµ ¨xû(,k5ˆê¶—+f"‹ËWÇŠ7—lWÒçÅuý¾}a@,…\Œ§âTÿåA]Âx8YU™%í}SÌ{€'ØG¿E;ôØ"û`¥tW;ã³¥Œ@ùÄúJÁÝlÚƺîs;u¹âÑ}·H½öth9^A¹ý’)Ëü'ú;ã´Ã×ݹ « Ì—]™v­T*’l¹|$Z¢têb Ì;¥8'œ˜¥âY¢ù«×™vü>ƒíˆ´Ms:0 )Øxr¸HˆOÁ<>jsñèݸ´[oµB™Š>ùË¿sPD|‹93™¢¾úD׊쵥¸÷ÌP–SmÔzmâšE '¢Ìz˜Ëœ !uFšøÝ‹„"uÓ UQqvLºGïqYÿ•ý—ç&ïÑ()Xx »ÒÛ2òN9¡ ôœ–X¬¶‘ï®ÝGè%õ¾Ek|†ÜÓÀ•¢S5 œœÂÖf©èÞW¥­*™L{­ Ðãž7ПñÞêèh…¡ãöž_¨æT"k¨<_ºåÜ"⟂œý­îÜpÎ>G¿±ó!€»ª^Ï||+bËÅN ³ªbâ>î¯9Œý¶*{ë‡^+ }éVo4Fe¬â›^SÇ€P~ŸåÒ!øÀrUvœ=--þ¹Ü–á°IdŒ e&å¬5k†ž²’ £®ÐËlAÁ5r©µ;y©\ÓûOqmZ1v´v–™ ¦åÑËd {¥ÓÉÓƒë·&ª¬¸UC~€2Þ '­Â†¢¡B@¼‹‘íqž‹yL:Å;®îuyþnß ‘B–7¾a úÏRgÄˆÂ¼Ò w%‰¶HEin^JYë'êÑ9KÂu—ä9øX)åº_òðÛ‡*ÃÊ1¢¢xî¡ þ+vyÔ»u7ºÛ³µ4ó#Ú cÛAÔíy,ò€'|ì4fkxëù 7xÓ,‚NqžÞnoQ™ÂélvH/¦_ú9žË®¬¢n奙HŽ¢£Lúùêsl¦‰oÌ®%'J@<+"‰¡šeÄòT2¿­2þ7ÜŽžøºÒFËœ’ÃK{ ØDÙo—“¥ë®×îÐ’ˆ"ÙÕcŽŸ°/ñ¸1»½9Ùœ'¿;âÿÉàïÝ_;N…àÐ\¹šãùªå“Ë{ô™>| mV)ÏÑ“©½”U€å“}\t§–×eÝúx&¹!…·^J‘£û¯äLâиԫ¹žb&g1ÞpJlPƒ®x¹8ë]·k©¹Åu1Ę­Ò‡©Hù*ÈœIþüöƒ©»@©;ZXĹ(¥óˆÏükë…æO_:ï!ãËÑVé["~|ÎMÚìÁ Æ,}åÒþ™W N:Y\Ò8Dk?Ïj­µ¿› [5aDªÐA¥µ{c=ÈŸ²ôc+ù8;{˵ ï,ï‘^´ ïHãÍrä#çí[>¥Ä£>—ÉËÞÄzRX‹ ¤ #bíåj6Œ;oÄÊ)6íSÌåGʼ¦ÏùÛäÊŸ³1†µ»è¥0 —™?{•F©VÇõ'¨&uJÑ—.YkàœEï)®Ìßæ+„ªSi|Uj’玭„{£–:s¤ï\˜þЧ{Ùƒy¬ëôm©ž#B*Œ¼žÓý rw0"©)™wtþõsR>¨}U&Ц¦NROUdUv~Í•*ë99£]¿˜Ž»›ºí!Çj”‰T¿¯K3µhÒùM£ëŒFÇÙj5•ô”ôJN!Ž6Y¡f7gp, ¡¼N‰ØG^ªnuñ§‘mºéJ'èÀçØX¡2ßnѤ@3²±Çç! Ã}ãTau©i'#á‚õ¥?¦³½èó‰KVçó_ ½ÕWô©Í‚%×.—?Ò±LE|â¼fáÈÄÅI#}pÍà˜´ýõ¾’ì°à‚×LC,]T>™S2Ž\UŽL¥S+8~‡Æh@µÃDz×è—^˳wÇÔßüíÅH¯·W±{éúÛ1ïŠÙ¡lÂîS-p°Pç-—³ºt MòÉxð§ ì’?àYzÌ“½F€»áÞ–‚×ñR7ô; ɆJ-¿µs›Ùÿ’OšœéNÆr»W!•øiyõî¤DrÕD?ì½ÅŠ'G€LHö»ƒ×Úµü‹Ò$3Xhº˜äìbœóç;7ë2ä“eú°7¬É#©ÇfœJ7¼¥ŽBlÜrÍbçu.̯N"¾YÒ^”xb«2 ¸ éWlð 'H»ô4ò‘ªQòraQ‡ÝÙ{UÐY×áG¸÷ïÛt^iG*t«‰«‰™Ø}?ôüú6gV7“¯†S±¨zuçdë4â5fLs9j¡ñ=³MAÈZÏ|.™ïŠqâÉ¡µ6Q@_éÖŒªN#%¬ÌjÑ.ê«lAy ¼ß4Ó¼.љȻÌ9ííÅh)°¹MùaÓUT †Q”™" óvÇèmÈ¢%V|_ÎXþhc’ª±ãby±+?¹€Ýß:–H+ã„÷쾫:Æ…”åùOÒµ‡~˼­+üÅÍÿZŸɨñ’oËZ®ÚFä˳ìk$-‹ôÿHö¢ªTLIo¢­MãÏ,4þ,N„ ¹-·@W;qÖnç0A ‚SÜl·ÓDa ðVä˜7«¸ú›v¢|Ö.?`?”:Û0"{™\²âÂ@p’íÙd%I°_u›ÙÞQ‰SžRûñŽ®kqnÅ$B&¹|M¯q²’Ã-ZÓ÷{O÷n×E1,–&`œl0Y7éèâ–l RnJw»x2_žjϬP²²áˆä>]Pl~HÖ0@–õ@q>Ù„n…2¤¯ª`UªË¸ýÞOÝùÉË„ ¨¢+]2=ÆO Md]2Ž« "¿¼:NK€p“'„˜ÙTß/!có!mÓÛû½çR2ÂS§ÐÂØLeeî¨mJÅ‚]7?ur%…ÀîBZÕ/àG:‹ñ-)ïtãúÞzá¼MY3uêdg˜–øh ;‚30Sê=‘Á¦Vu){ϹI¹(™—WË&ßÙä¬,3²|ÏŸ0ÉïMGŸfÂ×™-|ÙW“Ó?÷n’K—$£—ïÒX(ºŒ¿ž"ÕÑÖ|ô}¸ª«oÐí®‹6B ˜š¥²î%“i;T–y†ëŽ!}{û-’ïCÍÈ/ÿ¸ ¹÷\”š@Ã% Êù×¥¨‹4âVœ©ÁêxÄÍǃUg" åx™ði&_j±REýÍ"B÷í´!kiÅÂ:CÔQ,ÏŽt}lÙßÙA¹W7ÑÈÚå<ú¯U“m×>ä^Nªtù$æÁJV~:q4Ù3B œ³:T¶}eœY’¾éxs‡TÎãæµDéü+yù<É ÁÂ×Ì©ë g‡—Ùã²átæáMûŠ&C9d›kÝŽ5ŸÌ¯œ6åîEÚŠ·@åÀ}b)­¶'§1X¡/n{kÝŒÒ|aëgÝÞAY!é2zT±šÇîsí$ÈcÞ›FxkƒbÑ^TJ ߨñ*tׄ[ì±äâop'Ùƒ¯‰­7geD–>ZŒ=Ú6¨1¦_>ºÓôÚ3aÐ «ovJ4ÍÛy=âq'àä!é^Έ-ï±ß¯3úV)íÆùV:ýõMÝ<ëç{TWæ¨)ħµè¡Ÿkáլ堰·÷B¾Ž°ov,J-y­(‰ïŠ{ ENoçŒ&¥å¯ø9Ë` ~Ñã9Ýí-èÉ`ýþ«ÎÎØNØ iìv#EðúË)öÌRØ^mÚ£.Âæ,¯ñ{c“Ÿ¹Ÿû#ô+G"ÐŒ'Ú†$³ò;=:`ŽLH‘r½w¬)˜ãbøÚ Tíö‹ÜçGlûöø{¢îœjƒyº úàó‰DâƒRi'¬Wâ}™4€)Ô°ËsLêȨ0NÝ—ÿêTÞX`\[LÕiœœw²ü½ß¥T¸É}°ù‡‘ÁC8}<öÌ£êÀz±’©EțŖ¶•à,røèù"MøïñsËËa“­˜nµR9ã©]˜:w^Ë ¥_Æ îè[ ú,¯ž9„uØ ;?rˤ ç¥ÏþJ3êsR:Ôd|Ò<>÷Cº.Œã:¢ûQpž*ú˜ÕT\.ÊM¾ï#ª&ÀÌæú¨ØÓ{që²ý9àÞ–WVç"Þ"¿$cüÕÆóèãýÌùÏ:’GEÉh}Lëdíc]äôr‹êÜ(í º$•pD{0§6‹ÈÄÔó¢{rHoÊv¾76Ãa,`^&+ånSr¹×¨h袇S,âU(¤³¥T`VüØ×òBfê5?]PÎk×Q{ Ó¾¯‰ŠkY„@‘«¿ôj‘Ïq2|ÏÌ¡^òžÈ5e#__ÝF— o-‹‰9þt‰:l4â¥@ GNÒÍü>”\‡màöifkÜd­›P]“ªÒ·×#8y¼ 9-Î>öÀ›£ÄìúªWƒòŒmQª¶ìÐC`Îx£x›åKÙÛ®y$–,Ù±óÓ9½ f;‹ÆO•Ëœm§k{Ç®'~Z‚È-ÔK„±ùOX5ìZéÏØ3ºP‘›î’;¼fûÜž«÷à/ÛÓ]¯x´U¤Z!߬îz`kTkwù.õÌèç]°•çi÷ø6$Ÿ@w|2ýúðz®(²Õ:Ÿ‹~&×Rü»Ö³ «É4j§ty¿~UÞª*º& HçnvC›†Ðï+·0÷’¼r3 à4\ɶífîb÷ÙCgþM Xbˀ̨›éôLFsÁ/ãµ½`â‚ÈØaü`"©‡rTõ«_¡:ȯî¨?±óûÈ~rMŒ59Õmñ™@ºº0<ÑvkÒ˜ŒºYë<%M‹@>v›ýV{I>ó–*¦Øtç…Ú½f*[ö ëó|ÝBö½oP„­÷lV1œðoomEkáø(jK›«UrL•û÷d|–Û3ÉYßkÕ,‹ˆiY{º;}Ô;%òºœAeÁ_.my†ÌÚ“B˜ËØžjçßI*l°!¾Ép~Úèâ >ÃX.ò¬ÞŽ0k•E!—»Mš]ÆœIôm:Ø;ªÉ»pîIçÜÉE „ýPÌ]IppþqŒKûùà4Ä;&E‚K/'mOg2…\­U˜ %}®gÒº3*ã#5é"ÕÏiº…P«:±Ñ¤Äu£›—ZŽ‚|CÃÉ¡j3~Lèî˦ é®v¦ƒÛ@7×uü =¦2ó·÷%õÐkNá,êD±±[ Öwl m.d¤ã†y¿Ú£ÊxHýsŒƒœŠØNå7ëã!×Ðä;õšUôÕoÂlB‚õ+GlÐ$Y î2½'ÞÂãÀ`2Òíýšøé;¦T/mõÃýÙëK»òü•h5_ 4RóÏ* Õ¿È(hÉ÷"ܰ¹Šha'œÓë­ž“¼UÜé‰c=*ͱÊ~Å‹ŸRmæRÏ5ó¥íp»¨ç‰zÖ51™štªf8YüuË}•ñ©[/—Ó¯Õv~*âˆØ‚„cy;{LV"éj”=Ö”ÕÉÀöÏsƒÑ³EÞÛ‰¹ã”ÁkBXýà ?` øåûб¸`bûç1"¬å.H]àêJ(Œ½»Împ?–NpÎuEÒ³S8Ï.,Ø &o"bÇ>x£­dÉKK¦O«~ç±vZyíX²ã©id¤s¨![%èjr™n‹sRõ·„™"Ü“Çõ@ŠP.6Ðò×D½øY|Vù5÷zˆÛ]’S7®V•„w®ž”0”¼¨p<iê†`¾¯*–»ÒƒGÛ¨¹P{؇ŽåˆHôíæ§Þ‘G5eLzù ðÏÉ^b%âwuÛ5¶!–Cɰ‹ËLhDi]â„âá½,S”Øyk} u1‡™!‡~%¦-Þ¬Õš÷ÄÛ‹þÕOĶÆJ‰Âi†çBÑÆ£¼† õÙrBœ”£‡9+|x‡²¯­ˆé¸Œ±²·Z%K¼Y¶Î·¦ÕJŠ t6ZÁ0ÅOÑ©¯é±§ã«2ÄBcøwu#†lÞ@ ž±Å–£b2VØUÄ”¤}#z(³]ÑàPdŽ)œÆëÃA2Ù·c3c«©ÄXÝüÈ ¹×Þü¬úúq3šç6é*ü-™øû¨Ãù§I‚‡l´NÖ¢ÞŸzçœÅ%hÑÔ¥Õur¥êÏì±Gº_ëOüpÖ¨Qk¡µ ®¹ø8Ö±¿¤}ÿ”𼾎˜0{ãµ±¹ç«ƒó$|õ¬—(°GÖ€G‹´9ë}ʾŽË¯ø$™ö½«Sã6OÕ—r 1Ýg¯N²“•,»ßÙW×¹ p JK<ñ9 OÎjíÜÜ qèSMg·ª°IM:¶OnãRËÛï¿°.ï!”ÊAÝTÈÁ’Ñ .'ßJ0±Fç-D»Îö6죎4fÓqB²ùX¹ Ü/ø’ûãõôs|Œô]\騛| &$` ßB¼Å{äÓŽèÈ‘$9E¾›‡óÁ!ùPô —Û¨8ºhÇLÍ|b¿ i—G¯/œ”O>Á— éäFP>Ú)®¬8r™¸¥U¨m÷f¨ÝHzèÝÿ—Ú+×s^"ùGì ½B¨uÛ„ùF¢1 Jç-ñ¤¾"äžM1G{Oºï'®I7? „Xnqà * Q‚–é«>@495~K p½pé ûì—¦ÝS&›ÒnÝ6Š4F ¢Bf"ãè‚æB¤°e?XdIhÃt=Ž|²DÞd£åÙÄ*¡NªÎTû%!•$ãíKJ;ÂK(±ÃðöII;€DÕAïTšw8ÅajjhžA³°ècÇí¦ãiï–ûzÞ£}"7ölg؃E›©¹Á ËHµfœ"ï,‘Ú$Ò$ L$ìyi3½Š\Òí@~YéB’úµ;á]€qWfÎL(4ºGÙý'‡¥Õ¶ïQ¬]“‘»«WÇ•©¼µ ¬³ójòÞx^ÙY9›Â¯Â×]5ü¥ù ØüV¬ºJ¶åÍ]‡ŸU,’}ǃB9øº¢}9ê¹ í?)’­uÂÚ˜8~Úb “)Ufîko„VV΀—|úBgˆéR•=Ž­92'+FAB[kÔæ¿¤žL…ñ:y]7¦ø»Î]¼®©69vª"C›:”‚G‹ñ#o"ðïÑCåäd‰•¸0-ÄÔôT;=û‚R˜€Y­\™v³Ñ]÷MºIÔü³fü´p4f#èB•¡Õ½“âRNm»#2»$ TÙý$å_OüÅèñu6uAæ† ÿ'-•ãVÒ¦Pô‰¸ëàÔéÀ¥`°ú䀕„Üþ”£q= "þUz¿xœë5Ñ çŠµª¯°ÁÂȆdðfµ~ÎÇ?É ¢ß‹¤Æ[j¿ït@A»ì½’w³üJ+ÜqpÊB¨1ñðPD£båþm¥„k ’H}÷«`™‹¹2ÜÝO×M±ÑÎønmKôÉUϪé@•¦agÌ‘©÷ßÃoøÊ!t“©Åý“s²¼w´Šæð×y†žE©íørj~¡Â·² *Pw&ÐÝä4õ" ¸`¡öÇevŒòœ»†9_! —¦ç8‘¾ŠpM#d]éÝ›ŸÎÓçiãS-þj £¨)EhqÐÓœbg7& O)öÆNxÿ„H8%¨ Nî©&y¶)!¥Ç`tøõ­mÂAù(§ð´›áò!a÷X›–Jª¡]2yÛr¥ù#C¸ƒpÇCü³Äd- Ôð:äIeÏYIí˜CklòX Azdì©–É#æ­“.ÛÎ夆í»((Ön®HwüûÎ 50npÌxf3q‡üÐôNJcš…Êހǣlíõ/4'žÛ£¾m¬”ó^μ_LÖä¨òý|rÐry¸'Ú¶~3:eˆÏŽ)Qj+f9¶„îÙ[oiÓ h„̦‰æs 0Ñèé[Tt-@5ð-kÕH‘l§ õ7° ¬œ÷¢&kö´‡«ãRFÁG[R•¾ºçDQþB•QO—G16bj-• ¤fâUKƇÒn¿Ð€">¦Ê‡²×¬*Ùßá6Èî™VewîÔtµwô•g†„,%öÂíùÏ$ˆ¹`–ò° 1Pš,·­à„CW?FpFÐY`‚|×Ý«Jmd¾±…ûã›"*šmæòàG¸¾,I>²šyŠÂž>ß×!Ûƒê%ªpYØ·©º•òÊ ³±]Ý·J åh•aõ¶Ñ ^“: ¥‰Ç0Rñu{ rÖ@¬b‰…9Zvf>Ÿr{ô5©sŸv>jú×îóÕ'¬®•`>H¢ÝgÂ:nëãçý Œ:2`òx®·b¨UËÓ¸%5I~öûÁòÀÁz‡ù•gayY°× xWb1‡ñ¬¡jr —°sSFË SêºäK 1¦¸R;×pÄ#t\WÕÔÅê¤ÎÚ2=5•/¥à*>¦¸…óâ±®Ô—t~؛dž¢ä"ÑÖ¡A¿ŽU:^?{r$‡<Û«m@¶Ò¯>2O\I¹çð9*F)6ÇwgΫ‹B^OûPv5ô8µ¾Æ&Gå¨Ý&o~µ¾2HdõQ r~º˜Z¿ð¦ù52NÒs+ÂÁR–ü§]¬wš›ÇᛎŸƒîVw)¾ÎñŽ!X£§g}"ÚÍÕãõI¢;ý ÞTC˜Á¨ ß®”«Z‰³(ߌ7éY\`Î6Á ߟÞ2Mtú‘kõ©:~tüY]ÝÐÿN¬û7YšÐ†ó”áÌWF_ˆ¤îØIó(R ’2•Ž:Yê Ù}ÌpöÙ¢r,×Ùåá~›X~ckï]øgƒ¢¦ŽÅYëß 3h’‰×ü¼ûö9æNMž3 -àkùí¾è¯ÁDzwƒ®<¶Nð“Gá…¼“éŠ] 9Ç/pŽÙ+„ø3ŸœøVQK«>¢›®ôXÀ9ˆIjn¹áϯpseáí^Û¸ž;ÁÝ—±ëIoªè5U b<Á_vŬ*é…ÏjÇ }¿ôœW»l¤’]³Ð“ÏÚ!úôÖVÆÒÁJ4å}ªƒØ JÃwoM´‘–-…ðÀ›‹,ªáæ>•˲MOªÕÚ78ü|Ÿ=Òðp}z+Ò…>$2ÄZþÊðÜœ¶kbJSnak_¾~©hdÝÏd tPeª † ç»3)a3îeÔS…+´Ÿ9κ"\—®OaŸ/Òqü“ðó¤O'ŒA>g·™ý[ÏÝÐq¨yÒE’BI>iRL‰œ[šÚB‹fm©@ôe‘ ©Èû\#ÕN¯jv!ƒ"jh?2Ÿ½Aï“ëg)\Ü.ëÂBñ”QX9nÌ^ó±kÝîR47Ý(а!bK;›É1é¤=n±þ8ËAXÐ’]m®GÎÄtøÉçÁÁäW3òÕÆž­µ0‰¿ I¦BÃ-‹ÿFÂýav Åv 3ÁmqÔv) Ö‚®ZnÐ%9ÆdJÈû=JÑé[>¥Ÿ3EqþFÑHÈ×&À½e}nÆõØíc¢ kƒKÚ·0ñì×Ù'ÊoªÅï»ëyõR›PŒ§¸=õr„“Ÿu·¿Q²v‡Ïc»3 1±ÒçO¯ªùΜÇS›DÕ^6G}nbŠY©X2~èKkÛb”‘ß|P_޾õ ´†ÍùñZÎê: (Fk óÃQDòîŽL&ù=72îZ¯ÑâÖ´cëÑëv9`;äIäÉü[ú÷­8üÆä5Άù(Cø{ë„o},<êÇÏvEÆh$a„óQ˜ó£ðBŽ/C2˜¿YÆÅª .«p\!œræÄ*Zô^T9ÈõHîc¸b A¶ÂÏX&F\ÑÊÙzh¶;å>ïo‰Í×7[çK×ü+ÜdûKðaõÄOET¥Y´?°y]ƒ:Wë­¶>v°Š¨âC346``ÜþX¬¶òñ€AÌ4[™ÔáòwVÀŠnüú%סk¯JAbjGçX;Õ:[|ò¹›tA¿„ÉêUšØU´Ï°0Œ²3”«‹Ì‰°$³}åÎ ÷4Ôfû¶ð˜ÇS¯þB(Ž”¢÷Áú™*IÙ ¢Ã‹‹¹p›M:X6 "Låjdž¤í­jIÔQªï¸)µOÒQ6ùÕ ‘ܤ­>ð‘SDÇåM—‡Ï¿f½ *ÅÛáJš+:&ôÛy"ˆw…šÿ¢*)jÙ`è ¶«!l¢ È÷³÷[Ââ‘=ÙìšwÎ^ù*Â*°Þî%:UŒÉ4´ߋ>f«ˆ3!ǧÄïæÂNU\òJ‘½CªjWfmšå;]_\+t®ó‚Ôh¸–µÒP™ª CÛ3–QnÖRL.>NÅ¥¸ˆiÁiÔ°Úâ]¬a&ñOþY¤Ó­/k‘°~&»?’vœM¼Ï› $â¾pÅ-ã["*’u»:…ÀS±[;.BwQcÂüšÔ÷ð,5\IÏž°]¹W;«?Fd©o|®&®€F;ÛÎ ÁZµ6ùÌzXN·7ëO×Ì2·Ë0¯íéMºÚ˜:˜ˆ Ä"óÃ~â„¿!ëŒ- i´ÈÇÜ)¶9U=ðÀF®Õ›=öZy?xc2DäsòÐ6Il´SVå@p<ùfëV8­Áø( ¿ŒŠq‚ ÎâÁóT:»Ú瘊â5øpKô¥DuðAäOÇ4à}º˜nbïdƯàb²v,ö{ Áþ‹=LVà5¥„Z(ó¦2[Y¤rK4ÑÇhÎ0¬ Û ÞuqÆ6/ƒŸ*«pÖ'ÐÉÍÝGpÎ Ó©“ª €)>¹Nr*=¸õ n%`ÍV²Éì4F:¥Ó¤¬bà­é%Ôžêîå«îÜ‹™Iá»@ÿnÝbû%S'yòÂ7— 1Ïè;üÍ!«.w»œ˜tÕœþB]ú [HSø*KL¼L=Š4ó“xÏM}g["'Æa|®^yóGH‡ˆùAðÉzÓçò)ù-D‰½êÀ,ªEc²Ýç$þ‹ò îyô©B@”Ë]A"ç"¢¯~Ÿ!cöç@J,oÄˉ÷üí„V&q½|žÅc!gŠ;ÍÓWЫÊ}±ß¬ÉX\¾fPÕ4,§Ÿ@Û3Cí+3žV/ÁÒç)O9šî®¬b†x9ÌÛÎÖ­$¶ò£Û †`+T ÜAiŒA£aß)<¼Î´p¿®ÕyO¿aãì¼Çc©4¸•è:ƒ®Æ$&n^ìÆ,é#ç½É” ³hÿC#ëØøNñͧ‚"yeb]}=Ÿ§7Ò$²ïµ¹òWÀ¢ÕíóÊpØøÏ$,—)dÜ^aA=™yà‰W.ð’mð¥v³ h·ßýÂv×Vã›´ãݹÅ_$C»é¢Xb媶Q{°¾YúœGQÀÌ¿áñ¾ñyìy¬ðÇÞ}š¡3Ь¢U¤9³vÓ&)‚ÊÌÉMg1õ„KøÌGA¶ßQj§}Ä´‚G8 ¥&|ðôÜNç¹~üjÕÉÏÀ µ`rM Éþuï=#¿ðPd8·{º7òÚ1€`¡!ï„8³Å” 퀑ú‚<Ò7Œd‹šUÛ žÛò¯ñ¶nœi¹_Õ`ú¾ûìdÍ8†çBÅn_rÌ0sNá§já9±X)#°)ÛÑãã’…aÖîƒÙEåy5™µYxÂÈ¿T~`Ú¬„¸¿‰•kÏw`I‰hH›|G;:n^)Cš9†"b‘4Ù~êCh˜Î7û b3tëæ¥n’eú?=W¤[ê'„v Ú·þ ÞÎþTæc¬ïúï´›ýÊõèhª‹ücÞ~I:Ì<yÙ©Õ¤5jM,>ù¥[DÖ]¾£è²gžäÍ­ð‘ s Ĩ¦ÌßÏl‡öý2äñ¾%Èû×eŒË;¢Fedn°w;Ã53VQÞæ­S ëѶùªT|ÄSl~&?gY)ÚØT¯ŸëƒLFZ­”r$j`…—ßHZŸW_Û #ª Ó8uéJ`ì®ßÈOXWU:^¡#èk~ž¿ú ePÿÑ}:K¡mø AzæmÐñ÷‡l‘ãb¡ŠÔ2e ê}iÔÙç™ býöwÆOæŸJà¹3r %m 4g @BŠ Ž;ñ”^~is˜¦W_‹ý,““]zMYG¥´˜<ÜyAÉ5²Þ€ý,¡ŒøxZÈ¢™ ÂÒöj“‚U½÷I¼¬öBŒÓñôñÃ\æ¿é,9¼Kž}ìǽu—Å®^KË-Å ‰¾VvbÅm_`ÚÎE7FÚlÃl_ÐÛ6¬@˜sÛ!㜡X–ÖÒC{¥Obûe¶*@uÖh³[íj²å×ç©]óÇ‚Ƕ븨±_°4Ê`p€šÚACþÜZ&1«Zƒò©†©’+\éUó2C||ÓXNçéE¤Ö}öîÕìÄÂÜ@‘D‡JÌÊ¾Æ TB²Ó‰Ïìô2Ü¡¸ÈŒÈ ’DA÷ïý?™cqb„õ¼ã–Žó·ÊàEs4¿¦8ýh=zÐ_3äæÉI‰<,ò«5JÕÛÖP UûÖ%«Ý!ÀýÐçƒÝP¶°Ön%Dÿó„¯ý¯Ègwè¨Ì ³Ì1ÊØ×•ù›…j?¿³¼ùÀój ϰ7á$lÁ*°UôFühÜå°=–L-B\)È Ê^‘¾iðc±‹û¶ BôB´f¬ü+·mÔÉ»z@¨@ ñJ³ºŠ¾MŒH:,$ÆKŽš€ªß kãW[ªàžgíÜ6[!)ÇzáY}—ÖFÙˆ¼ÖâÉl ï§Äõ#¬1_éÉçÏ÷x>BøãNá<¢wèða´¨Ü1V¨yQt<£l­ÂÍhãùÅ>·­ =^/ì„˜æØ·{ÔÏ…¯9Í//S¿Då…j³v„Ï•VÙ–fœ ¥µÓ˜÷²"^5S—bƒXàÞå‘*9Ÿ|¦ÃQ'áH[v¡§x ³VuŸïß9“3¬u2˜#mgp•]¿³M}2䌌@Ûy퉫Ȋq®¨½–yïsœ_µ($ºè``(MýI0zÁîBs}.¸jû ™Liœ0§9ý[ß$Pºýüà=ªt!KÊä¡tt‘zM±§«þ@»¨ýS5=/~Há×…Ý죂QE©]ñF7¯@Üû+bGæZ ÂÐö>¿E>zIÄÝø[ˆìwëøs•ӸÌÜ͹]bé÷1ÄÞôcír:dôM‡ùLe1’ô‰œ3|œÇ*"~ì½CÃl$YœRÚ¸¢¶Bh/mN1jìM/ƒ¦&ª šÇع[ƒq)-$@Iš©çû:TÃ[Òl+RÏš‘Wò×Ó§är†ÑwR;e{ËN˜_ßesq“óçòe¯†`i@Ÿ¿Ú–þÊCà¸fô`÷äL¶:ËÖ²¸²µ‹æ!àah†Œ2Ù¾SÿÔ‡àSÐ,4Õ˳ç€ÿ~¢ÀÖ¤]xXóm€ÐŠ€ˆD|¾¸–ÆP ÙE5ËÓJk‰µF‚N¡» ʶ ?¯xZ…Ggö£V²ÇVÉ¥@«…Ƶøô¥X ÅݤÄò‰šmCý\ÅËB[y#;Çê“r ‹›üò†’5‹Ö½HWPÂ}Tø$¤%k´aþò¶À¬tøRMs~"+™¶ª<Ó˜‹­¤GïB“ìðZŒ÷” ÉB¼Ig{6j®×ÀåÒK‹yFÇ+Ô‚½œ>û¢b±X‰H5‡Kwïû‹ÔwÓ!uÕ¤þë’Õ«²šJõ~W„“Ž–à]ž›÷´˜JÐÝM ÐߌîÅMÈÇÞŒÞQr ac°é?D¬|JÒÃý‘‚(ìgæ=p¥BÕôä4ZmóT8•`è^ðAò1*fìþ$šž/9 p„CãE w1ͬ+?1"_µ•1•ç.B”ËöŸÖ?|TÖÜJ<@Lw‰˜È|›Ic'±bÚQñ¸¶ºƒƒÒáØA¬ñœŽ±¼a5Šëë&j®æð3–:(ˆ%Eïôƒƒ$³ñ‘Ý6*,¶.éï ú\¥y.Ü£(*ä€ÒÍÙ¹©µ¨µ„^¥ÿpjˆõR ÈwEÉ­î_Îïç¡aY(ðÏTµï»a(®AÿD ÷Éók›Y +Y‰c[a¿·RGÄâ˜R•åø#e:"=4ªKj!}Ó,PL¥ŠŠu¬(J¦ üÚ@c¯ü´¨ xž¿n p4ôö4ÂTù Ùû¹K˜‘h¤¼–K Ê}¦ð™=òâÄNà(BIs1æir:¥ ̓ñ¿yÏOÓ©ckTßëW£Î;©à¬ïÇcG°·]éôe‚!g÷«_ä4äü|'­)HEÊüö Á›/S\F¯e†;éíž²¦ž!á¥ûäP ]õа›ú§½žÊË8mÅŸ_Ç“¨¨5³'ìg«‹}̨oÍCÄ9ªÅ’bIIíGÀ¬.£3îï5Líà0ƒž±¬•‰Šf7ýòƒ’ºJ„¾I¾£!ö`Ò?âÓOHû>«€)‹•™¬[]{j¥wïô¶m¥¹ž´9×ù4!i˜JÅÌ¥Bc.…öÙØ¯Á$æç7¥Ì/Þ€\¯7ŒGt!›ëA+S抚)& ­\’3™Eƒ­yqœ)qÃù‹Üµ‰Þ±Â܇‰#*—ê]òîp}¾$žº*㤺èE´J¾¸É`€RÏÿIB Õ‡jîgVœÓÛÌЦF8µ¦šîZ Ç®¨ÿôÞ’eÚD:.[´C§²œ€äî„Tü^ºŠõí5wÖ/ÃŽõ=&Ñ÷À¹õxÅ=ùLM_ík‘_—}0w¡ç’æñMð©h½ê—¯’…øcŸ”øbc`S„ïuPËYr:°äÅʲ¥øÊ £éA±¬=;‘§[n‰ÊŸ3¥?<3¨&¹„,KâN]µ{±_ëJðÆCJø¼õÆ€¿åÆ¢¡Ý@°7)QÝS.).w_Zw–ñ&äløÄƒ¸sÍÎÝåux(ÏG׿üØM’$,dÙò±« ÛYFõ`c gv²°Ûæ7¾D®ó¦ÍÊNiOMÂÐÞ£s‰ÇÉ6“ˆï[„DŒ³ŸUsbŸäq¼Ö·ïÊâµÉ¡ÂÚ›4£ö˜)?=Î\xv†Ã~„×c/òŽ%‹AÒÄ,ìä¨Z{Sïû8¬Iü½„=ê1lÁ_ÓÖ•¾]‘ù;ÔÜ]¬„Z‰šº¤íÓÔ>Õ¢U5ÿ. LQ›2ÎÒ þ2Ókøkìëó+ßlY2cº°lŠ f†ôqóuN“ðæfì“M%×m4ÅþдM¥D0‰*Ží<©úËtðvò¥A낌â}á }òYýšálqãë辯ceý£íoM±¿¹–PÆQœN;®ñ¶p8&ú‘A÷º²¶hZ†­Õ~Š·÷í lJuEÿ?Ó",Ýt-þ)Т1£ŠqöILiyaseéñAÌ<Ô)jÙØh©þA›·­¹‡ÅËôòõ?÷ ýèpkpÊuí¯›¢{·¾˜ÍÇ™¶WhL„£¤¤;Ð)|JÅÉ]­Jv}¶>HÞu;˜}t¾——IÙx‘‘›!IqR‘¸»v¤h ·¾pœ¤8½¿P-——¦¥óQ¢Bf¡¸uëóÔnä—ëSx².÷7·j›E Wy‚gµÖÎx’ûnTšŸ/ñÃa_g™Óœý¨î{ÄMñîœÇ½˜ÈO4j–tÖ|zõæyÙ…¢µw¹“Ø×=~ÆY+Œ0wœ˜#oZ8¢P>;Öþ>Î&?wü÷g<–œÔÅW" håVÈê±êÙbŸSkÚŒõV;X³Ö$¨æÛ/*ÆlíÙk+dWÈ(¤µ'Š;aš˜= N“ç˜v¤¦CŠ/ÐxI~ö¤[­ŒZížæE¯',T&ÇÞ$riI¥³¦{àW;#7'MŽÈCô7ñ«RKÎ,ØAL?±—#=—1ÒßÔ(6¯|öM__ T´¯>ú¥Ö÷šÔÉd£Ÿ†ÉlUø‰WEøû¬buMÜà ¢9Eùü²ì”%g)Ý_~ö!Ï훀¥ú LÜŽ¬ƒÌ0þÌÍP§0òO ÐXÙ2‹ÏtŸ¬„ÒÜ÷[·׳GÀ‘<½&Cê (¤¦ ±2YTˆ ~i@Æ8g<Ñ¿ÍÙ´ÊRÇ8Žéì¤hfŠk§×:|{îNnhœúIx`œÃÇšÈ|0ã#€ …3 ¥XÌF‰úR¢*+„¦ŠÒ!êÁŒ „Xòäº)t<©­uòŒ-¨à-Vf=jt àªïÙ€ŒO¥â¬;Åé¶Ÿ¯‰;rymf°-å‹ÕqNÉ#¹zÀH‘(Ú¥D«*\­¨‹˜„ÐMÊ¡ðÉ4 ò| }mùºz¯d—bWÓj˜q¥3ªÌ¸ÍXŠ„Ã^%òöXþïRÈ]óì•k¾… Y^ˆÑaœBqöbÊ`Æ¿ù ”F³˜ÚU'OùîcƒÝK‘šù‹BS"}”û£ü‹u7K ˜¤ÉR fn­×÷ ®3wíe»T<à‡æÙ0%J¡:Ydlt‘ƒòŸˆ¡*!^ö\ðª%zf¯/sÃÍצ¦¶jìÅØâñ>ú”À¯%ÀÇXdvä:Q» ÛPnÁb9…+ƒgZ$Îȉa¶ÖkÙCŸ¦kéñ–K†û&J2Tn9´”Òå-Kd½ÅË>˜ÓŠÔˆNUܰŠØk{Ø`;Åé{›ì(H9ue9} ÆRr‰5ŽiÝ-¡´6TÌœiB&Ž+Y½Vg‡6Ûk¼Z‹fÁÍ䌛ðÓó í½ý~1G“îÝLâÅ!UHÉ1ÎË¥w&ô— d¢uýöÈ ‚Cݵ>¢xg`zÿtKj +ËÏ~¶·HZóoq8ùó …¢81Gƒnç?ú¯ `ªþ€‰=¥ÓüMâÁŵƒÄŒ¢Á›çk.›\&Î0¯d¦â“%Ü1'¥ô­¶Yö;£×Ð#þ„n‹[+$­ÔÔæ2ƒÐJ…P~˜óVIzÜðGðô eš “U„XWÀ¾gAú rá|Jg<*_Ã]¦cÅàÞ’3tã– aNÜ‹Þ_-lƒûªÏ>wHCÛÎŽk tÃüuÕ)NF¨ ׯ_àõ¹½ïèæ˜„|’ûw %¶ù¦!¶›î¹ì†Dœø±è3 ¢X ÃðËäš(G÷•qÍO[6 6Bu!_±‰;kò›ä£ê}·µ¥bó˜_@’Âçâ›í-UŸƒ?QB ˆ}?mÊÚ¤)žbþ½ê?#wØDÊâäH7Š‹6} ~xÒÖ]:$¤e—> òqD¨HV1éPÂÿ·©¬×+¢w_¼o8üó#!.*þdƒþNñl†ì€¦/w‡œ{Gea×M߀Ì7XíTæîÍÂI@#vÇåÚí½í¼¼ó2‘vˆ.ëHŠ iCò€xí$}¤ò=þ%ÿŒÔQýH°;¼Nù°p,Ï'(h¤5Ûöæ² ü$·Œ´»ñYG;ž­ Éü\µÿßD«V¹u‰O¾¾w†ÊÏ¢U&UífCD¹ày"¶êü}oªGM•£9ižЅl®¸ßkÙ¯d„Ùœdå‘&Œs'³-‘[ ÆãÙôRxbÞxjôÝÒX¢Àï¹ÿç>¼8{QÓÀ´\o¥?µŠ/‡¢7QT⤩Mð;ÉWºÍUü?VòªâÊS‡H–ÄJ®g2ýDJ'÷DéØ"‡¸ÆÚ’'\®óÉxÏRÓZC|k{C;Ÿ'j5E8€Éf•7oNU”¢õ±8^0°CuŒÁÁËѼàÑ)»?X•qÚid'e€6¿÷uΊ^•ú‡F >ǰÇNiH`ÜcúK0¸ãDÄÀvYë›Íž¡¥ølø#} ÷'ÒýžŠE‘ÏÉ[—[@"u–h[²‰ñç˜0Øåîi@q1|àh}·3Ž4áóz¾»Õo-H¥T¬ú=ƒŽ=Ê S÷ ûãÒB¸ z0º)~UnÃüØvØùVr?¤É/ÁßãͨŸ.D/ïÇMA„I£ ëÜÇÀé `I÷+râ¼ÖÒ'ÃÕ0 l­Ã¥Ñ[žÎ¤wÎÏÂýßB.#£¯5‰ µ„à›vÒ‰²¢E@”®aƒÍ}ÿ"$®Wóže† ‡^e¡n5€œ^tWr埊 ’WDk•a¿É'ËRQW¬¯Ðà'Ö÷„b?ÞPmKV÷iÎû6ڈѓî8G€ß'½vÔ˜µ˜ŽdÓùó&$OûHœ~®8?įœ¯ä‘µá„x×vÆçšëüæ3 ‹×oÓ"šGœÜˆXÀL²h_@ Îª {\ŸÜ2GOü%$FA“-\𠯯8 Ì˜ž'7ü§¦ºdŠ1—f6AˆÎ¢©>Ë+’ Vç³ÍSXW¾òßhÁF‰á©Z*…»ÞÃ-…9H"=+ìy°0Ò3n)aOê'0<‡]ȾΑãî9ʬ=¨²ÙåL˜ÓTÙB¥ñŸÈ¥ø6Mï|–6kä'OKï„{·ZOºéй£:c‹&’M©5˜Ï`i¬ÛµRzÐr‡zé.K³$:}Ô‰ìe‹®r‹%îç£8 Ï£H'¡çò6%@m¸¢PC­Y¬Ù»¸øuwŠÎ*Dj‘ r–C¥ðÙ0¹G¾lå[:Qù¡õ"§›O’J•â>}¥«ðð¿ébà«T´œæ‘äîqµÐB.ܬ‹¸'eòë2$C¦>ú?3ˆ*¡Òª×ý¤š7G=yVý€HSsÅ9“9G©îxñe¾ßnÀÈ8Ýô^(xXÁa +/Ï_[JXo„ÿ «k4Ø`Àng¼ñ·>ähß8ÏCªß¾TÉ ŸYklêÀ‡x$,˜ƒJOΨ6ÁQsKëŽ +Ȉ'îÅœÂO€µÕA°›/©Q´ïÊ·0•{“0ÙAÔx¥ºâQO±9jz ¹¿š2Ô§>šq²9>ÏJ¤Hö‰Œ?âÃZ“*¡,ÊD9÷BU':WpÒ΂¤ñÓ,El«j¥6¥#I¬¶T³~aŒ¨x£ †ôKbqrÆç#ÜÖû ©kÿUê6I¾6fE{Jq× )œ üˆÐ]è5`gg}rÇ=Fí )‡hY¯Ü’üÔ´é·¦F @â§t§ÒäW¿¯5·…u„N†0`o÷q4Lº¿»w©×[‚€º”Š•“Ò”k¦fŸdÍFú½“Wµ-(éБ(¾Ý¾MÄ̦‚Múòc/–¢5«xo?ܾÊÑŒq ‚)AO¬þ‚bö@|v•¨{Ý:ÝëL¥žÿÆ(2IÂêÍÛ@✎ Ï>ÀS+¬ÅÃ< · r”ìygòðØ½…kãŽn`Ã×.ÙÞcæuL¸ÐÍ[ zSMüÏ$(X2B«º’¿¾íß$¢‘Q»çqS§UÔæ ÈLâ ·(gŤZ4%— ‚ó Ø˜æZùW˜#¸5w;ƒæ·jA0jûFø,——ºG•Þ`ãÄ_6†âÈ€tA·•}È:êœñÃ; ðO Xj€Ìç`Œã0é¡$Q¿¿T™¸=CÏ:·êéÛ¢·;Xd“-IÑ\Èá¯Úu€Ïµ›dÈ›"À«w¥mFËeKò¹Ë M½Ú^[ ög¡ãaW.~ c ÐC¹©^AØHv8¥’qQëIokÕo*XOÄc<žºx Á‡x95´vnhrSþ"*.‹ðÕ“p5õI¤’]BïV,GÄí’š‘g×WØ OöHuPgTºó˜ OàtæVgÕ÷O®g[ùéîöGT­8pï5àÏ„i+-¾Uªœoé2{˜_ç˜Wuqlf©ãã$"È»ÈË!~A"ûòé¶ðiCÁJXêwúû&3ô.¥Í9ñf› ÁÐ|ˆ’Œ¹·¼;ú‹’ðfçJ³¿`3eBúøàxá1¼="…ðg3L–ÛÍ^‡’ã;Äuåéòe2ðÒqýOÉÉûlºW˜˜Ku?Ê_.£‡Ë­WÉüM-·Å ìÿ´l™WƒPLÄdT+@îdílè{–ȃRÊkŒ“òOÒ–×÷#X¾;¶úB°þu¬pû‡©µÖ\ÚŠìÚ›L&Ëe5l¹eß­¡U™ÿ÷ÏâmL8ØUÌS«W¾W ×gç>‹ìMÈàm|„É×Ê’ê¤]n¬·¿Ë6)J)=¶‡’ôjÂý`¯¤® jŠúBsC§{={jhÿ†ãaE‡ï ¡k·¾@éZL\ý­»«Ôüwë¥xü!p,ÿØÐRZÅç™F݌̾(ê$h“ ]zÚN†(S0a;ŒX}ÉͯÐý ÿ^ AVyµÖ˜„PJRO}aOÊ )[%:óHC1VW öõ¬‚€ÈoBT,>Ð퇜«¾nõ7CëÝÓŽ>…+<Ç™,"ÆïæphcG7Õ_vˆ€€CºoxÁ|d¡žò¸ƒìÏØ¨A¸©Ò=&€Zf<@z²þ5ÏÚH|¿1G¥<¬˜u{£°þˤ¹Rð6¼A»Ž³iÁJeù\`ùÚƒ› jæ%~? ¬ZUãe6w8]LŸ‘YJQc¤{ Oª…Òh‰qBfe8»ƒøPa|Œ°ìm2a_Éý?v<_D»v_ G¦×=üRãP’ûÊÚ>Ó±ùܽ5ßIþ [ Š`hGÎy9«€Z!AþXú7¶É¡LÙ ê•>=éOËÓ²G“Æ$ Ò ˆÀÔ\ÇD³Þxþ9_i—b€y—dGTrFO|ÛÑ_UÞ±w¼à„× Ò³ƒºÞX±'F@AoB ꜶÕûÞÙ¨3­fÙ† Ń ZÎÐd~?Y_˜¸y&Ö€šulyf5 Ç<Ýa£¢þµx+~Ÿâ‡X³Eer<¯Ì"XHê½K¶Ñì/°j_ŠÛÊzÎD\ú‰“µ(Ÿó\øVŽxŠIV^çåv𙣠gð‘ê’rˆòW½Ó¶í•;æ¼’jPfl‚ ÕïÏö]É–ìßdNù¾óšƒÙÝq: y‘ŒžvNƒ€÷L-#H8´tþ!o7b8g€eðeç¶ÊÜ”ïÖÀgÇ#F™žéä*XjGG©3Y;;¬ìZ0™‘í+e71ð=s0SxöBx¬5íÉ^ôŠ.8QÜîû"ÞãnCëëm©Iò7ë"å^‘ˆÇM%VØ Ì JÈk)×^ª vSVW¯Rf Ö(ð¶hž3@dA bŽ xw“é‚P)8•Ù‰wF¢’g´V$?òò¨¾2×ÈÞJ Ð]w€)ãž{Öt’îþÄ.×ÀŃ¿(Ÿp«ðæD•ÎŽ®m¹á.3#dé/ÁÄ—eAçǘP½Ýîž\-Úÿ™(¡Ð(R~«éž-LgååqF¼£Mh‰–¨ç.›rRÇ.ú:JÍ'HÕ›¥yÇ£ Íëdad¸m©,óШÂÜ\ž¼Õ) ~Ë;+³ð´ÃM)N¡¿©â9l”œˆÅúgE˜YY…Ì_ò1¯qE>Ü_e¸€ê7UÃwX²rúÚþ‰Sü†j}»(L‰™ù—M‰ÿé“膪,ç¯yòñóà ˜-k˜o‡ÂEû=x,XxõQ‡-Ñ.æ8'þ¡u€K¦Þ%+èq¼÷áÖ2LFÚ §¦,Ä –ƒ½­Šâ”‚3IüÙz]ðÍò \Êk¥æ}¹õ§ë¯]‰í²Û/O4c[i‚9¡uöY*ˆ|4Õð! ÚÙ{• M(åâ …½¥ä§ƒ£šELfáç÷ Óy±´DõÔxÿþÚò¼P_Ö¹’þap"Ÿš¼¯á½É¥§ ä8œåXª\ òˆNæö\½ùݬ~)°¯ÏuºøÄ=`™î%Þ!ªÕ æw G’ÞD@‰B‚sέ˜ &ÑE¾5Èuƒ‘ùôº'¿Vê¨3 ¨¾èõPö"ìÅYÁÑÍ/’ [þï ÔyÚî˜Ï‡Üã7î¶÷å÷ràØþÙ.ÝÍ]^÷О³º‰À hX¹îûÊ0׆Æâ(M£ûŽË$MzMg™£ïïœ_ =öÆ<ê3¹ú´Ò•=î…SBeƒ+¤R¿e1Ã̈,2ÍñuX‡–âõ3Å«bA*Ó“Ô;àë>œ¶¿èŽ€cŽ×!ÿ>°(pö(~ }W47x{‹ÎÙDüC+R4ôY¹†n±„Z7IIsøÀ:èìt|¦ç@(£@mÁ Yª’°ê×\eÀ^&Á~Fd»wŒ¹zÞ]uOÂk‡•À²0NX«Æf çhF’3@þ{àü)ÉØö2—KgüMy±’mâ™ÒÖ“êÞ‚Ýf” ‚‘€S툘_Ü~›ENï€pú\;]Bà´ëa/…òz¢)S¼xÝê>yêúÝpV™{ªÈý€Â¼ƒJ§~‡~TjM»yTpÖ“)p¶™ó¤ÏX¶µ¥$­ju­’.:weÛMå{9/±‡TÉááqÒKFÜå2k¡'Û±ÄQ,'‰r£È<‰™²¾êùlãñ¥uWÌà¬ù­ƒ›<®¬²×Ç×çü<ôuÜå0S-£•$Lz6G°*ü¶¥ÈgÄñïgñ‰câ9QÝ1fôœÈ1nCWyy'õ Q6óþãü#äý¶ç /£%}ï’Ò±LÜëIÑ–Ñz}Jfˆ8ÛíDª>®4˜#7 QÕMdnòñÝ?.(Wò¥ A€1(|áåe ŽøG†À0ôG=³Œ#ntÃì^Ú·JÀÜ´ùÐn^ÿ¥xóˆÁωöÂñ÷nºÍ¿N”b´;ߢ+5óMο–C G[t m©s‹Èuq ËÜ€yOtb‘ŠùŠ,!ÞêÏ‚eYñ°‡¾~h‚¦+®"àÜ/ ;‰L¹ ‰‹¸Öÿw—n}퉽*ËIäÓ_Zª™5YÎ+lùöe¡Ã3>?6ç…YÛ9¥îo¯c0™1ƒÂG¿í ý¨å=áØpývÃ# ö֣ܓ^/%Â1 (®*Î'.j¹ºQfº6â¦ú‡éÎÒ’ .cr_OÞöh£UÇš`¯ÁÃFþõö”šòò.ë‚»…¡.ŸÊˆüJ~RìÌ¥×mOjÉ©‰öEl.ÖµvvŒÛn1Q;$ÌáÁ±ÝØØˆ{}qâ›ièÕÄ.¦ÕhÚÃg›ê”˜˜˜œö8…,(ä´w5 ¦i´Ì™¶³ÀÞ³ž¸¦ÜpàPt»äÉÂJ%ÙïÛ_-àcÈ×QÅF›w®!QÑ ¿ÐlìÉž´U ôÛàžSÕD‡ªé…]Îpƒ|]2€]}^.SËŽˆ‹«”Fï6†íºqPøJ+qx¬»ŠqĪ fÎmŽ˜Ï$À¸<É%¶KxŠ@€¥µ@ƒeNBSê kÛ{ŽT yÔLX²u]iñ¶zÓÖ)Z;(Æ2`—_²¬ø=¼û˜ ð &lá÷ÝX©‡>¯z8oûœ» SØ.€‘â€z—VAù×l—$»w°\óäï2ïÒò§¨òÓ-ÈÆÚø[ÕQ.wûT‚¬Ò¾QÞþ¬Nzý_—O¼ù‚UçUÕJhö‰i]ögë™ýê§Á€H Y¿€}SØo£>'ðõ 8cñ¥¼Bÿ㨿§–åVRù0Ì‹}â2¥‰þ øËËAû“ÑË¿)µr];4 0Yƃ¨;…*óJt[|€¤±ŒItЬP÷0~'²„Le¥Ž)-0Xlg–”{¾Yëž4õ°>°¶ýÈÜ8"q™k9Í‚hJí—%ZÊà+Õ‚É®É7`™¶ÛSžu”(ÄIFo‰ƒ£˜‚K÷!ó"½¯åÝïG¼„ôD˜ÃDúŸÜŸˆk8Ý~˜öÖ†IW 9xÚϬâ ÙµæC(à•$CÊž‚4GÁ`V™·Ev‚ ˜iAÑÆRÌØ²×Ö÷T€QЦ*\-AP}¬¼øüp;* d,KûFœ‰Ã¡`Þvf–ßÈÆ?«¡8oI ëYyšíéZŽ!µð¹T|sF7%ýSNÁô +,k“E–Ki¼_Ž¿}»í^1ÅïAêe$ùÑ®·%k䜆û|ßNÞâHO™17ô¦£n™ƒÚ†ê½ ÷áÎ ª8L#„JÏê[5£ŠæÄH™c?Òä”4d‰7¡‹szÄ_ñ=] è°òö2ô°mö½úö §¤.ž±®Èý³9[ygçX•C¡z²4á @Üî‘Õ±Bd[|-ïúgì.‘$ׇˆtp)Þœ-ٛ咴ʲ1£f(ÓqÂq•Å'rc\‰µ©} NÐ<çý½NDÑñ(Tû³ömÉï@±G¨â󧺦Ða‰øí( 2ž‹:âÆ2_ "Hiz-´/6é=ʽ\ ùž€ö±æ®•Ú‘GPàCÿ–¡o3¢EU—¦’2Ó`ÑŒ6ÇC.¹¢Yòk/9Cª›öíÇ“0\æÎ½R?Ðé‘å˜Õî 6*®œîߨ/~¬Öb“¬bßê\„ 1Ó>Çè¡k>%G@`™su/¬—È 9„  ×Ì,àèÉè±ö᫜î„ÅR"÷4˜"ì¬ÿt'Òœò<å„óìvk¬ë¦v²Ýu2ó;ÕΩ|lØ/W‹ÚÃÔñÍEjcE‚s%¯H6)û Ë Am€µ“ÆOªä£WÔš;Cˆo…¤öW¾vä|ëÛœ™Ñ2XÓ!€—¦Á`¶‚5,ž·´ÜOA‰'§º¨ÜHÈS9Ü…½O Œ_->ÌýIˆ®ƒÙYÓµø.Å<‰¦Ï˜.^sØ’ºt>5O( 0ßù­°ÊèØù7E/ãûz;. yTÂIÈu)y⯃¹GÉ‹ˆîÿ·™ó4ÝéaçÀc¨ƒ;kß,zn3·Uç7‹9÷0+öhcç§ô²­Æ¸+ìºC ŒÇÚ|°bY?ÉÖ×û€787áRüÐô0识ë]ÂÐ[0bΓ Î"xŽÛѨÎè1¿lU[ÒmäÜap)Ït©¥„!F•ðb,PA|:¿ u7 8Ív´¸0@ áç\ó}»7Ô/I‰·*wÀP'e_"­BB”òÛ:Pè:S»“šª´ / Ñó™­nN§Ûñ.OtfÊûf|ûY9ƒz¡øÛ¥x:ú†ö‹]0èpÉqqrQOæÉî±Ðç‚>eÈì£BRC “¯r5ÿf™yOjO~þt£LºCyDˆ+’B.c°ûá ›z®žE ¥Õ¹–f~‹%·” ñø7¹V,ûÞÔ£ lÙdòƒæ vt²Ô,a–Ÿ5zËSv//ÈRcA¤2qq1ùÙCž¦êÓŒ… ìÖ¬é’Òó…°YDîŸÖ΂éd+‚½ãàjHÁ²èµ/ºÖÅ}+‡,¹ø»zñ§•"¡¬Ä—ª‰¯i uÇîý•ù€§üìÔæT^EÎåàñ°Ê*èÍáñÙhΜ"jǬfVî“Ü2Å]7]dÝ}GKfƒ*|Wùç+#0‚´ˆ'«-Aºœ“äqãµzñÕšM&¾xŠB†±·ÿè+ЧE‚yIÌMþr· J õ÷µqqXZ í¶ZÇqužª½BÒUÙÏnñˆ ‡Å¼gr2-ȳOºF¨*}[Œ nÓk\sBª2›Sý§UOªé=!­®N¬?ДÊùþ^¥³³ŠòŸzÄÛFt_âáÕךf"mÅVéßÏd³Ÿëó8@|c…~L€ï1¿’‹Ž[CÊÛkÜúGÐS/¹‚nT9vä7Ž%_.ðKÞUص#3ÌË~)"_ÃP#šŠ endstream endobj 680 0 obj << /Length1 1769 /Length2 10503 /Length3 0 /Length 11626 /Filter /FlateDecode >> stream xÚ´PØ-ŠÜÝšàîî. h¤qw—àw œà‚\ƒ;AB®GfæÎ̽ÿW½W]ÕÝkïµíœµµº›ÈÁ,ïueãbçȨhrq89yØ99¹Qéè´!®và¿Ì¨tº`gˆTø_g0ÐõÙ& t}æ©8@Ênv.¿0—€0''€›“Sè?Dga€,Ш°” `T:G/gˆ•µës™ÿü0Z0¸„„XÿHÙƒ!@(@èj ¶®h´h9X@À®^ÿ•‚QÔÚÕÕQ˜ƒÃÃÃhïÂîàl%ÎÄ ð€¸Z4Á.`gw0ð{`€*Ðüçdì¨tmkˆËŸv-KW 3ðl°ƒX€¡.ÏnPØð\ ¥ô æ†þI~ý'ð×ٸعþN÷WôïDèÁ@ {G Ô µXBìÀ5ù×쮞®¬ ô›´sqxŽº!v@ógÂòRàó€çbá qtuawØý‘ãwšçS–ƒ‚dìíÁPWÔßýÉBœÁÏÇîÅñçÍÚB< >Kdù{›#‡âäV’ý‹òlBýÇfvðqrr ñÀN°§…5ÇïôÚ^Žà?œ\¿ÍÏøù8:8,Ÿ‡ûA,ÁÏ?¨>.@w0ÀÕÙ ìçóoÇ#T..bá 0[A ¨ÿd6ƒ-ÿÄÏ—ï ñq>k Àùûó÷?ãgy v^ÿÐÿ¸_Y%Em–?'þÛ'-íà ðaãá°qóq„|œ¿ÿ΢„üÕç?¡JPK€ÐŸÍ>ŸÒvÿëþÿÚ &ÀçRux-ÀøÆßpòqZ<qý?+ýÿ?ÿÎòÓøÿ6$ïfg÷‡›ñÿÿÇ ´‡ØyýExÖ¬›ë³þUž·ú¿T=ðŸ;«AÜìÿ׫ä |Þ)¨•ÝßÇq‘‡x‚AêW ë?Åò§]ç÷’ÙA `uÈïWÀÆÅÉù?¾çͲ°}~9\žù‡ ü¼8ÿ]Rjáú½aÜ|ü ³3Ð •óYHÜ||®çU=ÿÐ0€ƒêàúxÏ`éàŒúûFùùR¿M"‡ÌßH€À¡øzf¾ú=3UþFBÏø7âåp<¯¾ý?.îgv»<¯ýßÖg=s€ÿŸëYþ ùxžÄýßþç¼Öÿ‚Ï Aþvÿ@.NôŸdÏõ¡Ïú/ÿsm‡ZzFÿå~îÅñ7ÿ3z«è_ŒçnœÿŸ»ù×h\Ï®ÿ”nÆÕÃá_îç~Üþu<ÏÕ¼ÿ©ö<‰7ØùOúݶ…›³óó{÷Ç>>Ká?øÇ ö[ .Î;Xˆ„ÚÔ‡vÜÔJ‘y°íŽ‹ÍÐíê¥3±ù,:wºÝa"§0Õd¯;_I¥ Æ^Ù–c¼”\¢úåsÔڈі¬Ñ~ïû`š¨9µÛŽúu’p`¢øHª¡Ÿ…œM[rÏ÷—“¯n-|+l—2]¾“› ¦z!ÞGŸ‚gCÅòhøü®Æ^ ÿ+´‡Ši¶X˜7A¥³tæ9sÄ/‘\Ù(^0ãþôÄš½¼šÁÍ›x¢RNdAõûËSâc¸Áw;ç½Z¥ÍíÒMBKbHL‰;:Eï#½ŸªL´àSV²î<š6GØ9¶iÿŽËnŸÑ{WUóÆùàÌ„žnB˜‘„˜_émÌz›b’})uoÎÏåuO¥3VsVµ$È“š@Ÿ&šÐnÏ]^ƒ÷>2#A½>s„¦5AJ´—/‚6¯3²h×jð!–híÍ ÅêÈ*~S‹¦™Ekgà–Uv½GÐÁª6õðŠçÒ쩲÷t¤ûÁ6³þÏ ‹,‡®½1=‰ l ]SS°Ø~m[Jž, Ù[† ·+¡V2DÒXš”ìÌüVž&u´ASãúÝ#4¦¬šýö~Ô›ÈþÃmü Š'©šù‚Ù8Å(ŠÈñq·Íp›cn„ “›Â²k¸›Ê‘qŒá…çz>Ÿ}:?1.bãe¯°Ò’ÆBWµ{‡g˜«–ðúd¦ ŽÌD¨±ÿQ¸ôU3¢ïyÔàÐ'ŸÞ(ÀRD`żë:Iî½S‘x§ §IšçQj½Fÿ#ƒ~ïÁqÀAXT„}X„ÄËpXýÒµa»ŽPü©îëŠã7J® -ÝZX¿øAá÷ÝkÀs§uß‚O@€¨=Ò·Çñh^ê]8A˜߀?|pêÐ êm9™B°u`ŒÿÄñù,“(Ö1F¨«N¹fžè5¥óÛË.:²°mQ®|— sUY÷¢1¹ØÙì }ZÐOÓÅI„Þ3Y÷ì9Zo“U.¨˜Â—E‡›c~¸ÿRŸ±¤åR¢Q3ÝuY-nï’¿¶r«íÝ>&4ß°YfqE ¿yJN*øy‘g¯^ÉäÉp·OÏÍïcæh9oEt=ñ€ AøeuJ¡R9ñ¦]¹êó”²NB7³lšÈs:KüÂÌò~äzOÖAšÀÊg tzÂ,^¸>þY¦´ÇbÒ({>¤ö*üL ¨^±_ˆ^'±Ä|—Žï~¶hæé\·œáÑrv´•á%3¤²md•× â¥L¹*=Iy2ÑnR¯XQiÂ+jÁWŠhöèÂël~— ¶{«²X5Åm…§¶¿ÌަÝ'L|÷Ñc"9€I¢¾DæÅz~ª®9¾€É–mVnù¥²H•ªj÷;æsŒÅXòî÷Å‹¾YI³½”‘:ÅOcÕë…û˜Ãev³›ÉüÓÖ™üˆF(Ü‹ëM“y ”T†î:™[vê¾tLºƒ-˜ö?Û*s(pqÅè;€¨ßª/”ãz]ÒCM)ŠFë“2½âI}}4ƒ cùûsGÒ¤Óâl”®I‘ƒˆ"‡Ò¹ÓH5ñ£JéПÒ%xÑ$Ÿ`y“È;ØÅ`ƨÌr§­«¦·YÜjbãyFøR›ôc}ò.XÖMÿn†Ø?eÇòò’q˜W«>}g ͸‚µü™g·çôì .¨RÍzBYj0#³¡CܤWÈ=o&Á‹™ ™AÉÞµe¦Z¤Js’\ôîõ ÙPÓ3¿—:ìDÝ©‰û.+ 2³‰ù4)¨kGh/ŸH«º_„gûµ—4Éœ¶öN÷t0¼ÂÄ5•×Ïšœ¸¦¨éܧøA©„U­™Ÿa£„dsÇ®°*< 5ô)\Uíx‰Æƒ2¢¦ûBw—­±™Z¹©Ùð“—þ:Jgµq÷ŠäûÇÀò[t¾ã(˜ ¶ødÙ×|¦Î‹Š»œ¬‚Kk8(¿•cï[Õ¨Ó%¿õT»R»=óg¥~Yõ§´M>€VC™…sobAf‘……R*wêæ¡1álÐâĈƒW„$c𦒍;+úápYÚ¬ýTs>Þ³š _F޶õɪ{—P;™)ìí,É(­£LVæÀ6Ë(c‹JÊ\Ç’ú½îÛ$5Ç‚‘AW ³¶¹ü-ά¸¾úÀjA¾*)Æ~†ƒ¤H.åL4&tÒ¼w3b#P 9Ǹ¸M Naô›šÛC¦/¦¼‹Ÿü^Ô°4æÅM,Ötßòàrʸ²ýÂÇ#aª‚\ÁƒjT fòø 8ïÉ ‚Ò|Ì{¡ižÐNIª¹{8Yõ'ñ¶|0-¾Òåòw“èb7Í Bœà¦ Ð–f£ÚC¢Ç±w³ñi,¹÷צkS!År7µ) c¦ä\ïSòBOÚfMž–<3fùú1±3ZfË»õŠãƒpÀ©ù]§ºëÕi 9+ý\ÐÒUíÒ +;“…\¯¥k+'pi”wêa›~vŸ?öž¶P8qŒðaÆõÔqq_ ¾–} ,J¹°ÜSâ*#—˜µqíeæ`ŒQÊU(È[BF‚iâD ‰HÇ a)¨/w¾Üd{æ~µ ú"ÙPÓ.ÔµëÝ«ô‰áýÀGg°‚j—¾ª£TT*/’Ž‹±¹ˆU",e,Ûkáo1×UKÕ£ŽxÀ¯©/°„·'¹b{´V6½.Ù_“îåy(P’cC´<¡Ž~²uœÇÈwG^—;@ËâÀ²l) ¹«8vMìIÎ…æ{8dˆÏŽ"M#¯5cl>™U¿ªà'¶ù¸…ðÎ1|ÉF¿ïYÄQ{„ÚÙHÚh*iÙ¡êê‚ÍNg# ̼c|²²#=Ñ£NX2“P¿‰þu]HRÍ\ì]·SR¤È_uÉé;qcÕŽn"]s)W”3Ç.Ôv•¿6Êhî‹ua¶°º”üêooké^&#¸:2ˆŽ!¤íh(o‚2:_špl®äþ˜¬ñº²A ¾Ø±£™$ùIÓ¸çÉZbÉÈ>ÌQ‚æ»gQ'+‚Çž„ƒwÃYVóÊ ¥-7UiE,†ï° ?ãˆúuõ*b¨õùgÁ™úíç~.7^c9™ÇŒË~B\QÇœÝ;.‹é‘}H×nˆQ{Dßj]‹0¼"ßÉœ)Ãä3ѯwÛ«DÑ‘!lçv!g¾Aêê™=p”©Ê/z]Š[¢,ÝÊyy…s™¥é[dÿÄ/÷Å]}‹ O¡æa{W˜«ÞÒ˜.^Í5( ¾uw›ØÎ²CÊy«W|x>/l³‰Êï£d¤éDsýöbù¹>ý·2&DšÛñ…ÀÚ̘ù{–"Úáî=ˆiF¹tŽ·;‰¹±ÌÁ ±Ë~`ÐTL[h#"sÈÈmSõ® gkGøuÁ›±¡G$‡ªåó¸sû6]ÔrÖm£Žs¤¢Åy`è C¿sÜÒ§Åæq1–|öWÓ¦iV†À÷ŸÕ™–Î'Ks™gp6yõÂhóÑÈu|(Øb>–MKG‘òbÂI–ò3 Qfj£¾NÛQ tÄ‚µÍqžRø™Þ6ÚÍCŽsßiÍ»f6³²ôrþ=•;ßþ¼^+ÿ³Àk€[…QÝ£CÇâÒli†Öwäæ–žùP–À˜Ç ÐRƒ¾~¼¬¾~a®Z+¥9· øÆn3xaáf¢¹¬ï)Ø*µŸ&ÕÂMy£IP€”ï•&7³‰”õ>ãs™Íă¶ñ‰zr©sÍÇÅ cmß¾)7Î ï =•h­obµ ÉðçP2ØUÒi۬۬ǾØàÙXÖýؾ¹*©¢yùœ¯¶æo.·÷ëÝ•V¯÷†ášÑà 4p×pÏs`eëfÏïmo\R ­Å?fš…%æcËÕkýmèÔ«Ã[††Å±P›ôìR^MIÀeäDì4ý¼}…°šXNßmív CßI)N‹;Kw'dñFý¥ãË5ôþ­ŠÛ_—Má›ß‡»{ðS¦±a¼ÃÈcòÒX^&ï’µà/µ„Tèn)Fg$].‘4År),å]+zFo`uh×MWú$°õ:jÅ UöÈ4Ôç; £à y‚-Œ5g|¼eêà#Ú$¼ÔÚ´æÙ÷X6´iÌÌ^~¡ Ø&fÛrKe‰ïÒ“‡˜Ô¯î“hzO‰YâD¤2ÝXÙH­&3xF˜K«ƒDk¶KL¦ãXg¨±z Üçví¿¢)S'Ö1‹V×qhÕà }†SòÓ§0ZÖäÙ¼“âfQ ½Ür‡‘çG‘»L2:aÇ*Ÿ1TU –%£ØþüÊš˜ ¦È— ÷ç«oâ|ÓoÙù_mÞ̈³ ‡‡°ð¶{ÍI–¬!æÄMJÏý02 jéxw‰REÁfö€“õ.ñt,‘º¤”Í·üRSWÅ™D‹c{]éQ &Íkû{ÌHÇnÆ~u†áÚŒjF|:™»ÕåÚµ`A½§–Áš94Ð[ûü5µZ¸ÇÅpbÏjn̪ƒ7˜¶0žÑ9OºE³=BUŠŸk¹‡‹'pxN ÇÏÎæ². C؃´2‘X†ˆ$é±:£ßôMwç˜ë­Pª®•8.{p&YÆwØÅ¯BÛgPådcÑ‘÷eœ…OkÏ)pvg¿k`#ˆíÀ$îãoæè5‘Á úP&ÚËè|miÖp}$ÛÎ1ªŽ6\¯ÀűÈlô5€×à¥Ú“%0O|ýAä°³{'欙m 8s´YúÔ ¹]«K¡rJfJEÂ9ê´ýƒÔüý%š;YÜÔ7bÅ·D$Â:S–{ΰ²[‚jÌ{¸˜ IîáÃ7é¾ëôÎëæWðÍnÚŽÍ'_­aÉŠÒßo·ÎÄdZoñ󘶰n q^z$-ÍŠeY$…Úç×’%·Êz¥ÐæBÍ쵤†ÔG/âr„«ÒÒ+‚_ ¡‰æ×^‡[ø%©qìi|íXe9!vê'zûVìh^âÀ*z„¤òiÌÈ (pT2tB¡íó&e² ð«ê½Z±}üh¥›²û£éÞBâ]…fïÚU€H±¿åvK2ÃOÛOúöºQ‰5ݽÞ2¯¿‹<•ºd•3Lvõ®4ž7J¿  §„Š›*̤3“«¡%kB‘¹+®§—[x²Db+M’ž>Á$5Èz [ú÷€{’Q<ê.&³P‡ •×âß)QíL—û&­Õ“ÜîåÞ»ßõÐnwój½i¯E¬½/Ý„¿–¹Ù¥=ߘÓk'™Ô¼+Ì[P¯ˆ¤¾A Äº=Á©F6‰öf¥]EIûEHÊE{ÔÆ²‡öü"ÏMXªI Qœ(Õ ›¬ÛS#bœÝít®‚ÐÄè VPNº‘×Ä5Q’£ ®3×…ӣţÛúÄ0xdpL÷åbg|ó‚’ð´¢­p !b#xyµnø¾)–1ÂJn$‹Š3n6À¬AÑ,I'‘÷¨+¦PiÌmiÎó©wø Æ˼|o.á#ÃLd78"îãÓ%Þ=|½ð=’×!z _³(Û‰ÆÑ‰¶R´ôhoÖ|ÙrTЭA&ôÄy§¯ º_²¥…Ì÷´.Yá¨ÁÓ›ÛnYÌÕb$¾SV]{£xßáÔÅ…R¾e{²0C¾¹MÂQ_¯:Gè¢}\·gÄxÝcì8ôvõÁ©ò%»/—«g¿‹Ð ç¢ð†QM%yäm^k7õþ6¨à–å²廯ÓYúÔéø€†-»®!ùlոͧ¥õ?íw€s¬ó;ó)‹,Ú[4‚y#‘Í\ŸZ§7ã_‹C§…>^ªŠÐÌTo4ÔóàšOÂÑQ¸í½5ñqÑétP¼bŠ×b׳·³‘PN¯…L¯rú5úÓ~3 =ù„·B2"fÎ-æDFì (Œ‘ è¸ð¼êà8 ¾¥%^í¥åkcâgPo¤žÔX:ª²Ì1% ¢f›nÜi‰%«°ºl–?-é£!3L;)ÖÆiö”çøŒ•XìM)€¢gZâF"߆ÂïèÙb¤ˆÕÑÛÐrÖSl!1nîØI…>Í ¤óPÂ#jÖJ™ÀÁùðåïÀRÕ, vo…Em¤þüòwõ)—݇7ËéYTÇ´ÊKXVå-÷ð‡:ó„bS4¤ã¹³õ¨ HRÏ+•|Q÷GŽ«X$%)0­’ •õMq‰(õˆY'`gae#£ÄOùÉHšüðD^ÏÈ©ÏÍ£iM,bz ’r"}{fI¥w_îxĬŠü]ÖP?—êØ  Þæë}ìÛ˜žŠäáËœL¤,d49Ì0oÊhׇïé›H*ÃÖF”Àùaúû&òòMSŽ|þ|¥j) Ê z} ÁÛgCÁâYªdó¾ ì!G³’臬E±`¯a^=[ïáÇûO‡¦Üp‹ô|£1—Ì<Ñ\îW©(áKÄÔ„P—ÞrŽÑÈM£vDö ¨åÎæýövBz„;²ÖK—<¹v ÞAÒô§ÝN”•G“s™.ùôÞÂTÍ‹ý…É_ú³ýùp+Ê\_èL+ñû0äÇò3WØ­0© }ùU»€¨¾”ûA$3¡Fñ…Gµˆ£À«Z¨ËMZ)µ7$êEÆ"2_ )™U@ÛåÃXÉ{oÉ,ÛùVSØ)–û®úÌtS¥´ýÊu+°>‹ƒ5o'ý–ÁPXW¾6—L(ýþ\1¢ð¥¼%4±PùpCB”Sh_uèã¨+ûý‹Õ¤u;9È¢úÌõ£‹væÛó¾Xè½"ƦAû¥¶ ±€šÂ~\½rìÛϺ¼‹å»70&àdê¥aB§íåér5xAŒ-1Qö¯Œ±ðÚBUC<«ïKÉüŒ²ºUóä'YÚ"áªa ÆvxàÞ|Ë'FqX›éý~&Òj»)u­;PF¿ì€¶.Ïj¨ºØS¼ÖÑwJÊš§ÔÙ;¡XhŸ³h¶2woã|_û®Ê@¥L@4)[AØC Ã/ŒÞÙbE»sáÒ¢E:þß5ÉðXãÑœ‡§LÒô dBmÝsW‘E‡‡Ø°ž%ÖW}ïºðúó7¬¬Ú¥³I¼|Øòòù¸B×Õv¸¤Ë÷¦óšÇÈZ¿OÄd kaþûNtí<º°.ešÛen‚ ᤚb^|kÙ”|Æ|¦Æ1…í%«á×DfçBn|‡¹öC'Zƒ¹3Wˆ¡ÂýVbÜOÆBh}” Àð>¯ <þ‚< \Ãæ~¨·)̬÷•ÛáÈ¡ñRh­æEݤ\^ŒDòe©f¥°X8é'Š5VäÇ”€ÐÊJZùÆqþM’”e²Þ¸íFUÁÆ»Ÿ eŠÜ)T^1¬Fç\,Ú:Rx‰ 8aƒ¦ù }LÕX<ÚM‰Ž §’Dôee¶é /ò¨µAvr›Ó$Á;ÍÀ·ï»LˆŽöƒÜðLšVTL°|®¿Ìõ­,"ªJɼ*u39:‘EÒ Ý µÓT%Õwñм‡É(ÎöÚ&‰ôì%/‰°7¦§ôÔŸnz§º-AxîÅ"^Ký¡:¢ ±aN+Ýñ×€\p9¦©Y¥ÙÂHÚú»C޲õÒÒTwf¢jžÖ’ëþmdó+¼¢=5 âÅîc£¹6 }et ä*‰mA€vP¸RËòvH€…›b“žP@Ÿ¬Àªö"XÕÚF[r )µ9#‰I«4QÅ*–  _B{!Ü@¦Âð~´»~8Qˆé|ÆÝÇ/ÅZí¼÷5å=‡¢DÍI¬æiQ,¡‡ŽôxÌ M¦½'~瓼ƒZ®m6S~}Š#ï€ÿVQvKÍ×XÒô¶ÄgMÜë’$ð¥3ˆÆò¶)/öA-Ÿb„(+v»"Ú}Š:çÑ*Çô¯VÛÀjtݱþ„ìy·| Æïû>P˜©EeæÓQ¤|÷·+,uMHVðQð|ÂÌ:#M Óƒm%·7šwùÆb‹9VHá#ïÊ+!Þ¿îûÂ·Š§ó4fÌ8"K¼Ç}ŒR\ãª`ŒJ%‘°Ÿgåù~Zo[khœ¼šÙÊ5”cÖõ ÎB,\¥¤ÒTÏÀB»ûÞ– £õüfýÊ*Bwï/÷eFšæÀb6P8Ë5‰¡‹¨r}296Š`÷;•Áp¡Õ­[Âñ”öC„}f¼zŤÅh3ʶ“̺dÉíL°o4=gÇò ðTίœ¨AÙMóÊ®‰Ú) Gxë£H"uì¬kÜÔ›<¾Œ‘ †ü(e´¨1ôi™Io—x ’Yu=ðŠ5ïdú½Ü3‰ ó:K &·²†¼š©_8®ï32,9½çfc€*Â3!+y çŠ +‹a2C[ÍÛZeC¾øP¾¸çâ~Ú~Ë Éý<¶»þTŽ´þ%ðè‹kÔò,Ûç@”Y|ÕgTX[µDŽ{'©EFhT›ñ´¿P›¦•d]:zÈÖàî È-v$L ­}/.#ß1ÃëÌ´~ä LÅw8Ì9Ó²H 1Ê9ô°˜'¥8Lì´‚æðöÛLþPZ×\út2^Tô£í¦Ýƒ±‰ýV"4°œs¤³+.ƒ/2i2ÊcÌ÷k>ÈõG5 #Lc2ͦÍ$‘2³5`oàÌ“™¹ mþ¼ÒÞ_=û®‰træFŒùG¹qÙŒÜíÆ†¾ÏùmrEØfxêYˆ\Â͘” ®½ox£µ´¢»Å¾=‰—Ú%ÀÚg[…eÆ÷›¹ô\_ËðüÄc~2 "‘ SUã mòµgúŒ•¯lš•I唬 À¶Úk'¶¯_B/B=ËŒšAzN½áx‰¤ŸUð¿vCÇ|Ñb­vòù&Èëû¯é·¾²NzñÛâ(r,*bЇáðU‘ïR—½±•baùð¥SAê†Õ’š®ŒK¨R×ÑÔ*Žp÷ž•zÃÉ“´\Âû9›XP›É÷€ëµ ¬Á@Uù;ûÅ{²ñ±9‚”NÊÚ˜/Þ†[mŒÄö™KúuXÕéo,5F™ÃÞ;˜\ñú™!ç'mHïÆîk¯(Œ––i÷i޲5úEœ µcÂ,bÛ_b·âædÃ…~À9Aüþ}|å%ÔÆ¢pQE™ê§o;Rшoº>Xê1‡{ÌZ8"}ªZâ@~Ä¿š—WÉ%?á^îm™ql$¿§BÁ>‘o„^‘Øù‹S>PK;Ò°ɯw@¶®@O¥º…'ý¶9nuY¾C[—–I2?m/Þ²Ô¼‡Q>ÛÝûÈ!5yŠ „ÑÓ€2Q ¶³““,HÈøBw¼]ÙÁÎZ|žÑõÇJî½ÜÌY;èiÝ£}£ú+ð·Ñ³^†ïÈ›dTЍT½§UÕFjõþº-G¯ %³z¸·º´±Ÿøå™ù;`õ‘T5î’;‰Qôî*Ç_ k<8Í9Š;þ@J0$Z˜ü¹ò&ðLþS¤¡­Or[QyBfRÀÃfeÒ¥  NcmV46Ô£¨Ôü­*VëÛzëA Îé»Îí£»Ëê~Ð=&®ƒZD]ˆC}üp5ñO=z|'_§’,Uer¬ÏÒ:8¸×ÜïôºDkûÒ€FYÙkºeN?Z9FÎ>÷e²/‡¾¢âWÒz/õ­]A¨¦qmÇ\¯; R‰}ïœç ¶ý1‚ ÁøíÈJÖµÀ¾‚j#€×å*PþÍšŸjpbrNP¦ÃfàoÓî`}‚×T._‘±ôF´ìÚü±²èÎ[¸õïå¸)¤H3Ýgæý‰@R¬‰¨ù?`­V©Ìp£0YGÓmȶ¶#ßÒ$¥FŽ|é vbë ì_`æQ¾ÜžPƒh嬷<$8€t•$YŽŠ¿­¬ä)^Ñé†ÚM]“bš>iàz9ÝÃF·”Ðs¤çTP|Æ@…]ÚÙgUáýTÊ ‚:$iÜdž#OLäd%Ñl¬œÙ7u 0†þ0oÞ¯s¢lÔÌ1ܼ5w±e£m!6ÝK"šÏ›·éµÉ€íE»ÈSâÉÛ ˆóõ¯'z¥¯05Výv¥Fú>z+(“OÌŒMC«¿‡>ïúŠ&íƒ(«ËIê5Ñ»lz28´÷O°Ÿƒˆ/×#Lå E!_ÕØz¨ vbV;ÒœÀ­š.˜‘}òá–™ÒÀîZ^ê¨3nPºó3È´†#úuíâ¯Њ`@*8œ—«-`“‹=9Q?#€…yIRÕøåI¾ýÒä_ß]²>¿ŒÞ¼ûˆ{žšõª7‰Áö¡&™ì{áÛ¨‡üƒƒž¶²€½¬öà *ëèZFвŠ^»å´0éW¡þO8­«òghxìQA"J Úáü!¨¤òưÁ›Xí0|’Õ¹'õÂí îƒ+MÝÄ5ç«’[Î$ ¢D¢ÜÈ`!ëÅ™^@Þ”œ@µþi¼œ,ÍnÌæa&±æ”omø«ÕŠï½2°ù˜/»­_=ˆyý‰îààhª'2àN±©ïÈ$ñdÅX…­Ñ»››WËÔ 0Û·BÐ3®*s&Ö…V¤0Ü}´óë&€Mz—Â8_ =?GÉØtëQìGàÏTÐÓ 2÷Õ{9†)9»¡ØG˜ã#æ1½¯¼ç.·9%ÉSÊ/q[7ö6&¤Ó…RZÖù‡¥ïb$?Ùy°ßD0Îú—5“yO}ÿQcñ MF£íÓÉ«z¿­7“Ò+'Cb]ªz„éðm_Öæ'TŽê\‹Úmúè‘jv§£^Ÿt0ˆËšÚ’c¡û¥YsQ6lNÅä´¦&O4xPóL݉<‚žÌ½ö½Hó:ökåÌYÎ…©‰6ÜjÜýºÈç}«6ˆšõ¯h^¥à1šNÁã?Ïdß„p6 Å`'¢òÍ—ˆW;k§Vl~q„­ðm‡ÌÆ2ü¥rH67{MµŠpxáÛv©p|3“Wì†ÑWâT‘uÈàÕ‡ ÃT¦gÂÑÇÏ$yh" =Ûx3}ÿßqCS¦¸f§Ž$Am&ZÕ1¸Åp?Sù¦8.ÅÆ€ÒŸ£«RY–4a܆˜:।!¶@†éošÒüR8ò«HÉž‚¤ GUÃÚ1ky¿¤ |õm'[²×ª»¸ŒŒ íÿ¥a¯ endstream endobj 682 0 obj << /Length1 1554 /Length2 8336 /Length3 0 /Length 9360 /Filter /FlateDecode >> stream xÚ¶Pœk. Á!8A‚Mp0¸»»»ÛƒÌàî®ABÐàîÁCp·à‚»¹$çìîÙýÿª{kªf¾§ííî÷éþ†úŠ:“¨Ô $…¸0±2³ðÄÕX¹,,ìÌ,,l¨ÔÔ`;ÐßbTj-“3 áû‡¸ÈÔåY&aêòl§…ä\í¬ìV.>Vn> ï¿ ¡N| S7°@‘ …€œQ©Å¡žN`+k—çcþõ 3§°òòr3þqˆÚƒœÀ榀¢©‹5ÈþùDsS;€:Ô rñü¯tÖ..|@ »»;³©½33ÔÉJˆžàv±¨œANn Àï‚J¦ö ¿*cF¥hXƒÿ’«C-]ÜM@€gØq~öp…X€œÏ‡ÔeÊ È_Æ 0þî €•™õßáþöþ ùãljnµw0…x‚!VK° ,¥ÀìâáÂ0…Xü64µs†>û›º™‚íLÍž þdn U˜>øwyÎæN`gfg°Ýï¿Ã¢Èã‡@fÔåÙð\ž/Àê„úûF¹¸@±ß¢?ˆ›Tú7âåMÿƒx@ó#Ög.Aÿ€ì Õ? 'þ|Ždûø|ŒÝ + ù|Ž ýdþŸvù|åöþW[Ì]œžÃâ>÷ì_øÏ<@æ¨ ³Psþ›š¶›*Qbw¦íQÁ)êmíTz&ï§v×; ¤ô•ƒV®D?|ëÆZÚ”¤»Y$ðÞo®C oy¯ÚúËçÞ8Amb»u~¿¬`_´¶…„ICdÇçÁÑG+Юö‹uŽ£+†Jî{¯´Gm_É÷á°ÙmÕJ.y´û’I¦X̓À¢iê\³ÌB D&RdœÌéË«)œì±'r¹„·¨¾±ì…Þzklïng¼–Ë4Øœ;‰¨ˆôIá.q†'h¼Åv“å漋?Ec51±å=ÈeD¢Î˽¡3Úèñ¶•ïB’8¸Z‹¢ñ…µí\ø""ŸxIµ‰×!Gïh‡êJ{t ¶Ø«’@“¾a3›¿ÀÒ»úâs3ãz(7Q”Ž6 @féXiŽz÷Ê)•ŽOK/«$Þ—ÑÕC}¾ «ãÄ*O²/Ò©‡§^L[coUeJøƒôb^Âw•4îÌ匮!“hcä³¶V"œX~ û ›˜Y) Å_cZ…ÅŠ2/Ö)·æ&<õ¤Û“ÌOcÞhT鬧\ûZÙ:òfÊà ã'\z—?E½#n„nÂÔBoñ’»i6µgö.9w¯<6¬'ÛV9ÂëIeݓв$xfOtÙµvÝÒ¿NT<È’1߇ÞCÇ—#4k ¥zïW÷¾¶hwÄŸ2jÔΛ}E6YaÔ°D$æºÃ¦³¸#‘Uã… /™½Ïd !éTyP÷6ÛÊttQíˆâ½À‰½t@&½?ÉÔz-æë²ncQ$Ü>JI0©³¤ÕÁÙdÝÑŒÁHçüpöVÕ•mû=$ÕãÒ’.:}ó¨¬âE,›• ó¦ŸÍŒºÝÙ U0ÔmF]£T²¾Õ9š@¼¼m7;V?ÈÚUh ÎcÑM~gQ‚^Ÿ ÉËá–gìÎ úÑ ß'xGI\FÝb º-0 }CçÅÃùzã'Ò„mŽ•f8b(÷z•pè]{ jÎé¼;ødŽL½è2 _©+ÜôRÒÂò8<:*Ï™0sFbkŒÉÛÓèƒj ^Ò¦= &y€{¼4†¤ÿÚK¾öÝLTŸ×|FK¯.¥¼ŒeÝsç-D~í¬ø—ßS ¤ÄiWJµ†ÉV]ôßraOD:»¿K’!ÄQfàUœ¤xQë&†sYÑ·.DoY” 1ôµ˜ˆ‹[¬} ~l‡d³'ÍâÊØð'Ÿ¸’ˆ*…¨û¾Ú õÿœGhTÛŠãÍ“bJ=Vf,_e¼À.ŠlŠ/ÁÿÑpÓ(¶7‚@È6ïf­àEA.Ô8î벫—×ñ¤ùv"Œ,¾lÿö áƒxRl¶Oü*÷ì§">.2¡¯'IÆ] ñl»4E²²¸-Ù %Ž1Æ$ÉõŸlƒ0Kª™ôFí÷ÅeXEˆ¥”…ÐÐÎ5h «&Y’‡ëyÕfq_nÏuE'ÌH‹¶_a`&ä~kýPì^¤­«Ñ½Ò¼päòæÌgzÔzà-ãÄÃt¾¤1|œ²e{ƒÈ=×3Í”ûé±î±^Ù2CŒ¾NsBÜR’‡¹]V›Å{eã«ôô§£Ð¤]”z\±ê먑P1\5"JëÖeDlŒ½/òÆ«á—_/®|4%¢VÒJg¢FúNº&U<ì;²ªœÈö^­GóŒu5ˆ^q·«…ˆ]ñ^ºßè°^ûijEWZ‚®­%À{gu]_@É5ø‹õwóY;Èf6Ee;ä qUYO«~Á¯™µj] MƒÕÖëûýò‡†·àbxŸ(i‰ Š?ga,¢9Œî•%Èqr–V!ZyÁqÇZIË”GŒ‰Ó¾[˜úµXÊÌ”+#°F„ÒYC÷ÞZ6ÍŸÌ>ÔÐb¹[ â%nùøeÉe\´àc~óU–k³Î¨ ô|Ú¤éÇJf…ÖíÌëB*\ Wƒ÷BÖ­ÍY"DÆH*ð6t—ã×ÄfwóâÔ0[½ˆvy>­’féf(5ÿ`Ôùbbè[AIúz•”ý|+A»:†Yõe˜óÛ¯îmuñíTµ§=@ô€ 6ð/Ö 8?“S¹_íP?qyëÃe¿´–“ñköƒR3*&Jýñ U¢ðeØoXDó1^ú‰ö»ÃûÆSši„†F@0<…6yþ‰Íy*4Isq^€|Æ|ë  þV‡´(pÓîѰ©ó$žžÝ¤x®£°IÑ)ô9u9(h@Rtç4Ör,Hj'¿5‡¬| µ1kQ›h3ÉI)¥õ5$Œ'ÇN ‰ò(èT§]`óÌ>Æ;™£‰î…,²m»´Ù œ©©ÏÖRËU‹O÷,ŸÉú*tÆEªëw”ßY˧¯î¾/æ Sè%=JÚ+NÁÍf.*£ àfɶK±Ñ‹h™¬ÉþbôìRâöïù®•êñs¹))>t6pÀiY ³Új /ÑÐRŸF> þ6&p«Æâ«¿Ì1•Kâ_¹nÐ\ç*êýpîÎ>¡‘³®¹Î& ?å?4 ûƒ\ÙñR7øÃBù’I(Ú ?ÆDºÝëiÜ…\ÆlŠ‚Ú4òþT>ãs´L­# %GB0Õª¡.<Ø('à76o·¿0÷Tgu¼VÝGg龈Pì‘ç,ÑoÖ´?`Û*¾v‹Þ&èë¤D…ýL“uS}Ÿ†Ã”gTÿƒ¹“¾í½ •ÊÇ‚²¤ÆSOúƒz,”†—ÂúV_¨Çߦˆ<,ú½Œ²ý^›:Ê÷˹ȼýXq;E°ÏÕFïI™èíZÅðƒ8(/ݘ2KÈÕ7žw‰×zý3¯j*NÖóÿ‰ _môZwŒ›ÞI£{Õ$ïóˆ;¶¦Ûý f—ˆº:C\U·(Ú.m<ÈÿtݙǮ°î›è(Ez²‘ @©¹ÄÙzâ™úLDèö]3\…'èp‰ åöÍ“y»ëÖ´åk­ü™×ˆMk¬E¨pAy ÔëdÙÚ 8Þ,¨3T"éïøú”ãX~Ê‹ß7uw)eªÛ®•î…éd#ص\éz g®-t(–Üã¹1m.UÊ‚ '™ˆ‘àS„…ë´^ÆÚ•JëSdŽˆóSuúç#–¸ ÐÕ«Nâ &Nr6„­h”žwZŽÝ6]¤›K„óʶ‹!Oå]ëÅ®mp”…©Þd@që+;á½—³ìòÑ<«ñ%ÆÝ"ZxÞPµvæY²MFo¿ZÔ3óäÃã)ûU{ S­)³š+ú:Øøjf¶cƒíƒÐðCðÉ"WmfÆÖeñ lïá –ÐËÖLCšZ¢ä$­¿²ÑÉN]‹%"%™¤Æ7ôT7!º±rM<ê\œ·$I]ÛÝú}_†x¢%â™¶!š¬Ò Ù h§QcŸ¥–”„÷¾~£5&5†kПqC¿5w×àñ²щh[1Hã“¿jÜ…D· F€[ÚNRmË5ëDôÉá¿â€“°ZØZßU:´66:Ô/•¥M›d$-”ï ÂOÈo®7‰áœ'–Cy{§vÒ -Pf{¹ŒÌð·A»:UÅž¼·”a'ví#‰kÊ$åAÆ5E9âe€žl¦J:Z±¥•wØÐL½ØdWÊYnç{ùžü·p)·ýôR‡ô|d¿’³D¢°<ªB>P§~ës·!ýQƒùêó*NRQx’9|Eyâ²hPïL ªÚ«¼àt¿Þö¸0qõVÅÎê–˼!‹»r2x)x¯¥•59l,ÊÛj-x¾Il¨¬ƒ»KÙ7øRTR”r¹S®_°Y•–ô•«ÕpVÛ9&¿n!l9ž™ž›^á \'ÛxDæk^²§A™O wÝ«@ã`,œÕeî¦Àˆ2âg ^É!/ü*ð)b—‘€tÈðTÓ'íBH¬<ëP]2Ø}5Hð;•ÍÓŠæ-‹çcÀ–BO®],¢I®!)>†Ž‡FêpëµÝ}<쓞ø NInÖý£7L ëÔ…é'ÝOÁ®*à2?ν ñT>]·ì¿6’=W/ÚãrgîÝôÞK*Ã!¶D~³Z‡•%ü‰ióó\g‚m£èÈÛ`[·Vs"¦³p¯fV5+•h 0¥=ßèz©ŽAÀr¡ô±xQ\¸¾yMÉïe $it½…”€@¿bÂúî¥O·†ë ¥™vq”…ùfÑS_`TÑá÷¨t•&æ¤ÁéëÊeiñœ^|»ü$nÕfF;E­ð{ÔH•!2l,º¹ú‡Ô;<ç£7Ë@Ø—Áª çÃsÍ€,á2„¥Dï/ð4‘ƒêÙ¡uïa^¦ÀdîÓN}´D)êáQöeaÏ)/f¢ÔÖ€ŸŠÂQm˜—ëCîfÑz2âXFS“ÿ²D…‹e³9?ŠÈíÇÚ`#Gy‡…«<ÄÚ;„u™Žk&›grœ+N1 ·y“-”™ŒC¼9¢~u^ÂI[Œ?z’è®#ÏL×Jg_‚¤NÙVœ"[™\Ø8—ZoS+(«ºÄ#©é¢]¥~‡Ô×Á“d¬¹’X!ªp¨%)RæSûmPþì‹F~±¯|r”/ö¹GïuË»t£¯úh&«`2±Å„+èñ&wT0™Yqâj•ã€äËþIÄ_ŒYôfü¦S´—D„15<!ûh¼è–F†oO?7÷(QíWˆÈ.—¬ÌîӾتï3glyÉÂ<“[L¼ L0’ɸrJ¹H¦!âǽ«øÆÝIýoIj¯Õêì Ú²×°jÎY£æ@åefÁS¾ÙIV©°8Y燡Cײj¬œdH{VEYÉm5³ÀÎÅVŒP 6NÄÖ.R4`€-ïq–;þ6Äãºò‚Úâeà›µ—§¬¿Uw&58;Ó¬MßÍÑ G´»Ü'3ê¦H”¨ù™Ñœže+âmvŸÄ«þÈÕ ¢Üt¿Wk•igà‘oÛ&uŽªî–ÅÉíR%ß›nK(éäbEhá|Ç»ÄÈޘܟÒæwX>*¡öŸÜ"Ï1m"ëj |ã ŸY…Sö‹Gå /ŒÙC¦"Å3*G1<·£…ÉûÕ)1&QÔuùbòýÀû26cZ±}d¹t5gwyvRáäo»µlùîG˜¸Ó›’ºrøu3¿¾Š]™ð×Dd4ޘد» ›:¤m]}-’D«Wó+^Ç·äˆQéFÇûí!P¢*šáª‡ˆ]GKò0ß,Çаš ‡Qf¼‰ZD¬¾xìßX0$x˜ çDæÜÕI8&mì#Þ+æã–L«È™a¦WidLÕ¿ì±±<­èR]µÓ²)P aò3ì’DKj˜®¦"G²2'yäþ"éx͈PÞME_Ð@·—­¯ª([üEÔ¾Xkú‹mZ"ÑÁä $ÌpÜé–óÞDÅ唓GódEì?¬Z—•·3{æÎÍÓÇǾt¥æönÌÚâBd¥äŠ÷úJ4¦!ŽM‘“ò™/&¬ˆ7$a¿Á;m3Z´ QÝ^»v'%À“"úÁIÒma;‚òŽŽdÑú4÷c¯F§–œNC oZ;©\¤_ʇXÄ©ãÀç·©ž¶ù–D‹ A‡~Y•ŽoT_»8ò©´vºž¢]Ê-{ŽìU&Ó&ƒ˜?݃M{J¦D£"÷§ÑßfÍäBxTa+xV¾?+?¼¯Â7 ܱaè£J:ý²îöV•ÉÐìIIÌG¡­%›T+‘oÀ0Ç=‰w¦¾XºÒ Cú`$r±Ö«ž%Ÿ†#€B*[¼þüiCiŽ´[±WH;ZÕÞ «­hJûŽ28(O2’3d£fÏõᓦÌKHÁ/¢Ž>Ñ;¬æyU²¦«y1{í Þ/J†WµÍ_IG¡j2¤hCBö„8k¿¼êš²0}{QQJŸùËÀö.h<|çÆÓÖÿøæëM¶|Éôi “:F Gï;u䱦ËeA£jöÇÊ@)â¡Å8%Á›[[RŸvƒ>rK¾àjÝ|ªáÛ˲‰Yï÷â[(Š0‡ˆ´“¦:)(a”‡¯èˆ35q ¯ºƒ¥£&Œ¥¬¸·lë#…›`ˆ Ë.@XÅPÇú•f¢Îµ$E zÅ{¶=™²ù†¤]™‚XózÝø¥Ç;gRÂ1öÖ«ì½½¹¶Ùaí|ß9&=Äû>?Øm¬¤ƒa"d6K:Ò`ô…í ª–{õã†øÜT™À’‘¶Ì¨-ï¨Ä·èQ¥Jb+ÄT7‹G ûÕžø,;l¶T½Žå.­Â¡Œ.Õ“>ÔÖ ü)çkû(O'($«¾Ä^ës Á6Ë/|VÕ,°S—2?ÌL*ÈÛÒ k2“¹Õô&È òrGKˆOb‘\e_ÕK9$cÚ¿Œv~$ · ¡ã‚›ÊWOù’ÓòS~€%©©KU<‹Îä×^0:}¸g±¤c-hŽtQ²pµc©f ô1r=LZŠhIÔö!·®Fø×±'ÔŒu€S&…(d8ÊSa$™¿_˜Ï|2ºüv?mž}OLjÖ Êw­LÁÓÌCcö$M;“Ì…×Ö;äßorÀXH`£šÙ6óX™¿KÔÉ %Jôæ”GV9Ðð†qÇ,UðcG©¨Oå¶ÔP¨ž¦'G¡W­}ÿ:ÕÄŒ}Äf‘£¬9J‚ͽ)òØ%;·SJìµ#SؘLîZ†ù$V«!&ýáì–ßøµ@xxÎ]þ÷wËo=çÒíXúÓ;Y¯zzðdÃßÒ>i„[ðd£™êÁ-J–(?& ÿÔZ=–QçãÒxTt3äèÜ@-Ý[À5tÚïp5Šl0gŒÔôAŽKÇõX#V“7^Ù\(„]¶ñü乘ӈ;Qç0VШd(Ë~>cÚZÉðv¯ªžk?tpêúê¨gÛ_an«ƒ‹ÎKÐ`°·:qÉÕÕôAÉ)å¥÷¥'N°wbÕ}Ÿ€ã¦ý!bPOÓùð¹ëïºêc ÃÇB øôÝÜó{½¡xh±Ù9À5íN…/}ï·ÝÅ×zëÓ´¿T†í Ñîž×p:'Ïùê­Êåû£4GF˜ïÕÏcßj8vj*Ž„o–.h!émrá’=ã"sôà˜Áwø %€4WCJ(dDRàŵ­X?ž2 |HHV êÙwyÉolïÛfN×õ¸¾0Òθ²3E©/b Ó 3\¡¶W™ÂâêXlY‰Rù6ñé!ûÀ&i~ìxç„‚‰ix¦Ï@~rO™êŸ%òir¾*ýFáòºün#­ÌéCÅŠÊÇ Õ ªÞ˜VªR!Î]ËH¸¦Fixv=¿5­c4ïFÏLÛKŽ›1þâÜq\ØTn é1¼÷ßì'Àðå·qr'€šêyZ!“`ËmâÅÍÑä"qTÑ^†8ÄkÝ@ñùŽ–4¢ðüæz\2¸ RãN=m¤v×Tu§£ÚÙÅØè+/½·Þì|‚Ùv¯¼xœìâæ'ë”§õ¶¹¼{?·]ÛM#$Í0ÑY&Ç´Ë¥çbM8íW73à˜+ó”ãpwïM²är°¬¾‹ó€.Ñ:ZÓ² ýuÒÙªq76†Iã5§ûð€-^zŠÖ@•ÿ‹õláËa«¯þÌÖa5åáÕh)f°g­öÒ`b| ady¡ŠËvU®Ì‹{Ä¢*:jhi6’Áœ¨¿c^¶[Üì1NŒ`ÂÑô³ÌéæîqÑ¢«TÞöw‘uÍx é¶®¶(F—ýV©QIžs Âo»Ô‰_§-Ó¼L“+:v®¿—ÿ"ß<¶«²CÍ>,¨Ú™PÃàUÞÝÅ<%%MÎÑÎð’'ŽDfÅÅ!ÿ~ £Šhü^‰íçÁMyµVoUDuòÄœí’&='Ç1<•µë/ô¢OJÈـܭA¨(k»úWºdva/3¢slLOî"æï?“ˆQÅìd6æÒÉnÚC~ :5dS,NI¿f.©\Üm­?|¼ââL»3š£Zˆ6<žái´Ú=WO¹ª,ˆãâI´% çZ Ín3ʬåæåÔžreÂÖYá~ï™-¦£í> stream xÚVTZ·¦[º@Jjè$¤C:¤`ˆ`†I%éé’”n¤Sî¤DiÞ¨÷ÿï»ÿ{k½·f­™sö·÷>{Ÿý}g ³¶¯œ-̬ƒ"xø€’€Çšº" Pˆ$`cÓ‡ œÁ¬l†`w8•üoøcw0²)€(7M æá ˆJ ˆIA Pâ_Ž0wI€Èb Ðä¨Á `8Ûc˜«;ÄÞ:å_K§ @@BBŒçw8@Îì±Aš „Øu¢ È ³€>ÿHÁ)å€@¸Jòó{yyñ\à|0wûG\</  †ƒÝ=Á¶€_힀\À¿ã#`è;@àÌz0;„È @œ!6`(ൻPgôT5Z®`èg?<€¿® À'ðïtEÿJþÙØÀ\\APÔ`q´”4øÞjûËä ‡¡âAž ˆ3Èåð»p@INBõ÷Wwpwˆ+·8ÿêÿWÔ%+BmÃ\\ÀPœàW} w° êÖ}øÕ ó‚úýYÛA ¶v¿Z°õpå7€BÜ<Àª y LÛìÁ€€Ý`oþ_Éõ}\Á¿A_fTý~®0W€ªpÄŒú!ðƒƒ<Á„»8Àï¿ÿÜl!6€5Ø%ø;;Ê ¶û³GMÞâ 0¢ˆ'þúü{eŽâ–- êìó·ûïáòkk>æþÝð¿!yy˜7ÀWࢸ ˆ¡ÿÌ¢ ‚üUðïXU¨ ñ§XÔ-ý«`Ï¿¦Ïù—0¸ÿÌõ†b,Àù7ÁÍ€"@Ô—Àÿ›æ¿Cþ7vÿÊòü?ëQòpvþrþ‚ÿ r8ûü…£øê@q_†Rô?]Àäª ¶…x¸ü'ªŠ¡4 µwþ÷%BàJo°­6aãð‡*ì¿æ ‚µapȯ€ð?0”ªlœPÅÇß%š©µÙþR— ˆ(äîò!@µø  dh öþÍ`?†@…Píì`î¿æ),àG=K¿ŒÿHlãáÕïÁ£Ný×þ·†Á`o° ÁÜ4Ìæa˜cuXËE¥ƒïæ¨ôg¶M£4.^¿9÷V$1n2WEfÈŠû™\ò@éâ†"ç©ìü½k¿½Æ¸áM‰:ÍWþ?-ãuÇ7› f?Q÷ŽåíÉÕô0âßåÕ—Ýò¿vó7 vÂlDoWcËvó'ÖΡ¸ðêVö®é)Y~1½©³U!ªNø³d‚7Æ Ú,¸p’íõ›)Z/#ÞòÞ$“§gŸÉߎÝÞS‹ç&ØÊ÷3Y|u9å»T¦/ï »OgBˈyJ><Îî'¿¢F3ãW”¿Ø;ëÝ(•ïížÔE^R¾mÁ×Ý—ÐúUžÃsm_²“a ½_«Šë)-ÝY´¨*š-_R ª„œÀŒÛmvòóÔfºÓÌ| §Yù{¥m˜lqº=qÑü¯¾Ç¹ð¿x›#·yU"4µ@»ë_^è’ïýÆ7à Bwúmöä ߥ3v×ÖJŸ£íö—à ë¶–LIžŽzór+ÜR’®jr 5¿ª¶°bë¥I²¶z‚¿J§ÖÞ!æH¡|1¥£i{U'2âp}ú˜÷s/ ï€cì©Z¦aüLMBÿ±¡1¬èpÑâÛ¤} ‰Ï[û ÌTܱ¨Ç ±fë5¡BãQ$#§Ü«¸³Ü˜C­Êw„ î½æ-¸‰-ioé!rážÓÙì8ë]n¥Ë-º=Ø xØ5³²L¾¬ú¨bEüh{ŸóÍY‹€ûõæ_Íx:‡ë<·ò¿QŒMGïz´l6{ð¤]’XÏ‘º÷i40Ô’@Ú¾fQÍ?%‘ÜÓwèÖµ“¡ô ÈŸ\ÎËRRÿúI*Ú¢FŒþåÅ,œßxfYô_%¼Êìâ”@Ûò(‹DÿÁ¦5PYfþi3³…e®ë1ü2ºÒÔEy}q(•lÂìš`Ø+‚X›IKòþˆ%[tàNðvMÌÎÒÍCf†K+v®¾äÀ^n߀ËÉÃò …P.:ɶ&ܨOsD¨ §¹êž:Ó•&©mÞ‡'H§B®—m²íÕ‡vz1"¯Ÿ¡ß‰<;Ø|¸³À…¯}>#0RÖjªÚ–RíýLãÚËLŸšj_bGŸõó ’&ˆîî 1­;(… ½.ÓzµS…éºø²ØFOäeÍ‘=Cnò¦rûy éó‰ÛY”ÜÁ 7Üv üQ(¸ª«á6œH×ɵw®{dnߨP+vUbõ''…ïÒ>¯ÓJ% ïM\u+î2ü†iÃA±ËãÁvÜ ÷í…'ÑRl'ñµ·¾žyÛ>-«Æ3Ö–1N„F0Sï0cQÇäLRO ¦!^‡˜±‹‘…òyu4'¢—p?ä‘ΠÛíLŸ‹ ÔÔœÎÅÁtÉòΈóËõ 3ó&Š$HWc|¡…ðëjwË›. ÃÎ; Õ„‘ú8~¶;ŽèY S ß|$†5?‚[ɾjæx°!8h†µ´çÚX Z¢ŒÁľ´‚ñi\ƨޓ1:eðn:É<-SìþÚ(G0û…­r£ûúHp|[,ðØ’ÈPÕõË=Ç• !þ×Y jÕZ}®  7xCóÔT{ØE*É ¾­7ãÐ\ªëDB\sS¯’yr=4è‹Ø¶é å"ÂX‘ÕU Ý@–ä÷`ZZ Kð~º8wº‹êu¦4xLSMƒ¯æ ªšç§4¢ùì'ÅY¾˜aÒ¡ÑÇbÉ< žä…®^Q4‰R˜_Â|ñ©¨Î3œ%Mèîí•õR›×9Vl(Qê/íi—Åë°ªk"Åo~’¨~:A>ñŠ¿,{F#~ÿ#k­þ•Q£H4iQ )s“;Âå’H¹&b$zþ4zZì6ËNZç„ûècÿŒ÷Ĥ6™äOŸÌãò=½p`«»T'‡ S¶H~«Žã,»Û½®ÑR]@ÿø¨ ÝÚ?«@FÖtpþ~¸ÉiBšx]e#æä´hÔ†‹€hB*žû­5Mâžð5×7u7‚g—–,'l±dœËµPruê×ʰ£ŸvR"G`tÃ2+F­¦Ïˆœ ­NöÊò[Ïo\7L>‡OQÕ½ 6´@7+t9´¼D3¬9§nRããÁÞ¥®-1¯¥8‡Çç´\Ñ1” ’®½æ!~È?ÿmdŒÕk!wïÎ%¥Y ñîJŸpo"%‡Îþˆ€Kß÷;®>aw2¹’:+,N-òJëwú*¨Ã–u¿ R#^Í••—oßáøx*Ýo•IË‹àïHp|äkÊì•gÍfÀ–U‚ÞVƾˆ4Ïöׯá®Ðú)…úytÁ-B®ö`¿›Kãx6•©¼ !å¡u„P7ÕÔ–ê]É0aÿ¡v<ÎTútØÕû¾“Z£º‹B—'‹éG¦qRR1F5f‡³D`ÒÁô×䙾¤žokC<'ž…·Û“Çí¦ý!AÙ90âÒê:à_YÈÚ+ünñ}3Œd5u;=ʱž9D=T«¤¢K1 lŸW¦KìëkZßD[î%–>æT™ædܬ¯vúŒOh¿àJuƒ¢!*¼{5çЂf¡ÒÓkòެÞ:½ŒiŽy¡Å„žåádï9ë©ñýƲA ŠÜ”ÊÕEΖ–å¸'J" V “(Ú’µ› ôM¸÷öÌù•çoÑÍ48Z{|pÕl3}ým¥Šúu­¾mgåù¾Ð¿·Œï ú(\Ÿó:&Eኅä6š¸+š&5â¶ëiÞê{¯ÐæI‘ªâDiRf§²@i”³VO»~×I|ìj)PÙ¸ K)žà1E†áé«å.(Ÿ‡¦>‘8«?þàhLˆœ#5溊È[•ÓØI°©‹ú6…T’–N~câ3ª*zPT$„8çû13[¾{¡bGáû£E#ÐK9Dõ²èv BÃÓU ïÆvù*ÇUà¬;‹Y~m±V­rUNY1Ñ>x¿`;"£ŽˆŠD~WÈ%èÖÕ稀±×Ú‰Ù+ùä#‘vÄ΢fIÛ§ªSÏ¢zЬÎ+†§ã0Œ8·e-ßþNûÓÄÍ2M÷º³Í«ÑùNÊ‚ôºÙ/·ý-õTÒ2é\¾)„ó>w{îR6š;&¨#xWpwëá"Ç̉Õg‚¤3ï|mî44/Èž?ëŸZ¢y°° \å1K8£`“}å§O³HVÙ iš2Öʵ’-xæÒ ”æÿÃÞ£#8ë*ªázÚdòÌûn|3Hi@€ÝM†×½ž±öa†xQã|~7GÚ²iÓnmAÆŽy_çŸÂ4-ÀŹÓ]FÌEðHçû"+ÔP›öCŽÒ¹«f÷XÜüåiî¢(¶‡¿?þ:ËÑŠ|Ýæuôµ+ˆ¯i¹K¯­&ÒÀlªÇ‘£PÆê Ý®lAý€9È^—§€‡ès)ûùËDò&‡8§¤C_Ñ5®l"Ü`¬†`)½º€GÙó÷ô ›î1ÚÇ2&¦Ýzm3°x9`iy¿cô3×0•‰áéÒë)ÇØ7™.'æW»æÄ”êÛÛW«Á‹4šØÌK+S5¢88 öþ¢ bI(–)9z#·{n»&¨ovl?E…kOÿu§€0EæÀ…ÇIægpÊéÍàÝš$KJ|`Ö9ìЭVD,2,¥0öi§f6©’v„Ͷ®Ž¯&É}’-K9®`fÕÝ)ùÂaí.eÃvM—ª£H~¶U\"ä©‘Éú›UÞA» ø[ À¡ýE\Óñ}¯l;}¹Â¥ ò=º›ù|¼™‰…ÂPmVí$îUKÀÁ¼3§©7Ú¡Î]&Éî)ÌùECÃNéŠ^* çˆu¢šV’(|«ç¹7þ¼d$Ú\pq¼F²pú§8ʲQ»o.·IéÖK[ÄÝR{s§žR»]Êèñ·AeèÌÑx<ײïuæØI =ÍÌ[ú¢ñùNšxÁåaÆ9zõùçb¼NÍ.5¤ØDê·ôœb9’ïj^D¯êÂ.ÖäpŸš¼Á©õªòÊÚhr }t'C:d?Eä#üåx és¡2^'ŽìÔЖd#‰ÕQ§âlny$'Äø#öÜè—¢„ÔÕÕ¡‰ùV`ºÏ.§@êéùOÚ \}Ô¡ïáqêBò¦§‡w6«¿)hhf¯õ2»Aæ}ßÛr¯¶¿¢1wÊÒ&Üü~þ㞤9Ÿ¹þn(M¼ÐI©o˜ýâ͵X\µá9š±_—ÄþlçCœïó™:w‡“iFOÚTY¤TË/ËpÙDÉ„˜%¯E¾ÿ–\ýÕo°ï)ßU®Aº´å‹mÜÉj¡êª7±ÍØQ^s‘AÀÆ~Ë|íÔ„ÜæK 8†g¢BYíãWÛÄëÖïçLßú>H:_¿1`ëX9ŽÍ£h_étq²I}£ BvCu…ݯ£ ‹ªJ˜écÏ‹/héÉTBêý{l/)Ý«¼COA -í)lj|gxk±ßö²k:7çTý¤}ˆfy?þ-„ÉùiM\IØÜ½{þ6ÊsE÷ïèšÓlsØã+geÞ´$‹4Í.ž'é>*íˆý²4мÃM§H½˜¼Ÿ&rÈ–ŸÐ0Ç/=Œ®ØQ¡ Æ;Éxµ\Ô Þ[WÏØ,O4eù¸½£¨ó3ø:½/ÿ|%«ÀôQW⫲铓–ãuסMA6iì—eŽ/ö‘© ÷'ÖÑúãl3S¼ñ·>žSªíI&ö½ð|Mn/Wªš‘aKùàvãPwó\;ßá‹]ÿ ÎA´ÃkGU©Ý?M¼‡Òñ¾4€ç$ªn ¯7®ÃL† [1‘`<ïÁ‹¶ÝãÑÖ×’‚šZ™âyNpüÂÛ]œ+çl‹ØMîl¢ÑJš¤®TT„¾¼ÜBäT—‡>>…Y-Ûïtuåíš“?Æï–;]Ç«hSšÔÕßÍí–æÖxE{§wTµ¥é·éÔ\¶§’²ã;F•·®¹ò¼?Pqˤ;Ìá²:²6m "ê×鿆úè‰ak[…¦±5÷õ&ư3)8øIédÈ`âæ¾©ëL·Ód™)òV5Ìs-èA ’×c9­eð6ŸeS–DøQsú>š‹ ÚQMv{7®~xØcŽÍþr[„áø]Ågqã´)]£Êûo7¦DîAe]„w·´ÀdI{Õim‹ƒ~ןq*ƒCê.í„vÐLN‚ºº¯¦½~xAÒYËÄXÒ ¯ì=fo}þÚd™©ã‚¬ÑRGø<í®ßƒþB›dLÞ®IàW™ˆÍ}»Œÿá·¹-ñO÷0jž‡üxD¸ƒ¾ëáHª—Y¡ß?õĹ,›‡,{ú á X ×yêe~R!‡Wù)ü¸éÞQÞj]©ye²ó°I×%óâDƒ"q°DjCÇ–vÓ²²ýa^x+Žnö'm¿OÁô”ÐìÈWSYJó~Öú­Ã-v8/Ö¿eoÉ){:õgè/Àe·œ¨&Ý ùV¥'Uüzv­Oü)8W Žew)74ñ«×“=:”Æ+ ïòQÓSÇfà_ô'N!,†¯–(ã\r›±:=&ÎÕXC¾ÉŸ­îÑh‹IR_}òP\Ñ©Yò/š0{Ò $B+—Ïá-î“sUî>Þdsÿ’<~jàü…ó,º¯›¾Jurçù„в’á—áN®ˆÅb4“¹,x’HØL)NÎM›ãÓ$!‡bu«’HùŽr$Ëü<…ê~wE™Éi#å·æ3ƒyd‰v·Çæ$|DSvœy?(¢-Çé´m= ;^ì ¾øŒ3iµ¢"}ï ðÉxb/‹øqkvè©|(Vønz™ø°´laÀÄݨP¸i¶R¤¾n¼ÒRúQ\œ-UWÅdZîÛ‘«¡ˆ²£¬k cŽ'†‡'¸l¥Í§*‡ã^ñ³ryÛæ¦­«6~l˜¤0cIù=×å?ç%Cã|ñ¢îð$\e,âF‚)ñH‡{Žñ­&hÈ6ïœaK^qQ§”ìØÅ?GÄé"ä›êí^Æé(>™²ŸRî†$9[k'7ˆÞFŸ  "´J¢îçÒÐfži¯µŽõÜ›·k?K)ö6ܨÇÐRò³ey0,Rï8[Òø¥ßR‘OÃØ¨TWiûóêtQ|ò4Ê4ÛÉ¥ÜZàÀ#¹ÝÔÞàÿyòo³ endstream endobj 686 0 obj << /Length1 1371 /Length2 6165 /Length3 0 /Length 7103 /Filter /FlateDecode >> stream xÚvTlû7£»eJo#¥»[BjŒ¶Á9JPJ$¤D”VDi‘’N %U@šÿôyÞ÷ý?ï÷ó}gçl÷Õ×u_¿ß}ÆÝÈTTÙ í×@£°¢1°PUßDKˆÁâ~~3Öþ—ÀŽñF QrÿË®ŠC±x‹wÓG£€:>@ˆ"-‘‘ƒâ`°ì¿Ñ9 ÔáÔê Qpo¿*Ú3ƒpqÅâ«üë€ !²²2"ÂÊH8ƒ¢€úP¬+‰¯ƒzMÑ0ðw\±XO9ÈÏÏO ŠôCc\E€~¬+Ðî ÇøÂ€¿Ç@‘ð?ƒ‰øf®ï¿Ô¦hg¬âåðA9Á1@|m ©¶ÐÐŽúËYï/àßW„ˆAþîïè߉¨?ÁP ô„¢( 3Â4ÔÐÃúcE€P”ÓoG¨‡7õ…"< Žx‡?CÊÆ@(~¾¿§ó†ažXo1o„Çï A¿Óà/Y夊F"á(¬7àwj †¿õПµº£Ð~(Ü_ggÊÉù÷N>ž sÂË®­ö·^øÎŽJÁ`Y0î„ûÃ\A¿“›xÂÿ!¿ÕøþƒqžhO 3~x0ÂŽÿ༡¾p ãÆýoÃ?%tBÀ°@G¸ øOv¼îü—Œß<á¼Æÿþüûd‹Ç–åð÷?ËYYZëÿøß&´?'*.—!qq  þüÏ,FPÄß]€ÿ«rFeÿjKÿjØ÷ïí üM Aà?s ñˆ…þp°†ÿ‚üÃüOÈÿ Ý¿³ü?þßýhøxxü± ü6ÿV(áð·W,ûúh<Pÿíjÿ‹®úp'„ò¿­ÚX(žÊ(_"Â[áw2B`a®Aå/½ùo‚y Pp#´7â÷ƒ…€Áÿeó æŽ4¼ñxüc‚ãIóÏ’ê(Úé7»Ä¥¤P À¯/Iq< àþ ‰¡ÐX|?^0ÐüÞ§´¤ü[õG’”‚ðÔùe`> žd`€ïá_òFÃáþp`j »ýÀííƒwG•Ê~¢«ƒò£ü«OEqS˜fŸjÒTÁ×Yá ˜CåÔ¾ÚÙu¥iîsÜfC5iTc²qÓiЙ}’ÉÈj`r˜ùýЋMåªn.rNQ3¥µ s¯ »÷݉®´êðçzùÜ¢6Êg8òëÒô¯ê.›ù9±j¼öZZ—â¬ì“ècó8›ûÅcüyŽÏÇYyH°¢\dBô{þ4c‡£ô9C—Ü:I€à­Ç…8ëEñøãñÀ¹—fâÞml|lÖ¬\DôGnàT6ÒtX>ãJ ç Æl|Šb$fÛl5C&–Éeî ’n½Qì%º¾æ²ôk«•¢¾%¢]1öbí\¤<´Â“Pjmý |ÓJ»ƒ›à*£¯}ËÓzöBFõ¨:ƒiY:&L‡÷:»¼üÁÍî=Ì£i_n…inÍ}¶´Šë‘ *nc* jýêngò‡Pâ‘@6ÏuDi{@7LŠA²»àŒÜ)YDÇ®¼æ!±ÈÞm¸]> p……ý“ùáhw×ÒQB7C¿æY¯-Bò=÷"ÉköŠa/ú¢a×x’QЇEƒãÑÉ‚ÙÉiã¸ÚعˆŠÈ»w¦­Å¦:l?¶~U—Ò ÚO0¥§¢HPL­! …‘~IYµèvA·$í$³¨xëØŽ¸å ÷>j©4¦Aœ<èk”ÔÈK:fð­ÿpø,̈òîÎj ódb›'Â=©ÞÁmw|ï‹C[fM»z¹¹ šlç[Å…›Šó£ö™¶ú£>³¸I’Æ¢OP{¾Ý¯´¯¨ú|Ôœ#'%âÉÓUجM|$)7²Kü;‹—F Žï\äÄA&9>-çY.¹§Ê°Œjg6(ðsœm†&oάše\ –†0ñió^z->1Òæ­Õ§OÚ¸ëï>HÝáß½¥4ÿnl&‹ÁzAGÚ5l÷Õò´¼«òtåÂàG9ÚVÞD´ã„oã<#ÞbsνO“·}¥#¯› œÜ·qõfôZ%×ÍžïL ¿pTë‰ý6§ùì&®ò¹MÉiP-$ÀÓ’ªVahX¢Þ'6”8+¿™,ÀoWÒ ¿ÛVÏ"XßÂþüÛ§îž/ {ÛÈÝF6çF6Ò«ôœ&ñâ`V‡ù˜:3=ä>èÊác†x½'8éu'õ¹o¸ ßfíM’ Û}­ŸðU®z@«÷_hús—ùrnm[Öiû+öý´¨ÎyAÚ{2®à?­ÚQÖº)5B‘²¿{Ý/oÔîk2å1ãdWá¤oŠÑþˆ¤ˆhA8¼ãû»Ñ¦2EIÌÊVºb¼Z•Ü«=­ƒîùãrN²*ѼÜ2õí ßÁìÓÇ̉ùBèwKOíƄÁ8a±“óš°n…¡èè›ò¹÷ëz´uN9;ζ£Ty¼=QᕹâárœÄ‰¼úÙ´[Å&¡äÁ˜µÁqÁëÝ!¿ûŠWö™_lìð¦UçFË–±ßÞT+_|f@M!lz€kùÃÊ×HgÜ‚q^v*¥7ŸÏ œ3°Zôº¢À]& ¦KŠ>ôÇÓ]”ç„[éÖÝÜ•µ©Ñ ˆ$TõÊøù©æúéÜž§‚›É¸ï×òH›ðûá©­>tvš®½Ü“$J§›‹œé‰ÞTþÄM'ÒLÉSœoˆOô£îߤúFV{“¨¬¨[zUñËê&ªU9·—•]™Á-Ò”‰ÆeªFo‰M˜ø# $ÙÝÖ ü2<$ÀúÇ´eD­93kK6ê±lUÀåaõYÆçùöv;`Žœ}½M£p ¸‚+¾€Ú§¿®3=lk/ÜSË(KÛÁŽhÓ=eUmÞ¹ÒOc{ÿ±s÷ÉúÝoãÉåón2w¡öо¶Ÿ<¢8ÞíÑm–µbÑû'L€C¹uNGÃô™{ßév´^½#S¶$œVßlJéº,þeî’sǽƫ˜@­³J¥|mâƒÛËÑF:Wê í¸›”|W[”¦åbb‘ ¯tþ2O JˆƒÊÆùëªìZz3µnÎêÞ3הǾþ¶HÂ)Êíu!ÌÎQZ]kÜm›[»R>!;«÷丅5UÃäößjóІGÙC7£¬Ÿ"ÙÒ•±J¦CA[‡C9Èaùʲ»] Z$¹FË?‚N s=‘`ž¦Âs'™õÚÏ-l½÷îZf力a›_k|h ÆŒ×4X…äT³:O×4ó3õFr<ÔÔ_4“7êßUò ø²¯GgæÙcõÞSgå’-Ú6oü\ngÀ-ùëJɂܸ p°<;7†v£ßFJNÖÒ|èKh’¹àÂk»KháU“µk]_’´Òö¬½5:š«Jô|c7€';†ló­¯pÏrO¯MÆ.y %4 u½,Õv¸™Æð¨ˆ}ÆOþÄ“ìîéÏÓ àë 3m[k§—ëYàštËšÓ]>¥Š ÝGך#Yâ(„¾•°·døí1ŸÓÒQêæÐ ]ÿ‘?N ®ØØ”8"òò%NÓ¨°ç²TNËÓ>|$e¡`GHg¡06*h˜êµF\\êUQÇÁ“ |xÑî é›åæ+Vð^#ß>( ¹ ®´R*9nì-‘:)Ý ­Ãi7ÇO*0| ¸ºþ=¬Z=·Á­,.ߦr¬¸Sð®Ç$š®Ðîbß'R{úËKL=ˆBJ7“¾P´Œuü(1·ŒýÏn» b%›¾¬Ó‚„lÞHÖs²Þ´ø™I'¶)Y!¶ÓdÇ? T8ÌUÅܯ6´k­Xµý@æA¼dïÊ+J!*µ;F+~7Ûã˜EŠ@†£ÔÜ9’oO¸¾3ª±ç(Ù_îb‡Ñy?ucSõboÂÊbê¸æÉg9¢r!YMIÛEŸÇMò%ÅSÞ\¾g!ZΔ갨QRB×¢Ž\9÷Þ‰uߘÓî÷“`˜ËIÿ"hbIÃËU_tœ/[è(ùÝ2†ç-¯ã2‘.F©fðŠ€`Éìfæû¸\ãØ±$lÃ!ç±8Çg³iTÈŽØvyðAk?GjP™}÷5†=Ö…Äú ÷!W—Hjå–Pö§Ä1˜ AÈW S•É—×Ò xÏßzG.<¸2I•–ŠxZ?õUM¦¡Yí¬é¸â'ïê냙6´ú©¾xìYŠ*ûøHÝæ~×TÅ©ð$—LÚ{Š&ã_d&]1TC¬5´Ê“,ù Ü\‘¸#ÓÝÎÌ îýÝF“=Ÿ½gv[ ¶Õ2⼑¯Z£ö^üeWëLÕ™›¤* R ³'‡wÍ?È)¢_yQVÑZØÐ\|`ú¾ÊãKXÄÂb´@ð{ç€ÉõÊJMGÏÀ’‰ˆïk™G4êŽáÝkÖRŒòì ™Çé¤{ÝYŒG¼LM®¦ô&ÊU[ â]ó$d†ãŠ4<^ó4#jß #£|܈$탹gz²yK)  Z£OÀå¤á´Möª«/§Tî,Ë—»lêRC@'ÐæëÛףƒtú_}f“‹ê1)è/ €º‘}÷@¥ëUýr8q>b+ g}52PæÓ«óÆÍOmˆ"»×«kg!£wyE æS«»ÖÆ-Lw(Ë–*(޹‡Äžìaùב•ë ”Í"!..ÀºOŽß¯Öú¤‘מ.ßuB›5Ø—«óEGGèõ¬U7ï;~£^¤LHd,æõ¹€lÌ-’nÝɧE’ts\^ Žyt'ÔººBýrÿ(ÕV¦6}µñðGÏ´°OžuwÌÀ¼}I¥Z›{ÇU7{f¯X±$¼î)îÏ+èbþÞaVtóVSŸgê _ wj1ˆà¾l—<‰ò9±,ÙØÍ UGk©lÑE êŸ{w9„aÞ{äñzrä’¿àä5:OÆZèøu›í6îa×–+ ûé¦F¢9&49¹õŒ~ ±¯ê[ûü Y$z˜YÔB÷à2m©´V¾»}ÂïPl8λ»ÃdI4+:Ò6\9?ç|§_PÒ·Ø©„;q¾µ]ƒ$n*}kïÞö^‹Ã`QbÜ·í(îv.m‹ƒ5„'c1ök 6¿9Àªåî²ôôûŒ<¨I íˆ#à»ám'd¼Qzä:c3ǼËÇ‚¼aíjpŸô6iU-oµ²¦´Šb-wwˆþnwñFÑÙ¾pŒ}éÖP:õ”ró•v­¢ö³Pš@Ú.*‡á©žÀiOêkeë°"ÐRØLqéä“´ñ—ùÓn~+€³kbt§SRk±KùÈé-þuó–1¶SÔݯ"åMÁ)!’6øF6¹6Æ~׉ef‹<—R!àLd®^‚ª3Qö&Cz‰wU•÷k˜Èý-oBॗ ÃFeõÖó®z@4Ôâm£Iƒ³™–­%½|™pË3¼è^µß×ú!rž¦{7Ê}òåú„ˆžcžùìˆÇÊ?-©áÁ¨ª ¼]Æ9ìe ¸Œ ¡Þ––©Nßq|;X¥ø8µÌ!Lÿÿç2pèùØ HC29qc'R¾Aú%úMÉK–Ç/Æ©+¸œÇì“­6ÛÁ–Z¥ü’•Âú3ZDX¿mVàp\û£q2àc°Ÿ]Óï !*çvþ°$ N¸÷Ôqèg*¸³äY42A›òÅ­hņ™–žÈµÜ|ļPëJWiBж^¸ñÄÙãØËêBøö©Øº¦Sþõ£0nveu&~Iò;3Ã!%£ öâýÛ)5neMNú†­Ü_bWMgðRŽžÎæŠ!ù|ä•2ÙäXØOç>Ç ‡QŠ ”«©µ+.c¥¶BÛ̃j6#q×BÐg‹ÍpAËï¾3­ÉV€¾3¢SÂmÉ·QºY ²õz÷Ûâ*„ËEC(ÄßµÿHÏÜe­pëþ8£õã§Ö&î×Îûášm:Îl[«-›Ê?œ÷ Rjª´|¥Ò Ë.‰-穵B’» Òªä>zp1|mÂC =«ˆ¦àØñ“ˆ¶ùšac™½¢ÜÛš*™éðÑöõvZP²oäJÄ´8¤U0"ûüaŽS³4±˜ŒF£»êh‘2©#å”¹Æ ÏÒì|sÂá^‘ÖƽDànƱжmÐ3´¤dÓÌOôž4®j¿¥ÐÉÀgyp ¦ò£þ¦3޲0•c|í­µÁ{ ¹IU*§(ؤ92OªHµö5ƒÅ~8+îó³õŽuQšQ2õ‚w·µ¡ÍY$Êç Çg©b·Cx\ÈËÇG êeFó¶k¤!­fJ×C‚ Ô<_¥›qšI[ó?Ö"‡ÑžucÝÊ~JädMÛ0…Rh«@àFÎBY®{™ïó%:ÇA‹°¯’SeÛIºóg¯íªB)–$wùUØ•øÊôj·øn lz'?2ú`+²ºÜ“O1¸ñËŽx`VòéA"_ ä®•oUÇ{­Z’S`8›&†BX1¡¼Tºï‹Â²7nïF]E©•e å—Ó·¼_üéµ´„Õøã|­C, +Þ%“è– 2 Ðx8z?Kvø i.à%OS ùž¾ù´79v!¡ÇÍ.“°î’õ¼§*ýݦ ±ƒ±î­7Ü6G{;Ó©aÎ`׃Ü7À°;—·óRDL¾ÈF÷Û¼3Z8ÞR‹l°{ÕÑ›‡||`ó€¶RµEÃq÷§‡¾ñ•ÀÇbÜýËy{Ú3¯ *oÕ;ûR–‹N .òOgÞU1»û„˜E«tÆŠE¸ÍS'ذÐ÷éÙ¢Ã&YÒgõðšïM9—ÓA\#djl¥×¨bd/\Ë‚X…¾ËØÅy è°×ÂÂAW¿uÏÿã Qˆ˜0Às䛋 ¨WÈ dóÿ@?Ù³ê3Üïi×Õ¢”Áëã7|GrÅ‘Vä*R(¸ÌóUÇCƒ$\“ó~®zX´’³Aî¢ už—ƒOwM=kÉK Åò*Ý$»7¦QRŠ-ÎT´Óœ±–ÅÞÿáâ¥ÃG ^ê…ÕÖDÜ AÂóùóBox¨÷0únçÈL‘€»CeØÉ›:dQ¥ÜÑJ¸ûªÇ.>ei@BZ4ŠÁ£|L‘åþÞT„ícBÊñ+ÝÕ?oÄFC~6 h‹™êgØ&Áßì² )Ð)Uì_¶7x|š1ÉM =)õ»÷eÇü ¯[/"ÈJ@ŽÈvb|AŠïd6†·§Ê'}cm+ð}:²užûMHáÃÉ=Î4\¬{1Ræ*Z÷…2ùÀM¦áúèkh™ñÄ•ùL­Ðr–pÖþëƒÖõ9?Ç÷§Ÿ‘ñõ KqÒE·’áCL‘ °—3*”n·#ÉÁ ;yÄÈñZm×µÁZþ£Í·Ž1%ƒ&1ýð&%[¸La'¹OB[µÃú…Í/‰¦DJ2_¼§ÑA”÷ö-í°=iëLųTœ'iëláUkþa׆@Û¸mWáûåwB?޶_27äd3o˜'d‰™)lU³õòv:·›xï¡?žñ=¼ÎSw[´r·uH´¸úrIpôI$òƒ»&]îyõðµk! ±=ó%ÏçVRÌJ,ˆˆÞ½¹ª]gŸù?±/§ù endstream endobj 688 0 obj << /Length1 2629 /Length2 17285 /Length3 0 /Length 18802 /Filter /FlateDecode >> stream xÚŒ·uT\÷J7Hw )Ý]ÒÝÝ=4 ÝÝÝ*]ÒÝ-ÝÒ R"!qÇ/^ý~÷þqkÁ<{?;ÏÞgÔä*êL¢ 3 Èщ™• ®¨® ¡ÁÆ `eå`feeG¢¦Ö°q³þÑ Qk]\m@ŽüqÄ]€¦n`™„©˜ªrȹÛØ8lÜül<ü¬¬vVV¾ÿA.ü S €"3@ätE¢9y»ØXY»#ý÷#€ÖœÀÆÇÇÃø/s€¨ÐÅÆÜÔ hêf tG47µ¨ƒÌm€nÞÿã‚VÐÚÍ͉Ÿ…ÅÓÓ“ÙÔÁ•äb%LÇð´q³¨].@ Àï²J¦ÀŠcF¢hXÛ¸þ[¥²tó4uÀ{s £+ØÈÝÑèǨË*”€Žÿ&+ü›ÀøO{lÌlÿ¸ûõoG6Žÿ265798™:zÛ8Z,mìe)f7/7F€©£Åo¢©½+loêajcoj&ü+yS€”¨*À\ã*t5w±qrsevµ±ÿ]%Ëo7àFK:Zˆƒ€Žn®H¿ó“°qšƒ;ïÍòÏÛ9‚<}ÿ`KG ËߥX¸;±h:Ú8»e%þËþȬ€n.VVV^ðÁ@/sk–ßA4¼€ÿR²ýƒëð÷u9,Á¥ým,à?H¾®¦@€›‹;Ðß÷oÅÿ"$66€…¹À heãˆôÇ;X ´ü7O‹@Ÿ<„lÖß?ÿ|2Ï™ÈÑÞûý_Í¢¥.­®+ÏðOÑÿ¨ÅÄ@^_&vV;€›ÀÍÇ ðÿ_G*¦6ÿIä/SYGK€ïßù‚õßœ=þ3´ÿÙ:ÀÿúR ý3ï¬\¬æà_lÿ¿§þ_&ÿ_ÃþÛËÿyÿ¿9I¹ÛÛÿ‹Aû_Êÿ‹aê`cïýx„ÝÝÀë /…ãÿ¥jÿ½ÅŠ@ w‡ÿ«•u3¯…¨£x´™ø˜9¹ÿ-¶q•²ñZ¨Ø¸™[ÿkLþ-Öü½vö6Ž@«Íï«ÀÄÆÊútà]3·_'®àéü— ^¥ÿ*éh²ø½sì\ÜSSo$VðP±sq|ÙÀËiôú×<X˜An`¸B€%Èé÷ÑrsXD‹þ¸,b€Eüâ°HüA|É+€Eêb°HÿAÙ?OþÇSøƒÀñÿ p<¥?OùÄ Ž§ò±XÔþ p<õ?ˆÀ¢ñ£kþAàèZ8ºöŽ®óâëLÿA`©ƒx~ßlÿpÀR³?œ“™©¹«½©«õ?R6vprf.¦æ@{ ¥Û_b®ÿˆÿ½6ÿ8aû·Øèö?|>ŽäÿÇÜ%ó8#s=x´þ+áäü-qpøSËï™cùS¸% {{S—¿à,€þ7rvoì?6àlÀfoêð— ¸|Ë?‰€–6œpýVƒÜÿ¦Xý Ö[ýþfþM'ÿ§•œà–Y{;Yÿb€e6Ap1¶Að!ÚýÁÝùS7¸ ö¿íÜË¿*_­,Bq€#9º;˜ý¾­þÊ|˳€þäv~ ü¥×åôG véþ:vüŸÃådûô|°€GÎôç°8Á=s²wÿ+gð…ÅùO’à†9»ƒÜ€föqÀÒ¿ºÊ®ä®ßèñWS9Á]û?CÌNåObàËÅÍÚø×é‚ëróýeöáþgHÁ1þõèp5¹üÝðxüÁÍóükEÀN½þ‚à¨ÞApc}þä öätùwÿs]𻻀;ëö¯o6ð]ú_ü¯÷ è4GZ]™ „Ù6„uÝ׉y2íOs rkþ|u'ãDŠ·‡Üe†P·« âüpË›ž/¡2a-üIZ2"‰H2žÇÓŽO¬›+J&šðŒ¹QP‰åvöŠu09?³ðXÜ{D悼ê§.µ°ø¦z'ä^ïðÈYŽˆ´ª¨Qùh™Ž÷1仲Œ}€*?ÜâX«mHd&²\oËÜÃ[9=ä–³;¬šnL“¥å!1T®ÀÅi$·†K3"Ý þž©^öGëny‘È>Æ’˜÷ooKÆîV S(©„\xTq;cîi¥RËçSì·²ñʆNžÂ3‹ôaüË(Y¶ˆ–žÁ§%Ö2ß| x*NÇ‚¸dh/ 1ç{mæ'M(÷a •bq#>ÈREНhÇÌXË„‹¶·žü|µOÞ—âN62n"@Ô}ZJuÛBCú¤!§UuˆqdD†uV–è_0‘7Õ/">÷c˜¥Í™8’ß^Æ”ÒÐçíbk7õJÛ}»Z´Äo>4ïa¨wÙ_}ðÉ;¢qFqŽ!¹BÇçl®)Ôc†Ã0D´†à¥“J(]Ôpvò`ñ#éãÕ‚°¦— Çæ(ªygPƒíôüexAÒ¿]¯âµRt’Ö» Fø²yf5ûƒ‡y‹¯oiÌWô± -6ž£ÑuB3yM¦gXuˆ*ÖX—0~Æg¯z:ož2Sâú½M>ÿ Y"U }ña·­™þ` ÕûDü®ÚË s¤‰¬;”‰¾„¼ù-ñ×(¿¦}t>ô~4´1~$ÂÙ¡hÏ)ÜD76Ö19qO¤ síùJqïdÇÙe³wÊÄA\›«˜»²ÖÄ<ýùb Æ‘v&b°•G[{Ögaµ~ä© =|’5< ¥£›÷iÞ².,~f& ÆWg¶X´wU ÊêéÉáDc}¹à!'­š ‹º-`ÂÜßò±Ârçàºè¢°â$tHÑL!r 2ÿÙp¸Ÿù ®Ìš ñSëÙ‹ôp:¿žÞ[GUCqEv´÷¾py™%0ʹyaÞfüZT¿ÃñØíÕs- ù2Ø ÀØ5rGLþ¸ñʀ䖉“¥q”Î=bðH?œãöa ]J–)·¨‡ŒÖÆïöh !ˆŠŸ™+µª~~(*Ém²¹8’ó¯d6½HY éœc‘Âù<ÕÙ¾–Š‹õ„EÍÇ5ªŽö¤1Û$–!g«_´Øž—U¼Þ(u·wç½ky©ìçB(Šs¥Ìrbùi`Ùí0i‹æ¢?µ`±ñÅñéÍdÖMCc“k|#ýy8‘œŠ©ÓEPæÚG|(WjF8ËãÔ ÓŸªa×s?!K A­!½ÌW‡vÛj„ð>‰ýìÙ'lçbSº?öbš”Tߤ±cT?%ÜYȲ½I8гòÔƒ6^UUm7DÍÖâ°ì>ήM¥¼—â‰/Û4•¥z§)î-ù¦¿æZ/ Ï\ZMû…ÑÇ28øŸl”'oÞ¡ãÅIi{œ¾õœ]¯é ð½lÞ4mg)¯wf—ydçQ1­qÒ!LÌéÞ2ûˆÒ.aC}€ Ly\ñ0×9J|PÁÔÒL˜a&õÐÐï;¸¨Œß’UùxµI[¯bEöní¹|gÃZNŠó¬¡I ÆÙå4Sõ#_I¬•?÷Ë//Ò9Ò—_Íû>œpÏw|Šb0…Çඦ&|Ä3ž· rrå{ñê¿=¯¨úö3ðL=«+ÊÍÀw?{§â¨|o¥¯ý9>éÝh/æ¶Rdô, ëÙROúú!o ‚œZ’hÙ0©ÍJŸ§Œ%2êOÄ)œF¹²·|ÁÕѬÅKkÍC.Wª†:Í>s>y W”gñ³È†é ¦zòòn„)Ò6e$„>±÷™ñi2®H“o÷)WÁ©]ó­¥`µv-Ñ}. ¼&wí~ï§ÏºùÄÁá*T½z"¹ÝòæºFyÐéÇTËèF¨¼˜cÊ•‚wqÚܹ Fåñ·€Œ¡0ŽÓáñøhŒ†øêG)•è½p3ÂÌMo¡nˆ¾Ám¿¹ñk¿À0Ùh1!l^ȶ¸fÑÿ1s¡YŠìÿlxöÜ~ÓHul?¹ ›ÈAS¨¾VËyhg¶F{¯ŒlEMò¼kÌ®ÞXZgqko @­Û81|Ý3Twc´èYIZ÷ØOÊ¥øì!ge5þcÓzË¿@{W®à˜¤X@}†ãa°Å€¾5È"%Ò¡Ú@l'lñ2ñÐÝÄ‘wo†ÚÂë:˜ÝšTú¬Ÿn§WfMØ«âP¹“¹ÙO‹JßĆï™ì=3ò&ì¼/V¾ÌRoºÚòÅ]üYÀ,Sþ-’C ChÇÞ CŠŒ1çTU7ôh£õ >Ñ„—¤)îk¬¾µ‘±ó[³ªâÞŒv©´DI{c3œIrðÒä¨k.{U*Ùfjì·!§ùUýmù ˆœd«b–6ô1Ø"XðmïªTß0í<ί¨ê˜+º!g¾‡~—lEÄÎÃÁƒ¤Í‘ •Åjµ?~Xv†zm± $i\•-ƶ0ͬ7 `p!Òµ†H_e¸QœÝ¯x?,,ÑB }ïjö…™ë›4YH§îÂ17&Ó&ôÝlKF«^/†}‘ò™œ½Ö­lß V”! s°ùØ‹ÙÏ27’öd”¡†PÓpùo Iü•¸R'gëÄ){|¶Á"*q‚±f9t0ÜÍ›¥siyéZý„ÆÞP.¤òézèÀÛWwYa¸¶é8Š6I‹oÄöôæ&óu†ã ÷“PõÈÇBäëµÙ™ýeF%:«dH#SO c±ÓwÃÊýÝFY6×}0¾Ç»ÊxP * 8} uÒõä 5_õ5ýF`ÑÅsµÅÑÈ€@EÔ~e+@ß“ˆ €¤ô:Ä.Úƒ™ 1+Gø¼!™}ç ôs»%N}7wú1­wËn܃zq`¢½á›Ë[åï/¸ªdݦ$/J3y¿Ž|·z;žˆ²àçéˆ1‹TÍ$eQ`˜#8üœò9wßiT?F4NŒqž¾Å­@ûnh’Ü~r‘h~¶þàõœ:uŽq!œªö…Ð[6ÍU-;8/w–Ú?$Ä3§Y%³=›(‡@¡Ãg¾ e…ÿÅ-ù«Û“qv¿W·ì>roêç Ò ddu¼›PÏlž.÷½ú“wãáÁïidw×÷d7ßûžQ/0|5¿D:·æMy‘’rãŠN~s…ŠAå}€5³™ªdó¥•/ºgÛábõø(“Úr‰zb’ˆ'»s,¾¼+zÏf,^yé7ê½NU°¾×Ñi…-ðñîý:-*«Q‡Éœž:Ó²z½Fì¨E5€ÒéBvGG¾åø\©] ¹t¦wûËN㔲@)€Ã_¿”¸íÊéÛìн¨5ž.p¥5µ˜ÿN!ñðqû•m=¤°n[Æ1>®õÌ<Šä¯âW;BØw1Ük+©²3_†7‚ÕǨÒ)¨È2T®Òª‰²¦žõ®!CWD|ŠìÑ,zÚ-'>f^U°ÖêÞòÿ®ì½¯Îè²o^±UöNæõ;’ k†(*’ã&¿ín¦é3Œ®mòù~Q1@Ì„ô½–{°ÔŠåò§ –ht‹©ÀñúmÆŸýVìâÁ#âÃ}]øY8ËþdZ_e–êÂïZ6öQ§„ñ6ˆ.W˜S7­E)74­ Ž{w›µ™£ÚVlŽÜÍîª%îÝï-û)@bØ¡îÒªâ-ký’)ÄAvî¶oiÓ ËWPºæqÌ?ª˜ Ø-¶¯vÊ<³¶è8‘àÜ“×B™žôÕŒ_Zxp¼– nõ;’o~ìáØ––×Çðe½˜R6•˜µOƒŠº.Ó€ï©Î^¢…ÍQÉÑ<æÇ5^Þã-6Ù¿L‹W‰‡÷±Ò÷(=j&Î޲}ZC%B+´‰sjÚ&ŽÚûkîÏoÄcÜo!(NwÉÖV‘i·*%Ë-Q¾l ÔZo¦ëKÆÜ·öÔ2ÚD ÛUÏ®ÎA<_nº¾BÅ/»‚ðhS6{¡ƒ×i|оA ï¾÷5 ×¹âs¾‰TaÆñ<¡týBb·â=…ãPûJ¿Laøá´_‹E –Ø!LÄeêC//ÑÈK%Œ@Àƒ ÑDàòÚØøÁÒyIùG2ÉÖ›[Ûµ'ålkuÜ×Àùrq:ÅEœI¯Þ£€÷í*•Hñ'”‡|ü½Ã»Q{÷ìÊÍ”*ÒúæxgZEÕˆÏÇ€=¡~˜·ù/ˆ‘ôL² JºåH)Ùv0ÕA&0û”Æ×£ƒí¯µôøÄK_B³˜$Væ6”¥'…²5)aV¦a¢Î1-øÚMDÜô¶ PcZ{u㎠^x2>B|Îmåè>Ÿc!‹ÉƒiÄÃTÙëw › Pqrå*˜%'t3§Ž}nV+«ù¸zvŒdåWgÑè½\æñic›^#rÇfí”Ò—ñ>R¦—œou®:ÿXØÓW§u•à"¶üÈÀyÊÂý÷6¼kÜȦ¿ØÂk¹ÉJO"$Ð(G½é¾=»s£Äcc#^¨¦œ6øA”Ƕ©ó8D’uf²f¼Ü½\Tz÷ü™í)G“^tPŽJI©,¨û²ß3á¡ÚºÓ—µ&8ÓÊÆ%‡[VB% (8¤’.SqIy‡éœè©!=À”WÄ/¼°eÞSz/;ôlßøã”-ëYºúâ1(¦:3úJ½¦ÒCîÖ¼™ØidÞuæòÎç€Þ¬¥’þ¡†or­Í ÈõpþWÃ|»U& %ÜB¦îi_kQY¡Ú‰Š2—Ôú|LÂöWr$ 2Í…u%ïD7Y `TFµ—ôYáý L1Ÿ[êÐxÙÝ¡ßÆ\µ–ðå'kG|XÕUµPæêgËùÆ÷j¼j‹åFÎJ²ü-6¸ÐµtŠæÕãi‡ñS{W˹Rû9˜ùò¶ÊÓÔÍBǺ¹ùKÉýå{HœãÑîS") DâU[Fê·uׄu„ZÓîk%Ý…°m`˜ÚhˆãƒTxÄRîÍk=Ñö­ûŒ@Í+Ñ/N ù M¾*(ºêœêãµ#Ÿ(q@Ý®„3…Ûl¾£ï»•ŠZyH”ÖdˆñeƘ)/ Ì»B$², &ÉT[1rÙŸ„\•“"}$#ÇÓÅÀ“&¾“m±;߆y Ø2¢3 2I#j^a Èy\ÜMËMtžº%̹ò‚dÎwâƒ3Y§N8ƒ§/¼S*g ÊA&ôïÉC0,çW†Û7µ®´,5À6âÄá½ïð¾Iú9È[Ej K›ëkLX~È»Ùï-ºY¢~¸¡…³ÁÍo½ÛR²º˜ë'CY«C¼„ß:~W=3UÒÎ&öD‚rÉÚ“Š 0.rçð|¹Ë[ÁÁÓòœHR/F®)EW/ˆÒ`—iŒÌ$Cky"W%Ô‘sè ¤è°÷ôG§¬ÕDòùòJ½÷^OÜà¡Fa á2‹ö ÞQ0qÖœ,¿.«BU¦„ò‰=/U!ƒ6?1öbáGÃ÷¸™ð4xñÒ=ÓœQrq£EâYà’¾k§0®"¡ðÄÙe„î6©•­ÿ±¦µGÌJj7M/e•y/®ª(† êy¶ÜGƒXš~ÿ % `(XæbHöx½<‰jë@}m‡ØHy»Êhaª@Œ]‹A¬˜vìß±ZS/ÉÐY‹Ü=ºTå…1ÌùöÀš›:CO¯sŠƒ+ƒãkBê\Väï:}'1·#å6Œ×£MV.E»ÝžÃe§(qÈðîîÛå—)|û%µj’W}sÖó GU¹ç•Ïzo –¼§¨¶whã„æ­¹ßRû©6ðuw¾–8>'a°ÃFû Ô^CÞâžòDÕÇ: …N³„õŸBÌYÛNJÏoÅHúDõˆñô½G‘­©û8áþꮄ|MÀÑsK‡õyÃ3]JŠ–ÉBõ';c~ââîG V~|; ˜Jû}‚}””¡ÂùÚD-™¶>–ë>3ÏO©;/L¸–” ®L6Â×q*†I¶ÌgE¨êýïâ¯"s¤è…ö»FhÏ< åøRjN_dˆÑcÙêòv}ëœ! »¤QBBŒ¯˜·ù§*ƒÈŸ‘à¯-б¹¸‘FE}ÆJúŸÞ/m Þ¨ï!ñ¦DC]0p4ª¦pNX™ÕûB%V©/_1Š"¹ŽÌ>j!¢üª¿«^»ž…†Vzø*qÀÿÙTsôNjXiíÓ“Ó‰÷§´Ü)ÍÇ ÃïÑŸÛj»âr“8O½ÓÖøf¨Ü!»öBQŠA³ Ó§=l¸åj"6]Ò,šîõÜgVa³Ú²ª26/æ&•4>îþ5/¡²ÃÆÞòéfŒAÙ3Ƕ;;›Á;^TéŸô,v¿ÜÀqt èB!¬¯eZÜ:ö§†\·Ù.«Ž3@~ÎN#«Ü1וÍDÓn‰ÊŸƒÿ²º®eÌ»4!-}ƒZ&hÚ‘Ú¨7Û¨iùm‹¢ÚXA;ç 3;·£ÊO-[ ~£r›ms)…Š?ÁÕTý®ÈêSz]?áÕ"y 5 ïžÂö‡:œ£6z#ƒ#µ9Í«]k Q—(9?˜LŸ×ÄøóøÆu9õÒÀ€X—hL©|Úàõ¹·ÃTEä´|ùRBC”¬&¬nÊ‚ÝO#]QDS®< ~²¿.'Ýàð; § ·©‹x⌺$ô$Ïé•{>z'Þ»¶8m!m0ªÚŠ«Ìgt<ëÇl¬bf1®Qû ñ öŒír‰j<~G^Q™×ålâ²Ý9´ŒEC4yÓ2pŒE`'}üÄÎëÃN|rá¼2X1rƒ3ä‡^@ +Q·ÌÑábTjiñ!÷(û¤õ—•óSÌÂlz.ÂO;†é0u RÁˆ&¿¾œœ_¦>{kå €Ò‡HÎ½Ñ ¸~Î ÂZ ²Ø>7ú‚¤ ”~xiϩֆ÷¨8vlo-Ô¦ˆP¾z¿Áëæ]¡T‡‘¹Ã•ôg!…Öó!$[ø1RxùÎÊð«ªùÚ0Vw´Å[·ó}bƒYIi/N®X"ðšº9¸.Í7gµ/ÉI¡È~÷TZ¡!¸¡_R¡g™ík ¡ÖÐÀP9,ñS"íòÑÍ-’ O¾Šº¼yQ> ¶ àbQ¾âõ`‘AÊ¿y§J%ˈ'eG+»%¿K/%ú‰iœ20cŒŒ” h “*,™c"ˆHÁ‰}…$Æ”Û3:ƒÔ@¼µ*ÓDfCˆ±¥+¥¼´k ®)n/î u>ïɇy‘ ‘)é'{ážv»<(¶*Ï…®p‘¿ÍŠ*`»€u‰DÌ–H„-먞j{‘mñj„ð,éí°¥TD|zDЉ]ÌñJ8l¹7|ÉäBÝQ fúÆ y_à÷—1®!íãf•dR«Ôe‹+c+0$ýŠñç*•¬ûpŒ9+¢¸Z0•'e]Io‰²”æRÏ! M¯d} Ð×ø=ä¦8®¿À5•‡>‘˜'„ç”Õb–x™Îª#·N@sÙÉð›4¶÷ØUR<\9@â6°~fÜ%އµ—¿ÈYÙbÞW[Ÿ{ J—„ĹfùfŒmÏÚ¿·ÆQÑÌúúæ†S¸{œ¬CLy™ Ý0€?Táø¶ï»âA‘¶9ùdaí‰p=ÌŽžQš}÷¶˜(ídz5»Çد ·Ù~j\®6uÇ%ql$î©;G¾€…ë' *ÕPõÓÞŠ©Ø <*.+(Ã_¨.3©½T²{}F\oú´AøúB̆PÃ*RŠA~ý)‹<†Çßw;ó4g Wèwó³¶u~ouTú>S-ÕŸw×èZ¥ªseÎ1ºÌÓ)£^Trð×KwÔeµK?ÛøÂ@KV±RòÐÓÙxåútyש ìãáM/Ф\ÆŠÑÝLZ¼ó qR×UýlÚç–ÆoÕLÍNØÆK ±ðÑä<£ÞJZ(qIƒÚbßâ(YåY_9oäâ?A'¤ II$¢á Cè£`oCL§4*HÎàfÔ²ˆØ'¦Îhwf±«§’Ô·”€Q¥ð·täÀ¿ å©©:¢¯–T-øÕNj\î$õÙ20ÓŽ%ˆvîÙæW¶ì›ÚFggC>ÀLå¡åZÞD£èì·x+ßrñqœáî§tóÊc_Jâ—?éiœ=ûݤÎ|ß~ŽI¨ñ#@z¡5ù¹Ð6ó«½b¼…Kn éf™8¸&ݲ"¥Šuç9WÍ€õó«ç‚|b#I½ÊýÙâ\uhŠB~ʲ)Î}pÞxLž¶MïIÅqÀŽdÑ~ßôÍ^o‡Á×ϲ„A…<ö`}±À×L(]_¶ —¯T/$ïjêã„X•e¹Ÿ|½ø¼¹´Ãã"^¦?4öÏå«öxR‚;hLÈ+¸6úˆ'Ú5`ÌZá’Ö„ñg†#ƒ™­§Œ£ö«$ÚžFµuâÆX¡Ýmæ‘ådžæy+(Õ>L¿6!ŠB è> „³0´¬b4pQ!¹ Þ…ꊳņ¦šéž¡mMÁ!dÊbT-äöv¤V’:úƒÔû?£è…kÉ—aïOuMÄIÍ죬Ë㘆GgޤNáž§QçÙˆmDRTÔ&Y*}¥uO‹cç;‡.-ŒÌŒÛÎp[t"Ñ=e˜•W=8« Š` fŽ~SN¶·ô¸ôêÈyÏAçrÅÀžú‘Ò5oI?¢‹Ûxö"]î%è’ʳ!— t³úÖl[|¼\ªI¢ûf0 ¯¯ŒÔùŽß!ù"¢‡¾Šfªm8ÆÎ„uVñMHÙPߥÚuuXSÌ»¦}rE„'ib±úTfuø¥¥ÛD#ÛÈ>#¬—>½õþI¬ ”Í«½W-{ôô€7È r–Û§£27´HkÞ†'Gg!ÒHÖÂLi&M CˆÝÊ—p>ÓX8ã ÿìiÜ«=­hl¬”kŠþ|-l`¤‹î áÕŸWå¤À…™£šß0µÆdÚ ò«uéS¥#W|»¡’ñ¼®?}Zþ\Ò÷#sma¹^ÞÐ6!‰ÁNÆ u? 9Tù |4å®3dþè¼…5ÀF”k"R›õ£ë¦ ô—hpú„e†7ŸÿÌlq7 Ê´š¢³Â&\…eGL4÷G:›0ÿI1æXffc‚†øªý3 ¢´Ÿc©* }®|TÃÁ yƒ¾rÅë%N£ŽsA¡ÌœE9,¡áÉ=•sz/.8sª¥Ÿfz$'*h˜„öé(ŠS´ cÞ¬¦J‘¯"a9Õ6L4‡¹1Pâï±­ßÚÈþ˜þfæY²qÙL)ï’Éjqùlݼ=iµlƒU"œ_}–1T¢þvgõ ¦¢QfyÙ1f{x%Q[ï‡Z”s*ÖL>[Zô}oÛÁCÐG|UÄú…rÒÝÏH×_ïƒúSÍ].$ãºÈøD8éïj03Œ<<|sq0ÈKã@=§ã²“¯{'ÛŸ('?ù¥yÓÆqµïÅÖ…6GotîQSåI!¿}[æbxX+ȆM¨oXmçMp2ªÛA÷bZ‚ZH ™®(cÔiÙCO¹¢¶Ÿ³›Û´ä9Æí˜ü‚Vôcæîý&‘"ãË×ó"“õ Þ­‰œ(MþÐí¨ÎRü½§Ÿ¼3Ý|ï~÷6©ú€QÏ%‘‘o°kÁ{+Õ»?9À&ó˜ãêM(-sú`‰#x¸Ò Rí×îDÂV¾ONðæ[D–Ör#çÎ ¼Í.Ž×Ÿüy =·Û ÂM2`L=ãÈÀƒÇ]wçž9 ÆqßÏÈ]ï…‰dzš——¨ˆ´Ï2ïSåû@:zÆ ¦JcKœ–9¥K!vÊY‡#%¾®Ö×{k!GJÎe‹«Ýâ+Ô9m[@±”i“V+Þ™¶b>«w ’n¥×®f±åí;:+ÎÅ)›3xßy*Ý ðøEàõ«Iè”ËTc8@ïþ¬ ºÏñw/ Ô›äím|¸zXÖçÁü(ä´bÊ Õ×sîßIùÃeΑ©¬!ÿ‡NºS=JÖJ÷½Ñçv§/øßÒM$ü<û8ç{mL+ïcè430Ú@ÜÀ>½Aዎ# CBÎVk£ ’K)ÝQh%rz—\Þ!ÈuиÔÜúI¸¡7ºý°l¶#ï5fç»ïå±ÊZH:o^‡> tTQ.Ó £@D‹8ð•öNÜŠ=ÛŠvÄ/K6ÈtUÖàk{]Ð^Ñsí4>žò'S‹À8žBÅÞ÷Ï[¢›C¤t®Æ\èݱBD­'¨²ê>‘8$’Îêó ˆ¿ þ:ÿúLƒusÀa$”~z@ó@øÞN0¾7£=Wj,ÃþÌàëO+è(¹Ôç i¥|ΡÜ©GãÓ/ÏlÌVG©ì"°—s­SÏŒä2¶…ão©M ëâ€/ÑR"IЈ>†±L˜×–+rk¤šÄz™¸VçUäG»È]:Þš[aoÑ;Usññïc//ŸÇ)ek¢¬f1w8:B¢›VV¥MÈÎBüC8ÑÙÝKz¤-oiÈå²yƒA«„1‰ßZªX³vMî/½ý®wÞS³šap0Âés¿Q²æ(îáÕäD£§2ËIMÖy4^±½S«g•!ðLgúˆf6ñ)7! ‰n}Æ[ÙVŒ5WÿA–QF|¿¤‘;çnÛ{uà~¿óSsÓ*ʈ´µ“5oÔfãŸ5¦,…¨w’½O7ì¬8BYèèYƒØK0¹Ðu™x]I¼.È]Vb»ŸBÊÁÌFiFVœ¯ž+Ôë(æîÎXÖá`3jr»õmÄ*•k!ê†õññPØèž½MiÞ¶WkPš¸L‹ï‘ÖÑÔÇu2ñè"í•o|m?⇙wÛiÖ’£`bö’â À°ëD§Eæî®ƒ‰ÆF”•4|ÉøÍnñ)ª‡ýŸ?k,áÔo2Ÿ”{Y#§Ãg¤_‰ùh(œ“¡„“ß®Š+)ëÐÐã*“/êyÉç’Û3EФ9ÕÅGôÿ Ýè }AñHM@ûŒœvþráfUG͘z‚QpùMw¸ÚC@†¢>PcV43Q³hZy>’cÑs“¤^µŽ9T9ÝÌüÌòÖ\9iâ ßüôV»¢(¥Ù­‘üø ³YX€Û…¨Ë‡_#7d¨9øÃ±4£Œ<=âNëçè$7Ëá£oÔot ¸²:*D ù¦‚'äÓãLxCkýM±)RÞeZÓ!%•<M½{—¨idµ0ÀcnZòTåï²'†Q[ÒY¿E´­Y^?Œ#Xx¯p«Ñ÷ìû@^ yKBŸû¸×ç8”·Së«I€EŒ°zl㪓‡º^zóU^ÐÞ·‰ËÑy©±.†mõ˜ÿ«_ÙNÞ"9lÁÊh]ƒÁE€ÅÜÝuäMÖÒö•bp•÷Y³Æ(NAÑK¤¹™Þ…‹ùùKîR&§â*äÆ7Ä4³"[³†S+ªD,©CÂÈm”õ¢²qhkש‡×Ò2\ùÒrd†Ô*“>î2ƒ”rL¯" /ãtç¢öK•v¥ñ~j$IDÊØ0Ã¶Ûæ?ù’$ìÃÙ>vؤ=›¶5æQPÔï@z¢Vô^eg³S ²ûž†ôŒv2Û¬†#9+K޲Zštõz›ÐÛï“uûÕµOñj°»ðKã5Óí£Žà¾.a EÝ ð ¿Ñ›+el¡žWå“zñ²+0}/î  =~mVª}×[¶”¥¶©ôšjtŒÇÈ‚Š–>¨0Ž Ózžó4Ð%ù½¾:'ú¼õ±¢Û¯Û [5%ôa‡ðÇ|Ä‘´X¾ä1r@”ˆsºþ®ÅÖC± ˆ3ñw Dmn‚Rï§ÞbUaŠñ%Ê;ÖŽø¤€áxJÇé‹Vþüã^oÆî N+JÈõS Œâ1¬íÊ º¨Ž PšZô¥ÓejWMm+ñ1‡>I_±x ç³Õ÷|½ %X7ýsHW/{0Ôªa'=¬Uî5@‹5ê) zåÌ¥ÖÉ5K´jžE¶àLˆÊ^·ÝÐ7Y.î¹Âc+Ž.UÓ Ò „P¨ÿ¬÷c¢H˜&Qâµ²PòÅ÷ž¢Hs§‚åh,öˆÄŒ> ku`ÓèŠm—±Åw¼_á¤O/¬ª¶o°"pÝÝ[I,ß]fWC¼°¡psØFãx÷ÓÔÕgÙn^y:µ?ÈÆËn¯O·m, ˆ‚žÐ[#áý™ñ±¨A„‡èý(eý=³3Ç3}kü#Œ®ç¸wÅ­äˆÏ¸dŠŸõ©“²£kr$@-³2ÁRÆ2bR‰SŒÏĨÏÅÚkq¯3eà#9ªûðÃIÆ$¿²)»ˆN9cª[Ö$ÒxA˽Rsé·XdëtsV:qÈ1¾Ï<øv[$sµxÖ”š;Y¥Í°Ÿüèß3†Z?;èÖ¸}­Ë´£^cš·¦¦ê“¥»¹?Ç(s(ÞŽ49P’‰5(ÿZMEå])ºÙí+L@éwàIà›pn}â§-gëíiëßHÞ-´1ö®eûþɰIf-9r¡“K-™A/}R#ø1[Lÿ4,c´W·‘¹#&RBQ ­ø À°Î¡³¡Ì Y1†âî©ÉŽÛ2·”D‚ºèËå*.ýlë¸:î/Ô‚Ê>s }Cx iºH@Õ¡ p¦}„çc~мß×M©ïŒ’½ÛƹûJŸ.~=žK”7ZêiÛaR(_$ @Ná¿T¾²#†áÉóžqb“ÉåØè|¡Z=jˆoQ!Ívh}álƒ-à!‹84úh¬žŠþªr‚–Ûk ‘Ÿh BÌÓtÕIOª¾¨CL¢½â£ì¼Þ‹œœ”¨î/"yµ]yBŸ¿nÎzÆé·œª©ÃÌqÝö˜=É£ñÇ;ªvšå¡™7ˆW_‹,åReM®CQ¬ÓlÛWÑ™ËsS]Í×ÈV¦x©%Ã0òÖ^R|•“–¬XBMŠ–ÙÆÅKÒ^íô¸­ {æÝ±Ï(p, !âš¿k0Þ?†#@ù|M^Mñmà®\QÂûÝi¾èÙ`'ÈPˆV Ò+” Ž¥dtWOœ[~ÓSiBtAЛ!ê˜ë·CêöÛ¨ÆE‡h'‘ ½Ãn¿tÊïTí–üŽ7ú‘«JÇÑ1٣峇Œœç´B—@ÄÚz#ÿN÷˜ûæ ñ ªªJm-ÚÕ> ü_Îßc_l~½û@,Šë±ð~33ŒjN¯"|:<óVé*ÙiîçiÏ iÆÊ4¨/=l´øÈi¨½þn^_«]càpP¯Ó¬Ò®›B„ò›LžùkôFéxé;£oiɇCdú–QŽ#É<™¦H$§EOŠïÐ9¡85•ƒˆ/ZË5ƒ·ÑÜÆkUhuçï*+2yÃò‚Ö·¾Ÿð‹Fµ‹œÆ£% ʹ‘ Ž«ÓÉRXâfȺ¹,9ù<ñúÖ"²ø Égà2ël~X ¹$sùQöq¢l! ³¤Wzöë4à tŠ”bZ !IPî²óýî´•!Æ#MW› —7ëÑè:-3}–¡kÅÝ/¢ÜÁ›ß”Ÿðg€ñt0¢­·& “’ùY©‚îýÌ“ ÞÅïä[¶ÇÜé"Ã_ëòj…rµNÄ‹5ég=È8Ò\/W@aœwQ>¢Ð‚…âÏd,l™<SGÍ­sH‰QÛBji#Ô—{PÒ©6pãl<1†V‚„Ђ²ž_`~â»r:cðYâ¨}J5,kúNúiÂ*:áÝݨü¡üûVÍÏ Æ'Õ~°MÊk¢ÀIše®R÷ÄP 5r­ÐTQb æW Y Ù|϶zðÔ+‹˜m˜MEßÜïuZ^¼ , ?EX›x×p=eT¤ ØöŠ}Ǿ¼KzˆpbãI=ÅvIž) ”ÙcÞõ؉¿1R¡¿kªE 5gþºNÿbNóû’îŸ\ï°i÷ëZwÛ8uÁ™‹˜’¯¥¸d 0æH!Ü»ú.;Ø™ò «½È­'ÞNs¯µ²_^ˆLN¿É77'&Ƶ‚èˆk½ÂÂQçPª,Þžl‘@ëø¦ÛBNmœäyx™fªQ¡{9œ!éÔ°Zºj…ж‹S£. æá¶‰˜ÈùviÌÂë[}ä¿*×éÿ¨üy.úÁ b—6XÃ3;à„ÁaE¹JNfÀÄ:gÚr[h×Ö]—n‰åó ¡JCÀÆ¥ÑOq þ‰rêC!€©ÿ^êT™_në®ýëT%*5 BÎïŠpþòå û&Ê=,ÖÙ–°è­[y1rL™i}™B—\ NøPm„5—®¶;bÍ}L ßOØK9$’#¤ Mß ¥g.‰ ¸qÿ6v_IgG²%Ô»Æùˆ¦;òMd¶«ù¡§ƒ}z¼ …¼;L‚Ï1Ôß" yÜw䥳ôûœÐê& UTž|~'{Ör•¯ÿe§±j5ìl ê>¶x×2À(EþÍ•¦úQÍüg}ë­ëµ—_o‰–Ü´ƒñªBÙdÂq&ûQõPÖ<‚E[õœÇ•äßܪVu¼ü°=zVW^8ÑNeÛ\LŒÚ2â쳒ÃûüAcÔÿ‰üÆÂ¤K¤62g’ù§OLî\5ûÝ—+~UÀ!ׯíEÁíì w§[‚ •R}ŸÌ}Ž\•Y Ü/} ÛUÓØ»ÛVYÞ2#jr3š-$Û­÷’yÙe<]’aüL•Ö- j°¥ì-µnš‹XÜŠwH9ÑJ¯…ÎN¬½ÜÄ<§GQ|p¦ôëÝŽÖÙ£¬‰¢H”ÆG­tCÚŸÈ3á;ï.ß5ù9—åÚüºêyLœÎöÙ1ƒã¸ÞíŠÈ‘=2jËN<·.~ÍÓu¹ì …RöAUóñ©Š¢"9%) †çdžŒû®V†çzî˜ÓñÆ ¹A˜y’fVÙDi)ðëy×tü‚QœKåUš'|`)VNp•-FhF~“ì¨úö«¤¸ͬWd®#ßò€ß«‡¸Þ“?*>̲͆AXN“Î1oHC–õ:LUƒäÖ³3<lSÉT!ªÛ¾Ž%IOzh×r†fqßÅ 5«œÓY¢æû.|6uψé³TZ¹–=íErsè;±ðÈâï“å¢Ê¼S„Jé¾WCê^¤\<Ã>\´ôß\"òb¦8&³ü)ã©ÊFV]k =¢à·qÜ#´·8§M~§`D´mš6z Üeva× „Ü—` ¾¹J~iED΃”áq¦gϸ’ ýZ ’‹ònÜ1|CöëÒíK6$ RrÜãZÎ@ÏÊ/DÜ-0nª)úˆ… ®^‚Ÿ´))¶løãST”9ˆÊD°žw¼vÆ>þ0Ó¸~ÂVÍbƒýìÕé› ôÑÜI&Œý&¤MÉdegkëÒjÃLÍk‘ÈÄéúT^ôC©LûL’|‚Jì>NRýxwßÕsÓÍ÷zø7÷þ°~ÛÊÁþB‘dŠFm}N”!ê·5þzGµaH30f‚ªZÔ’AQñ§¶³R÷‘ð|™2#8Öåí&KGŸpÉeHµ¬SVUò,Ê^ ÃÀ–òB(’ôÞ‹ÂFòé| ˆË1ýfOò’UdSuô‰ú(:²¼D‰ó,£þrÑnÀ³ý¸ û”xê£ Ëe‰À`ÂÕ~pËÒÖd<ý8æ¨Q?¼·ÔSëì¥gvql” Œ!TõAãI¨ÍVR£Ö9ðûû™ªæ_.RkóC{¿¶-½àÉ©œ^ëïöÈ9ĨyýšgÓ¥}©nB‚‹­5î­iF ꢹ‡¡)1ÜÔ«!EÅÑ0w7Ý] 5²üÜãÛys\#9^ ¸³ŠhQ 9EüD„1]Íh•z³‚ô”òs:³ööŽÛ;RÇ-ÒÅÝÛ66f©hõr…±*ÃmpÞóºW}»¾É·ëKæÛ¥ók‘ž6퓪èNˆ iøÜÅ;bÛ~B²S £ªxÈ üaê|”ô9j†ÜÛO•ѺV¬q¤±v×û\çI‚…«ÚjmŸ ¶\×/$t~ÂvOÜö²é÷}HS·Þ´ž-Ëd=’lŽQ_|dtðÉØôôóôfUÄy:ižÍˆÇµýˆö?VôÜ9ëkÔ߆ÐYlÞwz"G1Ä{~ó¨$„VƒˆáÝ4®¬±Nÿî;ÔHn°óf‰+ïB±ˆ^OKÊÊS‡†Í´IèÂz&{ÖÄu\}ÀÎUã@ý¢¶‹;‹Că!Ë•uC>¼@ƒ"g¹zNûâ”Æ×k¿pÆÌémóüÎR<Ë—†ÁôÕÛE‘p5j®…§j5s»=ªÇôŸ]eÝŒñ¿"ºgH†Ï0*,ó_Úîò/\Äh÷«>ì3«Pv[§y&\ûÕøIT-uïoÍwºÖ`ý4©xô¦~3KðÝ-wùóÐZ=ÕÒ{ž°ÝùÚb峤{GvîŸËÇŇ”XóÚë.·/!!¹cáëpŠªÇ|Ì¡™îQ9K…ž¡‡¿©‡}ºo¡«¦Þ|W@@ƒÈaöuä€WçX:׉å#[Àb§Ñý÷ôvdÈEê(A39·ëH¾Ñµ¦J’ãJSô¦k×ݸ@«·h›”KmîE=R¥%1£‘¡+sW™øhá>ut£ª”ûó]§q üJê×WLiø³ºvÄ+Ùc˜ý„^7ïr}m-Ɯ͖±ó4^á_ò¨Ò˜Pj°lpn&¸8_ÞR‹¡Cª3$It^QŧUX@¼œa”í›™ °Âù=½ô,ÁôÄËoZ~¬Aþ¼Ùf’z/_áræ0:&ð´p ¬ø1Bµ VA;¾‘€åùË&Ú£XØO©n?2f›Hò ;ª7Pßcl¤ÃÉöûj.Äå諨tÍZاµl¨ù&xçgT+Ôý׊EµÐŽU'. ÖY^&­_†ž›k庤ÿOœcø¹’qŸR¹O¯ŒD•öüÆ×QÄÚXS\ª‰ž5?•¶…eÔ‘tä§5ݽS’ø{±äég@‹ø„Ʒ åIš¶ tÕG·„> 'sYAúÓd¼‹ðEÕQþöm½M€A†%Ø)2æ¹¥üÀš œÒõ§)îصgÓ`$óÐdøÍ~“#ÜÞ]^XÞâ¼LÍ;ë´Ì’ÊIHl¶|ÃR7ó;2c‚"l’¹S}$~VÏÍÓSF2dËú©b71a¥ºì‰^þÁÄŠ,º-Þñ&ªˆ˜ä ÜߦŠË„Ëø¬L©èVyKí³$”ØHYN=u5«š8Sù,j¤öZÓ(dŸG³”}ïăóÒ¤Áñqy—i“̤=Їk´™¶áb îS Й?ÆT Y_ ÇôaoÉQ¿£õØûvñB&fß«üÝY{í Gâ`8}Í IiYy9|íÿa\nâ­6é\ ±[#ýóÞÈ@à ¯¹2R„}kŽa*8‡T÷³>ÚôwõL¿šK­ À|ˆ"f=ß›ª¾ï}ÒDR#ã#2¨l;-°nsk(ù_R½ÐBÖ¿ v›sX¼_½"¼[?*7-ºˆzȈ;uÐe2ƒC·zÂTÐ…r1iÅ-*wãÐÈä±÷7>ÔDzY…,=?üê~W¹'@xÌ 5Ö/¢B³jÃsè+?K¿=¢´ð£Q0´µÌ?™HöÙõÈÍj¡#9ÒŠ /èk!ºà—¥¿:ÇuÎóÇ ñ9Í¢G©º©S€BÞÀŸd;GrìúÀãÁ–å_ªqž‡æP)ƒ½žWY— …ŸÝ* èQÕ=Y f&Íær6Á¶Ü@pÊ3öà³r‚”'QË» Ü uò±ÏÇS¯lÏïÇ“¹`c™½‹K£ÕÖÊžÑn+œ¨¥Ð±p½tY÷-=ñáöf¯n3Þ’…m쮵c–脃1´u¶Ù͘†¢[yÂ#+ÍLjdK/ÍáôïŽ(e( ¯6Éø r XáŠA»_3²’ßòÅ´é' ÔO•Y<ª7ÿ«ó§¢\³Ï­ '”“”µmo5 žB(eÍb@çLD ÏAÒ…6Õŵ%ö¶Šel—öæ­EA‘*Ò’ìQ¢~—ï¹KæÕˆU:ÿ8UBiâ¹oÖõqd"n êlô)$ɓĶ{ÏÜJnƒ“-Ó1\Š ¡wâ•·D¹0PuSxïÉè[9¾–E1æ‚KŽº¾k4mÉËoÍO®º÷qÖˆÅ×j,t¼9¼k\æä©’¾9àdñ—Ä;ñÙC¥¥[ø4Á$ÈNýê@Áì)ªJ: ÇiË”ÑiìW_vF¼9RÌ ð嘀¾ %‘—PN:È({?6œ î:n{Æö ­nË\PCu•3ê@O1Ar¾³ë˺öÆw’VÝ&:gß•€­¥BpŠx>`Kà²UN\1´ý3é›UÒ”ªî>Š6Mײַ*³\‘ü#‚ÂzFЬ³ç­]vüu™’š¤ÚÔ©Ñ“ûÇê—QÑ@+§àg Âi"Õ¸ªÑ™ ãVka,¯\Ëêe10+;¿—q§Ÿ ¶è¸ŽµNø¥Fk=û.†xµ¹¹õN¹c@«£-Tx¡«[6M”*©ZøÄ#]’#“cêÊèX¶Zr"ÚÄɉî=¶fm$îT*gñØa®sGÛT}x­Ü-d/†÷un‚º¹Æƒaí!^öá‹h~g%‰6ƒ-¼›—dþn¹À ¡;¨„û6"À5Á²lá°Ùã úuRŽb>EÝÍùàÉÞòŸ\G»²ÆëˆÞÈŽý1#4f;‰Õòå"ùlæìT¬ÁTÿ¶7–9íbUšù4¼Ãü]KßÄm³M°ßH¸Y+5Š>b T¬ è‘…÷ Ù2¿ÛZðB"Îñh–å!DýÂбýq…½—š™qe™~=;‘Ò'g¾YbË¿90GšYpÍ*ý:–³N{›Éü.t£JO´{Ï—ù`8MÿE ä²Pã^É0CýÛNëÀàí³ªa±†dB!Þ÷ävˆ)ÜY ìqÃ0Œ¢lR±1'„ Á¼›Îmds/…@¿{N0ö gÑÞ¡l‡è‡¯s/¾UvØýz`‚¢& ¡¨®§_ú›Ä›ƒÇU¹9QR¢=`QUÈ‘˜Œ¥ú=b§i;UO:?îa²¨À·ÆÏÖ)‰5AA!ugÍ×4l´ØP|}Cœð%÷aóæ š¢¿À¯ºÊÀ}ëÅ󃋲É~¼§W­•Ådë‚®ªÛ_¨¸ÿÝÓ°f =§4™´îÿs!n2݉¿;{WÎE#<¾ÊKi$u ‘ £2f°œ§ú¬é ±ØfÚâØ«½¤®*†š½«gôâäïÉœ:”æ#3¶ƒ4èsN¬¿/ê0t­UrïѯBüš‡ÜyÀ9ð{FõFð"áŠå,_Æbô€5sÄ醱‹2là‹±Ã/|Ù 2¢¥/» endstream endobj 690 0 obj << /Length1 1492 /Length2 6615 /Length3 0 /Length 7621 /Filter /FlateDecode >> stream xÚxT“[Ó.Ò¤W©¤÷Þ{GzoRB $¡ƒTi‚ôÞéE@Št¤KoÒD@ŠÒ•òGç|ÿùî]ëÞ•µ’w?óÌì™=Ïìd…ÙÀ˜O Œp€¨#à(>!~Ai€Š®±¥ @PP„_PP˜€ÍŠ‚AþÆ ØÌ H(.ý¿* ©Qh¢.xà ‰„Ä¥…$¤‚‚RÒU  Ðå<@À!H6„»¯ÔÉ…ÞçïG'ˆ $%%ÁûÛ äñ€‚€p€.å qCïÂÆ‚òýWNYgÊ]Z@ÀÛÛ›è†äGx8Ésñ¼¡(g€ ñð‚€¿JèÝ Jã'`˜8C‘ŒŽ(o €`PŽD»xÂÁzw€±–@ßÿ‹¬óðçpBüBÿ„ûãý+þÛ!ÜÜp_(Ü à…Aúê:ü(/ÿ"aHÚè„€hÂïÔu%C]áŸú ¨; É„Â~Õ(ð+ ú˜Õà`„›ŽBüÊOê¡ÏÝWàOs]áo¸ÿß+G(ìø« °§»€)úÈ¢¥ú‡ƒ†þƒ9AP1A)qq1!äârøµ‰¯;ä·ñ7Œ®!ÐßápD— „:BÐþH €òð„úÿoÿWBB0„8@œ p‚ÿDGÃÇ¿Öèþ{@}Ö‚hù ½þy²A+ Œ€Ã|ÿCÿÝbÕ¦VLxþ”üQYáðç–ðI‰ „„„Äb€ÀÇ1Bÿäñ¿|µàŽ€Ô_é¢Ïéþh€óÏ€pþKV.Àù¡?¡ß„þ¿åþÛåÿ¦ò_QþŸBÿïŒÔ=a°ßvοÿ‡è…ùþa •ë‰BO.= ðÿ¦šCþ]]êéößV-= Jp'´¢ù„DùEÿ¡Hu¨lEœÿRÍ_¸é¯yƒAáúë†A{ þ— =d Wô-‚DKó· ‚ž¡ï«!À¿†MXLôðú {^‰ü…ÐS †øü3@€Ž@¡]莂_8xAÄõËöùÿÕÆ¿qthæ¯ùû“ÀN¿zøkÄÿ¡Jþ£7þFpƒÂ=‘¿•òôð@Çý­9t¯_"ˆD°8‡É„»¼ o¿¨U¢÷æû4†»ºÖ`Ù%†bŸîï¬s;Kcú‘²=¸úîHºÁByÄÔ\=÷áŸÏÃ4Í|†Zÿ†ò_ÁÐ÷“n'Aç4!‘½Aö%Ñ‘ÄÞÛš#Ù|îò‰DÈÖËÏEWÈ-+©=€ äŒ”9§”×¹‡ùÔ’™u 5lùô¹‡u†§‰–éÄæSè³såöXÚï¾ÖÏ2‡——ßæ ô§‹j÷ÖˆWGPÐRú=`ÎI¤¥JÌyð‰Á®,v¦RžšÀB[ìÁ¾‚e/±òs¦p -qPijÑIO%äŽþãÑ&Ïz„Øœ\^ÏÊ1ƒÝf¶Éw¢»ÍIÑμµé¬Êl5`Œ³áŒ/5"°ü^lj&n}çÒî ¢´ìÜRó}SìíÇa"¶Ÿ'ï^ØÇe% Û¤ÊÁ$?¾P7€1¹8š¿¿”MPбQhaé1»¬yŽÜçåÿö¢Ziq/~ºÝü¶}¸'òÁzÈH5’`Ñ‘µ×·›øZKìì™·š8ªN{ÑeÇŸ?d”Ÿ‡mÐÖ©!c¥(µ0Éo&BR`B6o¢³…‘¡‡o)ýD)x†”˜Âõ°œñåû*ñÑçr¡Ír©’Á‚—&n©îÇ“ÖmÜ1ìùŽc›ààq$ Œg«ßiål_ªÇñ%šmÚK¸ÜV¶œ9’˜[ÉW¾6 ²£({ü0ß1îç³o[§_ò-”꣬`Ñ)]ÓAv/F;¬ž1d¼™ÜïíàHÝòÑlüq†}Dá0¬!=È^ «lŠkUY Š6µê´Ÿ6ãyôŒ:6~'²>—Ý q·ÝnÔûâþ³â‘²*€œ„cቔÈFµn0»”?6a”Y*Ñ7Ir"àdc¨ðœÃÙ±‰`¦ ýžºpÏšõis Yý ÷£³^†eŠÖ:ƒ~ s¬âPuÉŸ^"> Xè‹¿õUBtÕ>ÞÛ²1D¯ªÛ‚e)ºZzÑLVh?;Zha v¤s%¼a'Ür§º¥¡™êO Dã3MK9´ËÑÕîIІ º8ûa®wÑ(K-å¸ä ³%~óô'{ÊFìžú õà 2L#g¡—Lêy_Kª'y"aD*6€’â¥N¼p/ÇYDãÄÝݽƒ{õç0÷JËaµmQÕg› ·ˆMÒwÐÒpí ý¡égÌZwb_ͼú¹u÷›ÙµjÆ\&³kôkÆ §"çý ÷h)ÅÌÓç9þß¾E>©—Á°R;O$}°«èoM£’4Í•Êzª×eê™ß›­L^©´S†™!êÓ—¼Zóö“zêSîɤäÔÉ|ç Ø(­ì|ÈRù½)5‹fÊèÇËH%u¡;ÇPÕ™€–xFÑŽ7oz$‡¤Ã•œ:ÎÁ¶¥¤ua`‹YQŸé½˜EQÖÒôså‹„ùüL`Š Ù765Ъwô×/CÒ=!<³¬i/8Ø÷ꎟ°.hù¹ÀԬæ_ ¸—©‘L.»bÀñìÁ‹‘¥ ¯ÄYÞÖgÓR]…Óú=…µdwî¹p /ây¹%!dà†I²b‘^’˜í‘Hj´É§zIÇÖ¯aIdX‹>WxQ• ÄÌçi6â'øá„E?’Œü^Pœœ8îøGNÚ’©:8•Ý,ôÏÌ\WNÙ üñf`1)ìÈ¡r⻲^k7ør楢 ˆI2¹N'ñˆ#Œöó-í¨KQW}9šƒëJÅ9S@RÙï²Bíé ÍgWÌw™ÜÄx°¬ß3ãîŸÿx=¾°=óÑj;Ïúš=öÓɱ ™$,5~ó5²…=<¼[ a}Ý–+‹ÙäS_0ès­êpq²~:¤Ã˜¥@&~;õÒÓÃ8š@Iì8S\YŽl©Ð ¾”i²W_7ÑÎòd꼜ÂFwŒ/(Ð?jj`H1&ç)C”øÖU98îZÚh˜ù8ë_A¤WŠñÅ™ ù½bç(€Ñ2¿¦WDºù©Êìýæø`X°<Ëæt[a–—óàØUKÎp&O¼Ñòê±+Å5Ú­—J0Øb0ºŸãw'П·xˆŸ·wË×[¥mw lz-0I¹ú’=£nÔLòu—¡Sšß$»ÐåLJ…ÛT-g;øi¨(°°…@–‹½™·ëÒÆÄãFŠ ¶Y?¿n‘¾éxÇ5ÔñLíþÂv1˜£ª÷S=_Ká[a ú~Û×g‘‹]ô± hÝFžÔX]ÒõêKN¼9]Œœ4N (1«b²u4‹ßµj8=iÊãÊøvûQÏüÈÒ7µ¬­8?û…îhì•=ŸbýmAr3Ü+zŽÓœ‰ºÉ³r”qÙP Xa¹Î‚ ›‚3Ì2ìIß¹«žy£å›õÙmåÀú´×ú¥ÞÛ«Fœïg'l…ØH1•.¯öÝÂÛ0bÇIv`naˆ™·û墴†ŸZ©ªÃ |s)’ãß{Ý#ÿÂó8¡(Ÿ©/E­ôìÝ«E¬$ݽyê3Fê=Ô¬KMHVÄ¢JÃŽ—Þ዆x aÉ>Ñáíü<›F¡%š„7±)<[µœ›-f³_Wc4ʪ`¡ÚŽôæ”~+ùvr?5Xü9*DG",t%œ]w{Së"¾Ðú |¨oZô›Öéµ h‰V½Å4 ÊGò}MPíÀ½)†ÎÊøGó‰ÒàZd^TýÛ5Ú…f¥Í”–n\óªÀÃ$Ä9®[ÈøÄ š»á9R_âXÒ‰áíú>ò.Ó…¦—^Y<”%n²÷K(« ãÂuHCe¯™´‹œ<ÚïdKr ? «X|ãâk’ÒÛhæ6ø9}öQ験Ê0mâIâ—…7­Y·¤üpÚ>™D©¬ ô¡·&ögDà”"¹Ò¥b<&fµž \jL´Ï(|\ ZùñyqÇ.x„jç^}%ìÕʆ©ê|1´Â 9o2àƒ#NÛ;8d'-;Vq!|ûBıù!±Üjb÷ÓÁ‘_‹ÏÒümT*äY¯±Ôñýœ˜'£¸_ Z1fp\bÞñéý 9+«FKÆ÷k{:-ǹçp ÙR‡òÏÅDåŽ÷ìÕê˜E?>}{syáFD ŽÙ°Qî󳔨'´•Û½4| e¢ÛtsÖÿŒiøömd¦˜/¿EX<ÃôØK®¯Ÿ M 0JÎÀBÚù…®••£1.ËA•…xôpA?š —Œk÷E¿Žß–›î°ù…ÏÜ}ðªeÁ¢ˆ®°G¥å+Ø×ù‚{æ~t¿uòý"Æ0ÕûjïB“ÜÝkÔ¹+˾խdx}ñПÃ%àwŠÈ¦±¥Â¸kè÷-¤¿unɶgIs­è0:bŽÅQõJ%±“\dxý©Ú#ñ¹&ß+%9õÖjsï†Xh÷`.™5qø-ZŒ*1¾ç‡žMÜ©Ÿ5iO!ëÍLXÒ_%~°÷åxÇVZve]r$”ÍýÐ,ÜÃü•rÅ4òG@6FÚ}Üïbfá{ŽS¦1» BÏ/§änb³Ð¿gzÄô zq·‘YR_K™žn~Jæ&`äqrW æ­åí– p©#S •Èþ6K˜ô%­¦1}4ˆG@½Œž~¨eD°0 e”³ÖƒÉÏÂà !t¦£í"6~Ùœss?>|‰hP¬­[O ¹±;ÚUš)]7¤ÚéRf2;}Ìz$¥VØJà"GðÔFP¹ëïScG"&r^¬~è4ÓU/š«œ¹½™½¯TVI¾ÖñèÕÄÑɽÕ7+S¢·c˜"‹&…^8Þ}‡_uÂ;gÜŸ/~ºÑŽÃðÜ£¨Ô:q¹ÛËþ#a{cÝÏ8šÓ® Ÿs Ö›|úðâÝ þÀ‚–ñ;£)¯Ëh>Ltªe¦€jë²CåîVw;2ÓܺÇ=ÒQÁ+°åÛm$ÙÊ©¸¸ø4ËÔܡثǮ喞·üBÞ‚ù­[*äë°â8ŒšØü†eÚLEsû"Wò+Íl"ެïEŽž'0åönqYG?ÉÀL”^Cq_Løi³«’–M$îIP“qáçË´Ex#]h.nfü,{·í3ÆÁDŽK"ÉúÝKö×C²«ãýEéçLStµä7»‹<) âêà&قǾnûHÙLÓ)wf»NÌRÃö÷ß69Jô²5¾¬ádÈcö—½q±i ‡ŸˆXÈ?(ðSXT=–Ó»xr«ÃNÄçÿˆÆÁ’SžeQ’{ûiçИk™¯Èb=æã ø$Zs£‡(^Õ{½å¦(˜°ƒ>jüÜ_-‰j¸¸÷©wÈ"íZ&?+•ÙÚ–3*çÌÏ•ÕÕ•ÕFt¯† ûäØ\𣆴MÛ_³ÔdtJn\oÓôoö4²µœÊ¢%æ%xΪ^ö.MSuñØŒNÁýø¶ïTz ¥Á ›º\[hÏà€r$îÙâY†ö‚sýc½ëfl­a»Ý¨`¼#j¿•iGü-|Ù™´”ØË[ö¢èoe5¡¹íWkˬöFø¸$¡·ß=, &[×vu,ž <Hˆä‘î6{­ívi/™ûçèάˆ(ÌÇÇ•ëÛ|—6§•¡$óº—ð„4Çb]'\ù^~t©E<¿Áš–ŒB>³IQ€ÿÎk$õ>Ö™©ÍæË°$¹)‹˜ë;WIb ob‚=‚uQò¾r5Ü!*Xm‰:PýôJu0ަ‹þ’ÔË“[OÏò‡tB0÷ ’Ù%P(Ì3O ?m'Ñ÷'SqL2¯=¹Xvêe~|0NMëñê9ºü¦ò¸^¡ëAX›@’:‹¸)­ ü.æ)ÏmÙpAZ–á™Ê)¹½¯È•ƒ0Ä›µù æQïKqýeþÀ§yÁ¨½‘ 1²£B³õ‘òzž*²â×UÕo.%bêM‘¡Y/çÊ|·> ÷%ß6ÉU»ÔðpZ7Åí#eLe¨oìŠÁ{œº¬Q±¹ ™—¾KTPƒ«ëõi•Ó…U¶± ú:Qÿzm3nÓoˆ9j~÷‰þB"]”1ì‹gÕGøFÖ4“=Y—ûŸñ®9B·úÚ…ª)ˆßÈÞ#9zòP7(4Ç)½‰¯S8{±Aa•)ʤå‰]Þ¿]ÔS¾EB¡›cR•˜åž±° hØj~,|»qì©‘“MxÂ|Õ')Å5WÚ¶å@ç¥ â RëâQ +‰b‡IZ´ÈOÂNñµÔ·¤zP) ¸Æ¦úã ba7ëâ•úò!®æ?\‹ Ë;0G,j8Â^2–PçPõÈš–¾š×[’ÔA€]–óÄ"¤‘ò„™÷é龦M¡8,RÁTR;•Q¶5Œ×/OùÞÅ­|G¤>ÌÞ†ÅúzUk€x÷&ßNrmÿŽà^ë›UûÐ@>)*C¾âOºõà<……îÁ¡ÝéÚÆ[L¤ûΛX61%G]øW;m»•v»Â²Sci<ؤû(†žŠZ뉜º(Ú×åúŠElº‰Z¡+;D¨’Æ/ܰˆÙ‡t-S½ÇºfêTÂb7ã<®ZŸ„Í¥äÓË_H'/úšNEP‘M•7­.%½,¥ ŸOæò‡¬©ftbœó1ŸY’SÕs- Ä$\©V¯“ï³ÝÖLzˆÁ[å3pЬAúkæÉªk“mlF.àŒ8—Þi±Ÿ¼ûÃweÊÙ˜ÏÜŠ<žküÁ]Ž×µçÃre›¼õ>åÖaÒѬúb«›áÞ½v“Ñj‚1ÌÚ+"Ñ“#,¶Ÿ¦¾;=º–¬sTà”qg‘»vÍóg»j fUFöB6bðõ¿ݳ'Æ+uOÊðo^-Ó§QIÓ¾RÁð®Íu£¼]ùaØøëKßLS*:§…'‰ÍÔ>Þø;KŸ¨7¯dã°=f ßTK–‹h’±Ç&é'ôúÉvqï}‰õh׿K(3†E#Ý”Î%nµ7Ü7æåå3+í 6L¤ö´òµ£|efI®xáÀ³Õ­a³«ñùÈ!î}¼!nñJ…´KU›Iÿ6mw¤c6§“¢·c‰YæHõnÐã½X!õï;L¶$J"^UøƒëúÙ^Ó5 M·¼ ü~|2i^ù1"¸¸Lépÿ,û–u¶ŸïDÒ,+6D¨jÉuV,l¤´oÏÙÿDÑ?AÇ×\¾ë(jSþGbÍ–¯âçþ›Óµx¿ÿRèÕ”ù§Éú*;H”ØÙ}â[pË#ß}IÅã`/uxnî>ÄèÃüÌ’tÎáy8@Å,¿$òS°!ަ·ý…íìË”»\³™|þ¯õã[jõç~“•õ4ø¼ÝÞûeØwê­ì4™¸Þ~e|Õ–—Í2_Ëv8:ó“i©ËÐò}¨6Ó=²íîQæªKøZW±Âþæ¹Hj¬w8e|þ¹1ä€k[ÀÝhðbeñMË]áFO‚ 5H’ØOßb-²Ôꘃ²®¥ô[ÆÇ-‡(ÃWt§GµÆ0ò|—þ3@-ßm/Z Ò•àõÇlüÚ~õ( b·.7ΩÕvoón@Ì„§Éäti\”|!@ƒf‹¤§éL…§šå‡„¢æß&³tš·>Ó¿ú6•(Ê­ï÷³•Ô|âJ©´d¿\ý°°0A¿¿+·'Ažby7³áìâíÑ.¯’|XkU=&U Gár4&sȈäoÐãÞzeÒZ˜’J¸kR3aš¦ûÈ²í¶ `ªrºõÜ£âØ ¼¬çƒêÛätæU]Éͦì±+ëÙö"óýÊ@±–aϳ³h®€ÀËW¾dhbÏÃx[©”«ÕkïJVwq ÷õöɦ= ëoëê‹+™á{7£ÀªõÍ½ÎøAxaLŽCkõ}'iu‚~ª\%[Þ[”¨Z»ãõ\÷æ tî+ö{Ä¢&_%Ð4ñ¤M*öÔ®+Q&3xiÌÚw"éÞù°§;KúN±ƒZ]þÞ¤Š\4žÈé§+¿ù½E£ÂOÔ¼?ã"-^Ú½î& 7Īøfîmm*%jɦG¢ð|ؾð“ß‹!£¥f›Üov÷£â<‚øÎùo9¿²¹Ã-FOÿõæÒ©^#%™´±´ïŠØÍPÅ=h‡­Š¦SŒû.Õ£J«ÏŸ l³mƨ2SÞ¥|ÕgÖÖúb2þ¼)¸¦=Ø:Æ0늱u+ {¼MEp®³ÓÏU¬Ü7fÂ|QäÌײÅXq /\ ÜÅ\4Àd<7z|ŸÊÆknH¼~©""¶›öÛ³Ý3ƒ÷ =æ¥kjë!iÜ·|òÀÛ"Í¢ìòõJwôÓ‰X¥Q©ã˘¼˜è9Àññ† ¥F¡ö…ËÕ^ EùÈõ¢è^âNí÷9ïh„ƒlqÊÒ!;—R£‰ÁXIÌht3öO{+MÏRzQÉ©êú7Á ›æä’G¬ní»œÆn³CöWºz§;È5×@ªÎ¢Ï;I=‡ù,ðò*M™|š·yXQo±.ãî>ÝY[Í9ñ%3a¾£GdÑÛ¾¡¹“'ßoykÌjÏåêùQÕô}ö,ÿ@škœ‹åóá Å3í®”Ù©„†™ Þé.ÅLËù}!7 ï´ÞE­åÍÖÑÂeöÀç UÇË×¹+ær‚Ä2Öú„] ’©Î Ý)¦Ð£ž-§gr âÕÐ =3âù©Tnã«gÏ!Ë*ø é­V­ñw.(qÒß)µ§IžßdË–¬öeñÁfyXü´‡í¹K~P†¡â¸»§J‘³D»)Q˜:ñØrF¨Ê0ÝK£íû¥ˆ÷=×Ö’ÇB8Šžð—Ô¤ëŽ> ‘Úh8(œŒTçÛ\,ù†Ü4GEmMòsòˆŽWü)ÙØ¿ endstream endobj 692 0 obj << /Length1 2164 /Length2 16775 /Length3 0 /Length 18076 /Filter /FlateDecode >> stream xÚŒ÷P›k× ãî»kqw-nÁàZ\ /îîÅÝ­¸wZÜõ°÷+Ýï÷ÿ3çLf’çZ~Ýk­; åe5F3 ¤ƒ=ˆ‘•‰… ¦ .ÃÊ`aagbaaC ¤T·Ùÿ#G Ô:»X9ØóýÃBÌh z—‰ƒÞ ì²®¶Vv++7 €……÷?†Î|qc7+3€@ÖÁè‚@)æàèélea zÏóŸG)-€•——›áow€ˆÐÙÊÔØ ` ²Ú½g45¶¨9˜ZAžÿ‚FÀräcfvwwg2¶sarp¶¢e¸[,ª@ ³Ð ðe€¢±ðßÔ˜(ê–V.ÿR¨9˜ƒÜ€w­•)ÐÞåÝÅÕÞ è xÏP“‘(9íÿe,ÿ/À¿ÀÊÄúßpÿöþ+•ýßÎÆ¦¦vŽÆöžVös+[ @IRž äbÛ›ýehlëâðîoìfleklònðwéÆI€ñ;Ãós1u¶r¹0¹XÙþÅ‘ù¯0ïÇ,ao&æ`g´¹ üUŸ¸•3ÐôýÜ=™ÿÝ\{w{ïÿ s+{3ó¿h˜¹:2kØ[9¹eÄÿmó.Bø#³‚œ,,,~¬–¿^ÿ}ÒŸ03{[Ï?æ·˜YGQRë“ý¿)ÿW)*êàðfdç0²q²XYÙ8Üï¾ÿGÙØêßuüÃWÆÞÜÀû¯rßÏé?%»ý{hþ½ ´€ÿ¥èð>¹@ÍŸA×cád1}cýÿ<î»üÿ›ò¿¢ü¿úÿ­HÒÕÖöo=Í¿ þôÆvV¶žÿ¶xŸ\WÐû(8¼ï‚ýÿ5Õþku€fV®vÿW+2~ß{‹÷‰fdå`báø—ÜÊEÒÊh¦l2µü×ÔüK®ñ×¾ÙZÙ•\¬þºaÞ½XXþî}ÉLmÞo—÷Ñü[|ß¡ÿÍ+aoê`öײ±qrŒ=Þ{ýŽ8Þ¬ï[iôø{˜ÌLö wÀ;G_€¹ƒ3Â_åâ0‹ü%úâ0‹þAÜf±?ˆÀ,þñ˜%þ‹¸ÙÌ2€Yöz)ÿ½ÇTøƒÞc*þAï1•þ‹xXÌÊ€Yõzϧö½çSÿ/â}Ï`ü½g0ùƒXß‘³±© ðýÞ7ý‘³ÿWþ¯±ý¯â½$Óÿ"Î÷`¦¶ï½ú„ƒã/‰ÝŸ„5‘Ùìð=%ðð‡ùø²ú‡ö½‹À÷è–r½·ÊÒÓÑhÿ‹wÙ?ýß¹Ûü¾×kûøNÆî|¿+˜ÿêývbvø|/ÍñOî÷&:¾/­ÃfìïÑœ\Þ÷åNŒ•õ½hçÀ÷ ]þœà»“ ÐÎêO‘ó/ Û?ˆq¼q±5v±üG ÷þ¤yßfû?ë}÷pý|§îöøž×ýÇþîíñøNÝóðº×ßðVÍÔÕÙùý{çï;ñ}ÿƒÿþ’=€¦Ë ¦üÁÖuÁí÷5"„îŒ{“lȃ—‘×pZ»øn*bWìùQK"ÝsûQ›'l%oÍ6Ú8,6>©Q|8Ë íÐæ&; >Ó‚'.ò®lûr]]:Fìöf8g-ªÃî×giqœ.öæ3ޤ¨Zªî*-Ï`©›~1!ALFGÁâñð°#AwˆdtT‰ÖŠÌÎuÊP¸\~œü@,yô:0ÆÆ¹=¸RÆnµ•Jx|Œì(wq,ôí°—‹@Îh0K¹Û+÷ô•&ðº=ø3‰Ë¸š09¦Ìîô¥ôån´ŒªE‹ôÐ&ä@ ¤ØæW²óMx‘lêm~º.ñ’ï‘ËIê…^ìœÔe½ååR˜‚’ðˆýKð’3¿‚똲Ñå|äkGfâ Ô]’2gS ÆÒ1›”Õ®¼YgLáÇ¢‚œc¬D;ˆwüUƒÀ²¢a­m Nj5 ÚûP¥)? F^<‘œjùpMŽKñZåb§Œ?1·S3·cÄ3Ÿ€Õžâõ™=æ8,°^ ökEJ…÷/ ôFdÕ#¹É“9Cª=&3–ãåY4…ù‚.Û¶>zãS%•Nš½É4ŠAòYÍsAŸ±2Ÿ}iÝ! Ó ®€Çóz®ýeõ–žl›y®•òB¬Q;n‰Xî;•ëm`Êò±"É;¼~Œ«×ïlC8RV­«®¬¿Þí†"±þÚªžŒâ¢Né B^i¶æ²Jœð ØÏC86°Ëò v®2×ð’±I#_Œ:W¿üºv°m’ÊüdÞ›®½¾Zò ÁXs&ŒËÙáòÿ6d)’Y¤æ“Ò_»ŸsçÈäHó 1V³ËRÆ2©zŠõt‡ç*9«¿é ±øû¥8`а0ðYth(&æµÝè´¾¸DŸ(C½.ÛWÁ[j¿jð2 “rkýà„ðöƒUHõ:DìRßBMº±.JÀí"ÞJƒ1@˜—·¬¬*z’áø¢g`w°¨:D”›îQUoÎ)z x¶v¦ÅÌÑ"U<ÈL¾$¬lø)ZVFR²œ­„‰WîmÒ‡Å8^¬Ø#ñÇ1_Üj7æ”d(€}Cr×1«±b?ëÕŒJÝ'£§ áœGñaJT½;1Z’Ò-Çö˜Z"Ràu¡jâÆs¢„£\lº¦LxÉF…óŠÏ—e—¡<ùøÕ&'æéæÕ3æˆrý,‹«þÏlc·CEzO” öSZ4AXœ®28T?ÖÍòeà ̵jÚAåú)úÐÇìl¤7&—G¥YК(3j~J7¥UȇT‰F/G–›Ú.R"dõ;”¨qƒ)d3–§mo1šÜÜU–ä9Iä„©°êSS‘¹ $(y1p‹Ì¹ïªª/ìy«¾ ¦¾F½—Éq/ŸS¥J«õ˜-gìõ<êyÉÁ3­p­}ã¦(²wû‘‡ºnÍJ§5·ô«šJó?•Ó‰ç˜L‡³4â³ T±H+80†)n&ó’µ’‚‹Ó]P •µg`l{zêåJx•À $м=ɾfªˆ¸_3_ÌYå0,¤|OËkâââä‹V @s&gk¾G¡¿ÒÿÝ90ê†SZ÷eãd©¿çUSPI—Ço|rw+ °zyÏFÀyÀO|…ÓÕÊo½´#ôJ¿Ôêù!ê ¬˜Ö3žÉ@næ8ûmÎÀBÑV“ïâ8Xq푦ë‘tÆš‚éëC¦Ø*îˆÐ{3ç]ôîO¹^½ì‰âd¤4O?Ë<ãK…˪W]ÊÁB]ăñ@U$œD°rD÷÷sÏN¦…yÅš…ßšO|ׇú•WÇd¨_U%,×¾A>‘µ€Ûp<Í÷µjëúbë$M]/ Áöxƒ’ÜW·"¢4e›ÌV¨. Ox„AÒm#Ksé&uÈC‚ûþ$º|:2Þ•#˜ôOáó]FëàeVXÖ7ÿÝ£½lk~™Ïø(9é³èû@a½Ä ULB­af{å¨a¥íµ•3¤ÌšiŠ"Áé ÈzÕ·H'²ÄºfîbÔN«5¯:|aþdKmAˉ5ZvħWh‰šý)ÑYªãCR«'€·vÞ¹ÏÜ4ó°Á¸Ñ«¬jÃêÅÇp}ļŠlÕƒ&‰kåë† -ˆ~°¥‰/}I4l™¥Ü.¯ÕúÃ}ùI21‰w_ÑýŒŽÂ£*–*v*Ç+·>×!¹oî×ôöbs~n]· °¬ú@¾ãzdÏ@R=XüOx<§ò—½ºžó©©j?\³±nÌ ö¸^Ç"AûQaq𠤏]A¡nÿ£»ˆðe¯\EÎçpx ‚$”W clÌd¿ÁP±®Ìý‹³¹rI)iU)GM~ò,[—æqÁÆ“Úa§7:ÁI¨0Š‘"O¸$Ë5Ͻ‰®¼lÔ«TeÇÁ~4úðiu2æ„·M!\¥f2‰YsÞ¬~« îg/ý«èÁvõƒ>UÌÅYà‘Ìc¦ÈM1¦%]k) A º¦ïðòÖµ ]æD‹mAŠj/dSDo©)@Qj¨nQ,²ÔäúumêÅ+|fÐ0ëù\KÃ_‘ËV»öûøzœqéÞ»w@íæóıse1•JÒ"‹ngúŒˆ‚~–ù¼ö¾p“‡>I”Uë}êþ¹½†ÐãÙç¼5ÊÑ–š™nuá8ü Ô &,dcVy(¦÷¦q+ãÐuéÊò×£;r±hF# A\Ø*óŸ´ê uR¡þOa¸ÀtW ¬ aIB ÄYÎÔÞ²¸Ø”×ÓRŸœû)r÷gÙWò»Ý÷X< –|'ÖÄVðâ{¦Da<6DL÷§¶¿«{Q}l}ÐÑãJë™Ëï×Òø©SiØ”õà·ìïfkçîlõúÅž—6ùò“¶¾dPû0κz†`/p‚wÆÄ‹IèOSuì+)(…EyDI÷ý,yœIö¤ßKÜ*…bé>˜aÀŸ›èÙ Æý6ϦºœGhùeù[ÓfÂ7eÙxê3±>Àí€Qó¾P³€é•c(t€øˆb?[to JÒÛ;'²/àÔ•Òa@Úr„®ªò¤9Ð h'c%…¢sà{P1ãÊvh™ý–@ÛÝ×.ÝJÞÑ–õEÕRçà68J9‚ͳ!¦ö˜_&<ýêy©bÞ‘ ÊØ®¿y¡(É:ÓY1&ú—¾£_Êi Ë¬zµ–d/ïš?lÕ¹à€uQ—¦JZ¹KQ±šâ‹ hÇ¢ÞLKOÞuAºÍÍ^" i§p„^âÌQm‘ôÝ:5Ø/Gœr[{¿m6uâMHØüÏ[í¤­#X}^ÚÊ •Ùp|~óü*ñ ·©SÞºåpx(2<9CûE´-(¸‡Ž •Zè–>vvU>²±:Ás¯Á©Ûj8‹rŒØ3C{t „´Ýz ä{{ia‹F3i†@/â}Áõ“4 ƒ\èªd¹3=hÞµÏS] ê–¹ wlð´R÷ât&Ô«™9]¾¯­"ßU2e5¹b¶ R…@ÏœTl'y8íÍ:ZS¯] *|ÊSíãÝz§Ý“îE·mÌWn­['ß6 å“>†Þ•¹÷)þh ö•\3Óæ‡kîüPgÑ€@mÞ'ìTïÞZÌËÓ™ÝÝPAÏ@ä0ƒ½ÐnúÆàõíaÀ+jº+v¿¨š’õCRØPNSM}¨™£ëÔ3 ÑîÚXÕ™µdcÇùù¹ó£X ¢Af32¨iëMÕ€¥(4jB„qæ=ß…j!ZÿD6¿Q|w&n~ÿasCÐ'*¾Ter‡ïù"¦ ^7²Ï¯D =ÚÅÄÚ?u4Á¦\Ñ‚h‡ù¯^fõêö«¡¾INSO’×1i’ú…fé /ºõÄéªÎFãuìñ›?&çvçFs1(x~LÅi¼ê÷rê)ÓÉÛ­Sï‚LxŸbÕï/òàhˆ‡¸ƒúXnb"–‡ƒ¨4œ¹ž¼B<'"<<Ǩ¬c÷(5eùj£JÃH"nÂÂQ)‰9mó;­qš6.‚¶n&ëSùà<#>uÃ}z†”Þç?Jê…¨¨¼ˆd`±3njP´5;Ô­4D¢Ï4óé‚ÍÆS ‹ûÆ#µßHÝ<fÍå}Pô¿i7Т2 $Œn›ËšÖdÜâ1v O¹ÏÌÑåÚëé]ÚrŽrØ\. K^›Ž9è{Žü;;#öø„DìýÕ™–[¨´ßbæF 殪Ç0|T áw/G|½+ÃÏ>­)ónŸ-ÞÄ™:öÎßÁAþ´‰7ô:¿1Þ}6š7¢ÀM¾åèGDE˜ŠÚÄ^–2È`¦Ái½i½ÌŒ>LºqÒ™ @Ââñ>+n@F7PÍUû®4“gÒÁ­!,p?† „1û<6Šj³eÌiátpIùEh3g®=Cº>IµXn»è<¸æb`¡Î\óÐHŠEbõ:QƒðóêWØÌBåÐH1D±à¶¬Ë+Zùy ñ´Þµgjj“` %“ø2½4XuAæå§ë§—á™›nÒ¨Û&P¹°XQ½²¹$nñmÚü“ñïd±Kàâ&=7pDãé0¥ËÖ”¿[f>ýè=“Óz‰g½L^O>ÈeþdúØ™ÃÄëÏyùà.ЧCd4Uƒô÷yM ôeC«vÕ0Œ7-éï«Ä'§¤…•î¹â¯à;>³“NÅojdo«È#ìµKxC™¢y‚ž÷î_©ÅÿŒg0¶›å.„"={,ÙiÚ¿¢(Ž-v¾¾aEzä’0s¾Ü”„W1U­ƒÁ#•˜(§£`I˜l'q'å¨5—s»“cÈßF°ëJŒË 2¤êBl¯«ÒÛ LÉÉÊxëÄKOx5/s'4Ñò1z{&J‘t9ºk_™ËôÞõšÎÁipŒ'ä;÷çÄq05 püÒAºu»Ýˆm­ˆtcd²íHü5htÁ®µß­Š õ$tý*‘ƒbbŽ2¢GëmÔÖ¨nŽ >ðÓÿö3-TlHÖT(HûT¸þxH´ë‡@n!ì³MÛããWr,…Ôb’U€°Kêä6ˆí ¿~K’ «þŒá°ßj>>#DCÕ„°ÞäWн\Žè¡– ·‘MÂû8.ž¥ Ô   £«äGylÂêöÔÉoB&«½™O%(<)¡9gG2ŸOâõ_Ys0 ¿¡w;jµ¢G? NžµU8xEÚÍjL’ßy? /…:ÿ&Øé5ɃQØøÁŸÊèï*î9Á•‚Oë†#’ö;G‚öˆ²!M|}^üvâC¶•7êeÁϴŇ“j|Ð4ݘù]‘*j~Œ1ˆW )z=ïFDppgÓ·â`ÙÂ©Š½¬•ÄÙ6JÒt\š-2`-Vˆ@n‘z],g\OΔ d½Ll¾Oß‘à"¿•i9ø]…ìÕÛïê§œð××öâÖ’p9\5‘ê&ªnªÕZ`~€É$ÕücKÀSלH*@ ²ÚåxOþp{¦¯•Ñe³ “žÆ-% ÁEŒ¼2}óþšì‘¨ ‹¢h.K!é1Þè—7QV×À!ó|fí(ýXÄ:¶3ûfù:4YLÏÇêºVc-öôŠòy? 5Ô?é<½ŠeVi¬ð¸/®œ½8š Ñ,“‡DUŽ£xî’ät«4‚ù›îÊè7ˆÞK³‡¡pQ­hlT(Ö'Š›c“Ùqœj ´œí=Ráá¢1 JÊíâ(¡?³¼ ª1Ft£2l¢ ’pV%š2óOÂÈ¢h1ØÜú8×< và–uµ.eމ ÅðF¯Sk=Ô…&´PAPý)Açï,^CRâO?>U~ת\Ôú<ЬaÂ2¢±Ñ‰\Òjœåª UŽÞ¡úL ûìû´^9`Ê„7úÉ&–å̓-Fvy¾OJªíÃÊÃÉÆUcÊA„Û!í7<ê€0âpÁ6¢‘›NJT êÓ +â½ÏnUØñ)Òc›ª>rÐB„I@9Ÿ*ÆiŸÜ¯ªÅܺâzÀæÌä‚™N¤ú÷_Šo€É,KÉZ œZwǾã1‹Š4E"”z“Õb/Õ—·CÕp‚¸óº`ã*Ý/ÜfLÚ0Þ fAʶöè$k)ã'74xÝt=^¿+½…YÁøH Æ6ø©{â“LÞr¸Æu¶ÍÃg u [,úgqaK ÉâØÖ9s+É~^ÃELôì÷ƇÎüp[S*ÏuÕ’Š«bëDKûªT¸Ð_¿ræD…-ãLEÂY®ì’ëyм -#.UaG€=ELÀ2uhب«Y…øV uA!oc Ê“ìâX¾+TüÙßÉâi–æb½í‰éš¥á Ëe܃Åd/v0€<]Í0Òˆ±^ãç¥æ~yÏ“ÁÔ”í÷£¤4V0®|I¬&Þë1 ëÆ" Ž #ï)uµ"Ó6Ü‹OM‚Ö9o|ã^Græü“ƒØôÌ,°"¿Ý»¸]=:ÀS6št&½óeˆôÛj™X߃åðÈX~^~¤‰üºà|ø\ò ®2 ÍO¿Õ‘ñüŠ!ÀFVnææB&©¡÷›øâZ•ôòrcP—A˜†"„ù¹o¶8æð]lÞ½žúœ.ÄçQto8 ùð,6p†-9Á´“_ë›™ÞðÖv PûþÄE°É r^Dõ7+ç0ãñLíRïån~.ç:;&„…*Qo—S6'GV›Áðp–¬C,P•jwRö‘-R«:1}úq]üóÃàC8D”k³Ä:Y}ÓÄ*–Ð=/]o‡ZŒ¦Ù&¶YɱÅ(“‰a|ÆiSÔ¡¢dJ–`*ò“è~œÄÖEž+´9\g±ÃplËGXÝBÁOlš@N´/µ¢içÅ®WäßÖ¡¸Íú½f–ÝNßÿ;A˜ ¾lLx; îün»úý±´‚e©L÷›­ ×]šH›z‚Åw±…‚9Ö°•ÑÐÐG,Ç:ç_ ŽÇÛ!ª«ÛX0Ë·ƒÚ‚Oç«ê¡gŠÈò±Ûåêí×OEP/;àã]«…1!ú%¼È誕.A=r°Öjà,N¼ã`Éo/Óo»ëýíò™gÞµÌ^… þÆX·~‡9Mð‚;'_pdKÒïˆÑÝ™K~–òrÀ3Ä#UGôd›L›‘€Èiz;@csÄ'ßç¡À™Ìõ*Ñ7b0lèM5¥Øüƒ€Ë¦ë¢ +fiSãC‰±.ÍyP_«V& RÂâܤ^§²LÅ­¾_K]5 É«ŠH¬ì1 ‡í Ç©ÁºAŠÿÊð¸/ê€c9ê ,{CŠ]›3†1N˜"ßzùœ…T¦ÚP˳_‡½ò"E†ãï¤BþÍT  ~1¡®u52Ñr\Z÷ÍÊQkÞ*é”!iÝTÉd$¶µ†œkϬòÊ>:5ReIõÛ Û0FÿÙþÑTó„ߪÙè.)ísÒwº¶$äé¾]d'3(ÐE¯ð‘þŒ6GÄÁ¬$¬ÓOÛjŒ/Ö·&Á\ÊžeóLîHߢEe½Ý÷2‘ó:ú«/sþ1Q6Šö™FQ¨7þiàçÆÉ]“õè uâo¬Rý ²óâ ׯ¦ñ¬ñ²g½´‡³™ºZkHb<7˜&ª1ÖD¿EëgïwF[õ%—íܵ'^\ì¯ñ_Ái.tb‘³n=!~ §øWß›H@iˆƒÐÞÄàÓ¬"и>#޲yÅþ¢‹ÿ–â°£h5… e$öý"ŒM´haëóÅIÞ³R7fÁÑ•JüW¨â@}|ßÊ0†B£zi©>ÚÐ2#'­L°FßrµƒÝ%Ñb¾T ‰Ù·sŸÀ1 ¥‹Ž¸\¡ŠÑ}¡‹ú:ƒÙC‘ é7sѿΑ»hªNŒ¹~‰^bë†î•cÜr‹Ò‚ô¿oÍX`ÄO0w}¬_]ÆJLd*“•x&‰enèÓègҹ갩H.0ÌŽÒ.v­Û¥_—Çܳñ¢9¼…(€l]¾­ i\‡0»p·¤v34Yp™Y9<“ñÃN¿¸yÉG„» Ÿ/hò®¥?ˆPôôœp{U’Þú%«ËUŸæ”¬ñtBõQi[˱믱‚ »1;‹¯âñAÓ2Kï•W`–Wèuj o‡£Ðò˜†ãÈG¬’Ã6¾!H%YFš\«Og_Èyé¨%ÏËEà•A£oU0¦¶Žu+‰cVDš›ó‡µ} B ¨"÷\g?˜åŽT¤m¾%Q#&®CÞɬXÂÉKxnÒâÐ|GÆ.ÂHð áO+|¼y2Š,ß«ò=×[\Y¯B\"ÆïÑ’5Í kÍÑßû»F—Ή_öºïš[>?¶ˆ›Î^ÃQ¦Ä¨$\B!ñÀDbH<¥ Ø;—ÂL§Œ¾£”—×LæßK…BÄX%ñfhI«Šµ)™Ñn”'ù²uõå²å#4×èÚ ·4.í\Ú,÷ŸÊëPÒźlϼ1°;Ó­AÇ[åÇÜ>(4DÖ!&pyãóàSP¾enôã²STïžR2%§|‘ÜNÊV¾½`ƒõ}ú®Ÿéb¢wŒ…ïq,åöÑ×.ýÕ°ûùSŠÉ7¯"qVýCú"<‹£nÕùàt–A“e¢\wfÓ{¹lLÚßàÆy| n×Äjð¿’:²™2¼¶Üº¶NWÛ¿Zë*¥ ^¨ñ? ÕK#XÖ —[ÉYË9{ÆÔ¦~רo¹‚Ë’ÃSÕ^ì¡Ö¤=i<=ªˆMFVC²³ëÈ57ΣÞÊDfÒ»Fü§vÏ ‹RשºoÑVK•ÕÁÓ¶K]ßbô9Ùú^';ß5¨ÚâÒÈïºÌ©BÞdÕ¡*(úöÁP¡m¢`K ÕZ (æÏbÆ×®+uÆ3¬‚tP mÅ”/ÆêйXiÈ d±·í‡ÒZƒçѨò{åMn¯ŒOéd€÷‹ê×3¸¯Y´ÜøDj‹Ø×ãg.Ú.u‡Ý6Ç}C¢LIÂú*~¸ éc¢2GãþŽ^‡Tÿ•ëß’’Èz¡Ä‘†‡0Xúbm…¢Ñçãþ(ÓŒ¸v;úÚ7Ú=ðÍÙ gKËK°Èþ÷wŒíÛ²— }ÊıÖIÒ¬ßs¾á‚É…ÑPè^jÜkêfOçrEÜÁpÆÕÃL˜êû,K*{n&ï Ü1âv3~cÕ©ca2§H@!„öú4nKÏíÐ0vaSÒYEÓŠuj©=w}´s©ã¿QïÓÍ[Øsn+yC’®'à“ÕUý©®›{ú€B8án¬ðI-šÅI)vÒLP¾cd'Ó¿S±jIŒü·/@L`Ñ¿Þ%ò§·ö¦lÐñ§6ôý“ð†òc–dºƒX]Ë[kec‚¯Ià&#Fñrc´\Æ÷4UÖ‘6£þsñ¶|Hdj˜Ut7y—îb©»Ü©Ób[“Љšò'+=…œk!ÇÔQzBԩЊeÅ[Ö£î¢ÉWÙ³¸…P*òÙ>k‹²bÀ©-³%Í8TSU©ÒvV"ý¥$’ü”¼¬î()CK¥U\xi2‰ïKܘbCŒ§Èg _…GFQà;±4ämMq xö@çºØ€±øIVߥ³xYµËÂVQ d_{ÔûÏ‘“7Jegü1Ž‚ ºÓäÇr§¿,'.lÊàgŠár¿Â¦| ö7ŽMÑš’[b` å %%œêCÛ>Lºžáù*à*b0è$-@„m%6cšu´¹pÿ }îÕÜé žpÆÇq{øÉ¯ù&ß•ªü,2Ò9ãY2µ™¶`”ì ÊŸ¤uN_•€½Äb%««Ç¼èµ§šûð’qË:Åå,tQ²³·á$bâ/%?u©'g)šWèQ½sHY«û?=ÝTÐËÛMÑÊ©5*ÛÛ©2¢:#‹úˆöF5ÉÌD¬gÙ{2 ÝàrDàIìv°xÌ~‚MôÜ‘íèÆjâQHÑ 1âxÖ/;8+Lï ŠÛÕ'šÓ¹°ž'÷8Ÿûfô{×y ?’«\††Lc•±´¼ë´ŸX]8,ÐzFUï”!ã[tãúè·e¶¯1elË¿ÒBõÏ8d!e„[¬³Ù|±…ÐsÅ †ÏÇj^ºèYƒüó|2Ç{V“ß©„Kß”Ûzï,š Pè­Áz—M[·Z'ØtS#=‚ÕÖ”þw©“*5({âBJ$šß¬ÖïæÄ§~aÓuá_š£_($tn? r~•YY¨Í%gû,žaˆ^}'¼4¢ž¨+âÔY:„—†¡³ó0n*Ýe»Ìk?ùô¹˜!õ׉ê5ŸEºä]˜saˆ8³-ÎŒ^кW ³8£Ðe+ë’ -›5d;pÏÐÂ8‹YSþ÷›ÈØ,ê±â {e‚¬È"Šˆ…sƒVô×®‚ªÓcWIk‘ -ç‘á°HÁa™üò¢¯Ö\Ƥéw¼µkC{ÍŒˆ»{¡†vßEĬ î!NU9›)¹ƒâ9‚g õ:ËB“/ßz‡‘ïŽÌpå®kÉ›t|ü2Þ‹¤2äáýãIÛðFÄ\¾Ö¾ ‰ŸêM—ÃwlRD* `{ÊÛRøùÔ*MH–”È‚–?0Ï6¤ó-ó®÷6#3àoeMjx4²Á­éw•|¡—×d_6 5ïÂ"ŠÓRìN2_2èóÇ]ÿemj¬ZUŸˆêÐë8!p3FíM¶ v¿Ã¸/‡‘A¬.ý†v±ñ²O-C¸.²ž¸EE!1KˤÁË^¨ó’#ÜÙÀ ¿Z9Ö¨DDLj_;¥òƒF±.Ç[°ra7ŽÐöDŸ(MDˆ¤¡ŽëÚ¯wÆC ÉÔËÇ5“?‹qt$µá—‰ªÍ4éY‘K‘ÈnªØçy|tî"~ñSÃÓȉ·ž…ET¡:üìuj§ùÇY¿ƒL|¨S‚àžþ(Íbˆ:I±ºÙhÙÏc'¨‘ûØI!É:Ú=£óUÚñóJnP*Så8Ö-Gãû2Ñ_±Sf6p°j ƒ·›?ëÆIC:¶o$@Úfš·WO×rˆ»ÊB¥%¯NåšÛ7ˆÉ!î4p¢ºy*£?Ìwì¾LUþ:DuíW¨®Ýå.ã­¤í%t†ÖvL E¤!Š%j%EõS¬Tï+òGc‚+¡Öå6óº¯C#‡Üwz@ÿḆ%\/­Å±d÷moê !·_•ì,efUúã•z™ßó#ãÜAÄçØ`Přۺéƒçœ¹}îI¿ñè“ëDNqä]¦JLaÝJkÔK_ÓOa3³˜ï–³"ìÃ:ä@.º%¨å, S+&ZjGã ½ÄyƜȤ8Ã|[›çwßñ­am§ËÉûù¨·˜Ô•‚ÐZõ¤ÄØàwýoTçÊšŸýù¢²ù" ¦¼qý#Û¿pT½NfË’´Ã÷ï¯ð‘_5‡ðS±P™›ð4í”tô>1ï Âl%xæ¨pù¶¹ˆ^ðë›jµ‰H•)0uáíƒT:¥%’óŒtØ1â?Ë.R—¡& ˜<Ûºå÷ꚀԶÚ)¸C3á¶)óÅiÖì5¥P-Á¸ÚÓLSr,¨xõÓ³ôȈÐþ4ß1Lq!sŠ'jÓµgÖë’Sæ†!Ø°ÃØ)Ît3aÅñÖ¿Jñx¾pÝÔÐÓ¤ú2Íë[ß}Â0wÁèÕ!'ïo¿Ú%ç"DÀI™&Y Çjö¤8@‡¥ð¡H2{”Óð#Î¥RVZ1Dñb…U]ÏWÓx/wriB½2ñy8ä`Ýõù'Ïü¸¾h𒬯#‡ô^Áº|Í–,»íZg–ɽ¬ï…/-Œ×À9 w¤ Ãh-8מãáá´e™ö€Tú$à š0PÑÑY‘ÀÉØ\œ¢$#ho¬"Ó×cÅwT.R¾„&ñÛ2Ì2"¶D’øž­yÏè÷Êò§‘Qz#Î.Æ4 ‰[HŸ†D/wÊ}‹ý-7sø]Þ­"GœÝ—:“j‰î”wÁjǹdv!¸›‡Þæ³ÿøé¾Ý}uò†SGØK¸TáI´µ…e`­^+DáòÑe—Ħþ²þ—É%¾Ëü{®›œ›.KÚY%$”PA à¯T4iÓUÕž<±O«ÙžÐýõÖˆì0 ^M·©!pzš÷»¦ßùý§²Ò÷ßÚç߬¥´€û1 æõˆÏ©Q !T³,¯+/¤#`õyñƵ£{­uR:‹Hat…ûŽæk¿¦ƒmo„„ÊèŒÆEtG]„ÑÇ7Óô-ÒÍm‘£POHƒÞ¶)¯¢¥IÜküßäQ—åŸ#ž˜ˆòŒì-#•#jtLÓ·hEo+@Dà ™>†‰òy ±s Ñ¡Á—_*ˆÙHàÚ,×6Wap1h׆ÞQøÔŽ-–ßÉ6ÄXô  ŠÀx¶¹ZˆÌKí$Ôér@Ÿ´FêTˆK%%wc*‡ù ~’hΤbÁdÈ__ +®’ñ}mþ´þõyø—y†°l“‹Ø,‘‚Ì·‡€D´7D0œ¥ä¤ÔÙB‡¦FЭ}¬'ægsÝ‚lÜIžAj|]b“ø¿¹-G×0Bå!Nã!0lw N7IxRPŒîήóRË»~HÛ{ÆúI[Ú:Ïd^Q‹¥¶^º"‚BUòžÔ¦iİќ¯;¨Ó‚kã”y×ÁûÇÙ $ 1$§<¿•–¿Ç‚Å~(N£?U†ÜÐVДAo0&–Z¨ëmtýµ;ø&Ècc7‡ÌcBêð›†Ñûë#LÿôÒ§­™lRà2±ýÅ¢”vÔÄ­ì£uŒéfg™>[;TŒ˜kL&¦@B… `™Äž w|a皊bêèe\s¹Ã.£YƒÇÄsÀŽSÞÞÂô 3‚•Ö~dKÒž±$¬¯8‹ÙÏÐI¥Ú¼®‹éc‹è7§8¸ B…hÙ[â3½ñ‘jVj—Rñ}L°í·cù‰ ñÆ[„6t]ùØÕ`ªN_K£F?ºfõÊ}%/tÇ NN×_hVs¿ÒÂCF°öRFK9P#Êï‹V³ŸŒß‚lõ3—EzL06¸mndÙ6>Çõ›úu|F}[ƒr6°kõ`ËõþÊ_ƒÁs’1ºŒ”45Úñý.ÞÙ<Œ[³i%eÖ-åðR ¡^iLâ F5‡ö|€Õy¤"é[qÄÎn_[!Nr&Rqôáfê@(4ÄH¢j]ygO„?8¾B†‚7,5t+|Þ5°$ðyïèšMñs¼å@I~ß•J…¯sò1ŸSJæIe¿ŽynÔÄÇ·•Ÿr*ÒÕ5›…1|8²¤U½©Ù–>û{¤&ì8^Ó9 ctùë³Xæ„TÂ?´zl†ç@›‘Õ™×nþÖ2ô|¢³ÐË¥uF“ 3U÷­Kò“Í}z$q™YGβ 8çk^{ª¤Ëƒ~YÒù¶2ôÔʈ4,=/ºøB@•ÙòR@“rÖøI½b› ´‡ëêr„6…|5…ª¤©&–b¯’ËÉFh椕bb,7ÕZøB°–ÇÊž;`8$dtmD‚ì?ƒ7#0O9(\RÁ›|NÁ÷ °>tˆpÈrãŸÍm_"Hr{H¯¦×éÄ!Ïò°€Å{åÈRóvúŠC®C'M:ÃìGæTæÂ?›Øa‰ŠÊ§GaÐÓã C°û9¯ùU¿F lá'ÿ8ô€-ô:¶}Ó˜˜1ºS[)~£(w²–.&°g¹öª›>¿´=Nk)ÃKÙA3cW˜‹^± b—íÓÂ.}Äj7màH HÞö‘ˆWã>Þšã˜õàtS]&ZDt7ýж,.b  ‡TX®ÊÁ/Xü¡‰NUì¬W£"·¯‹A—N~*xmé<ôKŠ­Ø{ñë—6/GÑúeæÎÎ3Ï Øêôz–&%B'IØ¥ë£ddK;#¾—ºA¤£†ªø°VèuÓ6 jÿVa”ýÂÚéY.ìÖ©”!f`ÝVé*¤à€)ÁwˆPíP} /[‡;n2¹^-ý`U³¯ Þ+qæá‰‰pà£ã™eOr‡}»Ú Zðwlן'±˜%V LF's„âmqך\H ¬ƒ àŒ¨ú—ÉX!Z V”¹¤V¦Û«JìQ$×t­iüS\_wòŸ¨§ø”ËÁ&¹Æô¯¾_<“> |š>-íkO{Á¯ vðý¾Bk.Ep£70´¬£ËY?˜ɰñøºü{ª¿PÂÝa$oaÖK&d¿òÒ·m‰,×kœè¡‰J Ñ £r¼Ø«Â$tÜÓîÙ–ì2S>ÓMCuÏR4üâÛÆÙ9©nÆ´‡ [')qc|ËPÐ"°l ÛŽe:D€ËWä—PŠèгÁç'ÿuLÃR|1øÎî™jbÈÈ·eÛÊ׌޶Ÿ ¶ó÷¶¾£Ûë,®x }«¿W)5y$G`>:3…Þ¶Sg|Ãÿ)T Š'Ôp$C ¶0©)/iQ“Ž1`’؃£é!e„H"0tY¢ÂÜù£>¶{=åôç¤ ^É!ÓñXŠ˜t$ 챤–.S¤‰Ö òE>[E†”¢@cBsêD¦8ŸîõO”uæâõ®0ß ÌI‹‘þÏó#*ÃYËœØØPWF=ì1ä½…£šu'\4MÔ{Kå7qŸ]ÂåáÀÙLU’gSoaÈdü†ÕÚ॒PjjusXH¬Ò!£óÜŽOêŒÑ*EiÒSr6íçKCžÌ9ýmỸ¦)þ¸²xÒ`¢‹ôcŽÈˉJ¸ú‚°´=8Å i‡:áËÃ0ûB¤ªyh¥•åÿ'èúyY÷/¬°¥0§nÈkº™dÏ0JªûUâu/ãÝ [œX»¿ádK)—Rl—ÿø°¡´ž[-Â!jk6&®~R ¥¥8F-JöÉôó¦ƒ=GQYŽW”c^zÇS§ªÔnlñpTê½Ø•H4Ï ²S¦ ,á"gNO Ë…1 £ÊÈÞsúVþ+;Üe|Wpâ…<¹I6ëÖ£Óæ=FcÝ1­C€Ç›˜€hx,¾bŒ2iv§ÊüÌÒ®V ¦%S8§Ü`Õ]“ØVÝ®Œ¯åÕä(bïqû™Ä=ÚSJ\•ù×=¡ZÁuu¬çäË78gw­Y±Zß¡tÛ>ö»7š°»@k—Ý+/-žsƒïÓ!•8ØPB-zç=ó÷É ÄÀ_4Þc½[¥¤2¯ìý\N ,b a‡'ic1).N-ŒH7©”£þvDÓ{é]ðÒÇ!7,º›52Ði¡X°¯Íâ­Ùçóë?d"+º$o[sŸ±ä,†p×Ã!wÿúÆî£ì¸úxôK­(\¬·GÑp1€í<½5Š /¸câ»p©<|®åçú¾£ÄËæ˜ ’¦¢ï²ã=ÏogÌz P0K[ð/|O¢ ‹-KZç¶ÿ¦(ÿ{X“ï¦Û~ªô¦Aš£ rg·_Gè©=Ùß4~¡|gP—-<Ùa‡rµk,áj|t†ÀIízÍ®ÄHç®Öÿê‹cû:»RÏë"é®=I”ÅÛÖNaœP‘øÖMUÁi¼ÏœalbÉ‚TKz5î\È3ÝŠŸbüÞQ’ÚI9Ý?¿€ ©çF®¦B?`ޱuNÌe Ús!>sôìàxXè:‡¡¸ù­]æ4ÿª-§fý_ÊöÅYÊF·uÕ˜¼ÔL‹7XS y¹ÜÒLLØÙ´ !ò5Ìsq¹'¨¶[…ÔŸ$M¯5øëîRæ® @u¿*h­c4¤…!njxß•?·‚ ’gç" ÅÕìdc¬æJ™}—]HyN¨ò½!†(rö{mÐ)»ù;µ=ÝÆGLìˆmÑ|zm~¦–ëq¶¬È†58¾½ÐB ¿Æ7 ™œÜ´ÎºÒE¼Ð+FuNÍÙPìõ—\ñØ’N3JQþÃr—rÃæÍã°èž÷z“;½f}MxàŒÌäËën̈HÑz²UŠ;[U ž—^ ÎIÃÔõ1W–n©ò‘ã^â+‰á¥FJSÕ~c+âÏæÄQÝÏÆÌ äZŒ;ÆéôO¨×¤(b»„ì*g)¬MÏAÚœ›òÂìmÐó; ˜on×à‚…N§’# lŽ|ûžBòÑýLùFiú³"(Böâ•»›áCƲ²w ›M][þŸ¶ ×äÍ*_¢”L0¬GV¶JéXþO. ¯šû¶%ƒÝ-ßmP•4H–tNzX,¢šg‹ÛÍщgy~‚‚AƲ…FSßÈ[ ­`â3-ôáF4+·æ[‡Þ“üåwê.^Ѳ”8{ƨ$!Ë€~š<ƒÎ=4 ^^Ê+ÄMl¡ÍER ËÛ?>@dÁbô€5sÄ醱‹2là‹±Ã/|Ù 2¢IPKç endstream endobj 694 0 obj << /Length1 2756 /Length2 19770 /Length3 0 /Length 21349 /Filter /FlateDecode >> stream xÚŒ÷PXÓ ãÜ]ww·àî. î®Á‚»;Á!8ÁÝ!8Á îIð$ÜÉî¾›ì÷ÿU÷U0OÛÓݧûœš\UƒYÜÂÉ $íäèÎÌÎÂ&TÒÔdg°±q²°±q RSkÚ¸Ûƒþ'G¤Ö¹ºÙ89 üa!é ºƒe¯î`C%'G€¼‡=€ÀÎ#ÀÎ+ÀÆà`cãÿŸ¡“«à5ÐÓÆ Äwr¹!RK:9û¸ÚXY»ƒyþ÷@gN`çççeúË îrµ1:”€îÖ 0£9Рádnr÷ùO:!kwwgVV/// ƒ‹“«•=ÀËÆÝ r¹z‚,¿J(@ÿ”Æ‚H д¶qû[¡ádéîtÀ{s£ØÅÃÑä ³4ä*Î Ç¿ÿ6`üÓ; û¿áþñþÈÆñ/g ¹¹“ƒ3ÐÑÇÆÑ `ic¨H+²¸{»3€Ž¿ önN` 'ÐÆh6ø+u @Z\ WøO}næ®6Îîn,n6ö¿jdýÜf)G I'£»â¯ü^Û¸‚ÌÁ}÷aýçpí¼ýþ‡,m-,•aáá̪åhãâ’{ý X„ø[frp³±±ñqr@.·¹5ë/MgÐ_Jö_bp ~ÎNÎKp Kø¢ŸÐpwõøý©ø/BdgXؘ»Ì@V6Žˆ¿£ƒÅ Ë¿1øü]m¼làñc°ýúù÷“xÂ,œí}~›ÿuĬ’z’êRŒÿ”ü¯RBÂÉàÇÌ`æàäpsòxøyÿ¢ ´ù'‹?<å-ü' îÒÿöügèþYzÀc);ç û=æ†lÜlæà_ìÿŸ‡ý/—ÿ3þ+Êÿë˜ÿߌ¤=ìíÿÒÓýmðÿ£:ØØûücž[wð(97Áñÿšê€þ^\%…‡ÃÿÕʹÁ» îheÿo#mܤm¼Aª6îæÖÍÆßb­_{foãRur³ùu³˜ÙÙØþ¼\ævàÛà <’©@àÝù/£”£¹“ů%ãàæ]]>ˆlàIâàæø±ƒ·Ñäý×XYÜÁ.puK'WÄ_GÊà `ÿ%úñX%~#^ðLýF|Ö׿?€Uê_ÄË`•þج2¿€Uö7â°ÊýF`v…ßÌ®øÙ•~#0»òofWùñÙU#0ŸúoæÓø¸¬š¿˜]ë7³kÿF`vßÌ®û/âë€ÿ"N°èà Þ‰_Û¿6`& ›¹¹«¹‡Ã¿r.Ž_rðxÙ¸Ùý6‡0û±s€}Í€®ÀE˜¹ÍAö K÷?ÄÜÿˆÿ^²£±ÿ-¶¹ÿÇžŸó_ùÿqwÓü_Ä NÆÜÉ<ÿæÌõKâàð»æ_“Êú»XNpë,œìíÿÌ|Y±‚~[€þCÊóKïâÞø£€óOª=Ðá(àvYþ޶°´ñü#ì/µ“ÇŸ´`«ß$`½Õ¯ô§ ¸ëßÅ›híãl rüÃ,³ù‚“·ý‚ßîî×ï"xÀ±ÿµ°¿õàîþQøffýMÅ Žå^ôßMS;z8˜ýºb­þH üf°:ýNÓé/vvp¡Î¿Õ`gðÃîøŸóçbÿGúßÓçWž^§ßçÉn¢³½ÇE€¿è°ºü.òò¹ýumý›9×/¡“;ÈÂÌþG°ôÞ³ƒËû–\†ÈÁæ¿ãÆýËäùÇpƒƒ¸ŸÃówÍÍèfýG`p¿k?4¬îÖ® ?&Üw/§?À1<~¯˜ó¯o>næN®ö|¸ž@pÂ^, 8¨÷ÌêóŸ‰ïïœÁ‘|A®gðŸ+ÜÜÃ|(î½²àûýø¯/M 7ÈqmÙÉ\0̶)ìÃCƒ8‘óÁŒðõN&=³ßšk·Ç*|}}nȶëxÚøúƾÝ­Ø:Ù¿³ŽføÈε®gÿï&Iêó]ˆ«s¸#³¥gâï‡I^3kŠúÿpñ×¶ƒî€ì•§.tñàCU-Æzð’ñ~?\õi*bù@í°žGé{ÕGæx­8ÃàŠEê"³¼%| 8wfÌko´Åۻ̂Ù2ù$FÄ€óxÎ2?ýŽ·K¾›5šn}Túø$з˜Só4~Çéòx+~•åqÛÂ+ùlô,ÛSÃdþ“½äŠr˜xlö®kü2ST]ïYƒu‘_åh˜:349Ÿ¡®à3ZzyIË«´—ŽE¾ºre´PòL€Wöñ;Ü]ƒ¹Õ;»U8»hš5ð0°Ü{…¸‡³Ñ&±ùúG¤K¶ñ·C¾>ÿRÛœwT~ƒ¶³çÎ Þ‡ÞÝ#ÕR—¨ˆð¥iYhèX¥Ù­¼ÔãI·X\†¯êù»Ì ^öÓŒ¬Kk}bq¹9üÉuQ4¥ŸÉ§ðìëåEÜâcŸ:[.Çm†ÙFfkžt¡S…šÔÂ[Pº<^¥Ð(ð@)&ÿÉ¢Nl¾KúrZ)òè¾ß¤ªèÙƒÒбééL¸íXä,fQ?/ØÞ–¡C£|‹#˭Ǻ¾/¤ß4Rz\Z9œ‰K$5]f09CS/‡4Àu¼t‡÷. ßÚÙβ-JÙ 6—WâûøÄ—zéQ+õ,…w…4TCÚû^ÐjÊ„o«ö ¦ˆSÖŒ(ßdNé/ôë¯úLxÕÇ5E6Žëм6HZ8È¡Ál9è\¤à'î W x èIÚîœÞ.Û²˜ü˜‰/\Ÿ”%kÙt<Œ7>}ñJ_Pj[`ðvh_Â=Ô«ËÀž9ß@aq=ÀªIt¶ôc{ÝçÏ#V}Tp’'htÊZßcí?;ÇòP¡.³5Þ °íkg¼A£³„»9êGÚV|ýÃAzˆpóªš$¯9£—h})kœ3QZánD¯®&¯ø†Ò³Š*j ‹àÛÍÄ8Ù F›ÝÆ|Á€¦ä‡|ìCÛa=Ý[©j²%Ü£]Ο%ä>”ïÅhp¿¿+äuVëŽçb3‡”ÍZ\âºö08GñÒëLÏÎ?Èãø`à>÷q|"}½$®9WÔú[VL»YîîO†5(ª D‹‘2Ó*€j8rxN´@0:EHáÍ;ú·ïüµæ¯FÞÅYâÁ=Vc½n)u@_´È¨(®ÉÉåžþú!‘¨µôÒ–·ŸúÌFì%wk ƒžr>jR“bÎ%ŠPkcNú¤ñ>±ƒ=Õ]j6äcÛf±Ê|q;Á`I“´±ºh:s^ZÞ—rÜ0xã\òç8(v+¯û#޾".Öò‚vÎ^±ê=Ã^ßO@ßÓyvâúè6–¬ë¯Á±RÞ!z´cU÷§ÜQÒæÂŽ¶={ÝKpËæØÇ‰^ìÈñߦŽ9ƒÌ äŒ"scú}Ú›ÞN}F±\.z·q›rpzSþ\iiuNÝë\ô,dsC¦BJGë÷.a©iÕ«ú§Æ¡(‡–ïõËÍä<ÑÞ{ŽÙ™¾ÃÒ{éÚ ‰¥J§…øÎ¤ ,c˜ÐþŒKýò8¤³µÚ´ÄÚTH¿yéÌèAànŽÎXðóì ÷fn©ªƒøâc¡öÊ„ïæDIrŽ9.Y$¾)§±&*bª'" aCÃ~ÿiM’ѽºzN•d™$Œq=÷~Êo⻌¢£gTG£ô§bÉMt:´‡LБ?%†eª ˜]“§4‹"Ò–põl‚`ÐÂ$˜ìò +hÐgª¥(r¡ÉÑ+:·!]óú1éW‰Ÿá)Y« òÝ—†iÜŠ?1•Ý“‡W!ï«þé;R4:X"ÅBÏW"žënʘ1ãtºvšŠPW‹ê‹mzHîÿ3°ÈP7mq¤…”OÏâ.Glí’´ò3Š” ºÐå2¨³1¨^ä(LgTëÕ0çÙXÂ/ÚP¿Š{«§ü5·+ô×ç‘ÕŸÏ«|ðÛi:™Ä.¯‡»?¼õÛ¸0mÂN³ðJ%ò_ C‘‘ñemË=–¥íѧ ‹^ƒÈZUš)å‹/Ýy›0¢>õ²AˆwÛ¯^Ñy cð^›ž s÷Ønbƒ34ìÝ1 oK3©ï,^:‚ÏáYNL}¯ðÊ$íìZüàù-¬¬¾3AÚŸøWÓ| úˆª4d(Y¤º‹&éõ¤Üh9çÕ:7? œl…¯† mƒÂŽtlWF›ËšaË>*×Ù©þ _¹ö¢½ü.SÙŽ‘ÿe‹#ÖGn~àçö6Je0Ê@_ E­ïĪ“Ê€Iª¹þOb_‰ÒÃP±6ý q²ÍžÇ1` È;ý€ÈL4ñH„b' òe^¯/üê2w/úD³ÜJ¢Ùk-ž_ë‡ô©|½(¦³ÑÒ:ì„óŒuÜjáL_råM„_ÐìRŠoÑÑVb„èû '¨¼ï¤ ±‚u·OE:/ÔSº©a·0T«‘xfãüÎûÍÒÆÙ3¤Ëòêt<Ìš \ä¹ñó>z¦´J-?è ‘jê/&”°ªUÅ)G,“‚4),‰ã(`DA÷?u+h’Õ{†¤FÏŒ*9ƒN#† x`oD­éùh¦pX%€è–¡wé)äxlQ-×îèmJBñкl¾ÝìÛTÿO2³ù[›W†‚²ÈˆŽ#»pæQÛõÞdº3pØ…ìä¢;8»éè¸î”¤ƒ;¸¢Ôó÷iVa1½ ßìÐ4Dx`bÛš>ãéõ92´-óS8BØÐ¹Jç­¯Gi¢˜Yè«ØáW6ÞÍæ#›¦®Ÿ0i\ûŽˆQPåÎOá0Ö;LD0‚QØ5N5,`¿AàèQ]†›Ò—ÔÞÎá¯ÀÆà^ö¦a!=¨cÍIËÕiÚy_çØZ™å˦X °Ð öï]Uç³ÄÍAeP—:»ôV}Á ¬1>ñõfZ÷3Nž67rÍÙãqªk‹hé¸-Ûªq—MÑÜü1»HSœsÙ 6â{¤Âöio“ˆrRtE ò¶ìk­¡¢H? 0܆R?2Ä¢b>U=¹[¸ãæHB*ûš·veW<‡p˼™\hÏN9bI-ª‰1!cöÌÜ|i{Çf:âÍUY"\øŒˆ? Ê¹=¶…åI5¿<Õ¦ÈFá@òUêí¶á:¶cÍÍú}odFûðð„ïþò1@õûyªûNq…¼÷û4¾•±uâO»,x†~¦›/8QDd-ߨO:8û£¾‡ó.¹:†D(Ë“µœþŒý’õ£PºÖ®¦ é=ì—ÛÞŒnºíõCÆfxáÒœÛ;¥%íŒXúª‡Ìô¯ý;ðUò7zÚ7“9|Íç}ìý?à,(åÙqE±”šÇD±(†sÌ*¦ÔúQ‰¯z:,ÍÛæ \›»ë‘„¬ìßÄ_e$qëÕ+Ì kÜY ŠE•™Às/ɺí„<ßnàŒœ²~Ù댲Ó&Þô8´ú˜ú£(vù=€–Ë>m.õ@ì±¾×DEn»ƒ— g–Õ/ÑÆ×‡ÙÂußÅ’¨¨{Šì “W~{~ùæ!le¡ï¾Y#ïÝ>m!‘¯AÇ™YKÙ‚¹ª›‘`ˆUD¶¢ÆÁ‡òi_¢}¹…Zò0ÍÐöXõ*ª¦2ÒÊsÖÂc ˆÒó½`©L8¾þ÷Y£ß•^yiÝçžse¬®1åîØ”Gê™nw0€Vôã]¾)%•2´å½é$êóÝèÚò Ö:”œ‹ÈÐ+‰ *xmÔ9¹íà‘1Ãó rB Å¢iÖ¢±Ôñ&Ä3F»¸ù’ ®™ˆKý„"·´i®åôzåS„|Æ[~š^œ}ºÇ°Ó9YÅWãb‡‘3¼*ƒ%‡a.:±À¤/õµxùnxÔ𞤠JBSp¤™>'+{¶üÊr†°™#ÜñÖK›h̆)1ŸIÍqú™ê­TiùpÆ¿UÕÖ‘ãJ-FÐ ’ü gÇDîGäNÒ|êìˆ+jîx)ŠfÌ‚4?Š¥S¨¥z9ÏØæà¤,Yë²ß¿¤½­œƒm6.wAš¥»úøÔÏ-Ó‡âC7IÎ#‘™¼²È`´¯Ö¤ð#µái0ñtÕVù„[™h —~TReºmÅšåÝUÔ <1² Å!úÅJò[-¸›Ò1@O^Á äq8Š©gá^<óJ]uŠ ^ÕÎFè^Gò ¥4eçÌ4Ê}F%*Yu$Û~*áNÓÁMiš”zLbý P¹¹I–-5Ùàåâ§âusªns#ÊúÖãëT 2Ü0Óõ×JÊ’Á£EOUFê‘g=7ö{¨ÓÎ\nÎÐkKuÆ6saU¨·êOºI|$?³çbƒ²? JÕÖ+žåÊú×j¤ 44F¶(oÇzá{+®&Iš+ŽúºFЪìPo›ˆ³öc÷•_Â4xPqc¯A¥—ý½äœAzšVè™0pëp¸šEšÀÌ™¨¨‚êY(KœœE«‚ò®ÅŸ×ºå&Œî©ìEôâ˨~Û•Wûæ¡+ …IÕ•¾ª j“ï24VÔ,ÈŽì•/ðV̰lÇ#ßaCyu{˜ W@ã³mãs–™ô: C³oªÝ|{ïaùm¯ñ†Vî•2Lqמè8–‹mÕM=âÄÛ³ì…&ÆüÖ"qÌÑy’9×â½®w<4²s©’üË®°þƒ¼®M˜_e©"¿È»þlÚ¢«¶’1j~ÿ¦Þ[õÎ8Haok‘¯GïI/üõd ÅC{*¶¨e/iÆzövFG²îäg§ã¨#Îï¹´{Œšá ÞÛ7ÞüÒ=ÉËp)€4lÄ©«ÌT›}kD~ew ’äpþ.óC·éÏòA^ˆæúþ­ýذT’có¤61+ ëP¤÷ÏM;=#‚„œþâI¾Ò»z\w:ð«IJ™ò»ù'ôo^°©s+Ì z1TDo†q Ô½"·;F¥j¹KD)òuüƒ—êäx.ã¡Ru¡h -bŽ¿¹pÄø©‰Ó{ÊŸºÃëî¼Å±áôˆSÇä„ÒÌqáN2ó'}sö”,tÂñÜÇK`&\EX¦¨»¨ÂsôÌŠN e*@6»xÓ ÕÜÛœTIÚ ‰sÃg'Iu+Ôö2¥dê sZž‹7!Jož¼»õ5=û…wW‰œOb¢û­=ä8Ë2”Ó-é,nË’G”'¢B[˜†è4›¾Pɇ/JÆùNRP»ËW©(BºQ@Šñ›Ñ¶ ÆWä¨=;B2žñ>Vlü"ͤì'况 ™¹Vd 7Œq 9Ͷ¸¥EÏ/˜k ã–"²Wê]vžöTþµ6÷çl.Î×݈jÞó®Nû²OjQï³<}oŽr†C¯AQk7\ ¦•£S wf÷™¢ÕÚ´õ@ïkRä†ÝiÜW£E]ob•$%¿G×¥Þ²}¤pÍ&r˙Ѭ;„øè3ül°ø¼h,DÎ\ÎNÕÀ­˜º¥„!Ç,òw)Uî‚=Ò‚2Sžÿ’&K.:œ²0;lõv»Õœ¡K’±²gCZÇÑ"B)`V]Ï#ËLº-¤Ö3ûÈ\ÔÄJÉŽ[ßiÈiû3qeÁûЖ…Ðoð¶/dD¿¯¶œMG1 Ödî[ÙAIñaµ‰Bg¬š£”YMá*ÐŽföN88l +ŸÜ'_ѱ ‰íû J–oC]yö—toQÂtÚ™ >HÆÆ@@¨àÞE«Gë™V™Ê›HÔïZW,ºÜœ`ñ!“ ޳|™%êeêUTº¯½:Ê1ëM-WR Èú™9)äÈ:Îk…9µy-Y‘|áLî_Š÷ORïq!Ÿ®¦}z‡v©ñ´ì$·¬m8ÿÉÈfYÓj,6ÞÀd[¿ÅäÜ6‚¸®äg*wi}%­2ŸšR5<£”€gbÌEtûBÕÕ»ÀÝ`¹7®à¬ò[Ó÷È÷3# ø/WWï(ÌÜvl\D˜†õ'H+s8â@sSteV#«NÏå8ÂTçêm/-?7jž`ë h¡÷äÌm«8ËC,9•“[8%%UÐ'<)„qÇÞ‹‹ò ÷.F“ðÇü°Ÿž”&»bZïh=òÊñ˸>hLí0²›„›VR¹ßU'²Ÿ²´Œ/.ô›Ï¯÷û\-$”ãy~¿Ñ¾;å»ü-Rè iâ&}l®d‚Ên ¿%˜"×,Ľ5k"“Êçd®j¹Hû`¤“Ž?°üqQ¤dsŸ :ã6LµT"¹M‡D_r|$'F%ÿT#8èÕÛû“ %`^gÈÌr_'ÜFX#÷LÚ=sotÂâîs^»œd]‚ûXG„xLæ¶þðûÏðu®*It2H„Ž™˜<ûdØŠùmö¹·Í0^ÿP¾o"#¥õR@A<`Âl²¥H;Ðñ|ï£4cfé™ÓQúHLô! _Š>ßúAÆ Ä2üb‡&åjŸw{3&~vÖËYi‚0ÚdFᱯ@ˆA ›êôIdfÞ¨¹èHÎÞ³ÎGõÛÚw‹¸RèwŒNßy¯Ï‚óÖæeüéõ'ºÈ|ç˜~yI¨Kyz5ò\v8n×´T®Œ9îÙ?"yéÃè·hbu¦ÔQöySèkß[ݵG¬|MšNj¥`‰êûðb ˆB—ÊùÁ°‡ˆÖ€§4q"ÀK\kKè“ \EÞB[Ó‹ÍÙá=D$dà ¸ü\ s]Hp昸iœåÖ9.P`œ¡ä7È/•2܆=O 5Å7¿)±ï.´®Cyö^ÇíÓ+Îä€ôàÃ7F³Êâ?æß\½{–îê³{™ŸŸâtŽ¢^`óm¹‰>}Áh9xóZMš ­°#ß"EûCƒ 9ø%£é ¯‡Pô4†22æTÇ™¾ Lòºæïº°à0¿‹ÖË<)+*3‡ÒY"¥–!:–G,CšëgÔ:'ïX£•J”ëË^ѧ]ZÐÞZïéVr†+~‹ø¨‹¿YÒŒ”h!W"›‚ŽÅB¾.äa±Æ2òÑm›ƒíU2ø\shgˆÁÀry®4 0K¥J‹ÔfrŒV0K¬À§`ªtôÓqÖ»Ë\ j°\‡VìòŒ­/º‚›A;@°Ÿî„jvb%3IIŠàZŠA_%9çN(KüÙm‡™P³Y*PŽllÐÓj#"+Ðn–«uÀñҫÊqü&Ïü•½É¨¿Q€åögviV.¥þÀÕàq‰pøV xåk-u®ÜäzØ…“z Õ\þH‚ðj±ù•%Ñ»º'½$P'/.»3¯”ú†6¢ÙW‹B\ÆPÎ\2bTž ¶·h7IŠ×ICˆ Â’Dzèä?à2w¹Ð)ÎDŠ/ܘŠ×™v´x~+ô_MŒô]§®úáhê ]¤ãFò­¬¥»q)P\E0Ùr–‚â‹  [ÔÑaas¸\Ì$&mâ[—à‚¦¸ÄÝe->H§ØòZÙõGÃMg&¬ìÄ5øüyÄÙU#ôʵkÉŸb½P<¹S ÈÇ µäi‰€Äºœ˜]ì¤P]ñëU;Á¾èîÛ÷9ýtdYW)0ÄP|Ú¶™ýtá08kõý’¯¢'ÅÛ¿ÄPçpV‹.@9œ?œ¸¿ö%ïë?J)*ó²D•^r „03¨ªýZ~|Ñf?sœøÙO–þU;´5Ëð>H*/‹£¾½týÃà’sKA$ä‚+uq}Q‰h¶p\ÞQ«!Ó½ó¥ä7&ß½ãÓ¸åKÄhHŒµäí3çÎ…J 8%Nh1çãñ«H?…?TÃW>rÞ~Y¥ýAÕò4å³foð%; ñšôT|Ç\¿ñùj4zì–ù¾ÜÊôíé rl}ÓûÎÝɈjÝL§AÃ?ºA¡îdW[¤–ù«´ëÀUê܋ɷñA²kÖ:íÛÍ5oË!0zÂý*èÃhR´ZÅW xTô'åEÄc‹¸ë¦,ʨ·»ÃÚ ¹ÔX>Êû×< Gô®Û•A>ïïË^ç8GzU©ft¿Ü‰Oê|©í>î ·õ-ÉÔ¤šjÕ <Ïçþr*ÏIåØÜ[O!Ùo઻:$ÕJ’7ïO¢âO*ÁC›¾¸(L¯‡Ùœ,‰ÑצµUO{jÅX­šWHßÊr°†ßN©xǪBïèg›?+îG©{CBn^_…÷F:‰³v»<ï-?Átë\¤×&gê,²§ÍE>ÏR“¯ z"q1D‹opzí\õ›álf²—Â’@*†ˆÓÞà*ÞdöOFBœ¬Ø-Ï–×ä8õEèHRè“ßž2¼ ñ5úŒ6í‹pu^vAv‹M¸ÜÌ7¥†ÈO៞òäfŠÊÁ»/UõT÷Qä»L6ÂÏÛ :F"j s´H½q”Å&ѵ–èÛ%°96$‰„nW³ Ø]ûâlñtü¨fhíï®ë•q±/›è3’Š‚y(&ô*èQv¿(Þ«²œwƒ×u¥XK¸ÙÖVüsvµz`ºØ)@î`8YM§µj? T9ù©F²âîlÔX+IÆygÒb†Ð~Üïëb(úm!ÏÝa¼ñò=³e?̽+KNrÉsj4ÄL/-Û*ææÜ–-62J¤Vømï.mˆBA[Â\à«c_z~¾×(ä ξ.Û­l¬ÇþyápŠ1äíºšjˬˆ¼•ið‡uê_çK2Ä>JÿÒlS½pª:Ó±¿¨O>é3Å JÚ°j¸;ð¯ÕÊ^³B<Ã~ 1À_l ò{Ÿ%÷5dÁ†ÞÉ=ÜdV_Ðq¹($TN9¥ ðtc@)VŠ>ȵ﫞cíƒfR "?Ì›¸—¡¯ü­Ù;ŸÃØA§icÜ%Ý™ÃçÕ¶þ8M¤±@‚i ãâY«“÷ÞhÛÌæé´!Ó…$–ÏòÁb“ }!"zgZ$[ŸçbÝý†Õ€`üû´!oÃZ‘åÎ@öx5‘öˆ*2‹Çœ /BxÅ\çï”Ã8}Is øìÇÏ'‘GÎ¥jÕª1Už˜t5­yUÜ̘pÂÈußÒ¥ím;èûÝ[­nÂÔÏ4c[(FˆWŽ`€v)Þ»­Fâp³ÕC$Äé%O?;¤õi‡E¹*)Crã_¤)Ÿ¯V¯ªt¼ü*f¶Êß·)<'­ç·0ŽÃ`tC÷IW²¼N‰;´l¸Q³‘„0h*‚Ï’ (G|çÓìün_¬vßP+ä‰tSâjì ©:ƒ¸ï.˜¤e¨µ9"¥¨Îtî[õ}'4è“*RÖºX’„kÝÊ€ñß …E«ÞõšõQ „©ìó¸Fu{ú.\õÈä»@‰$ÀMªëŠîÁD Iš …vAú\¹§ÎÌ}ðÑæIP1{qù”Öõv 5ÉNÀBŸ‚PZ7.G¾›vkïFãSÎi‰¸Îˆ­Ö¾ÿJý¿Ïy£€çËRqy´åÞÈkç w5Ït…éŠá‹ÆñŽùR>`[.9ŒžÇÓæMLÌ›³pg/ÈÅ1&Iõ¹…*èÛóÛŸPœezgËS’Ô4ŸÌøèõ•4Q}ñ1œ.ž“­œ¡¶Pzèt”NÓ&‡^H¾í^tžÝTS¯¶¯­R>*¼f–„=Ɇ\À—®S]ý>zŒ^'!KéõHõT¬ùJž¶ÔD$sw³Ch>â:ökéŽcûVPhµkÜÛ½ÛzâÙüç(+›Çüd!>®v%ÂZ—R3çt©Ü3Ùc›âMž3ï¿yprvf;ùø8ÇZsêUH&ZnéÊ¥Ù½äÀL¢;¹-ñ4w…½Ðyc¥Ô°îˆÆÂ•ð25K3€Ÿ•¡ôªJ'‡H¶.$81§|LØ?>΃Q&…¬æ~¢›W®Ðˆ·85Œ¾@šO0(8ÔMGåöŠôæ‡kÙÁaã,Ì­ÒNÖκC–D]¶Ó⾇Y\·èjb¦ù=©‘—©ÙKSþ½óó‚3ih˜äÝêJ݇ýÛ ÄŽÇQŽ¥ Ч÷XœÔM9ø3’ç‚އ¤LF ïD5T Mv+3^§v.O^·€”—Žªwn9Ó1ÇHj·@Ë…`ïÃë‹:ß)*ÔT>×uS$«?šÓ§A3÷@ F¯â]h[ÿ$v(^¡Èê$’œš{bEGW4Ru9Î7pdw7çöqè„kÖ£¨àa?âÇ8º³´áªîÙÐWkÄ»hÒ‰é§Åç˜ïYš ]aòç“•“,vÍ‚aî’8~ʶL¥¼Ó>t#¾ÏÚ+/›å0ºôMGxÃH§oæ¬Ã(`ó z*yQ)“|êRn£¤23X#ôÇžóŽÉ.¬\¶¨Ü„/Äe½ÔГ& fI%¶ ¸E…Å>ä~º¸µ®µƒt6¨ÑûÙ€`¿a_*œ CåÿШ%ñùyßÀ~—" e‘k³ù±R+ñ²+P¡©±Ð`ÀÍ«°ÆàºXÚí¼íí1':ûâ0Ž1‡=ó|ÜÞ8gG‡1zm1 ¢’„9€Ox»aiu>îŒO§´vì[}ƒm¥9 (çáåÁâŽd™#6†Q"âŽg°çã<ÂjM\pÙ¯ÖL‡Rp]{†‰á‰Ä¨žš„;ÓŸÑgàDÒ6$^kc-“AœBBk ýИØnrpC6·Ñ}B#nG¶-ßÍ#RÕãr-u¢y&ÓSì/‚›T5ýˆãSËœFèœì ¶úÚFDšŒ) ë]—ÿŒþÛÛCŠÒzÇ:EŒ„^‘|%m9ž·£ D¯±7®ì|i,1¦û*µÜHO?rŸ¡\V05{û-Ê î‡Zkcjª Ý/rÂ÷…«%ocu+uÅÎ\5KŠ]k&ÃwçÓá☖NÕû\?y5ó@92æ'ðòÑ> •Yz xæú¶`uÚÚ°Š9·ÜRmSçHg˜0Æ#ÎNÐr<Ô_Ó¿¹VÔZTq¥¾§8ÿ Q¶*ôê[œ6U-4sˆÌÅŸÇÛø/Ž‘ruñô‹”¸¤®‰ËÆ;˜/\ _-_⯄«}u1¹^`öT5;*ØG´•ür)WÁèÜÜÿÞ¨:E{bo$¥!àÙ‘2žk™®b¿âyÚaf1vu`eQχuÞ¥šbqºr^?bw¤uá@ÉÐ#IÁ‡­ªžPèhdjÈ„YãÇGæÂÆ÷%Ê9R?¢Dô+o(=•£Éq÷NÏ”ßÇ›H­¿×á>Óí³nŽÉ<åó8¸eÙ¸©'52¹è©ô^ÚjÕrkzÉøô^ðâ!}¯Ì]þ‘žf¤òÖl‡ÔHB‰l`ž0¤! }Ë›f|öŒ¬H»Géì÷ÿFo‘5 ×UÙ!6|Úüˆ0 Ð¹ìÃÙˆÃmMMÚ’ë‹ìì¶æ²>pCÞö³ö¬–®@ùý}{ÆÖá6“í[2õq ™ÖhÀ·m_‚l¯e’b¯¾æúXî8ObOô4mzÎé{_>¿þ®Y¾nl°ÅG}ie$žŽé!"È+Œz|p„J^TÕ¿9¬=2£‡4& 9¡ÆŠ {{BqSsaR á³þ£ 'ÓÏ ã*j6Þ,=Žš<'ý¸GÝ, 1jØæ£¼îù#m¥ÀG•ïàå§}ΘP|‰wªúð¶!WK»Â'}>½%™jÒçQÁáÀ•]tö¾­û-¸ËXØ.g:H9Ë‚¨õÌã†ïæÎæ 4ÕJ4û-'ÌRýÖ´oŒë·TiY­»¨4ó~–• 'bEà‰»„m°B]‚0b²¥µŽLÓ$¯Rö£ùS¡³]?¿Ô=è”c‹H¬Rd3'œ¢}“5©†›ÌP9Äs] Ô¤rh DÁ!a´蔫±†Ì˜¢ÝBÒÆ¬~a97 ›ó™Ž—·jñ¨ˆ÷`×^ ãX솎+l¡P êB˜–>dé×g°vH¬dq‘ÓgW£¬YTd=«^ŠFO—MmÈÔÁJäè¿p­O  V¾ã«'£~#†J&ZrÍåÛð’dµ ›#Z`¸.`©ž$hgÒ’j“"œ]╟é„Wø@ÿ”Áª‰-=*!26/66zðk1yødõbrû5Tàt@T¹ûŸ FGñ¿IÛÒ/…³³læÞ¦©rö^´oÏ!¨jú®âŒí ËÁ”õ©-ùÐõõ_¸F!HøŸ CµŠ~<äÒ»×%Y&U[Ë0E¥çž“¨ŸRS@­%dŽ#‡–´†ˆ¤ð‰ÿ€þ‘w)YR¯tjÙátêŸá:¬-Üt&Ô¯ð„¨“”ÒLe¾ ³ÿ)Ã…Ê>¢yá°ùæáiv` Á ]3jíuììZù@ìvIç2?G_c5 Ëxœ!òVgk ßêŽd™²‚Q剽®Š¾îK“­dix©s:O•%Ÿú-–z›±¼Îy5áêØéOVޱ)|Y*XÝ„gPå M>üvøk~§É(]欹¯?{ðôÓÐSû’}¾Ì\»Ü p”:„Ne±†™UÑ«:{ÞQ5éԪߒN¹핈R)ïg (ß|þ¦•q —Zöv|ô¸Q5¿` 4ä‹Ç“8Êlÿ†„/‡x‚Ê2å§Œn£P‰„řǓD݇ð\`l]ðæ¡^*~NŽ-â Û) i&¹Gç‰HQdÂC:ÃÔN6C.ºcQ§“tß® P ªÅò)[ìu’ÝCsxJûV¤’÷X “óüØFÚLv”iW^‰ÖbDÊLÉí2Á~¯¸ZdÒÆ;Cʼ*BÁ\#Å]­Ý íÓ$Äz±NÔX#ëvĉ¶ræ›ò·}z®–S Üi/çDiJ-iS:˜ïøZ{ð9¿—"ú­ÉywN}ƒÿ %»ª®ËèQàCŸßá4 5…MÆË¯ê‘·¥a¤Ødë@]Ó™Õz‘%ºqS€ÕóPŠZ±‚x«¬%Ïin£ÁrÙfæ í߉š‹ÊLÔÀ Í%³§íáô‘û%¶V¯Â40qõYäþË©>„"±||ž¬l—4ŸrFkÏx¡‡þrÎÁÈb¹q¦®±ŠýPþþ•í·ºçÜr¬¹©.82Ö‘¯lXUF²C‰æmkÀdÓ*/jŸ¦”áR¬z%‡gÇ—ÈxDëê•`ô³ðÆq¯7TAl%wÞä6(øÌ(ÉDÑAI¿µbl"£á.£u¹Úñ‰T¢lìG^NØM‚&E@C Ø{ª2¬ªeJN’¯^Ò[ê‰ý +€Î´îÇ;©zìúÖæ\0åúàÚºïú§ q*·ê{å»À°ëdFƒs%yŽØ€U.Ãü‘ÚKPü¨D±\dç» –Áþk>»¡ÍQ sÈ7yøV©èl¹„&MŽt‹AžÏ{U{ì~ÅëAÊK¢1{¢Ö”EG«›ŽÐÞE÷óÅ•¾ómé&\9É^r° •öÂ_yila³š¿Æ»y­µˆ>ÚGÅ–•F\å6̵F‰s4~æñ¦ì)KY(QÑs'(6H™•™Ö.kË÷‘@`°Ùvr&7éR0°ã°½Ô9ÒHŸJSœ…ýê5äØƒ “ûÙÙ!¸?…÷¦ÄyÌW7¢‰R¿/i «Ã4†o º¥3çªç‹õ ¢ž“gI~yP9¦çø£ºDBP'íIC“hb…ÒbY!òéñ<Í£rn½=7S»À°¹„“ëbMy°y‘LB̆ªë–Çò pwÛz*½°ãØ5æ=¤ßwÓëã×UHx[OzÕZWä8o~øÕÊgG}³z•ޱg2B„Ï k‹‰ ­É/“nm¹åšRtOÂ6.f>ß'fe–5ŒtuLÓCvéb…óîôdÊ ÁKŽ–²Ï6ù½íì(ä˜Õm¡ºL3•üû~ÌIf®jvŸgF -w¿ºö§Dµm¨0šó$xïW{&zA\‘²,hZØ&hÕw®öøðEØ&¡7á<Šb45Ú0JpÒps¬¶“¦•DW÷ÙÕ`~Æ ¿ÆRTWöET$|N‡àäK÷ŸÀnp,d…Ò‡ÀƒšÊ6Ö çžv]1R¨ÛG‘ö£†³ÕÇ‘¯J‚Tr¦Xîé5Œ%Dd"6ù¨Ý`w¹jϧømÅr]C¨òéû›ÌŒˆ“6dA“>#é<= "ñ²/šÞÿmSgTÄÖëóñ YÌ=³Y€w] u/N/ãú66j5B+•ú0ìŽtLG®ùs°mÌ~kv±)ô«dü‡r2WÒ‰QU¯M¿šW= ~aJ,$HOÇL²úÒÂIû,D`@õMôZÀl¢”Ä¡­Cã\÷eÊUá̪stæÄ&bÍÞ½¨/y¹%tÿÁUùµcWµ˜Ñð³Ô‘¥ìQ¥å[3‰}ô ­t¨#‹ð ççÒkHSì÷]O¤HNÙzõûßa\)%` >Cõ=#zë*9d@fæJO© _j¢.ŠævÜÞfž½öÍ›ÿ‡%¬ÝWŒZô“òûœÖOÁÁÂXU“kÔð«ëÂ0»8k³)l·!ÚŸ¡»Y†|G€Ä˜ãœ~4Ûªµ"ÒPaB„M²£üŒÜ°Žè¦D—þ Ð…©<)ÙO|m×fî59a¸²H&K†h²~oråv«(ÙöfJÊÚ\FVÃóâH©Ç~íÄÚ­d £2ôXy½á@“¸Üšd¶ðü¼ÙrU(äWCêî¡F«ò™¦±f€‡ú^ö}«”ß牖ÕÔô€Ù½ Îá‰Ê«ŽØÞA’Œ1¤ÝE.˜!äxk*a/NSEñDÉ¢²ã3FÂ鸪«R±»ã¡qœÚ e+oíý+½?5šÐ„œçpª”|»qdÛ²¨–gA‡Zê5EÝ6¶¸º²|‹¡Ïm‘gˆ9»„P»}‰Ã±c:!è%'¢'2Æ?½‡áZ|XöqËÌ©›¶™í6 ©áÒq3I}q‘äÞ¿Âo€·cƒª(uBr±ÖŽ,d¯µrc䀯Š¡A×д³U¢KÔgB¨;±N@{æO&qˆ¦žÞtqyÙì ‹Å¿ ä*KEöÀaU$yícbÿì¯ü1ʆ\rK]g“eruù݉¦CG£Ö÷ ¢’—,6¹B`0!Öeƒe·XT±|žÆ÷Ðç·w› ¶@Öút RC xƒlBÆ®V3|yn~þI¤Ò´iR‰Æì[Y=’Óeû™ F&d,̳+k а™Öç¡XJ·¸dd:²W(0´ug—qÞô —³ÄÃô(¥B=‰M·)!t½MÎçöñ/~²aœ\hМ勻6žPÃj‘_²]ªodÝò<ÌNøIR¹yH-‘Ègòü¨îzáµ÷éeÓ„Î OLPweIÖQ¼«›•>8¼¼P´º|„–üèô‚n¦¼‘ºU¬²$¢¹Â7È¿û¾Û=‡ePƒÅV㼯M¬¢üu‚ã…|K™ÛC*Þ4¿'¯ÿ,Ùì™I*Õ^ZWEÃD¼ÆOɃ]@Á´ã>P=J…”kJñN­%!*Jk ’®V¾]…%ßjåü+7‚Ñ3—â•ÃéØz›_¤G~ªŠˆ²­Gaà–ñGû²3#ô‡-bé2ƒ:öø`#úÎÊäù›¸S%Üo‡À hn(—>=õ=|æ H/Jà>l"åûhY†öÏbNYñg‰ŠëÌÏ(gzZZÛÛ^õ¾œ¡gä%Náªþ‡&ØÀÊÍëý)+˜,åðdaï#}Æ©øU·f›Öƒ ÔùÛ–~\Ï!ß±ºªöVUŒ¸4gçR¾†ãv4å3¾öº˜½NrúP5×»é/.ê%Òuµ7oF¼C¼)8Ã$8cíC¤…¯¨û¶„àÑ…¦hU-ާ+5añ‘·=I%å¼Ä€›4„©n´6fgG§Nî@÷]Ëœûxý­ ©JÓÞŽX=·íxŠ1bÕeöSë»'H²*cc˼w@ÌÔ=_³7°BËÈí»ðAçíz®ÇÐ}ŸÉ6 1¬Ø“æß«ìr}½†B”tNþlüýžµ£ gš5.%›–”Q‚…Å™4œÝôr ÜãÝyGSD=$÷¤è²Ré ÃÛ¹„}¢O-PþÄåèXìmžÈ *Oñl¢\»I'úœ œdß”B¥CøQ'УA$´fŒ›¨çÖny¬#´!OAýó7 YùŽÉ+¾A{_nÞÐ4dv•Q²äSê6Ãâu!¦‰ZÒÜh_.:ƒ½`Ïp ûq6›âòå"Vn^x'½¼&òÕ›.C8ˆËjá›+º<ÈçœH¾Î{Çå13ÌTÂXyqþ&gWç¾>O(!…+Ûþ$¹ÑÀw_hæƒ!–²¿·é<Ìî^4€”š—ž9~äƒ|éÀôcÙrHðL•Vtl½,üöɵUæ[æ|³¬°TNÔ(:JåšÖZ~KHÓ³ô»;åÅ oùQ3Ü,ü&ÕÓo2Z’ᇌKÜž¾(Ä—÷%4;#¹B_\OPsC$É8Ò*±a<å5yàö¢>Y¼ËÛ¤ £Û€R_ŠUïx¦¼””‡"¢)'„õp†1¦í]¢A®­¼]©Ïª%>YŸ1#,ê;F‰M±D“âc-Ÿ-!9ÒR4ébm@TιTÃùHKÿÉWïØ¥§ÇÊí1^îë²I麇œfayY|H³Gðè¨ø¸Oö¥ nᨗ` ‘åCàÓæ\[À‡¼¥»›ÌI¦[ÿ­®Ÿ_LZg˜Ùæv¤î¹r-[“Ϙºâ’d³ëô ŸNS´Æ½}WwgKâ]0[¤-¸:5ûY†xým5J$ºÅ@ØcÆk_àô—G7·Ý¨––îSMtËõüŠ ´ NJ'ÈÒ±6Pslâf=¿Ö}’ê–i%³s¹÷:˜‘Seþš„å°e{ð¬½õ––U7)ÕǤ‹zeÈšGé§Ž‰ŸIe(Q,>íºšów4úæÙË4êjÅÜb¥5:a‹1™áãÑýüøcº‡~yw…ÞcÞHÔOS~’þ}a µ>\ãM¡'{é»*¸9sœÞ:sìV¾I<å_©%šÕMRÌ:7ÄíyWB|µ&°‹ ?ÝÃ*l½N¿‘›O-C[M±ÑêOƒŒØùäÙ,U“ßÜ8´¥°üíçÜ%”ºð}DÂùPˆr#Q·~ƒ Ð;lM¬•ªQVNðáFØÿ§ ~ñèÇÕÃ3z4rë)“jQ¡WAزú˜Êû;µÚ=A^Qøð䥨Ìφ¼˜¡¯Uq©T˜¥x#iºämo,´vŒ»#°«Y¹¥œNÄJ_ D4eÔ¨§Cí´KËýÍuõÊÔxNŠÃeëý¤ÚÍó`ùs>j¬,&¡y6î M?»™DÚ¼»˜­ë}ÿË)—Ø7²¢!µjè[ö̤bÈÇ{áo/—;«ŽuÒì²Á×5’èõnCÌIKö¯âêÂNП'ŠŒyD<¬5”ÞËdî~ŸvЫŸ¾µè Iè$ç—ò¦•“3!„.}Ï.ã#œŠ¯x: ç-?š‹%ežõÝ’Ñ“çG]Õàû²)⌓ØÆK=—Ŷ2æ˜>b±ÇèíLbþ‚p{^Z7lñõ£8 ÿÛ›^«½gBPO±³•åLø°Õ s0é®ìœBƒÙ嘸ë[ÇÖ§<Þ§â!Ä(øÉCÔç¸ÖªY­±˜ {Ÿâ¹bÅ´‚ßêïG0|.ê[Ô`EEërÒ”¶IŽ»œ¦€¦$ Qžïé7­Æ>HÝrGS1$Žê2]\¼3ûâ>ši߯¾nÛÒ‚‡ukXnü«\–*Í»/Íá){´Ö!?–Ô9 ÕË!G±R®ÏßRÅ;PgQÎ?Xßý»•—&Éâæ¼a•,¢©v.]761üÑ€W|ÁgAÜ?9Üan®­‰mªÎ( ß±ºÄ¦«ròøMŸžÈJHR̘}^ÁÄ­½ÿ_GͧÓ,íá;Ûy¦jVøÿx<Þ Z—wö¬qݳêp·“„Æ4вd[@ymÙaübõ7¬0'Þa‹s¤ýF£Åðz¾[ös¸K 褫Et¸Nù ·ò81¥¥Â,:‡?¬éS¾J­‹þç*¯’3 ä(¾1¢† œ¿Ù@éTé†Éiñܤ¯ŽÜè"Õ‹HïÑZ‚à\pžTƱ})W%6ÑóÓ¬ P†\6Çj¿äj‡Ä—Ùà öþ–zx6¤2K5ûËY‘0²ù7:R‰oº8cÝ6¬éìçê øšùC]O/™(4+÷îãŸÒ®­Jàvä?æBs{ºL%ƒ—ÍÉÓ¤ÀTt«Ž æyÇ«É2¤Çü^ •Šíá:±¡Ïà^kû…í¦þ?³@æ—GÙŠ§=ý|d¶PÝX¨Â]&fƒœCHè‡Öl¢sRóר¢yœãy!¦Jð®¢MÑ*c™aW™Ë:MÌÇcýdz-‹ÞS<_€£].;¤¼Ýf˜«±EQúNÅ}¸ÄèëúøYUÈü0ûP0¦mŽÊA«x`ç@²D<ÇŸ… g]Bü|ÑugÇ}¹a£(ïêb.ôÀž7JHúX4ê,ÜñHåÖ®åC©øŠ¬Ã?µé8í“DÙÅ»öÄÃe~ŠY'3sqP‘r¡« &ŠV”¤?߄܌ÂQ,¸j[…@(z#˜†4 NíÚøãâ´!Ä÷PC-«³\J¤âí¦â|f¶×‰¥“y.&Q;ºÇ<æ°çXšT•¸…£ûºUañ'ª™÷̷Ѥˆ+G—Ή9@(»ÿÍ\ýú$ëÁåû>¾ËvùŠíyU+ÀÒÀGYÅWó*2)ã¿âŠ»!žŽkät}íØÊœ…²ÌVÂ&Æ›¬üŽÓb/O›vÅöNâ¥ËBo~]õkf 1H7£}âÄõ¾Ö ÒÍÓÔ†l¡3ÐU‘‡—_6+¿¯íÖç\åóÑ¡GeÓhè5å+Ëôj…/Ìågmµ›:@/]rœÆÛM`ƒ#‹ÃôõR0\À”8¶@Nª @hûÆÈ¾ïÂpïOÌrÙée@t¶Ïie,ßžð¡ÖÉ"ŸGЯäíU¨¶ïŒH¾»Ò0Û£i«9 t`…¤àòÐz [‹GÜKgØÎ¹¨W8¡U ©´ÂËT>CXIÌÝ{àeÎïZhR·µ óH"n!© E¶vƒr_÷ñžœî±«áÓÈ¥mªP ]4ƒè>Þ °û‹¿é€³GKYÃ:ŽÊŒô3Îé¾Z6fÆ„Ñ m×Ò­™Ÿê†qø.Hº½O JÔ’á<÷kÔÕ]mx«­á²„ë‚…`&oKŽ$«ÜmóVÁA-¼ˆ¤÷\JãΛ?7pïUüÿ—˜uv*UçÊ “ \ ŽY¨çÙò>Oa"-ü¾ øYJ†ÊÓëýH¨žø²eOÝA¼íéAæVÉW“EBVvµÐS0µ$+sö¶U1àœ µNz0¾ä¡F'·* Ä´¥yù˜‘÷š1‰ZwO90ü²@zÛÛÓ'´œýɽ9sD…\OR®eÿUüê÷v»ÙÕÖ9nÈù2ðw4m¾;·óAÔ=ŒÑt±Š§L%©éH•ÿ…õ—I}:5T ›$A•'ň˜Eñ?m$äp•—çõ Ô·F þ,á|O®•Escϸ8÷E;žÄ`k¿bÌ¢jøâH wᾌXÙ±¥}—ÃtÄ­SSl'QˆVCi”êHKØ©hqOʘÏ{©Ýð‹ºÏ~åáe®ç<µ3ºpp Ð2¿´ú?;UXÐP‘}8£Bû"?™–‘¼ÍŽOÈ|ÑI,0‘Y PÊ3ȼ>0p ´èÛ‰[Ì^Ö,Þô']ÑE«$ÐÏ ÍÆ®Ejωíןô€×¯>à]q7¼wKfÔ—©Wp0X¾žJ͘7a`¦­~"P¾|Áh…®ìê¼ç‰·EÓ ð‚¾C2—)+N[˜/lO‘;=Ü;³®vOü–›±ÖGrü0¢qqë£ã‘Ù «° ËC§|S4¥• 4“Ál.¦õè gƒÊGÑÝò8eU²M½Äk‹4 æK!Y§â¸P†Œ½ˆ3 žŠGhfÿçBÏÁå87Ç—áΔ¬V#bßZÒ˜k>šåRíÈ·c´.—š@gx¼ŸË‹–u'ݽoe+Uös›q4ÛÝñ™Nfµ–ºªûb‰PøE\±+8bá ñYÇ[7Ôr&ˆº}q?{·ñâȧeƒÂÆÿ´©_RzH–¤zãõHwœ~ •ëfü š €8N⯬×ÎA‰Ôþȹ5£dBPÎéúqó«bF¯Š°”´’ýe. !,DGh |š.ëQzD²ŠBî?µÍYøIó님“ÆA\q ä[ãŽÕ4²!Ò±œ Ã·\_7e( )h1OÂNñÑÂhcn(Š~“êãÒ£‡Ûl'‚'µÃû.èæñmxyªnQ>vÖþ±iî.ãî Š:†º&§ôíy> Œ° "xª›ƒ~´çÆ |ž‹¥}÷dI>'O BÀ¡«²‚^ÀœûAys‡¢ù*iÊÓcHLT{>]×á n…¯Ü¢†Ç!Àž×f1_É·[My‚Åg”/1¨±:h}Û!lÃÎ-JMeÐBŠðÍ5µ~v6L›eí<ævýöÕ %ž¶™jŸ+Ré*ƒžÝ)Èl 31ŒÕ#}GðÔm?AѺï–Õ›4Ô†)]Uä}J(AÌ•ŸÀŽ©ÈœÀ´dÈ¥_}5%”;|*”FLø¹°ô¨=í™­õøÐuj€…8ûܬ³?Uù×Bm|¤lŘXSüÚ*¾7KXæcîøÉo¹Û,¸B6T~™ëÔÙöµ¶ô×á ¡­£ÿy…ê É»–¬0{­•'Ñ™g?¶ab]jpƒï‘°~H Š>•5yw¢êÔüD'•ØUk ¤âÌJ©°_ƒ¢ðÝÛÕI\C1Œ6€€GQ'Œ;Ê%2Æ—(‡œek Î=ËÚ`¼éã— ìIøL®ÄÔí èk·!ÈÏÛt̤4 X«áó˜`sUÀ‘µdòâtärW6é€eòŽEÙb\¯VvC»÷ߟí¹t]<(Ó?¤%&4òÚkŸÈPv¤¬¤ÿ4HSAÕw)œj£Ã•;N|®½ž Ö}>(ë)®¼— N³2‰9Q¯rSþæ½Øcíñ†æ»MC%TÖ³Ÿ7l\°à,m=Ö®tæûÍ|‚$ܵÂ1#å™êÒÁ1¼{O)$"JÎN§ðïÞíKüQì }-×5‰ãj¡ÉÜ>™ã€Ò;™-uDׇƺi©E7ûšüsÆZ Ÿ ³1ÏPõöÃÇR Ím;ó¦ñ¤ªççø©ˆ©oN*/gãô :  3ôÏ0ÂÃü÷âÁ‰÷9 ƒ“O—™ТÇLKßä©ÔèKäGì·8Ÿo¹g¤_œ8…†»þ£²ðŸ:ê!Øæô OÝöq“‹£»NLŒÈ'|Ÿ–MYwÞÁñ8— B™d˧&¶g`ô`wRx nQ-;õÅ&N§Ä!ÒÝj€  8Ü~,ƒ}ùC™-§ŽWWD®cÝòJN¹?·Ùgcl[ÞÅ iö°¹ÑëY!-NÒ©5¾ŸûÂ;YJý°Ó?}6º×hüÇð÷’É¡µœüÕÞ5y~‰ÁÆ ÂÅ’¨c†ÎI­M¸ŠFoéî4®ì¥¤Á­¸¤C+Ö—ÜÀþ=¼ëñó½ôÛúݨ3e1òˆn•Ûž£é‚¤a"8GIrÚŸ<Äúöê2’ûŠ”àÝb&ñµ{\}íµ&’\¿ô=æiu #|À7 @÷@!5·[¹/ì¢ùÞ„ô„tÐ^?JœQ ™½Ø Tdè…×¥ë‡ã·Z')µæœ[K9iüs]é†uû "/àx<ÍY+Ä›ÆÑƬdH¨o¾}©.]¤sPkx˜ž7ßõ»–¤xÖƒiÁz‹-¦)n£ÒMS³ˆwYK$}Ç饫ô%C`‹HdcQÇ„éçØ=-lk*Áþ4JX2Ô¦«*l%vg•Æ~jBœô)øNMR}h‡…ÀdïoÁû8ùäÁ¦×J˜"Ô•“ÀÒüD£;]¹bP·ºšáve^%Dô?ÿÜ—€¿/yU¯sôuù¦EŽ+»YéTþ `úØÜ:ÁVã…0aš7ù±h¼S5f›ZE¨‰‚eÒkóþF™Œc†(¯ h©HÛ˜aýË(¢,LáLººs€ê;ׂVÌíW¸…êW¥Ç×Y´ï=îs±œúk´p 1Z%˜¼ÚÂäN endstream endobj 696 0 obj << /Length1 1442 /Length2 1785 /Length3 0 /Length 2706 /Filter /FlateDecode >> stream xÚT TÙEýŽddQAå)†¬€‚Ê.;BtЙ&é$-¡;tƒQÀ¨Œû.ˆ+êèqAY\a@EPÄ QDŒŽ âï®ÿŸóÿésº»ªnÕ«zïÞg354ÜÞ]€ÅÀ>*·gÒàÄã1Y€Á`Ó ÉÆ†‡È%ð'?ÉfŒË å|…ðÄaHNø¼ 9 ÂPà¯&08Ì™° —O@ ç/(€ ðÇPXF²ñĤI8"ˉu>ý ß0]\fRÓ{Œ#|A\ Ç+ò! Çø,Oú¦…+–Ë¥:]©TÒ 8 ÃE³l©@‰ÈÅ –Áx,Ú‘A0F#Ùž‘ Â1¡\ á0 „£2"E `«ƒp¿@"…Ñ!pà€ †70iÌÏ决µ…t0âó±8)„&!¨ B|iòD9@¨@ „$2ŒÈ‡ DÅ€ÁÖ!àã>@Ä„ÃóÉø8"•Ëh2D¢‘®-Cl³7*ðÄââ`T.#iûóBp˜Oì{}øpcQL‰&²„*jÇ(¤ôù(¯€ý¼†1„‹ôÅ'‚åÀ‘Á`8³ÙŽp"_L×.ÀK’ƒA¦ÖMÌ J–bR $Æ€Uˆ&>¤d”9®€UÉ_¾µHL& |9ˆEJúRpÃÂ!›8IQ ‚~LÀÐ>Ÿÿ `¨$é |ðˆéAa!>¼àÃ#zx`‰ Ùž ìYlàÈrN.Ž@õm•Pî‚ñ%ÓbÀe¨Yb—>5œ0Ìʰo$"óAaA("狹1䞯ՙAáPL†ho`Ïd0¾‹ââÇ·‡Œ ä`&´óíŠÞ(hEÆrtŽCI$Á$–£#HfjÀ‰ƒ$tŠÉ‰@L§B 'iÔÉ Ð=´®Ak¦3 ¶˜áèðW&•|1 Ó±¯L¢’|Ðü¦A¾Ç •rˆèþ“=x%Àp"Ì'57a|Wõ’Óê osÝ-”öëX—{×ht~ä=1áɼ4Onß+öÁµ·ÜËn´¯í{0îëèÇ¢Ø3FìâûK3×rÌšÏ\-Œi£.­çÖÿL¨`µ”–FþÊF"³îâ°*¥fNƒíxj|ÏãÆÝ¾\rqÎ?'ÅÝc¦vÑÆŽ¬[¿vÌggöØ‘ê?Ýwÿ™ã‘çÞp£ÄÏZÖ;§îùÖÉ>}™5,LJ—o£Ž@Z3-:; ¤šÝ³2ž^t2øµ4Ø<ºè=áÝ&Jšæ‚:•#»ºé°ƒ¹×[ôì°"dš:/~~úÑÜ«ÇO°Ú®ÏÖðºfªíDQ›Ó ozèæœ{ˆ³ u7…R.pÚ{§×/óåÔ¾9<Ûj¡lÎ~¿äˆÒžéSêšnί§Ø²UÌTcÇØça|Ëtäà–Í‹ìÜÑéëZ{ûo-í? ³Çß7¿°­Úð¡’Þ×½VeÕ­ûßÝ£\O|8:faCØm¹1âŸìì;è‘v¹]Dœ‰nè[É5Z“8Á§nRY°}OSZ¼>Í.#Dé¶îîšSa&Ìrý¹/•xlϘg]üê®Ý;ìUƒï1ãßËvíQ:lnéiT×à5¿Ü-^µøDƒMñIƒ³¿ÝÙ®•//«^ûTÝðfÞ2ª[YÅ‚©šRÚØÛæygý;5?•¤wšhTØ¿çanVÄ)‹ÕW'´èůÞ!þ->rÉaã}ÑùžŠœ‘!ײÛ6tˆM.G?0Âôª>«ÐÀ.:wZÌœŒéí/v6 \›•kånÀ !ÿµR-Ü¥Ž×O¹ÉOÏ¿çòÔùfzÖÙ# ?^ãß7Ñ{RÔÛ^ðAsdþúÎc…n“yà>—¨T…ÊâE¼/J ܘª9“àú¡õP± š‘Š*Syá$ìk/lé{[æ¾'ßô>ã3q`u‡ Æx5#»å”kbüå¯ûý“IÛu~Û {ßGÓ ¹¦9}é!;é}—¥÷§F[V>v¯Ø¾¼{§ù–š’=ç…äûœ@ÇCyíÏ‹ƒušÚÚWø†\Ʊ¬%ço]©jóm›\Ÿô€“:ƒ->fûâÉÇ‹O9·B2-ÝØáWº•Y1:SÃ~ÚH}쨠覣Փó<¨^ÝmÖ1s | oþ.éå)ø2µÚ„=~˦)ìþ™AvOÖžh¿°kÁ[ƒûäàˆÂlqbL¤þ±;„á+î, ´(l *cröm‹*/›¿2íØº1 òUb!ža„~¬ðå*²¸Ž’£· ¹qµÞ²nÌs¸7‰,¿sêõÖ#ÕožÂÜ«_jÐp‰·a—ÿÜÝ÷6’Ý­jNêM3|ƒçdIzp¼yg·ÑÈü¹Ü±íú!Ç&~[“™¶/»èí7®d~¯ ‘®ˆè:”Q­L·œU‘r4ÕC¼^º;5»"Ë3³ XQÛlëö¡¤(º-d†_m°k'å· ù‹­ÒpN”Y')åÂ_†¯7]šõÜ¿* üú¡)ÍÞQå#‘ï‹a[D©U­¿sz¨7·Í ÊL?6¨/-xþŠz|Òï{ÜŸèc–Fã_Šã_ÔrjÅ>Ý6+9`åUo3ôÍ–_º:LýÞ-ß¡Ú]iýÚáœI‚*ÊÄâІmœû»™õ5óÉçÔñ<·è×óc5=ªRÊÛ’í“+#ÓÏXY›¬[œÕìyfW)ϧ0à_n!ï"heÑ*ÖKßê™n×ípÙwÖø]•N,·2´TŸ{é=§uõÚé ö³ÒS#Öž.°fÉö÷y”¿~¹±ªÈ÷^ÉùçBºpÍ9»€Eæ²Ñ×'ê™ê'9/i#76ξ¯n­´m¨5˜šçïjÞ9e¼CûÉXÛ¿½B§f:O¶Î˲?À¾—IëV<އ֛;ß±K4FQÚÏ›=úî Ÿ½SÐR4¯O^îóW±œ|%êWåÄõÆå…OvÜkýI¶ÀµóúñÍèQûfó‰GZ-ê Oòµ™TÁ«~µæQ(·ûãda^iõíjßå«tÜJš'IO,ÍjšðòŒÞºÕ”FýS—Š4›Ùz›·vø±dt^N1¬ÚÁ‚üêô磕öºÍöxX3p½xdCµI‰.¶>˜µn¢Ite é¨}í¨Šƒ\©**ݧ—{­>È1k->wcʼnç£ÕöߟÎÌïÛYkn^W÷GïRsÅÜ`]÷UÞÅ^¬ÆY­¢6‹©ô´¿ÏØ=[NÞ˜°¢mY‰~È¢+Ž&?ÜúñÔzîî·ós©»wþ`Zª.9¹\Î6½:ÝúÅÛ»ªôIûÊ—U'®Úê¿­xŠÕÙ¨<Þ²ÈÑŽm…Rô™mêÉOoÇaܾÅòYçd^ç3§)HW»æˆÑõÒý ;V~\ño}>X+ endstream endobj 698 0 obj << /Length1 2036 /Length2 7279 /Length3 0 /Length 8501 /Filter /FlateDecode >> stream xÚµTÓ6N£”t*N¤ÙhiAºeŒ#6`c€t‰€€ !!]Ò)"”4‚Hwƒ (¼SÏOŸçÿ?ç}ÏÎÙvÝyÝŸÏu¿lw´uyå¬VP%Å âŠhê鉀@A> P€ˆM†r„þc&b3€º"a¸ø_\¡`ƦFaâ4p€š›#$‰ˆƒDÅ@€xÿ?Wq€ ³hòÔp(’ˆíÂÙÓfk‡Â´ùÏ_„º_”çW:@Î ê ƒ€áM0Êê„é;tåù_%8$íP(gq~~www>°’áj+ÍÉp‡¡ì:P$Ô µüðìý=@φüm×EØ ÜÁ®PÆàƒ@áHL†Üê À4èªj´œ¡ðßÁ¿xÿœ Äú·Ü?Ù? Áà¿’ÁÂÉ ÷„Ám60G(@KIƒåâ€áÖ?ÁŽH&ŒÃÁV˜€_ÌÁ%¹G0fÀÆCB\aÎ($æøsDþŸe0§¬·~€pr‚ÂQH¢Ÿü`®PæØ=ù߬á÷úØÀàÖ6?‡°vsæ×‡Ã\Ü ª ÿ„`LDl¶P@Š PÔbÇÿ³¼ž§3ô—ôÓŒ™ÀÇËá °Á õÙ@1?D^H0 @¹ºA}¼þvü7"Ö0 `µ…Á‰þTǘ¡6¿1æò]aS F{ ðççßæyY#àŽžÂÝ/¿¼®±¡¦!÷ï‰ÿõÉË#<^¼Â^A€°0@äþ}€ÏÑÃþ!ü“© ·AîÿæŠ9¤ÿðEÿsýÿ¬'à¿k=D`4 pü‘¸PÁ|þŸ…þ+åÿOß?«üß$þ¿„”ܹ9~ùÿ?n°ÌÑóŸŒdÝPùk"0KÿßPCèï•Õ„ZÃÜœþ׫ŠcÖ@nëøï1ÂJ0¨µ6 ±û%ŒßfýŸ+æƒCµHØÏg €þ³WÌs‰Ñã/³6ÿÝQAXÿÜ/aØÕìIÄÈH@XàÂ,¢5Ôã—‚ü|p “ÀLç°A¸ý¼Pa¿ÜOÓo$‚‘Ð$ àð‰øþ û~Å‘(À¯ô øUþ A¿ê¿H ãÓùƒ„üz†‹þ¿è>¦;ø_$ˆévrÆèîç“ãߌÕê_À”³»þqcHBþE˜`ÂsÒÿ± ý´89ýióó ø­ÿ‚ ?ôÏÐ?‘‹F£ÿÒ ‡9]G°Ó_9˜mþ‚˜Û¿ ¦§Ý_33ì/ˆÚá/ˆ¡ü§„!ÿ bè þ ƒóŽùËááüÇÉuÆ<çáŽPÔ+èëï-ý“‹aéúİDþ9ÈŸІþM#œ?é±ò£Ü¹1c¹ý1c¡ÿ‚æîÝ"†“熘Ø'P×ßÅþKú7W qÔ¯gf/þƒ½g P(„hz‘¶¯ n:+—crç]"í: ?¾f¸¬È€^{ø@òÛ‘`vÄ”\ÛØjÄ·/”[WµF´@‹yï¤qÚéê&|«%ïaJ©ó-¤†›Àªzk«‰¥ ÜÚ–v¯N§ÇýXv”“ŽÇå`eœÁÈBz11Aœàf¹ÔæRù ¹Ñ±UVä¡ìàÎË[Jß’:û„»f y°a IL››¤ÎêÇ©›Ò¯ÖÛEÕ-‡£lËíŠô/8›‚8¬´cq¾ÝäÁ ©Z4ŒPo"¿­ÇTWè.»±Zö1!<%'‚ÐAU?a¶À†ŸÛð!аklÅŒÐiAó5—ýqCzÙ¶z몒‘ZQ yÊÞò`+;Ïuan¼Èét)­nεàJÞcÕN–0ªýïØ8”éš–ÂJ¿'cÑf±)s_–•cÃÌÊØ®O…›˜qG3I숢R"úÀóNÏÕF§þÏ«µ!8’Æe¸yÙ ÷f2~ ðèëeÚèÆ«„`Ø)¨á]ù5å"ž$ ^ÄÈÓ)|)±#Ä1øKyùÉ$E?g#Ë´Ý}ÐI‘Ÿfžþ§Ü—…o?Þ Ìl­uªºõÑ×{o\¢^ß{4œÄo%R¤$Õk4Í€e~Ñ)±±5ªò „øq/˜6¾Þ¨5ñ®BGÖ†kSˆ›-¡QÉsó­j•£/#ý¥N«úiÆæÈIf™*ï\8Q‡ëüÍä÷žðꤜ !žYGÞ˯Tiে.ýÅnLcwl³•F£– CQ+e<[©“ÝÄœ‹V=[''ìu»>S'*é•?ÂXç+ÅM«%¹‘f/D\N”ãÏ]ÊIÆð*Ø}e##&ª™÷Ïz &°/ƒOMaÆê].¦Q¡“môY¶•ëc¾ÝKI]_@O¢šD÷¥8o¬4·˜]”!Þz ¬Nåa×ü©àf¸wêL÷8$šX€u-…â=§¢î!Ã$ž.š§\…0VHƒË ¹ºŽ‘+I2öÕ;È[†Ûm‚X NYÍA1©æCØþy‡{O•ž‡4î=ö…×øà“àêdÈGsô!zŒe¬…Ô6Ô;ßó¬ÑÔBwkãîæ5Èá*Ô,ÅF{„º,Â\3Š(¦À„ÖJˆv«ò«Êº§××C© 4õAg졜Cx"]£LlÞxKOØë–u"ÓT †Ø§Ibc±opFàòtáÕq€M±(?(è߯X»}´^2 ´WÁZT‰†ï6ïÒJ6¹èÌ}ÇüÄo£} %mj$¹G_¥7Òp”‹?ûÉŸ•ñ^_ÛJSz8'/‚)eãÛÓ”dÞíiÚ+<{œl·Õ$üÒ.„5ÍÒÊ— >9&{ÂÄÍÆ—°4âÝjüx•ÎØx¯›Í¨ñö³©ó#º/‹-Š$*#ÙÇwj#N»Zæs|¿‹ Â×RÏ­Òß+ šVæÁ,-9Õ’­³íµ‚‚üûYïרÃxeøöº6kø¬9}"›iª±ýŠ“ùuÅ@ùû¾~&ÓO"ÓS2±³u>ÄZ¶w•Èñ™[P{NŒ€°ÔqÕÔ–¦Ãf´h–\™.-Œ¥?0ÓŽ¾Ièu6¹->_–ÕÔòL˜oîŽUÇ‘£¢ígÖ ›tIuƒm‘9ËOò) ”CŸnèÞBT³DÈZ, Ä8 Z¹Æ³. ‰®ÁÜñ'É$ßõ¢C´ºJY,ή› Çñ±}¡ÛÔEëëöÛ7T…x°hžÌØx ÚÔÇ™„Ål^3°Â…¥ÎÉÄänMeÀ@–#ßT6™dJ»©$%Î?IäPWÖí{ü2%YØ(ÍÛ> ûù°×)ž`Ó¤¼zßT¬e2qQy]QV„Ûx°‡àñíÄÑ–“ûUG3ÅÞÎPlUžn×üBáÐUŒ³l€ á&›Ozfy[³¼¿¸UaËÀZð ,>]…Â-óã±Õôa~Tm åÂŒOW?çôgȪ›FÝpÒÙ#ÏV¬Ge‘½‚%‡£q„7xD²öT=ÏšB¼nYw‘ÄUV©*݆QrÒ§–/_–¤ò+è¦Yrmq8vàî#Kg<ŠBÞëFe$ž‚Ë è¯U†§_Ò4OÜLrWx®}Î óÏ$f"Mß.CóâMD%.r¤¬(%Ó3;½$z+Z»ÿÔBÎE¦0–ÿ± ¾¯{Ò|RIA]Ê—«ì‡¯ïxt)E)³sO j>Ëyê“8È–—BXí>Õ°§A j#ÑÖP3×.Íj¹k&ðX,æÂq;P¢e.‰ÈôSX®HfÆ÷ìJõWÛ~<ÓEî1œe8°Ø ÇÇ{Ö½Ãh×zÌy#©PFôÄÈûˆ §Ød”„_Iï³Jí5œ°+cv%¤~‰Ä~*3ÕYàæ§ž—‹<ÌÕÁ—N2o¾SCÞ+ÊÚÌÇlâüÀÄ‘œ°ñ¼•VGlpS¾ÅŽâ.v²‚j Shê1‡|R݇'bO«Ï¸o5àd~þê"¦õÖºùѲ\‚Ñ‹2\Ñž›[d{ü_sGŸªäs„Z^?{c.5’»™/¼4lˆÏ^Õw=a2Ìîå=8!sqƒ¼”“é–.^ÿD4ýûœø„H²—:½‰ WØžXà€½#0ʤÀŠÎ"ºcˆ¦¸=“Xí,í;b™Ü a`ªÓ¡Õÿ=$V‚ؽmÌIþò#(¾äI€q pFõk·ÁÕmÒ‡?›†â¸Yuµ»_¿Õ îVzà·×`VSÞ*š»hýZTÛÐç=W»ÿúŽð¨ºäAÇ+#æäkîù×GÊiDµYž¥Çf-xD¾™MMä°ë´‘³h2Ǿ6ˆešøJ>º<Ó$}3Á¾œx÷nªV½¦‹VÔÛ½Úû¸VènÕeüY×[ž+ –KÌî’$±r!,ܼS¾’"¦vcu»öÖ}.¿žˆ²ÇlÝ%^á?â3U³ÎÉ<ÞKÏg#æ€G Vƒ·ÂO‚õ’Õ=É|åù$ŸgQŽQ;Ym±Ž_û¡ÂÁ6—Õ çº6=VÐí†`\êfM7~Ö´|ûbM ÎWÛvY]ÝõÂ;IŸä|ÞÙuvÖúbÀÌWªPÚöÆ7.gÔ)®icq¡J2›^Úƒú†åqäÑ%’ÞëôH5vç+àíN¥«W°|*C_Q6ü ê±2¶‘y‘”¿|ãª²Š»òf¿_ôW9¹ÑúAPÙDÑgtúáüãZ¨ì±dÕ›}kqm–MAþ/´É¯²ö ¶‘ï• ®)©ñ ÝÔ3|[ƒ:hÈ}j´*(›Vk—m¸{,Æë¿l‹›‹ÇæÈI¿Àu–n×óôY¥a•mûƒ¼² ž«`·‚ZÖÙ ß}YjâoG}d%8ŽŠz…äG8ï莓2½îßym¤àrj2,«^xÀµ*ju,ñdgô D[8Ù'q~u¯x}æ{8å–JZ½l`ªÆùæJ‹f- £QëfÇ—ðù0¤Éë²ÁŒöØW,Ã(½ÎjúÀ5¾óàFÜa*5œBî(ª¦µæ/Ã;žˆu~+5øVc)2ŸÜ˜©s¶íwßâá³II{•I u£÷ñqÒë>_r$Xw© n—‘6ƈ³L:¿YÒTÿ@Ÿ¹|¿ÑÁçsJUÿæŒSutg÷˜m| –Ÿœ¿܈œÍ!áòOä 7Ýr×o1¿äŠ7«{oojªlWd&à×·ºÇ¦šKJ=yÙ,œ„‚-«š#f ãSÈ—'x[Ÿ§,BŒí(¯ñ;,îžæÆi·²ì4ê WD| 5¼Ç¿ËNYŠ+w—ÀyEšMDlo`ôÊ3“~k Ï4c­uàmQÕª§[:[·ÉÇiÃË™ùüy&‘h‰Ô®xµŒü4…¡f þí]_ëìïõ©Þlæ®ítÔöºH‡#¥ú ©;گ̱¾ÈEYd­”ßß ÀÕ/«|õQ"M“¦.3Í:ðÖ¿ÞÄç5}h7îc,¾oµC7½<¶:i˾Z|Ÿ£ôÍ®sHý~V] Ä[£ŽS½·QèctÇd.°ŸþìB»µ³Õ}*{öü!— {Ùu{.=McÖ=aÜÆÚËT'.à Á½›˜Ì¢ÜÔU=[oós}Ï:JÉëÅ£Ï5åïù[½ÙFζÀ‘gš!ƒw(Ñ8•Çé£ý'­ GìKÅnÓ>³àæ…lc/±<­‰‚Û{/f4m’úOzšA™Oúó§hqZ¶{â…èÊ“‹P·t!Ñaeî„»ïëYƶ‚Ÿß"/Pã4R»§_ske Só@t…Ï?óŸm÷7±~÷,ŽK9ůÏæó€n!YW"ùmĽ‚Ö|—¬¼GSsyE%w•Bs§zHÐìä¨ß;Ù!yÆ´žë¨ u—,k™Iž׎ÔXÊõÖ“çÝuÿ!þ¨ò÷Š'ý½“WÕ…“‡voµi¡ ê§›¬^KÖ¼¬M¨؈O%;°5-!a,·¥™ ÷{ÓPŠÖ¥²¡°´N4Ú‘æ¶Œ<œñ¥vêúü~>”ÕZ Ùe# N×ì…r ÆÎ?yzùºº]²ëÌÞë„Hæ u}{¸Ù&í‹6ÝøjSR|$¼-Ák_ˆý%€H©¦ì¤59]Ë›b~à$âó¥÷£˜`ûu"ƒ+-œÎò£ÛfÒõD˜·NX]êÞ`Ü ]|×{sÈ] :ÀE× x ·—ºÊ ¸?hÛR%ÐV£›¬’ïÛ¤º´ûÂëw ¬O¼`Ÿ›í²,37$¬I¤òË‘ª>/¸+ÚMe—änãjNè[–Tç†Ç+_j0ô¹øóÔø™²ž›O¼àÛêšsÄ,š2sTÛ¤¹ºÝ!Aþ½¹‡¡omשµŸDóƒŸï.êÞµ!‘:Ÿž1B1R!–\V¯HuÜóÔóó/k›4N&GM_^u´õL¦˜Ü½%Ù©šê·ªyž€ýÝ.p¾7áOlK£KÚ­;>ož:má%§Ž}¦oÔ0ûvjÎU2}oéž¡fHp{uWêûm„¯¨Ê{)¹ˆ+_Å]\“©Fo PÏŠ#÷†ÑåžÖ%Á”Í{/4xÏ~^Z<Û0ü㾇%K–ŒÜ°{ziM@ÐÃXâhƯ®ûš­ÇŒÑ›kB*mýž¶‡}yv„‡›ê Å1t§‹ðô§|b‘n¯[+ƒk´ùZ§PÇ"I’zæ¥X<Љý–f¥RW9XþŠdkAF—ædqòrÞ®¾hwJº,¯„Ge‚ ­Â¸S&”Qs¬Šøøµ+VNâ»qÕo$\ÝUt1âÙ¿Ü=M<:¿¶»É#{ö¼f1DÃvÚNuw1ê8µ›Ñ,cJït'#«±ÀéÞ“ko>¡Éž½Y~åœ[æ^Þÿ<`PÛÙž¢þªÝ—ú Ø»Î?-Ç%¦Ëï —{u–sj ꨩ(–CžÙ»`d¡J¢Ü•–`–¡ƒUæ«Íú•l%ÓäxbePû¨÷:•ëN>e´ÂŠz7ƒcåq~z÷@~â¸ÅÇöLs,m-‘` )Þ$:ùsÏÛSLeik5Z÷±ômÆ"ò:(]­Å ç>ä¦*¥ÇNùæŽAˆT!o˜Ð«Úå“§Í+ø¿ÓØ… †Kì=mÒßX^àa_ÒМk”DByPIÁH%!½hÉy÷fÂw”ô®žŽÕB Z€X¹¸Ã8K Rv.ÎÇýG~[KËãÔâÏ Ë1ŸgŠ8±æâJUË%ºòC¤!8šàeçrã\ä­ÛØs»ž"ôyÓUbäWÈp¯Œ6’tjN©óÖ}–Î6Ÿôr¾Ô>Ú¢ÁyEÞt}»d^ÅÃzÃБ$ÜÇÝhI£ñÏãËr8uN¡ApÊ•ÜÐQ_)=£ `»pÒ&2cÄòÖ‡–˜tË'ˆö¡»†”ø9ò ©Ä/ç±¢N†¸€*ù}MÂò?$ØNLdpF5_sg•c<5¶J‹A°40ÄOjp‰Ñ~f·ž0ÞU)‹ƒ RÍgMKܼ$Œ ý¬£ût&ŠD@¥ŠxjkÊ {½xV‡¬/mÉô;©8]ÀZ&ÁݸùH—êb/Ùw¬HE¾¾K/YzÅ”c_ã2h3š’œB‡h­âë[E›6‡ïUKÔj0_>2÷c¥ƒWiiî,Ëgk™W_o²ð¯>±Cd=u‹!ï•ËìIPN—’Î 6$­æWÌxÅ€¦·hv3ÐBc Å÷\“û¬ä°q1èIU'UUöu4uy5¢¬šÞA†LÖ&ç¶Çî¾®NvC²ÑêåË/¢bšT5‚œùŽ´ûp-nMgÒlfL=\qî·)âêõRÁ 7?u3ÖOî¾Cpâš›<ð)•uù2P‹Ä¹q›6%ËUžøLø@S/«¯tuBÍ›uêm¤@£eªåó¾6Û–¯¥b.ïš;éå>‘‡¢~¬3ý©Hô´R­ íP£ž ðMgM—¥¡u×ßÚlnÛÚà•9±p—‡°A·ê½ž¶_ä0ëÂ1ÇyžQ£s#˜>&§€c‘¡šª^ûµ3¤+#º:ðéLÂòáºFÏq·D‹Ÿ9³ÿùSÖÛ-)îÈêBr¶‡³"ŃŠS-ýÒGPÂ]Ÿg]ólÖm×ö¯Óý(­6ï[¢ehÇWF¾?à™É¤tx;$¨W4î˜~´Ã ƒ«ZÕ×D|¶Ò×Yqâ0Rûê³÷.îÀÂr³ßa°Ã4ïEüãçfàÌ$¢ÊÙpÍÌó8®‡Ò6»4ǰ·. —Ï£ c¼šì>Ñü}}5w¨B•h¹<Ñ[^ã¢2ýv†¶ÊÜË™áIx’4l~Û½Çt„Ÿë¼ã\bZ^Âëì“û×<õúpâë•§{XÐl3·IW¿ÇùÙlþè}¼R‡ig4݈›«[½P"½æÜi×ÜŸ#«÷"³º)%vàÌê…/§ž 5Î,íë à®TÕHV¢l»˜%…ôþÓÅ-œx-,mŽìàЯ—N«WÊŒ2T*îüÎW£â™ 4ƒè‚œ9rÓhÒqX´ØhÙ|„.‚£²jd?³"÷ŒLK8Ê×qûfïñ+ÂEÚ{ÅßÑÅê¨Ï LØj’y‰¬¤Wþ.çž3¯’¸}Ç£ï:_hdÈšÏ!Î:õ) «ÉvÂö¥Î°ý<%xB¾Þ4qä~õ8¥kþÙânq½¾¤lêùX¾7«ý{QõÄPݡ˛Ôåuû^¶WMå¥ëJ>Beê<ÑÃA0¬wXŒ·êÕšD/)¿R%È Õ÷âoõ Ob0?©c:¹–B¢’_ˆb uڣȓ¼~QsøIiÿÓ·ÚåÌÊ’§ªÁ›ÂTëx¸‘tËÁwÛ4dª˜¥Bó ÷k¶)ÝDWö…Í£¼Ï®]ÿQ™=Ù¦gªwiî=Q†2ÐI«½ÉŸÜGÊ>šv±ÒZÉ5Z+¤Ý§ágÕ¸¬ “*Ó–ÒRê ³ñÕ~ZPtT Î^¨Ý{ÑCB_V:Œ=7F°®B¡7âP×8+˜nÀ¾*Õ"eo³;âB‰‚gøŸ)îù$+æÃõãà¡>‡Ä¾ñSs›+Sæ¡™îPgM¦†~Ú’1ã1N97#«áÕçØXÍ™¹ŽÓŒâ›ëïݸîÃáo4WOÄß7Ž¿>~‹E[5€R-· 0ÙR‡uWGÏñÅRªfþ¾š1rn©bk#É[áX*PRžÀÛÞmQ\ýv¹¼jrœuþâ¤L1eñ¬n2È„wl²ê£§y“?Jîæ)2Åü„9¯†WÈâÑ&*Ì:ªµ¾3ûœ%½ªþóLÛÝ2­éG1ËÈ@uü|}­àDRqh)ËÀêsÍÅ{N¯‹7“ÃC1ôáã±Ø+âv‡þ‰Sí¥ÔåµÒÛû&*&š“ï Å¿²íÜO$.¼(“'M=b°bùâå;Q3le0åOb Œð`œ¬õºÉK¢ñfZ›—Ò7Fu0 öõU>~®Î|Ðßš(,QöN5®z5"|¢é¡Í¼VBÎ}îH$ÏØ=½ž5U_Lx} |$^ ±˜—(ÊäÀFb&0É×[ ž\\&ºØ}³§ñœH@;É»ÅᄎâËñ„‰¤OÜæá,2%ö~Òó]Æ‹AËaÓ)´Vn“ªzô:"lPHN[ßbUSVm4Cðñ†6Û‚{ô],dOùfµ1¸FŒ·5W¿‡W&«LCï‘’’›Óˆ=·è]!†±»ˆä ‹º‰¤Åï…ËM5O!#J%“ÂõñÊpY±¬î;8^•.¹ÈØeq-æI¯ü~óí°õ`xv\ÐZɈª Û¼çŸ6K¨A˜CCŸ‰ÇüÁ ¯~*ÉA‚'só¡ï6î°GúmáM§’öX„`¾ô»æf‰/C¨ºyà.…ïú”HS‹lÓ»C[!c’±f\;K¬D:§§·™˜è´vF©S=œÏCäNîYž}QÓѰ»Æ3hþän6z/Œ•âæ€7£zi|™©CúlRTè3ÇR¥~P)›ñ2ìdÄŠø^x-Š+²`ÃÙnНÐ/-íÆdìöuxàýªÙ`Å&t øüýØLŽ QÍ+A´!’å”§ý<ãn€Ø’9HR)¤Ð?¥í5㣋…ªÅü H7ÖÙYÁ¸Õïí 2ܶäP?EiEð+‡Ý3eSŠLˆúÈõvÌ œÌ+–Ä"ŸNpÚ±°ÎÛY0Y«T´=‘ÞM¡Iù#ÁŸÙå£Ñ\“eù‹¼ô)ÿÖý^ª¯h2K3vÄÒLÉéÏ (·´ôeÓ‘ý¦ÖÃ¸Ž¡·É¯™«™òèg5#9ÉäÏ?í–¿Y 7®¢®{›4jK³úÖ_VpõÅû-5A‚7lwb¥B·™O;ûªTL…¼ë² I½nÏÿ¨Ø8}ħÉâ;Ó‘ðŒÓÇä endstream endobj 700 0 obj << /Length1 2270 /Length2 14125 /Length3 0 /Length 15471 /Filter /FlateDecode >> stream xÚ¶PÊÖ- Á nƒ»»…àîî 08 îî!xp \Ü=¸[p‚w‡79ç|7ç~ÿ_õ^M3kËê½vïLYIÄ l’Û»0±1³òÄÔÕù¬¬̬¬ìÈTTêV.¶ ÌÈTš 'g+°=ÿ¿Äœ@@ˆMè‰SÛd]ml6n~6~VV;++ßÿ‚øâ@7+3€3@lrF¦;x:YYXº@–ùŸŸZS:ã_é;“•)Рt±ÙAV4ÚÔÀ¦V Ïÿ¢ ´tqqàgaqwwgÚ93ƒ,ÞÑ1Ü­\,ª g“È ð[0@hú[32@ÝÒÊùo»ØÜÅè@ ¶V¦ {gH†«½È Y &#PrÙÿ,ÿw#àŸÞؘÙþC÷Oöo"+û¿’¦¦`; ½§•½ÀÜÊP’”gvñpaíÍ~mÁ| ÐÊh ø«r @RD„üGž³©“•ƒ‹3³³•ío‰,¿i ]–°7ÛÙì]œ‘×'nå2…´Ý“åïµ±»Û{ÿÌ­ìÍÌ‹0su`Ѱ·rtɈÿ1!ÿ±Y€\\¬¬¬¼l#äajÉò›^ÝÓô—ó/3D¯·Ø`òµ2A¾½n €‹“+È×ûߎÿFÈll3+S€ ÈÂÊù;Ä 2ÿC6ßÉÊ Ç ™=6ëïÏ~@ÆË loëù'ü¯ýeQ×PSÖdø[ñ|¢¢`€77€‰ƒÀÅÉàæãøþ7‰2ÐêŸ"XÿdÊØ›ƒ|× iÒÿÔëöÏöÓþs4èÿÍ¥†Ì,@ûgÄõY¹XM!ØþŸý¯”ÿ¿ùþÍòñÿ]¤«­í_nÚ¿üÿ7ÐÎÊÖóŸÈȺº@Æ_ 9öÿ;T ô÷‘U™Y¹Úýo¯Œ r Dì-lÿÓF+gI+™²•‹©å_ƒñ·Yã÷³µ²)ƒ­~ß)&6VÖÿ僜+SÈ½á ™Ç¿\ ȱùï%ìMÁf¿Ï;7èäôDf…Œ;À› rÍ@M0€…ÙìI@ÔùÌÁNÈ¿7”› À"òÛô7â°ˆþA<±?ˆÀ"þñX$þƒxX,’€Eêb°HÿA™?²ºÜáTúâ…p*ÿAÕ?¢öqBÿ‚pjüAEšÿA|EÀ?¢Èä?ˆBctú㆔cúÄ 6ÛBöé,œœ¿-vvo ‹Ù¿ ¤ ? Rþžÿ4ñ·ßÑ2óR :Íÿ¤@tš[¹ý‹ã·ìêô¯HˆÅFˆßâ÷Ûúw¤PË?eCúcéé` ²ÿWÄfõ/i“Í¿ DúŸ¹!mä?¤Qv $à_Ü«ŽüguH,ä%ü—R±Ã7$×òÙÛ‚Ìÿô‰“í«ÓµÒPÈ þWË!o1‹ã¿ Dú¿:ÁÑù§p®ßäö¯FpAÂ!—îŸÈ„Ü^,.–N í¤^wð¿ ­sý„´Îí_¢Þý_áóü#ërú›ì¿¹©«D¼Ë_·0äøü׋ y€L‘ÌMB¬¿†´ÞV‹º3m MSmk¥Ò1yÿpjs½GCH¢«Ê ZsºIìÆXÞ” ½z¿Húä}ÐT‹ÞüI¥åÁçÑ(^ur»ya§¼à@ä[1“úûŸ'GÍ@˜&èYªGW^4å<¬[÷^)o}¥K#asÛ*;UÜr¯K§˜¢5¢ô¿ÌPåšdÍâ‘û0#Òcžz Ï\]Oc~!•g@ö=Œæ(ôÖ]g¹›õZ)WgwîħÄ×Å#†¹Â™¤öÝK–Å÷..ŠZšÏf¥c†Z°ïÊ;53¼f)$cg’šgð;/2™„âùP¼¥¶ ~6ƒr~u•ºAæj8åPl|€U®1å;Ö`LÔ9¨ bņ“ÿÚq½[3Ä $Òe&ؤœeáxô+ˆÌJ?ÛrÍ£@@”á±N»‰zù3?øk&òCE;PæÌº°Hä„y«+lÔ˜ *3ËJ3øqXòÞ9Ƭgi>E ã®ƒáqý`Z¬áO§ ·+ÌÏãdÀSæ½"Õ¨ –0M” ¯x4‚‘BŽ¿ÂB0c.oÑȟ濽^,¤H5Øá%CMQóe¦|i)À)Û'¸&âä•ÐD}—¦(IP?½¼}ݦÇ7Lø‰¬¼ÀÆèãt%”êä´ îlê¤Eß"Ê kŒGñ´¦‚åáŒ<%‡ò«Ô¥£·S?<[и2Ëß2v€É'xh"v›éá$ Bakt¡_¦÷¿˜¶œ•ŽšðF;QKvn!®~a©Éºwº¾Cýº¦žÉdiݘ:Û™€È?÷õ׈‰ißtžáß„‰ ,«ºa¾n²ÁXq-u‡EÔÇÎ/w;öØÎѨL™‘8´ü~±Žå’hëûA\W ñ Ne$„Æé'e'˜+tÝæLa9ßÌñêÔÌ1³aXˉ8G 4žö¶ÄÜ©Îx’Š©p"z¶DĬ m£Ô§öÆw=U±DžÀ/t³ýªœ{ÒXR7ÒÕ‰<Úí’ò´uGö0p+h~ ŸO}ßñÌgÞ°h¥ÒêPÛÝ·:é‰`§2ãd…ˆc7, ³¤?Ú©€) åZŠÄ_K^‘òÝ“ç`+¡56K•f[½ áCKèÄ« oÓ@§L–S“ÃH/s×Ï«ÆÕ~<&#¹'ËE¿l€3Îu|~yãtÅ; mŠWRòGs/2Ч¢P·]×Ö5(ÝrÍ ‰ÁÏ÷î·OL—ÐDPï[üá7û¯pêX¶€2 ©¯UaŒtÔ('¿µ h·Š¸AmÄ ÇÖ@óCzu$'½ÅœÒ~œ˜ÇQ²<Å¢Aëé‚yÝeoÅj•w& 3»|]½öº}²n,zÞ@;1᤿á'ÈÙsÝ‚¾ÈÅ¿\×ëßÓj_-»L³Æ’|”±4˜~U­hà¹I ða_Úhx|qÀÞ Æ%Fnw ÷,\¦˜•’5ý…$™uM¢“ ŽöEìI-Ãz˜Þø‚0Lwûd!1p‹iªj–bÕ¼{q÷™ÑH##ìƒåº¥WþóíõŒŠ “)6¥sUò:¬êIôC ƧáQæ}·ƒó&Á¬ôk™qµtM¦T&±HKõï’hÈID.”AXã{ÇI¼ªÇ Ùó¬ì;«¶ÑÕ†ù6•ò÷üeè¯åIigÈå{fP^H‚„"o²Õœ¬0’Î^?yÃðÛ½x†þ±† VÖÙ°ÎDú°ŠÅÆ6ä²()ŸhIH£x’ªSnXY 6äÔSHÖ?j {óúª""~×Ó„;¨ ;îûæD¡œålêë €5_½—ÅsÚ@÷9KóONI\Ò­ô‚ȼ‚Â¥5´DžlX5ß8Z¼ù]ŸîF÷¶7ÔÄ€÷ßÜìêj¡MšR¡éxäÅ‚‘AUO›}ÕlÄÓ"ãߦ}gˆa3ñžø¹HÏúÚ$¡ëœÏ£o±ä O÷ü.WÓF¥BɆEÓ"Ñ ?aAc >¦ö«ŠçøäQ;|}xµ2˜"ä€wj†¾×&´ ËñÝZ|ûÅm ¹âb™ ¹ÿx ¯*l? þå\‚0€—)ˆm¼ë¥s޹,RvW”ÔÅÀ¯ÉkXrÙõ[ton–¥¬´+´_^ïlqóѧ¢Äè­©<•œì£ „j¤qÿÅÌ ©6¸2jV²6¦Só¡7¿4“V`À.[ÍUó#.hUª¡yã#Ì \©îŸîp: >>Jîâ£Â/÷ŠÂ€ÝN9Ý_ùn× ™å¥‹aa—=§¥ÿö€kù†·ëâ 'éÆŽÐ n¥Z}d30jÙÐ7ðŸ9’¨—k¿˜G‡»"rJQ¿Ý²Íþà(­èòúôøµØ*mã©ÙüçF²K£Ï«ŽCݯ´>ôç;Ú ””ÐßV=x·¬”¿ ò·mÜ#m¾f±¬2@gž@Do²(oúÌèT2¬“°ri×~•M¹ poêµaTùoÙMHÁÿ%‹LÔÀ°æSÖwK¡ë_·øÒð=’B¨ƒm Þ!rOK±&C”•Àd”úµ…R¾vD=,ÁÀ·úÍ~`-ƒ­Ôá_!ei%d„×o4ë‚ Ú´[w¥)Õ …)v­žVÔ.-«ú›_—;½Z¨UMÃü‰¥%Fsœi&ªÜZ= аBÁÖƒ—ŽÜpµòtk{ïáÐå‘2ù*bÚ°>Qˆõeõn‹êTÑZølm^U58jÿ½¿O±\§ò§KÆy@ “ÖÆXVRÖQúÔ1¦aÊÊ[Ý-&¾ü¹¾èå*?,üD«O 2§:›?HËДj¸F1œ^ÊÈÂÍ`>[ŒnLx0ú†0Þ,áå¥KJÛK´‘4¤k“ˆ“ßM£ä„B?ÙRR£b®Ï»µ1ë¼ó ÄÌ©1ÑxÁSóNdçY:ƒ)™:D@‘Ͱ Y¥A.Ú „Ã0û‘÷ø_n¹|>RÂóbâP}@ÜùÑ ;ª—’ÿ‰zjsÐRüùƧZDeMJLÀ¯OÙh Œž Þdoºö缃s… Ža}jZkI…U²²hŽ!ö±›ßdÆ|3NÏ û$Ö+ˈÉòyR¾Jë5UÇÔfðkAÁ‡ D8b¤«_Ó/¼‹Ðòb>Å5}ÁT­:e¤|ÌQñçuÂxéÐ- _'‚fÑz”§¯Od8})r<¡$ÂÓ® ¨ÔGÞ<Ÿ.bú2v©!ùÓûw1_  }JuKuÙžà »¹ ÆÕÃWjÈï&­Q…½-Ó©Ç „?¼JVËT›)åšÍ¶ex‡6Ó UÓh‹Î]µ­Q©Ó|RBSQ|g”ç@‹p"Týh`ÈoÃèÃ3é€ã˜úêæúJÿ9866ņ,=¬r×>ëþŠ}äcð{•Àxz(\,·Iß./»õ…ôs–þ«âªoåŸñkÐ?\øuìOH™ŸBáJ–ÆâL b,¬øøK¨ˆëá–*w±É`K"K:ÒÜ~p)Àãc¿*QíùýgyRš&"sfÃæîf¼íKH\Ux8!pJÊw;o¯Ýék.²ß J™ eÜi»k]¡à“›àù¼¢2–OžÈÀ£MÁÈkfeŠþÉi%â–6QÕL"ºŠpù¾æ¯êžSµçÁÞ T`Ÿ [”«k„\/±ê ´½…@¼w¥Û•MYáñÄ–ßÂûaÃP„¼ïW[Ju®fi*=N$Ѻ|'¥ÖÖ9gj©à¡/#Ôœqø^8@\´6¤ÇhA˜Ÿln ïsW½ßHL•— ££¢¤¿ÍëbI—8äaF#4®›aàéV'žKŒ`Éûì—Ïž' ÚŽŠlɸà¢S«|£ýƒÔM1²œù)tItª²ÃγûC¯Û§ËcßÙQÎÍŒm «{ò 2‡œ#²úÏ»åñhÌŠ‘ýrèéV¯“˜[¢Òp*“BX‡'‹¬eR)DBº6—ŸÕzëš&sÛžý¾+…§îFÍ ¿r3Ž,{t3ž ·CGî‹Ðαl,~Jyç„SÓÁÌ"dS»T;\§4ÝY¸¥Bù€>òöŠ’´»ˆQ=Wž=r\LiåQ3ôY(éö»Ú+ž ×üÀ$£Ø4oLÔ¤EÊC~ Ýs«v¶¡ðRÛÌמ¨=õ†>*Ù¹Õòã¦ÔøÒö tˈHãÅCw>– ¼¼ÔNß3´ ™Ûf…ñKļïIZ³§ôè LºåkŒf«¥žæ¹Åvn3.HϰĄƋoÁµ ø‰‘ZÒå˜ÕGë:0+¾¸4ÊŠÆÍj®¢æ8”ŒY'³IÓò×3[ B÷îèvßXí51f¶‘’mÓ^G¨+Ù»àçsÏ+ko]:¶n‹Ç˜³Ù9ó ÷f§¥ÇîØÙKoŠ„ŠÌ¿±›JoÆGž[®øL8ÉK†Ú‹:¶6·ÑXXJ‹êËÎhæ»4°D-ïöî´A»--ϯ-*;IP**ý 2»Ûs«i¼þBŽ®þJLðÜáS܆Vä>ÈæÃƒy™"J5ýR¿gDš«UMnÖ¹Á¨‚ l»™Ê Cë“`ÞlW˲ʼëJÁšM£Ãše¨Ë~=B5Ñ«c,€›YÉE.–WkIQœ%I¸¶T¶Ü?]¬WOÃcj©l"P;ßßù²Û"Œx^´=[ ÆûKIVšÂ84Žó:¤Ìm\—è«L+Àx\¸“ÐÍ5GÚMƒoæÞŒ°¯E¥cû¡Ý—Ÿ¥6è]¥n±hF²Ë[‘"Ç{êÈwH˜ÇóÖ+Õ_­!4eÝØE·ˆ…gOEŒZÎÞÕvhF¶!݃{þ•Õ*¥S„Äœ¤¶…ÅXûµÛЀ´‘LYÝ·ï+òªxô15„ p*݃ÚUP®éšŒ ä¥TFq%Äqòc!äœnËM…Ý?JÜzZt¿_‘Á!oÏŽ?¬é¼¿•üðÖÛÄm­9ž!áã˜"½ΧaG+ƒ[ÄcCyºM’ÈÚHâB;Ï56¡‹ˆp¹_uX1¨iU~ÞVu.ÞSö‹Â4aáì_Íë¶Ú2ÆÞL8E»Ä¯}¼I¼fj•\­(ÂŒ,€´Å-äùƼGRXa/À(/h…Øõ&9Š„°iáUo×lóÖt[RwYKù‡|³/¨ìh7Ç2Ьî‹ÝYÈÇ͵ÎÉcR +7Y)ßX€CNª€Z¹n¿ì˜GóD—:YLßg{ów˜‘ˆÜ7à¹ß(ûŠ!œÒS#Øx \æÚp/‡M¡y ¿¢jžE5ÔfŸ”²0ÈM¸%¼Ñ´«j¨€.R°ô¸Ùú¬L}B;áý™pç<Èâ!oÂp.wà ©·`&aØç¨¦™öÐÌf`› ã%wl¹9Z:`&Æq\–ƽ\ô8ߥ²ðK@J ¶…ÒŠ±RMNášéÌeÓ'”JýL9ú –ÔÑ7µ•ˆi­q_ùt¯YݶDã.I´ä„Rü·Tâ €|‚ãš‚L CŸÕ€|GÂüNò^Ãñ‘yj[¬ŸýXç_V/“*Bõ¤˜oö¯œ¦a·vzPÄøSüÐNò´Ó¡!@íîÌôÛº2PäíôS€{Î$Œ°n¥¢]˜†Xíýêcü\l’€m@§)¬€¡Ð—Ò›V¨!‰@ŠƒõPGJ5‡YB$BõN„S\ ³£œˆÄèk’îäXô³Š¢á_=Æ£*â¸"ã¥Ä4söEܰJÅORS›”ˆâ£ —¤z*-»¼Î‚ŠâÜ©üUŠIž±¼±£m®Ÿ|óˆˆ[:Ú¦Ïd¹É(¤ç.|wo]ۨȕ{š]‘#àxE·ðd«±¢4®b¶ËìÒ 82ÏíEÒf©÷ÁÚ œ€Ëj†y‘ü ¥Ñýñ©VεõžÅOöue?{¶žTÛr—Ûàuž½Zº=¤kø4½'T‰ø’É'ù¿.‘¢Y¦™ m^¯ÓŒ•CŽj¥fiûºÆRó}«{œ‡½|¿Äˬ±czf_ÄÏŒ_8ߞȲ°vçtæÕ”ÞÉk‰ iª¢g&{‹%Ã1k¹ïõ¹ÂqåÊÙ‹®81u‹·äu«>a€0«ãCùh…ÊÎö çî9Õ¡Ô¸÷˜N¤s:ˆ¢¨- a$¿~[ÄùqgmêmÿÔ'½£1áhÏ·1ý-Cƒi»Þ]Y@®¬ ­ô~Rf"Ië’t䲩ҕtD¯a1J!0I¬ÑíOB0¢€a슪Òo9)¶î©P&2Ó@œýà÷µ%§ØÅúhº˜*¬>‡#=ŠÒ)ׂ‚^ÿÕ^—w»è7÷ÖOPNm,¹¶Iëk›çÄ×õòÍ©Nµ…Á(ù¡‰7|Qµ€Õ~ (R»©2—ƒöà¤ükYDÆ;¾ÊÊ3¿ÍV.áæÓµ‹Äm—’ÎhÓŒ¡D¿y»ÆÉü`“žŽ[h¯w´Áq¿-¤qªã«–Á¤Ó˜šâCŸÞ;õ¶\£œW{u©Sõ¿:2è°9>‘5H‰~Õ@OWÄ?¸ß Æâ¦)nä­YÔ‡z€iΉæãÏiý…Z~T‘ú³t*ð¨"臩Ÿ|(B¸°êœ£.rw­-Áí3ùÀÊtgŠö·-¼ä›]j‡Ÿ}a«ßL¶Î ñ¾ë{l¨TÕuŒÛÎH¤ïº~Ó%ª1\üþÁ¾4.£ü} Ÿ<9õTÏ5–Rú/ä$ŠíùЮd,:g–8ö¶!Wå‘@·™úîÇõ5æèîÈ_ŠFäÇ\%~4%–bäLÛ´?,2m€à ¡)ÛÇ´.óe˜ÃþZs¤ex•â“Aê|€Z®L ×%|t”“€òÝ«u´EŽÎo»›5üp¸_ü¯DæÈ¬øŸOÖ?žUA (¤‰¤Ó¡!1Kkk_Œ¿[Ò¡³Y˜KßÄkμ}÷hÄÖoÄ T8.ÙA¤¨é’¡+ª9o ÞVpJðzìr½9½å£lê ß"­à„§¥°¤)’§'$˜*³þAЖï!PÊó‚1‡÷>)÷Þx:„hŃzØ'´ ±åíyr@_£gŰB[9&¥/QAmX79gÿgRŽXyU>ß³+™§¼²È†™%˜à厈O‰:˜¦«ÕóÈUꈸhSuSxᜰ'±™Rl‡7ѦöBgçášæHÖy MY"Ká¬%ä6BÛ™­(ú×''9þäx@É9Yl«:¥!Ê­ÛÜ0¥òñåGÚ“6™öÏÛ+#~_zD *áxòùµUÅ5c1°Ä±ívéu›Õ”Rʇ„¾Á¬Y?}‰:Rûü®±E.Q’Zè;âDZs6«õ²Lp†í;Ë °qcåUìÀÁ¶*œoƒ’j÷8µu@'E{%¡ŒÀ…Õ‚l‡¶R=1qòÍÇkÃ9V§‰U<º—½—#|v –‘ÖæCÈpÍõ³´k÷) i ³Í®'L3ˆyWˆï Ñ&B·ÌKVÇX?%6?íƒQÖœ¼Û¶×SŠ-Òô}fIæÈ=5ý\¨QM×ÐãpßõèÆ•50¿ùš[ŽÿvŸy`Àn¢ø;ßÞX±£Xæ·y÷>$ºùfá°vì,-Ë0£=uéžq»®ñàðE¬’Éu.ÕóÑÔº1†I>´ÇË'[2Š«øû‘ûu¶áµï^EWiCe'ïø~C½_,º/;DdŠÆ$ݰ´êUYÑGZ[ÆÞ-öÓM dîŠ_û¥ÑЋ(UDŸÒê>šÉØP4ë:'NË‹!¾ ÑH;BÞ—ïŒó1mÄó.±Ï«bv2ÃA“Œ žÓÃÛ=KÇØÞ… vŽÂW’|7]йÍöÉ‘. X6Õ½Àé³Y›º³6ünÒOI(ï–¤©ÌÚëyí §åNç«’"û\¦Ô:YC=«/رÃÛôH%"ð‘ø…T žï“Zbc’`ë;žâq©”ƒqČ״èç]5¦Ž_Q™íÛ†Õ2SKÏýxvmÒ3Q·)/ÛêÍøŽdø3?a§ÏÞòÎE¼¸ü$ä}uÌL@à•ü®%aDÆb…jÀ>'Z`Áao¨‰ñ ­L ¼zÆ cÌFö 2EQ*îÁ^êá"‡ßKƽCmüm‰¤­ç²U´¬¡ŸÆâ;Báµmg ¤YYŒ}ÔÓ<ÓˆieäìþöþÎA¥Yúòm?:×[)wo,¤_© x ÷NÂìZGŽu°+¸ªJýP÷¿R¯Y^™F8P­&ú¿G“i1áÑdBвc2’D{‘ª›ê$µ¼A½qD"÷1sø°ùA-ûT4A|šÖð7Ê@ýÁ4¾ã;›"ð*f'Aú"YïUQ(IftNÚEàu³;q&Jì¯E’½g-“îÇO?±¿Œc³¶¾ÈÇÇÁ~¦˜®G„ªä”é<`nDǪØå8÷T2|q?…CÌçfé@ˆÖ¼ÉÏà˜…´ÇJü;ͼ@?¸Ì„ÚYUŽllI7»Çk\ù²…Iä!¥&F{­ --=kbü%«˜ OO j°¤ëDáÒÓ{âîUÇ£—<U8Ž):ÁÅ Õ[˜çwƒO.!R»úHâØ\Q%Í\V®Yoµ Ñ)a¦`ÄÉ,I €Äí¶¬mš kç7ºä¯¥Ñ›Ï^GÅ1§çÏåz;n¯¹m…êø3Ô²Ôˆm;0#ä›>·=êï*; –¦ßúšÞ>‘™9zŽü¨ñ«}G)(áòv©Zí¾‘¯zå:×äZ×57ÖÕ_¿¶f ªH¨kª‹/·þ9¬ [ͦ•“ÿ‹g캪}Rµ‘Ê ôÆ”)²Òæšï'¡ZÓ½õv(D„=è¦ú™ïÏ?ÝÔ±›¹}8;_R‰âjCµs¡RFÒ*"ôDg•ö¦x²#N“H/MN3”f'wˆ´«XµuhàÖtÙ¨=žôµ=÷)f̲âaà¬Ôa'.ûã»E¾#Žl%^h.É,)„†8C{áA_r-ŽÌ É_e(I××ÔäÓ+¤3ê?4·úÂvÛ†“™ÉA©p”l†v'l$c„¤rùŒRE²°{Õ 7›®ê¶ü^ëYP/W”ºžâ^wC—7Ú´ Ù£™—oY÷…=·`‹Ê­Á3/ç?| VŽ]$'vÈóD…²ÇFæ÷m}w^ª-=¶³jmg¯æŸ€&ÓÖ'ÒæÀ¯<òùH))Úw¦E8{¹ßüÑ_ܲ"Ñ!Æ—Àͳ“h¡z;egæ«Ç:Háfá%À†ìE^`™4©CL33mnÀ{‹,‰)ŸíÃÙgïù8?ôÖJE2³Ý†—Ê£IG{¶¶ÿèЙºH||¡+N—:™âm1û£%˯—¸nÒ¬°”¨ÝeÃNCó"˜Ý&oŒŠTrÙáýœp+ÉUqmþóõˆ"Ó]n‹ÓeºG®Wur K\pðò›1Y!1™ž9Oœœ"Ïc9 ±qÎ+rNëÞÍõØP£æ [¸¼€†A-­D²K3ê(ktªl¸’•òÆB`óHïè†mìG<‚ꉂe›E#œÊÀâ¾ZŒ…( (:Úä®ë|°U[ù°Ò˜óx5 /?ˆœÐóó"Negg'7&èþ]1Q yãý7†ÑN•ö÷Y%ì LUwpä/+õîÙP!ÔŸ3’¸ÖZ¢ÃuëÖ\+"jÑX+IéÍŸI¨–I<ÀKÉèHQ¢–~ Á?íRd…áëeÝ;ª›óM¸fâ’^iÂ'¨í@µJtÔ© Q‰{ƒÉÐÈ™_$ë%}#×muàiQ.` Ôé[F䆞Ö5UÃÎLåtJÇÍí›ZQ´ºyU¤sdÏ.é‘Ïå·%ŒÞ#Ç5‹o¦o(ÿ\x‚›÷g$„AðDÝ! ¸×Ûo¾¢RYÁl^X–'±Ì1:ü¬š¯|¾N¨©*«Z{Ñ3žœ>P„ 0gì¨ÞÅÓ‰¾‡ÏóÍŸ›R;ø‘€ФÈ|I¿ÜÄ / ¡°ÿÖóÌ…”*ÏE>í%:V‹SJýÂ3…ªRý¹³M¿cº"u‘X¨vç’e›<Ö“—‚zI й¸û >¥·úJ´ëû®àG’HÒ®ôU—kŒø IÀ<J·Ð¤´_BÆ@…üÅcfÏxloÁU4WÝÌL³õ¡ìçbOÇŽè#ðr—‚¤q™„%ZÁ©¨ÅyC(2þº™E³“ôv>ØK¾DX‘CÍìè$ÇûsÍWZÛQ+‡à(P(ŠÅûÕxN£^î‘Ô™÷û@¦ì eÍ–tg<ç„‹uÿè°Ó÷$ºB¬ª6º™#“lBÚm³î„©A‹“¬z5d3ù–ñ’R¹Ä¯G‡RÿÇ›€Šüfcž9p³©DáM}Ÿ3Ø^›<3ž‹, ¿,˜¼=ˆ:QÎ ¿MÚ˜ýš,a/á€m·–3tÜä³f¶ÆÞ‹úvLjÉ’Zª"âu\˜ ¢C¡b6J`pmÏDЏÓ;øÀ…bç©øeÃA wtÚB} sÝÅȼ×s-õ9'KÖ+^ø v¢ïñ?o9]eDL†Ç{¬;7)…ƒ€…‹Å’7±Ad©bûGe—‚å3N¹–ʵ̶̄_¸4rÝ:±Â€Q.ïó„„xÙ_=p Åh(Ò»ðÇU}¡Úc|be…:ZMõîsøÒPÑÿè'M…‹¤8l%hM›C᪠e(ìûðÒ‡ËúÒAõþÌ(ÅÓfÈ*±ár&k@¿7(ôðW[ñÞôkèù×éÂðLFcˬ²è–¢öDMœ‡!míÞ.tø1ÔM5¨â‹olHŠj|Õ>ÐAñbМkb¥ˆ’nbªœ!wk,÷\â ©B÷#ü¤Bîz(”˜7Á?'Á¸žINOå…1EÄ«Ï[`´Ûáa*ó,ÈHªC$0Ug–l>-;Å¿Ž ¥¼x_TT”ÈšŸ:޽1Iôæ—u;Ÿk®ø5Ð$9ï‘äÓ©‡*]jFÄÎsû%\fÎ/³÷ÔÌAþ÷ÃH֗˱šZ¤8¸fuø]H=ò×5CDý /®º £SïèˆW6Æ{„?XÅ=ö÷e†úÖ#Ö\ZW¶5âÈ|b‹ÃÒÒªÓÅ‹!A~-ÎÄ—³€ókíÙ]Ñ6«BO‹†×ŒÝCÅê‹§ñ˜’%ö a\sï|²XÀ¢2ÚÜ™0i˜YQg½ñ4*_>—Èmzµ{]bb3[vZ(¦Zá 0+S<Õ@¹=}§ õƒtÕç«Oø;,“t#=k’6PK曡¼N;îy~‰ëW˜e¬ „Î@¾ò+åàø5ýñDŠö‰Ö]t4æ±äQý2¿eÖ ×³ô¾¿Ž×šVe&ªÆö:ÅC <_fb‡E=Çû)æ¨/²h4V¦îR£–aãNÌèŒtCqœˆÈ2Ýž´=‰—n‚Dtï"8‘t#Ñ=ìxáÞ¦5 ’ås–|ç@c–%ñ0ƒ¯bß5ÒÎw òçô½aq“X¬Oûw±Õ¶õ‹T&ïâ–ÀL7¿ÂÍ”–«‘ÜîñK °=2ÙNCµUÈXÍ}„+rgÆ,§«lLKj32;2§6½þÒ ¨*SX k íix3·L²uó5ÍJÖËéÚÔms~éÆtœUðp'mÅSdN†M0Ø qîÓub™½)± ŸúJ67¦wYÌóᔌ2¦¿çžÜCÄ7]$Œ1Âôˆªæ:>+ í„, UÔJU^ãÞã7Úaē͎¯@ÓZ¢Yh$¨Õ£"5µ(Þh·ˆµ†•$„~úY>ó1˜Æ åGDq]ôlEºî‰+µMö¨Ö@öQŸ›äërœEIñ[-)¶¢Ý×MA«ŒäPó@ãçª)!—8×ì;þ²·IG6nÑEd¦æ£®¾ÙƒX’V¼†uÚÓ8pÉÏÌ ±¬þ¦}¾¶\e'†5õ,»XçÅ@æ¨NôeØÂLX²šä“Eßã¼ñéì-ê¤JÕð/#Õɧ{\§waC÷;Æ–Ì+wçØ©C†ßt¡oU^u^rÀŒ»!‰oY¬TJGŸ¯î0µj—Ð;š˜+LJ¹ûA]¸çOWÀç;}jz‘lìU_‚p…ϪC#z–:âPâ¾ÆIUÓ{5å´(¨,4¨ýÍW&sLŠë’­ša“.ËÃŒˆ®'ö¹*#˜rŠ^Q*,.dtï^hØU8§X)i&ä|¸uähZ“çàeÓß\~¬*‡}Ú#WuUx­À8…—«7Üɶ|i-S ¤gÚ#Ïÿ懭 ú¡x¬üAdÂk<øÝ¼¨†—6¾+çuÛÙ ðI*¹&"Kâ²â#Í7\UM]2€âbθÇ<½ÒƒÔÇÂâËG{ÕÖËÔéóåKÁ¬»’C4NÁ¸´*–sc5§™¢¤½J4éi&ÿ㋦£»Ïö¢ ÅæÎ_~)žÊþäËŸ+8rríЮŠÕ½¦=哨 LS ÙúV$|2ù¥š$ n¯·šïEººª(ñG£MÓ¼—D-"*DDF1Y“ŸÍ2M×ʯ÷¹ý%¡`]øeãšpuÙ/N²åÅÑ:KaÐtB).>Ò[®jŒÄß{…' ¢À `À7÷òI ø›N<³Œ·RÅSò£ÖIf°’ã7Ç ˜×ÍO q&ìíT)&¾ `Ÿ¾Z{ÿ¶jß&éãíLë; %ÉÚ¢m™6ÊO]ª9ã%j¾ØH_ì¸õÂö[ƒ~ÅWa2ªåƒ ™½ô \ËL»üW\î3„‘=GµÑH*SâõÓHCKvA¤‰Zdiå(|"‡»Œ#Ë@bìÓÙÕ7ORAÑŸzxsÉËøMn½Ÿ$ŠcÙ홵³i^‘ì6’á2˜^©.QÞ/Ö»—Ó—øåÇx¹ZI,Ê<Ó=ü˜ü³R_¥àϾ­n¾þ1«”KN8vÈëéOm ãi®ñŸÑÞÐF!|³ö J.±V›GC7º]™ARG%x‹°J'ugÛÕà!wOZæ÷@ˆ”õ ´ãc£êd÷t´JÓ2õÉ.HuÞÔmã»5ÉW‚Ê3L3ÿ ÊÑMM"‡JPâåíE/ÎZE8’H­}˜1˜Khðî MŠ™ÏeUŽÏï?lž·ö'l£ô ©é![s Ù"äžôc”N–R¸æ1v#-%·‘G¹’uÃÔ, @ř㺵|×ħÈv].  UBwªÿÓÉ5l½×+d»9øJ¨‹õgç Ó"§¡œ˜ü}œhaÜ «ÂªÑ«ÀÎ$¡÷Â68ùZ¸<ħsÉ?ðBˆìÅVÙ69ñ~¹dÖÈî,xÍæƒ¾ Œô‰Vâ¾$LýÄfÚÔFÛÛíá!<ƧLã´¬õrs,€ êDŒ•ù,¥--Ó îCñÌØ;JÛƒ7§ÔPñ˜>›ßŠð[üà%Dºe`!’Ú æÇ:ôzó}&ã®ß·ÝMe_ l ·Dðí’ 2Ì5'3P ÛõªÇ]Kú­Úçi#zW5³˜–ÎÞ*Åy þ[Ÿ‡ -~ªa™’Í<«ä­LLèê¿1ºë4©T›¦IiOþ¨GAÜÚÕ™ §Þ)¢¤›Øp#Ý~„õ%ÝËT{Z§›HàQÒ Bý¼fÑÑcø5-¨óMÙ9µmjØâ¼EÏ£®i-±ƒ|‰i¬ž"M¢£›èùϨ‚±0Ú‹ÉÐ:Ä2޶í×6–^4Š”úQ|±w_?±î#| v<ßµ¨ƒŠ{S!oDžjO`¾žq‚ÄÎ~x,OˆÏYÜ-[€÷¶gú;S‘}Llß® ¡L ¿h¾ð—¬«‘I==¹oä´|Ü3æ+ˆÄA£¡àÐ.µ%o½`Z '`áz¬öÚ½íÀÊM{ž{ u‰ÈŒŠÔÈi7/‡Í:`›`À爫1Ý—ÌVñù†Rù»}þ¾äWTk,‚d¸¬²é„‡µ ïQ·wNa¦·KìÑgÖ7@2¿…¥Wð .­’tב";Înâî>-¬ 64Dÿi„,r§!kÿôަW³táUJá쮌ÔÛ 5@”¸v7S”°AU¸3Tš1.óƒNm%—ñ7ÜÐç>¼3Tè t•ç²Ó"³™›µÓÉn­L¤c˜¶…Ü[\ª‹ØF \­WPß•¹Wrßü‡›;L3ÍŸäû&LÏØQ¡õçi‰…Õs¨Ë£}¾Ò´†xrÓv§T–*j§9°ÁפRùA—š J0É[Áãé!vÚ‘ã$Ni7ùP)Z'Ý}½vSq42mfÕ÷<ÅyUÓ—sõG&¦›O²R.啈=bÓ¥v ·BÓª–~¨YÕÒg£J[žžè<)Z ®®1K¬Òªã%”¢Ú¹èͲûjº‡Þw@‹‚"S4$fyæ&J½, —ÜuY@áã´½ƒ¢ ìÑç˜Ôœ”ª&eªyäáª+í2~’ã'¼t­˜¯Ðšíöi\ùtœ¶â—$È#Ò!û±Ÿ3iáØ÷çÌQMw<ƒ°÷YÅEeµQ áÚͯÏy9ƒºbõ.*oD޾K5§vàzxc[…pݶ#O®·«ÄƧ–G HIÓ„E­*ûÚ údOX+r»t#¯Z7dޱžÙ?°¿£ô]Û˜'Tôp/zyVÓ1Wûæ Q¨ ÒsÁUpÄÑ‘ŽYjFÚîg[²©#KÓ}JëÒ¢9eŸž¥½žÊ·s”Rx F+Æ]oÞ ~*ahà¯nËÜ·'ƒ¢øìkísg£3>*8â­ÔǰrÆïiéÚ5Ú–¾ôRwp6µí³Û÷T&®Ô„ÏP#Šu=œC?ƒ[•N9†õgJ‚¿ÂLÄ´|³!É9H2>v¥òܾ2抒y[‰ðáñ†ÜÊÕã%#ú—(ñMΨ½à¦e¥Lê}Ô™ ô…-E®Í°_Q ÑÅ„p‚b¯ï„|zcNß\ eØ5 f1G+&\’†y…¸—âõÇn(ÈÛø ›{ôœÝ³|l½.> stream xÚmrg4jÔu :Ñ£ ¢£DÔè%.£E‰13Ì 3Ñ£÷N"D'щ5¢Dï½Fô½^7÷½÷]ßZßzþœ³Ï>ë쳟ÃË¥ŽAã!îÎ0HDT`¨n  ˆŠˆ“ñòª`P<ƒV…â2`ˆp€Äb¢¢ 2^€ ÆÙ‹´³Ç`‚@€±ŽD!±cŒÆ ³ȹºº*ºâž‹`Ÿ+ˆ\7"¼=`‹tBTôôÍ´À °@F`¡Nýç6NH@ C qA€- pú'À0h8òoM8‘?Ю,þZ˜-ƒèªA”ÔõÀ€šÊˆ Іt4¯ÛÑxœÌ5âþÞî>ÿ_äý/²ù/ú¯Šuû'!p$ °AØ!ÑdþöM m‹<ü†?wþ·t-w­ pí¡ Ž°½f?wrCQ€€ åüÀt1p 0À  èYPÒÉýÿËû_†zíƒÚîÚ9Ñ $N醀ë#ñ×VÛB®-úƒ› þù]ùõO?âÚë…cÐNîÿ;òz?èé<Ñ5úïþ”ÕÐ0 ‰¶⯽„báÿÊúPä?×󯘯 ú¿\ŠÇ"Ýæ¢"Ÿ‡èßïßÈòÿXÊÊ7OaÐ#i€°¸’|—òþäžc±4þá×»ü›ÿ9$ #›ÃÀd’ªƒ |Ôr o ôY Æ{·Íi‘­öðgK¿X÷ ¬™/(Øûýlä¿oÎkí}䆯 (Vº{"¹B-ÇXOÞñÚù”Ξý•uZjµuÓ˜ßÜÛÅ'OMúë{$Þ¦ÿ,}â’'O«Š´Î¯m¾E3;1|€Ö´ä§KyzIø!TB3`”½eóøda’0$3à;Å6/Ë3ûì?祳=»Kqr“ytnèEÊGuàÊ2ËrH˜tnèÞ%Mb’·÷ÞÔˆ‰Ìp¿ÄŸsäÚ§é¢ñÐ BJƒæ ;`ô¥ùeî`FX(óŒú¸8WD"¶ãûQã/ø]ýà*\Ò±aÎÈòR„¯ëƨ™oV@~ÊCMŸÂ…bÐýøÔ™eî3'3'>]·±ö¢ã—}TJTãÊ!™{ôÔQ¯ñyŦ–rõØžš{§ } ¤¥Ó2¹%.ÇE“vÊpùüz#Jõ,¡ï™’ƒÐÎ †Jc9u}-*žÕ;òÕÌ\‰­pf4Ñ«&Çwϯ,¦º÷3oäý…;Èô!Àï@ æLG€‰ßl¸É*É÷* ³7¼ï$ÂîWWpñœYQ5Ïš‘“5#­ çµoŒ9±-Ͱ‘Eq?sëHf =ûˆéR¼=]q'b."_{®88ƒ  æ8ixxãûs=™Å³Üe2´Ëèð6R>-M’Ôœ­y$l£$Hâr*Rú±©e³KòÀö¦\õw¬èá:‰(_é¬``¶Mó:‹Ç¦ÕB¸Ô²Ž¯ÃmhRÒ‹±§²@NP¢ „×÷‹ÒÛ>öÑ·šçUí%' 13Ãatã–Ljg„÷öt4Où¿Ú "ÖßÈ‘ò)±<­ÓÎÂþÎuâ·þ¤@V°ÝÕoYA¾38™IôÞG ï ²4_Ö?)o~[u³.á…¬p­Läñ½w¶ñš$,t«tQ«[ â\6Q‚ßbÔ})ÅŽî72K@žÕðw­>T¦8~5,N˜ä¹c-Tül v#$IÇ2<-ßfJÊLZ®õ¨®Øæ‘³lœru^ŸÔPd<»âùÓå=û­†‹.m1ÕMMf+k‘ùm(¢»ä=«[£3’/71¾„±æ,(ž¥m¶}!†˜ñ\Î.žÎ‡Ú”e=D‰„{ŠÏ‰M’^– ðÖEÅ2µÑ !®ÒÂw/ö3+¥§“H„6öì»= íÕMÁ4öA'àZæ‹,‹§DÆžú£iÖ*Ës\F.À® O¥Ë÷â¥N¼²ÄÞœÕ Á6 …Û¹³,öíÖW!£#%X…f¢oÖß·90 )!Usá*ï@¾†>i}áÞŸ|GvÙ‰-ÔÈzï Cù-d9œDí–u1N,t¨Aªª‰² po%ŒÇž†MÝ©° vI°üeʾË&Ä´6ºðÙÔòflVk•;‹âç;ÓÝv…þ^ñ-Yl¬M.#&Õl¬¥^ö°ÇDÒ3 KYÿò¾O¢•ôhËëòlò¸ýu9œZšåM:IQþt½ûf\”ÀjÃüwÉìwÕŶLaG|˜-;+ƒñÛqÔmŸó¹¢@Ù§µ N¥4 8ûÇÕ$ZT‡cgïÞ3-K¥üªøV˜nÊ*?ÉC¦¢“Œü•Ïm YÕ;º’S^cyס‰8'"èR\éRÏ.E°(/^,j&NyûŠøŽ[ë™§îºøÏ}çþ‡ƒxØÆŽ0Q;Ú>vd½àJKoÍÂ×7f>êÐ!ʵ–sø5hêr\TÐù°ÜØÅesn¥ÙëX´×͈à¬ï†œS)lY,Œ÷ýW%!%?íòbüŽ<ÈW¼‘Ó’º,þc‹{rNèå=˾ò^kNtÈ*tU"=ÆìIƒcÞÎÚê#¡â †V#ô{7¿Y3÷2LAÜxiÛS—ñ¡³¶mÓÒh½Ÿ‰§¢NúˆL’´Ã8‡²„œ¼ß‰ª_tòIDíÉp¤/pQ™,gMÉžéZX¨JÆXõoÊ7M2õmÿzC-}¬qõÁÊÓ¹×úîU†ûßm P ¹ˆ4î‡=9[ð+ƒwm™Ÿ+‘²Ù¢­¼¬ÎôþÚŒ®×hí)ÐÏxVmvÇÁæÝÒ5ÊŸßðبD.ò¶ÏmC9ÿÍ+}µÖßs™Ÿ#®@’}AõïûÔ½šÀ tŽž¯ƒ‡1Âû`Sz»?xUÙqeš1J§È€\$þÍ©-wRûxýÇÆ œiVúÎÅn¡Âø$á|3"j‰[=ts"$J5Ñ<,_{c@QÄ“GmîU:§I9;‘<’©ïJŸ­ºá±2–ÒztÁíñ.‰áYYò$ÈÀm~)ü½WŽYv\0 c»³ÓâegsºÂÈ_¸ýiéo_A|¢¯/ùètÃéÍ7÷•A„ˆÀÕ£rÚ‰üËÀY´»á"RMïæi|#!sÑ@‘i€ F™9P¬§Ê›Éï¿ùŒˆNLðW²÷¸ÅNíNu•ÀÈòélÇÔ¼ÄñúçÖšEMÐdo‹œÀïù#JR¶ûöž8›ÊKn•G¦ ì·’')»ëý_Ï{ òKSÁmíâ¹²3,n%K›óìGt~ä»ÀÛöôÙûÙ·7]„äñwœÖyæ÷‰ã=åÔu.G5TñnOMúJŽžOi‡÷½4­SUA}pä‘0AxQ¡')ùÚƒb”¨îÙ€>D>µ±bÝ6ô0Ç*/ë꘤”ùép&8³­yëÒ\¼/¦Ã+5¼D 8®ûÇ’Üšªñs¤Ï©µRúXK¼ÿ®I¿ÈÄõÅ×HdÝ¢xÞà›ñN®»» m&·¼ ÞV}ih6{ÆÍŽºÎQÍÎ Öëz|yøÅ„½'™Âú<3®röeh¡;­Xy³3ú•ìE÷ ="œë×A`¯.j÷“æïËbZ¡©×î_+Ú2fÝò·˜%·–÷§vãI^Ù‹7‰Ò¤zÃ3™qä |“…PïoÖü_-Ég畈—ƒ eWG°Ãßš&P¹‘J/$¦µ/µ32¢pDÇqDwu–&:`µî¤O#4) ½é=l·‚Øp7•‚Xø\¬~\НÄmÕ+Øû™r›¹ð-]òÜhQ"ßeï±ôGúùÄ>xÙñT˜h§Ž êžà›"#U…¨¥Ôêd¬—½5ûi\*ß!³ª–£Ô' ÿìx•ËA™‡EÔÉÛ@}oUïÅ4îÇgnô…¶ÅŸ5¯Y,tñ§lå·“:¯°/I÷šZ¦o8¬i‰oœ'’"ó·vî){¹g¨þdåÖXߟØ;¯ÐÙºEÅ+uÀ‡œ‹7ô×{<³Ï/&Uãi†ÑÝ*âv|0ï”l ¬§éÁ•›ÓµºÜ(k–N1²ööôS#´kÞ><éEÅWA);}:;%lo£µÈ ÈS½ÃË™Ë=Î/Ù³Ôm6•~™¯©zžü¼ñþLñâ+§]qWCoÖO‘b96ew?Ý{Y9Aû­yºý|Ž'?8*·Yf ’d‹W(ËâjP ]¨¯~:eÂ!=ˆ0ùÁÏiټ౱] ²ëP˜àÉEôËf-|ÑÆ6%ý~¿ˆRÇ)Ì'®µ¦ßryhz`“±v,ïz5¯búpìhѵý1¯[¦é³ô$¾1ʪÌ{ÜÂJb˜~ÞÔ¿Ä ÅÄs«;îÊ_<9|9t©«*°ʆãûXŒ|ºJy~¬ï˜Ž>üMÛ©^¾L(ÍÝ¡• £Ö£“å¼K”ØHÚª©¥Ž«z“ÄÔ´ñâD™jûøt󀳸±Þ˜yÂÌì&m=¦t9¢©óù+–rã‰é[Âl±ƒñS3΄ôQêD¡gy+3f^x_«ýhiÔÞ Ëdéd”­3ô¢­š57hm ¢OŠÚÚ»;=Èþ›Ö×FÖÓ!}ê¶7;––µí\+•9n"jqK5T—¤õ«ãÉç¾ç?ÉêÕÈ"Å(Ælœ ,A™]ØDn,•š’¿,fhéa‚¦P¥­)¡¨Fe‡¬¤ºèÉ»3o±ª›5Ñ2Èi@{;H8dg¿%Ìö¨“¯lo V¿éãÔÁÚUÜÞ{â#g‚ã–öÑZúîß#KÍðÑ ¢‡Î2f}õ{U Z³I¦Ý´ˆzEW1©M;7I^³_wó±›^Ã1ëò„cÅ=åÕÿâô!m endstream endobj 704 0 obj << /Length1 737 /Length2 966 /Length3 0 /Length 1535 /Filter /FlateDecode >> stream xÚmR PSW­HD0¶Â´*"úIJ(‘T6!Œ ;‘T0É$Ÿ&ÿÃÏOŠÔ*â‚". es%¨­JÅ¢ЍlŠ"D@&ˆ ë®uú!‚әΛysï¹÷¾wî¹×zÎ2#ùIqåÀb0]Aز0>‹Éd&ÃÉÄÚšK@!‰â˜·„®@ãk!XÈd²L¬K"P‰”vây# — TŽ —á*T,î*•ÊK¥P2åU! ¥Ä 2¸AÁ«|yÀŽ¸ð  ¡ +E2T üQ1ÄpˆÁ Ó;@Œc:ÌIÁ!€© ARÄb\|øœeA|àÃuäsC€ÿrª#®T6+ÈáîrÌ’ Ç,ј5%õÄÅ*&JPÌÄqX7_,l=Œ(ãFC!ÅØQÎŒ¡²•2Y P—Ç)IH€†µO Ða$L&ĨNFK„rT–ô¿EŸ2|I!% “P2:¸0±õ0ªX†&B$%)íIB õ°êçT)×?)}¨ #8&Kúô+ÕÖÈŸŽV&él¯I}ÉWä=®wWÜ&ýã5^É×\4WÛfó-KQmË®èΩVe[+3wß$JÞ)Ì=d÷­—†îŸ@jÀÇì’ñ˜¡)Ü€õÓý¹7×?¬¬ô˦—:½ûâÅlÇšzIzs–%õÜõe«6%ôn›åRuFáܻǖWÏEò~ÛQ“Ìqöäì¾Ãî}Ä9ehíø8Å¡Ýtùã Éö¥{·$¨ûꎿÈ–ªÜð}šÃß'™Û½\¤®ÝíÆiçÏ~Vxº×]pèˆñÎêœÑõ‡“µœ(é;—íçµCÿxÝÀ1ö4¼ÔÖò8ù›¿±nHª -5U4pm1t™:iŽ¿Ö%Ä–ç.”¬+wÅ5nçÊnm>çmÑ:•]ädä_œû–þœ&5­;ôêR@…Wt¾ã_å¯lj^ÏÌi¸l~ œ>ÀóÌöiÞ[|ˆVå .F”ÿÙ’Ò\ÜIËùÑ0ÒM;îÒ¯ºÈ†š¾Ãnsð_l`WhÿA`ñ,mk[à·™ ÛVé,<Šê^uœçÖôÎõ¾Z›>›»Ù8\秪Ò‹^_r¶²§;9‰ñÆþ¨Á´ôJš"¶ëÏ'|ÑÛþSî/Ôv6­¤AJvÑ{A½/Ùrlq²¬÷qðº‹ãÏÐ2°MXFÏ“ñKòÚÒ6ÖÞ>Cw®yûMB´åöìŽ+597Îf]ê×ø¦fi”ÂÆZ£Þ«„‚¨{÷°ŽV4†júA¸-Ã8w+¶ÖÔ÷¯€§NÜy´ÿä׃ßÿo`Ðíz“=¹°ìJûŒüËü)¾ó%CF+®M|_€’•á/+Lg²O«´U÷žš´>•ì§ï™½&MÌXÿûD㦯$eE3;·ªóâ«qM–•è3ÙšQ½ëáq>÷\ýôÜYó?ä|ddì>18é_b™Ò} endstream endobj 654 0 obj << /Type /ObjStm /N 100 /First 940 /Length 4996 /Filter /FlateDecode >> stream xÚí\[s7²~ׯ˜Ç¨¶¬ܪ­­²åÈñݱ|MʵES#‰ŠtHÊqöןþà3œ¡DÙuž¶b Ñ—¯ƈŠ5ª¨ kL᩵ô£éÇ6(úô…ãÏPåhÒV…pš(­(¤’:²¾"z« %­:°VÊ{ZeM¡•+´åU¡ÐÁш…‘>PGÆ("v¦0Îç ©ähZV¢°^`´:°ÄÔU†–{S8‰yZ@ê`$O6ˆÂË*êïµE‡L󊈃+‚®ÈŠŠ`-%î!à*UˆJþÔ3‡Õ–zÎâÙãG¢uôhV(BƒÔBÀC¥ˆN`BóZôLœ…à ©ç5É”´4´JV¤´Pœ@‡© ‡$iR;ðG*Œ‡D'iVÓ¸ôFHžà®Xf Y%ÉÍ:*Ek9V(|!A¡ zt–zlrÔÓš4Pžz¦"¹´Ôr¤ÐÙ ²õ÷$÷d“ Ôˆ¥ô1.BÇÓÉÒVÁ¹Ô!_Üèxs€Óž"Ñ€8Ð#])šˆØTA“^Ô4®‰ØHI¡gÑ¡)Š7a!wMSÄF‰€hŒ§q#¸ˆQ‚ÖA ¡r€Ù2ß4 ˆ¨-ÜáI=ZAÑ,œ ))DÁž¬Ã1,p¯3DíÎ èCÛ‹f^ üB^Ž4Þ8Z¼ âàwë«#ûéàwc呤pG¤ºG®ðA‘ñ•¥>í9Ì q$[¯Ä‘¢]YÖÌ4G6µ‰ÂKâØ…4˜‹È’æä;@ú,ŸitåBj#Ç|VЯ¹íÒô6m♵QVNGœVGÈ"Š´J6c¯;„4‹Se:å `‡•Žõ!ãÄ\ãú$AÂ&z(Iˆ”ÜÒ‚älÄ –”ᚣ’ÛGà3ö[ó”ðnÆò5ž‹J‘“áÂü¤h<–¢G­WS>'h³Â›ŒÓQêJ%í^ P9XaU¢"“]í‘ä` G”Ü÷l•T€"k=NåÖ-ž= $ÎÁ8Émì#au{·iEEä&ýÜ~Ù-˜rÓ?º–·Ɉ7Ï–Û^RéL¢ŒaÉ­÷pkl+úÏp8Ä6R°©’6¶™’Q䪀§´ÔwN Ì%S ö ¥ ’£5|È­|,ŸÏG8̪ $²ÚE§3Ç&+ªU¬1 õ¤ab&Š¢xÏXÞoR7F¶dZs$oµ } #yCý¡1@(ýCoF)(ÉP H‚Ë[Ò/åXnâu€öÈâEpò&e"dXhqÈ„ŠsRH™Y:ZÎÆÆsa­©ÐÌ ³UöoÖnâC3ÂTsaÿR†¢}«˜#û‚*Œ{hª±ÍmÝB±5aélAGoDœýxxÍá£] DÀ8ùÇs6 ,CùÁ$JäC: (th„,ÅÖEvýßÏÿë¡îŸ@q‹sí÷ Çvž¶ú1ó$yÅ6î÷p–ÙšŒJü7».çŽçPINx‚çl3ʆ$ŠÙôrª<ôM–y.S¯O±¡¹¥EäŠcO¦6Á誘˜x”̸ÙSi7Ñ¥­‘ÙI©®¢qA㵉»BºŒ€'þ&Â)*Ùˆ7ëCbch·—AÀÌ’7²~æ=mùTnx$W˜6u¤P…ŠUitH6›"‰û±ÝÄDë@Œi™nÀš[CG\*vE`æ\>qßð%òv?iul ¶ÈÓpúŽmñ6p©ë¹h†?Pp㈞@±¸ H³ÑK¼2T8!-A×@|€ÄsXà„©ï-2¤U|Lƒ‚Ã$ ¦{!G-¸u¼I¢æ6ëw­2tkLc¡—ú7•ˆF¤qtkLuÛz„.Ç8ˆâʆ:Rh.”µá–}“ÏF¬bŸ[ò#bœã\á ­0^iTŒ†jqxšNó•ƒGÝzžÒNDºw«4¾æÃ×å(1RÇþ†Jó³Î(2Mo·†·iÇL3¶@ .ºÑâ9ÚêBÀ6‹vÒjÅE"€¯!&”vÚ"¾ð”1<^¦ðáoáêH€²Œ_‘0\¨)ÜÛàGÕ‚K3]` ©f‹ÝØÒŶÑrr4r‹èNÌפè'þŒ×›Ì¿my= #Ñ+¼®¡óÚ@M+|òÒf."ûÜr)'ñ>Š C/•6ßÑ‚ËúÇQö¦q+ùb„6Ž8…ý®9ÍYÜZÞ~ÅTÊpiW)^)9i“§¯Rk~qeâÍ•ÅkÞ ¢J—¶y0\Ÿm n÷6O`£• MO® ›y^ÁcFXÎùuz\ÑPÅ9Åa§._”¯ÊÓòM9*?—ãò¬¬ËóÉWjæ×‹ò¢¼,/ÿþrYÏÊIùŸòrZ^•³r^Îguù¥ü2ZÔ³i}¾Š½Ä”‹rY.믴d9ùV®ÊÕ墮ËÕ_óòºü«üVþ}m>™¦´áè‚üúà_ÿº†^¾{ò4a(0TÀoyUø1Vá &Ÿ–ÏÊçŒåë.š„çÖ‹ÉüŒAlC÷µ<¿xïÿ|úòƒ÷æñPÊBPâE¨Ñw…ï"o  ðA ¿WMl‰üÕ±ÙUûØüá×GŸ’ÍÏ-V2Y\iCÀ¨[Zìdf°mƒËŠ–å2x<¿ºQ”œSPÄh¸ÚĬïzœŽ„=¬}ÿäÅëWl½é5^¹d»ÒáÙªAÛgmSô>¦¼|~üàþ36ÅõûQ¬s§?È/MY;«cÒ^Éì—ûï¿þ•Lz=šºZ‡fõ]îir™ ƒÅTö¸LW#Ji'å£òJlOšÔö’vê¯)½½-ß•ï)„?–¿ÑÞ¯Wu9Z®(p—ÐVþ¼ÿ¨W|4¤~<>/èd@à×g“étTŽ'‹ñõÕù´þF{a:Ÿ5;âlR/êådI9Õ-ëÙÙhyYÖ^¦È©ø7Ù¤ÖéÎì:›PrÝyjÑžxë½÷gùçõ|UŸ}ž2áú!ÒòS~Ø]M¢ò›co9…²½¼üoùßz1oÎ^‰üáã_Þ<úÈ3pReʇ`ðþÇÄÙ7Ç'O)BFkçm\w½ƒä6ÝrCë¤c„zñ{¥û“‡Ož>xÌÈ d ¥â– šJWnŒ@ƨ™ª{¶øT»HçNµ/dí×¶‰{åôW/ß¿}w Í@\' UÝTDV·r¾Näɶ){åôÞ¿üõ Lp–\OøEÿˆc·+ÿm³W6wúèôãS2æôÙ›7ƒÕ|ƒ/_|MÂföѲ=RÊÎöHè1•?n¥ñv§~E»q9š!wSºŽé ™»nrx½Îà©}ÜÍàsJð äoNÙõ·ñttµÎ)Y_,ê¥Òí¤=­—˘¹¯¯>“j“‹ÙùÙäËôz™%ïü2Ò“‘¯ggÄ{<_Ô»’³ß/9?yûÛ“7ˆƒ»jì€o]à›,ΙMPŒß­TÑÃUW¯ià ÇÝt~1¦ð|êÎæ«òj2»^¶0{¥áß^œ¼ÿø3a0|ÏP¦ÙÚú•kÖßb/  éîƒÑ®Š¥ÖéB×*46w–æX»©FXGc»2hc¾×¹püñøõÆ|0ûè˜|Œú®äSí{~¹uö-Ç“I¬ [å$å‘•ŒbøWJBs×¼T/WÒ«“ nW@Þ.]…½Îàç¯_ž¼yÃF_¬ðªSâ]«ùþ°1;.Ç/ÈESBtÕ6i¿—D§ß?Ï&ùwD°¯bñÒ1|·EÎÞj#`¼æÀ︋ž,Ó Ñ .¢×Eä­^¿åÙåïž8ÙëX{óöôøÕ;5ôƒjSvѼ¿T½Wviç•Ñ0¬Ùþ¿qã·¶ým¶ùŸ;ß~ö;ÂU{­Ïß>{òüÃ?NO^?Ç/n¶¬§CáKŽÚXüŽgãŽV‘]ª¡ N5xÁù|M·ãUÛ–½Î¬GOž)tâ­“þ:Å‚N~Ñ1CßV†kɈùnE2}FYø«¹øe˜ýüÑ’a’Æ&É&ùÁøôßñÜI†©¯â§Œþ±J¦Ï(ÃFí’¡r!¾µAsOYþ;ÎhQˆŠ ñ_pÞ ¥Z¿ß&îdþƒÏ˜Ýd‰ä¾„NgÑËëÕt2Ã:N^E<®8wé[%kŽÍÂÉ 7à„õý"}c£Ñ½}»ˆÄª!®ÚÄU:Í^-ê¯Eº˜$UÒ×&’.6×åžhó__>ïé‹ckþkŽÌ¾S}Ç•¦Y)w¬LZ¿¨¿áW=lÄšMª¶zÙ¤›ObÓ£i@5º—M\Yõ¬l6»–>ããZp›îdãnݦ¸uî5{–¥{ Ô ÜZîX™Ã­{àÖ ÜʳQ9Ü}Ú¨n¥w°É±×=Ø«{Uõ²á•Ên¯” ÒîðZΦ½GÖº±ÓtÛi +èeúÜVÙcžlÀ~p¡È±–=X‹k¡‡¹äP÷é"¨EÕÇ…Š¤7 bÎ:—îsœEŽs2o`s40‹~I̽ÓxëI‰ú§‡óñ½ÓÕh±:ÄŽ“öOãɪ>MÏF³Q¥ aìŒÿ[bÆg3ŸG+: ¦“ÿH]•Mç_ëE‡üJ~3|>º^Ô•=Äÿq žå³ÉÕdÕQ¬Mü©kÏþ1º>?¿Í*MjE°ŠöŒ PØôÌ6Òæ3“«Êâï÷³Á騾<«—W£ú pñ•Úzv¢è²¥^FßoËt2š]Das§óÙÅèóèúâ²2„d¼§¹«Ñõø²^ës——W×Óúëd|YÁa.g¸üRO§°ŸE%vç“ ÂùHÀú~[õ6´[v¬g*¸¼Ãa`M{Œt³©ÔkÆb+Ck &(Û‚ïŒï*šÉßiI>Qª-ˆV¶=Daª|[E ݱŽ`Ñε†(îŒpêÃŒnKÁé’*¥åŠîlG÷àÚTÕ·Æ %ªíq}C3KLlŽ˜‘ì› ´dèÁšuy¿±¡£ÞÖš>{2x3Ýå:3pj0}3ØcÁöÍ̸¾‹ß7ã0zÌjk¹µêÃ(TUõ ˜=3ÀÂ÷a!+,ésŠ˜Q}3ˆ‰øÛ¢a»üáöªÝvI„TÕç‰-Tõ¹Eb'U}n‘ØPUŸ[¤ÃL_è".â àA» dwÑn³R¾OwD”ïSåû4G<õî9@ë‹JAì´Hn­ÙeÄWb;È$op%Mß ÖHÛ7ƒX’®oá }Ï §$¹Ã(Ö±»f·Q&T0„žÐ=ˆ<Ñg,OôÙŠ¸}¦bCKµÓ u¸µf·AHr[oÅîë‰ÝBß ­ÑUï‰Ñ7£0³ÛKáp{Ñ.«'hÝ“”'h]õl1cúfpÂöäÅéK÷äÅ9VW~‡]QË­U» CL‡>‘ µìà ZËÞ5ðŠ”}3ðŠìÃ9VK½Ó.y¸½ˆÍú?¡™ Ÿ endstream endobj 752 0 obj << /Author()/Title()/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfTeX-1.40.18)/Keywords() /CreationDate (D:20190415164300+02'00') /ModDate (D:20190415164300+02'00') /Trapped /False /PTEX.Fullbanner (This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017) kpathsea version 6.2.3) >> endobj 726 0 obj << /Type /ObjStm /N 26 /First 226 /Length 1061 /Filter /FlateDecode >> stream xÚ•WMÛ8 ½çWè¸)ЉEJ¢í­Ûl»§EéŒQ˜I“Ìûï—”WŽ{’ñH‰4-D×9rà#¯Ù^‹K!;ÂÎåàyõ®”À+8ïCâtJá‡à|ˆâO]X&ç)Š9_:ñɺ$>Åx6…ÎḟCÌÈà€²˜ÐA.‚ǘTˆ}+âÀr` ‡Ø1?戡#~(ü9DìÆÌ)0'L®^½Zm>lú£ûû·ûãiÿüð­ºy‰7×.Ôôÿt–$–dYH,dY²X²e)b)†× ˆáëjóÇîaw2I^núºzýúzZØq8®›΋Å[X׺ Z– –`YDXŒ‹y ËÙ®_$&UA«*(UA«*(UA«*(UA«*AªbeDÙÐ-ç•Öó]ËyE‰gé˜Ä`õ'‰Á"‹ÁÒ¡ˆAexÜ~ïo¸ø•ZLE:O}g 8ëá‹oO•cÏÌ„; º®EPÐ"¬8ø ±ð’ÞuôºB,ÉöÒÈ’Æa­ Lˆ±HÛt˜»÷í&èÄ…l^iýÓËæ,¤–ˆ<Ô "Ony4$@‹HËœû}@¤W‚-˜D½®“ŽJmÈ8ÃŒ-"=”[fê'*×Ñã'ˆŒœl^´þéeóªsi«Σ‰`uå¶luþLú²ŽŽÒV²ŽŒRLbuôºBŒå‰“&–y»–*óò“–“ù}Ë=°<Z¦cÇùŒƒŽ^6¯€²}‚iÄÔ2 Q¶J剓ž $ÈÄG2FÈŒ˜D½®cyRתÁ,|hS,OòmËE–'AÛç‘åIØfQ»tô²yE–'…6(kác« Ð’`%<µEýØßžv‡ý‹aÂÚ/A[ǵÑVÓ““å`œ"ìESD†È$}à§—€ü%Ã6vã9çøümŒ_“=Þâ2A£Ëè(._œáXsöÎçÏ/—Ì.·,¥¢—2#T½î¸ šáAÇhàò‚¯}¼Jev¹e)• ”ÓœZj´¤ZÝy¹e õnwÇþä‡7€´îäAWÔ5è:‹ôöpûòóiûtš^•¼\fQ’žBºf] ”ø…»Œ¯×›< ¥ŸXÒ$Ðôô…"È ¡@†Áõ à9”²×k:io“^ÁI/Ü4Lº_ßÐÚЩAza&½.^†I{œ–¾5×Þ ¡Ó[~ÝþGÛZ½¤/–üò «’×/é &¿{ ½t-ÈÛþȾò‹È›Ïà—{·y³=mïßW›Oœ4û ðÕæãóé~·¯È°K_0¾ ƒÿûÃ]¿ùëØŸ7ŸôÛú7‡ýíáén»¿í]V÷ýþ÷JÍQ>Óø"ŠýÌ endstream endobj 753 0 obj << /Type /XRef /Index [0 754] /Size 754 /W [1 3 1] /Root 751 0 R /Info 752 0 R /ID [ ] /Length 1894 /Filter /FlateDecode >> stream xÚ%—Yl]W†÷²}Žïµïqllj“xŠÇ'Ž;Nœxˆí8£Áq¬V Ò! D[„ÂŒÒQ'‰ö¡¤2>lPmÑ0«â ¤¢S*P‰hU *UQî÷çåÓ^ké®ýísöuι÷Ëœ+sæ–?á—¹²ô,#e`–ÜFå œ"·È(1¸Bî4£J+Áo!·@˜UäºÉÍVƒ¹äæ‹`¹]äNÖ€ZrSäf ׃ºÒ£‡^r3„õ Ü(¹iÂF°Ü ¹)Â&°±&›È$l-äÚÈ l’l&7IØ“íäŽníäFÈ#ì[É'7A˜€mä.;J¸t‚.s®F³Ð z@/ØúÀN° ôƒÝ`ì{Á>° ‚`‡À¨¹ÊïèFÃà0ÏÒt_ý<í] è¢zæ#æ ?ÒÆ(ð‹RÍàÐ 4yšý@µD½RÕñ s-?ÖUNpœš£)“S溾ªªæ­®iRdؼ¹¨º@uèçËS |\‹æ†ŸÐÁçÁX—ÀUpÑÜÉ{׻̥¹Þ's@—ºfî¾ûJ+åÑ?ê¸Ut”¬k`ÅÜ™{-¹N¡ŠÓpÒã¸/¶¶DÕçÍG4by˜gYù sUåYQžuäsæ>ù-X¾`îKû®ãI™n_jÍ=õSXï}½¹gW®lÌ}½V¹&.€ ¾`»ßpÜoí ÙÜ7>¯3ä=k0™€©õLžg¦}‡¹ïÝÖÁý$ààñÙwš{¹\Õ’í¯ i„ÞŸ}¯¹W•ÃvÀ^Ï·ÛÜo>¥z”÷(ï™s¿ÏÜë…R‹ß¹¡CÆ¢û!so>­ÜA~*ËÀ#¡g5úas½©ê8ÀlŒ€QPýÝJ‚¶ÿ<Šúcfe·TÐ< xUyÞMýŒYõÿtH©`£š”y³Úû•SKPÙ/òhú1¸ëq×#œGVÀþ"@[¶mýep °_׀Ĕ„kÜ—·û¨2P*@bP r ª@5(€"Xj@­E«›tÑPgÖö…õ€—ïh#à•;Ú6‚f° ´™ üÞYyçƒ:ml­fÛ¿¦œÞ¶íûA»Yÿ#ªî`+HÀ6°t‚.Ð z¬¼õŽNë;@Ø v~° €=§Em?Ðic`Т¦ß)GÀ0ô¤‡À08lÑÖS¥ š×GÁ8Æ-ê{M…c`\“íÿ· Ó`Èœ90Ài°΀³à8.€‹` ,ƒKà2¸®‚pœSͽ¥›_·è§KOÿø‡ƒærÕ¢¥ª¢TP¥J” (P* T@©€R¥J” (P* T@©P Ö}Ï)è+ÞiñÚ¸îÆ„† }à–B}zéxÀ°€aÃN†V‹þ³ŽC¸Ð64 í}úô Û,ÊžÑh°$t[ôF‡r=Uª„ÝÝ}J…= Ï¢·(DŸ §Âƒ°×¢|E ¨P9 ô C½?©CP*¶8ÿ[…¬Š€9aÌâúãÊ ·üR¹c4BwcäśO¨ÀÔ Soÿ‹rxæ,¹ë,žý rxP*œ²¸¿W94 øð%,Z<ü_)`]Àº€uá¼ÅãRõêÔ Ë/ìUaÅâ‡K·üøgb{X²éªÅË/«p·¨¾œ“ ”N{€×MY’·ü¯iNYʆ%1PÊA…ż§ã"ƒJ³øæC*-~bA£P°ø‹ï*äCšl|“Z‹o}[…F°ÔzÐ`ñ3mª6íÙå&-~áEZyÈÝŒ´ÿK,~éï*°¡JØ%í÷gÊm³Ê±æ­röŸÎrsí%<ÿ’rlË’.«<9£°ÛrÓO–ªOÞ{>¶[ ¯¤×rÏ6)ÇF)±Ü[÷+Ük¹wÓH{š]–ûÛçîû›»DË6*Ùc¹÷^Ñ!C€/g2lùB·rGÀËG§j*vÜÉqÀ-³ü÷_Ð!ü¥HŽ‚‹àŒå2©ÂYp ,YþWVn°KôoB{ê«`\«@ª¬qˆ³â¥I ŒH1"ň´ CŠ )2¤9h–V[þU‘¬ª¾F£¢UÍj´Îª{]£«zñ®FµVõ‹Ÿk´ÞªîH¸´Îª§†5ª·êmÖ¨ÁªŸëԨѪø6Xõ«·5j²BÛ75Úh…á75j¶Â§ÿ£Q‹²?hÔj…7îh´ÉŠå_֨͊cj´ÙŠçnj¤YúËÃô¤Ú”ëŸÜ9 ÿúÃÁ¤K€>§ô>Õ~WͦÏ)}NésJŸSúœÒç¬Ôç=Ü-£Ï}ÎèsFŸ3úœÑçŒ>gô9£Ï}ÎXÉYë-c fµ€–±À2XÖXyK2cIfüWËš­øð󴂿èm÷+Pþ^ endstream endobj startxref 882110 %%EOF BoolNet/inst/doc/cellcycle.txt0000644000176200001440000000075013277247010016043 0ustar liggesuserstargets, factors CycD, CycD Rb, (! CycA & ! CycB & ! CycD & ! CycE) | (p27 & ! CycB & ! CycD) E2F, (! Rb & ! CycA & ! CycB) | (p27 & ! Rb & ! CycB) CycE, (E2F & ! Rb) CycA, (E2F & ! Rb & ! Cdc20 & ! (Cdh1 & UbcH10)) | (CycA & ! Rb & ! Cdc20 & ! (Cdh1 & UbcH10)) p27, (! CycD & ! CycE & ! CycA & ! CycB) | (p27 & ! (CycE & CycA) & ! CycB &! CycD) Cdc20, CycB Cdh1,(! CycA & ! CycB) | (Cdc20) | (p27 & ! CycB) UbcH10, ! Cdh1 | (Cdh1 & UbcH10 & (Cdc20 | CycA | CycB)) CycB, ! Cdc20 & ! Cdh1 BoolNet/inst/doc/BoolNet_package_vignette.Snw.R0000644000176200001440000010551213455114165021162 0ustar liggesusers### R code from vignette source 'BoolNet_package_vignette.Snw.Rnw' ### Encoding: UTF-8 ################################################### ### code chunk number 1: BoolNet_package_vignette.Snw.Rnw:81-82 (eval = FALSE) ################################################### ## install.packages("BoolNet") ################################################### ### code chunk number 2: BoolNet_package_vignette.Snw.Rnw:86-87 ################################################### library(BoolNet) ################################################### ### code chunk number 3: BoolNet_package_vignette.Snw.Rnw:166-167 (eval = FALSE) ################################################### ## cellcycle <- loadNetwork("cellcycle.txt") ################################################### ### code chunk number 4: BoolNet_package_vignette.Snw.Rnw:172-173 ################################################### data(cellcycle) ################################################### ### code chunk number 5: BoolNet_package_vignette.Snw.Rnw:222-223 ################################################### data(yeastTimeSeries) ################################################### ### code chunk number 6: BoolNet_package_vignette.Snw.Rnw:230-231 ################################################### binSeries <- binarizeTimeSeries(yeastTimeSeries) ################################################### ### code chunk number 7: BoolNet_package_vignette.Snw.Rnw:236-239 ################################################### net <- reconstructNetwork(binSeries$binarizedMeasurements, method="bestfit", maxK=4) ################################################### ### code chunk number 8: BoolNet_package_vignette.Snw.Rnw:245-246 ################################################### net ################################################### ### code chunk number 9: BoolNet_package_vignette.Snw.Rnw:253-258 ################################################### pdf("wiring1.pdf") par(mar = c(1, 1, 1, 1)) set.seed(333) plotNetworkWiring(net) dev.off() ################################################### ### code chunk number 10: BoolNet_package_vignette.Snw.Rnw:260-261 (eval = FALSE) ################################################### ## plotNetworkWiring(net) ################################################### ### code chunk number 11: BoolNet_package_vignette.Snw.Rnw:275-279 ################################################### net <- reconstructNetwork(binSeries$binarizedMeasurements, method="bestfit", maxK=4, excludedDependencies = list("Sic1" = c("Sic1", "Fkh2"))) ################################################### ### code chunk number 12: BoolNet_package_vignette.Snw.Rnw:281-286 ################################################### pdf("wiring2.pdf") par(mar = c(1, 1, 1, 1)) set.seed(442) plotNetworkWiring(net) dev.off() ################################################### ### code chunk number 13: BoolNet_package_vignette.Snw.Rnw:294-300 ################################################### net <- reconstructNetwork(binSeries$binarizedMeasurements, method="bestfit", maxK=4) functionIndices <- c(1,2,3,2) #select function index for each regulatory component dontCareDefaults <- lapply(seq_along(net$interactions), function(idx) rep(F, sum(net$interactions[[idx]][[functionIndices[idx]]]$func == -1))) #determine number of don't care values for each selected function and set them to 0 names(dontCareDefaults) <- net$genes singleNet <- chooseNetwork(net, functionIndices, dontCareValues = dontCareDefaults) ################################################### ### code chunk number 14: BoolNet_package_vignette.Snw.Rnw:303-304 ################################################### singleNet ################################################### ### code chunk number 15: BoolNet_package_vignette.Snw.Rnw:310-311 ################################################### set.seed(3176) ################################################### ### code chunk number 16: BoolNet_package_vignette.Snw.Rnw:313-317 ################################################### series <- generateTimeSeries(cellcycle, numSeries=100, numMeasurements=10, noiseLevel=0.1) ################################################### ### code chunk number 17: BoolNet_package_vignette.Snw.Rnw:322-325 ################################################### binSeries <- binarizeTimeSeries(series, method="kmeans") net <- reconstructNetwork(binSeries$binarizedMeasurements, method="bestfit") net ################################################### ### code chunk number 18: BoolNet_package_vignette.Snw.Rnw:331-332 ################################################### set.seed(4463) ################################################### ### code chunk number 19: BoolNet_package_vignette.Snw.Rnw:334-339 ################################################### series <- generateTimeSeries(cellcycle, numSeries=10, numMeasurements=10, perturbations=1, noiseLevel=0.1) ################################################### ### code chunk number 20: < ################################################### series$perturbations ################################################### ### code chunk number 21: BoolNet_package_vignette.Snw.Rnw:350-354 ################################################### perturbations <- series$perturbations series$perturbations <- NULL binSeries <- binarizeTimeSeries(series, method="kmeans") ################################################### ### code chunk number 22: BoolNet_package_vignette.Snw.Rnw:357-361 ################################################### net <- reconstructNetwork(binSeries$binarizedMeasurements, method="bestfit", perturbations=perturbations) net ################################################### ### code chunk number 23: BoolNet_package_vignette.Snw.Rnw:370-371 ################################################### net <- generateRandomNKNetwork(n=10, k=3) ################################################### ### code chunk number 24: BoolNet_package_vignette.Snw.Rnw:374-375 ################################################### net <- generateRandomNKNetwork(n=10, k=c(1,2,3,1,3,2,3,2,1,1)) ################################################### ### code chunk number 25: BoolNet_package_vignette.Snw.Rnw:380-381 ################################################### net <- generateRandomNKNetwork(n=20, k=20, topology="scale_free") ################################################### ### code chunk number 26: BoolNet_package_vignette.Snw.Rnw:385-386 ################################################### net <- generateRandomNKNetwork(n=10, k=3, linkage="lattice") ################################################### ### code chunk number 27: BoolNet_package_vignette.Snw.Rnw:391-395 ################################################### net <- generateRandomNKNetwork(n=10, k=3, functionGeneration="biased", zeroBias=0.75) ################################################### ### code chunk number 28: BoolNet_package_vignette.Snw.Rnw:402-410 ################################################### net1 <- generateRandomNKNetwork(n=10, k=3, functionGeneration=generateCanalyzing, zeroBias=0.75) net2 <- generateRandomNKNetwork(n=10, k=3, functionGeneration=generateNestedCanalyzing, zeroBias=0.75) ################################################### ### code chunk number 29: BoolNet_package_vignette.Snw.Rnw:418-431 ################################################### isMonotone <- function(input, func) { for (i in seq_len(ncol(input))) # check each input gene { groupResults <- split(func, input[,i]) if (any(groupResults[[1]] < groupResults[[2]]) && any(groupResults[[1]] > groupResults[[2]])) # the function is not monotone return(FALSE) } return(TRUE) } ################################################### ### code chunk number 30: BoolNet_package_vignette.Snw.Rnw:440-444 ################################################### net <- generateRandomNKNetwork(n=10, k=3, validationFunction="isMonotone", failureIterations=1000) ################################################### ### code chunk number 31: BoolNet_package_vignette.Snw.Rnw:455-457 ################################################### data(cellcycle) knockedOut <- fixGenes(cellcycle, "CycD", 0) ################################################### ### code chunk number 32: BoolNet_package_vignette.Snw.Rnw:460-461 ################################################### knockedOut <- fixGenes(cellcycle, 1, 0) ################################################### ### code chunk number 33: BoolNet_package_vignette.Snw.Rnw:464-465 ################################################### overExpressed <- fixGenes(cellcycle, "CycD", 1) ################################################### ### code chunk number 34: BoolNet_package_vignette.Snw.Rnw:468-469 ################################################### originalNet <- fixGenes(knockedOut, "CycD", -1) ################################################### ### code chunk number 35: BoolNet_package_vignette.Snw.Rnw:474-475 ################################################### newNet <- fixGenes(cellcycle, c("CycD","CycE"), c(0,1)) ################################################### ### code chunk number 36: BoolNet_package_vignette.Snw.Rnw:486-488 ################################################### data(cellcycle) stateTransition(cellcycle, rep(1,10)) ################################################### ### code chunk number 37: BoolNet_package_vignette.Snw.Rnw:492-494 ################################################### path <- getPathToAttractor(cellcycle, rep(0,10)) path ################################################### ### code chunk number 38: BoolNet_package_vignette.Snw.Rnw:499-503 ################################################### pdf("sequence.pdf") par(mar = c(1, 4, 2, 1)) plotSequence(sequence=path) dev.off() ################################################### ### code chunk number 39: BoolNet_package_vignette.Snw.Rnw:505-506 (eval = FALSE) ################################################### ## plotSequence(sequence=path) ################################################### ### code chunk number 40: BoolNet_package_vignette.Snw.Rnw:519-520 (eval = FALSE) ################################################### ## sequenceToLaTeX(sequence=path, file="sequence.tex") ################################################### ### code chunk number 41: BoolNet_package_vignette.Snw.Rnw:525-527 ################################################### startState <- generateState(cellcycle, specs=c("CycD"=1,"CycA"=1)) stateTransition(cellcycle,startState) ################################################### ### code chunk number 42: BoolNet_package_vignette.Snw.Rnw:534-535 ################################################### data(igf) ################################################### ### code chunk number 43: BoolNet_package_vignette.Snw.Rnw:540-542 ################################################### startState <- generateState(igf, specs=c("IGF"=1)) stateTransition(igf, startState) ################################################### ### code chunk number 44: BoolNet_package_vignette.Snw.Rnw:545-546 ################################################### getPathToAttractor(network=igf,state=startState) ################################################### ### code chunk number 45: BoolNet_package_vignette.Snw.Rnw:551-554 ################################################### startState <- generateState(igf, specs=list("IGF"=c(0,0,1))) startState ################################################### ### code chunk number 46: BoolNet_package_vignette.Snw.Rnw:564-568 ################################################### pdf("sequence_igf.pdf") par(mar = c(1, 4, 2, 1)) plotSequence(network=igf, startState=startState) dev.off() ################################################### ### code chunk number 47: BoolNet_package_vignette.Snw.Rnw:570-571 (eval = FALSE) ################################################### ## plotSequence(network=igf, startState=startState) ################################################### ### code chunk number 48: BoolNet_package_vignette.Snw.Rnw:577-578 ################################################### set.seed(54321) ################################################### ### code chunk number 49: BoolNet_package_vignette.Snw.Rnw:580-581 ################################################### stateTransition(cellcycle, rep(1,10), type="asynchronous") ################################################### ### code chunk number 50: BoolNet_package_vignette.Snw.Rnw:587-588 ################################################### set.seed(4321) ################################################### ### code chunk number 51: BoolNet_package_vignette.Snw.Rnw:590-592 ################################################### stateTransition(cellcycle, rep(1,10), type="asynchronous", geneProbabilities=c(0.05,0.05,0.2,0.3,0.05,0.05,0.05,0.05,0.1,0.1)) ################################################### ### code chunk number 52: BoolNet_package_vignette.Snw.Rnw:599-601 ################################################### stateTransition(cellcycle, rep(1,10), type="asynchronous", chosenGene="CycE") ################################################### ### code chunk number 53: BoolNet_package_vignette.Snw.Rnw:605-606 ################################################### set.seed(432) ################################################### ### code chunk number 54: BoolNet_package_vignette.Snw.Rnw:608-610 ################################################### data(examplePBN) stateTransition(examplePBN, c(0,1,1), type="probabilistic") ################################################### ### code chunk number 55: BoolNet_package_vignette.Snw.Rnw:613-615 ################################################### stateTransition(examplePBN, c(0,1,1), type="probabilistic", chosenFunctions=c(2,1,2)) ################################################### ### code chunk number 56: BoolNet_package_vignette.Snw.Rnw:633-636 (eval = FALSE) ################################################### ## data(cellcycle) ## attr <- getAttractors(cellcycle) ## attr ################################################### ### code chunk number 57: BoolNet_package_vignette.Snw.Rnw:639-641 ################################################### attr <- getAttractors(cellcycle) attr ################################################### ### code chunk number 58: BoolNet_package_vignette.Snw.Rnw:647-648 (eval = FALSE) ################################################### ## print(attr, activeOnly=TRUE) ################################################### ### code chunk number 59: BoolNet_package_vignette.Snw.Rnw:651-652 ################################################### print(attr, activeOnly=TRUE) ################################################### ### code chunk number 60: BoolNet_package_vignette.Snw.Rnw:661-662 ################################################### getAttractorSequence(attr, 2) ################################################### ### code chunk number 61: BoolNet_package_vignette.Snw.Rnw:669-671 (eval = FALSE) ################################################### ## tt <- getTransitionTable(attr) ## tt ################################################### ### code chunk number 62: BoolNet_package_vignette.Snw.Rnw:685-686 (eval = FALSE) ################################################### ## getBasinOfAttraction(attr, 1) ################################################### ### code chunk number 63: BoolNet_package_vignette.Snw.Rnw:691-692 (eval = FALSE) ################################################### ## getStateSummary(attr, c(1,1,1,1,1,1,1,1,1,1)) ################################################### ### code chunk number 64: BoolNet_package_vignette.Snw.Rnw:704-709 ################################################### pdf("stategraph1.pdf") set.seed(43210) par(mar=c(1,1,1,1)) plotStateGraph(attr) dev.off() ################################################### ### code chunk number 65: BoolNet_package_vignette.Snw.Rnw:711-712 (eval = FALSE) ################################################### ## plotStateGraph(attr) ################################################### ### code chunk number 66: BoolNet_package_vignette.Snw.Rnw:718-723 ################################################### pdf("piecewisestategraph.pdf") set.seed(43210) par(mar=c(1,1,1,1)) plotStateGraph(attr, piecewise=TRUE) dev.off() ################################################### ### code chunk number 67: BoolNet_package_vignette.Snw.Rnw:725-726 (eval = FALSE) ################################################### ## plotStateGraph(attr, piecewise=TRUE) ################################################### ### code chunk number 68: BoolNet_package_vignette.Snw.Rnw:741-742 (eval = FALSE) ################################################### ## attr <- getAttractors(cellcycle, method="random", startStates=100) ################################################### ### code chunk number 69: BoolNet_package_vignette.Snw.Rnw:746-749 (eval = FALSE) ################################################### ## attr <- getAttractors(cellcycle, ## method="chosen", ## startStates=list(rep(0,10),rep(1,10))) ################################################### ### code chunk number 70: BoolNet_package_vignette.Snw.Rnw:758-759 (eval = FALSE) ################################################### ## plotAttractors(attr, subset=2) ################################################### ### code chunk number 71: BoolNet_package_vignette.Snw.Rnw:761-765 ################################################### pdf("attractor1.pdf") par(mar=c(1,5,1,1)) plotAttractors(attr, subset=2) dev.off() ################################################### ### code chunk number 72: BoolNet_package_vignette.Snw.Rnw:768-769 (eval = FALSE) ################################################### ## attractorsToLaTeX(attr, subset=2, file="attractors.tex") ################################################### ### code chunk number 73: BoolNet_package_vignette.Snw.Rnw:783-787 ################################################### attr <- getAttractors(cellcycle, type="asynchronous", method="random", startStates=500) ################################################### ### code chunk number 74: BoolNet_package_vignette.Snw.Rnw:793-794 (eval = FALSE) ################################################### ## attr ################################################### ### code chunk number 75: BoolNet_package_vignette.Snw.Rnw:820-825 (eval = FALSE) ################################################### ## attr <- getAttractors(cellcycle, ## type="asynchronous", ## method="random", ## startStates=500, ## avoidSelfLoops=FALSE) ################################################### ### code chunk number 76: BoolNet_package_vignette.Snw.Rnw:840-844 ################################################### pdf("attractor2.pdf") par(mar=c(1,1,1,1)) plotAttractors(attr, subset=2, mode="graph", drawLabels=FALSE) dev.off() ################################################### ### code chunk number 77: BoolNet_package_vignette.Snw.Rnw:846-847 (eval = FALSE) ################################################### ## plotAttractors(attr, subset=2, mode="graph", drawLabels=FALSE) ################################################### ### code chunk number 78: BoolNet_package_vignette.Snw.Rnw:855-857 (eval = FALSE) ################################################### ## sim <- simulateSymbolicModel(igf) ## sim ################################################### ### code chunk number 79: BoolNet_package_vignette.Snw.Rnw:860-862 ################################################### sim <- simulateSymbolicModel(igf) sim ################################################### ### code chunk number 80: BoolNet_package_vignette.Snw.Rnw:876-884 ################################################### pdf("attractor3.pdf") par(mar=c(1,5,1,1)) plotAttractors(sim, subset=2) dev.off() pdf("stategraph2.pdf") par(mar=c(1,1,1,1)) plotStateGraph(sim) dev.off() ################################################### ### code chunk number 81: BoolNet_package_vignette.Snw.Rnw:886-887 (eval = FALSE) ################################################### ## plotAttractors(sim, subset=2) ################################################### ### code chunk number 82: BoolNet_package_vignette.Snw.Rnw:890-891 (eval = FALSE) ################################################### ## plotStateGraph(sim) ################################################### ### code chunk number 83: BoolNet_package_vignette.Snw.Rnw:905-906 ################################################### set.seed(43851) ################################################### ### code chunk number 84: BoolNet_package_vignette.Snw.Rnw:908-909 ################################################### sim <- simulateSymbolicModel(igf, method="random", startStates=2) ################################################### ### code chunk number 85: BoolNet_package_vignette.Snw.Rnw:912-913 ################################################### sim$sequences ################################################### ### code chunk number 86: BoolNet_package_vignette.Snw.Rnw:928-931 ################################################### data(examplePBN) sim <- markovSimulation(examplePBN) sim ################################################### ### code chunk number 87: BoolNet_package_vignette.Snw.Rnw:937-938 (eval = FALSE) ################################################### ## plotPBNTransitions(sim) ################################################### ### code chunk number 88: BoolNet_package_vignette.Snw.Rnw:940-945 ################################################### pdf("pbntransitions.pdf") set.seed(4961) par(mar=c(1,1,1,1)) plotPBNTransitions(sim) dev.off() ################################################### ### code chunk number 89: BoolNet_package_vignette.Snw.Rnw:958-963 ################################################### data(cellcycle) sim <- markovSimulation(cellcycle, numIterations=1024, returnTable=FALSE) sim ################################################### ### code chunk number 90: BoolNet_package_vignette.Snw.Rnw:972-977 ################################################### sim <- markovSimulation(cellcycle, numIterations=1024, returnTable=FALSE, startStates=list(rep(1,10))) sim ################################################### ### code chunk number 91: BoolNet_package_vignette.Snw.Rnw:989-990 ################################################### set.seed(3361) ################################################### ### code chunk number 92: BoolNet_package_vignette.Snw.Rnw:992-997 ################################################### data(cellcycle) r <- perturbTrajectories(cellcycle, measure="hamming", numSamples=100, flipBits=1) ################################################### ### code chunk number 93: BoolNet_package_vignette.Snw.Rnw:1001-1002 ################################################### r$value ################################################### ### code chunk number 94: BoolNet_package_vignette.Snw.Rnw:1006-1012 ################################################### r <- perturbTrajectories(cellcycle, measure="sensitivity", numSamples=100, flipBits=1, gene="CycE") r$value ################################################### ### code chunk number 95: BoolNet_package_vignette.Snw.Rnw:1017-1022 ################################################### r <- perturbTrajectories(cellcycle, measure="attractor", numSamples=100, flipBits=1) r$value ################################################### ### code chunk number 96: BoolNet_package_vignette.Snw.Rnw:1029-1032 ################################################### perturbedNet <- perturbNetwork(cellcycle, perturb="functions", method="bitflip") ################################################### ### code chunk number 97: BoolNet_package_vignette.Snw.Rnw:1037-1040 ################################################### perturbedNet <- perturbNetwork(cellcycle, perturb="functions", method="shuffle") ################################################### ### code chunk number 98: BoolNet_package_vignette.Snw.Rnw:1046-1050 ################################################### perturbedNet <- perturbNetwork(cellcycle, perturb="transitions", method="bitflip", numStates=10) ################################################### ### code chunk number 99: BoolNet_package_vignette.Snw.Rnw:1058-1114 (eval = FALSE) ################################################### ## # Perform a robustness test on a network ## # by counting the numbers of perturbed networks ## # containing the attractors of the original net ## ## library(BoolNet) ## ## # load mammalian cell cycle network ## data(cellcycle) ## ## # get attractors in original network ## attrs <- getAttractors(cellcycle, canonical=TRUE) ## ## # create 1000 perturbed copies of the network and search for attractors ## perturbationResults <- sapply(1:1000, function(i) ## { ## # perturb network and identify attractors ## perturbedNet <- perturbNetwork(cellcycle, perturb="functions", method="bitflip") ## perturbedAttrs <- getAttractors(perturbedNet, canonical=TRUE) ## ## # check whether the attractors in the original network exist in the perturbed network ## attractorIndices <- sapply(attrs$attractors,function(attractor1) ## { ## index <- which(sapply(perturbedAttrs$attractors, function(attractor2) ## { ## identical(attractor1, attractor2) ## })) ## if (length(index) == 0) ## NA ## else ## index ## }) ## return(attractorIndices) ## }) ## ## # perturbationResults now contains a matrix ## # with the first 2 columns specifying the indices or the ## # original attractors in the perturbed network ## # (or NA if the attractor was not found) and the next 2 ## # columns counting the numbers of states ## # in the basin of attraction (or NA if the attractor was not found) ## ## # measure the total numbers of occurrences of the original attractors in the perturbed copies ## numOccurrences <- apply(perturbationResults[seq_along(attrs$attractors),,drop=FALSE], 1, ## function(row)sum(!is.na(row))) ## ## # print original attractors ## cat("Attractors in original network:\n") ## print(attrs) ## ## # print information ## cat("Number of occurrences of the original attractors", ## "in 1000 perturbed copies of the network:\n") ## for (i in 1:length(attrs$attractors)) ## { ## cat("Attractor ",i,": ",numOccurrences[i],"\n",sep="") ## } ################################################### ### code chunk number 100: BoolNet_package_vignette.Snw.Rnw:1148-1153 (eval = FALSE) ################################################### ## data(cellcycle) ## res <- testNetworkProperties(cellcycle, ## numRandomNets=100, ## testFunction="testAttractorRobustness", ## testFunctionParams = list(copies=100, perturb="functions")) ################################################### ### code chunk number 101: BoolNet_package_vignette.Snw.Rnw:1159-1168 ################################################### pdf("attractor_robustness.pdf") par(mar=c(4,4,2,1)) data(cellcycle) set.seed(3241) res <- testNetworkProperties(cellcycle, numRandomNets=100, testFunction="testAttractorRobustness", testFunctionParams = list(copies=100, perturb="functions")) dev.off() ################################################### ### code chunk number 102: BoolNet_package_vignette.Snw.Rnw:1189-1194 (eval = FALSE) ################################################### ## testNetworkProperties(cellcycle, ## numRandomNets=100, ## testFunction="testTransitionRobustness", ## testFunctionParams=list(numSamples=100), ## alternative="less") ################################################### ### code chunk number 103: BoolNet_package_vignette.Snw.Rnw:1197-1207 ################################################### pdf("transition_robustness.pdf") par(mar=c(4,4,2,1)) data(cellcycle) set.seed(22652) testNetworkProperties(cellcycle, numRandomNets=100, testFunction="testTransitionRobustness", testFunctionParams=list(numSamples=100), alternative="less") dev.off() ################################################### ### code chunk number 104: BoolNet_package_vignette.Snw.Rnw:1212-1215 (eval = FALSE) ################################################### ## testNetworkProperties(cellcycle, ## numRandomNets=100, ## testFunction="testIndegree") ################################################### ### code chunk number 105: BoolNet_package_vignette.Snw.Rnw:1217-1224 ################################################### pdf("indegree.pdf") par(mar=c(4,4,2,1)) set.seed(6314) testNetworkProperties(cellcycle, numRandomNets=100, testFunction="testIndegree") dev.off() ################################################### ### code chunk number 106: BoolNet_package_vignette.Snw.Rnw:1241-1245 (eval = FALSE) ################################################### ## testNetworkProperties(cellcycle, ## numRandomNets=100, ## testFunction="testIndegree", ## accumulation="kullback_leibler") ################################################### ### code chunk number 107: BoolNet_package_vignette.Snw.Rnw:1247-1255 ################################################### pdf("indegree_kl.pdf") par(mar=c(4,4,2,1)) set.seed(234256) testNetworkProperties(cellcycle, numRandomNets=100, testFunction="testIndegree", accumulation="kullback_leibler") dev.off() ################################################### ### code chunk number 108: BoolNet_package_vignette.Snw.Rnw:1271-1283 ################################################### testBasinSizes <- function(network, accumulate=TRUE, params) { attr <- getAttractors(network) basinSizes <- sapply(attr$attractors, function(a) { a$basinSize }) if (accumulate) return(mean(basinSizes)) else return(basinSizes) } ################################################### ### code chunk number 109: BoolNet_package_vignette.Snw.Rnw:1289-1293 (eval = FALSE) ################################################### ## testNetworkProperties(cellcycle, ## numRandomNets=100, ## testFunction="testBasinSizes", ## xlab="Average size of basins of attraction") ################################################### ### code chunk number 110: BoolNet_package_vignette.Snw.Rnw:1295-1303 ################################################### pdf("basinsize.pdf") par(mar=c(4,4,2,1)) set.seed(6724) testNetworkProperties(cellcycle, numRandomNets=100, testFunction="testBasinSizes", xlab="Average size of basins of attraction") dev.off() ################################################### ### code chunk number 111: BoolNet_package_vignette.Snw.Rnw:1326-1327 (eval = FALSE) ################################################### ## saveNetwork(cellcycle, file="cellcycle.txt") ################################################### ### code chunk number 112: BoolNet_package_vignette.Snw.Rnw:1332-1334 ################################################### net <- generateRandomNKNetwork(n=10, k=3, readableFunctions=FALSE) saveNetwork(net, file="randomnet.txt", generateDNF=TRUE) ################################################### ### code chunk number 113: BoolNet_package_vignette.Snw.Rnw:1349-1352 ################################################### toSBML(cellcycle, file="cellcycle.sbml") sbml_cellcycle <- loadSBML("cellcycle.sbml") sbml_cellcycle ################################################### ### code chunk number 114: BoolNet_package_vignette.Snw.Rnw:1371-1372 (eval = FALSE) ################################################### ## system.file("doc/example.btp", package="BoolNet") ################################################### ### code chunk number 115: BoolNet_package_vignette.Snw.Rnw:1404-1405 ################################################### net <- loadBioTapestry(system.file("doc/example.btp", package="BoolNet")) ################################################### ### code chunk number 116: BoolNet_package_vignette.Snw.Rnw:1407-1408 (eval = FALSE) ################################################### ## net <- loadBioTapestry("example.btp") ################################################### ### code chunk number 117: BoolNet_package_vignette.Snw.Rnw:1413-1414 (eval = FALSE) ################################################### ## net ################################################### ### code chunk number 118: BoolNet_package_vignette.Snw.Rnw:1437-1438 (eval = FALSE) ################################################### ## plotNetworkWiring(net) ################################################### ### code chunk number 119: BoolNet_package_vignette.Snw.Rnw:1440-1445 ################################################### pdf("wiring_biotap.pdf") par(mar=c(1,1,1,1)) set.seed(559652) plotNetworkWiring(net) dev.off() ################################################### ### code chunk number 120: BoolNet_package_vignette.Snw.Rnw:1466-1469 (eval = FALSE) ################################################### ## data(cellcycle) ## attr <- getAttractors(cellcycle) ## toPajek(attr, file="cellcycle.net") ################################################### ### code chunk number 121: BoolNet_package_vignette.Snw.Rnw:1473-1474 (eval = FALSE) ################################################### ## toPajek(attr, file="cellcycle.net", includeLabels=TRUE) BoolNet/src/0000755000176200001440000000000013455114165012410 5ustar liggesusersBoolNet/src/boolean_network.h0000644000176200001440000000557213277247010015760 0ustar liggesusers#ifndef BOOLEAN_NETWORK_H #define BOOLEAN_NETWORK_H #define TRUTHTABLE_BOOLEAN_NETWORK 0 #define PROBABILISTIC_BOOLEAN_NETWORK 1 #define SYMBOLIC_BOOLEAN_NETWORK 2 /** * Basic structure for different types of * Boolean network (extended by derived structures * TruthTableBooleanNetwork, ProbabilisticBooleanNetwork and SymbolicBooleanNetwork) */ typedef struct { // the network type unsigned char type; // the number of genes in the network unsigned int numGenes; // a vector specifying whether the genes are fixed: // -1 means the gene is not fixed, 1 and 0 means the // genes are fixed to the corresponding values int * fixedGenes; } BooleanNetwork; /** * Internal structure describing a Boolean network * with a truth table representation */ typedef struct { // here: type = TRUTHTABLE_BOOLEAN_NETWORK unsigned char type; // the number of genes in the network unsigned int numGenes; // a vector specifying whether the genes are fixed: // -1 means the gene is not fixed, 1 and 0 means the // genes are fixed to the corresponding values int * fixedGenes; // an index array with the -th entry // specifying the bit position of the -th gene // in a state array - this is not always equal to , // as fixed genes are not stored unsigned int * nonFixedGeneBits; // a vector encoding the input genes for all transition functions. int * inputGenes; // a vector of indices to split up for the single // gene transition functions. int * inputGenePositions; // a vector encoding the return values of all transition functions int * transitionFunctions; // a vector of indices to split up for the single // genes. int * transitionFunctionPositions; } TruthTableBooleanNetwork; typedef struct { int * inputGenes; int * transitionFunction; unsigned int numGenes; double probability; unsigned int functionIndex; } PBNFunction; /** * Internal structure describing a Probabilistic Boolean network */ typedef struct { // here: type = PROBABILISTIC_BOOLEAN_NETWORK unsigned char type; // the number of genes in the network unsigned int numGenes; // a vector specifying whether the genes are fixed: // -1 means the gene is not fixed, 1 and 0 means the // genes are fixed to the corresponding values int * fixedGenes; // the number of non-fixed genes in the network unsigned int numNonFixedGenes; // an index array with the -th entry // specifying the bit position of the -th gene // in a state array - this is not always equal to , // as fixed genes are not stored unsigned int * nonFixedGeneBits; // an array containing an array of transition functions for each gene PBNFunction ** transitionFunctions; // the lengths of the arrays in unsigned int * numFunctionsPerGene; } ProbabilisticBooleanNetwork; // see also symbolic_boolean_network.h for the definition of symbolic networks #endif BoolNet/src/common.h0000644000176200001440000001506513301250404014043 0ustar liggesusers#ifndef COMMON_H #define COMMON_H #include #include #include #include "uthash.h" /** * Common structures and definitions */ /** * Macros for bit manipulation */ // the number of bits that can be stored in one component of a 32-bit state array #define BITS_PER_BLOCK_32 (sizeof(unsigned int) * 8) // Retrieve the -th bit in #define GET_BIT(x,i) (((x) & ((unsigned long long)1 << (i))) != 0) // Set the -th bit in to 1 #define SET_BIT(x,i) ((x) | ((unsigned long long)1 << (i))) // Set the -th bit in to 0 #define CLEAR_BIT(x,i) ((x) & (~((unsigned long long)1 << (i)))) // Set the -th bit in to #define SET_BIT_TO_VAL(x,i,v) (((x) & (~((unsigned long long)1 << (i)))) | ((v) << (i))) // Retrieve the -th bit in an array of 32-bit integers #define GET_BIT_ARRAY(x,i) (((*(&(x) + i / BITS_PER_BLOCK_32)) & ((unsigned int)1 << (i % BITS_PER_BLOCK_32))) != 0) // Set the -th bit in an array of 32-bit integers to 1 #define SET_BIT_ARRAY(x,i) (*(&(x) + i / BITS_PER_BLOCK_32) |= ((unsigned int)1 << (i % BITS_PER_BLOCK_32))) // Set the -th bit in an array of 32-bit integers to 0 #define CLEAR_BIT_ARRAY(x,i) (*(&(x) + i / BITS_PER_BLOCK_32) &= (~((unsigned int)1 << (i % BITS_PER_BLOCK_32)))) /** * Macros for the management of vector-like buffers with automatic resizing */ // Allocate a buffer of type [] and set the capacity counter and the number of elements #define ALLOC_BUFFER(buf, type, sz, count) do{sz = 4; count = 0; buf = calloc(sz, sizeof(type)); } while(0); // Add a new element of type to the buffer , and update the capacity counter and the number of elements #define PUT_BUFFER(buf, type, sz, count, el) do{if (sz == count) {sz *= 2; buf = realloc(buf, sz * sizeof(type));} buf[count++] = (type) el; } while(0); // Set the capacity of the buffer of type [] to the current number of elements #define FINALIZE_BUFFER(buf, type, sz, count) do{sz = count; buf = realloc(buf, sz * sizeof(type)); } while(0); /** * A hash structure for the allocated memory map */ typedef struct { // a pointer to the allocated memory void * ptr; // used by the hash table UT_hash_handle hh; } AllocatedMemory; // map that stores all allocated memory pointers // to free them on interrupt extern AllocatedMemory * memoryMap; /** * Custom function to allocate memory that stores * the pointers in the global map. */ static inline void* CALLOC(size_t n, size_t sz) { void * ptr = calloc(n, sz); if (ptr == NULL) error("Out of memory!"); AllocatedMemory * m = calloc(1, sizeof(AllocatedMemory)); m->ptr = ptr; HASH_ADD_PTR(memoryMap, ptr, m); return ptr; } static inline void* REALLOC(void* ptr, size_t new_sz) { if (ptr == NULL) return CALLOC(new_sz, 1); void * newptr = realloc(ptr, new_sz); if (newptr == NULL) error("Out of memory!"); if (newptr != ptr) { AllocatedMemory * m; HASH_FIND_PTR(memoryMap, &ptr, m); HASH_DEL(memoryMap, m); m->ptr = newptr; HASH_ADD_PTR(memoryMap, ptr, m); } return newptr; } /** * Custom function to free memory that was * allocated using CALLOC(). */ static inline void FREE(void * ptr) { AllocatedMemory * m; HASH_FIND_PTR(memoryMap, &ptr, m); HASH_DEL(memoryMap, m); free(m); free(ptr); } /** * Add one to a binary number represented by an array of characters * with 0/1 elements. * is a vector of fixed positions that are not touched or NULL. * Return true if there is a next state, or false in case of an overflow. */ static inline bool getNextState(unsigned char * state, int * fixed, unsigned int numBits) { if (numBits == 0) return false; int i = numBits - 1; while(true) { while (fixed != NULL && fixed[i] != -1) { --i; } if (i < 0) return false; if (state[i] == 0) { state[i] = 1; return true; } else { if (i == 0) return false; state[i] = 0; --i; } } } /** * Free all remaining memory blocks stored in * the global map. * moved to init.c */ //extern void freeAllMemory(); /** * A structure that provides flexible * large array blocks as a list of arrays */ typedef struct ALE { void * array; struct ALE * next; } ArrayListElement; static inline void allocNewArray(ArrayListElement ** head, unsigned int numElements, unsigned int elementSize) { ArrayListElement * el = CALLOC(1, sizeof(ArrayListElement)); el->array = CALLOC(numElements, elementSize); el->next = *head; *head = el; } /* * Free an array list . */ static inline void freeArrayList(ArrayListElement * head) { ArrayListElement * current = head; while (current != NULL) { ArrayListElement * next = current->next; FREE(current->array); FREE(current); current = next; } } /** * Encode a vector of binary values in an integer. * The rightmost element in is the leftmost bit in * is an array of elements, and points * to an integer to which the result is written. * Moved to init.c */ extern void bin2decC(int *dec, int *bin, int *numBits); /** * Decode an integer to a vector of binary values. * The rightmost element in is the leftmost bit in * points to the result vector, is a number * to be decoded, and is the number of bits/elements in bin * moved to init.c */ extern void dec2binC(int *bin, int *dec, int *numBits); /** * Inserts values of fixed genes into states - this is required as * fixed genes are not encoded in the internal state representations. * is a pointer to a state to be corrected. * is an array specifying which genes are fixed, as contained in * the BooleanNetwork structure. * is the length of . * The function changes the state pointed to by and has no return value. */ extern void insertFixedGenes(unsigned int * value, int* fixedGenes, unsigned int numGenes); /** * Removes values of fixed genes from states - this is required as * fixed genes are not encoded in the internal state representations. * is a pointer to a state to be corrected. * is an array specifying which genes are fixed, as contained in * the BooleanNetwork structure. * is the length of . * The function changes the state pointed to by and has no return value. */ extern void removeFixedGenes(unsigned int * value, int* fixedGenes, unsigned int numGenes); extern SEXP getListElement(SEXP list, char *str); #endif BoolNet/src/symbolic_simulator.c0000644000176200001440000011176013451132774016504 0ustar liggesusers#include #include #include #include #include #include #include #include #include #include "symbolic_network.h" #include "uthash.h" #include "common.h" #include "random.h" #include "sat_search.h" #define STATEHASH_ARRAY_SIZE 1024 /** * A list element containing the states of one attractor */ typedef struct ASLE { TemporalState ** states; unsigned int numStates; struct ASLE * next; unsigned int index; } TemporalAttractorStateListElement; /** * A list comprising attractors */ typedef struct { TemporalAttractorStateListElement * head; TemporalAttractorStateListElement * tail; unsigned int size; } TemporalAttractorStateList; /** * A hash structure for state sets */ typedef struct SH { UT_hash_handle hh; struct SH * nextState; unsigned int sequenceIndex; TemporalState * initialState; } TemporalStateHash; /** * A structure for mapping states to attractors */ typedef struct { UT_hash_handle hh; TemporalAttractorStateListElement * attractor; TemporalState * state; } TemporalAttractorHash; /** * A wrapper structure for a state set */ typedef struct { ArrayListElement * hashStructs; ArrayListElement * stateStructs; TemporalStateHash * table; unsigned int stateSize; unsigned int internalStateSize; unsigned int hashSize; unsigned int currentEntryHash; unsigned int poolArraySize; } TemporalStateHashTable; /** * A wrapper structure for a map * mapping states to attractors */ typedef struct { ArrayListElement * hashStructs; ArrayListElement * stateStructs; TemporalAttractorHash * table; unsigned int stateSize; unsigned int internalStateSize; unsigned int currentEntryHash; unsigned int poolArraySize; } AttractorHashTable; /** * Functions to handle hash tables for states and attractors */ TemporalStateHashTable * allocStateHashTable(unsigned int stateSize) { TemporalStateHashTable * res = CALLOC(1, sizeof(TemporalStateHashTable)); res->hashStructs = NULL; res->stateStructs = NULL; res->stateSize = stateSize; // ensure proper alignment of states in array if (stateSize % sizeof(unsigned long long) == 0) res->internalStateSize = stateSize; else res->internalStateSize = ((stateSize / sizeof(unsigned long long)) * sizeof(unsigned long long) + sizeof(unsigned long long)); res->hashSize = offsetof(TemporalState, state) + stateSize * sizeof(unsigned char); res->table = NULL; res->currentEntryHash = 0; res->poolArraySize = STATEHASH_ARRAY_SIZE; return res; } AttractorHashTable * allocAttractorHashTable(unsigned int stateSize) { AttractorHashTable * res = CALLOC(1, sizeof(AttractorHashTable)); res->hashStructs = NULL; res->stateStructs = NULL; res->stateSize = stateSize; // ensure proper alignment of states in array if (stateSize % sizeof(unsigned long long) == 0) res->internalStateSize = stateSize; else res->internalStateSize = ((stateSize / sizeof(unsigned long long)) * sizeof(unsigned long long) + sizeof(unsigned long long)); res->table = NULL; res->currentEntryHash = 0; res->poolArraySize = STATEHASH_ARRAY_SIZE; return res; } void freeStateHashTable(TemporalStateHashTable * hash) { TemporalStateHash * entry, *tmp; HASH_ITER(hh, hash->table, entry, tmp) { HASH_DEL(hash->table, entry); } freeArrayList(hash->hashStructs); freeArrayList(hash->stateStructs); FREE(hash); } void freeAttractorHashTable(AttractorHashTable * hash) { TemporalAttractorHash * entry, *tmp; HASH_ITER(hh, hash->table, entry, tmp) { HASH_DEL(hash->table, entry); } freeArrayList(hash->hashStructs); freeArrayList(hash->stateStructs); FREE(hash); } /** * Decode a sequence of states as a state-memory representation and * returns it in . * is the network to which the state belongs. * is the number of entries in the state vector. */ inline static void decodeState(SymbolicBooleanNetwork * network, int * state, unsigned int stateLength, TemporalState * result) { unsigned int numStates = stateLength / network->numGenes; unsigned int i, j; memset(result, 0, sizeof(TemporalState) + network->totalStateSize * sizeof(unsigned char)); for (i = 0; i < network->numGenes; ++i) { for (j = 0; j < network->stateSizes[i]; ++j) { if (j < numStates) result->state[network->stateOffsets[i] + j] = state[i * numStates + j]; else result->state[network->stateOffsets[i] + j] = state[(i + 1) * numStates - 1]; } } } /** * Check whether a stat transition pair has already been traversed, and store it in the hash * table otherwise. * is the hash table for the lookup. * is the next state after the state transition. * receives the initial state of the transition if it was found. * If is true, the absolute time point is not stored in the table. * is the index of the sequence to which the transition belongs. * Returns true if the state was found, and false otherwise. */ bool findOrStore(TemporalStateHashTable * hash, TemporalStateHash ** initialState, TemporalState * nextState, bool dropTimeInfo, unsigned int sequenceIndex) { //TemporalState * search = CALLOC(1, sizeof(StateHash) + sizeof(unsigned char) * hash->stateSize); //memcpy(search, nextState, sizeof(TemporalState) + sizeof(unsigned char) * hash->stateSize); //if (dropTimeInfo) //{ // search->timeStep = HASH_UNSET; // search->startState = HASH_UNSET; //} TemporalStateHash * res = NULL; if (dropTimeInfo) { HASH_FIND(hh, hash->table, nextState->state, hash->stateSize, res); } else { HASH_FIND(hh, hash->table, nextState, hash->hashSize, res); } if (res != NULL) { if (*initialState != NULL) (*initialState)->nextState = res; *initialState = res; return true; } if (hash->currentEntryHash % hash->poolArraySize == 0) { allocNewArray(&hash->hashStructs, hash->poolArraySize, sizeof(TemporalStateHash)); allocNewArray(&hash->stateStructs, hash->poolArraySize, sizeof(TemporalState) + sizeof(unsigned char) * hash->internalStateSize); } res = (TemporalStateHash *) (((unsigned char *) hash->hashStructs->array) + sizeof(TemporalStateHash) * (hash->currentEntryHash % hash->poolArraySize)); res->initialState = (TemporalState *) (((unsigned char *) hash->stateStructs->array) + (sizeof(TemporalState) + sizeof(unsigned char) * hash->internalStateSize) * (hash->currentEntryHash % hash->poolArraySize)); memcpy(res->initialState, nextState, sizeof(TemporalState) + sizeof(unsigned char) * hash->stateSize); res->sequenceIndex = sequenceIndex; ++hash->currentEntryHash; if (*initialState != NULL) { (*initialState)->nextState = res; } //unsigned int i; //for (i = 0; i < hash->hashSize; ++i) // Rprintf("%x",((unsigned char *)&res->initialState)[i]); if (dropTimeInfo) { HASH_ADD(hh, hash->table, initialState->state, hash->stateSize, res); } else { HASH_ADD_KEYPTR(hh, hash->table, res->initialState, hash->hashSize, res); } *initialState = res; return false; } TemporalAttractorHash * addAttractorHashEntry(AttractorHashTable * hash, TemporalState * state, TemporalAttractorStateListElement * listElement) { if (hash->currentEntryHash % hash->poolArraySize == 0) { allocNewArray(&hash->hashStructs, hash->poolArraySize, sizeof(TemporalAttractorHash)); allocNewArray(&hash->stateStructs, hash->poolArraySize, sizeof(TemporalState) + sizeof(unsigned char) * hash->internalStateSize); } TemporalAttractorHash * res = (TemporalAttractorHash *) (((unsigned char *) hash->hashStructs->array) + sizeof(TemporalAttractorHash) * (hash->currentEntryHash % hash->poolArraySize)); res->state = (TemporalState *) (((unsigned char *) hash->stateStructs->array) + (sizeof(TemporalState) + sizeof(unsigned char) * hash->internalStateSize) * (hash->currentEntryHash % hash->poolArraySize)); memcpy(res->state, state, sizeof(TemporalState) + sizeof(unsigned char) * hash->stateSize); res->attractor = listElement; ++hash->currentEntryHash; HASH_ADD(hh, hash->table, state->state, hash->stateSize, res); return res; } /** * Find the attractor belonging to state in the hash table * and return it if it exists. */ TemporalAttractorStateListElement * getAttractorForState( AttractorHashTable * hash, TemporalState * state) { TemporalAttractorHash * res = NULL; HASH_FIND(hh, hash->table, state->state, hash->stateSize, res); if (res == NULL) { return NULL; } else { return res->attractor; } } /** * Allocate a list structure that stores attractors */ TemporalAttractorStateList * allocAttractorStateList() { TemporalAttractorStateList * res = CALLOC(1, sizeof(TemporalAttractorStateList)); res->size = 0; res->head = res->tail = NULL; return res; } /** * Add an empty attractor entry to the attractor list . * is the number of states of the attractor. * Returns the empty entry. */ TemporalAttractorStateListElement * addAttractor( TemporalAttractorStateList * list, unsigned int numStates) { TemporalAttractorStateListElement * res = CALLOC(1, sizeof(TemporalAttractorStateListElement)); res->numStates = numStates; res->states = CALLOC(numStates, sizeof(TemporalState *)); if (list->head == NULL) { list->head = res; res->index = 0; } else { list->tail->next = res; res->index = list->tail->index + 1; } ++list->size; list->tail = res; return res; } /** * Free all entries of the attractor list */ void freeAttractorStateList(TemporalAttractorStateList * list) { TemporalAttractorStateListElement * current = list->head, *tmp; while (true) { if (current == NULL) break; tmp = current; current = current->next; FREE(tmp->states); FREE(tmp); } FREE(list); } /** * Perform a state transition of the network from state * at the absolute time point . * Assigns the successor state to . */ void symbolicStateTransition(SymbolicBooleanNetwork * network, TemporalState * currentState, TemporalState * nextState, unsigned int * timeStep) { unsigned int i; for (i = 0; i < network->numGenes; ++i) { if (network->stateSizes[i] > 1) memcpy(&nextState->state[network->stateOffsets[i] + 1], ¤tState->state[network->stateOffsets[i]], (network->stateSizes[i] - 1) * sizeof(unsigned char)); if (network->fixedGenes[i] != -1) nextState->state[network->stateOffsets[i]] = network->fixedGenes[i]; else nextState->state[network->stateOffsets[i]] = evaluate( network->interactions[i], currentState, network->stateOffsets, network->numGenes); } nextState->timeStep = *timeStep; nextState->startState = currentState->startState; ++*timeStep; } /** * Finalizer that ensures that the internal C structures * of the R network object are freed when the * garbage collector frees . */ static void finalizeSymbolicNetwork(SEXP network) { if (NULL == R_ExternalPtrAddr(network)) return; //Rprintf("finalizing\n"); SymbolicBooleanNetwork * _network = R_ExternalPtrAddr(network); freeSymbolicNetwork(_network); R_ClearExternalPtr(network); } /** * Parse an R list specifying an expression tree and convert it to the * internal representation. * is a vector specifying the size of the history for each gene. * is the time step at which the last predicate that * depends on the absolute time point has obtained its final value. * is a Boolean vector that is set to true if the gene occurs in the formula * and to false otherwise. * Returns an internal tree representation of . */ BooleanFormula * parseRTree(SEXP formula, unsigned int * memorySizes, unsigned int * attractorSearchStartTime, bool * geneOccurs) { if (strcmp(CHAR(STRING_ELT(getListElement(formula, "type"), 0)), "atom") == 0) { BooleanAtom * res = allocAtom( *INTEGER(getListElement(formula, "index")) - 1, -*INTEGER(getListElement(formula, "time")) - 1, *LOGICAL(getListElement(formula, "negated"))); if (res->literal >= 0) { if (geneOccurs != NULL) geneOccurs[res->literal] = true; if (memorySizes[res->literal] < res->time + 1) { memorySizes[res->literal] = res->time + 1; } } return (BooleanFormula *) res; } else if (strcmp(CHAR(STRING_ELT(getListElement(formula, "type"), 0)), "constant") == 0) { Constant * res = allocConstant( *INTEGER(getListElement(formula, "value")), *LOGICAL(getListElement(formula, "negated"))); return (BooleanFormula *) res; } else { const char * operator = CHAR( STRING_ELT(getListElement(formula, "operator"), 0)); unsigned int op; if (strcmp(operator, "|") == 0) op = OPERATOR_OR; else if (strcmp(operator, "&") == 0) op = OPERATOR_AND; else if (strcmp(operator, "maj") == 0) op = OPERATOR_MAJ; else if (strcmp(operator, "sumis") == 0) op = OPERATOR_SUMIS; else if (strcmp(operator, "sumgt") == 0) op = OPERATOR_SUMGT; else if (strcmp(operator, "sumlt") == 0) op = OPERATOR_SUMLT; else if (strcmp(operator, "timeis") == 0) op = OPERATOR_TIMEIS; else if (strcmp(operator, "timegt") == 0) op = OPERATOR_TIMEGT; else if (strcmp(operator, "timelt") == 0) op = OPERATOR_TIMELT; else error("Unknown operator!"); SEXP operands = getListElement(formula, "operands"); BooleanOperator * res = allocOperator(op, *LOGICAL(getListElement(formula, "negated")), length(operands), NULL); unsigned int i; for (i = 0; i < length(operands); ++i) { res->operands[i] = parseRTree(VECTOR_ELT(operands, i), memorySizes, attractorSearchStartTime, geneOccurs); } if (res->operator == OPERATOR_TIMEIS || res->operator == OPERATOR_TIMEGT || res->operator == OPERATOR_TIMELT) { if (res->numOperands < 1|| res->operands[0]->type != FORMULA_CONSTANT) error("Time operator has an invalid specification!"); Constant * constant = ((Constant*) res->operands[0]); unsigned int value = constant->value; if (res->operator == OPERATOR_TIMELT) --value; if (value >= *attractorSearchStartTime) *attractorSearchStartTime = value; } return (BooleanFormula *) res; } } /** * R interface function to perform a state transition of * the network from state * at the absolute time point . * Returns the successor state. */ SEXP symbolicStateTransition_R(SEXP network, SEXP previousState, SEXP timeStep) { SymbolicBooleanNetwork * _network = R_ExternalPtrAddr(network); if (_network == NULL) error("Internal network structures not supplied to C handler!"); unsigned int _timeStep = *INTEGER(timeStep), k; TemporalState * current = CALLOC(1, sizeof(TemporalState) + _network->totalStateSize * sizeof(unsigned char)); TemporalState * next = CALLOC(1, sizeof(TemporalState) + _network->totalStateSize * sizeof(unsigned char)); decodeState(_network, INTEGER(previousState), length(previousState), current); current->timeStep = _timeStep; symbolicStateTransition(_network, current, next, &_timeStep); SEXP retSXP; PROTECT(retSXP = allocVector(INTSXP, _network->numGenes)); int * resultState = INTEGER(retSXP); for (k = 0; k < _network->numGenes; ++k) { resultState[k] = next->state[_network->stateOffsets[k]]; } UNPROTECT(1); FREE(next); FREE(current); return retSXP; } /** * Convert a Boolean expression tree to a * truth table representation. * is the total number of genes in the network. * Returns a binary vector representing the truth table result column. */ SEXP getTruthTable_R(SEXP tree, SEXP numGenes) { int _numGenes = *INTEGER(numGenes); unsigned int attractorSearchStartTime = 0; unsigned int * stateSizes = CALLOC(_numGenes, sizeof(unsigned int)); unsigned int * stateOffsets = CALLOC(_numGenes, sizeof(unsigned int)); bool * geneOccurs = CALLOC(_numGenes, sizeof(bool)); unsigned int i, j; for (i = 0; i < _numGenes; ++i) { stateSizes[i] = 1; } BooleanFormula * _tree = parseRTree(tree, stateSizes, &attractorSearchStartTime, geneOccurs); if (attractorSearchStartTime > 0) { freeFormula(_tree); FREE(stateSizes); FREE(stateOffsets); FREE(geneOccurs); Rf_error( "Temporal operators are not allowed in the truth table representation!"); } unsigned int geneCount = 0; for (i = 0; i < _numGenes; ++i) { if (stateSizes[i] > 1) { freeFormula(_tree); FREE(stateSizes); FREE(stateOffsets); FREE(geneOccurs); Rf_error( "Temporal operators are not allowed in the truth table representation!"); } stateOffsets[i] = geneCount; if (geneOccurs[i]) ++geneCount; } SEXP res = PROTECT(allocList(2)); SEXP table = PROTECT(allocVector(INTSXP, 1 << geneCount)); SEXP genes = PROTECT(allocVector(INTSXP, (geneCount == 0? 1 : geneCount))); if (geneCount == 0) *INTEGER(genes) = 0; else { j = 0; for (i = 0; i < _numGenes; ++i) { if (geneOccurs[i]) { INTEGER(genes)[j++] = i + 1; } } } TemporalState * current = CALLOC(1, sizeof(TemporalState) + geneCount * sizeof(unsigned char)); memset(current, 0, sizeof(TemporalState) + geneCount * sizeof(unsigned char)); int * tableEntry = INTEGER(table); do { current->timeStep = 0; *tableEntry = evaluate(_tree, current, stateOffsets, geneCount); ++tableEntry; } while (getNextState(current->state, NULL, geneCount)); SETCAR(res, genes); SETCADR(res, table); freeFormula(_tree); FREE(stateSizes); FREE(stateOffsets); FREE(geneOccurs); UNPROTECT(3); return res; } /** * Construct the internal expression tree representation * of a symbolic network specified by the R object */ SEXP constructNetworkTrees_R(SEXP object) { SymbolicBooleanNetwork * network = calloc(1, sizeof(SymbolicBooleanNetwork)); SEXP interactions = getListElement(object, "interactions"); SEXP fixed = getListElement(object, "fixed"); network->type = SYMBOLIC_BOOLEAN_NETWORK; network->numGenes = length(interactions); network->attractorSearchStartTime = 0; network->stateSizes = calloc(network->numGenes, sizeof(unsigned int)); network->stateOffsets = calloc(network->numGenes + 1, sizeof(unsigned int)); network->fixedGenes = calloc(network->numGenes, sizeof(int)); network->interactions = calloc(network->numGenes, sizeof(BooleanFormula *)); unsigned int i, j; for (i = 0; i < network->numGenes; ++i) { network->fixedGenes[i] = INTEGER(fixed)[i]; network->stateSizes[i] = 1; } for (i = 0; i < network->numGenes; ++i) { network->interactions[i] = parseRTree(VECTOR_ELT(interactions, i), network->stateSizes, &network->attractorSearchStartTime, NULL); //printFormula(network->interactions[i]); //Rprintf("\n"); } network->totalStateSize = 0; for (i = 0; i < network->numGenes; ++i) { network->stateOffsets[i] = network->totalStateSize; network->totalStateSize += network->stateSizes[i]; } network->stateOffsets[network->numGenes] = network->totalStateSize; network->stateFixed = calloc(network->totalStateSize, sizeof(int)); for (i = 0; i < network->numGenes; ++i) { for (j = 0; j < network->stateSizes[i]; ++j) { network->stateFixed[network->stateOffsets[i] + j] = network->fixedGenes[i]; } } SEXP res = PROTECT( R_MakeExternalPtr(network, install("CStructures"), R_NilValue)); R_RegisterCFinalizerEx(res, finalizeSymbolicNetwork, true); UNPROTECT(1); return res; } BooleanFormula * getSATFormula(unsigned int targetIndex, BooleanFormula * formula, unsigned int time) { // create a formula of the form target <=> factors, i.e. // (target & factors) | (!target & !factors) // outer and BooleanOperator * extendedInteraction = allocOperator(OPERATOR_OR, false, 2, NULL); // target literal BooleanAtom * target = allocAtom(targetIndex, 0, false); // inner conjunctions BooleanOperator * firstConjunction = allocOperator(OPERATOR_AND, false, 2, NULL); BooleanOperator * secondConjunction = allocOperator(OPERATOR_AND, false, 2, NULL); // first conjunction: positive operands firstConjunction->operands[0] = (BooleanFormula *) target; // factors are considered one time step earlier than the target firstConjunction->operands[1] = copyFormula(formula, false, 1); // second conjunction: negated operands secondConjunction->operands[0] = copyFormula((BooleanFormula *) target, false, 0); secondConjunction->operands[0]->negated = !secondConjunction->operands[0]->negated; secondConjunction->operands[1] = copyFormula(formula, false, 1); secondConjunction->operands[1]->negated = !secondConjunction->operands[1]->negated; // assemble top-level DNF from conjunctions extendedInteraction->operands[0] = (BooleanFormula *) firstConjunction; extendedInteraction->operands[1] = (BooleanFormula *) secondConjunction; // convert whole top-level DNF to CNF, and store it in the network object BooleanFormula * res = convertToCNF((BooleanFormula *) extendedInteraction, false, time); // free temporary DNF freeFormula((BooleanFormula *) extendedInteraction); return res; } /** * Start an attractor search based on a SAT formulation of the * symbolic network . * is an optional parameter specifying the maximum attractor size. * If is true, a search for attractors of up to * is started. Otherwise, attractors are identified based on the approach by Dubrova and Teslenko. * Returns a list with four elements as simulateStates_R, where only the third element is non-null * and comprises the identified attractors */ SEXP symbolicSATSearch_R(SEXP network, SEXP maxAttractorSize, SEXP restrictedSearch) { SymbolicBooleanNetwork * _network = R_ExternalPtrAddr(network); bool _restrictedSearch = *LOGICAL(restrictedSearch); if (_network == NULL) error("Internal network structures not supplied to C handler!"); GetRNGstate(); unsigned int i, j, k; if (_network->cnfInteractions == NULL) // create a CNF representation of the formulae, including the // equivalence relations to the targets { _network->cnfInteractions = calloc(_network->numGenes, sizeof(BooleanFormula **)); for (i = 0; i < _network->numGenes; ++i) { _network->cnfInteractions[i] = calloc( _network->attractorSearchStartTime + 1, sizeof(BooleanFormula *)); for (j = 0; j <= _network->attractorSearchStartTime; ++j) { _network->cnfInteractions[i][j] = getSATFormula(i, _network->interactions[i], _network->attractorSearchStartTime - j); } } } pAttractorInfo res; if (!_restrictedSearch) // start exhaustive SAT search as described by Dubrova and Teslenko { int _maxAttractorSize; if (isNull(maxAttractorSize)) { _maxAttractorSize = 1; } else _maxAttractorSize = *INTEGER(maxAttractorSize); res = getAttractors_SAT_exhaustive((BooleanNetwork *) _network, _maxAttractorSize, EXTENSION_MIXED); } else // only search for cycles of a specified maximum length { res = getAttractors_SAT_maxLength((BooleanNetwork *) _network, *INTEGER(maxAttractorSize)); } SEXP retSXP, attractorListSXP, iterSXP; // create list with 3 empty elements to have same return value structure // as simulateStates_R PROTECT(retSXP = allocList(4)); PROTECT(iterSXP = attractorListSXP = allocList(res->numAttractors)); pAttractor el = res->attractorList; for (i = 0; i < res->numAttractors; ++i) { SEXP attractorSXP; PROTECT( attractorSXP = allocVector(INTSXP, el->length * _network->numGenes)); int * attractorStates = INTEGER(attractorSXP); for (j = 0; j < el->length; ++j) { for (k = 0; k < _network->numGenes; ++k) // decode bit vector in Attractor structure { attractorStates[j * _network->numGenes + k] = GET_BIT_ARRAY( el->involvedStates[j * el->numElementsPerEntry], k); } } SETCAR(iterSXP, attractorSXP); UNPROTECT(1); iterSXP = CDR(iterSXP); el = el->next; } SETCADDR(retSXP, attractorListSXP); PutRNGstate(); UNPROTECT(2); return (retSXP); } /** * Symbolic simulator that identifies attractors and generates sequences of states * and attractor graphs. * is a pointer to the C structures of a symbolic network. * is either a list of start states, an integer specifying the number of * random start states, or NULL for an exhaustive search. * is the maximum number of state transitions performed to find an attractor. * , and specify whether the return * value comprises the state sequences, the transition graph, and the attractors respectively. */ SEXP simulateStates_R(SEXP network, SEXP states, SEXP maxTransitions, SEXP returnSequences, SEXP returnGraph, SEXP returnAttractors) { SymbolicBooleanNetwork * _network = R_ExternalPtrAddr(network); if (_network == NULL) error("Internal network structures not supplied to C handler!"); unsigned int _maxTransitions = *INTEGER(maxTransitions); unsigned long long _numStates = length(states); unsigned long long i, j, k; unsigned int mode; unsigned char * randomStartStates = NULL; if (!Rf_isNull(states)) { if (IS_INTEGER(states)) // a number of start states to generate randomly is supplied { _numStates = *INTEGER(states); mode = MODE_RANDOM; GetRNGstate(); randomStartStates = CALLOC(_numStates, sizeof(unsigned char) * _network->totalStateSize); } else // the start states themselves are supplied { _numStates = length(states); mode = MODE_SUPPLIED; } } else // exhaustive search { unsigned int numNonFixed = 0; for (j = 0; j < _network->numGenes; ++j) { if (_network->fixedGenes[j] == -1) numNonFixed += _network->stateSizes[j]; } _numStates = (unsigned int) 1 << numNonFixed; mode = MODE_EXHAUSTIVE; } // allocate required structures bool _returnSequences = *LOGICAL(returnSequences); bool _returnGraph = *LOGICAL(returnGraph); bool _returnAttractors = *LOGICAL(returnAttractors); TemporalStateHashTable * hash = allocStateHashTable( _network->totalStateSize); TemporalStateHashTable * usedStates = NULL; AttractorHashTable * attractorHash = allocAttractorHashTable( _network->totalStateSize); TemporalState * current = CALLOC(1, sizeof(TemporalState) + _network->totalStateSize * sizeof(unsigned char)); TemporalState * currentStart = CALLOC(1, sizeof(TemporalState) + _network->totalStateSize * sizeof(unsigned char)); TemporalState * next = CALLOC(1, sizeof(TemporalState) + _network->totalStateSize * sizeof(unsigned char)); TemporalAttractorStateList * attractors = allocAttractorStateList(); unsigned long long stateCount = 0; unsigned long long * sequenceSizes = CALLOC(_numStates, sizeof(unsigned long long)); int * attractorIndices = CALLOC(_numStates, sizeof(int)); if (mode == MODE_EXHAUSTIVE) // generate first initial state for exhaustive search (all non-fixed genes set to 0) { for (j = 0; j < _network->totalStateSize; ++j) { if (_network->stateFixed[j] == -1) currentStart->state[j] = 0; else currentStart->state[j] = _network->stateFixed[j]; } } else if (mode == MODE_RANDOM) { usedStates = allocStateHashTable(_network->totalStateSize); } for (i = 0; i < _numStates; ++i) // iterate over start states { R_CheckUserInterrupt(); sequenceSizes[i] = 1; attractorIndices[i] = ~0; SEXP state; switch (mode) { case MODE_SUPPLIED: // take next start state from the input list state = VECTOR_ELT(states, i); decodeState(_network, INTEGER(state), length(state), currentStart); break; case MODE_RANDOM: // generate a random start state while (true) { TemporalStateHash * dummy = NULL; for (j = 0; j < _network->totalStateSize; ++j) { if (_network->stateFixed[j] == -1) currentStart->state[j] = randomStartStates[i * _network->totalStateSize + j] = intrand(2); else currentStart->state[j] = randomStartStates[i * _network->totalStateSize + j] = _network->stateFixed[j]; } // check whether the state has already been choosen as a start state if (!findOrStore(usedStates, &dummy, currentStart, true, 0)) break; } break; } currentStart->startState = i; currentStart->timeStep = 0; memcpy(current, currentStart, sizeof(TemporalState) + _network->totalStateSize * sizeof(unsigned char)); unsigned int timeStep = 1; TemporalStateHash * previous = NULL; if (!findOrStore(hash, &previous, current, _network->attractorSearchStartTime == 0, i)) ++stateCount; for (j = 0; j < _maxTransitions || _maxTransitions == 0; ++j) // calculate successor states { symbolicStateTransition(_network, current, next, &timeStep); if (findOrStore(hash, &previous, next, _network->attractorSearchStartTime < timeStep, i)) // a previously found state has been reached { if (next->startState == previous->initialState->startState) // a new attractor has been found { unsigned int attractorSize = timeStep - previous->initialState->timeStep - 1; TemporalAttractorStateListElement * el = addAttractor( attractors, attractorSize); attractorIndices[i] = el->index; for (k = 0; k < attractorSize; ++k) // enumerate attractor states { addAttractorHashEntry(attractorHash, previous->initialState, el); el->states[k] = previous->initialState; previous = previous->nextState; } if (attractorSize + 1 == timeStep) // If the whole sequence is an attractor, add the initial state at the end ++sequenceSizes[i]; } else // we have reached a sequence we traversed before // => determine sequence size etc. from previous run if (_returnSequences) { while (sequenceSizes[i] < _maxTransitions || _maxTransitions == 0) { if (previous == NULL) // not enough transitions) break; TemporalAttractorStateListElement * entry = getAttractorForState(attractorHash, previous->initialState); if (entry != NULL) { sequenceSizes[i] += entry->numStates; attractorIndices[i] = entry->index; break; } ++sequenceSizes[i]; previous = previous->nextState; } } break; } ++sequenceSizes[i]; ++stateCount; memcpy(current, next, sizeof(TemporalState) + _network->totalStateSize * sizeof(unsigned char)); } if (i < _numStates - 1 && mode == MODE_EXHAUSTIVE) // generate next state for exhaustive search { getNextState(currentStart->state, _network->stateFixed, _network->totalStateSize); } } SEXP retSXP, attractorListSXP, initialStatesSXP, nextStatesSXP, attractorAssignmentSXP, transitionSXP, iterSXP, graphSXP; PROTECT(retSXP = allocList(4)); if (_returnAttractors) // store attractor sequences in results { PROTECT(iterSXP = attractorListSXP = allocList(attractors->size)); TemporalAttractorStateListElement * el = attractors->head; for (i = 0; i < attractors->size; ++i) { SEXP attractorSXP; PROTECT( attractorSXP = allocVector(INTSXP, el->numStates * _network->numGenes)); int * attractorStates = INTEGER(attractorSXP); for (j = 0; j < el->numStates; ++j) { for (k = 0; k < _network->numGenes; ++k) { attractorStates[j * _network->numGenes + k] = el->states[j]->state[_network->stateOffsets[k]]; } } SETCAR(iterSXP, attractorSXP); UNPROTECT(1); iterSXP = CDR(iterSXP); el = el->next; } SETCADDR(retSXP, attractorListSXP); if (_returnSequences) // also store indices of attractors for the sequences { SEXP attractorIndexSXP; PROTECT(attractorIndexSXP = allocVector(INTSXP, _numStates)); memcpy(INTEGER(attractorIndexSXP), attractorIndices, sizeof(int) * _numStates); SETCADDDR(retSXP, attractorIndexSXP); UNPROTECT(1); } UNPROTECT(1); } if (_returnSequences) { // calculate maximum delay in the network unsigned int maxTimeDiff = 1; for (k = 0; k < _network->numGenes; ++k) { if (_network->stateSizes[k] > maxTimeDiff) maxTimeDiff = _network->stateSizes[k]; } PROTECT(iterSXP = transitionSXP = allocList(_numStates)); if (mode == MODE_EXHAUSTIVE) // again, regenerate first start state for exhaustive search { for (j = 0; j < _network->totalStateSize; ++j) { if (_network->stateFixed[j] == -1) currentStart->state[j] = 0; else currentStart->state[j] = _network->stateFixed[j]; } } for (i = 0; i < _numStates; ++i) // iterate over states { R_CheckUserInterrupt(); SEXP transitionStatesSXP; PROTECT( transitionStatesSXP = allocVector(INTSXP, ((maxTimeDiff - 1) + sequenceSizes[i]) * _network->numGenes)); int * transitionStates = INTEGER(transitionStatesSXP); SEXP state; switch (mode) { case MODE_SUPPLIED: state = VECTOR_ELT(states, i); decodeState(_network, INTEGER(state), length(state), currentStart); break; case MODE_RANDOM: memcpy(currentStart->state, &randomStartStates[i * _network->totalStateSize], sizeof(unsigned char) * _network->totalStateSize); break; } currentStart->startState = i; currentStart->timeStep = 0; unsigned int currentState = 0; for (j = 0; j < maxTimeDiff; ++j) { bool nextState = false; for (k = 0; k < _network->numGenes; ++k) { if (mode == MODE_SUPPLIED) // store supplied initial states in results { SEXP state = VECTOR_ELT(states, i); int * _state = INTEGER(state); unsigned int numStates = length(state) / _network->numGenes; if ((maxTimeDiff - j) <= numStates) { transitionStates[j * _network->numGenes + k] = _state[k * numStates + (numStates - currentState - 1)]; nextState = true; } else transitionStates[j * _network->numGenes + k] = _state[(k + 1) * numStates - 1]; } else // construct list of initial states from internal vector representation if (_network->stateSizes[k] >= maxTimeDiff - j) transitionStates[j * _network->numGenes + k] = currentStart->state[_network->stateOffsets[k] + (maxTimeDiff - j - 1)]; else transitionStates[j * _network->numGenes + k] = currentStart->state[_network->stateOffsets[k] + _network->stateSizes[k] - 1]; } if (nextState) { ++currentState; nextState = false; } } memcpy(current, currentStart, sizeof(TemporalState) + _network->totalStateSize * sizeof(unsigned char)); // get successor states from hash table TemporalStateHash * res; if (_network->attractorSearchStartTime == 0) HASH_FIND(hh, hash->table, current->state, hash->stateSize, res); else HASH_FIND(hh, hash->table, current, hash->hashSize, res); for (j = 0; j < sequenceSizes[i]; ++j) { if (res != NULL) // encode successor state for results { for (k = 0; k < _network->numGenes; ++k) { transitionStates[(maxTimeDiff + j - 1) * _network->numGenes + k] = res->initialState->state[_network->stateOffsets[k]]; } res = res->nextState; } else error("Did not find a required successor state!"); } SETCAR(iterSXP, transitionStatesSXP); iterSXP = CDR(iterSXP); UNPROTECT(1); if (mode == MODE_EXHAUSTIVE) // generate next start state for exhaustive search { getNextState(currentStart->state, _network->stateFixed, _network->totalStateSize); } } SETCAR(retSXP, transitionSXP); UNPROTECT(1); } if (mode == MODE_RANDOM) { FREE(randomStartStates); PutRNGstate(); } TemporalStateHash * entry, *tmp; if (_returnGraph) // generate the graph representation { PROTECT(graphSXP = allocList(3)); PROTECT( initialStatesSXP = allocVector(INTSXP,stateCount * _network->numGenes)); PROTECT( nextStatesSXP = allocVector(INTSXP,stateCount * _network->numGenes)); PROTECT(attractorAssignmentSXP = allocVector(INTSXP,stateCount)); int * initialStates = INTEGER(initialStatesSXP); int * nextStates = INTEGER(nextStatesSXP); int * attractorAssignment = INTEGER(attractorAssignmentSXP); // add all state pairs in the hash table to the graph i = 0; HASH_ITER(hh, hash->table, entry, tmp) { R_CheckUserInterrupt(); for (k = 0; k < _network->numGenes; ++k) { initialStates[i * _network->numGenes + k] = entry->initialState->state[_network->stateOffsets[k]]; if (entry->nextState != NULL) nextStates[i * _network->numGenes + k] = entry->nextState->initialState->state[_network->stateOffsets[k]]; else nextStates[i * _network->numGenes + k] = entry->initialState->state[_network->stateOffsets[k]]; } attractorAssignment[i] = attractorIndices[entry->sequenceIndex]; ++i; } SETCAR(graphSXP, initialStatesSXP); SETCADR(graphSXP, nextStatesSXP); SETCADDR(graphSXP, attractorAssignmentSXP); SETCADR(retSXP, graphSXP); UNPROTECT(4); } UNPROTECT(1); if (mode == MODE_RANDOM) freeStateHashTable(usedStates); freeStateHashTable(hash); freeAttractorHashTable(attractorHash); FREE(sequenceSizes); FREE(next); FREE(current); FREE(currentStart); FREE(attractorIndices); freeAttractorStateList(attractors); return retSXP; } /** * Check whether is a null pointer. */ SEXP checkNullPointerC(SEXP ptr) { void * p = R_ExternalPtrAddr(ptr); SEXP ret; PROTECT(ret = allocVector(LGLSXP,1)); *LOGICAL(ret) = (p == NULL); UNPROTECT(1); return (ret); } BoolNet/src/statespace_search.h0000644000176200001440000000430413277247010016241 0ustar liggesusers#ifndef STATESPACE_SEARCH_H #define STATESPACE_SEARCH_H #include "boolean_network.h" #include "attractor_info.h" #include /** * Retrieves attractors only for a given set of input states supplied in . * Here, numGenes / 32)> consecutive array entries describe one state, thus * the array size is numGenes / 32) * numberOfStates> * describes the network structure. */ extern pAttractorInfo getAttractorsForStates(unsigned int * selectedStates, unsigned int numberOfStates, TruthTableBooleanNetwork * net); /** * Retrieves attractors from a given transition table with entries. * * Returns a list of attractors - the last element of this list is empty! */ extern pAttractorInfo getAttractors(unsigned long long * table, unsigned long long numberOfStates, unsigned int numberOfGenes); /** * Calculate complex/loose attractors by performing random transitions from * the states supplied in . * If is true, self loops are only considered if there are no other possible transitions. * If is not NULL, this vector holds the probabilities for each gene to be chosen * for a transition. */ pAttractorInfo getLooseAttractors(unsigned int * selectedStates, unsigned int numberOfStates, TruthTableBooleanNetwork * net, unsigned int randomSteps, bool avoidSelfLoops, double * probabilities); /** * Retrieves the result column of the state transition table. * specifies the total number of genes. * is an array of values specifying whether gene is fixed (0 or 1) or not (-1). * provides the input genes for all transition functions and can be split up * for a single function according to . * provides the truth tables for all transition functions and can be split up * for a single function according to . */ unsigned long long * getTransitionTable(TruthTableBooleanNetwork * net); #endif BoolNet/src/common.c0000644000176200001440000000765313301250527014050 0ustar liggesusers#include "common.h" #include #include AllocatedMemory * memoryMap = NULL; /** * Common utilities for the BoolNet package * * Copyright 2009/2010 by Christoph Müssel and Zhou Dao * * Contact christoph.muessel@uni-ulm.de */ void freeAllMemory() { AllocatedMemory * m, * tmp; HASH_ITER(hh, memoryMap, m, tmp) { HASH_DEL(memoryMap, m); free(m->ptr); free(m); } //Rprintf("Freed all memory\n"); } /** * Encode a vector of binary values in an integer. * The rightmost element in is the leftmost bit in * is an array of elements, and points * to an integer to which the result is written. */ void bin2decC(int *dec, int *bin, int *numBits) { // clear output first unsigned int numElts; if (*numBits % BITS_PER_BLOCK_32 == 0) numElts = *numBits / BITS_PER_BLOCK_32; else numElts = *numBits / BITS_PER_BLOCK_32 + 1; memset(dec,0,numElts*sizeof(int)); // decode input and write binary integers unsigned int * unsigned_dec = (unsigned int *) dec; unsigned int i; for(i = 0; i < *numBits; ++i) { unsigned_dec[i / BITS_PER_BLOCK_32] |= ((unsigned int)bin[i] << (i % BITS_PER_BLOCK_32)); } } /** * Decode an integer to a vector of binary values. * The rightmost element in is the leftmost bit in * points to the result vector, is a number * to be decoded, and is the number of bits/elements in bin */ void dec2binC(int *bin, int *dec, int *numBits) { unsigned int i; unsigned int * unsigned_dec = (unsigned int *) dec; for(i = 0; i < *numBits; ++i) if( (unsigned_dec[i / BITS_PER_BLOCK_32] & ((unsigned int)1 << (i % BITS_PER_BLOCK_32))) != 0) bin[i] = 1; else bin[i] = 0; } /** * Inserts values of fixed genes into states - this is required as * fixed genes are not encoded in the internal state representations. * is a pointer to a state to be corrected. * is an array specifying which genes are fixed, as contained in * the BooleanNetwork structure. * is the length of . * The function changes the state pointed to by and has no return value. */ void insertFixedGenes(unsigned int * value, int* fixedGenes, unsigned int numGenes) { unsigned int tmp[numGenes]; unsigned int i, j = 0; // build an array of Boolean values for the genes for (i = 0; i < numGenes; ++i) { if (fixedGenes[i] != -1) // this gene is fixed { tmp[i] = fixedGenes[i]; } else // not a fixed gene => take value from original state { tmp[i] = ((value[j / BITS_PER_BLOCK_32] & ((unsigned int)1 << (j % BITS_PER_BLOCK_32))) != 0) ? 1 : 0; ++j; } } // re-encode Boolean array to integer value bin2decC((int *)value,(int*)tmp,(int*)&numGenes); } /** * Removes values of fixed genes from states - this is required as * fixed genes are not encoded in the internal state representations. * is a pointer to a state to be corrected. * is an array specifying which genes are fixed, as contained in * the BooleanNetwork structure. * is the length of . * The function changes the state pointed to by and has no return value. */ void removeFixedGenes(unsigned int * value, int* fixedGenes, unsigned int numGenes) { unsigned int tmp[numGenes]; memset(tmp,0,sizeof(unsigned int) * numGenes); unsigned int i, j = 0; // build an array of Boolean values for the genes for (i = 0; i < numGenes; ++i) { if (fixedGenes[i] == -1) { tmp[j] = ((value[i / BITS_PER_BLOCK_32] & ((unsigned int)1 << (i % BITS_PER_BLOCK_32))) != 0) ? 1 : 0; ++j; } } // re-encode Boolean array to integer value bin2decC((int *)value,(int*)tmp,(int*)&numGenes); } SEXP getListElement(SEXP list, char *str) { SEXP names = getAttrib(list, R_NamesSymbol); unsigned int i; for (i = 0; i < length(list); ++i) { if (strcmp(CHAR(STRING_ELT(names, i)), str) == 0 ) { return VECTOR_ELT(list, i); } } return R_NilValue; } BoolNet/src/picosat.h0000644000176200001440000006775413277247010014244 0ustar liggesusers/**************************************************************************** Copyright (c) 2006 - 2015, Armin Biere, Johannes Kepler University. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************************************************************/ #ifndef picosat_h_INCLUDED #define picosat_h_INCLUDED /*------------------------------------------------------------------------*/ #include #include /*------------------------------------------------------------------------*/ /* The following macros allows for users to distiguish between different * versions of the API. The first 'PICOSAT_REENTRANT_API' is defined for * the new reentrant API which allows to generate multiple instances of * PicoSAT in one process. The second 'PICOSAT_API_VERSION' defines the * (smallest) version of PicoSAT to which this API conforms. */ #define PICOSAT_REENTRANT_API #define PICOSAT_API_VERSION 953 /* API version */ /*------------------------------------------------------------------------*/ /* These are the return values for 'picosat_sat' as for instance * standardized by the output format of the SAT competition. */ #define PICOSAT_UNKNOWN 0 #define PICOSAT_SATISFIABLE 10 #define PICOSAT_UNSATISFIABLE 20 /*------------------------------------------------------------------------*/ typedef struct PicoSAT PicoSAT; /*------------------------------------------------------------------------*/ const char *picosat_version (void); const char *picosat_config (void); const char *picosat_copyright (void); /*------------------------------------------------------------------------*/ /* You can make PicoSAT use an external memory manager instead of the one * provided by LIBC. But then you need to call these three function before * 'picosat_init'. The memory manager functions here all have an additional * first argument which is a pointer to the memory manager, but otherwise * are supposed to work as their LIBC counter parts 'malloc', 'realloc' and * 'free'. As exception the 'resize' and 'delete' function have as third * argument the number of bytes of the block given as second argument. */ typedef void * (*picosat_malloc)(void *, size_t); typedef void * (*picosat_realloc)(void*, void *, size_t, size_t); typedef void (*picosat_free)(void*, void*, size_t); /*------------------------------------------------------------------------*/ PicoSAT * picosat_init (void); /* constructor */ PicoSAT * picosat_minit (void * state, picosat_malloc, picosat_realloc, picosat_free); void picosat_reset (PicoSAT *); /* destructor */ /*------------------------------------------------------------------------*/ /* The following five functions are essentially parameters to 'init', and * thus should be called right after 'picosat_init' before doing anything * else. You should not call any of them after adding a literal. */ /* Set output file, default is 'stdout'. */ void picosat_set_output (PicoSAT *, FILE *); /* Measure all time spent in all calls in the solver. By default only the * time spent in 'picosat_sat' is measured. Enabling this function might * for instance triple the time needed to add large CNFs, since every call * to 'picosat_add' will trigger a call to 'getrusage'. */ void picosat_measure_all_calls (PicoSAT *); /* Set the prefix used for printing verbose messages and statistics. * Default is "c ". */ void picosat_set_prefix (PicoSAT *, const char *); /* Set verbosity level. A verbosity level of 1 and above prints more and * more detailed progress reports on the output file, set by * 'picosat_set_output'. Verbose messages are prefixed with the string set * by 'picosat_set_prefix'. */ void picosat_set_verbosity (PicoSAT *, int new_verbosity_level); /* Disable/Enable all pre-processing, currently only failed literal probing. * * new_plain_value != 0 only 'plain' solving, so no preprocessing * new_plain_value == 0 allow preprocessing */ void picosat_set_plain (PicoSAT *, int new_plain_value); /* Set default initial phase: * * 0 = false * 1 = true * 2 = Jeroslow-Wang (default) * 3 = random initial phase * * After a variable has been assigned the first time, it will always * be assigned the previous value if it is picked as decision variable. * The initial assignment can be chosen with this function. */ void picosat_set_global_default_phase (PicoSAT *, int); /* Set next/initial phase of a particular variable if picked as decision * variable. Second argument 'phase' has the following meaning: * * negative = next value if picked as decision variable is false * * positive = next value if picked as decision variable is true * * 0 = use global default phase as next value and * assume 'lit' was never assigned * * Again if 'lit' is assigned afterwards through a forced assignment, * then this forced assignment is the next phase if this variable is * used as decision variable. */ void picosat_set_default_phase_lit (PicoSAT *, int lit, int phase); /* You can reset all phases by the following function. */ void picosat_reset_phases (PicoSAT *); /* Scores can be erased as well. Note, however, that even after erasing * scores and phases, learned clauses are kept. In addition head tail * pointers for literals are not moved either. So expect a difference * between calling the solver in incremental mode or with a fresh copy of * the CNF. */ void picosat_reset_scores (PicoSAT *); /* Reset assignment if in SAT state and then remove the given percentage of * less active (large) learned clauses. If you specify 100% all large * learned clauses are removed. */ void picosat_remove_learned (PicoSAT *, unsigned percentage); /* Set some variables to be more important than others. These variables are * always used as decisions before other variables are used. Dually there * is a set of variables that is used last. The default is * to mark all variables as being indifferent only. */ void picosat_set_more_important_lit (PicoSAT *, int lit); void picosat_set_less_important_lit (PicoSAT *, int lit); /* Allows to print to internal 'out' file from client. */ void picosat_message (PicoSAT *, int verbosity_level, const char * fmt, ...); /* Set a seed for the random number generator. The random number generator * is currently just used for generating random decisions. In our * experiments having random decisions did not really help on industrial * examples, but was rather helpful to randomize the solver in order to * do proper benchmarking of different internal parameter sets. */ void picosat_set_seed (PicoSAT *, unsigned random_number_generator_seed); /* If you ever want to extract cores or proof traces with the current * instance of PicoSAT initialized with 'picosat_init', then make sure to * call 'picosat_enable_trace_generation' right after 'picosat_init'. This * is not necessary if you only use 'picosat_set_incremental_rup_file'. * * NOTE, trace generation code is not necessarily included, e.g. if you * configure PicoSAT with full optimzation as './configure -O' or with * you do not get any results by trying to generate traces. * * The return value is non-zero if code for generating traces is included * and it is zero if traces can not be generated. */ int picosat_enable_trace_generation (PicoSAT *); /* You can dump proof traces in RUP format incrementally even without * keeping the proof trace in memory. The advantage is a reduction of * memory usage, but the dumped clauses do not necessarily belong to the * clausal core. Beside the file the additional parameters denotes the * maximal number of variables and the number of original clauses. */ void picosat_set_incremental_rup_file (PicoSAT *, FILE * file, int m, int n); /* Save original clauses for 'picosat_deref_partial'. See comments to that * function further down. */ void picosat_save_original_clauses (PicoSAT *); /* Add a call back which is checked regularly to notify the SAT solver * to terminate earlier. This is useful for setting external time limits * or terminate early in say a portfolio style parallel SAT solver. */ void picosat_set_interrupt (PicoSAT *, void * external_state, int (*interrupted)(void * external_state)); /*------------------------------------------------------------------------*/ /* This function returns the next available unused variable index and * allocates a variable for it even though this variable does not occur as * assumption, nor in a clause or any other constraints. In future calls to * 'picosat_sat', 'picosat_deref' and particularly for 'picosat_changed', * this variable is treated as if it had been used. */ int picosat_inc_max_var (PicoSAT *); /*------------------------------------------------------------------------*/ /* Push and pop semantics for PicoSAT. 'picosat_push' opens up a new * context. All clauses added in this context are attached to it and * discarded when the context is closed with 'picosat_pop'. It is also * possible to nest contexts. * * The current implementation uses a new internal variable for each context. * However, the indices for these internal variables are shared with * ordinary external variables. This means that after any call to * 'picosat_push', new variable indices should be obtained with * 'picosat_inc_max_var' and not just by incrementing the largest variable * index used so far. * * The return value is the index of the literal that assumes this context. * This literal can only be used for 'picosat_failed_context' otherwise * it will lead to an API usage error. */ int picosat_push (PicoSAT *); /* This is as 'picosat_failed_assumption', but only for internal variables * generated by 'picosat_push'. */ int picosat_failed_context (PicoSAT *, int lit); /* Returns the literal that assumes the current context or zero if the * outer context has been reached. */ int picosat_context (PicoSAT *); /* Closes the current context and recycles the literal generated for * assuming this context. The return value is the literal for the new * outer context or zero if the outer most context has been reached. */ int picosat_pop (PicoSAT *); /* Force immmediate removal of all satisfied clauses and clauses that are * added or generated in closed contexts. This function is called * internally if enough units are learned or after a certain number of * contexts have been closed. This number is fixed at compile time * and defined as MAXCILS in 'picosat.c'. * * Note that learned clauses which only involve outer contexts are kept. */ void picosat_simplify (PicoSAT *); /*------------------------------------------------------------------------*/ /* If you know a good estimate on how many variables you are going to use * then calling this function before adding literals will result in less * resizing of the variable table. But this is just a minor optimization. * Beside exactly allocating enough variables it has the same effect as * calling 'picosat_inc_max_var'. */ void picosat_adjust (PicoSAT *, int max_idx); /*------------------------------------------------------------------------*/ /* Statistics. */ int picosat_variables (PicoSAT *); /* p cnf n */ int picosat_added_original_clauses (PicoSAT *); /* p cnf m */ size_t picosat_max_bytes_allocated (PicoSAT *); double picosat_time_stamp (void); /* ... in process */ void picosat_stats (PicoSAT *); /* > output file */ unsigned long long picosat_propagations (PicoSAT *); /* #propagations */ unsigned long long picosat_decisions (PicoSAT *); /* #decisions */ unsigned long long picosat_visits (PicoSAT *); /* #visits */ /* The time spent in calls to the library or in 'picosat_sat' respectively. * The former is returned if, right after initialization * 'picosat_measure_all_calls' is called. */ double picosat_seconds (PicoSAT *); /*------------------------------------------------------------------------*/ /* Add a literal of the next clause. A zero terminates the clause. The * solver is incremental. Adding a new literal will reset the previous * assignment. The return value is the original clause index to which * this literal respectively the trailing zero belong starting at 0. */ int picosat_add (PicoSAT *, int lit); /* As the previous function, but allows to add a full clause at once with an * at compiled time known size. The list of argument literals has to be * terminated with a zero literal. Literals beyond the first zero literal * are discarded. */ int picosat_add_arg (PicoSAT *, ...); /* As the previous function but with an at compile time unknown size. */ int picosat_add_lits (PicoSAT *, int * lits); /* Print the CNF to the given file in DIMACS format. */ void picosat_print (PicoSAT *, FILE *); /* You can add arbitrary many assumptions before the next 'picosat_sat' * call. This is similar to the using assumptions in MiniSAT, except that * for PicoSAT you do not have to collect all your assumptions in a vector * yourself. In PicoSAT you can add one after the other, to be used in the * next call to 'picosat_sat'. * * These assumptions can be interpreted as adding unit clauses with those * assumptions as literals. However these assumption clauses are only valid * for exactly the next call to 'picosat_sat', and will be removed * afterwards, e.g. in following future calls to 'picosat_sat' after the * next 'picosat_sat' call, unless they are assumed again trough * 'picosat_assume'. * * More precisely, assumptions actually remain valid even after the next * call to 'picosat_sat' has returned. Valid means they remain 'assumed' * internally until a call to 'picosat_add', 'picosat_assume', or a second * 'picosat_sat', following the first 'picosat_sat'. The reason for keeping * them valid is to allow 'picosat_failed_assumption' to return correct * values. * * Example: * * picosat_assume (1); // assume unit clause '1 0' * picosat_assume (-2); // additionally assume clause '-2 0' * res = picosat_sat (1000); // assumes 1 and -2 to hold * // 1000 decisions max. * * if (res == PICOSAT_UNSATISFIABLE) * { * if (picosat_failed_assumption (1)) * // unit clause '1 0' was necessary to derive UNSAT * * if (picosat_failed_assumption (-2)) * // unit clause '-2 0' was necessary to derive UNSAT * * // at least one but also both could be necessary * * picosat_assume (17); // previous assumptions are removed * // now assume unit clause '17 0' for * // the next call to 'picosat_sat' * * // adding a new clause, actually the first literal of * // a clause would also make the assumptions used in the previous * // call to 'picosat_sat' invalid. * * // The first two assumptions above are not assumed anymore. Only * // the assumptions, since the last call to 'picosat_sat' returned * // are assumed, e.g. the unit clause '17 0'. * * res = picosat_sat (-1); * } * else if (res == PICOSAT_SATISFIABLE) * { * // now the assignment is valid and we can call 'picosat_deref' * * assert (picosat_deref (1) == 1)); * assert (picosat_deref (-2) == 1)); * * val = picosat_deref (15); * * // previous two assumptions are still valid * * // would become invalid if 'picosat_add' or 'picosat_assume' is * // called here, but we immediately call 'picosat_sat'. Now when * // entering 'picosat_sat' the solver knows that the previous call * // returned SAT and it can safely reset the previous assumptions * * res = picosat_sat (-1); * } * else * { * assert (res == PICOSAT_UNKNOWN); * * // assumptions valid, but assignment invalid * // except for top level assigned literals which * // necessarily need to have this value if the formula is SAT * * // as above the solver nows that the previous call returned UNKWOWN * // and will before doing anything else reset assumptions * * picosat_sat (-1); * } */ void picosat_assume (PicoSAT *, int lit); /*------------------------------------------------------------------------*/ /* This is an experimental feature for handling 'all different constraints' * (ADC). Currently only one global ADC can be handled. The bit-width of * all the bit-vectors entered in this ADC (stored in 'all different * objects' or ADOs) has to be identical. * * TODO: also handle top level assigned literals here. */ void picosat_add_ado_lit (PicoSAT *, int); /*------------------------------------------------------------------------*/ /* Call the main SAT routine. A negative decision limit sets no limit on * the number of decisions. The return values are as above, e.g. * 'PICOSAT_UNSATISFIABLE', 'PICOSAT_SATISFIABLE', or 'PICOSAT_UNKNOWN'. */ int picosat_sat (PicoSAT *, int decision_limit); /* As alternative to a decision limit you can use the number of propagations * as limit. This is more linearly related to execution time. This has to * be called after 'picosat_init' and before 'picosat_sat'. */ void picosat_set_propagation_limit (PicoSAT *, unsigned long long limit); /* Return last result of calling 'picosat_sat' or '0' if not called. */ int picosat_res (PicoSAT *); /* After 'picosat_sat' was called and returned 'PICOSAT_SATISFIABLE', then * the satisfying assignment can be obtained by 'dereferencing' literals. * The value of the literal is return as '1' for 'true', '-1' for 'false' * and '0' for an unknown value. */ int picosat_deref (PicoSAT *, int lit); /* Same as before but just returns true resp. false if the literals is * forced to this assignment at the top level. This function does not * require that 'picosat_sat' was called and also does not internally reset * incremental usage. */ int picosat_deref_toplevel (PicoSAT *, int lit); /* After 'picosat_sat' was called and returned 'PICOSAT_SATISFIABLE' a * partial satisfying assignment can be obtained as well. It satisfies all * original clauses. The value of the literal is return as '1' for 'true', * '-1' for 'false' and '0' for an unknown value. In order to make this * work all original clauses have to be saved internally, which has to be * enabled by 'picosat_save_original_clauses' right after initialization. */ int picosat_deref_partial (PicoSAT *, int lit); /* Returns non zero if the CNF is unsatisfiable because an empty clause was * added or derived. */ int picosat_inconsistent (PicoSAT *); /* Returns non zero if the literal is a failed assumption, which is defined * as an assumption used to derive unsatisfiability. This is as accurate as * generating core literals, but still of course is an overapproximation of * the set of assumptions really necessary. The technique does not need * clausal core generation nor tracing to be enabled and thus can be much * more effective. The function can only be called as long the current * assumptions are valid. See 'picosat_assume' for more details. */ int picosat_failed_assumption (PicoSAT *, int lit); /* Returns a zero terminated list of failed assumption in the last call to * 'picosat_sat'. The pointer is valid until the next call to * 'picosat_sat' or 'picosat_failed_assumptions'. It only makes sense if the * last call to 'picosat_sat' returned 'PICOSAT_UNSATISFIABLE'. */ const int * picosat_failed_assumptions (PicoSAT *); /* Returns a zero terminated minimized list of failed assumption for the last * call to 'picosat_sat'. The pointer is valid until the next call to this * function or 'picosat_sat' or 'picosat_mus_assumptions'. It only makes sense * if the last call to 'picosat_sat' returned 'PICOSAT_UNSATISFIABLE'. * * The call back function is called for all successful simplification * attempts. The first argument of the call back function is the state * given as first argument to 'picosat_mus_assumptions'. The second * argument to the call back function is the new reduced list of failed * assumptions. * * This function will call 'picosat_assume' and 'picosat_sat' internally but * before returning reestablish a proper UNSAT state, e.g. * 'picosat_failed_assumption' will work afterwards as expected. * * The last argument if non zero fixes assumptions. In particular, if an * assumption can not be removed it is permanently assigned true, otherwise * if it turns out to be redundant it is permanently assumed to be false. */ const int * picosat_mus_assumptions (PicoSAT *, void *, void(*)(void*,const int*),int); /* Compute one maximal subset of satisfiable assumptions. You need to set * the assumptions, call 'picosat_sat' and check for 'picosat_inconsistent', * before calling this function. The result is a zero terminated array of * assumptions that consistently can be asserted at the same time. Before * returing the library 'reassumes' all assumptions. * * It could be beneficial to set the default phase of assumptions * to true (positive). This can speed up the computation. */ const int * picosat_maximal_satisfiable_subset_of_assumptions (PicoSAT *); /* This function assumes that you have set up all assumptions with * 'picosat_assume'. Then it calls 'picosat_sat' internally unless the * formula is already inconsistent without assumptions, i.e. it contains * the empty clause. After that it extracts a maximal satisfiable subset of * assumptions. * * The result is a zero terminated maximal subset of consistent assumptions * or a zero pointer if the formula contains the empty clause and thus no * more maximal consistent subsets of assumptions can be extracted. In the * first case, before returning, a blocking clause is added, that rules out * the result for the next call. * * NOTE: adding the blocking clause changes the CNF. * * So the following idiom * * const int * mss; * picosat_assume (a1); * picosat_assume (a2); * picosat_assume (a3); * picosat_assume (a4); * while ((mss = picosat_next_maximal_satisfiable_subset_of_assumptions ())) * process_mss (mss); * * can be used to iterate over all maximal consistent subsets of * the set of assumptions {a1,a2,a3,a4}. * * It could be beneficial to set the default phase of assumptions * to true (positive). This might speed up the computation. */ const int * picosat_next_maximal_satisfiable_subset_of_assumptions (PicoSAT *); /* Similarly we can iterate over all minimal correcting assumption sets. * See the CAMUS literature [M. Liffiton, K. Sakallah JAR 2008]. * * The result contains each assumed literal only once, even if it * was assumed multiple times (in contrast to the maximal consistent * subset functions above). * * It could be beneficial to set the default phase of assumptions * to true (positive). This might speed up the computation. */ const int * picosat_next_minimal_correcting_subset_of_assumptions (PicoSAT *); /* Compute the union of all minmal correcting sets, which is called * the 'high level union of all minimal unsatisfiable subset sets' * or 'HUMUS' in our papers. * * It uses 'picosat_next_minimal_correcting_subset_of_assumptions' and * the same notes and advices apply. In particular, this implies that * after calling the function once, the current CNF becomes inconsistent, * and PicoSAT has to be reset. So even this function internally uses * PicoSAT incrementally, it can not be used incrementally itself at this * point. * * The 'callback' can be used for progress logging and is called after * each extracted minimal correcting set if non zero. The 'nhumus' * parameter of 'callback' denotes the number of assumptions found to be * part of the HUMUS sofar. */ const int * picosat_humus (PicoSAT *, void (*callback)(void * state, int nmcs, int nhumus), void * state); /*------------------------------------------------------------------------*/ /* Assume that a previous call to 'picosat_sat' in incremental usage, * returned 'SATISFIABLE'. Then a couple of clauses and optionally new * variables were added (a new variable is a variable that has an index * larger then the maximum variable added so far). The next call to * 'picosat_sat' also returns 'SATISFIABLE'. If this function * 'picosat_changed' returns '0', then the assignment to the old variables * is guaranteed to not have changed. Otherwise it might have changed. * * The return value to this function is only valid until new clauses are * added through 'picosat_add', an assumption is made through * 'picosat_assume', or again 'picosat_sat' is called. This is the same * assumption as for 'picosat_deref'. * * TODO currently this function might also return a non zero value even if * the old assignment did not change, because it only checks whether the * assignment of at least one old variable was flipped at least once during * the search. In principle it should be possible to be exact in the other * direction as well by using a counter of variables that have an odd number * of flips. But this is not implemented yet. */ int picosat_changed (PicoSAT *); /*------------------------------------------------------------------------*/ /* The following six functions internally extract the variable and clausal * core and thus require trace generation to be enabled with * 'picosat_enable_trace_generation' right after calling 'picosat_init'. * * TODO: using these functions in incremental mode with failed assumptions * has only been tested for 'picosat_corelit' thoroughly. The others * probably only work in non-incremental mode or without using * 'picosat_assume'. */ /* This function determines whether the i'th added original clause is in the * core. The 'i' is the return value of 'picosat_add', which starts at zero * and is incremented by one after a original clause is added (that is after * 'picosat_add (0)'). For the index 'i' the following has to hold: * * 0 <= i < picosat_added_original_clauses () */ int picosat_coreclause (PicoSAT *, int i); /* This function gives access to the variable core, which is made up of the * variables that were resolved in deriving the empty clause. */ int picosat_corelit (PicoSAT *, int lit); /* Write the clauses that were used in deriving the empty clause to a file * in DIMACS format. */ void picosat_write_clausal_core (PicoSAT *, FILE * core_file); /* Write a proof trace in TraceCheck format to a file. */ void picosat_write_compact_trace (PicoSAT *, FILE * trace_file); void picosat_write_extended_trace (PicoSAT *, FILE * trace_file); /* Write a RUP trace to a file. This trace file contains only the learned * core clauses while this is not necessarily the case for the RUP file * obtained with 'picosat_set_incremental_rup_file'. */ void picosat_write_rup_trace (PicoSAT *, FILE * trace_file); /*------------------------------------------------------------------------*/ /* Keeping the proof trace around is not necessary if an over-approximation * of the core is enough. A literal is 'used' if it was involved in a * resolution to derive a learned clause. The core literals are necessarily * a subset of the 'used' literals. */ int picosat_usedlit (PicoSAT *, int lit); /*------------------------------------------------------------------------*/ #endif BoolNet/src/sat_search.h0000644000176200001440000000314713277247010014700 0ustar liggesusers#ifndef SAT_SEARCH_H #define SAT_SEARCH_H #include "boolean_network.h" #include "attractor_info.h" #define EXTENSION_EXPONENTIAL 0 #define EXTENSION_LINEAR 1 #define EXTENSION_LINEAR_ADAPT 2 #define EXTENSION_MIXED 3 /** * Determine all attractors having at most states in the network , * and return them in an AttractorInfo structure. */ extern pAttractorInfo getAttractors_SAT_exhaustive(BooleanNetwork * network, unsigned int initialCycleSearchLength, unsigned int extensionMode); /** * Identify all attractors using a SAT-based algorithm adapted from Dubrova et al., 2011. * Here, is the network whose attractors are identified. * If > 0, the first step of the algorithm is to identify and exclude * all attractors of length 1 to . * specifies the way the chain is extended: * EXTENSION_EXPONENTIAL corresponds to the exponential scheme by Dubrova et al. * EXTENSION_LINEAR corresponds to linearly increasing the length * EXTENSION_LINEAR_ADAPT corresponds to a linear increase whose step width is * increased over the iterations * EXTENSION_MIXED corresponds to a mixture of linear and exponential increase, * where the chain length is doubled after 5 linear increases. * Returns an AttractorInfo structure comprising all attractors of the network. */ extern pAttractorInfo getAttractors_SAT_maxLength(BooleanNetwork * network, unsigned int maxLength); #endif BoolNet/src/attractor_info.c0000644000176200001440000000254313277247010015574 0ustar liggesusers#include "attractor_info.h" #include "common.h" /** * Allocate a new AttractorInfo structure for states */ pAttractorInfo allocAttractorInfo(unsigned long long tableSize, unsigned int numGenes) { pAttractorInfo res = (pAttractorInfo)CALLOC(1,sizeof(AttractorInfo)); if ((numGenes % BITS_PER_BLOCK_32) == 0) res->numElementsPerEntry = numGenes/BITS_PER_BLOCK_32; else res->numElementsPerEntry = numGenes/BITS_PER_BLOCK_32 + 1; res->numAttractors = 0; res->table = NULL; res->tableSize = tableSize; res->initialStates = NULL; res->table = (unsigned int*) CALLOC(tableSize * res->numElementsPerEntry,sizeof(unsigned int)); res->attractorAssignment = (unsigned int*) CALLOC(tableSize,sizeof(unsigned int)); res->stepsToAttractor = (unsigned int*) CALLOC(tableSize,sizeof(unsigned int)); return res; } /** * Free a list of attractor structures */ void freeAttractorList(pAttractor p) { do { pAttractor next = p->next; if (p->involvedStates != NULL) FREE(p->involvedStates); FREE(p); p = next; } while(p != NULL); } /** * Free an AttractorInfo structure including * all sub-elements and the attractor list */ void freeAttractorInfo(pAttractorInfo p) { if (p->initialStates != 0) FREE(p->initialStates); FREE(p->table); FREE(p->attractorAssignment); FREE(p->stepsToAttractor); freeAttractorList(p->attractorList); FREE(p); } BoolNet/src/random.h0000644000176200001440000000064713277247010014046 0ustar liggesusers#ifndef RANDOM_H_ #define RANDOM_H_ #include /** * This header contains wrapper methods to generate random numbers. */ /** * Returns a random double in [0,1) */ static inline double doublerand_1() { return unif_rand(); } /** * Returns a random integer value in [0,maxVal-1] */ static inline unsigned int intrand(unsigned int maxVal) { return (unsigned int)(unif_rand() * maxVal); } #endif /*RANDOM_H_*/ BoolNet/src/uthash.h0000644000176200001440000016264113277247010014065 0ustar liggesusers/* Copyright (c) 2003-2011, Troy D. Hanson http://uthash.sourceforge.net All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef UTHASH_H #define UTHASH_H #include /* memcmp,strlen */ #include /* ptrdiff_t */ #include /* exit() */ /* These macros use decltype or the earlier __typeof GNU extension. As decltype is only available in newer compilers (VS2010 or gcc 4.3+ when compiling c++ source) this code uses whatever method is needed or, for VS2008 where neither is available, uses casting workarounds. */ #ifdef _MSC_VER /* MS compiler */ #if _MSC_VER >= 1600 && defined(__cplusplus) /* VS2010 or newer in C++ mode */ #define DECLTYPE(x) (decltype(x)) #else /* VS2008 or older (or VS2010 in C mode) */ #define NO_DECLTYPE #define DECLTYPE(x) #endif #else /* GNU, Sun and other compilers */ #define DECLTYPE(x) (__typeof(x)) #endif #ifdef NO_DECLTYPE #define DECLTYPE_ASSIGN(dst,src) \ do { \ char **_da_dst = (char**)(&(dst)); \ *_da_dst = (char*)(src); \ } while(0) #else #define DECLTYPE_ASSIGN(dst,src) \ do { \ (dst) = DECLTYPE(dst)(src); \ } while(0) #endif /* a number of the hash function use uint32_t which isn't defined on win32 */ #ifdef _MSC_VER typedef unsigned int uint32_t; typedef unsigned char uint8_t; #else #include /* uint32_t */ #endif #define UTHASH_VERSION 1.9.4 //Modified by C. Muessel for use in R #define uthash_fatal(msg) error(msg) /* fatal error (out of memory,etc) */ #define uthash_malloc(sz) malloc(sz) /* malloc fcn */ #define uthash_free(ptr,sz) free(ptr) /* free fcn */ #define uthash_noexpand_fyi(tbl) /* can be defined to log noexpand */ #define uthash_expand_fyi(tbl) /* can be defined to log expands */ /* initial number of buckets */ #define HASH_INITIAL_NUM_BUCKETS 32 /* initial number of buckets */ #define HASH_INITIAL_NUM_BUCKETS_LOG2 5 /* lg2 of initial number of buckets */ #define HASH_BKT_CAPACITY_THRESH 10 /* expand when bucket count reaches */ /* calculate the element whose hash handle address is hhe */ #define ELMT_FROM_HH(tbl,hhp) ((void*)(((char*)(hhp)) - ((tbl)->hho))) #define HASH_FIND(hh,head,keyptr,keylen,out) \ do { \ unsigned _hf_bkt,_hf_hashv; \ out=NULL; \ if (head) { \ HASH_FCN(keyptr,keylen, (head)->hh.tbl->num_buckets, _hf_hashv, _hf_bkt); \ if (HASH_BLOOM_TEST((head)->hh.tbl, _hf_hashv)) { \ HASH_FIND_IN_BKT((head)->hh.tbl, hh, (head)->hh.tbl->buckets[ _hf_bkt ], \ keyptr,keylen,out); \ } \ } \ } while (0) #ifdef HASH_BLOOM #define HASH_BLOOM_BITLEN (1ULL << HASH_BLOOM) #define HASH_BLOOM_BYTELEN (HASH_BLOOM_BITLEN/8) + ((HASH_BLOOM_BITLEN%8) ? 1:0) #define HASH_BLOOM_MAKE(tbl) \ do { \ (tbl)->bloom_nbits = HASH_BLOOM; \ (tbl)->bloom_bv = (uint8_t*)uthash_malloc(HASH_BLOOM_BYTELEN); \ if (!((tbl)->bloom_bv)) { uthash_fatal( "out of memory"); } \ memset((tbl)->bloom_bv, 0, HASH_BLOOM_BYTELEN); \ (tbl)->bloom_sig = HASH_BLOOM_SIGNATURE; \ } while (0); #define HASH_BLOOM_FREE(tbl) \ do { \ uthash_free((tbl)->bloom_bv, HASH_BLOOM_BYTELEN); \ } while (0); #define HASH_BLOOM_BITSET(bv,idx) (bv[(idx)/8] |= (1U << ((idx)%8))) #define HASH_BLOOM_BITTEST(bv,idx) (bv[(idx)/8] & (1U << ((idx)%8))) #define HASH_BLOOM_ADD(tbl,hashv) \ HASH_BLOOM_BITSET((tbl)->bloom_bv, (hashv & (uint32_t)((1ULL << (tbl)->bloom_nbits) - 1))) #define HASH_BLOOM_TEST(tbl,hashv) \ HASH_BLOOM_BITTEST((tbl)->bloom_bv, (hashv & (uint32_t)((1ULL << (tbl)->bloom_nbits) - 1))) #else #define HASH_BLOOM_MAKE(tbl) #define HASH_BLOOM_FREE(tbl) #define HASH_BLOOM_ADD(tbl,hashv) #define HASH_BLOOM_TEST(tbl,hashv) (1) #endif #define HASH_MAKE_TABLE(hh,head) \ do { \ (head)->hh.tbl = (UT_hash_table*)uthash_malloc( \ sizeof(UT_hash_table)); \ if (!((head)->hh.tbl)) { uthash_fatal( "out of memory"); } \ memset((head)->hh.tbl, 0, sizeof(UT_hash_table)); \ (head)->hh.tbl->tail = &((head)->hh); \ (head)->hh.tbl->num_buckets = HASH_INITIAL_NUM_BUCKETS; \ (head)->hh.tbl->log2_num_buckets = HASH_INITIAL_NUM_BUCKETS_LOG2; \ (head)->hh.tbl->hho = (char*)(&(head)->hh) - (char*)(head); \ (head)->hh.tbl->buckets = (UT_hash_bucket*)uthash_malloc( \ HASH_INITIAL_NUM_BUCKETS*sizeof(struct UT_hash_bucket)); \ if (! (head)->hh.tbl->buckets) { uthash_fatal( "out of memory"); } \ memset((head)->hh.tbl->buckets, 0, \ HASH_INITIAL_NUM_BUCKETS*sizeof(struct UT_hash_bucket)); \ HASH_BLOOM_MAKE((head)->hh.tbl); \ (head)->hh.tbl->signature = HASH_SIGNATURE; \ } while(0) #define HASH_ADD(hh,head,fieldname,keylen_in,add) \ HASH_ADD_KEYPTR(hh,head,&((add)->fieldname),keylen_in,add) #define HASH_ADD_KEYPTR(hh,head,keyptr,keylen_in,add) \ do { \ unsigned _ha_bkt; \ (add)->hh.next = NULL; \ (add)->hh.key = (char*)keyptr; \ (add)->hh.keylen = keylen_in; \ if (!(head)) { \ head = (add); \ (head)->hh.prev = NULL; \ HASH_MAKE_TABLE(hh,head); \ } else { \ (head)->hh.tbl->tail->next = (add); \ (add)->hh.prev = ELMT_FROM_HH((head)->hh.tbl, (head)->hh.tbl->tail); \ (head)->hh.tbl->tail = &((add)->hh); \ } \ (head)->hh.tbl->num_items++; \ (add)->hh.tbl = (head)->hh.tbl; \ HASH_FCN(keyptr,keylen_in, (head)->hh.tbl->num_buckets, \ (add)->hh.hashv, _ha_bkt); \ HASH_ADD_TO_BKT((head)->hh.tbl->buckets[_ha_bkt],&(add)->hh); \ HASH_BLOOM_ADD((head)->hh.tbl,(add)->hh.hashv); \ HASH_EMIT_KEY(hh,head,keyptr,keylen_in); \ HASH_FSCK(hh,head); \ } while(0) #define HASH_TO_BKT( hashv, num_bkts, bkt ) \ do { \ bkt = ((hashv) & ((num_bkts) - 1)); \ } while(0) /* delete "delptr" from the hash table. * "the usual" patch-up process for the app-order doubly-linked-list. * The use of _hd_hh_del below deserves special explanation. * These used to be expressed using (delptr) but that led to a bug * if someone used the same symbol for the head and deletee, like * HASH_DELETE(hh,users,users); * We want that to work, but by changing the head (users) below * we were forfeiting our ability to further refer to the deletee (users) * in the patch-up process. Solution: use scratch space to * copy the deletee pointer, then the latter references are via that * scratch pointer rather than through the repointed (users) symbol. */ #define HASH_DELETE(hh,head,delptr) \ do { \ unsigned _hd_bkt; \ struct UT_hash_handle *_hd_hh_del; \ if ( ((delptr)->hh.prev == NULL) && ((delptr)->hh.next == NULL) ) { \ uthash_free((head)->hh.tbl->buckets, \ (head)->hh.tbl->num_buckets*sizeof(struct UT_hash_bucket) ); \ HASH_BLOOM_FREE((head)->hh.tbl); \ uthash_free((head)->hh.tbl, sizeof(UT_hash_table)); \ head = NULL; \ } else { \ _hd_hh_del = &((delptr)->hh); \ if ((delptr) == ELMT_FROM_HH((head)->hh.tbl,(head)->hh.tbl->tail)) { \ (head)->hh.tbl->tail = \ (UT_hash_handle*)((char*)((delptr)->hh.prev) + \ (head)->hh.tbl->hho); \ } \ if ((delptr)->hh.prev) { \ ((UT_hash_handle*)((char*)((delptr)->hh.prev) + \ (head)->hh.tbl->hho))->next = (delptr)->hh.next; \ } else { \ DECLTYPE_ASSIGN(head,(delptr)->hh.next); \ } \ if (_hd_hh_del->next) { \ ((UT_hash_handle*)((char*)_hd_hh_del->next + \ (head)->hh.tbl->hho))->prev = \ _hd_hh_del->prev; \ } \ HASH_TO_BKT( _hd_hh_del->hashv, (head)->hh.tbl->num_buckets, _hd_bkt); \ HASH_DEL_IN_BKT(hh,(head)->hh.tbl->buckets[_hd_bkt], _hd_hh_del); \ (head)->hh.tbl->num_items--; \ } \ HASH_FSCK(hh,head); \ } while (0) /* convenience forms of HASH_FIND/HASH_ADD/HASH_DEL */ #define HASH_FIND_STR(head,findstr,out) \ HASH_FIND(hh,head,findstr,strlen(findstr),out) #define HASH_ADD_STR(head,strfield,add) \ HASH_ADD(hh,head,strfield,strlen(add->strfield),add) #define HASH_FIND_INT(head,findint,out) \ HASH_FIND(hh,head,findint,sizeof(int),out) #define HASH_ADD_INT(head,intfield,add) \ HASH_ADD(hh,head,intfield,sizeof(int),add) #define HASH_FIND_PTR(head,findptr,out) \ HASH_FIND(hh,head,findptr,sizeof(void *),out) #define HASH_ADD_PTR(head,ptrfield,add) \ HASH_ADD(hh,head,ptrfield,sizeof(void *),add) #define HASH_DEL(head,delptr) \ HASH_DELETE(hh,head,delptr) /* HASH_FSCK checks hash integrity on every add/delete when HASH_DEBUG is defined. * This is for uthash developer only; it compiles away if HASH_DEBUG isn't defined. */ #ifdef HASH_DEBUG #define HASH_OOPS(...) do { fprintf(stderr,__VA_ARGS__); exit(-1); } while (0) #define HASH_FSCK(hh,head) \ do { \ unsigned _bkt_i; \ unsigned _count, _bkt_count; \ char *_prev; \ struct UT_hash_handle *_thh; \ if (head) { \ _count = 0; \ for( _bkt_i = 0; _bkt_i < (head)->hh.tbl->num_buckets; _bkt_i++) { \ _bkt_count = 0; \ _thh = (head)->hh.tbl->buckets[_bkt_i].hh_head; \ _prev = NULL; \ while (_thh) { \ if (_prev != (char*)(_thh->hh_prev)) { \ HASH_OOPS("invalid hh_prev %p, actual %p\n", \ _thh->hh_prev, _prev ); \ } \ _bkt_count++; \ _prev = (char*)(_thh); \ _thh = _thh->hh_next; \ } \ _count += _bkt_count; \ if ((head)->hh.tbl->buckets[_bkt_i].count != _bkt_count) { \ HASH_OOPS("invalid bucket count %d, actual %d\n", \ (head)->hh.tbl->buckets[_bkt_i].count, _bkt_count); \ } \ } \ if (_count != (head)->hh.tbl->num_items) { \ HASH_OOPS("invalid hh item count %d, actual %d\n", \ (head)->hh.tbl->num_items, _count ); \ } \ /* traverse hh in app order; check next/prev integrity, count */ \ _count = 0; \ _prev = NULL; \ _thh = &(head)->hh; \ while (_thh) { \ _count++; \ if (_prev !=(char*)(_thh->prev)) { \ HASH_OOPS("invalid prev %p, actual %p\n", \ _thh->prev, _prev ); \ } \ _prev = (char*)ELMT_FROM_HH((head)->hh.tbl, _thh); \ _thh = ( _thh->next ? (UT_hash_handle*)((char*)(_thh->next) + \ (head)->hh.tbl->hho) : NULL ); \ } \ if (_count != (head)->hh.tbl->num_items) { \ HASH_OOPS("invalid app item count %d, actual %d\n", \ (head)->hh.tbl->num_items, _count ); \ } \ } \ } while (0) #else #define HASH_FSCK(hh,head) #endif /* When compiled with -DHASH_EMIT_KEYS, length-prefixed keys are emitted to * the descriptor to which this macro is defined for tuning the hash function. * The app can #include to get the prototype for write(2). */ #ifdef HASH_EMIT_KEYS #define HASH_EMIT_KEY(hh,head,keyptr,fieldlen) \ do { \ unsigned _klen = fieldlen; \ write(HASH_EMIT_KEYS, &_klen, sizeof(_klen)); \ write(HASH_EMIT_KEYS, keyptr, fieldlen); \ } while (0) #else #define HASH_EMIT_KEY(hh,head,keyptr,fieldlen) #endif /* default to Jenkin's hash unless overridden e.g. DHASH_FUNCTION=HASH_SAX */ #ifdef HASH_FUNCTION #define HASH_FCN HASH_FUNCTION #else #define HASH_FCN HASH_JEN #endif /* The Bernstein hash function, used in Perl prior to v5.6 */ #define HASH_BER(key,keylen,num_bkts,hashv,bkt) \ do { \ unsigned _hb_keylen=keylen; \ char *_hb_key=(char*)(key); \ (hashv) = 0; \ while (_hb_keylen--) { (hashv) = ((hashv) * 33) + *_hb_key++; } \ bkt = (hashv) & (num_bkts-1); \ } while (0) /* SAX/FNV/OAT/JEN hash functions are macro variants of those listed at * http://eternallyconfuzzled.com/tuts/algorithms/jsw_tut_hashing.aspx */ #define HASH_SAX(key,keylen,num_bkts,hashv,bkt) \ do { \ unsigned _sx_i; \ char *_hs_key=(char*)(key); \ hashv = 0; \ for(_sx_i=0; _sx_i < keylen; _sx_i++) \ hashv ^= (hashv << 5) + (hashv >> 2) + _hs_key[_sx_i]; \ bkt = hashv & (num_bkts-1); \ } while (0) #define HASH_FNV(key,keylen,num_bkts,hashv,bkt) \ do { \ unsigned _fn_i; \ char *_hf_key=(char*)(key); \ hashv = 2166136261UL; \ for(_fn_i=0; _fn_i < keylen; _fn_i++) \ hashv = (hashv * 16777619) ^ _hf_key[_fn_i]; \ bkt = hashv & (num_bkts-1); \ } while(0); #define HASH_OAT(key,keylen,num_bkts,hashv,bkt) \ do { \ unsigned _ho_i; \ char *_ho_key=(char*)(key); \ hashv = 0; \ for(_ho_i=0; _ho_i < keylen; _ho_i++) { \ hashv += _ho_key[_ho_i]; \ hashv += (hashv << 10); \ hashv ^= (hashv >> 6); \ } \ hashv += (hashv << 3); \ hashv ^= (hashv >> 11); \ hashv += (hashv << 15); \ bkt = hashv & (num_bkts-1); \ } while(0) #define HASH_JEN_MIX(a,b,c) \ do { \ a -= b; a -= c; a ^= ( c >> 13 ); \ b -= c; b -= a; b ^= ( a << 8 ); \ c -= a; c -= b; c ^= ( b >> 13 ); \ a -= b; a -= c; a ^= ( c >> 12 ); \ b -= c; b -= a; b ^= ( a << 16 ); \ c -= a; c -= b; c ^= ( b >> 5 ); \ a -= b; a -= c; a ^= ( c >> 3 ); \ b -= c; b -= a; b ^= ( a << 10 ); \ c -= a; c -= b; c ^= ( b >> 15 ); \ } while (0) #define HASH_JEN(key,keylen,num_bkts,hashv,bkt) \ do { \ unsigned _hj_i,_hj_j,_hj_k; \ char *_hj_key=(char*)(key); \ hashv = 0xfeedbeef; \ _hj_i = _hj_j = 0x9e3779b9; \ _hj_k = keylen; \ while (_hj_k >= 12) { \ _hj_i += (_hj_key[0] + ( (unsigned)_hj_key[1] << 8 ) \ + ( (unsigned)_hj_key[2] << 16 ) \ + ( (unsigned)_hj_key[3] << 24 ) ); \ _hj_j += (_hj_key[4] + ( (unsigned)_hj_key[5] << 8 ) \ + ( (unsigned)_hj_key[6] << 16 ) \ + ( (unsigned)_hj_key[7] << 24 ) ); \ hashv += (_hj_key[8] + ( (unsigned)_hj_key[9] << 8 ) \ + ( (unsigned)_hj_key[10] << 16 ) \ + ( (unsigned)_hj_key[11] << 24 ) ); \ \ HASH_JEN_MIX(_hj_i, _hj_j, hashv); \ \ _hj_key += 12; \ _hj_k -= 12; \ } \ hashv += keylen; \ switch ( _hj_k ) { \ case 11: hashv += ( (unsigned)_hj_key[10] << 24 ); \ case 10: hashv += ( (unsigned)_hj_key[9] << 16 ); \ case 9: hashv += ( (unsigned)_hj_key[8] << 8 ); \ case 8: _hj_j += ( (unsigned)_hj_key[7] << 24 ); \ case 7: _hj_j += ( (unsigned)_hj_key[6] << 16 ); \ case 6: _hj_j += ( (unsigned)_hj_key[5] << 8 ); \ case 5: _hj_j += _hj_key[4]; \ case 4: _hj_i += ( (unsigned)_hj_key[3] << 24 ); \ case 3: _hj_i += ( (unsigned)_hj_key[2] << 16 ); \ case 2: _hj_i += ( (unsigned)_hj_key[1] << 8 ); \ case 1: _hj_i += _hj_key[0]; \ } \ HASH_JEN_MIX(_hj_i, _hj_j, hashv); \ bkt = hashv & (num_bkts-1); \ } while(0) /* The Paul Hsieh hash function */ #undef get16bits #if (defined(__GNUC__) && defined(__i386__)) || defined(__WATCOMC__) \ || defined(_MSC_VER) || defined (__BORLANDC__) || defined (__TURBOC__) #define get16bits(d) (*((const uint16_t *) (d))) #endif #if !defined (get16bits) #define get16bits(d) ((((uint32_t)(((const uint8_t *)(d))[1])) << 8) \ +(uint32_t)(((const uint8_t *)(d))[0]) ) #endif #define HASH_SFH(key,keylen,num_bkts,hashv,bkt) \ do { \ char *_sfh_key=(char*)(key); \ uint32_t _sfh_tmp, _sfh_len = keylen; \ \ int _sfh_rem = _sfh_len & 3; \ _sfh_len >>= 2; \ hashv = 0xcafebabe; \ \ /* Main loop */ \ for (;_sfh_len > 0; _sfh_len--) { \ hashv += get16bits (_sfh_key); \ _sfh_tmp = (get16bits (_sfh_key+2) << 11) ^ hashv; \ hashv = (hashv << 16) ^ _sfh_tmp; \ _sfh_key += 2*sizeof (uint16_t); \ hashv += hashv >> 11; \ } \ \ /* Handle end cases */ \ switch (_sfh_rem) { \ case 3: hashv += get16bits (_sfh_key); \ hashv ^= hashv << 16; \ hashv ^= _sfh_key[sizeof (uint16_t)] << 18; \ hashv += hashv >> 11; \ break; \ case 2: hashv += get16bits (_sfh_key); \ hashv ^= hashv << 11; \ hashv += hashv >> 17; \ break; \ case 1: hashv += *_sfh_key; \ hashv ^= hashv << 10; \ hashv += hashv >> 1; \ } \ \ /* Force "avalanching" of final 127 bits */ \ hashv ^= hashv << 3; \ hashv += hashv >> 5; \ hashv ^= hashv << 4; \ hashv += hashv >> 17; \ hashv ^= hashv << 25; \ hashv += hashv >> 6; \ bkt = hashv & (num_bkts-1); \ } while(0); #ifdef HASH_USING_NO_STRICT_ALIASING /* The MurmurHash exploits some CPU's (x86,x86_64) tolerance for unaligned reads. * For other types of CPU's (e.g. Sparc) an unaligned read causes a bus error. * MurmurHash uses the faster approach only on CPU's where we know it's safe. * * Note the preprocessor built-in defines can be emitted using: * * gcc -m64 -dM -E - < /dev/null (on gcc) * cc -## a.c (where a.c is a simple test file) (Sun Studio) */ #if (defined(__i386__) || defined(__x86_64__)) #define MUR_GETBLOCK(p,i) p[i] #else /* non intel */ #define MUR_PLUS0_ALIGNED(p) (((unsigned long)p & 0x3) == 0) #define MUR_PLUS1_ALIGNED(p) (((unsigned long)p & 0x3) == 1) #define MUR_PLUS2_ALIGNED(p) (((unsigned long)p & 0x3) == 2) #define MUR_PLUS3_ALIGNED(p) (((unsigned long)p & 0x3) == 3) #define WP(p) ((uint32_t*)((unsigned long)(p) & ~3UL)) #if (defined(__BIG_ENDIAN__) || defined(SPARC) || defined(__ppc__) || defined(__ppc64__)) #define MUR_THREE_ONE(p) ((((*WP(p))&0x00ffffff) << 8) | (((*(WP(p)+1))&0xff000000) >> 24)) #define MUR_TWO_TWO(p) ((((*WP(p))&0x0000ffff) <<16) | (((*(WP(p)+1))&0xffff0000) >> 16)) #define MUR_ONE_THREE(p) ((((*WP(p))&0x000000ff) <<24) | (((*(WP(p)+1))&0xffffff00) >> 8)) #else /* assume little endian non-intel */ #define MUR_THREE_ONE(p) ((((*WP(p))&0xffffff00) >> 8) | (((*(WP(p)+1))&0x000000ff) << 24)) #define MUR_TWO_TWO(p) ((((*WP(p))&0xffff0000) >>16) | (((*(WP(p)+1))&0x0000ffff) << 16)) #define MUR_ONE_THREE(p) ((((*WP(p))&0xff000000) >>24) | (((*(WP(p)+1))&0x00ffffff) << 8)) #endif #define MUR_GETBLOCK(p,i) (MUR_PLUS0_ALIGNED(p) ? ((p)[i]) : \ (MUR_PLUS1_ALIGNED(p) ? MUR_THREE_ONE(p) : \ (MUR_PLUS2_ALIGNED(p) ? MUR_TWO_TWO(p) : \ MUR_ONE_THREE(p)))) #endif #define MUR_ROTL32(x,r) (((x) << (r)) | ((x) >> (32 - (r)))) #define MUR_FMIX(_h) \ do { \ _h ^= _h >> 16; \ _h *= 0x85ebca6b; \ _h ^= _h >> 13; \ _h *= 0xc2b2ae35l; \ _h ^= _h >> 16; \ } while(0) #define HASH_MUR(key,keylen,num_bkts,hashv,bkt) \ do { \ const uint8_t *_mur_data = (const uint8_t*)(key); \ const int _mur_nblocks = (keylen) / 4; \ uint32_t _mur_h1 = 0xf88D5353; \ uint32_t _mur_c1 = 0xcc9e2d51; \ uint32_t _mur_c2 = 0x1b873593; \ const uint32_t *_mur_blocks = (const uint32_t*)(_mur_data+_mur_nblocks*4); \ int _mur_i; \ for(_mur_i = -_mur_nblocks; _mur_i; _mur_i++) { \ uint32_t _mur_k1 = MUR_GETBLOCK(_mur_blocks,_mur_i); \ _mur_k1 *= _mur_c1; \ _mur_k1 = MUR_ROTL32(_mur_k1,15); \ _mur_k1 *= _mur_c2; \ \ _mur_h1 ^= _mur_k1; \ _mur_h1 = MUR_ROTL32(_mur_h1,13); \ _mur_h1 = _mur_h1*5+0xe6546b64; \ } \ const uint8_t *_mur_tail = (const uint8_t*)(_mur_data + _mur_nblocks*4); \ uint32_t _mur_k1=0; \ switch((keylen) & 3) { \ case 3: _mur_k1 ^= _mur_tail[2] << 16; \ case 2: _mur_k1 ^= _mur_tail[1] << 8; \ case 1: _mur_k1 ^= _mur_tail[0]; \ _mur_k1 *= _mur_c1; \ _mur_k1 = MUR_ROTL32(_mur_k1,15); \ _mur_k1 *= _mur_c2; \ _mur_h1 ^= _mur_k1; \ } \ _mur_h1 ^= (keylen); \ MUR_FMIX(_mur_h1); \ hashv = _mur_h1; \ bkt = hashv & (num_bkts-1); \ } while(0) #endif /* HASH_USING_NO_STRICT_ALIASING */ /* key comparison function; return 0 if keys equal */ #define HASH_KEYCMP(a,b,len) memcmp(a,b,len) /* iterate over items in a known bucket to find desired item */ #define HASH_FIND_IN_BKT(tbl,hh,head,keyptr,keylen_in,out) \ do { \ if (head.hh_head) DECLTYPE_ASSIGN(out,ELMT_FROM_HH(tbl,head.hh_head)); \ else out=NULL; \ while (out) { \ if (out->hh.keylen == keylen_in) { \ if ((HASH_KEYCMP(out->hh.key,keyptr,keylen_in)) == 0) break; \ } \ if (out->hh.hh_next) DECLTYPE_ASSIGN(out,ELMT_FROM_HH(tbl,out->hh.hh_next)); \ else out = NULL; \ } \ } while(0) /* add an item to a bucket */ #define HASH_ADD_TO_BKT(head,addhh) \ do { \ head.count++; \ (addhh)->hh_next = head.hh_head; \ (addhh)->hh_prev = NULL; \ if (head.hh_head) { (head).hh_head->hh_prev = (addhh); } \ (head).hh_head=addhh; \ if (head.count >= ((head.expand_mult+1) * HASH_BKT_CAPACITY_THRESH) \ && (addhh)->tbl->noexpand != 1) { \ HASH_EXPAND_BUCKETS((addhh)->tbl); \ } \ } while(0) /* remove an item from a given bucket */ #define HASH_DEL_IN_BKT(hh,head,hh_del) \ (head).count--; \ if ((head).hh_head == hh_del) { \ (head).hh_head = hh_del->hh_next; \ } \ if (hh_del->hh_prev) { \ hh_del->hh_prev->hh_next = hh_del->hh_next; \ } \ if (hh_del->hh_next) { \ hh_del->hh_next->hh_prev = hh_del->hh_prev; \ } /* Bucket expansion has the effect of doubling the number of buckets * and redistributing the items into the new buckets. Ideally the * items will distribute more or less evenly into the new buckets * (the extent to which this is true is a measure of the quality of * the hash function as it applies to the key domain). * * With the items distributed into more buckets, the chain length * (item count) in each bucket is reduced. Thus by expanding buckets * the hash keeps a bound on the chain length. This bounded chain * length is the essence of how a hash provides constant time lookup. * * The calculation of tbl->ideal_chain_maxlen below deserves some * explanation. First, keep in mind that we're calculating the ideal * maximum chain length based on the *new* (doubled) bucket count. * In fractions this is just n/b (n=number of items,b=new num buckets). * Since the ideal chain length is an integer, we want to calculate * ceil(n/b). We don't depend on floating point arithmetic in this * hash, so to calculate ceil(n/b) with integers we could write * * ceil(n/b) = (n/b) + ((n%b)?1:0) * * and in fact a previous version of this hash did just that. * But now we have improved things a bit by recognizing that b is * always a power of two. We keep its base 2 log handy (call it lb), * so now we can write this with a bit shift and logical AND: * * ceil(n/b) = (n>>lb) + ( (n & (b-1)) ? 1:0) * */ #define HASH_EXPAND_BUCKETS(tbl) \ do { \ unsigned _he_bkt; \ unsigned _he_bkt_i; \ struct UT_hash_handle *_he_thh, *_he_hh_nxt; \ UT_hash_bucket *_he_new_buckets, *_he_newbkt; \ _he_new_buckets = (UT_hash_bucket*)uthash_malloc( \ 2 * tbl->num_buckets * sizeof(struct UT_hash_bucket)); \ if (!_he_new_buckets) { uthash_fatal( "out of memory"); } \ memset(_he_new_buckets, 0, \ 2 * tbl->num_buckets * sizeof(struct UT_hash_bucket)); \ tbl->ideal_chain_maxlen = \ (tbl->num_items >> (tbl->log2_num_buckets+1)) + \ ((tbl->num_items & ((tbl->num_buckets*2)-1)) ? 1 : 0); \ tbl->nonideal_items = 0; \ for(_he_bkt_i = 0; _he_bkt_i < tbl->num_buckets; _he_bkt_i++) \ { \ _he_thh = tbl->buckets[ _he_bkt_i ].hh_head; \ while (_he_thh) { \ _he_hh_nxt = _he_thh->hh_next; \ HASH_TO_BKT( _he_thh->hashv, tbl->num_buckets*2, _he_bkt); \ _he_newbkt = &(_he_new_buckets[ _he_bkt ]); \ if (++(_he_newbkt->count) > tbl->ideal_chain_maxlen) { \ tbl->nonideal_items++; \ _he_newbkt->expand_mult = _he_newbkt->count / \ tbl->ideal_chain_maxlen; \ } \ _he_thh->hh_prev = NULL; \ _he_thh->hh_next = _he_newbkt->hh_head; \ if (_he_newbkt->hh_head) _he_newbkt->hh_head->hh_prev = \ _he_thh; \ _he_newbkt->hh_head = _he_thh; \ _he_thh = _he_hh_nxt; \ } \ } \ uthash_free( tbl->buckets, tbl->num_buckets*sizeof(struct UT_hash_bucket) ); \ tbl->num_buckets *= 2; \ tbl->log2_num_buckets++; \ tbl->buckets = _he_new_buckets; \ tbl->ineff_expands = (tbl->nonideal_items > (tbl->num_items >> 1)) ? \ (tbl->ineff_expands+1) : 0; \ if (tbl->ineff_expands > 1) { \ tbl->noexpand=1; \ uthash_noexpand_fyi(tbl); \ } \ uthash_expand_fyi(tbl); \ } while(0) /* This is an adaptation of Simon Tatham's O(n log(n)) mergesort */ /* Note that HASH_SORT assumes the hash handle name to be hh. * HASH_SRT was added to allow the hash handle name to be passed in. */ #define HASH_SORT(head,cmpfcn) HASH_SRT(hh,head,cmpfcn) #define HASH_SRT(hh,head,cmpfcn) \ do { \ unsigned _hs_i; \ unsigned _hs_looping,_hs_nmerges,_hs_insize,_hs_psize,_hs_qsize; \ struct UT_hash_handle *_hs_p, *_hs_q, *_hs_e, *_hs_list, *_hs_tail; \ if (head) { \ _hs_insize = 1; \ _hs_looping = 1; \ _hs_list = &((head)->hh); \ while (_hs_looping) { \ _hs_p = _hs_list; \ _hs_list = NULL; \ _hs_tail = NULL; \ _hs_nmerges = 0; \ while (_hs_p) { \ _hs_nmerges++; \ _hs_q = _hs_p; \ _hs_psize = 0; \ for ( _hs_i = 0; _hs_i < _hs_insize; _hs_i++ ) { \ _hs_psize++; \ _hs_q = (UT_hash_handle*)((_hs_q->next) ? \ ((void*)((char*)(_hs_q->next) + \ (head)->hh.tbl->hho)) : NULL); \ if (! (_hs_q) ) break; \ } \ _hs_qsize = _hs_insize; \ while ((_hs_psize > 0) || ((_hs_qsize > 0) && _hs_q )) { \ if (_hs_psize == 0) { \ _hs_e = _hs_q; \ _hs_q = (UT_hash_handle*)((_hs_q->next) ? \ ((void*)((char*)(_hs_q->next) + \ (head)->hh.tbl->hho)) : NULL); \ _hs_qsize--; \ } else if ( (_hs_qsize == 0) || !(_hs_q) ) { \ _hs_e = _hs_p; \ _hs_p = (UT_hash_handle*)((_hs_p->next) ? \ ((void*)((char*)(_hs_p->next) + \ (head)->hh.tbl->hho)) : NULL); \ _hs_psize--; \ } else if (( \ cmpfcn(DECLTYPE(head)(ELMT_FROM_HH((head)->hh.tbl,_hs_p)), \ DECLTYPE(head)(ELMT_FROM_HH((head)->hh.tbl,_hs_q))) \ ) <= 0) { \ _hs_e = _hs_p; \ _hs_p = (UT_hash_handle*)((_hs_p->next) ? \ ((void*)((char*)(_hs_p->next) + \ (head)->hh.tbl->hho)) : NULL); \ _hs_psize--; \ } else { \ _hs_e = _hs_q; \ _hs_q = (UT_hash_handle*)((_hs_q->next) ? \ ((void*)((char*)(_hs_q->next) + \ (head)->hh.tbl->hho)) : NULL); \ _hs_qsize--; \ } \ if ( _hs_tail ) { \ _hs_tail->next = ((_hs_e) ? \ ELMT_FROM_HH((head)->hh.tbl,_hs_e) : NULL); \ } else { \ _hs_list = _hs_e; \ } \ _hs_e->prev = ((_hs_tail) ? \ ELMT_FROM_HH((head)->hh.tbl,_hs_tail) : NULL); \ _hs_tail = _hs_e; \ } \ _hs_p = _hs_q; \ } \ _hs_tail->next = NULL; \ if ( _hs_nmerges <= 1 ) { \ _hs_looping=0; \ (head)->hh.tbl->tail = _hs_tail; \ DECLTYPE_ASSIGN(head,ELMT_FROM_HH((head)->hh.tbl, _hs_list)); \ } \ _hs_insize *= 2; \ } \ HASH_FSCK(hh,head); \ } \ } while (0) /* This function selects items from one hash into another hash. * The end result is that the selected items have dual presence * in both hashes. There is no copy of the items made; rather * they are added into the new hash through a secondary hash * hash handle that must be present in the structure. */ #define HASH_SELECT(hh_dst, dst, hh_src, src, cond) \ do { \ unsigned _src_bkt, _dst_bkt; \ void *_last_elt=NULL, *_elt; \ UT_hash_handle *_src_hh, *_dst_hh, *_last_elt_hh=NULL; \ ptrdiff_t _dst_hho = ((char*)(&(dst)->hh_dst) - (char*)(dst)); \ if (src) { \ for(_src_bkt=0; _src_bkt < (src)->hh_src.tbl->num_buckets; _src_bkt++) { \ for(_src_hh = (src)->hh_src.tbl->buckets[_src_bkt].hh_head; \ _src_hh; \ _src_hh = _src_hh->hh_next) { \ _elt = ELMT_FROM_HH((src)->hh_src.tbl, _src_hh); \ if (cond(_elt)) { \ _dst_hh = (UT_hash_handle*)(((char*)_elt) + _dst_hho); \ _dst_hh->key = _src_hh->key; \ _dst_hh->keylen = _src_hh->keylen; \ _dst_hh->hashv = _src_hh->hashv; \ _dst_hh->prev = _last_elt; \ _dst_hh->next = NULL; \ if (_last_elt_hh) { _last_elt_hh->next = _elt; } \ if (!dst) { \ DECLTYPE_ASSIGN(dst,_elt); \ HASH_MAKE_TABLE(hh_dst,dst); \ } else { \ _dst_hh->tbl = (dst)->hh_dst.tbl; \ } \ HASH_TO_BKT(_dst_hh->hashv, _dst_hh->tbl->num_buckets, _dst_bkt); \ HASH_ADD_TO_BKT(_dst_hh->tbl->buckets[_dst_bkt],_dst_hh); \ (dst)->hh_dst.tbl->num_items++; \ _last_elt = _elt; \ _last_elt_hh = _dst_hh; \ } \ } \ } \ } \ HASH_FSCK(hh_dst,dst); \ } while (0) #define HASH_CLEAR(hh,head) \ do { \ if (head) { \ uthash_free((head)->hh.tbl->buckets, \ (head)->hh.tbl->num_buckets*sizeof(struct UT_hash_bucket)); \ HASH_BLOOM_FREE((head)->hh.tbl); \ uthash_free((head)->hh.tbl, sizeof(UT_hash_table)); \ (head)=NULL; \ } \ } while(0) #ifdef NO_DECLTYPE #define HASH_ITER(hh,head,el,tmp) \ for((el)=(head), (*(char**)(&(tmp)))=(char*)((head)?(head)->hh.next:NULL); \ el; (el)=(tmp),(*(char**)(&(tmp)))=(char*)((tmp)?(tmp)->hh.next:NULL)) #else #define HASH_ITER(hh,head,el,tmp) \ for((el)=(head),(tmp)=DECLTYPE(el)((head)?(head)->hh.next:NULL); \ el; (el)=(tmp),(tmp)=DECLTYPE(el)((tmp)?(tmp)->hh.next:NULL)) #endif /* obtain a count of items in the hash */ #define HASH_COUNT(head) HASH_CNT(hh,head) #define HASH_CNT(hh,head) ((head)?((head)->hh.tbl->num_items):0) typedef struct UT_hash_bucket { struct UT_hash_handle *hh_head; unsigned count; /* expand_mult is normally set to 0. In this situation, the max chain length * threshold is enforced at its default value, HASH_BKT_CAPACITY_THRESH. (If * the bucket's chain exceeds this length, bucket expansion is triggered). * However, setting expand_mult to a non-zero value delays bucket expansion * (that would be triggered by additions to this particular bucket) * until its chain length reaches a *multiple* of HASH_BKT_CAPACITY_THRESH. * (The multiplier is simply expand_mult+1). The whole idea of this * multiplier is to reduce bucket expansions, since they are expensive, in * situations where we know that a particular bucket tends to be overused. * It is better to let its chain length grow to a longer yet-still-bounded * value, than to do an O(n) bucket expansion too often. */ unsigned expand_mult; } UT_hash_bucket; /* random signature used only to find hash tables in external analysis */ #define HASH_SIGNATURE 0xa0111fe1 #define HASH_BLOOM_SIGNATURE 0xb12220f2 typedef struct UT_hash_table { UT_hash_bucket *buckets; unsigned num_buckets, log2_num_buckets; unsigned num_items; struct UT_hash_handle *tail; /* tail hh in app order, for fast append */ ptrdiff_t hho; /* hash handle offset (byte pos of hash handle in element */ /* in an ideal situation (all buckets used equally), no bucket would have * more than ceil(#items/#buckets) items. that's the ideal chain length. */ unsigned ideal_chain_maxlen; /* nonideal_items is the number of items in the hash whose chain position * exceeds the ideal chain maxlen. these items pay the penalty for an uneven * hash distribution; reaching them in a chain traversal takes >ideal steps */ unsigned nonideal_items; /* ineffective expands occur when a bucket doubling was performed, but * afterward, more than half the items in the hash had nonideal chain * positions. If this happens on two consecutive expansions we inhibit any * further expansion, as it's not helping; this happens when the hash * function isn't a good fit for the key domain. When expansion is inhibited * the hash will still work, albeit no longer in constant time. */ unsigned ineff_expands, noexpand; uint32_t signature; /* used only to find hash tables in external analysis */ #ifdef HASH_BLOOM uint32_t bloom_sig; /* used only to test bloom exists in external analysis */ uint8_t *bloom_bv; char bloom_nbits; #endif } UT_hash_table; typedef struct UT_hash_handle { struct UT_hash_table *tbl; void *prev; /* prev element in app order */ void *next; /* next element in app order */ struct UT_hash_handle *hh_prev; /* previous hh in bucket order */ struct UT_hash_handle *hh_next; /* next hh in bucket order */ void *key; /* ptr to enclosing struct's key */ unsigned keylen; /* enclosing struct's key len */ unsigned hashv; /* result of hash-fcn(key) */ } UT_hash_handle; #endif /* UTHASH_H */ BoolNet/src/symbolic_network.h0000644000176200001440000001162613277247010016157 0ustar liggesusers#ifndef SYMBOLIC_SIMULATOR_H #define SYMBOLIC_SIMULATOR_H #include #include #include "boolean_network.h" #define FORMULA_ATOM 0 #define FORMULA_OPERATOR 1 #define FORMULA_CONSTANT 2 #define OPERATOR_AND 0 #define OPERATOR_OR 1 #define OPERATOR_MAJ 2 #define OPERATOR_SUMIS 3 #define OPERATOR_SUMGT 4 #define OPERATOR_SUMLT 5 #define OPERATOR_TIMEIS 6 #define OPERATOR_TIMEGT 7 #define OPERATOR_TIMELT 8 #define MODE_EXHAUSTIVE 0 #define MODE_SUPPLIED 1 #define MODE_RANDOM 2 #define HASH_UNSET ~0 /** * "Base class" for Boolean Formulae */ typedef struct { // The formula type which allows // for casting to the corresponding "derived" type unsigned char type; // Is the formula negated or not? bool negated; } BooleanFormula; /** * "Derived class" for operators */ typedef struct { // here: type = FORMULA_OPERATOR unsigned char type; bool negated; // The operator type unsigned char operator; // The number of operands unsigned int numOperands; // The operands BooleanFormula ** operands; } BooleanOperator; /** * "Derived class" for literals */ typedef struct { // here: type = FORMULA_ATOM unsigned char type; bool negated; // The index of the variable that this object represents int literal; // The temporal difference unsigned int time; } BooleanAtom; /** * "Derived class" for constants */ typedef struct { // here: type = FORMULA_CONSTANT unsigned char type; bool negated; // The value of the constant int value; } Constant; /** * A structure holding a symbolic network * with all its network trees */ typedef struct { // here: type = SYMBOLIC_BOOLEAN_NETWORK unsigned char type; // The number of genes in the network unsigned int numGenes; // A vector specifying whether genes are fixed (0/1) or not (-1) int * fixedGenes; // The formulae representing the transition functions BooleanFormula ** interactions; // The formulae representing the transition functions in CNF // (for SAT-based attractor search) // Usually, this is a single formula per gene. // In the presence of time-dependent predicates, there are // + 1 formulae per gene. BooleanFormula *** cnfInteractions; // A vector specifying the maximum delay for each gene unsigned int * stateSizes; // The sum of all elements in stateSizes unsigned int totalStateSize; // The point of time at which attractor search can start, // as temporal predicates do not change any more unsigned int attractorSearchStartTime; // A vector specifying the indices in the state vector // at which the histories for each of the genes start unsigned int * stateOffsets; // A vector marking each entry in the state vector as fixed or not, // corresponding to the genes it belongs to int * stateFixed; } SymbolicBooleanNetwork; /** * A structure holding a state for temporal network simulation */ typedef struct { // The index of the start state to which this state belongs unsigned long long startState; // The current time step unsigned int timeStep; // The state vector (also containing previous states for certain genes if required) unsigned char state[]; } TemporalState; extern void freeSymbolicNetwork(SymbolicBooleanNetwork * network); static inline BooleanOperator * allocOperator(unsigned int operator, bool negated, unsigned int numOperands, BooleanFormula ** operands) { BooleanOperator * res = calloc(1, sizeof(BooleanOperator)); res->negated = negated; res->type = FORMULA_OPERATOR; res->operator = operator; res->numOperands = numOperands; if (operands == NULL) res->operands = calloc(numOperands, sizeof(BooleanFormula *)); else res->operands = operands; return res; } static inline BooleanAtom * allocAtom(int literal, unsigned int time, bool negated) { BooleanAtom * res = calloc(1, sizeof(BooleanAtom)); res->type = FORMULA_ATOM; res->negated = negated; res->literal = literal; res->time = time; return res; } static inline Constant * allocConstant(int value, bool negated) { Constant * res = calloc(1, sizeof(Constant)); res->type = FORMULA_CONSTANT; res->negated = negated; res->value = value; return res; } /** * Free the expression tree */ extern void freeFormula(BooleanFormula * formula); /** * Free the internal network structure */ extern void freeSymbolicNetwork(SymbolicBooleanNetwork * network); extern BooleanFormula * copyFormula(BooleanFormula * formula, bool negate, unsigned int timeOffset); /** * Evaluate an expression tree on the previous state . * is an array describing where the history of the i-th gene starts. * is the total number of genes in the network. * Returns a logical value resulting from the evaluation. */ extern unsigned char evaluate(BooleanFormula * formula, TemporalState * state, unsigned int * stateOffsets, const unsigned int numGenes); extern BooleanFormula * convertToCNF(BooleanFormula * formula, bool negate, unsigned int time); #endif BoolNet/src/sat_search.c0000644000176200001440000006256713277247010014706 0ustar liggesusers#include "sat_search.h" #include #include #include #include "attractor_info.h" #include "common.h" #include "random.h" // Activate this switch to use the Lingeling solver instead of PicoSAT // - requires lglib.c and lglib.h to be present in the package. // Make sure to respect Lingeling's license terms! //#define USE_LINGELING #ifdef USE_LINGELING #include "lglib.h" #define sat_add_literal(solver, lit) lgladd(solver, lit) #define sat_deref(solver, lit) lglderef(solver, lit) #define sat_solve(solver) lglsat(solver) #define sat_free(solver) lglrelease(solver) #define SATISFIABLE LGL_SATISFIABLE /** * Custom interrupt function to be used with Lingeling. * The function calls R's user interrupt check. */ void SATInterrupt(void * external_state) { R_CheckUserInterrupt(); } typedef LGL Solver; #else #include "picosat.h" #define sat_add_literal(solver, lit) picosat_add(solver, lit) #define sat_deref(solver, lit) picosat_deref(solver, lit) #define sat_solve(solver) picosat_sat(solver, -1) #define sat_free(solver) picosat_reset(solver) #define SATISFIABLE PICOSAT_SATISFIABLE typedef PicoSAT Solver; /** * Custom interrupt function to be used with PicoSAT. * The function calls R's user interrupt check. */ int SATInterrupt(void * external_state) { R_CheckUserInterrupt(); return 0; } #endif #include "symbolic_network.h" /** * Custom memory allocator to be used with PicoSAT. * The allocator uses the internal memory map of BoolNet */ void * SATAlloc(void* mem, size_t sz) { return CALLOC(sz, 1); } /** * Custom memory deallocator to be used with PicoSAT/Lingeling. * The deallocator uses the internal memory map of BoolNet */ void SATDealloc(void* mem, void * ptr, size_t sz) { FREE(ptr); } /** * Custom memory resize function to be used with PicoSAT/Lingeling. * The function uses the internal memory map of BoolNet */ void * SATRealloc(void* mem, void * ptr, size_t old, size_t new) { return REALLOC(ptr, new); } #ifdef USE_LINGELING /** * Initialize the Lingeling SAT solver using appropriate memory handlers * and interrupt handlers. */ Solver * initSATSolver() { Solver * sat = lglminit(NULL, &SATAlloc, &SATRealloc, &SATDealloc); lglonabort(sat, NULL, &SATInterrupt); lglsetopt(sat, "elmfull", 1); lglsetopt(sat, "elmschedprod", 1); lglsetopt(sat, "seed", intrand(~0))); return sat; } #else /** * Initialize the PicoSAT SAT solver using appropriate memory handlers * and interrupt handlers. */ Solver * initSATSolver() { Solver * sat = picosat_minit(NULL, &SATAlloc, &SATRealloc, &SATDealloc); picosat_set_interrupt(sat, NULL, &SATInterrupt); picosat_set_seed(sat, intrand(~0)); return sat; } #endif /** * Recursively encode a symbolic formula for the SAT solver. This function expects that * is already in CNF, being either a constant, an atom, or a conjunction * comprising only constants, atoms or flat disjunctions. * is the network to which the formula belongs. * is the index of the gene that is currently encoded. * is the index of the state for which the formula should be encoded. * is the SAT solver. */ void encodeFormula(SymbolicBooleanNetwork * network, BooleanFormula * formula, int geneIndex, int stateIndex, Solver * sat) { assert(formula->type != FORMULA_CONSTANT); // if (formula->type == FORMULA_CONSTANT) // { // Constant * constant = (Constant *) formula; // if ((constant->value == 1 && !constant->negated) // || (constant->value == 0 && constant->negated)) // { // // add tautology // picosat_add(sat, -(network->numGenes * stateIndex + geneIndex + 1)); // picosat_add(sat, network->numGenes * stateIndex + geneIndex + 1); //// picosat_assume(sat, network->numGenes * stateIndex + geneIndex + 1); // } // else // { //// picosat_assume(sat, -(network->numGenes * stateIndex + geneIndex + 1)); // } // } // else if (formula->type == FORMULA_ATOM) { BooleanAtom * atom = (BooleanAtom *) formula; // add the atom directly if (atom->negated) { sat_add_literal(sat, -(network->numGenes * (stateIndex + atom->time) + atom->literal + 1)); } else { sat_add_literal(sat, network->numGenes * (stateIndex + atom->time) + atom->literal + 1); } } else if (formula->type == FORMULA_OPERATOR) { BooleanOperator * operator = (BooleanOperator *) formula; int i; for (i = 0; i < operator->numOperands; ++i) { // recursively encode operands encodeFormula(network, operator->operands[i], geneIndex, stateIndex, sat); if (operator->operator == OPERATOR_AND) // if this is the outer conjunction, each inner element must be a clause // and thus be terminated by a 0 { sat_add_literal(sat, 0); } } } } /** * Add CNF clauses that represent the th-last state of the network * in the chain to the SAT solver . * specifies which of the formulae available for each gene should * be utilized for the state (usually the first, but there may be more than one * formula if the network comprises time-dependent predicates). */ static inline void addState_SAT(BooleanNetwork * network, Solver * sat, int stateIndex, unsigned int formulaIndex) { unsigned int i, j, k; for (i = 0; i < network->numGenes; ++i) { if (network->fixedGenes[i] != -1) // fixed gene => add a clause with a constant 1 or 0 for that gene { if (network->fixedGenes[i] == 0) sat_add_literal(sat, -(network->numGenes * stateIndex + i + 1)); else sat_add_literal(sat, network->numGenes * stateIndex + i + 1); sat_add_literal(sat, 0); } else // non-fixed gene { if (network->type == TRUTHTABLE_BOOLEAN_NETWORK) // network in truth table representation => construct CNF from truth table { TruthTableBooleanNetwork * ttNetwork = (TruthTableBooleanNetwork *) network; unsigned int numInputs = ttNetwork->inputGenePositions[i + 1] - ttNetwork->inputGenePositions[i]; unsigned int funcSize = ttNetwork->transitionFunctionPositions[i + 1] - ttNetwork->transitionFunctionPositions[i]; // construct clauses for equivalence relations by "doubling" the truth table of // the transition function (corresponding to inactive and active output) for (j = 0; j < funcSize; ++j) { // in the first half, the target gene is inactive (truth table result is negated) // input genes must be negated for CNF if (ttNetwork->transitionFunctions[ttNetwork->transitionFunctionPositions[i] + j]) { sat_add_literal(sat, network->numGenes * stateIndex + i + 1); for (k = 0; k < numInputs; ++k) { int varIndex = network->numGenes * (stateIndex + 1) + ttNetwork->inputGenes[ttNetwork->inputGenePositions[i] + k]; if (((j >> (numInputs - k - 1)) & 1) != 0) sat_add_literal(sat, -varIndex); else sat_add_literal(sat, varIndex); } sat_add_literal(sat, 0); } else { // in the second half, the target gene is active (unchanged truth table result) // input genes must be negated for CNF sat_add_literal(sat, -(network->numGenes * stateIndex + i + 1)); for (k = 0; k < numInputs; ++k) { int varIndex = network->numGenes * (stateIndex + 1) + ttNetwork->inputGenes[ttNetwork->inputGenePositions[i] + k]; if (((j >> (numInputs - k - 1)) & 1) != 0) sat_add_literal(sat, -varIndex); else sat_add_literal(sat, varIndex); } sat_add_literal(sat, 0); } } } else if (network->type == SYMBOLIC_BOOLEAN_NETWORK) // network in symbolic representation => use CNF representation of the formulae // to generate the corresponding SAT solver clauses { SymbolicBooleanNetwork * symNetwork = (SymbolicBooleanNetwork *) network; // recursively encode the formula encodeFormula(symNetwork, symNetwork->cnfInteractions[i][formulaIndex], i, stateIndex, sat); if (symNetwork->cnfInteractions[i][formulaIndex]->type != FORMULA_OPERATOR || ((BooleanOperator *) symNetwork->cnfInteractions[i][formulaIndex])->operator != OPERATOR_AND) // if the top-level formula is not an AND operator, // the result is a single clause that needs to be terminated here { sat_add_literal(sat, 0); } } } } } /** * Add clauses to the SAT solver to specify that the -th last state and * the -th last state of the chain should be equal. * is the Boolean network from which the transition functions come. */ static inline void addEqualityCondition_SAT(Solver * sat, BooleanNetwork * network, unsigned int state1, unsigned int state2) { unsigned int i, j; for (i = 0; i < network->numGenes; ++i) // iterate over genes { unsigned int historySize = 1; if (network->type == SYMBOLIC_BOOLEAN_NETWORK) // determine history size historySize = ((SymbolicBooleanNetwork *) network)->stateSizes[i]; // for temporal networks, the history must also be equal for the two states for (j = 0; j < historySize; ++j) { int gene1 = network->numGenes * (state1 + j) + i + 1; int gene2 = network->numGenes * (state2 + j) + i + 1; // equivalence consists of two clauses: (!A | B) & (A | !B) sat_add_literal(sat, gene1); sat_add_literal(sat, -gene2); sat_add_literal(sat, 0); sat_add_literal(sat, -gene1); sat_add_literal(sat, gene2); sat_add_literal(sat, 0); } } } /** * Exclude an identified attractor from the SAT search by adding its complement to the formula. * is a pointer to the SAT solver. * is the employed Boolean network. * is a structure holding the attractor to be excluded. */ static inline void excludeAttractor_SAT(Solver * sat, BooleanNetwork * network, pAttractor attractor) { unsigned int l, i, j; for (l = 0; l < attractor->length; ++l) // iterate over attractor states { // add the complement of the current state as a clause // (for temporal networks, this must also include the state history) for (i = 0; i < network->numGenes; ++i) // iterate over genes { unsigned int historySize = 1; if (network->type == SYMBOLIC_BOOLEAN_NETWORK) // determine history size of the current gene historySize = ((SymbolicBooleanNetwork *) network)->stateSizes[i]; for (j = 0; j < historySize; ++j) { // decode value of the gene bool val = GET_BIT_ARRAY( attractor->involvedStates[((attractor->length + l - j) % attractor->length) * attractor->numElementsPerEntry], i); // add its complement to the clause (at the last state of the chain) if (val) sat_add_literal(sat, -(j * network->numGenes + i + 1)); else sat_add_literal(sat, j * network->numGenes + i + 1); } } // finish clause for the state sat_add_literal(sat, 0); } } /** * If a temporal network contains time-dependent predicates, this function adds a sequence of states * traversing the instable phase of the network to the beginning of the chain in . This is required * to ensure that only reachable start states are used for the attractor search. * is index of the current beginning of the chain. */ static inline void addBurnInPhase(SymbolicBooleanNetwork * network, Solver * sat, int startStateIndex) { if (network->attractorSearchStartTime > 0) // only do this if there is a time-dependent predicate { unsigned int j; for (j = 1; j <= network->attractorSearchStartTime; ++j) // iterate over the number of steps required for the burn-in and add states // utilizing the formulae that describe the behaviour at the corresponding time step addState_SAT((BooleanNetwork *) network, sat, startStateIndex + j, j); } } /** * Determine whether the SAT solver found an attractor. If yes, the attractor is * encoded in a Attractor structure and returned, and its states are excluded from future * SAT searches. * is the employed Boolean network. * is the length of the attractor if already known, or -1 if the length * should be determined by the function. * is the total length of the state chain (which may be more than the attractor size). * Returns a pointer to an Attractor structure holding the attractor, or NULL if no attractor * was found in the state chain. */ static inline pAttractor getNextAttractor_SAT(Solver * sat, BooleanNetwork * network, int attractorLength, unsigned int maxLength) { int i, j; if (attractorLength <= 0) // determine length if not already known { bool identical = true; for (attractorLength = 1; attractorLength <= maxLength; ++attractorLength) // traverse the states from the next-to-first to the last to find a duplicate of the // first state (chain is reversed => first state is a potential attractor state) { identical = true; for (i = 0; i < network->numGenes; ++i) // compare the values of each gene in the current state and the first state { unsigned int historySize = 1; if (network->type == SYMBOLIC_BOOLEAN_NETWORK) // determine history size of current gene historySize = ((SymbolicBooleanNetwork *) network)->stateSizes[i]; for (j = 0; j < historySize; ++j) // in temporal networks, do not only compare the current state, // but also its history to make sure this is really an attractor { if (sat_deref(sat, (attractorLength + j) * network->numGenes + i + 1) != sat_deref(sat, j * network->numGenes + i + 1)) { identical = false; break; } } if (!identical) break; } if (identical) break; } if (!identical) // none of the states was identical to the last one => no attractor in the chain return NULL; } // An attractor was found => build Attractor structure pAttractor res = CALLOC(1, sizeof(Attractor)); if ((network->numGenes % BITS_PER_BLOCK_32) == 0) res->numElementsPerEntry = network->numGenes / BITS_PER_BLOCK_32; else res->numElementsPerEntry = network->numGenes / BITS_PER_BLOCK_32 + 1; res->length = attractorLength; res->involvedStates = (unsigned int *) CALLOC( res->length * res->numElementsPerEntry, sizeof(unsigned int)); for (attractorLength = 0; attractorLength < res->length; ++attractorLength) // iterate over attractor states { for (i = 0; i < network->numGenes; ++i) // iterate over genes { // determine gene value and set the corresponding entry in the state array if (sat_deref(sat, (res->length - attractorLength - 1) * network->numGenes + i + 1) == 1) SET_BIT_ARRAY( res->involvedStates[attractorLength * res->numElementsPerEntry], i); } } // exclude the found attractor from future SAT searches excludeAttractor_SAT(sat, network, res); return res; } /** * Determine all attractors having at most states in the network , * and return them in an AttractorInfo structure. */ pAttractorInfo getAttractors_SAT_maxLength(BooleanNetwork * network, unsigned int maxLength) { if (network->type == SYMBOLIC_BOOLEAN_NETWORK && ((SymbolicBooleanNetwork *) network)->attractorSearchStartTime > 0) { Rf_error( "SAT-based attractor search in networks with time-dependent predicates is only possible without attractor length restrictions!"); } pAttractorInfo res = allocAttractorInfo(0, network->numGenes); // add dummy terminator node res->attractorList = (pAttractor) CALLOC(1, sizeof(Attractor)); unsigned int i, j, length; unsigned int maxDelay = 1; if (network->type == SYMBOLIC_BOOLEAN_NETWORK) // determine maximum time delay in the network { for (j = 0; j < network->numGenes; ++j) { unsigned int stateSize = ((SymbolicBooleanNetwork *) network)->stateSizes[j]; if (stateSize > maxDelay) { maxDelay = stateSize; } } } for (length = 1; length <= maxLength; ++length) // iterate over possible attractor lengths { // initialize SAT solver Solver * sat = initSATSolver(); pAttractor attractor = res->attractorList; while (attractor->next != NULL) // exclude all previously identified attractors from the search { excludeAttractor_SAT(sat, network, attractor); attractor = attractor->next; } // create a chain of +1 states for (i = 0; i <= length + maxDelay; ++i) { addState_SAT(network, sat, i, 0); } #ifdef USE_LINGELING for (i = 0; i < network->numGenes; ++i) // freeze the first state(s) of the chain: // the variables of the first state are used // to exclude identified attractors from future searches // (multiple states for temporal Boolean networks with delays >1) { unsigned int stateSize = 1; if (network->type == SYMBOLIC_BOOLEAN_NETWORK) // determine history size for current gene stateSize = ((SymbolicBooleanNetwork *) network)->stateSizes[i]; for (j = 0; j < stateSize; ++j) { lglfreeze(sat, j * network->numGenes + i + 1); } } #endif // specify that the first and the last state of the chain // should be identical addEqualityCondition_SAT(sat, network, 0, length); //lglprint(lgl, stdout); // call the SAT solver int satisfiable = sat_solve(sat); while (satisfiable == SATISFIABLE) // as long as the formula is satisfiable, there are more attractors // of the specified length { // encode the attractor in an Attractor structure, // prepend it to the result list, and exclude it from the search pAttractor attr = getNextAttractor_SAT(sat, network, length, 0); ++res->numAttractors; attr->next = res->attractorList; res->attractorList = attr; // try to find further solutions satisfiable = sat_solve(sat); } // free SAT solver sat_free(sat); } return res; } /** * Identify all attractors using a SAT-based algorithm adapted from Dubrova et al., 2011. * Here, is the network whose attractors are identified. * If > 0, the first step of the algorithm is to identify and exclude * all attractors of length 1 to . * specifies the way the chain is extended: * EXTENSION_EXPONENTIAL corresponds to the exponential scheme by Dubrova et al. * EXTENSION_LINEAR corresponds to linearly increasing the length * EXTENSION_LINEAR_ADAPT corresponds to a linear increase whose step width is * increased over the iterations * EXTENSION_MIXED corresponds to a mixture of linear and exponential increase, * where the chain length is doubled after 5 linear increases. * Returns an AttractorInfo structure comprising all attractors of the network. */ pAttractorInfo getAttractors_SAT_exhaustive(BooleanNetwork * network, unsigned int initialCycleSearchLength, unsigned int extensionMode) { // initialize SAT solver Solver * sat = initSATSolver(); int i, j, maxDelay = 1; if (network->type == SYMBOLIC_BOOLEAN_NETWORK) // determine maximum time delay in the network { for (j = 0; j < network->numGenes; ++j) { unsigned int stateSize = ((SymbolicBooleanNetwork *) network)->stateSizes[j]; if (stateSize > maxDelay) { maxDelay = stateSize; } } } // check if the network comprises time-dependent predicates -- // for such networks, the chain cannot be extended and must be rebuilt // each time a longer chain is needed bool isTimeDependent = (network->type == SYMBOLIC_BOOLEAN_NETWORK && ((SymbolicBooleanNetwork *) network)->attractorSearchStartTime > 0); if (isTimeDependent) // for time-dependent predicates, length-based attractor search is not supported { initialCycleSearchLength = 0; } pAttractorInfo res; if (initialCycleSearchLength != 0) // first determine attractors by explicitly searching for cycles // if a cycle length is specified { //unsigned int maxAttractorLength = 2000/network->numGenes; //if (maxAttractorLength == 0) // maxAttractorLength = 1; //else //if (maxAttractorLength > 10) // maxAttractorLength = 10; res = getAttractors_SAT_maxLength(network, initialCycleSearchLength); } else // initialize empty attractor list { res = allocAttractorInfo(0, network->numGenes); // add dummy terminator node res->attractorList = (pAttractor) CALLOC(1, sizeof(Attractor)); } // construct initial chain of maximum length 100 int numStates = network->numGenes > 100 ? 100 : network->numGenes; for (i = 0; i < numStates; ++i) { addState_SAT(network, sat, i, 0); } //picosat_print(sat, stdout); if (initialCycleSearchLength != 0) // if attractors have been identified by the cycle search, // exclude them from the search { pAttractor attractor = res->attractorList; while (attractor->next != NULL) { excludeAttractor_SAT(sat, network, attractor); attractor = attractor->next; } } #ifdef USE_LINGELING for (i = 0; i < network->numGenes; ++i) // freeze the first and the last state(s) of the chain: // the variables of the first state are used // to exclude identified attractors from future searches, // whereas the variables of the last state(s) are required for // an extension of the chain // (multiple states for temporal Boolean networks with delays >1) { unsigned int stateSize = 1; if (network->type == SYMBOLIC_BOOLEAN_NETWORK) // determine history size of current gene stateSize = ((SymbolicBooleanNetwork *) network)->stateSizes[i]; for (j = 0; j < stateSize; ++j) { lglfreeze(sat, j * network->numGenes + i + 1); if (!isTimeDependent) lglfreeze(sat, (numStates + j) * network->numGenes + i + 1); } } #endif if (isTimeDependent) // add additional states in case of time-dependent predicates addBurnInPhase((SymbolicBooleanNetwork *) network, sat, numStates - 1); //picosat_print(sat, stdout); int satisfiable = sat_solve(sat); unsigned int numIncrements = 0; while (satisfiable == SATISFIABLE) // as long as the formula is satisfiable, there may be more attractors { // check whether the identified chain comprises an attractor, // and decode it if yes pAttractor attr = getNextAttractor_SAT(sat, network, -1, numStates - maxDelay + 1); if (attr == NULL) // no attractor found => chain is too short and must be prolonged { if (isTimeDependent) // if additional burn-in states were added, the chain must be rebuilt "from scratch", // i.e. the previous result cannot be recycled. { // free old solver sat_free(sat); // create new solver sat = initSATSolver(); // exclude already identified attractors pAttractor attractor = res->attractorList; while (attractor->next != NULL) { excludeAttractor_SAT(sat, network, attractor); attractor = attractor->next; } // start chain at time point 0 i = 0; } else { #ifdef USE_LINGELING if (!isTimeDependent) { // melt the variables of the last state(s), as // the chain will be extended for (i = 0; i < network->numGenes; ++i) { unsigned int stateSize = 1; if (network->type == SYMBOLIC_BOOLEAN_NETWORK) stateSize = ((SymbolicBooleanNetwork *) network)->stateSizes[i]; for (j = 0; j < stateSize; ++j) lglmelt(sat, (numStates + j) * network->numGenes + i + 1); } // extend chain at previous time point i = numStates; } #endif } switch (extensionMode) // determine the new chain length depending on the extension mode { case EXTENSION_EXPONENTIAL: // double the chain length numStates *= 2; break; case EXTENSION_LINEAR: // add the initial chain length numStates += network->numGenes > 100 ? 100 : network->numGenes; break; case EXTENSION_LINEAR_ADAPT: // add a multiple of the initial chain length depending // on the number of increments already performed numStates += (numIncrements++ / 5 + 1) * (network->numGenes > 100 ? 100 : network->numGenes); break; case EXTENSION_MIXED: // perform an exponential increase every five increments and a // linear increase otherwise if (++numIncrements % 5 == 0) numStates *= 2; else numStates += network->numGenes > 100 ? 100 : network->numGenes; break; } // add new states to the chain for (; i < numStates; ++i) { addState_SAT(network, sat, i, 0); } if (!isTimeDependent) { #ifdef USE_LINGELING // freeze the new end of the chain // (possibly multiple states in temporal Boolean networks) for (i = 0; i < network->numGenes; ++i) { unsigned int stateSize = 1; if (network->type == SYMBOLIC_BOOLEAN_NETWORK) // determine history size of current gene stateSize = ((SymbolicBooleanNetwork *) network)->stateSizes[i]; for (j = 0; j < stateSize; ++j) lglfreeze(sat, (numStates + j) * network->numGenes + i + 1); } #endif } else // network has time-dependent predicates { // add additional states in case of time-dependent predicates addBurnInPhase((SymbolicBooleanNetwork *) network, sat, numStates - 1); #ifdef USE_LINGELING // as a new chain has been constructed from scratch, we must // again freeze the start state(s) for (i = 0; i < network->numGenes; ++i) { unsigned int stateSize = 1; if (network->type == SYMBOLIC_BOOLEAN_NETWORK) stateSize = ((SymbolicBooleanNetwork *) network)->stateSizes[i]; for (j = 0; j < stateSize; ++j) { lglfreeze(sat, j * network->numGenes + i + 1); } } #endif } } else // an attractor has been found => add it { ++res->numAttractors; attr->next = res->attractorList; res->attractorList = attr; } // look for more potential solutions satisfiable = sat_solve(sat); } // free the SAT solver sat_free(sat); return res; } BoolNet/src/statespace_search.c0000644000176200001440000012004313277247010016233 0ustar liggesusers/** * C code to identify attractors in Boolean networks * * This is part of the BoolNet R package. * * Copyright 2009/2010 by Christoph Müssel and Zhou Dao * * Contact christoph.muessel@uni-ulm.de * */ #include #include #include #include #include #include "random.h" #include "common.h" #include "boolean_network.h" #include "statespace_search.h" #include #define NODE_ARRAY_SIZE 1024 /** * A structure saving search trees for states. * State trees are employed if a non-exhaustive search is * conducted to provide an efficient method to lookup * states that have already been visited. */ typedef struct STN { // The left child node (containing "smaller" states) struct STN * leftChild; // The right child node (containing "larger" states) struct STN * rightChild; union { // In case of synchronous networks: struct { // The node holding the next state after a transition has // been applied to the current state struct STN * successor; // The basin of attraction to which the state belongs unsigned int attractorAssignment; // The number of transitions required to enter the attractor unsigned int stepsToAttractor; } sync; // In case of asynchronous networks: struct { // An array of all successor nodes struct STN ** successors; // The number of successor states unsigned int numSuccessors; // Dummy variable unsigned int unused; } async; } type; // The state itself - a set of binary-encoded integers with // elements unsigned int * data; } StateTreeNode; typedef struct { StateTreeNode * root; unsigned int arraySize; unsigned int nodeCount; unsigned int numElements; unsigned int successorPos; ArrayListElement * nodeArrays; ArrayListElement * dataArrays; ArrayListElement * successorArrays; } StateTree; void stateTransition(unsigned int * currentState, unsigned int * nextState, TruthTableBooleanNetwork * net); /** * Insert a new transition from to into
. * is the number of array elements occupied by a state. */ TransitionTableEntry * insertNewTransition(TransitionTableEntry ** table, unsigned int * initialState, unsigned int * nextState, unsigned int numElements) { TransitionTableEntry * entry = (TransitionTableEntry *)CALLOC(1,sizeof(TransitionTableEntry)); entry->initialState = CALLOC(numElements,sizeof(unsigned int)); entry->nextState = CALLOC(numElements,sizeof(unsigned int)); memcpy(entry->initialState,initialState,numElements*sizeof(unsigned int)); memcpy(entry->nextState,nextState,numElements*sizeof(unsigned int)); entry->next = *table; *table = entry; return entry; } /** * Free a list-type transition table as used in complex attractors */ void freeTransitionTableEntry(TransitionTableEntry * t) { do { TransitionTableEntry * next = t->next; FREE(t->initialState); FREE(t->nextState); FREE(t); t = next; } while (t != NULL); } static inline StateTree * allocStateTree(unsigned int numElements, unsigned int arraySize) { StateTree * tree = CALLOC(1, sizeof(StateTree)); tree->root = NULL; tree->arraySize = arraySize; tree->successorPos = 0; tree->nodeCount = 0; tree->nodeArrays = NULL; tree->dataArrays = NULL; tree->successorArrays = NULL; tree->numElements = numElements; return(tree); } static inline void newNodeArray(StateTree * tree) { allocNewArray(&tree->nodeArrays, tree->arraySize, sizeof(StateTreeNode)); allocNewArray(&tree->dataArrays, tree->arraySize * tree->numElements, sizeof(unsigned int)); } static inline void newSuccessorArray(StateTree * tree) { allocNewArray(&tree->successorArrays, tree->arraySize, sizeof(StateTreeNode *)); tree->successorPos = 0; } static inline void freeStateTree(StateTree * tree) { freeArrayList(tree->nodeArrays); freeArrayList(tree->dataArrays); freeArrayList(tree->successorArrays); FREE(tree); } /** * Allocate a new node of a state tree. * and are pointers to the * left and right subtrees. * is the state reached after a state transition. * is an array of binary-encoded integers of length * describing the state. * is the basin of attraction the state belongs to, * and is the number of transitions required to enter * the attractor. * * Returns a state tree node with the supplied values. */ static inline StateTreeNode * allocTreeNode(StateTree * tree, StateTreeNode * leftChild, StateTreeNode * rightChild, StateTreeNode * successor, unsigned int * data, unsigned int numElements, unsigned int attractorAssignment, unsigned int stepsToAttractor) { if (tree->nodeCount % tree->arraySize == 0) newNodeArray(tree); StateTreeNode * res = &(((StateTreeNode *)tree->nodeArrays->array)[tree->nodeCount % tree->arraySize]); res->leftChild = leftChild; res->rightChild = rightChild; res->type.sync.successor = successor; res->data = &(((unsigned int *)tree->dataArrays->array) [(tree->nodeCount % tree->arraySize) * tree->numElements]); memcpy(res->data,data,numElements*sizeof(unsigned int)); res->type.sync.attractorAssignment = attractorAssignment; res->type.sync.stepsToAttractor = stepsToAttractor; ++tree->nodeCount; return res; } static inline StateTreeNode ** reserveSuccessorArray(StateTree * tree, unsigned int numSuccessors) { if (tree->successorArrays == NULL || tree->successorPos + numSuccessors >= tree->arraySize) newSuccessorArray(tree); StateTreeNode ** res = &(((StateTreeNode **)tree->successorArrays->array)[tree->successorPos]); tree->successorPos += numSuccessors; return res; } /** * Recursive helper function for findNode() */ StateTreeNode * findNodeRec(StateTree * tree, StateTreeNode * parent, unsigned int * data, unsigned int numElements, bool * found) { unsigned int direction = 0; int i; for (i = numElements - 1; i >= 0; --i) { if (data[i] > parent->data[i]) { direction = 1; break; } if (data[i] < parent->data[i]) { direction = 2; break; } } switch(direction) { case 0: *found = true; return parent; case 1: if (parent->rightChild == 0) { parent->rightChild = allocTreeNode(tree, 0,0,0,data,numElements,0,0); *found = false; return parent->rightChild; } else return findNodeRec(tree, parent->rightChild,data,numElements,found); case 2: if (parent->leftChild == 0) { parent->leftChild = allocTreeNode(tree, 0,0,0,data,numElements,0,0); *found = false; return parent->leftChild; } else return findNodeRec(tree, parent->leftChild,data,numElements,found); } // should never be reached return 0; } /** * Recursively find the node corresponding to state in the state tree , * or insert the node if it does not exist. * is the size of the state vector . * The return value of indicates whether the element previously existed in the tree * * Returns the (possibly newly created) node belonging to . If the tree is empty, * is set to this node. */ StateTreeNode * findNode(StateTree * tree, unsigned int * data, unsigned int numElements, bool * found) { if (tree->root == 0) { tree->root = allocTreeNode(tree, 0,0,0,data,numElements,0,0); *found = false; return tree->root; } return findNodeRec(tree, tree->root,data,numElements, found); } /** * Returns the successor of the supplied state node . * If the state transition has not yet been calculated, * a new node is inserted into the tree . * is the number of array elements required to store one state. * describes the network for which a state transition is performed. * is a counter to be increased when a new state is identified */ StateTreeNode * findSuccessor(StateTree * tree, StateTreeNode * current, unsigned int numElementsPerEntry, TruthTableBooleanNetwork * net, unsigned int * basinCounter) { bool found; if (current->type.sync.successor == 0) // the state does not exist => calculate state transition and insert it { unsigned int nextState[numElementsPerEntry]; stateTransition(current->data,nextState,net); current->type.sync.successor = findNode(tree,nextState,numElementsPerEntry, &found); ++ *basinCounter; } return current->type.sync.successor; } /** * Traverse the tree supplied by in-order, and write the values * of the tree nodes to the corresponding arrays , *
, , and . * is the number of array elements allocated by one state. * is the current value of the node counter used for the array indices * and increased during recursion. This should be initially set to 0. */ void inOrderSerializeTree(StateTreeNode * root, unsigned int * initialStates, unsigned int * table, unsigned int * attractorAssignment, unsigned int * stepsToAttractor, unsigned int numElements, unsigned int * nodeNo) { R_CheckUserInterrupt(); if (root->leftChild != 0) // recursive descent of left subtree inOrderSerializeTree(root->leftChild,initialStates,table,attractorAssignment, stepsToAttractor,numElements,nodeNo); // write the state itself memcpy(&initialStates[numElements* (*nodeNo)],root->data,numElements*sizeof(unsigned int)); memcpy(&table[numElements* (*nodeNo)],root->type.sync.successor->data,numElements*sizeof(unsigned int)); attractorAssignment[*nodeNo] = root->type.sync.attractorAssignment; stepsToAttractor[*nodeNo] = root->type.sync.stepsToAttractor; *nodeNo = *nodeNo + 1; if (root->rightChild != 0) // recursive descent of right subtree inOrderSerializeTree(root->rightChild,initialStates,table,attractorAssignment, stepsToAttractor,numElements,nodeNo); } /** * Free a state tree supplied by recursively. * If , is assumed to be an array and freed */ /* void freeTreeNode(StateTreeNode * node, bool freeSuccessorArray) { if (node->leftChild != 0) freeTreeNode(node->leftChild, freeSuccessorArray); if (node->rightChild != 0) freeTreeNode(node->rightChild, freeSuccessorArray); if (freeSuccessorArray) FREE(node->type.async.successors); FREE(node->data); FREE(node); --nodeCount; } */ /** * Make a transition from to the next state. * States are encoded as arrays of ints and can thus contain an arbitrary number of genes. * is a binary-coded integer with used bits. * is an array of values specifying whether gene is fixed (0 or 1) or not (-1). * provides the input genes for all transition functions and can be split up * for a single function according to . * provides the truth tables for all transition functions and can be split up * for a single function according to . * * The return value is the next state, encoded in a single integer. */ void stateTransition(unsigned int * currentState, unsigned int * nextState, TruthTableBooleanNetwork * net) { unsigned int i = 0, k = 0, idx = 0; unsigned int elementsPerEntry; if (net->numGenes % BITS_PER_BLOCK_32 == 0) { elementsPerEntry = net->numGenes / BITS_PER_BLOCK_32; } else { elementsPerEntry = net->numGenes / BITS_PER_BLOCK_32 + 1; } for (i = 0; i < elementsPerEntry; ++i) nextState[i] = 0; for (i = 1; i <= net->numGenes; ++i) { if (net->fixedGenes[i-1] == -1) // the gene is not fixed { unsigned long long inputdec = 0; for (k = net->inputGenePositions[i-1]; k < net->inputGenePositions[i]; k++) { if (net->inputGenes[k]) // if the input of the function is not 0 (constant gene), take input bit { unsigned int gene = net->inputGenes[k] - 1; unsigned int bit; if (net->fixedGenes[gene] == -1) bit = (GET_BIT(currentState[net->nonFixedGeneBits[gene] / BITS_PER_BLOCK_32], net->nonFixedGeneBits[gene] % BITS_PER_BLOCK_32)); else // fixed genes are not encoded in the states // => take them from fixedGenes vector bit = net->fixedGenes[gene]; inputdec |= bit << (net->inputGenePositions[i] - k - 1); } } // determine transition function int transition = net->transitionFunctions[net->transitionFunctionPositions[i-1] + inputdec]; if(transition != -1) // apply transition function nextState[idx / BITS_PER_BLOCK_32] |= ((unsigned int)transition << (idx % BITS_PER_BLOCK_32)); else // this is a dummy function for a constant gene // => value does not change nextState[idx / BITS_PER_BLOCK_32] |= (GET_BIT(currentState[idx / BITS_PER_BLOCK_32], idx % BITS_PER_BLOCK_32) << (idx % BITS_PER_BLOCK_32)); //(GET_BIT(currentState[(i-1) / BITS_PER_BLOCK_32], // (i-1) % BITS_PER_BLOCK_32) << (idx % BITS_PER_BLOCK_32)); ++idx; } } } /** * Make a transition from to the next state for a bit vector encoded * as a single integer (max. 64 genes). * is a binary-coded integer with used bits. * is an array of values specifying whether gene is fixed (0 or 1) or not (-1). * provides the input genes for all transition functions and can be split up * for a single function according to . * provides the truth tables for all transition functions and can be split up * for a single function according to . * * The return value is the next state, encoded in a single integer. */ unsigned long long stateTransition_singleInt(unsigned long long currentState, TruthTableBooleanNetwork * net) { unsigned int i = 0, k = 0, idx = 0; unsigned long long nextState = 0; for (i = 1; i <= net->numGenes; ++i) { if (net->fixedGenes[i-1] == -1) // the gene is not fixed { unsigned long long inputdec = 0; for (k = net->inputGenePositions[i-1]; k < net->inputGenePositions[i]; k++) { if (net->inputGenes[k]) // if the input of the function is not 0 (constant gene), take input bit { unsigned int gene = net->inputGenes[k] - 1; unsigned int bit; if (net->fixedGenes[gene] == -1) bit = (GET_BIT(currentState, net->nonFixedGeneBits[gene])); else // fixed genes are not encoded in the states // => take them from fixedGenes vector bit = net->fixedGenes[gene]; inputdec |= bit << (net->inputGenePositions[i] - k - 1); } } // determine transition function int transition = net->transitionFunctions[net->transitionFunctionPositions[i-1] + inputdec]; if(transition != -1) // apply transition function nextState |= (transition << idx); else // this is a dummy function for a constant gene // => value does not change nextState |= (GET_BIT(currentState, idx) << idx); ++idx; } } return nextState; } /** * Retrieves the result column of the state transition table. * specifies the total number of genes. * is an array of values specifying whether gene is fixed (0 or 1) or not (-1). * provides the input genes for all transition functions and can be split up * for a single function according to . * provides the truth tables for all transition functions and can be split up * for a single function according to . */ unsigned long long * getTransitionTable(TruthTableBooleanNetwork * net) { unsigned long long i = 0; // determine number of fixed genes int numFixed = 0; for( i = 0; i < net->numGenes; i++) if(net->fixedGenes[i] != -1) ++numFixed; int numNonFixed = net->numGenes - numFixed; // allocate truth table with 2^(non-fixed genes) elements unsigned long long numberOfElements = (unsigned long long)1 << numNonFixed;//pow(2,numNonFixed); unsigned long long * table = CALLOC(numberOfElements,sizeof(unsigned long long)); if (table == 0) { Rf_error("Too few memory available!"); } unsigned long long initialState = 0; // calculate state transitions for(initialState = 0; initialState < numberOfElements; ++initialState) { R_CheckUserInterrupt(); //state is simply the binary encoding of the counter //calculate transition table[initialState] = stateTransition_singleInt(initialState, net); } return table; } /** * Retrieves attractors from a given transition table
with entries. * * Returns a list of attractors - the last element of this list is empty! */ pAttractorInfo getAttractors(unsigned long long * table, unsigned long long numberOfStates, unsigned int numberOfGenes) { unsigned long long i; unsigned int current_attractor = 0, elementsPerEntry; if (numberOfGenes <= 32) { elementsPerEntry = 1; } else { elementsPerEntry = 2; } pAttractorInfo result = allocAttractorInfo(numberOfStates,numberOfGenes); for (i = 0; i < numberOfStates; ++i) { //memcpy(&result->table[i],&table[i],sizeof(unsigned int) * elementsPerEntry); result->table[i*elementsPerEntry] = table[i] & 0xFFFFFFFF; if (elementsPerEntry == 2) result->table[i*elementsPerEntry + 1] = (table[i] & 0xFFFFFFFF00000000) >> 32; } pAttractor attractorHead, attractorList,tmpList; attractorHead = attractorList = (pAttractor) CALLOC(1,sizeof(Attractor)); attractorList->next = NULL; for(i = 0; i < numberOfStates; i++) { R_CheckUserInterrupt(); if(!result->attractorAssignment[i]) // the current state has not yet been visited { // first attractor has number 1 current_attractor++; unsigned long long begin = i; unsigned int steps = 0; while(!result->attractorAssignment[begin]) // iterate while no attractor has been assigned { ++steps; // first simply count steps until attractor is reached // - to get the distance to the attractor, this number is // later subtracted from the maximum distance result->stepsToAttractor[begin] = steps; result->attractorAssignment[begin] = current_attractor; // perform a state transition begin = table[begin]; } if(current_attractor == result->attractorAssignment[begin]) //calculate length and basin size of new attractor { attractorList->basinSize = steps; // fix the number of steps to the attractor by calculating // the maximum distance and subtracting the current value from it int maxstep = result->stepsToAttractor[begin]; int rec = 0; unsigned long long tmp = i; while(tmp != begin) { rec++; result->stepsToAttractor[tmp] = maxstep - result->stepsToAttractor[tmp]; tmp = table[tmp]; } attractorList->length = steps - rec; attractorList->involvedStates = (unsigned int *) CALLOC(attractorList->length * elementsPerEntry,sizeof(unsigned int)); attractorList->numElementsPerEntry = elementsPerEntry; int a=0; do { result->stepsToAttractor[tmp] = 0; //attractorList->involvedStates[a++] = tmp; //memcpy(&attractorList->involvedStates[a],&tmp,elementsPerEntry*sizeof(unsigned int)); // get low-order and high-order longs in a platform-independent manner attractorList->involvedStates[a] = tmp & 0xFFFFFFFF; if (elementsPerEntry == 2) attractorList->involvedStates[a+1] = (tmp & 0xFFFFFFFF00000000) >> 32; tmp = table[tmp]; a += elementsPerEntry; } while(tmp != begin); /* set steps of attractors to 0; add attractor stub information */ //generate a next attractor space attractorList->next = (pAttractor)CALLOC(1,sizeof(Attractor)); attractorList = attractorList->next; attractorList->next = NULL; } else //update existing attractor { // reset attractor number current_attractor--; // assign states to attractor basin, and // correct the numbers of steps to the attractor unsigned long long tmp = i; int maxstp = result->stepsToAttractor[begin] + steps; while(tmp != begin) { result->attractorAssignment[tmp] = result->attractorAssignment[begin]; result->stepsToAttractor[tmp] = maxstp - result->stepsToAttractor[tmp] + 1; tmp = table[tmp]; } // update basin size in attractor record tmpList = attractorHead; for (tmp = 1; tmp < result->attractorAssignment[begin]; tmp++) tmpList = tmpList->next; tmpList->basinSize = tmpList->basinSize + steps; } } } result->attractorList = attractorHead; result->numAttractors = current_attractor - 1; FREE(table); return result; } /** * Retrieves attractors only for a given set of input states supplied in . * Here, numGenes / 32)> consecutive array entries describe one state, thus * the array size is numGenes / 32) * numberOfStates> * describes the network structure. */ pAttractorInfo getAttractorsForStates(unsigned int * selectedStates, unsigned int numberOfStates, TruthTableBooleanNetwork * net) { unsigned long long i; unsigned int current_attractor = 0, elementsPerEntry; bool found; // calculate the number of array elements required for one state // (depending on the number of genes) if (net->numGenes % (sizeof(unsigned int) * 8) == 0) { elementsPerEntry = net->numGenes / BITS_PER_BLOCK_32; } else { elementsPerEntry = net->numGenes / BITS_PER_BLOCK_32 + 1; } // all states are stored in a tree for fast search StateTree * stateTree = allocStateTree(elementsPerEntry, NODE_ARRAY_SIZE); pAttractor attractorHead, attractorList,tmpList; attractorHead = attractorList = (pAttractor) CALLOC(1,sizeof(Attractor)); attractorList->next = NULL; for(i = 0; i < numberOfStates; i++) { // check whether the current state is already in the state tree, otherwise insert it StateTreeNode * currentState = findNode(stateTree,&selectedStates[i*elementsPerEntry],elementsPerEntry,&found); if(!currentState->type.sync.attractorAssignment) // the current state has not yet been visited { // first attractor has number 1 current_attractor++; unsigned int steps = 0; unsigned int basinSize = 0; while(!currentState->type.sync.attractorAssignment) // iterate while no attractor has been assigned { R_CheckUserInterrupt(); ++steps; // first simply count steps until attractor is reached // - to get the distance to the attractor, this number is // later subtracted from the maximum distance currentState->type.sync.stepsToAttractor = steps; currentState->type.sync.attractorAssignment = current_attractor; // perform a state transition currentState = findSuccessor(stateTree,currentState,elementsPerEntry,net,&basinSize); } if(current_attractor == currentState->type.sync.attractorAssignment) //calculate length and basin size of new attractor { attractorList->basinSize = steps; // fix the number of steps to the attractor by calculating // the maximum distance and subtracting the current value from it int maxstep = currentState->type.sync.stepsToAttractor; int rec = 0; StateTreeNode * tmp = findNode(stateTree,&selectedStates[i*elementsPerEntry],elementsPerEntry,&found); while(memcmp(tmp->data,currentState->data,elementsPerEntry*sizeof(unsigned int))) { R_CheckUserInterrupt(); rec++; tmp->type.sync.stepsToAttractor = maxstep - tmp->type.sync.stepsToAttractor; // perform a state transition tmp = findSuccessor(stateTree,tmp,elementsPerEntry,net,&basinSize); } attractorList->length = steps - rec; attractorList->involvedStates = (unsigned int *) CALLOC(attractorList->length * elementsPerEntry,sizeof(unsigned int)); attractorList->numElementsPerEntry = elementsPerEntry; int a=0; do { R_CheckUserInterrupt(); tmp->type.sync.stepsToAttractor = 0; memcpy(&attractorList->involvedStates[a],tmp->data,elementsPerEntry*sizeof(unsigned int)); tmp = findSuccessor(stateTree,tmp,elementsPerEntry,net,&basinSize); a += elementsPerEntry; } while(memcmp(tmp->data,currentState->data,elementsPerEntry*sizeof(unsigned int))); //generate a next attractor space attractorList->next = (pAttractor)CALLOC(1,sizeof(Attractor)); attractorList = attractorList->next; attractorList->next = NULL; } else //update existing attractor { // reset attractor number current_attractor--; // assign states to attractor basin, and // correct the numbers of steps to the attractor StateTreeNode * tmp = findNode(stateTree,&selectedStates[i*elementsPerEntry],elementsPerEntry,&found); int maxstp = currentState->type.sync.stepsToAttractor + steps; while(memcmp(tmp->data,currentState->data,elementsPerEntry*sizeof(unsigned int))) { R_CheckUserInterrupt(); tmp->type.sync.attractorAssignment = currentState->type.sync.attractorAssignment; tmp->type.sync.stepsToAttractor = maxstp - tmp->type.sync.stepsToAttractor + 1; //perform a state transition tmp = findSuccessor(stateTree,tmp,elementsPerEntry,net,&basinSize); } // update basin size in attractor record tmpList = attractorHead; unsigned int i; for (i = 1; i < currentState->type.sync.attractorAssignment; ++i) tmpList = tmpList->next; tmpList->basinSize = tmpList->basinSize + basinSize; } } } pAttractorInfo result = allocAttractorInfo(stateTree->nodeCount,net->numGenes); result->attractorList = attractorHead; result->initialStates = CALLOC(result->tableSize * elementsPerEntry,sizeof(unsigned int)); result->numAttractors = current_attractor - 1; unsigned int nodeNo = 0; // build a series of arrays by in-order traversing the tree inOrderSerializeTree(stateTree->root, result->initialStates, result->table, result->attractorAssignment, result->stepsToAttractor, elementsPerEntry, &nodeNo); freeStateTree(stateTree); return result; } /** * Identification of attractors in asynchronous networks */ typedef struct SSE { unsigned int * state; struct SSE * next; } StateStackElement; /** * Push a new element on top of the stack . * is the state to push onto the stack and has elements. * Returns the new stack element. */ static inline StateStackElement * pushStateStackElement(StateStackElement ** stack, unsigned int * state, unsigned int numElements) { StateStackElement * el = CALLOC(1,sizeof(StateStackElement)); el->state = CALLOC(numElements,sizeof(unsigned int)); memcpy(el->state,state,sizeof(unsigned int) * numElements); el->next = *stack; *stack = el; return el; } /** * Remove the top-level element from . */ static inline void deleteStateStackElement(StateStackElement ** stack) { StateStackElement * el = *stack; *stack = (*stack)->next; FREE(el->state); FREE(el); } /** * Applies the transition function belonging to gene to state . * holds the network information. * The result is returned in . */ static inline void applySingleFunction(unsigned int * currentState, unsigned int geneIdx, TruthTableBooleanNetwork * net) { unsigned int k = 0; if (net->fixedGenes[geneIdx] == -1) // the gene is not fixed { unsigned long long inputdec = 0; for (k = net->inputGenePositions[geneIdx]; k < net->inputGenePositions[geneIdx+1]; k++) { if (net->inputGenes[k]) // if the input of the function is not 0 (constant gene), take input bit { unsigned int gene = net->inputGenes[k] - 1; unsigned int bit; if (net->fixedGenes[gene] == -1) bit = (GET_BIT(currentState[gene / BITS_PER_BLOCK_32], gene % BITS_PER_BLOCK_32)); else // fixed genes are not encoded in the states // => take them from fixedGenes vector bit = net->fixedGenes[gene]; inputdec |= bit << (net->inputGenePositions[geneIdx+1] - k - 1); } } // determine transition function int transition = net->transitionFunctions[net->transitionFunctionPositions[geneIdx] + inputdec]; currentState[geneIdx / BITS_PER_BLOCK_32] = CLEAR_BIT(currentState[geneIdx / BITS_PER_BLOCK_32], geneIdx % BITS_PER_BLOCK_32); if(transition != -1) // apply transition function currentState[geneIdx / BITS_PER_BLOCK_32] |= (transition << (geneIdx % BITS_PER_BLOCK_32)); else // this is a dummy function for a constant gene // => value does not change currentState[geneIdx / BITS_PER_BLOCK_32] |= (GET_BIT(currentState[geneIdx / BITS_PER_BLOCK_32], geneIdx % BITS_PER_BLOCK_32) << (geneIdx % BITS_PER_BLOCK_32)); } } /** * Calculate a random asynchronous state transition for . * If is not NULL, this is a vector specifying * the cumulative distribution function of the probabilities of genes * to be chosen for a transition. Otherwise, each gene has equal probability. */ static inline void asynchronousStateTransition(unsigned int * currentState, double * probabilities, TruthTableBooleanNetwork * net) { unsigned int i; if (probabilities == NULL) // uniform gene selection { unsigned int r; // ensure that no fixed gene is chosen do { r = intrand(net->numGenes); } while (net->fixedGenes[r] != -1); // make a transition with the chosen gene applySingleFunction(currentState,r,net); } else { double r = doublerand_1(); // find the last index in the cumulative distribution that // is less than for (i = 0; i < net->numGenes; ++i) { if (probabilities[i] < r && probabilities[i+1] >= r) break; } // make a transition with the chosen gene applySingleFunction(currentState,i,net); } } /** * Calculate the forward reachable set of . * is the number of array elements used to represent one state. * If is true, self loops are only considered if there are no other possible transitions. * holds the network information. * Returns the resulting state tree (set).. */ StateTree * buildAsynchronousStateSet(unsigned int * startState, unsigned int numElements, bool avoidSelfLoops, TruthTableBooleanNetwork * net) { StateTree * res = allocStateTree(numElements, NODE_ARRAY_SIZE); StateStackElement * stack = NULL; unsigned int i; bool found=false, newNodes=false; // push the start state onto the stack pushStateStackElement(&stack,startState,numElements); do // iterate while stack is not empty (depth-first search) { R_CheckUserInterrupt(); unsigned int origstate[numElements]; memcpy(origstate,stack->state,sizeof(unsigned int) * numElements); // remove the top-level stack element deleteStateStackElement(&stack); StateTreeNode * current = findNode(res,origstate,numElements,&found); StateTreeNode ** successors; unsigned int numSuccessors; if (avoidSelfLoops) // try to find successor states that do not lead to the initial state { unsigned int successorStates[net->numGenes*numElements]; for (i = 0; i < net->numGenes; ++i) // first, calculate all successors { memcpy(&successorStates[i*numElements],origstate,sizeof(unsigned int) * numElements); applySingleFunction(&successorStates[i*numElements],i,net); } unsigned int numNonSelfLoops = 0; bool noSelfLoop[net->numGenes]; for (i = 0; i < net->numGenes; ++i) // now, check which of the successor states are the same as the initial state { if (memcmp(&successorStates[i*numElements],origstate,sizeof(unsigned int) * numElements) != 0) { ++numNonSelfLoops; noSelfLoop[i] = true; } else noSelfLoop[i] = false; } if (numNonSelfLoops == 0) // all transitions are self loops // => accept self loop { successors = reserveSuccessorArray(res,1); numSuccessors = 1; successors[0] = findNode(res,successorStates,numElements,&found); if (!found) pushStateStackElement(&stack,successorStates,numElements); } else // there is at least one transition that is no self loop // => do not accept self loops { successors = reserveSuccessorArray(res, numNonSelfLoops); numSuccessors = numNonSelfLoops; unsigned int j; for (i = 0, j = 0; i < net->numGenes; ++i) { if (noSelfLoop[i]) // create successor in tree { successors[j++] = findNode(res,&successorStates[i*numElements],numElements,&found); newNodes = newNodes | !found; if (!found) pushStateStackElement(&stack,&successorStates[i*numElements],numElements); } } } } else // self loops are allowed { unsigned int state[numElements]; successors = reserveSuccessorArray(res,net->numGenes); numSuccessors = net->numGenes; for (i = 0; i < net->numGenes; ++i) // calculate all successors { memcpy(state,origstate,sizeof(unsigned int) * numElements); applySingleFunction(state,i,net); successors[i] = findNode(res,state,numElements,&found); newNodes = newNodes | !found; if (!found) pushStateStackElement(&stack,state,numElements); } } current->type.async.successors = successors; current->type.async.numSuccessors = numSuccessors; } while (stack != NULL); // return the number of elements in the state set return res; } /** * Recursively retrieve an array of states from a tree * and store it to is the number of array elements used to represent one state. * is the current array entry to be written and should be initialized to 0. */ void getStateSet(StateTreeNode * root, unsigned int * states, unsigned int numElements, unsigned int * nodeNo) { if (root->leftChild != 0) // recursive descent of left subtree getStateSet(root->leftChild,states,numElements,nodeNo); // write the state itself memcpy(&states[numElements* (*nodeNo)],root->data,numElements*sizeof(unsigned int)); *nodeNo = *nodeNo + 1; if (root->rightChild != 0) // recursive descent of right subtree getStateSet(root->rightChild,states,numElements,nodeNo); } /** * Recursively extract the transition table from a state set * and store it to a list of transitions
. * is the number of array elements used to represent one state. * receives the size of the resulting table. */ void getLooseAttractorTransitionTable(StateTreeNode * root, TransitionTableEntry ** table, unsigned int numElements, unsigned int * size) { if (root->leftChild != 0) // recursive descent of left subtree getLooseAttractorTransitionTable(root->leftChild,table,numElements,size); bool duplicate[root->type.async.numSuccessors]; memset(duplicate,0,sizeof(bool)*root->type.async.numSuccessors); unsigned int i, j; // check for duplicate transitions for (i = 0; i < root->type.async.numSuccessors; ++i) { for (j = i + 1; j < root->type.async.numSuccessors; ++j) { if (memcmp(&root->type.async.successors[i * numElements], &root->type.async.successors[j * numElements], sizeof(unsigned int) * numElements) == 0) duplicate[j] = true; } } // copy the unique transitions to the table for (i = 0; i < root->type.async.numSuccessors; ++i) { if (!duplicate[i]) { insertNewTransition(table,root->data,root->type.async.successors[i]->data,numElements); ++ *size; } } if (root->rightChild != 0) // recursive descent of right subtree getLooseAttractorTransitionTable(root->rightChild,table,numElements, size); } /** * Validate whether a set with states is a true attractor. * If is true, self loops are only considered if there are no other possible transitions. * holds the network information. */ bool validateAttractor(unsigned int * attractor, unsigned int attractorLength, bool avoidSelfLoops,TruthTableBooleanNetwork * net) { unsigned int numElts, i; if (net->numGenes % BITS_PER_BLOCK_32 == 0) numElts = net->numGenes / BITS_PER_BLOCK_32; else numElts = net->numGenes / BITS_PER_BLOCK_32 + 1; for (i = 0; i < attractorLength; ++i) // iterate over states { StateTree * set = buildAsynchronousStateSet(&attractor[i*numElts],numElts,avoidSelfLoops,net); if (set->nodeCount != attractorLength) { freeStateTree(set); return false; } unsigned int size_set = set->nodeCount; unsigned int states_set[numElts * size_set]; unsigned int nodeNo = 0; getStateSet(set->root,states_set,numElts,&nodeNo); freeStateTree(set); // compare forward reachable set to original set if (memcmp(states_set,attractor,sizeof(unsigned int) * numElts * size_set) != 0) // no attractor return false; } return true; } /** * Calculate complex/loose attractors by performing random transitions from * the states supplied in . * If is true, self loops are only considered if there are no other possible transitions. * If is not NULL, this vector holds the probabilities for each gene to be chosen * for a transition. */ pAttractorInfo getLooseAttractors(unsigned int * selectedStates, unsigned int numberOfStates, TruthTableBooleanNetwork * net, unsigned int randomSteps, bool avoidSelfLoops, double * probabilities) { // attractor list has empty dummy element at the end pAttractor attractorList = CALLOC(1,sizeof(Attractor)); unsigned int numElts, i, j; if (net->numGenes % BITS_PER_BLOCK_32 == 0) numElts = net->numGenes / BITS_PER_BLOCK_32; else numElts = net->numGenes / BITS_PER_BLOCK_32 + 1; // if probabilities for the genes are supplied, exclude fixed genes (if any) // and recalculate probabilities double * pProbabilities = NULL; double convertedProbabilities[net->numGenes + 1]; if (probabilities != NULL) { convertedProbabilities[0] = 0.0; double probabilitySum = 0.0; for (i = 0; i < net->numGenes; ++i) { if (net->fixedGenes[i] == -1) probabilitySum += probabilities[i]; } for (i = 0; i < net->numGenes; ++i) { if (net->fixedGenes[i] == -1) convertedProbabilities[i+1] = convertedProbabilities[i] + probabilities[i]/probabilitySum; else convertedProbabilities[i+1] = convertedProbabilities[i]; } pProbabilities = convertedProbabilities; } unsigned int attractorCount = 0; for (i = 0; i < numberOfStates; ++i) // iterate over supplied start states { unsigned int currentState[numElts]; memcpy(currentState,&selectedStates[i*numElts],sizeof(unsigned int) * numElts); unsigned int t = 0; for (j = randomSteps; j > 0; --j) // perform random state transitions // to reach a potential attractor { asynchronousStateTransition(currentState,pProbabilities,net); ++t; } // calculate forward reachable set of end state StateTree * set = buildAsynchronousStateSet(currentState,numElts,avoidSelfLoops,net); unsigned int states_set[numElts * set->nodeCount]; unsigned int nodeNo = 0; getStateSet(set->root,states_set,numElts,&nodeNo); // search for the current potential attractor in the attractor list bool found = false; pAttractor current = attractorList; while (current != NULL && !found) { found = ((set->nodeCount == current->length) && (memcmp(states_set,current->involvedStates,sizeof(unsigned int) * numElts * set->nodeCount) == 0)); current = current->next; } if (!found) // the potential attractor does not yet exist in the result list { if (validateAttractor(states_set,set->nodeCount,avoidSelfLoops,net)) // check whether this is a true attractor { pAttractor attractor = CALLOC(1,sizeof(Attractor)); attractor->numElementsPerEntry = numElts; attractor->length = set->nodeCount; attractor->involvedStates = CALLOC(numElts * set->nodeCount,sizeof(unsigned int)); memcpy(attractor->involvedStates,states_set,sizeof(unsigned int) * numElts * set->nodeCount); attractor->transitionTableSize = 0; if (set->nodeCount != 1) // if this is a steady-state attractor, no need to store transition table! getLooseAttractorTransitionTable(set->root,&attractor->table,numElts,&(attractor->transitionTableSize)); ++attractorCount; attractor->next = attractorList; attractorList = attractor; } } freeStateTree(set); } pAttractorInfo res = allocAttractorInfo(0,net->numGenes); res->numAttractors = attractorCount; res->attractorList = attractorList; return res; } BoolNet/src/attractor_search_interface.c0000644000176200001440000002766113451410121020123 0ustar liggesusers#include #include #include "statespace_search.h" #include "sat_search.h" #include "common.h" /** * Identification of attractors */ #define SYNC_MODE_STATE_SPACE 0 #define ASYNC_MODE_RANDOM 1 #define SYNC_MODE_SAT_EXHAUSTIVE 2 #define SYNC_MODE_SAT_RESTRICTED 3 /** * The R wrapper function for getAttractors. * Arguments: * inputGenes An integer vector containing the concatenated input gene lists * of *all* transition functions * inputGenePositions A vector of positions to split up for each transition function * transitionFunctions The concatenated truth table result columns of the transition functions of all genes. * transitionFunctionPositions A vector of positions to split up for each transition function. * fixedGenes A vector that contains -1 for all genes that can be both ON and OFF, 1 for genes that are always ON, * and 0 for genes that are always OFF. * specialInitializations A matrix of special initializations supplied by the user. The first row contains the genes, * the second row contains the corresponding initialization values. * startStates An optional array of encoded states used to initialize the heuristics * (not needed for exhaustive search) * simType An integer that determines whether a synchronous, asynchronous or SAT-based search is performed * geneProbabilities For asynchronous search, the probabilities of each gene to be chosen for update * randomSteps For asynchronous search, the number of random transitions performed to reach a potential attractor * avoidSelfLoops If set to true, self loops are only allowed if no other transitions are possible, which reduces the * number of edges in the attractors * returnTable If set to true and networkType is synchronous, the transition table is included in the return value. * maxAttractorSize The maximum attractor length for SAT-based search */ SEXP getAttractors_R(SEXP inputGenes, SEXP inputGenePositions, SEXP transitionFunctions, SEXP transitionFunctionPositions, SEXP fixedGenes, SEXP startStates, SEXP simType, SEXP geneProbabilities, SEXP randomSteps, SEXP avoidSelfLoops, SEXP returnTable, SEXP maxAttractorSize) { GetRNGstate(); // decode information in SEXP for use in C TruthTableBooleanNetwork network; network.type = TRUTHTABLE_BOOLEAN_NETWORK; network.numGenes = length(fixedGenes); network.inputGenes = INTEGER(inputGenes); network.inputGenePositions = INTEGER(inputGenePositions); network.transitionFunctions = INTEGER(transitionFunctions); network.transitionFunctionPositions = INTEGER(transitionFunctionPositions); network.fixedGenes = INTEGER(fixedGenes); network.nonFixedGeneBits = CALLOC(network.numGenes, sizeof(unsigned int)); int _networkType = *INTEGER(simType); int _randomSteps = *INTEGER(randomSteps); bool _returnTable = (bool) (*INTEGER(returnTable)); bool _avoidSelfLoops = (bool) (*INTEGER(avoidSelfLoops)); double * _probabilities = NULL; if (!isNull(geneProbabilities) && length(geneProbabilities) > 0) _probabilities = REAL(geneProbabilities); // count fixed genes, and create an index array for non-fixed genes: // contains the bit positions in a state // at which the -th gene is stored - this is different from // as fixed genes are not stored unsigned int numNonFixed = 0, i; for (i = 0; i < network.numGenes; i++) { if (network.fixedGenes[i] == -1) { network.nonFixedGeneBits[i] = numNonFixed++; } } pAttractorInfo res; if (_networkType == SYNC_MODE_STATE_SPACE && (isNull(startStates) || length(startStates) == 0)) // no start states supplied => perform exhaustive search { // calculate transition table unsigned long long * table = getTransitionTable(&network); if (table == 0) { PutRNGstate(); return R_NilValue; } unsigned long long numStates = (unsigned long long) 1 << numNonFixed;//pow(2,numNonFixed); // find attractors res = getAttractors(table, numStates, network.numGenes); } else // start states supplied or SAT search { unsigned int numElts; if (network.numGenes % BITS_PER_BLOCK_32 == 0) numElts = network.numGenes / BITS_PER_BLOCK_32; else numElts = network.numGenes / BITS_PER_BLOCK_32 + 1; unsigned int* _startStates = (unsigned int*) INTEGER(startStates); if (_networkType == SYNC_MODE_STATE_SPACE) { for (unsigned int i = 0; i < length(startStates) / numElts; ++i) { removeFixedGenes(&_startStates[i * numElts], network.fixedGenes, network.numGenes); } res = getAttractorsForStates(_startStates, length(startStates) / numElts, &network); } else if (_networkType == SYNC_MODE_SAT_EXHAUSTIVE) { int _maxAttractorSize; if (isNull(maxAttractorSize)) { _maxAttractorSize = 1; } else _maxAttractorSize = *INTEGER(maxAttractorSize); res = getAttractors_SAT_exhaustive( (BooleanNetwork *) &network, _maxAttractorSize, EXTENSION_MIXED); } else if (_networkType == SYNC_MODE_SAT_RESTRICTED) { res = getAttractors_SAT_maxLength((BooleanNetwork *) &network, *INTEGER(maxAttractorSize)); } else { res = getLooseAttractors(_startStates, length(startStates) / numElts, &network, _randomSteps, _avoidSelfLoops, _probabilities); } } // pack results in SEXP structure for return value SEXP stateInfoSXP; if (res->tableSize != 0 && _returnTable) stateInfoSXP = allocList(4); else stateInfoSXP = R_NilValue; PROTECT(stateInfoSXP); //1 int* array; if (res->tableSize != 0 && _returnTable) { // create a 3-element list for the transition table //PROTECT(stateInfoSXP = allocList(4)); SET_TAG(stateInfoSXP, install("table")); SET_TAG(CDR(stateInfoSXP), install("attractorAssignment")); SET_TAG(CDR(CDR(stateInfoSXP)), install("stepsToAttractor")); SET_TAG(CDR(CDR(CDR(stateInfoSXP))), install("initialStates")); // write transition table result column SEXP tableSXP; PROTECT( tableSXP = allocVector(INTSXP,res->tableSize * res->numElementsPerEntry)); //2 array = INTEGER(tableSXP); for (i = 0; i < res->tableSize; ++i) { // the transition table results do not contain fixed genes => insert them insertFixedGenes(&res->table[i * res->numElementsPerEntry], network.fixedGenes, network.numGenes); memcpy(&array[i * res->numElementsPerEntry], &res->table[i * res->numElementsPerEntry], res->numElementsPerEntry * sizeof(unsigned int)); } SETCAR(stateInfoSXP, tableSXP); UNPROTECT(1); //tableSXP 1 // write attractor assignment vector for states in transition table SEXP assignmentSXP; PROTECT(assignmentSXP = allocVector(INTSXP,res->tableSize)); //2 array = INTEGER(assignmentSXP); memcpy(array, res->attractorAssignment, res->tableSize * sizeof(int)); SETCADR(stateInfoSXP, assignmentSXP); UNPROTECT(1); //assignmentSXP 1 // write a vector with number of transitions from a state to an attractor SEXP stepSXP; PROTECT(stepSXP = allocVector(INTSXP,res->tableSize)); //2 array = INTEGER(stepSXP); memcpy(array, res->stepsToAttractor, res->tableSize * sizeof(int)); SETCADDR(stateInfoSXP, stepSXP); UNPROTECT(1); //stepSXP 1 // if available, write the original states SEXP initialStateSXP; if (res->initialStates == 0) PROTECT(initialStateSXP = R_NilValue); //2 else // if start states are specified, the initial states for each transition have to be saved as well, // as they cannot be inferred by enumeration { PROTECT( initialStateSXP = allocVector(INTSXP,res->tableSize * res->numElementsPerEntry)); //2 array = INTEGER(initialStateSXP); for (i = 0; i < res->tableSize; ++i) { // the transition table results do not contain fixed genes => insert them insertFixedGenes( &res->initialStates[i * res->numElementsPerEntry], network.fixedGenes, network.numGenes); memcpy(&array[i * res->numElementsPerEntry], &res->initialStates[i * res->numElementsPerEntry], res->numElementsPerEntry * sizeof(unsigned int)); } } SETCADDDR(stateInfoSXP, initialStateSXP); UNPROTECT(1); //initialStateSXP 1 } // count attractors unsigned int numAttractors = 0; pAttractor el; for (el = res->attractorList; el->next != NULL; el = el->next) ++numAttractors; // write attractors SEXP attractorsSXP; PROTECT(attractorsSXP = allocList(numAttractors)); //2 SEXP listPos = attractorsSXP; for (el = res->attractorList, i = 0; el->next != NULL; el = el->next, ++i) { SEXP attractorSXP; // each attractor is a 2-element list with a list of states included // in the attractor and the size of the basin if (el->transitionTableSize == 0) attractorSXP = allocList(2); else attractorSXP = allocList(4); PROTECT(attractorSXP); //3 SET_TAG(attractorSXP, install("involvedStates")); SET_TAG(CDR(attractorSXP), install("basinSize")); if (el->transitionTableSize != 0) { SET_TAG(CDR(CDR(attractorSXP)), install("initialStates")); SET_TAG(CDR(CDR(CDR(attractorSXP))), install("nextStates")); } SEXP stateSXP; PROTECT(stateSXP = allocVector(INTSXP,el->length * el->numElementsPerEntry)); //4 array = INTEGER(stateSXP); for (i = 0; i < el->length; ++i) { if (_networkType == SYNC_MODE_STATE_SPACE) // insert fixed gene values, as they are missing in the calculated results insertFixedGenes( &el->involvedStates[i * el->numElementsPerEntry], network.fixedGenes, network.numGenes); memcpy(&array[i * el->numElementsPerEntry], &el->involvedStates[i * el->numElementsPerEntry], el->numElementsPerEntry * sizeof(unsigned int)); } SETCAR(attractorSXP, stateSXP); // write basin size SEXP basinSXP; PROTECT(basinSXP = allocVector(INTSXP,1)); //5 array = INTEGER(basinSXP); array[0] = el->basinSize; SETCADR(attractorSXP, basinSXP); SETCAR(listPos, attractorSXP); if (el->next != NULL) listPos = CDR(listPos); if (el->transitionTableSize != 0) { SEXP attrInitialStateSXP; SEXP attrNextStateSXP; PROTECT(attrInitialStateSXP = allocVector(INTSXP,el->numElementsPerEntry * el->transitionTableSize)); //6 PROTECT(attrNextStateSXP = allocVector(INTSXP,el->numElementsPerEntry * el->transitionTableSize)); //7 unsigned int * initial = (unsigned int*) INTEGER( attrInitialStateSXP); unsigned int * next = (unsigned int*) INTEGER(attrNextStateSXP); TransitionTableEntry * currentState = el->table; for (i = 0; i < el->transitionTableSize; ++i) { memcpy(&initial[i * el->numElementsPerEntry], currentState->initialState, sizeof(unsigned int) * el->numElementsPerEntry); memcpy(&next[i * el->numElementsPerEntry], currentState->nextState, sizeof(unsigned int) * el->numElementsPerEntry); currentState = currentState->next; } SETCADDR(attractorSXP, attrInitialStateSXP); SETCADDDR(attractorSXP, attrNextStateSXP); UNPROTECT(2); //attrInitialStateSXP,attrNextStateSXP 5 } UNPROTECT(3); //basinSXP,stateSXP,attractorSXP //2 } SEXP resSXP; // create a result list with two elements (attractors and transition table) PROTECT(resSXP = allocList(2)); //3 SET_TAG(resSXP, install("stateInfo")); SET_TAG(CDR(resSXP), install("attractors")); SETCADR(resSXP, attractorsSXP); SETCAR(resSXP, stateInfoSXP); PutRNGstate(); UNPROTECT(3); // free resources freeAttractorInfo(res); FREE(network.nonFixedGeneBits); return (resSXP); } BoolNet/src/picosat.c0000644000176200001440000050062413277247010014223 0ustar liggesusers/**************************************************************************** Copyright (c) 2006 - 2015, Armin Biere, Johannes Kepler University. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************************************************************/ #include #include #include #include #include #include #include #include #include "picosat.h" /* By default code for 'all different constraints' is disabled, since 'NADC' * is defined. */ #define NADC /* By default we enable failed literals, since 'NFL' is undefined. * #define NFL */ /* By default we 'detach satisfied (large) clauses', e.g. NDSC undefined. * #define NDSC */ /* Do not use luby restart schedule instead of inner/outer. * #define NLUBY */ /* Enabling this define, will use gnuplot to visualize how the scores evolve. * #define VISCORES */ #ifdef VISCORES // #define WRITEGIF /* ... to generate a video */ #endif #ifdef VISCORES #ifndef WRITEGIF #include /* for 'usleep' */ #endif #endif #ifndef NRCODE #include #endif #define MINRESTART 100 /* minimum restart interval */ #define MAXRESTART 1000000 /* maximum restart interval */ #define RDECIDE 1000 /* interval of random decisions */ #define FRESTART 110 /* restart increase factor in percent */ #define FREDUCE 110 /* reduce increase factor in percent */ #define FREDADJ 121 /* reduce increase adjustment factor */ #define MAXCILS 10 /* maximal number of unrecycled internals */ #define FFLIPPED 10000 /* flipped reduce factor */ #define FFLIPPEDPREC 10000000/* flipped reduce factor precision */ #define INTERRUPTLIM 1024 /* check interrupt after that many decisions */ #ifndef TRACE #define NO_BINARY_CLAUSES /* store binary clauses more compactly */ #endif /* For debugging purposes you may want to define 'LOGGING', which actually * can be enforced by using the '--log' option for the configure script. */ #ifdef LOGGING #define LOG(code) do { code; } while (0) #else #define LOG(code) do { } while (0) #endif #define NOLOG(code) do { } while (0) /* log exception */ #define ONLYLOG(code) do { code; } while (0) /* force logging */ #define FALSE ((Val)-1) #define UNDEF ((Val)0) #define TRUE ((Val)1) #define COMPACT_TRACECHECK_TRACE_FMT 0 #define EXTENDED_TRACECHECK_TRACE_FMT 1 #define RUP_TRACE_FMT 2 #define NEWN(p,n) do { (p) = new (ps, sizeof (*(p)) * (n)); } while (0) #define CLRN(p,n) do { memset ((p), 0, sizeof (*(p)) * (n)); } while (0) #define CLR(p) CLRN(p,1) #define DELETEN(p,n) \ do { delete (ps, p, sizeof (*(p)) * (n)); (p) = 0; } while (0) #define RESIZEN(p,old_num,new_num) \ do { \ size_t old_size = sizeof (*(p)) * (old_num); \ size_t new_size = sizeof (*(p)) * (new_num); \ (p) = resize (ps, (p), old_size, new_size) ; \ } while (0) #define ENLARGE(start,head,end) \ do { \ unsigned old_num = (ptrdiff_t)((end) - (start)); \ size_t new_num = old_num ? (2 * old_num) : 1; \ unsigned count = (head) - (start); \ assert ((start) <= (end)); \ RESIZEN((start),old_num,new_num); \ (head) = (start) + count; \ (end) = (start) + new_num; \ } while (0) #define NOTLIT(l) (ps->lits + (1 ^ ((l) - ps->lits))) #define LIT2IDX(l) ((ptrdiff_t)((l) - ps->lits) / 2) #define LIT2IMPLS(l) (ps->impls + (ptrdiff_t)((l) - ps->lits)) #define LIT2INT(l) ((int)(LIT2SGN(l) * LIT2IDX(l))) #define LIT2SGN(l) (((ptrdiff_t)((l) - ps->lits) & 1) ? -1 : 1) #define LIT2VAR(l) (ps->vars + LIT2IDX(l)) #define LIT2HTPS(l) (ps->htps + (ptrdiff_t)((l) - ps->lits)) #define LIT2JWH(l) (ps->jwh + ((l) - ps->lits)) #ifndef NDSC #define LIT2DHTPS(l) (ps->dhtps + (ptrdiff_t)((l) - ps->lits)) #endif #ifdef NO_BINARY_CLAUSES typedef uintptr_t Wrd; #define ISLITREASON(C) (1&(Wrd)C) #define LIT2REASON(L) \ (assert (L->val==TRUE), ((Cls*)(1 + (2*(L - ps->lits))))) #define REASON2LIT(C) ((Lit*)(ps->lits + ((Wrd)C)/2)) #endif #define ENDOFCLS(c) ((void*)((Lit**)(c)->lits + (c)->size)) #define SOC ((ps->oclauses == ps->ohead) ? ps->lclauses : ps->oclauses) #define EOC (ps->lhead) #define NXC(p) (((p) + 1 == ps->ohead) ? ps->lclauses : (p) + 1) #define OIDX2IDX(idx) (2 * ((idx) + 1)) #define LIDX2IDX(idx) (2 * (idx) + 1) #define ISLIDX(idx) ((idx)&1) #define IDX2OIDX(idx) (assert(!ISLIDX(idx)), (idx)/2 - 1) #define IDX2LIDX(idx) (assert(ISLIDX(idx)), (idx)/2) #define EXPORTIDX(idx) \ ((ISLIDX(idx) ? (IDX2LIDX (idx) + (ps->ohead - ps->oclauses)) : IDX2OIDX(idx)) + 1) #define IDX2CLS(i) \ (assert(i), (ISLIDX(i) ? ps->lclauses : ps->oclauses)[(i)/2 - !ISLIDX(i)]) #define IDX2ZHN(i) (assert(i), (ISLIDX(i) ? ps->zhains[(i)/2] : 0)) #define CLS2TRD(c) (((Trd*)(c)) - 1) #define CLS2IDX(c) ((((Trd*)(c)) - 1)->idx) #define CLS2ACT(c) \ ((Act*)((assert((c)->learned)),assert((c)->size>2),ENDOFCLS(c))) #define VAR2LIT(v) (ps->lits + 2 * ((v) - ps->vars)) #define VAR2RNK(v) (ps->rnks + ((v) - ps->vars)) #define RNK2LIT(r) (ps->lits + 2 * ((r) - ps->rnks)) #define RNK2VAR(r) (ps->vars + ((r) - ps->rnks)) #define BLK_FILL_BYTES 8 #define SIZE_OF_BLK (sizeof (Blk) - BLK_FILL_BYTES) #define PTR2BLK(void_ptr) \ ((void_ptr) ? (Blk*)(((char*)(void_ptr)) - SIZE_OF_BLK) : 0) #define AVERAGE(a,b) ((b) ? (((double)a) / (double)(b)) : 0.0) #define PERCENT(a,b) (100.0 * AVERAGE(a,b)) #ifndef NRCODE #define ABORT(msg) \ do { \ Rf_error(msg); \ } while (0) #else #define ABORT(msg) \ do { \ fputs ("*** picosat: " msg "\n", stderr); \ abort (); \ } while (0) #endif #define ABORTIF(cond,msg) \ do { \ if (!(cond)) break; \ ABORT (msg); \ } while (0) #define ZEROFLT (0x00000000u) #define EPSFLT (0x00000001u) #define INFFLT (0xffffffffu) #define FLTCARRY (1u << 25) #define FLTMSB (1u << 24) #define FLTMAXMANTISSA (FLTMSB - 1) #define FLTMANTISSA(d) ((d) & FLTMAXMANTISSA) #define FLTEXPONENT(d) ((int)((d) >> 24) - 128) #define FLTMINEXPONENT (-128) #define FLTMAXEXPONENT (127) #define CMPSWAPFLT(a,b) \ do { \ Flt tmp; \ if (((a) < (b))) \ { \ tmp = (a); \ (a) = (b); \ (b) = tmp; \ } \ } while (0) #define UNPACKFLT(u,m,e) \ do { \ (m) = FLTMANTISSA(u); \ (e) = FLTEXPONENT(u); \ (m) |= FLTMSB; \ } while (0) #define INSERTION_SORT_LIMIT 10 #define SORTING_SWAP(T,p,q) \ do { \ T tmp = *(q); \ *(q) = *(p); \ *(p) = tmp; \ } while (0) #define SORTING_CMP_SWAP(T,cmp,p,q) \ do { \ if ((cmp) (ps, *(p), *(q)) > 0) \ SORTING_SWAP (T, p, q); \ } while(0) #define QUICKSORT_PARTITION(T,cmp,a,l,r) \ do { \ T pivot; \ int j; \ i = (l) - 1; /* result in 'i' */ \ j = (r); \ pivot = (a)[j]; \ for (;;) \ { \ while ((cmp) (ps, (a)[++i], pivot) < 0) \ ; \ while ((cmp) (ps, pivot, (a)[--j]) < 0) \ if (j == (l)) \ break; \ if (i >= j) \ break; \ SORTING_SWAP (T, (a) + i, (a) + j); \ } \ SORTING_SWAP (T, (a) + i, (a) + (r)); \ } while(0) #define QUICKSORT(T,cmp,a,n) \ do { \ int l = 0, r = (n) - 1, m, ll, rr, i; \ assert (ps->ihead == ps->indices); \ if (r - l <= INSERTION_SORT_LIMIT) \ break; \ for (;;) \ { \ m = (l + r) / 2; \ SORTING_SWAP (T, (a) + m, (a) + r - 1); \ SORTING_CMP_SWAP (T, cmp, (a) + l, (a) + r - 1); \ SORTING_CMP_SWAP (T, cmp, (a) + l, (a) + r); \ SORTING_CMP_SWAP (T, cmp, (a) + r - 1, (a) + r); \ QUICKSORT_PARTITION (T, cmp, (a), l + 1, r - 1); \ if (i - l < r - i) \ { \ ll = i + 1; \ rr = r; \ r = i - 1; \ } \ else \ { \ ll = l; \ rr = i - 1; \ l = i + 1; \ } \ if (r - l > INSERTION_SORT_LIMIT) \ { \ assert (rr - ll > INSERTION_SORT_LIMIT); \ if (ps->ihead == ps->eoi) \ ENLARGE (ps->indices, ps->ihead, ps->eoi); \ *ps->ihead++ = ll; \ if (ps->ihead == ps->eoi) \ ENLARGE (ps->indices, ps->ihead, ps->eoi); \ *ps->ihead++ = rr; \ } \ else if (rr - ll > INSERTION_SORT_LIMIT) \ { \ l = ll; \ r = rr; \ } \ else if (ps->ihead > ps->indices) \ { \ r = *--ps->ihead; \ l = *--ps->ihead; \ } \ else \ break; \ } \ } while (0) #define INSERTION_SORT(T,cmp,a,n) \ do { \ T pivot; \ int l = 0, r = (n) - 1, i, j; \ for (i = r; i > l; i--) \ SORTING_CMP_SWAP (T, cmp, (a) + i - 1, (a) + i); \ for (i = l + 2; i <= r; i++) \ { \ j = i; \ pivot = (a)[i]; \ while ((cmp) (ps, pivot, (a)[j - 1]) < 0) \ { \ (a)[j] = (a)[j - 1]; \ j--; \ } \ (a)[j] = pivot; \ } \ } while (0) #ifdef NDEBUG #define CHECK_SORTED(cmp,a,n) do { } while(0) #else #define CHECK_SORTED(cmp,a,n) \ do { \ int i; \ for (i = 0; i < (n) - 1; i++) \ assert ((cmp) (ps, (a)[i], (a)[i + 1]) <= 0); \ } while(0) #endif #define SORT(T,cmp,a,n) \ do { \ T * aa = (a); \ int nn = (n); \ QUICKSORT (T, cmp, aa, nn); \ INSERTION_SORT (T, cmp, aa, nn); \ assert (ps->ihead == ps->indices); \ CHECK_SORTED (cmp, aa, nn); \ } while (0) #define WRDSZ (sizeof (long) * 8) #ifndef NRCODE #define picosat_fprintf(...) do { } while (0) #define picosat_vfprintf(...) do { } while (0) #define picosat_fputs(...) do { } while (0) #define picosat_fputc(...) do { } while (0) #else #define picosat_fprintf(file, fmt, ...) do { fprintf(file, fmt, ##__VA_ARGS__); } while (0) #define picosat_vfprintf(file, fmt, va_list) do { vfprintf(file, fmt, va_list); } while (0) #define picosat_fputs(str, file) do { fputs(str, file); } while (0) #define picosat_fputc(c, file) do { fputc(c, file); } while (0) #endif typedef unsigned Flt; /* 32 bit deterministic soft float */ typedef Flt Act; /* clause and variable activity */ typedef struct Blk Blk; /* allocated memory block */ typedef struct Cls Cls; /* clause */ typedef struct Lit Lit; /* literal */ typedef struct Rnk Rnk; /* variable to score mapping */ typedef signed char Val; /* TRUE, UNDEF, FALSE */ typedef struct Var Var; /* variable */ #ifdef TRACE typedef struct Trd Trd; /* trace data for clauses */ typedef struct Zhn Zhn; /* compressed chain (=zain) data */ typedef unsigned char Znt; /* compressed antecedent data */ #endif #ifdef NO_BINARY_CLAUSES typedef struct Ltk Ltk; struct Ltk { Lit ** start; unsigned count : WRDSZ == 32 ? 27 : 32; unsigned ldsize : WRDSZ == 32 ? 5 : 32; }; #endif struct Lit { Val val; }; struct Var { unsigned mark : 1; /*bit 1*/ unsigned resolved : 1; /*bit 2*/ unsigned phase : 1; /*bit 3*/ unsigned assigned : 1; /*bit 4*/ unsigned used : 1; /*bit 5*/ unsigned failed : 1; /*bit 6*/ unsigned internal : 1; /*bit 7*/ unsigned usedefphase : 1; /*bit 8*/ unsigned defphase : 1; /*bit 9*/ unsigned msspos : 1; /*bit 10*/ unsigned mssneg : 1; /*bit 11*/ unsigned humuspos : 1; /*bit 12*/ unsigned humusneg : 1; /*bit 13*/ unsigned partial : 1; /*bit 14*/ #ifdef TRACE unsigned core : 1; /*bit 15*/ #endif unsigned level; Cls *reason; #ifndef NADC Lit ** inado; Lit ** ado; Lit *** adotabpos; #endif }; struct Rnk { Act score; unsigned pos : 30; /* 0 iff not on heap */ unsigned moreimportant : 1; unsigned lessimportant : 1; }; struct Cls { unsigned size; unsigned collect:1; /* bit 1 */ unsigned learned:1; /* bit 2 */ unsigned locked:1; /* bit 3 */ unsigned used:1; /* bit 4 */ #ifndef NDEBUG unsigned connected:1; /* bit 5 */ #endif #ifdef TRACE unsigned collected:1; /* bit 6 */ unsigned core:1; /* bit 7 */ #endif #define LDMAXGLUE 25 /* 32 - 7 */ #define MAXGLUE ((1<= FLTCARRY) { if (e >= FLTMAXEXPONENT) return INFFLT; e++; m >>= 1; } } m &= ~FLTMSB; return packflt (m, e); } static Flt addflt (Flt a, Flt b) { unsigned ma, mb, delta; int ea, eb; CMPSWAPFLT (a, b); if (!b) return a; UNPACKFLT (a, ma, ea); UNPACKFLT (b, mb, eb); assert (ea >= eb); delta = ea - eb; if (delta < 32) mb >>= delta; else mb = 0; if (!mb) return a; ma += mb; if (ma & FLTCARRY) { if (ea == FLTMAXEXPONENT) return INFFLT; ea++; ma >>= 1; } assert (ma < FLTCARRY); ma &= FLTMAXMANTISSA; return packflt (ma, ea); } static Flt mulflt (Flt a, Flt b) { unsigned ma, mb; unsigned long long accu; int ea, eb; CMPSWAPFLT (a, b); if (!b) return ZEROFLT; UNPACKFLT (a, ma, ea); UNPACKFLT (b, mb, eb); ea += eb; ea += 24; if (ea > FLTMAXEXPONENT) return INFFLT; if (ea < FLTMINEXPONENT) return EPSFLT; accu = ma; accu *= mb; accu >>= 24; if (accu >= FLTCARRY) { if (ea == FLTMAXEXPONENT) return INFFLT; ea++; accu >>= 1; if (accu >= FLTCARRY) return INFFLT; } assert (accu < FLTCARRY); assert (accu & FLTMSB); ma = accu; ma &= ~FLTMSB; return packflt (ma, ea); } static Flt ascii2flt (const char *str) { Flt ten = base2flt (10, 0); Flt onetenth = base2flt (26843546, -28); Flt res = ZEROFLT, tmp, base; const char *p = str; char ch; ch = *p++; if (ch != '.') { if (!isdigit (ch)) return INFFLT; /* better abort ? */ res = base2flt (ch - '0', 0); while ((ch = *p++)) { if (ch == '.') break; if (!isdigit (ch)) return INFFLT; /* better abort? */ res = mulflt (res, ten); tmp = base2flt (ch - '0', 0); res = addflt (res, tmp); } } if (ch == '.') { ch = *p++; if (!isdigit (ch)) return INFFLT; /* better abort ? */ base = onetenth; tmp = mulflt (base2flt (ch - '0', 0), base); res = addflt (res, tmp); while ((ch = *p++)) { if (!isdigit (ch)) return INFFLT; /* better abort? */ base = mulflt (base, onetenth); tmp = mulflt (base2flt (ch - '0', 0), base); res = addflt (res, tmp); } } return res; } #if defined(VISCORES) static double flt2double (Flt f) { double res; unsigned m; int e, i; UNPACKFLT (f, m, e); res = m; if (e < 0) { for (i = e; i < 0; i++) res *= 0.5; } else { for (i = 0; i < e; i++) res *= 2.0; } return res; } #endif static int log2flt (Flt a) { return FLTEXPONENT (a) + 24; } static int cmpflt (Flt a, Flt b) { if (a < b) return -1; if (a > b) return 1; return 0; } static void * new (PS * ps, size_t size) { size_t bytes; Blk *b; if (!size) return 0; bytes = size + SIZE_OF_BLK; if (ps->enew) b = ps->enew (ps->emgr, bytes); else b = malloc (bytes); ABORTIF (!b, "out of memory in 'new'"); #ifndef NDEBUG b->header.size = size; #endif ps->current_bytes += size; if (ps->current_bytes > ps->max_bytes) ps->max_bytes = ps->current_bytes; return b->data; } static void delete (PS * ps, void *void_ptr, size_t size) { size_t bytes; Blk *b; if (!void_ptr) { assert (!size); return; } assert (size); b = PTR2BLK (void_ptr); assert (size <= ps->current_bytes); ps->current_bytes -= size; assert (b->header.size == size); bytes = size + SIZE_OF_BLK; if (ps->edelete) ps->edelete (ps->emgr, b, bytes); else free (b); } static void * resize (PS * ps, void *void_ptr, size_t old_size, size_t new_size) { size_t old_bytes, new_bytes; Blk *b; b = PTR2BLK (void_ptr); assert (old_size <= ps->current_bytes); ps->current_bytes -= old_size; if ((old_bytes = old_size)) { assert (old_size && b && b->header.size == old_size); old_bytes += SIZE_OF_BLK; } else assert (!b); if ((new_bytes = new_size)) new_bytes += SIZE_OF_BLK; if (ps->eresize) b = ps->eresize (ps->emgr, b, old_bytes, new_bytes); else b = realloc (b, new_bytes); if (!new_size) { assert (!b); return 0; } ABORTIF (!b, "out of memory in 'resize'"); #ifndef NDEBUG b->header.size = new_size; #endif ps->current_bytes += new_size; if (ps->current_bytes > ps->max_bytes) ps->max_bytes = ps->current_bytes; return b->data; } static unsigned int2unsigned (int l) { return (l < 0) ? 1 + 2 * -l : 2 * l; } static Lit * int2lit (PS * ps, int l) { return ps->lits + int2unsigned (l); } static Lit ** end_of_lits (Cls * c) { return (Lit**)c->lits + c->size; } #if !defined(NDEBUG) || defined(LOGGING) static void dumplits (PS * ps, Lit ** l, Lit ** end) { int first; Lit ** p; if (l == end) { /* empty clause */ } else if (l + 1 == end) { picosat_fprintf (ps->out, "%d ", LIT2INT (l[0])); } else { assert (l + 2 <= end); first = (abs (LIT2INT (l[0])) > abs (LIT2INT (l[1]))); picosat_fprintf (ps->out, "%d ", LIT2INT (l[first])); picosat_fprintf (ps->out, "%d ", LIT2INT (l[!first])); for (p = l + 2; p < end; p++) picosat_fprintf (ps->out, "%d ", LIT2INT (*p)); } picosat_fputc ('0', ps->out); } static void dumpcls (PS * ps, Cls * c) { Lit **end; if (c) { end = end_of_lits (c); dumplits (ps, c->lits, end); #ifdef TRACE if (ps->trace) picosat_fprintf (ps->out, " clause(%u)", CLS2IDX (c)); #endif } else picosat_fputs ("DECISION", ps->out); } static void dumpclsnl (PS * ps, Cls * c) { dumpcls (ps, c); picosat_fputc ('\n', ps->out); } void dumpcnf (PS * ps) { Cls **p, *c; for (p = SOC; p != EOC; p = NXC (p)) { c = *p; if (!c) continue; #ifdef TRACE if (c->collected) continue; #endif dumpclsnl (ps, *p); } } #endif static void delete_prefix (PS * ps) { if (!ps->prefix) return; delete (ps, ps->prefix, strlen (ps->prefix) + 1); ps->prefix = 0; } static void new_prefix (PS * ps, const char * str) { delete_prefix (ps); assert (str); ps->prefix = new (ps, strlen (str) + 1); strcpy (ps->prefix, str); } static PS * init (void * pmgr, picosat_malloc pnew, picosat_realloc presize, picosat_free pdelete) { PS * ps; #if 0 int count = 3 - !pnew - !presize - !pdelete; ABORTIF (count && !pnew, "API usage: missing 'picosat_set_new'"); ABORTIF (count && !presize, "API usage: missing 'picosat_set_resize'"); ABORTIF (count && !pdelete, "API usage: missing 'picosat_set_delete'"); #endif ps = pnew ? pnew (pmgr, sizeof *ps) : malloc (sizeof *ps); ABORTIF (!ps, "failed to allocate memory for PicoSAT manager"); memset (ps, 0, sizeof *ps); ps->emgr = pmgr; ps->enew = pnew; ps->eresize = presize; ps->edelete = pdelete; ps->size_vars = 1; ps->state = RESET; ps->defaultphase = JWLPHASE; #ifdef TRACE ps->ocore = -1; #endif ps->lastrheader = -2; #ifndef NADC ps->adoconflictlimit = UINT_MAX; #endif ps->min_flipped = UINT_MAX; NEWN (ps->lits, 2 * ps->size_vars); NEWN (ps->jwh, 2 * ps->size_vars); NEWN (ps->htps, 2 * ps->size_vars); #ifndef NDSC NEWN (ps->dhtps, 2 * ps->size_vars); #endif NEWN (ps->impls, 2 * ps->size_vars); NEWN (ps->vars, ps->size_vars); NEWN (ps->rnks, ps->size_vars); /* because '0' pos denotes not on heap */ ENLARGE (ps->heap, ps->hhead, ps->eoh); ps->hhead = ps->heap + 1; ps->vinc = base2flt (1, 0); /* initial var activity */ ps->ifvinc = ascii2flt ("1.05"); /* var score rescore factor */ #ifdef VISCORES ps->fvinc = ascii2flt ("0.9523809"); /* 1/f = 1/1.05 */ ps->nvinc = ascii2flt ("0.0476191"); /* 1 - 1/f = 1 - 1/1.05 */ #endif ps->lscore = base2flt (1, 90); /* var activity rescore limit */ ps->ilvinc = base2flt (1, -90); /* inverse of 'lscore' */ ps->cinc = base2flt (1, 0); /* initial clause activity */ ps->fcinc = ascii2flt ("1.001"); /* cls activity rescore factor */ ps->lcinc = base2flt (1, 90); /* cls activity rescore limit */ ps->ilcinc = base2flt (1, -90); /* inverse of 'ilcinc' */ ps->lreduceadjustcnt = ps->lreduceadjustinc = 100; ps->lpropagations = ~0ull; #ifdef NRCODE ps->out = stdout; #else ps->out = NULL; #endif new_prefix (ps, "c "); ps->verbosity = 0; ps->plain = 0; #ifdef NO_BINARY_CLAUSES memset (&ps->impl, 0, sizeof (ps->impl)); ps->impl.size = 2; memset (&ps->cimpl, 0, sizeof (ps->impl)); ps->cimpl.size = 2; #endif #ifdef VISCORES ps->fviscores = popen ( "/usr/bin/gnuplot -background black" " -xrm 'gnuplot*textColor:white'" " -xrm 'gnuplot*borderColor:white'" " -xrm 'gnuplot*axisColor:white'" , "w"); picosat_fprintf (ps->fviscores, "unset key\n"); // fprintf (ps->fviscores, "set log y\n"); fflush (ps->fviscores); system ("rm -rf /tmp/picosat-viscores"); system ("mkdir /tmp/picosat-viscores"); system ("mkdir /tmp/picosat-viscores/data"); #ifdef WRITEGIF system ("mkdir /tmp/picosat-viscores/gif"); picosat_fprintf (ps->fviscores, "set terminal gif giant animate opt size 1024,768 x000000 xffffff" "\n"); picosat_fprintf (ps->fviscores, "set output \"/tmp/picosat-viscores/gif/animated.gif\"\n"); #endif #endif ps->defaultphase = JWLPHASE; ps->state = READY; ps->last_sat_call_result = 0; return ps; } static size_t bytes_clause (PS * ps, unsigned size, unsigned learned) { size_t res; res = sizeof (Cls); res += size * sizeof (Lit *); res -= 2 * sizeof (Lit *); if (learned && size > 2) res += sizeof (Act); /* add activity */ #ifdef TRACE if (ps->trace) res += sizeof (Trd); /* add trace data */ #else (void) ps; #endif return res; } static Cls * new_clause (PS * ps, unsigned size, unsigned learned) { size_t bytes; void * tmp; #ifdef TRACE Trd *trd; #endif Cls *res; bytes = bytes_clause (ps, size, learned); tmp = new (ps, bytes); #ifdef TRACE if (ps->trace) { trd = tmp; if (learned) trd->idx = LIDX2IDX (ps->lhead - ps->lclauses); else trd->idx = OIDX2IDX (ps->ohead - ps->oclauses); res = trd->cls; } else #endif res = tmp; res->size = size; res->learned = learned; res->collect = 0; #ifndef NDEBUG res->connected = 0; #endif res->locked = 0; res->used = 0; #ifdef TRACE res->core = 0; res->collected = 0; #endif if (learned && size > 2) { Act * p = CLS2ACT (res); *p = ps->cinc; } return res; } static void delete_clause (PS * ps, Cls * c) { size_t bytes; #ifdef TRACE Trd *trd; #endif bytes = bytes_clause (ps, c->size, c->learned); #ifdef TRACE if (ps->trace) { trd = CLS2TRD (c); delete (ps, trd, bytes); } else #endif delete (ps, c, bytes); } static void delete_clauses (PS * ps) { Cls **p; for (p = SOC; p != EOC; p = NXC (p)) if (*p) delete_clause (ps, *p); DELETEN (ps->oclauses, ps->eoo - ps->oclauses); DELETEN (ps->lclauses, ps->EOL - ps->lclauses); ps->ohead = ps->eoo = ps->lhead = ps->EOL = 0; } #ifdef TRACE static void delete_zhain (PS * ps, Zhn * zhain) { const Znt *p, *znt; assert (zhain); znt = zhain->znt; for (p = znt; *p; p++) ; delete (ps, zhain, sizeof (Zhn) + (p - znt) + 1); } static void delete_zhains (PS * ps) { Zhn **p, *z; for (p = ps->zhains; p < ps->zhead; p++) if ((z = *p)) delete_zhain (ps, z); DELETEN (ps->zhains, ps->eoz - ps->zhains); ps->eoz = ps->zhead = 0; } #endif #ifdef NO_BINARY_CLAUSES static void lrelease (PS * ps, Ltk * stk) { if (stk->start) DELETEN (stk->start, (1 << (stk->ldsize))); memset (stk, 0, sizeof (*stk)); } #endif #ifndef NADC static unsigned llength (Lit ** a) { Lit ** p; for (p = a; *p; p++) ; return p - a; } static void resetadoconflict (PS * ps) { assert (ps->adoconflict); delete_clause (ps->adoconflict); ps->adoconflict = 0; } static void reset_ados (PS * ps) { Lit *** p; for (p = ps->ados; p < ps->hados; p++) DELETEN (*p, llength (*p) + 1); DELETEN (ps->ados, ps->eados - ps->ados); ps->hados = ps->eados = 0; DELETEN (ps->adotab, ps->szadotab); ps->szadotab = ps->nadotab = 0; if (ps->adoconflict) resetadoconflict (ps); ps->adoconflicts = 0; ps->adoconflictlimit = UINT_MAX; ps->adodisabled = 0; } #endif static void reset (PS * ps) { ABORTIF (!ps || ps->state == RESET, "API usage: reset without initialization"); delete_clauses (ps); #ifdef TRACE delete_zhains (ps); #endif #ifdef NO_BINARY_CLAUSES { unsigned i; for (i = 2; i <= 2 * ps->max_var + 1; i++) lrelease (ps, ps->impls + i); } #endif #ifndef NADC reset_ados (ps); #endif #ifndef NFL DELETEN (ps->saved, ps->saved_size); #endif DELETEN (ps->htps, 2 * ps->size_vars); #ifndef NDSC DELETEN (ps->dhtps, 2 * ps->size_vars); #endif DELETEN (ps->impls, 2 * ps->size_vars); DELETEN (ps->lits, 2 * ps->size_vars); DELETEN (ps->jwh, 2 * ps->size_vars); DELETEN (ps->vars, ps->size_vars); DELETEN (ps->rnks, ps->size_vars); DELETEN (ps->trail, ps->eot - ps->trail); DELETEN (ps->heap, ps->eoh - ps->heap); DELETEN (ps->als, ps->eoals - ps->als); DELETEN (ps->CLS, ps->eocls - ps->CLS); DELETEN (ps->rils, ps->eorils - ps->rils); DELETEN (ps->cils, ps->eocils - ps->cils); DELETEN (ps->fals, ps->eofals - ps->fals); DELETEN (ps->mass, ps->szmass); DELETEN (ps->mssass, ps->szmssass); DELETEN (ps->mcsass, ps->szmcsass); DELETEN (ps->humus, ps->szhumus); DELETEN (ps->added, ps->eoa - ps->added); DELETEN (ps->marked, ps->eom - ps->marked); DELETEN (ps->dfs, ps->eod - ps->dfs); DELETEN (ps->resolved, ps->eor - ps->resolved); DELETEN (ps->levels, ps->eolevels - ps->levels); DELETEN (ps->dused, ps->eodused - ps->dused); DELETEN (ps->buffer, ps->eob - ps->buffer); DELETEN (ps->indices, ps->eoi - ps->indices); DELETEN (ps->soclauses, ps->eoso - ps->soclauses); delete_prefix (ps); delete (ps, ps->rline[0], ps->szrline); delete (ps, ps->rline[1], ps->szrline); assert (getenv ("LEAK") || !ps->current_bytes); /* found leak if failing */ #ifdef VISCORES pclose (ps->fviscores); #endif if (ps->edelete) ps->edelete (ps->emgr, ps, sizeof *ps); else free (ps); } inline static void tpush (PS * ps, Lit * lit) { assert (ps->lits < lit && lit <= ps->lits + 2* ps->max_var + 1); if (ps->thead == ps->eot) { unsigned ttail2count = ps->ttail2 - ps->trail; unsigned ttailcount = ps->ttail - ps->trail; #ifndef NADC unsigned ttailadocount = ps->ttailado - ps->trail; #endif ENLARGE (ps->trail, ps->thead, ps->eot); ps->ttail = ps->trail + ttailcount; ps->ttail2 = ps->trail + ttail2count; #ifndef NADC ps->ttailado = ps->trail + ttailadocount; #endif } *ps->thead++ = lit; } static void assign_reason (PS * ps, Var * v, Cls * reason) { #if defined(NO_BINARY_CLAUSES) && !defined(NDEBUG) assert (reason != &ps->impl); #else (void) ps; #endif v->reason = reason; } static void assign_phase (PS * ps, Lit * lit) { unsigned new_phase, idx; Var * v = LIT2VAR (lit); #ifndef NFL /* In 'simplifying' mode we only need to keep 'min_flipped' up to date if * we force assignments on the top level. The other assignments will be * undone and thus we can keep the old saved value of the phase. */ if (!ps->LEVEL || !ps->simplifying) #endif { new_phase = (LIT2SGN (lit) > 0); if (v->assigned) { ps->sdflips -= ps->sdflips/FFLIPPED; if (new_phase != v->phase) { assert (FFLIPPEDPREC >= FFLIPPED); ps->sdflips += FFLIPPEDPREC / FFLIPPED; ps->flips++; idx = LIT2IDX (lit); if (idx < ps->min_flipped) ps->min_flipped = idx; NOLOG (picosat_fprintf (ps->out, "%sflipped %d\n", ps->prefix, LIT2INT (lit))); } } v->phase = new_phase; v->assigned = 1; } lit->val = TRUE; NOTLIT (lit)->val = FALSE; } inline static void assign (PS * ps, Lit * lit, Cls * reason) { Var * v = LIT2VAR (lit); assert (lit->val == UNDEF); #ifdef STATS ps->assignments++; #endif v->level = ps->LEVEL; assign_phase (ps, lit); assign_reason (ps, v, reason); tpush (ps, lit); } inline static int cmp_added (PS * ps, Lit * k, Lit * l) { Val a = k->val, b = l->val; Var *u, *v; int res; if (a == UNDEF && b != UNDEF) return -1; if (a != UNDEF && b == UNDEF) return 1; u = LIT2VAR (k); v = LIT2VAR (l); if (a != UNDEF) { assert (b != UNDEF); res = v->level - u->level; if (res) return res; /* larger level first */ } res = cmpflt (VAR2RNK (u)->score, VAR2RNK (v)->score); if (res) return res; /* smaller activity first */ return u - v; /* smaller index first */ } static void sorttwolits (Lit ** v) { Lit * a = v[0], * b = v[1]; assert (a != b); if (a < b) return; v[0] = b; v[1] = a; } inline static void sortlits (PS * ps, Lit ** v, unsigned size) { if (size == 2) sorttwolits (v); /* same order with and with out 'NO_BINARY_CLAUSES' */ else SORT (Lit *, cmp_added, v, size); } #ifdef NO_BINARY_CLAUSES static Cls * setimpl (PS * ps, Lit * a, Lit * b) { assert (!ps->implvalid); assert (ps->impl.size == 2); ps->impl.lits[0] = a; ps->impl.lits[1] = b; sorttwolits (ps->impl.lits); ps->implvalid = 1; return &ps->impl; } static void resetimpl (PS * ps) { ps->implvalid = 0; } static Cls * setcimpl (PS * ps, Lit * a, Lit * b) { assert (!ps->cimplvalid); assert (ps->cimpl.size == 2); ps->cimpl.lits[0] = a; ps->cimpl.lits[1] = b; sorttwolits (ps->cimpl.lits); ps->cimplvalid = 1; return &ps->cimpl; } static void resetcimpl (PS * ps) { assert (ps->cimplvalid); ps->cimplvalid = 0; } #endif static int cmp_ptr (PS * ps, void *l, void *k) { (void) ps; return ((char*)l) - (char*)k; /* arbitrarily already reverse */ } static int cmp_rnk (Rnk * r, Rnk * s) { if (!r->moreimportant && s->moreimportant) return -1; if (r->moreimportant && !s->moreimportant) return 1; if (!r->lessimportant && s->lessimportant) return 1; if (r->lessimportant && !s->lessimportant) return -1; if (r->score < s->score) return -1; if (r->score > s->score) return 1; return -cmp_ptr (0, r, s); } static void hup (PS * ps, Rnk * v) { int upos, vpos; Rnk *u; #ifndef NFL assert (!ps->simplifying); #endif vpos = v->pos; assert (0 < vpos); assert (vpos < ps->hhead - ps->heap); assert (ps->heap[vpos] == v); while (vpos > 1) { upos = vpos / 2; u = ps->heap[upos]; if (cmp_rnk (u, v) > 0) break; ps->heap[vpos] = u; u->pos = vpos; vpos = upos; } ps->heap[vpos] = v; v->pos = vpos; } static Cls *add_simplified_clause (PS *, int); inline static void add_antecedent (PS * ps, Cls * c) { assert (c); #ifdef NO_BINARY_CLAUSES if (ISLITREASON (c)) return; if (c == &ps->impl) return; #elif defined(STATS) && defined(TRACE) ps->antecedents++; #endif if (ps->rhead == ps->eor) ENLARGE (ps->resolved, ps->rhead, ps->eor); assert (ps->rhead < ps->eor); *ps->rhead++ = c; } #ifdef TRACE #ifdef NO_BINARY_CLAUSES #error "can not combine TRACE and NO_BINARY_CLAUSES" #endif #endif /* TRACE */ static void add_lit (PS * ps, Lit * lit) { assert (lit); if (ps->ahead == ps->eoa) ENLARGE (ps->added, ps->ahead, ps->eoa); *ps->ahead++ = lit; } static void push_var_as_marked (PS * ps, Var * v) { if (ps->mhead == ps->eom) ENLARGE (ps->marked, ps->mhead, ps->eom); *ps->mhead++ = v; } static void mark_var (PS * ps, Var * v) { assert (!v->mark); v->mark = 1; push_var_as_marked (ps, v); } #ifdef NO_BINARY_CLAUSES static Cls * impl2reason (PS * ps, Lit * lit) { Lit * other; Cls * res; other = ps->impl.lits[0]; if (lit == other) other = ps->impl.lits[1]; assert (other->val == FALSE); res = LIT2REASON (NOTLIT (other)); resetimpl (ps); return res; } #endif /* Whenever we have a top level derived unit we really should derive a unit * clause otherwise the resolutions in 'add_simplified_clause' become * incorrect. */ static Cls * resolve_top_level_unit (PS * ps, Lit * lit, Cls * reason) { unsigned count_resolved; Lit **p, **eol, *other; Var *u, *v; assert (ps->rhead == ps->resolved); assert (ps->ahead == ps->added); add_lit (ps, lit); add_antecedent (ps, reason); count_resolved = 1; v = LIT2VAR (lit); eol = end_of_lits (reason); for (p = reason->lits; p < eol; p++) { other = *p; u = LIT2VAR (other); if (u == v) continue; add_antecedent (ps, u->reason); count_resolved++; } /* Some of the literals could be assumptions. If at least one * variable is not an assumption, we should resolve. */ if (count_resolved >= 2) { #ifdef NO_BINARY_CLAUSES if (reason == &ps->impl) resetimpl (ps); #endif reason = add_simplified_clause (ps, 1); #ifdef NO_BINARY_CLAUSES if (reason->size == 2) { assert (reason == &ps->impl); reason = impl2reason (ps, lit); } #endif assign_reason (ps, v, reason); } else { ps->ahead = ps->added; ps->rhead = ps->resolved; } return reason; } static void fixvar (PS * ps, Var * v) { Rnk * r; assert (VAR2LIT (v) != UNDEF); assert (!v->level); ps->fixed++; r = VAR2RNK (v); r->score = INFFLT; #ifndef NFL if (ps->simplifying) return; #endif if (!r->pos) return; hup (ps, r); } static void use_var (PS * ps, Var * v) { if (v->used) return; v->used = 1; ps->vused++; } static void assign_forced (PS * ps, Lit * lit, Cls * reason) { Var *v; assert (reason); assert (lit->val == UNDEF); #ifdef STATS ps->FORCED++; #endif assign (ps, lit, reason); #ifdef NO_BINARY_CLAUSES assert (reason != &ps->impl); if (ISLITREASON (reason)) { reason = setimpl (ps, lit, NOTLIT (REASON2LIT (reason))); assert (reason); } #endif LOG ( picosat_fprintf (ps->out, "%sassign %d at level %d by ", ps->prefix, LIT2INT (lit), ps->LEVEL); dumpclsnl (ps, reason)); v = LIT2VAR (lit); if (!ps->LEVEL) use_var (ps, v); if (!ps->LEVEL && reason->size > 1) { reason = resolve_top_level_unit (ps, lit, reason); assert (reason); } #ifdef NO_BINARY_CLAUSES if (ISLITREASON (reason) || reason == &ps->impl) { /* DO NOTHING */ } else #endif { assert (!reason->locked); reason->locked = 1; if (reason->learned && reason->size > 2) ps->llocked++; } #ifdef NO_BINARY_CLAUSES if (reason == &ps->impl) resetimpl (ps); #endif if (!ps->LEVEL) fixvar (ps, v); } #ifdef NO_BINARY_CLAUSES static void lpush (PS * ps, Lit * lit, Cls * c) { int pos = (c->lits[0] == lit); Ltk * s = LIT2IMPLS (lit); unsigned oldsize, newsize; assert (c->size == 2); if (!s->start) { assert (!s->count); assert (!s->ldsize); NEWN (s->start, 1); } else { oldsize = (1 << (s->ldsize)); assert (s->count <= oldsize); if (s->count == oldsize) { newsize = 2 * oldsize; RESIZEN (s->start, oldsize, newsize); s->ldsize++; } } s->start[s->count++] = c->lits[pos]; } #endif static void connect_head_tail (PS * ps, Lit * lit, Cls * c) { Cls ** s; assert (c->size >= 1); if (c->size == 2) { #ifdef NO_BINARY_CLAUSES lpush (ps, lit, c); return; #else s = LIT2IMPLS (lit); #endif } else s = LIT2HTPS (lit); if (c->lits[0] != lit) { assert (c->size >= 2); assert (c->lits[1] == lit); c->next[1] = *s; } else c->next[0] = *s; *s = c; } #ifdef TRACE static void zpush (PS * ps, Zhn * zhain) { assert (ps->trace); if (ps->zhead == ps->eoz) ENLARGE (ps->zhains, ps->zhead, ps->eoz); *ps->zhead++ = zhain; } static int cmp_resolved (PS * ps, Cls * c, Cls * d) { #ifndef NDEBUG assert (ps->trace); #else (void) ps; #endif return CLS2IDX (c) - CLS2IDX (d); } static void bpushc (PS * ps, unsigned char ch) { if (ps->bhead == ps->eob) ENLARGE (ps->buffer, ps->bhead, ps->eob); *ps->bhead++ = ch; } static void bpushu (PS * ps, unsigned u) { while (u & ~0x7f) { bpushc (ps, u | 0x80); u >>= 7; } bpushc (ps, u); } static void bpushd (PS * ps, unsigned prev, unsigned this) { unsigned delta; assert (prev < this); delta = this - prev; bpushu (ps, delta); } static void add_zhain (PS * ps) { unsigned prev, this, count, rcount; Cls **p, *c; Zhn *res; assert (ps->trace); assert (ps->bhead == ps->buffer); assert (ps->rhead > ps->resolved); rcount = ps->rhead - ps->resolved; SORT (Cls *, cmp_resolved, ps->resolved, rcount); prev = 0; for (p = ps->resolved; p < ps->rhead; p++) { c = *p; this = CLS2TRD (c)->idx; bpushd (ps, prev, this); prev = this; } bpushc (ps, 0); count = ps->bhead - ps->buffer; res = new (ps, sizeof (Zhn) + count); res->core = 0; res->ref = 0; memcpy (res->znt, ps->buffer, count); ps->bhead = ps->buffer; #ifdef STATS ps->znts += count - 1; #endif zpush (ps, res); } #endif static void add_resolved (PS * ps, int learned) { #if defined(STATS) || defined(TRACE) Cls **p, *c; for (p = ps->resolved; p < ps->rhead; p++) { c = *p; if (c->used) continue; c->used = 1; if (c->size <= 2) continue; #ifdef STATS if (c->learned) ps->llused++; else ps->loused++; #endif } #endif #ifdef TRACE if (learned && ps->trace) add_zhain (ps); #else (void) learned; #endif ps->rhead = ps->resolved; } static void incjwh (PS * ps, Cls * c) { Lit **p, *lit, ** eol; Flt * f, inc, sum; unsigned size = 0; Var * v; Val val; eol = end_of_lits (c); for (p = c->lits; p < eol; p++) { lit = *p; val = lit->val; if (val && ps->LEVEL > 0) { v = LIT2VAR (lit); if (v->level > 0) val = UNDEF; } if (val == TRUE) return; if (val != FALSE) size++; } inc = base2flt (1, -size); for (p = c->lits; p < eol; p++) { lit = *p; f = LIT2JWH (lit); sum = addflt (*f, inc); *f = sum; } } static void write_rup_header (PS * ps, FILE * file) { char line[80]; int i; sprintf (line, "%%RUPD32 %u %u", ps->rupvariables, ps->rupclauses); picosat_fputs (line, file); for (i = 255 - strlen (line); i >= 0; i--) picosat_fputc (' ', file); picosat_fputc ('\n', file); fflush (file); } static Cls * add_simplified_clause (PS * ps, int learned) { unsigned num_true, num_undef, num_false, size, count_resolved; Lit **p, **q, *lit, ** end; unsigned litlevel, glue; Cls *res, * reason; int reentered; Val val; Var *v; #if !defined(NDEBUG) && defined(TRACE) unsigned idx; #endif reentered = 0; REENTER: size = ps->ahead - ps->added; add_resolved (ps, learned); if (learned) { ps->ladded++; ps->llitsadded += size; if (size > 2) { ps->lladded++; ps->nlclauses++; ps->llits += size; } } else { ps->oadded++; if (size > 2) { ps->loadded++; ps->noclauses++; ps->olits += size; } } ps->addedclauses++; assert (ps->addedclauses == ps->ladded + ps->oadded); #ifdef NO_BINARY_CLAUSES if (size == 2) res = setimpl (ps, ps->added[0], ps->added[1]); else #endif { sortlits (ps, ps->added, size); if (learned) { if (ps->lhead == ps->EOL) { ENLARGE (ps->lclauses, ps->lhead, ps->EOL); /* A very difficult to find bug, which only occurs if the * learned clauses stack is immediately allocated before the * original clauses stack without padding. In this case, we * have 'SOC == EOC', which terminates all loops using the * idiom 'for (p = SOC; p != EOC; p = NXC(p))' immediately. * Unfortunately this occurred in 'fix_clause_lits' after * using a recent version of the memory allocator of 'Google' * perftools in the context of one large benchmark for * our SMT solver 'Boolector'. */ if (ps->EOL == ps->oclauses) ENLARGE (ps->lclauses, ps->lhead, ps->EOL); } #if !defined(NDEBUG) && defined(TRACE) idx = LIDX2IDX (ps->lhead - ps->lclauses); #endif } else { if (ps->ohead == ps->eoo) { ENLARGE (ps->oclauses, ps->ohead, ps->eoo); if (ps->EOL == ps->oclauses) ENLARGE (ps->oclauses, ps->ohead, ps->eoo); /* ditto */ } #if !defined(NDEBUG) && defined(TRACE) idx = OIDX2IDX (ps->ohead - ps->oclauses); #endif } assert (ps->EOL != ps->oclauses); /* ditto */ res = new_clause (ps, size, learned); glue = 0; if (learned) { assert (ps->dusedhead == ps->dused); for (p = ps->added; p < ps->ahead; p++) { lit = *p; if (lit->val) { litlevel = LIT2VAR (lit)->level; assert (litlevel <= ps->LEVEL); while (ps->levels + litlevel >= ps->levelshead) { if (ps->levelshead >= ps->eolevels) ENLARGE (ps->levels, ps->levelshead, ps->eolevels); assert (ps->levelshead < ps->eolevels); *ps->levelshead++ = 0; } if (!ps->levels[litlevel]) { if (ps->dusedhead >= ps->eodused) ENLARGE (ps->dused, ps->dusedhead, ps->eodused); assert (ps->dusedhead < ps->eodused); *ps->dusedhead++ = litlevel; ps->levels[litlevel] = 1; glue++; } } else glue++; } while (ps->dusedhead > ps->dused) { litlevel = *--ps->dusedhead; assert (ps->levels + litlevel < ps->levelshead); assert (ps->levels[litlevel]); ps->levels[litlevel] = 0; } } assert (glue <= MAXGLUE); res->glue = glue; #if !defined(NDEBUG) && defined(TRACE) if (ps->trace) assert (CLS2IDX (res) == idx); #endif if (learned) *ps->lhead++ = res; else *ps->ohead++ = res; #if !defined(NDEBUG) && defined(TRACE) if (ps->trace && learned) assert (ps->zhead - ps->zhains == ps->lhead - ps->lclauses); #endif assert (ps->lhead != ps->oclauses); /* ditto */ } if (learned && ps->rup) { if (!ps->rupstarted) { write_rup_header (ps, ps->rup); ps->rupstarted = 1; } } num_true = num_undef = num_false = 0; q = res->lits; for (p = ps->added; p < ps->ahead; p++) { lit = *p; *q++ = lit; if (learned && ps->rup) picosat_fprintf (ps->rup, "%d ", LIT2INT (lit)); val = lit->val; num_true += (val == TRUE); num_undef += (val == UNDEF); num_false += (val == FALSE); } assert (num_false + num_true + num_undef == size); if (learned && ps->rup) picosat_fputs ("0\n", ps->rup); ps->ahead = ps->added; /* reset */ if (!reentered) // TODO merge if (size > 0) { assert (size <= 2 || !reentered); // TODO remove connect_head_tail (ps, res->lits[0], res); if (size > 1) connect_head_tail (ps, res->lits[1], res); } if (size == 0) { if (!ps->mtcls) ps->mtcls = res; } #ifdef NO_BINARY_CLAUSES if (size != 2) #endif #ifndef NDEBUG res->connected = 1; #endif LOG ( picosat_fprintf (ps->out, "%s%s ", ps->prefix, learned ? "learned" : "original"); dumpclsnl (ps, res)); /* Shrink clause by resolving it against top level assignments. */ if (!ps->LEVEL && num_false > 0) { assert (ps->ahead == ps->added); assert (ps->rhead == ps->resolved); count_resolved = 1; add_antecedent (ps, res); end = end_of_lits (res); for (p = res->lits; p < end; p++) { lit = *p; v = LIT2VAR (lit); use_var (ps, v); if (lit->val == FALSE) { add_antecedent (ps, v->reason); count_resolved++; } else add_lit (ps, lit); } assert (count_resolved >= 2); learned = 1; #ifdef NO_BINARY_CLAUSES if (res == &ps->impl) resetimpl (ps); #endif reentered = 1; goto REENTER; /* and return simplified clause */ } if (!num_true && num_undef == 1) /* unit clause */ { lit = 0; for (p = res->lits; p < res->lits + size; p++) { if ((*p)->val == UNDEF) lit = *p; v = LIT2VAR (*p); use_var (ps, v); } assert (lit); reason = res; #ifdef NO_BINARY_CLAUSES if (size == 2) { Lit * other = res->lits[0]; if (other == lit) other = res->lits[1]; assert (other->val == FALSE); reason = LIT2REASON (NOTLIT (other)); } #endif assign_forced (ps, lit, reason); num_true++; } if (num_false == size && !ps->conflict) { #ifdef NO_BINARY_CLAUSES if (res == &ps->impl) ps->conflict = setcimpl (ps, res->lits[0], res->lits[1]); else #endif ps->conflict = res; } if (!learned && !num_true && num_undef) incjwh (ps, res); #ifdef NO_BINARY_CLAUSES if (res == &ps->impl) resetimpl (ps); #endif return res; } static int trivial_clause (PS * ps) { Lit **p, **q, *prev; Var *v; SORT (Lit *, cmp_ptr, ps->added, ps->ahead - ps->added); prev = 0; q = ps->added; for (p = q; p < ps->ahead; p++) { Lit *this = *p; v = LIT2VAR (this); if (prev == this) /* skip repeated literals */ continue; /* Top level satisfied ? */ if (this->val == TRUE && !v->level) return 1; if (prev == NOTLIT (this))/* found pair of dual literals */ return 1; *q++ = prev = this; } ps->ahead = q; /* shrink */ return 0; } static void simplify_and_add_original_clause (PS * ps) { #ifdef NO_BINARY_CLAUSES Cls * c; #endif if (trivial_clause (ps)) { ps->ahead = ps->added; if (ps->ohead == ps->eoo) ENLARGE (ps->oclauses, ps->ohead, ps->eoo); *ps->ohead++ = 0; ps->addedclauses++; ps->oadded++; } else { if (ps->CLS != ps->clshead) add_lit (ps, NOTLIT (ps->clshead[-1])); #ifdef NO_BINARY_CLAUSES c = #endif add_simplified_clause (ps, 0); #ifdef NO_BINARY_CLAUSES if (c == &ps->impl) assert (!ps->implvalid); #endif } } #ifndef NADC static void add_ado (PS * ps) { unsigned len = ps->ahead - ps->added; Lit ** ado, ** p, ** q, *lit; Var * v, * u; #ifdef TRACE assert (!ps->trace); #endif ABORTIF (ps->ados < ps->hados && llength (ps->ados[0]) != len, "internal: non matching all different constraint object lengths"); if (ps->hados == ps->eados) ENLARGE (ps->ados, ps->hados, ps->eados); NEWN (ado, len + 1); *hados++ = ado; p = ps->added; q = ado; u = 0; while (p < ps->ahead) { lit = *p++; v = LIT2VAR (lit); ABORTIF (v->inado, "internal: variable in multiple all different objects"); v->inado = ado; if (!u && !lit->val) u = v; *q++ = lit; } assert (q == ado + len); *q++ = 0; /* TODO simply do a conflict test as in propado */ ABORTIF (!u, "internal: " "adding fully instantiated all different object not implemented yet"); assert (u); assert (u->inado == ado); assert (!u->ado); u->ado = ado; ps->ahead = ps->added; } #endif static void hdown (PS * ps, Rnk * r) { unsigned end, rpos, cpos, opos; Rnk *child, *other; assert (r->pos > 0); assert (ps->heap[r->pos] == r); end = ps->hhead - ps->heap; rpos = r->pos; for (;;) { cpos = 2 * rpos; if (cpos >= end) break; opos = cpos + 1; child = ps->heap[cpos]; if (cmp_rnk (r, child) < 0) { if (opos < end) { other = ps->heap[opos]; if (cmp_rnk (child, other) < 0) { child = other; cpos = opos; } } } else if (opos < end) { child = ps->heap[opos]; if (cmp_rnk (r, child) >= 0) break; cpos = opos; } else break; ps->heap[rpos] = child; child->pos = rpos; rpos = cpos; } r->pos = rpos; ps->heap[rpos] = r; } static Rnk * htop (PS * ps) { assert (ps->hhead > ps->heap + 1); return ps->heap[1]; } static Rnk * hpop (PS * ps) { Rnk *res, *last; unsigned end; assert (ps->hhead > ps->heap + 1); res = ps->heap[1]; res->pos = 0; end = --ps->hhead - ps->heap; if (end == 1) return res; last = ps->heap[end]; ps->heap[last->pos = 1] = last; hdown (ps, last); return res; } inline static void hpush (PS * ps, Rnk * r) { assert (!r->pos); if (ps->hhead == ps->eoh) ENLARGE (ps->heap, ps->hhead, ps->eoh); r->pos = ps->hhead++ - ps->heap; ps->heap[r->pos] = r; hup (ps, r); } static void fix_trail_lits (PS * ps, long delta) { Lit **p; for (p = ps->trail; p < ps->thead; p++) *p += delta; } #ifdef NO_BINARY_CLAUSES static void fix_impl_lits (PS * ps, long delta) { Ltk * s; Lit ** p; for (s = ps->impls + 2; s <= ps->impls + 2 * ps->max_var + 1; s++) for (p = s->start; p < s->start + s->count; p++) *p += delta; } #endif static void fix_clause_lits (PS * ps, long delta) { Cls **p, *clause; Lit **q, *lit, **eol; for (p = SOC; p != EOC; p = NXC (p)) { clause = *p; if (!clause) continue; q = clause->lits; eol = end_of_lits (clause); while (q < eol) { assert (q - clause->lits <= (int) clause->size); lit = *q; lit += delta; *q++ = lit; } } } static void fix_added_lits (PS * ps, long delta) { Lit **p; for (p = ps->added; p < ps->ahead; p++) *p += delta; } static void fix_assumed_lits (PS * ps, long delta) { Lit **p; for (p = ps->als; p < ps->alshead; p++) *p += delta; } static void fix_cls_lits (PS * ps, long delta) { Lit **p; for (p = ps->CLS; p < ps->clshead; p++) *p += delta; } static void fix_heap_rnks (PS * ps, long delta) { Rnk **p; for (p = ps->heap + 1; p < ps->hhead; p++) *p += delta; } #ifndef NADC static void fix_ado (long delta, Lit ** ado) { Lit ** p; for (p = ado; *p; p++) *p += delta; } static void fix_ados (PS * ps, long delta) { Lit *** p; for (p = ps->ados; p < ps->hados; p++) fix_ado (delta, *p); } #endif static void enlarge (PS * ps, unsigned new_size_vars) { long rnks_delta, lits_delta; Lit *old_lits = ps->lits; Rnk *old_rnks = ps->rnks; RESIZEN (ps->lits, 2 * ps->size_vars, 2 * new_size_vars); RESIZEN (ps->jwh, 2 * ps->size_vars, 2 * new_size_vars); RESIZEN (ps->htps, 2 * ps->size_vars, 2 * new_size_vars); #ifndef NDSC RESIZEN (ps->dhtps, 2 * ps->size_vars, 2 * new_size_vars); #endif RESIZEN (ps->impls, 2 * ps->size_vars, 2 * new_size_vars); RESIZEN (ps->vars, ps->size_vars, new_size_vars); RESIZEN (ps->rnks, ps->size_vars, new_size_vars); if ((lits_delta = ps->lits - old_lits)) { fix_trail_lits (ps, lits_delta); fix_clause_lits (ps, lits_delta); fix_added_lits (ps, lits_delta); fix_assumed_lits (ps, lits_delta); fix_cls_lits (ps, lits_delta); #ifdef NO_BINARY_CLAUSES fix_impl_lits (ps, lits_delta); #endif #ifndef NADC fix_ados (ps, lits_delta); #endif } if ((rnks_delta = ps->rnks - old_rnks)) { fix_heap_rnks (ps, rnks_delta); } assert (ps->mhead == ps->marked); ps->size_vars = new_size_vars; } static void unassign (PS * ps, Lit * lit) { Cls *reason; Var *v; Rnk *r; assert (lit->val == TRUE); LOG ( picosat_fprintf (ps->out, "%sunassign %d\n", ps->prefix, LIT2INT (lit))); v = LIT2VAR (lit); reason = v->reason; #ifdef NO_BINARY_CLAUSES assert (reason != &ps->impl); if (ISLITREASON (reason)) { /* DO NOTHING */ } else #endif if (reason) { assert (reason->locked); reason->locked = 0; if (reason->learned && reason->size > 2) { assert (ps->llocked > 0); ps->llocked--; } } lit->val = UNDEF; NOTLIT (lit)->val = UNDEF; r = VAR2RNK (v); if (!r->pos) hpush (ps, r); #ifndef NDSC { Cls * p, * next, ** q; q = LIT2DHTPS (lit); p = *q; *q = 0; while (p) { Lit * other = p->lits[0]; if (other == lit) { other = p->lits[1]; q = p->next + 1; } else { assert (p->lits[1] == lit); q = p->next; } next = *q; *q = *LIT2HTPS (other); *LIT2HTPS (other) = p; p = next; } } #endif #ifndef NADC if (v->adotabpos) { assert (ps->nadotab); assert (*v->adotabpos == v->ado); *v->adotabpos = 0; v->adotabpos = 0; ps->nadotab--; } #endif } static Cls * var2reason (PS * ps, Var * var) { Cls * res = var->reason; #ifdef NO_BINARY_CLAUSES Lit * this, * other; if (ISLITREASON (res)) { this = VAR2LIT (var); if (this->val == FALSE) this = NOTLIT (this); other = REASON2LIT (res); assert (other->val == TRUE); assert (this->val == TRUE); res = setimpl (ps, NOTLIT (other), this); } #else (void) ps; #endif return res; } static void mark_clause_to_be_collected (Cls * c) { assert (!c->collect); c->collect = 1; } static void undo (PS * ps, unsigned new_level) { Lit *lit; Var *v; while (ps->thead > ps->trail) { lit = *--ps->thead; v = LIT2VAR (lit); if (v->level == new_level) { ps->thead++; /* fix pre decrement */ break; } unassign (ps, lit); } ps->LEVEL = new_level; ps->ttail = ps->thead; ps->ttail2 = ps->thead; #ifndef NADC ps->ttailado = ps->thead; #endif #ifdef NO_BINARY_CLAUSES if (ps->conflict == &ps->cimpl) resetcimpl (ps); #endif #ifndef NADC if (ps->conflict && ps->conflict == ps->adoconflict) resetadoconflict (ps); #endif ps->conflict = ps->mtcls; if (ps->LEVEL < ps->adecidelevel) { assert (ps->als < ps->alshead); ps->adecidelevel = 0; ps->alstail = ps->als; } LOG ( picosat_fprintf (ps->out, "%sback to level %u\n", ps->prefix, ps->LEVEL)); } #ifndef NDEBUG static int clause_satisfied (Cls * c) { Lit **p, **eol, *lit; eol = end_of_lits (c); for (p = c->lits; p < eol; p++) { lit = *p; if (lit->val == TRUE) return 1; } return 0; } static void original_clauses_satisfied (PS * ps) { Cls **p, *c; for (p = ps->oclauses; p < ps->ohead; p++) { c = *p; if (!c) continue; if (c->learned) continue; assert (clause_satisfied (c)); } } static void assumptions_satisfied (PS * ps) { Lit *lit, ** p; for (p = ps->als; p < ps->alshead; p++) { lit = *p; assert (lit->val == TRUE); } } #endif static void sflush (PS * ps) { double now = picosat_time_stamp (); double delta = now - ps->entered; delta = (delta < 0) ? 0 : delta; ps->seconds += delta; ps->entered = now; } static double mb (PS * ps) { return ps->current_bytes / (double) (1 << 20); } static double avglevel (PS * ps) { return ps->decisions ? ps->levelsum / ps->decisions : 0.0; } static void rheader (PS * ps) { assert (ps->lastrheader <= ps->reports); if (ps->lastrheader == ps->reports) return; ps->lastrheader = ps->reports; picosat_fprintf (ps->out, "%s\n", ps->prefix); picosat_fprintf (ps->out, "%s %s\n", ps->prefix, ps->rline[0]); picosat_fprintf (ps->out, "%s %s\n", ps->prefix, ps->rline[1]); picosat_fprintf (ps->out, "%s\n", ps->prefix); } static unsigned dynamic_flips_per_assignment_per_mille (PS * ps) { assert (FFLIPPEDPREC >= 1000); return ps->sdflips / (FFLIPPEDPREC / 1000); } #ifdef NLUBY static int high_agility (PS * ps) { return dynamic_flips_per_assignment_per_mille (ps) >= 200; } static int very_high_agility (PS * ps) { return dynamic_flips_per_assignment_per_mille (ps) >= 250; } #else static int medium_agility (PS * ps) { return dynamic_flips_per_assignment_per_mille (ps) >= 230; } #endif static void relemdata (PS * ps) { char *p; int x; if (ps->reports < 0) { /* strip trailing white space */ for (x = 0; x <= 1; x++) { p = ps->rline[x] + strlen (ps->rline[x]); while (p-- > ps->rline[x]) { if (*p != ' ') break; *p = 0; } } rheader (ps); } else picosat_fputc ('\n', ps->out); ps->RCOUNT = 0; } static void relemhead (PS * ps, const char * name, int fp, double val) { int x, y, len, size; const char *fmt; unsigned tmp, e; if (ps->reports < 0) { x = ps->RCOUNT & 1; y = (ps->RCOUNT / 2) * 12 + x * 6; if (ps->RCOUNT == 1) sprintf (ps->rline[1], "%6s", ""); len = strlen (name); while (ps->szrline <= len + y + 1) { size = ps->szrline ? 2 * ps->szrline : 128; ps->rline[0] = resize (ps, ps->rline[0], ps->szrline, size); ps->rline[1] = resize (ps, ps->rline[1], ps->szrline, size); ps->szrline = size; } fmt = (len <= 6) ? "%6s%10s" : "%-10s%4s"; sprintf (ps->rline[x] + y, fmt, name, ""); } else if (val < 0) { assert (fp); if (val > -100 && (tmp = val * 10.0 - 0.5) > -1000.0) { picosat_fprintf (ps->out, "-%4.1f ", -tmp / 10.0); } else { tmp = -val / 10.0 + 0.5; e = 1; while (tmp >= 100) { tmp /= 10; e++; } picosat_fprintf (ps->out, "-%2ue%u ", tmp, e); } } else { if (fp && val < 1000 && (tmp = val * 10.0 + 0.5) < 10000) { picosat_fprintf (ps->out, "%5.1f ", tmp / 10.0); } else if (!fp && (tmp = val) < 100000) { picosat_fprintf (ps->out, "%5u ", tmp); } else { tmp = val / 10.0 + 0.5; e = 1; while (tmp >= 1000) { tmp /= 10; e++; } picosat_fprintf (ps->out, "%3ue%u ", tmp, e); } } ps->RCOUNT++; } inline static void relem (PS * ps, const char *name, int fp, double val) { if (name) relemhead (ps, name, fp, val); else relemdata (ps); } static unsigned reduce_limit_on_lclauses (PS * ps) { unsigned res = ps->lreduce; res += ps->llocked; return res; } static void report (PS * ps, int replevel, char type) { int rounds; if (ps->verbosity < replevel) return; sflush (ps); if (!ps->reports) ps->reports = -1; for (rounds = (ps->reports < 0) ? 2 : 1; rounds; rounds--) { if (ps->reports >= 0) picosat_fprintf (ps->out, "%s%c ", ps->prefix, type); relem (ps, "seconds", 1, ps->seconds); relem (ps, "level", 1, avglevel (ps)); assert (ps->fixed <= ps->max_var); relem (ps, "variables", 0, ps->max_var - ps->fixed); relem (ps, "used", 1, PERCENT (ps->vused, ps->max_var)); relem (ps, "original", 0, ps->noclauses); relem (ps, "conflicts", 0, ps->conflicts); // relem (ps, "decisions", 0, ps->decisions); // relem (ps, "conf/dec", 1, PERCENT(ps->conflicts,ps->decisions)); // relem (ps, "limit", 0, reduce_limit_on_lclauses (ps)); relem (ps, "learned", 0, ps->nlclauses); // relem (ps, "limit", 1, PERCENT (ps->nlclauses, reduce_limit_on_lclauses (ps))); relem (ps, "limit", 0, ps->lreduce); #ifdef STATS relem (ps, "learning", 1, PERCENT (ps->llused, ps->lladded)); #endif relem (ps, "agility", 1, dynamic_flips_per_assignment_per_mille (ps) / 10.0); // relem (ps, "original", 0, ps->noclauses); relem (ps, "MB", 1, mb (ps)); // relem (ps, "lladded", 0, ps->lladded); // relem (ps, "llused", 0, ps->llused); relem (ps, 0, 0, 0); ps->reports++; } /* Adapt this to the number of rows in your terminal. */ #define ROWS 25 if (ps->reports % (ROWS - 3) == (ROWS - 4)) rheader (ps); fflush (ps->out); } static int bcp_queue_is_empty (PS * ps) { if (ps->ttail != ps->thead) return 0; if (ps->ttail2 != ps->thead) return 0; #ifndef NADC if (ps->ttailado != ps->thead) return 0; #endif return 1; } static int satisfied (PS * ps) { assert (!ps->mtcls); assert (!ps->failed_assumption); if (ps->alstail < ps->alshead) return 0; assert (!ps->conflict); assert (bcp_queue_is_empty (ps)); return ps->thead == ps->trail + ps->max_var; /* all assigned */ } static void vrescore (PS * ps) { Rnk *p, *eor = ps->rnks + ps->max_var; for (p = ps->rnks + 1; p <= eor; p++) if (p->score != INFFLT) p->score = mulflt (p->score, ps->ilvinc); ps->vinc = mulflt (ps->vinc, ps->ilvinc);; #ifdef VISCORES ps->nvinc = mulflt (ps->nvinc, ps->lscore);; #endif } static void inc_score (PS * ps, Var * v) { Flt score; Rnk *r; #ifndef NFL if (ps->simplifying) return; #endif if (!v->level) return; if (v->internal) return; r = VAR2RNK (v); score = r->score; assert (score != INFFLT); score = addflt (score, ps->vinc); assert (score < INFFLT); r->score = score; if (r->pos > 0) hup (ps, r); if (score > ps->lscore) vrescore (ps); } static void inc_activity (PS * ps, Cls * c) { Act *p; if (!c->learned) return; if (c->size <= 2) return; p = CLS2ACT (c); *p = addflt (*p, ps->cinc); } static unsigned hashlevel (unsigned l) { return 1u << (l & 31); } static void push (PS * ps, Var * v) { if (ps->dhead == ps->eod) ENLARGE (ps->dfs, ps->dhead, ps->eod); *ps->dhead++ = v; } static Var * pop (PS * ps) { assert (ps->dfs < ps->dhead); return *--ps->dhead; } static void analyze (PS * ps) { unsigned open, minlevel, siglevels, l, old, i, orig; Lit *this, *other, **p, **q, **eol; Var *v, *u, **m, *start, *uip; Cls *c; assert (ps->conflict); assert (ps->ahead == ps->added); assert (ps->mhead == ps->marked); assert (ps->rhead == ps->resolved); /* First, search for First UIP variable and mark all resolved variables. * At the same time determine the minimum decision level involved. * Increase activities of resolved variables. */ q = ps->thead; open = 0; minlevel = ps->LEVEL; siglevels = 0; uip = 0; c = ps->conflict; for (;;) { add_antecedent (ps, c); inc_activity (ps, c); eol = end_of_lits (c); for (p = c->lits; p < eol; p++) { other = *p; if (other->val == TRUE) continue; assert (other->val == FALSE); u = LIT2VAR (other); if (u->mark) continue; u->mark = 1; inc_score (ps, u); use_var (ps, u); if (u->level == ps->LEVEL) { open++; } else { push_var_as_marked (ps, u); if (u->level) { /* The statistics counter 'nonminimizedllits' sums up the * number of literals that would be added if only the * 'first UIP' scheme for learned clauses would be used * and no clause minimization. */ ps->nonminimizedllits++; if (u->level < minlevel) minlevel = u->level; siglevels |= hashlevel (u->level); } else { assert (!u->level); assert (u->reason); } } } do { if (q == ps->trail) { uip = 0; goto DONE_FIRST_UIP; } this = *--q; uip = LIT2VAR (this); } while (!uip->mark); uip->mark = 0; c = var2reason (ps, uip); #ifdef NO_BINARY_CLAUSES if (c == &ps->impl) resetimpl (ps); #endif open--; if ((!open && ps->LEVEL) || !c) break; assert (c); } DONE_FIRST_UIP: if (uip) { assert (ps->LEVEL); this = VAR2LIT (uip); this += (this->val == TRUE); ps->nonminimizedllits++; ps->minimizedllits++; add_lit (ps, this); #ifdef STATS if (uip->reason) ps->uips++; #endif } else assert (!ps->LEVEL); /* Second, try to mark more intermediate variables, with the goal to * minimize the conflict clause. This is a DFS from already marked * variables backward through the implication graph. It tries to reach * other marked variables. If the search reaches an unmarked decision * variable or a variable assigned below the minimum level of variables in * the first uip learned clause or a level on which no variable has been * marked, then the variable from which the DFS is started is not * redundant. Otherwise the start variable is redundant and will * eventually be removed from the learned clause in step 4. We initially * implemented BFS, but then profiling revelead that this step is a bottle * neck for certain incremental applications. After switching to DFS this * hot spot went away. */ orig = ps->mhead - ps->marked; for (i = 0; i < orig; i++) { start = ps->marked[i]; assert (start->mark); assert (start != uip); assert (start->level < ps->LEVEL); if (!start->reason) continue; old = ps->mhead - ps->marked; assert (ps->dhead == ps->dfs); push (ps, start); while (ps->dhead > ps->dfs) { u = pop (ps); assert (u->mark); c = var2reason (ps, u); #ifdef NO_BINARY_CLAUSES if (c == &ps->impl) resetimpl (ps); #endif if (!c || ((l = u->level) && (l < minlevel || ((hashlevel (l) & ~siglevels))))) { while (ps->mhead > ps->marked + old) /* reset all marked */ (*--ps->mhead)->mark = 0; ps->dhead = ps->dfs; /* and DFS stack */ break; } eol = end_of_lits (c); for (p = c->lits; p < eol; p++) { v = LIT2VAR (*p); if (v->mark) continue; mark_var (ps, v); push (ps, v); } } } for (m = ps->marked; m < ps->mhead; m++) { v = *m; assert (v->mark); assert (!v->resolved); use_var (ps, v); c = var2reason (ps, v); if (!c) continue; #ifdef NO_BINARY_CLAUSES if (c == &ps->impl) resetimpl (ps); #endif eol = end_of_lits (c); for (p = c->lits; p < eol; p++) { other = *p; u = LIT2VAR (other); if (!u->level) continue; if (!u->mark) /* 'MARKTEST' */ break; } if (p != eol) continue; add_antecedent (ps, c); v->resolved = 1; } for (m = ps->marked; m < ps->mhead; m++) { v = *m; assert (v->mark); v->mark = 0; if (v->resolved) { v->resolved = 0; continue; } this = VAR2LIT (v); if (this->val == TRUE) this++; /* actually NOTLIT */ add_lit (ps, this); ps->minimizedllits++; } assert (ps->ahead <= ps->eoa); assert (ps->rhead <= ps->eor); ps->mhead = ps->marked; } static void fanalyze (PS * ps) { Lit ** eol, ** p, * lit; Cls * c, * reason; Var * v, * u; int next; double start = picosat_time_stamp (); assert (ps->failed_assumption); assert (ps->failed_assumption->val == FALSE); v = LIT2VAR (ps->failed_assumption); reason = var2reason (ps, v); if (!reason) return; #ifdef NO_BINARY_CLAUSES if (reason == &ps->impl) resetimpl (ps); #endif eol = end_of_lits (reason); for (p = reason->lits; p != eol; p++) { lit = *p; u = LIT2VAR (lit); if (u == v) continue; if (u->reason) break; } if (p == eol) return; assert (ps->ahead == ps->added); assert (ps->mhead == ps->marked); assert (ps->rhead == ps->resolved); next = 0; mark_var (ps, v); add_lit (ps, NOTLIT (ps->failed_assumption)); do { v = ps->marked[next++]; use_var (ps, v); if (v->reason) { reason = var2reason (ps, v); #ifdef NO_BINARY_CLAUSES if (reason == &ps->impl) resetimpl (ps); #endif add_antecedent (ps, reason); eol = end_of_lits (reason); for (p = reason->lits; p != eol; p++) { lit = *p; u = LIT2VAR (lit); if (u == v) continue; if (u->mark) continue; mark_var (ps, u); } } else { lit = VAR2LIT (v); if (lit->val == TRUE) lit = NOTLIT (lit); add_lit (ps, lit); } } while (ps->marked + next < ps->mhead); c = add_simplified_clause (ps, 1); v = LIT2VAR (ps->failed_assumption); reason = v->reason; #ifdef NO_BINARY_CLAUSES if (!ISLITREASON (reason)) #endif { assert (reason->locked); reason->locked = 0; if (reason->learned && reason->size > 2) { assert (ps->llocked > 0); ps->llocked--; } } #ifdef NO_BINARY_CLAUSES if (c == &ps->impl) { c = impl2reason (ps, NOTLIT (ps->failed_assumption)); } else #endif { assert (c->learned); assert (!c->locked); c->locked = 1; if (c->size > 2) { ps->llocked++; assert (ps->llocked > 0); } } v->reason = c; while (ps->mhead > ps->marked) (*--ps->mhead)->mark = 0; if (ps->verbosity) picosat_fprintf (ps->out, "%sfanalyze took %.1f seconds\n", ps->prefix, picosat_time_stamp () - start); } /* Propagate assignment of 'this' to 'FALSE' by visiting all binary clauses in * which 'this' occurs. */ inline static void prop2 (PS * ps, Lit * this) { #ifdef NO_BINARY_CLAUSES Lit ** l, ** start; Ltk * lstk; #else Cls * c, ** p; Cls * next; #endif Lit * other; Val tmp; assert (this->val == FALSE); #ifdef NO_BINARY_CLAUSES lstk = LIT2IMPLS (this); start = lstk->start; l = start + lstk->count; while (l != start) { /* The counter 'visits' is the number of clauses that are * visited during propagations of assignments. */ ps->visits++; #ifdef STATS ps->bvisits++; #endif other = *--l; tmp = other->val; if (tmp == TRUE) { #ifdef STATS ps->othertrue++; ps->othertrue2++; if (LIT2VAR (other)->level < ps->LEVEL) ps->othertrue2u++; #endif continue; } if (tmp != FALSE) { assign_forced (ps, other, LIT2REASON (NOTLIT(this))); continue; } if (ps->conflict == &ps->cimpl) resetcimpl (ps); ps->conflict = setcimpl (ps, this, other); } #else /* Traverse all binary clauses with 'this'. Head/Tail pointers for binary * clauses do not have to be modified here. */ p = LIT2IMPLS (this); for (c = *p; c; c = next) { ps->visits++; #ifdef STATS ps->bvisits++; #endif assert (!c->collect); #ifdef TRACE assert (!c->collected); #endif assert (c->size == 2); other = c->lits[0]; if (other == this) { next = c->next[0]; other = c->lits[1]; } else next = c->next[1]; tmp = other->val; if (tmp == TRUE) { #ifdef STATS ps->othertrue++; ps->othertrue2++; if (LIT2VAR (other)->level < ps->LEVEL) ps->othertrue2u++; #endif continue; } if (tmp == FALSE) ps->conflict = c; else assign_forced (ps, other, c); /* unit clause */ } #endif /* !defined(NO_BINARY_CLAUSES) */ } #ifndef NDSC static int should_disconnect_head_tail (PS * ps, Lit * lit) { unsigned litlevel; Var * v; assert (lit->val == TRUE); v = LIT2VAR (lit); litlevel = v->level; if (!litlevel) return 1; #ifndef NFL if (ps->simplifying) return 0; #endif return litlevel < ps->LEVEL; } #endif inline static void propl (PS * ps, Lit * this) { Lit **l, *other, *prev, *new_lit, **eol; Cls *next, **htp_ptr, **new_htp_ptr; Cls *c; #ifdef STATS unsigned size; #endif htp_ptr = LIT2HTPS (this); assert (this->val == FALSE); /* Traverse all non binary clauses with 'this'. Head/Tail pointers are * updated as well. */ for (c = *htp_ptr; c; c = next) { ps->visits++; #ifdef STATS size = c->size; assert (size >= 3); ps->traversals++; /* other is dereferenced at least */ if (size == 3) ps->tvisits++; else if (size >= 4) { ps->lvisits++; ps->ltraversals++; } #endif #ifdef TRACE assert (!c->collected); #endif assert (c->size > 0); other = c->lits[0]; if (other != this) { assert (c->size != 1); c->lits[0] = this; c->lits[1] = other; next = c->next[1]; c->next[1] = c->next[0]; c->next[0] = next; } else if (c->size == 1) /* With assumptions we need to * traverse unit clauses as well. */ { assert (!ps->conflict); ps->conflict = c; break; } else { assert (other == this && c->size > 1); other = c->lits[1]; next = c->next[0]; } assert (other == c->lits[1]); assert (this == c->lits[0]); assert (next == c->next[0]); assert (!c->collect); if (other->val == TRUE) { #ifdef STATS ps->othertrue++; ps->othertruel++; #endif #ifndef NDSC if (should_disconnect_head_tail (ps, other)) { new_htp_ptr = LIT2DHTPS (other); c->next[0] = *new_htp_ptr; *new_htp_ptr = c; #ifdef STATS ps->othertruelu++; #endif *htp_ptr = next; continue; } #endif htp_ptr = c->next; continue; } l = c->lits + 1; eol = (Lit**) c->lits + c->size; prev = this; while (++l != eol) { #ifdef STATS if (size >= 3) { ps->traversals++; if (size > 3) ps->ltraversals++; } #endif new_lit = *l; *l = prev; prev = new_lit; if (new_lit->val != FALSE) break; } if (l == eol) { while (l > c->lits + 2) { new_lit = *--l; *l = prev; prev = new_lit; } assert (c->lits[0] == this); assert (other == c->lits[1]); if (other->val == FALSE) /* found conflict */ { assert (!ps->conflict); ps->conflict = c; return; } assign_forced (ps, other, c); /* unit clause */ htp_ptr = c->next; } else { assert (new_lit->val == TRUE || new_lit->val == UNDEF); c->lits[0] = new_lit; // *l = this; new_htp_ptr = LIT2HTPS (new_lit); c->next[0] = *new_htp_ptr; *new_htp_ptr = c; *htp_ptr = next; } } } #ifndef NADC static unsigned primes[] = { 996293, 330643, 753947, 500873 }; #define PRIMES ((sizeof primes)/sizeof *primes) static unsigned hash_ado (Lit ** ado, unsigned salt) { unsigned i, res, tmp; Lit ** p, * lit; assert (salt < PRIMES); i = salt; res = 0; for (p = ado; (lit = *p); p++) { assert (lit->val); tmp = res >> 31; res <<= 1; if (lit->val > 0) res |= 1; assert (i < PRIMES); res *= primes[i++]; if (i == PRIMES) i = 0; res += tmp; } return res & (ps->szadotab - 1); } static unsigned cmp_ado (Lit ** a, Lit ** b) { Lit ** p, ** q, * l, * k; int res; for (p = a, q = b; (l = *p); p++, q++) { k = *q; assert (k); if ((res = (l->val - k->val))) return res; } assert (!*q); return 0; } static Lit *** find_ado (Lit ** ado) { Lit *** res, ** other; unsigned pos, delta; pos = hash_ado (ado, 0); assert (pos < ps->szadotab); res = ps->adotab + pos; other = *res; if (!other || !cmp_ado (other, ado)) return res; delta = hash_ado (ado, 1); if (!(delta & 1)) delta++; assert (delta & 1); assert (delta < ps->szadotab); for (;;) { pos += delta; if (pos >= ps->szadotab) pos -= ps->szadotab; assert (pos < ps->szadotab); res = ps->adotab + pos; other = *res; if (!other || !cmp_ado (other, ado)) return res; } } static void enlarge_adotab (PS * ps) { /* TODO make this generic */ ABORTIF (ps->szadotab, "internal: all different objects table needs larger initial size"); assert (!ps->nadotab); ps->szadotab = 10000; NEWN (ps->adotab, ps->szadotab); CLRN (ps->adotab, ps->szadotab); } static int propado (Var * v) { Lit ** p, ** q, *** adotabpos, **ado, * lit; Var * u; if (ps->level && ps->adodisabled) return 1; assert (!ps->conflict); assert (!ps->adoconflict); assert (VAR2LIT (v)->val != UNDEF); assert (!v->adotabpos); if (!v->ado) return 1; assert (v->inado); for (p = v->ado; (lit = *p); p++) if (lit->val == UNDEF) { u = LIT2VAR (lit); assert (!u->ado); u->ado = v->ado; v->ado = 0; return 1; } if (4 * ps->nadotab >= 3 * ps->szadotab) /* at least 75% filled */ enlarge_adotab (ps); adotabpos = find_ado (v->ado); ado = *adotabpos; if (!ado) { ps->nadotab++; v->adotabpos = adotabpos; *adotabpos = v->ado; return 1; } assert (ado != v->ado); ps->adoconflict = new_clause (2 * llength (ado), 1); q = ps->adoconflict->lits; for (p = ado; (lit = *p); p++) *q++ = lit->val == FALSE ? lit : NOTLIT (lit); for (p = v->ado; (lit = *p); p++) *q++ = lit->val == FALSE ? lit : NOTLIT (lit); assert (q == ENDOFCLS (ps->adoconflict)); ps->conflict = ps->adoconflict; ps->adoconflicts++; return 0; } #endif static void bcp (PS * ps) { int props = 0; assert (!ps->conflict); if (ps->mtcls) return; for (;;) { if (ps->ttail2 < ps->thead) /* prioritize implications */ { props++; prop2 (ps, NOTLIT (*ps->ttail2++)); } else if (ps->ttail < ps->thead) /* unit clauses or clauses with length > 2 */ { if (ps->conflict) break; propl (ps, NOTLIT (*ps->ttail++)); if (ps->conflict) break; } #ifndef NADC else if (ps->ttailado < ps->thead) { if (ps->conflict) break; propado (ps, LIT2VAR (*ps->ttailado++)); if (ps->conflict) break; } #endif else break; /* all assignments propagated, so break */ } ps->propagations += props; } static unsigned drive (PS * ps) { unsigned res, vlevel; Lit **p; Var *v; res = 0; for (p = ps->added; p < ps->ahead; p++) { v = LIT2VAR (*p); vlevel = v->level; assert (vlevel <= ps->LEVEL); if (vlevel < ps->LEVEL && vlevel > res) res = vlevel; } return res; } #ifdef VISCORES static void viscores (PS * ps) { Rnk *p, *eor = ps->rnks + ps->max_var; char name[100], cmd[200]; FILE * data; Flt s; int i; for (p = ps->rnks + 1; p <= ps->eor; p++) { s = p->score; if (s == INFFLT) continue; s = mulflt (s, ps->nvinc); assert (flt2double (s) <= 1.0); } sprintf (name, "/tmp/picosat-viscores/data/%08u", ps->conflicts); sprintf (cmd, "sort -n|nl>%s", name); data = popen (cmd, "w"); for (p = ps->rnks + 1; p <= ps->eor; p++) { s = p->score; if (s == INFFLT) continue; s = mulflt (s, ps->nvinc); picosat_fprintf (data, "%lf %d\n", 100.0 * flt2double (s), (int)(p - ps->rnks)); } fflush (data); pclose (data); for (i = 0; i < 8; i++) { sprintf (cmd, "awk '$3%%8==%d' %s>%s.%d", i, name, name, i); system (cmd); } picosat_fprintf (ps->fviscores, "set title \"%u\"\n", ps->conflicts); picosat_fprintf (ps->fviscores, "plot [0:%u] 0, 100 * (1 - 1/1.1), 100", ps->max_var); for (i = 0; i < 8; i++) picosat_fprintf (ps->fviscores, ", \"%s.%d\" using 1:2:3 with labels tc lt %d", name, i, i + 1); picosat_fputc ('\n', ps->fviscores); fflush (ps->fviscores); #ifndef WRITEGIF usleep (50000); /* refresh rate of 20 Hz */ #endif } #endif static void crescore (PS * ps) { Cls **p, *c; Act *a; Flt factor; int l = log2flt (ps->cinc); assert (l > 0); factor = base2flt (1, -l); for (p = ps->lclauses; p != ps->lhead; p++) { c = *p; if (!c) continue; #ifdef TRACE if (c->collected) continue; #endif assert (c->learned); if (c->size <= 2) continue; a = CLS2ACT (c); *a = mulflt (*a, factor); } ps->cinc = mulflt (ps->cinc, factor); } static void inc_vinc (PS * ps) { #ifdef VISCORES ps->nvinc = mulflt (ps->nvinc, ps->fvinc); #endif ps->vinc = mulflt (ps->vinc, ps->ifvinc); } inline static void inc_max_var (PS * ps) { Lit *lit; Rnk *r; Var *v; assert (ps->max_var < ps->size_vars); if (ps->max_var + 1 == ps->size_vars) enlarge (ps, ps->size_vars + 2*(ps->size_vars + 3) / 4); /* +25% */ ps->max_var++; /* new index of variable */ assert (ps->max_var); /* no unsigned overflow */ assert (ps->max_var < ps->size_vars); lit = ps->lits + 2 * ps->max_var; lit[0].val = lit[1].val = UNDEF; memset (ps->htps + 2 * ps->max_var, 0, 2 * sizeof *ps->htps); #ifndef NDSC memset (ps->dhtps + 2 * ps->max_var, 0, 2 * sizeof *ps->dhtps); #endif memset (ps->impls + 2 * ps->max_var, 0, 2 * sizeof *ps->impls); memset (ps->jwh + 2 * ps->max_var, 0, 2 * sizeof *ps->jwh); v = ps->vars + ps->max_var; /* initialize variable components */ CLR (v); r = ps->rnks + ps->max_var; /* initialize rank */ CLR (r); hpush (ps, r); } static void force (PS * ps, Cls * c) { Lit ** p, ** eol, * lit, * forced; Cls * reason; forced = 0; reason = c; eol = end_of_lits (c); for (p = c->lits; p < eol; p++) { lit = *p; if (lit->val == UNDEF) { assert (!forced); forced = lit; #ifdef NO_BINARY_CLAUSES if (c == &ps->impl) reason = LIT2REASON (NOTLIT (p[p == c->lits ? 1 : -1])); #endif } else assert (lit->val == FALSE); } #ifdef NO_BINARY_CLAUSES if (c == &ps->impl) resetimpl (ps); #endif if (!forced) return; assign_forced (ps, forced, reason); } static void inc_lreduce (PS * ps) { #ifdef STATS ps->inclreduces++; #endif ps->lreduce *= FREDUCE; ps->lreduce /= 100; report (ps, 1, '+'); } static void backtrack (PS * ps) { unsigned new_level; Cls * c; ps->conflicts++; LOG ( picosat_fprintf (ps->out, "%sconflict ", ps->prefix); dumpclsnl (ps, ps->conflict)); analyze (ps); new_level = drive (ps); // TODO: why not? assert (new_level != 1 || (ps->ahead - ps->added) == 2); c = add_simplified_clause (ps, 1); undo (ps, new_level); force (ps, c); if ( #ifndef NFL !ps->simplifying && #endif !--ps->lreduceadjustcnt) { /* With FREDUCE==110 and FREDADJ=121 we stir 'lreduce' to be * proportional to 'sqrt(conflicts)'. In earlier version we actually * used 'FREDADJ=150', which results in 'lreduce' to approximate * 'conflicts^(log(1.1)/log(1.5))' which is close to the fourth root * of 'conflicts', since log(1.1)/log(1.5)=0.235 (as observed by * Donald Knuth). The square root is the same we get by a Glucose * style increase, which simply adds a constant at every reduction. * This would be way simpler to implement but for now we keep the more * complicated code using the adjust increments and counters. */ ps->lreduceadjustinc *= FREDADJ; ps->lreduceadjustinc /= 100; ps->lreduceadjustcnt = ps->lreduceadjustinc; inc_lreduce (ps); } if (ps->verbosity >= 4 && !(ps->conflicts % 1000)) report (ps, 4, 'C'); } static void inc_cinc (PS * ps) { ps->cinc = mulflt (ps->cinc, ps->fcinc); if (ps->lcinc < ps->cinc) crescore (ps); } static void incincs (PS * ps) { inc_vinc (ps); inc_cinc (ps); #ifdef VISCORES viscores (ps); #endif } static void disconnect_clause (PS * ps, Cls * c) { assert (c->connected); if (c->size > 2) { if (c->learned) { assert (ps->nlclauses > 0); ps->nlclauses--; assert (ps->llits >= c->size); ps->llits -= c->size; } else { assert (ps->noclauses > 0); ps->noclauses--; assert (ps->olits >= c->size); ps->olits -= c->size; } } #ifndef NDEBUG c->connected = 0; #endif } static int clause_is_toplevel_satisfied (PS * ps, Cls * c) { Lit *lit, **p, **eol = end_of_lits (c); Var *v; for (p = c->lits; p < eol; p++) { lit = *p; if (lit->val == TRUE) { v = LIT2VAR (lit); if (!v->level) return 1; } } return 0; } static int collect_clause (PS * ps, Cls * c) { assert (c->collect); c->collect = 0; #ifdef TRACE assert (!c->collected); c->collected = 1; #endif disconnect_clause (ps, c); #ifdef TRACE if (ps->trace && (!c->learned || c->used)) return 0; #endif delete_clause (ps, c); return 1; } static size_t collect_clauses (PS * ps) { Cls *c, **p, **q, * next; Lit * lit, * eol; size_t res; int i; res = ps->current_bytes; eol = ps->lits + 2 * ps->max_var + 1; for (lit = ps->lits + 2; lit <= eol; lit++) { for (i = 0; i <= 1; i++) { if (i) { #ifdef NO_BINARY_CLAUSES Ltk * lstk = LIT2IMPLS (lit); Lit ** r, ** s; r = lstk->start; if (lit->val != TRUE || LIT2VAR (lit)->level) for (s = r; s < lstk->start + lstk->count; s++) { Lit * other = *s; Var *v = LIT2VAR (other); if (v->level || other->val != TRUE) *r++ = other; } lstk->count = r - lstk->start; continue; #else p = LIT2IMPLS (lit); #endif } else p = LIT2HTPS (lit); for (c = *p; c; c = next) { q = c->next; if (c->lits[0] != lit) q++; next = *q; if (c->collect) *p = next; else p = q; } } } #ifndef NDSC for (lit = ps->lits + 2; lit <= eol; lit++) { p = LIT2DHTPS (lit); while ((c = *p)) { Lit * other = c->lits[0]; if (other == lit) { q = c->next + 1; } else { assert (c->lits[1] == lit); q = c->next; } if (c->collect) *p = *q; else p = q; } } #endif for (p = SOC; p != EOC; p = NXC (p)) { c = *p; if (!c) continue; if (!c->collect) continue; if (collect_clause (ps, c)) *p = 0; } #ifdef TRACE if (!ps->trace) #endif { q = ps->oclauses; for (p = q; p < ps->ohead; p++) if ((c = *p)) *q++ = c; ps->ohead = q; q = ps->lclauses; for (p = q; p < ps->lhead; p++) if ((c = *p)) *q++ = c; ps->lhead = q; } assert (ps->current_bytes <= res); res -= ps->current_bytes; ps->recycled += res; LOG ( picosat_fprintf (ps->out, "%scollected %ld bytes\n", ps->prefix, (long)res)); return res; } static int need_to_reduce (PS * ps) { return ps->nlclauses >= reduce_limit_on_lclauses (ps); } #ifdef NLUBY static void inc_drestart (PS * ps) { ps->drestart *= FRESTART; ps->drestart /= 100; if (ps->drestart >= MAXRESTART) ps->drestart = MAXRESTART; } static void inc_ddrestart (PS * ps) { ps->ddrestart *= FRESTART; ps->ddrestart /= 100; if (ps->ddrestart >= MAXRESTART) ps->ddrestart = MAXRESTART; } #else static unsigned luby (unsigned i) { unsigned k; for (k = 1; k < 32; k++) if (i == (1u << k) - 1) return 1u << (k - 1); for (k = 1;; k++) if ((1u << (k - 1)) <= i && i < (1u << k) - 1) return luby (i - (1u << (k-1)) + 1); } #endif #ifndef NLUBY static void inc_lrestart (PS * ps, int skip) { unsigned delta; delta = 100 * luby (++ps->lubycnt); ps->lrestart = ps->conflicts + delta; if (ps->waslubymaxdelta) report (ps, 1, skip ? 'N' : 'R'); else report (ps, 2, skip ? 'n' : 'r'); if (delta > ps->lubymaxdelta) { ps->lubymaxdelta = delta; ps->waslubymaxdelta = 1; } else ps->waslubymaxdelta = 0; } #endif static void init_restart (PS * ps) { #ifdef NLUBY /* TODO: why is it better in incremental usage to have smaller initial * outer restart interval? */ ps->ddrestart = ps->calls > 1 ? MINRESTART : 1000; ps->drestart = MINRESTART; ps->lrestart = ps->conflicts + ps->drestart; #else ps->lubycnt = 0; ps->lubymaxdelta = 0; ps->waslubymaxdelta = 0; inc_lrestart (ps, 0); #endif } static void restart (PS * ps) { int skip; #ifdef NLUBY char kind; int outer; inc_drestart (ps); outer = (ps->drestart >= ps->ddrestart); if (outer) skip = very_high_agility (ps); else skip = high_agility (ps); #else skip = medium_agility (ps); #endif #ifdef STATS if (skip) ps->skippedrestarts++; #endif assert (ps->conflicts >= ps->lrestart); if (!skip) { ps->restarts++; assert (ps->LEVEL > 1); LOG ( picosat_fprintf (ps->out, "%srestart %u\n", ps->prefix, ps->restarts)); undo (ps, 0); } #ifdef NLUBY if (outer) { kind = skip ? 'N' : 'R'; inc_ddrestart (ps); ps->drestart = MINRESTART; } else if (skip) { kind = 'n'; } else { kind = 'r'; } assert (ps->drestart <= MAXRESTART); ps->lrestart = ps->conflicts + ps->drestart; assert (ps->lrestart > ps->conflicts); report (outer ? 1 : 2, kind); #else inc_lrestart (ps, skip); #endif } inline static void assign_decision (PS * ps, Lit * lit) { assert (!ps->conflict); ps->LEVEL++; LOG ( picosat_fprintf (ps->out, "%snew level %u\n", ps->prefix, ps->LEVEL)); LOG ( picosat_fprintf (ps->out, "%sassign %d at level %d <= DECISION\n", ps->prefix, LIT2INT (lit), ps->LEVEL)); assign (ps, lit, 0); } #ifndef NFL static int lit_has_binary_clauses (PS * ps, Lit * lit) { #ifdef NO_BINARY_CLAUSES Ltk* lstk = LIT2IMPLS (lit); return lstk->count != 0; #else return *LIT2IMPLS (lit) != 0; #endif } static void flbcp (PS * ps) { #ifdef STATS unsigned long long propagaions_before_bcp = ps->propagations; #endif bcp (ps); #ifdef STATS ps->flprops += ps->propagations - propagaions_before_bcp; #endif } inline static int cmp_inverse_rnk (PS * ps, Rnk * a, Rnk * b) { (void) ps; return -cmp_rnk (a, b); } inline static Flt rnk2jwh (PS * ps, Rnk * r) { Flt res, sum, pjwh, njwh; Lit * plit, * nlit; plit = RNK2LIT (r); nlit = plit + 1; pjwh = *LIT2JWH (plit); njwh = *LIT2JWH (nlit); res = mulflt (pjwh, njwh); sum = addflt (pjwh, njwh); sum = mulflt (sum, base2flt (1, -10)); res = addflt (res, sum); return res; } static int cmp_inverse_jwh_rnk (PS * ps, Rnk * r, Rnk * s) { Flt a = rnk2jwh (ps, r); Flt b = rnk2jwh (ps, s); int res = cmpflt (a, b); if (res) return -res; return cmp_inverse_rnk (ps, r, s); } static void faillits (PS * ps) { unsigned i, j, old_trail_count, common, saved_count; unsigned new_saved_size, oldladded = ps->ladded; unsigned long long limit, delta; Lit * lit, * other, * pivot; Rnk * r, ** p, ** q; int new_trail_count; double started; if (ps->plain) return; if (ps->heap + 1 >= ps->hhead) return; if (ps->propagations < ps->fllimit) return; sflush (ps); started = ps->seconds; ps->flcalls++; #ifdef STATSA ps->flrounds++; #endif delta = ps->propagations/10; if (delta >= 100*1000*1000) delta = 100*1000*1000; else if (delta <= 100*1000) delta = 100*1000; limit = ps->propagations + delta; ps->fllimit = ps->propagations; assert (!ps->LEVEL); assert (ps->simplifying); if (ps->flcalls <= 1) SORT (Rnk *, cmp_inverse_jwh_rnk, ps->heap + 1, ps->hhead - (ps->heap + 1)); else SORT (Rnk *, cmp_inverse_rnk, ps->heap + 1, ps->hhead - (ps->heap + 1)); i = 1; /* NOTE: heap starts at position '1' */ while (ps->propagations < limit) { if (ps->heap + i == ps->hhead) { if (ps->ladded == oldladded) break; i = 1; #ifdef STATS ps->flrounds++; #endif oldladded = ps->ladded; } assert (ps->heap + i < ps->hhead); r = ps->heap[i++]; lit = RNK2LIT (r); if (lit->val) continue; if (!lit_has_binary_clauses (ps, NOTLIT (lit))) { #ifdef STATS ps->flskipped++; #endif continue; } #ifdef STATS ps->fltried++; #endif LOG ( picosat_fprintf (ps->out, "%strying %d as failed literal\n", ps->prefix, LIT2INT (lit))); assign_decision (ps, lit); old_trail_count = ps->thead - ps->trail; flbcp (ps); if (ps->conflict) { EXPLICITLY_FAILED_LITERAL: LOG ( picosat_fprintf (ps->out, "%sfound explicitly failed literal %d\n", ps->prefix, LIT2INT (lit))); ps->failedlits++; ps->efailedlits++; backtrack (ps); flbcp (ps); if (!ps->conflict) continue; CONTRADICTION: assert (!ps->LEVEL); backtrack (ps); assert (ps->mtcls); goto RETURN; } if (ps->propagations >= limit) { undo (ps, 0); break; } lit = NOTLIT (lit); if (!lit_has_binary_clauses (ps, NOTLIT (lit))) { #ifdef STATS ps->flskipped++; #endif undo (ps, 0); continue; } #ifdef STATS ps->fltried++; #endif LOG ( picosat_fprintf (ps->out, "%strying %d as failed literals\n", ps->prefix, LIT2INT (lit))); new_trail_count = ps->thead - ps->trail; saved_count = new_trail_count - old_trail_count; if (saved_count > ps->saved_size) { new_saved_size = ps->saved_size ? 2 * ps->saved_size : 1; while (saved_count > new_saved_size) new_saved_size *= 2; RESIZEN (ps->saved, ps->saved_size, new_saved_size); ps->saved_size = new_saved_size; } for (j = 0; j < saved_count; j++) ps->saved[j] = ps->trail[old_trail_count + j]; undo (ps, 0); assign_decision (ps, lit); flbcp (ps); if (ps->conflict) goto EXPLICITLY_FAILED_LITERAL; pivot = (ps->thead - ps->trail <= new_trail_count) ? lit : NOTLIT (lit); common = 0; for (j = 0; j < saved_count; j++) if ((other = ps->saved[j])->val == TRUE) ps->saved[common++] = other; undo (ps, 0); LOG (if (common) picosat_fprintf (ps->out, "%sfound %d literals implied by %d and %d\n", ps->prefix, common, LIT2INT (NOTLIT (lit)), LIT2INT (lit))); #if 1 // set to zero to disable 'lifting' for (j = 0; j < common /* TODO: For some Velev benchmarks, extracting the common implicit * failed literals took quite some time. This needs to be fixed by * a dedicated analyzer. Up to then we bound the number of * propagations in this loop as well. */ && ps->propagations < limit + delta ; j++) { other = ps->saved[j]; if (other->val == TRUE) continue; assert (!other->val); LOG ( picosat_fprintf (ps->out, "%sforcing %d as forced implicitly failed literal\n", ps->prefix, LIT2INT (other))); assert (pivot != NOTLIT (other)); assert (pivot != other); assign_decision (ps, NOTLIT (other)); flbcp (ps); assert (ps->LEVEL == 1); if (ps->conflict) { backtrack (ps); assert (!ps->LEVEL); } else { assign_decision (ps, pivot); flbcp (ps); backtrack (ps); if (ps->LEVEL) { assert (ps->LEVEL == 1); flbcp (ps); if (ps->conflict) { backtrack (ps); assert (!ps->LEVEL); } else { assign_decision (ps, NOTLIT (pivot)); flbcp (ps); backtrack (ps); if (ps->LEVEL) { assert (ps->LEVEL == 1); flbcp (ps); if (!ps->conflict) { #ifdef STATS ps->floopsed++; #endif undo (ps, 0); continue; } backtrack (ps); } assert (!ps->LEVEL); } assert (!ps->LEVEL); } } assert (!ps->LEVEL); flbcp (ps); ps->failedlits++; ps->ifailedlits++; if (ps->conflict) goto CONTRADICTION; } #endif } ps->fllimit += 9 * (ps->propagations - ps->fllimit); /* 10% for failed literals */ RETURN: /* First flush top level assigned literals. Those are prohibited from * being pushed up the heap during 'faillits' since 'simplifying' is set. */ assert (ps->heap < ps->hhead); for (p = q = ps->heap + 1; p < ps->hhead; p++) { r = *p; lit = RNK2LIT (r); if (lit->val) r->pos = 0; else *q++ = r; } /* Then resort with respect to EVSIDS score and fix positions. */ SORT (Rnk *, cmp_inverse_rnk, ps->heap + 1, ps->hhead - (ps->heap + 1)); for (p = ps->heap + 1; p < ps->hhead; p++) (*p)->pos = p - ps->heap; sflush (ps); ps->flseconds += ps->seconds - started; } #endif static void simplify (PS * ps, int forced) { Lit * lit, * notlit, ** t; unsigned collect, delta; #ifdef STATS size_t bytes_collected; #endif int * q, ilit; Cls **p, *c; Var * v; #ifndef NDEDBUG (void) forced; #endif assert (!ps->mtcls); assert (!satisfied (ps)); assert (forced || ps->lsimplify <= ps->propagations); assert (forced || ps->fsimplify <= ps->fixed); if (ps->LEVEL) undo (ps, 0); #ifndef NFL ps->simplifying = 1; faillits (ps); ps->simplifying = 0; if (ps->mtcls) return; #endif if (ps->cils != ps->cilshead) { assert (ps->ttail == ps->thead); assert (ps->ttail2 == ps->thead); ps->ttail = ps->trail; for (t = ps->trail; t < ps->thead; t++) { lit = *t; v = LIT2VAR (lit); if (v->internal) { assert (LIT2INT (lit) < 0); assert (lit->val == TRUE); unassign (ps, lit); } else *ps->ttail++ = lit; } ps->ttail2 = ps->thead = ps->ttail; for (q = ps->cils; q != ps->cilshead; q++) { ilit = *q; assert (0 < ilit && ilit <= (int) ps->max_var); v = ps->vars + ilit; assert (v->internal); v->level = 0; v->reason = 0; lit = int2lit (ps, -ilit); assert (lit->val == UNDEF); lit->val = TRUE; notlit = NOTLIT (lit); assert (notlit->val == UNDEF); notlit->val = FALSE; } } collect = 0; for (p = SOC; p != EOC; p = NXC (p)) { c = *p; if (!c) continue; #ifdef TRACE if (c->collected) continue; #endif if (c->locked) continue; assert (!c->collect); if (clause_is_toplevel_satisfied (ps, c)) { mark_clause_to_be_collected (c); collect++; } } LOG ( picosat_fprintf (ps->out, "%scollecting %d clauses\n", ps->prefix, collect)); #ifdef STATS bytes_collected = #endif collect_clauses (ps); #ifdef STATS ps->srecycled += bytes_collected; #endif if (ps->cils != ps->cilshead) { for (q = ps->cils; q != ps->cilshead; q++) { ilit = *q; assert (0 < ilit && ilit <= (int) ps->max_var); assert (ps->vars[ilit].internal); if (ps->rilshead == ps->eorils) ENLARGE (ps->rils, ps->rilshead, ps->eorils); *ps->rilshead++ = ilit; lit = int2lit (ps, -ilit); assert (lit->val == TRUE); lit->val = UNDEF; notlit = NOTLIT (lit); assert (notlit->val == FALSE); notlit->val = UNDEF; } ps->cilshead = ps->cils; } delta = 10 * (ps->olits + ps->llits) + 100000; if (delta > 2000000) delta = 2000000; ps->lsimplify = ps->propagations + delta; ps->fsimplify = ps->fixed; ps->simps++; report (ps, 1, 's'); } static void iteration (PS * ps) { assert (!ps->LEVEL); assert (bcp_queue_is_empty (ps)); assert (ps->isimplify < ps->fixed); ps->iterations++; report (ps, 2, 'i'); #ifdef NLUBY ps->drestart = MINRESTART; ps->lrestart = ps->conflicts + ps->drestart; #else init_restart (ps); #endif ps->isimplify = ps->fixed; } static int cmp_glue_activity_size (PS * ps, Cls * c, Cls * d) { Act a, b, * p, * q; (void) ps; assert (c->learned); assert (d->learned); if (c->glue < d->glue) // smaller glue preferred return 1; if (c->glue > d->glue) return -1; p = CLS2ACT (c); q = CLS2ACT (d); a = *p; b = *q; if (a < b) // then higher activity return -1; if (b < a) return 1; if (c->size < d->size) // then smaller size return 1; if (c->size > d->size) return -1; return 0; } static void reduce (PS * ps, unsigned percentage) { unsigned redcount, lcollect, collect, target; #ifdef STATS size_t bytes_collected; #endif Cls **p, *c; assert (ps->rhead == ps->resolved); ps->lastreduceconflicts = ps->conflicts; assert (percentage <= 100); LOG ( picosat_fprintf (ps->out, "%sreducing %u%% learned clauses\n", ps->prefix, percentage)); while (ps->nlclauses - ps->llocked > (unsigned)(ps->eor - ps->resolved)) ENLARGE (ps->resolved, ps->rhead, ps->eor); collect = 0; lcollect = 0; for (p = ((ps->fsimplify < ps->fixed) ? SOC : ps->lclauses); p != EOC; p = NXC (p)) { c = *p; if (!c) continue; #ifdef TRACE if (c->collected) continue; #endif if (c->locked) continue; assert (!c->collect); if (ps->fsimplify < ps->fixed && clause_is_toplevel_satisfied (ps, c)) { mark_clause_to_be_collected (c); collect++; if (c->learned && c->size > 2) lcollect++; continue; } if (!c->learned) continue; if (c->size <= 2) continue; assert (ps->rhead < ps->eor); *ps->rhead++ = c; } assert (ps->rhead <= ps->eor); ps->fsimplify = ps->fixed; redcount = ps->rhead - ps->resolved; SORT (Cls *, cmp_glue_activity_size, ps->resolved, redcount); assert (ps->nlclauses >= lcollect); target = ps->nlclauses - lcollect + 1; target = (percentage * target + 99) / 100; if (target >= redcount) target = redcount; ps->rhead = ps->resolved + target; while (ps->rhead > ps->resolved) { c = *--ps->rhead; mark_clause_to_be_collected (c); collect++; if (c->learned && c->size > 2) /* just for consistency */ lcollect++; } if (collect) { ps->reductions++; #ifdef STATS bytes_collected = #endif collect_clauses (ps); #ifdef STATS ps->rrecycled += bytes_collected; #endif report (ps, 2, '-'); } if (!lcollect) inc_lreduce (ps); /* avoid dead lock */ assert (ps->rhead == ps->resolved); } static void init_reduce (PS * ps) { // lreduce = loadded / 2; ps->lreduce = 1000; if (ps->lreduce < 100) ps->lreduce = 100; if (ps->verbosity) picosat_fprintf (ps->out, "%s\n%sinitial reduction limit %u clauses\n%s\n", ps->prefix, ps->prefix, ps->lreduce, ps->prefix); } static unsigned rng (PS * ps) { unsigned res = ps->srng; ps->srng *= 1664525u; ps->srng += 1013904223u; NOLOG ( picosat_fprintf (ps->out, "%srng () = %u\n", ps->prefix, res)); return res; } static unsigned rrng (PS * ps, unsigned low, unsigned high) { unsigned long long tmp; unsigned res, elements; assert (low <= high); elements = high - low + 1; tmp = rng (ps); tmp *= elements; tmp >>= 32; tmp += low; res = tmp; NOLOG ( picosat_fprintf (ps->out, "%srrng (ps, %u, %u) = %u\n", ps->prefix, low, high, res)); assert (low <= res); assert (res <= high); return res; } static Lit * decide_phase (PS * ps, Lit * lit) { Lit * not_lit = NOTLIT (lit); Var *v = LIT2VAR (lit); assert (LIT2SGN (lit) > 0); if (v->usedefphase) { if (v->defphase) { /* assign to TRUE */ } else { /* assign to FALSE */ lit = not_lit; } } else if (!v->assigned) { #ifdef STATS ps->staticphasedecisions++; #endif if (ps->defaultphase == POSPHASE) { /* assign to TRUE */ } else if (ps->defaultphase == NEGPHASE) { /* assign to FALSE */ lit = not_lit; } else if (ps->defaultphase == RNDPHASE) { /* randomly assign default phase */ if (rrng (ps, 1, 2) != 2) lit = not_lit; } else if (*LIT2JWH(lit) <= *LIT2JWH (not_lit)) { /* assign to FALSE (Jeroslow-Wang says there are more short * clauses with negative occurence of this variable, so satisfy * those, to minimize BCP) */ lit = not_lit; } else { /* assign to TRUE (... but strictly more positive occurrences) */ } } else { /* repeat last phase: phase saving heuristic */ if (v->phase) { /* assign to TRUE (last phase was TRUE as well) */ } else { /* assign to FALSE (last phase was FALSE as well) */ lit = not_lit; } } return lit; } static unsigned gcd (unsigned a, unsigned b) { unsigned tmp; assert (a); assert (b); if (a < b) { tmp = a; a = b; b = tmp; } while (b) { assert (a >= b); tmp = b; b = a % b; a = tmp; } return a; } static Lit * rdecide (PS * ps) { unsigned idx, delta, spread; Lit * res; spread = RDECIDE; if (rrng (ps, 1, spread) != 2) return 0; assert (1 <= ps->max_var); idx = rrng (ps, 1, ps->max_var); res = int2lit (ps, idx); if (res->val != UNDEF) { delta = rrng (ps, 1, ps->max_var); while (gcd (delta, ps->max_var) != 1) delta--; assert (1 <= delta); assert (delta <= ps->max_var); do { idx += delta; if (idx > ps->max_var) idx -= ps->max_var; res = int2lit (ps, idx); } while (res->val != UNDEF); } #ifdef STATS ps->rdecisions++; #endif res = decide_phase (ps, res); LOG ( picosat_fprintf (ps->out, "%srdecide %d\n", ps->prefix, LIT2INT (res))); return res; } static Lit * sdecide (PS * ps) { Lit *res; Rnk *r; for (;;) { r = htop (ps); res = RNK2LIT (r); if (res->val == UNDEF) break; (void) hpop (ps); NOLOG ( picosat_fprintf (ps->out, "%shpop %u %u %u\n", ps->prefix, r - ps->rnks, FLTMANTISSA(r->score), FLTEXPONENT(r->score))); } #ifdef STATS ps->sdecisions++; #endif res = decide_phase (ps, res); LOG ( picosat_fprintf (ps->out, "%ssdecide %d\n", ps->prefix, LIT2INT (res))); return res; } static Lit * adecide (PS * ps) { Lit *lit; Var * v; assert (ps->als < ps->alshead); assert (!ps->failed_assumption); while (ps->alstail < ps->alshead) { lit = *ps->alstail++; if (lit->val == FALSE) { ps->failed_assumption = lit; v = LIT2VAR (lit); use_var (ps, v); LOG ( picosat_fprintf (ps->out, "%sfirst failed assumption %d\n", ps->prefix, LIT2INT (ps->failed_assumption))); fanalyze (ps); return 0; } if (lit->val == TRUE) { v = LIT2VAR (lit); if (v->level > ps->adecidelevel) ps->adecidelevel = v->level; continue; } #ifdef STATS ps->assumptions++; #endif LOG ( picosat_fprintf (ps->out, "%sadecide %d\n", ps->prefix, LIT2INT (lit))); ps->adecidelevel = ps->LEVEL + 1; return lit; } return 0; } static void decide (PS * ps) { Lit * lit; assert (!satisfied (ps)); assert (!ps->conflict); if (ps->alstail < ps->alshead && (lit = adecide (ps))) ; else if (ps->failed_assumption) return; else if (satisfied (ps)) return; else if (!(lit = rdecide (ps))) lit = sdecide (ps); assert (lit); assign_decision (ps, lit); ps->levelsum += ps->LEVEL; ps->decisions++; } static int sat (PS * ps, int l) { int count = 0, backtracked; if (!ps->conflict) bcp (ps); if (ps->conflict) backtrack (ps); if (ps->mtcls) return PICOSAT_UNSATISFIABLE; if (satisfied (ps)) goto SATISFIED; if (ps->lsimplify <= ps->propagations) simplify (ps, 0); if (ps->mtcls) return PICOSAT_UNSATISFIABLE; if (satisfied (ps)) goto SATISFIED; init_restart (ps); if (!ps->lreduce) init_reduce (ps); ps->isimplify = ps->fixed; backtracked = 0; for (;;) { if (!ps->conflict) bcp (ps); if (ps->conflict) { incincs (ps); backtrack (ps); if (ps->mtcls) return PICOSAT_UNSATISFIABLE; backtracked = 1; continue; } if (satisfied (ps)) { SATISFIED: #ifndef NDEBUG original_clauses_satisfied (ps); assumptions_satisfied (ps); #endif return PICOSAT_SATISFIABLE; } if (backtracked) { backtracked = 0; if (!ps->LEVEL && ps->isimplify < ps->fixed) iteration (ps); } if (l >= 0 && count >= l) /* decision limit reached ? */ return PICOSAT_UNKNOWN; if (ps->interrupt.function && /* external interrupt */ count > 0 && !(count % INTERRUPTLIM) && ps->interrupt.function (ps->interrupt.state)) return PICOSAT_UNKNOWN; if (ps->propagations >= ps->lpropagations)/* propagation limit reached ? */ return PICOSAT_UNKNOWN; #ifndef NADC if (!ps->adodisabled && ps->adoconflicts >= ps->adoconflictlimit) { assert (bcp_queue_is_empty (ps)); return PICOSAT_UNKNOWN; } #endif if (ps->fsimplify < ps->fixed && ps->lsimplify <= ps->propagations) { simplify (ps, 0); if (!bcp_queue_is_empty (ps)) continue; #ifndef NFL if (ps->mtcls) return PICOSAT_UNSATISFIABLE; if (satisfied (ps)) return PICOSAT_SATISFIABLE; assert (!ps->LEVEL); #endif } if (need_to_reduce (ps)) reduce (ps, 50); if (ps->conflicts >= ps->lrestart && ps->LEVEL > 2) restart (ps); decide (ps); if (ps->failed_assumption) return PICOSAT_UNSATISFIABLE; count++; } } static void rebias (PS * ps) { Cls ** p, * c; Var * v; for (v = ps->vars + 1; v <= ps->vars + ps->max_var; v++) v->assigned = 0; memset (ps->jwh, 0, 2 * (ps->max_var + 1) * sizeof *ps->jwh); for (p = ps->oclauses; p < ps->ohead; p++) { c = *p; if (!c) continue; if (c->learned) continue; incjwh (ps, c); } } #ifdef TRACE static unsigned core (PS * ps) { unsigned idx, prev, this, delta, i, lcore, vcore; unsigned *stack, *shead, *eos; Lit **q, **eol, *lit; Cls *c, *reason; Znt *p, byte; Zhn *zhain; Var *v; assert (ps->trace); assert (ps->mtcls || ps->failed_assumption); if (ps->ocore >= 0) return ps->ocore; lcore = ps->ocore = vcore = 0; stack = shead = eos = 0; ENLARGE (stack, shead, eos); if (ps->mtcls) { idx = CLS2IDX (ps->mtcls); *shead++ = idx; } else { assert (ps->failed_assumption); v = LIT2VAR (ps->failed_assumption); reason = v->reason; assert (reason); idx = CLS2IDX (reason); *shead++ = idx; } while (shead > stack) { idx = *--shead; zhain = IDX2ZHN (idx); if (zhain) { if (zhain->core) continue; zhain->core = 1; lcore++; c = IDX2CLS (idx); if (c) { assert (!c->core); c->core = 1; } i = 0; delta = 0; prev = 0; for (p = zhain->znt; (byte = *p); p++, i += 7) { delta |= (byte & 0x7f) << i; if (byte & 0x80) continue; this = prev + delta; assert (prev < this); /* no overflow */ if (shead == eos) ENLARGE (stack, shead, eos); *shead++ = this; prev = this; delta = 0; i = -7; } } else { c = IDX2CLS (idx); assert (c); assert (!c->learned); if (c->core) continue; c->core = 1; ps->ocore++; eol = end_of_lits (c); for (q = c->lits; q < eol; q++) { lit = *q; v = LIT2VAR (lit); if (v->core) continue; v->core = 1; vcore++; if (!ps->failed_assumption) continue; if (lit != ps->failed_assumption) continue; reason = v->reason; if (!reason) continue; if (reason->core) continue; idx = CLS2IDX (reason); if (shead == eos) ENLARGE (stack, shead, eos); *shead++ = idx; } } } DELETEN (stack, eos - stack); if (ps->verbosity) picosat_fprintf (ps->out, "%s%u core variables out of %u (%.1f%%)\n" "%s%u core original clauses out of %u (%.1f%%)\n" "%s%u core learned clauses out of %u (%.1f%%)\n", ps->prefix, vcore, ps->max_var, PERCENT (vcore, ps->max_var), ps->prefix, ps->ocore, ps->oadded, PERCENT (ps->ocore, ps->oadded), ps->prefix, lcore, ps->ladded, PERCENT (lcore, ps->ladded)); return ps->ocore; } static void trace_lits (PS * ps, Cls * c, FILE * file) { Lit **p, **eol = end_of_lits (c); assert (c); assert (c->core); for (p = c->lits; p < eol; p++) picosat_fprintf (file, "%d ", LIT2INT (*p)); picosat_fputc ('0', file); } static void write_idx (PS * ps, unsigned idx, FILE * file) { picosat_fprintf (file, "%ld", EXPORTIDX (idx)); } static void trace_clause (PS * ps, unsigned idx, Cls * c, FILE * file, int fmt) { assert (c); assert (c->core); assert (fmt == RUP_TRACE_FMT || !c->learned); assert (CLS2IDX (c) == idx); if (fmt != RUP_TRACE_FMT) { write_idx (ps, idx, file); picosat_fputc (' ', file); } trace_lits (ps, c, file); if (fmt != RUP_TRACE_FMT) picosat_fputs (" 0", file); picosat_fputc ('\n', file); } static void trace_zhain (PS * ps, unsigned idx, Zhn * zhain, FILE * file, int fmt) { unsigned prev, this, delta, i; Znt *p, byte; Cls * c; assert (zhain); assert (zhain->core); write_idx (ps, idx, file); picosat_fputc (' ', file); if (fmt == EXTENDED_TRACECHECK_TRACE_FMT) { c = IDX2CLS (idx); assert (c); trace_lits (ps, c, file); } else { assert (fmt == COMPACT_TRACECHECK_TRACE_FMT); putc ('*', file); } i = 0; delta = 0; prev = 0; for (p = zhain->znt; (byte = *p); p++, i += 7) { delta |= (byte & 0x7f) << i; if (byte & 0x80) continue; this = prev + delta; putc (' ', file); write_idx (ps, this, file); prev = this; delta = 0; i = -7; } picosat_fputs (" 0\n", file); } static void write_core (PS * ps, FILE * file) { Lit **q, **eol; Cls **p, *c; picosat_fprintf (file, "p cnf %u %u\n", ps->max_var, core (ps)); for (p = SOC; p != EOC; p = NXC (p)) { c = *p; if (!c || c->learned || !c->core) continue; eol = end_of_lits (c); for (q = c->lits; q < eol; q++) picosat_fprintf (file, "%d ", LIT2INT (*q)); picosat_fputs ("0\n", file); } } #endif static void write_trace (PS * ps, FILE * file, int fmt) { #ifdef TRACE Cls *c, ** p; Zhn *zhain; unsigned i; core (ps); if (fmt == RUP_TRACE_FMT) { ps->rupvariables = picosat_variables (ps), ps->rupclauses = picosat_added_original_clauses (ps); write_rup_header (ps, file); } for (p = SOC; p != EOC; p = NXC (p)) { c = *p; if (ps->oclauses <= p && p < ps->eoo) { i = OIDX2IDX (p - ps->oclauses); assert (!c || CLS2IDX (c) == i); } else { assert (ps->lclauses <= p && p < ps->EOL); i = LIDX2IDX (p - ps->lclauses); } zhain = IDX2ZHN (i); if (zhain) { if (zhain->core) { if (fmt == RUP_TRACE_FMT) trace_clause (ps,i, c, file, fmt); else trace_zhain (ps, i, zhain, file, fmt); } } else if (c) { if (fmt != RUP_TRACE_FMT && c) { if (c->core) trace_clause (ps, i, c, file, fmt); } } } #else (void) file; (void) fmt; (void) ps; #endif } static void write_core_wrapper (PS * ps, FILE * file, int fmt) { (void) fmt; #ifdef TRACE write_core (ps, file); #else (void) ps; (void) file; #endif } static Lit * import_lit (PS * ps, int lit, int nointernal) { Lit * res; Var * v; ABORTIF (lit == INT_MIN, "API usage: INT_MIN literal"); ABORTIF (abs (lit) > (int) ps->max_var && ps->CLS != ps->clshead, "API usage: new variable index after 'picosat_push'"); if (abs (lit) <= (int) ps->max_var) { res = int2lit (ps, lit); v = LIT2VAR (res); if (nointernal && v->internal) ABORT ("API usage: trying to import invalid literal"); else if (!nointernal && !v->internal) ABORT ("API usage: trying to import invalid context"); } else { while (abs (lit) > (int) ps->max_var) inc_max_var (ps); res = int2lit (ps, lit); } return res; } #ifdef TRACE static void reset_core (PS * ps) { Cls ** p, * c; Zhn ** q, * z; unsigned i; for (i = 1; i <= ps->max_var; i++) ps->vars[i].core = 0; for (p = SOC; p != EOC; p = NXC (p)) if ((c = *p)) c->core = 0; for (q = ps->zhains; q != ps->zhead; q++) if ((z = *q)) z->core = 0; ps->ocore = -1; } #endif static void reset_assumptions (PS * ps) { Lit ** p; ps->failed_assumption = 0; if (ps->extracted_all_failed_assumptions) { for (p = ps->als; p < ps->alshead; p++) LIT2VAR (*p)->failed = 0; ps->extracted_all_failed_assumptions = 0; } ps->alstail = ps->alshead = ps->als; ps->adecidelevel = 0; } static void check_ready (PS * ps) { ABORTIF (!ps || ps->state == RESET, "API usage: uninitialized"); } static void check_sat_state (PS * ps) { ABORTIF (ps->state != SAT, "API usage: expected to be in SAT state"); } static void check_unsat_state (PS * ps) { ABORTIF (ps->state != UNSAT, "API usage: expected to be in UNSAT state"); } static void check_sat_or_unsat_or_unknown_state (PS * ps) { ABORTIF (ps->state != SAT && ps->state != UNSAT && ps->state != UNKNOWN, "API usage: expected to be in SAT, UNSAT, or UNKNOWN state"); } static void reset_partial (PS * ps) { unsigned idx; if (!ps->partial) return; for (idx = 1; idx <= ps->max_var; idx++) ps->vars[idx].partial = 0; ps->partial = 0; } static void reset_incremental_usage (PS * ps) { unsigned num_non_false; Lit * lit, ** q; check_sat_or_unsat_or_unknown_state (ps); LOG ( picosat_fprintf (ps->out, "%sRESET incremental usage\n", ps->prefix)); if (ps->LEVEL) undo (ps, 0); reset_assumptions (ps); if (ps->conflict) { num_non_false = 0; for (q = ps->conflict->lits; q < end_of_lits (ps->conflict); q++) { lit = *q; if (lit->val != FALSE) num_non_false++; } // assert (num_non_false >= 2); // TODO: why this assertion? #ifdef NO_BINARY_CLAUSES if (ps->conflict == &ps->cimpl) resetcimpl (ps); #endif #ifndef NADC if (ps->conflict == ps->adoconflict) resetadoconflict (ps); #endif ps->conflict = 0; } #ifdef TRACE reset_core (ps); #endif reset_partial (ps); ps->saved_flips = ps->flips; ps->min_flipped = UINT_MAX; ps->saved_max_var = ps->max_var; ps->state = READY; } static void enter (PS * ps) { if (ps->nentered++) return; check_ready (ps); ps->entered = picosat_time_stamp (); } static void leave (PS * ps) { assert (ps->nentered); if (--ps->nentered) return; sflush (ps); } static void check_trace_support_and_execute (PS * ps, FILE * file, void (*f)(PS*,FILE*,int), int fmt) { check_ready (ps); check_unsat_state (ps); #ifdef TRACE ABORTIF (!ps->trace, "API usage: tracing disabled"); enter (ps); f (ps, file, fmt); leave (ps); #else (void) file; (void) fmt; (void) f; ABORT ("compiled without trace support"); #endif } static void extract_all_failed_assumptions (PS * ps) { Lit ** p, ** eol; Var * v, * u; int pos; Cls * c; assert (!ps->extracted_all_failed_assumptions); assert (ps->failed_assumption); assert (ps->mhead == ps->marked); if (ps->marked == ps->eom) ENLARGE (ps->marked, ps->mhead, ps->eom); v = LIT2VAR (ps->failed_assumption); mark_var (ps, v); pos = 0; while (pos < ps->mhead - ps->marked) { v = ps->marked[pos++]; assert (v->mark); c = var2reason (ps, v); if (!c) continue; eol = end_of_lits (c); for (p = c->lits; p < eol; p++) { u = LIT2VAR (*p); if (!u->mark) mark_var (ps, u); } #ifdef NO_BINARY_CLAUSES if (c == &ps->impl) resetimpl (ps); #endif } for (p = ps->als; p < ps->alshead; p++) { u = LIT2VAR (*p); if (!u->mark) continue; u->failed = 1; LOG ( picosat_fprintf (ps->out, "%sfailed assumption %d\n", ps->prefix, LIT2INT (*p))); } while (ps->mhead > ps->marked) (*--ps->mhead)->mark = 0; ps->extracted_all_failed_assumptions = 1; } const char * picosat_copyright (void) { return "Copyright (c) 2006 - 2014 Armin Biere JKU Linz"; } PicoSAT * picosat_init (void) { return init (0, 0, 0, 0); } PicoSAT * picosat_minit (void * pmgr, picosat_malloc pnew, picosat_realloc presize, picosat_free pfree) { ABORTIF (!pnew, "API usage: zero 'picosat_malloc' argument"); ABORTIF (!presize, "API usage: zero 'picosat_realloc' argument"); ABORTIF (!pfree, "API usage: zero 'picosat_free' argument"); return init (pmgr, pnew, presize, pfree); } void picosat_adjust (PS * ps, int new_max_var) { unsigned new_size_vars; ABORTIF (abs (new_max_var) > (int) ps->max_var && ps->CLS != ps->clshead, "API usage: adjusting variable index after 'picosat_push'"); enter (ps); new_max_var = abs (new_max_var); new_size_vars = new_max_var + 1; if (ps->size_vars < new_size_vars) enlarge (ps, new_size_vars); while (ps->max_var < (unsigned) new_max_var) inc_max_var (ps); leave (ps); } int picosat_inc_max_var (PS * ps) { if (ps->measurealltimeinlib) enter (ps); else check_ready (ps); inc_max_var (ps); if (ps->measurealltimeinlib) leave (ps); return ps->max_var; } int picosat_context (PS * ps) { return ps->clshead == ps->CLS ? 0 : LIT2INT (ps->clshead[-1]); } int picosat_push (PS * ps) { int res; Lit *lit; Var * v; if (ps->measurealltimeinlib) enter (ps); else check_ready (ps); if (ps->state != READY) reset_incremental_usage (ps); if (ps->rils != ps->rilshead) { res = *--ps->rilshead; assert (ps->vars[res].internal); } else { inc_max_var (ps); res = ps->max_var; v = ps->vars + res; assert (!v->internal); v->internal = 1; ps->internals++; LOG ( picosat_fprintf (ps->out, "%snew internal variable index %d\n", ps->prefix, res)); } lit = int2lit (ps, res); if (ps->clshead == ps->eocls) ENLARGE (ps->CLS, ps->clshead, ps->eocls); *ps->clshead++ = lit; ps->contexts++; LOG ( picosat_fprintf (ps->out, "%snew context %d at depth %ld after push\n", ps->prefix, res, (long)(ps->clshead - ps->CLS))); if (ps->measurealltimeinlib) leave (ps); return res; } int picosat_pop (PS * ps) { Lit * lit; int res; ABORTIF (ps->CLS == ps->clshead, "API usage: too many 'picosat_pop'"); ABORTIF (ps->added != ps->ahead, "API usage: incomplete clause"); if (ps->measurealltimeinlib) enter (ps); else check_ready (ps); if (ps->state != READY) reset_incremental_usage (ps); assert (ps->CLS < ps->clshead); lit = *--ps->clshead; LOG ( picosat_fprintf (ps->out, "%sclosing context %d at depth %ld after pop\n", ps->prefix, LIT2INT (lit), (long)(ps->clshead - ps->CLS) + 1)); if (ps->cilshead == ps->eocils) ENLARGE (ps->cils, ps->cilshead, ps->eocils); *ps->cilshead++ = LIT2INT (lit); if (ps->cilshead - ps->cils > MAXCILS) { LOG ( picosat_fprintf (ps->out, "%srecycling %ld interals with forced simplification\n", ps->prefix, (long)(ps->cilshead - ps->cils))); simplify (ps, 1); } res = picosat_context (ps); if (res) LOG ( picosat_fprintf (ps->out, "%snew context %d at depth %ld after pop\n", ps->prefix, res, (long)(ps->clshead - ps->CLS))); else LOG ( picosat_fprintf (ps->out, "%souter most context reached after pop\n", ps->prefix)); if (ps->measurealltimeinlib) leave (ps); return res; } void picosat_set_verbosity (PS * ps, int new_verbosity_level) { check_ready (ps); ps->verbosity = new_verbosity_level; } void picosat_set_plain (PS * ps, int new_plain_value) { check_ready (ps); ps->plain = new_plain_value; } int picosat_enable_trace_generation (PS * ps) { int res = 0; check_ready (ps); #ifdef TRACE ABORTIF (ps->addedclauses, "API usage: trace generation enabled after adding clauses"); res = ps->trace = 1; #endif return res; } void picosat_set_incremental_rup_file (PS * ps, FILE * rup_file, int m, int n) { check_ready (ps); assert (!ps->rupstarted); ps->rup = rup_file; ps->rupvariables = m; ps->rupclauses = n; } void picosat_set_output (PS * ps, FILE * output_file) { check_ready (ps); ps->out = output_file; } void picosat_measure_all_calls (PS * ps) { check_ready (ps); ps->measurealltimeinlib = 1; } void picosat_set_prefix (PS * ps, const char * str) { check_ready (ps); new_prefix (ps, str); } void picosat_set_seed (PS * ps, unsigned s) { check_ready (ps); ps->srng = s; } void picosat_reset (PS * ps) { check_ready (ps); reset (ps); } int picosat_add (PS * ps, int int_lit) { int res = ps->oadded; Lit *lit; if (ps->measurealltimeinlib) enter (ps); else check_ready (ps); ABORTIF (ps->rup && ps->rupstarted && ps->oadded >= (unsigned)ps->rupclauses, "API usage: adding too many clauses after RUP header written"); #ifndef NADC ABORTIF (ps->addingtoado, "API usage: 'picosat_add' and 'picosat_add_ado_lit' mixed"); #endif if (ps->state != READY) reset_incremental_usage (ps); if (ps->saveorig) { if (ps->sohead == ps->eoso) ENLARGE (ps->soclauses, ps->sohead, ps->eoso); *ps->sohead++ = int_lit; } if (int_lit) { lit = import_lit (ps, int_lit, 1); add_lit (ps, lit); } else simplify_and_add_original_clause (ps); if (ps->measurealltimeinlib) leave (ps); return res; } int picosat_add_arg (PS * ps, ...) { int lit; va_list ap; va_start (ap, ps); while ((lit = va_arg (ap, int))) (void) picosat_add (ps, lit); va_end (ap); return picosat_add (ps, 0); } int picosat_add_lits (PS * ps, int * lits) { const int * p; int lit; for (p = lits; (lit = *p); p++) (void) picosat_add (ps, lit); return picosat_add (ps, 0); } void picosat_add_ado_lit (PS * ps, int external_lit) { #ifndef NADC Lit * internal_lit; if (ps->measurealltimeinlib) enter (ps); else check_ready (ps); if (ps->state != READY) reset_incremental_usage (ps); ABORTIF (!ps->addingtoado && ps->ahead > ps->added, "API usage: 'picosat_add' and 'picosat_add_ado_lit' mixed"); if (external_lit) { ps->addingtoado = 1; internal_lit = import_lit (external_lit, 1); add_lit (internal_lit); } else { ps->addingtoado = 0; add_ado (ps); } if (ps->measurealltimeinlib) leave (ps); #else (void) ps; (void) external_lit; ABORT ("compiled without all different constraint support"); #endif } static void assume (PS * ps, Lit * lit) { if (ps->alshead == ps->eoals) { assert (ps->alstail == ps->als); ENLARGE (ps->als, ps->alshead, ps->eoals); ps->alstail = ps->als; } *ps->alshead++ = lit; LOG ( picosat_fprintf (ps->out, "%sassumption %d\n", ps->prefix, LIT2INT (lit))); } static void assume_contexts (PS * ps) { Lit ** p; if (ps->als != ps->alshead) return; for (p = ps->CLS; p != ps->clshead; p++) assume (ps, *p); } static const char * enumstr (int i) { int last = i % 10; if (last == 1) return "st"; if (last == 2) return "nd"; if (last == 3) return "rd"; return "th"; } static int tderef (PS * ps, int int_lit) { Lit * lit; Var * v; assert (abs (int_lit) <= (int) ps->max_var); lit = int2lit (ps, int_lit); v = LIT2VAR (lit); if (v->level > 0) return 0; if (lit->val == TRUE) return 1; if (lit->val == FALSE) return -1; return 0; } static int pderef (PS * ps, int int_lit) { Lit * lit; Var * v; assert (abs (int_lit) <= (int) ps->max_var); v = ps->vars + abs (int_lit); if (!v->partial) return 0; lit = int2lit (ps, int_lit); if (lit->val == TRUE) return 1; if (lit->val == FALSE) return -1; return 0; } static void minautarky (PS * ps) { unsigned * occs, maxoccs, tmpoccs, npartial; int * p, * c, lit, best, val; #ifdef LOGGING int tl; #endif assert (!ps->partial); npartial = 0; NEWN (occs, 2*ps->max_var + 1); CLRN (occs, 2*ps->max_var + 1); occs += ps->max_var; for (p = ps->soclauses; p < ps->sohead; p++) occs[*p]++; assert (occs[0] == ps->oadded); for (c = ps->soclauses; c < ps->sohead; c = p + 1) { #ifdef LOGGING tl = 0; #endif best = 0; maxoccs = 0; for (p = c; (lit = *p); p++) { val = tderef (ps, lit); if (val < 0) continue; if (val > 0) { #ifdef LOGGING tl = 1; #endif best = lit; maxoccs = occs[lit]; } val = pderef (ps, lit); if (val > 0) break; if (val < 0) continue; val = int2lit (ps, lit)->val; assert (val); if (val < 0) continue; tmpoccs = occs[lit]; if (best && tmpoccs <= maxoccs) continue; best = lit; maxoccs = tmpoccs; } if (!lit) { assert (best); LOG ( picosat_fprintf (ps->out, "%sautark %d with %d occs%s\n", ps->prefix, best, maxoccs, tl ? " (top)" : "")); ps->vars[abs (best)].partial = 1; npartial++; } for (p = c; (lit = *p); p++) { assert (occs[lit] > 0); occs[lit]--; } } occs -= ps->max_var; DELETEN (occs, 2*ps->max_var + 1); ps->partial = 1; if (ps->verbosity) picosat_fprintf (ps->out, "%sautarky of size %u out of %u satisfying all clauses (%.1f%%)\n", ps->prefix, npartial, ps->max_var, PERCENT (npartial, ps->max_var)); } void picosat_assume (PS * ps, int int_lit) { Lit *lit; if (ps->measurealltimeinlib) enter (ps); else check_ready (ps); if (ps->state != READY) reset_incremental_usage (ps); assume_contexts (ps); lit = import_lit (ps, int_lit, 1); assume (ps, lit); if (ps->measurealltimeinlib) leave (ps); } int picosat_sat (PS * ps, int l) { int res; char ch; enter (ps); ps->calls++; LOG ( picosat_fprintf (ps->out, "%sSTART call %u\n", ps->prefix, ps->calls)); if (ps->added < ps->ahead) { #ifndef NADC if (ps->addingtoado) ABORT ("API usage: incomplete all different constraint"); else #endif ABORT ("API usage: incomplete clause"); } if (ps->state != READY) reset_incremental_usage (ps); assume_contexts (ps); res = sat (ps, l); assert (ps->state == READY); switch (res) { case PICOSAT_UNSATISFIABLE: ch = '0'; ps->state = UNSAT; break; case PICOSAT_SATISFIABLE: ch = '1'; ps->state = SAT; break; default: ch = '?'; ps->state = UNKNOWN; break; } if (ps->verbosity) { report (ps, 1, ch); rheader (ps); } leave (ps); LOG ( picosat_fprintf (ps->out, "%sEND call %u result %d\n", ps->prefix, ps->calls, res)); ps->last_sat_call_result = res; return res; } int picosat_res (PS * ps) { return ps->last_sat_call_result; } int picosat_deref (PS * ps, int int_lit) { Lit *lit; check_ready (ps); check_sat_state (ps); ABORTIF (!int_lit, "API usage: can not deref zero literal"); ABORTIF (ps->mtcls, "API usage: deref after empty clause generated"); #ifdef STATS ps->derefs++; #endif if (abs (int_lit) > (int) ps->max_var) return 0; lit = int2lit (ps, int_lit); if (lit->val == TRUE) return 1; if (lit->val == FALSE) return -1; return 0; } int picosat_deref_toplevel (PS * ps, int int_lit) { check_ready (ps); ABORTIF (!int_lit, "API usage: can not deref zero literal"); #ifdef STATS ps->derefs++; #endif if (abs (int_lit) > (int) ps->max_var) return 0; return tderef (ps, int_lit); } int picosat_inconsistent (PS * ps) { check_ready (ps); return ps->mtcls != 0; } int picosat_corelit (PS * ps, int int_lit) { check_ready (ps); check_unsat_state (ps); ABORTIF (!int_lit, "API usage: zero literal can not be in core"); assert (ps->mtcls || ps->failed_assumption); #ifdef TRACE { int res = 0; ABORTIF (!ps->trace, "tracing disabled"); if (ps->measurealltimeinlib) enter (ps); core (ps); if (abs (int_lit) <= (int) ps->max_var) res = ps->vars[abs (int_lit)].core; assert (!res || ps->failed_assumption || ps->vars[abs (int_lit)].used); if (ps->measurealltimeinlib) leave (ps); return res; } #else ABORT ("compiled without trace support"); return 0; #endif } int picosat_coreclause (PS * ps, int ocls) { check_ready (ps); check_unsat_state (ps); ABORTIF (ocls < 0, "API usage: negative original clause index"); ABORTIF (ocls >= (int)ps->oadded, "API usage: original clause index exceeded"); assert (ps->mtcls || ps->failed_assumption); #ifdef TRACE { Cls ** clsptr, * c; int res = 0; ABORTIF (!ps->trace, "tracing disabled"); if (ps->measurealltimeinlib) enter (ps); core (ps); clsptr = ps->oclauses + ocls; assert (clsptr < ps->ohead); c = *clsptr; if (c) res = c->core; if (ps->measurealltimeinlib) leave (ps); return res; } #else ABORT ("compiled without trace support"); return 0; #endif } int picosat_failed_assumption (PS * ps, int int_lit) { Lit * lit; Var * v; ABORTIF (!int_lit, "API usage: zero literal as assumption"); check_ready (ps); check_unsat_state (ps); if (ps->mtcls) return 0; assert (ps->failed_assumption); if (abs (int_lit) > (int) ps->max_var) return 0; if (!ps->extracted_all_failed_assumptions) extract_all_failed_assumptions (ps); lit = import_lit (ps, int_lit, 1); v = LIT2VAR (lit); return v->failed; } int picosat_failed_context (PS * ps, int int_lit) { Lit * lit; Var * v; ABORTIF (!int_lit, "API usage: zero literal as context"); ABORTIF (abs (int_lit) > (int) ps->max_var, "API usage: invalid context"); check_ready (ps); check_unsat_state (ps); assert (ps->failed_assumption); if (!ps->extracted_all_failed_assumptions) extract_all_failed_assumptions (ps); lit = import_lit (ps, int_lit, 0); v = LIT2VAR (lit); return v->failed; } const int * picosat_failed_assumptions (PS * ps) { Lit ** p, * lit; Var * v; int ilit; ps->falshead = ps->fals; check_ready (ps); check_unsat_state (ps); if (!ps->mtcls) { assert (ps->failed_assumption); if (!ps->extracted_all_failed_assumptions) extract_all_failed_assumptions (ps); for (p = ps->als; p < ps->alshead; p++) { lit = *p; v = LIT2VAR (*p); if (!v->failed) continue; ilit = LIT2INT (lit); if (ps->falshead == ps->eofals) ENLARGE (ps->fals, ps->falshead, ps->eofals); *ps->falshead++ = ilit; } } if (ps->falshead == ps->eofals) ENLARGE (ps->fals, ps->falshead, ps->eofals); *ps->falshead++ = 0; return ps->fals; } const int * picosat_mus_assumptions (PS * ps, void * s, void (*cb)(void*,const int*), int fix) { int i, j, ilit, len, norig = ps->alshead - ps->als, nwork, * work, res; signed char * redundant; Lit ** p, * lit; int failed; Var * v; #ifndef NDEBUG int oldlen; #endif check_ready (ps); check_unsat_state (ps); len = 0; if (!ps->mtcls) { assert (ps->failed_assumption); if (!ps->extracted_all_failed_assumptions) extract_all_failed_assumptions (ps); for (p = ps->als; p < ps->alshead; p++) if (LIT2VAR (*p)->failed) len++; } if (ps->mass) DELETEN (ps->mass, ps->szmass); ps->szmass = len + 1; NEWN (ps->mass, ps->szmass); i = 0; for (p = ps->als; p < ps->alshead; p++) { lit = *p; v = LIT2VAR (lit); if (!v->failed) continue; ilit = LIT2INT (lit); assert (i < len); ps->mass[i++] = ilit; } assert (i == len); ps->mass[i] = 0; if (ps->verbosity) picosat_fprintf (ps->out, "%sinitial set of failed assumptions of size %d out of %d (%.0f%%)\n", ps->prefix, len, norig, PERCENT (len, norig)); if (cb) cb (s, ps->mass); nwork = len; NEWN (work, nwork); for (i = 0; i < len; i++) work[i] = ps->mass[i]; NEWN (redundant, nwork); CLRN (redundant, nwork); for (i = 0; i < nwork; i++) { if (redundant[i]) continue; if (ps->verbosity > 1) picosat_fprintf (ps->out, "%strying to drop %d%s assumption %d\n", ps->prefix, i, enumstr (i), work[i]); for (j = 0; j < nwork; j++) { if (i == j) continue; if (j < i && fix) continue; if (redundant[j]) continue; picosat_assume (ps, work[j]); } res = picosat_sat (ps, -1); if (res == 10) { if (ps->verbosity > 1) picosat_fprintf (ps->out, "%sfailed to drop %d%s assumption %d\n", ps->prefix, i, enumstr (i), work[i]); if (fix) { picosat_add (ps, work[i]); picosat_add (ps, 0); } } else { assert (res == 20); if (ps->verbosity > 1) picosat_fprintf (ps->out, "%ssuceeded to drop %d%s assumption %d\n", ps->prefix, i, enumstr (i), work[i]); redundant[i] = 1; for (j = 0; j < nwork; j++) { failed = picosat_failed_assumption (ps, work[j]); if (j <= i) { assert ((j < i && fix) || redundant[j] == !failed); continue; } if (!failed) { redundant[j] = -1; if (ps->verbosity > 1) picosat_fprintf (ps->out, "%salso suceeded to drop %d%s assumption %d\n", ps->prefix, j, enumstr (j), work[j]); } } #ifndef NDEBUG oldlen = len; #endif len = 0; for (j = 0; j < nwork; j++) if (!redundant[j]) ps->mass[len++] = work[j]; ps->mass[len] = 0; assert (len < oldlen); if (fix) { picosat_add (ps, -work[i]); picosat_add (ps, 0); } #ifndef NDEBUG for (j = 0; j <= i; j++) assert (redundant[j] >= 0); #endif for (j = i + 1; j < nwork; j++) { if (redundant[j] >= 0) continue; if (fix) { picosat_add (ps, -work[j]); picosat_add (ps, 0); } redundant[j] = 1; } if (ps->verbosity) picosat_fprintf (ps->out, "%sreduced set of failed assumptions of size %d out of %d (%.0f%%)\n", ps->prefix, len, norig, PERCENT (len, norig)); if (cb) cb (s, ps->mass); } } DELETEN (work, nwork); DELETEN (redundant, nwork); if (ps->verbosity) { picosat_fprintf (ps->out, "%sreinitializing unsat state\n", ps->prefix); fflush (ps->out); } for (i = 0; i < len; i++) picosat_assume (ps, ps->mass[i]); #ifndef NDEBUG res = #endif picosat_sat (ps, -1); assert (res == 20); if (!ps->mtcls) { assert (!ps->extracted_all_failed_assumptions); extract_all_failed_assumptions (ps); } return ps->mass; } static const int * mss (PS * ps, int * a, int size) { int i, j, k, res; assert (!ps->mtcls); if (ps->szmssass) DELETEN (ps->mssass, ps->szmssass); ps->szmssass = 0; ps->mssass = 0; ps->szmssass = size + 1; NEWN (ps->mssass, ps->szmssass); LOG ( picosat_fprintf (ps->out, "%ssearch MSS over %d assumptions\n", ps->prefix, size)); k = 0; for (i = k; i < size; i++) { for (j = 0; j < k; j++) picosat_assume (ps, ps->mssass[j]); LOG ( picosat_fprintf (ps->out, "%strying to add assumption %d to MSS : %d\n", ps->prefix, i, a[i])); picosat_assume (ps, a[i]); res = picosat_sat (ps, -1); if (res == 10) { LOG ( picosat_fprintf (ps->out, "%sadding assumption %d to MSS : %d\n", ps->prefix, i, a[i])); ps->mssass[k++] = a[i]; for (j = i + 1; j < size; j++) { if (picosat_deref (ps, a[j]) <= 0) continue; LOG ( picosat_fprintf (ps->out, "%salso adding assumption %d to MSS : %d\n", ps->prefix, j, a[j])); ps->mssass[k++] = a[j]; if (++i != j) { int tmp = a[i]; a[i] = a[j]; a[j] = tmp; } } } else { assert (res == 20); LOG ( picosat_fprintf (ps->out, "%signoring assumption %d in MSS : %d\n", ps->prefix, i, a[i])); } } ps->mssass[k] = 0; LOG ( picosat_fprintf (ps->out, "%sfound MSS of size %d\n", ps->prefix, k)); return ps->mssass; } static void reassume (PS * ps, const int * a, int size) { int i; LOG ( picosat_fprintf (ps->out, "%sreassuming all assumptions\n", ps->prefix)); for (i = 0; i < size; i++) picosat_assume (ps, a[i]); } const int * picosat_maximal_satisfiable_subset_of_assumptions (PS * ps) { const int * res; int i, *a, size; ABORTIF (ps->mtcls, "API usage: CNF inconsistent (use 'picosat_inconsistent')"); enter (ps); size = ps->alshead - ps->als; NEWN (a, size); for (i = 0; i < size; i++) a[i] = LIT2INT (ps->als[i]); res = mss (ps, a, size); reassume (ps, a, size); DELETEN (a, size); leave (ps); return res; } static void check_mss_flags_clean (PS * ps) { #ifndef NDEBUG unsigned i; for (i = 1; i <= ps->max_var; i++) { assert (!ps->vars[i].msspos); assert (!ps->vars[i].mssneg); } #else (void) ps; #endif } static void push_mcsass (PS * ps, int lit) { if (ps->nmcsass == ps->szmcsass) { ps->szmcsass = ps->szmcsass ? 2*ps->szmcsass : 1; RESIZEN (ps->mcsass, ps->nmcsass, ps->szmcsass); } ps->mcsass[ps->nmcsass++] = lit; } static const int * next_mss (PS * ps, int mcs) { int i, *a, size, mssize, mcsize, lit, inmss; const int * res, * p; Var * v; if (ps->mtcls) return 0; check_mss_flags_clean (ps); if (mcs && ps->mcsass) { DELETEN (ps->mcsass, ps->szmcsass); ps->nmcsass = ps->szmcsass = 0; ps->mcsass = 0; } size = ps->alshead - ps->als; NEWN (a, size); for (i = 0; i < size; i++) a[i] = LIT2INT (ps->als[i]); (void) picosat_sat (ps, -1); //TODO short cut for 'picosat_res () == 10'? if (ps->mtcls) { assert (picosat_res (ps) == 20); res = 0; goto DONE; } res = mss (ps, a, size); if (ps->mtcls) { res = 0; goto DONE; } for (p = res; (lit = *p); p++) { v = ps->vars + abs (lit); if (lit < 0) { assert (!v->msspos); v->mssneg = 1; } else { assert (!v->mssneg); v->msspos = 1; } } mssize = p - res; mcsize = INT_MIN; for (i = 0; i < size; i++) { lit = a[i]; v = ps->vars + abs (lit); if (lit > 0 && v->msspos) inmss = 1; else if (lit < 0 && v->mssneg) inmss = 1; else inmss = 0; if (mssize < mcsize) { if (inmss) picosat_add (ps, -lit); } else { if (!inmss) picosat_add (ps, lit); } if (!inmss && mcs) push_mcsass (ps, lit); } picosat_add (ps, 0); if (mcs) push_mcsass (ps, 0); for (i = 0; i < size; i++) { lit = a[i]; v = ps->vars + abs (lit); v->msspos = 0; v->mssneg = 0; } DONE: reassume (ps, a, size); DELETEN (a, size); return res; } const int * picosat_next_maximal_satisfiable_subset_of_assumptions (PS * ps) { const int * res; enter (ps); res = next_mss (ps, 0); leave (ps); return res; } const int * picosat_next_minimal_correcting_subset_of_assumptions (PS * ps) { const int * res, * tmp; enter (ps); tmp = next_mss (ps, 1); res = tmp ? ps->mcsass : 0; leave (ps); return res; } const int * picosat_humus (PS * ps, void (*callback)(void*state,int nmcs,int nhumus), void * state) { int lit, nmcs, j, nhumus; const int * mcs, * p; unsigned i; Var * v; enter (ps); #ifndef NDEBUG for (i = 1; i <= ps->max_var; i++) { v = ps->vars + i; assert (!v->humuspos); assert (!v->humusneg); } #endif nhumus = nmcs = 0; while ((mcs = picosat_next_minimal_correcting_subset_of_assumptions (ps))) { for (p = mcs; (lit = *p); p++) { v = ps->vars + abs (lit); if (lit < 0) { if (!v->humusneg) { v->humusneg = 1; nhumus++; } } else { if (!v->humuspos) { v->humuspos = 1; nhumus++; } } } nmcs++; LOG ( picosat_fprintf (ps->out, "%smcs %d of size %d humus %d\n", ps->prefix, nmcs, (int)(p - mcs), nhumus)); if (callback) callback (state, nmcs, nhumus); } assert (!ps->szhumus); ps->szhumus = 1; for (i = 1; i <= ps->max_var; i++) { v = ps->vars + i; if (v->humuspos) ps->szhumus++; if (v->humusneg) ps->szhumus++; } assert (nhumus + 1 == ps->szhumus); NEWN (ps->humus, ps->szhumus); j = 0; for (i = 1; i <= ps->max_var; i++) { v = ps->vars + i; if (v->humuspos) { assert (j < nhumus); ps->humus[j++] = (int) i; } if (v->humusneg) { assert (j < nhumus); assert (i < INT_MAX); ps->humus[j++] = - (int) i; } } assert (j == nhumus); assert (j < ps->szhumus); ps->humus[j] = 0; leave (ps); return ps->humus; } int picosat_usedlit (PS * ps, int int_lit) { int res; check_ready (ps); check_sat_or_unsat_or_unknown_state (ps); ABORTIF (!int_lit, "API usage: zero literal can not be used"); int_lit = abs (int_lit); res = (int_lit <= (int) ps->max_var) ? ps->vars[int_lit].used : 0; return res; } void picosat_write_clausal_core (PS * ps, FILE * file) { check_trace_support_and_execute (ps, file, write_core_wrapper, 0); } void picosat_write_compact_trace (PS * ps, FILE * file) { check_trace_support_and_execute (ps, file, write_trace, COMPACT_TRACECHECK_TRACE_FMT); } void picosat_write_extended_trace (PS * ps, FILE * file) { check_trace_support_and_execute (ps, file, write_trace, EXTENDED_TRACECHECK_TRACE_FMT); } void picosat_write_rup_trace (PS * ps, FILE * file) { check_trace_support_and_execute (ps, file, write_trace, RUP_TRACE_FMT); } size_t picosat_max_bytes_allocated (PS * ps) { check_ready (ps); return ps->max_bytes; } void picosat_set_propagation_limit (PS * ps, unsigned long long l) { ps->lpropagations = l; } unsigned long long picosat_propagations (PS * ps) { return ps->propagations; } unsigned long long picosat_visits (PS * ps) { return ps->visits; } unsigned long long picosat_decisions (PS * ps) { return ps->decisions; } int picosat_variables (PS * ps) { check_ready (ps); return (int) ps->max_var; } int picosat_added_original_clauses (PS * ps) { check_ready (ps); return (int) ps->oadded; } void picosat_stats (PS * ps) { unsigned redlits; #ifdef STATS check_ready (ps); assert (ps->sdecisions + ps->rdecisions + ps->assumptions == ps->decisions); #endif if (ps->calls > 1) picosat_fprintf (ps->out, "%s%u calls\n", ps->prefix, ps->calls); if (ps->contexts) { picosat_fprintf (ps->out, "%s%u contexts", ps->prefix, ps->contexts); #ifdef STATS picosat_fprintf (ps->out, " %u internal variables", ps->internals); #endif picosat_fprintf (ps->out, "\n"); } picosat_fprintf (ps->out, "%s%u iterations\n", ps->prefix, ps->iterations); picosat_fprintf (ps->out, "%s%u restarts", ps->prefix, ps->restarts); #ifdef STATS picosat_fprintf (ps->out, " (%u skipped)", ps->skippedrestarts); #endif picosat_fputc ('\n', ps->out); #ifndef NFL picosat_fprintf (ps->out, "%s%u failed literals", ps->prefix, ps->failedlits); #ifdef STATS picosat_fprintf (ps->out, ", %u calls, %u rounds, %llu propagations", ps->flcalls, ps->flrounds, ps->flprops); #endif picosat_fputc ('\n', ps->out); #ifdef STATS picosat_fprintf (ps->out, "%sfl: %u = %.1f%% implicit, %llu oopsed, %llu tried, %llu skipped\n", ps->prefix, ps->ifailedlits, PERCENT (ps->ifailedlits, ps->failedlits), ps->floopsed, ps->fltried, ps->flskipped); #endif #endif picosat_fprintf (ps->out, "%s%u conflicts", ps->prefix, ps->conflicts); #ifdef STATS picosat_fprintf (ps->out, " (%u uips = %.1f%%)\n", ps->uips, PERCENT(ps->uips,ps->conflicts)); #else picosat_fputc ('\n', ps->out); #endif #ifndef NADC picosat_fprintf (ps->out, "%s%u adc conflicts\n", ps->prefix, ps->adoconflicts); #endif #ifdef STATS picosat_fprintf (ps->out, "%s%llu dereferenced literals\n", ps->prefix, ps->derefs); #endif picosat_fprintf (ps->out, "%s%u decisions", ps->prefix, ps->decisions); #ifdef STATS picosat_fprintf (ps->out, " (%u random = %.2f%%", ps->rdecisions, PERCENT (ps->rdecisions, ps->decisions)); picosat_fprintf (ps->out, ", %u assumptions", ps->assumptions); picosat_fputc (')', ps->out); #endif picosat_fputc ('\n', ps->out); #ifdef STATS picosat_fprintf (ps->out, "%s%u static phase decisions (%.1f%% of all variables)\n", ps->prefix, ps->staticphasedecisions, PERCENT (ps->staticphasedecisions, ps->max_var)); #endif picosat_fprintf (ps->out, "%s%u fixed variables\n", ps->prefix, ps->fixed); assert (ps->nonminimizedllits >= ps->minimizedllits); redlits = ps->nonminimizedllits - ps->minimizedllits; picosat_fprintf (ps->out, "%s%u learned literals\n", ps->prefix, ps->llitsadded); picosat_fprintf (ps->out, "%s%.1f%% deleted literals\n", ps->prefix, PERCENT (redlits, ps->nonminimizedllits)); #ifdef STATS #ifdef TRACE picosat_fprintf (ps->out, "%s%llu antecedents (%.1f antecedents per clause", ps->prefix, ps->antecedents, AVERAGE (ps->antecedents, ps->conflicts)); if (ps->trace) picosat_fprintf (ps->out, ", %.1f bytes/antecedent)", AVERAGE (ps->znts, ps->antecedents)); picosat_fputs (")\n", ps->out); #endif picosat_fprintf (ps->out, "%s%llu propagations (%.1f propagations per decision)\n", ps->prefix, ps->propagations, AVERAGE (ps->propagations, ps->decisions)); picosat_fprintf (ps->out, "%s%llu visits (%.1f per propagation)\n", ps->prefix, ps->visits, AVERAGE (ps->visits, ps->propagations)); picosat_fprintf (ps->out, "%s%llu binary clauses visited (%.1f%% %.1f per propagation)\n", ps->prefix, ps->bvisits, PERCENT (ps->bvisits, ps->visits), AVERAGE (ps->bvisits, ps->propagations)); picosat_fprintf (ps->out, "%s%llu ternary clauses visited (%.1f%% %.1f per propagation)\n", ps->prefix, ps->tvisits, PERCENT (ps->tvisits, ps->visits), AVERAGE (ps->tvisits, ps->propagations)); picosat_fprintf (ps->out, "%s%llu large clauses visited (%.1f%% %.1f per propagation)\n", ps->prefix, ps->lvisits, PERCENT (ps->lvisits, ps->visits), AVERAGE (ps->lvisits, ps->propagations)); picosat_fprintf (ps->out, "%s%llu other true (%.1f%% of visited clauses)\n", ps->prefix, ps->othertrue, PERCENT (ps->othertrue, ps->visits)); picosat_fprintf (ps->out, "%s%llu other true in binary clauses (%.1f%%)" ", %llu upper (%.1f%%)\n", ps->prefix, ps->othertrue2, PERCENT (ps->othertrue2, ps->othertrue), ps->othertrue2u, PERCENT (ps->othertrue2u, ps->othertrue2)); picosat_fprintf (ps->out, "%s%llu other true in large clauses (%.1f%%)" ", %llu upper (%.1f%%)\n", ps->prefix, ps->othertruel, PERCENT (ps->othertruel, ps->othertrue), ps->othertruelu, PERCENT (ps->othertruelu, ps->othertruel)); picosat_fprintf (ps->out, "%s%llu ternary and large traversals (%.1f per visit)\n", ps->prefix, ps->traversals, AVERAGE (ps->traversals, ps->visits)); picosat_fprintf (ps->out, "%s%llu large traversals (%.1f per large visit)\n", ps->prefix, ps->ltraversals, AVERAGE (ps->ltraversals, ps->lvisits)); picosat_fprintf (ps->out, "%s%llu assignments\n", ps->prefix, ps->assignments); #else picosat_fprintf (ps->out, "%s%llu propagations\n", ps->prefix, picosat_propagations (ps)); picosat_fprintf (ps->out, "%s%llu visits\n", ps->prefix, picosat_visits (ps)); #endif picosat_fprintf (ps->out, "%s%.1f%% variables used\n", ps->prefix, PERCENT (ps->vused, ps->max_var)); sflush (ps); picosat_fprintf (ps->out, "%s%.1f seconds in library\n", ps->prefix, ps->seconds); picosat_fprintf (ps->out, "%s%.1f megaprops/second\n", ps->prefix, AVERAGE (ps->propagations / 1e6f, ps->seconds)); picosat_fprintf (ps->out, "%s%.1f megavisits/second\n", ps->prefix, AVERAGE (ps->visits / 1e6f, ps->seconds)); picosat_fprintf (ps->out, "%sprobing %.1f seconds %.0f%%\n", ps->prefix, ps->flseconds, PERCENT (ps->flseconds, ps->seconds)); #ifdef STATS picosat_fprintf (ps->out, "%srecycled %.1f MB in %u reductions\n", ps->prefix, ps->rrecycled / (double) (1 << 20), ps->reductions); picosat_fprintf (ps->out, "%srecycled %.1f MB in %u simplifications\n", ps->prefix, ps->srecycled / (double) (1 << 20), ps->simps); #else picosat_fprintf (ps->out, "%s%u simplifications\n", ps->prefix, ps->simps); picosat_fprintf (ps->out, "%s%u reductions\n", ps->prefix, ps->reductions); picosat_fprintf (ps->out, "%s%.1f MB recycled\n", ps->prefix, ps->recycled / (double) (1 << 20)); #endif picosat_fprintf (ps->out, "%s%.1f MB maximally allocated\n", ps->prefix, picosat_max_bytes_allocated (ps) / (double) (1 << 20)); } #ifndef NGETRUSAGE #include #include #include #endif double picosat_time_stamp (void) { double res = -1; #ifndef NGETRUSAGE struct rusage u; res = 0; if (!getrusage (RUSAGE_SELF, &u)) { res += u.ru_utime.tv_sec + 1e-6 * u.ru_utime.tv_usec; res += u.ru_stime.tv_sec + 1e-6 * u.ru_stime.tv_usec; } #endif return res; } double picosat_seconds (PS * ps) { check_ready (ps); return ps->seconds; } void picosat_print (PS * ps, FILE * file) { #ifdef NO_BINARY_CLAUSES Lit * lit, *other, * last; Ltk * stack; #endif Lit **q, **eol; Cls **p, *c; unsigned n; if (ps->measurealltimeinlib) enter (ps); else check_ready (ps); n = 0; n += ps->alshead - ps->als; for (p = SOC; p != EOC; p = NXC (p)) { c = *p; if (!c) continue; #ifdef TRACE if (c->collected) continue; #endif n++; } #ifdef NO_BINARY_CLAUSES last = int2lit (ps, -ps->max_var); for (lit = int2lit (ps, 1); lit <= last; lit++) { stack = LIT2IMPLS (lit); eol = stack->start + stack->count; for (q = stack->start; q < eol; q++) if (*q >= lit) n++; } #endif picosat_fprintf (file, "p cnf %d %u\n", ps->max_var, n); for (p = SOC; p != EOC; p = NXC (p)) { c = *p; if (!c) continue; #ifdef TRACE if (c->collected) continue; #endif eol = end_of_lits (c); for (q = c->lits; q < eol; q++) picosat_fprintf (file, "%d ", LIT2INT (*q)); picosat_fputs ("0\n", file); } #ifdef NO_BINARY_CLAUSES last = int2lit (ps, -ps->max_var); for (lit = int2lit (ps, 1); lit <= last; lit++) { stack = LIT2IMPLS (lit); eol = stack->start + stack->count; for (q = stack->start; q < eol; q++) if ((other = *q) >= lit) picosat_fprintf (file, "%d %d 0\n", LIT2INT (lit), LIT2INT (other)); } #endif { Lit **r; for (r = ps->als; r < ps->alshead; r++) picosat_fprintf (file, "%d 0\n", LIT2INT (*r)); } fflush (file); if (ps->measurealltimeinlib) leave (ps); } void picosat_enter (PS * ps) { enter (ps); } void picosat_leave (PS * ps) { leave (ps); } void picosat_message (PS * ps, int vlevel, const char * fmt, ...) { va_list ap; if (vlevel > ps->verbosity) return; picosat_fputs (ps->prefix, ps->out); va_start (ap, fmt); picosat_vfprintf (ps->out, fmt, ap); va_end (ap); picosat_fputc ('\n', ps->out); } int picosat_changed (PS * ps) { int res; check_ready (ps); check_sat_state (ps); res = (ps->min_flipped <= ps->saved_max_var); assert (!res || ps->saved_flips != ps->flips); return res; } void picosat_reset_phases (PS * ps) { rebias (ps); } void picosat_reset_scores (PS * ps) { Rnk * r; ps->hhead = ps->heap + 1; for (r = ps->rnks + 1; r <= ps->rnks + ps->max_var; r++) { CLR (r); hpush (ps, r); } } void picosat_remove_learned (PS * ps, unsigned percentage) { enter (ps); reset_incremental_usage (ps); reduce (ps, percentage); leave (ps); } void picosat_set_global_default_phase (PS * ps, int phase) { check_ready (ps); ABORTIF (phase < 0, "API usage: 'picosat_set_global_default_phase' " "with negative argument"); ABORTIF (phase > 3, "API usage: 'picosat_set_global_default_phase' " "with argument > 3"); ps->defaultphase = phase; } void picosat_set_default_phase_lit (PS * ps, int int_lit, int phase) { unsigned newphase; Lit * lit; Var * v; check_ready (ps); lit = import_lit (ps, int_lit, 1); v = LIT2VAR (lit); if (phase) { newphase = (int_lit < 0) == (phase < 0); v->defphase = v->phase = newphase; v->usedefphase = v->assigned = 1; } else { v->usedefphase = v->assigned = 0; } } void picosat_set_more_important_lit (PS * ps, int int_lit) { Lit * lit; Var * v; Rnk * r; check_ready (ps); lit = import_lit (ps, int_lit, 1); v = LIT2VAR (lit); r = VAR2RNK (v); ABORTIF (r->lessimportant, "can not mark variable more and less important"); if (r->moreimportant) return; r->moreimportant = 1; if (r->pos) hup (ps, r); } void picosat_set_less_important_lit (PS * ps, int int_lit) { Lit * lit; Var * v; Rnk * r; check_ready (ps); lit = import_lit (ps, int_lit, 1); v = LIT2VAR (lit); r = VAR2RNK (v); ABORTIF (r->moreimportant, "can not mark variable more and less important"); if (r->lessimportant) return; r->lessimportant = 1; if (r->pos) hdown (ps, r); } #ifndef NADC unsigned picosat_ado_conflicts (PS * ps) { check_ready (ps); return ps->adoconflicts; } void picosat_disable_ado (PS * ps) { check_ready (ps); assert (!ps->adodisabled); ps->adodisabled = 1; } void picosat_enable_ado (PS * ps) { check_ready (ps); assert (ps->adodisabled); ps->adodisabled = 0; } void picosat_set_ado_conflict_limit (unsigned newadoconflictlimit) { check_ready (ps); ps->adoconflictlimit = newadoconflictlimit; } #endif void picosat_simplify (PS * ps) { enter (ps); reset_incremental_usage (ps); simplify (ps, 1); leave (ps); } int picosat_haveados (void) { #ifndef NADC return 1; #else return 0; #endif } void picosat_save_original_clauses (PS * ps) { if (ps->saveorig) return; ABORTIF (ps->oadded, "API usage: 'picosat_save_original_clauses' too late"); ps->saveorig = 1; } void picosat_set_interrupt (PicoSAT * ps, void * external_state, int (*interrupted)(void * external_state)) { ps->interrupt.state = external_state; ps->interrupt.function = interrupted; } int picosat_deref_partial (PS * ps, int int_lit) { check_ready (ps); check_sat_state (ps); ABORTIF (!int_lit, "API usage: can not partial deref zero literal"); ABORTIF (ps->mtcls, "API usage: deref partial after empty clause generated"); ABORTIF (!ps->saveorig, "API usage: 'picosat_save_original_clauses' missing"); #ifdef STATS ps->derefs++; #endif if (!ps->partial) minautarky (ps); return pderef (ps, int_lit); } BoolNet/src/probabilistic_boolean_network.c0000644000176200001440000004371413277247010020661 0ustar liggesusers/** * C code for Markov simulations of Probabilistic Boolean Networks * * This is part of the BoolNet R package. * * Copyright 2009/2010 by Christoph Müssel * * Contact christoph.muessel@uni-ulm.de * */ #include "uthash.h" #include "common.h" #include "boolean_network.h" #include #include #include #include #include #include #include #define MATRIX_POOL_SIZE 1024 /** * An entry in the state probability matrix */ typedef struct { // the initial state // (next state is the index of the matrix array) unsigned int state; // the probability for this state transition double probability; // used by the hash table UT_hash_handle hh; } MatrixEntry; /* * Structure that maintains a sparse matrix */ typedef struct { MatrixEntry ** matrix; ArrayListElement * entryPool; unsigned int poolArraySize; unsigned int currentEntry; unsigned int numCols; } SparseMatrix; /* * Initialize a matrix with columns * maintaining an entry pool with arrays of size * */ static inline SparseMatrix * allocSparseMatrix(unsigned int numCols, unsigned int poolArraySize) { SparseMatrix * res = CALLOC(1, sizeof(SparseMatrix)); res->matrix = CALLOC(numCols, sizeof(MatrixEntry *)); memset(res->matrix,0,sizeof(MatrixEntry *) * numCols); res->poolArraySize = poolArraySize; res->currentEntry = 0; res->entryPool = NULL; res->numCols = numCols; return res; } /** * Calculate a transition table with one entry for each state. Each entry consists of * one bit per (non-fixed) function in . * receives the number of elements in the table. * receives the number of array elements occupied by one state. * Returns an array of states. */ unsigned int * probabilisticTransitionTable(ProbabilisticBooleanNetwork * net, unsigned int * tableSize, unsigned int * numElements) { // determine number of fixed genes unsigned int totalFunctionCount = 0; unsigned int i, j, k, numNonFixed = 0; for (i = 0; i < net->numGenes; ++i) { if (net->fixedGenes[i] == -1) { totalFunctionCount += net->numFunctionsPerGene[i]; ++numNonFixed; } } if (totalFunctionCount % BITS_PER_BLOCK_32 == 0) *numElements = totalFunctionCount / BITS_PER_BLOCK_32; else *numElements = totalFunctionCount / BITS_PER_BLOCK_32 + 1; // allocate truth table with 2^(non-fixed genes) elements *tableSize = ((unsigned int)1 << numNonFixed); unsigned int * table = CALLOC(*tableSize * *numElements,sizeof(unsigned int)); if (table == 0) { Rf_error("Too few memory available!"); } unsigned int initialState = 0; // calculate state transitions for(initialState = 0; initialState < *tableSize; ++initialState) { R_CheckUserInterrupt(); //state is simply the binary encoding of the counter //calculate transitions for (i = 0; i < net->numGenes; ++i) { if (net->fixedGenes[i] == -1) { for (j = 0; j < net->numFunctionsPerGene[i]; ++j) { PBNFunction * current = &net->transitionFunctions[i][j]; unsigned int inputdec = 0; for (k = 0; k < current->numGenes; ++k) { if (current->inputGenes[k]) // if the input of the function is not 0 (constant gene), take input bit { unsigned int gene = current->inputGenes[k] - 1; unsigned int bit; if (net->fixedGenes[gene] == -1) bit = (GET_BIT(initialState, net->nonFixedGeneBits[gene])); else // fixed genes are not encoded in the states // => take them from fixedGenes vector bit = net->fixedGenes[gene]; inputdec |= bit << (current->numGenes - k - 1); } } int transition = current->transitionFunction[inputdec]; if(transition != -1) // apply transition function table[initialState * *numElements + current->functionIndex / BITS_PER_BLOCK_32] |= (transition << (current->functionIndex % BITS_PER_BLOCK_32)); else // this is a dummy function for a constant gene // => value does not change table[initialState * *numElements + current->functionIndex / BITS_PER_BLOCK_32] |= (GET_BIT(initialState, net->nonFixedGeneBits[i]) << (current->functionIndex % BITS_PER_BLOCK_32)); } } } } return table; } /** * Calculate combinations of function indices. * is an array containing the numbers of functions for each gene. * is the previous function combination from which the next * combination is calculated. * is the number of functions. * Returns false if there are no more combinations, and true otherwise. */ static inline bool nextFunctionCombination(unsigned int * maxVals, unsigned int * combination, unsigned int size) { unsigned int i; while(true) { for (i = 0; i < size; ++i) { ++combination[i]; if (combination[i] < maxVals[i]) return true; else { if (i == size - 1) return false; else combination[i] = 0; } } } } /** * Add to the element of whose start state is , * or add the corresponding element to the hash table */ static inline void addToMatrixEntry(SparseMatrix * matrix, unsigned int column, unsigned int state, double value) { MatrixEntry * entry; HASH_FIND_INT(matrix->matrix[column], &state, entry); if (entry == NULL) // add a new hash table entry { if (matrix->currentEntry % matrix->poolArraySize == 0) allocNewArray(&matrix->entryPool, matrix->poolArraySize, sizeof(MatrixEntry)); entry = &(((MatrixEntry *)matrix->entryPool->array)[matrix->currentEntry % matrix->poolArraySize]); ++matrix->currentEntry; entry->probability = 0.0; entry->state = state; HASH_ADD_INT(matrix->matrix[column],state,entry); } // increment probability entry->probability += value; } /** * Extract a state from the combined transition table of all functions
* depending on the function combination . * is the number of array elements occupied by one state. * is the state for which the successor state is looked up. * holds the network information. * Returns the extracted state as an integer. */ static inline unsigned int extractState(unsigned int * table, unsigned int numElements, unsigned int initialState, unsigned int * combination, ProbabilisticBooleanNetwork * net) { unsigned int i, j, res = 0; for (i = 0, j = 0; i < net->numGenes; ++i) { if (net->fixedGenes[i] == -1) // exclude fixed genes { unsigned int functionIndex = net->transitionFunctions[i][combination[j]].functionIndex; // insert the th bit at the next position res |= (GET_BIT(table[initialState * numElements + functionIndex / BITS_PER_BLOCK_32], functionIndex % BITS_PER_BLOCK_32)) << net->nonFixedGeneBits[i]; ++j; } } return res; } /** * Free all hash tables in the matrix array * and the array itself. * is the number of columns of the matrix. */ void freeMatrix(SparseMatrix * matrix) { unsigned int i; for (i = 0; i < matrix->numCols; ++i) { // free hash table HASH_CLEAR(hh,matrix->matrix[i]); } // FREE(matrix->matrix); freeArrayList(matrix->entryPool); // free array FREE(matrix); } /** * Start a Markov chain simulation on network by performing matrix multiplications. * receives the number of elements in the returned probability vector. * is the matrix of state transition probabilities with columns. * is an optional vector with encoded start states. */ double * markovSimulation(ProbabilisticBooleanNetwork * net, unsigned int numIterations, unsigned int * outcomeSize, SparseMatrix ** stateProbabilities, unsigned int * startStates, unsigned int numStartStates) { unsigned int tableSize = 0, numElements = 0, i, k; // calculate combined transition table unsigned int * table = probabilisticTransitionTable(net,&tableSize,&numElements); SparseMatrix * matrix = allocSparseMatrix(tableSize, MATRIX_POOL_SIZE); *stateProbabilities = matrix; unsigned int combination[net->numNonFixedGenes]; memset(combination,0,sizeof(unsigned int) * net->numNonFixedGenes); unsigned int maxCombination[net->numNonFixedGenes]; unsigned int geneIndices[net->numNonFixedGenes]; // write array with numbers of functions for (i = 0; i < net->numGenes; ++i) { if (net->fixedGenes[i] == -1) { maxCombination[net->nonFixedGeneBits[i]] = net->numFunctionsPerGene[i]; geneIndices[net->nonFixedGeneBits[i]] = i; } } // set up transition probability matrix do // iterate over all possible function combinations { double probability = net->transitionFunctions[geneIndices[0]][combination[0]].probability; for (i = 1; i < net->numNonFixedGenes; ++i) probability *= net->transitionFunctions[geneIndices[i]][combination[i]].probability; for (i = 0; i < tableSize; ++i) // add probabilities for all reached states in the transition table { R_CheckUserInterrupt(); unsigned int state = extractState(table,numElements,i,combination,net); addToMatrixEntry(matrix,state,i,probability); } } while (nextFunctionCombination(maxCombination,combination,net->numNonFixedGenes)); FREE(table); double * outcome = CALLOC(tableSize,sizeof(double)); double * oldOutcome = CALLOC(tableSize,sizeof(double)); *outcomeSize = tableSize; if (numStartStates == 0) // no start states => equal probability for all states { for (i = 0; i < tableSize; ++i) { outcome[i] = 1.0/tableSize; } } else // start states supplied => equal probability for all supplied states { for (i = 0; i < numStartStates; ++i) { outcome[startStates[i]] = 1.0/numStartStates; } } for (k = 0; k < numIterations; ++k) // perform matrix multiplications { R_CheckUserInterrupt(); memcpy(oldOutcome,outcome,sizeof(double) * tableSize); for (i = 0; i < tableSize; ++i) { MatrixEntry * entry; outcome[i] = 0.0; for(entry = matrix->matrix[i]; entry != NULL; entry=entry->hh.next) { outcome[i] += oldOutcome[entry->state] * entry->probability; } } } FREE(oldOutcome); return outcome; } /** * R wrapper for the Markov simulation. * is a concatenated integer vector of the input genes for all functions. * is used to split up into the single function inputs. * contains the truth table result columns of all functions and is * split up according to . * specifies whether genes are fixed (0,1) or not (-1). * is a vector specifying which function belongs to which gene. * is a vector of probabilities for the functions. * is the number of matrix multiplications to be performed. * is an optional vector of start states (otherwise all states are considered). * is the value below which values are considered to be 0. * specifies whether the result should contain a transition table * Returns a list containing a data frame of important states and their probabilities * and, optionally, the transition table. */ SEXP markovSimulation_R(SEXP inputGenes, SEXP inputGenePositions, SEXP transitionFunctions, SEXP transitionFunctionPositions, SEXP fixedGenes, SEXP functionAssignment, SEXP probabilities, SEXP numSteps, SEXP startStates, SEXP cutoff, SEXP returnTable) { ProbabilisticBooleanNetwork network; network.type = PROBABILISTIC_BOOLEAN_NETWORK; int * _inputGenes = INTEGER(inputGenes); int * _inputGenePositions = INTEGER(inputGenePositions); int * _transitionFunctions = INTEGER(transitionFunctions); int * _transitionFunctionPositions = INTEGER(transitionFunctionPositions); int * _functionAssignment = INTEGER(functionAssignment); double * _probabilities = REAL(probabilities); int _numSteps = *INTEGER(numSteps); int * _startStates = NULL; if (!isNull(startStates)) _startStates = INTEGER(startStates); double _cutoff = *REAL(cutoff); bool _returnTable = (bool)(*INTEGER(returnTable)); unsigned int i, j; network.numGenes = length(fixedGenes); network.fixedGenes = CALLOC(network.numGenes,sizeof(int)); memcpy(network.fixedGenes,INTEGER(fixedGenes),sizeof(unsigned int) * network.numGenes); network.nonFixedGeneBits = CALLOC(network.numGenes,sizeof(unsigned int)); // determine which genes are not fixed network.numNonFixedGenes = 0; for(i = 0; i < network.numGenes; i++) { if(network.fixedGenes[i] == -1) { network.nonFixedGeneBits[i] = network.numNonFixedGenes++; } } network.numFunctionsPerGene = CALLOC(network.numGenes,sizeof(unsigned int)); network.transitionFunctions = CALLOC(network.numGenes,sizeof(PBNFunction *)); // count number of functions per gene for (i = 0; i < length(functionAssignment); ++i) { ++network.numFunctionsPerGene[_functionAssignment[i]]; } // allocate function vectors for (i = 0; i < network.numGenes; ++i) { network.transitionFunctions[i] = CALLOC(network.numFunctionsPerGene[i],sizeof(PBNFunction)); } unsigned int functionCounter[network.numGenes]; memset(functionCounter,0,sizeof(unsigned int) * network.numGenes); unsigned int functionIndex = 0; for (i = 0; i < length(functionAssignment); ++i) // decode functions { PBNFunction * current = &network.transitionFunctions[_functionAssignment[i]] [functionCounter[_functionAssignment[i]]++]; unsigned int numInputs = _inputGenePositions[i+1] - _inputGenePositions[i]; current->inputGenes = CALLOC(numInputs,sizeof(int)); memcpy(current->inputGenes,&_inputGenes[_inputGenePositions[i]],numInputs*sizeof(int)); current->numGenes = numInputs; current->transitionFunction = CALLOC((unsigned int)1 << numInputs,sizeof(int)); memcpy(current->transitionFunction,&_transitionFunctions[_transitionFunctionPositions[i]], ((unsigned int)1 << numInputs)*sizeof(int)); current->probability = _probabilities[i]; if (network.fixedGenes[_functionAssignment[i]] == -1) { current->functionIndex = functionIndex++; } else { current->functionIndex = ~0; } } unsigned int startStateElements; if (network.numGenes % (sizeof(unsigned int) * 8) == 0) { startStateElements = network.numGenes / BITS_PER_BLOCK_32; } else { startStateElements = network.numGenes / BITS_PER_BLOCK_32 + 1; } // decode start states (remove fixed genes) unsigned int numStartStates; unsigned int * decodedStartStates = NULL; if (isNull(startStates)) numStartStates = 0; else { numStartStates = length(startStates)/startStateElements; decodedStartStates = (unsigned int*)CALLOC(numStartStates, sizeof(unsigned int)); } for (i = 0; i < numStartStates; ++i) { decodedStartStates[i] = 0; for (j = 0; j < network.numGenes; ++j) { if (network.fixedGenes[j] == -1) { decodedStartStates[i] |= GET_BIT(_startStates[i * startStateElements + j / BITS_PER_BLOCK_32], j % BITS_PER_BLOCK_32) << network.nonFixedGeneBits[j]; } } } unsigned int outcomeSize = 0; SparseMatrix * matrix; // perform simulation double * outcome = markovSimulation(&network,_numSteps,&outcomeSize,&matrix, decodedStartStates,numStartStates); // determine number of non-zero results unsigned int nonZero = 0; for (i = 0; i < outcomeSize; ++i) { if (outcome[i] > _cutoff) ++nonZero; } // encode results SEXP resSXP, stateSXP, probSXP; if (_returnTable) PROTECT(resSXP = allocList(5)); else PROTECT(resSXP = allocList(2)); PROTECT(stateSXP = allocVector(INTSXP,nonZero*startStateElements)); PROTECT(probSXP = allocVector(REALSXP,nonZero)); int * states = INTEGER(stateSXP); double * prob = REAL(probSXP); //return R_NilValue; for (i = 0, j = 0; i < outcomeSize; ++i) // encode states with non-zero probability { if (outcome[i] > _cutoff) { prob[j] = outcome[i]; states[j*startStateElements] = i; // re-encode fixed genes insertFixedGenes((unsigned int *)&states[j*startStateElements],network.fixedGenes,network.numGenes); ++j; } } SET_TAG(resSXP, install("states")); SET_TAG(CDR(resSXP), install("probabilities")); SETCAR(resSXP,stateSXP); SETCADR(resSXP,probSXP); if (_returnTable) // encode the transition table { SET_TAG(CDR(CDR(resSXP)), install("initialStates")); SET_TAG(CDR(CDR(CDR(resSXP))), install("nextStates")); SET_TAG(CDR(CDR(CDR(CDR(resSXP)))), install("transitionProbabilities")); //calculate size of transition table unsigned int tableSize = 0; for (i = 0; i < outcomeSize; ++i) { MatrixEntry * entry; for(entry = matrix->matrix[i]; entry != NULL; entry=entry->hh.next) { ++tableSize; } } SEXP initialStateSXP, nextStateSXP, transitionProbSXP; PROTECT(initialStateSXP = allocVector(INTSXP,tableSize * startStateElements)); PROTECT(nextStateSXP = allocVector(INTSXP,tableSize * startStateElements)); PROTECT(transitionProbSXP = allocVector(REALSXP,tableSize)); unsigned int * initialStates = (unsigned int *)INTEGER(initialStateSXP); unsigned int * nextStates = (unsigned int *)INTEGER(nextStateSXP); double * transitionProbs = (double *)REAL(transitionProbSXP); // encode non-zero states in transition matrix j = 0; for (i = 0; i < outcomeSize; ++i) { MatrixEntry * entry; for(entry = matrix->matrix[i]; entry != NULL; entry=entry->hh.next) { initialStates[j * startStateElements] = entry->state; insertFixedGenes(&initialStates[j*startStateElements],network.fixedGenes,network.numGenes); nextStates[j * startStateElements] = i; insertFixedGenes(&nextStates[j*startStateElements],network.fixedGenes,network.numGenes); transitionProbs[j] = entry->probability; ++j; } } SETCADDR(resSXP,initialStateSXP); SETCADDDR(resSXP,nextStateSXP); SETCADDDR(CDR(resSXP),transitionProbSXP); UNPROTECT(3); } UNPROTECT(3); freeMatrix(matrix); FREE(outcome); if (decodedStartStates != NULL) FREE(decodedStartStates); return resSXP; } BoolNet/src/symbolic_network.c0000644000176200001440000003411513277247010016150 0ustar liggesusers/** * C code for a generic symbolic simulator for Boolean networks * * This is part of the BoolNet R package. * * Copyright 2013 by Christoph Muessel * * Contact christoph.muessel@uni-ulm.de * */ #include "random.h" #include "common.h" #include "symbolic_network.h" /** * Free the expression tree */ void freeFormula(BooleanFormula * formula) { if (formula->type == FORMULA_ATOM || formula->type == FORMULA_CONSTANT) { free(formula); } else { BooleanOperator* operator = (BooleanOperator*) formula; unsigned int i; for (i = 0; i < operator->numOperands; ++i) { freeFormula(operator->operands[i]); } free(operator->operands); free(operator); } } /** * Free the internal network structure */ void freeSymbolicNetwork(SymbolicBooleanNetwork * network) { free(network->stateSizes); free(network->stateOffsets); free(network->fixedGenes); free(network->stateFixed); unsigned int i, j; for (i = 0; i < network->numGenes; ++i) { freeFormula(network->interactions[i]); if (network->cnfInteractions != NULL) { for (j = 0; j <= network->attractorSearchStartTime; ++j) freeFormula(network->cnfInteractions[i][j]); free(network->cnfInteractions[i]); } } free(network->interactions); if (network->cnfInteractions != NULL) free(network->cnfInteractions); free(network); } /** * Evaluate an expression tree on the previous state . * is an array describing where the history of the i-th gene starts. * is the total number of genes in the network. * Returns a logical value resulting from the evaluation. */ unsigned char evaluate(BooleanFormula * formula, TemporalState * state, unsigned int * stateOffsets, const unsigned int numGenes) { if (formula->type == FORMULA_CONSTANT) // return the constant value { Constant* constant = (Constant*) formula; char value = constant->value; if (constant->negated) return !value; else return value; } else if (formula->type == FORMULA_ATOM) // return the value of the atom in the current state { unsigned char res; BooleanAtom* atom = (BooleanAtom*) formula; res = state->state[stateOffsets[atom->literal] + atom->time]; if (atom->negated) return !res; else return res; } else // recursively evaluate operands and summarize them using the operators { BooleanOperator* operator = (BooleanOperator*) formula; unsigned int i, threshold, sum, comparisonTimeStep; switch (operator->operator) { case OPERATOR_OR: for (i = 0; i < operator->numOperands; ++i) { if (evaluate(operator->operands[i], state, stateOffsets, numGenes)) { return !operator->negated; } } return operator->negated; case OPERATOR_AND: for (i = 0; i < operator->numOperands; ++i) { if (!evaluate(operator->operands[i], state, stateOffsets, numGenes)) { return operator->negated; } } return !operator->negated; case OPERATOR_MAJ: threshold = floor(operator->numOperands / 2.0); sum = 0; for (i = 0; i < operator->numOperands; ++i) { if (evaluate(operator->operands[i], state, stateOffsets, numGenes)) { ++sum; if (sum > threshold) return !operator->negated; } } return operator->negated; case OPERATOR_SUMIS: threshold = ((Constant *) operator->operands[operator->numOperands - 1])->value; sum = 0; for (i = 0; i < operator->numOperands - 1; ++i) { if (evaluate(operator->operands[i], state, stateOffsets, numGenes)) { ++sum; } } if (sum == threshold) return !operator->negated; else return operator->negated; case OPERATOR_SUMGT: threshold = ((Constant *) operator->operands[operator->numOperands - 1])->value; sum = 0; for (i = 0; i < operator->numOperands - 1; ++i) { if (evaluate(operator->operands[i], state, stateOffsets, numGenes)) { ++sum; if (sum > threshold) return !operator->negated; } } return operator->negated; case OPERATOR_SUMLT: threshold = ((Constant *) operator->operands[operator->numOperands - 1])->value; sum = 0; for (i = 0; i < operator->numOperands - 1; ++i) { if (evaluate(operator->operands[i], state, stateOffsets, numGenes)) { ++sum; if (sum >= threshold) return operator->negated; } } return !operator->negated; case OPERATOR_TIMEIS: comparisonTimeStep = ((Constant *) operator->operands[0])->value; if (operator->negated) return (state->timeStep != comparisonTimeStep - 1); else return (state->timeStep == comparisonTimeStep - 1); case OPERATOR_TIMEGT: comparisonTimeStep = ((Constant *) operator->operands[0])->value; if (operator->negated) return (state->timeStep <= comparisonTimeStep - 1); else return (state->timeStep > comparisonTimeStep - 1); case OPERATOR_TIMELT: comparisonTimeStep = ((Constant *) operator->operands[0])->value; if (operator->negated) return (state->timeStep >= comparisonTimeStep - 1); else return (state->timeStep < comparisonTimeStep - 1); default: Rf_error("Unknown operator!"); } } } /** * Print a Boolean expression tree (for debugging purposes only) */ void printFormula(BooleanFormula * formula) { if (formula->type == FORMULA_ATOM) { BooleanAtom* atom = (BooleanAtom*) formula; if (atom->negated) Rprintf("!"); Rprintf("var%d", atom->literal); if (atom->time != 0) Rprintf("[%d]", -atom->time - 1); } else if (formula->type == FORMULA_CONSTANT) { Constant* constant = (Constant*) formula; if (constant->negated) Rprintf("!"); Rprintf("%d", constant->value); } else { BooleanOperator* operator = (BooleanOperator*) formula; if (operator->negated) Rprintf("!"); if (operator->operator == OPERATOR_MAJ) Rprintf("maj"); else if (operator->operator == OPERATOR_SUMGT) Rprintf("sumgt"); else if (operator->operator == OPERATOR_TIMEIS) Rprintf("timeis"); else if (operator->operator == OPERATOR_TIMEGT) Rprintf("timegt"); else if (operator->operator == OPERATOR_TIMELT) Rprintf("timelt"); Rprintf("("); unsigned int i; for (i = 0; i < operator->numOperands; ++i) { printFormula(operator->operands[i]); if (i < operator->numOperands - 1) { if (operator->operator == OPERATOR_OR) Rprintf(" | "); else if (operator->operator == OPERATOR_AND) Rprintf(" & "); else Rprintf(", "); } } Rprintf(")"); } } BooleanFormula * copyFormula(BooleanFormula * formula, bool negate, unsigned int timeOffset) { if (formula->type == FORMULA_ATOM) { BooleanAtom * res = calloc(1, sizeof(BooleanAtom)); memcpy(res, formula, sizeof(BooleanAtom)); if (negate) res->negated = !res->negated; res->time += timeOffset; return (BooleanFormula *) res; } if (formula->type == FORMULA_CONSTANT) { Constant * res = calloc(1, sizeof(Constant)); memcpy(res, formula, sizeof(Constant)); if (negate) res->negated = !res->negated; return (BooleanFormula *) res; } unsigned int i; BooleanOperator * operator = (BooleanOperator*) formula; bool negated = (negate && !operator->negated) || (!negate && operator->negated); BooleanOperator * res = allocOperator(operator->operator, negated, operator->numOperands, NULL); for (i = 0; i < res->numOperands; ++i) { res->operands[i] = copyFormula(operator->operands[i], false, timeOffset); } return (BooleanFormula *) res; } BooleanFormula * convertToCNF(BooleanFormula * formula, bool negate, unsigned int time) { bool innerNegate = (!negate && formula->negated) || (negate && !formula->negated); if (formula->type == FORMULA_ATOM || formula->type == FORMULA_CONSTANT) { return copyFormula(formula, negate, 0); } BooleanOperator* operator = (BooleanOperator*) formula; if (operator->operator == OPERATOR_TIMEIS || operator->operator == OPERATOR_TIMELT || operator->operator == OPERATOR_TIMEGT) // temporal operators => compare to time { int value; int comparisonTimeStep = ((Constant *) operator->operands[0])->value - 1; switch (operator->operator) { case OPERATOR_TIMEGT: value = (time > comparisonTimeStep); break; case OPERATOR_TIMELT: value = (time < comparisonTimeStep); break; default: value = (time == comparisonTimeStep); break; } if (innerNegate) value = !value; Constant * res = allocConstant(value, false); return (BooleanFormula *) res; } unsigned int operandBufferSize, numOperands, i, j; BooleanFormula ** operands; ALLOC_BUFFER(operands, BooleanFormula *, operandBufferSize, numOperands); if (operator->operator == OPERATOR_SUMGT || operator->operator == OPERATOR_SUMLT || operator->operator == OPERATOR_SUMIS || operator->operator == OPERATOR_MAJ) // counting operators => transform to canonical CNF { unsigned int stateSize, threshold; if (operator->operator != OPERATOR_MAJ) { stateSize = operator->numOperands - 1; threshold = ((Constant*) operator->operands[stateSize])->value; } else { stateSize = operator->numOperands; threshold = floor(stateSize / 2.0); } unsigned char * state = calloc(stateSize, sizeof(unsigned char)); do { bool includeTerm = false; unsigned int count = 0; for (i = 0; i < stateSize; ++i) { if (state[i]) ++count; } switch (operator->operator) { case OPERATOR_SUMGT: case OPERATOR_MAJ: includeTerm = (count <= threshold); break; case OPERATOR_SUMLT: includeTerm = (count >= threshold); break; case OPERATOR_SUMIS: includeTerm = (count != threshold); break; } if (innerNegate) includeTerm = !includeTerm; if (includeTerm) { BooleanFormula ** subOperands = calloc(stateSize, sizeof(BooleanFormula *)); for (i = 0; i < stateSize; ++i) { subOperands[i] = copyFormula(operator->operands[i], state[i], 0); } BooleanOperator * subOp = allocOperator(OPERATOR_OR, false, stateSize, subOperands); PUT_BUFFER(operands, BooleanFormula *, operandBufferSize, numOperands, subOp); } } while (getNextState(state, NULL, stateSize)); free(state); BooleanOperator * res = allocOperator(OPERATOR_AND, false, numOperands, operands); BooleanFormula * res2 = convertToCNF((BooleanFormula *) res, false, time); freeFormula((BooleanFormula *) res); return res2; } // AND or OR unsigned int innerAnds = 0, op; if (innerNegate) { if (operator->operator == OPERATOR_AND) op = OPERATOR_OR; else op = OPERATOR_AND; } else op = operator->operator; Constant * overrideResult = NULL; for (i = 0; i < operator->numOperands; ++i) { BooleanFormula * operand = convertToCNF(operator->operands[i], innerNegate, time); if (operand->type == FORMULA_OPERATOR) { BooleanOperator * subOp = (BooleanOperator *) operand; if (subOp->operator == op || subOp->numOperands == 1) { for (j = 0; j < subOp->numOperands; ++j) { PUT_BUFFER(operands, BooleanFormula *, operandBufferSize, numOperands, subOp->operands[j]); } free(subOp->operands); free(subOp); } else { if (subOp->operator == OPERATOR_AND) ++innerAnds; PUT_BUFFER(operands, BooleanFormula *, operandBufferSize, numOperands, subOp); } } else { if (operand->type == FORMULA_CONSTANT) { Constant * c = (Constant * )operand; if ((op == OPERATOR_OR && ((c->value == 1) ^ c->negated)) || (op == OPERATOR_AND && ((c->value == 0) ^ c->negated))) overrideResult = (Constant *)copyFormula((BooleanFormula *)c, false, 0); else freeFormula(operand); } else PUT_BUFFER(operands, BooleanFormula *, operandBufferSize, numOperands, operand); } } if (overrideResult != NULL) { for (i = 0; i < numOperands; ++i) { freeFormula(operands[i]); } free(operands); return (BooleanFormula *)overrideResult; } if (op == OPERATOR_OR && innerAnds > 0) { unsigned int transformedOperandBufferSize, numTransformedOperands; BooleanFormula ** transformedOperands; ALLOC_BUFFER(transformedOperands, BooleanFormula *, transformedOperandBufferSize, numTransformedOperands); unsigned int * comb = calloc(numOperands, sizeof(unsigned int)); unsigned int * counts = calloc(numOperands, sizeof(unsigned int)); for (i = 0; i < numOperands; ++i) { if (operands[i]->type == FORMULA_OPERATOR) counts[i] = ((BooleanOperator *) operands[i])->numOperands; else counts[i] = 1; } unsigned int pos = 0; while (true) { BooleanOperator * newOp = allocOperator(OPERATOR_OR, false, numOperands, NULL); for (i = 0; i < numOperands; ++i) { if (operands[i]->type == FORMULA_OPERATOR) newOp->operands[i] = copyFormula( ((BooleanOperator *) operands[i])->operands[comb[i]], false, 0); else newOp->operands[i] = copyFormula(operands[i], false, 0); } PUT_BUFFER(transformedOperands, BooleanFormula *, transformedOperandBufferSize, numTransformedOperands, newOp); if (comb[pos] < counts[pos] - 1) ++comb[pos]; else { if (pos == numOperands - 1) break; while (pos < numOperands && comb[pos] == counts[pos] - 1) ++pos; if (pos == numOperands) break; for (i = 0; i < pos; ++i) { comb[i] = 0; } ++comb[pos]; pos = 0; } } free(comb); free(counts); for (i = 0; i < numOperands; ++i) freeFormula(operands[i]); free(operands); BooleanOperator * res = allocOperator(OPERATOR_AND, false, numTransformedOperands, transformedOperands); BooleanFormula * res2 = convertToCNF((BooleanFormula *) res, false, time); freeFormula((BooleanFormula *) res); return res2; } else { BooleanOperator * res = allocOperator(op, false, numOperands, operands); return (BooleanFormula *) res; } } SEXP convertToCNF_R(SEXP network) { SymbolicBooleanNetwork * _network = R_ExternalPtrAddr(network); if (_network == NULL) error("Internal network structures not supplied to C handler!"); unsigned int k; for (k = 0; k < _network->numGenes; ++k) { Rprintf("var%d = ", k); BooleanFormula * converted = convertToCNF(_network->interactions[k], false, 0); printFormula(converted); freeFormula(converted); Rprintf("\n"); } return R_NilValue; } BoolNet/src/attractor_info.h0000644000176200001440000000457313277247010015606 0ustar liggesusers#ifndef ATTRACTOR_INFO_H #define ATTRACTOR_INFO_H typedef struct TTE { unsigned int * initialState; unsigned int * nextState; struct TTE * next; } TransitionTableEntry; /** * Structure that internally describes an attractor */ typedef struct Attractor { // an array of states the attractor consists of unsigned int *involvedStates; // if this is a complex attractor, // the transitions of the attractor are stored here TransitionTableEntry * table; // the number of elements in
unsigned int transitionTableSize; // the number of array elements for one entry of // - i.e. for more than 32 genes, successive // array elements form one entry. unsigned int numElementsPerEntry; // the number of states in int length; // the number of states in the basin of attraction unsigned int basinSize; // list pointer to the next element struct Attractor *next; } Attractor, *pAttractor; /** * A structure holding all information * retrieved by the algorithms in this file */ typedef struct { // the number of elements in the following three arrays unsigned long long tableSize; // the states before the transition - can be NULL unsigned int *initialStates; // the resulting states of the transition table unsigned int *table; // the number of array elements for one entry of the table // - i.e. for more than 32 genes, successive // array elements in
and form one table entry. unsigned int numElementsPerEntry; // the attractors the corresponding states belong to unsigned int *attractorAssignment; // the number of transitions needed to go from the original state // (before transition, not stored here as it is defined by the order) // to the attractor unsigned int *stepsToAttractor; // the list of attractors pAttractor attractorList; // the number of list elements in attractorList unsigned int numAttractors; } AttractorInfo, *pAttractorInfo; /** * Allocate a new AttractorInfo structure for states */ extern pAttractorInfo allocAttractorInfo(unsigned long long tableSize, unsigned int numGenes); /** * Free a list of attractor structures */ extern void freeAttractorList(pAttractor p); /** * Free an AttractorInfo structure including * all sub-elements and the attractor list */ extern void freeAttractorInfo(pAttractorInfo p); #endif BoolNet/src/Makevars.win0000644000176200001440000000005013455114065014672 0ustar liggesusersPKG_CFLAGS = -DNGETRUSAGE -DNALLSIGNALS BoolNet/src/init.c0000644000176200001440000000366613301250742013522 0ustar liggesusers#include #include #include // for NULL #include /* .C calls */ extern void bin2decC(void *, void *, void *); extern void dec2binC(void *, void *, void *); extern void freeAllMemory(); /* .Call calls */ extern SEXP checkNullPointerC(SEXP); extern SEXP constructNetworkTrees_R(SEXP); extern SEXP getAttractors_R(SEXP, SEXP, SEXP, SEXP, SEXP, SEXP, SEXP, SEXP, SEXP, SEXP, SEXP, SEXP); extern SEXP getTruthTable_R(SEXP, SEXP); extern SEXP markovSimulation_R(SEXP, SEXP, SEXP, SEXP, SEXP, SEXP, SEXP, SEXP, SEXP, SEXP, SEXP); extern SEXP reconstructNetwork_R(SEXP, SEXP, SEXP, SEXP, SEXP, SEXP, SEXP, SEXP, SEXP, SEXP); extern SEXP simulateStates_R(SEXP, SEXP, SEXP, SEXP, SEXP, SEXP); extern SEXP symbolicSATSearch_R(SEXP, SEXP, SEXP); extern SEXP symbolicStateTransition_R(SEXP, SEXP, SEXP); static const R_CMethodDef CEntries[] = { {"bin2decC", (DL_FUNC) &bin2decC, 3}, {"dec2binC", (DL_FUNC) &dec2binC, 3}, {"freeAllMemory", (DL_FUNC) &freeAllMemory, 0}, {NULL, NULL, 0} }; static const R_CallMethodDef CallEntries[] = { {"checkNullPointerC", (DL_FUNC) &checkNullPointerC, 1}, {"constructNetworkTrees_R", (DL_FUNC) &constructNetworkTrees_R, 1}, {"getAttractors_R", (DL_FUNC) &getAttractors_R, 12}, {"getTruthTable_R", (DL_FUNC) &getTruthTable_R, 2}, {"markovSimulation_R", (DL_FUNC) &markovSimulation_R, 11}, {"reconstructNetwork_R", (DL_FUNC) &reconstructNetwork_R, 10}, {"simulateStates_R", (DL_FUNC) &simulateStates_R, 6}, {"symbolicSATSearch_R", (DL_FUNC) &symbolicSATSearch_R, 3}, {"symbolicStateTransition_R", (DL_FUNC) &symbolicStateTransition_R, 3}, {NULL, NULL, 0} }; void R_init_BoolNet(DllInfo *dll) { R_registerRoutines(dll, CEntries, CallEntries, NULL, NULL); R_useDynamicSymbols(dll, FALSE); } BoolNet/src/reconstruct_network.c0000644000176200001440000010537513301250640016700 0ustar liggesusers/** * C code for the reconstruction of Boolean networks * * This is part of the BoolNet R package. * * Copyright 2009/2010 by Christoph Müssel * * Contact christoph.muessel@uni-ulm.de * */ #include #include #include #include #include #include #include #include "common.h" /** * Structure for lists of * transition functions for * the return value of reconstruction functions */ typedef struct FLE { // the number of input genes unsigned int k; // the indices of the input genes int * inputGenes; // The transition function. // ATTENTION: // If all functions are built (returnPBN = true), this // is a bit vector containing the transition function // If "don't care" values are allowed (returnPBN = false), // each integer element encodes one bit unsigned int * transitionFunction; // the next element in the list struct FLE * next; } FunctionListElement; /** * Structure to build an internal stack * of functions. This is used to determine * all equally-rated functions recursively */ typedef struct FSE { // the bit position to be processed next unsigned int pos; // the (incomplete) transition function unsigned int * transitionFunction; // the next element on the stack struct FSE * next; } FunctionStackElement; typedef struct { unsigned int pos; unsigned int numFixed; unsigned int numAvailable; unsigned int k; unsigned int n; unsigned int * indexMapping; int * comb; int * intComb; } InputCombination; /** * Add a new element to the function list specified by . * Set the corresponding values , and * by copying the supplied values. * is the number of elements needed for the transition function vector. * Returns the new list element. */ static inline FunctionListElement * addFunctionListElement(FunctionListElement ** root, unsigned int k, unsigned int transitionFunctionSize, int * inputGenes, unsigned int * transitionFunction) { FunctionListElement * el = CALLOC(1,sizeof(FunctionListElement)); el->k = k; el->inputGenes = CALLOC(k,sizeof(unsigned int)); memcpy(el->inputGenes,inputGenes,sizeof(unsigned int) * k); el->transitionFunction = CALLOC(transitionFunctionSize,sizeof(unsigned int)); memcpy(el->transitionFunction,transitionFunction,sizeof(unsigned int) * transitionFunctionSize); el->next = *root; *root = el; return el; } /** * Free all elements of the list */ void freeFunctionList(FunctionListElement ** root) { if (*root == NULL) return; FunctionListElement * current = *root; do { FunctionListElement * next = current->next; FREE(current->inputGenes); FREE(current->transitionFunction); FREE(current); current = next; } while(current != NULL); *root = NULL; } /** * Push a new element on top of the stack . * and describe the data to be pushed. * These elements are copied. * is the number of elements of . * Returns the new stack element. */ static inline FunctionStackElement * pushFunctionStackElement(FunctionStackElement ** stack, unsigned int * transitionFunction, unsigned int transitionFunctionSize, unsigned int pos) { FunctionStackElement * el = CALLOC(1,sizeof(FunctionStackElement)); el->pos = pos; el->transitionFunction = CALLOC(transitionFunctionSize,sizeof(unsigned int)); memcpy(el->transitionFunction,transitionFunction,sizeof(unsigned int) * transitionFunctionSize); el->next = *stack; *stack = el; return el; } /** * Remove the top-level element from . */ static inline void deleteFunctionStackElement(FunctionStackElement ** stack) { FunctionStackElement * el = *stack; *stack = (*stack)->next; FREE(el->transitionFunction); FREE(el); } /** * A function that iteratively returns all choose combinations of input genes * if called multiple times. * The function receives an input array containing the previous combination. * Before the first call, this combination must be initialized to {k-1, k-2, ... , 0}, * and must be set to 0. * After each call, contains the next combination. If all combinations have been * listed, the function returns false, otherwise true. */ static inline bool nextCombination(InputCombination * comb) { bool posChanged = false; // find the first position that has not been set // to its maximum number while(comb->pos < comb->k - comb->numFixed && comb->intComb[comb->pos] == comb->numAvailable - comb->pos - 1) { ++ (comb->pos); posChanged = true; } if (comb->pos == comb->k - comb->numFixed) { // all elements have been listed return false; } if (posChanged) // reset lower-order positions, and increase // the position found previously { unsigned int i; ++comb->intComb[comb->pos]; for (i = comb->pos; i > 0; --i) comb->intComb[i-1] = comb->intComb[i] + 1; comb->pos = 0; } else // the current position has not been set to its maximum value // => increase it ++comb->intComb[comb->pos]; unsigned int j; for (j = 0; j < comb->k - comb->numFixed; ++j) { comb->comb[comb->numFixed + j] = comb->indexMapping[comb->intComb[j]]; } //for (j = 0; j < comb->k; ++j) // Rprintf("%d ",comb->comb[j]); //Rprintf("\n"); return true; } static inline InputCombination * initCombination(int * requiredDependencies, int * excludedDependencies, unsigned int k, unsigned int n) { InputCombination * res = CALLOC(1,sizeof(InputCombination)); res->comb = CALLOC(k,sizeof(int)); res->indexMapping = CALLOC(n,sizeof(int)); res->k = k; res->n = n; res->numFixed = 0; res->numAvailable = 0; unsigned int j; for (j = 0; j < n; ++j) { if (requiredDependencies != NULL && requiredDependencies[j] != 0) { res->comb[res->numFixed] = j; ++(res->numFixed); } else if (excludedDependencies == NULL || excludedDependencies[j] == 0) { res->indexMapping[res->numAvailable] = j; ++(res->numAvailable); } } res->intComb = CALLOC(res->numAvailable,sizeof(unsigned int)); for (j = 0; j < res->k - res->numFixed; ++j) { res->intComb[j] = k - res->numFixed - j - 1; res->comb[res->numFixed + j] = res->indexMapping[res->intComb[j]]; } return res; } static inline void freeInputCombination(InputCombination * comb) { FREE(comb->comb); FREE(comb->intComb); FREE(comb->indexMapping); FREE(comb); } /** * Lähdesmäki's best-fit extension algorithm to infer Boolean networks * from time series. * and represent state transitions. * Here, consecutive array entries describe one state, * thus the array size is . * is an array of the same length as specifying * whether inputs were normally regulated (-1), overexpressed (1), or knocked out (0). * is the number of genes in the time series. * is the maximum number of inputs a function can have. * is a flattened Boolean matrix specifying dependencies * that *must* occur in the reconstructed networks. * Similarly, specifies dependencies * that *must not* occur in the reconstructed networks. * receives one list of possible functions for each gene, and * stores the error of these functions on the time series. * specifies whether the algorithm stops as soon as a perfect solution * is found (false) or not (true). * specifies whether incomplete functions (with "don't care" values) * are expanded recursively (true) or returned as-is (false). */ void bestFitExtension(unsigned int * inputStates, unsigned int * outputStates, unsigned int * perturbations, unsigned int numStates, unsigned int numGenes, int * requiredDependencies, int * excludedDependencies, unsigned int maxK, FunctionListElement ** result, unsigned int * errors, bool allSolutions, bool returnPBN) { unsigned int i, j; unsigned int numElts; // calculate block size in time series array if (numGenes % BITS_PER_BLOCK_32 == 0) numElts = numGenes / BITS_PER_BLOCK_32; else numElts = numGenes / BITS_PER_BLOCK_32 + 1; // store the lengths of the current best solutions for // each gene - initialized with maximum value. unsigned int bestLength[numGenes]; memset(bestLength,0xFF,sizeof(unsigned int) * numGenes); for (i = 0; i < numGenes; ++i) // iterate over genes { unsigned int currentMaxK = maxK, minK = 0, excludedCount = 0; if (requiredDependencies != NULL) for (j = 0; j < numGenes; ++j) if (requiredDependencies[i*numGenes + j] != 0) ++minK; if (excludedDependencies != NULL) for (j = 0; j < numGenes; ++j) if (excludedDependencies[i*numGenes + j] != 0) ++excludedCount; if (currentMaxK < minK) currentMaxK = minK; if (currentMaxK > numGenes - excludedCount) currentMaxK = numGenes - excludedCount; // set error to maximum errors[i] = ~0; unsigned int k, s; if (minK == 0) { // check for constant genes unsigned int geneVal = GET_BIT(outputStates[i/BITS_PER_BLOCK_32],i % BITS_PER_BLOCK_32); bool isConst = true; unsigned int const0Err = (geneVal > 0), const1Err = (geneVal == 0); for (s = 1; s < numStates; ++s) { if (perturbations != NULL && perturbations[s * numGenes + i] != -1) // ignore this state if the current gene is perturbed continue; unsigned int nextBit = GET_BIT(outputStates[s*numElts + i/BITS_PER_BLOCK_32],i % BITS_PER_BLOCK_32); if (nextBit != geneVal) { isConst = false; } if (nextBit) ++const0Err; else ++const1Err; } if (isConst) // gene is constant => simplest function already found! { int inputGenes = -1; addFunctionListElement(&result[i],1,1,&inputGenes,&geneVal); errors[i] = 0; bestLength[i] = 0; } else { if (const0Err <= const1Err) { int inputGenes = -1; unsigned int val = 0; addFunctionListElement(&result[i],1,1,&inputGenes,&val); errors[i] = const0Err; bestLength[i] = 0; } if (const1Err <= const0Err) { int inputGenes = -1; unsigned int val = 1; addFunctionListElement(&result[i],1,1,&inputGenes,&val); errors[i] = const1Err; bestLength[i] = 0; } } } for (k = (minK > 1? minK : 1); k <= currentMaxK; ++k) // iterate over possible numbers of inputs { if (errors[i] == 0 && !allSolutions) break; // initialize gene combination vector InputCombination * comb = initCombination((requiredDependencies == NULL? NULL : &requiredDependencies[i*numGenes]), (excludedDependencies == NULL? NULL : &excludedDependencies[i*numGenes]), k, numGenes); // calculate the number of array elements needed // to represent the output of a function unsigned int array_sz = (unsigned int)1 << k; unsigned int numEltsFunc; if (array_sz % BITS_PER_BLOCK_32 == 0) numEltsFunc = array_sz / BITS_PER_BLOCK_32; else numEltsFunc = array_sz / BITS_PER_BLOCK_32 + 1; unsigned int c_0[array_sz]; unsigned int c_1[array_sz]; do { R_CheckUserInterrupt(); memset(c_0,0,sizeof(unsigned int) * array_sz); memset(c_1,0,sizeof(unsigned int) * array_sz); for (s = 0; s < numStates; ++s) // iterate over states and count errors { if (perturbations != NULL && perturbations[s * numGenes + i] != -1) // the current gene is perturbed in this state // => ignore the state for inference of this gene continue; unsigned int input = 0, bit; for (bit = 0; bit < k; ++bit) // build input by transferring the bits of the input genes // in the current state into a condensed input value { input |= (GET_BIT(inputStates[s * numElts + comb->comb[bit]/BITS_PER_BLOCK_32], comb->comb[bit] % BITS_PER_BLOCK_32)) << bit; } // determine the response value after a state transition unsigned int response = GET_BIT(outputStates[s * numElts + i/BITS_PER_BLOCK_32],i % BITS_PER_BLOCK_32); if (response == 0) ++c_1[input]; else ++c_0[input]; } unsigned int f[numEltsFunc]; memset(f,0,sizeof(unsigned int) * numEltsFunc); unsigned int error = 0, c; for (c = 0; c < array_sz; ++c) { if (c_0[c] > c_1[c]) error += c_1[c]; else error += c_0[c]; } if (error < errors[i]) // the new solution is better than all previously found solutions // => reset the solution list and the best error { errors[i] = error; bestLength[i] = k; freeFunctionList(&result[i]); } if (error <= errors[i] && (bestLength[i] >= k || allSolutions)) { if (!returnPBN) // encode a function with "don't care" value // note: in contrast to the code below, // each entry of f corresponds to a single bit here { unsigned int f[array_sz]; memset(f,0,sizeof(unsigned int) * array_sz); for (unsigned int l = 0; l < array_sz; ++l) { if (c_1[l] < c_0[l]) { f[l] = 1; } else if (c_1[l] > c_0[l]) { f[l] = 0; } else { f[l] = -1; } } addFunctionListElement(&result[i],k,array_sz,comb->comb,f); } else { // recursively determine all functions by filling "don't care" values. // note: here, the elements of f are used as bit vectors // to save memory // start with an element initialized to zero, // and first examine the 0-th position unsigned int f[numEltsFunc]; memset(f,0,sizeof(unsigned int) * numEltsFunc); FunctionStackElement * stack = NULL; pushFunctionStackElement(&stack,f,numEltsFunc,0); do { R_CheckUserInterrupt(); // get top-level stack element FunctionStackElement * el = stack; if (el->pos == array_sz) // the top-level element on the stack is a complete function // => clean it up { // create a new element in the result function list containing the // completed function on the stack addFunctionListElement(&result[i],k,numEltsFunc, comb->comb,el->transitionFunction); // remove the completed function from the stack deleteFunctionStackElement(&stack); } else if (c_1[el->pos] == c_0[el->pos]) // the 0-error and the 1-error are equal // => create two solution branches, one with the -th bit set to 1 // and one with the -th bit set to 0 { // create a new element on the stack with the -th bit set to 1 FunctionStackElement * new = pushFunctionStackElement(&stack,el->transitionFunction, numEltsFunc,el->pos+1); new->transitionFunction[el->pos / BITS_PER_BLOCK_32] |= (unsigned int)1 << (el->pos % BITS_PER_BLOCK_32); // increment the position of the old element, which remains on the stack // with the -th bit set to 0 (due to initialization) ++el->pos; } else if (c_1[el->pos] < c_0[el->pos]) // the error is lower if the -th bit is set to 1 { // set the -th bit of the top-level stack element to 1, // and increment the position to be examined el->transitionFunction[el->pos / BITS_PER_BLOCK_32] |= (unsigned int)1 << (el->pos % BITS_PER_BLOCK_32); ++el->pos; } else // the error is lower if the -th bit is set to 0 { // due to initialization, the -th bit is already set to 0 // => increment the position to be examined ++el->pos; } } // terminate if all stack elements have been completed while (stack != NULL); } } } // get next input gene combination vector while(nextCombination(comb)); freeInputCombination(comb); } } } /** * Calculate the entropy of a set of genes (gene_1,...,gene_n) * specified by . * All values less than specify genes in the input states, and values greater or * equal to specify genes in the output states. * and contain states, each consisting * of array elements. * is an array of the same length as specifying * whether inputs were normally regulated (-1), overexpressed (1), or knocked out (0). * The table counting the occurrences of gene value combinations is returned in
, which * must be initialized to a size of 2^. * The return value is the entropy H(gene1,...,gene_n). */ static inline double entropy( unsigned int * inputStates, unsigned int * outputStates, unsigned int * perturbations, unsigned int currentGene, unsigned int numStates, unsigned int elementsPerEntry, unsigned int numGenes, int * chosenIndices, unsigned int numChosenIndices, unsigned int * table) { unsigned int numEntries = (unsigned int)1 << numChosenIndices; // reset table to 0 memset(table,0,sizeof(unsigned int) * numEntries); unsigned int state, validStates = 0; for (state = 0; state < numStates; ++state) { if (perturbations != NULL && perturbations[state * numGenes + currentGene] != -1) // the current gene is perturbed in this state // => ignore the state in the entropy calculation continue; ++validStates; unsigned int tableIndex = 0, geneIndex; for (geneIndex = 0; geneIndex < numChosenIndices; ++geneIndex) // count the number of occurrences of gene value combinations { // encode the index of the table element to be increased if (chosenIndices[geneIndex] < numGenes) // this is a gene in the input states { unsigned int chosenIndex = chosenIndices[geneIndex]; tableIndex |= (GET_BIT(inputStates[state * elementsPerEntry + chosenIndex/BITS_PER_BLOCK_32],chosenIndex % BITS_PER_BLOCK_32)) << geneIndex; } else // this is a gene in the output states { unsigned int chosenIndex = chosenIndices[geneIndex] - numGenes; tableIndex |= (GET_BIT(outputStates[state * elementsPerEntry + chosenIndex/BITS_PER_BLOCK_32],chosenIndex % BITS_PER_BLOCK_32)) << geneIndex; } } // increase the corresponding table entry ++table[tableIndex]; } // calculate entropy double result = 0.0; unsigned int tableIndex; for (tableIndex = 0; tableIndex < numEntries; ++tableIndex) { if (table[tableIndex] != 0) result += ((double)table[tableIndex])/validStates*log2(((double)table[tableIndex])/validStates); } return -result; } /** * Liang's REVEAL algorithm for reconstruction of Boolean networks. * This version is enhanced for dealing with inconsistent samples by * taking the solutions that produce the minimum error. * and represent state transitions. * Here, consecutive array entries describe one state, * thus the array size is . * is an array of the same length as specifying * whether inputs were normally regulated (-1), overexpressed (1), or knocked out (0). * is the number of genes in the time series. * is the maximum number of inputs a function can have. * is a flattened Boolean matrix specifying dependencies * that *must* occur in the reconstructed networks. * Similarly, specifies dependencies * that *must not* occur in the reconstructed networks. * receives one list of possible functions for each gene, and * stores the error of these functions on the time series. * specifies whether the algorithm stops as soon as a perfect solution * is found (false) or not (true). * specifies whether incomplete functions (with "don't care" values) * are expanded recursively (true) or returned as-is (false). */ void reveal(unsigned int * inputStates, unsigned int * outputStates, unsigned int * perturbations, unsigned int numStates, unsigned int numGenes, int * requiredDependencies, int * excludedDependencies, unsigned int maxK, FunctionListElement ** result, unsigned int * errors, bool allSolutions, bool returnPBN) { unsigned int i, j; unsigned int numElts; // calculate block size in time series array if (numGenes % BITS_PER_BLOCK_32 == 0) numElts = numGenes / BITS_PER_BLOCK_32; else numElts = numGenes / BITS_PER_BLOCK_32 + 1; for (i = 0; i < numGenes; ++i) // iterate over genes { unsigned int currentMaxK = maxK, minK = 0, excludedCount = 0; if (requiredDependencies != NULL) for (j = 0; j < numGenes; ++j) if (requiredDependencies[i*numGenes + j] != 0) ++minK; if (excludedDependencies != NULL) for (j = 0; j < numGenes; ++j) if (excludedDependencies[i*numGenes + j] != 0) ++excludedCount; if (currentMaxK < minK) currentMaxK = minK; if (currentMaxK > numGenes - excludedCount) currentMaxK = numGenes - excludedCount; // set error to maximum // Note: in REVEAL, is only used as an indicator // whether a solution has been found, i.e. it is 0 if // a solution was found, and anything else otherwise. errors[i] = ~0; unsigned int k, s; // check for constant genes unsigned int geneVal = GET_BIT(outputStates[i/BITS_PER_BLOCK_32],i % BITS_PER_BLOCK_32); bool isConst = true; for (s = 1; s < numStates; ++s) { if ((perturbations == NULL || perturbations[s * numGenes + i] == -1) && GET_BIT(outputStates[s*numElts + i/BITS_PER_BLOCK_32],i % BITS_PER_BLOCK_32) != geneVal) // ignore this state if the current gene is perturbed { isConst = false; break; } } if (isConst) // gene is constant => simplest function already found! { int inputGenes = -1; addFunctionListElement(&result[i],1,1,&inputGenes,&geneVal); errors[i] = 0; } for (k = (minK > 1? minK : 1); k <= currentMaxK; ++k) // iterate over possible numbers of inputs { if (errors[i] == 0 && !allSolutions) break; // initialize gene combination vector InputCombination * comb = initCombination((requiredDependencies == NULL? NULL : &requiredDependencies[i*numGenes]), (excludedDependencies == NULL? NULL : &excludedDependencies[i*numGenes]), k, numGenes); // calculate the number of array elements needed // to represent the output of a function unsigned int array_sz = (unsigned int)1 << k; unsigned int numEltsFunc; if (array_sz % BITS_PER_BLOCK_32 == 0) numEltsFunc = array_sz / BITS_PER_BLOCK_32; else numEltsFunc = array_sz / BITS_PER_BLOCK_32 + 1; do { R_CheckUserInterrupt(); // calculate entropy of input genes unsigned int table_input[array_sz]; double entropy_input = entropy(inputStates, outputStates, perturbations, i, numStates, numElts, numGenes, comb->comb, k, table_input); // calculate entropy of the combination of input genes and output value int comb_output[k+1]; memcpy(comb_output,comb->comb,sizeof(unsigned int) * k); comb_output[k] = numGenes + i; unsigned int table_output[(unsigned int)1 << (k+1)]; double entropy_all = entropy(inputStates, outputStates, perturbations, i, numStates, numElts, numGenes, comb_output, k+1, table_output); if (fabs(entropy_input - entropy_all) < 1E-6) // the two entropies are the same => output is fully explained by input { // a solution has been found => set errors to 0 so that // the algorithm does not search for higher k's errors[i] = 0; if (!returnPBN) // encode a function with "don't care" value // note: in contrast to the code below, // each entry of f corresponds to a single bit here { unsigned int f[array_sz]; memset(f,0,sizeof(unsigned int) * array_sz); for (unsigned int l = 0; l < array_sz; ++l) { if (table_input[l] == 0 || table_output[l | ((unsigned int)1 << k)] == table_output[l]) { f[l] = -1; } else if (table_output[l | ((unsigned int)1 << k)] > table_output[l]) { f[l] = 1; } else { f[l] = 0; } } addFunctionListElement(&result[i],k,array_sz,comb->comb,f); } else { // recursively determine all functions by filling "don't care" values. // note: here, the elements of f are used as bit vectors // to save memory // start with an element initialized to zero, // and first examine the 0-th position unsigned int f[numEltsFunc]; memset(f,0,sizeof(unsigned int) * numEltsFunc); FunctionStackElement * stack = NULL; pushFunctionStackElement(&stack,f,numEltsFunc,0); do { R_CheckUserInterrupt(); // get top-level stack element FunctionStackElement * el = stack; if (el->pos == array_sz) // the top-level element on the stack is a complete function // => clean it up { // create a new element in the result function list containing the // completed function on the stack addFunctionListElement(&result[i],k,numEltsFunc, comb->comb,el->transitionFunction); // remove the completed function from the stack deleteFunctionStackElement(&stack); } else if (table_input[el->pos] == 0 || table_output[el->pos | ((unsigned int)1 << k)] == table_output[el->pos]) // no information is available if the -th bit must be set to one or zero // => create two solution branches, one with the -th bit set to 1 // and one with the -th bit set to 0 { // create a new element on the stack with the -th bit set to 1 FunctionStackElement * new = pushFunctionStackElement(&stack,el->transitionFunction, numEltsFunc,el->pos+1); new->transitionFunction[el->pos / BITS_PER_BLOCK_32] |= (unsigned int)1 << (el->pos % BITS_PER_BLOCK_32); // increment the position of the old element, which remains on the stack // with the -th bit set to 0 (due to initialization) ++el->pos; } else if (table_output[el->pos | ((unsigned int)1 << k)] > table_output[el->pos]) // the -th bit must be set to 1 { // set the -th bit of the top-level stack element to 1, // and increment the position to be examined el->transitionFunction[el->pos / BITS_PER_BLOCK_32] |= (unsigned int)1 << (el->pos % BITS_PER_BLOCK_32); ++el->pos; } else // the -th bit must be set to 0 { // due to initialization, the -th bit is already set to 0 // => increment the position to be examined ++el->pos; } } while (stack != NULL); } } } // get next input gene combination vector while(nextCombination(comb)); freeInputCombination(comb); } } } /** * R Wrapper for bestFitExtension() and reveal() * contains an array of * binary * values, where consecutive values form one state. * specifies the number of states in the array. * is the highest number of input genes for a function. * If is 0, bestFitExtension is called. If is 1, reveal() is called. * Returns a list of lists. The outer list has elements, and the inner * list has one element for each equally-rated function for the current gene. Each of these * elements consists of a vector of input genes, the function as a binary vector, and * the error this function makes on the input time series. */ SEXP reconstructNetwork_R(SEXP inputStates, SEXP outputStates, SEXP perturbations, SEXP numberOfStates, SEXP requiredDependencies, SEXP excludedDependencies, SEXP maxK, SEXP method, SEXP allSolutions, SEXP returnPBN) { int * _inputStates = INTEGER(inputStates); int * _outputStates = INTEGER(outputStates); unsigned int * _perturbations = (Rf_isNull(perturbations)? NULL : (unsigned int *)INTEGER(perturbations)); int * _requiredDependencies = (Rf_isNull(requiredDependencies)? NULL : INTEGER(requiredDependencies)); int * _excludedDependencies = (Rf_isNull(excludedDependencies)? NULL : INTEGER(excludedDependencies)); int _numberOfStates = *INTEGER(numberOfStates); int _maxK = *INTEGER(maxK); int _method = *INTEGER(method); int _allSolutions = *INTEGER(allSolutions); int _returnPBN = *INTEGER(returnPBN); unsigned int numGenes = length(inputStates) / _numberOfStates; unsigned int numElts; if (numGenes % BITS_PER_BLOCK_32 == 0) numElts = numGenes / BITS_PER_BLOCK_32; else numElts = numGenes / BITS_PER_BLOCK_32 + 1; unsigned int encodedInputStates[numElts * _numberOfStates]; memset(encodedInputStates,0,numElts * _numberOfStates * sizeof(unsigned int)); unsigned int encodedOutputStates[numElts * _numberOfStates]; memset(encodedOutputStates,0,numElts * _numberOfStates * sizeof(unsigned int)); unsigned int state,gene; for (state = 0; state < _numberOfStates; ++state) // binary encoding of input states { for (gene = 0; gene < numGenes; ++gene) encodedInputStates[(numElts * state) + gene / BITS_PER_BLOCK_32] |= (_inputStates[state*numGenes + gene] << (gene % BITS_PER_BLOCK_32)); } for (state = 0; state < _numberOfStates; ++state) // binary encoding of output states { for (gene = 0; gene < numGenes; ++gene) encodedOutputStates[(numElts * state) + gene / BITS_PER_BLOCK_32] |= (_outputStates[state*numGenes + gene] << (gene % BITS_PER_BLOCK_32)); } FunctionListElement ** res = CALLOC(numGenes,sizeof(FunctionListElement *)); unsigned int * errors = CALLOC(numGenes,sizeof(unsigned int)); if (_method == 0) // perform Lähdesmäki's best-fit extension bestFitExtension(encodedInputStates,encodedOutputStates,_perturbations, _numberOfStates,numGenes, _requiredDependencies,_excludedDependencies, _maxK,res,errors,_allSolutions,_returnPBN); else // start REVEAL algorithm reveal(encodedInputStates,encodedOutputStates,_perturbations, _numberOfStates,numGenes, _requiredDependencies,_excludedDependencies, _maxK,res,errors,_allSolutions,_returnPBN); // for (gene = 0; gene < numGenes; ++gene) // { // printf("Gene %d\n",gene+1); // FunctionListElement * cur = res[gene]; // while (cur != NULL) // { // printf("Input: "); // unsigned int k; // for (k = 0; k < cur->k; ++k) // printf("%d ",cur->inputGenes[k] + 1); // printf("\nFunction: "); // for (k = 0; k < (1 << cur->k); ++k) // printf("%d",GET_BIT(cur->transitionFunction[k / BITS_PER_BLOCK_32],k%BITS_PER_BLOCK_32)); // printf("\nError: %d\n\n",errors[gene]); // cur = cur->next; // } // } // pack R objects SEXP resSXP; PROTECT(resSXP = allocList(numGenes)); SEXP listPos1 = resSXP; for(gene = 0; gene < numGenes; ++gene) { SEXP geneSXP; unsigned int listLength = 0; FunctionListElement * cur = res[gene]; while (cur != NULL) { ++listLength; cur = cur->next; } PROTECT(geneSXP = allocList(listLength)); cur = res[gene]; unsigned int i; SEXP listPos2 = geneSXP; for (i = 0; i < listLength; ++i) { SEXP entrySXP,inputSXP,funcSXP,errorSXP; PROTECT(entrySXP = allocList(3)); SET_TAG(entrySXP, install("input")); SET_TAG(CDR(entrySXP), install("func")); SET_TAG(CDR(CDR(entrySXP)), install("error")); PROTECT(inputSXP = allocVector(INTSXP,cur->k)); int * array = INTEGER(inputSXP); unsigned int j; unsigned int numBits; if (cur->k == 1 && cur->inputGenes[0] == -1) { numBits = 1; array[0] = 0; } else { numBits = (unsigned int)1 << cur->k; for (j = 0; j < cur->k; j++) array[j] = cur->inputGenes[cur->k - j - 1] + 1; } SETCAR(entrySXP,inputSXP); UNPROTECT(1); PROTECT(funcSXP = allocVector(INTSXP,numBits)); array = INTEGER(funcSXP); if (_returnPBN) // for PBN, functions are internally represented as bit vectors to save memory dec2binC(array,(int*)cur->transitionFunction,(int*)&numBits); else // for incomplete truth tables, we need a third "don't care" value // hence, each bit is an integer in this case (but far fewer entries => less memory) memcpy(array,(int*)cur->transitionFunction,numBits*sizeof(int)); SETCADR(entrySXP,funcSXP); UNPROTECT(1); PROTECT(errorSXP = allocVector(INTSXP,1)); array = INTEGER(errorSXP); *array = errors[gene]; SETCADDR(entrySXP,errorSXP); UNPROTECT(1); SETCAR(listPos2,entrySXP); UNPROTECT(1); listPos2 = CDR(listPos2); cur = cur->next; } UNPROTECT(1); SETCAR(listPos1,geneSXP); listPos1 = CDR(listPos1); } UNPROTECT(1); // free resources for (gene = 0; gene < numGenes; ++gene) freeFunctionList(&res[gene]); FREE(errors); FREE(res); return resSXP; } BoolNet/NAMESPACE0000644000176200001440000000270013301233422013023 0ustar liggesusersuseDynLib(BoolNet, .registration = TRUE) import("igraph", "XML") importFrom("graphics", "abline", "arrows", "axis", "hist", "legend", "lines", "par", "plot", "rect", "text") importFrom("grDevices", "adjustcolor") importFrom("grDevices", "dev.interactive") importFrom("stats", "dist", "kmeans", "quantile", "rnorm", "rpois", "runif") importFrom("utils", "installed.packages", "tail") S3method(print, AttractorInfo) S3method(print, SymbolicSimulation) S3method(print, BooleanNetwork) S3method(print, SymbolicBooleanNetwork) S3method(print, BooleanNetworkCollection) S3method(print, ProbabilisticBooleanNetwork) S3method(print, BooleanStateInfo) S3method(print, TransitionTable) S3method(print, MarkovSimulation) export( loadNetwork, loadBioTapestry, loadSBML, saveNetwork, getAttractors, plotAttractors, plotSequence, plotStateGraph, plotNetworkWiring, plotPBNTransitions, attractorsToLaTeX, sequenceToLaTeX, stateTransition, getAttractorSequence, getTransitionTable, getStateSummary, getBasinOfAttraction, getPathToAttractor, getTransitionProbabilities, toPajek, toSBML, generateRandomNKNetwork, generateCanalyzing, generateNestedCanalyzing, generateState, generateTimeSeries, perturbNetwork, perturbTrajectories, simplifyNetwork, simulateSymbolicModel, reconstructNetwork, chooseNetwork, fixGenes, binarizeTimeSeries, markovSimulation, testNetworkProperties, testAttractorRobustness, testTransitionRobustness, testIndegree, truthTableToSymbolic, symbolicToTruthTable) BoolNet/data/0000755000176200001440000000000013277247010012530 5ustar liggesusersBoolNet/data/examplePBN.rda0000644000176200001440000000060713277247010015216 0ustar liggesusers‹Å”ÝNƒ0ÇKÁDñ3Ù‰7ô†ÌË^/™z»,^í–agYK€ELö"ú2>‡wK|Ÿ`ZJÁÁб¹Å“œöôÏéÇù…ööºoé}ÔUj7 ÷=î:Ž‘ïá^§ €Úà O² 13kÜ¥®¤ºˆ¸ïiíê¾Æ÷“¹S!£·Œ‰[IcŸ¦ÑDEn¬´ßma¥²v¨3¡\UËDBýq$ÚpLÝo~€Ã0*•}?`g@<=ñáì/ ÊV“ÁE! ¡ ß±¼='ö’bŸ›$!þ eD–é%"—«A HòE·„d¥‹R¶5/ÊMZ®™01“‰`bŠú‹ŠЂ2hº=Dë£Yf? 9þ‡" +ª2 Æ­<²òÈNgÔË„ÉÉÕWYh¹_gßÊ„F8p܈×f<î1Åù`Hb|W~k]Ï ³·Jñ¬—± #âvó°C»8zdÁƒL9-ªWÌó°ØZ’™}á¥6y¾BoolNet/data/igf.rda0000644000176200001440000000073113277247010013766 0ustar liggesusers‹ÕWÛNÂ@Ý^ÅzMHøßÅ…hˆ‰ð×ZÒÐnI»DHühÀâtÛí $ -—&Û™ÎîΞ³3;m;­^]ëi!IÜ%Pen’Ñ1HÉà^Uv Må]íLJXít#U~mߘýAƾnµå¿_`û=à`Ó´‡†\?4^Т™9%3Hñ‚SPˆùДp•ä%æ‚’ƒ0TT-HžÅ-;ÃÆ.Ï4…³3“ alçœ$û M.yÑBoolNet/data/cellcycle.rda0000644000176200001440000000106413277247010015160 0ustar liggesusers‹íWËNÂ@Ki|4ñêÆ´‰ `ãʨ<Œ+$&lË0(±B1j¿ùK~zçE§ƒ¦%`â$Ãܶ÷–3÷ÜÇ´UoW¬¶…2q3¢iÀÏ2QÖ"&A€ßp@Êà Ð0èj‰•Z0>ÙËĸü²•—šµ7\×þh7ôŸH$sòf?>¥Uï9ÄB¶ÈëpD¢¨?ájªaÙXL!ç9^†ÍQ0é¿ë~¾a£Øïî‰t\;§ªR¨K¡á9ÇVÎçUšms‡5¤šÞ9æRí·U8Íî·nÜ”=ÒÎ!´BÙ›håN return empty data frame if (includeAttractorStates == "none" && table[currentStateIdx,"transitionsToAttractor"] == 0) { res <- data.frame(matrix(nrow=0,ncol=numGenes)) } else if (length(attractorIdx) > 0) attributes(res)$attractor <- attractorIdx colnames(res) <- sapply(colnames(table)[seq_len(numGenes)],function(n)strsplit(n,".",fixed=TRUE)[[1]][2]) rownames(res) <- NULL } return(res) } BoolNet/R/print.MarkovSimulation.R0000644000176200001440000000603213277247010016603 0ustar liggesusers# Custom print function for class MarkovSimulation print.MarkovSimulation <- function(x, activeOnly = FALSE, ...) { genes <- x$genes numGenes <- length(genes) cat("States reached at the end of the simulation:\n") if (activeOnly) { reachedStates <- data.frame(apply(x$reachedStates[,seq_len(numGenes)],1,function(state) { r <- paste(genes[which(state == 1)],collapse=", ") if (r == "") r <- "--" r }),x$reachedStates$Probability) colnames(reachedStates) <- c("Active genes", "Probability") print(reachedStates) } else { print(x$reachedStates) } if (!is.null(x$table)) { cat("\nProbabilities of state transitions in the network:\n") transitionProbs <- getTransitionProbabilities(x) colIndices <- c(1,numGenes,numGenes + 1, 2*numGenes, 2*numGenes + 1) if(activeOnly) { inputStates <- apply(transitionProbs,1,function(row) { r <- paste(genes[which(row[colIndices[1]:colIndices[2]] == 1)],collapse=", ") if (r == "") r <- "--" r }) outputStates <- apply(transitionProbs,1,function(row) { r <- paste(genes[which(row[colIndices[3]:colIndices[4]] == 1)],collapse=", ") if (r == "") r <- "--" r }) colWidth <- max(c(sapply(inputStates,nchar),sapply(outputStates,nchar))) align <- "left" } else { inputStates <- apply(transitionProbs,1,function(row) paste(row[colIndices[1]:colIndices[2]],collapse="")) outputStates <- apply(transitionProbs,1,function(row) paste(row[colIndices[3]:colIndices[4]],collapse="")) colWidth <- numGenes align <- "right" } binMatrix <- data.frame(inputStates,outputStates, transitionProbs[,colIndices[5]]) cat(format("State",width=max(7,colWidth),justify=align)," ", format("Next state",width=max(11,colWidth + 2),justify=align), format("Probability",width=13,justify="right"),"\n",sep="") apply(binMatrix,1,function(row) { # paste all states of input and output into one string, and put out all columns of the table in a # formatted way cat(format(row[1],width=max(7,colWidth),justify=align), " => ", format(row[2],width=max(11,colWidth + 2),justify=align), format(row[3],width=13,justify="right"),"\n",sep="") }) } return(invisible(x)) } BoolNet/R/loadSBML.R0000644000176200001440000004546313277247010013554 0ustar liggesusers# Check whether N is an integer using # a regular expression. check.integer <- function(N) { !length(grep("[^[:digit:]]", as.character(N))) } # Parse an SBML species list in . # Returns a list containing a map of gene ids to gene names, # a vector specifying which genes are fixed # and a vector of initial levels. parseSBMLSpecies <- function(rootNode) { genes <- c() fixed <- c() initialLevels <- c() # iterate over species for (species in xmlChildren(rootNode)) { attrs <- xmlAttrs(species) # if available, use the "name" attribute as the gene name # (and replace unsuitable characters by underscores) # otherwise use the gene id. if (is.na(attrs["name"]) || attrs["name"] == "") # for better compatibility with CoLoMoTo, # remove "s_" at the beginning of identifiers name <- sub("^s_","",attrs["id"]) else name <- gsub("[^a-zA-Z0-9_]+","_",attrs["name"]) # gene names must be unique if (name %in% genes) { suffix <- 1 while (paste(name,suffix,sep="_") %in% genes) suffix <- suffix + 1 warning(paste("Duplicate gene \"",name,"\", renaming to ", name,"_",suffix,"!",sep="")) name <- paste(name,suffix,sep="_") } # Reject logical networks with more than two values for a gene if (!is.na(attrs["maxLevel"]) && as.integer(attrs["maxLevel"]) > 1) stop(paste("BoolNet supports only binary genes, but gene \"", name,"\" has a maximum level of ",attrs["maxLevel"],"!", sep="")) # build a lookup table id -> gene name genes[attrs["id"]] <- adjustGeneNames(name) if (!is.na(attrs["constant"]) && tolower(attrs["constant"]) == "true") # if the gene is constant, save its initial level in the "fixed" vector { #if (is.na(attrs["initialLevel"])) #stop(paste("Gene \"", name, "\" is constant, but no initial level is supplied!", sep="")) # warning(paste("Gene \"", name, "\" is constant, but no initial level is supplied! Assuming an input!", sep="")) fixed[name] <- TRUE } else # this gene is not constant fixed[name] <- FALSE initialLevels[name] <- as.integer(attrs["initialLevel"]) } return(list(genes = genes, fixed = fixed, initialLevels = initialLevels)) } # Parse a list of transitions in . # Here, is the result of parseSBMLSpecies() # containing a map of gene ids/assignments, a vector # specifying fixed genes and a vector of initial levels. # Returns a list of interactions in the format # of class BooleanNetwork parseSBMLTransitions <- function(rootNode, genes, symbolic) { # iterate over all transitions transitions <- xmlApply(rootNode,function(transition) { # parse inputs inputList <- xmlFindNode(transition, "listOfInputs") if (is.null(inputList)) { inputs <- c() } else { inputList <- inputList[[1]] inputs <- c() inputThresholds <- c() # iterate over inputs for (input in xmlChildren(inputList)) { attrs <- xmlAttrs(input) id <- attrs["qualitativeSpecies"] # verify gene name in species list if (is.na(genes$genes[id])) stop(paste("Unknown input \"",id,"\"!",sep="")) else inputs <- union(inputs, id) # check whether attributes of the input are compatible # with Boolean logic if (tolower(attrs["transitionEffect"]) != "none") stop(paste("Transition effect for input gene \"",id,"\" is \"", attrs["transitionEffect"],"\", expected \"none\"!", sep="")) if (!is.na(attrs["thresholdLevel"]) && !is.na(attrs["id"])) # if a threshold level has been specified, save it with the # corresponding ID for later use in the MathML terms { inputThresholds[attrs["id"]] <- as.integer(attrs["thresholdLevel"]) if (inputThresholds[attrs["id"]] > 1) stop("Threshold levels must be 0 or 1!") } } } # parse outputs outputList <- xmlFindNode(transition, "listOfOutputs") outputs <- c() if (!is.null(outputList)) { outputList <- outputList[[1]] for (output in xmlChildren(outputList)) # iterate over outputs { attrs <- xmlAttrs(output) id <- attrs["qualitativeSpecies"] # verify gene list in species list if (is.na(genes$genes[id])) stop(paste("Unknown output ",id,"!",sep="")) else outputs <- union(outputs, id) # check whether attributes of the output are compatible # with Boolean logic if (tolower(attrs["transitionEffect"]) != "assignmentlevel") stop(paste("Transition effect for output gene \"",id,"\" is \"", attrs["transitionEffect"],"\", expected \"assignmentLevel\"!", sep="")) if (!is.na(attrs["outputLevel"])) stop("Output levels for transitions are not supported in Boolean models!") } } # parse function terms functionTermList <- xmlFindNode(transition, "listOfFunctionTerms", throwError=TRUE)[[1]] transitionFunction <- parseSBMLFunctionTerms(functionTermList, genes$genes[inputs], inputThresholds) return(list(inputs=inputs, outputs=outputs, transitionFunction=transitionFunction)) }) # now convert the read data to the BoolNet interaction format interactions <- lapply(names(genes$genes), function(gene) { # identify the transitions linked to each gene linkedTransitions <- which(sapply(transitions, function(transition)gene %in% transition$output)) if (length(linkedTransitions) == 0) # no transitions are assigned to this gene { if (!genes$fixed[genes$gene[gene]] || is.na(genes$initialLevels[genes$gene[gene]])) { if (is.na(genes$initialLevels[genes$gene[gene]])) { # Assume an input if the gene has no transition function and no initial value warning(paste("There is no transition and no initial level for gene \"", gene,"\"! Assuming an input!",sep=""), call.=FALSE) if (symbolic) return(parseBooleanFunction(genes$gene[gene])) else return(list(input=which(names(genes$genes) == gene), func=c(0,1), expression=genes$gene[gene])) } else if (!genes$fixed[genes$gene[gene]]) warning(paste("There is no transition for the non-constant gene \"", gene,"\"! Setting it to a constant ", genes$initialLevels[genes$gene[gene]], "!" ,sep=""), call.=FALSE) } # build a constant interaction if (symbolic) return(parseBooleanFunction(as.character(genes$initialLevels[genes$gene[gene]]))) else return(list(input=0, func=genes$initialLevels[genes$gene[gene]], expression=as.character(genes$initialLevels[genes$gene[gene]]))) } else { if (length(linkedTransitions) > 1) # multiple transitions per gene are not allowed, as these may be conflicting { stop(paste("Gene \"",gene,"\" is affected by multiple transitions!",sep="")) } if (genes$fixed[genes$gene[gene]]) # a constant gene should not be the output of a transition stop(paste("Gene \"",gene,"\" has been specified as constant, but there is a transition!",sep="")) if (symbolic) { # parse the Boolean expression, and construct a symbolic expression tree return(parseBooleanFunction(transitions[[linkedTransitions]]$transitionFunction, genes$genes)) } else { # parse the Boolean expression, and generate an interaction with # the corresponding truth table return(generateInteraction(transitions[[linkedTransitions]]$transitionFunction, #genes$genes[transitions[[linkedTransitions]]$input], genes$genes)) } } }) names(interactions) <- genes$genes return(interactions) } # Parse a list of function terms in , where specifies # the assignment of gene identifiers to gene names, # and specifies the assignment of threshold identifiers # to values (see also parseMathML()). # Returns a single character string representing the function term # as an R expression. parseSBMLFunctionTerms <- function(rootNode, genes, inputThresholds) { # iterate over function terms functionTerms <- xmlApply(rootNode, function(term) { attrs <- xmlAttrs(term) outputLevel <- as.integer(attrs["resultLevel"]) if (outputLevel > 1) stop("The result level of a function term must be 0 or 1!") if (tolower(xmlName(term)) == "defaultterm") # this is the default term => no expression { return(list(term="",outputLevel=outputLevel)) } else # parse the MathML expression in the function term { math <- xmlFindNode(term, "math", throwError=TRUE)[[1]][[1]] return(list(term=parseMathML(math, genes, inputThresholds), outputLevel=outputLevel)) } }) # build lists of terms with result 0 (negative terms) # and terms with result 1 (positive term) posTerms <- c() negTerms <- c() defaultValue <- NA for (term in functionTerms) { if (term$term != "") { if (term$outputLevel == 0) { negTerms <- c(negTerms, term$term) } else { posTerms <- c(posTerms, term$term) } } else defaultValue <- term$outputLevel } if (is.na(defaultValue)) stop("Missing default term in transition!") if (defaultValue == 0) # if the default is 0, the result is a DNF of the positive terms { if (length(posTerms) > 0) totalTerm <- paste(posTerms, collapse=" | ") else totalTerm <- "0" if (length(negTerms) > 0) # if the default value is 0, additional negative terms are ignored, # as they should be part of the default value # (otherwise this is a contradiction to the positive terms) warning("Potentially contradictory terms in a transition have been ignored!") } else # if the default value is 1, the result is a negated DNF of the negative terms { if (length(negTerms) > 0) totalTerm <- paste("!(",paste(negTerms, collapse=" | "),")",sep="") else totalTerm <- "1" if (length(posTerms) > 0) # if the default value is 1, additional positive terms are ignored, # as they should be part of the default value # (otherwise this is a contradiction to the negative terms) warning("Potentially contradictory terms in a transition have been ignored!") } return(totalTerm) } # Recursively parse the MathML expression in . # Here, valid identifiers are the gene names in # and the input thresholds in , # which are replaced by the corresponding values. # Returns an R expression string representing the MathML expression. parseMathML <- function(rootNode, genes, inputThresholds) { name <- xmlName(rootNode) if (name == "apply") # a bracket { operator <- xmlName(xmlChildren(rootNode)[[1]]) children <- sapply(xmlChildren(rootNode)[-1],parseMathML, genes, inputThresholds) if (operator == "and" || operator == "times") { # treat "and" and "times" equally, but warn if (operator == "times") warning("Interpreting \"times\" operator as a logical \"and\"!") return(paste("(",paste(children, collapse = " & "),")",sep="")) } else if (operator == "or" || operator == "plus") { # treat "or" and "plus" equally, but warn if (operator == "plus") warning("Interpreting \"plus\" operator as a logical \"or\"!") return(paste("(",paste(children, collapse = " | "),")",sep="")) } else if (operator == "xor") { # convert XOR to a DNF by pasting all odd entries in the truth table tt <- allcombn(2, length(children)) - 1 tt <- apply(tt,1,function(x)sum(x) %/% 2 == 1) return(paste("(",getDNF(tt, children),")",sep="")) } else if (operator %in% c ("eq", "neq", "gt", "lt", "geq", "leq")) { # comparison operators have to be converted to Boolean logic if (length(children) != 2) stop(paste("Operator \"",operator,"\" requires two operands!",sep="")) # check which of the child expressions are constant isConst <- sapply(children,function(x) { check.integer(x) }) if (all(isConst)) # two constants are compared (this does not really make sense!) { children <- as.integer(children) return(as.integer(switch(operator, eq = {children[1] == children[2]}, neq = {children[1] != children[2]}, gt = {children[1] > children[2]}, lt = {children[1] < children[2]}, geq = {children[1] >= children[2]}, leq = {children[1] <= children[2]} ))) } else if (any(isConst)) # one constant and one variable are compared { constChild <- as.integer(children[isConst]) varChild <- children[!isConst] return(switch(operator, eq = { if (constChild == 1) varChild else paste("!",varChild,sep="") }, neq = { if (constChild == 0) varChild else paste("!",varChild,sep="") }, gt = { if (constChild == 1) "0" else varChild }, lt = { if (constChild == 0) "0" else paste("!",varChild,sep="") }, geq = { if (constChild == 0) "1" else varChild }, leq = { if (constChild == 1) "1" else paste("!",varChild,sep="") } )) } else # two variables are compared { return(switch(operator, eq = { paste("((",children[1]," & ",children[2],") | ", "(!",children[1]," & !",children[2],"))", sep="") }, neq = { paste("((",children[1]," & !",children[2],") | ", "(!",children[1]," & ",children[2],"))", sep="") }, gt = { paste("(",children[1]," & !",children[2],")", sep="") }, lt = { paste("(!",children[1]," & ",children[2],")", sep="") }, geq = { paste("(",children[1], " | !",children[2],")", sep="") }, leq = { paste("(!",children[1], " | ",children[2],")", sep="") } )) } } else if (operator == "not") { if (length(children) > 2) stop("Multiple arguments supplied to unary operator \"neg\"!") return(paste("!",children, sep="")) } else # an unsupported symbol has been specified stop(paste("Unsupported math symbol: ", operator,"!",sep="")) } else if (name == "ci") # this is a gene identifier or a threshold level { id <- trim(xmlValue(rootNode)) if (!(id %in% names(genes))) { if (!(id %in% names(inputThresholds))) # neither threshold identifier nor gene stop(paste("Unspecified input \"",id,"\" in transition function!",sep="")) else # this is a threshold identifier return(inputThresholds[id]) } # this is a gene return(genes[id]) } else if (name == "cn") # this is a constant { # convert value and ensure it is Boolean attrs <- xmlAttrs(rootNode) if (!is.null(attrs) && !is.na(attrs["type"]) && tolower(attrs["type"]) != "integer") stop("\"cn\" nodes must be of type \"integer\"!") val <- trim(xmlValue(rootNode)) if (!check.integer(val) || !(as.integer(val) %in% c(0,1))) stop("\"cn\" nodes must be 0 or 1!") return(val) } else if (name == "true") return("1") else if (name == "false") return("0") else # an unsupported symbol has been specified stop(paste("Unsupported math symbol: ", name,"!",sep="")) } # Import the sbml-qual document loadSBML <- function(file, symbolic=FALSE) { # load XML document doc <- xmlRoot(xmlParse(file)) # remove comments from the document suppressWarnings(comments <- getNodeSet(doc,"//comment()")) if (length(comments) > 0) removeNodes(comments) # do various checks to ensure this is an sbml-qual document if (xmlName(doc) != "sbml") stop("Not an SBML document!") if (as.integer(xmlAttrs(doc)["level"]) > 3 || as.integer(xmlAttrs(doc)["version"]) > 1) warning("This import is designed for documents up to SBML level 3 version 1!") if (is.null(xmlNamespaces(doc)$qual)) stop("This document does not import the sbml-qual package!") model <- xmlFindNode(doc, "model", throwError=TRUE)[[1]] # compartments are ignored # parse species species <- xmlFindNode(model, "listOfQualitativeSpecies", throwError=TRUE)[[1]] genes <- parseSBMLSpecies(species) # parse transitions transitions <- xmlFindNode(model, "listOfTransitions", throwError=TRUE)[[1]] interactions <- parseSBMLTransitions(transitions, genes, symbolic) if (symbolic) { delays <- apply(sapply(interactions,maxTimeDelay,genes=genes$genes),1,max) fixed <- as.integer(rep(-1L,length(genes$genes))) names(fixed) <- genes$genes res <- list(genes = genes$genes, interactions=interactions, fixed=fixed) res$internalStructs <- .Call("constructNetworkTrees_R",res) res$timeDelays <- delays class(res) <- "SymbolicBooleanNetwork" } else { # create BooleanNetwork structure res <- list(genes = genes$genes, fixed = sapply(interactions,function(i) { if (i$input[1] == 0) i$func[1] else -1 }), interactions = interactions) class(res) <- "BooleanNetwork" } return(res) } BoolNet/R/getTransitionTable.R0000644000176200001440000000436313277247010015753 0ustar liggesusers# Retrieves the transition table of an AttractorInfo structure # in a readable way getTransitionTable <- function(attractorInfo) { stopifnot(inherits(attractorInfo,"AttractorInfo") || inherits(attractorInfo,"SymbolicSimulation")) if (inherits(attractorInfo,"SymbolicSimulation")) { if (is.null(attractorInfo$graph)) stop(paste("This SymbolicSimulation structure does not contain transition table information.", "Please re-run simulateSymbolicModel() with returnGraph=TRUE!")) return(attractorInfo$graph) } else if (is.null(attractorInfo$stateInfo$table)) stop(paste("This AttractorInfo structure does not contain transition table information.", "Please re-run getAttractors() with a synchronous search and returnTable=TRUE!")) return(.internal.getTransitionTable(attractorInfo$stateInfo)) } # Internally used to extract the information from the subcomponent # of AttractorInfo .internal.getTransitionTable <- function(stateInfo) { fixedGenes <- which(stateInfo$fixedGenes != -1) nonFixedGenes <- which(stateInfo$fixedGenes == -1) if (!is.null(stateInfo$initialStates)) { initialStates <- t(apply(stateInfo$initialStates,2,dec2bin,length(stateInfo$genes))) } else { initialStates <- matrix(ncol=length(stateInfo$genes),nrow=2^length(nonFixedGenes)) # encode the initial states # first, encode the changing part by calculating all combinations temp <- allcombn(2,length(nonFixedGenes)) - 1 initialStates[,nonFixedGenes] <- temp[,ncol(temp):1] if (length(fixedGenes) > 0) # if there are fixed genes, encode their values initialStates[,fixedGenes] <- sapply(stateInfo$fixedGenes[fixedGenes], function(value)rep(value,2^length(nonFixedGenes))) } # build return structure of class TransitionTable res <- data.frame(initialStates, t(apply(stateInfo$table,2,dec2bin,length(stateInfo$genes))), stateInfo$attractorAssignment,stateInfo$stepsToAttractor) colnames(res) <- c(paste("initialState.",stateInfo$genes,sep=""), paste("nextState.",stateInfo$genes,sep=""), "attractorAssignment","transitionsToAttractor") class(res) <- c("TransitionTable","data.frame") return(res) } BoolNet/R/getTransitionProbabilities.R0000644000176200001440000000177713277247010017522 0ustar liggesusers# Builds a matrix of transitions and their probabilities from getTransitionProbabilities <- function(markovSimulation) { stopifnot(inherits(markovSimulation,"MarkovSimulation")) if (is.null(markovSimulation$table)) stop(paste("The supplied simulation result does not contain transition information.", "Please re-run markovSimulation() with returnTable=TRUE!")) initialStates <- t(apply(markovSimulation$table$initialStates,2,dec2bin,length(markovSimulation$genes))) nextStates <- t(apply(markovSimulation$table$nextStates,2,dec2bin,length(markovSimulation$genes))) idx <- order(apply(initialStates,1,function(x)paste(x,collapse=""))) res <- data.frame(initialStates,nextStates,markovSimulation$table$probabilities) res <- res[idx,] rownames(res) <- NULL colnames(res) <- c(paste("initialState.",markovSimulation$genes,sep=""), paste("nextState.",markovSimulation$genes,sep=""), "probability") return(res) } BoolNet/R/helpers.R0000644000176200001440000002562413301250335013606 0ustar liggesusers # Encode a vector of binary values with bits # to a decimal number bin2dec <- function(bin,len) { if (len %% 32 == 0) numElts <- as.integer(len / 32) else numElts <- as.integer(len / 32) + 1 dec = rep(0,numElts) dec = .C("bin2decC",as.integer(dec),as.integer(bin),as.integer(len))[[1]] } # Decode the low-order bits of to a vector of binary values, # where the first entry is the least significant bit dec2bin <- function(dec,len) { bin = rep(0,len) bin = .C("dec2binC",as.integer(bin),as.integer(dec),as.integer(len),NAOK=TRUE)[[1]] } # Generate a list of all assignments of n variables with N possible values allcombn <- function(N,n) { rownum = N^n sapply(n:1,function(i) { rep(seq_len(N),each=N^(i-1),len=rownum) }) } # Get DNF representation of a truth table # using the gene names in . # If is "canonical", build a canonical DNF. # If is "short", join terms to reduce the DNF getDNF <- function(truthTable, genes, mode = c("short","canonical")) { if (mode[1] == TRUE) mode <- (if (length(genes) <= 12) "short" else "canonical") mode <- match.arg(mode, c("short","canonical")) # check for constant functions if (isTRUE(all.equal(truthTable,rep(0,length(truthTable))))) return("0") else if (isTRUE(all.equal(truthTable,rep(1,length(truthTable))))) return("1") # generate truth table entries <- allcombn(2,length(genes)) - 1 colnames(entries) <- genes if (mode == "short") { # heuristic minimization # the 1 terms that need to be covered uncoveredEntries <- which(truthTable == 1) # current conjunction list conjunctions <- list() while (length(uncoveredEntries) > 0) { # take an uncovered entry and expand it currentEntry <- entries[uncoveredEntries[1],] for (gene in genes) # test for each gene whether it can be eliminated from the term { geneIdx <- which(names(currentEntry) == gene) candidate <- currentEntry[-geneIdx] condition <- rep(TRUE,length(truthTable)) for (i in seq_along(candidate)) { condition <- condition & (entries[,names(candidate)[i]] == candidate[i]) } if (length(unique(truthTable[condition])) == 1) # eliminate gene currentEntry <- currentEntry[-geneIdx] } # determine which truth table result entries are now covered eliminatedEntries <- rep(TRUE,length(truthTable)) for (i in seq_along(currentEntry)) { eliminatedEntries <- eliminatedEntries & (entries[,names(currentEntry)[i]] == currentEntry[i]) } uncoveredEntries <- setdiff(uncoveredEntries, which(eliminatedEntries)) # remember conjunction conjunctions <- c(conjunctions, list(currentEntry)) } return(paste(paste("(",sapply(conjunctions, function(conj) { paste(mapply(function(gene, val) { if (val == 1) return(gene) else return(paste("!",gene,sep="")) }, names(conj), conj), collapse=" & ") }), ")", sep=""), collapse=" | ")) } else { # canonical DNF conjunctions <- apply(entries[truthTable==1,,drop=FALSE],1,function(conj) { paste("(",paste(sapply(seq_along(conj),function(lit) { if (conj[lit]) genes[lit] else paste("!",genes[lit],sep="") }),collapse=" & "),")",sep="") }) return(paste(conjunctions[conjunctions != ""],collapse = " | ")) } } # Retrieves a string representation of an interaction function by either # building a DNF (if is false) # or returning an unspecific function description # (if is true or "canonical" or "short"). # contains the result column of the interaction's truth table, and # contains the names of the involved genes. getInteractionString <- function(readableFunctions,truthTable,genes) { if (readableFunctions != FALSE) getDNF(truthTable,genes, readableFunctions) else { if (isTRUE(all.equal(truthTable,rep(0,length(truthTable))))) return("0") else if (isTRUE(all.equal(truthTable,rep(1,length(truthTable))))) return("1") else { truthTable <- sapply(truthTable,function(x) { if (x == 0) "0" else if (x == 1) "1" else "*" }) paste("", sep="") } } } # Reorders a matrix of states (with each column being one state) # in a canonical way such that the "smallest" state is the first. # This makes attractor representations unique. canonicalStateOrder <- function(stateMatrix) { smallestIndex <- -1 smallestVal <- rep(Inf,nrow(stateMatrix)) for (i in seq_len(ncol(stateMatrix))) # iterate over states { for (j in seq_len(nrow(stateMatrix))) # iterate over elements of encoded state { if (stateMatrix[j,i] < smallestVal[j]) # determine new minimum { smallestVal <- stateMatrix[,i] smallestIndex <- i break } else { if (stateMatrix[j,i] > smallestVal[j]) break } } } if (smallestIndex != 1) # rearrange matrix return(cbind(stateMatrix[,smallestIndex:ncol(stateMatrix),drop=FALSE], stateMatrix[,seq_len(smallestIndex-1),drop=FALSE])) else return(stateMatrix) } # Find a child node named # of , or return NULL if such a node # does not exist. # If , throw an error if the node does not exist. xmlFindNode <- function(node,name,throwError=FALSE) { indices <- which(xmlSApply(node, xmlName) == name) if (length(indices) == 0) { if (throwError) stop(paste("Node \"",name,"\" is required, but missing!", sep="")) else return(NULL) } return(xmlChildren(node)[indices]) } # Remove leading and trailing whitespace characters from trim <- function(string) { string <- gsub("^[ \t]+", "", string) string <- gsub("[ \t]+$", "", string) return(string) } # Generate an interaction by parsing # and building the corresponding truth table. # Here, is a list of all genes in the network. # Returns an interaction as used in the BooleanNetwork class. generateInteraction <- function(expressionString, genes) { res <- .Call("getTruthTable_R", parseBooleanFunction(expressionString, genes), length(genes)) names(res) <- c("input","func") res$expression <- expressionString return(res) } # Create a DNF from a count predicate # ("maj","sumis","sumgt","sumlt"). # is the expression tree of the predicate # Returns an expression tree in DNF expandCountPredicate <- function(tree) { if (tree$operator == "maj") { if (length(tree$operands) %%2 == 0) count <- length(tree$operands) / 2 else count <- floor(length(tree$operands) / 2) operands <- tree$operands } else { count <- tree$operands[[length(tree$operands)]]$value operands <- tree$operands[-length(tree$operands)] } table <- as.matrix(allcombn(2,length(operands)) - 1) tableRes <- as.integer(apply(table,1,function(x) { switch(tree$operator, "maj" = sum(x) > count, "sumgt" = sum(x) > count, "sumlt" = sum(x) < count, "sumis" = sum(x) == count ) })) return(parseBooleanFunction(getDNF(tableRes, sapply(operands, stringFromParseTree)))) } # Get the inputs for an expression tree . # If is TRUE, the indices are returned instead of the gene names. # Returns a vector of gene names. getInputs <- function(tree, index=FALSE) { res <- switch(tree$type, operator = { unique(unlist(lapply(tree$operands, getInputs, index=index))) }, atom = { if (index) tree$index else tree$name }, constant = { NULL } ) return(res) } # Determine the maximum time delays for the genes # in a symbolic expression tree . # Returns a vector of time delays for the genes. maxTimeDelay <- function(tree, genes) { res <- switch(tree$type, operator = { timeDelays <- sapply(tree$operands, maxTimeDelay, genes=genes) if (!is.null(dim(timeDelays))) apply(timeDelays,1,max) else timeDelays }, atom = { res <- rep(1,length(genes)) names(res) <- genes res[tree$index] <- -tree$time res }, constant = { res <- rep(1,length(genes)) names(res) <- genes res } ) return(res) } # Convert into valid identifiers # by replacing special characters # Returns a vector of adjusted gene names. adjustGeneNames <- function(geneNames) { # eliminate special characters res <- gsub("[^a-zA-Z0-9_]+","_",geneNames) # ensure that identifier does not start with a number res <- gsub("(^[0-9][a-zA-Z0-9_]*)$","_\\1", res) names(res) <- geneNames return(res) } # Check whether the internal C pointer is null checkNullPointer <- function(ptr) { return(.Call("checkNullPointerC",ptr)) } # Print a synchronous attractor specified by a data frame # The attractor has the index and a basin consisting of states. # If is true, states are represented as a list of active genes (otherwise binary vectors). printSynchronousAttractor <- function(attractor, index, basinSize=NA, activeOnly=FALSE) { if (is.na(basinSize)) cat("Attractor ",index," is a simple attractor consisting of ", nrow(attractor), " state(s)",sep="") else cat("Attractor ",index," is a simple attractor consisting of ", nrow(attractor), " state(s) and has a basin of ", basinSize, " state(s)",sep="") # print a graphical representation of the attractor cycle if (activeOnly) { cat(".\nActive genes in the attractor state(s):\n") for (j in seq_len(nrow(attractor))) { state <- paste(colnames(attractor)[which(attractor[j,] == 1)],collapse=", ") if (state == "") state <- "--" cat("State ", j, ": ", state, "\n", sep="") } cat("\n") } else { cat(":\n\n") numGenes <- ncol(attractor) cat(" |--<", paste(rep("-",numGenes-1), collapse=""),"|\n", sep="") cat(" V ", paste(rep(" ",numGenes-1), collapse="")," |\n", sep="") for (j in seq_len(nrow(attractor))) { cat(" ", as.integer(attractor[j,])," |\n",sep="") #cat(" | ", paste(rep(" ",numGenes-1), collapse="")," |\n", sep="") } cat(" V ", paste(rep(" ",numGenes-1), collapse=""), " |\n", sep="") cat(" |-->", paste(rep("-",numGenes-1), collapse=""), "|\n\n", sep="") } if (!activeOnly) cat("\nGenes are encoded in the following order: ", paste(colnames(attractor), collapse=" "), "\n\n", sep="") } BoolNet/R/markovSimulation.R0000644000176200001440000001226113277247010015511 0ustar liggesusers# Perform a Markov chain simulation with iterations/matrix multiplications on . # If is supplied, probabilities for all other start states will be set to 0. # All probabilities below are regarded as zero. markovSimulation <- function(network, numIterations=1000, startStates=list(), cutoff=0.001, returnTable=TRUE) { stopifnot(inherits(network,"ProbabilisticBooleanNetwork") | inherits(network,"BooleanNetwork")) if (sum(network$fixed == -1) > 32) stop("A Markov chain simulation with more than 32 non-fixed genes is not supported!") # the C code requires all interactions to be coded into one vector: if (inherits(network,"BooleanNetwork")) # deterministic network { # Assemble all input gene lists in one list , and remember the split positions in . inputGenes <- as.integer(unlist(lapply(network$interactions,function(interaction)interaction$input))) inputGenePositions <- as.integer(cumsum(c(0,sapply(network$interactions, function(interaction)length(interaction$input))))) # Do the same for the transition functions. transitionFunctions <- as.integer(unlist(lapply(network$interactions,function(interaction)interaction$func))) transitionFunctionPositions <- as.integer(cumsum(c(0,sapply(network$interactions, function(interaction)length(interaction$func))))) probabilities <- as.double(rep(1.0,length(network$genes))) functionAssignment <- as.integer(0:(length(network$genes)-1)) } else # probabilistic network { wrongProb <- sapply(network$interactions,function(interaction) abs(1.0-sum(sapply(interaction,function(func)func$probability))) > 0.0001) if (any(wrongProb)) stop(paste("The probabilities of gene(s) ",paste(network$genes[wrongProb],collapse=", ")," do not sum up to 1!",sep="")) # Assemble all input gene lists in one list , and remember the split positions in . inputGenes <- as.integer(unlist(lapply(network$interactions,function(interaction)lapply(interaction,function(singleFunc)singleFunc$input)))) inputGenePositions <- as.integer(cumsum(c(0,unlist(lapply(network$interactions, function(interaction)lapply(interaction,function(singleFunc)length(singleFunc$input))))))) # Do the same for the transition functions. transitionFunctions <- as.integer(unlist(lapply(network$interactions,function(interaction)lapply(interaction,function(singleFunc)singleFunc$func)))) transitionFunctionPositions <- as.integer(cumsum(c(0,unlist(lapply(network$interactions, function(interaction)lapply(interaction,function(singleFunc)length(singleFunc$func))))))) probabilities <- as.double(unlist(lapply(network$interactions,function(interaction)lapply(interaction,function(singleFunc)singleFunc$probability)))) functionAssignment <- as.integer(unlist(mapply(function(index,interaction)rep(index,length(interaction)),0:(length(network$interactions )- 1), network$interactions))) } # check whether the start states are allowed # by comparing the values of the fixed genes fixedGenes <- which(network$fixed != -1) if (length(startStates) > 0) { statesValid <- sapply(startStates,function(state) { isTRUE(all(state[fixedGenes] == network$fixed[fixedGenes])) }) if (!isTRUE(all(statesValid))) warning("Some of the supplied start states did not match the restrictions of the fixed genes and were removed!") startStates <- startStates[statesValid] } convertedStartStates <- NULL if (length(startStates) > 0) convertedStartStates <- sapply(startStates,function(x)bin2dec(x,length(network$genes))) on.exit(.C("freeAllMemory", PACKAGE = "BoolNet")) # call C code res <- .Call("markovSimulation_R", inputGenes,inputGenePositions, transitionFunctions,transitionFunctionPositions, as.integer(network$fixed), functionAssignment, probabilities, as.integer(numIterations), convertedStartStates, as.double(cutoff), as.integer(returnTable), PACKAGE="BoolNet") if (length(network$genes) %% 32 == 0) numElementsPerEntry <- as.integer(length(network$genes) / 32) else numElementsPerEntry <- as.integer(length(network$genes) / 32 + 1) # build result matrix reachedStates <- data.frame(t(sapply(res$states,function(state)dec2bin(state,length(network$genes)))),res$probabilities) colnames(reachedStates) <- c(network$genes,"Probability") if (returnTable) { initialStates <- matrix(res$initialStates,nrow=numElementsPerEntry) nextStates <- matrix(res$nextStates,nrow=numElementsPerEntry) res <- list(reachedStates=reachedStates, table=list(initialStates=initialStates,nextStates=nextStates,probabilities=res$transitionProbabilities), genes=network$genes) } else { res <- list(reachedStates=reachedStates, table=NULL, genes=network$genes) } class(res) <- "MarkovSimulation" return(res) } BoolNet/R/generateRandomStartStates.R0000644000176200001440000000277713277247010017315 0ustar liggesusers generateRandomStartStates <- function(network, n) { mat <- matrix(nrow=n,ncol=length(network$genes)) fixedPositions <- which(network$fixed != -1) nonFixedPositions <- which(network$fixed == -1) if (n > (2 ^ length(nonFixedPositions))) stop("The number of states to generate exceeds the total number of possible states!") if (length(fixedPositions) != 0) # fill fixed positions with the corresponding values mat[,fixedPositions] <- sapply(fixedPositions,function(x) rep(network$fixed[x],n)) if (n != 2 ^ length(nonFixedPositions)) { # generate other positions randomly mat[,nonFixedPositions] <- round(runif(n=n*length(nonFixedPositions))) } else { mat[,nonFixedPositions] <- allcombn(2,length(nonFixedPositions)) - 1 } # eliminate duplicates mat <- unique(mat) while (nrow(mat) != n) # if duplicates were removed, generate new states until the # desired number of states is reached { vec <- rep(0,length(network$genes)) if (length(fixedPositions) != 0) # fill fixed positions vec[fixedPositions] <- sapply(fixedPositions, function(x)network$fixed[x]) # generate other positions randomly vec[nonFixedPositions] <- round(runif(n=length(nonFixedPositions))) mat <- unique(rbind(mat,vec)) } #cat("Using initial states:\n") # print states and form a list res <- lapply(1:nrow(mat),function(i) { #cat(paste(mat[i,],collapse=""),"\n",sep="") mat[i,] }) #cat("\n") return(res); } BoolNet/R/getBasinOfAttraction.R0000644000176200001440000000101513277247010016212 0ustar liggesusers# Determine the basin of attraction of attractor in . getBasinOfAttraction <- function(attractorInfo,attractorNo) { stopifnot(inherits(attractorInfo,"AttractorInfo") || inherits(attractorInfo,"SymbolicSimulation")) if (missing(attractorNo) || attractorNo <= 0 || attractorNo > length(attractorInfo$attractors)) stop("Please provide a valid attractor number!") table <- getTransitionTable(attractorInfo) return(table[which(table$attractorAssignment == attractorNo),,drop=FALSE]) } BoolNet/R/print.ProbabilisticBooleanNetwork.R0000644000176200001440000000263013277247010020737 0ustar liggesusersprint.BooleanNetworkCollection <- function(x, ...) { print.ProbabilisticBooleanNetwork(x, ...) } # Custom print function for class ProbabilisticBooleanNetwork print.ProbabilisticBooleanNetwork <- function(x, ...) { cat("Probabilistic Boolean network with",length(x$genes),"genes\n\n") cat("Involved genes:\n",paste(x$genes,collapse=" "),"\n\n",sep="") cat("Transition functions:\n") mapply(function(gene,interaction) { cat("\nAlternative transition functions for gene ",gene,":\n",sep="") # print original expressions read from the files (if available) lapply(interaction,function(func) { cat(gene," = ",func$expression,sep="") if (!is.null(func$probability) || !is.null(func$error)) { cat(" (") if (!is.null(func$probability)) { cat(" probability: ",func$probability,sep="") if (!is.null(func$error)) cat(", ") } if (!is.null(func$error)) cat("error: ",func$error,sep="") cat(")") } cat("\n") }) }, x$genes,x$interactions) if (sum(x$fixed != -1) > 0) { cat("\nKnocked-out and over-expressed genes:\n") mapply(function(gene,fixed) { if (fixed != -1) cat(gene," = ",fixed,"\n",sep="") }, x$genes,x$fixed) } return(invisible(x)) } BoolNet/R/plotNetworkWiring.R0000644000176200001440000000525013277247010015655 0ustar liggesusers# Plot a wiring graph of the network with the supplied # graphical parameters. # Requires igraph. # Returns the igraph structure representing the wiring graph. plotNetworkWiring <- function(network,layout=layout.fruchterman.reingold,plotIt=TRUE,...) { stopifnot(inherits(network,"ProbabilisticBooleanNetwork") | inherits(network,"BooleanNetworkCollection") | inherits(network,"BooleanNetwork") | inherits(network,"SymbolicBooleanNetwork")) if (installed.packages()["igraph","Version"] < package_version("0.6")) bias <- 1 else bias <- 0 edgeList <- c() # construct list of edges from interactions if (inherits(network,"BooleanNetwork")) # deterministic network { for (i in seq_along(network$genes)) { if (network$interactions[[i]]$input[1] != 0) # no edges for constant genes { edgeList <- rbind(edgeList, cbind(network$interactions[[i]]$input, rep(i,length(network$interactions[[i]]$input)))) } } } else if (inherits(network,"SymbolicBooleanNetwork")) # symbolic network { inputs <- lapply(network$interactions, getInputs, index=TRUE) for (i in seq_along(network$genes)) { edgeList <- rbind(edgeList, cbind(inputs[[i]], rep(i,length(inputs[[i]])))) } } else # probabilistic network { for (i in seq_along(network$genes)) { for (j in seq_along(network$interactions[[i]])) { if (network$interactions[[i]][[j]]$input[1] != 0) # no edges for constant genes { edgeList <- rbind(edgeList, cbind(network$interactions[[i]][[j]]$input, rep(i,length(network$interactions[[i]][[j]]$input)))) } } } } # build graph from edge list res <- graph.data.frame(edgeList-bias,directed=TRUE,vertices=as.data.frame((seq_along(network$genes)) - bias)) res <- set.vertex.attribute(res,"name",value=network$genes) args <- list(...) # check for certain graphical parameters in ... # that have different default values in this plot if (is.null(args$vertex.color)) args$vertex.color <- "grey" if (is.null(args$edge.arrow.size)) args$edge.arrow.size <- 0.5 if (is.null(args$vertex.label.cex)) args$vertex.label.cex <- 0.7 if (is.null(args$vertex.size)) args$vertex.size <- 18 if (plotIt) { plot(res,vertex.label=network$genes,vertex.label.cex=args$vertex.label.cex, vertex.size=args$vertex.size,vertex.color=args$vertex.color, edge.arrow.size=args$edge.arrow.size, layout=layout,...) } return(invisible(res)) } BoolNet/R/print.BooleanNetwork.R0000644000176200001440000000133013277247010016224 0ustar liggesusers# Custom print function for class BooleanNetwork print.BooleanNetwork <- function(x, ...) { cat("Boolean network with",length(x$genes),"genes\n\n") cat("Involved genes:\n",paste(x$genes,collapse=" "),"\n\n",sep="") cat("Transition functions:\n") mapply(function(gene,interaction) { # print original expressions read from the files (if available) cat(gene," = ",interaction$expression,"\n",sep="") }, x$genes,x$interactions) if (sum(x$fixed != -1) > 0) { cat("\nKnocked-out and over-expressed genes:\n") mapply(function(gene,fixed) { if (fixed != -1) cat(gene," = ",fixed,"\n",sep="") }, x$genes,x$fixed) } return(invisible(x)) } BoolNet/R/plotPBNTransitions.R0000644000176200001440000000721013277247010015717 0ustar liggesusers# Plots a graph of the transitions in a probabilistic Boolean network. # is the result of a Markov simulation with returnTable=TRUE. # If stateSubset is specified, only transitions between states in the set are considered. # If is true, the edges are annotated with probabilities. # If is true, the states are annotated with their gene values. # specifies the igraph layout to be used. # If is false, only the graph is returned, and nothing is plotted. # ... specifies further parameters to igraph. plotPBNTransitions <- function(markovSimulation,stateSubset, drawProbabilities=TRUE,drawStateLabels=TRUE, layout=layout.fruchterman.reingold, plotIt=TRUE,...) { stopifnot(inherits(markovSimulation,"MarkovSimulation")) if (is.null(markovSimulation$table)) stop(paste("The supplied simulation result does not contain transition information.", "Please re-run markovSimulation() with returnTable=TRUE!")) # assemble edges from table edgeMatrix <- data.frame(apply(markovSimulation$table$initialStates,2, function(x)paste(dec2bin(x,length(markovSimulation$genes)),collapse="")), apply(markovSimulation$table$nextStates,2, function(x)paste(dec2bin(x,length(markovSimulation$genes)),collapse=""))) if (!missing(stateSubset)) { # determine edges to be excluded based on the subset stateSubset <- sapply(stateSubset,function(x)paste(x,collapse="")) keepIndices <- apply(edgeMatrix,1,function(row) { (length(intersect(row,stateSubset)) == length(unique(row))) }) # drop edges edgeMatrix <- edgeMatrix[keepIndices,] probabilities <- markovSimulation$table$probabilities[keepIndices] } else probabilities <- markovSimulation$table$probabilities # determine set of vertices vertices <- as.data.frame(as.character(unique(c(as.character(edgeMatrix[,1]), as.character(edgeMatrix[,2]))))) # build graph graph <- graph.data.frame(edgeMatrix,vertices=vertices,directed=TRUE) if (drawProbabilities) graph <- set.edge.attribute(graph,"label",value=paste(" ",probabilities)) if (drawStateLabels) label <- as.character(vertices[,1]) else label <- NA if (plotIt) { # set default values for further graphical parameters args <- list(...) if (is.null(args$vertex.size)) args$vertex.size <- 2 if (is.null(args$edge.arrow.mode)) args$edge.arrow.mode <- 0 if (is.null(args$vertex.label.cex)) args$vertex.label.cex <- 0.75 if (is.null(args$edge.label.cex)) args$edge.label.cex <- 0.75 if (is.null(args$vertex.label.dist)) args$vertex.label.dist <- 1 if (is.null(args$vertex.color)) args$vertex.color <- "grey" if (is.null(args$edge.label.color)) args$edge.label.color <- "green" if (is.null(args$edge.arrow.size)) args$edge.arrow.size <- 0.5 # plot it plot(graph,vertex.label=label,layout=layout,vertex.label.cex=args$vertex.label.cex, vertex.size=args$vertex.size,vertex.color=args$vertex.color, vertex.label.dist = args$vertex.label.dist, edge.arrow.size=args$edge.arrow.size, edge.label.color=args$edge.label.color, edge.label.cex=args$edge.label.cex,...) } # return the igraph object return(invisible(graph)) } BoolNet/R/generateState.R0000644000176200001440000000175313277247010014744 0ustar liggesusersgenerateState <- function(network, specs, default=0) { stopifnot(inherits(network,"ProbabilisticBooleanNetwork") || inherits(network,"BooleanNetwork") || inherits(network,"SymbolicBooleanNetwork")) if (!all(names(specs) %in% network$genes)) stop(paste("Undefined gene names:", paste(setdiff(names(specs), network$genes), collapse=", "))) if (!all(unlist(specs) %in% c(0,1))) stop("Please provide only Boolean values!") lengths <- unique(sapply(specs, length)) if (length(lengths) > 1) stop("The number of specifications for each gene must be the same!") if (lengths == 1) { state <- rep(default, length(network$genes)) names(state) <- network$genes state[names(specs)] <- specs } else { state <- matrix(rep(default, length(network$genes) * lengths), nrow=lengths) colnames(state) <- network$genes for (i in seq_along(specs)) state[,names(specs)[i]] <- specs[[i]] } return(state) } BoolNet/R/zeta.R0000644000176200001440000000144013277247010013105 0ustar liggesusers # Distribution function of the Zeta distribution dzeta <- function(k,gamma=2.5,approx_cutoff=100) { zeta_approx <- sum(sapply(seq_len(approx_cutoff),function(x)1/(x^gamma))) sapply(k,function(k_i) { 1/(k_i^gamma * zeta_approx) }) } # Quantile function of the Zeta distribution qzeta <- function(p,maxK,gamma=2.5,approx_cutoff=100) { vals <- cumsum(dzeta(seq_len(maxK),gamma,approx_cutoff)) sapply(p,function(p_i) { indices <- which(vals > p_i) if (length(indices) == 0) return(NA) else return(indices[1]) }) } # Draw random numbers from the Zeta distribution rzeta <- function(n,maxK,gamma=2.5,approx_cutoff=100) { maxP <- cumsum(dzeta(seq_len(maxK),gamma,approx_cutoff)) p <- runif(min=0,max=maxP,n=n) return(qzeta(p,maxK,gamma,approx_cutoff)) } BoolNet/R/toSBML.R0000644000176200001440000002040413277247010013243 0ustar liggesusers# Indent using tabs. indent <- function(string,count) { if (count == 0) return(string) return(paste(paste(rep("\t",count),collapse=""), string, sep="")) } # Export a Boolean network to an sbml-qual file . # If , a new symbolic representation for the interactions # is generated on the basis of the truth tables (in disjunctive normal form). # Otherwise, the $expression elements of the interactions are parsed. # If is true, constant transition functions are exported for fixed genes # instead of their true transition functions toSBML <- function(network, file, generateDNFs=FALSE, saveFixed = TRUE) { symbolic <- inherits(network,"SymbolicBooleanNetwork") stopifnot(inherits(network,"BooleanNetwork") || symbolic) if (symbolic) { if (any(network$timeDelays > 1)) stop("SBML does not support networks with time delays!") parseTrees <- network$interactions } else { parseTrees <- NULL if (generateDNFs == FALSE) # Check whether all interactions have suitable string representations { tryCatch( { # parse the string representations parseTrees <- lapply(network$interactions, function(int)parseBooleanFunction(int$expression)) }, error=function(e) { warning(paste("The transition functions of this network did not contain valid symbolic expressions!", "Generating DNF representations from the truth tables!")) # There was an error parsing a string representation => generate DNFs generateDNFs <<- TRUE }) } if (generateDNFs != FALSE) # build new representations of the functions in disjunctive normal form { network$interactions <- lapply(network$interactions, function(interaction) { table <- allcombn(2, length(interaction$input)) - 1 interaction$expression <- getDNF(interaction$func, network$genes[interaction$input], generateDNFs) return(interaction) }) # parse the DNF representations parseTrees <- lapply(network$interactions, function(int)parseBooleanFunction(int$expression)) } names(parseTrees) <- network$genes } # generate a network identifier from the file name id <- sub(".sbml", "", basename(file), fixed=TRUE) id <- gsub("[^a-zA-Z0-9_]+","_",id) # open a string connection output <- NULL f <- textConnection("output", encoding="UTF-8", open="w", local=TRUE) # write document header cat(file=f, "\n") cat(file=f, "\n") cat(file=f, "\t\n", sep="") # write default compartment cat(file=f, "\t\t\n") cat(file=f, "\t\t\t\n") cat(file=f, "\t\t\n") # write genes cat(file=f, "\t\t\n") for (gene in network$genes) { if ((saveFixed && network$fixed[gene] != -1) || (!symbolic && network$interactions[[gene]]$input[1] == 0)) { if (saveFixed && network$fixed[gene] != -1) level <- network$fixed[gene] else level <- network$interactions[[gene]]$func[1] cat(file=f, "\t\t\t\n", sep="") } else cat(file=f, "\t\t\t\n", sep="") } cat(file=f, "\t\t\n") # write transition functions cat(file=f, "\t\t\n") for (gene in network$genes) { if ((!saveFixed || network$fixed[[gene]] == -1) && (symbolic || network$interactions[[gene]]$input[1] != 0)) { cat(file=f, "\t\t\t\n", sep="") cat(file=f, "\t\t\t\t\n") if (symbolic) inputs <- getInputs(network$interactions[[gene]]) else inputs <- network$genes[network$interactions[[gene]]$input] for (input in inputs) cat(file=f, "\t\t\t\t\t\n", sep="") cat(file=f, "\t\t\t\t\n") cat(file=f, "\t\t\t\t\n") cat(file=f, "\t\t\t\t\t\n", sep="") cat(file=f, "\t\t\t\t\n") cat(file=f, "\t\t\t\t\n") cat(file=f, "\t\t\t\t\t\n") cat(file=f, "\t\t\t\t\t\t\n") parseTree <- parseTrees[[gene]] cat(file=f, MathMLFromParseTree(parseTree, indentLevel=7)) cat(file=f, "\t\t\t\t\t\t\n") cat(file=f, "\t\t\t\t\t\n") cat(file=f, "\t\t\t\t\t\n") cat(file=f, "\t\t\t\t\n") cat(file=f, "\t\t\t\n") } } # finish document cat(file=f, "\t\t\n") cat(file=f, "\t\n") cat(file=f, "\n") close(f) # open file and write the complete XML string f <- file(file, encoding="UTF-8", open="w") cat(file=f,output,sep="\n") close(f) } # Build a MathML representation of a parse tree # that represents a symbolic Boolean expression. # Indentation of the XML nodes starts with . # Returns a string with MathML code. MathMLFromParseTree <- function(tree,indentLevel=0) { res <- switch(tree$type, operator = { if (tree$operator %in% c("timeis","timegt","timelt")) stop(sprintf("Operator \"%s\" not supported in SBML!", tree$operator)); if (tree$operator %in% c("maj","sumis","sumlt","sumgt")) # convert special predicates to general Boolean formulae tree <- expandCountPredicate(tree) if (tree$negated) paste(indent("\n", indentLevel), indent("\n", indentLevel+1), indent("\n" ,indentLevel+1), indent({if (tree$operator=="|" || tree$operator=="any") {"\n"} else{"\n"}}, indentLevel+2), paste(sapply(tree$operands,MathMLFromParseTree, indentLevel+2), collapse=""), indent("\n", indentLevel+1), indent("\n", indentLevel), sep="") else paste(indent("\n", indentLevel), indent({if (tree$operator=="|" || tree$operator=="any") {"\n"} else{"\n"}}, indentLevel+1), paste(sapply(tree$operands, MathMLFromParseTree, indentLevel+1), collapse=""), indent("\n", indentLevel), sep="") }, atom = { if ((tree$name == "0" && !tree$negated) || (tree$name == "1" && tree$negated)) indent("0\n", indentLevel) else if ((tree$name == "1" && !tree$negated) || (tree$name == "0" && tree$negated)) indent("1\n", indentLevel) else paste(indent("\n",indentLevel), indent("\n", indentLevel+1), indent(paste("",tree$name,"\n",sep=""),indentLevel+1), indent(paste("", {if (tree$negated) 0 else 1}, "\n", sep=""), indentLevel+1), indent("\n",indentLevel), sep="") }) return(res) } BoolNet/R/scanStatistic.R0000644000176200001440000000722713277247010014767 0ustar liggesusers# determination of P(k,N,w) pval <- function(k,N,w) { return((k/w-N-1)*b(k,N,w)+2*Gb(k,N,w)) } # helper function b<-function(k,N,w) { return(choose(N,k)*w^k*(1-w)^(N-k)) } # helper function Gb<-function(k,N,w) { sum<-0 for(i in k:N) { sum <- sum + b(i,N,w) } return(sum) } # If two significant overlapping windows were found, these windows are # merged. If the windows do not overlap, two different windows are stored # in a list listadapt <- function(lcur,lnew) { if(length(lcur)==0) { lcur=lnew return(lcur) } else { if(lnew[[1]][1]<=lcur[[length(lcur)]][2]) { lcur[[length(lcur)]][2]<-lnew[[1]][2] if(lcur[[length(lcur)]][3]>lnew[[1]][3]) { lcur[[length(lcur)]][3] <- lnew[[1]][3] } return(lcur) } else { lcur<-append(lcur,lnew) return(lcur) } } } # This method searches for data accumulations by shifting a window with # window size across the data and deciding at each position if there # is a data accumulation. To test this, a scan statistic with significance # level is used. scanStatistic <- function(vect, w=0.25, sign.level=0.1) { temp<-vect vect <-unlist(vect) vsort <- sort(vect) N <- length(vect) range <- (max(vect)) - (min(vect)) windowsize <- range*w N <- length(vect) binarizeddata<-temp res<-list() lcur<-list() # shift a fixed window over the data # the window is moved from point to point for(i in seq_along(vect)) { start <- vsort[i] stop <- vsort[i] + windowsize k <- length(vect[(vect >= start) & (vect <= stop)]) p <- pval(k,N,w) if(p>1) { p=0.99 } if(p<=sign.level & p>0 & k >= (N*w-1) & k > 2) { res <- listadapt(res,list(c(start,stop,p))) } } # if no accumulation for a fixed was found, the # binarization is rejected, and we search for a accumulation # with a higher sign.level. if(length(res)==0) { while(TRUE) { sign.level=sign.level+0.05 if(sign.level>2) { binarizeddata<-(sapply(vect,function(x) 0)) return(list(bindata=binarizeddata,thresholds=NA,reject=TRUE)) } for(i in seq_along(vect)) { start <- vsort[i] stop <- vsort[i] + windowsize k <- length(vect[(vect >= start) & (vect <= stop)]) p <- pval(k,N,w) if(p>1) { p=0.99 } if(p<=sign.level & p>0 & k >= (N*w-1) & k > 2) { #res <- append(res,list(c(start=start,stop=stop,pval=p))) res <- listadapt(res,list(c(start,stop,p))) } } if(length(res)!=0) break } reject<-TRUE } else { reject<-FALSE } # search the window with the smallest sign.level. # this window is used for the binarization min=1000 ind=0 for(i in seq_along(res)) { if(res[[i]][3] res[[ind]][2]]) smaller <- length(vect[vect < res[[ind]][1]]) if(bigger > smaller) { threshold<-res[[ind]][2] small<-tail(vsort[vsort<=threshold],n=1) big<-vsort[vsort>threshold][1] thres<-(big+small)/2 for(i in seq_along(vect)) { if(vect[i]<=threshold) { binarizeddata[i]<-0 } else { binarizeddata[i]<-1 } } } else { threshold<-res[[ind]][1] small<-tail(vsort[vsort=threshold][1] thres<-(big+small)/2 for(i in seq_along(vect)) { if(vect[i]>=threshold) { binarizeddata[i]<-1 } else { binarizeddata[i]<-0 } } } return(list(bindata=binarizeddata,thresholds=as.numeric(thres),reject=reject)) } BoolNet/R/fixGenes.R0000644000176200001440000000157413277247010013722 0ustar liggesusers# Sets the genes in to the values in # and returns the customized copy of fixGenes <- function(network,fixIndices,values) { stopifnot(inherits(network,"BooleanNetwork") | inherits(network,"SymbolicBooleanNetwork") | inherits(network,"ProbabilisticBooleanNetwork")) if (length(fixIndices) != length(values) && length(values) != 1) stop("fixIndices and values must have the same number of elements, or values must have 1 element!") if (any(is.na(network$fixed[fixIndices]))) stop("fixIndices contains invalid indices!") if (any(values != 0 & values != 1 & values != -1)) stop("Please supply only 0, 1, or -1 in values!") network$fixed[fixIndices] <- as.integer(values) if (inherits(network,"SymbolicBooleanNetwork")) network$internalStructs = .Call("constructNetworkTrees_R",network); return(network) } BoolNet/R/loadNetwork.R0000644000176200001440000001551413277247010014442 0ustar liggesusers# Load a network in a specified rule description language # from file . # is the character that separates targets and factors # specifies whether gene names are converted to lower case loadNetwork <- function(file, bodySeparator=",", lowercaseGenes=FALSE, symbolic=FALSE) { func <- readLines(file,-1) # strip comments func <- gsub("#.*", "", trim(func)) func <- func[nchar(func) > 0] # check header if (length(func) == 0) stop("Header expected!") header <- func[1] header <- tolower(trim(strsplit(header, bodySeparator)[[1]])) if (length(header) < 2 || header[1] != "targets" || !(header[2] %in% c("functions","factors")) || (length(header) == 3 && header[3] != "probabilities")) stop(paste("Invalid header:", func[1])) func <- func[-1] if (lowercaseGenes) func <- tolower(func) # Replace all invalid characters to be able to load most networks func <- gsub("[^\\[\\]a-zA-Z0-9_\\|\\&!\\(\\) \t\\-+=.,]+","_", func, perl=TRUE) tmp <- unname(lapply(func,function(x) # split strings at separators that are NOT # inside a bracket block { bracketCount <- 0 lastIdx <- 1 chars <- strsplit(x,split="")[[1]] res <- c() if (length(chars) > 0) { for (i in seq_along(chars)) { if (chars[i] == "(") bracketCount <- bracketCount + 1 else if (chars[i] == ")") bracketCount <- bracketCount -1 else if (chars[i] == bodySeparator && bracketCount == 0) { res <- c(res, trim(paste(chars[lastIdx:(i-1)],collapse=""))) lastIdx <- i + 1 } } res <- c(res, trim(paste(chars[lastIdx:length(chars)],collapse=""))) } return(res) })) targets <- sapply(tmp,function(rule)trim(rule[1])) for (target in targets) { if (regexec("^[a-zA-Z_][a-zA-Z0-9_]*$", target)[[1]] == -1) stop(paste("Invalid gene name:",target)) } factors <- sapply(tmp,function(rule)trim(rule[2])) temporal <- length(grep("timeis|timelt|timegt|\\[|\\]", factors, ignore.case=TRUE) > 0) if (temporal && !symbolic) { warning("The network contains temporal elements. This requires loading the model with symbolic=TRUE!") symbolic <- TRUE } probabilities <- sapply(tmp,function(rule) { if (length(rule) >= 3) as.numeric(trim(rule[3])) else 1.0 }) factors.tmp <- lapply(factors,matchNames) # create list of all gene names in both sides of the functions genes <- unique(c(targets,unname(unlist(factors.tmp)))) isProbabilistic <- (length(unique(targets)) < length(targets)) if (symbolic) { if (isProbabilistic) stop("Probabilistic networks cannot be loaded with symbolic=TRUE!") interactions <- lapply(factors, function(rule)parseBooleanFunction(rule, genes)) onlyInputs <- setdiff(genes,targets) if(length(onlyInputs) > 0) # some genes are only used as inputs, but are not involved in the network # -> create dummy input and function { for(gene in onlyInputs) { warning(paste("There is no transition function for gene \"", gene,"\"! Assuming an input!",sep="")) interactions[[gene]] = parseBooleanFunction(gene, genes) } } delays <- apply(sapply(interactions,maxTimeDelay,genes=genes),1,max) names(interactions) <- genes fixed <- as.integer(sapply(interactions, function(int) { if (int$type == "constant") int$value else -1L })) names(fixed) <- genes res <- list(genes = genes, interactions=interactions, fixed=fixed) res$internalStructs <- .Call("constructNetworkTrees_R",res) res$timeDelays <- delays class(res) <- "SymbolicBooleanNetwork" return(res) } else { # extract "real" gene names from the list, drop constants #suppressWarnings(genes <- genes[is.na(as.integer(genes))]) fixed <- rep(-1,length(genes)) names(fixed) <- genes interactions <- list() for(i in seq_along(targets)) { target <- targets[i] interaction <- generateInteraction(factors[i], genes); if (isProbabilistic) { interaction$probability <- probabilities[i] interactions[[target]][[length(interactions[[target]]) + 1]] <- interaction } else { if (length(interaction$func) == 1) # this is a constant gene => fix it { fixed[target] <- interaction$func } interactions[[target]] <- interaction } } onlyInputs <- setdiff(genes,targets) if(length(onlyInputs) > 0) # some genes are only used as inputs, but are not involved in the network # -> create dummy input and function { for(gene in onlyInputs) { warning(paste("There is no transition function for gene \"", gene,"\"! Assuming an input!",sep="")) if (isProbabilistic) interactions[[gene]][[1]] = list(input = length(interactions)+1,func=c(0,1), expression = gene, probability=1.0) else interactions[[gene]] = list(input = length(interactions)+1,func=c(0,1), expression = gene) } } if (isProbabilistic) { wrongProb <- sapply(interactions,function(interaction) { abs(1.0-sum(sapply(interaction,function(func)func$probability))) > 0.0001 }) if (any(wrongProb)) stop(paste("The probabilities of gene(s) ",paste(genes[wrongProb],collapse=", ")," do not sum up to 1!",sep="")) } res <- list(interactions = interactions, genes = genes, fixed = fixed) if (isProbabilistic) class(res) <- "ProbabilisticBooleanNetwork" else class(res) <- "BooleanNetwork" return(res) } } matchNames <- function(rule) { regexpr <- "([_a-zA-Z][_a-zA-Z0-9]*)[,| |\\)|\\||\\&|\\[]" rule <- paste(gsub(" ", "", rule, fixed=TRUE)," ",sep="") res <- unique(unname(sapply(regmatches(rule,gregexpr(regexpr, rule))[[1]], function(m) { sapply(regmatches(m,regexec(regexpr,m)),function(x)x[2]) }))) # remove operators isOp <- sapply(res, function(x) { tolower(x) %in% c("all", "any", "sumis", "sumgt", "sumlt", "maj", "timegt", "timelt", "timeis") }) return(res[!isOp]) } BoolNet/R/print.AttractorInfo.R0000644000176200001440000000447613277247010016070 0ustar liggesusers# Custom print function for class AttractorInfo print.AttractorInfo <- function(x, activeOnly = FALSE, ...) { numGenes <- length(x$stateInfo$genes) attractors <- x$attractors for (i in seq_along(attractors)) { if (is.null(attractors[[i]]$initialStates)) # simple attractor { printSynchronousAttractor(getAttractorSequence(x, i), i, attractors[[i]]$basinSize, activeOnly=activeOnly) } else { # print general information on the attractor cat("Attractor ",i," is a complex/loose attractor consisting of ",ncol(attractors[[i]]$involvedStates), " state(s) and ",ncol(attractors[[i]]$initialStates), " transition(s)",sep="") if (activeOnly) { cat(".\nActive genes in the state transitions: \n") initialStates <- t(apply(attractors[[i]]$initialStates,2,function(state) dec2bin(state,numGenes))) nextStates <- t(apply(attractors[[i]]$nextStates,2,function(state) dec2bin(state,numGenes))) binMatrix <- data.frame(initialStates,nextStates) apply(binMatrix,1,function(row) { state1 <- paste(x$stateInfo$genes[which(row[seq_len(numGenes)] == 1)],collapse=", ") if (state1 == "") state1 <- "--" state2 <- paste(x$stateInfo$genes[which(row[seq_len(numGenes) + numGenes] == 1)],collapse=", ") if (state2 == "") state2 <- "--" cat(state1," => ",state2,"\n",sep="") }) } else { cat(":\n\n") initialStates <- apply(attractors[[i]]$initialStates,2,function(state) paste(dec2bin(state,numGenes),collapse="")) nextStates <- apply(attractors[[i]]$nextStates,2,function(state) paste(dec2bin(state,numGenes),collapse="")) binMatrix <- data.frame(initialStates,nextStates) apply(binMatrix,1,function(row) { cat(row[1]," => ",row[2],"\n",sep="") }) cat("\nGenes are encoded in the following order: ",paste(x$stateInfo$genes,collapse=" "),"\n\n",sep="") } } } return(invisible(x)) } BoolNet/R/plotAttractors.R0000644000176200001440000002143413301231210015153 0ustar liggesusers# Plot state tables of all attractors in . # Genes are grouped according to . # An additional title can be supplied in . # If <plotFixed> is set, fixed variables are included in the plot. # <onColor> and <offColor> specify the colors of ON/1 and OFF/0 states. # TODO: remove old definition from comments #plotAttractors <- function (attractorInfo, subset, title = "", mode=c("table","graph"), # grouping = list(), plotFixed = TRUE, onColor="green",offColor="red", # layout=layout.circle, drawLabels=TRUE, drawLegend=TRUE, ask=TRUE, # reverse=FALSE, ...) #{} plotAttractors <- function (attractorInfo, subset, title = "", mode = c("table", "graph"), grouping = list(), plotFixed = TRUE, onColor = "#4daf4a", offColor = "#e41a1c", layout = layout.circle, drawLabels = TRUE, drawLegend = TRUE, ask = TRUE, reverse = FALSE, # new parameters borderColor = "black", eps = 0.1, allInOnePlot = FALSE, ...) { stopifnot(inherits(attractorInfo, "AttractorInfo") || inherits(attractorInfo, "SymbolicSimulation")) if (inherits(attractorInfo, "AttractorInfo")) { numGenes <- length(attractorInfo$stateInfo$genes) geneNames <- attractorInfo$stateInfo$genes } else { numGenes <- ncol(attractorInfo$attractors[[1]]) geneNames <- colnames(attractorInfo$attractors[[1]]) } if (missing(subset)) subset <- seq_along(attractorInfo$attractors) else if (any(subset > length(attractorInfo$attractors))) stop("You specified an attractor index that is greater than the total number of attractors in 'subset'!") res <- switch(match.arg(mode, c("table", "graph")), table = { whichFixed <- which(attractorInfo$stateInfo$fixedGenes != -1) if (plotFixed | (length(whichFixed) == 0)) { plotIndices <- seq_len(numGenes) } else { plotIndices <- seq_len(numGenes)[-whichFixed] } if (inherits(attractorInfo, "AttractorInfo")) { binMatrices <- lapply(attractorInfo$attractors, function(attractor) { res <- matrix(apply(attractor$involvedStates, 2, function(state) dec2bin(state, numGenes)[plotIndices]), nrow = length(plotIndices)) }) attractorLengths <- sapply(attractorInfo$attractors, function(attractor) { ifelse (is.null(attractor$initialStates), ncol(attractor$involvedStates), -1) }) } else { binMatrices <- lapply(attractorInfo$attractors, t) attractorLengths <- sapply(binMatrices, ncol) } lengthTable <- table(attractorLengths) lengthTable <- lengthTable[as.integer(names(lengthTable)) != -1] oldAsk <- par("ask") oldmfrow <- NULL if (allInOnePlot) { oldmfrow <- par()$mfrow #par(mfrow=c(1,length(table(sapply(sapply(attractorInfo$attractors, "[[", "involvedStates", simplify=F), ncol))))) par(mfrow=c(1,length(lengthTable))) } res <- lapply(seq_along(lengthTable), function(i) { len <- as.integer(names(lengthTable)[i]) attractorIndices <- intersect(which(attractorLengths == len), subset) if (length(attractorIndices) > 0) { cnt <- length(attractorIndices) totalMatrix <- c() for (mat in binMatrices[attractorIndices]) { totalMatrix <- cbind(totalMatrix, mat) } rownames(totalMatrix) <- geneNames[plotIndices] colnames(totalMatrix) <- sapply(attractorIndices, function(i) paste("Attr", i, ".", seq_len(len), sep = "")) if (length(grouping) > 0) totalMatrix <- totalMatrix[unlist(grouping$index), , drop = FALSE] par(ask = ask && i > 1 && dev.interactive()) if (reverse) { plot(c(), c(), xlim = c(0, len *cnt), ylim = c(-2, nrow(totalMatrix) + 1), xlab = "", ylab = "", axes = FALSE, main = paste(title, "\nAttractors with ", len, " state(s)", sep = "")) } else { plot(c(), c(), xlim = c(0, len * cnt), ylim = c(nrow(totalMatrix) + 1, -2), xlab = "", ylab = "", axes = FALSE, main = paste(title, "\nAttractors with ", len," state(s)", sep = "")) } #rect(par("usr")[1], par("usr")[3], par("usr")[2], par("usr")[4], col = "grey") axis(2, seq_len(nrow(totalMatrix)) - 0.5, rownames(totalMatrix), yaxt = "s", las = 2) xStart <- 1 unitFactor <- (len - (2 * eps))/len startX <- eps for (i in seq_len(ncol(totalMatrix))) { for (j in seq_len(nrow(totalMatrix))) { rectCol <- ifelse(totalMatrix[j, i], onColor, offColor) rect(startX, j - 1, startX + unitFactor, j, col = rectCol, border = borderColor, lwd = 2) } startX <- startX + unitFactor if (i %% len == 0) { startX <- startX + 2*eps } } sep = seq(0, ncol(totalMatrix), by = len) #abline(v = sep[-1], col = par()$bg, lwd = 3) if (inherits(attractorInfo, "AttractorInfo")) { if (is.null(attractorInfo$stateInfo$table)) { freq <- rep(NA, length(attractorIndices)) } else { freq <- round(100 * sapply(attractorInfo$attractors[attractorIndices], function(attractor) { attractor$basinSize/ncol(attractorInfo$stateInfo$table)}), 2) } } else { if (!is.null(attractorInfo$graph)) { freq <- round(sapply(attractorIndices, function(i) sum(attractorInfo$graph$attractorAssignment == i)/nrow(attractorInfo$graph)) * 100, 2) } else { freq <- rep(NA, length(attractorIndices)) } } if (!isTRUE(all(is.na(freq)))) { text(sep[seq_along(sep) - 1] + len/2, ifelse(reverse, -nrow(totalMatrix)-1.5, 1) + rep(1 + nrow(totalMatrix), ncol(totalMatrix)), paste(freq, "%", sep = ""), cex = 0.75, font = 3) } if (length(grouping) > 0) { if(!is.null(grouping$class)) { sepPos = cumsum(sapply(grouping$index, length)) abline(h = sepPos[-length(sepPos)], col = "black", lwd = 3) text(ncol(totalMatrix)/2, sepPos - 0.5, grouping$class, cex = 0.9) } } #if (drawLegend) legend(x = "bottomright", pch = c(15, 15), col = c(onColor, offColor), legend = c("active", "inactive"), cex = 0.7, horiz = T, xpd = T) if (drawLegend) legend(x = 0, y = ifelse(reverse, -nrow(totalMatrix)-1, 2) + nrow(totalMatrix), pch = c(15, 15), col = c(onColor, offColor), legend = c("active", "inactive"), cex = 0.7, horiz = T, xpd=T) totalMatrix } }) par(ask = oldAsk) if(!is.null(oldmfrow)) par(mfrow = oldmfrow) names(res) <- names(lengthTable) return(res) }, graph = { args <- list(...) if (is.null(args$vertex.size)) args$vertex.size <- 2 if (is.null(args$edge.arrow.mode)) args$edge.arrow.mode <- 0 if (is.null(args$vertex.label.cex)) args$vertex.label.cex <- 0.75 if (is.null(args$vertex.label.dist)) args$vertex.label.dist <- 1 if (is.null(args$vertex.color)) args$vertex.color <- "grey" if (is.null(args$edge.arrow.size)) args$edge.arrow.size <- 0.5 lapply(attractorInfo$attractors[subset], function(attractor) { if (inherits(attractorInfo, "AttractorInfo")) { nodes <- data.frame(apply(attractor$involvedStates, 2, function(state) paste(dec2bin(state, numGenes), collapse = "")), stringsAsFactors = FALSE) if (!is.null(attractor$initialStates)) { initialStates <- apply(attractor$initialStates, 2, function(state) paste(dec2bin(state, numGenes), collapse = "")) nextStates <- apply(attractor$nextStates, 2, function(state) paste(dec2bin(state, numGenes), collapse = "")) } else { initialStates <- apply(attractor$involvedStates, 2, function(state) paste(dec2bin(state, numGenes), collapse = "")) if (length(initialStates) == 1) nextStates <- initialStates else nextStates <- initialStates[c(2:length(initialStates), 1)] } } else { initialStates <- apply(attractor, 1, paste, collapse = "") nextStates <- apply(attractor[c(2:nrow(attractor), 1), , drop = FALSE], 1, paste, collapse = "") nodes <- data.frame(unique(c(initialStates, nextStates)), stringsAsFactors = FALSE) } edgeMatrix <- data.frame(initialStates, nextStates) graph <- graph.data.frame(edgeMatrix, vertices = nodes, directed = TRUE) if (drawLabels) labels <- nodes[, 1] else labels <- NA args$layout <- layout args$x <- graph args$vertex.label <- labels args$main <- title do.call("plot", args) graph }) }) } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/R/sequenceToLaTeX.R�������������������������������������������������������������������������0000644�0001762�0000144�00000010113�13277247010�015150� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ sequenceToLaTeX <- function(network, startState, includeAttractorStates = c("all","first","none"), sequence, title="", grouping = list(), plotFixed = TRUE, onColor="[gray]{0.9}",offColor="[gray]{0.6}", highlightAttractor=TRUE, reverse=FALSE, file="sequence.tex") { if (!missing(network)) { stopifnot(inherits(network,"BooleanNetwork") || inherits(network,"SymbolicBooleanNetwork")) if (missing(startState) || !missing(sequence)) stop("Either \"network\" and \"startState\" or \"sequence\" must be provided!") sequence <- getPathToAttractor(network = network, state = startState, includeAttractorStates = includeAttractorStates) numGenes <- length(network$genes) whichFixed <- which(network$fixed != -1) if (plotFixed | (length(whichFixed) == 0)) plotIndices <- seq_len(numGenes) else plotIndices <- seq_len(numGenes)[-whichFixed] attractor <- attributes(sequence)$attractor sequence <- sequence[,plotIndices] attributes(sequence)$attractor <- attractor } else { if (missing(sequence) || !missing(startState)) stop("Either \"network\" and \"startState\" or \"sequence\" must be provided!") attractor <- attributes(sequence)$attractor } # escape "_" in LaTeX genes = gsub("_", "\\_", colnames(sequence)) # determine list of genes to be plotted # Open output file, and print header sink(file) cat("% Please include packages tabularx and colortbl in your master document:\n", "% \\usepackage{tabularx,colortbl}\n\n\n",sep="") totalMatrix <- t(sequence) colnames(totalMatrix) <- seq_len(ncol(totalMatrix)) if(length(grouping)>0) { # reorder genes according to the supplied groups totalMatrix <- totalMatrix[unlist(grouping$index),] separationPositions <- c(1,cumsum(sapply(grouping$index,length)+1)) } else separationPositions <- c() if (highlightAttractor && !is.null(attractor)) { header <- paste(paste(rep(">{\\centering\\arraybackslash}X", min(attractor) - 1), collapse = " "), "|", paste(rep(">{\\centering\\arraybackslash}X", length(attractor)), collapse = " "), "|", sep="") } else header <- paste(rep(">{\\centering\\arraybackslash}X", ncol(totalMatrix), collapse = " ")) # output table header cat("\\begin{table}[ht]\n", "\\begin{center}\n", "\\caption{",title,"}\n", "\\begin{tabularx}{\\linewidth}{l", header, "}\\hline\n", sep="") cat("\\textbf{Time}\t&\t",paste(seq_len(ncol(totalMatrix)),collapse="\t&\t"),"\\\\") if(length(grouping) == 0) cat("\\hline\n") else cat("\n") # output active and inactive states if (reverse) indices <- rev(seq_len(nrow(totalMatrix))) else indices <- seq_len(nrow(totalMatrix)) for(j in indices) { separator <- which(separationPositions==j) if (length(separator) != 0) { cat("\\hline \\multicolumn{",ncol(totalMatrix) + 1, "}{c}{",grouping$class[separator],"}\\\\ \\hline \n",sep="") } cat("\\textbf{",rownames(totalMatrix)[j],"}\t&\t",sep="") for(i in seq_len(ncol(totalMatrix))) { if(totalMatrix[j,i] == 1) cat("\\cellcolor",onColor,"1",sep="") else cat("\\cellcolor",offColor,"0",sep="") if (i < ncol(totalMatrix)) cat("\t&\t") } cat("\\\\\n") } cat("\\hline") if (highlightAttractor && !is.null(attractor)) { cat("\\multicolumn{",min(attractor), "}{c|}{}\t&\t\\multicolumn{",length(attractor), "}{c|}{Attractor}\\\\\\cline{",min(attractor) + 1, "-", max(attractor) + 1, "}\n",sep="") } cat("\\end{tabularx}\n\\end{center}\n", "\\end{table}\n\n",sep="") sink() # return the matrix return(totalMatrix) } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/R/saveNetwork.R�����������������������������������������������������������������������������0000644�0001762�0000144�00000011235�13277247010�014455� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ # Save <network> to <file> in the BoolNet file format. # If <generateDNFs> is true or a mode of getDNF(), # a new symbolic representation for the interactions # is generated on the basis of the truth tables (in disjunctive normal form). # If <generateDNFs> is false, the $expression elements of the interactions are exported. # If <saveFixed> is true, constant transition functions are exported for fixed genes # instead of their true transition functions saveNetwork <- function(network, file, generateDNFs = FALSE, saveFixed = TRUE) { stopifnot(inherits(network,"BooleanNetwork") || inherits(network,"SymbolicBooleanNetwork") || inherits(network,"ProbabilisticBooleanNetwork")) expressions <- NULL if (inherits(network,"BooleanNetwork")) { if (generateDNFs == FALSE) # Check whether all interactions have suitable string representations { tryCatch( { # parse the string representations lapply(network$interactions, function(int)parseBooleanFunction(int$expression)) }, error=function(e) { warning(paste("The transition functions of this network did not contain valid symbolic expressions!", "Generating DNF representations from the truth tables!")) # There was an error parsing a string representation => generate DNFs generateDNFs <<- TRUE }) } if (generateDNFs != FALSE) { expressions <- mapply(function(interaction, gene, fixed) { if (!saveFixed || fixed == -1) { table <- allcombn(2, length(interaction$input)) - 1 expression <- getDNF(interaction$func, network$genes[interaction$input], generateDNFs) return(paste(gene, ", ", expression, sep="")) } else return(paste(gene, ", ", fixed, sep="")) }, network$interactions, network$genes, network$fixed) } else { expressions <- mapply(function(interaction, gene, fixed) { if (!saveFixed || fixed == -1) return(paste(gene, ", ", interaction$expression, sep="")) else return(paste(gene, ", ", fixed, sep="")) }, network$interactions, network$genes, network$fixed) } sink(file) cat("targets, factors\n") } else if (inherits(network,"SymbolicBooleanNetwork")) { expressions <- mapply(function(interaction, gene, fixed) { if (!saveFixed || fixed == -1) return(paste(gene, ", ", stringFromParseTree(interaction), sep="")) else return(paste(gene, ", ", fixed, sep="")) }, network$interactions, network$genes, network$fixed) sink(file) cat("targets, factors\n") } else { if (generateDNFs == FALSE) # Check whether all interactions have suitable string representations { tryCatch( { # parse the string representations lapply(network$interactions, function(int)lapply(int, function(func)parseBooleanFunction(func$expression))) }, error=function(e) { warning(paste("The transition functions of this network did not contain valid symbolic expressions!", "Generating DNF representations from the truth tables!")) # There was an error parsing a string representation => generate DNFs generateDNFs <<- TRUE }) } if (generateDNFs != FALSE) { expressions <- mapply(function(interaction, gene, fixed) { if (!saveFixed || fixed == -1) { lapply(interaction, function(func) { table <- allcombn(2, length(func$input)) - 1 expression <- getDNF(func$func, network$genes[func$input], generateDNFs) return(paste(gene, ", ", expression, ", ", func$probability, sep="")) }) } else return(paste(gene, ", ", fixed, ", 1", sep="")) }, network$interactions, network$genes, network$fixed) } else { expressions <- mapply(function(interaction, gene, fixed) { if (!saveFixed || fixed == -1) { lapply(interaction, function(func) { return(paste(gene, ", ", func$expression, ", ", func$probability, sep="")) }) } else return(paste(gene, ", ", fixed, ", 1", sep="")) }, network$interactions, network$genes, network$fixed) } expressions <- unlist(expressions) sink(file) cat("targets, factors, probabilities\n") } cat(paste(expressions, collapse="\n"),"\n",sep="") sink() } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/R/perturbTrajectories.R���������������������������������������������������������������������0000644�0001762�0000144�00000014530�13277247010�016210� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ perturbTrajectories <- function(network, measure = c("hamming", "sensitivity", "attractor"), numSamples = 1000, flipBits = 1, updateType = c("synchronous","asynchronous","probabilistic"), gene, ...) { symbolic <- inherits(network,"SymbolicBooleanNetwork") probabilistic <- inherits(network,"ProbabilisticBooleanNetwork") stopifnot(inherits(network,"BooleanNetwork") || symbolic || probabilistic) measure <- match.arg(measure, c("hamming", "sensitivity", "attractor")) if (probabilistic && measure != "hamming") stop("Probabilistic networks are only supported for measure=\"hamming\"!") fixedIdx <- which(network$fixed != -1) nonFixedIdx <- which(network$fixed == -1) if (symbolic) { maxDelay <- max(network$timeDelays) flipIndices <- unlist(mapply(function(x, i) { if (network$fixed[i] == -1) seq_len(x) + (i - 1) * maxDelay else c() }, network$timeDelays, seq_along(network$genes))) startStates <- lapply(seq_len(numSamples), function(i) { m <- matrix(nrow=maxDelay, ncol=length(network$genes), round(runif(n=maxDelay*length(network$genes)))) m[,fixedIdx] <- network$fixed[fixedIdx] m }) } else { flipIndices <- seq_along(network$genes)[nonFixedIdx] startStates <- lapply(seq_len(numSamples), function(i) { s <- round(runif(n=length(network$genes))) s[fixedIdx] <- network$fixed[fixedIdx] s }) } if (length(flipIndices) == 0) stop("All genes in this network are fixed!") perturbedStates <- lapply(startStates, function(state) { flip <- sample(flipIndices, size=flipBits, replace=FALSE) state[flip] <- 1 - state[flip] return(state) }) if (measure == "hamming") { dists <- mapply(function(state1, state2) { sum(stateTransition(network=network, state=state1, type=updateType, ...) != stateTransition(network=network, state=state2, type=updateType, ...)) }, startStates, perturbedStates)/length(network$genes) return(list(stat=dists, value=mean(dists))) } else if (measure == "sensitivity") { if (missing(gene)) stop("Parameter \"gene\" must be set for sensitivity analysis!") if (is.character(gene)) geneIdx <- which(network$genes == gene) else geneIdx <- gene if (length(geneIdx) == 0) stop(paste("Unknown gene \"", gene, "\"!", sep="")) sensitivities <- unname(mapply(function(state1, state2) { stateTransition(network=network, state=state1, chosenGene = geneIdx, ...)[geneIdx] != stateTransition(network=network, state=state2, chosenGene = geneIdx, ...)[geneIdx] }, startStates, perturbedStates)) return(list(stat=sensitivities, value=mean(sensitivities))) } else { if (symbolic) { att1 <- simulateSymbolicModel(network, startStates=startStates, returnGraph=FALSE, canonical=TRUE, ...) att2 <- simulateSymbolicModel(network, startStates=perturbedStates, returnGraph=FALSE, canonical=TRUE, ...) attractorAssignment1 <- att1$attractorAssignment attractorAssignment2 <- att2$attractorAssignment } else { att1 <- getAttractors(network, startStates=startStates, returnTable=TRUE, canonical=TRUE, ...) att2 <- getAttractors(network, startStates=perturbedStates, returnTable=TRUE, canonical=TRUE, ...) tt1 <- getTransitionTable(att1) tt2 <- getTransitionTable(att2) attractorAssignment1 <- tt1$attractorAssignment attractorAssignment2 <- tt2$attractorAssignment names(attractorAssignment1) <- apply(tt1[,seq_along(network$genes)],1,paste,collapse="") names(attractorAssignment2) <- apply(tt2[,seq_along(network$genes)],1,paste,collapse="") attractorAssignment1 <- unname(attractorAssignment1[sapply(startStates,paste,collapse="")]) attractorAssignment2 <- unname(attractorAssignment2[sapply(perturbedStates,paste,collapse="")]) } attractorsEqual <- matrix(sapply(seq_along(att1$attractors), function(i1) { seq1 <- getAttractorSequence(att1, i1) sapply(seq_along(att2$attractors), function(i2) { seq2 <- getAttractorSequence(att2, i2) return(identical(seq1,seq2)) }) }), nrow=length(att1$attractors)) stat <- apply(cbind(attractorAssignment1, attractorAssignment2), 1, function(idx) { attractorsEqual[idx[1],idx[2]] }) return(list(stat=stat, value=mean(stat))) } } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/R/stateTransition.R�������������������������������������������������������������������������0000644�0001762�0000144�00000014150�13277247010�015337� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������stateTransition <- function(network,state,type=c("synchronous","asynchronous","probabilistic"), geneProbabilities, chosenGene, chosenFunctions, timeStep=0) { stopifnot(inherits(network,"BooleanNetwork") | inherits(network,"SymbolicBooleanNetwork") | inherits(network,"ProbabilisticBooleanNetwork")) type <- match.arg(type, c("synchronous","asynchronous","probabilistic")) if (inherits(network,"SymbolicBooleanNetwork")) { if (type != "synchronous") stop("Only synchronous updates are allowed for symbolic networks!") if (!is.null(dim(state))) { if (ncol(state) != length(network$genes)) stop(paste("\"state\" must be either a vector with one value for each gene,", "or a matrix with the genes in the columns and multiple predecessor states in the rows!")) state <- as.integer(as.matrix(state[nrow(state):1,])) } else { if (!is.numeric(state) || length(state) != length(network$genes)) stop(paste("\"state\" must be either a vector with one value for each gene,", "or a matrix with the genes in the columns and multiple predecessor states in the rows!")) state <- as.integer(state) } if (is.null(network$internalStructs) || checkNullPointer(network$internalStructs)) # refresh internal tree representations if necessary network$internalStructs = .Call("constructNetworkTrees_R",network); on.exit(.C("freeAllMemory", PACKAGE = "BoolNet")) res <- .Call("symbolicStateTransition_R", network$internalStructs, state, as.integer(timeStep)) } else { if (length(state) != length(network$genes)) stop("The state must consist of exactly one value for each gene!") nonFixedIndices = (network$fixed == -1) res <- state if (inherits(network,"BooleanNetwork") & type == "probabilistic") type <- "synchronous" if (!inherits(network,"BooleanNetwork") & length(type) == 3) type <- "probabilistic" if (type == "probabilistic") { if (missing(chosenFunctions) || is.null(chosenFunctions)) { chosenFunctions <- sapply(network$interactions,function(gene) { distr <- c(0,cumsum(sapply(gene,function(func)func$probability))) r <- runif(n=1) idx <- 0 for (i in seq_along(gene)) { if (r > distr[i] & r <= distr[i+1]) { idx <- i break } } idx }) } else if (length(chosenFunctions) != length(network$genes)) stop("Please provide a function index for each gene!") res[nonFixedIndices] <- mapply(function(i,f) { if(network$interactions[[i]][[f]]$input[1] == 0) # this is a constant gene with no transition function return(network$interactions[[i]][[f]]$func[1]) input = state[network$interactions[[i]][[f]]$input] return(network$interactions[[i]][[f]]$func[bin2dec(rev(input),length(input)) + 1]) }, which(nonFixedIndices), chosenFunctions[nonFixedIndices]) } else { if (!inherits(network,"BooleanNetwork")) stop("Please choose type=\"probabilistic\" for a probabilistic Boolean network!") changeIndices <- switch(type, synchronous = which(nonFixedIndices), asynchronous = { if (missing(chosenGene) || is.null(chosenGene)) { if (missing(geneProbabilities) || is.null(geneProbabilities)) sample(which(nonFixedIndices),1) else { if (length(geneProbabilities) != length(network$genes)) stop("Please supply exactly one probability for each gene!") if (abs(1.0 - sum(geneProbabilities)) > 0.0001) stop("The supplied gene probabilities do not sum up to 1!") if (sum(geneProbabilities[nonFixedIndices]) < 0.0001) stop("There is no non-fixed gene with a probability greater than 0!") geneProbabilities[nonFixedIndices] <- geneProbabilities[nonFixedIndices]/sum(geneProbabilities[nonFixedIndices]) if (sum(nonFixedIndices) != length(network$genes)) geneProbabilities[!nonFixedIndices] <- 0 distr <- c(0,cumsum(geneProbabilities)) r <- runif(n=1) idx <- 0 for (i in seq_along(network$genes)) { if (r > distr[i] & r <= distr[i+1]) { idx <- i break } } idx } } else { if (is.character(chosenGene)) { chosenGeneIdx <- which(network$genes == chosenGene) if (length(chosenGeneIdx) == 0) stop(paste("Gene \"",chosenGene,"\" does not exist in the network!",sep="")) chosenGeneIdx } else chosenGene } }) res[changeIndices] <- sapply(changeIndices,function(i) { if(network$interactions[[i]]$input[1] == 0) # this is a constant gene with no transition function return(network$interactions[[i]]$func[1]) input = state[network$interactions[[i]]$input] return(network$interactions[[i]]$func[bin2dec(rev(input),length(input)) + 1]) }) } res[!nonFixedIndices] = network$fixed[!nonFixedIndices] } names(res) <- network$genes return(res) } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/R/binarizeTimeSeries.R����������������������������������������������������������������������0000644�0001762�0000144�00000017022�13277247010�015742� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Several binarization methods for time series. <measurements> is a list of matrices with the # genes in the rows, each specifying one time series. # If <method> is "kmeans", k-means binarization is used. # <nstart> and <iter.max> are the corresponding parameters for k-means. This clustering # is employed for binarization. # If <method> is "edgeDetector", an edge detector is used for binarization. # If <method> is "edgeDetector" and <edge> is "firstEdge", # the first "significant" edge in the sorted data is the threshold for the binarization. # If <edge> is "maxEdge", the algorithm searches for the edge with the highest gradient. # With the <scaling> factor, the size of the first edge can be adapted. # If <method> is "scanStatistic", a scan statistic is used to binarize the data # If <dropInsignificant> is true, insignificant genes (that are not recommended by the statistic) are removed. # Returns a list containing the binarized matrix list and (for k-means) a vector # of thresholds and (for scan statistic) a vector specifying genes to remove. binarizeTimeSeries <- function(measurements, method=c("kmeans","edgeDetector","scanStatistic"), nstart=100, iter.max=1000, edge=c("firstEdge","maxEdge"), scaling=1, windowSize=0.25, sign.level=0.1, dropInsignificant=FALSE) { if (!is.null(dim(measurements))) fullData <- measurements else # in case of list, paste all matrices before clustering { fullData <- measurements[[1]] for (m in measurements[-1]) { fullData <- cbind(fullData,m) } } #switch between the different methods switch(match.arg(method), kmeans={ cluster <- apply(fullData,1,function(gene) # cluster data using k-means { cl_res <- kmeans(gene, 2, nstart=nstart,iter.max=iter.max) if (cl_res$centers[1] > cl_res$centers[2]) # exchange clusters if necessary, so that smaller numbers # are binarized to 0, and larger numbers are binarized to 1 group <- abs(cl_res$cluster-2) else group <- cl_res$cluster-1 # calculate the binarization threshold threshold <- min(cl_res$centers) + dist(cl_res$centers)[1]/2 list(bin=group, threshold=threshold) }) if (is.null(dim(measurements))) # split up the collated binarized measurements into a list of matrices of the original size { startIndex <- 0 binarizedTimeSeries <- lapply(measurements,function(m) { currentSplit <- (startIndex+1):(startIndex+ncol(m)) startIndex <<- startIndex + ncol(m) t(sapply(cluster,function(cl) cl$bin[currentSplit])) }) } else { binarizedTimeSeries <- t(sapply(cluster,function(cl) cl$bin)) } #colnames(binarizedTimeSeries)<-colnames(fullData) return(list(binarizedMeasurements=binarizedTimeSeries, thresholds=sapply(cluster,function(cl)cl$threshold))) }, edgeDetector={ #switch between the different edgedetectors switch(match.arg(edge), firstEdge={ cluster <- apply(fullData,1,function(gene) # cluster data using edgedetector { cl_res <- edgeDetector(gene,scaling,edge="firstEdge") list(bin=cl_res$bindata,thresholds=cl_res$thresholds) }) if (is.null(dim(measurements))) # split up the collated binarized measurements into a list of matrices of the original size { startIndex <- 0 binarizedTimeSeries <- lapply(measurements,function(m) { currentSplit <- (startIndex+1):(startIndex+ncol(m)) startIndex <<- startIndex + ncol(m) t(sapply(cluster,function(cl) cl$bin[currentSplit])) }) threshlist<-sapply(cluster,function(cl) cl$thresholds) } else { binarizedTimeSeries <- t(sapply(cluster,function(cl) cl$bin)) threshlist<-sapply(cluster,function(cl) cl$thresholds) } return(list(binarizedMeasurements=binarizedTimeSeries,thresholds= threshlist)) }, maxEdge={ cluster <- apply(fullData,1,function(gene) # cluster data using edgedetector { cl_res <- edgeDetector(gene,edge="maxEdge") list(bin=cl_res$bindata,thresholds=cl_res$thresholds) }) if (is.null(dim(measurements))) # split up the collated binarized measurements into a list of matrices of the original size { startIndex <- 0 binarizedTimeSeries <- lapply(measurements,function(m) { currentSplit <- (startIndex+1):(startIndex+ncol(m)) startIndex <<- startIndex + ncol(m) t(sapply(cluster,function(cl) cl$bin[currentSplit])) }) threshlist<-sapply(cluster,function(cl) cl$thresholds) } else { binarizedTimeSeries <- t(sapply(cluster,function(cl) cl$bin)) threshlist<-sapply(cluster,function(cl) cl$thresholds) } return(list(binarizedMeasurements=binarizedTimeSeries,thresholds= threshlist)) }, stop("'method' must be one of \"firstEdge\",\"maxEdge\"") ) }, scanStatistic={ cluster <- apply(fullData,1,function(gene) # cluster data using scanStatistic { cl_res <- scanStatistic(gene,windowSize,sign.level) list(bin= cl_res$bindata,thresholds=cl_res$thresholds,reject=cl_res$reject) }) significant <- sapply(cluster,function(cl)(cl$reject==FALSE)) # remove not recommended genes if (dropInsignificant) { significant <- sapply(cluster,function(cl)(cl$reject==FALSE)) cluster <- cluster[significant] } if (is.null(dim(measurements))) # split up the collated binarized measurements into a list of matrices of the original size { startIndex <- 0 binarizedTimeSeries <- lapply(measurements,function(m) { currentSplit <- (startIndex+1):(startIndex+ncol(m)) startIndex <<- startIndex + ncol(m) t(sapply(cluster,function(cl) cl$bin[currentSplit])) }) rejectlist<-sapply(cluster,function(cl) cl$reject) threshlist<-sapply(cluster,function(cl) cl$thresholds) } else { binarizedTimeSeries <- t(sapply(cluster,function(cl) cl$bin)) rejectlist<-sapply(cluster,function(cl) cl$reject) threshlist<-sapply(cluster,function(cl) cl$thresholds) } if(any(rejectlist)) { warning("The following genes show a uniform behaviour and should possibly be excluded from binarization:", paste(rownames(fullData)[!significant],collapse=" ")) } return(list(binarizedMeasurements=binarizedTimeSeries,thresholds=threshlist,reject=rejectlist)) }, stop("'method' must be one of \"kmeans\",\"edgeDetector\",\"scanStatistic\"") ) } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/R/toPajek.R���������������������������������������������������������������������������������0000644�0001762�0000144�00000002234�13277247010�013541� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Export a state table in <stateGraph> to a Pajek graph toPajek <- function (stateGraph, file="boolean.net", includeLabels=FALSE, ...) { args <- list(...) if (!is.null(args$attractorInfo)) { warning("The parameter \"attractorInfo\" is deprecated. Use \"stateGraph\" instead!") stateGraph <- args$attractorInfo } if (!inherits(stateGraph,"TransitionTable")) stateGraph <- getTransitionTable(stateGraph) geneCols <- setdiff(colnames(stateGraph),c("attractorAssignment","transitionsToAttractor")) numGenes <- (length(geneCols)) / 2 from <- apply(stateGraph[,1:numGenes,drop=FALSE],1,paste,collapse="") to <- apply(stateGraph[,((numGenes+1):(2*numGenes)),drop=FALSE],1,paste,collapse="") vertices <- unique(c(from,to)) vertexIndices <- seq_along(vertices) names(vertexIndices) <- vertices from <- vertexIndices[from] to <- vertexIndices[to] sink(file) cat("*Vertices ", length(vertices), "\r\n", sep = "") if (includeLabels) { for (i in seq_along(vertices)) cat(i," \"",vertices[i],"\"\r\n",sep="") } cat("*Arcs\r\n") for (i in seq_along(from)) cat(from[i]," ",to[i]," 1\r\n",sep="") sink() } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/R/generateTimeSeries.R����������������������������������������������������������������������0000644�0001762�0000144�00000005546�13277247010�015741� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ # Generate time series from a Boolean network <network>. # <numSeries> is the number of start states for which time series are generated. # <numMeasurements> is the number of time points for each time series. # <type> is the type of transitions used (synchronous or asynchronous) # If <type> is "asynchronous", <geneProbabilities> describes the # transition probabilities for the genes. # If <noiseLevel> is not 0, Gaussian noise is added to the result. generateTimeSeries <- function(network, numSeries, numMeasurements, type = c("synchronous","asynchronous","probabilistic"), geneProbabilities, perturbations=0, noiseLevel = 0.0) { symbolic <- inherits(network, "SymbolicBooleanNetwork") if (missing(geneProbabilities)) geneProbabilities <- NULL if (perturbations > 0) { perturbationMatrix <- sapply(1:numSeries, function(x) { p <- rep(NA, length(network$genes)) p[sample(1:length(network$genes),size=perturbations)] <- sample(c(0,1),size=perturbations,replace=TRUE) return(p) }) rownames(perturbationMatrix) <- network$genes } ts <- lapply(seq_len(numSeries), function(i) { if (symbolic) { if (perturbations > 0) { fixedIdx <- which(perturbationMatrix[,i] != -1) network <- fixGenes(network, fixedIdx, perturbationMatrix[fixedIdx,i]) } res <- t(simulateSymbolicModel(network, startStates=1, returnAttractors=FALSE, returnGraph=TRUE, returnSequences=TRUE)$sequences[[1]]) } else { startState <- round(runif(length(network$genes))) if (perturbations > 0) { fixedIdx <- which(perturbationMatrix[,i] != -1) network <- fixGenes(network, fixedIdx, perturbationMatrix[fixedIdx,i]) startState[fixedIdx] <- perturbationMatrix[fixedIdx,i] } res <- startState for (j in 2:numMeasurements) { startState <- stateTransition(network, startState, type=type, geneProbabilities=geneProbabilities) res <- cbind(res,startState) } } colnames(res) <- NULL if (noiseLevel != 0) { res <- res + matrix(rnorm(mean=0, sd=noiseLevel, n = length(res)), nrow=nrow(res)) } rownames(res) <- network$genes colnames(res) <- seq_len(ncol(res)) return(res) }) if (perturbations > 0) ts$perturbations <- perturbationMatrix return(ts) } ����������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/R/print.SymbolicBooleanNetwork.R������������������������������������������������������������0000644�0001762�0000144�00000000762�13277247010�017736� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������print.SymbolicBooleanNetwork <- function(x,...) { cat("Symbolic representation of a Boolean network\n\n"); cat("Transition functions:\n") for (gene in x$genes) { cat(gene, " = ", stringFromParseTree(x$interactions[[gene]]), "\n", sep="") } if (sum(x$fixed != -1) > 0) { cat("\nKnocked-out and over-expressed genes:\n") mapply(function(gene,fixed) { if (fixed != -1) cat(gene," = ",fixed,"\n",sep="") }, x$genes,x$fixed) } } ��������������BoolNet/R/reconstructNetwork.R����������������������������������������������������������������������0000644�0001762�0000144�00000022761�13277247010�016100� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Reconstruct a Boolean network from a transition table or a list of time series in <measurements>. # If <method> is "bestfit", Lähdesmäki's best-fit extension algorithm is called. # If <method> is "reveal", Liang's REVEAL algorithm is called. # <maxK> specifies the maximum number of input genes of a function. # If <readableFunctions> is true, DNF representations of the functions are generated. reconstructNetwork <- function(measurements,method=c("bestfit","reveal"),maxK=5, requiredDependencies = NULL, excludedDependencies = NULL, perturbations=NULL, readableFunctions=FALSE, allSolutions=FALSE, returnPBN=FALSE) { if (maxK < 0) stop("maxK must be >= 0!") # determine method to use meth <- switch(match.arg(method,c("bestfit","reveal")), bestfit=0, reveal=1, stop("'method' must be one of \"bestfit\",\"reveal\"")) perturbationMatrix <- NULL if (inherits(measurements,"TransitionTable")) # preprocess transition table and call algorithm { numGenes <- (ncol(measurements) - 2) / 2 if (numGenes < maxK) { maxK <- numGenes warning(paste("maxK was chosen greater than the total number of input genes and reset to ",numGenes,"!",sep="")) } if (!is.null(perturbations)) { if (!all(perturbations %in% c(0,1,-1,NA))) stop("The perturbation matrix may only contain the values 0,1,-1 and NA!") perturbations[is.na(perturbations)] <- -1 if (is.null(dim(perturbations))) perturbations <- matrix(perturbations,ncol=1) if (ncol(perturbations) != 1 && ncol(perturbations) != nrow(measurements)) stop(paste("There must be either one global vector of perturbations, or a matrix", "containing exact one column for each time series!")) if (nrow(perturbations) != numGenes) stop("The perturbation matrix must have exactly the same number of rows as the measurements!") if (ncol(perturbations) == 1) { perturbationMatrix <- matrix(-1,nrow=numGenes,ncol=nrow(measurements)) for (j in seq_len(nrow(measurements))) perturbationMatrix[,j] <- perturbations[,1] } else perturbationMatrix <- as.matrix(perturbations) } inputStates <- as.integer(t(as.matrix(measurements[,seq_len(numGenes)]))) outputStates <- as.integer(t(as.matrix(measurements[,(numGenes+1):(2*numGenes)]))) numStates <- nrow(measurements) genenames <- sapply(colnames(measurements)[seq_len(numGenes)],function(x)strsplit(x,".",fixed=TRUE)[[1]][2]) } else # the measurements are time series { if (!is.null(dim(measurements))) # only one time series => create list measurements <- list(measurements) numGenes <- nrow(measurements[[1]]) if (numGenes < maxK) { maxK <- numGenes warning(paste("maxK was chosen greater than the total number of input genes and reset to ",numGenes,"!",sep="")) } if (is.null(perturbations) && !is.null(measurements$perturbations)) { perturbations <- measurements$perturbations measurements$perturbations <- NULL } if (!is.null(perturbations)) { if (!all(perturbations %in% c(0,1,-1,NA))) stop("The perturbation matrix may only contain the values 0,1,-1 and NA!") perturbations[is.na(perturbations)] <- -1 if (is.null(dim(perturbations))) perturbations <- matrix(perturbations,ncol=1) if (ncol(perturbations) != 1 && ncol(perturbations) != length(measurements)) stop(paste("There must be either one global vector of perturbations, or a matrix", "containing exact one column for each time series!")) if (nrow(perturbations) != numGenes) stop("The perturbation matrix must have exactly the same number of rows as the measurements!") } perturbationMatrix <- c() genenames <- rownames(measurements[[1]]) if (is.null(genenames)) genenames <- paste("Gene",seq_len(numGenes)) inputStates <- c() outputStates <- c() for (i in seq_along(measurements)) # iterate over all time series and build state vectors { measurement <- measurements[[i]] if (numGenes != nrow(measurement)) stop("All measurement matrices must contain the same genes!") inputStates <- c(inputStates,as.integer(as.matrix(measurement[,1:(ncol(measurement)-1)]))) outputStates <- c(outputStates,as.integer(as.matrix(measurement[,2:ncol(measurement)]))) if (!is.null(perturbations)) { for (j in seq_len(ncol(measurement) - 1)) { if (ncol(perturbations) == 1) perturbationMatrix <- cbind(perturbationMatrix, perturbations[,1]) else perturbationMatrix <- cbind(perturbationMatrix, perturbations[,i]) } } } numStates <- as.integer(length(inputStates) / numGenes) } if (is.null(requiredDependencies)) requiredDepMatrix <- NULL else { if (is.null(names(requiredDependencies))) names(requiredDependencies) <- genenames if (length(union(names(requiredDependencies),genenames)) != length(genenames)) stop("The required dependencies must consist of gene names that are comprised in the measurements!") requiredDepMatrix <- matrix(0,nrow=numGenes,ncol=numGenes) colnames(requiredDepMatrix) <- genenames rownames(requiredDepMatrix) <- genenames maxRequired <- 0 for (i in seq_along(requiredDependencies)) { maxRequired <- max(maxRequired, length(requiredDependencies[i])) for (el in requiredDependencies[i]) requiredDepMatrix[el,names(requiredDependencies)[i]] <- 1 } if (maxRequired > maxK) { warning(paste("The number of required dependencies is greater than maxK! Setting maxK to ", maxRequired, "!", sep="")) maxK <- maxRequired } requiredDepMatrix <- as.integer(requiredDepMatrix) } if (is.null(excludedDependencies)) excludedDepMatrix <- NULL else { if (is.null(names(excludedDependencies))) names(excludedDependencies) <- genenames if (length(union(names(excludedDependencies),genenames)) != length(genenames)) stop("The excluded dependencies must consist of gene names that are comprised in the measurements!") excludedDepMatrix <- matrix(0,nrow=numGenes,ncol=numGenes) colnames(excludedDepMatrix) <- genenames rownames(excludedDepMatrix) <- genenames for (i in seq_along(excludedDependencies)) { gene <- names(excludedDependencies)[i] if (!is.null(requiredDependencies) && !is.null(requiredDependencies[[gene]])) { conflicts <- intersect(requiredDependencies[[gene]], excludedDependencies[[gene]]) if (length(conflicts) > 0) stop(paste("For gene ",gene, ", potential inputs were specified both as required and excluded dependencies: ", paste(conflicts, collapse=", "), sep="")) } for (el in excludedDependencies[i]) excludedDepMatrix[el,names(excludedDependencies)[i]] <- 1 } excludedDepMatrix <- as.integer(excludedDepMatrix) } if (!is.null(perturbations)) perturbationMatrix <- as.integer(perturbationMatrix) on.exit(.C("freeAllMemory", PACKAGE = "BoolNet")) # call C code res <- .Call("reconstructNetwork_R", inputStates, outputStates, perturbationMatrix, as.integer(numStates), requiredDepMatrix, excludedDepMatrix, as.integer(maxK), as.integer(meth), as.integer(allSolutions), as.integer(returnPBN)) if (any(sapply(res,function(interaction)length(interaction)==0))) # some function lists are empty warning("Some functions could not be inferred. Possibly the input data is noisy or maxK was chosen too small!") # prepare result object res <- list(genes=genenames, interactions=lapply(res,function(gene) lapply(gene,function(interaction) { interaction$expression <- getInteractionString(readableFunctions, interaction$func, genenames[interaction$input]) if (returnPBN) interaction$probability <- 1.0/length(gene) interaction })), fixed=sapply(res,function(gene) { if (length(gene) == 0) -1 else if (gene[[1]]$input[1] == 0) gene[[1]]$func[1] else -1 })) names(res$interactions) <- res$genes names(res$fixed) <- res$genes if (returnPBN) class(res) <- "ProbabilisticBooleanNetwork" else class(res) <- "BooleanNetworkCollection" if (allSolutions) # simplify functions and remove duplicates { res <- simplifyNetwork(res) res$interactions <- lapply(res$interactions,function(interaction) { duplicates <- duplicated(sapply(interaction,function(func)func$expression)) return(interaction[!duplicates]) }) } return(res) } ���������������BoolNet/R/simplifyNetwork.R�������������������������������������������������������������������������0000644�0001762�0000144�00000007050�13277247010�015353� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Simplify a Boolean network by dropping all input genes that are not relevant # for the output simplifyNetwork <- function(network,readableFunctions=FALSE) { stopifnot(inherits(network,"BooleanNetwork") | inherits(network,"ProbabilisticBooleanNetwork") | inherits(network,"BooleanNetworkCollection")) if (inherits(network,"BooleanNetwork")) { network$interactions <- mapply(function(interaction, j) { if (interaction$input[1] != 0) # no constant gene { table <- allcombn(2,length(interaction$input)) - 1 dropGenes <- apply(table,2,function(gene) # drop all genes that have no influence on the results, # i.e. the result column is equal for 0 values and 1 values { (identical(interaction$func[gene==1], interaction$func[gene==0])) }) if (sum(!dropGenes) == 0) { network$fixed[j] <<- interaction$func[1] interaction$input <- 0 interaction$func <- interaction$func[1] } else if (sum(dropGenes) > 0) { # update network network$fixed[j] <<- -1 dropFunctionIndices <- unlist(sapply(seq_along(dropGenes),function(i) { if(dropGenes[i]) which(table[,i] == 0) else NULL })) interaction$input <- interaction$input[!dropGenes] interaction$func <- interaction$func[-dropFunctionIndices] interaction$expression <- getInteractionString(readableFunctions, interaction$func, network$genes[interaction$input]) } } interaction }, network$interactions, seq_along(network$interactions), SIMPLIFY=FALSE) } else { network$interactions <- lapply(network$interactions,function(gene) lapply(gene,function(interaction) { if (interaction$input[1] != 0) # no constant gene { table <- allcombn(2,length(interaction$input)) - 1 dropGenes <- apply(table,2,function(gene) # drop all genes that have no influence on the results, # i.e. the result column is equal for 0 values and 1 values { (identical(interaction$func[gene==1], interaction$func[gene==0])) }) if (sum(!dropGenes) == 0) { interaction$input <- 0 interaction$func <- interaction$func[1] } else if (sum(dropGenes) > 0) { # update network dropFunctionIndices <- unlist(sapply(seq_along(dropGenes),function(i) { if(dropGenes[i]) which(table[,i] == 0) else NULL })) interaction$input <- interaction$input[!dropGenes] interaction$func <- interaction$func[-dropFunctionIndices] interaction$expression <- getInteractionString(readableFunctions, interaction$func, network$genes[interaction$input]) } } interaction })) } return(network) } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/R/print.BooleanStateInfo.R������������������������������������������������������������������0000644�0001762�0000144�00000000507�13277247010�016474� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Custom print function for class BooleanStateInfo print.BooleanStateInfo <- function(x, activeOnly=FALSE, ...) { # Create a TransitionTable object and print it cat("Transition table of Boolean network\n\n") transitionTable <- .internal.getTransitionTable(x) print(transitionTable, activeOnly=activeOnly, ...) } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/R/simulateSymbolicModel.R�������������������������������������������������������������������0000644�0001762�0000144�00000016300�13277247010�016451� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������simulateSymbolicModel <- function(network, method=c("exhaustive","random","chosen","sat.exhaustive","sat.restricted"), startStates=NULL, returnSequences=(!(match.arg(method) %in% c("sat.exhaustive", "sat.restricted"))), returnGraph=(!(match.arg(method) %in% c("sat.exhaustive", "sat.restricted"))), returnAttractors=TRUE, maxTransitions=Inf, maxAttractorLength=Inf, canonical=TRUE) { stopifnot(inherits(network,"SymbolicBooleanNetwork")) if (is.null(network$internalStructs) || checkNullPointer(network$internalStructs)) # refresh internal tree representations if necessary network$internalStructs = .Call("constructNetworkTrees_R",network); if (!is.null(maxAttractorLength) && is.infinite(maxAttractorLength)) maxAttractorLength <- NULL if (length(method) > 1) # if no method is supplied, infer method from the type of <startStates> { if (!is.null(maxAttractorLength)) method <- "sat.restricted" else if (length(startStates) == 0) { method <- "exhaustive" } else if (is.numeric(startStates)) { if (length(startStates) > 1) stop("Please supply either the number of start states or a list of start states in startStates!") else method <- "random" } else if (is.list(startStates)) method <- "chosen" else stop("Please supply either the number of start states or a list of start states in startStates!") } method <- match.arg(method, c("exhaustive","random","chosen","sat.exhaustive","sat.restricted")) if (method == "random") { if (startStates > 2 ^ (sum(network$timeDelays[network$fixed == -1]))) # more start states than in the full network { method <- "exhaustive" warning(paste("The number of random states is set larger than the total", "number of states. Performing an exhaustive search!")) } } if (method %in% c("sat.exhaustive", "sat.restricted")) { if (!is.null(maxAttractorLength)) maxAttractorLength <- as.integer(maxAttractorLength) else if (method == "sat.restricted") stop("maxAttractorLength must be set for method=\"sat.restricted\"!") if (returnSequences) { warning("Sequences cannot be returned for method=\"sat.exhaustive\" and method=\"sat.restricted\"!") returnSequences <- FALSE } if (returnGraph) { warning("Graph cannot be returned for method=\"sat.exhaustive\" and method=\"sat.restricted\"!") returnGraph <- FALSE } } else if (method == "exhaustive") { startStates <- NULL convertedStates <- NULL } else if (method == "chosen") { convertedStates <- lapply(startStates, function(state) { if (!is.null(dim(state))) { if (ncol(state) != length(network$genes)) stop(paste("\"startStates\" must be either a list of vectors with one value for each gene,", "or a list of matrices with the genes in the columns and multiple predecessor states in the rows!")) return(as.integer(as.matrix(state[nrow(state):1,]))) } else if (!is.numeric(state) || length(state) != length(network$genes)) stop(paste("\"startStates\" must be either a list of vectors with one value for each gene,", "or a list of matrices with the genes in the columns and multiple predecessor states in the rows!")) return(as.integer(state)) }) } else convertedStates <- as.integer(startStates) if (maxTransitions == 0) warning("\"maxTransitions\" is set to 0, which disables the transition limit!") else if (is.infinite(maxTransitions)) maxTransitions <- 0 on.exit(.C("freeAllMemory", PACKAGE = "BoolNet")) if (method %in% c("sat.exhaustive","sat.restricted")) res <- .Call("symbolicSATSearch_R", network$internalStructs, maxAttractorLength, method == "sat.restricted") else res <- .Call("simulateStates_R", network$internalStructs, convertedStates, #as.integer(length(startStates)), as.integer(maxTransitions), as.logical(returnSequences), as.logical(returnGraph), as.logical(returnAttractors)) ret <- list() if (returnSequences) { ret[["sequences"]] <- list() } if (returnGraph) { initialStates <- matrix(res[[2]][[1]], ncol=length(network$genes), byrow=TRUE) colnames(initialStates) <- paste("initialState.",network$genes, sep="") nextStates <- matrix(res[[2]][[2]], ncol=length(network$genes), byrow=TRUE) colnames(nextStates) <- paste("nextState.",network$genes, sep="") attractorAssignment <- data.frame(res[[2]][[3]] + 1) attractorAssignment[attractorAssignment == 0] <- NA colnames(attractorAssignment) <- "attractorAssignment" graph <- data.frame(unique(cbind(initialStates, nextStates, attractorAssignment))) class(graph) <- c("TransitionTable","data.frame") ret[["graph"]] <- graph } if (returnAttractors) { attractors <- lapply(res[[3]], function(x) { att <- matrix(x, ncol=length(network$genes), byrow=TRUE) colnames(att) <- network$genes if (canonical) { smallestIndex <- -1 smallestVal <- rep(Inf, ncol(att)) for (i in seq_len(nrow(att))) # iterate over elements of encoded state { equal <- TRUE for (j in seq(ncol(att),by=-1,length.out=ncol(att))) { if (att[i,j] < smallestVal[j]) # determine new minimum { equal <- FALSE smallestVal <- att[i,] smallestIndex <- i break } else if (att[i,j] > smallestVal[j]) { equal <- FALSE break } } if (equal && i != smallestIndex) { if (i - smallestIndex < (smallestIndex + nrow(att) - i) %% nrow(att)) { smallestVal <- att[i,] smallestIndex <- i } } } } if (smallestIndex != 1) # rearrange matrix att <- rbind(att[smallestIndex:nrow(att),,drop=FALSE], att[seq_len(smallestIndex-1),,drop=FALSE]) as.data.frame(att) }) ret[["attractors"]] <- attractors } if (returnSequences) { maxDelay <- max(network$timeDelays) if (returnAttractors) { ret[["attractorAssignment"]] <- res[[4]] + 1 ret[["attractorAssignment"]][ret[["attractorAssignment"]] == 0] <- NA } sequences <- mapply(function(seq, att) { seq <- matrix(seq, ncol=length(network$genes), byrow=TRUE) colnames(seq) <- network$genes rownames(seq) <- paste("t =", (1:nrow(seq)) - maxDelay) seq <- as.data.frame(seq) # add attractor information to sequence if (!is.na(att)) attributes(seq)$attractor <- (nrow(seq) - nrow(ret[["attractors"]][[att]]) + 1):nrow(seq) seq }, res[[1]], ret[["attractorAssignment"]], SIMPLIFY=FALSE) ret[["sequences"]] <- sequences } class(ret) <- "SymbolicSimulation" return(ret) } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/R/getAttractorSequence.R��������������������������������������������������������������������0000644�0001762�0000144�00000002632�13277247010�016302� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ getAttractorSequence <- function(attractorInfo, attractorNo) { stopifnot(inherits(attractorInfo,"AttractorInfo") || inherits(attractorInfo,"SymbolicSimulation")) if (inherits(attractorInfo,"SymbolicSimulation")) { if (is.null(attractorInfo$attractors)) stop(paste("This SymbolicSimulation structure does not contain attractor information.", "Please re-run simulateSymbolicModel() with returnAttractors=TRUE!")) if (missing(attractorNo) || attractorNo <= 0 || attractorNo > length(attractorInfo$attractors)) stop("Please provide a valid attractor number!") return(attractorInfo$attractors[[attractorNo]]) } else { if (missing(attractorNo) || attractorNo <= 0 || attractorNo > length(attractorInfo$attractors)) stop("Please provide a valid attractor number!") if (!is.null(attractorInfo$attractors[[attractorNo]]$initialStates)) stop("A sequence can be obtained for synchronous attractors only!") numGenes <- length(attractorInfo$stateInfo$genes) # decode binary representation of states involved in the attractors binMatrix <- t(matrix(apply(attractorInfo$attractors[[attractorNo]]$involvedStates,2,function(state) dec2bin(state,numGenes)),nrow=numGenes)) colnames(binMatrix) <- attractorInfo$stateInfo$genes return(as.data.frame(binMatrix)) } } ������������������������������������������������������������������������������������������������������BoolNet/R/symbolicToTruthTable.R��������������������������������������������������������������������0000644�0001762�0000144�00000001174�13277247010�016271� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ # Convert a SymbolicBooleanNetwork object # <network> to a BooleanNetwork object symbolicToTruthTable <- function(network) { stopifnot(inherits(network, "SymbolicBooleanNetwork")) res <- list(genes = network$genes, fixed = network$fixed, interactions = lapply(network$interactions, function(int) { newInt <- .Call("getTruthTable_R", int, length(network$genes)) names(newInt) <- c("input","func") newInt$expression <- stringFromParseTree(int) return(newInt) })) class(res) <- "BooleanNetwork" return(res) } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/R/parseBooleanFunction.R��������������������������������������������������������������������0000644�0001762�0000144�00000033001�13277247010�016260� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ # Split up <expression> into symbols. # Returns a vector of symbols. scan <- function(expression, lowerCase=FALSE) { if (lowerCase) expression <- tolower(expression) # add extra whitespace to brackets and operators expression <- gsub("(\\(|\\)|\\[|\\]|\\||\\&|\\!|\\=|\\.\\.|[a-zA-Z0-9_]*)"," \\1 ", expression) # strip multiple whitespace characters expression <- gsub("[ ]+", " ", expression) expression <- gsub("^[ ]+", "", expression) expression <- gsub("[ ]+$", "", expression) # split up at whitespace positions res <- strsplit(expression, " ", fixed=TRUE)[[1]] return(res) } # Parse a Boolean function in <expression>, # and build a corresponding parse tree. parseBooleanFunction <- function(expression, varNames=c(), lowerCase=FALSE) { minArgCounts <- c("&"=2,"|"=2, "all" = 1, "any" = 1, "maj" = 1, "sumis" = 2, "sumgt" = 2, "sumlt" = 2, "timeis" = 1, "timelt" = 1, "timegt" = 1) maxArgCounts <- c("&"=Inf,"|"=Inf,"all" = Inf, "any" = Inf, "maj" = Inf, "sumis" = Inf, "sumgt" = Inf, "sumlt" = Inf, "timeis" = 1, "timelt" = 1, "timegt" = 1) isBooleanArgument <- function(arg) { return (arg$type %in% c("atom","operator") || arg$type == "constant" && arg$value %in% c(0,1)) } checkPredicate <- function(pred) { if (pred$operator %in% c("&","|","maj")) { for (el in pred$operands) { if (!isBooleanArgument(el)) { stop(paste("Invalid argument to \"",pred$operator,"\": ", stringFromParseTree(el),sep="")) } } } else if (pred$operator %in% c("sumis","sumgt","sumlt")) { for (el in pred$operands[-length(pred$operands)]) { if (!isBooleanArgument(el)) { stop(paste("Invalid argument to \"",pred$operator,"\": ", stringFromParseTree(el),sep="")) } } if (pred$operands[[length(pred$operands)]]$type != "constant") stop(paste("Last argument of \"",pred$operator,"\" must be an integer value!")) } else if (pred$operator %in% c("timeis")) { if (pred$operands[[1]]$type != "constant" || pred$operands[[1]]$value < 0) stop(paste("Argument of \"",pred$operator,"\" must be a non-negative integer value!")) } } # internal function to step forward one symbol advanceSymbol <- function(errorIfEnd = TRUE) { pos <<- pos + 1 #print(symbols[-(1:pos-1)]) if (pos > length(symbols)) if (errorIfEnd) stop("Unexpected end of expression!") else return(NA) else return(symbols[pos]) } getCurrentSymbol <- function() { #print(symbols[-(1:pos-1)]) if (pos > length(symbols)) return(NA) else return(symbols[pos]) } # internal function to preview the next symbol previewSymbol <- function() { if (pos + 1 > length(symbols)) return(NA) else return(symbols[pos + 1]) } getSymbolPos <- function() { return(pos) } setSymbolPos <- function(newPos) { pos <<- newPos } # internal function to parse a sub-expression in brackets parseExpression <- function(temporalVariables = c()) { operators <- c() children <- c() symb <- advanceSymbol() while (TRUE) { if (symb == "(") # a new sub-expression children[[length(children)+1]] <- parseExpression(temporalVariables=temporalVariables) else if (symb == "!") # a negation children[[length(children)+1]] <- parseNegation(temporalVariables=temporalVariables) else if (regexpr("^[a-zA-Z0-9_]*$",symb) == -1) # something unexpected happened stop(paste("Unexpected symbol:",symb)) else children[[length(children)+1]] <- parseAtomOrPredicate(symb, temporalVariables=temporalVariables) symb <- advanceSymbol(FALSE) if (is.na(symb) || symb %in% c(")",",")) # end of expression was reached break if (!symb %in% c("&","|")) stop("Operator expected!") operators <- c(operators,symb) symb <- advanceSymbol() } if (length(children) == 1) { # an operator with only one child return(children[[1]]) } else if (length(unique(operators)) == 1) { # an n-ary operator res <- list(type="operator",operator=operators[1], negated=FALSE, operands=children) checkPredicate(res) return(res) } else # a mixture of multiple operators => ensure correct precedence { i <- 1 startPos <- NA operators <- c(operators, "|") operands <- list() while (i <= length(operators)) # identify AND operators and move them to a subtree { if (operators[i] == "&" && is.na(startPos)) # start of a conjunction startPos <- i if (operators[i] == "|" && !is.na(startPos)) # end of a conjunction => create subtree { subOp <- list(type="operator", operator="&", negated=FALSE, operands=children[startPos:i]) operands[[length(operands)+1]] <- subOp startPos <- NA } else if (is.na(startPos)) operands[[length(operands)+1]] <- children[[i]] i <- i + 1 } res <- list(type="operator",operator="|", negated=FALSE, operands=operands) checkPredicate(res) return(res) } } # internal function to parse atoms or temporal predicates parseAtomOrPredicate <- function(name, temporalVariables=c()) { if (regexpr("^[0-9]*$",name) != -1 || name %in% c("true","false")) # a (Boolean or integer) constant { if (name == "true") value <- 1L else if (name == "false") value <- 0L else value <- as.integer(name) return(list(type="constant", value=value, negated=FALSE)) } if (tolower(name) %in% names(minArgCounts)) # a temporal predicate { name <- tolower(name) # translate all into & and any into | operator <- switch(name, all = "&", any = "|", name) nextSym <- previewSymbol() if (!is.na(nextSym) && nextSym == "[") # a temporal iterator definition follows { # discard bracket advanceSymbol() varName <- advanceSymbol() if (regexpr("^[a-zA-Z0-9_]*$",varName) == -1) # something unexpected happened stop(paste("Unexpected symbol:",varName)) symb <- advanceSymbol() if (symb != "=") { stop(paste("Expected \"=\" instead of \"",symb,"\" in temporal predicate!")) } # parse start time point startTime <- parseTimePoint(temporalVariables=temporalVariables, TRUE) symb <- getCurrentSymbol() if (symb != "..") { stop(paste("Expected \"..\" instead of \"",symb,"\" in temporal predicate!")) } # parse end time point endTime <- parseTimePoint(temporalVariables=temporalVariables, TRUE) symb <- getCurrentSymbol() if (symb != "]") stop(paste("Unexpected symbol:",symb)) } else # no temporal iterator defined { startTime <- 0 endTime <- 0 varName <- NULL } symb <- advanceSymbol() if (symb != "(") stop(paste("Unexpected symbol:",symb)) subElements <- c() while(TRUE) # parse parameters of predicate { oldPos <- getSymbolPos() for (time in startTime:endTime) # expand arguments according to temporal range { tempVars <- temporalVariables if (!is.null(varName)) { if (length(tempVars) > 0 && !is.na(tempVars[varName])) { stop(paste("Duplicate variable ",varName,"! Please use only unique variable names!",sep="")) } tempVars[varName] <- time } # re-parse the argument with a new time point => reset parser position setSymbolPos(oldPos) subElement <- parseExpression(temporalVariables=tempVars) subElements <- c(subElements, list(subElement)) if (subElement$type == "constant") break } subElements <- unique(subElements) symb <- getCurrentSymbol() if (is.na(symb)) stop("Unexpected end of expression!") if (symb == ")") break if (symb != ",") stop ("Expected \",\" or \")\"!") } # check if number of argument matches if (length(subElements) < minArgCounts[name] || length(subElements) > maxArgCounts[name]) stop(paste("Invalid number of arguments to ",name,": ",length(subElements),sep="")) res <- list(type="operator",operator=operator, negated=FALSE, operands=subElements) # check if argument types match checkPredicate(res) return(res) } else # an atom with or without temporal information { nextSym <- previewSymbol() if (!is.na(nextSym) && nextSym == "[") # the atom has a time point specification { symb <- advanceSymbol() time <- parseTimePoint(temporalVariables=temporalVariables) symb <- getCurrentSymbol() if (symb != "]") stop(paste("Unexpected symbol:",symb)) } else # no time point specified => default to previous time point time <- -1L if (length(varNames) > 0) # check if variable is known { varIndex <- which(varNames == name) if (length(varIndex) == 0) stop(paste("Unknown variable:",name)) negated <- FALSE return(list(type="atom", name=name, index=as.integer(varIndex), time=as.integer(time), negated=negated)) } else { return(list(type="atom", name=name, time=as.integer(time), negated=FALSE)) } } } # internal function to parse a time specification parseTimePoint <- function(temporalVariables=c(), allowPositive=FALSE) { symb <- advanceSymbol() time <- 0 while (TRUE) { sign <- 1 if (symb == "+") # ignore positive sign symb <- advanceSymbol() else if (symb == "-") # set multiplier to negative sign { sign <- -1 symb <- advanceSymbol() } if (symb %in% names(temporalVariables)) # a variable was found => add its value { time <- time + sign * temporalVariables[symb] symb <- advanceSymbol() } else # this has to be an integer time value { suppressWarnings(addTime <- as.integer(symb)) if (is.na(addTime)) { stop(paste("Invalid time specification: ",symb, ". Time specifications must be integers <= -1)", sep="")) } time <- time + sign * addTime symb <- advanceSymbol() } if (symb %in% c("]","..")) break } if (time > -1 && !allowPositive) { stop(paste("Invalid time specification: ",time, ". Time specifications must be integers <= -1)", sep="")) } return(as.integer(time)) } # Internal function to parse a negation parseNegation <- function(temporalVariables=c()) { symb <- advanceSymbol() if (symb == "(") { res <- parseExpression(temporalVariables) } else if (symb %in% c(")","&","|","]","[","=")) stop(paste("Unexpected symbol:",symb)) else res <- parseAtomOrPredicate(symb, temporalVariables=temporalVariables) res$negated <- !res$negated return(res) } tryCatch( { symbols <- scan(expression, lowerCase=lowerCase) pos <- 0 res <- parseExpression() }, error = function(e) { stop(sprintf("Error parsing expression \"%s\": %s", expression, e$message)) }) if (!isBooleanArgument(res)) stop(paste("Non-Boolean formula ",stringFromParseTree(res),"!",sep="")) return(res) } # Regenerate the expression string # from the parse tree <tree> stringFromParseTree <- function(tree) { res <- switch(tree$type, operator = { if (tree$operator %in% c("|","&")) { paste({if (tree$negated) "!" else ""}, "(", paste(sapply(tree$operands,stringFromParseTree), collapse=paste(" ",tree$operator," ",sep="")), ")", sep="") } else { paste({if (tree$negated) "!" else ""}, tree$operator,"(",paste(sapply(tree$operands,stringFromParseTree), collapse=", "),")",sep="") } }, atom = paste({if (tree$negated) "!" else ""}, tree$name, {if (tree$time != -1) paste("[",tree$time,"]",sep="") else ""}, sep=""), constant = paste({if (tree$negated) "!" else ""}, tree$value, sep="") ) return(res) } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/R/loadBioTapestry.R�������������������������������������������������������������������������0000644�0001762�0000144�00000021673�13277247010�015261� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Parse all nodes in <rootNode> # (i.e., all nodes of a certain type), # and write them to a list parseGeneAttrs <- function(rootNode) { i <- 0 res <- xmlApply(rootNode,function(child) { i <<- i + 1 attrs <- xmlAttrs(child) name <- unname(attrs["name"]) if (name == "" | is.na(name)) name <- paste(xmlName(child),i,sep="_") # find the "simulationLogic" node, which contains # the necessary logic information logic <- xmlFindNode(child,"simulationLogic") initVal <- NULL if (is.null(logic)) { warning(paste("Gene ",name," does not specify a simulation logic, assuming AND!",sep="")) logic <- "AND" } else { # try to find initial values in the simulation parameters logic <- logic[[1]] params <- xmlFindNode(logic,"simParameters") if (!is.null(params)) { for (param in xmlChildren(params[[1]])) { pa <- xmlAttrs(param) if (pa["name"] == "initVal") { initVal <- as.numeric(pa["value"]) if (initVal != 0 & initVal != 1) # only 0 and 1 are allowed for the initialization { warning("Initial value for gene ",name," is neither 0 nor 1 and is ignored!",sep="") initVal <- NULL } break } } } # get the Boolean function of the node logic <- unname(xmlAttrs(logic)["type"]) } list(id=unname(attrs["id"]), name=adjustGeneNames(name),logic=logic,initVal=initVal,inputs=NULL) }) } # Parse all types of nodes (genes, signals, etc) parseAllGenes <- function(rootNode) { genes <- unlist(xmlApply(rootNode,parseGeneAttrs),recursive=FALSE) names(genes) <- lapply(genes,function(gene)gene$id) return(genes) } # Parse the links in the children of <node> and insert them # into the input lists of the genes parseAllLinks <- function(rootNode,geneList) { for (link in xmlChildren(rootNode)) { attrs <- xmlAttrs(link) if (is.na(attrs["sign"])) # a link with unspecified direction (inhibition or activation) was found { warning(paste("The link between \"",geneList[[attrs["src"]]]$name, "\" and \"",geneList[[attrs["targ"]]]$name, "\" is not specified as an enhancer or suppressor and is therefore ignored!",sep="")) } else { geneList[[attrs["targ"]]]$input[[length(geneList[[attrs["targ"]]]$input) + 1]] <- list(input=unname(attrs["src"]),sign=attrs["sign"]) } } return(geneList) } # Load a BioTapestry file (*.btp) from <file> # and convert it to a Boolean network loadBioTapestry <- function(file, symbolic=FALSE) { doc <- xmlRoot(xmlTreeParse(file)) # detect the "genome" XML node which holds the nodes and links of the network genome <- xmlFindNode(doc,"genome",throwError=TRUE)[[1]] # find the "nodes" node that contains all genes/inputs/etc nodes <- xmlFindNode(genome,"nodes",throwError=TRUE)[[1]] # read in genes geneList <- parseAllGenes(nodes) # find the "links" node that contains the links/dependencies links <- xmlFindNode(genome,"links",throwError=TRUE)[[1]] # add links to gene list geneList <- parseAllLinks(links,geneList) # build up network structure genes <- unname(sapply(geneList,function(gene)gene$name)) geneIds <- names(geneList) fixed <- rep(-1L,length(genes)) i <- 0 interactions <- lapply(geneList,function(gene) { i <<- i + 1 input <- sapply(gene$input,function(inp) { which(geneIds == inp$input) }) if (length(input) == 0) { if (!is.null(gene$initVal)) # input-only gene without fixed value (=> depending on itself) { input <- 0 func <- gene$initVal fixed[i] <<- func expr <- func } else # input-only gene with fixed value { input <- i func <- c(0,1) expr <- gene$name } } else # dependent gene { # determine signs/negations of genes inputSigns <- sapply(gene$input,function(inp)inp$sign) if (!symbolic || gene$logic == "XOR") { tt <- as.matrix(allcombn(2,length(input)) - 1) func <- as.integer(switch(gene$logic, AND = { # calculate truth table for AND apply(tt,1,function(assignment) { res <- 1 for (i in seq_along(assignment)) { if (inputSigns[i] == "+") res <- res & assignment[i] else res <- res & !assignment[i] if (!res) break } res }) }, OR = { # calculate truth table for OR apply(tt,1,function(assignment) { res <- 0 for (i in seq_along(assignment)) { if (inputSigns[i] == "+") res <- res | assignment[i] else res <- res | !assignment[i] if (res) break } res }) }, XOR = { # calculate truth table for XOR apply(tt,1,function(assignment) { res <- assignment[1] for (i in 2:length(assignment)) { res <- xor(res,assignment[i]) } res }) }, stop(paste("Unknown Boolean operator \"", gene$logic,"\"!",sep="")) )) } # get string representation of the input gene literals literals <- mapply(function(gene,sign) { if (sign == "+") gene else paste("!",gene,sep="") }, genes[input], inputSigns) # get string representation of function expr <- switch(gene$logic, AND = { paste(literals,collapse=" & ") }, OR = { paste(literals,collapse=" | ") }, XOR = { getDNF(func,genes[input]) } ) } if (symbolic) return(parseBooleanFunction(expr,varNames=genes)) else return(list(input=input,func=func,expression=expr)) }) names(interactions) <- genes fixed <- as.integer(fixed) names(fixed) <- genes net <- list(genes=genes,interactions=interactions,fixed=fixed) if (symbolic) { net$timeDelays <- apply(sapply(net$interactions,maxTimeDelay,genes=net$genes),1,max) net$internalStructs <- .Call("constructNetworkTrees_R",net) class(net) <- "SymbolicBooleanNetwork" } else class(net) <- "BooleanNetwork" return(net) } ���������������������������������������������������������������������BoolNet/R/attractorsToLaTeX.R�����������������������������������������������������������������������0000644�0001762�0000144�00000014504�13277247010�015536� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Create LaTeX state tables of all attractors in <attractorInfo>. # Genes are grouped according to <grouping>. # An additional title can be supplied in <title>. # If <plotFixed> is set, fixed variables are included in the plot. # <onColor> and <offColor> specify the colors of ON/1 and OFF/0 states. # <file> is the name of the output LaTeX document. attractorsToLaTeX <- function (attractorInfo, subset, title = "", grouping = list(), plotFixed = TRUE, onColor="[gray]{0.9}",offColor="[gray]{0.6}", reverse=FALSE, file="attractors.tex") { stopifnot(inherits(attractorInfo,"AttractorInfo") || inherits(attractorInfo, "SymbolicSimulation")) if (inherits(attractorInfo,"AttractorInfo")) { numGenes <- length(attractorInfo$stateInfo$genes) geneNames <- attractorInfo$stateInfo$genes } else { numGenes <- ncol(attractorInfo$attractors[[1]]) geneNames <- colnames(attractorInfo$attractors[[1]]) } if (missing(subset)) subset <- seq_along(attractorInfo$attractors) else if (any(subset > length(attractorInfo$attractors))) stop("You specified an attractor index that is greater than the total number of attractors in 'subset'!") # escape "_" in LaTeX genes = gsub("_", "\\_", attractorInfo$stateInfo$genes) # determine list of genes to be plotted whichFixed <- which(attractorInfo$stateInfo$fixedGenes != -1) if (plotFixed | (length(whichFixed) == 0)) plotIndices <- seq_len(numGenes) else plotIndices <- (seq_len(numGenes))[-whichFixed] if (inherits(attractorInfo,"AttractorInfo")) { # convert decimal state numbers to binary state matrices (one for each attractor) binMatrices <- lapply(attractorInfo$attractors,function(attractor) { res <- matrix(apply(attractor$involvedStates,2,function(state) dec2bin(state,numGenes)[plotIndices]),nrow=length(plotIndices)) }) # count the numbers of attractors with equal lengths attractorLengths <- sapply(attractorInfo$attractors,function(attractor) { if (is.null(attractor$initialStates)) # simple attractor ncol(attractor$involvedStates) else # complex attractor => extra treatment -1 }) } else { binMatrices <- lapply(attractorInfo$attractors, t) attractorLengths <- sapply(binMatrices, ncol) } lengthTable <- table(attractorLengths) lengthTable <- lengthTable[as.integer(names(lengthTable)) != -1] # Open output file, and print header sink(file) cat("% Please include packages tabularx and colortbl in your master document:\n", "% \\usepackage{tabularx,colortbl}\n\n\n",sep="") res <- lapply(seq_along(lengthTable),function(i) # accumulate all attractors with equal length in one matrix and plot them { len <- as.integer(names(lengthTable)[i]) attractorIndices <- intersect(which(attractorLengths == len), subset) if (length(attractorIndices) > 0) { # build accumulated matrix totalMatrix <- c() for (mat in binMatrices[attractorIndices]) { totalMatrix <- cbind(totalMatrix,mat) } rownames(totalMatrix) <- geneNames[plotIndices] colnames(totalMatrix) <- sapply(attractorIndices,function(i)paste("Attr",i,".",seq_len(len),sep="")) if(length(grouping)>0) { # reorder genes according to the supplied groups totalMatrix <- totalMatrix[unlist(grouping$index),] separationPositions <- c(1,cumsum(sapply(grouping$index,length)+1)) } else separationPositions <- c() # output table header cat("\\begin{table}[ht]\n", "\\begin{center}\n", "\\caption{", title, "Attractors with ",len," state(s)}\n", "\\begin{tabularx}{\\linewidth}{l", paste(rep(paste(rep(">{\\centering\\arraybackslash}X", len), collapse = " "),length(intersect(which(attractorLengths == len),subset))),collapse="|"), "}\\hline\n", sep="") cat("\t&\t",paste(paste("\\multicolumn{",len,"}{c}{Attr. ",intersect(which(attractorLengths == len),subset),"}", sep=""),collapse="\t&\t"),"\\\\\n") # output active and inactive states if (reverse) indices <- rev(seq_len(nrow(totalMatrix))) else indices <- seq_len(nrow(totalMatrix)) for(j in indices) { separator <- which(separationPositions==j) if (length(separator) != 0) { cat("\\hline \\multicolumn{",ncol(totalMatrix) + 1,"}{c}{",grouping$class[separator],"}\\\\ \\hline \n",sep="") } cat("\\textbf{",rownames(totalMatrix)[j],"}\t&\t",sep="") for(i in seq_len(ncol(totalMatrix))) { if(totalMatrix[j,i] == 1) cat("\\cellcolor",onColor,"1",sep="") else cat("\\cellcolor",offColor,"0",sep="") if (i < ncol(totalMatrix)) cat("\t&\t") } cat("\\\\\n") } # output frequency of attractor (basin size / number of states) if (inherits(attractorInfo,"AttractorInfo")) { if (is.null(attractorInfo$stateInfo$table)) freq <- rep(NA, length(attractorIndices)) else freq <- round(sapply(attractorInfo$attractors[attractorIndices], function(attractor)attractor$basinSize/ncol(attractorInfo$stateInfo$table)) * 100,2) } else { if (!is.null(attractorInfo$graph)) { freq <- round(sapply(attractorIndices, function(i)sum(attractorInfo$graph$attractorAssignment == i)/ nrow(attractorInfo$graph)) * 100,2) } else freq <- rep(NA, length(attractorIndices)) } if (!isTRUE(all(is.na(freq)))) { cat("\\hline Freq.\t&\t",paste(paste("\\multicolumn{",len,"}{c}{",freq,"\\%}", sep=""),collapse="\t&\t"),"\\\\\n") } cat("\\hline\\end{tabularx}\n\\end{center}\n", "\\end{table}\n\n",sep="") totalMatrix } }) # return a list of accumulated matrices sink() names(res) <- names(lengthTable) return(res) } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/R/edgeDetector.R����������������������������������������������������������������������������0000644�0001762�0000144�00000003510�13277247010�014540� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Provides several methods to binarize a vector consisting of real values. # The methods are edge-detector-based. With <edge>="firstEdge", # the first "significant" edge in the sorted data is the threshold for the binarization. # With the <scaling> factor, the size of the first edge can be adapted. # The "maxEdge" method searches for the edge with the highest gradient. edgeDetector <- function(vector,scaling=1,edge=c("firstEdge","maxEdge")) { distance<-c() binarizeddata<-vector #sort data sortedvector<-sort(vector) #distance calculation for(i in seq_len(length(vector)-1)) { distance[i]<-sortedvector[i+1]-sortedvector[i] } switch(match.arg(edge), #the index of the first edge with distance[i]>threshold is determined firstEdge= { threshold<-scaling*((sortedvector[length(vector)]-sortedvector[1])/((length(vector)-1))) index <- 0 for(i in seq_len(length(vector)-1)) { if(distance[i]>threshold) { index<-i break } } }, #the index of the edge with the maximal gradient is determined maxEdge= { index <- which.max(distance) }, stop("'method' must be one of \"firstEdge\",\"maxEdge\"") ) #based on the edge index, the binarization is performed if(index!=0) { for(i in seq_len(length(vector))) { if(vector[i]>=sortedvector[index+1]) binarizeddata[i]<-1 else binarizeddata[i]<-0 } threshold=(sortedvector[index+1]+sortedvector[index])/2 return(list(bindata=binarizeddata,thresholds=as.numeric(threshold))) } else #if no edge was found, a vector consisting of zeros is returned { binarizeddata<-(sapply(vector,function(x) 0)) return(list(bindata=binarizeddata,thresholds=NA)) } } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/R/plotSequence.R����������������������������������������������������������������������������0000644�0001762�0000144�00000017114�13301230027�014602� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������plotSequence <- function (network, startState, includeAttractorStates = c("all", "first", "none"), sequence, title = "", mode = c("table", "graph"), plotFixed = TRUE, grouping = list(), onColor = "#4daf4a", offColor = "#e41a1c", layout, drawLabels = TRUE, drawLegend = TRUE, highlightAttractor = TRUE, reverse = FALSE, ### new parameters borderColor = "black", eps=0.1, attractor.sep.lwd = 2, attractor.sep.col = "blue", ...) { if (!missing(network)) { stopifnot(inherits(network, "BooleanNetwork") || inherits(network, "SymbolicBooleanNetwork")) if (missing(startState) || !missing(sequence)) stop("Either \"network\" and \"startState\" or \"sequence\" must be provided!") sequence <- getPathToAttractor(network = network, state = startState, includeAttractorStates = includeAttractorStates) numGenes <- length(network$genes) if (match.arg(mode, c("table", "graph")) == "table") { whichFixed <- which(network$fixed != -1) if (plotFixed | (length(whichFixed) == 0)) plotIndices <- seq_len(numGenes) else plotIndices <- seq_len(numGenes)[-whichFixed] attractor <- attributes(sequence)$attractor sequence <- sequence[, plotIndices, drop = FALSE] attributes(sequence)$attractor <- attractor } } else { if (missing(sequence) || !missing(startState)) stop("Either \"network\" and \"startState\" or \"sequence\" must be provided!") } switch(match.arg(mode, c("table", "graph")), table = { totalMatrix <- t(sequence) if (length(grouping) > 0) totalMatrix = totalMatrix[unlist(grouping$index), , drop = FALSE] if (is.null(colnames(totalMatrix))) { colnames(totalMatrix) <- seq_len(ncol(totalMatrix)) } else if (length(grep("t = ", colnames(totalMatrix)) == ncol(totalMatrix))) { colnames(totalMatrix) <- sapply(colnames(totalMatrix), gsub, pattern = "t = ", replacement = "", fixed = TRUE) } if (!reverse) totalMatrix <- totalMatrix[nrow(totalMatrix):1, , drop = F] plot(0, type="n", xlim = c(0, ncol(totalMatrix)), ylim = c(-2, nrow(totalMatrix)+1), xlab = "", ylab = "", axes = FALSE, main = title, ...) len <- ncol(totalMatrix) xStart <- 1 unitFactor <- (len - (2 * eps))/len axis(3, eps, "t = ", lty = "blank", yaxt = "s", xaxt = "s", xaxs = "i", pos = nrow(totalMatrix)+1) axis(3, eps + (1:ncol(totalMatrix))*unitFactor - unitFactor/2, ((1:ncol(totalMatrix)) - 1), lty = "blank", yaxt = "s", xaxt = "s", xaxs = "i", pos = nrow(totalMatrix)+1) axis(2, seq_len(nrow(totalMatrix)) - 0.5, rownames(totalMatrix), yaxt = "s", xaxt = "s", xaxs = "i", las = 2) startX <- eps for (i in seq_len(ncol(totalMatrix))) { for (j in seq_len(nrow(totalMatrix))) { rectCol <- ifelse(totalMatrix[j, i], onColor, offColor) rect(startX, j - 1, startX + unitFactor, j, col = rectCol, border = borderColor, lwd = 2) } startX <- startX + unitFactor if (i %% len == 0) { startX <- startX + 2*eps } } if (length(grouping) > 0) { if(!is.null(grouping$class)) { sepPos = cumsum(sapply(grouping$index, length)) abline(h = sepPos[-length(sepPos)], col = "black", lwd = 3) text(ncol(totalMatrix)/2, sepPos - 0.5, grouping$class, cex = 0.9) } } if (!is.null(attributes(sequence)$attractor) && highlightAttractor) { attrStart <- min(attributes(sequence)$attractor) - 1 #lines(x = c(attrStart, attrStart), y = c(-1, nrow(totalMatrix)) + 0.5) #abline(v = eps+attrStart*unitFactor, lwd = attractor.sep.lwd, col = attractor.sep.col) rect(xleft = eps+attrStart*unitFactor, xright = eps+attrStart*unitFactor, ybottom = -0.5, ytop = nrow(totalMatrix)+0.75, lwd = attractor.sep.lwd, border = attractor.sep.col) arrows(x0 = eps+attrStart*unitFactor, y0 = nrow(totalMatrix)+0.5, x1 = ncol(totalMatrix) - eps, y1 = nrow(totalMatrix)+0.5, length = 0.1, angle = 20, code = 3, col = attractor.sep.col) xpd.prev <- par()$xpd par(xpd=T) text(eps+attrStart*unitFactor, nrow(totalMatrix)+1, "Attractor", pos = 4) par(xpd=xpd.prev) } #if (drawLegend) legend(x = "bottomright", pch = c(15, 15), col = c(onColor, offColor), legend = c("active", "inactive"), cex = 0.7, horiz = T) if (drawLegend) legend(x = 0, y = -2, pch = c(15, 15), col = c(onColor, offColor), legend = c("active", "inactive"), cex = 0.7, horiz = T, xpd=T) #return(totalMatrix[network$genes,]) return(totalMatrix) }, graph = { if (installed.packages()["igraph", "Version"] < package_version("0.6")) bias <- 1 else bias <- 0 args <- list(...) if (is.null(args$vertex.size)) args$vertex.size <- 2 if (is.null(args$edge.arrow.mode)) args$edge.arrow.mode <- 0 if (is.null(args$rescale)) args$rescale <- !missing(layout) if (is.null(args$vertex.label.cex)) args$vertex.label.cex <- 0.75 if (is.null(args$vertex.label.dist)) args$vertex.label.dist <- 0.25 if (is.null(args$vertex.label.degree)) args$vertex.label.degree <- -pi/2 if (is.null(args$vertex.color)) args$vertex.color <- "grey" if (is.null(args$edge.arrow.size)) args$edge.arrow.size <- 0.5 if (missing(layout)) layout <- matrix(c(seq(-1, 1, length.out = nrow(sequence)), rep(0, nrow(sequence))), ncol = 2) states <- apply(sequence, 1, paste, collapse = "") nodes <- data.frame(seq_along(states), stringsAsFactors = FALSE) lastAttractorEdgeIndex <- NULL if (length(states) > 1) { initialStates <- 1:(length(states) - 1) nextStates <- 2:length(states) edgeMatrix <- data.frame(initialStates, nextStates) if (!is.null(attributes(sequence)$attractor)) { attractorEdge <- c(max(attributes(sequence)$attractor), min(attributes(sequence)$attractor)) if (all(attractorEdge <= length(states))) { edgeMatrix <- rbind(edgeMatrix, attractorEdge) lastAttractorEdgeIndex <- nrow(edgeMatrix) } } } else { edgeMatrix <- data.frame(matrix(nrow = 0, ncol = 2)) } graph <- graph.data.frame(edgeMatrix, vertices = nodes, directed = TRUE) if (drawLabels) labels <- states else labels <- NA if (highlightAttractor && !is.null(attributes(sequence)$attractor)) { attractorEdgeIndices <- intersect(seq_len(nrow(edgeMatrix)), c(attributes(sequence)$attractor, nrow(edgeMatrix))) - bias graph <- set.edge.attribute(graph, "width", index = attractorEdgeIndices, value = 3) } if (!is.null(lastAttractorEdgeIndex)) { graph <- set.edge.attribute(graph, "curved", value = 0) graph <- set.edge.attribute(graph, "curved", index = lastAttractorEdgeIndex - bias, value = 0.5) } plot(graph, layout = layout, vertex.label = labels, vertex.label.cex = args$vertex.label.cex, vertex.size = args$vertex.size, vertex.color = args$vertex.color, vertex.label.dist = args$vertex.label.dist, vertex.label.degree = args$vertex.label.degree, edge.arrow.size = args$edge.arrow.size, rescale = args$rescale, main = title, ...) return(graph) }) } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/R/testNetworkProperties.R�������������������������������������������������������������������0000644�0001762�0000144�00000033267�13277247010�016564� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Calculate the Gini index of <x> Gini <- function(x) { n <- length(x) x <- sort(x) 1/(n-1)*(n+1-2*(sum((n+1-seq_len(n))*x)/sum(x))) } # Compare the Hamming distances of the successor states of states and their perturbed copies. testTransitionRobustness <- function(network, accumulate=TRUE, params=list()) { res <- do.call("perturbTrajectories", c(list(network=network, measure="hamming"), params)) if (accumulate) return(res$value) else return(res$stat) } # Test attractor robustness by searching the original attractor # in <params$numSamples> perturbed copies of <network> or by perturbing the state trajectories # and checking whether the attractors change. testAttractorRobustness <- function(network, accumulate=TRUE, params=list()) { origAttrs <- getAttractors(network,canonical=TRUE) # decode parameters if (is.null(params$perturb)) perturb <- "functions" else perturb <- params$perturb if (params$perturb == "trajectories") { params$perturb <- NULL if (!is.null(params$copies)) { params$numSamples <- params$copies params$copies <- NULL } res <- do.call("perturbTrajectories", c(list(network=network, measure="attractor"), params)) if (accumulate) return(res$value) else return(res$stat) } else { if (is.null(params$method)) method <- "bitflip" else method <- params$method if (is.null(params$maxNumBits)) maxNumBits <- 1 else maxNumBits <- params$maxNumBits if (is.null(params$numStates)) numStates <- max(1,2^length(network$genes)/100) else numStates <- params$numStates if (is.null(params$simplify)) simplify <- (perturb[1] == "states") else simplify <- params$simplify if (is.null(params$readableFunctions)) readableFunctions <- FALSE else readableFunctions <- params$readableFunctions if (is.null(params$excludeFixed)) excludeFixed <- TRUE else excludeFixed <- params$excludeFixed if (!is.null(params$numSamples)) copies <- params$numSamples else if (is.null(params$copies)) copies <- 100 else copies <- params$copies perturbationResults <- unlist(sapply(seq_len(copies),function(copy) { # get attractors of perturbed network perturbedAttrs <- getAttractors(perturbNetwork(network, perturb=perturb, method=method, maxNumBits=maxNumBits, numStates=numStates, simplify=simplify, readableFunctions=readableFunctions, excludeFixed=excludeFixed)) # try to find original attractors in perturbed network attractorIndices <- sapply(origAttrs$attractors,function(attractor1) { index <- which(sapply(perturbedAttrs$attractors,function(attractor2) { identical(attractor1,attractor2) })) if (length(index) == 0) NA else index }) return(sum(!is.na(attractorIndices))) })) if (accumulate) # return overall percentage of found attractors return(sum(perturbationResults)/(length(origAttrs$attractors) * copies) * 100) else # return percentage of found attractors for each run return(perturbationResults/(length(origAttrs$attractors)) * 100) } } # Calculate the in-degrees of states in the network. # If <accumulate> is true, the in-degrees are accumulated # using the Gini coefficient testIndegree <- function(network,accumulate=TRUE,params) { attr <- getAttractors(network) graph <- plotStateGraph(attr,plotIt=FALSE) # calculate in-degree using igraph if (accumulate) # accumulate using Gini index return(Gini(degree(graph,mode="in",loops=TRUE))) else # return the raw degrees return(degree(graph,mode="in",loops=TRUE)) } # Calculate the Kullback-Leibler distance of # two distributions <x> and <y>. # <bins> is the number of bins used for discretization. # <minVal> is the minimum value to be used instead of zero kullbackLeiblerDistance <- function(x,y,bins=list(),minVal=0.00001) { x <- cut(x,breaks=bins,include.lowest=T,right=F) y <- cut(y,breaks=bins,include.lowest=T,right=F) tx <- table(x) ty <- table(y) tx <- tx/length(x) ty <- ty/length(y) tx[tx < minVal] <- minVal ty[ty < minVal] <- minVal return(sum(tx*(log(tx/ty)))) } # Generic function to test properties of <network> against random networks. # <numRandomNets> specifies the number of random networks to generate. # <testFunction> is the name of a function that returns a distribution of test values or a test statistic for each network, # which receives <testFunctionParams> as optional parameters. # If <accumulation> is "characteristic", the test function must return a characteristic/test statistic value for each value, and # a histogram of these value is plotted with a line for the original network. # If <accumulation> is "kullback_leibler", a histogram of the Kullback-Leibler distances of the test value distribution for the original network # and the random networks is plotted. # <sign.level> is the desired significance level for <network> in comparison to the random networks. # <functionGeneration>,<simplify>,<noIrrelevantGenes>,<validationFunction>,<failureInterations, # <d_lattice>,<zeroBias> are the corresponding parameters of generateRandomNKNetwork(). # <title> is the title of the plot, <xlab> is its x axis caption, <breaks> is the corresponding histogram parameter, and ... supplies further # graphical parameters testNetworkProperties <- function(network, numRandomNets=100, testFunction="testIndegree", testFunctionParams=list(), accumulation=c("characteristic","kullback_leibler"), alternative=c("greater","less"), sign.level=0.05, drawSignificanceLevel=TRUE, klBins,klMinVal=0.00001, linkage=c("uniform","lattice"), functionGeneration=c("uniform","biased"), validationFunction, failureIterations=10000, simplify=FALSE, noIrrelevantGenes=TRUE, d_lattice=1, zeroBias=0.5, title="", xlab, xlim, breaks=30, ...) { stopifnot(inherits(network,"BooleanNetwork") || inherits(network,"SymbolicBooleanNetwork")) if (is.character(testFunction)) testFunctionName <- testFunction else testFunctionName <- "" testFunction <- match.fun(testFunction) accumulate <- (match.arg(accumulation) == "characteristic") origResult <- testFunction(network,accumulate,testFunctionParams) numGenes <- length(network$interactions) if (inherits(network,"SymbolicBooleanNetwork")) inputGenes <- sapply(network$interactions,function(interaction)length(getInputs(interaction))) else inputGenes <- sapply(network$interactions,function(interaction)length(interaction$input)) if (missing(validationFunction)) validationFunction <- NULL randomResults <- lapply(seq_len(numRandomNets),function(i) { randomNet <- generateRandomNKNetwork(n=numGenes, k=inputGenes, topology="fixed", linkage=linkage, functionGeneration=functionGeneration, validationFunction=validationFunction, failureIterations=failureIterations, simplify=simplify, noIrrelevantGenes=noIrrelevantGenes, d_lattice=d_lattice, zeroBias=zeroBias) randomRes <- testFunction(randomNet,accumulate,testFunctionParams) return(randomRes) }) if (accumulate) randomResults <- unlist(randomResults) args <- list(...) res <- switch(match.arg(accumulation,c("characteristic","kullback_leibler")), characteristic = { # get one value for each random network, and plot a histogram of these values if (missing(xlab)) { xlab <- switch(testFunctionName, testIndegree = "Gini index of state in-degrees", testAttractorRobustness = "% of identical attractors", testTransitionRobustness = "Normalized Hamming distance", "accumulated results" ) } if (missing(xlim)) { #xlim <- switch(testFunctionName, # testIndegree = c(0,1), # testAttractorRobustness = c(0,100), # c(min(c(origResult,randomResults)), # max(c(origResult,randomResults))) #) xlim <- range(c(origResult, randomResults)) } alternative <- match.arg(alternative, c("greater","less")) # calculate p-value if (alternative == "greater") pval <- sum(randomResults < origResult) / length(randomResults) else pval <- sum(randomResults > origResult) / length(randomResults) # plot histogram if (testFunctionName == "testIndegree" | testFunctionName == "testAttractorRobustness") { r <- hist(randomResults,xlim=xlim,xlab=xlab,main=title,xaxt="n",...) axis(side=1,at=seq(xlim[1],xlim[2],length.out=11)) } else { # plot with default axis r <- hist(randomResults,xlim=xlim,xlab=xlab,main=title,...) } # plot result for original network abline(v=origResult,col="red") if (alternative == "greater") text(x=origResult,pos=2,y=max(r$counts)*0.75, labels=paste("> ",round(pval * 100),"%\nof random results",sep=""), col="red",cex=0.75) else text(x=origResult,pos=4,y=max(r$counts)*0.75, labels=paste("< ",round(pval * 100),"%\nof random results",sep=""), col="red",cex=0.75) if (drawSignificanceLevel) # plot line for significance level { if (alternative == "greater") { quant <- quantile(randomResults,1.0-sign.level) abline(v=quant,col="blue") text(x=quant,pos=2,y=max(r$counts)*0.85, labels=paste((1.0-sign.level) * 100,"% quantile",sep=""), col="blue",cex=0.75) } else { quant <- quantile(randomResults,sign.level) abline(v=quant,col="blue") text(x=quant,pos=4,y=max(r$counts)*0.85, labels=paste(sign.level * 100,"% quantile",sep=""), col="blue",cex=0.75) } } list(hist=r,pval=1.0-pval,significant=(1.0-pval<=sign.level)) }, kullback_leibler = { # a distribution of values is returned for each network, # plot the Kullback-Leibler distances to the original network if (missing(xlab)) xlab <- "Kullback-Leibler distance" if (missing(klBins)) { bins <- unique(c(origResult,unlist(randomResults))) bins <- c(bins,max(bins) + 1) } else { bins <- unique(c(origResult,unlist(randomResults))) if (klBins < length(bins)) bins <- seq(min(bins),max(bins),length.out=klBins+1) else bins <- c(bins,max(bins) + 1) } vals <- sapply(randomResults,function(results) kullbackLeiblerDistance(origResult,results,bins=bins,minVal=klMinVal)) r <- hist(vals,xlab=xlab,main=title,breaks=breaks,...) list(hist=r) }, stop("'accumulation' must be one of \"characteristic\",\"kullback_leibler\"")) return(res) } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/R/plotStateGraph.R��������������������������������������������������������������������������0000644�0001762�0000144�00000021263�13277247537�015126� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Plots a graph that visualizes the state transitions and attractor basins. <attractorInfo> is an object # of class AttractorInfo. This requires the igraph package. # If <highlightAttractors> is set, attractor edges are drawn bold. # If <colorBasins> is true, each basin is drawn in a different color. # Colors can be provided in <colorSet>. # <layout> specifies the graph layouting function. # If <piecewise> is true, subgraphs are layouted separately. # <basin.lty> and <attractor.lty> specify the line types used to draw states in the basins # and in the attractors (if <highlightAttractor> is set). # If <plotIt> is not set, only the igraph object is returned, but no graph is plotted. # ... provides further graphical parameters for the plot. # Returns an object of class igraph plotStateGraph <- function(stateGraph, highlightAttractors = TRUE, colorBasins = TRUE, colorSet, drawLegend = TRUE, drawLabels = FALSE, layout = layout.kamada.kawai, piecewise = FALSE, basin.lty = 2, attractor.lty = 1, plotIt = TRUE, colorsAlpha = c(colorBasinsNodeAlpha = .3, colorBasinsEdgeAlpha = .3, colorAttractorNodeAlpha = 1, colorAttractorEdgeAlpha = 1), ...) { stopifnot(inherits(stateGraph,"AttractorInfo") || inherits(stateGraph,"TransitionTable") || inherits(stateGraph,"SymbolicSimulation")) args <- list(...) if (!is.null(args$attractorInfo)) { warning("The parameter \"attractorInfo\" is deprecated. Use \"stateGraph\" instead!") stateGraph <- args$attractorInfo } if(is.null(colorsAlpha) | (length(colorsAlpha) != 4)) { warning("colorsAlpha parameter not properly specified. Parameter will be set to opaque values (1,1,1,1).") colorsAlpha <- c(1,1,1,1) } if (any(colorsAlpha < 0 | colorsAlpha > 1)) { warning("colorsAlpha parameters are not in range [0,1] - they will be normalized.") colorsAlpha <- colorsAlpha/sum(colorsAlpha) } if (installed.packages()["igraph","Version"] < package_version("0.6")) bias <- 1 else bias <- 0 symbolic <- FALSE if (inherits(stateGraph,"AttractorInfo")) { stateGraph <- getTransitionTable(stateGraph) } else if (inherits(stateGraph,"SymbolicSimulation")) { symbolic <- TRUE if (is.null(stateGraph$graph)) stop(paste("This SymbolicSimulation structure does not contain transition table information.", "Please re-run simulateSymbolicModel() with returnGraph=TRUE!")) stateGraph <- stateGraph$graph } geneCols <- setdiff(colnames(stateGraph), c("attractorAssignment","transitionsToAttractor")) numGenes <- (length(geneCols)) / 2 from <- apply(stateGraph[ , 1:numGenes, drop=FALSE], 1, paste, collapse="") to <- apply(stateGraph[ , ((numGenes+1):(2*numGenes)), drop=FALSE], 1, paste, collapse="") vertices <- unique(c(from, to)) edges <- data.frame(from, to) res <- graph.data.frame(edges, vertices = as.data.frame(vertices), directed=TRUE) res <- set.vertex.attribute(res, "name", value = vertices) if ("attractorAssignment" %in% colnames(stateGraph)) attractorAssignment <- stateGraph$attractorAssignment else { attractorAssignment <- c() colorBasins <- FALSE drawLegend <- FALSE } if ("transitionsToAttractor" %in% colnames(stateGraph)) attractorIndices <- to[stateGraph$transitionsToAttractor == 0] else { if (highlightAttractors) { warning("The parameter \"highlightAttractors\" is set to true although not enough information is available in stateGraph. Highlightning of attractors will be set to FALSE.") } attractorIndices <- c() highlightAttractors <- FALSE } # determine nodes and edges that belong to attractors # set default edge width and line type res <- set.edge.attribute(res, "width" , value = 0.8) res <- set.edge.attribute(res, "lty", value = basin.lty) if (highlightAttractors) { attractorEdgeIndices <- which(apply(edges, 1 , function(edge){ return( (edge[1] %in% attractorIndices) & (edge[2] %in% attractorIndices) ) })) - bias # set different edge width and line type for attractor edges res <- set.edge.attribute(res, "width", index = attractorEdgeIndices, value = 2) res <- set.edge.attribute(res, "lty", index = attractorEdgeIndices, value = attractor.lty) } if (missing(colorSet)) { # define default colors colorSet <- c("blue","green","red","darkgoldenrod","gold","brown","cyan", "purple","orange","seagreen","tomato","darkgray","chocolate", "maroon","darkgreen","gray12","blue4","cadetblue","darkgoldenrod4", "burlywood2") } # check for certain graphical parameters in ... # that have different default values in this plot if (is.null(args$vertex.size)) args$vertex.size <- 2 if (is.null(args$edge.arrow.mode)) args$edge.arrow.mode <- 2 if (is.null(args$edge.arrow.size)) args$edge.arrow.size <- 0.3 if (is.null(args$vertex.label.cex)) args$vertex.label.cex <- 0.5 if (is.null(args$vertex.label.dist)) args$vertex.label.dist <- 1 attractors <- unique(attractorAssignment) attractors <- attractors[!is.na(attractors)] if (colorBasins) { res <- set.edge.attribute(res, "color", value = "darkgrey") for (attractor in attractors) { # determine nodes and edges belonging to the basin of <attractor> attractorGraphIndices <- NULL basinIndices <- which(attractorAssignment == attractor) if(!is.null(stateGraph$transitionsToAttractor)) { attractorGraphIndices <- intersect(basinIndices, which(stateGraph$transitionsToAttractor == 0)) basinIndices <- base::setdiff(basinIndices, attractorGraphIndices) } if (!symbolic) { # change vertex color res <- set.vertex.attribute(res, "color", basinIndices - bias, value = adjustcolor(colorSet[(attractor-1) %% length(colorSet) + 1], alpha.f = colorsAlpha[1])) res <- set.vertex.attribute(res, "frame.color", basinIndices - bias, value = adjustcolor("black", alpha.f = colorsAlpha[1])) if(!is.null(attractorGraphIndices)) { res <- set.vertex.attribute(res, "color", attractorGraphIndices - bias, value = adjustcolor(colorSet[(attractor-1) %% length(colorSet) + 1], alpha.f = colorsAlpha[3])) res <- set.vertex.attribute(res, "frame.color", attractorGraphIndices - bias, value = adjustcolor("black", alpha.f = colorsAlpha[3])) } if (drawLabels) res <- set.vertex.attribute(res,"label.color",basinIndices - bias, value=colorSet[(attractor-1) %% length(colorSet) + 1]) } # change edge color res <- set.edge.attribute(res, "color", index = basinIndices - bias, value = adjustcolor(colorSet[(attractor-1) %% length(colorSet) + 1], alpha.f = colorsAlpha[2])) if(!is.null(attractorGraphIndices)) { res <- set.edge.attribute(res, "color", index = attractorGraphIndices - bias, value = adjustcolor(colorSet[(attractor-1) %% length(colorSet) + 1], alpha.f = colorsAlpha[4])) } } } if(plotIt) { if (drawLabels) labels <- vertices else labels <- NA if (piecewise) layout <- piecewise.layout(res, layout) if (symbolic) autocurve.edges(res) do.call("plot",c(list(res),args,"vertex.label"=list(labels), "layout"=list(layout))) #plot(res,vertex.size=args$vertex.size,layout=layout, # edge.arrow.mode=args$edge.arrow.mode, # vertex.label=labels,vertex.label.cex=args$vertex.label.cex, # vertex.label.dist=args$vertex.label.dist, # ...) if (colorBasins & drawLegend) legend(x="bottomleft",pch=15,ncol=1, col=colorSet[attractors-1 %% length(colorSet) + 1], legend = paste("Attractor",seq_along(attractors)), cex=0.5) } return(invisible(res)) } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/R/getAttractors.R���������������������������������������������������������������������������0000644�0001762�0000144�00000025767�13277247010�015012� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Identify attractors in a Boolean network. # <network> is a BooleanNetwork/SymbolicBooleanNetwork structure specifying the network. # <method> specifies what kind of search is conducted: "exhaustive" performs a full search over all states, # "random" generates <startStates> random initial states, and "chosen" uses the states supplied in <startStates>. # "sat.exhaustive" and "sat.restricted" start a SAT-based attractor search. # <genesON> and <genesOFF> are lists of genes to be set to ON/1 or OFF/0 respectively. # If <canonical> is true, states in the attractors are reordered such that the "smallest" state is the first # <randomChainLength> is the number of random transitions performed for the identification of an asynchronous attractor # If <avoidSelfLoops> is true, loops to the same state are eliminated from asynchronous attractors. # <geneProbabilities> optionally specifies the probabilities of choosing a gene for an asynchronous update. # <maxAttractorLength> specifies the maximum attractor length for method="sat.restricted" and the initial search length for method="sat.exhaustive". # if <returnTable> is true, the transition table is included in the result. getAttractors <- function (network, type=c("synchronous","asynchronous"), method=c("exhaustive","sat.exhaustive","sat.restricted","random","chosen"), startStates=list(), genesON = c(), genesOFF = c(), canonical=TRUE, randomChainLength = 10000, avoidSelfLoops = TRUE, geneProbabilities = NULL, maxAttractorLength=Inf, returnTable=TRUE) { stopifnot(inherits(network,"BooleanNetwork") || inherits(network,"SymbolicBooleanNetwork")) symbolic <- inherits(network,"SymbolicBooleanNetwork") nonFixedPositions <- which(network$fixed == -1) type <- match.arg(type, c("synchronous","asynchronous")) if (type == "asynchronous") { if (symbolic) stop("Only synchronous updates are allowed for symbolic networks!") if (length(method) == 1 & match.arg(method) == "exhaustive") stop("Asynchronous attractor search cannot be performed in exhaustive search mode!") if (length(geneProbabilities) > 0 ) { if (length(geneProbabilities) != length(network$genes)) stop("Please supply exactly one probability for each gene!") if (abs(1.0 - sum(geneProbabilities)) > 0.0001) stop("The supplied gene probabilities do not sum up to 1!") } } if (!is.null(maxAttractorLength) && is.infinite(maxAttractorLength)) maxAttractorLength <- NULL if (length(method) > 1) # if no method is supplied, infer method from the type of <startStates> { if (type == "asynchronous" & length(startStates) == 0) { startStates <- max(round(2 ^ sum(network$fixed == -1) / 20), 5) method = "random" } else if (is.numeric(startStates)) { if (length(startStates) > 1) stop("Please supply either the number of start states or a list of start states in startStates!") else method <- "random" } else if (is.list(startStates) & (length(startStates) > 0)) method <- "chosen" else if (!is.null(maxAttractorLength)) method <- "sat.restricted" else method <- "exhaustive" } # fix genes according to genesON and genesOFF if (length(genesON) > 0) { network <- fixGenes(network,genesON,1) } if (length(genesOFF) > 0) { network <- fixGenes(network,genesOFF,0) } if (symbolic) { return(simulateSymbolicModel(network, method=method, startStates=startStates, maxAttractorLength=maxAttractorLength, returnGraph=returnTable && !(match.arg(method) %in% c("sat.exhaustive", "sat.restricted")), returnSequences=FALSE, returnAttractors=TRUE, canonical=canonical)) } else { method <- match.arg(method,c("exhaustive","sat.exhaustive","sat.restricted","random","chosen")) if (method == "sat.restricted" && is.null(maxAttractorLength)) stop("maxAttractorLength must be set for method=\"sat.restricted\"!") if ((length(network$genes) > 29) && (method == "exhaustive") && (type == "synchronous")) { method <- "sat.exhaustive" warning("An exhaustive state space search is restricted to networks with at most 29 genes. Switching to the SAT-based exhaustive search, which supports more genes, but does not return a transition table!") } else if (method %in% c("sat.exhaustive", "sat.restricted") && type != "synchronous") stop("SAT-based search can only be used for synchronous networks!") startStates <- switch(method, exhaustive = list(), sat.exhaustive = list(), sat.restricted = list(), random = { if (!is.numeric(startStates)) stop("Please supply the number of random states in startStates!") if (startStates > (2 ^ length(nonFixedPositions))) # more start states than in the full network { if (type == "synchronous") { list() warning(paste("The number of random states is set larger than the total", "number of states. Performing an exhaustive search!")) } else { warning(paste("The number of random states is set larger than the total ", "number of states! The maximum number of different states is ",2 ^ length(nonFixedPositions)),"!",sep="") startStates = 2 ^ length(nonFixedPositions) } } # generate random matrix generateRandomStartStates(network, startStates) }, chosen = { if (!is.list(startStates) | length(startStates) == 0) stop("No start states supplied!") if (!all(sapply(startStates,function(x)(length(x) == length(network$genes))))) stop(paste("Please provide binary vectors with",length(network$genes), "elements in startStates!")) fixedGenes <- which(network$fixed != -1) statesValid <- sapply(startStates,function(state) { isTRUE(all(state[fixedGenes] == network$fixed[fixedGenes])) }) startStates <- startStates[statesValid] if (!any(statesValid)) stop("None of the supplied start states matched the restrictions of the fixed genes!") if (!all(statesValid)) warning("Some of the supplied start states did not match the restrictions of the fixed genes and were removed!") startStates } ) if (!is.null(maxAttractorLength)) { if (!(method %in% c("sat.exhaustive", "sat.restricted"))) stop("maxAttractorLength can only be used with method=\"sat.exhaustive\" or method=\"sat-res.ricted\"!") maxAttractorLength <- as.integer(maxAttractorLength) } specialInitialization <- NULL convertedStartStates <- NULL if (length(startStates) > 0) convertedStartStates <- sapply(startStates,function(x)bin2dec(x,length(network$genes))) # the C code requires all interactions to be coded into one vector: # Assemble all input gene lists in one list <inputGenes>, and remember the split positions in <inputGenePositions>. inputGenes <- as.integer(unlist(lapply(network$interactions,function(interaction)interaction$input))) inputGenePositions <- as.integer(cumsum(c(0,sapply(network$interactions, function(interaction)length(interaction$input))))) # Do the same for the transition functions. transitionFunctions <- as.integer(unlist(lapply(network$interactions,function(interaction)interaction$func))) transitionFunctionPositions <- as.integer(cumsum(c(0,sapply(network$interactions, function(interaction)length(interaction$func))))) searchType <- switch(type, synchronous = if (method == "sat.exhaustive") 2 else if (method == "sat.restricted") 3 else 0, asynchronous = 1) on.exit(.C("freeAllMemory", PACKAGE = "BoolNet")) # Call the C code result <- .Call("getAttractors_R",inputGenes,inputGenePositions, transitionFunctions,transitionFunctionPositions, as.integer(network$fixed), as.integer(convertedStartStates), as.integer(searchType), as.double(geneProbabilities), as.integer(randomChainLength), as.integer(avoidSelfLoops), as.integer(returnTable), maxAttractorLength, PACKAGE="BoolNet") if (is.null(result)) stop("An error occurred in external C code!") if (length(result$attractors) == 0) stop("getAttractors() was not able to identify any attractors! Please check the supplied parameters and restart!") if (length(network$genes) %% 32 == 0) numElementsPerEntry <- as.integer(length(network$genes) / 32) else numElementsPerEntry <- as.integer(length(network$genes) / 32 + 1) if (!is.null(result$stateInfo)) { result$stateInfo$table <- matrix(result$stateInfo$table,nrow=numElementsPerEntry) if (!is.null(result$stateInfo$initialStates)) result$stateInfo$initialStates <- matrix(result$stateInfo$initialStates,nrow=numElementsPerEntry) } for (i in seq_len(length(result$attractors))) { result$attractors[[i]]$involvedStates <- matrix(result$attractors[[i]]$involvedStates,nrow=numElementsPerEntry) if (canonical) # reorder states result$attractors[[i]]$involvedStates <- canonicalStateOrder(result$attractors[[i]]$involvedStates) if (!is.null(result$attractors[[i]]$initialStates)) result$attractors[[i]]$initialStates <- matrix(result$attractors[[i]]$initialStates,nrow=numElementsPerEntry) if (!is.null(result$attractors[[i]]$nextStates)) result$attractors[[i]]$nextStates <- matrix(result$attractors[[i]]$nextStates,nrow=numElementsPerEntry) if (result$attractors[[i]]$basinSize == 0) result$attractors[[i]]$basinSize <- NA } # order attractors according to their lengths attractorLengths <- sapply(result$attractors,function(attractor)ncol(attractor$involvedStates)) reordering <- order(attractorLengths) result$attractors <- result$attractors[reordering] if (!is.null(result$stateInfo)) { inverseOrder <- sapply(seq_along(reordering),function(x)which(reordering == x)) result$stateInfo$attractorAssignment <- inverseOrder[result$stateInfo$attractorAssignment] } # extend the resulting structure by additional information, and assign a class result$stateInfo$genes <- network$genes result$stateInfo$fixedGenes <- network$fixed if (!is.null(result$stateInfo$table)) class(result$stateInfo) <- "BooleanStateInfo" class(result) <- "AttractorInfo" return(result) } } ���������BoolNet/R/truthTableToSymbolic.R��������������������������������������������������������������������0000644�0001762�0000144�00000002541�13277247010�016270� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ # Convert a BooleanNetwork object # <network> to a SymbolicBooleanNetwork object truthTableToSymbolic <- function(network, generateDNFs=FALSE) { stopifnot(inherits(network, "BooleanNetwork")) res <- list(genes = network$genes, fixed = as.integer(network$fixed), interactions = lapply(network$interactions, function(int) { func <- tryCatch( { if (generateDNFs != FALSE) parseBooleanFunction(getDNF(int$func, network$genes[int$input], mode=generateDNFs), network$genes) else parseBooleanFunction(int$expression, network$genes) }, error = function(e) { parseBooleanFunction(getDNF(int$func, network$genes[int$input], mode=generateDNFs), network$genes) }) return(func) })) names(res$fixed) <- res$genes res$internalStructs <- .Call("constructNetworkTrees_R",res) res$timeDelays <- apply(sapply(res$interactions,maxTimeDelay,genes=res$genes),1,max) class(res) <- "SymbolicBooleanNetwork" return(res) } ���������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/R/perturbNetwork.R��������������������������������������������������������������������������0000644�0001762�0000144�00000022372�13277247010�015206� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Randomly perturb a supplied network. # <perturb="functions"> perturbs the functions associated with the genes directly. # <perturb="states"> perturbs a maximum of <numStates> states # in the transition table resulting from the functions. # <method="bitflip"> randomly flips up to <maxNumBits> in the functions or states. # <method="shuffle"> randomly permutes the bits in the functions or states. # If <simplify> is set, the perturbed network is simplified to remove irrelevant input functions. # If <excludeFixed> is set, fixed genes are excluded from the perturbations and stay as they are. perturbNetwork <- function(network,perturb=c("functions","transitions"),method=c("bitflip","shuffle"), simplify=(perturb[1]!="functions"),readableFunctions=FALSE,excludeFixed=TRUE, maxNumBits=1,numStates=max(1,2^length(network$genes)/100)) { stopifnot(inherits(network,"BooleanNetwork") | inherits(network,"ProbabilisticBooleanNetwork")) fixedGenes <- which(network$fixed != -1) if (length(perturb) == 1 && perturb == "states") { warning("perturb=\"states\" is deprecated. Use perturb=\"transitions\" instead!") perturb <- "transitions" } if (inherits(network,"BooleanNetwork")) # deterministic network { switch(match.arg(perturb,c("functions","transitions")), functions= switch(match.arg(method,c("bitflip","shuffle")), bitflip = { # choose the function to be perturbed if (length(fixedGenes) > 0 & excludeFixed) functionIdx <- sample((seq_along(network$interactions))[-fixedGenes],size=1) else functionIdx <- sample(seq_along(network$interactions),size=1) # choose the indices of the truth table to be flipped flipIndices <- sample(seq_along(network$interactions[[functionIdx]]$func), size=runif(n=1,min=1, max=min(maxNumBits, length(network$interactions[[functionIdx]]$func))), replace=FALSE) # flip the bits network$interactions[[functionIdx]]$func[flipIndices] <- as.integer(!network$interactions[[functionIdx]]$func[flipIndices]) network$interactions[[functionIdx]]$expression <- getInteractionString(readableFunctions, network$interactions[[functionIdx]]$func, network$genes[network$interactions[[functionIdx]]$input]) }, shuffle= { # choose the function to be perturbed if (length(fixedGenes) > 0 & excludeFixed) functionIdx <- sample((seq_along(network$interactions))[-fixedGenes],size=1) else functionIdx <- sample(seq_along(network$interactions),size=1) # draw a random permutation of bit positions flipIndices <- sample(seq_along(network$interactions[[functionIdx]]$func), size=length(network$interactions[[functionIdx]]$func), replace=FALSE) # permute the bits network$interactions[[functionIdx]]$func <- network$interactions[[functionIdx]]$func[flipIndices] network$interactions[[functionIdx]]$expression <- getInteractionString(readableFunctions, network$interactions[[functionIdx]]$func, network$genes[network$interactions[[functionIdx]]$input]) }, stop("'method' must be one of \"bitflip\",\"shuffle\"")), transitions = { # turn off gene fixing - otherwise reverse-engineering of the transition table is not possible oldFixed <- network$fixed network$fixed <- rep(-1,length(network$genes)) names(network$fixed) <- network$genes # calculate transition table table <- t(sapply(getAttractors(network)$stateInfo$table,dec2bin,length(network$genes))) # determine the states to be perturbed statesToChange <- sample(seq_len(nrow(table)),min(numStates,nrow(table)),replace=FALSE) lapply(statesToChange,function(state) { # choose the indices of the states that are allowed to be changed flipIndices <- seq_along(network$genes) if (length(fixedGenes) > 0 & excludeFixed) flipIndices <- flipIndices[-fixedGenes] switch(match.arg(method,c("bitflip","shuffle")), bitflip = { # choose the actual indices to be changed flipIndex <- sample(flipIndices, size=runif(n=1,min=1, max=min(maxNumBits, length(flipIndices))), replace=FALSE) # flip the bits at these positions table[state,flipIndex] <<- as.integer(!table[state,flipIndex]) }, shuffle = { # determine a permutation of the bit indices flipIndex <- sample(flipIndices, size=length(flipIndices), replace=FALSE) # permute the state table[state,] <<- as.integer(table[state,flipIndex]) }, stop("'method' must be one of \"bitflip\",\"shuffle\"") ) NULL}) # restore network by assigning the columns of the state table to the corresponding genes network$interactions <- apply(table,2,function(gene) { input = seq_along(network$genes) # encoding is reversed in the transition table input <- input[length(input):1] list(input=input, func=gene, expression= getInteractionString(readableFunctions, gene, network$genes[input])) }) # reactivate fixed genes network$fixed <- oldFixed }, stop("'perturb' must be one of \"functions\",\"transitions\"")) } else # probabilistic network { if (match.arg(perturb) != "functions") stop("In probabilistic Boolean networks, only perturb=functions is allowed!") switch(match.arg(method,c("bitflip","shuffle")), bitflip = { # choose the gene and the function to be perturbed if (length(fixedGenes) > 0 & excludeFixed) geneIdx <- sample((seq_along(network$interactions))[-fixedGenes],size=1) else geneIdx <- sample(seq_along(network$interactions),size=1) functionIdx <- sample(seq_along(network$interactions[[geneIdx]]),size=1) # choose the indices of the truth table to be flipped flipIndices <- sample(seq_along(network$interactions[[geneIdx]][[functionIdx]]$func), size=runif(n=1,min=1, max=min(maxNumBits, length(network$interactions[[geneIdx]][[functionIdx]]$func))), replace=FALSE) # flip the bits network$interactions[[geneIdx]][[functionIdx]]$func[flipIndices] <- as.integer(!network$interactions[[geneIdx]][[functionIdx]]$func[flipIndices]) network$interactions[[geneIdx]][[functionIdx]]$expression <- getInteractionString(readableFunctions, network$interactions[[geneIdx]][[functionIdx]]$func, network$genes[network$interactions[[geneIdx]][[functionIdx]]$input]) }, shuffle= { # choose the function to be perturbed if (length(fixedGenes) > 0 & excludeFixed) geneIdx <- sample((seq_along(network$interactions))[-fixedGenes],size=1) else geneIdx <- sample(seq_along(network$interactions),size=1) functionIdx <- sample(seq_along(network$interactions[[geneIdx]]),size=1) # draw a random permutation of bit positions flipIndices <- sample(seq_along(network$interactions[[geneIdx]][[functionIdx]]$func), size=length(network$interactions[[geneIdx]][[functionIdx]]$func), replace=FALSE) # permute the bits network$interactions[[geneIdx]][[functionIdx]]$func <- network$interactions[[geneIdx]][[functionIdx]]$func[flipIndices] network$interactions[[geneIdx]][[functionIdx]]$expression <- getInteractionString(readableFunctions, network$interactions[[geneIdx]][[functionIdx]]$func, network$genes[network$interactions[[geneIdx]][[functionIdx]]$input]) }, stop("'method' must be one of \"bitflip\",\"shuffle\"")) } # simplify the network if necessary if (simplify) network <- simplifyNetwork(network,readableFunctions) return(network) } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/R/getStateSummary.R�������������������������������������������������������������������������0000644�0001762�0000144�00000005442�13277247010�015306� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Summarize information on a state <state>, specified as a vector of # Boolean values. Information is taken from the state tables in <attractorInfo>. # The function outputs the corresponding attractor, the distance to the basin, # and the next state. getStateSummary <- function(attractorInfo,state) { stopifnot(inherits(attractorInfo,"AttractorInfo") | inherits(attractorInfo,"SymbolicSimulation")) if (inherits(attractorInfo,"SymbolicSimulation")) { if (is.null(attractorInfo$graph)) stop(paste("This SymbolicSimulation structure does not contain transition table information.", "Please re-run simulateSymbolicModel() with returnGraph=TRUE!")) geneCols <- setdiff(colnames(attractorInfo$graph),c("attractorAssignment","transitionsToAttractor")) numGenes <- (length(geneCols)) / 2 stateIndices <- apply(attractorInfo$graph[,seq_len(numGenes),drop=FALSE], 1, function(x) { all(as.integer(x) == as.integer(state)) }) return(attractorInfo$graph[stateIndices,,drop=FALSE]) } else { if (length(state) != length(attractorInfo$stateInfo$genes)) stop("State must have one element for each gene!") if (is.null(attractorInfo$stateInfo$table)) stop(paste("This AttractorInfo structure does not contain transition table information.", "Please re-run getAttractors() with a synchronous search and returnTable=TRUE!")) if (!is.null(attractorInfo$stateInfo$initialStates)) { stateNo <- bin2dec(state,length(state)) # search element in initial state index stateNo <- which(apply(attractorInfo$stateInfo$initialStates,2,function(x) { isTRUE(all.equal(x,stateNo)) })) } else { # find out the decimal number of the state which is used in the # transition table shortenedState <- state[attractorInfo$stateInfo$fixedGenes == -1] # simply use <stateNo>-th elements if initial states are not provided stateNo <- bin2dec(shortenedState,length(shortenedState)) + 1 } # coerce summary into a one-row dataframe, i.e. create a # TransitionTable object with one element res <- as.data.frame(as.list(unlist(list(state, dec2bin(attractorInfo$stateInfo$table[,stateNo], length(attractorInfo$stateInfo$genes)), attractorInfo$stateInfo$attractorAssignment[stateNo], attractorInfo$stateInfo$stepsToAttractor[stateNo])))) colnames(res) <- c(paste("initialState.",attractorInfo$stateInfo$genes,sep=""), paste("nextState.",attractorInfo$stateInfo$genes,sep=""), "attractorAssignment","transitionsToAttractor") class(res) <- c("TransitionTable","data.frame") return(res) } } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/R/print.TransitionTable.R�������������������������������������������������������������������0000644�0001762�0000144�00000006227�13277247010�016407� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Custom print function for class TransitionTable print.TransitionTable <- function(x, activeOnly=FALSE, ...) { geneCols <- setdiff(colnames(x),c("attractorAssignment","transitionsToAttractor")) numGenes <- (length(geneCols)) / 2 colIndices <- c(1,numGenes,numGenes + 1, 2*numGenes); if ("attractorAssignment" %in% colnames(x)) colIndices <- c(colIndices, 2*numGenes + 1) if ("transitionsToAttractor" %in% colnames(x)) colIndices <- c(colIndices, 2*numGenes + 2) genes <- sapply(colnames(x)[seq_len(numGenes)],function(n)strsplit(n,".",fixed=TRUE)[[1]][2]) if(activeOnly) { inputStates <- apply(x,1,function(row) { r <- paste(genes[which(row[colIndices[1]:colIndices[2]] == 1)],collapse=", ") if (r == "") r <- "--" r }) outputStates <- apply(x,1,function(row) { r <- paste(genes[which(row[colIndices[3]:colIndices[4]] == 1)],collapse=", ") if (r == "") r <- "--" r }) colWidth <- max(c(sapply(inputStates,nchar),sapply(outputStates,nchar))) align <- "left" } else { inputStates <- apply(x,1,function(row) paste(row[colIndices[1]:colIndices[2]],collapse="")) outputStates <- apply(x,1,function(row) paste(row[colIndices[3]:colIndices[4]],collapse="")) colWidth <- numGenes align <- "right" } binMatrix <- cbind(inputStates,outputStates) if ("attractorAssignment" %in% colnames(x)) binMatrix <- cbind(binMatrix, x[,colIndices[5]]) if ("transitionsToAttractor" %in% colnames(x)) binMatrix <- cbind(binMatrix, x[,colIndices[6]]) binMatrix <- as.data.frame(binMatrix) cat(format("State",width=max(7,colWidth),justify=align)," ", format("Next state",width=max(11,colWidth + 2),justify=align), if ("attractorAssignment" %in% colnames(x)) { format("Attr. basin",width=13,justify="right") } else "", if ("transitionsToAttractor" %in% colnames(x)) { format("# trans. to attr.",width=19,justify="right") } else "", "\n",sep="") apply(binMatrix,1,function(row) { # paste all states of input and output into one string, and put out all columns of the table in a # formatted way cat(format(row[1],width=max(7,colWidth),justify=align), " => ", format(row[2],width=max(11,colWidth + 2),justify=align), if ("attractorAssignment" %in% colnames(x)) { format(row[3],width=13,justify="right") } else "", if ("transitionsToAttractor" %in% colnames(x)) { format(row[4],width=19,justify="right") } else "", "\n",sep="") }) if (!activeOnly) cat("\nGenes are encoded in the following order: ", paste(genes,collapse=" "),"\n",sep="") return(invisible(x)) } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/R/generateRandomNKNetwork.R�����������������������������������������������������������������0000644�0001762�0000144�00000012312�13277247010�016700� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������generateRandomNKNetwork <- function(n,k,topology=c("fixed","homogeneous","scale_free"), linkage=c("uniform","lattice"), functionGeneration=c("uniform","biased"), validationFunction, failureIterations=10000, simplify=FALSE, noIrrelevantGenes=TRUE, readableFunctions=FALSE, d_lattice=1, zeroBias=0.5, gamma=2.5, approx_cutoff=100) { k_i_vec <- switch(match.arg(topology), fixed = { if (length(k) == n) k else if (length(k) == 1) rep(k,n) else stop("k must have 1 or n element(s)!") }, homogeneous = round(rpois(n,k)), scale_free = rzeta(n,k,gamma=gamma,approx_cutoff=approx_cutoff), stop("'topology' must be one of \"fixed\",\"homogeneous\"") ) k_i_vec[k_i_vec > n] <- n if ((zeroBias == 0 | zeroBias == 1) && noIrrelevantGenes && any(k_i_vec > 0)) stop("If setting 'zeroBias' to 0 or 1, you must set 'noIrrelevantGenes' to FALSE!") geneNames <- paste("Gene",seq_len(n),sep="") if (!missing(validationFunction) && !is.null(validationFunction)) validationFunction <- match.fun(validationFunction) else validationFunction <- NULL interactions <- mapply(function(i,k_i) { if (k_i == 0) { genes <- 0 func <- round(runif(min=0,max=1,n=1)) } else { table <- allcombn(2,k_i) - 1 genes <- switch(match.arg(linkage,c("uniform","lattice")), uniform = sample(seq_len(n),k_i,replace=FALSE), lattice = { region <- c(max(1,round(i - k_i*d_lattice)):max(1,i-1), min(n,i+1):min(n,round(i + k_i*d_lattice))) sample(region,k_i,replace=FALSE) }, stop("'linkage' must be one of \"uniform\",\"lattice\"")) containsIrrelevant <- TRUE validFunction <- TRUE counter <- 0 while((!validFunction) || containsIrrelevant) { tryCatch( { functionGeneration <- match.fun(functionGeneration) }, error = function(e){} ) if (is.function(functionGeneration)) func <- functionGeneration(input=genes) else func <- switch(match.arg(functionGeneration,c("uniform","biased")), uniform = round(runif(min=0,max=1,n=2^k_i)), biased = as.integer(runif(min=0,max=1,n=2^k_i) > zeroBias), stop("'functionGeneration' must be one of \"uniform\",\"biased\" or a function!")) if (noIrrelevantGenes) { dropGenes <- apply(table,2,function(gene) # determine all genes that have no influence on the results, # i.e. the result column is equal for 0 values and 1 values { (identical(func[gene==1], func[gene==0])) }) containsIrrelevant <- (sum(dropGenes) > 0) } else containsIrrelevant <- FALSE if (!is.null(validationFunction)) validFunction <- validationFunction(table, func) counter <- counter + 1 if (counter > failureIterations) stop(paste("Could not find a transition function matching the restrictions of", "\"validationFunction\" in", failureIterations, " runs.", "Change \"validationFunction\" or increase \"failureIterations\"!")) } } return(list(input=genes,func=func, expression=getInteractionString(readableFunctions, func,geneNames[genes]))) },seq_len(length(k_i_vec)),k_i_vec,SIMPLIFY=FALSE) fixed <- sapply(interactions,function(i) { if (i$input[1] == 0) i$func[1] else -1 }) names(fixed) <- geneNames names(interactions) <- geneNames net <- list(genes=geneNames,interactions=interactions,fixed=fixed) class(net) <- "BooleanNetwork" if (simplify) net <- simplifyNetwork(net,readableFunctions) return(net) } generateCanalyzing <- function(input) { k <- length(input) table <- allcombn(2, k) - 1 canalyzingInput <- sample(1:k,size=1) res <- round(runif(min = 0, max = 1, n = 2^k)) res[table[,canalyzingInput] == sample(c(0,1),size=1)] <- sample(c(0,1), size=1) return(res) } generateNestedCanalyzing <- function(input) { k <- length(input) table <- allcombn(2, k) - 1 remainingIndices <- 1:(2^k) res <- rep(sample(c(0,1), size=1),2^k) for (canalyzingInput in sample(1:k,size=k,replace=FALSE)) { newIndices <- which(table[remainingIndices,canalyzingInput] == sample(c(0,1),size=1)) res[remainingIndices[newIndices]] <- sample(c(0,1), size=1) remainingIndices <- setdiff(remainingIndices, remainingIndices[newIndices]) } return(res) } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/R/chooseNetwork.R���������������������������������������������������������������������������0000644�0001762�0000144�00000005626�13450617101�015001� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Creates a deterministic Boolean network from a Probabilistic Boolean network # by choosing the functions specified in <functionIndices> from the # network <probabilisticNetwork>. chooseNetwork <- function(probabilisticNetwork,functionIndices,dontCareValues=NULL,readableFunctions=FALSE) { stopifnot(inherits(probabilisticNetwork,"ProbabilisticBooleanNetwork") | inherits(probabilisticNetwork,"BooleanNetworkCollection")) if (length(functionIndices) != length(probabilisticNetwork$genes)) stop("Please provide a vector of function indices for each gene!") if (inherits(probabilisticNetwork,"ProbabilisticBooleanNetwork")) { interactions <- mapply(function(interaction,index) { list(input=interaction[[index]]$input, func=interaction[[index]]$func, expression=interaction[[index]]$expression) }, probabilisticNetwork$interactions,functionIndices,SIMPLIFY=FALSE) } else { if (!is.null(dontCareValues) && length(dontCareValues) == length(probabilisticNetwork$genes) && is.null(names(dontCareValues))) names(dontCareValues) <- probabilisticNetwork$genes interactions <- mapply(function(interaction,index,gene) { func <- interaction[[index]]$func dcPos <- which(func == -1) if (length(dcPos) > 0) { if (is.null(dontCareValues) || is.null(dontCareValues[[gene]])) stop(paste("No values for the \"don't care\" ", "entries were specified for gene \"", gene,"\"!",sep="")) if (!all(dontCareValues[[gene]] %in% c(0,1))) stop(paste("Invalid values for \"don't care\" entries specified for gene \"", gene,"\"!",sep="")) if (length(dontCareValues[[gene]]) != length(dcPos)) stop(paste("There must be exactly ",length(dcPos), " value(s) for \"don't care\" entries in the function for gene \"", gene,"\"!",sep="")) func[dcPos] <- dontCareValues[[gene]] expression <- getInteractionString(readableFunctions, func, probabilisticNetwork$genes[interaction[[index]]$input]) } else expression <- interaction[[index]]$expression list(input=interaction[[index]]$input, func=func, expression=expression) }, probabilisticNetwork$interactions, functionIndices, probabilisticNetwork$genes,SIMPLIFY=FALSE) } res <- list(genes=probabilisticNetwork$genes, interactions=interactions, fixed=probabilisticNetwork$fixed) class(res) <- "BooleanNetwork" return(res) } ����������������������������������������������������������������������������������������������������������BoolNet/vignettes/����������������������������������������������������������������������������������0000755�0001762�0000144�00000000000�13455114165�013631� 5����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/vignettes/BoolNet_package_vignette.bib������������������������������������������������������0000644�0001762�0000144�00000012130�13277247010�021224� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������@article{laehdesmaeki03, Address = {Hingham, MA, USA}, Author = {H. L\"{a}hdesm\"{a}ki and I. Shmulevich and O. Yli-Harja}, Journal = {Machine Learning}, Number = {1-2}, Pages = {147--167}, Publisher = {Kluwer Academic Publishers}, Title = {{On Learning Gene Regulatory Networks Under the Boolean Network Model}}, Volume = {52}, Year = {2003}} @article{akutsu00, Author = {Akutsu, T. and Miyano, S. and Kuhara, S.}, Journal = {Bioinformatics}, Number = {8}, Pages = {727--734}, Title = {{I}nferring qualitative relations in genetic networks and metabolic pathways}, Volume = {16}, Year = {2000}} @article{li04, Author = {F. Li and T. Long and Q. Ouyang and C. Tang}, Journal = {PNAS}, Pages = {4781-4786}, Title = {{The yeast cell-cycle network is robustly designed}}, Volume = 101, Year = 2004} @article{xiao07, Author = {Y. Xiao and E. R. Dougherty}, Journal = {Bioinformatics}, Number = {10}, Pages = {1265--1273}, Title = {{The impact of function perturbations in Boolean networks}}, Volume = {23}, Year = {2007}} @article{faure06, Author = {A. Faur{\'e} and A. Naldi and C. Chaouiya and D. Thieffry}, Journal = {Bioinformatics}, Number = {14}, Pages = {e124--e131}, Title = {{Dynamical analysis of a generic Boolean model for the control of the mammalian cell cycle}}, Volume = {22}, Year = {2006}} @book{kauffman93, Author = {S. A. Kauffman}, Publisher = {Oxford University Press}, Title = {{The Origins of Order: Self-Organization and Selection in Evolution}}, Year = {1993}} @article{kauffman69, Author = {S. A. Kauffman}, Journal = {Journal of Theoretical Biology}, Number = 3, Pages = {437--467}, Title = {{Metabolic Stability and Epigensis in Randomly Constructed Genetic Nets}}, Volume = 22, Year = 1969} @article{aldana03, Author = {M. Aldana}, Journal = {Physica D}, Number = {1}, Pages = {45--66}, Title = {{Boolean dynamics of networks with scale-free topology}}, Volume = {185}, Year = {2003}} @article{liang98, Author = {S. Liang and S. Fuhrman and R. Somogyi}, Journal = {Pacific Symposium on Biocomputing}, Pages = {18--29}, Title = {{REVEAL, a general reverse engineering algorithm for inference of genetic network architectures}}, Volume = 3, Year = {1998}} @inproceedings{aldana03_2, Author = {M. Aldana and S. Coppersmith and L. P. Kadanoff}, Booktitle = {{Perspectives and Problems in Nonlinear Science}}, Editor = {E. Kaplan and J. E. Marsden and K. R. Sreenivasan}, Publisher = {Springer}, Title = {{Boolean dynamics with random coupling}}, Year = 2003} @article{spellman98, Author = {P. T. Spellman and G. Sherlock and M. Q. Zhang and V. R. Iyer and K. Anders and M. B. Eisen and P. O. Brown and D. Botstein and B. Futcher}, Title = {{Comprehensive Identification of Cell Cycle-regulated Genes of the Yeast Saccharomyces cerevisiae by Microarray Hybridization}}, Journal = {Molecular Biology of the Cell}, Volume = 9, Number = 12, Pages = {3273--3297}, Year = 1998 } @article{kim07, Author = {S. Kim and J. Kim and K.-H. Cho}, Title = {{Inferring gene regulatory networks from temporal expression profiles under time-delay and noise}}, Journal = {Computational Biology and Chemistry}, Volume = 31, Pages = {239--245}, Year = 2007 } @article{shmulevich02, Author = {I. Shmulevich and E. R. Dougherty and S. Kim and W. Zhang}, Title = {{Probabilistic Boolean networks: a rule-based uncertainty model for gene-regulatory networks}}, Journal = {Bioinformatics}, Volume = 18, Number = 2, Pages = {261--274}, Year = 2002 } @article{longabaugh05, Author = {W. J. R. Longabaugh and E. H. Davidson and H. Bolouri}, Title = {{Computational representation of developmental genetic regulatory networks}}, Journal = {Developmental Biology}, Volume = 283, Number = 1, Pages = {1--16}, Year = 2005 } @article{batagelij98, Author = {V. Batagelij and A. Mrvar}, Journal = {Connections}, Number = 2, Pages = {47--57}, Title = {{Pajek -- Program for Large Network Analysis}}, Volume = 21, Year = 1998 } @book{cover91, Author = {T. M. Cover and J. A. Thomas}, Title = {Information Theory}, Publisher = {Wiley}, Address = {New York}, Year = {1991} } @article{kauffman04, Author = {S. Kauffman and C. Peterson and B. Samuelsson and C. Troein}, Title = {Genetic networks with canalyzing {B}oolean rules are always stable}, Journal = {PNAS}, Volume = {101}, Number = {49}, Pages = {17102–-17107}, Year = {2004} } @article{maucher11, author = {M. Maucher and B. Kracher and M. K\"uhl and H. A. Kestler}, title = {Inferring {B}oolean network structure via correlation}, journal = {Bioinformatics}, volume = {27}, number = {11}, pages = {1529--1536}, year = {2011} } @article{dubrova11, author = {E. Dubrova and M. Teslenko}, title = {A {SAT}-based algorithm for finding attractors in synchronous Boolean networks}, journal = {IEEE/ACM Transactions on Computational Biology and Bioinformatics}, volume = {8}, number = {5}, pages = {1393--1399}, year = {2011} } @article{biere08, author = {A. Biere}, title = {{PicoSAT Essentials}}, journal = {Journal on Satisfiability, Boolean Modeling and Computation}, volume = 4, pages = {75--97}, year = 2008} } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/vignettes/BoolNet_package_vignette.Snw.Rnw��������������������������������������������������0000644�0001762�0000144�00000267346�13451415104�022024� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\documentclass[a4paper]{article} \SweaveOpts{keep.source=TRUE} %\VignetteIndexEntry{Detailed introduction to all major features of BoolNet} %\usepackage{a4wide} \usepackage{graphicx} \usepackage{amsmath} \usepackage{hyperref} \usepackage{listings} \lstset{breaklines=true, breakautoindent=false, breakindent=0pt, columns=fullflexible,keepspaces=true, basicstyle=\small\ttfamily} \setlength{\parindent}{0em} \setlength{\parskip}{0.2em} \title{BoolNet package vignette} \author{Christoph M\"ussel, Martin Hopfensitz, Hans A. Kestler} \widowpenalty=10000 \clubpenalty=10000 \hyphenation{me-thods pro-per-ties re-pre-sen-ta-tion} \begin{document} \SweaveOpts{concordance=TRUE} \maketitle \tableofcontents \clearpage \section{Introduction} \texttt{BoolNet} is an R package that provides tools for assembling, analyzing and visualizing synchronous and asynchronous Boolean networks as well as probabilistic Boolean networks. This document gives an introduction to the usage of the software and includes examples for use cases. \texttt{BoolNet} supports four types of networks: \begin{description} \item[Synchronous Boolean networks]{ consist of a set of Boolean variables \[ X = \left\{X_1, \ldots, X_n \right\} \] and a set of transition functions \[ F=\left\{ f_{1},\ldots,f_{n}\right\}, \] one for each variable. These transition functions map an input of the Boolean variables in $X$ to a Boolean value ($0$ or $1$). We call a Boolean vector $\mathbf{x}(t) = \left(x_1(t), \ldots, x_n(t) \right)$ the {\em state} of the network at time $t$. Then, the next state of the network $\mathbf{x}(t)$ is calculated by applying {\em all} transition functions $f_i(\mathbf{x}(t-1))$. In a biological context, genes can be modeled as Boolean variables ({\em active/expressed} or {\em inactive/not expressed}), and the transition functions model the dependencies among these genes. In the synchronous model, the assumption is that all genes are updated at the same time. This simplification facilitates the analysis of the networks.} \item[Asynchronous Boolean networks]{ have the same structure as synchronous Boolean networks. Yet, at each point of time $t$, only {\em one} of the transition functions $f_i \in F$ is chosen at random, and the corresponding Boolean variable is updated. This corresponds to the assumption that in a genetic network, gene expression levels are likely to change at different points of time. In the most common model, the gene to be updated is chosen uniformly among all genes. Moreover, \texttt{BoolNet} supports specifying non-uniform update probabilities for the genes.} \item[Probabilistic Boolean networks (PBN)]{ allow for specifying more than one transition function per variable/gene. Each of these functions has a probability to be chosen, where the probabilities of all functions for one variable sum up to 1. Formally \[ F=\left\{\left\{\left(f_{11}, p_{11}\right), \ldots, \left(f_{1k_1}, p_{1k_1}\right)\right\}, \ldots, \left\{\left(f_{n1}, p_{n1}\right), \ldots, \left(f_{nk_n}, p_{nk_n}\right)\right\}\right\} \] where $k_i$ is the number of alternative transition functions for variable $i$, and $p_{ij}$ is the probability that function $j$ is chosen for variable $i$. A state transition is performed by selecting one function for each gene based on the probabilities and applying the chosen functions synchronously.} \item[Temporal Boolean networks]{ are Boolean networks that incorporate temporal predicates and discrete time delays. Here, the next state $x(t)$ may not only depend on $x(t-1)$, but can depend on any predecessor state $x(t - \Delta), \Delta \in \{1, 2, \ldots\}$. Furthermore, $x(t)$ may also directly depend on the time step $t$ itself. } \end{description} In \texttt{BoolNet}, there are different structure classes representing these network types: \begin{description} \item[\emph{BooleanNetwork} objects]{ contain synchronous and asynchronous Boolean networks. Here, the transition functions are internally represented as truth tables.} \item[\emph{ProbabilisticBooleanNetwork} objects]{ encode Probabilistic Boolean networks. They use a truth table representation as well.} \item[\emph{SymbolicBooleanNetwork} objects]{ represent synchronous and temporal Boolean networks. They encode Boolean functions in a symbolic form, i.e. as expression trees.} \end{description} As we have seen, the networks are represented in two different forms: The truth table representation, which basically maps inputs to the corresponding output values, is usually the most efficient representation for synchronous, asynchronous and probabilistic networks and uses a very fast simulator. However, this representation grows exponentially with the number of inputs and is therefore inappropriate for networks with a high number of inputs. This is particularly the case for temporal networks, where each unique time delay for a gene encodes an input. Hence, temporal networks are represented by directly encoding the corresponding Boolean expressions and use a different simulator. As synchronous Boolean networks are a special case of temporal networks (with all time delays being 1), these networks can also be represented as \emph{SymbolicBooleanNetwork} objects. The package provides several methods of constructing networks: Networks can be loaded from files in which human experts describe the dependencies between the genes. Furthermore, they can be reconstructed from time series of gene expression measurements. It is also possible to generate random networks. This can be helpful for the identification of distinct properties of biological networks by comparison to random structures. The different methods of assembling networks are described in Section~\ref{sec:assemblingnetworks}. In Section~\ref{sec:networkanalysis}, tools for the analysis and visualization of network properties are introduced. For synchronous, asynchronous and temporal Boolean networks, the most important tool is the identification of attractors. Attractors are cycles of states and are assumed to be associated with the stable states of cell function. Another possibility of identifying relevant states is the included Markov chain simulation. This method is particularly suited for probabilistic networks and calculates the probability that a state is reached after a certain number of iterations. To test the robustness of structural properties of the networks to noise and mismeasurements, the software also includes extensive support for perturbing networks. In this way, it is possible to test these properties in noisy copies of a biological network. In Section~\ref{sec:importexport}, the interaction of \texttt{BoolNet} with related software is described. In particular, the import from and export to SBML is discussed. Also, the necessary steps to import networks import networks from BioTapestry and to export networks to Pajek are outlined. For the examples in the following sections, we assume that the \texttt{BoolNet} package has been properly installed into the R environment. This can be done by typing <<eval=FALSE>>= install.packages("BoolNet") @ into the R console or by the corresponding menu entries in an R GUI. For some of the plots, the \texttt{igraph} package is required and must be installed in your R environment as well. This is analogous to installing \texttt{BoolNet}. For the BioTapestry and SBML import, the \texttt{XML} package must be installed. After installation, the \texttt{BoolNet} package can be loaded via <<>>= library(BoolNet) @ \section{Assembling networks}\label{sec:assemblingnetworks} \subsection{Assembling a network from expert knowledge} A major advantage of Boolean networks is the fact that natural-language statements can easily be transferred into this representation. This allows researchers for building Boolean networks entirely from expert knowledge, for example by collecting statements on gene dependencies from literature and expressing them as Boolean rules. \texttt{BoolNet} is able to read in networks consisting of such rule sets in a standardized text file format. In such a file, each line consists of a target gene and an update rule, usually separated by a comma. Optionally, it is also possible to add a probability for the rule if the file describes a probabilistic network. The first line of such a file is a header \begin{samepage} \begin{verbatim} targets, factors \end{verbatim} or \begin{verbatim} targets, factors, probabilities \end{verbatim} \end{samepage} To illustrate the process of transforming natural-language statements into Boolean rules, we take a look at the mammalian cell cycle network introduced by Faur\'e et al. \cite{faure06}. In Table 1 of this paper, the authors list natural-language statements of gene dependencies and the corresponding Boolean expressions. The following rules are taken from this table. For gene CycD, Faur\'e et al. state: \begin{quote} \textit{CycD is an input, considered as constant.} \end{quote} Transforming this into a Boolean rule is rather simple: CycD does not change its value, which means that its value after a transition only depends on its previous value. Thus, the transition rule is \begin{verbatim} CycD, CycD \end{verbatim} Gene Rb has a more complex description: \begin{quote} \textit{Rb is expressed in the absence of the cyclins, which inhibit it by phosphorylation [...]; it can be expressed in the presence of CycE or CycA if their inhibitory activity is blocked by p27.} \end{quote} As a general rule, inhibition can be represented by a Boolean negation. In the \texttt{BoolNet} file format, a negation is expressed by the \texttt{!} character. The referenced cyclins comprise the genes CycA, CycB, CycD, and CycE. If {\em all} these genes are absent, Rb is expressed -- i.e. if CycA is not expressed {\em and} CycB is not expressed {\em and} CycD is not expressed {\em and} CycE is not expressed. A logical AND is embodied by the \texttt{\&} character. Consequently, the first part of the rule is \begin{verbatim} ! CycA & ! CycB & ! CycD & ! CycE \end{verbatim} In combination with the above statement, the fact that Rb can be expressed in the presence of CycE and CycA if p27 is active means that CycB and CycD must not be active. Thus, the second part of the rule is \begin{verbatim} p27 & ! CycB & ! CycD \end{verbatim} This statement is an exception (or alternative) to the first statement; this can be expressed as a logical OR, for which the \texttt{|} character is used. The complete rule for gene Rb is thus \begin{verbatim} Rb, (! CycA & ! CycB & ! CycD & ! CycE) | (p27 & ! CycB & ! CycD) \end{verbatim} After processing all genes in the table in this way, we get the following network description: \begin{samepage} \begin{footnotesize} \begin{verbatim} targets, factors CycD, CycD Rb, (! CycA & ! CycB & ! CycD & ! CycE) | (p27 & ! CycB & ! CycD) E2F, (! Rb & ! CycA & ! CycB) | (p27 & ! Rb & ! CycB) CycE, (E2F & ! Rb) CycA, (E2F & ! Rb & ! Cdc20 & ! (Cdh1 & UbcH10)) | (CycA & ! Rb & ! Cdc20 & ! (Cdh1 & UbcH10)) p27, (! CycD & ! CycE & ! CycA & ! CycB) | (p27 & ! (CycE & CycA) & ! CycB &! CycD) Cdc20, CycB Cdh1,(! CycA & ! CycB) | (Cdc20) | (p27 & ! CycB) UbcH10, ! Cdh1 | (Cdh1 & UbcH10 & (Cdc20 | CycA | CycB)) CycB, ! Cdc20 & ! Cdh1 \end{verbatim} \end{footnotesize} \end{samepage} Now save this description to a file ``cellcycle.txt'' in your R working directory. The network can be loaded via <<eval=FALSE>>= cellcycle <- loadNetwork("cellcycle.txt") @ The result is an object of class \emph{BooleanNetwork} containing a truth table representation of the network. The same network is also included in \texttt{BoolNet} as an example and can be accessed via <<>>= data(cellcycle) @ \texttt{BoolNet} also provides several convenience operators that can be used to express complex Boolean functions in a compact way, e.g. \begin{itemize} \item \texttt{maj(a, b, ...)} is 1 if the majority of its operands are 1. Similarly, \texttt{sumgt(a, b, ..., N)} is 1 if more than $N$ operands are 1, \texttt{sumlt(a, b, ..., N)} is 1 if less than $N$ operands are~1, and \texttt{sumis(a, b, ..., N)} is 1 if exactly $N$ operands are 1. \item \texttt{all(a, b, ...)} is 1 if all its operands are 1 (i.e. a logical AND), and \texttt{any(a, b, ...)} is~1 if at least one of its operands is 1 (i.e. a logical OR). \end{itemize} The cell cycle network is a classical Boolean network, where each transition function only depends on the previous state of the network. E.g., \verb+CycB, ! Cdc20 & ! Cdh1+ can be written formally as $CycB(t) = \neg Cdc20(t-1) \wedge \neg Cdh1(t-1)$. As already discussed before, \texttt{BoolNet} also incorporates several temporal extensions. For example, a transition function can also depend on the states of genes at earlier time points: \begin{verbatim} a, b[-3] & b[-2] & b \end{verbatim} is 1 if b has been active in the previous three time steps. The operators described above can also incorporate time ranges. The previous statement can be written in a more compact way using the \texttt{all} operator: \begin{verbatim} a, all[d=-3..-1](b[d]) \end{verbatim} This defines a time delay variable \texttt{d} that can be used for time specifications inside the operator. It can also be used in arithmetic operations. E.g., \begin{verbatim} a, all[d=-3..-1](b[d] & c[d-1]) \end{verbatim} specifies that a is active if b has been active in the previous three time steps and c has been active at time $t-4$, $t-3$ and $t-2$. Apart from relative time specifications, the \texttt{BoolNet} network language also incorporates predicates that depend on the absolute time, i.e. the number of time steps that have elapsed since the initial state. \begin{samepage} For example, \begin{verbatim} a, timeis(3) \end{verbatim} specifies that \texttt{a} is active at time step 3 and inactive at all other time steps. Similarly, the predicates \texttt{timelt} and \texttt{timegt} evaluate to 1 before and after the specified time point respectively. \end{samepage} As the above examples do not cover all possibilities of the network description language, a full language specification is provided in Section~\ref{sec:appendix}. For temporal networks, \texttt{BoolNet} uses a special symbolic simulator that represents the functions as expression trees, whereas the standard simulator is based on a truth table representation. These simulators are discussed in Section~\ref{sec:networkanalysis}. As synchronous Boolean networks are a special case of temporal networks, they can also be simulated with the symbolic simulator. When a network is loaded from a file using \texttt{loadNetwork()}, the user can specify the parameter \texttt{symbolic=TRUE} to load it in form of a \emph{SymbolicBooleanNetwork} object instead of a \emph{BooleanNetwork} object. The same parameter is also available for the import functions discussed in Section~\ref{sec:importexport}. Temporal networks can only be loaded with \texttt{symbolic=TRUE}, as \texttt{BoolNet} cannot represent them as truth tables. \begin{sloppypar} As many network generation and modification routines (such as random network generation and network reconstruction that are discussed in the following sections) internally use the truth table representation, there are conversion routines \texttt{truthTableToSymbolic()} and \texttt{symbolicToTruthTable()} that convert synchronous Boolean networks of class \emph{BooleanNetwork} in a truth table representation to networks of class \emph{SymbolicBooleanNetwork} in a symbolic representation and vice versa. For more details, please refer to the manual. \end{sloppypar} \subsection{Reconstructing a network from time series} An entirely different approach of assembling a network is to infer rules from series of expression measurements of the involved genes over time. For example, microarray experiments can be conducted at different points of time to cover the expression levels of different cell states. To reconstruct networks from such data, \texttt{BoolNet} includes two reconstruction algorithms for synchronous Boolean networks, Best-Fit Extension~\cite{laehdesmaeki03} and REVEAL \cite{liang98}. REVEAL requires the inferred functions to match the input time series perfectly, hence it is not always able to reconstruct networks in the presence of noisy and inconsistent measurements. Best-Fit Extension retrieves a set of functions with minimum error on the input and is thus suited for noisy data. In the following, we introduce a tool chain for the reconstruction of a Probabilistic Boolean Network from time series using Best-Fit extension. Microarray measurements are usually represented as matrices of real-valued numbers which, for example, quantify the expression levels of genes. \texttt{BoolNet} includes a real-valued time series of gene measurements from a project to analyze the yeast cell cycle \cite{spellman98} which can be loaded using <<>>= data(yeastTimeSeries) @ This data contains four preselected genes and a series of 14 measurements for each of these genes. \begin{sloppypar} In a first step, the real-valued dataset has to be converted to binary data as required by the reconstruction algorithm. \texttt{BoolNet} offers several binarization algorithms in the function \texttt{binarizeTimeSeries()}. We here employ the default method which is based on $k$-means clustering (with $k=2$ for active and inactive): \end{sloppypar} <<>>= binSeries <- binarizeTimeSeries(yeastTimeSeries) @ The returned structure in \texttt{binSeries} has an element \texttt{\$binarizedMeasurements} containing the binary time series, and, depending on the chosen binarization method, some other elements describing parameters of the binarization. To reconstruct the network from this data, we call the Best-Fit Extension algorithm: <<>>= net <- reconstructNetwork(binSeries$binarizedMeasurements, method="bestfit", maxK=4) @ Here, \texttt{maxK} is the maximum number of input genes for a gene examined by the algorithm. The higher this number, the higher is the runtime and memory consumption of the reconstruction. \begin{samepage} We can now take a look at the network using <<>>= net @ \end{samepage} \begin{sloppypar} The dependencies among the genes in the network can be visualized using the \texttt{plotNetworkWiring()} function. In this graph, each gene corresponds to a vertex, and the inputs of transition functions correspond to edges. \end{sloppypar} <<echo=FALSE,results=hide>>= pdf("wiring1.pdf") par(mar = c(1, 1, 1, 1)) set.seed(333) plotNetworkWiring(net) dev.off() @ <<eval=FALSE>>= plotNetworkWiring(net) @ plots a graph similar to that at the top of Figure~\ref{fig:wiring}. To use this function, you must install the \texttt{igraph} package. \begin{figure}[p] \centering \includegraphics[width=0.5\linewidth]{wiring1} \includegraphics[width=0.5\linewidth]{wiring2} \caption{The wiring graph of the reconstructed network without prior knowledge (top) and with the inclusion of prior knowledge (bottom). Each node of the graph represents one gene, and each arrow represents a gene dependency.} \label{fig:wiring} \end{figure} A network that involved the same genes was examined by Kim et al. \cite{kim07}. When comparing the wiring graph of our reconstructed network with the reference network presented in Figure~2 of this paper, one observes a very high similarity between the two networks. However, the reconstructed network comprises too many links for the gene Sic1: The reference network does not contain a self-regulation of Sic1 or regulation of Sic1 by Fkh2. If it is known in advance that these regulations are not plausible, such prior knowledge can be supplied to the reconstruction algorithm: <<>>= net <- reconstructNetwork(binSeries$binarizedMeasurements, method="bestfit", maxK=4, excludedDependencies = list("Sic1" = c("Sic1", "Fkh2"))) @ <<echo=FALSE,results=hide>>= pdf("wiring2.pdf") par(mar = c(1, 1, 1, 1)) set.seed(442) plotNetworkWiring(net) dev.off() @ The wiring of the reconstruction with prior knowledge is shown at the bottom of Figure~\ref{fig:wiring}. We can see that the two false links are now eliminated. Similar to \texttt{excludedDependencies}, there is also a parameter \texttt{requiredDependencies} that specifies dependencies that must be included in the network. When \texttt{reconstructNetwork()} discovers multiple functions for a gene with the minimum error on the input data, it includes all of these functions as alternative functions with equal probability. Consequently, the function returns a \texttt{ProbabilisticBooleanNetwork} structure. If you would like to obtain a \texttt{BooleanNetwork} object with only one function per gene from a probabilistic network, you can extract such a network by telling the software which of the functions you would like to use. This can be done by specifying the indices of the functions to extract: <<>>= net <- reconstructNetwork(binSeries$binarizedMeasurements, method="bestfit", maxK=4) functionIndices <- c(1,2,3,2) #select function index for each regulatory component dontCareDefaults <- lapply(seq_along(net$interactions), function(idx) rep(F, sum(net$interactions[[idx]][[functionIndices[idx]]]$func == -1))) #determine number of don't care values for each selected function and set them to 0 names(dontCareDefaults) <- net$genes singleNet <- chooseNetwork(net, functionIndices, dontCareValues = dontCareDefaults) @ In case of don't care values in reconstructed functions, it is possible to set them to 0 or 1 per default. The result is a Boolean network that is created by extracting the first function of gene Fkh2, the second function of genes Swi5 and Clb1, and the third function of gene Sic1 from the above probabilistic network: <<>>= singleNet @ \begin{sloppypar} \texttt{BoolNet} also supports the generation of artificial time series from existing networks: The \texttt{generateTimeSeries()} function generates a set of time series from a network using random start states and optionally adds Gaussian noise. \end{sloppypar} <<echo=FALSE,results=hide>>= set.seed(3176) @ <<>>= series <- generateTimeSeries(cellcycle, numSeries=100, numMeasurements=10, noiseLevel=0.1) @ generates a list of 100 time series by calculating 10 consecutive transitions from 100 randomly chosen network states in the mammalian cell cycle network. The series are subject to Gaussian noise with a standard deviation of 0.1, such that the result is a list of real-valued matrices. We can now binarize these simulated measurements and try to reconstruct the original network: <<>>= binSeries <- binarizeTimeSeries(series, method="kmeans") net <- reconstructNetwork(binSeries$binarizedMeasurements, method="bestfit") net @ Obviously, the number of generated time series is still to small to reconstruct the network unambiguously. However, the result comes close to the original network. We see that the functions of the network are not fully specified: At some positions, there are asterisks (\texttt{*}) denoting a \emph{don't care} value. This means that functions with a 0 and a 1 at this position match the time series equally well. That is, a partially defined function with $m$ asterisks corresponds to $2^m$ fully defined Boolean functions. It is also possible to generate these fully defined functions instead of the partially defined function by setting the parameter \texttt{returnPBN} to true (which was the behaviour prior to \texttt{BoolNet} version 2.0). For many \emph{don't care} values, this may consume a high amount of memory and computation time. \texttt{generateTimeSeries()} can also generate time series with artificial knock-outs and overexpressions: <<echo=FALSE,results=hide>>= set.seed(4463) @ <<>>= series <- generateTimeSeries(cellcycle, numSeries=10, numMeasurements=10, perturbations=1, noiseLevel=0.1) @ specifies that each generated time series is generated from a network where one randomly selected gene is artificially knocked down (constantly 0) or overexpressed (constantly 1). These perturbations are returned in an additional element \texttt{perturbations}. \begin{samepage} <<<>>= series$perturbations @ \end{samepage} Here, each column corresponds to the perturbations applied in one series. A value of 1 denotes an overexpression, a value of 0 denotes a knock-out, and an N/A value means that no perturbation was applied to this gene. The \texttt{reconstructNetwork()} function also supports the reconstruction from such perturbation experiments if it is known which genes were perturbed. First, we store the series and the perturbation matrix in separate variables and binarize the data as before: <<>>= perturbations <- series$perturbations series$perturbations <- NULL binSeries <- binarizeTimeSeries(series, method="kmeans") @ Now, we can reconstruct the network by specifying the \texttt{perturbations} parameter: <<>>= net <- reconstructNetwork(binSeries$binarizedMeasurements, method="bestfit", perturbations=perturbations) net @ As we generated only 10 series in this case, the reconstructed network is much more incomplete than in the previous reconstruction. In biological settings, perturbation experiments are probably one of the most frequent ways of exploring the behaviour of a regulatory network, as it is much easier to obtain various different responses by applying perturbations than by just measuring the wild type behaviour. \subsection{Creating random networks} To study structural properties of Boolean networks and to determine the specific properties of biological networks in comparison to arbitrary networks, it is often desirable to generate artificial networks. \texttt{BoolNet} comprises a facility for the generation of random $N$-$K$ networks \cite{kauffman69, kauffman93}. In the standard $N$-$K$ networks, $N$ is the total number of genes, and $K$ is the number of input genes for each gene transition function. Such a network can be generated using <<>>= net <- generateRandomNKNetwork(n=10, k=3) @ This creates a network with 10 genes, each of which has a transition function that depends on 3 genes and whose output is generated uniformly at random. Similarly, one can also specify different numbers of input genes for each gene: <<>>= net <- generateRandomNKNetwork(n=10, k=c(1,2,3,1,3,2,3,2,1,1)) @ \texttt{BoolNet} does not only support this standard case, but allows for different methods of choosing the numbers of input genes (parameter \texttt{topology}), the input genes themselves (parameter \texttt{linkage}), and the transition functions (parameter \texttt{functionGeneration}). In the following, some examples are presented. The command <<>>= net <- generateRandomNKNetwork(n=20, k=20, topology="scale_free") @ determines the numbers of input genes by drawing values from the scale-free Zeta distribution \cite{aldana03}. According to this distribution, most transition functions will have a small number of input genes, but a few transition functions may depend on a high number of genes. The shape of the Zeta distribution can be customized using an additional parameter \texttt{gamma}, which potentially increases the number of input genes when chosen small and vice versa. <<>>= net <- generateRandomNKNetwork(n=10, k=3, linkage="lattice") @ creates a network in which the transition functions of the genes depend on a choice of genes with adjacent indices \cite{aldana03_2}. This leads to networks with highly interdependent genes. It is also possible to influence the truth tables of the functions in several ways. The parameter \texttt{zeroBias} changes the ratio of 1 and 0 returned by the functions: <<>>= net <- generateRandomNKNetwork(n=10, k=3, functionGeneration="biased", zeroBias=0.75) @ generates a network in which the outcome of a transition function is 0 for around 75\% of the inputs. A more intricate way of influencing the function generation is the specification of generation functions. Generation functions explicitly generate functions according to a specific function class. \emph{Canalyzing functions} are assumed to occur frequently in biological systems~\cite{kauffman04}. A canalyzing function has the property that one input can determine the output value on its own, i.e. if this input is either active or inactive, the output of the function is always the same. \emph{Nested canalyzing functions} are a recursive definition of canalyzing functions, where the part of the function that does not depend on the canalyzing input is a canalyzing function for another input. Such functions can be generated using the built-in generation functions \texttt{generateCanalyzing()} and \texttt{generateNestedCanalyzing()}: <<>>= net1 <- generateRandomNKNetwork(n=10, k=3, functionGeneration=generateCanalyzing, zeroBias=0.75) net2 <- generateRandomNKNetwork(n=10, k=3, functionGeneration=generateNestedCanalyzing, zeroBias=0.75) @ It is also possible to define own generation functions: A generation function receives a vector \texttt{input} of input gene indices as a parameter and returns a truth table result column with \verb+2^length(input)+ values representing the function. If no explicit generation scheme is known for the function class of interest, validation functions can be used instead of generation functions. Validation functions verify whether randomly generated functions belong to a specific function class and reject invalid functions. Naturally, this is much less efficient than generating appropriate functions directly. An example is the generation of monotone functions, which are also thought to be biologically plausible. These function account for the assumption that a transcription factor usually either activates or inhibits a specific target gene, but does not change the type of regulation depending on other factors~\cite{maucher11}. We can specify a simple validation function that checks whether a Boolean function is monotone: \begin{samepage} <<>>= isMonotone <- function(input, func) { for (i in seq_len(ncol(input))) # check each input gene { groupResults <- split(func, input[,i]) if (any(groupResults[[1]] < groupResults[[2]]) && any(groupResults[[1]] > groupResults[[2]])) # the function is not monotone return(FALSE) } return(TRUE) } @ \end{samepage} \begin{sloppypar} Here, \texttt{input} is a matrix containing the input part of the transition table, and \texttt{func} is the output of the Boolean function. In a monotone function, the values of the target may only change in one direction when switching one input. Hence, a function for which switching the value of an input gene sometimes switches the target from active to inactive, but also sometimes switches it from inactive to active is not monotone. This is validated by comparing the two groups of transition table entries for which the current input is active and inactive respectively. If a validation function is supplied to \texttt{generateRandomNKNetwork()}, the generator generates Boolean functions until either the validation function returns \texttt{TRUE} or the maximum number of iterations (specified by the parameter \texttt{failureIterations}) is reached, in which case it fails. \end{sloppypar} <<>>= net <- generateRandomNKNetwork(n=10, k=3, validationFunction="isMonotone", failureIterations=1000) @ creates a network with 10 genes in which all functions have 3 inputs, of which at least one is canalyzing. By default, \texttt{generateRandomNKNetwork()} creates functions that cannot be simplified, i.e. that do not contain any genes that are irrelevant for the outcome of the function. If desired, this behaviour can be changed by setting \texttt{noIrrelevantGenes} to \texttt{FALSE}. The presented parameters can be combined, and there are further options and parameters, so that a broad variety of networks with different structural properties can be generated. For a full reference of the possible parameters, please refer to the manual. \subsection{Knock-out and overexpression of genes} \texttt{BoolNet} allows for temporarily knocking out and overexpressing genes in a network without touching the transition functions. This means that genes can be set to a fixed value, and in any calculation on the network, this fixed value is taken instead of the value of the corresponding transition function. Knocked-out and overexpressed genes speed up the analysis of the network, as they can be ignored in many calculations. For example, to knock out CycD in the mammalian cell cycle network, we call <<>>= data(cellcycle) knockedOut <- fixGenes(cellcycle, "CycD", 0) @ or alternatively use the gene index <<>>= knockedOut <- fixGenes(cellcycle, 1, 0) @ This sets the gene constantly to 0. To over-express the gene (i.e. to fix it to 1), the corresponding call is <<>>= overExpressed <- fixGenes(cellcycle, "CycD", 1) @ The command <<>>= originalNet <- fixGenes(knockedOut, "CycD", -1) @ reactivates the gene (for both knock and overexpression) and resets the network to its original state. The function also accepts multiple genes in a single call, such as <<>>= newNet <- fixGenes(cellcycle, c("CycD","CycE"), c(0,1)) @ which knocks out CycD and overexpresses CycE. \section{Network analysis}\label{sec:networkanalysis} \subsection{Simulation of state transitions} To simulate a state transition and identify successor states of a given state, \texttt{BoolNet} includes the function \texttt{stateTransition()}. The function supports transitions for all four types of networks. The following code performs a synchronous state transition for the state in which all genes are set to 1 on the mammalian cell cycle network: <<>>= data(cellcycle) stateTransition(cellcycle, rep(1,10)) @ To calculate all state transitions in a synchronous network until an attractor is reached, you can call <<>>= path <- getPathToAttractor(cellcycle, rep(0,10)) path @ The returned matrix consists of the subsequent states until an attractor is reached. Depending on the optional parameter \texttt{includeAttractorStates}, the sequence comprises all attractor states, only the first attractor state or none of the attractor states. A sequence can be visualized by plotting a table of state changes: <<echo=FALSE,results=hide>>= pdf("sequence.pdf") par(mar = c(1, 4, 2, 1)) plotSequence(sequence=path) dev.off() @ <<eval=FALSE>>= plotSequence(sequence=path) @ \begin{figure}[t] \centering \includegraphics[width=0.6\linewidth]{sequence} \caption{Visualization of a sequence of states in the mammalian cell cycle network. The columns of the table represent consecutive states of the time series. The last state is the steady-state attractor of the network.} \label{fig:sequence} \end{figure} The result is depicted in Figure~\ref{fig:sequence}. \texttt{plotSequence()} also includes a shortcut that calculates the sequence directly if a network and a start state are supplied. It also provides an alternative way of visualizing the sequence as a state transition by setting \texttt{mode="graph"}. The function <<eval=FALSE>>= sequenceToLaTeX(sequence=path, file="sequence.tex") @ creates a \LaTeX\ table similar to \texttt{plotSequence()} function document. In many cases, start states are defined by a set of active genes. Instead of supplying a full state vector, one can also supply only these active genes using the \texttt{generateState()} function. <<>>= startState <- generateState(cellcycle, specs=c("CycD"=1,"CycA"=1)) stateTransition(cellcycle,startState) @ \begin{sloppypar} calculates a state transition starting from a state where only the genes \emph{CycD} and \emph{CycA} are active, while all other genes are inactive (which is controlled by the \texttt{default} parameter of \texttt{generateState()}). \end{sloppypar} For temporal Boolean networks (objects of class \emph{SymbolicBooleanNetworks}), the above functions can be utilized mostly in the same way. We demonstrate this using a small temporal network example of the IGF (Insulin-like growth receptor) pathway that is included in the package and can be loaded via <<>>= data(igf) @ The model illustrates the activation and feedback inhibition of the PI3K-Akt-mTOR signalling cascade through IGF and IRS. A state transition from the initial state in which the trigger of the pathway -- IGF -- is active, can be performed using <<>>= startState <- generateState(igf, specs=c("IGF"=1)) stateTransition(igf, startState) @ The IGF network incorporates time delays of up to 3. Therefore, the last three states have to be known to calculate a successor state. If only a single state is supplied -- as above -- the function assumes that the state was the same before. This can be seen when calculating the sequence to the attractor using <<>>= getPathToAttractor(network=igf,state=startState) @ Here, the states at $t=-2, \ldots 0$ are the same as the generated start state. If it is required to specify multiple predecessor states here, a matrix of states can be supplied instead of a vector. E.g., <<>>= startState <- generateState(igf, specs=list("IGF"=c(0,0,1))) startState @ specifies that the first two states ($t=-2, t=-1$) should have all genes inactive, while IGF is activated only at $t=0$. This time, we plot the sequence instead of printing it: \begin{figure}[bt] \centering \includegraphics[width=0.6\linewidth]{sequence_igf} \caption{Visualization of a sequence of states in the IGF network. The columns of the table represent consecutive states of the time series. After activation of IGF, the attractor consisting of 14 states is entered immediately. This attractor represents the activation and inactivation of the PI3K-Akt-mTOR signalling cascade through IGF and IRS.} \label{fig:sequence_igf} \end{figure} <<echo=FALSE,results=hide>>= pdf("sequence_igf.pdf") par(mar = c(1, 4, 2, 1)) plotSequence(network=igf, startState=startState) dev.off() @ <<eval=FALSE>>= plotSequence(network=igf, startState=startState) @ The result is depicted in Figure~\ref{fig:sequence_igf}. \texttt{stateTransition()} can also perform asynchronous updates. A random asynchronous transition is performed using <<echo=FALSE>>= set.seed(54321) @ <<>>= stateTransition(cellcycle, rep(1,10), type="asynchronous") @ In this case, the fifth gene, CycA, was chosen at uniformly at random and updated. \begin{samepage} We can also specify non-uniform probabilities for the genes, for example <<echo=FALSE>>= set.seed(4321) @ <<>>= stateTransition(cellcycle, rep(1,10), type="asynchronous", geneProbabilities=c(0.05,0.05,0.2,0.3,0.05,0.05,0.05,0.05,0.1,0.1)) @ This obviously increases probabilities for the genes 3 and 4 (E2F and CycE) to be chosen. In this case, CycE was chosen for the update. \end{samepage} \enlargethispage{0.5cm} Sometimes you do not want a random update at all, but would like to specify which gene should be chosen for the update. This is possible via <<>>= stateTransition(cellcycle, rep(1,10), type="asynchronous", chosenGene="CycE") @ In probabilistic Boolean networks, a state transition is performed by choosing one of the alternative functions for each gene and applying this set of functions to the current state. The following performs a state transition with a randomly chosen set of functions on the artificial probabilistic Boolean network taken from \cite{shmulevich02} with 3 genes, starting from state (0,1,1): <<echo=FALSE>>= set.seed(432) @ <<>>= data(examplePBN) stateTransition(examplePBN, c(0,1,1), type="probabilistic") @ You may get a different result, as the functions are chosen randomly according to the probabilities stored in the network. If you would like to execute a specific set of transition functions, you can supply this in an additional parameter: <<>>= stateTransition(examplePBN, c(0,1,1), type="probabilistic", chosenFunctions=c(2,1,2)) @ This call uses the second function for gene x1 and x3 and the first function for gene x2. \subsection{Identification of attractors} Attractors are stable cycles of states in a Boolean network. As they comprise the states in which the network resides most of the time, attractors in models of gene-regulatory networks are expected to be linked to phenotypes \cite{kauffman93,li04}. Transitions from all states in a Boolean network eventually lead to an attractor, as the number of states in a network is finite. All states that lead to a certain attractor form its {\em basin of attraction}. \texttt{BoolNet} is able to identify attractors in synchronous and asynchronous Boolean networks. There are three types of attractors in these networks: \begin{description} \item[Simple attractors]{occur in synchronous and temporal Boolean networks and consist of a set of states whose synchronous transitions form a cycle.} \item[Complex or loose attractors]{are the counterpart of simple attractors in asynchronous networks. As there is usually more than one possible transition for each state in an asynchronous network, a complex attractor is formed by two or more overlapping loops. Precisely, a complex attractor is a set of states in which all asynchronous state transitions lead to another state in the set, and a state in the set can be reached from all other states in the set.} \item[Steady-state attractors]{are attractors that consist of only one state. All transitions from this state result in the state itself. These attractors are the same both for synchronous and asynchronous update of a network. Steady states are a special case of both simple attractors and complex attractors.} \end{description} The \texttt{getAttractors()} function incorporates several methods for the identification of attractors in synchronous and asynchronous networks. We present these methods using the included mammalian cell cycle network as an example. This network has one steady-state attractor, one simple synchronous attractor consisting of 7 states, and one complex asynchronous attractor with 112 states (see \cite{faure06}). We first demonstrate the use of exhaustive synchronous search. This means that the software starts from all possible states of the network and performs synchronous state transitions until a simple or steady-state attractor is reached. \pagebreak[4] <<eval=FALSE>>= data(cellcycle) attr <- getAttractors(cellcycle) attr @ \begin{lstlisting}[linewidth=.9\linewidth] <<echo=FALSE,results=tex>>= attr <- getAttractors(cellcycle) attr @ \end{lstlisting} Typing \texttt{attr} calls a special print method that presents the attractor in a human-readable way. Here, a state in an attractor is represented by a binary vector, where each entry of the vector codes for one gene. An alternative is to print only the names of the active genes (i.e., the genes that are set to 1) instead of the full vector by calling the \texttt{print()} method explicitly with a changed parameter: <<eval=FALSE>>= print(attr, activeOnly=TRUE) @ \begin{lstlisting}[linewidth=.9\linewidth] <<echo=FALSE,results=tex>>= print(attr, activeOnly=TRUE) @ \end{lstlisting} We can see that the search identified both synchronous attractors. \begin{sloppypar} The \texttt{AttractorInfo} structure stores the attractors in an encoded form. The function \texttt{getAttractorSequence()} can be used to obtain the sequence of states that constitute a specific synchronous attractor as a table: \end{sloppypar} <<>>= getAttractorSequence(attr, 2) @ retrieves the states that make up the second (i.e., the 7-state attractor) as a data frame with the genes in the columns and the successive states in the rows. The advantage of the exhaustive search method is that the complete transition table is calculated and stored in the return value. This table stores information that is used by a number of analysis methods described below. You can extract the transition table in a data frame and print it out using <<eval=FALSE>>= tt <- getTransitionTable(attr) tt @ \begin{verbatim} State Next state Attr. basin # trans. to attr. 0000000000 => 0110010111 1 4 [...] 1111111111 => 1000001110 2 1 Genes are encoded in the following order: CycD Rb E2F CycE CycA p27 Cdc20 Cdh1 UbcH10 CycB \end{verbatim} In the printed table, the first column denotes the initial state, the second column contains the state after the transition, the first column contains the number of the attractor that is finally reached from this state, and the fourth column lists the number of state transitions required to attain this attractor. A table of the same structure is returned by <<eval=FALSE>>= getBasinOfAttraction(attr, 1) @ which extracts all states from the transition table that belong to the basin of attraction of attractor one (i.e., whose attractor number in column 3 is 1). If you are interested in information on a single state (here: the state with all genes set to 1), you can type <<eval=FALSE>>= getStateSummary(attr, c(1,1,1,1,1,1,1,1,1,1)) @ \begin{verbatim} State Next state Attr. basin # trans. to attr. 1111111111 => 1000001110 2 1 Genes are encoded in the following order: CycD Rb E2F CycE CycA p27 Cdc20 Cdh1 UbcH10 CycB \end{verbatim} The visualization function \texttt{getStateGraph()} makes use of the transition table as well: It plots a transition graph in which the basins of attraction are drawn in different colors, and the attractors are highlighted. The result of <<echo=FALSE,results=hide>>= pdf("stategraph1.pdf") set.seed(43210) par(mar=c(1,1,1,1)) plotStateGraph(attr) dev.off() @ <<eval=FALSE>>= plotStateGraph(attr) @ is depicted at the top of Figure~\ref{fig:stategraph}. The blue basin belongs to attractor 1, and the green basin belongs to attractor 2. The above call does not ensure that the basins of attraction are clearly separated in the plot. If this is desired, one can choose to use a piecewise layout, which means that the layouting function is applied separately to each basin of attraction, and the basins are drawn side by side. The result of <<echo=FALSE,results=hide>>= pdf("piecewisestategraph.pdf") set.seed(43210) par(mar=c(1,1,1,1)) plotStateGraph(attr, piecewise=TRUE) dev.off() @ <<eval=FALSE>>= plotStateGraph(attr, piecewise=TRUE) @ is depicted at the bottom of Figure~\ref{fig:stategraph}. \begin{figure}[p] \centering \includegraphics[width=0.7\linewidth]{stategraph1} \includegraphics[width=0.7\linewidth]{piecewisestategraph} \caption{The state graph of the mammalian cell cycle network using the regular layout (top) and using a piecewise layout (bottom). Each node represents a state of the network, and each arrow is a state transition. The colors mark different basins of attraction. Attractors are highlighted using bold lines.} \label{fig:stategraph} \end{figure} Exhaustive search consumes a high amount of time and memory with increasing size of the network, which makes it intractable for large networks (\texttt{BoolNet} currently supports networks with up to 29 genes for exhaustive search due to memory restrictions in {\em R}). Therefore, \texttt{BoolNet} also allows for heuristic search of attractors, which works for larger networks as well. Heuristic synchronous search starts from a predefined small set of states and identifies the attractors to which state transitions from these states lead. The start states can either be supplied, or they can be calculated randomly. <<eval=FALSE>>= attr <- getAttractors(cellcycle, method="random", startStates=100) @ chooses 100 random start states for the heuristic search and usually identifies both attractors. <<eval=FALSE>>= attr <- getAttractors(cellcycle, method="chosen", startStates=list(rep(0,10),rep(1,10))) @ starts from the states \texttt{(0,0,0,0,0,0,0,0,0,0)} and \texttt{(1,1,1,1,1,1,1,1,1,1)} and again identifies both synchronous attractors. \begin{sloppypar} For the previous calls, only the subset of the transition table traversed by the heuristic is returned. This means that there is no guarantee that, e.g. \texttt{getBasinOfAttraction()} returns the complete basin of attraction of an attractor in heuristic mode. \end{sloppypar} Synchronous attractors can be visualized by plotting a table of changes of gene values in the states of the attractor: <<eval=FALSE>>= plotAttractors(attr, subset=2) @ <<echo=FALSE,results=hide>>= pdf("attractor1.pdf") par(mar=c(1,5,1,1)) plotAttractors(attr, subset=2) dev.off() @ plots the state changes of the simple attractor with 7 states, as depicted in Figure~\ref{fig:attractor1}. Similarly, <<eval=FALSE>>= attractorsToLaTeX(attr, subset=2, file="attractors.tex") @ exports the same state table to a \LaTeX\ document. \begin{figure}[t] \centering \includegraphics[width=0.65\linewidth]{attractor1} \caption{Visualization of the state changes in an attractor. The columns of the table represent consecutive states of the attractor. On top, the percentage of states leading to the attractor is supplied.} \label{fig:attractor1} \end{figure} To identify asynchronous attractors, another special heuristic algorithm is included. This algorithm again starts from a small subset of states and makes a number of random transitions to reach an attractor with a high probability. After that, a validation step is performed to analyze whether a complex attractor has been identified. The command <<results=hide>>= attr <- getAttractors(cellcycle, type="asynchronous", method="random", startStates=500) @ conducts an asynchronous search with 500 random start states on the mammalian cell cycle network. In this case, the algorithm has identified both the steady-state attractor and the complex attractor: \enlargethispage{0.5cm} <<eval=FALSE>>= attr @ \begin{verbatim} Attractor 1 is a simple attractor consisting of 1 state(s): |--<---------| V | 0100010100 | V | |-->---------| Genes are encoded in the following order: CycD Rb E2F CycE CycA p27 Cdc20 Cdh1 UbcH10 CycB Attractor 2 is a complex/loose attractor consisting of 112 state(s) and 338 transition(s): 1011101111 => 1011101110 [...] 1000000000 => 1010000000 Genes are encoded in the following order: CycD Rb E2F CycE CycA p27 Cdc20 Cdh1 UbcH10 CycB \end{verbatim} For the complex attractor, the involved transitions are printed out. By default, the algorithm tries to avoid self-loops, i.e. transitions that lead to the same state again. This means that self-loop transitions are only allowed if there is no other transition that leads to a different state. If you would like to allow the algorithm to enter self-loops even if transitions to different states are possible, you can call <<eval=FALSE>>= attr <- getAttractors(cellcycle, type="asynchronous", method="random", startStates=500, avoidSelfLoops=FALSE) @ In the resulting complex attractor with 112 states, there are 450 transitions instead of 338 transitions, which is due to the additional self-loops. The asynchronous heuristic search does not return a transition table, such that the above analysis methods cannot be applied here. \begin{figure}[tb] \centering \includegraphics[width=0.55\linewidth]{attractor2} \caption{Graph representation of the complex attractor in the mammalian cell cycle network. Each node represents a state of the complex attractor, and each arrow represents a state transition.} \label{fig:attractor2} \end{figure} As there are multiple possible transitions for each state, complex attractors cannot be visualized as in Figure~\ref{fig:attractor1}. For this reason, \texttt{plotAttractors()} supports a graph mode that visualizes the transitions among the states in the attractor: <<echo=FALSE,results=hide>>= pdf("attractor2.pdf") par(mar=c(1,1,1,1)) plotAttractors(attr, subset=2, mode="graph", drawLabels=FALSE) dev.off() @ <<eval=FALSE>>= plotAttractors(attr, subset=2, mode="graph", drawLabels=FALSE) @ plots the 112-state attractor as depicted in Figure~\ref{fig:attractor2}. We omit the state labels (i.e. the gene values) due to the high number of states. This plot again requires the \texttt{igraph} package. \begin{sloppypar} Although \texttt{getAttractors()} can also be applied to temporal networks and other networks that are in a symbolic representation (i.e. \emph{SymbolicBooleanNetwork} objects), this function is only a shortcut to the simulation function \texttt{simulateSymbolicModel()} in this case. It is advised to use \texttt{simulateSymbolicModel()} directly , as it provides more options. For the temporal model of the IGF pathway included in \texttt{BoolNet}, an exhaustive simulation can be performed as follows: \end{sloppypar} <<eval=FALSE>>= sim <- simulateSymbolicModel(igf) sim @ \begin{lstlisting}[linewidth=.9\linewidth] <<echo=FALSE,results=tex>>= sim <- simulateSymbolicModel(igf) sim @ \end{lstlisting} By default, the result object of class \emph{SymbolicSimulation} comprises several components: \begin{itemize} \item A list of sequences \texttt{sequences} from each start state to the corresponding attractor. If this component is not desired, the parameter \texttt{returnSequences} can be set to false. \item A graph structure \texttt{graph} that comprises all traversed state transitions. If this component is not desired, the parameter \texttt{returnGraph} can be set to false. \item The identified attractors \texttt{attractors}. If this component is not desired, the parameter \texttt{returnAttractors} can be set to false. \end{itemize} In this case, the network has two attractors: A steady state describes the inactive state of the pathway. The circular attractor describes the activation and inactivation of the PI3K-Akt-mTOR signalling cascade initiated by IGF. All visualization and analysis function described above can also be applied to the simulation results obtained by \texttt{simulateSymbolicModel}. For example, the cascade attractor can be visualized via <<echo=FALSE,results=hide>>= pdf("attractor3.pdf") par(mar=c(1,5,1,1)) plotAttractors(sim, subset=2) dev.off() pdf("stategraph2.pdf") par(mar=c(1,1,1,1)) plotStateGraph(sim) dev.off() @ <<eval=FALSE>>= plotAttractors(sim, subset=2) @ Similarly, <<eval=FALSE>>= plotStateGraph(sim) @ plots the state transition graph of the network. Unlike in classical synchronous networks, a state can have multiple successor states (outgoing edges) in temporal networks, as a state transition may also depend on the history of states before the current state. The two plots are shown in Figure~\ref{fig:temporal_plots}. \begin{figure}[p] \centering \includegraphics[width=0.6\linewidth]{attractor3} \includegraphics[width=0.6\linewidth]{stategraph2} \caption{Top: Visualization of an attractor that describes the activation and inactivation of the PI3K-Akt-mTOR signalling cascade through IGF and IRS. The columns of the table represent consecutive states of the attractor. On top, the percentage of states leading to the attractor is supplied.\newline Bottom: The state transition graph of the IGF pathway network. Each node represents a state of the network, and each arrow is a state transition. The colors mark different basins of attraction. } \label{fig:temporal_plots} \end{figure} For temporal networks, it is often infeasible to perform an exhaustive search, as the search space is not only exponential in the number of genes, but also in the time delays. Hence, the search can also be restricted to randomly generated or prespecified start states similarly to \texttt{getAttractors()}. If time delays of more than 1 are included in the network, not only single start states are generated, but the required history of states is generated as well. For example, <<echo=FALSE>>= set.seed(43851) @ <<>>= sim <- simulateSymbolicModel(igf, method="random", startStates=2) @ generates two start state matrices, each comprising 3 states (the maximum delay of the IGF network), and uses them as the basis for a simulation. This can be seen when examining the sequences to the attractors: <<>>= sim$sequences @ Both sequences comprise start states $t=-2$, $t=-1$ and $t=0$. \begin{sloppypar} Classical synchronous Boolean networks can also be simulated using the symbolic simulator \texttt{simulateSymbolicModel()} if they are in a symbolic form. However, in most cases, \texttt{getAttractors()} will be faster and will consume less memory for synchronous networks without temporal elements. Only if the number of inputs to genes is very high and exhaustive simulation is not required, it may be advisable to use the symbolic simulator. \end{sloppypar} \subsection{Markov chain simulations} Another way of identifying relevant states in Boolean networks are Markov chain simulations. Instead of identifying cycles explicitly, these simulations calculate the probability that a certain state is reached after a predefined number of iterations. Of course, states in an attractor have a high probability of being reached if the number of iterations is chosen large enough. Markov chain simulations for probabilistic Boolean networks were introduced by Shmulevich et al. \cite{shmulevich02}. As a special case of probabilistic Boolean networks, these simulations are also suited for synchronous Boolean networks. The following performs a Markov experiment with the predefined number of 1000 iterations on the example PBN described in \cite{shmulevich02}: \enlargethispage{-0.5cm} <<>>= data(examplePBN) sim <- markovSimulation(examplePBN) sim @ Only states with a non-zero probability are listed in the two tables. The first table shows the states that are reached after 1000 iterations. The second table is a transition table annotated with transition probabilities. This table can be suppressed by the parameter \texttt{returnTable=FALSE}. The results correspond exactly to those in \cite{shmulevich02}. If the transition table is included in the simulation results, we can plot a graph of the network: <<eval=FALSE>>= plotPBNTransitions(sim) @ <<echo=FALSE,results=hide>>= pdf("pbntransitions.pdf") set.seed(4961) par(mar=c(1,1,1,1)) plotPBNTransitions(sim) dev.off() @ This graph is displayed in Figure~\ref{fig:pbntransitions}. The vertices are the states of the graph. The edges represent transitions and are annotated with the corresponding transition probabilities. For this plot, the \texttt{igraph} package must be installed. \begin{figure}[h] \centering \includegraphics[width=0.65\linewidth]{pbntransitions} \caption{State transition graph of the example probabilistic Boolean network included in \texttt{BoolNet}. Each node represents a state of the network, and each arrow is a possible state transition, annotated by the transition probability.} \label{fig:pbntransitions} \end{figure} We can also use Markov chain simulations to identify the attractor states in the mammalian cell cycle network: \begin{samepage} <<>>= data(cellcycle) sim <- markovSimulation(cellcycle, numIterations=1024, returnTable=FALSE) sim @ \end{samepage} We set the maximum number of iterations to 1024, which is the number of states in the network. In a deterministic network, this guarantees that all states are found. The fourth state in the returned table is the steady-state attractor identified previously. It has a probability of 0.5, as the basin of attraction is exactly half of the states. The other 7 states belong to the simple synchronous attractor. It is also possible to restrict the simulation to a certain set of input states instead of using all possible input states. In the following example, we only consider the state with all genes set to 1, and identify the state belonging to the steady-state attractor again: \begin{samepage} <<>>= sim <- markovSimulation(cellcycle, numIterations=1024, returnTable=FALSE, startStates=list(rep(1,10))) sim @ \end{samepage} \subsection{Robustness assessment} A biological network is assumed to be robust to small amounts of noise. The plausibility of network models is therefore often assessed by testing its robustness to noise and mismeasurements. Typically, artificial noise is applied, and its influence on the behaviour of a network is measured. There are two major ways of applying random noise: Either the current state of a network in a simulation can be perturbed, or the network structure itself can be perturbed. \texttt{BoolNet} includes functions for both types of robustness assessment. The function \texttt{perturbTrajectories} measures the influence of noise that is applied to the current network state. It generates a set of initial states and creates perturbed copies of these states by randomly flipping bits. It then measures the influence of the flips on the further dynamic behaviour of the network. For example <<echo=FALSE>>= set.seed(3361) @ <<>>= data(cellcycle) r <- perturbTrajectories(cellcycle, measure="hamming", numSamples=100, flipBits=1) @ randomly generates 100 states and 100 copies with one bitflip and performs a single state transition for each state. It then measures the normalized Hamming distance (the fraction of different bits) between each state and the corresponding perturbed copy. A robust network is assumed to yield a low Hamming distance. The average distance can be viewed by typing <<>>= r$value @ A related measure is the average sensitivity. This measure assesses only a single transition function and counts the number of successor states that differ between the original states and the perturbed copies for the corresponding gene. E.g., <<>>= r <- perturbTrajectories(cellcycle, measure="sensitivity", numSamples=100, flipBits=1, gene="CycE") r$value @ measures the average sensitivity of the transition function for gene CycE. The long-term behaviour can be evaluated by comparing the attractors that are reached from the initial states and their perturbed copies. <<>>= r <- perturbTrajectories(cellcycle, measure="attractor", numSamples=100, flipBits=1) r$value @ measures the fraction of pairs of states and perturbed copies that yield the same attractors. It can be assumed that small changes in the state should not influence the long-term behaviour of the network, and hence the attractors should mostly be the same. The second class of perturbations adds random noise to the network itself. This is implemented in the \texttt{perturbNetwork()} function. Unlike \texttt{perturbTrajectories()}, this function does not perform any simulations, but returns a perturbed copy of the network that can be analyzed further. \texttt{BoolNet} includes a set of different perturbation options that can be combined. For example, <<>>= perturbedNet <- perturbNetwork(cellcycle, perturb="functions", method="bitflip") @ chooses a function of the network at random and flips a single bit in this function. By setting the parameter \texttt{maxNumBits}, you can also flip more than one bit at a time. Instead of flipping bits, <<>>= perturbedNet <- perturbNetwork(cellcycle, perturb="functions", method="shuffle") @ randomly permutes the output values of the chosen transition functions. This preserves the numbers of 0s and 1s, but may change the Boolean function completely. These kinds of perturbations are supported for synchronous and asynchronous networks as well as for probabilistic networks. For synchronous networks, a further perturbation mode is available: <<>>= perturbedNet <- perturbNetwork(cellcycle, perturb="transitions", method="bitflip", numStates=10) @ Here, \texttt{BoolNet} calculates the complete transition table of the network and then flips a single bit in 10 states of the transition table. From this modified table, a network is reconstructed. Changes of this type only affect a few states (which might not be the case when perturbing the functions directly as above), but possibly several of the transition functions. As in the previous examples, it is also possible to modify the number of bits to be flipped or to choose \texttt{method="shuffle"}. \begin{samepage} A detailed listing of a perturbation experiment is shown below. In this experiment, 1000 perturbed copies of the cell cycle network are created, and the occurrences of the original synchronous attractors are counted in the perturbed copies. This is similar to the simulation in \texttt{perturbTrajectories()} with \texttt{measure="attractor"}. However, instead of comparing the outcomes of different initial states in the same network, it compares all attractors of different perturbed networks to all attractors of the original network by exhaustive search. \begin{footnotesize}\label{alg:perturbation} <<eval=FALSE>>= # Perform a robustness test on a network # by counting the numbers of perturbed networks # containing the attractors of the original net library(BoolNet) # load mammalian cell cycle network data(cellcycle) # get attractors in original network attrs <- getAttractors(cellcycle, canonical=TRUE) # create 1000 perturbed copies of the network and search for attractors perturbationResults <- sapply(1:1000, function(i) { # perturb network and identify attractors perturbedNet <- perturbNetwork(cellcycle, perturb="functions", method="bitflip") perturbedAttrs <- getAttractors(perturbedNet, canonical=TRUE) # check whether the attractors in the original network exist in the perturbed network attractorIndices <- sapply(attrs$attractors,function(attractor1) { index <- which(sapply(perturbedAttrs$attractors, function(attractor2) { identical(attractor1, attractor2) })) if (length(index) == 0) NA else index }) return(attractorIndices) }) # perturbationResults now contains a matrix # with the first 2 columns specifying the indices or the # original attractors in the perturbed network # (or NA if the attractor was not found) and the next 2 # columns counting the numbers of states # in the basin of attraction (or NA if the attractor was not found) # measure the total numbers of occurrences of the original attractors in the perturbed copies numOccurrences <- apply(perturbationResults[seq_along(attrs$attractors),,drop=FALSE], 1, function(row)sum(!is.na(row))) # print original attractors cat("Attractors in original network:\n") print(attrs) # print information cat("Number of occurrences of the original attractors", "in 1000 perturbed copies of the network:\n") for (i in 1:length(attrs$attractors)) { cat("Attractor ",i,": ",numOccurrences[i],"\n",sep="") } @ \end{footnotesize} \end{samepage} \pagebreak[4] \begin{samepage} The results of such an experiment could look like this: \begin{verbatim} Attractors in original network: Attractor 1 is a simple attractor consisting of 1 state(s) and has a basin of 512 state(s): [...] Attractor 2 is a simple attractor consisting of 7 state(s) and has a basin of 512 state(s): [...] Number of occurrences of the original attractors in 1000 perturbed copies of the network: Attractor 1: 622 Attractor 2: 589 \end{verbatim} \end{samepage} We see that the steady-state attractor is slightly more robust to perturbations than the simple attractor with 7 states, as it can be identified in a higher number of perturbed copies. \subsection{Identifying specific properties of biological networks} The described robustness measures could also be used to identify specific properties of real-world networks in comparison to arbitrary (random) networks. For example, one could assume that attractors in biological networks are more robust to perturbations than attractors in random networks with a similar structure, as they should be capable of compensating for small dysfunctions of their components. Similarly to the above code, one could execute a number of random perturbations on the biological network and measure the percentage of original attractors found in the perturbed copies. Afterwards, one could repeat this process on a number of randomly generated networks -- i.e., generate perturbed copies from each of the random networks, and measure the percentage of attractors in the copies. If the percentage of the biological network is higher than most of the percentages of the random network, this suggests that the biological network exhibits a higher robustness. This is a kind of computer-intensive test. \texttt{BoolNet} comprises a generic facility for such computer-intensive tests. This facility already includes several tests (mainly for synchronous Boolean networks) and can be extended by custom test functions. The outlined example of attractor robustness is one of the integrated functions: <<eval=FALSE>>= data(cellcycle) res <- testNetworkProperties(cellcycle, numRandomNets=100, testFunction="testAttractorRobustness", testFunctionParams = list(copies=100, perturb="functions")) @ creates a set of 100 random networks (each with the same number of input genes for the functions as the cell cycle network) and creates 100 perturbed copies for each of these networks and for the cell cycle network by applying \texttt{perturbNetwork()} with \texttt{perturb="functions"}. For each network, it then calculates the percentage of attractors that can still be found in the perturbed copies. The function plots a histogram of this robustness measures of the random networks (see Figure~\ref{fig:robustness}, top panel). The corresponding value of the original cell cycle network is plotted as a red line, and the 95\% quantile is plotted as a blue line. <<echo=FALSE,results=hide>>= pdf("attractor_robustness.pdf") par(mar=c(4,4,2,1)) data(cellcycle) set.seed(3241) res <- testNetworkProperties(cellcycle, numRandomNets=100, testFunction="testAttractorRobustness", testFunctionParams = list(copies=100, perturb="functions")) dev.off() @ \begin{figure}[p] \centering \includegraphics[width=0.6\linewidth]{attractor_robustness} \includegraphics[width=0.6\linewidth]{transition_robustness} \caption{Top: Attractor robustness of randomly generated networks (histogram) in comparison to the mammalian cell cycle network (red line).\newline Bottom: Normalized Hamming distance of randomly generated networks (histogram) in comparison to the mammalian cell cycle network (red line). } \label{fig:robustness} \end{figure} We can see that the average percentage of found attractors is significantly higher in the biological network with a $p$-value of 0.01. \begin{sloppypar} It is also possible to perturb the states instead of the networks themselves by setting \texttt{perturb} to \texttt{"trajectories"}. In this case, the function applies \texttt{perturbTrajectories()} with \texttt{measure="attractor"} to the biological network and the randomly generated networks. It then tests whether the fraction of state pairs that yield the same attractor is higher in the biological network than in the randomly generated networks. The second built-in test function also tests the robustness of the network behaviour by perturbing the network states: \texttt{testTransitionRobustness()} applies \texttt{perturbTrajectories()} with \texttt{measure="hamming"} to each network. It then checks whether random bit flips yield a higher Hamming distance of the successor states in randomly generated networks than in the biological model, i.e. whether noise in the states influences the randomly generated networks stronger than the biological model. In contrast to the previous measures for which a greater value was assumed in the biological model, the Hamming distance is assumed to be smaller. Hence, we must specify the test alternative as \texttt{alternative="less"}. \end{sloppypar} <<eval=FALSE>>= testNetworkProperties(cellcycle, numRandomNets=100, testFunction="testTransitionRobustness", testFunctionParams=list(numSamples=100), alternative="less") @ <<echo=FALSE,results=hide>>= pdf("transition_robustness.pdf") par(mar=c(4,4,2,1)) data(cellcycle) set.seed(22652) testNetworkProperties(cellcycle, numRandomNets=100, testFunction="testTransitionRobustness", testFunctionParams=list(numSamples=100), alternative="less") dev.off() @ The results are shown in the bottom panel of Figure~\ref{fig:robustness}. Again, the result is highly significant (indeed, the Hamming distances are \emph{always} lower in the biological network), which means that the biological network is considerably more robust to noise in the states than the randomly generated models. Another network property can also be tested using a built-in function: When looking at the state graph of a biological network (which can be generated using \texttt{plotStateGraph()}), it can often be observed that many state transitions lead to the same successor states, which means that the dynamics of the network quickly concentrate on a few states after a number of state transitions. We call the number of states whose synchronous state transitions lead to a state $s$ the {\em in-degree} of state $s$. We expect the biological network to have a few states with a high in-degree and many states with a low in-degree. A characteristic to summarize the in-degrees is the Gini index, which is a measure of inhomogeneity. If all states have an in-degree of 1, the Gini index is 0; if all state transitions lead to only one state, the Gini index is 1. <<eval=FALSE>>= testNetworkProperties(cellcycle, numRandomNets=100, testFunction="testIndegree") @ <<echo=FALSE,results=hide>>= pdf("indegree.pdf") par(mar=c(4,4,2,1)) set.seed(6314) testNetworkProperties(cellcycle, numRandomNets=100, testFunction="testIndegree") dev.off() @ plots an histogram of Gini indices in 100 random networks and draws the Gini index of the cell cycle network as a red line, as depicted in the top panel of Figure~\ref{fig:indegree}. \begin{figure}[p] \centering \includegraphics[width=0.6\linewidth]{indegree} \includegraphics[width=0.6\linewidth]{indegree_kl} \caption{Top: Gini indices of state in-degrees of randomly generated networks (histogram) in comparison to the mammalian cell cycle network (red line)\newline Bottom: Kullback-Leibler distances of in-degrees of the mammalian cell cycle network and 100 random networks.} \label{fig:indegree} \end{figure} The histogram shows that the Gini index of the in-degrees is always higher in the biological network. This is probably due to the special structure of functions in biological networks. Instead of accumulating the in-degrees using the Gini index, it is also possible to compare the distributions of the in-degrees across the networks. For this purpose, the Kullback-Leibler distances of the in-degrees of the supplied network and each of the random networks are calculated and plotted in a histogram. The Kullback-Leibler distance (also called relative entropy) is an asymetric measure of similarity of two distributions \cite{cover91}. If the distributions are equal, the Kullback-Leibler distance is 0, otherwise it is greater than 0. <<eval=FALSE>>= testNetworkProperties(cellcycle, numRandomNets=100, testFunction="testIndegree", accumulation="kullback_leibler") @ <<echo=FALSE,results=hide>>= pdf("indegree_kl.pdf") par(mar=c(4,4,2,1)) set.seed(234256) testNetworkProperties(cellcycle, numRandomNets=100, testFunction="testIndegree", accumulation="kullback_leibler") dev.off() @ results in the plot displayed in the bottom panel of Figure~\ref{fig:indegree}. It is possible to switch between the histogram of an accumulated characteristic (e.g. the Gini index) and the histogram of the Kullback-Leibler distances for all tests. \begin{sloppypar} You can also easily implement your own tests. To do this, the only thing you have to do is implement a custom testing function that replaces \texttt{testIndegree()} or \texttt{testAttractorRobustness()}. Testing functions have the following signature: \end{sloppypar} \begin{verbatim} function(network, accumulate=TRUE, params) \end{verbatim} The first parameter is the network that should be tested. The parameter \texttt{accumulate} specifies whether a single characteristic value (e.g., the Gini index of the in-degrees) should be calculated, or whether a distribution of values (e.g., a vector of all in-degrees) should be returned. The third parameter is a list of further arguments needed by your function. If, for example, we would like to compare the sizes of the basins of attractions of synchronous attractors in biological and random networks, we would write a function like this: \begin{samepage} <<>>= testBasinSizes <- function(network, accumulate=TRUE, params) { attr <- getAttractors(network) basinSizes <- sapply(attr$attractors, function(a) { a$basinSize }) if (accumulate) return(mean(basinSizes)) else return(basinSizes) } @ \end{samepage} This function calculates the mean basin size as a characteristic value if accumulation is required, or returns the sizes of all basins of attraction in a vector otherwise. It does not need any further parameters in \texttt{params}. Now, we can start a test using <<eval=FALSE>>= testNetworkProperties(cellcycle, numRandomNets=100, testFunction="testBasinSizes", xlab="Average size of basins of attraction") @ <<echo=FALSE,results=hide>>= pdf("basinsize.pdf") par(mar=c(4,4,2,1)) set.seed(6724) testNetworkProperties(cellcycle, numRandomNets=100, testFunction="testBasinSizes", xlab="Average size of basins of attraction") dev.off() @ to produce the plot shown in Figure~\ref{fig:basinsize}. Apparently, the average basin sizes do not differ as much as the built-in test characteristics between the random networks and the cell cycle network. \begin{figure}[h] \centering \includegraphics[width=0.6\linewidth]{basinsize} \caption{A custom test statistic measuring the basin sizes on randomly generated networks (histogram) and the mammalian cell cycle network (red line).} \label{fig:basinsize} \end{figure} \begin{sloppypar} By writing custom test functions, you can extend the test facility to perform a wide variety computer-intensive test. Of course, it is also possible to plot the Kullback-Leibler distances with such new methods by using \verb+accumulation="kullback_leibler"+. \texttt{testNetworkProperties()} accepts most of the parameters of \texttt{generateRandomNKNetwork()}. If necessary, you can generate more specialized kinds of random networks which resemble the original network in certain aspects, for example by specifying a generation function or by setting a proportion of 0 and 1 in the function outputs similar to the original network using \verb+functionGeneration="biased"+. \end{sloppypar} \clearpage \section{Import and export}\label{sec:importexport} \subsection{Saving networks in the \texttt{BoolNet} file format} Corresponding to the \texttt{loadNetwork()} command, a network can be saved using \texttt{saveNetwork()}. This stores the network in the network file format described in Section~\ref{sec:appendix} and can be applied to all types of networks supported by \texttt{BoolNet}. For example, the cell cycle network can be saved using <<eval=FALSE>>= saveNetwork(cellcycle, file="cellcycle.txt") @ \begin{sloppypar} The function stores the expressions that describe the transition functions. In some cases, there may not always be a valid symbolic description of the networks (e.g. for networks returned by \texttt{generateRandomNKNetwork()} when the \texttt{readableFunctions} parameter was not set). In this case, \texttt{saveNetwork()} can generate symbolic representations of the transition functions in Disjunctive Normal Form (DNF): \end{sloppypar} <<>>= net <- generateRandomNKNetwork(n=10, k=3, readableFunctions=FALSE) saveNetwork(net, file="randomnet.txt", generateDNF=TRUE) @ The \texttt{generateDNF} parameter can also be used to detail which type of DNF formulae should be exported: \texttt{generateDNF="canonical"} exports canonical DNF formulae. \texttt{generateDNF="short"} minimizes the canonical functions by joining terms. By simply setting \texttt{generateDNF=TRUE}, formulae with up to 12 inputs are minimized, and formulae with more than 12 inputs are exported in a canonical form, as a minization is very time-consuming in this case. \subsection{Import from and export to SBML} \begin{sloppypar} \texttt{BoolNet} provides an interface to the widely used Systems Biology Markup Language (SBML) via the import function \texttt{loadSBML()} and the export function \texttt{saveSBML()}. As the core SBML does not fully support Boolean models, import and export of SBML models is based on the \texttt{sbml-qual} package which extends SBML by several qualitative modeling approaches, such as general logical models and Petri nets. For a full description of \texttt{sbml-qual}, refer to \href{http://sbml.org/Documents/Specifications/SBML_Level_3/Packages/Qualitative_Models_(qual)}{http://sbml.org/Documents/Specifications/SBML\_Level\_3/Packages/Qualitative\_Models\_(qual)}. \end{sloppypar} \texttt{BoolNet} only supports a subset of \texttt{sbml-qual}. It can read and write logical models with two possible values for each state, which are equivalent to Boolean networks. Logical models with more than two values for a gene or Petri nets cannot currently be handled by \texttt{BoolNet}. An export to SBML is usually not associated with any loss of information. For example, we can write the cell cycle network to a file and re-import it into \texttt{BoolNet}: \begin{footnotesize} <<>>= toSBML(cellcycle, file="cellcycle.sbml") sbml_cellcycle <- loadSBML("cellcycle.sbml") sbml_cellcycle @ \end{footnotesize} Apart from some additional brackets, the re-imported network coincides with the original network. Similar to the \texttt{saveNetwork()} function, \texttt{toSBML()} exports a symbolic representation of the network transition functionss, which may not always be available. As for \texttt{saveNetwork()}, there is a parameter \texttt{generateDNF} that can be set to generate a symbolic representation in Disjunctive Normal Form from the truth tables. \subsection{Importing networks from BioTapestry} BioTapestry is a widely-used application for visual modeling of gene-regulatory networks \cite{longabaugh05}. It can be freely accessed at \url{http://www.biotapestry.org}. Although its primary purpose is visualization, the software supports specifying logical functions for the genes. \texttt{BoolNet} can read in the top-level (``Full genome'') plot of a BioTapestry file (*.btp) and convert it into a Boolean network. As an example, we assume the following BioTapestry model with 5 genes (2~inputs and 3~dependent genes): \begin{center} \includegraphics[width=0.8\linewidth]{biotap_model} \end{center} The corresponding BioTapestry file is included in \texttt{BoolNet}. You can determine its path using <<eval=FALSE>>= system.file("doc/example.btp", package="BoolNet") @ \label{cmd:example.btp} to access it in BioTapestry or \texttt{BoolNet}. For the import, \texttt{BoolNet} needs to know the type of influence a gene has on another gene. Therefore, imported networks should only use links that are either enhancers or repressors. Neutral links are ignored in the import. We now set further simulation parameters for the model. These parameters are imported by \texttt{BoolNet} to construct the functions of the Boolean network. First, we want to change the function of Gene~2 to \texttt{OR}. Right-click on Gene~2 and choose \texttt{Simulation Properties...}. \begin{center} \includegraphics[width=0.8\linewidth]{biotap_sim_properties} \end{center} In the properties dialog, choose the \texttt{Logic} tab, and select \texttt{OR} for the logical function. \begin{center} \includegraphics[width=0.8\linewidth]{biotap_logic} \end{center} Now set the function of Gene~1 to \texttt{XOR} (exclusive or) in the same way. \begin{samepage} You can also specify initial values for constant genes, i.e., genes with no input links. Choose the simulation properties of Input~1, and change to the \texttt{Parameters} tab. Choose \texttt{initVal} and set it to 1. \begin{center} \includegraphics[width=0.8\linewidth]{biotap_initval} \end{center} \end{samepage} Press Return to store the result, and exit the dialog with \texttt{OK}. This will create a fixed gene with value 1 (i.e., an over-expressed gene) in the \texttt{BoolNet} import. Note that values other than 0 and 1 are ignored by the import, as well as initialization values for non-constant genes. We assume that you save the network to a file ``example.btp'' in your working directory. In \texttt{R}, type <<echo=FALSE>>= net <- loadBioTapestry(system.file("doc/example.btp", package="BoolNet")) @ <<eval=FALSE>>= net <- loadBioTapestry("example.btp") @ to import the network. Alternatively, replace the file name by the command on page~\pageref{cmd:example.btp} to use the file in the package if you do not want to create the file yourself. The imported network looks like this: <<eval=FALSE>>= net @ \begin{verbatim} Boolean network with 5 genes Involved genes: Input 1 Input 2 Gene 1 Gene 2 Gene 3 \end{verbatim} \pagebreak[4] \begin{verbatim} Transition functions: Input 1 = 1 Input 2 = Input 2 Gene 1 = (!Gene 1 & !Input 1 & Input 2) | (!Gene 1 & Input 1 & !Input 2) | (Gene 1 & !Input 1 & !Input 2) | (Gene 1 & Input 1 & Input 2) Gene 2 = Gene 1 & Gene 3 & !Input 2 Gene 3 = Gene 1 | Gene 2 Knocked-out and over-expressed genes: Input 1 = 1 \end{verbatim} We can see that Input~1 is specified as an over-expressed constant gene. Input~2 is modeled as depending only on itself, i.e. it keeps its initial value. Gene~1 is a representation of the XOR function in Disjunctive Normal Form (DNF), using only logical ANDs, logical ORs, and negations. Gene~2 and Gene~3 consist of conjunctions and disjunctions of their inputs respectively. In addition to this textual description, we can visually verify the network by plotting its wiring: <<eval=FALSE>>= plotNetworkWiring(net) @ <<echo=FALSE,results=hide>>= pdf("wiring_biotap.pdf") par(mar=c(1,1,1,1)) set.seed(559652) plotNetworkWiring(net) dev.off() @ The resulting plot is shown in Figure~\ref{fig:wiring_biotap}. \begin{figure}[h] \centering \includegraphics[width=0.6\linewidth]{wiring_biotap} \caption{The wiring graph of the imported network specified in BioTapestry.} \label{fig:wiring_biotap} \end{figure} You can now use the imported network just like any other network in \texttt{BoolNet}. \clearpage \subsection{Exporting network simulations to Pajek} For further analysis, network simulations can be exported to Pajek, a Windows application that provides visualization and analysis methods for graph structures \cite{batagelij98}. For more information on Pajek, please refer to \url{http://pajek.imfm.si/doku.php}. The export function writes the state transition graph to a Pajek file (*.net). This requires a synchronous exhaustive attractor search in \texttt{BoolNet} to build the full transition table. To export the mammalian cell cycle network to Pajek, call <<eval=FALSE>>= data(cellcycle) attr <- getAttractors(cellcycle) toPajek(attr, file="cellcycle.net") @ This will export the graph of the state transitions, which is usually sufficient for plotting. If you want to include the state information (i.e., the gene assignment vectors), call <<eval=FALSE>>= toPajek(attr, file="cellcycle.net", includeLabels=TRUE) @ Now, start Pajek, load the network with \texttt{File | Network | Read}, and check out the tools provided by this application. For example, visualizations can be accessed using the menu item \texttt{Draw | Draw}. Figure~\ref{fig:pajek} shows a plot of the cell cycle network with the Kamada-Kawai layout (Menu entry \texttt{Layout | Energy | Kamada-Kawai | Separate Components}). \begin{figure}[h] \centering \includegraphics[width=0.75\linewidth]{pajek} \caption{A visualization of the mammalian cell cycle network in Pajek.} \label{fig:pajek} \end{figure} \clearpage \bibliographystyle{plain} \bibliography{BoolNet_package_vignette} \section{Appendix}\label{sec:appendix} \subsection{Network file format} This section provides a full language description for the network file format of \texttt{BoolNet}. The language is described in Extended Backus-Naur Form (EBNF). For synchronous, asynchronous and probabilistic Boolean networks, the supported format is as follows: \begin{verbatim} Network = Header Newline {Rule Newline | Comment Newline}; Header = "targets" Separator "factors"; Rule = GeneName Separator BooleanExpression [Separator Probability]; Comment = "#" String; BooleanExpression = GeneName | "!" BooleanExpression | "(" BooleanExpression ")" | BooleanExpression " & " BooleanExpression | BooleanExpression " | " BooleanExpression; | "all(" BooleanExpression {"," BooleanExpression} ")" | "any(" BooleanExpression {"," BooleanExpression} ")" | "maj(" BooleanExpression {"," BooleanExpression} ")" | "sumgt(" BooleanExpression {"," BooleanExpression} "," Integer ")" | "sumlt(" BooleanExpression {"," BooleanExpression} "," Integer ")"; GeneName = ? A gene name from the list of involved genes ?; Separator = ","; Integer = ? An integer value?; Probability = ? A floating-point number ?; String = ? Any sequence of characters (except a line break) ?; Newline = ? A line break character ?; \end{verbatim} \pagebreak[4] The extended format for temporal networks includes additional time specifications and temporal predicates is defined as follows: \begin{verbatim} Network = Header Newline {Function Newline | Comment Newline}; Header = "targets" Separator "factors"; Function = GeneName Separator BooleanExpression; Comment = "#" String; BooleanExpression = GeneName | GeneName TemporalSpecification | BooleanOperator | TemporalOperator BooleanOperator = BooleanExpression | "!" BooleanExpression | "(" BooleanExpression ")" | BooleanExpression " & " BooleanExpression | BooleanExpression " | " BooleanExpression; TemporalOperator = "all" [TemporalIteratorDef] "(" BooleanExpression {"," BooleanExpression} ")" | "any" [TemporalIteratorDef] "(" BooleanExpression {"," BooleanExpression} ")" | "maj" [TemporalIteratorDef] "(" BooleanExpression {"," BooleanExpression} ")" | "sumgt" [TemporalIteratorDef] "(" BooleanExpression {"," BooleanExpression} "," Integer ")" | "sumlt" [TemporalIteratorDef] "(" BooleanExpression {"," BooleanExpression} "," Integer ")" | "timeis" "(" Integer ")" | "timegt" "(" Integer ")" | "timelt" "(" Integer ")"; TemporalIteratorDef = "[" TemporalIterator "=" Integer ".." Integer "]"; TemporalSpecification = "[" TemporalOperand {"+" TemporalOperand | "-" TemporalOperand} "]"; TemporalOperand = TemporalIterator | Integer TemporalIterator = ? An alphanumeric string ?; GeneName = ? A gene name from the list of involved genes ?; Separator = ","; Integer = ? An integer value?; String = ? Any sequence of characters (except a line break) ?; Newline = ? A line break character ?; \end{verbatim} \end{document} ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/vignettes/biotap_model.png������������������������������������������������������������������0000644�0001762�0000144�00000172724�13277247010�017010� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR����¦���Øæ��®iCCPICC Profile��xíZgTM—®î‰0 9ÃsÎ ɃäF’ˆ$A2"É�ˆDEE0�&’"¢(ˆb�%©ˆb‰Ûàë~gÏw¾_»ÿÖ:§«Ÿ¹uëÞš®ê©;õ\�$NxQ©¡0� ,<:ÒÖDŸìäìBƽÀÀ¤¼|¢¨z66ˆÊ(‹#ˆ6R†e¶l=7—Þ7À³ ÔªtR0úþˆ#‡�@6ˆ€%à7öÝÂÞ¿qÜÞMFtò¶°O ÒU!X:’bk€à‡�à‰Û˜æÅöÞÆŒo·°—Wd��œß}²—W�‚¹H¿±÷–ß±>ˆ}.d X¦pß pD„øÀêøúEù� Z‡èøúFù„ †�Ö ‹@Ú%¶ž‰¸5é+\@xëÙ!w¤ìÑ@e±ñá_²°Ï�4¥À-ý/™Ädl‰�4sþK6o»ý<!¶ÇQþJŠÛæ "bófss^�\�ë…››«5››ëµ� Æ�è õ‰‰ŒÝÖè­Ðdþ8â@(5 v#`¬8àAˆû@82@.(�GA¨uàh- Ü] <�ƒàx&À;ð|?Á*A8ˆ1A$IA :¤Aæ-ä yBþP%@iPT•BÕÐY¨ jƒ:¡>hzM@³Ðwh†aÌóÀ"°,¬ï„Í`;Ø ö‡©ð~8 > ‡«áø*Ü÷ÃOáqø#¼�o¢hQ¬(2J ¥†ÒGY¢œQ~(**•…*AU¡. ÚQwQOPoPŸPËh4š͇–Fk Ñ´:€ÎAŸ@ŸA_Aw£‡Ðãè/è5 Ã…ǨaL0?L4æ¦S‹¹ŒéÁ c¦1óX–+ŒUÁa°Ø8l6¶ Û€½…}„ÀþÀ¡p¬81œÎç£âÒpÇpgq7pp“¸<Ï—ÃëãðÁø$|þ þ:þ~¿DC¤ Q¥1§ñ¤‰¡É¡©¢¹Jó€f‚f‘–H+H«AkMëG›@[D{޶“ö9í†ÀKP&˜|Å„Ba”0O$…‰ÚDb81“XM¼N&~¦ÃÒ‘é4é(tátYt5t7éžÓ}§'Ò‹ÑëÓ»ÓÇÑÓ_¢ï§Ï�3ð1h280D2ä340ô1¼%A$>’ɉK*&5“‘æiÅ}Ó«;Ç7˜x™v0¹2Å3•1µ3½dúÅÌɬÁìÌÏ\Æ|ƒy”y…—E‡eËA––;,ïXq¬¬æ¬a¬¬-¬ÏX—ظشÙ<ÙÒØêÙúÙ¾°3±«°;³'²×°÷²ä`àPæpæHä¨åèãøÌÉÌ©ÎéÁyˆó<ç ç"/—W0WW+×n,· 7…;»–û÷<7O(O Ï-ž÷¼ô¼j¼ž¼9¼—y_óaùäù\øñ5ò½àGñËð;ñ§ñ7ò¿$£ÉòdWr&ù2ù�­€š€À›³‚¬‚ú‚TÁ Á~Áe!!;¡ƒB—„^ …5…ƒ„ ÷ ÿ¡ˆ¤‰\™eÕ­C‰)‹ù‰»'¶,.)î*~Xü¶ø7 A {‰L‰v‰9I~I[ÉtÉ6ÉOR|R¶RR×¥¾H J;HçHwH/ÈHÈxÈËôɬË*ÉÉž’}*GÓ“Û'×(÷Vž[ÞV>[¾K~YA^!@¡Rá¹"ƒ¢©bŠb›âw%I%¥“JÏ””M•S•o*/ªÈ««œVWåRµW-P} †UÓWKRkWû©® ¦~^ý½††§F…Æ+MvMŠf‘æc-:-s­l­{;°; w¤íèÖ†´wj'kwhoèèè$éÜÖÙÐÕÕMÖíÜ vêíLÝyG£g¢—¥×¯OÔ·Ò/Ô6`3p2(7xc(`ègxÖpÎHÞ(Ú¨ÍhÍx§qºq¿ ½‰I©ÉS!Ó ÓK¦?wií:¸ëž½™½Y¹Ù”¹¤ù^ó6 `ajQ`ñÂ’lhÙl¹b¥o•gõÌšÏ:ÀºÙzÕÆÈæˆÍËÝ»Ãw·Û¢m­mËlßÙ)Ø%ØõQX(ž”‹”_öÆöEöãÒñ÷Y½›7œ,œÊœfÕ3œŸ¹»D»ô¸2»ú¸¶¸¡ÜìÜjÝÜ Ýº¿÷PóÈöxµGzOÒžAOAÏhÏ{^œ^¡^ÞLÞ~Þí>DOŸ+¾x_7ßf?ŒŸ‹ß%´¿³ÿ¥�t€K@S 6Ð-°%ˆ&hOе`º`ßà›!Ì!!!=¡Ü¡Q¡„ž…ˆg†ODhFG|¦šP«©«{ö6E"ý#»¢x¢â¢†£å¢s£gb bªbÖbc¯ícÞGÝ÷(N*.;nf¿ÑþÚx8Þ3¾ã�ßÄc ;ÊV]o$q'%$%k'ŸJÞLñLé>(t0ýàLê®Ô†4ú4jÚð!ÕC¥‡ÖÒ=Ó{2Ä2r3¾fR2Û²x³f½Ï¶ÈnÎaËIÈ™Ê5ÍmÌcÉ;7uØôð¥|öü¤üwG,\-à-H/øRèPØQ$^TX´Rì[<P¢VR}”p4æèÄ1³cW“ç_:á}âQ©fé™2¦²¤²OåŽåwN*œ¬¬ V쯘9eª§R¡²ªŠ¡*±j®ÚµúAfÍùZ®ÚœÚ•ºàºÑÓ§ož‘=SYOªO­_8ëwöÅ9³s7Ï˯i`mÈjX½qaú¢Ãź—/‰_ªhblÊlZkÞÛ<ÓâÞ2|y×åŽ+ªW.^¾Z~éZv+Ôº¿õ{[PÛd»Kû“ëæ×ïÜйÑzSþæù[·NÝæ¼]ÜAߑ݉îLî\éŠíúÞÖ=Ûãß3ugϱ»ÎwGzíz‡îYÝ{ØgÖwÿ¾ÉýÞ~£þ; t?ÔØ5 7ÐõHÿQ÷cƒÇ=ƒ†ƒ½C&C}OÌž<¶|j÷tä™Ó³Ñ‘©ç~Ïg_„½øþ2æåÊ«äQÔhÖýXñkÎ×§Þ¿9?®0Þ:¡3qwÒbrxÊejj:xúÇÛøwð»Ü÷ÌïOΈÌ\ú þ¡{Öbvä£çÇŸb>mÎå|fû\ýEúKÛWïƒßܾÍ~ùÿ82Ï3~AmáîO»Ÿ“‹‹KyËÜËçiüº¿â¼òa5n ¿Vº.±~}Ã|cl3üo,ð7ø üþÆc¿±ÀßXàï¹Àßs¿çÏþž ü=ø{.ðÿ÷\€êéµ  ö÷àG=�tÎ�0@@ýoÛó(¿£ €BH!xËÀ#<„(ÐEø†C  ¼ƒX!=(áÞ¢p|łڇšDÛ¡0v˜)ì~;®M#C³@ÛK¨&¦ÒùÓ›3(’ÈŒÌL´Ìh +Ž]ˆC•Ó‚+;—ç2ï(?ž¬!*X-4#¢$š(Ö/Á!é'Õ,½&k*W(ÿRQ@ÉG¹VeR[¢‘§Ù¥5¯-¬c«{xç}¬¶a¬Q½ñ Sì.3óƒ5–ÝV¯­wÓÛ ÙiP,í=¢ÓJ/¸Ürt›tÿ¾ö$y‘½|t|-ü\ýÃæ•W…ä‡F‡¹„G(Qö2GÒD¡¢6¢WcVc7âàýøxÆ\ B‰¢IädžöƒL©„4tÚæ¡•ôùŒ¹Ì™¬éì79¯rŸç==<’¿\\ø«8ù(t,ùøçRë²óåËZ§¨È©ZwõTÍJýi3õqg¯œûÚ yÁçbYcÿ¥õfé‡Ë)WÎ]¸¶ÐÆÞ®vÝñ†ïM¿[·ƒ;‚;CºÂ»£zâî¤ÜÍí-½×Ð×uÿUÿÂCº¶G¤ÇøÇƒóCÓO††;Ÿ6=«)|~èEÂËØW‘£Qc–¯Q¯O¾Ñ|36ž9¡617yn*xZazõíýw'ÞΨ}À|x0›úQåãûOÇç¬?3|ûÒùõæ·Ñró=?[—ÖŒ77‘ù‡�Ð#<”$ÐŽ àÄ Y"¼P `+¸^Gù£FÐ6è§O̶§ƒûŽ?GL«BÀƈ-t¹ôA $EFN&Ó:ó<ËgÖolK웜D.2·…w/_ ÿ5òA&!ká,‘^1”øN‰DÉV©yY¹SòOÑJÊÊ{T²U[Ô^¨¯iòiéí×®Ôy¨»¬'¨ojj˜oÔd<`òÎtÕŒdN¶µÔ´2´¶´qÞíi`N‰¶?àâ˜å”ï\âRîZíVï~ÉãÊžvÏn¯ÞÃ>£¾S~þZ%‡„8†‡i„+DHP…ö’#ù£ÈÑÂ1’±òûTâÔ÷+Ç+KNKLæOá>È–JJ#§£Ò73V3—²–rs©yïòmÜ..J)>ÊÌûøÉ¥Kå<'wT8!+!»êJõJ­i]Ñéñz±³¡ç.œŸ» yÑ·±ìÒP3ºEýrЕWû[qmF퇮÷ÞDÝÒ¾} ãZç\·`åNúÝ˽“}„ûJýBîH{”õ8w0{(ýIòpüÓègÔ‘Ðçá/"_ƽJÍËxô&f<lÂÒcÊiz÷[ów¦ïgŒ>Ïš~´ød3gþYõ Ç—/_»¾~÷û±s^xã§Ø¢ÓÒ•_”U—õ•íùÇ2û@h‚ÝÛxaÇæPY1PôY;àD¸E@íAµ¢YщèÌÖ; Ãmâ hDhnÑ:Ò.Šˆ*ÄQºCô ôÓ ÇH–ŒXƦC̦,t,#¬lÁìúkœ¯¹np—ñìçuäSçgçŸ' \ÌòV¡™mËw—“$I.H=—n“9!»OŽ"¯¨@¯0«Ø¥t\9LEO•Eõ½Z«z–†‹¦„æ’Vھ: º°îÐÎ*=ª¾ž£Á¤a³QŠñn“¦]»Ž˜¹šs™?·8jioÅi5f]cº[Ãc;lWC‰²7ràp˜sìp*vpÑvåpýá6à~Æ#e›§º“לwŸOo²Ÿ›¿z�sÀ·À‡AuÁûC,BC—Âˆ *P÷¶EÆFÉDMFÇèÆ|‰­ßw0.`¿uüŽÒ <‰¤$šdTòFÊêÁ_©ËiˇÓd,gqf[æ¤æÞÈûž/vħ ²p´˜»ÄõhűÉb¥áeWËU(œrß^K㵸:…ÓgŠêïC7jÈ¿ðºQáÒá¦-Æ—Ï^%\‹no߬$[mš·» {ݵïè ëgxÐ>`ûèÃ`ê™áÏ:Ÿß{E;vx<yjqÆú3Ç"jkþóé[{V€É�8Ž@‘ €áÍ�`§ÀÁ �­Lhú9€øÚþ{ÿCØé›Û¬Žì=ƒ¦À9p'¼„’G… Î ¦Ðühwt9zÃqÁ”c^cù±ÞØ:ìœ .׆ÛÀ›âóñOi¸h¼i=E—6—öAŒ°ÐGä&FïÒñÐÅÒ ÑËÑçÓc°ch#ñ“²H Œ^ŒCL:L ¿™Ã¼ÁÉò‘Õuá.ÇÙ}Ø?qÄrœE\¢\7¹í¹¿óäóÊòñÅðóðß!‡ ðÜŒ’z+\.âˆp…ƒbEâ\ã’g¥öJëÊ0ȬÉþ”û.?«0¥øZiDy@¥[õºZ³úYJÍZGvdj§ê$ëfí,×kÐï4xa¸hÌl"oJÙoVm~ßâ§•€µµMÊîÛ'vÝ” {Kv‡Ç6§\go=Wq7wŒû¦Ç¦'ÁKÐ[Ç'À·Ä¯?€6Ð"¨0¸=d4t%œ'b'ÕoAäí¨…ñØ=û*ã&ãÅD$ÜN"&»§´§2¦EZÎÈÈbήÎÕÈÌ÷9²RXX,\ÒzÌôøÓR²™“K•%Õµ|usg:ÏVŸÏº°·Ñ¥É´Eé ßÕÍÖéö®'oóv™Þ±¹'ÿëÃã%†.<©~)0ZûfפÒ[ÕÌs×¾²~W›g]¸±(·”¸|ñWýJÙªÝÝÚÙu±õ3"]›žÛ¿&HFÂ+ˆ²‡  û0k‘ðyø-Âý»£ÊQ¯ÐÜh7tz#Œ À4`¾cÕ°‰ØGÁUàfðJãÞGÃHãNsáÕhÒ¾'hò ÓDMb ñ 9Ýyz}8ýS† §IŒ¤dÒ7FÆçL»˜®3Ë2ŸFØì¬l¬ÇØ8Ù*Ø…Ù›8t9†8ý87¸Ê¸5¸Gy’y…yñÅó‹#¼r®€žÀ¢`“P¨°¸ð‘ÑP1%±uñ^‰#’RRR›ÒC27d/Ë5Ë_T¨W¬SªR.S)R=¬–©~Pã€f¬uGˆvN.ugŠ^¾~•ÁUÃA£9¬©Ø. ³HóR‹ËoÖ|6Ö»Ólí.R’í)ÒŽÇNýÎÍ.•®Ån9î¹…{*=¯y {/û ûÙùçôa‚BLBÃÓ#Š©÷ÞüÍ£뽯8®wÿƵ„ØÄ«I‹):3S‘Ò­2 2³I9¹5yŸóÕŽdL©—”,s9Þ]*Svê$sÅáJƪÆû:Ôéöú}çô.¼mlm*j ¼¢¡u²½ñFÌ-›Ý.åù»÷Dî ={,>$>,öLì¹èK±Qá×Rãn“oÅß7Ïš~ø¢ö-éGÁBÄ"y©vycEvuÇšÚ:n}`£{þ-@²Wd@o`8 C)£òQŸÐfèó"&ó«Ž=…Ãà"p/‘÷¼yË3iæi}iG–„;D]âm:º;ô–ô¯BH€t‚Q…q„)œÇ\ÇbÄ2ËZĦÃö™½šÃ•“ƒs”«†;ŒGÉ!xÏ×Í_MNÜ-¤#,-Â'Ê,F§‘ÀKÒJ‘¤ydddä²äÛf”8•MT¢TëÔžj`45´BwÔiëòîtÑ+ÑbÈbäj\e2»KÃ,Ç|ÔRÉ*×úÃî]¶g),öYާdàšï.èÑíã­æKò[ X Z 9&~‘*¿÷r”zt[¬Ò¾–ýrñd/&Ë¥ÜJ5NkO‡2,3K³&sdsSòçs *¸^„+v,©?ºtÜôÄñÒ™r“y“•ºU—k¤këO‹œ©;+~®©AñBk£Ò¥f$N¬¸ÂxõÀµé6³ö‹7ho†ÞèîÌéúØcz§æîú=J_C?x@yxn`ý±åàÉ¡OÃOsž<{ÿòþ(×Xàëú7¯'ø&ƒ¦Zßbß9¿¯ž™žåÿh÷)i®æó•/í_›¿úžõÃc^nþëÂéŸN?-–-)/ÝZ6^~üKç×…®•ì•ÉUÕÕÜÕ‰5•µÄµ+kŸÖ×× ×ûÖ77Ô6¨ç6¦6¹7)›‡7{·æÿwÖÖþh "B#"ɆÛÿ練Ð$Ïk»0!51<Ôj+·‹ ¹>øzš#wäÚ †nçÁ!:—_¸½"ÛÂÒáÞVÖÿ`ÿHc[#}!j´þæ@°?5Ú†ò<)>ÐÀ ÁDD^âeôÇNU°—’ƒ†DË�j‰Œ±µG°0‚;£bí¶òèH~HqüGgÁ×Ïð9 ûïú­3EïÚòÅ‚üù ‰0ßâ Væ ø!1x$R‡#9aÀ�þSË�à…´Ä"mQ ¼GpÒ#é`ò?zÿ&1Þî€ôûŸÉH~YâíÏßÞȈÏ?6ƒ€/‚ÿȽ[m[£‹Ú”ú/Ÿ4¶ìmF¾A~V~íϘТhE´ Z­ÖAk�2š ÍdÐÊhu´Z­…´i�cð±ðgŒ[öÃZücODì×tDZ·¾»÷ŸVà°­ôߟÿm èÑ\ëÜŸ ù“Û9È“XdžN"y~�ÜI¸´uû%Ú/n+WDP÷GF“õ¬I?iò®pYi²¢¼‚<ø/ eê\ƒÚ}��� pHYs�� �� �šœ�� �IDATxì]œEÒ¯Í˲ »°dDD¢˜NÅœ3f1‹NOÑsÄO<³§œ <Ì9gÅœÃÀ¬ˆä¼d6§÷Õ¿ßÖ³·™™7ïí[X°zo»»ººªú?=¡kº{Òˆ¨5ÿ²ùWtíµ×nµÇ{ìÛ¹sç½³³³{2Mƒ" (Š€" (Š€" (Š€" (q¨ªªš¾hÑ¢÷9¼yÅWLâ KÒø_>ÿ ÇŒ³Ã!C.ÊÊÊÚ¦¦¦†êëëã TE@PE@PE@PE@P€@zz:±Ojkk¿~ùå—obÇÃç™ ó¯`ÇwÜ7‰lSQQ^ Š€" (Š€" (Š€" (Š€" „F�“Øá@Ûl¿ýöûqÅátÀl‡ì¶mÛîE@PE@PE@PE@H8ŠŠŠöâúce¦C:Ïrؾ2Q¯Ñ U‹ÓŒ·ß¡e¿üBµ••¦NFv.µ8€zÞ› Š‹)''‡233)- > ï`ˬ\\Beo¾I5?ÿ@é ³-ê[µ¢¬M6£ÖûíG¹Å–¹de }8õmš²ðª¬« H¤žr2ó¨‡Mh·¾ƒ©}›p2½­Wª" (Š€" (Š€" (Š€" x!Àãý ™ž@;þmôÅ_|íÅ(4Ì‚ÀÒ‹9Ÿ}A¿=ö8´¦âN]¨Í])·X1g.•,\@¥¥¥Ôïøã©ûŽÛS+8 x=‡_™e_|LUOÜOyíÚQa÷îÔª[Oã¬(Ÿ;ƒåΡ²%K(çØS©õö»„–ùÕôÏèéÉPëÂ|êй#u,êDµõu´hé|Z¼°„ÊWVÒ1[žHƒ6Ú1®L?û•®(Š€" ¬O,þã'ZHhàÆÅk¥Y«/£¼â"ÊX+Ú׌ÒòÅðËÚl`÷Ô´³j-«+ ¢¼5c¿jQE@PA€—Xl›éoãHÌp˜óùç4õþ‡¨g«Ö´IûÔ{ß}¨Ã!Cˆêê¨äÅ—iêkoÒÏå•Ìó /ÚˆPvÂZ_› ³ôËO(òøXêÚ­5u߬ î² åít8;Ò©ü³—hùǯÐìïS ó”ò¬‰ôv+ó«?>£'¾@Ý ¨ÇFhï>ûÓ}÷£òªRšøËKôñÌ÷iÞ¬ÅôØ×÷±Ãd»>;Êôm€(Š€" 4åôÉwÒ»%D­ !§ Ün0í½ýÆ”ÃÙ9ï?@ÿùµ7]}&ß3‚,¨›Kù/Me'¸‘Qü«j¨S±”h¯sÎ¥»ºþ…ºeßÑ}c'ÒJi<7±bitÁÙ´u±{.§÷GŸF·þ>Š&~vP9}|ÏÍôcÿ“éÌ=ð¢¢yòï ÏL§·>fv¸öÖ¶fmò¶¡iÔÙGÓßÿ³?·ó˜€v†×Q>ã%ÚX =óñ¹ÔÍ=¤áÅ(§" (Š€"Ð\¤ËžéñœXR1ë±§©;þVZK]–¬¢‚ߦRæç_òÀ½žÚM™J›,]EE¥54)3¦3oQ¿~”Ë3üB/©H{é?Ô¥WmØ/ƒr;USví<J›ÿ#EXOVí\*ìTI9›ÕPVv-`ÞŠ>Xæ~"iñŠzqÒã”ß5Ú÷Ê¥Ö´¬~MYúUÖ–ÓÊô%TP˜M²ò(ƒW“€wãŽý¨{®¿L_eZ (Š€"ÐL¤Ñªï^¤‰iGÓˆ-‰Æ{˜^|êaúiÌStÁîÝ(­n*}üHÕ¨‡ïØ?Dr©k¿žTË®¸~9–žúr;1r»¨ó¡¨8:Þ=Ð_AJê–Ó'¯¾M­¶;„¶îŒ/W§>T.žNO|‘úí5ŒöØÖ(¨*¬¤ºšJn³å‰0%iÔ¾…öù”É÷uàºêˉôeñ‰4‚óÔœöVÿA7žy÷ÈTÀºêŒ=ÞÿÙäÍ’"jýñÉDšV° Þ¢sƒL/ZbêrÛµ'êϳ90vk/ÿãKúpZ& ¼u°C­¡bëM§k·ßŽzhWúää-\qšWE@PÖ6Æé€¯WdÔñl… °àÃO¨/±Ø®Œ¨Ky”.àeß-_nœ¹¿N¥œ%”]SGÙy™´"½†LcŽò[óÙëTPTK}¶.¢ì6”Yá›ð,J_ô×á•u3(3Ò‹¨O~&•~QJ«¸NݧûÊüâ÷(#;ƒ6جòòs(='B‹h}_ZÍË+jieV åfRû¼¶ÔºU.Í^²œPç°âc|ej" (ŠÀšF€ïI|Øî€ciä‘}iÔ‰Љ;£y¼4÷«‡ÜCSŽ©¡’ùKÙ¡ÒŠé á#)“"üG4£óÏôÔò]hÄð#Ã|l;T±b•ñ½k‡úe4áæ;èG¦-ã܃“µ-’ÁqܹçÒ½¢Ž ìµT½j­¬ú³ÍPŸ‘Á³ ïŒëØ-3ô•)tbõ Z°´œïõÍgïÏÏŒ¥è\³I6UóË ÿàØäϘ‚’úå’Ñ <H{n*XyÑSUWÏ 3ÆiÀØàœÁØÿ)cÙ/OÐÍ7°_bç-©w_T]i ¾ìÿèʃÿAíÿí´Ú –?ekJPE@X dÈòŠ´xoyò~ý6¬K£®ÕõT€ ð€6{¿a/Bi¯¨ˆPž¡€=6gÞ™¿N |{T¸ô êÞ¿ åvlOYmÙéŸGé¹|3ΘË#”Ù¦Žê³ÛRF«,¦çÒ†ýÓiîÒ/Yæ©F¥×¿¹•3©ë€bÞo¢ o<™MY™”•QGåi%TÇSZe¤Sf]›è¦˜yµT3 “æ–Ì ´ÓKÒE@Pšzã$ ²´hÑB¾/È€¹Ö\¯}ærºfò�ºsÔ^Ñe³è¹{n§;_™dŒê5äl^zqõhUIKK¢£`yùJþ_C KJ(×pFÿ-ùåMú÷-7Ò§Ó¢ùÁ§\G眴#/1 šõî]tû¯ýéŒA%tÖÅã ÃNǦ Nߨ/nê_wÖd´ÿíxwÍ)Ô—gÚ!ÌûöºeÔmÑ2Î_<áuÚoÃeôßá'Òeôpºeê&4îõó)÷3èÚ˜NÙtý�mtìTøÄ»´ÇÝ·Ó°†Cõ4ºëÌë¨ó·Ò­¿¡†M¦ ¯¢^îÄf­Ç�—Cͪ%TR‚[~ã`ÛÝkðÁÔþ].ß+b0®§2z~Ô9ôõ–çШÝs=ííË:—Oùî1šÞn}äÅcéŒý63N¨­wRûãö¡ycn¤Wèlzù},ݰBÝ<zëžohØ=×SúÊ*úƒñö~{zvÌ1ÄsLXþÃstØí è¡{N¥÷Ŧ½z™²%?0ö#£Ø÷<„–Ï¡¥=¤«Nß‘² VwRçÇPÍËÓ¸O¹ Ÿ»¯:…6ŒôWM£‡o<@õ¢óÇÞDC6kOÓÞK<öç4†N¹e*muÅC´Ís«Ñþ±W²q„|ûøC„"‘|¢Â*úé‹Çé§?åÍz“N¼!ºÅÖiƒw£^ƒ/¦;/ÛJû`5UwÜF²’翘A;°‘­NÓŠ€" (ŠÀÚF Mœ<Ë)ýC›‹© OŒ((⿾Qó€Þü²X^µãGþºUWSA/¿àM—-( Ì·Í)£‚®Å”UÌN‡Â<JËã§ÈeÇ€ u™”^CY<#×Wðì ¢‚òÅ´"ÀÖÊœrêÒ­Š (;+ƒ²YV;B296_˨Ϧ®__N ÕtK§…+VÚ銖(Š€" 4<3ÇËË–Ì¥3VÑׯÝO_ÒPzdïÞ|½®eçö,šöÛFcÀBzä€aô —éÚ8ó÷Ïá4ì€Rzü­©SÃØvF?ÒÄ‚M½?-¯e‡úög>@WmÛ‹J>½‹N¸ìrÚ~×7h÷Ù”^_I“žCg={ ÝüÀ“Ôvæ{4|ôh*/¼“n9|�UÏz—Žd‡ÃI7?IwnÛŠ^¸ðquGzõ–ƒ¨UÝ,z˜YŒ§Û˜O™Eus¨>Òž¾d4}=|4mqÂÅtxÿBj—Ã-1ºx� ]ã¥~}ÚЫOÜG·½ü î·»ÈÏûüzvZz¤O{Ê\Ù‰Nº)d2·ñHƒÓaúwßÒOËrø‹Sµ¼”±7õéZ@Õó>2vïuÎ4ñÈþ4óÝGi8< RÄàÃ3"N¦ß*Ó}í­œñ.6â_´íð›éµã·¥ÊŸ^¡#ÎI”ÞËØôaaéT9m3‰Îø×Ýôh¯.ÔÊÁžÊÊh.söãLj*.ëñ7^"0æJúø§ýé`ãhYEsh—{©Wvý&61oŬ‰täÈ›Œþ‰ÇoE%?I'\ñ ?‹ìodñS„ÑçÅ“hQwГgVÓ}'\HÞß•n:¤7k]H>?h4½öé´èí»è”‘S×çÆÓ–»ICo|™¾v*]³/Ê.,¦6u«Ó*g¼íüYƒê#ü¬óåMtΗ{¬ÖŸn;rGºl;¢ñ ?‡úñ—»ò¸ñú`}Ym<”¿I6m>UÖouø¸Š5¯(Š€" ¬ÌLÌ[H·¼"›7áÊ{>ß,óxÛ®Ö¼–g&˜N|:s{Êx &/¿Èå™YÙ™fê oÛry_…¶ù”UT@imØóߊ§rþÖf´Jœ9”–É3Òxúá2Þú+·<Pfëœ<³l¢ —íå½%ryÎb«ô,޳X&? °ÌrþU±S¤ši¹õ´*§6P¦¯ýZ (Š€"ÐLÔQߦL¸ŸÆL˜J@Ëè—îÕÕ5Ì‚à¡î]¥¿CrñeÏžO›·¯¢ªÈætáWÓÓ‡]C_L=˜êÍ‚‚ƒó ::­]¨D]·?–ŽÏ¨¦¥‹WRÇMv¦¾ô4•³ ®.ƒï˜Ñw½ùÃÔ¾¬”ê6?®ûx<]þåTZqH_š;ù-.ß‹vá¹ð³KjhÀÁ<ú»âcšQº?õÍLã¥Dÿûù{úm›®4pÀ�ŠT¬¢òÚlêΟ™îÆe èG=6ȤJ|GuíE|r=õÏ,£ªÊ:Úÿfv¦\x-M¶ mÝ~ }0úE¢áhãŒJ*/D£®Ø‰V,ZÌŸ†faN0Sù™öØM÷Ñ—½91u*m|ÁiT§<šóÝLJ£NÝZ­¨¤Í9‡®ûôº|•àXÈCóÂIO{3mJלµ;å//£Â­£'G}DÇÜúÍàú¼^àw×›ô튨‚_L”•V°¼?CÅ‚ŸéŒøi<ó�Ç%Òq{º¬/¼_™LûõÝ‘êfEc§Ý|Ë�ª¬Ye*›˜wÎä÷L®±;µZUNïw:]÷þ}Ü~¥ uQýC¯{‘®Ü¿+­ªª¦Ý·%z$'Ë誘þ =Άïчªg—PÑ€í̱Ÿ±pým`ÚŒygtîE=zô úê ªJ[6)èøó#“ê#ÒŸ.äþ´ªQZvØæ´Í!ì”(£ý6¦ÎUüXU·æ3Gq¿½ˆžZÊý .5_Åp ×¼" (Š€"±=ân$™Ùg#ªš1›wÜê@ÄK!¨mžØ–¨ Çü°D+xÚêŠü+%Þ¢Š²7è8ƒ ¦møórŒ|~ lÍŒ\v `¦fO ` ßp±Ø‘Ÿy¨:3P'hVF×¶]¨¾²”ZgæP.;/ò3³ø—ÃË*²ÍTÝŠÚ*Þ¬²Šü P^ ©,£.…\‡ß$hPE@h)ÔS%·½ê&ºh_*›ÿ-];ø$2k$½pãXÏo÷ë)³-;Áy¨Ø%c9-gß7ïÒÀƒúè½);'­Ñõ]f: ž}ÕŸýÅ£tçy·Ñç\»×ßzÓ4Žá‘_$ÂBûö È¼y´Ä¬VH§.ýyTüUe±c¢¬K6¾¦3{—c„>üÛ’ZñZÃú¬^ôÏÇÇPÉqWÐð×ùmýGÓíOýÛgÓ*Þ|Cè:^ú°r%ß9]ÛîG«X—i O$ÜjmËN7þ÷õßd M`¾êE+«ñ Žå4¿5½C}´ÁtÕóOÑоÑýêø“óùSÔÓ¾úhÏk(máRþN¿/¨\ÆyÈ‘å ±§¦¾®ÚÃ^v ”|Íie,Xbœ xQ•Ó‘e¬¤jvÁ=„ft.ŒÐþ¦WHkxÑP]ÅO¼$oíw8çD¢s¥Ÿÿ>ˆÒÞ¿Žñ¿„¶*ª¢š ˦ú2š9™õï9„r/¡r›Êå±6Ôñ±Ë`Û¡ÐF¹4wÑRNñ žÿ2.¦ïä¡ïu<7)üëKǵÎb]+¢mª+åãƒcŒPêЀAÀñ·;YT€ÕŸæÆúÓÛ°wãîO¼áõbþô8BÕòüR$Z)¸F1©©…2îµNߎJÐÿŠ€" (ŠÀZC ¼Ó!gó´hþ|êÛ¾?ñ*Ö¢"Žù—Ï7lÌt€ÓgðF ì4È¢’eK)c³¼y£Ç·¡½•·¢e¥“¨êäòß<ðšSßÜ8Óy¦dóôHÊ©£å«ê¨²óÖ ]è6*ìOß•|J9‘LãxÈçYù­ØÁÎ <_‚¢2kkØìE•´e»meº:4¯(Š€"ÐÜD%4kÖ,ÊÈÝˆŽ¿d[zõ†OiVÙ~¼'€ý›kw]9iShÖâ*Ú¸ßC8Ô”-41–Õap)ù?Õ Ôê©t;jψ&Ÿ²o¦8ÎÛüò²®·×R-¢£+5*é÷§°,Õ˦öØOGÑë?\E‘ÐÁK çͧÒZ¶­û`úïÑâŸß£KŽ>ŸÎ{~�½~2£M0{‰F×ò*ãÑô®Å÷©ºîtÊé}ȩ́ڿM‚'†¶*ˆÀZà‰Ó¡zÅ,Ʊak¸s¨SovœL˜KË.¨oØ›"›8¢ðO§lä\ÃÕìEÛ¹ÿB êQqƒÕUÀ¾#Ï2D½h¥ºòrª/òxíÏœ9ûñ0 M]Èǯ'/§dÇ@ëûÑžô½øðÃTöÑé÷ìJue¼Ÿ\E1›ò¨÷V¬ÿß“iÆ?E?YWBSÞgƒªÍRÊLÑY$…Ðo*ó1¶±ºÂ4˜.yêK:~“¨ã<åKçÓ’2öæ0ûröíÈñ‘úÒâÿ:Vé¯þôËÿã—9{š¥Ÿx6AˆüÒl¯aõéƒè—Õ4ïWnx·=ÙuBDkêE@PE`­#`œfoyEú–[Pݯ¿Óþ2DwÞƒŠØñІ´0C÷\0Û/óÌ…¹˜~ºQJßrs3}1ʰúÿHŸÝ©âûïiÁ‚*êÜžßJ±³ÂüÒù±7X¼ýÀ³b6¿!ažŠº,Šl²;ÕÕzÜÅÄ÷i»)M/ÿ†–Ì,¥výZSvZ6å¤cyf:D(›oâ9i¼´‚/ž¾„òrZQïÂMù;84(Š€" ´xš=[²œ÷t˜9§–VÌžDOÝÀ3::gׯ�àûDt@« ·£#9{óƒ¯S3÷¢N¼NÿÍûnbÊ‘´íyTWÝ0Šc ϶ç ËæP›Ã[Kr(›KßWG¿¿ó8½ÇÙÞüU‹ºNí¹NGöiÜ@&Ò‘;õ¡òiïÓõxý–ÔšgÍìt8Ñ—ÒÙWt¥KŽÚ‰ 3*hÞÌ*îßÚÖͧwÞûŠzm¹ umSL›±ÜÿåDïÕÑ{Ù§_ÿL›ïÑ—ò³y¹ˆ—}ueÔw߈þ{}Æ>‡³ÆoKuü…Ô®[ú½õåbÚz¯¨£x)˜.Ë æÏœNsjZ±^Îðí.§¸+m¸ Øùýþc¯mHGl݆¾{éºã+&íÁÎ3E?z g&r!‘moç­÷aÊzqâ–tÔ®}¨böçtý­,ä´qÔ#½ŽÊê`o ¿çŒº¬.tû?¦,b¼7`¬9”Uw¥£OëK#&<Ź#éRÞô¹jfvØ6US×A2íj:ãºL:w»ÖôåÒL4¨åšåQ›ÿÔ/õ£_ŽÈéµ÷¨Û膣GS«ÿC:eÓò…s©ªh#êÙ6ƒòpèÿó&MÙn(mÀËKùh5Ú†AÇŸû§ÿ½–ž¬Ú—núÇnfÓÓàþTGé½ús î¡ÓN¦6]ZQ+^Þ¯N -£_Ø9sÂ][D¿ŠÁ4(Š€" (-?g:ø= ˆ¡«øá®hï=iî7_SÏJè€=àpÀ,ÌFHçÙ¼WÂâ ~Øâ§ÌíѾáÿùv@$ý—ò[¤ô §ù³_£Ì¢|*Þo!6‘4l,—e/æ¹£ f—QYé´¦áËŸb¥"<¿r»NChRÉ+´,¿ŒZoCuf=jôMoåÀfFhélþüfI9íÜù`ª.¯ ´³‘Í(Š€" ¬xÙßf~p4ù`TÝ6žE÷Ÿ} µ­^Je™œòÛj¾ÏTWÑyoÜO4òT:ç„qQæ>'Ðø7þNEU‹yo†( ÿ#Ú6Z/:ebn:ý¼iÄí—ÑI\}çaÐY¾Cw:™ªn}”vÆò ÚƒÒ¾½„N¸R8wÖ]tñ.íxˆrþ´ó.ôö#×Ðe'^MÃ_j` ½iì3½)Ÿ—Xü|ËÕÑ/ bŸ#iü1pÈcv`vÖtö—ÒGwö¤›ž¸Š3;ÀHÓ®˜}\­¬íVtÇwÓ ´çƼôp^MP>î¾ûMº}·í©}t†¡Ë?™éðÐèóé!!r¼Å©<Ð>ùtºã¬¹tî]—ÓkLÛøØ³è„A¼Ùc+Þ~vvÎG} Ѻ—½»@/ÜQJ‡{ =ßÐôA§]ONëÇûL,çn„qþŠ'Y¦gà ;:n1vú"ÚΓº´Ñ>'óLŒËh+¡¶+Ê£Ë'›Ò:îÍØgÓ¸ ÏÒ«¯v×ý´÷³§Ò›¼\³–õEVÓ¹‚™°§®,—†ô å\}]}Î1óλû)v2dÑVG]AôÚ:ï„gé䛥CycO—vøÇŸgV¦-ÿfðìó‰LÖ`–Jô§œ^;Ói}î¡1çcîáô苼œ(N,ùßË</äHz~�/ á/€hPE@PZé<ª7‹Oû¼ð xæð p´áýZ-ZDÙ?ýBzõâUmx¦�¦B¦Q9¯Å\ÊkOŸAU¼Öµ¢cG³2Ο 2³–O§ÖKߥ·¡v ¨ßèál¨,«¡¥óVQÉô•TZ¸'ÕnZæ *¡W¼E‹ò¨Ï¢hÇvòCFiE%-Y²’,)§Í‹ö¥"êW¦ùJVE@h62©ï ÔÚH×ó~<+/¤•õ”ס;uÌ«¦93áÅ=V¹-uåO%WógœkyëÆ6YüÆz>-g^;äwÜ€Šs«hάh½hY:vîÊ_U(ÇÄ~^šWMµ|¿¨â±[FÍ2úyâhþÁôÉ=‡RfÙJªâ}‚Zó&Žóç/3º!#§MêÔ.—JW–ñ$½Þo9ƒ–ÌšÃ{6äS÷Å„åUlh›¼IŸ×`W:uéÆoäyÃH^LQ»tÕu§V»b¶WÏ£qGÿƒ–\ô0Ù± a�Îó;ñìÃ\Z:g&­NÈÌïÈåü‚À õ•¼leAµëÒ…W/òæ›\· UÕfð£x¯„9sJ Ž{t§Ü*æ]ˆÝ'V·:[·ëÌ/"ÒheÆž¢üL~Q01UÃc‘^@ôhOU‹çТRìÊ),¤É7ïA—Õ]FÏò>8ìé­‹©G‡|Æn ¡ú2©±Mu¼u'êÖ–7¦æÇÊÅ_Ó5ûŒ ª‹î£sw(öÐïÖg‘¼ci—ÎÌ[ÅǶ–—f¶É‹Ù›Ý¦#ue¯ ÆñµË¨de yÑ|}C?N+õ¹üŽ]©€¿†¿jîOµnȨ̂®ÝŠØ±Ä})'–1–ó>»Î¿–þLçŸx9òð[´›²Xß0pé?E@PE`-#pØa‡§Oj¤¾Ï=÷Ü+AöD×ÁbßÈ6TÄSýª&G9ü•Š<lÉ‚2^RQ›K9¼ cÏvM—Ò0 Â'Ø2 [çÒÊßÞ燾ÙTØ&i´bU&•§m@múíNËË*–Ùš7û™7¹ZQ7ƒ22«às ºš\j›µ! ì° þ½,”Ló•¬(Š€"Тà/EðFÄiü~¾¦Æ€ëgro<œÎCíž ÇŸM2{ײœù]Bÿ¸cozô¹½)Ÿ—¦ó^5žËüÒx…`&ßkêù ÒßêgðrA¸ù½ìŠêõ“µvæ;·Òù÷|F÷¼ÊÎô*€ûµ$1zm^’<íå/Leñ£(Ò€ŸWÅ@λM|`õÛw33;"] +~§Q'\BN½ÚWÓçO¾J3iwºï•K©]tƒ ጛvñÌHsøKb¿Ü•ÅMkD÷¢qÏó;þ1Y&‘F˜ÉJ2¹?¥yö§YüyØZf\Ð+f}AŸÔì@'þ-‹¬¬n¬JsŠ€" (ŠÀZFàˆ#Ž@?þõ}æu¶ÿ«�� �IDAT™g^Žgf&`æBß$Û¶mKùìp@¡¦¦†JyÇåüõ ¤…w}‘¯Z®(Š€"°~"U·œ¦”dSÏÎy<¬\÷°à}GºÓ=Òù«kÆ5 3-:uÉ㎋£{l„QÉ›DWÍù&ý6“? UM…½6§Ý÷ÚŽr–ΤåëNA}0“gctÌ.£y‹Ë ¦<Š€" (ŠÀEਣŽ:ÏOø×÷©§žz1ŒvÌNÙ îÒ 8lžõIf˜¶(" (ŠÀú…@f^!åÖÑRþÄeãù kªi”WØŽZ§WÓb¶¡Ñ[ø5eB‹ÕÃKiøKZ­y‡tžJR_SÁ›.¥õmoèµß[lPÃE@PZ8G}ô¡üyóâ&]–:„±Yx}7…b!ÂFx„¿¥Ë ÛåSE@X?¨)[F‹ÖêKä•-[LkÕ„{(khÅ’E´¢ÅÚ—ÃÖ~LM;TŠ" (ŠÀ_Ø×+Òx¦Ã_m´" (Š€" (Š€" (Š€" 4 ¼SVÃL‡çŸ¾Y4¨PE@PE@PE@PE@øë!À[3˜ïYòžÌkio¬¿æÚbE@PE@PE@PEூ@Gsú_PE@PE@PE@P¦!`f:à kç+`M3^k+Š€" (Š€" (Š€" (Š@ËEÀÌthÖå>ø ?¾åB`Yvå•WÒÛo¿mQ4©´LÖ¥óªe"Ø4«ÿ¦á§µE@PE@Pþ2§f9„^^qÈ!‡oÑè׺uëbÇ{,GÂĉéµ×^“ì‹ãÙée“&Mйm‰¤8qöÙgSß¾}=¥>óÌ3Ô©S'§D×”=ž†„$÷½öÚ+$÷úÃÖ³gÏFç„{Žì½÷Þ)mìÚ8¯ìs*'IõèуöØczöÙgSÚ¶ææ×?o»í6ÊÈÈ­zmàÚ8eTE@PE@PZæ“™ /¯Øf›mèÞ{ï5 C† ¡ššÉ®Õ8ÈÎ0†¹myõÕWiÚ´i4räÈ0ÕCóÀ™p×]wÑ·ß~K[mµU£zp:~øáf@äÚÓˆQ3¡h®cøÊ+¯Puuµ±áÓO?¥sÏ=—ðE ÌÚ´icâuýŸœSK–,¡éÓ§ÓC=DC‡¥[n¹…Î?ÿüPÍk®cJ¹2)Š€" (Š€" (ŠÀšD öÉÌ„ötÀ�jë­·ö4ô¸ãŽó¤¯ baìqÛ‚å”)SRîtØqÇÍàôÉ'Ÿlät(//7³D0HCpí ÓåiŒ@sÃÍ6Û,¦hÑ¢E&½é¦›RŸ>}bôõ!ážS'Ÿ|²qŠ]z饯ùн{÷¸Íl®cW±2(Š€" (Š€" (ŠÀšF ¶¼"!§C•]tQà ¼¾¾ž.¿ürêÖ­uéÒ…ÆŒ$®ÙÊ`ÇÅ_L]»v¥6Úˆî¼óÎÕtÙm¹ãŽ;³¾úê+Â�o²S0ÿ˜cŽ¡§žzŠ"‘HLì믿Nùùù´ë®»šmAXâí³Ý¦·ÞzËØÙ€ý7Þ(Ùf_xá:âˆ#ÌqÇŒŽ{î¹'¦óôÓO§3Ï<3–Gâ—_~¡-¶Ø‚–-[fÚzà 7P¿~ý¨mÛ¶“¯¿þºÿgœAW_}uŒ|p¬Ðv„æ<†1¥q°)^;Âð¸jfΜIÆ £:|í™H.o*ó999„¥ ˜Ýtÿý÷ÑAÇÙïÕI¥½ae[^2äÜ|ñÅãÇᬳΊÍ~ñª£4E@PE@PEà/€@ê³gÏ& €ü…Ï=÷=òÈ#4vìXºé¦›è¥—^òco½ªªŠæÍ›û!/áÿþïÿh„ „Í#1“`òäÉ4wî\)6±Ý–ƒ>˜vÞygóæK!†Þˆ·©,±˜5k}öÙg1QöÒ m{ÂoœQ_0ÿñÇm”‰Aâ–[n),Í£}Øïáƒ> C=”þùÏÒªU«ŒÞAƒ™A+ p|à˜***"/ô8Þyçã´ÂñÀ H»Çm^±b…aiîc(vÅaÚ†ÇÕlJJJèóÏ?7ç×öÛoï²4[Ž ô78‰‚޳ß1ª“jÃËÊÊŒ­°W~ .l¤&èÜjÄØÁ¹ùÆo ú5f%ý÷¿ÿ9b¼ê(MPE@PE@ø `&8`t2Œß°‡ <hˆð†k~ûñbuù}<ì|eee„7ŒÜ~ûíR9à€"G}t,Ÿªlàv5úñæoF<¯½F.¸à‚Fêxàá·Ð1šm;ˆìhˆì¾ûî±òT'ú÷ïáM%X^Za°zï½÷bjl{âaɳ$"YYY‘ÒÒRSƒ 60Çeß}÷5ùï¿ÿ>RPPaGLL~*À}Ï=÷Œ+jåÊ•æØð&£†wéÒ¥~k7nœÉãuìØ1³?Œè7<»$&·¶¶ÖØÏo“c4vhDN;í´Xž7ß4:ž~úé­¹!{ô=^ŠÓ‹°Ž×Ž0<e÷äwÚi§t#hss… cËNÏãîgØïxÕIU›ÐžYÉÎÎnôÃ5÷¦1jâ[`rñGžgåDØ¡3•÷`‰vØa±¼&E@PE@P¿ð5dò?„„–W`39¼…–°á†J20Æ&ŒxËøðÃÇf7üþûïæ-i`Å$ ±³¾L­‡ÙoU—/_Nx»î,uX[.fÉ;eÈ]ZáÚËÝvÛÍ|MáÃ?4ûEpç63 d3Ê—_~™ößâÁ—+ºYó}ô‘™é 3x€gôa6l{ôÑGÍ,|ñ_ìÀŒi+¬c¶áXî°ÃföFŒØÂaچǫ™x»~üñÇ›7÷ØÔ‘?^lÍFÃ,‹]vÙ%&ßï8Ç<ÉÔñ—„ë»ï¾ÛˆKD.¼ðBC“cèu ×Á¼¼¼˜\\_n½õV³4ÈÞl7Æ  E@PE@PE`ýG ¹$ñ‰Ì& ‘\Úïa~s823ůò§lЈо}û?‰- …%£G6ƒrwi…k^<,1øÁ K:wîLx ¤£öBÀ’–óÎ;ÏÛly8=N8áúâ‹/ŒSá¨£Ž¢ñãÇ7ÒwÒI'™Ï­by–~€NYƒý-ì€6ÊÒ ›ÞRÓaچǫ}Ø+›VbŸ|žóÚk¯5{§xñ¦š†/YÀ‘‡Ï¾†9ήþdê¸2R™wn…ÕGœjkÓ‘ÖVåSE@PE@Pš ãth&Ù«‹Å ƒH R0HZ[_(..¦o¾ùÆì1�;0Ø“·î~vað ŸEôãi ƒ6l°ˆ7ö™À.ÿ~! –ûì³=öØcƹ2jÔ(¦pD€öÝwß/mñŸrúÏ?ÿL?þ8ñr›f¯Ïªî·ß~æ¸àM=ÖÇãø ôîÝ›0€Ã~˜!Ÿ¦D à‡hü±Åâæ>†1E‰0íÃã!Ú6ß|sƒÛe—]föÀ%ÖÄvÌÈÍÍ¥SN9…Âg÷„©ã×ææ ‡9·ÂèŦ³¥N‡0h)" (Š€" (ŠÀúŠ@:7 ë ÖÈš z1 ƒÞ'žx òñ¦Úý AªÀ†#ÁÞHi8 0À††Øè Ó¬18À4~ XñÖÕ/l»í¶4iÒ$Z°`K“é˜í€Á¹ýÕ /¡a°<x°Y~`;WÐnÞ7ÁL…ç}-¼D7™æ…;ï/apÿí·ßÌ1Áž8&Àƒöã«Øàƒh̬Á§ñuO>ùÄ,ÑÁ 0¥ßþâ6OÄLŠ?þøÃl¦ˆ¯¸aMCW§äô# ȳc8ª0C_]¨¨¨ M6Ù¤Yrl1³$`ŒM,o¾ùf3£öãü :Îî1SÇnks§Ãœ[^6`OY·!–61‹UiŠ€" (Š€" (ŠÀ_ãkÀBùSy°*m&^¬¡ŽlÒvþùç›My°iÕª•©#婊¡“ÛµÚïý÷ß7*°‘bÏž=M9Ïzˆð'û"ØH’?!3Ám ÏЈð>fº¿ÿýï1¾T&x0g6ºãÁôjb]{âaÉÐÚÆ³b²¾üòKÓfþrHŒ–Ê„î<s#2räHsÜù­x„?›†8þöF¤ì�2öÝ}÷ÝÌâ=8"üP³Ù/«ˆ´k×.òÀ4âÁƼlÇÔ0`@ä§Ÿ~2i{#É5q ý6’„±aÚ†Çí ØH’—™ RyÏ•Ïòh„M*2ö±å‘^½zE9äÈÿþ÷¿Fâãg¯c¯N#MÈ  ^òÞ ±$!>Þ¹åâüŽ;îáY<‘6mÚ˜ÍvÑ¿yFO¬ÕªŠ€" (Š€" (ŠÀº�| ð:ÀéП›ò_Ž×Xà¯М9sÌ&’^û.¬)C`C×®]z+<þ|óGL)o ¡¥` ÌlÁ›dÁ3€¿l&ˆ%ÀØk¯ÌFÁò|¢ÑoÚú¢E‹ˆ¿|!"=ãµ} ô# Ý8,¾:u²Ék%ï8Ã(÷„©³¦öÜ /ì•‚þ‡ýFÜ=HÖ´íªOPE@PE@XÛð˜íôµætXÛWý-,sÁ` _±Ð ¬+ØN‡uÅfµSPE@PE@hnàtXýÓÍ­Uå+>¬\¹Ò”œ}öÙ>JVZ&Ø�û]hPE@PE@PÆÈL‡¼¼â¾ÆEšSE@PE@PE@PE 9x¦Ãøz…E@PE@PE@PE@PRŽ@lyÅ5×\“rá*PPE@PE@PE@PþºÄ–WðtyÅ_·hËE@PE@PE@P”"о}{]^‘RDU˜" (Š€" (Š€" (Š€" ÄÐ=bPhBPE@PE@PE@PR‰€¯Óáˆé±Ó1¢&E@PE@PE@PE@@À×éPG‹’Dà?ÿùO’5µš"°n# }?uÇO±L–*IXŸÐkCêæºŒéºl{ê¤JTµ€ïF’˜ÝpÊ)§ûìôÚ6Xõ+Š€" (Š€" (Š€" (Š@ËG@7’lùÇH-TE@PE@PE@PÖY2“µüÉ'ŸL¶ê_¢Þ1dzZ;1ÕíœsÎY®X®I#ÂÀå×væ§Ÿ~ZÛ&´hýÚ÷SwxÁò‡~HâHjiç‰^GRpPUD‹A`]¾6l¶Ùf-Çx†ø=·µ´ë­¦~¶·´gN¯¾ï¸h¹" ¬{$ít@SO=õTÊÌl’ˆ&#V[[K÷ß¿‘ÓÒìqçåpž–f{K³çoû¥§¯Ý-HêëëiÒ¤I-²¯µ´ã%ýZbíû‚D¸Ø¾®¹5‚°ÔóÄE‹ÈÆRñ Ƨ¥]GÔžàãå–®K××ö–š_—1 ²½¥[-õø«]Š€":šä1¨ªª2t0'‰PZ¶ˆˆ¦M‚ÿyÑüÊÀ 9^Á-“<‚Zš=bW˜¸¥ÙÞÒìÁÀ¡)N‡;6Ùd<xp˜Ãáɯ¯xÖKqåÊ•11©îû£G¦Ûn»Î?ÿ|BAt˜ŒóÏ-“¼S%0ÛÒúZK³'<§°©ç‰#.©¬Ý¼°ÌÏÏOJnØJ«V­2¬^ýr]ÀÆÛ÷A´Ã¥ÿsˤÍRnÇn™äã/Ȱí‘ë…Èv¯6¿è^;vË$Ÿ¨=¨gëtu õÕW›k›è°y$í–I¾9ì<E‡Ø`Çn™äm{lþxé–Ö÷ãÙ».”ÇÃô™gž¡yóæQ×®]騣Žj–&%ÛZÚµ¹YÀQ¡Š€"Тh’Ówr#´„rCõk)ê €?ämš]Ï‹šè¨««‹±·4{b†5$ü¦º¡¸¥ÙÞÒì©®®Žõ5é.¾nþé§Ÿ¦¥K—Òßÿþ÷XœíÚµ£¡C‡ÆhaöÍ=Y| kÔ¨Q±Aþ­·ÞW=Ú ‡ÆÜ¹sc R*ú>œ ø!H ûä3þ'¸Ût¿sQêHœŠ¾?`À�sž8°?ز`ÁÚc=ñÁa“ˆíÉ[[‡ØcÓ Ä^tÐ[ûØÚõÂ2Ñódüøñ„~ë·_Ü·o_Ú}÷Ý]3|óñÎ?§Ã7ßøŠ ]°õÖDr¼½°ôÃç½÷Þ ­##ô·iÓÆ°í¹çž«±ÇÃÄöÕ*7ìþ“ʾ¯ïwïÞvÜ~kš5km°Á4{öl:fèa¦½p>à·&í ‹}ms±µ±y~çb<|¤¾Û:üð¶sæÌi1×· È‹í¸·6õê%_h'N”äj±}~­VèA°ù÷Ýw_Ž`R²×Û—_~™***ŒpÄp@|ðÁ«)LW+I°¯'n• Û½ú²ßµÙ•”·Ï—/èÚìòj^PÖ?šätÀÒ ÛÙàÂÓ©S'—”p~áÂ…u222båñìưvÅÓ-òìØ¶Ç¦#4Õ-¬íãe2¶B–lÛ[š=ègòàfÛ”Æ:A¬]¼÷Þ{ ÛÏ?ÿl;wì·~2mýAø,Z´ÈOÝxã±Á½<_|ñžüvAVV–¥d—[ÐwЧ쇟°6‰,Ķ=6éTôýÌÌ 4h[jÝ:ºuëfœ0òP'úàp(.nOÛn»-eggûò ¿Ä¶íAÇVø›;¶íqua™Èy‚ó¢C‡<ÐN™2Řà5€vmC>ìy"uŸþW:üðþ&;cƯTUUIo¼©Yº÷ûïßzŸ>››¸¼¼”fP¯^›pyãóAä'‰à#òáøB€ãÁëþ˜(>‰êO”ßîkA}×q6ˆ8>ýükã|èÑ£%sÝY‡µGøÃƉ^oEnsÙùÀÔ¾w㺆û‡K[ÛöØt¤Sumpåºy8óáxHt-¾Ý÷]™aóöù¦N¢ü®Ìd1Å  Ë–-#üpÍ-**¢V­ZÑ¡‡*ÅMŠƒ0 ²=è\OÔ Ø€ç7¸ô k³[WóŠ€"°þ!Ð$§¨äè^øøÓ±‹Þ¦ ><†Þˆ#bi¯Ä¸qãbdÈ]¼xq,„­ ÓÛ$Ùã^ݼÈ@,ò;vìhÞ”K™_áŸmÔ ‡±½¸¸Øˆš>}.MºŒz÷.⇽…<°êÎ)M™`eÛ„‚Dmoiö =°)ÑpÜqÇÑã?nŽ#f8Àávðäê²ß(á#çêÛÇáºë®3#K)¿üòË:ð íu¼ WøÁl÷µ {lYv}è¹ì²Ëçª؆<*í`˰é¶<Û›'^:ŒíÀ œU«Vò1ìdf2|þùç´Ã;Þ^KÀÛ›ž={šr‰13Âæ^?ÛÃØv}äÃ`–/Y,aìî¾ûnãpÈÍÍ¥ÒÒRsFècn ç8öÞ{ïx¢ÍŒ aòÃÒoVóÏÞK;ï|�½õÖ“”“ÓŠ~û-º‡Š8ÆŽ½ˆF޼‰^yåAêÑ£/Ïl™ÅÎ¥ž THÛo¿Qtž„ÅGìO$ŒPG:^Ç"ìuÄîOkª¯ù/\—0Ãç W�åLÙçZ2vÛ}ßÏØ¹gŠÍp<ˆóAhrÏ”<bÛîTÚcë@zÉ’%æz‹X° ç`égÔ C†W SWxî¼óNIš{œú¸Ç† vß[Gø¼Î/™Q$<vìÅo—§"„)–TÀ)gƒ8$®ÁB?üðÓ6'YLƒÎ­DÁ¹,ÜsyÜ“eéiе9Qʯ(ëMr:„iî7 O—{Õ±pP ØüÙ7e[†}3¶éaÒo¾9ͼ¹ÁšÙ³çPŸ>}xjvWúúëaš®\DÝXì {‚¦ºÉDž>úè[~èëD……´Í6´|ù*~+˜MÏ?ÿ—ýÎéÕ´ï¾—ÑĉÿŠ'γ<Èv·BK³öÙD®½Èã8â‡^áì³Ïö"§Œ&ƒ|ÄC%ú´ûÀ+ÄpÄ ‰¯Dåùs~r‚ìiJ߇><´”òÃKçÎ]ÌCÌé§ŸÎ}}_ócÛÙµk7æ+¥Ž:ÆvðÐ/Ù¯ns”ÙÓT,Åá““c–"`m/\ñêÆàiݺµi¢<ćq<ÄÃdæÌ_=YÊËW±3usž¡4–ÏÕ…”••m®ÃbW~~!½óÎ34aÂ:÷Ü›éÇ¿4vgeåÄœ®à ,]Þ¦æ±o ®/pn6UÜ©\—0Ë!(<ùô fv‡{M ªãUƯz~4{z½½ÿø1hµ÷^2Rm«×/<ãÈÔs”ÙdOS¯ ®m^yéãpâãÅÌš ¢[ίxn—?[“ÅŽ„çŸÞ8àŒC_ÃN%kÛg8)šâ|ðj[²¶{ÉŠGǃôc×áàU?¨/{ñ+MPÖmšätÀCª\4Û^ÎTÃ"z ×Öe{îƒì>ÛF<DÁးoß~´rÅrúåç:°Išq<¸m°m°Ëüì±yšêÆö6mº±”èÌŽ»îz†¶Ûn;š<yr4þŽãm·7*ñ�OºÝÖDmOÆž+®8n¾ùÑf±ÇÏ~Ó`ë2’ (`]wÐ,éCào÷ ÔsÛ!y<ÀIǃÌ~:xmyÉØ#²âÅЛÄá&vºõüìqùšÚ÷á8À¹ºªôÏ™pD€.¶õäÅmD+KWQ¯â茙QSScÊ域í©>¶Ð×”sQì•8KÁBxÝØv8�» ‡èQž¨ã!L¿”å®}W]5ÁÎ<óÚØ,:›çì³ÿÅ3|jè ƒ†òàÁCMìâëwlãácëJ6o@è>´íÒK/¥ë¯¿>f’Û;ïb«d%üð êû~³DÊ1¨Ç€ÙžÐ\öØøˆ ÒD¡‰ÃÁ½ Üå·å‰ðá#|öµuÂqŒH,oðÅ¡êg+»)×WVP^‰: £ ÙñÊâ_nýDùÝúMÁN„wÞy'&ÒÆ tÛå=öüñ1þ0‰ LƒlêËaô }îHÿǃðÈ5�¼aû²ÔÕXPÖšätÀÅþàÉÅG.0©„ÉÖ¹¢ËötÙ#üCFç†5ªp8,[¶”ô@‹JÐïS"Ô§oÔñ�~´ƒx»¾!4üºm]/úvEtã%……­Œ?‡ÃäÉ“h¯åY#øFwãj*E¦[ tÛödì\ãip€¤ÚØ<Ä^èsó y9üê‚Ážý`Ë–64‚¯ã%evŒ´/ÙR&m‘‡cw3AÑ'2Â/ᇞåË—û€¯½öZºòÊ+ÅœÎa¨dÛ"ᇥà)¨QÃJó†Á2Öá€ýÇL‡•¼ccÞ«`%ÏxøÇ?Î6}ûì³i»kŽ`cÛÏÈz¶¼1cÆ4šºãhãiózÕ·åÚöØõâ¥!?ÁNø‘OÔá€þ;ü^_‚;Àé· ÛíÆ$8Ì(“`§yåº=b¯½¢›ƒYô‰.KÐðsñA=™ÉtPÀÆšAFÑ)6X|lû.¹ä Àn¸AÄ4Â1FôI¸6›ÐÅVÐAü$/üØ4RàsÛ‚r8LÑçE¶Ôµc¿2¡‡±ÇÆGêé°¯©^üv›EŽð%jÔ—ë&ò…ë˜ðLÙ0¸n¡ÏÈ€ tLC— ÷/{„'LŒúøÙØ¡ž—4b7ˆ~Ðe`ìŇr›y?Þhiøÿöù¦V¢üad OLáhÜ¥b›.Ž {ÌŽðšñjL!Ïî÷^òm{ýÒ8®èÃv?¶é(Ç=\ô‰.ûÜò“¯tE@XH‰Ó¹ˆ¤êÆâB,+›në].¢6]ìA~’ÿÞ@oOápØxãák—®4oþ¼˜ã|¤"KèÛz…fÇASÝ m´eضb,©r8ÈÌèÄÃÌŠ+Œ<[fXÛ“±z'[‡TÚÙ°ÉŽív™‚†à{å•WlR£tYYYlÊø!Cõ ¯~&•íãá…ð¡ ?±7VIƒÇ-—zˆí‡cäÁ+Á¶Í–'|~ýÇ•ág̰ÀçåD–á¬@ÛMÆú'¼©Q2Ù¾}2£a3ÓK,:óCÎJºâŠ+Ì )G\Êôží72A={¶7ù‡~(6²±]ÛÁ„%Ê¥°„³ØÉ®þ2{ »úE?EzÕUW™:Rº!'Œ=b§ÄAXŠ\;†Nq8` nâÍp@ûÑ6‰ú+±�� �IDATÅñ •2@‡3Ç Ð'Á K)k®6K°ñš`.±m¯;S ÎH¡ÙŽIi¿È”<¶SBtH9b[Ÿ>R޲‹.ºÈ8Pç!%"1~n‘—ŸË 9vpë‚ß«ï㺄þŒM#¤b è÷àÀ٦#-¿TÙ…d#öº®‰m¸¦OÚ&öH¹È’¼Ä"[òàH#€Á•¼[ß06üƒœ‹mÛ¶5Ççޝ\oE>ø$ÉO2×уúv Ë+ Ë{i£m—-Ï­/X¹t7öü’z‰òK½0q*1õà Ü·ß~Û˜ƒâx,%ö²7Ó Û!ÓíË^òÃÐpï…<iŸÛõéËv=M+ŠÀú@“€Á¾ Ú鿆ºl}’–ضMh£ IXW‡Ãr^ëßµ;æò7•9ž6}}úébÚi§âØÅƒx»¾Û>”•Mu“zÛ¶#M#—óXÂà|p"Ï4Øž<ž‹±Ø6Ù²c ›$á•Ø¦!ígÏÈsþüusØÝb×£>{ë-ù³Lòn\RRbH²V]d džp ’5ºä&*D©#±ÐƒvÍ5טoÃK^ø$:b;`p*YüÛå’†/Y^´ÿû¿ÿ“j&¶ë"‡^ âx<b‘‰þo·Ëå>›.édû>dÊ[’Ò•ìp臃ÌtXsHˆãëbWñÒŠŠMlïí€|¯�¶í’–u$í³x»ú㸢®[?Œ=.O,¥Žè6LÔá€EÔG=¤%o?@Bt%ržˆÍÛ˜‹¶>ÁGh¶c!ˆÇv÷ öòá ‹Ød;D†`.< ÛiáMèK™Û|  ¯ÄBCÿ…#Ûží Çç•ð=:6÷Ó#¼v¹¤Qf—KZb±Ç/>‰E®£?ÙOÊ_ø¤¾ðIìe®“‚Íc ¬¸ö¡+ÇÔ]äXìÆf[·]†t2רé耬wß}×-2y¼™Ç@YêÙ„ (·ñðj=¿å·TÅM¦SWÙØ±ccÇ ÜGy$Æ"ÇN" ¦alw쵞Y±Ef< –ã-}Ä­ˆ:©ÐíÊÕ¼" ´\üŸšBØ,7JaMö"›GŠœ0±\äl‰Ú³‚÷pÀÒŠ˜Ãg8Àá0gî|ÊÏ/ ßÿÞxãÚÿI¶.×F/{\ž |<Ûñ• lé% 2£�ìñ !È^áAìe{2öÀá0nÜËÍbØk· iLaÅ:HÛI ¼n<cÆŒI¶<Âá`O‹• ‚‘äƒðÁÀQq¸:ìA¾ÈC >yДÁ¿Èpùä†.t?{ÄáCìښȓ™¢ß.Û8¡Ûv 6^rQ?^ð³]ê‰CÁÌt°¾^ÑÉÌxˆNÛÇâöíáp(¥ž¼ù*–Z þsÏ=GGq„y³(r{ÙÏ»>:avõ‡L¿‡/[ž—=vyØ´},†~80¨D2±[ßµGìzX,Ÿzê)SåÃ?4³2~ýõW³±ïôéÓ©{÷î„ß}÷m±Å&ýý÷ßÓæ›G?¥‰vú·7¶[l,LEþgÓ$mÏP¾ ØË±Ä2±Iøüð¹ð c3„WìD^®R&±Í#4¿Xl±ëøÙ¸6Àñ`óÃá ³_㇠öÙ¼¦ à_"öø]C½ÄÃ&×{Pïw^&b—Þ0mG¨kìý"[òaäJ¯Ø®o§]^”aO |ÒsäÈ‘Š1XFÙÑGݨ?4br2ç¶Óai”MôüJ”¿‘²&flí´+³pm³ñ `Š`/à ’ÞD1E Açºð„q\ål×ñ£‹ÝñÚgËÒ´" ¬û4Éé€ .òó»¡lÍ‹uñ“`Shvl¹Â¦Ë ±è’|AöH]›‡+VRwk†­rsèiÓyÝxÇF;v‹ [Ò~ö ÌASÝ‚l‡ŒnüYL|¥ÂÝ3a»my3ÉI¼‰äöQ‡ʉ³Õûl‚èÍÏváA¹Í#r¼ìAYsÙ#za‹póÆÍÎ .ÐËnÖxÍ?6ÜD~|æðÍ0xüóÃgÔ¨Qf`Žry teް_ÀÍ[æmÈÁ²$–´” Þ:ÂI ¶šJüå^A~å¨cÛù¢ e¶=ÈÛ!Ù¾§<Ì`éöaA{:”6à(刱§f:täã‹|‡ŽèŒ3ΠSN9Å<ØÁ&iŸŸí‚Êm»®´ø†ÝÕ_6.¢Kd‹\‰m^Ia)<ÒFÉ‹ƒs<lJ>ÑëËíú®Ñ'±´Ï KðØû:ôî}4Áé€0qâD“~ùå—ù+ç–E½õÖ[tØa‡™Í-ñ°.N8[áT<ùä“Í1³›–®Ýûí·_¬_¿Ë#¤=Æ †ÂëØêÇk׳y\|n¾ùfÃêçÇ@ý[ì[ÅTšÄÿ„WÊ„WbЅǵe8ßp@¿—k††aËN¥=^ç’èöº¶+`[%Àž[n¹%F—¶£Ü¶Ýnƒð Üæ‘:ˆ…åAçx…_l“z¢ 2l]Âï%;™kƒÈG ÙèÇýû÷7K=àpÀµçÆbh(ƒ³އdú¾—ýB׉$„i“ð6GF¿àbëš/äÑ.üî¸ãŽF× à‡�Üå|²1@™Ý‚ly° ?±3Œ\/9ï 盡#ïêjªNÑ¡±" ¬ü¹X0 {q àHû +|¶ v:ŒŒ+àpè[R‡Cë¼VÆáЮ]‘L` F"!Ȇ0Sݼtá&4tèÞì¡s8lKG5’¿¼1ÎKL\šm»v+úÙ>³§Ã²7n¹Y{ÍNpí–¼8*++…db‘)Öí;móÉL�¿rðâáâÆŒéîø! ~òÆPä¢óÏÖa§…Mêz• îx¼AvÕM¶ï<´˜8?:Њå^±<ó•²Ã¡  ?Êz¼$Ã.·Ûk§mÛí´Íã—Æ5uä>I#–kÒaCo2XŠ£À© ô°±[ß«=¶ívÚ‹W|Ñp6L˜pVŒKÞ°œ›è¾ñÆôþûïÓ|`–Ãa½3<˜Ý�§ ìÇzx¯`Û`§½x¥¹× Y—íÒm¹¶ vÚæAb™þ|s= Û6Øièô ˜å„A¿ âíXl #ÇK6hv];íÇ¢<¸VÈO®³š\¿D–Ø.y¯Ø¶ÁN{ñ® Z É\¼lƹ$¼ywÀÇsŒqFˆã2à(Œ‚lªë·Ì#¨NªÊR…©mœ“¸FÀÉ€™¶ÃÁæ—´9lgÊqÏ ‚lS_yE`ÝB ³)æâ‚!?[Ž{!ñ›¹`×qÓöÌ”yé‘e©+<®~äÁ›ŸŸ/¬lbÄ€„ÈÄ�Qp„&Õ\{„&†,ùÙü A.BNNµù,¦×’Ší¶Û¶ÑÒ <`‰}¶Ü°¶K‘!6!ïgìáýŒgjíÝ¢Wl±7xÃàDœRîc/q8Øí"×®>à€Ž¼ül>y {í¾Øº8°ôÁb bð!yà“r¤!+ž=RWd¡žß´dÈFŸ‰Àƒ Ȳ'ž»räçÒm‡Á¬Ù³Œn<¤~úéÆ^»¶uã=~øþÃ÷¿¯þgâ3˜|²ÄÇÅa°?l”cˆ4pEp÷s°ËPŽuð¶ãåR_ò†Èÿ\{„&†LÔwƒÌhHõLWÚ¯_ºuÇF—v8è ƒbYÁ rÅé¡C£ŸËDz×]w5?¤m<],ýðA»äH�]lpydð`ÏpÀ`y ÂÜÁê‡Á|°ýÖ[o5fxÍx[$¶íEt)ó³ßÅGêH=[&x!e8ŸÄA*<rmp¯#"Kdƒ?ÕöÀ§)‚Øi2üOô#›ÅÑ€×á‘Xê&‹´r\{D¶Ä¢±¤¥¾ä…×µGèabÈD}7Øz¥ÌËáàÚÇÓO>iœROb—tÐì¾/¼^1–LÚ÷s¼À÷hùr†W½5MKSØf;#Åá ±8Ð/åºÌüúä%‚)øí€ºò³é?õëggÓûvþ)<ÿ›~“×”¾¢ E@X§h’ÓAZŠ b¹@J™Äö¡Å^Ž Ñ#õܼK·íÃÁÏ6©&†Ly¨rõ»yW^ÐT7áˆm{?üð6Úm·ó Û„ ׃ìá€%˜á€€7‡"vJÚZÿ\º›V¡#^›öˆbbld…›8DðEû!ÅÞ¿Á®ƒ—ž={Ú¤X2Àc"„ÁË¡I,ƒäÝÁ­íôǃ×&ЇúØCžðŠ)»ìXx‹SChàCŸ°í°ë")ìAƒ ±ËæµuxÕO¦ï›M!Ù^è<õÔ;hÀ€þTQYAµ5Õtá…ûÓå—_±šãa.ïü}Åϰs¥ a¶ÒÌôïŸfød‰…ûàíg»ÐÛ}_èh'°°wõ÷j;Ê;dØu…×¥¹yá“8K¿ºò€'ƒvÉ'»õÅ&;ö²AhÛüñÒRºÜãçÖ~Ðí´WÞ­›L^<àÚàåpÙ®M  ±Û×äü—ún,umº å.ÝÍ‹ ¡#ví_Æ üî1y"_b—îæ]>/{°É%0µҾæâº!Ï¶ÓÆv<Ø×BÐ]ýn>Œ=Â/¶eÛi»žKwó6/ÒÉ\\’‡ã?� ]b{�-´xq<û¥> ®ãAîó³¦âTbŠ{œ p2ˆÃq²!Ó ÛEŸÔ—ôžß~+ÅÎÿÇœŽ;î8S6S¦©qnbÏoc|¶Cðãš°ÿ¬m_6_L™&E`½F %N!¿ ‰—Á®g§ÝY(såºy»¾vùððù°ÇŽüñGÚyçÍCã Aƒè«¯¾¢!C6¢¶ipÎŽ£èçÂð b?Ü€ÉÕcÛ é ©nÂcÇ®L8ð–~›mF¶?¿RñXlIê|ðÊãÔ…?ý‰‡.×NTtåºyÛ;íò­ {\äAëMå<=Ù±——g›ß(]^^nò®¼O<Ñì íÒÁl?|7ædlG‚+2@Ã`UÞÌ¡ºË'û0ÇÏQËB¦Ø‚‡rWGŒ1„Ø•ˆÃâ“éûØ _vÙ“TTXd¦Öwà}8ªj*饧Ð!‡ö5凸Î;?¢Šò ³WMemºé@ºçîè̳v9(µö{a'øâz`ïê~  öÅ7¦ï¸1ð¸rݼȱã0Xºrð†úS=ÓÁÕ;Þ'v›’ICw./ÛD[öꫯJQèxêÔ©1^{ð€Á„üÎ;ï¼$‚lkh8í~ šW°ëº÷)» uݼ—<?>Ô•ú¸FÙo°í~.<"Û¶É-sóRÇm>q8€ç¿­4,Q ø‰^3Àë[[fç½ø¼hvIñ¹en^dØq2×·ï÷îÝ;öel 6i<ðÀÍ1ýõ×Jl¼êâ=dP}Àئ™t¼¾/ ³˜7FÀ˹ÏÃŽgžy&¦CøƒbùÜ/xü(Aõ“ÁÔ–'Çíé§Ÿ&|_LÃò÷šáu­°å -²lz¦al·ey¥m#FDŸ=Åñ`óÛ|B÷ã÷â•:+ŠÀú‹@“a/^Ž„D`õÓãÒݼ«Ãv4ˆãÁËá�ǃlljŸ?º+Ë+¦.<e°ïʇR8ž+½2n´y«m\ƒt¸enÞÕ‡üڶ礓Nò2ËÐıàËàQ€6É´«á#ƒ}›_Òâppؤ1êÛ n™›y…Và zH‘:~±ØåUî§ß‹×¥yÕ•íŠ éØã6¥—_šÆƒæJ³hÇ?ö-wüV1Çf8TV”ÓîK÷Þó whG•¼/@qq{ºåæW™~çÀ¶¸úݼk¯ÇñÄò |Åâɧ_0Ep6`†(÷ A:‚ʼdÙ4¯ºèkta¶@NNNRŸÍD½03l[ö²Çå ›‡,¯þëG÷ÒŸ*{08ËÎÎ6¸Úo-íAÛ›o¾Iؤ2(4Å·®=¨‡Nq6ù9 ÁãÊpóàÜdú>üî9�®­"ßÕïæ…Ïv8€&ƒ]ô¹ /bœ¢Óm>7íêwó.¿W>Ñ:AüAe^ºmZغÜ#ÈWž°,Ï«®8rD6cFc!ôdcq<`¢Ø”¨8pýjŽà…‹—8Äá`óÀápûí·“—ã!¬|[^ØtXÙöù/Ž„”xñ“G…°úTi‘" ¬C¤Äé y”¼ƒ=`·é^i?…-ºì¼ÈMè^öˆn,a·t„hÝqxƒp×.уb?{ªš(ÞT·x¶Û²d@-mDêãa ƒK8ÐÆ·¸Î<hîòŠ<?Û[š=bo˜øÐC Ö}¼QÑ ¡ ÆÀÝåó:öñ²ù½x¥\l”º’G¹ô›z2Á–ág-7™¾7—ô£rÞðó¥‡C1Ït¨®ªdGB;c0>ÄmÛP!/µ¹.ÇÃf‡öˆ+iÓb|‚ìó³í“6zai·íÚk¯%ü®¼òÊØÞ pB` õö»¾ø K¤žÈD^ô ígÊ$ÄÃRøìo%§L™bɸ>$êx�?m˜‚ŽÙç7˜¶Û¼°´mC:ì'3±_ ä¹øaÖôÑK׎DóÀºáh€ã±ä!ËÞ›Bd‹}v^hÒ.É W,<ƒf<ðÛƒn`‹ÓIdùáy"SìA;-2ÂÄXö�y¨‚—M‰Øy8çD¦,›0D럴ýÞž•<ä~)ŽyáEõDí±T®–ôÂN0±uŠ^`—ùÙ#¼ˆ“¹6Øõ%mÏâǃ”yŸ¶H§€äíØnMJÃñ�‡ƒ—Ž çúƒq<H>‘8U˜ŠNYJë'®àpã¤~‰ƒ0g;êJ}» Mt –þ‡¯Ï{ì±4«a¿”_Ê‘G¼ð?<+z°Ë £þS¿ )q:Z^*)sìB»²Ý¼È±évZÊaG²¶ØëB]Ùn^ôÙq¼©n¶ ;mËpÓ^|ò ‡Ão?ýD?<—qDØ¢¶/(·évڮ립øRa—\W÷šÎÛ6ÙiØ\¯�>¯ãàÖG]/ZXº_]èÆ²”Û^¶zѼäzÑܺÉô}8*+*©ÏT¨ª® âöÅÃáPÔàx(6MY?ß®ŽÌl@yµ7ŽÔcGÅAa;�ül·évÚm—çœ v°õ ÝO¦]ê!ÂÒ¯¾8äÁ=ǃ8Ðwâ9l;%mÛd§QžÌ'3q¼!Ç^ƒß±cGãôÁÛB ®.нhŸL,†ÌÌè­±ëxˆ'×¶ÉN'ROxQ_®·2GÞËñå§Ë¦ÛiÑ‘L,Ø$N×&?]6ÝNÃ×ñ ¶¹| ûáàG÷’96ÝN£Ì/øñyѽhëG·u&sm°ëÛi¯ÏKÛånZø1+¡°°Ð-NIÞÕáδp•`Y–gàÖªU+·8T>U˜B¿|DlGƒ"×iÉ75²²í>e§ýôŠ!ì=Í?Œ.?”®(ë.Mr:ؤƒ12³ Tñœ~ºÂØ#vø-©À^¸±}òÉ'¼|ÓÕö~ð²ßÏ/^?ZÛ¥®ðzá-eòà ‡Ã¯ìx(yï1úç®­éß5Þ(ÐÏv‘~<kÒÑ/ƾ²·C<Þ¦”ÇÃø'²§„},ƒðö+‹gÝV™æi×±ËIûÙ“¨ á·åáÍuMm t 3Ì ~û5sÖ ãHØa‡L<sÖLÚlÓf† ˜áОÕÕU,§:ö&\f:غD?b?á^ûøÉ™WY¼ 2Ñ×”Xhq<¤Úá`ãdíCÆKÆ>4?i>™9mÚ´Ø'3sssé†n0Å÷Þ{ïj_!7žâthn,ÅNYJ!S¿]ºäýbé#(²ÙubÚõP&ÚNqq8 ¶ë⺄à§Ë–ëÇc„ügË ²ÉO—]ßGA&‰97ÅÑ u„.y?]"|~<¶ ¤í>/eˆÝún>ˆ×.kδ|^Úíß~:ÅáÏàW? =QâphN›ÂØk”ìç�çÃC=d!öWxDŽìÿ€'½Ê…¯)q"}Yôœp ’lûõ]/~?ÞF5£(ë%Mv:È…Kb?”â9üê ò½tØ4›Ç¦‹ İ#Y‡ƒ8, ÇÖ…¼?½(šêfË ’9AåvWøÂáðãߣj¬®Íg ¬2ቅσÊí²¦Øcë„L¯9¼5xë­·lV“ÆtO{3ªÕ<¶Ý^ºP.<‹É»ƒûË/¿ÜL@.x1 ̘1R=&7FhH¸{@ˆ#-y‰Ýú’G9lÃ@.Ñ ²%¶ë{Ѥ<™¾/ø¼ôâïffCtæÏ|èPl>yzò);Ó<›ÁðïŸÊ›F~hf6`FD{^ZQSSEí8ÞbË<³!YYYbV,¶mGZòÇDP¹WYSh¢:KáA ]nßuxF¿Â KÞ<»1‹~3ìö¸ºÄá‘Ø¶QÒa>™‰svâÂnÄB/h^Ç×O/è¶Íö”r±Ë+†£Á2 ó¢Ûºm]RåÂ#±”%Ãñ€l|p½qlÝþoëM¥=°m†L9VÛ6¥âº†¾á¶úì6E)ÑÿÀÁ=&¶ áµi¶,›.¼v,å~Îg¡ á÷’&åM¹6ˆ ;Æ^Òwlº_ýN÷v{\œýꇡÛ:ÂðÃé 6…áwyR…éþûïOo¼ñ†q4ØÎ8J‹ŠŠb8äÙ1òâxHÓ Û!KäI,m·•BôU¡I,}Yòˆ½øƒÎu»®¦E`ýD IN‡ Hpq²/d²ùLP¯2ܬäìU–æÚ¶žË×{âMusu¥"vŸ·Kô+㾎‘©À3YÛšÛ|ÅBúŽÕÃ?û”¦|Rsذa6ÁŸÊ‡"?lı 7hè…Ãkž×Æ1±uÂ&û±ñH>Éô} £K'úмi$f8`}ïLþ ¦8Ž8âƒì…gžµÝÊ›Fn2p3á–g8ˆÃ3"d¼ß1ZèÉ`i·Ëv<`ˆA<”ûÅâpÀC³Ý/l™Í™ÆqE·ÑtÈñ¶c±¡’÷�I6`–fKÉTn¡ Ý0øüKd€æ#“ŒsS¦d{20ír.»1ê –~2šƒn#èG[͵aOs´1H&Úëi7°IeHæÚàçlÃ9à:Ò`«Ì”rí?özIEHT®c^÷|\/š’ÁÔOŸ\C±wC§NŒ3÷aÌ|ÀOfjI}¡'³×d$k{ÐõÆ~n;Aó{‰áÅ/õ4V¿Mr:à!Õö\ÊT ÄC¼ÌM hØ:D–è²oÚ-ͱ5LÏv/‚A¼²±Ÿþùî…§ÈIËx:ÝrÑz2ö ¾-ÃN»º$/‡þóŸôïÿ;6ˆÀ´F8ì$Ï«,èxyõW肜ýë_F­ìè‡CÐ1ñ²Qìiêñ’™2Hà²á;E¿è”¼K™m]/í‡%¾ �GAÔñðçW*°7f8Àá�Çø€!ôÖQ _©=P_–`€Ï^¶ûÙc×sÓ"Ç¥#ï–¹y»Ž”%‹%ê‹ /Ý¢ ¿x¸r8� $„ß–-²$ö*KK‘çC°±g6ÈqÌĉ…y  ]ò¶{i–¤%¶ù’IÛz¥~"ø¸}WdH ù8‡q>ÃQ„�'òÈynó#mãd—ý"Ë/ƵD®urÌülùaíquÊ Gä <hÀ <l^Wž”%kÈ9’·c·ÌÍ{ñÚöØåñÒmË—4 ¸†úéKÂëAóÖËñ&uýt¸ôDuà8'j“«3™<Úe·ÍNûÉ\OÁƒÙ¶ç°8"dø\Ùn<‰„ se~×”¹¶„á›%N¶/»ú5¯(ëMr: ‰rñ°›‹ ‰Ðå†e—¥å"$õ%öª#¼v™ÿڴǶ-hªøâÙnË “|D.Ž…¤ÝúÂkÓ½xm,mÞ0iÑ!r›Ûž“O>y5³ðÖRÞô&Ò±Ý(íˆG³Ëí4Æeçu›î—¶õ…µ'¨×_½Qe?¬ËÌ Ñaëõ³MxýÊ“íûpZÂa�ù´ˆ#1l´šb³Ë‡<øüú›—í^mŸݯÍ6]t„©/¼v};,–®î8ÀˆÅCdãÈn]Û;íe{غ¶¿4äËñµylº­/{¼ÞêÚ:’IÛ¶ ~X{ÀçÖ £þøÙƒHȺ}¾$bíÈc‡Í¦{®úÙÔ|Üv£Ÿ×&/Þ¦Øã%Ï‹&:Âoáõ’Z2×Ôñ‚mŸ—cÁ­oó£,žíný0:ì:‰òÛuƒÒÉ`жºí÷Ó!×a”¿þúë16Ìr€Bg^òâašŒí0`êæ›Çì“Økj8~» ñuΧQ�� �IDATl£WyE`ÝB INñxâBb_@w/.v^ ’ ³[å"CÊ„eBØ�º¤AÐEÒ¶¬(%ú_èn]”Š )^” ͵evšêÖÒloiö�[Ä‚·ä¥ yû¸ /ƒi¯º(·ë#oË].>îC/d¥2Øö#-6@‡¤mБÇO‚Ý6Ðds>y‰™ò�*õD†`aËxÄÑeÇMéûpŠÔÔÔÇbÉ‹}bbHH ~<¸‰Â Û„æÚ.í�]xÀ¼è”úv4ÑáÖE™È2á•zÂ#6 ï† ,ÅÄ¢õE¯È½x L,t»®0ˆlÉ /òÂïòH;\{DF21NÐi,…nëBZl@±ÏæýàƒŽ•!o· y B—ö ±Èšð"/ü.ØæÚƒ¼ÍkËù"×­+ŽœöÛ|ÐE¦mØ�y’ve"/ÎI[/Òv;E¾”‰nœx‹+òE¦ðƒ.6 ®¤…_ä!ŸÑ ù [è"_Ê‹ )^” <bè’]x@YH#ز¢”è¡»uQ*2¤LxQ&4×”Ù!™kC¢}?Ìg`ýl·m Jï»ï¾AÅk´,LåXŠ¡6BC,t9¾~\§…Wê!†ž d»__øÛoA"W+ûd`x~œŸÒÖx}y5EJPu&9äí˜\Dl4\š›Þ º[ææ!6Hhiöˆ]aâ–f{K³Ç7)¯>àÒܼàŸ݋צùá#vÑÙœ1làgÊm»½ò˜ñ ³¼ìGýx2 ×¶ù°¡)¶‹×>›î–¹yðÚ¶·4{¤-ab´­¥Ÿ'^},LÛ¼x0˜'Ï>¶ë>ÒN·Ÿºy?>›|ìzvZøl|ÖDß·mj öˆ×5{lÛã¥Ñ¶–tmˆgïºPÞœ˜Úé—ÛØxÑìr¿´×¹ïZê'+Yº}íIV†ÖSu&9|ðÁÕÒ–f NÐT·–f{K³gòäÉ.œk5ßÒðiiö¸Gû¾‹Hòù ,õ< ÆUñ Ƨ¥]GÔžàãå–®K××ö–š_—1 ²½¥[-õø«]Š€":07k'þ X²dÉ}¶XlÔvÊ)§’¶y4­(Š€" (Š€" (Š€" (Š€íÛ·?cõmh½8•¦(Š€" (Š€" (Š€" (Š@‚¨Ó!AÀ”]PE@PE@PE@PÂ! N‡p8)—" (Š€" (Š€" (Š€" $ˆ€ïž ÊQvE@PE@PE@PE@Pbèž1(4¡(Š€" (Š€" (Š€" (©F@—W¤Q•§(Š€" (Š€" (Š€" (LÁáüóÏ—¤ÆŠ€" (Š€" (Š€" (Š€" 4˜Óa‹-¶ aÆ5Y  PE@PE@PE@P¿6=ô æt8.½ôRIj¬(ë)×_}Ü–éµ .DÊ (Š€" (Š€" (ØãÕœ[o½5 >Ü£š’E`}@`üøñ¡š¡×‚P0)“" (Š€" (Š€" X¸ãÕœoÊ’;ŸñUÊd­‹‚>¹oкh¶Ú¬(Š€" (Š€" (Š€"ðC`ìØ±TUUEééé”––fâììlÊÍÍ5yÀºü222åÿÏÞ½ÀÙQÕù¢ÿ÷+ y‘„’@H�a�EÞ*rdŒòŠÀAÁF8ÂÀøÑ㹞Qï€^õÈGG.7D1À: *Åð%(h€@HÈ;Ý[«Ân:îN'éݽ«ë[çììÚ«ªV­õ]|ócÕª &ÄG±‰ÖfC‡Gy$^}õÕM.¬vØa•]ß @€� @€@FŽo}ë[ãå—_Ž+VÄúõ룩©)œ÷*… )HŸ´ŸŽ :4–,YÒi¯7:¤Àaß}÷íôâßÿþ÷qï½÷†à¡S… @€� @ P­­­1f̘Øyç#í§Y«V­Ê?---m³RàÐØØ˜‡Æ ÛúÐ!¥ië8Û!M¥X¹retÐAqÏ=÷Äá‡^(H%@€� @€�6HACeCú{z¬bÐà W¤ð¡¹¹9Ràf9¤ã黫­¾«íËÓRŠÑþS™N‘n°Ï>ûäÁCûk¶e¿¾¾.¦>6¯¢ý~WuÛ®!ƌ캓]]§œ� @€�ØT ²fCúNÛúìÿ¥­ò»²Ÿ²î¶Í>^‘f:TB‡Ž¥ÊÓ‚iKÁÃÝwßÝéÂéøˆ¡që×ЧŸ[™~ƺæõñ¡‹Í÷;þÑÔPœº[ÜvÏâh¿ßñ¼=wÿsæ¤X±ª%›ö±>¦î>,¾ôí§ã×ó_éxªß @€� @€@Z³, ÍzH³Òz k×®Í×w¨äéQ‹´U2®ªíQèP™Zѱ’4óaöìÙyqšZ1eÊ”Ž§lô{íºÖ˜ùùG6*ÛÚ Ùlˆ/œ7%fßü×<œHõ4faÅ ¦îS–­½Ÿë @€� @€@ÒäƒÖ,TX¸pa¾ÔBʶÛn»üQŠD¤G,Ò'ië.xØlèPyž#… ·<0¦M›–§i%Ë'žx¢ã)Ýþ5¢1.úð”8ÿ+ òóþ¯3'Çw¼znU·×¥ƒï;2ÆŽjŠŸß÷RÛ¹Í-ë£ùµ´åÄ·Ž‹÷;>þôìʸô†¿Ä¢—ÖæÄåÿsŸøá/ž³NœþiyüëÌÚùãgž°K¤‰#·Î[snýkÛù?þÕ qÆ»v‰ž|5nºó…øT6»bùÊ–øä7žŒe+š£³{µ5Ê @€�(ˆ@š\f1üáÈŸz=ztÛº í—\HÁÄÒ¥KóO Ú?vѾ«›*ªÌthƒ´ŸÖsH H+[Ž5*ÚWÞq?ÍDxÿ;ÇçŸýöžÕ[;ŽÞðxF:wÌöM=ž©°ëŽƒã¡§–çit¼Ïàl¶ÃûŽqÖÿýHüòþ%1ãm;槤@aÊ®ÛÅîã‡Äþõ¡˜°ãØk·¡ÑÔXÿxÒ.ñÏÿgAþÈÇ1Žñ;dhÙù{fçÒ§}æÁ8hÚˆøïÇ씟³èåµqÈFFW÷êØ&¿  @€� @€@­ ¤¿ÿ/X° 3Eú»~Z$²³@!•7.ÏÒã);èlÛtúB‡³Ò…ééÆÝméxW7©\—Ú°4›¶Õk[+Å[õ]Ÿµ©cŸÛoûøÛâ5±Ë¸Á‘¿8{Æ„|-‰ÝwÒv•«[ãòŸÍ¯}î…ÕÙl‰A1zDS6#bU<Ÿ i»ïÑeqä£â–_/Î׋¸ööEyùâWÖÅ5?ù[¬^ÓÏ¿´&¿î{èò^ùEþ @€� @€�H“ Ò#FŒèQ°ýöÛçë>TµèØÍ…•™/nÿ»'¡CK¶Øã­w-n»,Ílh¿mX³}I×ûϽ¸&œ:"† ªo 0ÞuÄØ¸ûÁWbåê–xyÙº¸û¡¥ykÚ© •°¢’à òzé‚5ÙÚÛ nȯ­œ›ÿèä4{£«{urº" @€� P³;ì°C >|“öu5É MR?~|¾þÃ&eÝO_ÈN¨ÌtèøhEÇßéF]5¢³§²4c`݆l&Eöö‹IÃâ€,DèévߣKó¿ìW^­Ùþºß<²,vÝiH<ñÌŠ¸Á²x$[»¡»í·Ù̆i‡åYd$ò0#…=Ù¶ô^=©Ó9 @€� @ ?ÒzŽ­éØ][R>fFt¶mv¦CšVÑÙó+Kç¤s·dK3î~pi|‹'ÿ¼"[ØqE/O¯Üü¿.{*>“->yì¡c²�¢9öž84~ú›—"½%ã»·ý-¾wñþñø3+#ÍtHçvµ¥Wn^÷³Eñµ§E1#æ?ñj¾˜eZ¯asÛ–Þksõ9N€� @€�úK =.Ñ“  }ûÒùiý‡Î¶Í†•Ù ›[Ó!W9·³½º²9ÞñO¿ßäп]õ§28{¼!›õÐ~;îcȦG*ûí§ý WÄéŸ}8Ò[05ÖÇ K6¬ÉŽýð/došx1{L¢>–g¡BÚ:Öõ¯ÿñǼ<ýñ£ì­?þÕ‹‘f:¤·`¤­ãùç|áѼ<ýqÙŸmÛïì^mí @€� @€�‚¤WaV^ÙÝßñ;v§« ¢G¡CW·¿I:gKÔþÚŽCûc=ÙåÕ ‹Sv<7­ßP :ëìwkvþÆÑGggu^¶¥÷ê¼¥ @€� @ ÿºûûÿÖüóÏô__Ý™� @€�¨Qž„›éžçøñœ¿cùòå±fÍšhiÙð¸BZ,bðàÁùÊ–Ûm·]ì¼óÎ5J¡Y @€� @€@_ l6t8äCúºMîG€� @€� �W €AÔ @€� P‹›éоëÊ7÷F5ê @€� @€� $`¦CKS  @€� @€@‘„E-m%@€� @€�:h°4•� @€�I@èP¤ÑÒV @€� P ¡CKS  @€� @€@‘úäíEÑV @€� °ò•ˆn�©Bö?>bøØ*T¬Jl* tØÔD  @€@ÑRà0çÌ¢÷¢:íŸ9;âðYÕ©[­è tè�â' @€À�˜ztö왨CÛЕ{æD<qç6TàRl¹€ÐaËÍ\A€� P8ø¯ú¯–Ðáu {ô‰€…$û„ÙM @€� @€@ù„ås=&@€� @€�}" tèf7!@€� @€�å:”oÌõ˜� @€�ô‰€Ð¡O˜Ý„� @€�”O@èP¾1×c @€� Ð'B‡>av @€� P>¡CùÆ\  @€� @€@Ÿú„ÙM @€� @€@ùË×e=&@€� °©À++WÇMólz €%ÇÿÝÔ;|h[®É 4¡Ã@Qý!@€�Ø*8œyõ·êÚZ»hö¬“bÖÖZ³´‡� J8èºL€� еÀÑÓ&ÅÌÃèú„>2çžâÎÇÖp 5�² Ê6âúK€� Э@ Š<K@èÐíð:H€@ XH²ÁÝŽ� @€�”E@èP–‘ÖO @€� ÐÇB‡>w; @€� P¡CYFZ?  @€�ô£ÀméÇ›»5ý& tè7z7&@€� PsñÿÌ/Oõ”� Bÿ$ @€� Ð'ŸþMÄE÷÷É­Ü„�:ÔÈ@h @€�2üïû"þßeè©> „þ9 @€� @ OÎþeÄÿy Ooéfô“@c?Ý×m  @€�Àßy2âªv3­Ü¸³Þ±tmÄß#bþâùµeÇOŒ;dË®q6¾:ô•´û @€�(‘@ îük÷N³–¬‰¸ô‘îÏs´{ÙGGÌšÖý9Žè/¡CÉ»/ @€�’½KĽÏG¬nÙ¸Ã×1eûˆƒÇm\îWÏæ<±ù`§g59‹@õ„Õ³U3 @€�Ò ¤ÀáŽ"&_±ðÕ C"RàpröhEÚÜa÷?·\`s³I¶¼FWè]¡Cïzª� @€�nRàð£wFLß­›“"@`ÀÔ˜žè @€�5/ð½wj~4@/ zSU @€�t.ИýÍ#-x8cRçÇ• 00<^10ÇU¯ @€�Ô”À÷þ›#kj@4†@ ˜éÐGÐnC€� @ ÌÞPQæÑ×÷2 Ê<úúN€� @€�ª( t¨"®ª  @€� @€@™¬éPæÑ×w @€�!ÐÜÚ“?ýõxvɲ¼?g^ýãHŸ]GŒ§÷º/÷½×û9ç̈kÏøÒß"†Žz½Üª `¦CPUI€� @ /ëëãôCÿn“[¦²ÆÃ?¸Iy0Cà°©Šª t¨ª*  @€�ôµÀÌ#Øä–yÙ>ëÆÇŸ¹ño¿ P%¡C•`UK€� @ /ö?6Žž6©í–OÜ%RYÔgOTzz[yŒ‘‚ú@@èÐÈnA€� @ /fþúl‡÷½ù ¯ßòMï{}ÿ'o"^/±G€�ª ªF«b @€�}+pò›öáƒÅ¦ÆøÐQo|ý滑>i;úŸ6|û“�} àí}€ì @€�úB )xX½®9F ²ñ-ËÖqhÌÊÆï½q¹_¨¢€Ð¡Š¸ª&@€� °­k[#Ö´ô¼–SÞ|@¬inŽW×m|MÝÿƒGźåŸÕ{¿ZÖo¨+}§¶ nˆdžu韛@A„(Í$@€�(§Àîøü﷤“³¤âގ׌Æ8=šéX^Ýß¿þ[ÄÈÿ/âsG|öMÕ½—Ú ¨=Ycí‰ @€�ØFÎÿg~s;Ø ЗÿÛ¨/[à^ @€� @€À€uÈaÕ) @€�"𿲗P|âõ7a¶[ƒ²5l”O@èP¾1×c @€� ¤Å-ÀX ÓT6ðxÅF~ @€� @€�½% tè-Iõ @€� @€� 6âðƒ� @€�è-¡CoIª‡� @€�ØHÀB’qøA€� @ 6–,Y_ýêWãᇎ‘#GÆöÛoÍÍÍqÌ1ÇIJeË¢®®.Î:ë¬~oüÏþó¸ä’KâÉ'ŸŒ#<2Î9çœ8üðÃû½]@€@ÿúÇÝ]  @€�ôX ýE~æÌ™ùùóæÍ‹‰'æûO=õTœtÒIñè£Æe—]Öãúªuâ7¿ù͸ýöÛcÇwŒ»îº+®¾úê¸å–["µ3…$6Ê'àñŠò¹ @€�Hàé§ŸŽO<1ž{î¹|¦C%pH]˜2eJü⿈Q£Fõ{žy晘0aBÜ|óÍ1{öìøú׿ž·iñâÅ1wîÜ~oŸ Ð?f:ô»» @€�è‘À¹çž+W®Œ!C†ÄqÇ·É5;í´S\|ñÅ›”§‚E‹Å Aƒb̘1¯¦Ç3ZZZbôèÑ•¢¾{RO C:"©’ÔnWlÄéR J5Ü:K€� P$W^y%\!µyÒ¤I1|øðN›ÿá8V¬XÑvlÁ‚qÆgä!Bz¬aéÒ¥qà 7äkA\qÅqÁĺuëâ¼ó΋U«VÅ5×\“_{ 'Äu×]þšÐ]=m7ëd§µµ5¾øÅ/æGæÌ™“ÏÈèä4E”@@èP‚AÖE @€�b ¤E#+Û¸qã*»›|×××Lj#òòÕ«WÇ»ßýîX¸pa>C¢¡¡!+N;í´¸õÖ[ó…/½ôÒxðÁóÇR‘ߘ1cFÜxãqÇwıÇ›«g“F¼VðøãG /ÒB’iû—ù—<txãßøÚ¾(“€5Ê4ÚúJ€� P(—^z©­½iö@O¶ë¯¿>Ò:i}…ôhCSSSŒ;6n»í¶xùå—ó*Ò#iKo—8äCâ]ïzWþ;ýñì³Ïæû=©§í¢v;Ó¦M‹ÿøÇqꩧ楩¾4£ÂF€@9Ìt(ç¸ë5 @€@öÝwß¶V>ôÐC±~ýúüÕ˜©0½)â»ßýnÜÿýù9)\8å”SÚÖoHTœ~úéù±TO Òb”­ïfCT¶´¶CÚÒ1Ò¶%õädì³Ï>ùci½‰o|ãñ»ßý.–/_Þåã!•ë| 0ð„oLõˆ� @`€ì¹çžyHf(¤ÅÓ#“'OÎ{wþùçÇa‡o~ó›óßiÖBzkÄ'?ùÉü÷ÚµkóWVVÖgØR’ÊÌŠm©'-p™åHkQ 6lK›à|€€Ç+À ê @€ÀÀHk5|ùË_nëÜ<жŸvÒ#•m=öÈw§Nš¯Y³&î»ï¾Êá|áÈæææ¶ß›ÛÙÒzÒ‚”¿úÕ¯ò…)+u§°!½Î3­1QWWW)öM€@‰„%l]%@€�(žÀYgiÈ´]rÉ%yxPéEú‹~Çíä“OŽwÞ9/N³!Òb”óçÏTÏ‹/¾˜—§E"ÓV !Ò›,*[e¿'õT®Ißéo{ÛÛâàƒn[Dò׿þu¾ÀezÄF€@9<^QÎq×k @€�‚¤×^{mwÜqqá…ÆôéÓóµÒ ‚oûÛùB‘騙gž™÷(•ßtÓMù+3Ózûï¿ì½÷Þy)Œ¸òÊ+ÛÖkHoª˜7o^üä'?iÓH¯ÔLõí¾ûîÝÖÓvÁk;)ÔøÁ~×ù8ꨣbâĉñ‡?ü!ugÇóý&@ B‡rŒ³^è3»ï¾;/^Üg÷«•¥UÁ8âˆZiŽv @€À�øÀ>éóüóÏç³ÒâßúÖ·b×]wŽë6¤7R<öØc‘^_9tèÐü/ÿ’³Ï>;Ò§ý–Öƒ¸è¢‹ÚåûÝÕÓñäô—,Y’‡©=S¦LÙ¤]¯ñ›�/ tøc¬‡úT iel PôFˆôÙÜ–ÖƒHo‘ØÖmKêIçî·ß~ÛzK× 0€„h0u…@- <8'x-µ©mI!KZ¨ËF€� @€À¦B‡MM” Ð éqƒO<±jªí*æÎkfGm‘Ö @€�ô£€·Wô#¾[ @€� @€�, tÈ£«o @€� @ „ýˆïÖÊ pÍ5×Ä{ßûÞ8öØcÛ>ÿãü|Eí"ôÿ¶Ûn‹·¾õ­±Ûn»Å 'œ=ôPš­ @€�jBÀš51 A`à œqÆùë²Þÿþ÷ç?~|Ü|óÍ1dÈ~íô=÷Ü·Þzk§¯«4,½küÔSO­üŒgŸ}6—ùƒ>˜¿ž¬í€ @€�:0Ó¡S…ô¦À¡‡ÚVÝÐïË/¾˜‡ ¯¾új[»:î¬\¹2.»ì²øÑ~¿ýíoãøãÏOIï¿þúë;žî7 @€�˜éÐ Š"úO`Ù²eÑÒÒ£Gî¶/¼ðB´¶¶Fš9±%[ ¦OŸžÏZèîº ÄUW]“'OÎO›3gNþNôæææH¡…� @€�Í 6oä ª$pÅWÄ\ëÖ­‹óÎ;/V­Zi ˆ´¥õ®»îºüÑŒï}ï{qöÙgGš}Êëëëã7¿ùMüíoËg |ç;߉k¯½6Î?ÿüX¿~}|üãÏ|æ3qÎ9çÄ 7Ü×wã7ÆŒ3âk_ûZ¤@!méØý÷ß—_~y¼á oÈË*¼ño¬ìæßcƌɩX¸pa¼å-oÙèXúñôÓOÇÕW_½I¹è'§îŠx<»÷­¯}÷ w½°<?ë®»²kž˜ßƒ+œB :i†ezý¸À@: „QÔH¡À¥—^i„¹sçæ!À‰'ž˜‡)$¸ãŽ;òÅ'O;í´¸òÊ+óßóæÍ‹´äI“bŸ}ö‰[n¹%>ÿùÏÇ%—\_úÒ—â™gžÉƒ‡Q£Fåu§uÚoéÜôÈDZòä™Çoõ�� �IDAT“Oޝýëíw¹ŸfV¤Àá°Ã‹w¼ã›œwï½÷Æ÷¿ÿýMÊ @€@? ÜyUÖ€ôéÁ6õÀˆ·ÍÈgº]%tè˜Sª%0{öì˜5kVµªW/>:ô)·› ÐQ`РAyÑ‘G‡rH¬]»¶í”´pce«œ—ÎÙk¯½òâ´ÿÇ?þ1Ÿ‘B‡¦¦¦Êéù÷àÁƒ7ú½-?¾øÅ/ÆÎ;ï) ©´¥}})Œxç;ßÙ¾È~ôˆÊwÞG}tÌœ9³ÃQ?  ÐËi¦Ã¼,l8ò#¦Õ£ÊÓL‡«žz)þñÿ1ŽÚqx®qÞ¨üßÊÞ¬S]ú[@èÐß#àþl$ÐÐÐÐö;­íÐÝ–^c™¶Å‹Çòå¦ÄvwþÖK`üð‡?ŒŸþô§yðÐY=ií‡4KÃÖ½@ Ràà¿Þtïä(½ pOVÇâ,t8. ŸÕ³ …?Ž£Ž:*f‘Íz°èô+m’€·W ¤ÑÔ%¨Ì8HAEoÎjhϘüÈG>?ÿùÏc¿ýöË¥G<žzê©ö§Ù'@€� @ 3:AQD€@1žþù¼¡S§NÍ­¨««ëÕ†§…-ßûÞ÷æ¯×|ì±Çâ‘G‰—^z).¾øâxàzõ^*#@€� 0„qTõ‰@ ´_›¡Tš¸zõê|7½Š2méM•­ý~¥,ýå?=J‘f6ü×ýW^ü‰O|"ÿž0aB<ùä“y8êýÙÏ~V¹,£òcذaùîÃ?œ/(™Ÿè¸Æ@z´ã}ï{_¤ÌóUÌ+gßéM#FŒhWb—� @€�Î<^Ñ™Š2zM ½ÎòŸþéŸÚê›?~þüG}4#EúN[zSEzlᢋ.j;7½RóÏþsÛï´3zôèxÏ{ÞS¦LÉß&‘‡3Ï<3?çSŸúTì¸ãŽqûí·GZïáñÇÓ»Ò"öØc¸é¦›ò@"ýþà?˜¾ò0á+_ùJœrÊ)ùïö|úÓŸŽ›o¾¹}QÛþ¡‡Ú¶o‡� @€�®ÌtèÚÆzAàôÓOôélÛwß}ãì³ÏÞèPz‹Eûàa£ƒÙñãÇÇþçÆO<‘¿¿z̘1m§LŸ>=þú׿Ƃ bÚ´i‘·HDzëDûíÜsÏ̓‹úúú<¤h¬²ÿå/9ÒÇF€� @€ÀÖ ¶ÞΕt#Þ(1wîÜnÎØ²C/¼ðB~Á¢E‹zToz•f_l©Ÿ6 @€�::t�mX³fM<÷ÜsÛXˆËׯ_•µ R˜ðÌ3ÏDc£}õ ®J @€�TQÀÿj¯"®ª ”Q`ìØ±½Þí_þò—qÐAåŸTyZû!-ò˜^•Y+Û¸qãj¥)ÚA€� @ f„53B``qĽޑO<±×ëT! @€�ÕðöŠê» @€�(¥€Ð¡”îÓ @€� @ úB‡ê» @€�(¥€Ð¡”îÓ @€� @ úB‡ê» @€�(¥€Ð¡”îÓ @€� @ úB‡ê» @€�(¥€Ð¡”îÓ @€� @ úB‡ê» @€�(¥€Ð¡”îÓ @€� @ úB‡ê» @€�(¥€Ð¡”îÓ @€� @ úB‡ê» @€�(¥€Ð¡”îÓ @€� @ úB‡ê» @€�(¥€Ð¡”îÓ @€� @ úB‡ê» @€�(¥€Ð¡”îÓ @€� @ úB‡ê» @€�(¥€Ð¡”îÓ @€� @ úB‡ê» @€�(¥€Ð¡”îÓ @€� @ úB‡ê» @€�(¥€Ð¡”îÓ @€� @ úB‡ê» @€�(¥€Ð¡”îÓ @€� @ úB‡ê» @€�(¥€Ð¡”îÓ @€� @ úB‡ê» @€�(¥€Ð¡”îÓ @€� @ úB‡ê» @€�(¥€Ð¡”îÓ @€� @ úB‡ê» @€�(¥€Ð¡”îÓ @€� @ úB‡ê» @€�(¥€Ð¡”îÓ @€� @ úB‡ê» @€�(¥€Ð¡”îÓ @€� @ úB‡ê» @€�(¥€Ð¡”îÓ @€� @ úB‡ê» @€�(¥€Ð¡”îÓ @€� @ úB‡ê» @€�(¥€Ð¡”îÓ @€� @ úB‡ê» @€�(¥€Ð¡”îÓ @€� @ úB‡ê» @€�(¥€Ð¡”îÓ @€� @ úB‡ê» @€�(¥€Ð¡”îÓ @€� @ úB‡ê» @€�(¥€Ð¡”îÓ @€� @ úB‡ê» @€�(¥€Ð¡”îÓ @€� @ úB‡ê» @€�(¥€Ð¡”îÓ @€� @ úB‡ê» @€�(¥€Ð¡”îÓ @€� @ úB‡ê» @€�(¥€Ð¡”îÓ @€� @ úB‡ê» @€�(¥€Ð¡”îÓ @€� @ úB‡ê» @€�(¥€Ð¡”îÓ @€� @ úB‡ê» @€�(¥€Ð¡”îÓ @€� @ úB‡ê» @€�(¥€Ð¡”îÓ @€� @ úB‡ê» @€�(¥€Ð¡”îÓ @€� @ úB‡ê» @€�(¥€Ð¡”îÓ @€� @ úB‡ê» @€�(¥@c){­Ó @€�[`å+úwÏœž÷ó©åÎ}ꮈºù=¿Î™6'°ÿñÃÇnî,Ç H¡Ã€V"@€�”\àåg6�<qgDúôd[`vÖŒˆyWEÜ-tè ™sz(0svÄá³zx²Ó ,¡ÃÀO½!@€�H»°ÁaêÑÙ_öfnØßÜŸOf3îz)âÈŒØkøæÎvœÀæÒL›ž†^›¯Í ) t(ä°i4 @€@RàÐÓÿ¼>›Ýp×#¦•]“f=Øô‚€Ð¡UQd Iyô´� @€�Ô°€Ð¡†GÓ @€� @€@‘„E=m'@€� @€�5, t¨áÁÑ4 @€� Pd¡C‘GOÛ  @€� @€@ jxp4� @€�Y@èPäÑÓv @€� PÃB‡M#@€� @€�E:yô´� @€�Ô°€Ð¡†GÓ @€� @€@‘„E=m'@€� @€�5, t¨áÁÑ4 @€� Pd¡C‘GOÛ  @€� @€@ jxp4� @€�Y@èPäÑÓv @€� PÃB‡M#@€� @€�E:yô´� @€�Ô°€Ð¡†GÓ @€� @€@‘„E=m'@€� @€�5, t¨áÁÑ4 @€� Pd¡C‘GOÛ  @€� @€@ jxp4� @€�Y@èPäÑÓv @€� PÃB‡M#@€� @€�E:yô´� @€�Ô°€Ð¡†GÓ @€� @€@‘„E=m'@€� @€�5, t¨áÁÑ4 @€� Pd¡C‘GOÛ  @€� @€@ jxp4� @€�Y@èPäÑÓv @€� PÃB‡M#@€� @€�E:yô´� @€�Ô°@c ·MÓ @€� @€�~hmmôY·n]455埆††µJèÐ#&' @€� @€�r ¤ aíÚµùgÅŠÑÜÜ)l>|xŒ=:ÿ:th^Ö•ŒÐ¡+å @€� @ ¤)`HAãZ?¸oiÜÿL],iØ.Fï<$NÚmy>Ṙ6i‡˜8qbŒ3¦K%¡C—4 @€� @€�ò ´´´Ä’%Kâ?nûK|ïŽÕ;e¡ÂØíóÏ ÃãšÍ1ÿÉæ˜¾lIµü‘Øo¿ýbĈB :eQH€� @€�Ê'°~ýú|†Ãwoûs|ï®UqôIoˆ;µFl7,bÌàØ{û!±g<ì4¤>ž~idl÷ç?ÇvÛý1¦NÚið t(ß?CzL€� @€�:HU,|nI<õÒ øÈYûFëÐ1~B]|áš1¤)vÚ; c†Š¡£†ÅŸŸiˆ?ý屨a‡—b§vÚ¤N¡Ã&$  @€� @€@9Ò*~õÀ’xÓ~»Æè±#¢µiH ]WñüºØ½±)FdŸaÙ,¶<$ ‰Øa—í³bTLzñÅNÁ²+m @€� @€�ÈßPñÜ‹­±C8 2(76ÄÆìqІúÞXƒê룩aPDöÆÌôÖÌ¡#†Æ‹-#céÒ¥ò™éÐ)‹B @€� P>ôšÌ¯F ÚnH4Ô7Dk]CÔ××å3Ò¬…Ö,thºhÉ~´ÔEÔ jˆeuCò×jv¦%tèLE @€�(©Àšu-Yšu¾®.Ö¿f°2ÛÉÖ˜ŒÖÖºhξ×f§4fëKÖ¥�"+KaEg›Ð¡3e @€� @ ¤--)aȇôÉC…ˆ¦õÙ ‡ì³&KÖ6gadÓÖe9C}–D¤Œ¢«MèЕŒr @€� PBôÚÌæ,p¨Ï‡4¡5Û_ž#³ý64g3RàЇ Y‘íwµ º’QN€� @€�J*­ÙRÙzé{} j¬‹lù†üÓÔ°>²õ%óý´ÎàôG›Ð¡ Å @€� @ ŒiâBZ·¡>ÍlHë8dŸuÙk²ßé³.›é¯éðÚcf:”ñŸ}&@€� @€�[!Mlȃ†|È´Ÿ ˳€¡5}Rð}7eŸÆì“VšlIß]lÝL‚èâ Å @€� @€À€Ȳ„lÛðgúš}ÖeŸÖìGZ<²þµCÙ²iÍÉ.7WtIã� @€�(§@ZÏ¡.­ç… õ Ù‹1³‚´vCS*Ï> Ùš铎g‡»Ü„]Ò8@€� @€�Ê'B…:¤Å$óµ²Ù C³ßi!ÉÆ,ahʾÓgHöI›…$78ø“� @€�è@ö²Š<xH¹BzƒE>«!û‘‚‡Áé;+”?cQ—¿É¢«*ÍtèJF9 @€�(¡@>Ó! Òc•С)6Ì~È_™¥ MÙ'åéXW›Ð¡+å @€� @ ¤éñŠ4Ã!… •™•Ç*Òw>Ó!ûN‹J6¦d¢‹MèÐŒb @€� PF´€dCåóÚB‘)dHáBšÕ‡ëóÇ,’OSþ˜EçRB‡Î]” @€� @€�Ò ä³²€¡2Ó!-*™‡<¤�¢2ë!OǺڄ]É('@€� @€�%È­Èú]ùÎ×xhȣȆ6T‚‡´¶C] ²ï®6¡CW2Ê  @€� @€@ Z³ !ûÿùÙ’ ¾[ë¢e}]4·F´fŸuÙ'í§Ð!ýîj:t%£œ� @€�”T ÍÙ§% Ò~únnɾ³ÏÚ´Ÿ}Ö5oÀIDW›Ð¡+å @€� @ „ë³!… yà}·f©Ãº,lHáBþIûYà°&ûÖtX×’½ê¢‹MèÐŒb @€� PVôÈDþI3²G+ò™ i–CöI3Öfei*Dl8Ö•“С+å @€� @ „i‡¶G*²þ§ýÕÙ'ÍrHW¤ƒ²ïÆì;-þàñŠþC¢Ë @€� @`kÖdL´æ3²™ Íu±fmÄÊìÕ˜¯Ž¼&Û´>š³YÙY±";ÖÕf¦CW2Ê  @€� @€@ Ò+2òOzMfzuföªÌìwk¶ß”}›Ò«3ëcpS6Ñ!{£Å ¬¬«MèЕŒr @€� PB†,u¨Ïž›¨Ï‚†8Ôg;M C³U#³¬!gåéÓ˜ý®Ëž½hÌŽuµ º’QN€� @€�J(PŸ…uYè°á“ÍzÈ‚†úº–h¬«Ïf5dÁCD4dßYðífÇZ³`¢óé—–U—  @€� @€@ÙRx0hðúX³bu¶€dZ)²5Ög¯±XÜÜœ­íÐ’=NÑš…-ù ‡úl͇ÖìuÃbM 4¨S:¡C§,  @€� @€@ùcâ.Mñ·¿.‰æuëbݺ–X…¯dïÌ\‘}¯jiŽUY�‘G¶«–­ˆcil¿ýöb :eQH€� @€�Ê'ÐÔÔï8x‡øíËⱿ¼‹W¬‰§^\‘¥ ­± ›Õ°dUs¼ºrm,[¹2–.[Ï>ûrì9biŒ7®S,k:tÊ¢� @€�”O Ít˜4atì¿Ëâ¸rÎüxû»ö;þ’Mi9<-Þwg 9ØÒ;¯­º—–Å!Ûý5¦ì¶Cì°Ãb :eQH€� @€�Ê'P—½¹bذañécíú?Çœ>1fTÄ«#ÆŽŒxµ)æ¯[nls&½‡ïÑ{î¹g :´S,¡C§,  @€� @€@9b̘1ñáƒãí·8¾÷’¸ÿéçcɲe1zÂà8fºxǤˆ}&‰'ÆèÑ£³&³×Xt² :AQD ,k×®'Ÿ|2î¼óÎ8úè£c¯½öêrÕÙ²˜è' @€�é1‹Q£FÅ›þnxì¿÷.±bÅŠìíÍ‘‰áÇçACúN3RY:ÖÙ&tèLE’¤Àá–[n‰=öØ#.\˜ÿ còäÉ%é½n @€� Ð@z}ævÛm—?n‘f3¤--4™>C† ÉÆtNw›Ð¡;Ç p»îº+=ì°˜4ib 6<֬ɞӲ @€� @ @ Òl†ôI3 ÒwZû¡'›Ð¡'JÎ!0@þþïÿ>û—E}L›:5Ò¿H–/_>@{ª[ @€�ô‡€Ð¡?ÔÝ“@L˜0!›Ý°&Z[[ceöžÝ®©‘æj @€�:lÀ4—@o 4(_8rݺuù©Þ¬[] @€�è~Å> @€� @€�­:l%œË @€� @€�î„Ýû8J€� @€�l¥€Ða+á\F€� @€�t/ tèÞÇQ @€� @`+„[ ç2 @€� @ {¡C÷>Ž @€� @€�[) tØJ8— @€� @€�Ý º÷q”� @€�ØJ¡ÃV¹Œ� @€�è^@èн£ @€� @€ÀV ¶Îe @€� @€@÷B‡î}%@€� @€�¶R@è°•p.#@€� @€�º:tïã( @€� °•B‡­„s @€� н€Ð¡{G  @€� @€�­:l%œË @€� @€�î„Ýû8J€� @€�l¥€Ða+á\F€� @€�t/ tèÞÇQ @€� @`+„[ ç2 @€� @ {¡C÷>Ž @€� @€�[) tØJ8— @€� @€�Ý 4vØQ лsæÌéÝ ÕF Ž?þø;vlÜÉ- @€ÀÀ: ¬ñÔÔ¼ÀwÞéc#P$Ù³gǬY³ŠÔdm%@€�5! t¨‰aÐ |3f üNêá€H3s„dnXuˆ�úP@èЇØnE€�2 Œ5Ê).ó?�î»Ð¡Àƒ§é Ðï’ì÷!Ð� @€� 00„s\õŠ� @€�ô»€Ð¡ß‡@ @€� @€ÀÀ: ÌqÕ+ @€� ÐïB‡~ @€� @€�S@è00ÇU¯ @€� @€@¿ ú}4€� @€� L¡ÃÀW½"@€� @€�ý. tè÷!Ð� @€� 00„s\õŠ� @€�ô»€Ð¡ß‡@ @€� @€ÀÀ: ÌqÕ+ @€� ÐïB‡~ @€� @€�S@è00ÇU¯ @€� @€@¿ 4ö{ 4€� @€�¶Z`Î[}i¡/<~bÄØ!…îB)/t(Å0ë$ @€�UàοF¤OÙ¶ÙGGÌšV¶^¯¿B‡â™ @€� @ fL.'BšÙQÆ¥¨£-t(êÈi7 @€�¥5¨¼ÿ¥_èPœô-$Yœ±ÒR @€� P(¡C¡†Kc  @€� @€@q„Å+-%@€� @€�…:j¸4–� @€�G@èPœ±ÒR @€� P(o¯(Ôpi,Qàî»ïŽÅ‹±éÛÜæ±cÇÆG±Íõ¨€�(¦€Ð¡˜ã¦Õ P 8<÷Üsj±¦ @€�zG@èÐ;Žj!@€�›<xp¤ÿò_†--kÖ¬)CWõ‘�èF@èÐ bо�� �IDATŽC @ 7Ràpâ‰'öf•5[×ܹsÍî¨ÙÑÑ0 ÐwB‡¾³v' @€�lV`Μ9›=§L'üñ¥™)8ÇUè0GUŸ @€�(¬ÀwÞécÛ 0{öì˜5kŽ‚  :pšM€�ŸæškâG?úQ¼úê«mÙc=â£ýhì³Ï>meµº³hÑ¢¸üòËã÷¿ÿ}Ü|ó͵ÚLí"@€@¡f̘Q¨öV»±iƇð¥ÚÊÕ¯_èP}cw @€�›œqÆÑØØïÿûócãÇÏÿò>dÈMÎí«‚{î¹'n½õָ袋º¼åï~÷»øú׿×_}¬]»6:è .Ïu€�¶L`Ô¨Qþ‹~2¡Cþ¬/`›5™� C=´­p@ôgàðâ‹/Æ©§žºÑÌ‹¶ÆµÛimmÿ÷qãÆµ+µK€�è\@èй‹R P3Ë–-‹%K–l¶=/¼ðB¤Ç¶tKuOŸ>=ž}öÙÍ^zÈ!‡ÄèÑ£câĉ›=×  @€�Wøg€�ÔÀW\\pA¬[·.Î;ï¼XµjU¤õÒv 'Äu×]—?–ñ½ï}/Î>ûìX¹re^^__¿ùÍoâoû[¤U¾¿óïÄöÛo—]vYœþù±~ýúøøÇ?ŸùÌgâœsΉn¸!¯óÆoŒ?üá±`Á‚üw*¿ÿþûóõÞð†7äeÛòÇÓO?W_}õ¶TÑë×Z½×IUH€�º:tIã�è{\zé¥ñàƒÆÜ¹sópàÄOŒ´¸X î¸ãŽ8öØcã´ÓN‹+¯¼2ÿ=oÞ¼Hë1Lš4)_„ò–[n‰ÏþóqÉ%—Ĺçž_úÒ—â™gžÉƒ‡ô¼pªÿ?øA[çÒ¹iQˇz(N>ùä|͆¶ƒÛ¸sï½÷Æ÷¿ÿým¬¥w/· zïzª�t' tèNÇ1 Ѓ Êïzä‘GFzœ!-ØXÙÚ?Q9/³×^{姤ý?þñùìˆ:¤­©©)ÿ®ü1xðàÊnÕ¿;ì°xç;ßYõûôäVAs @€@ï z×Sm @ ×ÚêliiiÛïlg·ÝvË‹/^Ë—/áÇwvZŸ•Mž<9ÒLZÙ¬‚^+#¡ P I–e¤õ“�J!P™ý‚оœÑP \$@€�¶X@è°Åd. @€�µ+ðüóÏç›:ujÛcuuuµÛ`-#@€�´€Ç+ôðêÔ²@ûõ*aAjïêÕ«óf777çßéM•­ý~¥ì±ÇË¥H3þë¿þ+/þÄ'>Q9&Lˆ'Ÿ|2y䑼îŸýìgmÇÒci6lXþýðÃç J¦7XÌœ93/ëøGzÄãÑGÍ‹+ T 6:*ùM€�v÷Ìi÷Ãn—û1|l—‡(¦€Ð¡˜ã¦Õ PpôJËôV‰Ê6þüü/ù{î¹gÛ_èÓ›*Ò›)~ò“ŸTN‹ôJÍãŽ;.vß}÷¶²Ñ£GÇ{Þóžxâ‰'â/ùK¤ÀáÌ3Ïl;þ©O}*¯óöÛo´æÃÇ>ö±üØ{ì7ÝtS¼ímo‹~ðƒ‘Þ4q×]wÅW¾ò•ü•™m´ÛI¯¿üéO¯¼òJ^úòË/ç¯îLo×H¯¢´ @€@'OÜ‘>¶îfÎŽ8|V÷ç8Z8¡Cá†Lƒ  @` œ~úé‘>mÿú¯ÿºQqz‹ÅE]´QYûãÇÿüÏÿÌC‡±cÇÆ˜1cÚŽéÓ§Ç_ÿú×X°`AL›6-Ò¬„Jì¼óÎm祷_¤à¢¾¾>vÜqǶòŽ;³fÍŠô¹öÚk;ò›�: 0#¢óIcÏ,÷ï4D(3`ÿ: Ø¡Õ1(‹@kkkÞÕ´ŽCW[ZXò oxCÛáöC¥0…6èE¡£ü—ûžr z*U¸ó„…2 &@€�¢ ¤õæÎÛ+Í_¿~}>s!Uö›ßü&n¼ñÆhl¬ÿ³^Y+¢W:« @ °µó¿N K¨á @ gkÖ¬‰çž{®g'oæ¬ßþö·1yòäü“N½êª«â]ïzW¤ 6 @€@­je$´ƒ�¬@Zg¡··´þB¶qãÆ¡™ÕoãÊláÍnªþ}zûV’ïmQõ @ tB‡Ò ¹ @€@_ qÄ}}K÷«58Ìyý"µÖ¼.Ûc%ù.i @`à ¬^×Cšü•y[Gšà¶ ºž� ÐS©Gg‹Ê`){+É÷tDG€À�¸÷OÏÆO,ŒÏpô�îeõ»&t¨¾±; @€�6¤À¡(ï ·’¼j  Ÿ¿ù—ÑÒº>þí¤·ÓØJú­¼Îe @€� @`À \të¯âÿøŽßÏjuPèP-Yõ @€� @€À€<lý0 ¶ÞΕ @€� P<|îæ;KÒÛÞë¦5zÏRM @€� PPïÜû`\5ïm­eåê¶ýÊNZãaÑÒåqØ»VŠ ñ}üßM±Ã‡öK[…ýÂî¦ @€� PK)p¸óñ…›mÒc‹Çüê÷›=¯–N˜=뤘uÄýÒ$¡C¿°») @€�ÔªÀÑÓ&Ešé0ÿ/‹6jâ‡ßvp|訃â¡ç^ب¼V̹ç)Õl¿Ð¡šºê&@€� @€�B ¤À᎙™ÿeýí_ÓÖöÿ9ý¨ø·oÆúúxÓÄ]ÚÊk}§'³7ªÙ¡C5uÕM€� @€�…øÌqo;éí…ïGtÀÛ+úCÝ=  @€� @ 鑊Ϟð¶B´µi¦C-ŽŠ6 @€� @€@¿ ´¤¢ßSÐ :pšM€� @€�ÕH¯ÅLë;ضMÀãÛæçj @€�€Cšü7úÞV¡Co(ªƒ� @€�ØD@t³ ‰ @€�¨ºÀ‹OE<u׆OºYÚOÛø½#&¶a¿ÝŸÍ­ßÿcÄ]‹6V¾Ó¯Ó÷ŠìU–íN¶[3†¥f†BC @€� P2kÎŽ˜wÕ†N§ï9gF¼´°S„*\µ`Ã'öϼ3â?8t V#…B‡Í @€� @€@©ÆM‰˜rÔÆ]>6bÿã7.k÷kæÔv?^Ûí¬lÓ³”ô—€Ð¡¿äÝ—� @€�e8|æÆo<9bððËÚý:yˆáM¯ iˆø‡,»°Õ®€Ð¡vÇFË @€� 0°þ‡ˆ‘ã_ïcÇâõ#ù^ >”-ùPÙfLŽ5¨òËw- jqT´‰� @€�ehñæ,xHÛ.ûEL<8^yå•X¸pa,^¼8/Nßéw*OÛÌiùWþÇG²Klµ- t¨íñÑ: @€� lÃ^{ÄâDÔ7Æ×¾öµ˜<yr\xá…y¿ÓwúÊÓvà>û‰8x\^äh¬á¶i @€�P`msK¬É>=ÚÆíCw{S¬:ð}±~õÚøÐ¹çÅ)§eD‡mûQÛÇ«Ùñ´ýÞ ±:«~ÕÚÞ£C]ýli]Ÿ§ïtŸÁ 1(ûضM@è°m~®&@€� @€�_øÉ¯ãó7ÿ²Ci×?Ž7ÅïþõÛ]ŸÐñHc¶Ød}}|ní²ŽG¶ù÷¯Ÿ|&Fþóãs'Ÿ=ámÛ\_Ù+ðxEÙÿ Ð @ v–oxž¹v¨eèßÅ.[VQóòˆ*[Ög÷D@èÐ%ç @€�úC`îÿޏÿ†þ¸³{ @€�^ðxE¯0ª„� Pu«#®8%âô+#ŽúPn JTGà½ë-ñ‰¿?¢:•÷Q­ƒ¬çÐÔB‡ÞPT @ šß9;bøØl¹öÕ¼‹º  ÐkiF‹0ög¡+òxE¡‡Oã  @€�Ò\uZÄü›JÓ]%@€�!`¦ÃÀG½ @€�‚Ào¾1ïª×{²hÁëûéQ‹Ëß1svÄ®F<;ÿõc½½wÏœ 5V¾{»þ¾¨¯Èmï ÷ @€@ úÚm @€�›HÃwvÚœ3#Þ”­óðût^oMmÙ\{zã>ê @€�+ t°C«c @€@¡¦‘f:,[´q7ÆïñÖó"ö{÷Æå~u.°ÿñ—+%@€�>:ô ³› @€�¶@ ¿#"Íj¸çê×/LÃ?‰ØaÒëeö @€@ jxp4� Ð&°[¶ŽÃG~¶á-m…v P»K–,‰¯~õ«ñðÃÇÈ‘#cûí·æææ8æ˜cbÙ²eQWWguV¿wà¶Ûn‹/|á ñôÓOǘïï¿ÿþýÞ®Ò�¡Ã@Iý @€�®À.û îèê)ðóŸÿ<fΜ™÷mÞ¼y1qâÄ|ÿ©§žŠ“N:)}ôѸì²Ëú½ï?øÁâÔSOmkdzÏ>©½>ø`ìºë®måv¶^À+3·ÞΕ @€�ê Œ›²á‘Šác«/w @€@/¤'žxb<÷ÜsùL‡Jઞ2eJü⿈Q£Fõ¶­Š•+WæÁÇ~ô£øíoÇ¿a ˜4Cãúë¯ß¶Ê]Ý&`¦C… @€@ ìz@Ä{¾1r|5Ls еÀ¹çžé/ôC† ‰ãŽ;n“wÚi§¸øâ‹7)¯,Z´( cÆŒ©uúÑhii‰Ñ£Gor¼'u,X° ®ºêª˜<yr~ýœ9s"µ-=òâ‹/nR§‚­:l›« @€�Õøo­þ=Ü�½(ðÊ+¯Äí·ßž×8iÒ¤>|x§µøÃŽ+Vlt,…�gœqF"¤õ–.]7ÜpC¾ÄW\\pA¬[·.Î;ï¼XµjU\sÍ5ùõ'œpB\wÝuÑØØÝÕ±ÑͲo|ã7*J!Gz¤báÂ…ñ–·¼e£c~l½€Ðaëí\I€� @€�íÒ¢‘•mܸq•ÝM¾ëëëcĈmå«W¯Žw¿ûÝù_øÓ,‰†††<°8í´ÓâÖ[osÎ9'.½ôÒ|­…¹sçæaDz„cÆŒqã7ÆwÜ‘ÝÕÑv³.v^xá…üþ‡vX¼ãïèâ,Å[* tØR1ç @€� @€@§/½ôR[ykkkÛþævÒ i-ˆ4Ó =–‘¶±cÇFz³ÄË/¿œ?j‘¹HÛ‘G‡rH¬]»6ÿþH @ö¤Ž¶ :Ùùâ¿;ï¼sbTîÕÉiжP@è°…`N'@€�Š%žÍýØÇ>óçÏÏžžßýå/™ÿÚo|ãùtÜbõHk  P»ûî»o[ãzè¡X¿~}þjÌTøÍo~3¾ûÝïÆý÷ߟŸÓÔÔ§œrJ^žÞf‘¶ôHÅé§Ÿžï§º¦M›–/HÙÙúi6DeKk;<þøãùÏ-©£r}jÓøÃøéOš•rßÛ. tØvC5 @€�5,žñ]¼xqÜu×]y+Ówú¤)¹é˜�zO`Ï=÷Ìg%¤Ù i¡Ç´>Be¡ÆóÏ??Ò£ o~ó›ó¦ ³gÏÎ÷+³"Òì…«¯¾z«þý¼µu¤E#?ò‘DzÍç^{í•·'½63-*™Þ¶aÛ6¯ÌÜ6?W @€�¨¼+¾}S;+kÜ>l¹@Z«áË_þrÛ…<ð@Û~Ú™0aBÛï=öØ£mêÔ©ùþš5kâ¾ûîk+O G¦k=Ù¶¦Ž´ å{ßûÞ8õÔSã±Ç‹›nº)£EZÐ2…¶m:l»¡ @€�H ‚¥ç„+Ûøñãcúô镟¾  @ Î:ë¬H @¦í’K.Éß8Q©>ý%¿³íä“On{¬!͈H R¦ÇâR]•×W¦Å&ÓV !R QÙÒ~OꨜŸ¾Ó#ï{ßûòÙoÿüÏÿ'tR¼ç=ï‰}èC1tèкlý-:l™—³  @€� ¤Ç(fÍšÕÖòôhEe¡²¶Âv;é•oiJpz,#mé;ýNå[´­ÌÎiaÄò õäßéwú¤c6 @ººº¸öÚkã;ßùN<õÔSyÈ{ùå—Ç÷¿ÿýHBZË!ý{øÌ3Ïlëý¨Q£òYi¶BZ_aÿý÷σ‹üãyqå•WFe݇ô¦ŠôøÃE]Ôv}z¥fzœ#ÍT誎¶“_Ûùô§?7ß|sÇâü÷¡‡Úi¹Â-ð ã–›¹‚�( À>ð¶ÿšžÝínûÚ×¾ŸÿüçÛN¹ð #}>ûÙÏÆç>÷¹¶òÍîüâk·¼^OüðÂÈ?éÂã?›}>·Ù*œ@€�¢ ¤ï¦ÏóÏ?ŸÏ\H ?~ë[ßÊgžu¶¦Nz#EzÄ!-™fLœ8±­ëgŸ}v¤Oû-­ Ñ>xHÇvß}÷.ëhmÚO´¤ãq¿{G@èÐ;Žj!@€�j\`ï½÷Î0KÍLûÝmýèG7šQ97ý—¸-ÚŽùhÄá³:¿d»-¬«óZ” @ æÒÚ=]!­ ±Ï>ûlSŸz£Žmj€‹7:lÄá 0 š³w·7¯Ù¤+3ßÿ¾ e«_ÝäXû‚QCbÔøÚ½¾¿™k_?1Û«Ï^ç6¬‹zÒ‰ëjmÙpyúNÇgŸ ï¥ßpÀŸ @ XB‡b—Ö @€�=¸í ?ÖðÚ5ÿeùöѽ¶S£_Oý:â£#7<~‘ð @€�‚  :pšM€�l¹À(“¶Í @`¼½bð\J€� @€�t-`¦C×6Ž @€�E˜þ¿"ŽýDQ[ÿz»LÍxÃQ@èPÄQÓf @ {´ø¢»7r”�ô€Ç+ú�Ù- @€� @€@„eu}&@€� @€�} tèd· @€� @€�e:”qÔõ™� @€�ô€Ð¡Ý‚� @€�”QÀÛ+Ê8êúL€�J"°dÉ’øêW¿?üpŒ92¶ß~ûhnnŽcŽ9&–-[uuuqÖYgÕ„Æ¢E‹âòË/ßÿþ÷qóÍ7×D›4‚�l«€Ða[]O€�Ô¤ÀÏþó˜9sfÞ¶yóæÅĉóý§žz*N:é¤xôÑGã²Ë.ë÷¶ÿîw¿‹¯ýëqýõ×ÇÚµkã ƒê÷6i�è-Wô–¤z @€�šxúé§ãÄOŒçž{.ŸéP R§L™¿øÅ/bÔ¨Q5ÑÞÖÖÖø÷ÿ÷7n\M´G# @€@o zSS] @€@Mœ{î¹±råÊ2dHwÜq›´i§vŠ‹/¾x“òTsxùå—;=Ö¾0=ž‘ßèjëi=‡rHŒ=ºm&FWõ)'@€�EðxEGM›  @€�.^y啸ýöÛóã“&MŠáÇwzî‡?üáX±bEÛ± Ägœ‘�i퇥K—Æ 7ܯqÅWÄ\ëÖ­‹óÎ;/V­Z×\sM~í 'œ×]w]46nøŸUÝÕÓv3; @ $B‡’ ´n @€�²¤E#+[w,Ô××Lj#òSW¯^ï~÷»cáÂ…ù ‰†††<¬8í´ÓâÖ[osÎ9'.½ôÒxðÁcîܹy‘ߘ1cFÜxãqÇwıÇ›«§Ò.ß @ ,B‡²Œ´~ @€�’¼ôÒKm=Më%ôdK‹8¦u vÝu×ü‘ŒtÍØ±cã¶Ûn˵3fL 4(¯êÈ#ŒôHDZô±²=ûì³ùnOê©\ã›�”A@èP†QÖG P"}÷Ý·­·=ôP¬_¿>5f*üæ7¿ßýîwãþûïÏÏijjŠSN9%R¨¶ôHÅé§Ÿžï§z¦M›–/FY9žxí4¢²µ´´ä»éiÛ’zò üA€�¨€Ða€¬n @€�² ì¹çžyˆƒL‹=¦G&&OžœsœþùqØa‡Å›ßüæüwšµ0{öìøä'?™ÿN³®¾úê¶õ¶Ô°2³b[ëÙÒû:Ÿ�Ôª€·WÔêÈh °Ui­†/ùËm×>ðÀmûig„ m¿÷Øc|êÔ©ù÷š5kâ¾ûîk;žŽlnnnû½¹Þªgs÷qœ�E@èP”‘ÒN @ ÇguV¤E ÓvÉ%—äo¨\œÞ<Ñq;ùä“cçw΋Ólˆ´åüùó#Õóâ‹/æåi‘È´UBˆHT¶Ê~Oê©\Óþ;=žQy4ã™gžÉ iÜ>(ª€Ç+Š:rÚM€�t)PWW×^{mwÜqqá…ÆôéÓóµFßþö·#­åŽyæ™y©ü¦›nÊ_™™Ö{Øÿýcï½÷ÎëHaÄ•W^Ù ¤7UÌ›7/~ò“Ÿ´Ý?½R3Õ·ûî»w[OÛívÒã?ýéO#½ê3mé±³Ï>;3ÆñÇßîL» @ xB‡â™ @€�=øÀ>éóüóÏç³ÒâßúÖ·ò·T46nü?ƒÒ){ì±xüñÇcèС1qâĶ»¤ }Úoi=ˆ‹.º¨}Q¾ß]=›œœÌš5+ÿ¤ÄF€�šÀÆÿ×v õN @€�™ÀN;í”6‡‘ÖƒØgŸ}6wÚf÷V=›½‘ @€@ XÓ¡ÆHó @€� @€@Q„E9í&@€� @€�5. t¨ñÒ< @€� PT¡CQGN»  @€� @€@ j|€4� @€�U@èPÔ‘Ón @€� PãB‡ Í#@€� @€�E:uä´›� @€�Ô¸€Ð¡ÆHó @€� @€@Q„E9í&@€� @€�5. t¨ñÒ< @€� PT¡CQGN»  @€� @€@ j|€4� @€�U@èPÔ‘Ón @€� PãB‡ Í#@€� @€�E:uä´›� @€�Ô¸€Ð¡ÆHó @€� @€@Q„E9í&@€� @€�5. t¨ñÒ< @€� PT¡CQGN»  @€� @€@ j|€4� @€�U@èPÔ‘Ón @€� PãB‡ Í#@€� @€�E:uä´›� @€�Ô¸€Ð¡ÆHó @€� @€@Q„E9í&@€� @€�5. t¨ñÒ< @€� PT¡CQGN»  @€� @€@ j|€4� @€�U@èPÔ‘Ón @€� PãB‡ Í#@€� @€�E:uä´›� @€�Ô¸€Ð¡ÆHó @€� @€@Q„E9í&@€� @€�5. t¨ñÒ< @€� PT¡CQGN»  @€� @€@ j|€4� @€�U@èPÔ‘Ón @€� PãB‡ Í#@€� @€�E:uä´›� @€�Ô¸€Ð¡ÆHó @€� @€@Q„E9í&@€� @€�5. t¨ñÒ< @€� PT¡CQGN»  @€� @€@ j|€4� @€�U@èPÔ‘Ó»¥=��„IDATn @€� PãB‡ Í#@€� @€�E:uä´›� @€�Ô¸€Ð¡ÆHó @€� @€@Q„E9í&@€� @€�5. t¨ñÒ< @€� PT¡CQGN»  @€� @€@ j|€4� @€�U@èPÔ‘Ón @€� PãB‡ Í#@€� @€�E:uä´›� @€�ô±Àúõë·èŽB‡-âr2 @€� Ð^ » BèÐ^Ê> @€�(±@wBw,]]'tèNÍ1 @€� P"ÆÆÆõ¶«¡ãÅB‡Ž"~ @€� @€�’ ,]º4z($¢Ê¹/¿ür§bB‡NY @€� @€�ò ¬^½:š››·¨ãéü+VtzСS… @€� @ |‹/Î„Ê †ž¼ð ]B‡ž:‡�ÿ¿½»û£ÊÓ8þkÛíö+q0qH‚)YÀH(¼Ȉվ€«]e¢ ³BqÁq—pÄŸEH / BK´ÊÜDb.€Õ*BÃA^¤ °K^HÇŽínw·÷÷û˜²«Ûqe½t}k¦RÕ§ªËUŸ„ãÓOŸ:…� €� €�ä@`rrÒÆÇÇmttÔêõúe¯XÁ„nÇÐ{š’¡@�@�@�œ Ôj5Ûºu«™Æi¨T*©ðAaƒ‚†³gÏÚ¹sçlÍš5³c;ÌçZÚ°”óßÅk@�@�@�h:õn(‹vçwÚñãÇCð 'Ztww[GGGÊår¸î––ëííµ®®.B‡¦û—À!€� €� €� ±€z1(L(•JvóÍ7ÛéÓ§ÃíêÙ YÛB(˜Ð>===áõB§AO‡…d(G�@�@�@ g  …BÚÛÛmÆ 622—Ô­ 4ÇÐAK½Ö{M„T(C�@�@�@ Ç 4·¶¶†[(,ÄÇbª§Cr¾I^N‡m €� €� €�äP †1xP¯ ±WƒÂ­Ç× ÑÓa!Ê@�@�r)°ï‹¯ryÝ\44ŸÀJë³<è– … ºÍBc8İa±ÀA¢„Í÷ïŠ+B�@�XÀ§Çþlš™@�¼ Äq¦¯z¬†ÑÑQ{íµ×쥗^ ã<h[ %.çDèp9¶!€� €�äFà±;Í~Ÿ›ËåB@ G¿õæ+¾Z©páý÷ß·¡¡!{ï½÷ìÅ_ ÇSùb¡ÃbBlG�@�È…@_W‡ý~û¹¸V.XŽÀ7ß|c‡ o9räˆ>|ضoß¾¤C0ä’˜Ø @�@�@�ü T*Û»wïœ ÷ÝwmlllNÙB/’¡@�@�@�œ <xÐ~øá‡9 .\°Ì)[è·W,$C9 €� €� €�9xì±ÇìÑGµZ­f/^´jµjÅb1ÌK¡!tXŠû €� €� €� C=*³^¯[|¢E|b…—¹”ii{-åHìƒ� €� €� €�$¬"€� €� €� €@v„ÙYr$@�@�@�H:$0XE�@�@�@�ìH2;KŽ„� €� €� €À/Z T*ÙþýûMHj°H ÙÑÑæä ’Ú¦}ÚÚÚ¬³³Óz{{^7¡CC @�@�@�ÈŸ@¹\¶Ý»w[OOOxL¦žZ¡§Wè‘™ÃÃóÌloo7Í $4;v¬!·W4d¡@�@�@�V*@è°RAÞ� €� €� €� ²Pˆ� €� €� €�+`L‡• ò~@�@�@�šT@c9ÌŸ5ˆ¤Ê–2:,E‰}@�@�@�È¡ÀÇlo½õ–i@Éjµ–zŠÅƒ>hÏ>ûì¢"Ü^±(; €� €� €� OGyĶlÙ2çâõxÌ;vÌ)[è¡ÃB2”#€� €� €� sÖÖVÛ³g©wCœvîÜ©__nIèp9¶!€� €� €� cÝV¡žêñ ippÐî¿ÿ~«×ëáV‹Åhb; €� €� €�9PØ'­?ùä“Ößßo»víŠÅK Hr–‹@�@�@�h$ÐÞÞn/¿ü²i<õrˆ³žb¡§Y,4-¼e¡wPŽ� €� €� €�M+ ñÔ»!Î *•ŠuuuÍ 8ÄÛ,’=#’0ôtHj°Ž� €� €� €@Î’aƒ‚…±±1»té’i=9 ¤ÖF”J¥9åI>B‡¤ë €� €� €�äX@·J(\¨V«!h¶ñññУA!ƒ¶ë‰êá ýb‡¸œOGè0_„× €� €� €�äT@Âwß}gç㉉‰ÐƒAã9¨7ƒ¶ÅÐ!.‹Åbèí@èÓ0\6 €� €� €�KµX[[[.ttt„Y=bo-c¡@b`` á §CC @ ¼þúë¦d3vR‚+-U)Ý\·n]H?U!é¾.MÚ΄�ä] v?UݨºTs³Oj„jÖïØ mökæú@�ÅbO�Õº]Amå‘‘‘pƒneÐvýÎÐ÷]ì˜ÉíÛ·o·Ï?ÿ<Y´èúüvýÅ‹íùçŸ_ô}ËÙÐa9Zì‹@Êå²=ôÐC¶yóæ9ÂQ…¨m_}õUX*|ˆ Kj›¬ÀrÈÆ%#€�A@ƒ¾1úþÔˆýlj²]m·Éj«×‘~/¬ïQðG ·§Zå´ÞÞ åæK­ûÿ§¡¾¢}5i¿ꆥ¯{Y‹þðiµŽQ¯ùç~z,šžšÖÙ9e½¥KvÇæ²Ý¸q¿î ¿#ÂIò C…qV;Zõ¢~Gèñ“úÒîî»ï_æ¼B×ÿ®dÒ-»víºì[uú—ÚYë:—ï¿ÿÞ>ùä“˾ÿJ6:\‰ïA G Ô`V"«uURª”8|ûí·!™UE©Þñ¾.-CƒØâ2Gd\* ô­ÕÐÐ}ðé);[î·_ß¾Ù®XcmþÝéòA_hõvšµúuõ™²š—×ë^ßξVcU„÷0ó}õÁ^ïQØÐêiD|½Zǘ¬ú9(tðs)øEMŽ{Àr~Ä=mGÿÇ~ûWׇqú=„�äQ@ì5i{Ài©zQ=á¾üòK»ï¾ûfŸQðߪӗۖîîî^¯Î#œ“Ÿ–¯…s8þ|hÏ/é�ËØ‰šXìŠ@TÑ©"œœœ “^+t8yòd覊MƒæØV¡C2xÈ£׌�ùP=©G‹½{èŒ}=Ôg¿ûíV[ÓÓåAA«7í<pðð E!B­`í ÂvóAQ_ÎÌÚGÁCÁ­šgB‡6¾Ãtàà÷Õ®â1¦¼EÙâçÎÉÏ£Ô]µÒš»½ý˲M|zÖžû‡^ëïï§ÇC¾ÿÓàêȵ@ bè ß ÔnÖGÚàà`ø²¯ W©Ã2¦ØN_ê[bð óÑ#1õ¥¢Î%ë‰Ð!kQއ@“ ÄŠ'TB~nÁĪõíõrˆ½ TiÆŠ3†Ë­,›ŒËA�œ ¨ž<vò¼}ôyÁþîo²bGÕ[ÛBO…)¿AA‚·5­êáB[ÕoãüC»z7(tP¹W·a©×aöתSÕlQt¡ÐÁËVßÞâ/Vó:ߢŸK­Õ¯ÇÏÓ ~­m>¦Cw«Ýö››ìßöýÑÚzÞðAÆ–ú-\NÿépÙ ФÉøú¯ÞpqÖwªß5¾Ã©S§lÓÆÖ2S&Ž=ÌzšÄ‡~n£ˆíô$Yè½,ðu}yøÎ;ïØŽ;¦ë`¯§Õ»!ž“Âå s¸mwB‡y!¼D�¹1TPºÝG¥U+X•’Bˆ:¨—ƒ‚‡ØÛA`¬<çW €@ó ¨1©gšÿë¿_4è·KÅN»To±ú¤7æ<1˜òè~7‚í0Ý£aÊS}±¤ödò¶ î °A!EX:ˆÚOûǺ¥A½ Vó K*êéàAŠ·“½ì„ŸûX­ÅFZ:Ì®ï·Ùýwzÿ]Ò¨¡Üüÿ2¸BÈ»€êðd/…šU'j›ÚØêqpÑÃõëÊøvÝ‚ñæ›oÚ™3gì©§ž ÇJšêË?þ¤²ƒÚgŸ}fÏ<óŒÝ{ï½³»(pÐÏÔÀ–±M?»1£B‡Œ 9 Í* Æ¡…P)VÊ^‘M4£J)q•ÑÓ¡Yÿ%p] °TÝ’¦o¢ŽüàÉÀú5ö‡ÓuûÃè°Ýîßú_[,Ùˆ'ã8\ðè•I³=SþA]I‚ׯÞVœôòšßvá÷`Ø„72˾÷õUÔèC‡¶Ý÷-úRsû̼šÇ¨L¶X·wq(y˲Ëç?¿3劯øú¼~­ùñRp¹ZÚ¥þý° °±W€<¨Ý¿¨Óvµ¹µMã©)hˆ½‰ÕÃxÿþýöÅ_ÌžºzIÄP"êx æO*ÓñÏ;go¼ñ†ÝsÏ=¶{÷nëëë ·Q+tÐÏUÛ^sÖ¡CÖ¢&Pe¦ÊPÕÄD9\Öc£Qƒ*'½Ž¡C¬<c÷¬¸l2.h( †›ƒj]ÞÓ¡ÏlMÉn-µZ‡ßnPñÛ JíÞÖƒ‚Nÿ,^öêÝ>8¤÷Po…ªn¯ðöbÕg}^Wà0áó¸ÏêùÐéÝa‹PµÿÌ\ò,Bï_Íc W¦Ï«w&<ѵ øïbqÊþÔZ±±É>»à”)ÀV£X¿;˜@�¼¨í¬IKÍ 4«ÛÉúÝ¡¶´^k›z«g±n¹xõÕWíÂ… s¸Tß7èµzKÌŸT÷ê÷Rœ^;vÌ^yåÓSç´MïsÜ/«%¡CV’&ˆ!‚*CUFz­I Çx[E\ª,V ÚWS\†ü�4¹€oª û6vØOþÕÿ]­¶ÅQÑÑáîz½¨`aÒÇq÷dA¦^ï±à-²°Í_ëÖ õx¨øzÙÛˆêù "Üzá=ôô Ï-ÂÜæ!FÑG— ½VñkýÖ‘vüK:ëðª_\Öý>’1ìáúñ‚š¨X߆Òl@­†5 '8h©¶´‚µ‘õ:†ÕjCÇv´lT®Û,|ðÁvøðáY2 ÚØ*Ÿ?é÷’~Nœxà{üñÇíÒ*×ÏÔ9Å6Ü/«%¡CV’&ˆ_¬ˆbÅ+E5¬5Ç^ZW¨íšU†MJÅe!€�A@!ì5×\c¹ùŒ}t©bë{JÖï½züÖŠ‚wO˜ôÛÔÊÞ&T˜0>é=üö  R2Nú¬/¤¦{:øcÌf‚‡šn¯ðI½4{牟o±e«wŒÑ:xOŒ¢Â›ž¶Q³ê¤ÿÓR³ Þ~hãôóèå£ß)L €@žâ‡~-ãyq=@Ä6wlSëõºuëì¹çž³#GŽØÛo¿mgÏží‘4Ôq uÕ&ß´i“=ýôÓvÓM7Íöºˆç¢÷Ævò˜Y¬:d¡È1hbU>ÉÊO•£*³ÎNïä›HFã~Zί°šø—†�)}¨Ö£!ÿvÓ·öéѲõ{7„µÖåƒ/ÔýÃø¤÷t(zà /£Z=tèí™îµ !D¨‡ƒ‚õr(Åu_*ðŽ!p=üù”ÏÁ³Þ0ƃÊVë¿–ö0¦CÁo#ñsô-Lù7yÕN¿¦ªmšªØ=ãvÝu×…rú=Á„�äE@mæùíáùíhY4ºe9Ö—zÿ¶mÛì¶Ûn ƒBª=·EG'¤ßAqÒÏФývîÜi?üðœÐWƒÂM 9®V LèˆùP壊JKUn±ÂÔ“+4èLOOO(Sy£y¡ãRŽ�4«€êKõt¸}p“ýîâY;qªÏn\w?6Ó¯Øo;ðN Öâ=ü šútîÝ[}�Fÿ îBàPôpA½ÂR¡ƒ*ÙâD ¦>èXèá0Z¬æ1ê«Â¯¥4sN Cô(ÏKcS6òãyû›¾3vÇ-›‚ËÕjÔ6ë¿'® ~ù±ý¬ *‹¡>øk ¯ 1o4Ç@ûÄ÷KBÛvíÚÕEû%C‡äNO<ñÄìËFèçjÖû@ègÆsšÝ9ƒB‡ 9Í,ÃõlPE+3-5B»F×Uå§@"vÏÒ6M±Bkf® h$ zqË–-ö×?ýdíú/;y¼h7üj­u÷z=Úé·¡y¯�  ²M·Vx‹Lc5hI¿+Áê¾ÍGÑQFá=|ßÏ;H„©àûê}žmxãÐCŒ™÷®ê1jþ-žŸ]x$¨Ÿse|Ò&F&ìôÛ¯&ŽÛÝ7‚‡\ô»‚ È«@ ´T}¨1ÔžV[Zã7ÄGÒëÜ—cµÔ§OÄŸÏA?CW^`˜Ða9ƒì‹@Ô@TØ Y•¡&¥ šõZÞѳ‚Â-‘HÁC T–\û°D�šU@ ŵk×Ú]wÝåß:}mÇþ|ØNž¸ÎζöÛDK—Õ >¶ƒz1¨7@¯÷XPOŸUÆuðÞ a0Iß÷S¹¦ÐÓA= <t·Wøº‚‹Õ<†g ?Ÿ‹?ë³sjÜúª?Ù­mgì–¿ݯ½öÚЀ&žþ{äOȇ@²ÎÓºfõ.PØ Û!N:>èkÜõ Ž=¤³Üöórö×¾ú]¥eœ5àäB=%Vò·Eè°=Þ‹@& ‡Çï¨BJVœºüXI)xP²ªFv,‹ÛsÀÄ%"€� ÔKlppÐëÆÓvã?zPûŸ¡—XM£ˆÓH\YdéáB˜t‹®Þž8Äô†%üy51sNú–,Œkq}¿mØp‹­_¿>„Òº% È«@² ­ÞCCCá– }ð×6}‘§9NÉýcÙbK…»G]l·†Ûc;ÿ†nh¸}%… C‡½{÷®ä˜¼šD Ö'Nœh’+â2@�Õˆ½ÅVÿL®Þ¨A­ÑÕ53!€�ü²¾þúëLO8:ìÙ³'ÓÀÁ@àÿŸÀùóç=)ê‚E‰Ø@�@�$?oÌ öíÛ×`wŠ@�@�@�@�å h áßø|«˜ùÏË;ï@�@�@�@�Ò>8æ?Íötxá…Ò{P‚� €� €� €�\¡Àlè°mÛ6ãî+Täm €� €� €� 0+¥NšÝÀ  €� €� €� …�¡CŠ@�@�@�R„) @�@�@�@ B‡,9 €� €� €�¤R$ €� €� €� €@„Y(r @�@�@�H :¤H(@�@�@�@�,²Pä €� €� €�  tH‘P€� €� €� €�Y:d¡È1@�@�@�@ %@è"¡�@�@�@�² tÈB‘c €� €� €� €@J€Ð!EB €� €� €�d!@è…"Ç@�@�@�@�”�¡CŠ„@�@�@�ÈB€Ð! EŽ� €� €� €�)B‡  €� €� €� …�¡CŠ@�@�@�R„) @�@�@�@ B‡,9 €� €� €�¤R$ €� €� €� €@„Y(r @�@�@�H :¤H(@�@�@�@�,²Pä €� €� €�  tH‘P€� €� €� €�Y:d¡È1@�@�@�@ %@è"¡�@�@�@�² tÈB‘c €� €� €� €@J€Ð!EB €� €� €�d!@è…"Ç@�@�@�@�”�¡CŠ„@�@�@�ÈB€Ð! EŽ� €� €� €�)B‡  €� €� €� …�¡CŠ@�@�@�R„) @�@�@�@ B‡,9 €� €� €�¤R$ €� €� €� €@„Y(r @�@�@�H :¤H(@�@�@�@�,²Pä €� €� €�  tH‘P€� €� €� €�Y:d¡È1@�@�@�@ %C‡©Ô @�@�@�@�+˜Š¡Ã•‚w"€� €� €� €�  P„� €� €� €�+Pè [+¸½bå–@�@�@�~àöŠŸ-XC�@�@�@�,èé¥&ÇB�@�@�@�(@O‡(Á@�@�@�² §C¶ž @�@�@�¦¦Úf$Â@’{÷î@�@�@�ÈB`ªàGùµÏ·LMMíËâˆ@�@�@�( O+t¸×ç[|nM̺í"α\¯µ,K•iÖ~šâ브eÉ¥Ö™@�@�@�@`uÂþ£“K­ÇYgUK¼®ûzrÖ~z­}4'·Å²šn¯ÐŽ'|Ž!B\*DÐz\*DˆÛ´ŒAƒ–šbY ârzëôŸqßdë €� €� €� ð+ , 9Ű!¹T Ie1€H† *ÁCr9»ÏÿÑ´;ć»����IEND®B`‚��������������������������������������������BoolNet/vignettes/pajek.png�������������������������������������������������������������������������0000644�0001762�0000144�00000205405�13277247010�015435� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR��Á��Ä���§¥P���sRGB�®Îé���gAMA��± üa��� pHYs��Ã��ÃÇo¨d��ÿ¥IDATx^íýûÓ}ßUˆ~þˆ®.«Ž?P§ê�§º Š_úh—Óˆ4è#$à¥Ý-JÛJsK¢¶DúÈ!"ŠÜìnQ!! ’È5!\BÂý’€(ÍYï»>ïøŒwÜæ˜—µÖ\k?ŸÚ•ìwï9Çãc>ãYs¯½¿O^ÿÆ·ÑãCð� �€��@��ÇüÞßû{Ïïù=\6?ù›¯þÉ×ÿàO.Ã>â#>âÛ¾íÛ~ögö½ø€��@�� �€À¿û»¿û¿ðËÿ—ü¨ÿì?ÿÏå¼<ž|äŸ{Å" ¿ð ¿ðïxÇ—ýÓÄ� �€��@��À›~ý·¿þ‡j‘ÑßùCoòió–èE@ù?ý!<€��@�� �€�ðxý¯þÖïý½à oú©'Ë!ôr Ç—ëá€��@�� �€@ŒÀ7ÿÂo.÷Fßièåè—ÿ³7á€��@�� �€@ŒÀ7üÂo-_1¼ÓпýÛ¿ýÿüÍx� �€��@�� #ðµïúÍE?ßiè凯øoÁ� �€��@��¯~'ÓÐ_õmoÁ� �€��@��¯ü9¦¡_ùí?Œ�@�� �€��1_úŽßzv/ÇW¿êGÌGíOk{vð:�@�� �€À<|ñ7¼áxé—â_ü[c‹ÍÅòæKüý¯}õ'þWô#ÿ³ÿëØÇbs±ì%ëývÝ ¡_ûÚ×¾ýío"{žÊ€'@�� �€��ö¯~Ñ·}ç¾ýçß=ö±Ø\,¯‹î°Äó¾úí/ÿŠß|ó÷},6Ë) ý^ý£æCHäE7¿ö•¯|éK_ú’—¼ryº<yãßÈÇxvð:�@�� �€À<¼ð/}Þ¢ž¿ó-ïûXl.–×0wXb9~~Ï}ï/|ýWŽ},6Ë^²þÎO³sèøš3¤—#çWÞ«ç/úK÷ÿ>öc—'Ë‹‹†~ã·<“Ñž¼€��@�� 0/ú´ÏÿÉw½ûõo~רÇbs±¼†¹Ã‹Ò}÷|÷»¾öËþß?–'÷õ•åïž<<§wü鬯}ù³‰›‹e/Y/û)¦¡ÿÑkÜ|¬zÑÊË©ó _øÂ÷yŸ÷Yž,ÿ»ü{é‹Þg}}ÑÖ$µ #ëž<ùàOü‡¶ý‡ñ¯úÄÿâÉÓÿÅgýÝgÎ|åG<ù„¿úÈ·ånMü¯b¾«—h02dÊ‹ò8OžüßþûWyÉR¯÷ƒ³ÄÕ†-ÝéCçôT^þîÿÁO>ú+ïГµJeIEø¬P?âo1ãlâ_ý誥<LgÖ€��@�døä§ú¯óÈÇ¢¡Ëk犗øÜ/úê?þñÎ{,ïzŽñ%¥ûëÿæ ïü_òìñ5_òÎåqÿÊ—~æg“ýå¹ùÊ£¹÷³~î|Ébs±ìõß¿ñ“LCÿã×½Õ|¬z9k^ôÇ~ìÇþþ÷yŸå±üûýË¿÷ùý_ôEwGÑ‹†¦£•‘ïø¤~Îû>yÎ'ý#ÛþÝøôÙïûäÉG~ÞÀôÙŸDÏ_÷ÖOÿhöÖ“¯øÈGÖÄŸþ*N€‹j‰#€5¯?% yóäÉG¿"gVƒÓW>´PËŠ,ºÎé<•Ž©¥üþ‹ÏþÂ×}Ç'-Wqý<^]_ø?<g…šžüãÏûì§•üyÏ{òäyŸþ´¨D‘/¦Â‚÷K1—Ö£êë �€À¥øäÿño¿í]ï~í›ß5ö±Ø\,¯-^bQ·¿ëÿ[ÞõãK,J÷×¾ûõïøª/zÇ+î?ûðdýs1Bç¼Ëóÿ阮xåg—)÷#Ÿ>–é÷›‹e¯/ÎÛ˜†þº×¿Í|ÐÂ/úý¿= ]ž,Šù%/yÉr�½BË·|Ë2fùßUFK#Ÿÿü÷ý Ÿóž<ç…_kÛÿº×¿æ…ðä|¾÷îÛ¾îk?ç}ÿè+˜ÙW<¶&þôí8ÞY–K4 ìgßzˆ%yy÷Éóÿç”M N\-øÐBM+>‹®s:O¥mê‹ÿÂsÞ÷/¼æ¡ÀøV™æl¤.òÏþ“GE{TEa] �€��.Ÿò—¿`£¯yó»Æ>Þú®÷,–ׯ/QÔОc‹Û´Ä¢tå ßñ3_ö·úËï_öOîþü’¿òéË*ÿñáŸx¾¼û3÷³Öÿ½|Áú|±¹Xöäñg¼•iè¯ÿη™ÒЋh^Ôór#4½²Üñ<¿û–ák_»<YïèxldQ!ÏÿŒï¼W_gÛÿú¯»S„Ÿ¡WÿÛÏòŸóÅw¯/Føtaþ¼S<ë¿?ð·ï׺³¼þ[íßüóœû?Å`k‰¿ýtúbí‹?u™u÷ï}?õ5÷rØs¹¢^¥ìá=PqÈ÷ÚÎŽQ¬H¾-Ož<ù˜çßýïúïc^ñ¢ƒkh±?Ä+üY=LÆÂ±â³X ¤ÒÍ-ðREÝùÔç?Α(€{xìOK.€ÚÉò:qÉõ³úTEþì]§ìíæmC¼€��@`8÷÷=¯yóÏ}¬zõvyòÖ»£îŸ7¤¡ÅíëÙôý9´=‘/±jè·ÉËÞþ÷^¶üïO-Oî듟ú{/û{ÿÓ_YLýÎãË+ËëO‡ý½g³žÎý{/[5´‡ù_þ‰÷<û}èo|ÃÛ͇þ]Ž»»;tóú.‰éåù##_ðü'óÊo|Ã+ÿà“ç¼èëlûßøu/~ßxñÿG¯¾Ì¥×¿àùïû©¯{°,¬=üùt-Z… {:}yeÁ÷väà»W/ñäéêËH>ëÉó?óÎUî=W+ŠUR>�…üº}À“?øÝXÇÛKÐxíùjçíwYxš£;”žÆþìEÏA—åÉ3ˆ5‹yû™³zXÖ å¹^® –J»Ï¬ÎѳÐu¸˜]sº>Dfé-Qu R»È…Y§øMçmF¼€��@` úú;ßýoßñeÿû÷™¿ü×¾$¸Yyy×›¸Ø\,¯~ÆK,öáþßò„¬™/еø‹Òý±—ÿÝñ‘<þúý#dv]ny%ž²Ø\,{hê3 ýMßõSæƒkèE+/7lÜðî¶ úÇ%šùäxÎ'ýböNÜ?±_ÿâ÷{ò'?ËYýaÊ+ÿࢧŸŽÖþ¼³óäýþâëŸN¹ÿóÙ¿yå#7Äà;ËÞ|9zn½¨W´\Êzèú³¸úú§ÀW¼Gþý>€ÁÂsñùÏZTìß‘Ézxñ1>:eÚ<A"ÑË[ë+àÅð(¿Jå”K‡]‡äÃjÍL·Ë"ÙïÇ?äB§×²/<f �€�ØEà~Ï¿ãåÿÇ÷›~ß°8Q]þ\Þõ&.6Ë«{ºÄÿùý/·‹‘Ÿ¹ÿ'Ä:½hÎZ^üžþ9ZbÕЯú¯ŸûíõÜW}ÔÓÿ]ž¼ê£>äUÿõ‡,OþÆÇ} -´Z^W\^¿°L¼Ü¿›òÜõ±jhOÿùcú›ÿõO›Zü 7ò‡¸Š}òÜOùs‰×Ê>ùC×^¬}öÇÒ˜e<3õ /Y$øg?8ÿ%é¹ËšwÖ¿~oçïÿ¡Ç><|?-ÁGšÏ­ïÌŠUò:þ°ÐÊ+.~>y¿|î“ýûH2ÏOXއö(5ÏüÑëFh?´¼]Ðx¿¿ôúõï< ì8ÁªÌËÉx˜û¬~ «4¶ú]áÉ«œ*sY‹›-”··ûð:�@��íø3åï|ïüÜW~ëÍÇ¢2ßêÿ[Þõ&.6Ë«Ûë¯øÖ7šâÞÄïý‘wÒ‹ÒýñW|ñkÿøÿC=þ«å•¿ù'þ8_E<_Þµ&Þ™Zl.–=ðÿÌ0 ýO¾ûgÌÇb~ÉKÞûû~ßÝcyòäÉrôÝ“õ±¼¸¼BÏßû^ËÈW/âõOÓjŸ?Xñ _p'|¿ðáÏozéŸ^ž//~àK¿”¼ú¦—¾ßÇ}õjüÅ÷„Þº{þðúúî—~ÚsßïÓþåýBOîŸP\ÆÒƒïÇ<[Âs˜^ÿ—zÑý«ÃwίÑéŸ.ýh•¼‡®?„Uqŧ/(=@!B{0µ¬õä/~š ‡ÁÏ^øÜ…¯°õÐ~ÚãY÷˜à þÐRy˜–=xɲ™¯Tü“ï^V¤Õe}.‰[«‹žÈ²ôªë..V½Îæò6^@�� °ö¯þÝxë/þÃ×ü¨ùXäæøÿ–w½‰‹ÍÅòêÿK,J÷m_óeoø¤úÎOú#Ëã /ü¨å9=xËó—ýÉç‹WÞ@S–‰wsÿÈ:w±¹Xö²ðÂË4ôÿþ=ï0O5ôªžWÑLzýs•Ô«¶~ï{-#_ó‡Ÿ<÷Ïüo«}þœ­ø¿½ôýé8ï_úeËÈ/ºÓÐwOž>Þðg>Œ,ÏFÓ˜eüÓ/xÉ:…Ûü¸¯y´´|7…–ðf¯“…{Á³èÄŠb•*¥?„`Å(— ‡ï»Çê%ËUÇòïÑ£ýá»;Î_þýá/âUÁS°X~úïémæãY«?«3OÂ2›ž]â!9þqì+~Ù§=÷ý?í ÷Ùg'ÊOëêáEñ§ˆ]ö’ˆGAÙ›ËÛtx� �€Àü¹¿ú…oú©_ý¦ïz»ùøìÏÿªà~èå]oâbs±¼ú¿Ã‹Òý©oüûßóß}Â÷üwÏ{x,Ï×??áó_øBŠby¾¼¨^y:ò~Ê'|ÏŸjg±¹Xö²ð®¡ÿósæãÙ9ô"‘W-d4B/¯¿÷½ž¯ñŸzÿÿñ»Øq"½³¼ÃÁêú­ü¹×¬ßbÃø¼ô=ùÃ_ì,W…UóàoyéûàK¿¼yº1ñ»î®÷< G.t(n� �NŽÀû?Ñÿìo WV‹ÍÅòjv‡%¥ûŽú?ðWþÌ ÇŸ]í,6Ë8ÿ–w?û]ŽÿóûÞi>îwãµëó€¦9ÖWMÏßû^Ï^? ÿðÿùäCþì·ØÅ0>„oùkïÿ_þµ—;µ7~9g¡—ÿåyòÇþá¨å–«‚ÖFy;@�� �ÿïÏøâ}ç{þùþÂØÇbs±¼®µÃ‹ÒýùïøÖ7½ä/¾éÅñÍ/ù‹o~ñÝ“§—|êÝëwo}ꛟ>_^ùÔåÏû×ïŸÜ?h=Yl.–½šùcofúŸ~ÿ;ÍGíw =;xý$ÜkèbÃоëÏþ—Ë-û¬µC8X� �€ÀÉø´¿þ¯ùÞý±wýæØÇbs±¼j†–øØÿû‡¿úå_ñËÿêuc‹ÍŲ§|>æMLCë¼  �€��@��Aàk¾ýÍŸö×_þç?óûXl.–W wXâ+^ù­ÿÍû~èrf<ö±Ø\,{•ðQ?ľSøÏßøóx� �€��@�� #ð‡Cÿ‹ü<€��@�� �€�ˆøodúÛ~èñ�@�� �€��@ Fà#V ½ü[¾8¨‡þ§ÿô^<€��@�� �€À-# Eòïûw?ýoE˜ú?þ§ÿô»ÿ �€��@�� p£,z¸ZCÿÎÿï?þ»ÿ»x� �€��@��ÛD`ÑÃÕúßÿÎï¾û·~ �€��@�� p›,z¸ZCÿö¿ÿÝ_{÷À� �€��@�Ü&‹®ÖÐïù­ßùù_þwêñO>ñɇÿõïÕ¯OðÊ÷~þý7$ïÿ}èç·á|ÆI?À¯û2ÿ!ÿË›-pÈþ”#ô¯ó;LZçVÈ~ò‰_ׇvõêÅåîÝû¤Â7$M¥u+ʆ™š=q¥¨{Ò÷ ±OùZÏÎ0|tUÜ…öÝÿˇ?Ùkãüõ-QÖ H;§m™¬žDc.�@à ,z¸ZC¿û7çç~ñ·Ôã[þÔ“é÷è×G½Òjÿ{>ÿ¹Ì±¯ù¤OùÃùŒ“Žÿxicø›^ú!Ožû7Þdá³.ÑÅ#ŸŸù®¿ñáO>äó¿«1¢LÔCư¨ïàʤ`PIçïÖzî‡<ùSÿ˜ÆçWÏ|ìÌe“Dƒk®PMfï6òCå|Ïç¿ôY²âÊLY«BpÚòâòoS¢Ëãç +ÚLP€��ÃXôpµ†þ…_þwoù‰_Q¯ÿO>ôÓ_­_õJ›ýïûô~ò'¾rˆ¦Êþ«ÿæ=yá—ø¬>´E!üçF†‚O`¤Áá=ãº_ë+ÿæ}ðßügO—_=?’ãsHÙ4d¹-ºâBMf¿ò…Ož%¨¸Dÿ€;'ÿÄó>ôƒ>ëûžqÝâÃó^¸1ÑqÏc š`t©©1X�@�Ü‹nÓпú–Ÿo¸o-^üÒç=Ürð¼oxËO|ÿ½œ}p×?÷Ÿ-F^ý¹ô0êá]nj}¾ü/7¥Ww^¹3¾(ZÛÛ¥A>¹÷±ŸËàûE¿ò©côY߬õ¢a sÅá~üg½põû‘‘WP(<ƒ5>O—£ˆªK€&òÌH*ËwvÖÏòh`ÖåýQêrôàÉ}Öç>”ÓŸ^¦–Ä5³¹«·t‘¬™zõ]<NÓ½…gà<Eò阻@>”J÷IՊŲyT{¢ø‰“U7"qwxÞÙaá/û×Ü)Ï#ûWÚÝZ” 5¹þ>u7`mU,K¬[;À¿Hq&evº&“gUñ4#Æ.΋‘@�� P@‹†þÅ_ùí~Û¯©Ç7|ü“ýŒ×è×—WÞzÅ‹ž<ÿÖ‰_þü'ÿŠõ­õɯýðk>÷ƒŸZà¦èy`ß\ôÁæs>÷_ܯø/>çéÝ…÷NÞ­ûÁŸó£àk=y²N|äÕËK O^ôåë»öLýÀg<çYhOã¥ñ~ígPÜõÔÃê/º ÓF~ÍW:̈U�ÿwK<ý÷P�Ϫb‰nu’yrŸ¬gî¹™"— ÏùÐuØ2W±Õ5fUÝ3'—Ô/î €jìˆTYÚecÔm®GUjí'²ê†$îY¼"|{§˜Ž=ä¥i/ß!|·¹–OߌµOŸUŽÚ€Õ»ì©h³‡øGê¼Ú‡uk¸dò´5‘æÂH �€�¨F`ÑÃÕçпø«¿ý#?ùëêñÿäÃ>ãµ_ÿªEk®ÿÖ·–1/zùÝÜoüøç¼ìÛ–'¯}Ù?}ånâËaýUë02EÏ-û†xlŸY~lÍðóY,‘WÒþ²úÒæ)Ø E1–g–¹ôoÅó1hw^±ÏÿFy9Ÿ‚{³‹ ²²¯ë¿ò€6_K;¹¼²VÅ£pÂL=Lyùó?ì3¾jNøÇ.Yî-ë.•ð®ûÜHÞYdÜ]¡ŠZM¯˜-›pGì™8^œ~øOwJÞ±ŠšgØÞ'E…ÆÊ¤‘tŽø¹/KÉn˜šâÄf¬÷¡H‰¶3ù…0� �ªXôpµ†þ¥_ýí{û¯«Ç7~“ûÌ×±×_w§¿ânä|æsž¾õí/þ°~ñ¬ÿ{gáÙ˜»‰_ñü'ŸðÊå 7EÏ•}Ç¢W–5ÃO¾Öâ|à½û°ô3k…($©pÖUL(Ø‹Q]3¥–{_‘‚§vEpŸ¦üã™o^êŸÃs^öíOÍ&3µ–Ö7~ÂÝÄåù‹¾b 癑¤‡:Ý68OC~å†~@ ­,“eÖÞ¾‰{–n7üo+«)¤§ ]ªh¹Ôy¼4VæL–ße÷5öJª«xã¨fmÆtÈ&ûÅ[ƒi>XŒ@��j=\­¡ù×þýÿÔo¨Ç7-ú³^Ï^_zís^öªeäë1ýðÖòü9/ú„çÐÈeÖ"GîgÝ {ÑWÞY~ãgÝÉÖûïö:XÙ7|Ð^ýÆ«–vûÔ,7¬~ÞyõÁ/~ãc¯¸§?²ÿ0ñ‘Ã4žM”PÎ[8{P÷ȳO—[P$SðÔÔéSpr)xœ;…pòY1ÜgMåݪ¨;gžóÔŸåù'üÉUú¦ð¼«Ã»ONªN;¹`¸¸º"ÙX–÷…ÍsÁË&Y{æÞqªô>S}‰£²á›ÞꊊsêüñŽxåËèåŽî³ïÓÎÅ×ûÚÄÿžÇî(ÎLn~ëMÊ9SS¢ãLv‡Ö:†ñ@�� ð‹®Öпòëÿá­?óõøfúáÝ=Š/ý¡·þÌ}ösï?Ä|î'?ï¹öÙÿòé”W¼àÉ“|ó³éÿòóîoq¼S-4æ­_ýÉO_{Á'?ïáõ»‰Ë?>×pC;öžgÖž:¶ŒY¼¥å´Ÿwï>»û÷¼¯^mò)üù#ûƒ½ñ&J(’á<ò„â}ìÒ3T ±û0Ÿ¡ÇÆ'S@IyòɯȺª¡{Ïw¼ôÞ<÷ó¾c± |Xâ9/ý¼‡Å™Z<¤’?¯ðð1t?sïá#›ŸÅ¿àó ïkûYCÊR”ª½÷°UâÄYUÚ•¸g÷!<ç¥ß¬Â7w Ï,í2UùÕ{™1ÌÓ2Ž÷©¿aSµ! j¾´qVÞ³)®Ž¾øsÙ,f,Þ–gDšŠÔâLL@��‹®Öпúÿá'ö=ͯzÁ“çÿƒöéÍëÖLüæç?ù°ÏùÎÍ<›ƒP“—[pf§Úû±Þ»ú-T#b@��E·hè·¿ã7oø¼ç<÷ó^×<}§‰w½ùÅoh1éä9 Ø„$V74l—Ú†ç±Þ»:¶�@�Ü4-ú×Þý;?õs¿UÿxÓ‹ïníøðWÃܧ|ËŸÜÖÏA±3òXnëÚ‹ð±Þ»úX$a � �N†À¢‡«Ï¡ýÝ¿óÓïüwx� �€��@��ÛD`ÑÃÕúŸ½úûð�@�� �€��·Œ@µ†þuü@�� �€��·@µ†~þ �€��@��ÛF�ú¶óè��@�� �ꀆ®Ç 3€��@�� �n‚†þöúEþXFß6\ˆ� �€��@�¼mQÅB'ÿ¾x÷ÓÿÀï{ßû^hhÔ�@�� �€�”4ô›~ñÛÙçÐ( �€��@�� p§¡ëäÇçÐÐШ �€��@�� ðhhT�@�� �€�¨C�º/Œ@�� �€�� ýª7ý"à~hT �@�� �€�XT±ÐÉî‡~Õ›~‰? ¡Q1@�� �€��@àAC?“ÊÐШ �€��@�� !p¯¡5?ÖÐoþ¥W±ΡQM@�� �€��@àNC?ÖÉ4ô«ßüKôXÆAC£b€��@�� �€À¢Š¹N^ž»zy€��@�� � ¡Q@�� �€��@ ‚†þŽ7ÿàº]Œ@�� �€�¸"‹*:ùѽßñ–_âhè+Ö�b@�� �€�¨CàNC?ÖÉÐÐub4�@�� �€À­!PÐЯyË/ñΡo­>/�@�� �€€F`QÅB'?:‡~Í[~™? ¡QC@�� �€��@à^C?ÒÉ4ôkÿí//×<< ¡Q1@�� �€��@`QÅ«H^Õòò044½ Š@�� �€��«†æGúuÿö—ù€��@�� �U,tòc ýÿü:ö€†FÅ� �€��@��; ýX'K ýúþez@C£b€��@�� �€À¢Š¹H^ž?ÒÐâ=hhT �@�� �€�(hèù#¿ÂÐШ �€��@�� °¨b¡“CCC£D€��@�� �€€@  ¡¿óG~…?p@�� �€��‹*:ùÑ9ôwþè¯ð44*æÔ<¹ÿwêà<�@�� 0wú±N~¤¡ßð£¿ÂÐÐ3ä >4 °ªç÷Þ? ¤�Ä �€��@€#°¨b¡“ièïú±_áhhTÏI M2ú¤Àm �€��@`U,t²Ðпú]?öì =CÎàCíA²Ð8F  pkÔÒæ­áƒx@÷ú‘N~¤¡ÿÕý*@C7@Œ)h»%z` ` �s!ÐF›çŠÞCXT±ÐÉ4ô¿þñ_åhèC’„E æ[2ôDÜÔº@`~úÏ›is~pà!8E }lF°º‹€wœœLŸÄ@Cgpà �ŽB çü˜”wm8ÖgA  ¡¿û'~?p}–¼ž×ÏàÐ¥¿ðž´þ@‡�ªxäSp^äá9�S!œÇ<)~ƒh=/àM}Sg€ÀYXT±ÐÉΡ¿ç'~? ¡Ï’×3ú™9téüP2X¢¸zqÀ1‡Ï@�̉@ð-!‘õA€ËmâD`ÎÔë!°¨b¡“ièï}ë¯ñ4ô‰R{:W3ú¸SÈ®§/fç(®^p:Àá0�Ó"hèàD¹8ke¿N"48vF`QÅB'?ÒÐÿæm¿ÆÐÐ;§çv–ó¨ßD ùø„4t|r£o•®rïv²†H�Ø}ÝNÿ‰(OFLÅi'Ûe –o E ,4ô¯ÿ›·={@CßTqìlƒH]qþ׋«äÝÀH �€@}ZL—÷ù£èºËø†1@�,ÜkèG:ù‘†þ¾Ÿüuþ€†FÑô#à"×´ihoVqõâ€~d`� àJš¤3Ñ‘)‘ù»úÃ7œ Æ€À(U,tò# ýý?ùëü = ÷Û´ß„W{‹Þp ­OS­{·™bD €@Ìmižä¥û:ÌåÄZ—ãg:òiÂH à!°¨b¡“ièxû¯ó44*©ÌQn¦©¬>ŒÕÐd30»úV»nb˜ €À%¨º&×ÌYEDɳêK⌠€À¦,ªXèäGúoÿ þ€†Þ4×6^õbF§fƤ48–ÈA ª–»v*�d8}ÅŸ’ig’ŒZëÌ#¦ß8‹*:ù‘†þÁŸú þ€†¾ñré ¸†®:Š^[EÜ0zÞíAs�¸)ªÈˆKœ='ÌaÎ7Uov;U,t24ôvhßeó£ÆÚ£—"^ùNPÔÐÐE´1��!´ih±tFC{còÌ9$^WE  ¡è§ƒ?p}Õ:WpŸ_ðVðYdà[¾ôhèü*a„) �.Œ@Ûç¢f B»p]!´XT±ÐÉΡßôÓ¿ÁÐÐ;§çŒË{Q©¼�kèL7:c.à3�s"Ðv ÑÐÅ1E^1x&D`QÅB'?ÒÐoþ™wó4ô„)œÊ¥!ŸQ áÛC詊Î� °"`Þóf‚#H,sÙoŽ€Fí,ªXèäGú-?ónþ€†ý%MÕÐkÙZCgºÑ%“… €�ؼ2ί>DCC@çÇH A`QÅB'?ÖÐ?ûî·°4tÓS¼—CàÓ£’“-¡íFޤñO7·Œ€ËUwhnªIjh2…Cè[.Kľwú±N~¤¡ÿí;ÞÍÐл%æ¼ 5t‘æ“àLï‰?0õ,$-Ÿ7Mð�L¢«=AÈËè~ NëI7æE¯"ù‡ßñžõÉ# ½¼ÊÐÐ(£$üx¦ÈÝ[E­BC'Ša@�p´\®½“MX‹áÍhèàºHÂH.� ,ªXèäGúGÞñž»ÇÏÝÿï;Þ Ý�1¦¬'Á™aŽéQØ´tÕ'›Eo‘S �nO.¿÷ÉñÈ“I†è’·jhSy7n9­ˆÔ"°¨â§:yUËïxÏc ½¨gö€†®Åã "‰·ÝÑ‘4›×ÐEƒÈ)�7Ž€§¡ÍÃé$¥l§¡“ÜxN>h@àNC?ÖÉ4ôþÜ{øºbLé—Ñmòz]×»‘#¯ª‘A �€€@@Ëeb›õ(zýÇŸ1,]py«è�� P…À¢Š…N~¤¡ìïY?úð€†®ƒ5™³7obñˆu€Àp‰ü ŸÝ×QdªU‚{~®oe„²0’Yw880nE“N^Ÿ ý›?öÎghè)‹MÃl“ÑmZ4Š ‡Ð›¦ÆÀ `^¢syÍo.ÊÙ¤†è úF aN‚À½†~¤“iè×oþø;Ÿ= ¡'IÛÙÝ(£3¦ô˜Ì+gþ pÍ:8ŠæÇ}AC’q,z³,ªøN$3©¬4ôòÞÃúf exàŽbÃá±wJ”4><j@àbxŠvy½êz…%þÀ-þ` úb¥…pæGàNC3‘¼<¤¡â]¿ÉÐÐógôDÖÊèí4tñ3Ö¡ W�Ø@C“Œ6/æ='‹·j+’MpÚž5€µnE }³Åp@à[ËhݺpÇiÆ’@àºÄ”R¥ž‹GÑæ949À=†¾nÅ!²‰(hè·þüoòΡ'JÝU\‰?»QVEgnä@§¹J! p UwP$ Ç#º@CC@“~¬zÛ,ªXèäGçÐÐз];Eß)£ƒéÅö–li;e€�˜ âAr‘d2™1䉹"4ôd…wnhè›HóüAæetþfŒâÐó<G!°Hñ?’R«¡—pŠÌ“?‡Ö'ÓEãGá‰uÀõ(jèßzëÏ/厎»'¸—ãz0ODùû4’MKhèä¬y�'@�ˆ� h’Ѧ3mÄRTºæa§˜ipÑìxbi p=î5ôª“Ÿ>ðÂëeù4%et¦iŇÐè4§© 8 Ž@@è@Fgè(#¾ÅOC›ËACQ#X¼­ðÂ~Ç{øçÐ(™­ÐÚWô™iZ8„Þ:S°.ŒÀZ3[,£WNãì'Ž¥q4pá‚Dhs"°¨b¡“Cÿ«ÿUzüëÿUhè9³x=¯Ì3¦n$ºýxcÐi®W0ˆ G@Èh72—ôoiˆ­ /�EU,tò# ýí?ô‹ßþ¦ghè" 0 ¸3UièâàQ>Ã�—A`¬[|§0>o ´†&rƒ†¾Lá!!°¨b¡“¡¡O”¾‹»Ú#£q}ñâ@x@`„lÕkvžC¯3‡Ü«'B4¯B@ïR XH ¡QS#ô§àtYwš¸QM œ@`EMl.•¼ã¢GËe´ÖÐ8„W°Z€†nA söD Öʦ865tO{Û3^¬€À¬´P¼7ã( í's¡LÌÆŸÁl[T l ÐД0æ`<íÃè×ÑfN!–G#@:þ½ç5´)£û õ f;º¬°þM#� }Óé?Qð±ŒönùÀg'J1\Û! 4—ÑÉ»;Š÷ZxɵAé…ÄQôºÓµK`<�C€†#Œì€)ˆÍF"^ÄQÍéÁ@`b< ¿»c7 ­µ¸ >â70ÛÄ×nhè›Hóe‚ônÒˆ?î¼Lø�fô½Uwwì©¡=ÍÕ3ts%`"…�4ô($ag'L­ïôÀ;åË�“ °ÞÿÀ¿S¸>ç@˜î¬¡…Œæ„¶ }’ºƒ›WF�úÊÙ½jlÞ'›k¼¢Ù\Ä€@¤>Å!t拆¦lÕð ^ySô'lÐá…) Љ�4t'€˜~ ☙ŸÊðyŒsX�éàÇÒ-†)¾M54_”Ô3¡§/.8x+@CßJ¦¯§þpsí78§¹^®ˆ�WÏô<#Lãsèín®Ð÷£‘‰·X�×F�úÚù½xtú¶ è‹§ánÄ]ùO®ÔÐÉ›¶3Øl¡È3ëb ¸ÐÐ×ËémEÄûu¸í„n \D .‡€Ðâ.Ž"uè[ÓNìpC~ô%DƒL@`A�epzp¬rú"� °ž$åj¾œ]CŠwwìUƒXç:@C_'—7 ŽUn6õ4 à1FFFﯡ—�R\p Áõ¯UL7ˆ�4ô &ýR!ÿ óRè  �Þ'W™»2ŽÒÐDtý§Åæíàï·FÅÛA�úvr}ÍH¡¡¯™WD6F€‹Q¡žã»¢Å»å=$”~õ¼º¡/!ªþ[3Cb p  ¡¯‘Ç›Žbà7#‚7Œ@^F¥¡G%g%LRÒ8†,ìÜ ÐÐ7˜ô«…ì}2{µ87ˆgÔÉÖ®Á$†@²Î“2ú( ŸŽW¥Ïp/G€ V ¡Q A Ù&/mw¸ðè†N€@m¯:5¾=ã =P@¯’Œ~8’¾;œ¦óé¤. €†ž pacÛÌ §&5ƒ`&M ÜŠ@CsíQ ]Èî¡î?36œÜH:Ó8†Ø(w0{a ¡/œÜ› mx›¹*‚¸òª™E\æ:/Êè³kè}t?ª\hè˧ø†„†N&»Y[$íc˜ž:eô%54øs†¢…çB�ú\ù‚·èùúhøŒ;o#À$ôÔ9ÉhM,;kèáÌfÞ¶1|•Ij�n�퀆Þ[XÞLÀ=kVVð-¢½këí‹@g]2z‡û"2ÌV…«¦ÁáKTùƒÁ@à¤@CŸ4qpû© ä@Äm ³›^q\Q\2­J Ð\çÁÄ6§ÓЦÃÐÐØ5@ hèÐ0å`<5\ÔÐø ÔQÚâà Àò@ Z±èÝѱ›†ægáµÎ› AC·Öæ‰�44jâ|ÐMt+ÂCÐ`Ä1ñ|t{ŒSùnaà”4ÈPSFï ¡i“ŽÝ­æ©|,§L?œC€† 'Œm@ †jèæ·`Ì ÞuÈë°&F A/òÃ`Š,¸ÓcHô´IÇîVhè!Ù ° � 28mz=¥ÎÜË1öÈgNpq*?g^àÕ>4hè•@Ä]æùô¨<ÝÿšÖÐm€ŒŠv€Ày€†>oî®ày|Üë½ë©á¸$ÅqRjŸ}hèS§Î÷#ЦW¡¹gÔÐâ2`E² þ,À8;ÐÐgÏàYýmû^B¼¨ÚùYuÿ‘Ï´é¹…K…iÁ‡c‡#Ь¹ŒÞTCóÎîV“�›Ñ8<p�‹�4ô±øßîêqWÈô -Žš¦/žUߎ†&ãëŠÛ­QD~iš…#?Ê'Óc#‹Ïª=µ†SUåƒw@�z±„D@¨7ýó¦ÕÊ» îˆ¦/6NjŠC¡g&ýMÛ?ŠLŽ@‘ ÿi_o½ÁűwÏk81‹N›²WÓÆÇΈ�4ô³vzŸµNåÌ.´/iYýÕ 4´g$ÆN359eº—ˆB\*Ì–¶­Ûÿlñ  ?ªjÆdU—¡ªΫ¡Å7ÂA_UyÇà€†ÞX˜- `Óý®ù“[hh“©‹ÿMlS|g~äÀBA:|,=¶bîQ¨1ƒ ‰N¸G×óÍÆM”z@hö¤j¢†zò㉪è0øÔ@CŸ:}gu¾xH¬%©¸»C·Ý Læ ‹Ï¿ã[;bÑ?ä¶áÉn“ÃÝ€A Ѓ@çyp›‚,2XODü(Á<8oóy1u =ùñÄìÃÈ)€†>Eš®æd²­Œ &%íõq\÷½PÞO-ñ½ï&N¢\'qãj•xvG@_¾V¹Ð¦G“ÌPå‰lž ¬R¸ÍòI5ô²¸©2º­0k,ÐÐcñ„µ,ùΧe4µÌµLãÑ^e~¦Ãk¨m·…dì ݇fOÀ-›aSàn-ãLÇèà !z×·ÅÞ°tç¢ú!ïtÓ�!� b8Ή±ž[ßåç\CÛì…Êu¶X(©õõ0ísÒÔ>ù€†Þg¬²)CU›ŽôHiT¼žWÍÚÜòm±Š±ÖŽèsÞ#WÆŸhèS§ïÜÎ'›Áœñ“í3ÖЦ¼ÙäôT>õ¼Ì‘ön…†Þ j,´)C.M›¥ävû(p©mÑ hèµ’œ¼iÕÁ8X€†F%†@¾ù éLLšQ¥E ­ï¸àˆÐÉ= ð ºTRñï–Œ¶6¼›{X$¥¨še4ùÙoA0‡�]–'!âÒSLës•?mƒ½#•6k˜:€†îÓ¨Ò”¦†^.ªð*m~2X\¢Ø“¸Å;OѬŸ ]fÌ‹€¨ç†òîW“ý ¡‹–¹¡�ŠKc�Ð@C£*ŽA`”†&;ñ'•æéEчâ�¦x±tðSÓ»ñ~íBµã))¬ #P[·I}ÀÜoÎŒãd6EÔt¢Â‰EÖƒ•¸)œ(X¸:?ÐÐóçè²ê#^¯ñ×Åó•1½f)ô«æVíƒ8 ÊÜ.Ÿ‰ LWwæý¼¶ØÙ±ËÖ:;¼®ÍÜZF=©ÕÐí—–Æ•3zžûƒÄ´ó � }ž\ÖÓ@à Qh;MyÇ;)—#4·Š‘uóÓšŽšxPU«tÖB•†Þӱθ0˜T|'†Eù›±Ÿ1’ŠNgÅÒ™U2Þî9&ÖЂäñÃ{¦æ6ׂ†¾Í¼ïuRærZôh¿žW·42æÖà&BÃ9´¸x¨=íîÌ_²û¢!uâŒéS!‘Œ™1Å úd,ð‚ŒKÅËû¢‘@CÏø@@C£6D`aIÊõ®öIh茼Ò<ø®ç4ž~ˆàÙ(+èpÅFÅÑ8꿼 ½aÑÃôÄd*?£_‹!öÉÏÍ„³ºZä¥bD“ (^9ˆÖs’�áÆ¹€†>W¾f÷–s:qY’Ô6ÕÐkÑ·%>´7×LF±WyêÏ[&ªZÍ^ßðïÄõ?Ju5ÛÉO, JÐE^:Ebù±ˆç0?¤ÈÝ)‡“"� =aRNé’f®U,z’Ñ ‚õèOÞ¨sÄòN4“[Í&$˜º6šè^ž5z}Þ¯jÒ{:vÊÒ‡ÓçD Øù „Þl$?:VÒâd$ì9+^€�4ô _rI! ‰Üè*"µäÕÒ6–wž>æv´`å<Kò÷+‹é¾6Èì ž×3õÚ^Ò0å’EŽ .†€Wص$Pr ˆU­žÙ›æ˜ªU¢ØbŠhÉ%t+INÄ0 PD�º” -«ÿ›œ¿2ß’~&ŸÕ­&òñä(½¸JÆõuñ¢©¿Iãj훼¥[Ð?-ì öéj™¦+ÎopœSÞqZÌ}7j3ÖÚiÏÚ4À=Óž×Ð<dÑžjÞ3@¬u: ¡O—²44‰×à¿-¢›gÔ°)—͵H:sLV5Grý T²©¹cf߇ܛ5ô:1ÂŒ5 Ÿ€€€Þ£6c­ÚñDzAzµÍ†Uf(Ÿ¤†h6sŽ3C¤ðá,@CŸ%S³û©U©`+R¨EúæZ-£Dyÿóı°cÞ›¡×”TŸÁ�7èù°u¦“Q˜—+ÉÃø­C€} °bk™*éC•ªÁ|“zÍýÞ°J2ØM‡ACo /Œ7 � Ý�Ú£)UФw±‰çs*ž ¯‹ˆ‘Úöî Y^ø ñú§'^…Zõ†¯Wߣ¡é§�«V¬\ÄŸ[+Šþª¥1Ì@Û•sW^³æGŠ} ­/ûé\üÏ¿ïNê!4t{â´jl·u•™â(WÐz1!£Í?›5´þµX‚×&G€°.§ù]Hmþg[Mú™7ÎGÉu1 œ"*ûª+OfrÓ%‡™ö ÝìÏlù2‰T8©qÐ}§3›³ÁD�º|­Úm]ef¬’óˆñf \N¦œÍ%ô‹žŸyƒŒ‘óÞw —¹æ˜}Kò}ZŒÎU*q\±ŸÙw™1îž.4mö,t`â© ÄøÄêÀаôI€†nLœ W|Sã(D-Áæ!ŽTfq.‰QI©!7¼ss®ž^["Bß dÈOíðÚk´™“*´ŸÚJÀøó"°Ã•kq@ñÒ=¹‘Oš—6 ÍQ{]tRáö@ ¡ÁÜ‚a]™~_ƒ†.Î:˜ SA4Ò“ø«pò½]±.Y0_7ìi¥±Ã=šÙν´1lÀ _Ü8ű†&㜣mö¬²Ôy›z‹œæÇÈK"� ÝžV\Ñ ì}æ)ÅXÒ ±ëýF‡6¢©–Ú†ÐÜâu’àíeÁ¾ï(Zš§¡É¥~6.©¡Í.{ÞÖÛ“M̽Y<†ïÙÁܳüì€çkøFNÈF5kèb°ÐÐåå–ÍBC·ge“tO»‹{ÍÌ@á)Ÿ©e{KMlöa„ëf=~H'ãç@ÁsÑvèOÉ%ŠÝh¯ÊÂ:@à0Z3i'é¨Ç0C˜G¸‘3$ŸD yX§†^5ôYL’›ÝÆÄ #� Ý›ÜÛÜ~"j“˜4²Ä€\Å�òF%æÆ´{\+kåJÆým,yöLþðñCV :³ÄÀ¾Û»»0@Ìðmü¿Ýó¨Ï¼’¯‚6IòU6k: ©¾ ¸ÚRYÆ_ hè‹%tópÊ|%NóʦìæryUœÜˆž®%2×ßÚÚpËÙÜ|nú Ä·€b¿·iè̬Í+ �YˆIÌ;MÐ{¼?>ÍCV:øý(¦2¡¨ÒÐk‘“3\ô'D�z ø·#24éäéuźJFóæÄ¥0)ÎŒ†æërÖj{H5Tih¡§½«ˆQ·  ÕPœ57gG /¦Åž¸Å¸@LÊ÷"ì’_×ÅTçIŽ*Bš ªˆ Ü8ÐÐc  ¸]Ç,s´tj¯æ…ŒâXœ˜b—ϲ• S=L¿KŠ|ÀI TðµØ!؃“þÖÔöÔÃðN b9;p—Å:>¹æŠ"tÖ† ̘£ŠarÅŸùµÓyL¿*ÐÐÃ2[Ü´ÃV:ÎP ¡Å D ­5ÍY¼%˜‚X+rOCS{[E36Ô íÁåÞæmQCk72yls³€ÀåÈÈÙxL-D\šû½¸£= ±å±L\Þ{=¢ö²ŸZ tma<G�zX=¹iØJ‡\)ôbð§à8¢0z=è%Ô 44Ée¾âvz]ŽÅ…;7ãÃØÎ }èÖÁâ·‹€InE½Û€WÀÏ‚š<ãž Á‹¥êçÿÛB3Ch»òç­d»ûOÂÄ”s!� =,_·£¡‰d¹´õ¯붡e·É‰Zk=M Ëß" ­ßM6•Ú¨¡WG”Ä%ÚÖŠjÁÁx pˈ+çQ[›.Ôc![lRÁE{‘ˆŠÈÉ¢f…ð Nd‚?ƒK~ÒÑæÒ-W2b_€†V 7µ y'(2Q±m4ËhÒÇdA¬%pÑ¿‘€f¹cÔBL5/ Q\Ÿ 9)©ÒÐ7UÏÃX�†€@~”0PFÇ Ø$mM;¦ , þ˜ŠGqFû¦I»ùÊü–¨S )#� ]Æ(9{’4¢ EÐ6ŸÆN#ø­¡…å²Õ;ÏH&º8,ôÚ ³+PÇ"Ðø“çÀ½ D›[Q �@@#Q¥ ¸ ³+o>ñÌŠÁüìV ‚Þ7—оUhò¶ð! 8S‘—êw󦪢Àà‹!� =2¡ØuâLB“yÈAìÌÍTu¦2¦W=JTK-Áœ52ñm‘çÂ1ÙÖÄÑ”�-߃¶¿5O%s ·K,ýèÔ”žNŠ9³Š¦qœ¬ÔR„p#ø…é@â¯ôÈð?«\ò&6³ëþõƒg@�:•…d#¯Úé…O8(æ @ jÅ©éRècÍ\¶zR•+éMq 44×ͦ†ö:M ª“UÔpЖ6*6Žfv øXz¶«pÎu™¯úiZ&߈¦´c¾µ…†î!®@C¼»f‡*ÂÇ"� ]À¿Šæ’jæØ”o½ºGÇ$mi�ÇVßE·¾+˜Ž¿ËFrÀ¦ Ïš¦¹{\ë“?^§!ZonELï,GŸôlŠU`\ÒQž`] °ÁÆì_4C瘺x„ìõÁÎMÎp¶4ŸgpóX:sÉ‘±17‚�4tYCç¯J¡¡Êæ­B«gqïÜZF %jjèU šR{‡½íѽö\;£; ½ãÇ4¶@O¹D¦÷åÖÃØ;8®4·0o¯q;UÊ2 AeU0ò¢/õk„†®ƒ= ¡£Ú¨mäµÛøu©y­øãJœ¼<rçc´†æú˜“)ÍZ=¡_‹&'Ê€ e]Zä¯ëŠç4ÞIj²vëMâ6Ü�m a'MD•ñûh­)KsŽ ~ð€`ÎÊ€hèôL ¹äȸŠ1·ƒ�4´›kÎGyÉÒ°™OZm&_{¤éÔ!'wSÏ™Ô)$2Ñ7—צ�Ýí@Cóp¼j1£ãj˜z^¾!™k‰§ª^Ý×÷ÉVû#0dëÅR8XÂ#s:¡Ð4F†àéièèÌFï†ü–è¨adr ¡ .È hbœÉ³>Ä=OâÄt,ÈKˆEþ'§o¬VÆdS¼ÅÿrÞˆ©¡éEñ®0[ÙÚN¦‹5tÆHþ‘[·ä~aŒB ÷ B.Þµ¬='æñ$&`K›½ÒÓ¾µÐyÄØ�] ¡¹’®õãohh[Có¯p7 .0Ë¥a?Ÿ±ìŠ|`¥)U3š'‹‰àVUÍŨ) ºªÙNC ¬’Åi¦£ØHf¨Ì̦›ÁOø�zèo=œ¬/ãé혷yŸ ¨ž0M ÝfðÔ×SN˜»ÐÐj ’{59l·o´P'J\ëë~RÃü-þ"—ˤ’M }”+jh¯NÌ>áõ3‘… öb }#E»Ñ^€Y 0þm¨ ˆ(±­Ï„cU:ÿ‹xE ‰ÄúpÑB.Šá`À5€†Îjèd¾ogïi¾n¸‡Ì”ËB:ÿä}B+édâÆó4´Ù¸D¦úÑ…”ìdf ±µi‹vZÇÆV ¬­\0YéEÃdÔÅ6§â̽U¿æÇË5 É$h±†í$aİhh£ <ÆIn­ä°S×IUÎ×â¡‹É™QÈb-£õ�­žL„ÖÐÜa¯_ ÛÁùhèQ*–Ä©÷œUŒÚ‰D#D›UD‘¹z×b}å4¡àóëüÙyÉ«ðQ‰(…@�ÚÖЂ ˆŒ2)¿öÔD).9ôwY¸º-Ê&OI›2šËt­¡3ÉÚhL¬¡Í ©Ðfw O¼·0©5ë…#$B­YŒs"°Qã(ò3¡!XK¼ÎAó(^_º�ï _p9‚†ž³há4´[f«ÎÐ\fÌy+O0²&ʘ.…Ò5qàÈëñœLµnæªú@y7›'("dÑ®¼@8ø±²<†67Q>ÞS¥@U£x%IÖòZÖÓК²¼Õƒîq8CoNæaçà˜b½Ø˜òkaäµ€†Nå7Ørz~¦–ŸcP —5u®´[T´Á>W ã|Êß*.·œèéyàžèÁ Ðúo6Åæ$Z`U1ï†X¦“™ev”‡XŒE Ù88ë½/˜ópñû*<¾™|%¶§y[v MiºIh¢t"p ™…óNg0ýÔ@C§ÒW%;’T˜Zx¦AœGô·­“ ($/Ï{K+f."kÕä>ˆVièÍ•t¦5òš :å>àWñÚØÀÛ+‹>`�Ødãð®$µÎ;ÝÔ¦‚Åõ6½Û£¡‰¬<<ugÑP®¡«þ3;W–;hè,øUÊ#Ɇٵ'Ç%²Ç&&‰ elr±9†¿¨E3½[T‡€'4´–ÔÅÖå•PÃf×Ú딇`¥…†ž$pcO2]Ch~ãœÖÖdP?1ãŠE¶ ³!šú>nZ@›w’o”ŠYó�ó¡Ã��4t¶$’4T¼æÎ®7Ù8®¡Ås.v3¿ª3½Â=ŠÃL¾ž6­¡uŒ¼Tw{Tèà6t­¡‡ô¡í öÜ›9ãÛ¡Ë7‚@fWzÚ{]ô£x‰Z ­ÇsA,T¯^ÚkÁ·ÒG]ü×jhWÿ÷#o¤žo$LhèŠDsaO˰aÅÂs å4m²§÷ß© ÔpÕ[+Ò¿™?ÙOjhÑf‚ 0³% còâ Ü3;ô›^�dö¦y%hk®;‹*9Þ}üŒƒØX„MüŸÃ&ŸsÊ# |ßG4Ùš±kÎYrdˆ0r ¡ë’s ˜:ÓÓŽL@âUB9?8© ÁÕÓк߈“ÇÍ(t7§s¯%³h±?%÷`f-ŒS!P,~R®ú6O[ó£‡àÎ7"o ß„VözŸÉ9««ÔP„Œæ˜Aõ§ÌóJ[696“¦~'aá@C×¥)Ù¿/¼Ç4Ý—ìy­ìeh#z­+gtFCk×e£-š× …3CÜÈH¼q.¼­6ÂfÏ…@¦Â9sòèˆ Hžòëó"[BÖÔÇDMÜg2"¦˜cÄw˜s7:(Ijhîâ8×nÚÇ[hèjœ“4Wm÷ü4‰›kÅÜ®Ù3úͱ@-ç­EècS@›Îè‰qƒäÎ ‰n;#ÐÐÛa Ëó#P¬Ú霴Bõ´µùd~)GÙ\¨MC'¿9³›†6‘‡†žËî!4tu „‚ NI«MŸ‚>ÌØ:¦d:¶vCØ×× ‚£ÅAHR@›ÁÆDÏÊ\þí ”höÁê“; nXú25´'‚ãS¤ˆõ°£(Xk5´`¹ÕÉÌBü¬!óÓCµ óÞ‚…j¡¾üxhè–g6RfLËÚsÏ¡# þyâÜ.oâ‰].¦ycX{ 5!%MIdyñ#u‹ù 2ðp~ç7)#½1â-h\1Qˆ]­\9ùc5´`-S‰õÑ`í[f!âFR±Ürg]Tiè-èôÓçA�º%™Í|Ë]?ƒO îþœ ÑæâUôÝf„¼.Jj>ž_·Ä? 5óáÖ ¡‡C ƒçB`”†Ö—èÞé D}m:ÃÅw›†½—¬á Ex^džáœ«,ám€�4tKydvÔ„ª®%ÔóÌ™ p¡¡…ê¥Sóu~“é+fƒ ”ú„Y-¶± }†K@ ˆ@¦Y—М ¸ÞÕ_×;ˆÿéqç_ï ~»CHó54±XËâKŸ±ôžÔÐc-– œhèÆ¬w>¶_#²­ÓfÜì[ž®ÕýÏ G÷­µ±ñ××çq/l…y«yA¼[- »@`KÚ¶¡I«w½Â%£î\ÚϘ|Äe?L,”âÅÊ“3–Þ3zìŠ[l‰�4t#ú™ýMØnÓ´ÙÐæZ&ñãýÜ Ä”Î¤žEÇ"}–c r7[Z›j“n¶m¨5´þ ‹ägRCó‹p¡ÅŸ™_£ËD-$l\õõ”oßßö,¹7‚�4tc¢3,€ößnÓ´ÙÐö44ÍâJ¬ÍuǯœBF'5AS]`8�æmÈ÷BшÜÞÙ-QyúÃÛÙ: xYnž4æz½Èئ'ý¹½ÛcÝþ…`ဆn̲¸Ä7­9¢qmLs˜ p:>bÚ¬ÝØhzm¯cå¿ö>I)¡M’¸1 Œš,vŒ‘¤Œ.jhÎKúäÛ¤óÌEòÉ0ÛŠŒ½5ô¨…FÕìÌŒ�4tcv ¡ÛrÚTÜ'Z…GÜžzÎà䵨zOÆ¥†1^Ö¦ÊfC\˜rã´mC­‰ãÿ‰Þ&üѧ Q‚¸Âä²ð„þä«ÄQ+wwæú¡­À81zmö1릀†nOwQFi¢}mÌ´˜ p®¡kÓŸ¢Ûi=íå™·"ýß Xß=Ëw ͬM•Jì6 Ѐ@Û6ÔZìåª_äXOsÍÿå5´VÆšvÖUâ¨9+Æ¢¡ó ÜP˜rI ¡ÛÓZÔÐÄ\ík`f S /Þ–øsê4ú(£˜ËëýÀKÙT©¬©AŒ{¿ˆŽÖЫhæšRï=‹ÓËú<ð„s…–˦2æ‡Ðëê\›ä“ÐÜOS©Ç<™DX{ØC˜=s‹cÀÌ@C·g‡ÓÖR�Û²!7“h/Ñ“t-‡GJ&Ùr´(§–Ù�àÎSÌ|M’Ä¡Àr—D@PA1FSÇ·sèýnJj®Mõ�ze&~‚ƒ«po@¿†6-g>OÓœ9 â-fG¨ZºÁ>¦LŽÀMkèN‘º†Æ¶lÞ6‡Ë/3wº»ˆŽÅussìbâáP€.B„çE £E…§/ªõe˜zŽ^ÔíÉÓФ)õ¢ëõ9ýop©OWòB-6\ÒîüÛŠæ,ñ¢9ÑÙô°™-«–>o1ÃsÕУDjQF·íLlËæÛxórfó>äB™«ê«›t ûClBCF&A #ì2åí ñºæõ#®ƒ5óÄÒ–+ïgÏš§Ñ…¼¤­÷›".êKñÇ@LõÏÙ2““íE³Öw«ORœpc#nWCWÝh_ÑÂ¥agê=‰m™¯þÀóÆ‹#ƒÜŪh¹vÀ±8$½E@Ò†ÃЇ2d6f~LƒŒæ ˜4q¼b0…+òÝ4tò§÷‚®ÍÙ¸™uÆõ¯”^–p`nQC©‚zL&Ê¢¸J®ºªÞ¡JεD-à£XZ=^ˆ@Þmè<V99bãseþlNNrÿ’~ Ú½E:¸AC/ÞŠYB.kãÜ%®³‹s$…ó«fsÔø ™º¿¶ÀôŠúײkmbü€†~ö剆üet@’Ý`¡!–ËL9®*6ßócH•Ù;ISD AØÅ;´jÿjML’—?YŸsíKˆÑ‹IÝÉ%µ©G…Á¼}ñEÆ* MY(.ÇÔBMñzR¾ÊàE‹¥G!p[zÝ�ë­[ÜË!8kMRæ"?éWFåûì4�>–rw,0! 3(aÌ)4´'ìâZ»×ñb–)@¹ü­ÒÐz"©I’¤ü‰0^Œ7îÈBõÆ_8‰k†Ü¦‹Šäx‚—ñS”+œ‹ÀÍih~¥›ùÑœ"ÜE5PKˆµÔVôðÖ4>(NúÍfLÍ~ÑO¯ß'b�˜@ ýÇéÝ ¤a khhÁNy²±Ð¢üI­ñu|ðmBz—«v³wç•:WÒ: |!}1@Á9†›°˜áR7¤¡õFÍsG€©¹oÅ5kUJÄà>íYîs½¤Ü˜óǨ=œßçkì D±\ÆmEK[SÃ5ø©u¡)£…@$E˜YQ,¡M™‚KhhSªš 5t zy,æsÝ—…¸Ï�ˆ1×Cà¦5ôß»(jè¥hz$BÏÜëÕk2"Z¾Ã%í×^Sõ›MZ8Eµèì$£Ã0 03\Ø;±(£{v±—B"sKoU-'bÍwÍ”i?Í/_æ¿^_% õצ(/[Û¬¢Y 87¤¡W-knÔ*Ižs›[Ø?Q‘íïªViŸ»å¹²'×ý@»zÒÿQ[#¹†CðH£Xÿ»8#£éd'Ïl„!M!Íå8¿BðÑ‹®¯ˆ;4D¿æ?|¡-stºS‡Ô½ 7§¡õF]ÙDÐA>ÁMpÒÉLjôfƒ·0Qt©üa†I¾fÍx‡+ÇÂÛÙ}wp^x8¿Ã;`‚%.Œ€Yá\hnÁ$ZF i+tpþ¤VuëÔòZ·3î[àç:Qh_7jßÁwœLS4±  „ÀmihÚ–q#¯ÝWEÝ):§ßf¹s¶íÔÐù3ìc3uìêÉ2—7ÉY<„›¨Ý¿—…T]õ(ï€$…ÖÒZY4M3)zŽ“«Ï§Miß9½®î‰lò¿ K.í†À-jh n ‚3z:ØuÄS=Å®n@Ohµ¼ækçf¦ž&òáþÄmB÷Ê SöD@(³XíéXq-OSri+˜§h³8À“Ѽ©™Ž-¯n›ÿè-Sæzï+&Õ¹÷ƒÍæ­Ïq€"®  q%ÍbØä@C?MP±£bº¨¡=¢¤HùÉËhB÷´ Lþ”¡h<ù3ìb mŠ­>³°IÙ¿fU‹KÜc7`má!ß³Zqf fÆ¡‰'ëêZ‹imS¬›äa²#D°žÎkCvdÎ>ŠrImž™r‹Ña@'ÐÐY M@k1s7Q•—ªâœ¿7tVáÓ…\[ƒemºž:šƒ¹[D‘·ÉûñΑ_:9Rd$9 ÀÀ*§DU‹WøÎfF,)£Çr¾)£{ôŠ0—â¹h—B'“¥“îÝ­aVHþø#_0¦žÖ~æ bäÙ€†®ÖÐZLCy©1[wàX>={ÉÆþó\ÐÕK’LÍ>­…u声õt²Wíã6wrŸ±Ê5ðä2?’œªÔóµ¶ú_Þ\ÆæŽËh!{"ç…}Ù|­$ÓÜàP™§›û Kb»ÒÓUqõ ¹"� Ý®¡y:i;éÇ",sš Ù9缆æsMâ¦f.O4t¦B0æ¤x$™¼¾3jNZFoA)Ô¤´ðm†ˆÛäMP¬µ*é*­)Æ5 ±§Â›Ã &ÖÆµ…°y ÐÐÏÀï¡-.b„žÖ\ ö|†Yz|;°¼ö\Zãì)Ë5Aij4Q+iÍ"ÜÔžÁеD?Þîè¥9Fx³L¼YÌÝSëüX‰M!vñFþe‰>Õ¶çÌÀòZm¾bM6És“œó·_·!ÐWóB˜8!ÐЃ5´¾&.Jä ³@CÇ›G‹]~ß3½fü€¦ÍÁœ¯…ø>j{Õ9ªâ…†®‚ ƒõU¢Ønñ–? €\w®jÌS„#2…o›}ïÚfEÈôÚuº6/�t—rPD¦6®¢A 8ÐÐjh}…jÞ´—ÙÐÐmZô¤ø`ƒ²C_@$ 6¿ >Éq¯YÔ›g #è²pU'ÎòºAøÿ ==6Mƒmö½Ë˜˜|j©IŒçÆ—µ µ NU:`ú逆~”²©êÍM–¾jçžõ8vº¢ô.R³µ‚dͦ+^Ô”mš¤{G/;|‚™¯+!ò1 ¾gvj’¤=²õ§'|*m ©`u!š=Ýl2aCP˜ª€†ÞCC×*P±F8u{¨ªHsp Î:ÅS«¡5ì¦VÞ§ydp3;Ç$äü„fÓsµ PsôyD†ZÏ8u‡M¯9ÇrWò„¨'ž†öÄ4o7Þ7{`ÇÜ$ÐÐjhsó{»:&£çÑ)4ÄUJ¬‰×Áñ ßìÐ<2{8)ú3¦6³© ØÈg˜SF 9uj¶äJz£@r—æÏá•Ó ¡wðjx˜0xR ¡eâši+Ïãz‰@«‰Ã¼“ÖYÛ+8±Ø ì뼘77Ó°¢ì¦3o!¾{bl››)$ÞÚVéœu¸þcúT˜òˆ®Óß’C°ÚZ·¿éZ7Ä" 6÷ô!Ù„‘k#p} ]»½{öÛƒÒ{öÝj³zŠ{ÞûêáµkÑ‹Ž4´¾Ò\èfn9Α™ݘÅ+µ56*o½1šÄͨaÐE¬S´+Mþ<nûrkÕ&ÂÔÐ1ÃOòe•ÚH1þŒ\YC·]m7kè*J*ÊhsÀ+lˆÏ¢©èÿ•Ÿ�Hzù5Õ™<îÝ$Ý\< (yBe¿O'Ž=¯Ú `Êm" 7µG§Ãgç@FQÖ(;:_ ¯#/\ §+ÝÛtøâºáËUm\P{Þf bOSy´9v²öúJ_®¡…ÖÌK¯dwàŒIè¥ÀÓÐtJwøa ôF©‡YÁ·tݨcçtXACó” êÖ}–Ó WÛ ­ÿt¥‡g@಺‡‰ªÔªÖgɼš«¬Ö¼·’–/9L$´˜_b[qe¢Y˜ŸgxZ3µ÷[޺Ó»ZÄg¸?dw²ª­´K°|1L ­)â¤QïÈM:ÄHpÍ>h­€ퟴàöü@C9Jһɉ\´™% í‘©¾‹#>ŠÖÝȼJáÂ×Ô‚üEqл$7ÈÔ¦!ºBt_Ù¹›°ÌÏ€ðð,¾5ÿ¼†r┢»Ìð|Uµ­|Ãâ'ߤ8j¦zäÐ ‰FNÀe5ôÚÑÛtL‘S‚ÍYœËËÅlÚ¯²|ê¢$5æ)é5³ÅüŠ\ 0ͦ¥)[8Ægñ¯1yëLŠö__˜í܉{vÜ@d`êzÛÓÔU× Ê=%`'bÓƒŠ5•1ç:]Û9s½…ˆú¸¸†&5SËGUê6#‹k/ßMn’Êoç·JC{ÿCŽùú\кöak ÐæñL?_ÄÝîð;°7 ÆB@l(Ú†ëfÔWGùyÞu;;KçôŒ†&Â7kCtäíÜ;oÆáù(®¬¡¹Œ¨Å«YÂÖn×@¬kŸk×F=Ãø"'’“šUMÄLq,”±÷;¼Isõ¬U¬~¥í3L ’zçjÙúÊ!ƒ Æ\]W´ñ= ½såoùát.Ñ9½¨¡×ŒëcÎѳ¶Îìß ××Ðâ’4™ã¢Hòì4°‰§×õë Æ“ñN2¬V‡ñnjê]“F×¹÷PŰõOñ¢ ݦôm:ëÝÊF¤o·u'©^¸±¼¨<-•Ü•[¸·Í¶RÏ=sc�‰áÅ‘QqðÙèhŸâ¼ñU ¡Ý ]ZK£Æß¬†ær½ï9>¨ ÊS&-´î d4‰l­¡3š«óÚb(òQ •Ååâ¦:~ÿ+‡"2pUH iUDÛ¡jcž¨á4¢èY¢gnFC7eQ*gÿÏboÇáÛÒÐâ¸"³{J¡PÌ)¤ä¸&kðçDS´ì£sˆ¼Œ6Šš÷i­¡=UíIÉí07µ‚)¬M¶slµœÉ×Ö>ÀþÅ ¢ŠµÔµy²¡­Ô–AóÍ‹òŽàÝ•'¨›ˆ_Ï(‹ý\SCkõÉ‘ÊløØBQ|×&ÆsÉÔFµÆO4Þ<gâ'ʼMò#(®q‹7f¬MUÍßDI$SF²rH<­¬Ë[ ¹Ï1Lfg ÁFn¯¤iÏrB¸>;l®¶%Úf%DÉ ´wÝ®»ÉX6N†€a×Fàjš_¶:8Øö\µå¾SÌYúÅ6ãmì<K÷È€…°& ´£©¹IL›’šŽ4Út²ó8k'Í‹õÅýa.\œùaävx„ ´ÑUëpë¸Úì·ÍJ ¿@ò8ß3¥é—ê'ÐIÇ0 ¬\PCg~Á¬âõ6v8Koõ6ã§(wÝ ½ŸË0S¬ÙÖä\j·\RóLrœ´×¡yvLR6[~O.¡/Ä´–Ñ[WÎÖö{pÃÜk `^”òÏ÷ì5BæQì°Å–h˜’O O.gfÁÒ ÉÌÃÙ8F^Kih±Iâϯ…ñTu[îÛh%ãC›å¶(öŸÅ3èe3¾'’¸Õü!$ÁȦJ¦1ô®`d’ÔæM&ZU5f ®ÐI'3ë&Ç\»2“ `ئÐî¦bÓ{S_LnêÒžÆ3=«ÓŸ†]Ü0%ï¤`ìà›âœx9uÓóý?—ˇ‰‘çEàv54‰Œ€šÙ¡m"4ôÚ9QêŸ4JjhÞ\©­­×{KKêÕšù[Kœ¶ÓÐÜUÝ9Ä+Bd´Uf‘à62[\nÍ ¦N¢¯ ]Exð‚÷p¨Ý˵ã«\âWMÊåš[nhè*ä18‰À¥4´)n 2›?3F/Ñ6Ë<A1µ`2»'F!›SëW®…ׂÒk½\+ =-4«'Žu÷ \­M ¯(!ë½²‚ÞC¦Ös|sÁYF.€wÕ*.oDC{7³ Ùãµ{¹v|¾V=m~Â,R îlœ#/À5t†G¸J‹sÜFm³¼ õÓUëÒÍ¢SBÙüú6×Í$@µ2^Åh, õuúòDäÝ §-w¦·™‚¡1™ï tú¦¯OÚ b0/ŒMa$¶†yIy<…äj2£9¿y˜Ô6¯Úñù\$54ð³fãí<ÏLj‘gGàjºØÅ5‰Ä©y› œ¨•ÙÙË. ï@êQîˆ4¹¸»>65´°ljî`-¾´g¿3ež†Öef¾²éç˜âª#¾M¼L¿Hôx[›o[.›¹w~l(â=®d¬î8¤›B͹T.8‡Þåa§õbüüy‡‡Ó"pZË¡‡âô´ÑD@:Eƒ1…§O[mEœ3RO°'×»Þt*�j´Ô}¹¶ÃD‡ÂÚcmnY”YsâxȱV0—ðúî:á+z}nÈB0rkðr2KK»Ø&W…˃¢¨¡óŸD Ž ®Š›9-“¡¡år~Ž¿6³ŽäAå¡Èø‰1·ŒÀÕ4ôºUÄž÷d %>&‚6šÐ‹š¾™Å§WJå’%›—zœ=Mº×¤¯Û-½kRØôD|OÅìg";ù¼{iâ€{Îk8(ÔŒŸmEåu&óžÅ¶%0ëÐ+ˆ]“€Ø&WÍã“`ç©UôDÏ&;œ×Uô?qŽ`^<ˆjá¼9©Ù.(X¾ÔÐÞ%f 0øžÔ Ž'šãÅ^ÇTé±(ÿ³ÖŸ•lDİÌÕ*Yô�R¥š¯=òåS⻪‚ ÊV¤rÊ\òˆ†ße!ÊÍéD{mWi3r—<ÙG%'ö¬¸Ü'º<Ñ ­¯˜{Ü3ð[óNyÍÄ Œ×SÏIÚ¡éÂÐÔÀÁÔ¥4t‘)â=hÓ*Ùjj¦¢o¢ÅŠÜó*gÎUâ^ðB&XÄÑKD»¥?…¶Ö«Çä«»¸©€;)›‹! ´˜*Dã0°x´)³òÏUðvO¼ýž9tл“ÀžQ²V‘uCYˆˆ�/ò�OM@ƒE;Íà<8ûÄ»:¢íxm÷r4ç·¥¡‹šÃ«<Sx›Ö{=> ’(öÿ2ÅM½P+B3FÞM½Ïõ„\æGó%É·X y’ÎÕ±¶V´¦†ªý25‰@¶@ .QOaSáqÅ·CqWnËÎ65Äx`Æ H'(80y»ÓUnœËkbo}—]p�šjÈ ¦˜\JC¯Û)s‰é‘líëÓ@3%}3%i>þäkÚ£ibUOCÓDþD«g¢Ý¢†Îôiês™š .ÈO‘ý \ƒ:R6ñÒp†¸#çE Y¢æ–§¥ŸÜC2ZoÀ¶î£ål@°£n \%žŸˆjÒ¯×Jλ¡àù!\PC'/1«är•&ð(@óQ1åb]ú³ÊŸâ*§+i}÷žмïò¤POô-ÑEþåh âý<à¦DX§Çœ(yOÄHsuám³qL¼zJ”ËG¾­Yy=Hƒ`y§Ð—ÿ¾¯æ³»y-¯s¯*(ËúI¼JCÛmpSn«ih’•è�]ƒ|uñÑäz.Sv|]ÎŒ™¹§S¥S¼âD„Óîª>ù?ód…ß;HÏ‹"ØÐÆãZ(ð0ÍÕÒ|þ]lK怶0O]¥p¾Zí¥ÉPoíàò²ÇÕyærbŒe4ÁkÊèLGãG[#ð;¿òÁ±%¡ïÐhKD±›´™Å, pM Ïk^Fg‡44 5-_]½A ]%Å49zmUHç¸YþÄKVF[7ÈYj¢SêR ðHG}ÀZ¬[ݧó[¦¸ 0à’Tít!Žùî›ô,…W+ì4\‚1*´i"ZÂü|oMŠ÷V[Ñš®9¶m-Ìܺ†ö-L™’Á:æ&­ujm¤™1uŠ1 t¯V(fºª­7î܈ ]¦ Šp’¤&´©žE+Í÷ËLy˜Ö´€N†™Yc®@fñÃ}Tq: \<ðXÄ^ Ä¥¨s®¨ƒ­Mî­ËAU°¶#H»HËUËa0èA�ú=“ĵV(j‘â�Îþú¹—Hn–ؤ'ë3ÏmSœ¼Årfl«ÿ¤ì{_ë$c>Ý ŸuжaV‹(Œ¤?Ù÷öEgâ:½Âô“" ¹7.c³æÉÈYèQl¾Ù=1êí/3ä`p�¯×ã¥ùñDçmÞ¿pFëfþ =ÏŸt˜ÁžtÁ퀆~¾ O+äwiW¾3ÒGë‹fÓ¥‡H1/gX“y½õéNžyÅ¢µÝEô ³£°Î”Ь™ ñ⬠sˆW0rFÖ’6OFãzæõÆí‘ݶCì$õ¾Í¼†éý&Æú®&+ï÷(´ÛA.Ä)Cð=Ÿ†“óì£Ø7…böèÝ<ñ^lK%fhèG5Ëhšó”m*¡Ìt>f}ž™u®ú&Ýbý3Ö”ñ…ÍãÙò/݆͆TìëÂ.w)nQfK#¯D®¹På´CºMdD#lø¼xϱÄlèm.¶Œç° CswϬÞ#œV~34¿'ÊCÌìç˜<VÌ…¶&ÈGX¨"Ú^&8P`+ÞÕq°ÓV›hh™±Ÿã?óZ6PQI%Dž˜Œ9gyUyÅ»ˆ÷Ü<Eˆ)X‹N³éò5)‹@´…¼ˆÏ`Böµ€æÚ:cjà³¹;’õ<Ð1˜:žäª•Ñb'¸;Š) àéÑŒ†ĸ.êuN#œÓ4›i Þ†øöçA‰@Bhæ ÁÚŽö§o1ƒ�4ÐÐFUjh=Vobbð1w’J8‘å—>EÝëžj’ ÉÔÔ8MLmF´[óh1Ø›[„4è—™¹<"íCÑÂFb }±‚ÜC˜¥zæÐûª¾HãÎÜI.Ý?\þê²X·|p/ÁZ›Q›[ÒÜÅy íiqrI§u=e×½Ÿ1ÝSøy?î:Û \rEhh;­žŒäuPÞf"»Èþ¼ôÐTmjh“Ù‹t_AôúG¡³‹ñ0L¶Ã ¯ÐÒÜ¥S} ø—\z-ìâ‡þkáéÁ‚ Å~™ 1Ä­|³{Ș¸J¢§¬Ðéuë‰5%Ϭ©§¹{žÍ±Í‹@ÌÏ/K2·ÄÌV3ðç@C»i2岦’Lš3šÈ.Ömmdœ<|Œ@IsqÀΦöHÒS… "nCC,‘Ì»)èŸÚü¬¥{^±1×.ñ·†€ÞïÁ©9˜“áÙ5´VÆÞÆ÷pÓãaÍå¦89ÖåŠ\÷Gz%à½íØL¸fc^0Å‹·[Ûˆ· hè7N æ5wôLÃЬ¤í›.åݘy¤×EÙeäÉÒò:ÖÐz|þÝò§ææ™¯‡d0VÌ“8y2X´ Of™+̵ WHm^m:‹¢0,PÆÜ+N’Ä\+ë­l^½h°—9¼<M^—Ô÷«lMœ¨u É¥Á›&Æ/�4t!ÅD­¢¹°Ñ&étz2yMë&*^‰‘4{°æS-X9ÿ&Ÿ‹;ª…ÍÌ­¤�’RûÜé"UzˆWXôÔx²˜kb¾m½ ¢…]Ì�‚FÄ¥,@ƒ+TÆ-ÐÝÆ…ÖÜ╘vb­uj°®`È}À7•ô²4/Œd;ÞÇa¬rj ¡Séã4PLÑ–ØÆE-v>qŸùzqu“[§m9q8žÔ6?¡#VåZð{R7Ó0S1ëÍ~©×:‘††€®Úhì! „cñR-þ Fì©ia'â½ `�ê>ÞUº8#ØHC›º“K|¹`Ë={ fúP¬½iëŽÍ†�4t6#£d´y$Pû¢y韌„¨“KÀn{_2ïÚÃüôP?ЈæY=˜7 S@¯ç@Áý!™ ži9](èžÅ\-ïôE¯¨1¾I½+d¾£OÁWz[ ÀÅk|ƒ„î  ¯ù‰\’`WØéù …>­ Üí¶ (víÌg»áƒ…† � ]†‘oENè噉‚L‰z¼kz> ­[!È%µX”swÛZ �²CbËÙ\¤ 0Ÿgô.™2)Ø<'K†7ÔÁ4t2¡–DÀÜ×âEª:NÅZŽó]œ\ý¨a¦†&Ó„ð›ÆJoRoÛz´£»’ç€ЂoW«žçÂ1³UX÷D@C’e’y"$W¾ò2z%,ú»a:°Š ÎÝ¢3õèÂ<ñÈŒ¾ ˆRwVþÊ >oZú]-¦5€'‹€ˆvX¿õ�]üŠ­W‡ýG€o½5Ä»‚ç‡NèZA;"^N/æ×0h<iY.sM†1±�z+ŒShõShhAtó<œhè(zkiñ$D'×£ùi.x»OŒå&I‡ÓŸIÄfïY¹Û»G9˜"¶Ô\[g=Vçëg#B¸A@o„3Ì)‹oLqMK,!tää¨ê T}Ÿ†ˆT4¯ ˜ú›Kê"2&ó˜Ë‰¼˜L{øAŒÙÚ:u: ¸5.¥¡·V0ÁµxQíÅ…åq–9«èFq-ïæ]!gÐÐA°º Zô¾„Ä{­x¾jñõõ?¬P䎆ú<PFC@Š[#@[lýôŒö¦–ÑbÛníX}H‘Òi3ò¹? ”8í|âíw5%‚N„ɯgøó†L{6‰šû ¢¸LÝÑÐ+M ܨ‚³8•ëû¨’ïš²¬íÅu˱ jê™í¡øÅŸÂ;‡<É褒=†w,Ý~¸HrMÐö’Ú†™=õ(gÚBÀ¬S# Y]ì_Ri\®™ðp8Ûè>•×ÐZ˜jŠnÓЂ÷LļŒh‰oªØ³ z4xìÀ\\léëhèµÙ¼¬ôx°J%ëå<.ë·xÉ1üʤmó`cú£þB qL̓æjù¨Å·Ž…7oJ:õ¼æ|B÷ÐmµŠYÐ_‚rmîßþ´™,êݰ¡ƒ_lÉ U4‰ë ¯­Ðë&í˜NÎ »)â‹-¯-ŘuË\AC{âÕÜE¦¢‰ƒÛ‰ee•Ú+²˜Ézœ°:ól°’öÛEsÓ%-s>|�ÉhýÄ<%âeÃ%8åˆR/|ãΟEF›š®4¶K4,NÅæ§mTœzKê9žœ‚ÏÍÎbîDA5f 6Áù­¸…½O,§/�:{ÐÎ :¼—í/–Û‹khÁ³1 æ•·Ђ•ò ;™Ná†è¦?IËÞ0!.;­m4§ÒÇ¢I˜r–Ƙ’:¹üê…?_ Æ{¶°Ú¬×¹ws� ±§ÄM\¦’6eè±Hò(âˆh›¯`5Û˜Ò¿ÈáJ6AÝ õºÍ‡Ç&«\ACEL¯X@“€Kš*Êñ$‘‘^ÏÌŒ1×ÍhèfãÄòcµj6²¬;ŠÖÐE¥k^Ï$[c¿Ù'ÐùjÄÈM0Å"§D¢ezÒ¿ËÆF”ÑbÇ™ÚW(l“?¬òÿG ^/.ÚiÝ"éÅl<dX"p Í·w­Ú( è ûŒÍ¢PíɈ’ô«§Ñq×&5´ÐÍ|–Ù¹ƒ¯0öîY ³¿y¼A7í_€@ñ(¡Èê\F¯œ³Öê­þM\ê ΡË>1¶£5wr/ëíÏA#ÿc*.fíD`Q °ÑЂ2òH/—WNÙA»‹æÈÔäèE*}Þ±#=â.†Ìý4¢°/ä²h`¢ê;Í&WtµˆX¿…` n|ÿÊ/ÆŽ7ˆ@‘¢‰ü§ÕЂ tDbß™ÚdnJ3g°¤†æ-À£¢Sóû‘šEo°hòí p) ]›¶XŽÄôT»Vq¼©Sµ¦)ÚiPü´´–MB)n*àâÐbâÎÌ]ÄÓf·3»Q£´i#Ù. &&™’à pœ¾f»—#y2¢54§bA&Þ1¶y±!ÚJ†:4 ˆÌ’o‚-Ç<Wª ¬ ¶Fàv5tQ@súÛ4 &÷™ÇÌŸ7¬j[ð ½hžîäŽØê§épQ@ëÃŽ9ï¼›P ~4`ëF²Q  ‡- n„�ß§bÿöß1µ‘Ϻ¡x,D|EjÕcOÎ íN e¨£JCsB††Þºr`BnTCÏ  © d$`•2ÎjO+ÔI>5ý ’(š“©ÍVaŽ4AºZ­· ¼é…µf©çë§v Œøþ5å IžúØ[Ë´ŸqlÈòSÜÆ÷¾°÷îåX·w�ÏE6?JÈ4“dLçÅ—@¦ý4`Hú`pnQC'µWžqtI”ÎÜ&w¸J<#Õ¡ fN”;'ú2€çQt&-)q¼÷˜-Êë[¼Ç˜ÎŒ‚®ªЋЋ‡±Æ‹«cÀ- Q®zËpe§§ª°›nÉ|5{’7‰ÈüJF‘92É}Mìçµ6¡’é•lÉ%ñL äaÄH p8·¥¡ã ,ø%I7yŽî¡Á°ùºÑQÇyä«ù‘^é !ï³9Rwä0 h·º{™@߆Xlb@[E¸ 4È»æ@³IÇôk ë*q^|yάL.7‹ž¤‘Ma÷ˆ—œ§ÍÈCw²ÑŸž5 Ó]rk O„©Ì‡“ºSäk`SðaŒEà†4tLEòMânrôééñZÑ1×Äb6ï?N²pÑ«Ú ŽÛ õ}Ǥ–Ñ:fƒÌ®2n×B!4GÏôu.õlþg¿YX�TQúó}¡}ùN1e´wÍLW¼&5‰­Ñ[gÍ£)ÁðBûæ¿€¡qàP'£œ@yŒ96 ³3&Á0 0-·¢¡å§eP³LÌðKO)ôËhSrMiÞÊ& jƧ'vN➌†ö$›m½\»Dzë»ûÓÁûe¿µþ,Õðv¥y)[¥q©n¹Ü4w¢)åç¹9M»V½&us4ž‚Ót§ Ê,Ðб6 dëÎx¥ý‚XÎ…ÀMhèX@‹„õhˆ˜¢MFóYñy…nD[oR®ô„7¯C‹ˆ‚<Öö¡*MÐ NOF  ›aÇÄ ±†æ÷$¬'ÊÉkΤ€^mz$гqбÇj2-—ÎBÅ®oé[¢…P¦«Ý×j¹KC·¾¢=ák™f:c•{Eð1�ìƒÀõ5tÀ’Þnï>ßšWÜš´CÁÆEš«´-ôpÈ0ßùëæÇÊ¢ x(U}¦sŒŠºÍOè¦z¢Í=̺z7­Ò™ßT–Ñg$uÝÆÕËÙO(Ñ-ŽU¦§z…cD5ÂyNÑ"j>rˆ†æ2Z?¹QД5ïê( ×™‚M ЉÀ•5t,wLÎí—ûÐA›–¥YAÍIÒ¶tg™æ§ënM ¾öq#º2ÿÓC)®+ݺ’çjùÍ‘m¥«ût§˜4šM mŠK½¡ÄŽNîG¾A’SRIÊ2¿ë‰Qõ=uB§ õ¬£ð4t[WÒ¢9Ô<)AŒš‡«!)˜¶Cà²:¶©€/¶K[³å$ëÅË¥¶GÓ±ˆ’Ðü~G”PÒæ­™¼céFžD ­{µa’t‰+•µ)ÖNls³n!.ùVÍ—ÉõeÆ‚9&31™5Úé Å¥¸´à7ºh&ñÈYËYáR2jÞexãà <¢Ø,g`1kŸÞ’yÄ0 P…ÀE4´`“`3{o%i¥ ÜMs‚«ZHG*^ÔiŽŸ® {ñ Î<Ú¾F©X…ªÁUÙÔâ>?¼š3›ù@0r~´ ¾çiMóò/_½Eêë‘ȧVC¯×±„†÷}­ƒ“ºÁ®ÂE£áDj6ó¸!îÈÐÐ=…‡¹Ç"pz ­©9–2Ev>6U«ï £Wx‘]åð¦ƒ×V¡;ÍÚ¢¨+˜|-d4oiÈÍào 6^zëDÀ¾F€“‰&–$uÓÖk؃ZÌò.ŸAM;U7'Póônð:wÒ#êf‘ªùŸƒÏ—3ÕDêõß*¸òyÁH °5WÐЙíðõÝ:Ož}®„ª1ÙVó&ÓtYµÜø†°×Š’'ÓúˆeÅgB(Š€ëîXœ‚@`ÄþêÐææÍ«5tR>rÊ¥-©/é=ây¬®ÝKæ‘ÐÖ­ÁÌ‹ô™ÖLZû¹D2 ›"pn 0Kpuž|kSÜ_¹¬€ªd´9xHû …÷•AÞbÅìÙè`›‘rpq¬½C °D?(Ôò.¹œ¹‘“sã=ej_=Å»ê¦]©ùœS ú€Æé­f¦Š5´Ö€æ_MÄ“ý‰€ °'××ÐÎ+=fÜ:™3†€µƒ+ š0éÖÑUÙ7[…î1¢E‰?ƒÏ=µ)Ý5«Þnp\ÛGÕêvñÂòõðĮॆÀÝÙ`m¢ÉÇd­¹å2šž“qM\ë[1‡s÷Zžà ê\ûš× ñ $ÚlƒoÍÉÂD 0 skè•A¼ŒŠBaÔ¦5¥Û¨ ÅvDøúr¿è[@Á\:k0‹ðIß<(3˃ëŠ2»Vù(¼òæi=Ä1, ŠpI*$cg Ǻ³è[0À$N ñí 5Ùá8ˆwM¼Ð4žÉ0uD¤éy^„5N‰â³A¢†ÏQ“þcØ+hhR3|sz‚_ôBV«®Q–¹·š@5O™ºxSš W-@ùÒÀ"Îá¨5Xë!¡j*c³îP�µQ‹ö&¶F-&m«ch@€ØFë*®;kØÓšÍ{ó<Šâwût€ZûšJ:èkœ²@3%/·iN:[‡¯ ;TCR0ìƒÀé54i­üâÓ‚Qø ýäÝøÅ—óÔpðºé-npŸam Áäë• ‰/¯¡yEi`E™- `Tíeì˜W™‰v@@+ª•jLN—‚îUµ y ž¾zß"eññ3—pµGC æ×@_ŠðË�êAB‹ª3˘6EàÜZð¯Öyô«'¡jq•?¢—x<ž‘w&»éîÂÃá2ZphU; nv/†N$wæ6àu¯ÀÇ@ @À»º •ôbó¾—SYC²‚ÍåE‘9s%zXW+éý5´кó,›G3“gCI`Ê­!pV mòo†X3cj‹`7™B¼©=—œ…Ö”¢ÑëŸzq R ÝÖã›Ó4rz‹·±LkÜ:X³*Тö‡+fðh3CJÍûZ8&X.ã6—Ýææ"ªôÞ÷{d¨dñ§e“½‹Á’)ÞM8ákô<UjTf‹Ña�‚À‰5tƒjÙhš‚~Hz8_×:¯žPÀ+‹s( hÍ×µŽE&¶Öã›Ùã½…°Þ3Æ`­8¿“8 7n"óz'8ü¢]°\>š  ˜\ažDhšŠU²~—ó³)Ê ·<%z™çb]Ë|EL7Jnã;…ùÂÃÈ©8¥†nSyîhËV¨mvø,âÊS%á›ÐÁ»ñvESS Nn:¥3ãk¤âÐ(¾äè\q 4¼F¾ÅZ° ’5´Øz‚‹’«d†i¥˜™EÚ‘Á”Ô: 2.HØäU¡•iQSCówM­•niRC ³A PÞ¢{æóˆ‘@ [ÑЊ›"õøœ¹Ì îË´+N”‚ýy{k.Ä-&ö�赺ÓÝ¡¯¶€6@-Å«;RŠÛ hÒâI2Ú\ßšš’Ó _ÚÖ‡ NÝú]>FóX’Å0Oµ}A_�Ï“ c˜Sjè•#ªîåHÇá©„ØìÇé&3zœ« çnSe6;¼ÅÄ-’^[x[ÄÕ`S4ò ˜Æ"¼ºã*‹éáÎ4çèÏôÌ­'´²'åµ Mjh2Hjo–ÐäÉ{“'âÅÏH­3cs k@` 'ÖФfŠú` -50œïšõÔž†Ëd:ÞQÄaƒÐÜ¢É ¡ÓÔyO6þNÏ1Ü1{ï# 5×5€_]ÇJšÞO´†æ"•xX¼;æEkh½´öÜ´ÜæLC:0ìƒÀY5t^wn!¤æFpâpËÞL»ÔT=~ðp ½iÞ‹—mó8ÊÔ¦€Œrv€�! ȇ+Ý-Pj> àJ7>a5Ùž«Oêk¼ÁñYµZhVïG©žZ…“XåÇ$ÓæÌ¹†M 0 skè" 3ë†}t˜ÖÊþ®öG4.£M*/¦cÏ3§~O´"9du, ªØY@çet\&YÝ$[¡•ùÎå2ݸ‚Õù܆¯pè%¼ŸI1¯ 8DÂógªÊƒÀÎ\YCÏ©¢Š¤³EТæ1‰VÒ¼‰çú@‚·¦|*g¶Èi­M�R‹Æˆ€¸bßÇqjY” hþ$Ê#’&R]Ÿ4kèuzÏw‡¼�…óÚIór¢Ö™L 0ˆÀe5ôΊÁä ‘×̘ᥰ.Ê¥s|w‡–ÈBaÇ?ó9Üÿ6ƒ;g¿ÍÉg“ÇrÍp½ó÷ÏjY:ÖÐ\ {hú¤Z1š‹lS¸ëSx7{•̵v&9ÀÀœ\SCï)Ф )rÏRÐ×ýü°$¦Kz—B8˯#ïY�{f³g-`Òƒæî†�§ªÔQvÊh~PEþb]úShížXÅÜé|–gÁ”à 'ÙÅDÔ"\4ˆ@à(.¨¡wÖ Z¤Šã„£R«¹Ntø7K8S%²9€zFæÐe4v®}‚ê\˜tˆéÛ! ^À]ÛùÀy{u ¹eŠÇ(dM«aŽÄ⃽†S± ”v•^ ä~&Àò‚%€À„@Cw%Ehñß´ë2=b²çÞâ§hœ%ã»5ôÉWáÉ®3"¸ÈÆ$nlf•}`R§Ï<îÚÁ«6ÉXÔܦY­ªM:hÐ^æÓ37½h;¦@7/!Šî,fCàjzg¡ (ùËA{&ÍU@›@ »ŽÚÀú.ýïž1еv®#­Z°TÁ…Áû `ªCb’£îåØb]OÆfÑ]&iY_–¬¯˜´?ÛyÐ>ÕˆU€@-çÖÐB  Ô绵ù>^;I(A‹WôyÇ|–ijç,hÄw`x‡,C`„‘hUǯðÍ+ö«{âu‹ß_ó"5éKpl<·Ê²#Ì¿'ã}¹5ø°N‡ÀY5ô!ôªÏ;5×Ì©TÄÅF@ÜtØLcH@“ñd†\ðˆæLÁáÔ�XOˆ)Ôü¯È]cQÍKÒªu³æ©ñ0½ëW9,k ]e­  —DàÄz‹Ûò9¾$×èóS4sm=Ϲ”¢WÃ@&¿»1r7LU·ÛꙣhÚ8;HG*®üM1Í_ôîxÎc¨Ï;„ŒöúZgìÇ&«í8¥†žA¿ÎàÃFeÁ{?¯“¶Þâ£ÏæÐÀõÐÐÍщû# UÝþ>èÓq¢wN€ül¸ÖIqœLò Ó ÁÀœßÄÑFòf¾4?"áÓřȄ÷(Öâñ@`# ¡ÛÏÚíN0S·Ç¼³]K@CCCO°àB•@HIϳ…zön2N!ʃoŸÓ ½ªmÓ .…éyÌ)}U3OR’hcØ Sjè•M޽—ƒÎ2¿(´[:Ç.¤¡9¿óSóïÆ:“±®P8™˜=˜í ¼(@58±ÔæãuÏ[R³+Çæ`íð:L{E¯Ð�á›ø“_Õ€:öÜXë\œXC‹+û£p×Bó(O6Z—“/'hA²â“ÄCh÷E7‚}¸Y€3RìD`B ݶMø™±‡‰>ßåÇÂwC¿¥4%2§ë€Ÿµv<ß™eLFଚ_ O•ž6 ž*ÓÁÑÄþü‘ÖŽ˜i'Å{Uðûá2ýÂÂ}x¡v:³—+Wý:A¼¥Óá)éø÷£´¸§E/ü)ëÅ ›7ˆÀ¹5ôœ ëdá9ƒ¢‹}vb4±ùžá\ùN Õm'’˜>ótvìykmÛÄä:óðØüé}>]8Ðp¬×5¿óÍ2/cf»¶É'#Àž@Co‚voâÊP£âìDœF›'+»A±ÛBCÝÉØƒ3•PÛ)å§ZæKnPÃñNp¹eq¦Ë¿M(Ôs¿€¦“2%¤°)âM‘=Õ¯-ª–áìm!� Ý›oï¢×îLó=éì‰f„Ÿ£lPC ÜÚ¥yìß888T›§çô¤mƒðº ®Ó<!KPˆÃãõl‚N(j}ÖtñóžoÐÐs*¼š hèöŒÄ‡[µÄ×îÇ63¹>6Ï›9Å›¢Y\]è>1Öñ³>þ3¶MýÙÓxñ(nOg°Ö„´Q‡Ö¦æÏñ6aþ–çI!Íš"€&ë_æk™žþËWÅH1�Ž�4t{ Ї[mÔÜî?3ÉÅB7s{A°œ‹3'([ˆéy Þ"}ý6oó_–ê/ªËXhÛ¼®¼ë4‚(8 ¥Hš»‡'9“›¥Îu6Wùâul“Ë9ÙhèF`‹¤¹ÚmcçFŸ¬i&?êñ°b°œ²õs/œ¤²Ï q8Î'sãørçÆ‘9°&'Yº§�¨®øñ<³°Fj±¢E½_îç{¸ö,Âd E׆€ñ@à@C7¦©(+ù DãÓøq‚÷‘œ»Á'wÉ`%„ÂÙ¼9âžFؼè‰&Þ8>t‰˜¬äe®ö й/¨®øj‘žÓ1Ф¦À¥ßuzó}™R×¢Y»Úƒ*æÛA�º=×y¦ëdê*­{_ á.…·É¿W.-8‹>‘9ÏèÓ{"\•ŽIªU|Yj’š<ÜQ›ÂÔÄ«qs zËûÕ9ïõ C™{¬®u?m Kž58�¦B�º=&yæFñuÑ]NEqLª7Úüл=Nl˜z%@-•ç-Ñ»ê�@D™Í_ú^µŒ«vkoçêØ‘dZ¡ªu)êÓ qfažShŠæ§ÚÄí¦vÏÐûvY€e pv ¡{3È»BÀËc);PêB 'ƒ9L7<N¸ú¹à÷οä¡Ë<]¹·’¶œ¿OùmÁ�Û¤!¨ÚQ<`Í™àêpØÇ†öèTüb†–ÑyWEakÌ=?“m"—jŒ7„�4ôàd+£5Eš4êIa“Ícݼ[<ÛNBoŠéÙZr2–£†åÛðQn½®@€ š$ÝÖán*•6p;Pñè�ùÑ´"'L}¨¼T÷[‘ðMZî<ï8¼ºà�8 hèñÈ-y w'¢×“*Aó{:¢ ˜Gòn!„xoEÍ_»i êÔ³v(¼™ññê¿G¬Ìo§oIºÈ¯"ô¥Gyƒ=#GíS­òcóHBx.ú/í<)¯Õ¹vŒÚSW˜{›@Co•w©G1x,4½—‹Ñ6»'tpÏiŠgŠÛàघJ> 9­U«ì<8#õ<•L×–Ð ¢NH„eà3Î7ò$vàFÐj•tª¾¡N%Ôó:—þ·m+y×*뉸æOJ±K›˜¶@ ŸŽ¶ðj± ½°wf’ÑDåµ±Õ6˜ŒØXú¶äZ„_›Ù£üL®ë)cS©h•l ècG“o=¬MKÅ<@Òm†Ë•QÁS«Áë”;±S@¯Ó½[5Dà‚–ójë „} ˜¼8¡¡·­ØetU`UJ—Ÿ ˆö)úu…Q­‹ÛŸ¡%W|ààáøKRêÅ‚Æ{÷ÀÐŽ]:ˆ)—3nÏÐî‚�+]œú˜ËeA§0ƒ1ñêZðWªº@§Ÿ˜’$Ù>imø0hèáJƒ&1 dóþ�Lg̃ zѓΫ3«Aúß-¨Y·ä© íOÊX ×�‡ª.yc@¬¡×Å•˜w]š¹7S¥|ûk*Ø‚L¯†o¯x45™wÖqzl¾õNGj£ûpL2õ€1@ @p±š7²éHhèMá}f\³Õ üåé{*\R-$Žcõ,ôú'—Ôcá65ýØ%®am†bëGr-Ë@›»L¨d>F Ž~'OmaøEE²ð¶VÒI7ªr‘¤W{Z@½•ˆ³tÔ°TaˆÁ@ F�2¯Œ6 ”7NëB­zyŠ99«¡J„"±.DƒåKN¹@³ädª¥½"Ô˜:ZCo-àNTQ/*Pm˜’ÁvÓâ÷|åªëS3íX}820Ðl_œ²ç�œCñ-Ãíø=hHú-~ná}P^ìpB@óChñ¼ tîÀŠWÌâ•í€msþØY@#%Á-ºH¨r~†~l~Ç®^ÜéÅ££žzë\]ûÖãLXÓaq5bH q°¿†^7B&FŒG!0ðÂ~‹ ¡·@5²iê×±NÄ5G¤Éu39àÑz‘j¹€æKpËE#fDÜSRoÆcÓ´§µfä÷t²¸–(N*€øöh;¯LÜ ]¼aÀ¨JµyGùcBá1­ à>uI7`Þ3eS|zÃ\ ÀEÃQ…†iÊ `®±Dæñ²æ™M­óú6%˺Pó60] 44½Õ³h*‘'4¶ÀŽ Ú»”Š5Š.NQNâüO £‚=ݺͻ;ˆ´³n;§S¡ÊL±øyÈÖ1Ä� pj ¡KßF2Ú£lÑátÃ3ÏNŠ}‘«ÕU° ÁU ‘DÎsyMò½jÑ‹ ¾R§,jâ5X-¸ „x¬_[¤1Å-p±Ri §§Àb„›ñïq)B,޹1R;ÖcÆÏxÌÖ(õ{ 7ŽÀä% }d}j5ÐïM‘ÙMmÁe‰NQ»¦&&ÝL²5ÐФlªÂ XÛ7et1¢*ÇN4xrjFÒ“Ëk%Ä¿Èaþ·WèDwz$“Ò£ÿò×*µ«ìPðE¦LxàasÊ€J†ÉKº±nk9=Ãb£j%>öÐïV‘;Îå ÙW£N\L=DtöwƒkëªÀ eŽi£JkŽhž}Ü¡3KW€Å›¤EÑò?“¿?= ºÑYW1Sé¸ò¬ÛéXÒ¤ÿœ—’–w¶P»…ƒ….†Àüõ ]]rù³“¼i*”Ί) DAúâÔ-¿:_Èk$^ÃË7Âà Ç“òÞ$wØ“OÖGæ3{ŠèŠûÅ«s^Qté%dw0·¡tOgƒ“ýPsäye.Í_Ü­Ú3½`7g’H•ß<À¦Ì¿} ¡« yöPk·( bƒšÍE§!iž±Ñ‹™’]ÇÄ…@áÎ7t_¾âjYÿoì‡OUàµ9g|&­óx[ôÄÜ,"ÆxŸš€Ð=7£–Šn_c@Ãþ5oÖФü8-ø™’ï¼´N±ïNáä5ö¢¨Bà• ]•Sy“åØ_ô$.n(@1h1-îõ¬ºõSËYS”“¢õÚgUŒZqÏõº×˜ùëZ­_#«+…S¾XtI Í5±V6* ]!Áþ:U!T8kjå±…ä¡JìÁŸLRÅ`Ô Õ5S3ûȱcszd$XûZœ¢2¡¡ëŠÎ“huVÂÑ$Ró6¯¡ ~€ëH¯v=íb~=+Þ�ùíh~øÄÛ­þ2Y|Ùw&Ÿ”©F^,@sè:ñ˜©)_ô.rSwH›r0­­Ú«t§)¬w ädhç½Êº9$ó…a“#p–²„†®.$“+‰ß«ÍYjetC#ÑŠSôH­?LMgÀâ³ÔbÇ-XщÀÑBÙ ŠãÓ€Õœkä,|$PòŠ„ooëñ¹<ü`sÎË{ì§Odžw¸ü¤Ép‡“Tqõ¨ÔœšUNJÃë§Bà,e ]]6+ã{·ßq×Sµ}ExÕÒz-£Í’%ãÑIs�÷Í<]æ®’ ç)»©3EïR¤ºî÷PÜeÞÅ›8NöjÛdÁ•[°ë÷ÅfÛÕN$i§~/lj@ÓÕSäám Ö€BàD5 ÝX¿Hmž¸¾j±†%F}±ÆSäZž2·u1@m|}ÅëXú ‚4^h²Ã›nU%t>qäÈ,&¿ºãfé²J JÓ½’¾‘š9…äD_nuîüt3óŽyF~8 +¬»'ªIhèÞ’( A¾€ þÌÚ¼µ{šRœ½eÌc¼&*"zZ‡IGzDÁVñ¤ ™ nq¦{»…†æ>ºÞèD{‡é'â#3¹úz.›LiK‰ŠÙ+Å*}Ô ;”Š·¹v[:^ÈäÏ€ˆöt{)ßòé(¢-LÌ:çªFhèö¢ê'ͤ¤6ªÒîUAº(”)"úÂb¬¤‹šFx.Ów©GÑ«œŠ¯Iª€:ËàsQÒš¦ø~›¼†±ÇõæUôç,•ô³ŸÙ’ %‡‰+"ž&þVÒڦö£å­ÝÞÔþäÆOšµÉQmsïtÝ º-Ñw³DgíϽ'©‡/TŒY¯¨£3_¡‰foó^ÔBÙôP·vâ¾ØaZWŸ=ß‚¤î¯ÌbÁ ×üQ0†ù èÕ ¤¸ÖðØ'1¸µ°ÈØçcôx3Ë“ w.7ÎHCÖ=eˆYiF .Å i4/Ý6º ·òQY£]6M(¿=oÇ,2‹YÊZÓˆÓè58¡¤éO.g= í`Êk!žòsûs7•…36ȸI×RÉi±H.ž¸êø»æZS%ú,Î$éE€¯¯´© Îø´~ž‘"†€©{Ö³0Ò†@P‡EÒh[±4t#†bïñN. ‡<?êw$¼cžŒ€6êŽïLñîdp!”Å¤Ú /O£çmf¥­—aüE€¼´DyèÝè0›çO#‰Üê´`Ç „“p«@‹û¼ÑAÐÄ{Ìbn3±†Þó14t+9ríE þêñäE•†6O¸:OÂhhï •6d<÷¨K”öÊ«œy½)*ÓÔÐ$²é:ÊÔÄb×ÜæóJì1<¢MÚ¹šj‚Ëqˆû¸Ed0†Î ´Û˜¼€žê[ÝÐÐíâI·v‹÷3ù)u Úí{ž„yZÙ«u­†cjæ�/ô`O"ó×¹ KÎÐлõôXûê*¥Ìòì{FŠú6åÅv9]Y" Ϙâ„ÚFvFeê‘4{ÊTúlTrOaúiïä(Q+?WÒÁAÚøx,zÚÓ¤þ‹wepŸ…ìøKH^r/¶Àõ4Ô¦Š ~;œw°|öîX¥¡õÆ¡ÊP 5&Ê’6Ý ºµ%Lí’\“ä­A·]¼gg‰dÌž Ý€dÿ”bù‰F_ßïRÒΡ“@m2,î÷\&n²¼oÔ»0(^0ˆ&¸Íc/JX¾a„I -®Cø,ÞÑ‹!ËÍC7má˜Z\‘e½kÌœB@·åbȬxÏzKhn9{as”‘[Ókë‡$£P…$ȨmÓÐÐÉfêf­ðÕ8ÌÇP, ãZ÷ÞåQkLt,Ëñ@… $;|7òß“.nã­‘ßÈþÙãjÐÐñöáú[`¼µQvnÐl†æp½°§Jý­éih¯M•¬‹9S¬=NËÅÁ;ƒ ½à$"õzâ-Sbîäåã_<íª¨tWyʯ„tÖz%@ã‹Â]ø¦u3÷Êü/³Ì¶3füÔ¡™Ç+þº¸.ÕÚË”æ4ËÃ-vHe ],Ñu€·¯‡¸tãFŠ)¸>º×W°Ç÷Ìu¦¹ïéOíZÐеˆ=úoÝÅ“uG7E$WЦ€ÞÝt£â¾Åg½BÖÄ4Dïff%Ã'SñHEDQu÷vu­Ì1! àÎ>óbM¨™MóõUc™;hˆ€öüûw6çô§f1e'­ê9Ó!®O¦ur¬cºùÇ’cׂµàT¢á­yð„†®ÈE’÷u#×kh‰é½²[«È hþ­ -‚3×ëTp½‘G€¤•ø^ˆ×ú:*Šà„Có�N\MïrNl=sO™r °òü¡J¾…ë±±¢dR¥NÙIKz,zc­Ý,¤¼­ó_Œ¹Y@ÆÖUQœZ@/ÎCCWL±‰&[‚ØœžæÎhñ ï¡BÈš£Dà\+ðXbÒàd§×M'²ÀIrøò?c祯¿Nv¶P̦)£Û4tƒ€ÖiÅïÅî à5–#–áäiá8ìÅ ¢JŒÿÞâ>øßà*^ɨ¡¡³u›Ô‘ÁE•©°Ðüú;öM\©{ß\öC  é‰«j‚1¿—¼™7oˆ£ôlœpœ™ÙùãhÐÐz+‰â1YF@¯%ê]€oÍsñ”(¿‡ =Òbºw^ñðåˆ4’=îp‡¯äÀ4Ρ+ ²¹Sz"ÆSÏkÃÞ­p:*"â­åuQp“Ö'Fž”1EhœU-\G$tEÕ*£ðßÚN&e[ûÐcß«Ïàu¾×ľëÐkI®ñû²ûO&_”ˆžºÂ\KÒ`ñ²˜á6?¥<p;èzóÄÒN—Æ9t¢gÌ&d=~Ë\CW8W9TÄ¢oq>+OR°Ÿ^áêYkw>¬*,ÝøMZ4«Zèƒ=Íw çiä¿S(.ÉA››ÑÖAy¤Zð]ì^Ž=‹Go[Ê©ênPêí³g5ï³n¼ã¶óA´!hèí Ö–M½§£Ö‚†®@Òäzó‹DEa](ì ý¡±†n`“"ÿо(Ïê© µ¶fɱÍK¶µ†äb #A~·Xn;›ºNHøŠDë?É+S+çt`™×íe¾S¸sñx›z»meZæ;kÿbÖ»lkä›ÅÎy¹ärbwŸ·ÿBCW×'musËâ˜dqP.¤¶()á[к2Z["˜#ËÃBYãT^žÇÖµ’\¼æþ7OßY5û™ŸHÙáåÁ_=xˆ€.ng]Øùˆ¦¹gñxky›ñJ›t¶Ðlé}õe çÔÄWÕwø`G0FU³ˆÀ š»øÔ›º±€kÛ m× \qÙèåÃ4“ÊÑéŠ×”;/¼:ƒ¤6]Th¹Xk€"VBžÖoXhª)q§rµèŒÖÇ¢Bt;äEeR¶Ðߺhu‘6‹!œk€Y<ù}”¶ŠHOÝkó˜ì3RgS'}Ó›ûMɾªvï¼Èh¡Æ„2ˆ³iJK‚­WÜÎ>4t#¶ Ô_ì@ka‡5xìuDo9ÍnBhŠC‚Àç¼€&IMì¶?—í¿bC6“Sâ$&L2¬VCë«2!ù^ónÇÊü|Þ$ø w#(žá¥ÙÉÛ†WÚžÃS–7h&×ëhÛE’}7 ½‚Fl 1^íù4]l$!I»øØBC·ª)L…9]7Þzü²xl«¨’û‚S´'ž5Óg! Åž1óÀ±8$3}È¢I߆]ƒ§„†æ ˜Œ¾&Ô%GÌ•DüZóSæk�WT#竆²×ä:)E>é\ô–§›«ŠØûÑó–[%»öp쉸¨^⓸,û£ÞÇÂlÔÄJ¾]¦ÏBC·WµYbrI¬Ä kxmyl¨ùØÕÌÝÒtqOˆ6é…©åQ{†ZgOA«#æ]& „úŸ¹kxÿ½Dôæ`_zb‡Û4d}Gý {E[gGŸGìÖe—Ê—½šc‰·˜î­Ã54u(S@¯ïî³Ùûw¥¦¨IÆ&1im7$“þŒ Ý‹§Yµµš˜oã-DOUÐÖôñJf ¿Þà�öf¨~~z“‡Í¸L,µvóqflv\ š›¼z<,ÙÇ-Ü£·„zön¸L%•%Ê‘w§ÄÎ Lo1q)% c`pÙjjh]“[ÜÓ2ðªF¿O —Æ^ íB¼ 4tou˜Ü󵂻Êc.82?OQôY±Ù;cï"b4®ªB2¸ˆÃU¶6r(øÅÕz>Ä«NW¸®s**¡‚–£ÛÛå›ÁjäêÄ4(ðýÔ•*yÎ F¨€ÍžE[ƒ÷£†U’S¼>Â}3÷`%öX)E\l¯np6Òкç$¨9½JVif4t%wLPÉ­.+9+ï´¦¤`n¼ºn~4^p_BÐgê ÅjšË‡<jäð\Œr,oç!ðÞFbZ”G\c¤ÒÖf)š4’ïJQÛ{^>§É$ÔI,”½Š½R%’MÝx"¼“é-\å»UÔ‰×OiXæ¨è3odœèú\|–µÑÑi›¸$(Ì'S}PÆYô´ ]ÜqÑ€`Ïgìò"#}™˜S»KƒF•|K £?µvñB0åË!ôE“™M»@C44¯CO4S5AãòzH#OfðìÄ^ik¥W*㣪{a»ih. …TÕoqñšï E„EÛåÕ¥W¡ÓèáEˆ‡@(ÇÑy(‘Á"8z�ßÂÅéÜóüÅsÑìÌ ¡{³Ó³·ƒÍÜëÖý|o—šÆ=Ž(n!./„åX»xnhƒÃù+ ïFë!MºW¶‘ÿÅu·À7‹è1tý©Ï˜i 1'Rô¬ÝÒ·Œ‡ØŒåQÑ¥+•q1Øí˜Qß±@7-Œ…×�=×/j';‹ÇlIfÏòÚåX¸?=â!èžÅz8õ¦³,ZdÅâ€í*SËÐнð&ë,¸¼ãB³×5?¹KÍú.=—5f€$nèIƦ9x;"‹1»nsµ4ÆXÏ;…ï¼RµÓ�óà“!Ô½¶X«c¼¶5O d¢¾X%gBÞbŒ&q´Ð^ca×HìV~â«=u—‚èY<ÆžmË×Fí Š¸—€ˆ·<ælƒâ¼³ ¡[r§k´ªj—%E__iq¥4§¸KÍÅp2fÉ5±÷ŠšU¨"!ÄK~l^t#ì.37ÖóíüÌ[…ÁI\׌×y5ë¼XüÉÎÇu##ÛŠÿze|lº9u›ŸÛ•Ùé-mRó+z\Ä‹;7hGÿs mU!CÑ%Ú¶P4ÎZÛi€¤3¼_‹¤Ö&¿)¤=ŽµÍ…†®ÃÍSœUV8;P=mZX,hnlÁ­h.†É]nçVe!?xÔºžªË{R5r”ÛU‹n:˜·½‰tåwyòn*šGs&94[»ÞÄ6|®WÆ ™ ¼ÍZp¬kn¶UˆñtêWA,šˆ¸Dôa­Ù%R«º´ÚJ´ÁO1ÏSí›v«yÂlËŸ ]‡¡Þö Õ šý! D” Ÿ‘Å»K�ÿ)ÐçÂh…EcU—°A£²¬WÞ”•4’C|„ß3TT¼`¨Tø“ø¤muK”Y³¯ššM]l¢ØÅùÊ̼bâºnÔ×Xã­AÛaHKâÛÁ웢õÄmqÈæÒaÒ&÷d£ºò {ª‚‚¹ àTav¦ºÀ!È…{–Ôê�‘ò¦ZÄU “K¢©4ô¦²iûi‚Š2}Ð…µSæojhþ"Õ /ýõ!P†>„†x2›‘â®î™;mþŒb Aûôçú„/¥ÍgAtÞÖ0¯o9ÓRö‡l.ŠKtÎÏó®ÝŒ Ÿö<5¯kfHìüRm Á£LACW ß¿“µF%ÎòahRnPu³óý¯¹ fΘ|›Å6ówŽì¤6Îà£N•jÅÇðNÐ iítÚ>fãך+iû• œï'‡Z4æßYo;n~|Š®EÅ¥ ÝíPœ×'mq…IÄÛ >ßÞÖ ×Eˆ.)9¿…º ZÅ,K½(‡b,c±-¨ ¼s°`ÎNk4}ª{‚‚†®COÐAm˜åXk¤ÎãÇ£5q‚Nö<“õÅ€ˆ«& à#MzíA gn1Ó8çn³cõ¸äÍÕà{k‹Õ7²I}Ž*w>Ñ#ù^ZµI,n _þí¨ ˜ßl-μ¹6Ï–*59s ]¬L©ùycpÜŸÞk̾)v±PWšÁÎz8ÚÞr¼sé¨MÏ«’¨/fŠÓûÁ/.Ñ<` oM5‡Ó?ºCMjùù¦ܹŒ#4H:î0HS^-wp¡#ªX4ùð‘ù|e¯>xÈ÷p]kxÚÂÏZ›¼ ®ŠW(pñ®‰Iqus³ëE­Ž=²*:9á�]~I'{Ø5¹Ä¹†iÇ ;_iš|‚FжY4°´SÄQº¹Iù&Zà¹)²V•J¾¨×ª4·'íªöQàžƒóQÄ^²³gìz-hèüšq)*ñ¤Å¦9š—óf¼¢7ÙG`~;qkÄž‚dó>É{˜iY;L‰n¸õ¼ÍyÝ$v[ºÍáü,!a©Ýji«GæW1SÆ ò¥j›v|gì=Ô4-& Ž É¨Ï_€ÒSLNX—Ϋs/:ÓŽàF“KE£Ôí²MxñÍë5&M›´þÏ—ªœ¯ÜPf=SFù6ÊNO,s¡¡;LM¼@usH5³dà­fK1RÏBL©)ô‡ Ð3o ¯Íw æU54oüMz-³x!Ç'z"£ó3å¶œÎ?«¸Ç‹à_¦J›“%è%SIa§‰Ë¤£QØáíÓ#—Ë‚6éRY·•LÕ f #|®xNþsÜšoFWÉòÈ„–45|Ø(ßFÙ`Þ 4t«ö‘B]qi7Ú7Ó|É ÖµbÓvŠ[%0âñl�³½Æã‰9¾ŒncN„ÓÌÌŽj[8\eS´Cñ§8?ËT· ’Uu iU\K&fø¢D“ÒðzHŠ+´â!tP<SšŽF¥ °£¯¬r™,ÛSŒ‰›—n"B—s®Ðl9ä`¾¡V‹ Ö`sÔ”Q¾²3*®Z;ÐеˆU'uµÎ¤Š9KéÄ RG‘yE€O)Ò_uJZ'x½ÁôÐ[dˆà(6 p¾å´Â³Ç<ÞSEDú R&qWæ©Ô­Ô\që„îkÇyLÞá×ù¦jzYKK ¸~ ÈrPðUê<sýIú˜Z¡`Nú“öòÌ-ÏëV<÷Žÿ›Kªy4Olvµjâ÷†©r{ì`hè±xJkk}˜Ûõ¥;©ß5ÇF‡|1aäôt“ëüto‹â+¢½Å¢;ØÔÝ”7ÚàæNÞAžë³í5鸣cs`ê=Á4p‰9MQYe,D*U`[¼UØ}Þ…ó¼�hßužÄó-ïõÑn†ßSÔ³MzæîPíCÜbd‡`Í% ¡·E^s]‚o»ðëÅÊ&6¤‘zŠg$î—‚ÔƸ,kÖÆ¨“]¯~œ™‚b*ë×Ù{G^g¡SCÁÛ|óqÝÞ¶®gª´í*ªM¶wð<Mƒ™#Xj"mYÛ‡_%Æ´œKÛáÍ‚RÌs½zlsîg^æ®K膢õ4÷ªø¡VùÁæÈ¶,w.šŸÞï^¿…¼·ÃGBC‡ôÎ ß·æî¿hŠRŒš‚9¦žÁãb˜þSðàQ2Úì1Ú·Mª*aTw Ây'qÈ!ºZDÕ¨>‡.Öº°†ž¼Ú i¶)fÝG°¤ž½'™�‹Ì·L±$¯?‹ý‚3•‰�ßhqû (gŽpÒ}-¬ÓƒžVùm>ì0«3ÌÎé;, =³ë¾;JÿåC-Ö4QO|jâÙɸâZXç#;Rp®¸jâÜWDr#Ǩä®qË.˜X|l »×‡ëõ±åQkÍ¹ÖÆ{x4È›ˆ·©Â‰Š«p6 Ø«Þ!»IE‚•ÈjõJôPšKãÍðõb˜`rm–7¸*„Çvù!)¨õ??¾ß½~ yoÇŽ„†‹§üOiðʬ7xás‚:‹ÕL¬-ØÍ¼qÍä,¯yhÝÌ/?4Å]í@%šÊ©™{E¯‹6°›Ÿ¢ÞòŸxnÔ@³ºëÓ+öøÏN—¨øÍÕÅÍÓk;=³Iõðì«s„‰1Lv5?ë ¥Šd4AqNÓÀjîÍ€/xÒ»áj•›ô¯xoIž]…¢¿ðE©ÑˆûI&ÑÐcy&wµcªÊÏ,°Ú' =,|cÇj²³Ú†ylýŠPÑ8'nÎ/I~Ô\é}.ä ñ¬§³‹ž ©Yô-ø®î™Š}8û-A××½0@;VØVÐoñWÉø¦E%":{ýlŠU³qS8r='>轃³q­Ì –&Ž”v„¹[‹=‚×T&ÚAæã5O@{tÁ ¾;ïòà 6msy‹g¸K;„†�²æ ±Ãµ°ê LarYÐn…d,œÛénaê›C˜…³3o]«3G‰SäešÍˆRÚÆhŠ¢´ôŸÍ>ÕZ>*ãÍ' ]D¬m�ïâ~_ÝVˆ<ùZÄ9æ»ÜiûÊãÛLÔ톬qîâéå2{MX«höÕîý™OñF]i#³ù¸Š#{<ì™[tl»ÐаÕÔ >�âÅ1O¡dÈhU„œƒ}““ù\¡ž‰§D û(f¾> ‹iÚ‘ß$°é³=´¯qƒAU-ñêÒ“€Š^«+Ÿ¯Ò¦H’žì3LlIÚûרŸ}0¬]%à ʈ(i^¨ÉþÒÃQæšÿÅŽ 'Å­¼/ð�×çÏÕH°×ø�Ž’ØË&¶ëŠü^a-™Üd ’Ö4mw›Õ~ÏÜÝ AC÷"ïméu+j²ë]oÜü"z|dòZq° zÎb(M ëîxÿŽC¥lÉô„o~Môf€å•*G¢?MÐ*m?\Ó«YBºqò&„"9Œƒ"vÓ±Í ï?ÇP„s±ú9¾‚-’$¬·¶N1½’¬½žŠÕ}ÍÔµæç±bÛrV!xQž{oi®0먻œíŠ-™ÜíÈXnv²ybÆ«Æ@C÷ë‘ ï@´Æl%3E†GD6yÜc2©èâúOSìŒêºœî"Z‚è<ÓÿÞ¼ŸôÔ!ö5âåç‚*J Á_õ´™šº/]<çç™t#Žtç 50ü3š dŸwU#ʘ÷ÚE(’¥Øá=.ÖÐzoš»U¼hò?í/“]½#j^Ò >iøf‡½³ÃÅâ‰ôxØ3·Óí¶éÐÐm¸=šå‘àÚ˧Ð$5¸œåÞ|”ìÁÚ²)z<Dnø\ó­¹L˜!ù%²¬xb}{ˆ^B”_³å&jbåYŸWÁnÖ^¬–ß"³UøÇ\o[RfU+bp'kRL¹¦óe2‰è2ù"ÌÔCR-éÂA‰]É—ÖŒ*¶ ÐÛ"öÌ-UÞþ¥×ù“`³kdª÷”Ín 5;ÙìaóÄfW;'BCwx7=&Áù5´GßÁר3ÄJÄ'ŒÉ‡éÁ"Ú5·Y¾sô¤\·«8¿qm ôÙl®=‘Î3W§›79¯­ŠžÍÓıÒϽ¤©œ«ÅÃÌ9œçíÀjœ¹ƒOÔG×9ôŠ÷aWQ‹h~nƒ‹ó9wFÜÍ(ö#'s³#h^ Ê›„À£fíÉßž-P¼ ^sÖžk5»ÍYºÊáªÁÍîš = IûÃô™ôJ(&ãïïÀq~ÔZ°g@ bzŸ¬í)nøöÖ„«7Œ°à÷æZžôt‚f6š€ìõT.8tçÖ*ÄëRZ¸´m‡1u@æî¼]y7$§]HÔ¶yÃñJìô¿qº‡èAé¢9ÓŠõ$µp›·€¸añUâC}±¯=¸8ódu’ùÂÛy¹¼c|d[k>Eh&4t[m¸³ÄÆ›YC{DÐ\Õ=aœÅ^"³Â>ç_>†“©V¢BËî&nª4t€°)€š¹£–îý–æ&AÞÅ¢~øNÔ6cäy'Ø­ÒÚ@Õ;¥h'£ŠF0`g<n ì6)Î!nk©DÛ„ VNõ¦ŸQ¦&Ó,^Ñ]I{¢‰]œ©Ó±úŠ˜^b’y#ÍÍ"¿DÿÈ:"xûWßÇ4ô0œÍí=sA$^²ÅržòtO̧DëúIpº–ŒbTš5Õ Ëb@í¹`m½¨h3£â=ÖŽWH\?ºå=/@‰§y…S›ÊC  XÈôçø$'_Ôã=ͱžà˜z-•<jŠWþ¢è˜f[i+r“Z=ø5€y·XÕÑÒFµ40ƒ[xØÓš'à =¬x‚K®i "ð9 ç&©V-‚éãköÔÒnâFK:/^cÃÉe­’6;M>ƒsŽ ˜›(覢;r%Í%¸™Ao­†T‚m²~¦å¥C@›|QSÍÞkBµ.ÔѬÆ„ìI%¾7…ÜCî°Ðú`}%¹51ò¨ .Až€¦(’«áíçíQI,ºÚ0À+ŒŒ©™ãþCCgZ”ËÌÕHrÌ÷#(:¢E>Q¼Kã5Ës®4{ƒ¦-n|©ÅQ‹TšJECJá$•M¬ð´‡ÜìÌÅ–¬(¾ù<F@”ïR°AEÇ©¬Mh-Û?¯ç×ÀDˆÈ"í˜b²·¦Vïèa’^ï‹{¢ösÝkœÕùŸ«·<dï^p™Õ­ÊÛøUz½Ç£L;q¯HÒ`ÃÒIËC†‰¨ò¶jðoÛŒ@C·á&gÅ|1fͬ´5TSº ÍÁ‰S¤&P¢Ë"#‹¹‚XÛbIB+vu‘‚‰^{¼*Î¥g! Ú"êªÐ¨BxQiE{8skTlºf‚šdL˜“ø¼©{fS¯•ÙàÁA\·ægtà €öÔ®;Åû„Pó?ï|—™¤*¨`-"T±\=³ ©i˜RtoÔ€ž5s\hèQÕbÀt–:¨BA‹b:²cŽáD)¨­¨¡‰X=Ñ\lEU1šƒE6…ºŠÛFçêq§Ôøw.wøtu~™(Å<ž×4¢¤÷ùè£'=6/9W šíÂ4ÅSPáhNšb±Jn¶Emî b$ó´Øt•ºƒîâæãZJùºgêˆÄ½(ñÞ÷¢ãn˜yáW U¹È3d•ÙQƒ›[óäq­ø@CªûW¢OQy4»ñ¹œƒ;ðWrfñ˜Ww‹ýŒH¥©Ìò /¹@˜Üˆ¥a›ýIfq¨3;ˆš–wå|ìëé'÷9ìûa2A^qfÀL.q™a[ïY±=ñ䥯sO µ†â’ÄxÑ»²4*7ïâfcõÉ[ŒæŠx§s·©=‰Õ“0rS[hh/¤{;_AC®œë)­qÈtq¯¯h…!¦ÓDA©ÜfŒáž=O_!Ð+AçØZZÔ[/4xoäÌñNPäÐbÛ$ÈZrÞÇͼ_Æ—pͧG9<ZFyÅÙbëêsŠ50�o-qÓ—Ðm=ÙܺÅû‹:‚`{OM®ÖÈgnœ¿hö+4˜4=¦÷˜[ŠÌ—Îilå[ ÖT±Ô>z0¤=|7Ø•nsæÎô¸ƒ¨*¸N ešElKch!±‹aá^w¸Ü ¯sˆ«ˆNž  ؇­íÎ1{&±õ€*–«è¯^öt¾¼pmìƒØ¦mÛOœuŒý ÉãÒ~<½b#),øœ"åA‰³�~,Í%5·™gÚ5›azQosN,I’á}- ©Î©ˆ.ig¦‹ªjú̃7ÝŒC‡†ãS#ë^ùÉ9:¾O0§T¡°‰ô.êo* Yçn'ßO4iN¨äšã¢¼›bµáMñš´×~LâÖÍUܦÙòðYÅâ¾âÙ j>Ù®s›kQÊÞh¦Á±Ã“¥Ûm7‚‘û`ÊG>…?çƒM–3aÑ[U 3ã§¡Å4Ô ï›Ü¥ª]~¿7�[`ç`hèN�M?c5{ÔœŒEkM©$Ž5s ¢yd}Eì"s‰‘‰T¶ô6ÞßáÔál¸™îàj*ãCг©zÅ™kəܭÛs§{™jÇ\²6jA¨ïɬZ;™ñTx¼8·¸ e|«ì/}r¼¾b^ÓŠ·âmë9©gñ½¬n.´kï”3é¢LÏ¥ äø†´Zf?Øí‚‚†Œí‰º—I7Ä8"Íïñt-J85xƒïÎwbîþ”ajè"ú7¸’Jæ<üKóæ}Y@„— ¢kŠÊ¡"`FdV¼Â_Ÿ0º4oÙùžéì¢H³+ÒžÚZˆhJç-ƒÞõâ÷l¥vRPІ"ÈDßãm-¦dÑõ’Ù¨ö»‘\w·a3G =¸ NÔ½Š/`¾+ ]Ó mä1© <SÊlÝuÌ‚0÷ðá¹-ap)ïbŽdŠŽ%£`hVæ¶ ¯b‹N¼ªÍ뢅]°”‹d�<ı-:Ca0ÄÍp‰ÍÕl'?1hë[A¼‚NM»ZH h-âÍKtÞe¨aµihm?éFrúá(égó° éÍ6GM„†…ä#;Ùw¸—%ìL=ÝLÕÏ·A̤\y›*<`êá@ig8Ù(žV<ª3sHM\]f \Ër}Ì‚¹¢~ÑÛ¼fÕeöÑF5 ³cy®K†w�g.3±sîÝ‚ôN b¤·ô>~f¤¶¦¾´Gš35…š2º ½ªÁ:‚Ò3‰&Ÿ;—ίµÿÈiCƒ†Þ¿¦X1ßûMI¡§› ƒ3'Êõu“é<áô7¼½Å)1woÀò} C"ò$©h¨¼Yšý¦öÄÈ«gZÈT0^º/ƒ!¹¸q#&ŸxÕŒUÀxôÖÀE©ÎãÔNÌÀ|E¾Ýøëb—é) Á ¦ç1€œ3ùtÝt8˜Œàfö‹*œµ?UÓ/9˜22[tÐгed?zøšshpl@ZB W<úÐôWKmÍÈšœx¸xâ€ô¤²1±*zµý~lƒ…f�ToÓŽ)×j¯ÍŠ×á±AÁ¨üdº-)ĵ{*³\¼SL¹ÃÝÐÏ…¢õGÉ$œx�1¹ tý'XEk…Ù22À®cb÷òv.3²˜÷#…†>üƒ—n®KÎÎtœ`v“³<2-Ò­»3p!+žt’·4 G¯¡IZëÞ¨,]òj¿6FŒßž;±}<Bk“GÅêZ•Ó(áNÊOí?i9ñµ€óé-íŸEÝ!ÃrðõšOëJi«O…wZ’÷ ÉÈFþCCoìiÌtcÆÀ¥ÛÊûôŠf7Úù‚¡8o d!&êkô€ÖüÅÉ}ÔÍ‹Up`½–¶í676 G‹µn¯þôgÁƒ‘wµ`¡Ú}T•n Ž€.A_AÛ®-ѼþÓ‹6¯Å™Ypl'˜ñN1C ÁÙCt¾ƒônâùÊÈh±mµ65Y}ø•L3Ô^Ói6xÞ‰Ef>64hècñ?ÙêÄ€Z²èž$(R—–‹róŠœÜ;³‡ñ]}ˆxÒí§xsy?\¼ÿñh;<ÓãUˆçyÜtâ d“×’VÁ”й·O„Öv%ï<gs  è„bæÛ63=3ÆÛ)Üê™;I9è/ÍêV A¹óˆ} b3—ÈÀK]zp§Íüê󌘑-‚‚†ÞÕkÚ$*÷Λ5wk.0ûPÆ‚&D øe Ü5gͰ¥É+ާ÷e¸Q°¬ëöÙ¦¡éz)è ºÿ™WV¤è¨¯2;ó àmáµ¼ùžeÀÿlS3«óVï:MO‰‘Ô<죶¤x.yÀ’ú ñ9Á3kòÉøÏʯÌ òÐ(M™UÌ1mE÷¸›Í;±-ïûø ½Îç[E7•}ÁÄ÷6=^Ð'‹x G|Nn²&¬„-|Ð6 F1~ç®Q{±W}ºZ{Äûní܆tìPT ^aÊ@©§÷ŽÉ�&e<¤¥¹Vã^$œx;“)¡È·¨jn“s²¾+FhÆËñøDƒ–Á\èf¯ÑÄúoë'+/×C(= Ý Ãšó¾ƒóÐÐ;€|²%‚z 䣨ÕO™½‡^ôH‡[ÓMh‹öÀùÔ”° ªqT{€ép'í®°{ ’’‰´ÁÞz3K` ð•lò’–¡â’µV$ñEMÈ ßãUŸóÐÙAC¯ÚT÷ Á[ñ\PwÐ_òµìÁÏM¶¤Ð†ì ZoãîS[uCB˜ÁȦ¾9@hèfè.;1 ÷•Y‚ïêí-èÔAD¬ -Vïÿ¸-H¤Ç}ºmìY ¼¿V­ÛLå”—à^Â$³JfŒ×Ûxçn³S_` ›¥Õ-—YÉ:äâÒSÆ$¸<åÞ®{ÐL M1tÒÉdºù~÷žÅVåÀò0…·ÚZ§€Ö¹ãP˜°ŒÅjÅ! ¬Ll¶Ùæ f™@C£0!@,_õišØÌÈ3[×:žÏÒì ºÿÐv2:&)j;×P�oÑ“Úå-0øNaf‰Ì˜b/-¹;�]TZwjŦùïýØ‚^±êóM˜Árš‘¶Û#k§ˆûù#Üà!Ÿ½ASzn±Y#mí]˜Nm›¨ñb÷2ï¶¹ŠYU@CWÁuýÁ1'Šƒ•tƒáÃÌÂðjA3©ÙíÌÛ£4ô!ÕÀÑnãå¶Y:õ”ýÚÛZjÐÊ PBµÆI"S±yŠÊ¤)ª·b•rAf~ž#¸×Û_\r› ý:ùÕUŽž÷á¤XÝûÓ¼n¡%(ÌZªÑÁšùòH#_T›©)žX[W1&�4t«[iR¹©ZÌKá@ä ËüDAkhA^GÙN@ë˃* €7ï^3››=‰Òš‘µKWßB.äQÅÈÓ!á:¯æ…vÑÒ–N Áç9ñq5_.8šÕšuHŽ´¸Ç"<öXFk”̤x½£6â(j(Ï·•GàR›‘⬱Z¿Ò ½wdtÆÞ>=^/ÞÅwƒkh"SO“‹Æ³¤Eæ:$MDýîõOç(5ELªÖ­Ì bº˜ è—e¢ìµX,ÞxÀ%]ð!›yÊË©Ø;JØNC —D¤<.Ý2´W´ÓƒaâÓPÆÜ7Þt„©þò0}kæ´Xš÷ŸÐ7 ‰) ÐÐû•Á¹.=a*˜E0‚ÐUš•Ìé‚pƒ[±WƒbüF)l#»œ±Ø›3nô¨Ë#cMW‹7Ë+¿L\ÓU(Ýìà"I_³Å<é©+S+‹=¥.d´§\ûÓÈ\âç•¥‰«½4Ii€Ô –0ä\qR =°Œûkã-@Cï—ô°ŸÓWŠ·k, ‰OɈ–ÂE:ȵQàì¹VÒgÞ‡ÜÄÒ#oáÜíŒ)£|­©$bü¢Ëó¼Ê_ -8YoÒäVõT¯ L^ÆúV¾ÅLåÚŸ¾Lð´wï õ‚µM˜Ç(1iTÅEîÅ´³EyÐÕ5ĤçÁ›fÒ>†µ!� ݆[õ¬kz†=IµhŒ8± ÁMoÅØe„Zunœ {®•ôy‹*ʇiöxò¼hGd¼øiC“ªaÔªIˆTMÇà‹!—ts°Á>å 8x.–æ“VßMá è![ ¹ï_-ôÍ{?’Zy z|e¶!R·[¬Ké£"ÑÉ5 / Ø´~sýßÔDhèÒ]TŸE ²“£á2œSôG‡‚du nò:D`?¯Õ†�5g:¶ÐÐkR2 i¦(0hÞà“žd¼©ÓÉ>×馂€H®)Xk+sSYãñÀžÚ”€«Zzêqó¬$P´[Üïë%Z„¶ÅÞo+¯5à‡ì£Û\z¿¼›Ûæ\Õ¿z«)Æ”ËÍÚdghhêOµ“x'xm;™—Œ†Þo+>¬DõL_w©síÐý1¼êŠT1yáoZ6Å͸ÖóF÷rð-/öõú–¹´¸Tλ— ¶­‰QÉm‘ëÅgO¶¶­h⓼Õg¶x4Ðãæ6 � Ý�Zã“UMaݸÀÆÓ]MÂÜêDXžLá±7Ú‚ÔôBû¬R•1àðg3ÜfäË´—}l­ ´ä`¾âúœ àD;4,†Ðä–:Üø•Lõ_Kë¶p†ëéX Òêä?í,þ–IÅñ ~Ålu'Q«yÃÉð^ (¥ª´†;Óƒæ.@Cï]A{®ÚK;û­·®§-bíkò¸É¡YìÀ#;,Q›AîÒFí0ŽZgœ Í ïfñ躪móõZ¬ÚÆSw'5ÐÓíÚ|À¬CÐ Ï»7à ýÛ3àI|ÅBõÌŸ „Wô2±õ)8 à!dhÍë5Cb!gL¥¾ÏQt¦¨ˆ”†D #£€†…d‹³thSyg–"`ñ¦6Ì“‰¸ÓsòŒ–69`à>^«h›ÔÐ^ðZ(lÚ,ó9àš#¨ó}2’w# ªæO<9UTT‚Ê*Dï2!=×?ù‹ždçô‘¬89› ÞÔ£´›< -d´Iøær=!ð¹sSúZ¨`f¡†¢Ê˜Å˜6 ¡Ûp6K‹‡-Yo¨_CÇb‹‡\äÓÕýMydSãõðo¯p)Ÿ«žV3.Ï”Yäb/Ìð±Œn®$¶¸¦­60«.Î(§mG’ýze6}“†fE± Í&¤öÀŠä»†ö‹p†ô´ð*hÛuFòmë;È5Ó6ôš†)=sc ¡®M7âbý`ÿ|µZäzq¡hß6 ½•lg¹9›;»”\Nˆ×Ú½×·»ñ±y.³LUÝlE@ hSF¯ÃèŸw¹HR¬ù:_ª¾Œ$2Ò“ËÖøæéª,xNÒ¦Öº™N=8†^‰q®r5?Ø6oaÏ‘I~ÞÓ¥›] zŠÔsIB%úBÙÈSÿ^ƒ¥¡ÍuÇfqB†ÚߥxEÞž©AfŠÇ,u^ó›ýÀªà²`B¡?0Ò›2hh}áD &¶† j.%kÁ 44mœ@zš°¨Ë:¹R@@KyÎáæÑïÀ#ódt|ƒ¯ˆÅL•4»Ñ°ýÛÁF\À,4ôìI<VI÷ª o¼\šëÍÆcZ3[ÈÀ,C¸VÒÔQ.Å]„W¦öÐË] o®sö°áŠ$Y¶”PM,šÜ8Ñs~ ÉË»mÛšüÆéѼ„37 y8üªÏÄJ_cEð}ß0³5½{G<¼ øóª®ßl[uõ¯ hès”×+»y\»Kƒñ¼÷hÿyˆ›Ð ¦6êÒq¬KÞê¼&õñJU›‚`œ“KÒæ“¾aX-$ï¸ÎâÛ¤âäOH>ÒÈæ=kºÁÍ&549`ê×Z”ÌS~Z¬ïuáœïñ¶>„¦Wx^:½-N×;š»Qœ~È€æ;ÄÛ / }¦äV ‘ÎÀ¶h¬¡‰§´Bò44?à¡.5üLE·‡Nè†OoÈÅ´JÐb‚:¥xËü3ä¨0k±Ò*§ÖÆÏ†€VÆ\¶z”%^çÜVÌBøš¨ß:L¬($l@¿ ¹X­q™«¹‚3ƒðYˆo®¿¹Ù}n¨ð|Ó7£7�µé”¶ÛÔ¥4 }¾¤?pWê¿ÏÜ^Ãæ ¦pÍao�f'‚lÓ[fbo9?k—´LÔ>ð: ²ÆeAòþ1æñ7GjÕÒiÓgF@T;ýÉŸ—‘ÅÐÌrâ:xµ@Ëé;†õºylãXk¢à×t àµ�íR±Y‘¬@(‰¶²FWkmÏñ“»·'® } ø]K%DáJÕæ,Š ¤xWàl+ZQ±7táøxrUà×M\Š”Q/×ubvA‘YJ®æ„°ï“\¬r.„t梖×pm=k­Ëes]Í“úN‰âŅƒ«y¾äƒ >˜Ÿ.s<‰4ÌSê¼c #5ÝísÞàjO§î_4ÐÐ箊-”t¾ð3ƒ@I{Úœ.XØû‚vQ¸·å5{›ý†Yû»\ó˜×3¦zÈKŠýlȦ� ¦ò㌔/inÊ<Z6?s$i^²z÷¼å}+fÜTÆÞ‹ÜI~Í ¢Ž§]j ;Ñ@”Ú\JÎ:‹ŸÉpÎ8 z׬m§üFY®Ú“úòÝD“3¿—ÛN »é=ž«»Db±ªŒ$앇šd„îˆôŠ£ÿäì]9~Œ¸a"åÊUÔ?…qÁ´Bsk®‹/eIkf Š;èFm:“Ø=¶ü K¶•áE*R? %íç¨fÍ!Ž &€†NÕ;L_éöZTó5«6,‘'ŽXi d^è'%yã 1Sòá]׳v”?qã^ ) ÛCÂQÑí“;¬r.ŠÔ±®xbJ[þ"n2¡ÇžŸÚIó^ޤÄÏäÎó0>' ª¢Îø3vÌÊNÃõ.6Ê2XtlÞk­AC×"Ö8~·kë%]µ“2—l Ç‚é¼Iìy]~cTN;Ê¥ O‹Ã¡¡E|Е ÇðÃð(ZÔ°÷§'¦Í{ÄC :‹çÓ‚`…vç«ó‘CPnÐÐD,Á‚‡ÆŸóF<Ì[Ð#7’Gµ‰(.3zT|±Qõ7(éO2ŒwÜ´2ÆÇ&¯±˜œ»õ}®Eo¦ï†õu€g|B¨ÄKŽ@@ÑBïÒ¦XË;Ï`Ò[DéñÇwæ%.ù#Þí‡]{¾~Ï»›¿# GqE>}I½KN‡™\=Ä2ŒÄ@CïQ!zólqk*°äÖjã©8 ±´^œN³ö(îˆ{G¸F[^úÝ.– ÏŽ¸Û’«mÓ“£‚ꇮŠ@ ¡I¼ê'^yëÝáíµB+ ^¢-SôS«d>w -<'”ô<—ÅôÃæ7)4ö©À6½”JmIäÃÜ¿Qæ}»…‘ÐÐ;eY_Ôê›ÕÌØï™¦¸Nê‘5Zoé]ØEsQÌõãSÔ|—¨2Õ“”ª…tÃN—© ǹzÎT3˜x#¯ uÝL®3ýÔŠ“{»©†æ×�’Ȝ޹†Ž}^ÌfÐØ®8 ä½è–Å)Å[Ø,.Š„�4ôNÅ deþ–/oÇÖúÍ•´Ö¸µÖâñ‚‹‚Ì”e;‹­—Ë�~ˆK#‹–ô˜µÿ™QjŒ¹Y4’þ ®®ƒ 7Uãj³äÕ‚é°¸óá -î½&o¹Îö¾æF'hÍӷЦÃ;oÌÃͱcbhè<VF’õ¾’œWÌù‘Üoâµí¾«Çwuž†ç‚þ7 >›ØÓ¥beê$×ô|Ïp†ç¯Š€.cQ¨ºnõ�ÎÆ\y“qÖ=0 eÌYF›Òôá;1¦Sôk@†{Õµy­ÒiPÆk‡÷Í!QœÚ4ô1é3I'àYO1ç_ç8 Þ€o™…bõÖà@í”!í­vÑâøÝ:ŠÙáDK6;´žHN:ºÝÂ)‹@ H†±Ü¬«)Ä+CŠ_ÐTL›Bm‹9ÄŸ"†´¨nv¦c½Uä&죌±\À ±#1ÐÐÇTˆÖ\za“@^g¤m.k,ÉKdOs!ŽÂS=±š»CøÔäbÅ\¼ïyu•ÿ¯�a·XF;7‚€ÇQ¢˜Ñì h¡½úñ›ˆì›j «|ɉ‚Ü›ÊÏ™»XÙÏoúÈÅ<XåY ˜uØúÊ•vuq!>`.(ºW•‚±ƒ÷¡iOCð;7 -„‚éó>ŒÖnMæ}½â(7€œÕ‰{;ñ47 } /M+šÊoì®Ôr—òG6c½êÄ\ˆ+“©¼26vX €†>¬<<M nîaO+¯™42ùU¿f€È™`!­ávãO>6Ç;vâ>íÀ³ $×¢¯è¢ ¬±¬¥®/Í ïJb<ÍÆ>‹u×?µ¤ã˜š¦Œ¥CB5ùõ›±^ub®§ëÞ´[· ŽB�z’vbÆ1¿¼ХǛâu.¯IíÃY1Ñx­Ц¡3kè}òBew8]®fý˜}½)3“ÐÏ»íiœů[T]zZˆÝ°ya‹ç\(‹+=54'Í«˜"µŸÝ¦hŠ£Àwó ͆�4ôѪÑ|…“»VÀÞU²w­,(þ€°%ó ;Üç£ä{ÈþB0‰¿pL´ýúÉY×Ɇ{ƒ@`%b Å—µ¦€&õÏͰÙ',\({W´U=ý=6‰ZC¼EŠƺÚ`Íãçýy»ÁyLÙhè-Plãñcì"§o>RKpN¸Q¾'4‡pP±qîÀÖ7ØxñײՓESͨzù{jþNÜŒ�&ŽE@WŽš™kB.Rù¦ S ©KÝtuEÃë)ô. ؇ö›÷cPcë¡hrmŽœßÿb€P‹�4t-b½ã¾#‚+ ©˜ 9wë=hëÞØN8Ÿ_Ë€ÍgÔ98¢¨Ly½…W&D±€ØÂ ؼ ^ñh \|®*V+éÁªK=þjoòÝ|\=)îYåXÎD]”Ñó‡ c’@C'9,PKñ[\ðy×Á‚Êé\„ŸI@FÔÿ4n#S^²5¹4U²ÙKâS‚!z?;ù/þ÷8€¹—D saæ©"z] h"^’×yô¼RuνòG¬Å7U{ ‹n•G¬ad›{<­Á¢ÍÆÁ”c€†>�ï2=P 1Ù mÍ™]ð,WÏB>�ÄÑKŠk‰$?náõ‰4´W]¼ÿmÑ›ˆ<±E¦`óbh6ÎlF.’8ýòkHý< ]FC‹-–é)™¸’n7l ê ÊAÑ v9Æ8˜9Ú:X>hèC`¿[TïÞŽF³‹Ø„dzú0 ZØDc½]/iÀ[\‰™(é†Ñ°P±'™_œòÄp`ðªæ,þw….Ë„hnÖÐëþÒÿqPOù‰×ÅïôñwçÿÄf ÞÓüü­=¯Ú«d45šâ-šWÝ\׎ z®üjê ¶±P6Zèð¹€Þ‚¶æ‚Õò†�¡ëÎŒûc2­4ëJ_¼é 6óB±§0bˆ„Kz¡â€ß0÷J<l^Oj¹LÅÆßÊC䕺0»ÞŠ_e¦:åc>„¶‘[¯ÎfpWLÆí¼†6´EŒ·1f  ¡·@µÝfFHiùˆiÚÃ\)j=Ýîñ9grL ½¾¸pê¼@4ðêÒšZר ¸ŒH6³Ì¶Ú?×XqZ K>‹ÚKþY 9S«zCed"‘ÞÌ¢£X—³„yúÞy-‘džà §X p  ¡gL“©9ˆ9‰ Æ1 h}‘O×zs͈¦òÉ _ÀK íÑ„‰ÐÝB«j’nê£4¥€pIï‹Î–9ÊyØ9œ‡'óM!†ÙŠó‹dà™cjhšÈU¸¾!D¸—ôjÏaÈáXk[.ÃT�óßB³g~/¶4ô, Õ´hå•…ëÌhÇYàØÒqÎÔÆ°Íîï¼\ÑO³UhU­Kq»¶¡û¢4â˜Mˆ’¶_a/…F@_’y,Á¹¥AC{µª÷—IÔD¼=2½˜5Óé¤ÀЄ‚Æm·XÏEäE‚kø"ž'� }|âø&[ÚÜáÞ‹Å깇Gއ¯Òƒ"¢;š—+•kf‡w6ì25ãtŸÈtޤÈ;ÂK40®Ûçš¾àÃÜ›*þ<à©y€kbz®{-9±M’[;¹q‚¢]"–Óדóg¶mKŠõ¼øª% H¦FãÆ'ÆF‚?:àaŒ�4ôñâ5~½-ó’ZÐ=ñ çw¡&bDÑ ˜ÌØÌ³U1í³J›K·Ìu…YÕUKs™"MM\¥­q,Ô‹[›âñ-gWS.kÉoíÌÆ ¬Ñ>åÛÇ»˜-¡UZSP7î}‹ì(DŠ)n»6hp SöD�zO´µ‚ÆÏG{Û¯xùËÏ$´ ¯ŒÅöËkmâ#ÏHÆ!¾YxÈ*y#äoÌÅNÀAnûö’Ð%Zïš:#ÖÐô.ïÓýgQy01rrDa››QìÁ & Q[!£#‹Ú¤¬âÎ-ú¶õ�s_ó �­›ÍWÌŸ®¡5ȳøÖù‚ýhèƒË€³±'ߊñå4ívÎ8âŃØ~yBRƒ Þ¾ÔvÁ¶P&ä_¡7/@]«Å)êXì®ßòtF²Ç÷jÏ/5Ú ³âº-Þ(/hÙÐtMΕ_ÃE8g$ívÀbÏ®s½ý2UIˆÍKé ÿ9oŸWï1KTa"1!‡W…ƒÁ @C7€6xЧ â^oWΤ\ÇpêÑÂzp`“™‹1áLmjè†FXÀ„ü»º¤ÿ×lêÉ‚Œ1Ñí-лzƒÚš¯«W¡é-(éªê=õ`ST‰ÐÚÔÐ|³ðÉÝ­°Vi)î³pxþ›—Db ]¬7oÿzݶhРÔl ψ�4ôñYã__={B!ð[ˆEAåBRÚñxhÆy@0ò«®œS+ëÞ6ε;K*6³ŠÌŽžÑÉ1µ¿äªÍòò^sä¡#íá_6[°¶)žtóŽ¥õ¾àeæ)ïdý“)³ŒÉU¯)˜>ÚtS`Œ WÔ&É…xŸÕ¦’Fô0“^š­aâ逆>>eÇé=o ‚`Ws½HsoVCëþ”×Ðâ:dxÑdZìðEcƒ8Æ*—Š1ÁüdÖTù&Ç÷Ù"¾ès<!±†^/´Èíâóf ÍõâÊ6ÚTp–¬Õ§¾ëéGÑŸ72þ\\3ˆ~dz&6»¦ŽæÊ„†n†î¡¡ÏcQ:T}1‹s1É }RÂßÒ|}<(C= Æ\,zæI±°šM«é&®Áò“‰QKqå#ú¢p#ÓÏø©=önˆSæGÀ üû¦Bàohmݦ¡yÝ ²¢úojò*™x~~ímm- Wü½/ Æ¢œ‹éQJ:C;óïx؆�4tnƒg™ŒóÉô@s±CB=›gƒÃ;Ôœ‰€VÕ¢/š´(èxTX£¨|ˆ?ºÇp‘ÑÁÅé^‡ãEË{$_+ÓÉĉ5tÑÛ!€ÃÈáèªÓ·÷hql kºÔ¤*ObÞäÌ—hÓÐú4z*¶É\&\L{Z n=røå„I`Ã÷õ>@CïƒsaS¸Ôjh- µ.äÚ‘è^¼8"ãœÐšÃBœËѺàpòõäà¸è«-Ñu‚þNOµ-5!ÙWt›ÚÔÂxRR{-vf©ÑŸXÐp4ïí¢ÙÔÐ^•/x[Ór†ô¶åçèòŒw-ÁE°àdâm V÷M©Àd½œ¨íªÉ’a›¤) ;ÐÐåK´mSÍîj.æZT—#^W˜”>W´€ÖÍ{§fm³q}Éy›³IeÙf¼jVÐcF9™´£µˆ(oO¬P¾DàæºfÛ° @ ¾�D¦Þâü)ŠMWŽÉÉ¢ Îu;ÚQØï Žš?/œ™ÅsÞȈoµ&6ÁÉ»iháóüøÃÃ6 ¡ÛpÛc–ÙཅM…!$±ÎžpÜ#È×аhŬu¶Öaž¸¬Ê‘ëTŠm l-U:ÖÓÞŠ|$•ýÆÕ ó!où$…ÆÚ¬Û¸,cºê*n‰SËE³èSâ-"瘬¼+ 1kàÆ7M ´?ÑÞ€+ hèÙË!ކРN|¤OP’âfv¼˜Zk:Ö€èîHXé{9ú9“ß=17#Û 2ÖÌÒåí“câÕ0~2ø{&kÐ{A(3ΙTQ^eÆUª2}é ûÀÿs6§e¾1Åë"(‘ñúø™[«úš~±N‚Ô€g’èw4ôys÷ÔsMÍzßr~÷¨ù\´[L›&\ÝÿćU&°S·}xš”Å`Xq=f¸“Eƒy H“8–¢Q…©3" ëGß=Oq™ü©Ë8£·øµŸæ1.Ü5ªg¬jSCs6&bMm®xÃÆÍÎDÞ¤ 3îøì!� }úÚ ìì©@CÇì|.¤2lkh ^‘¬cж òÎ4Q¢úÙ¢+k›¦Và%íùãÉ”5}¦è™öάaúm'Êi½×,Q.¬õsOl ÂÑ;‚KI/^½·@f M rð Öô\œkè4ñL ô<s£)hS`| ¡÷Ç|äŠú2×äPñ¢–#vé÷ƶb­qÂë…E±ÕI‘Eûãd˜ßGCs¹ k8E©Í%Kð°Ó]Ûì_ XQïnQQœ7̽¬/ðLM/ÆóÍ(”â5440#½î¦±Ño(yƒ8PÍcóî†�4ônP_ˆ‹ýKb3ó+xhèõdÂÓ‹ÄæÅÛæLý—Ìô„š÷r]$ɸ’ø}óFs®†E\ßÒELiø” '¡ÉÀ1ìxˆŠÊ¸¼ ÇZì>NPñ1WñÖš |­›©Oñ·Ä‹¼—épò콂”(h ¯`s; ¡·ÃvsËË q¦õ‡)¨%lî÷Æ è𽋠AÓ¢‡åO2ÚÔpÛ¬MÁã²`‡zÐy1/Z¸˜0u³ ±:{êBdÓ’¸Y㱆Ž®¾Æ+Ê>N>4=¹ANª¡Ûˆm.ä5—Ñ&¼¢Pi:¿¤Ùa;k.Ê÷‘›Ýk§ú¬é3u!ñ>×g7¥¡µòã\ìÝ9Çé{%ëÎfÖк£o±O’ÁÔЦ˜&·¹ )~˜À»ìyßIØÜó‚JTcP0Þ¥v•«I¡ù<.òä  ²-`bS hq„hh.Ó«˜ü‡âe³‚6r f·C�z;l7´Ìe1ÿlѼäå²Rè6Sˆìp±¾4Z˜êðé®4ô„Zèf}5²EÖ´Œö®‚V÷xåS—âíŠKš’,éò¾†°¹¼8MæŒ F°k zE%‹z«ÄóZ h»|ϑѫAÞ%éÏH˜ÇbRÓFå ³‡ � }ì]‹jj^ïî¿AÅiKè ­Eºü;n²æDÎÂ\#ͦlúÜFô݃½ÙØz fæ ´µà¯ÄšWu¬3LÇöÉ{ôÝ<J;Œ4·*/E(D¹Ú[‚oIñqJl¸n|–ð44ïDB@óÍEj‘HÕë?ü¦¬þä?û»:¬í�4ôþ˜÷®¨Ù“ï[AèšÇùtó¹Çν~o?_ó©fÞµ»&¿Ô!Æiº!²-l6¸Á§˜­ßf±œøºž?”Ñ>yÓåÒ³ ^>x†8ƒy¿ötA›žfâäã‰Zª=Õõ•¡®y±kĺ³åBìw€&m½Cõ+^˜œêÚ…’X¢È~£Ö…£€†> ùÆuÍ=I¤|}Û$kÝ <®otwÇiZ6‰)Ø�. ßvCªRxCVÌápq©š™«ÇT Á¸ªÉS¬ˆÎpã± Bn+¹­gi>[FkY]œÂIAJ¦‹¼]Cã·¤Á>—ïk¾m¹ÿ|Œùú:1Þ°œ76ýƒعâDzà”ù€†ž?GÏ<4I“Ë>-2g …!(~fòódznr´�Dè¶ÇJ4Iѧ‹m©¸mª„ ©$¸K«?™ŸÀóöˆV'Å€6|ìEzÔª™–,ðZå;]T¦Øbºni®Ø|!ïÚ5%¹'Úf3aòv&Z›7½xã„ÈÈv7éaóîYN“¬ =I"Ênx‿îñ2×…züº¶æ²²OÓŒ0U©ˆšÿÉCsõ°±Qnm¿Í[Þ§©2zÔSäµç=¼ARvx�Á,�Oa$›n’³Ð†;ÜbºHŠþ“/ê½+ˆ—Ë\s£™sfÖFÄÒBƒnF³M!‚y·âûWw+…ÖÞ½‹ÞÞzº™â<âÚh†§E�zÚÔ<Òµœp…ÇZ|Ð�ÍYÂŽ)ƒµæËT¥â’@ü)XÐÞ†‡œT{Ã× šp57˜!hhÞöÌ£è"¤¼ǧP[·ØLZц3(í6F§#¾œ+þÚWêšØ…zöèZ¾É‡»ÁˆËõ-”ÉÆß¼¢£¿Fï1X‘1šáš@šÇÄ ¡@ÛcJr+jñÇ#öáobŠi¡Y<íZÃ$DNÁ‚£‰Ê§óV´ÛÑw3ø¼éêçmf„ èýº‰z:ð£-\2ïVlp» Ÿ¢ÏÅÃòáë ‰ÀX ­4g'MA¦” &44ש“äT7êMë(¨)ØÎÉî¹8’üvÁÞ¸ehèI ÙËMF欤í\LC áÅe±ÐOš¬ m6¶þZ1½í7Ûia# Mµ—ì(¢˜Mõ ®½KÑ¡)Ññ&‘Ý u~z´¼AŒlF –Ñ¢=ê ÍP7M¡z69íDZGhh}Ÿ†ßìn\@ã[}Í5‰I ¡“@í:,î圆4{Š“Œ¢h’Ú;áØ5þôb€6Å–¬î‚·¦¡…Œ¥õEË\Qõ„/anªg!#<;Áë«ýà^oßí)gpÒÛ#ÀeÕ¡ùA÷®ÞP”h|xÁÓÆ¥(Ûœ§L'):¡êݧ!b¤=Ëᢹ”¸yÐ\š0w4ÐÐGgÀZ?îåw Kœ÷=Ýà1òYGw&S'™í*è7dv8{ª±des žCÂ×ú#PÒÂÞ :CÞ’Åe$8CÄfÙó(kàɼcX-š-µ€µ'Ž$b"Ò×|§ð½`è:¯ p‹ñœKÅ Ì»ž×u¬ÃhSÓZüEz¾Et°  ¡'­A"œøE¶àhL<…&ò¶í=Ÿ#!ø(¢âwztcÚÅTZý ˜÷›í´ Z/5rþ¤g ³’ÍòãyáŠëc¡c<‘¡‡ñ…q±k„0ÒÛ­`®(ÂVÙQ…Í5®Iª\>jAë΀±…*i³Úhâ܇ïhÚ‚·5¼¤†E˜úP‰øž×ÀÍ@aây€†ž4wZÆ NáÔ »o‘e< m’ûœ™:)@IˆÂ ßdºc&§ÐÐZR7DÊeA|7Á¦†¦Eõìõi®˜c +´µnê=PÄs! ·Ãv ËÏx—×6'"=ž³ךf‹é3hhA šKu ZòšÉfË3ezܶ¨ؼY ¡§N½à#ï1ƒæVSÀ ]2V?mЬ§G5{Ayýf;þÕ*pSˆ2ÆŒ¼g‹KŽŒ5³‹Z\Îñ bº1z׬j}¼° œ×½¿ Ì,¾[3ã1æpLi(jLW”f-ÎBZ[óý¨¥§9^ì¦=Ò;×ãR±¯ q•ÐÇâ.g©ž˜¤=ñÁZ—D�úLi5ûºÙ€…†¦ Å`­ê§Ï‰Ž' ×¦bŠ0"\ …–\[ðoàó mJ�j¸šôŠÖÓ¦:áýRh߸Oób¨úT7¨¢f(̉ÐcñÜÍ/<³È9ÕÐ�Í6žt曑ӲÉí‚^4±ï�‹¹s½s½¿âW´J&Nð–Sv@�KÜ ÐÐgJºÉ2:�O@s²öŽ+. ¡EhfD"¡câŽØV1§Ðк·ËgeÄ(—ÅqÓ%‹S⛌kk-LĄè°½«8®¡M=çm7ª:þD\Fг€Ã5´‚)¬9'ˆ+[¾ã((S@›ïŠô­Ò\:5ÐÐçK©­‰‰gÃjùè ž©@Œz-'†E뤌ì«BcZÍKÈD¯*Ì`pRŒ˜‹fýÜû¸¨oFØ`º´Ù¦h9¨E¡¸»wýsÝzTâ‰Àß[‰s ¯¨«+Þ¹ÁýÍü ÍÆ¼®S¼#ç$íÌVTðçD@CŸ(Yw®fäǤšU5ÈÂIÆ{†˜b6$®·ÌË“gMwVIàs§åžé^ö5Œ=«ÔÎ5;bœŽxS-¶Ö·ãw–8=‡)@QÆñQ®¡½ËûÓihOËò@„ÒŸ8‰õå½)¦“=E 6B�z#`·2› ÚT!3´ù¼c\rHˆ™Äɇ)²ûs9¿†&p<”úA(ZÐí–{E™âE¢ÔÍŠvÑ«-̰³¶ˆëfm5¦;‹\U‹úç[€3§»,“YSãÒn5ïÑ2¡u8„˜wW´‰LÆgŒ@Cw¸ëtAÇæw¤D{öô41µGOü`× /f^3˜ÊÉk$ÁˆóT9Ó hžbÝ­w+�¡‰ùŸä½H)7>òf¹òkƒëy7Tñ6W×50v,|…ÎæƒÅ*üO1ì,ÑœÑМ|ttbË{÷FÔóìôCðÇ¢;#� ½3à]ËÅZˈ@Os 홨#ÛÂÎÄ«¿5‰÷ &Ñs'Æ>­†æ1šzkÁ§{§÷ ÇPT….rJn[7m›•¬ðu•\ÃD  VM b?Š HÁØÔœÚü~‚>ÎЊ¹AC¯Sð+Öù-/ }²ì›dÁIĤTâ_­’&ÇPQCϘc Óî(¹s mÉ(„ÐU*„¯ùçª*Ìœ~æ%µ·Fm±`Žò v6E@3¶GÑmš_è’…M¯=¸ânbn.±#È¿BàÔ¡¥¹¸Ñ\ܲifa,@CŸ¬ <&ò~— >[%ªõ®ãïúcE-ű2¿,o~©EÓwO‰œB@›mØ»îjCë[‡? tpY¥°éª6Î3¾ÝiÖá[©-q˜Õ‰@ µhä£ÙCì—uçréÌg§çµÓ×½éíÐàCµPÿ<4dð%El·Úôa|ÐÐm¸<Kð¦÷u gghnçÈÍ´:kh.•̸¼#êÔÐf®ÒТÒD‘ð$Š\pákª[SO?@¨ê ´D±$š‹¿ÊŸæU0qZx ákn4±/´¶âR‰÷ã(qBä¬ÿ,†¬IØÓ¦ŒÆvÛ"Űi"� }úÂ(^÷¢P‹ì¢ìÞ/®¢øê&5{­…³êúÜcvâ÷!DLkí[°beu®½ròJ”ƒ#Dƒ)ù‹úºÈîEÿùîØHCç}˜ªHàÌpLvZ¹(¨^“»<¢K_y„†¦?9?è¹·æI3 š»„cÇ凑@Cw8Åt-“w6›t£)ûØ =ªÕ›ðÜcR2(ˆ>&ô<ÏL œ¢“d¼Øtí­š@Ø äéC×+ü?™åãôZ¨|O5céD¾ PUã;}ÃôMлÀ¸"霠„Âo‰ú';‡0Þ>œ¢…€æqÅi¿ëË óÆMs ã@@ � }…’Ðjò2ZtO!iž ´ˆw±àëÑ4‡t²bAëx9Èf;÷lŠæ§Û$Môä©ΦPæºAk>%ˆÝëÄZÂO¸‹󨓃õNNİ ÐÙÔ5I^C †9\CÓ6'’ ›œ÷îEä_Ô<Œ-3aåß KÐÐ×I:©ónQS 9EÇ$BXìŒ÷ª(CM&5ã*6­Uú@_ô³1,ªIŽÆ¦š«d}3´Íž†-™†i\ÄÙÓõcsÓ™z×Åp0`Bt6‹RÒ¬dÍ~ž¼6Åt¾übÈ÷ûºO½ÝJí¦¨¡×;4„“+Èì!ÁÄ ¦NŠ�4ôIçºí‘õ)4t•ó&{”_pym ­¯.xa˜*Þ!øÓÙäý•gJ¼nþÉ;qИu€žÿ|dE3A䛺X=8ÎovwC@g“oïžà~ ­7r¾‚“äpá­ùÕ@}«¿òEÔc‡©D�úšIJÂæë‚y÷$b-ebI䉨çX)Ž’S¤ó¦ª°¸0Ú44!¦›7,òÓh.—I%ëMmžoy/ÆJzx?®Ú5ÐÐSí‘Ngx6µ ä÷'¬µªWiiá¯ðí¦·ži¼3´Ìt“?bá›?oGÄ–Éäcv@�z\B“8¿”÷*§¼*5Ðjƒ n˜âõ-KçM±Únè%‘®¡×uu!y©1Ï–¨wjÍ_ ”t DŠÈ ïÇ I7•GÑs ˜ʦNkp¯æj¾/h£™;n 'dÎ^àæ­_œ¨Í»ç, xuU ¡¯šÙ§qy§œåƒCSqnY ºLQ²¾¨ô. 8ùjÉeаæHçÔЦү—ä õøämŽä•xBB(lªI*�¯Jµñ:PÂÖ"FQÄ[²¹1q¨ð¼-ÀKWˆB”¼þ5wiѬ7rm)öhè€g¼Ý§cäPtWt¿ÿ°�j€†®EìLãF‹¯àùîÆÅšLãŸzXÅ“‚yuÂt8Ã4{äá¥cö¤ ·u^AyÙ4oð TÒ®!¸Ð$®Å´N½'Vt…‹*jKVU!™ÞVYhs³öA ”fšTfîP½—õ°Cj)ÃáÂÕäTf8E¶ß'×Xåf€†¾rê=/r–æ÷}`Z ‘„g~#[k;Τqçðˆx`€´Ä!=,„;æ‰K1½'MÝ_É þd(þiÅ,Ä´¨~t'Ly7êtöã<V ¬U˜Ú¯à=3//y]é-Ìë\<Ïä@L×_à®ûßé]…) Ð�4t?†S[0I¼ÈY¢ÇïÜò5 kˆ½öPtUO,N©M0ïsµs·Ïu¤)"MúÛ0­»ê­t×%è•x~öYêy}=óÑJ i:‘O5¼Ø:ÝÆôMð¨Ìd!“–ùîàÊ[·y8ñÀù-àódîlNn±M ã@@ � }ñ’ðT‹ÇYz¼=û@« O‹Etš-¢mo¸‚UÝØ4ùË•ª¸Ì…´zæ*™´3½Èz¢xY¨u¶8« G Ît÷beö8€¹3#ë]º ¼’†6/k«šŽ™ÐÌF›¹àÛõ€†¾^Nˆ‰{§#UÄw p“•Šs™óªH?âÞêDZÓƒ®¿o Ì…P&5L’Zkkq©#@¦w‹GÑñw¼ªMƒ‹øk²m]Ì:)^Áˆ2×¼Þø[fÎÀBEòÑ×Õ|›CCŸ´¼oÍmhè[Ëø³x5kÏïí`¬¡¸šI ¯Úèfè^¼­ Y¹¿†6´ÖÍü­¡µ8Že4· .*<@ŠR¸¡©C=×nŸ[hhq­¸~„ªH«R½¹V�ça!ò?fžd£iÛ¤·PTˆñ( ¡Bþàu5¯Ì›—\G è|ÚBCÏÓºt6éÖ…àÕ™—Ùã¹&à-Ÿ„¯ÐÐÁgÜByë»-E=è²ç7kÖ–t[)Ö®‚ñWB ¨y‰ŠzÖü<¿†®ç½·(jw\”^i/\#hèkä±: MǤf]l�Õ~ÔL”×Èÿî——yÍPãŽ1öšR/ð .?’°hƒü¡Œ¹ü¥ç듌†S(Ë: ó¯þ“‘òÕÅ”¶6ß6+ï-FN‚@‘BEer]üIóOq¹Ý`Ñ—¯|éâ~Œ§ïhè[, ¦IÁˆ¯[™_¦Þ¸€@3Ü´%OP¶E7•†6/øÅ†è¯=ZgÁÌ Çy ½æˆ ‘-ä¬E,£ô«·JƒdÉp[5bÖ$èŠ ÓdE{Öû@F“ØlDDñz{­¸ Š"{’\Ã[C�úÖ2~o ¡Íó¼‘1Ö€@3ÜÇ;*º û–'m©+‹£ 3k]¨³`æ…kh½%‡ÂssOàêèªÄ ×ÂTO e xìn‚µÝ(JCoÇéãgnŠß—l4qy¹[ÔÍ  ;yÃtóÒ˜Ú€†nÃíô³NÔ¹\¼àºgøOph!EW SÕéNýdˆ†ö² ÚÐÔݵ’65´÷B.—‹×0ñÅ@R #ÉY^=ä xªŠ‚3IÚh–䲞N¯ˆkK±AŠ{!éÿ$ðM&IÜÐ@CßhU´Ö( -ÚÏðXæì[\’šbšt¿'1c鹪aï7ãŠÚ7£¡ƒïr kêiï:'µâºÂ3Û£žy"pÀ6|'Nb°MùyÚ»¿.þÆ-]¬N‚I³ÞÕH‘šWÄD A�:ƒÒeÇôè€=A ŽsªNz¶‹7#àöDL(cO=s Û¬¡µŒæWhü[öZ1“ŸÜáuý¯§2i�¿N ›ÃÑ—^)^oè×-dmëOHö/<¬\[Æà¡y\l.M€ú×<.µ ñíXý¸!„­€†ÞaØ€@‘@gøÖ£ƒÂN›Ð]„Ë>SÆåuaæ¤G'ÈLǤ’Å­³µJ‚ÛË~QFÝ×\´Ø­5Ôŵ]œ‹Ó"@•Puä b}!Ê¥¶ù|ý.ß\Ób•w,PÏ‚Ðò61ô � ݃æîŠ€§`f`O¡üvÃÅ“ª¢­ m·vVŽ[¬&“áh#b q™¡Aãø»"®¡½;Acõ+W!e̬Õr™NÂŇø7XÔC0KÂ,]Ï=­¡ÍLû×¼Á#؇À²Ý¢æE¶Òv€Ã²F�Uqbb%´[`\<õ©‡uÓ]û«î£¦h¦~¸Ý‘)”…ÀrYKm®Å %Oéêt˜â>8 ,›ž4$S.ƒ€( Qlµo^}Ÿß;ü' ÿhn‹üj0IF šª…} oa󀆾…,_6FSAî­–‰ûøàI½àwd¹’æmf# ­5º'©I7›ÌN™ÔÐ4Œ;Sü&ŸYZhÌûö)V1õœVrtfœ j5«°Wü’RL4í$ݘp˜à.¸¸êæÎcÏN˜Ê+¹ }¥lÞV,ž„ÚÞ5%º…Wýšüp H}ÌÌ4×ÐÚˆÖ(æq27bþ6HFC„·ó-2 ›s"àå.Ï„Ûæµ_&4a0y¹(J½êVìŒWÇŽñ4ôJbú"\ç"æg/‰ÇFÕ'G�zòÁ=hèµy5¢è=BdÎi® âc3óÂCxÂtð­ASé’v ~Ó#£0x[õ@€ž>)Iå5S°G#T„\äµaUÔÐz»¯Û<9p–&.qÞL|e¦’SM¾*„Kσ�4ô<¹€'Õ˜B­ÚJß~Òg©e¶ÉþúEOF¯Ý½Ø6j5t¦å놧5tFxVKpñã¦øÖ9¨RBµzºˆ|KM`N ¤fŠ·Fœ;A µ;ȬCójyy#š®FLð9ÈÅÅÌÐGJ5‹÷'E�zÒÄÀ­ É^˜1Õ6F°v›‘þY¢ì3Ÿ/zžÔ*�OC›º™¿4¶à;RB¯ª0µ±ØhyÏæf3)‹õôᥛ áªcÍ”¹ *–sµ;ÈÔÐä69 ºð½"d/ç"ì|f>˜ºêŽ@\Í@C7C‡‰³ PliÛ9:‰†ºÔ—ËBð?‹�[‘XѯÒåÓù0­uLWMË«ýRUO¢¡Å:w>qÛ•+,ëÊÔ?½ TÜ)âB‹oÀ!àkÌý2¤ò‡8<ʈÖÐt}+–hљϻF;C�úb E8»"à©·]`‹‰†Êu¤§¡iL,∴T5_ CtA¡Là‰+fCMJ3Æ¢ô¯Í5GG_µèõW/æëUò%Ä5Üp m:¦¯Ö蕼ÛýÀnj!¯¡5¡AÀí¦¹»¶qhèkçÑmˆ€n–.–0íµÞÈù®ªã6#ŽvÌFîý>†V·nZC“ænJ¢öªˆkàmq®7 MÆ5/‡‰úÊʼ·Ø¬ó¢VÿYe¡6YŽYkpÎñ&¹­r9ØeAjô…Ç%Q{Îl^É+hè+e±ìŠÀTš÷i-”élF¿•éqŸÎ(B²€æih~°äÉÓ>Iðž²ØBC¯áº'/=s×*â•/þäoU ™Õ²†ÞÎrUÔ[^QÕÿkhýn ×€¹u²nÍ>4ô­eñŽA`fÍû 5žµCp­™—q:)C“ÚkœžŒæÔæ^·ÕQy×2®Ö7ŒïD€’›ßñŠb›ˆ½Öé­˜~SõÓ¬¡M®ÐiŠùmlâ`íb@C_,¡g'Fi©!î ù(t³–Ôë+ùoÒ{L¬BbuËÏüµ­û¨VdŠ¿Õ£6b ]<+&WÛ/NÁ€±Tm„`i½G¶Öзó9F ¡3{ÐLͺõ(û؉c·ÕíXƒ†¾\#Ò‘Ì£¡µ'BCS·à}¢J:d4tÐjèµezþ˜ ‰H‹±hýí‰uS²,2ØÚªà¹è¸bÛââsÛÒûÏâš+fULÍ]ßà ûã€çD�zμÀ«©8‘€·;óÆ£[HQ›ÆY1Õm€•xKL×ï’f-úÉÃÌ·ëèŠAFO½QsÎõk©@CWI½œ¿u"%mN;¬¨¡¹°¢9º©ëi“{Ç ¡/D„°7“hh®ðt§1•ÐÐ4f5UÔ¦ @{B·´šÚjg§ô0 4SD˜r,k–3_®­:ã×WÞæj‹½_÷·­»ÿ¬QZHíNfج8'ÐÐsæ^MÀ Z¨^Þi¸&7M EKFøó8¶-PZCë&G‹Šè‚“'-Ù{Ô†èßÂÉX‘Ô8f5#\C6ͤ›e?¶<:u3JûOÌh耼MªIrl‚ö +‚�4ô!°cÑ#`Š¿ã1;(—Þ)ËY4´4 šÚjÚð4´×³Ñ†wÞÇ.ç¥{ ½Þ¦û­juó’˜bç¦ò[OÂrÐpy$«`Çà<ÐÐy¬0<í[Dž¸Çbgž­ ­ÇèÖþÐ;žþüª×HÚÂ4•„-\h%m¢*Ö¥Y QÔjèüyØØz€µC0+J¼¨Uà(Wió6ö(¶¶³‘†ö>Û:Ø¿ÐÐ×Ë)"ÚXn»öÃáSð=9ÞYIFs­ÌOq¸hZrU“æj˜ŽÊ<aÁ%5 Vï¿!'.<¨y Í7¹ ”Šb¨‚k‡‚Á[ àey ͯ /\oy ¼|%J¼_Ü¢øa“€†F1� ŠZ°ÂVÓP~Lüçµ…ÜÔç©ât–›åškÜ¢¿Úˆñ¦5Sôëƒ"ñ_•3uƒv€ì´é [R+·-WD&A È/4ôÀAC¦¶@�z Taó²ð¹¿NâG¼ž€æç1¦’'¬ÁéoR/re,¼ò{¸‚7ÿ“˱OÚŠC&ýgm]Æ:8úÚ¿6jCÃø¼üê×µ ìYWlÞµ¯Zl&ÙÆ œ¢Ÿú3 —A�ú2©D ›#à0mº0ï‘BëÖÁæáèµ\ÅŠ¦Bf«4t¬_…Í@¸çíèt˜·¸ôE7kè@^oZ-0¾P ("#ï’Îó²¼ íéf iä±Î»¼’™Â°Ë#� }ù#Àa쬡‹\o*fÝo¨Ëzoí¬¡MmžFsÌ›¤…Ê4t¦¹ŠBÑ—"f%åÕ°B„¡ãˆ i -ʲx™wT½+›ÐÓÓü„>³ð…¯=2ácÌ( ¡G! ;×G ¦ïáñ ik6oáo ¤°Í-Ðã/Ùd4¨v8¾á¤øÍHê‹æ÷èµKžmý²_Cã4zø¦8Ö`•€ÙÏì LtÐЄR‘3xb èA�º=̽!‚¦-PÈœ ó&MÇQ¼Å*\¿E¯øæqe€Öå¦8+Š/Ì@H ›²Øt ã¹™Á¤†. eÈÕ›Û! ®Kƒ…Ì‹ºXðպ͗ -_¬ÀÚUf¯#ìáEݼßgˆ>œhèÓ¥ ƒÀ„Úk¨Ôl¼ƒ^O  5ß™„ºÕb7ÇžæÐfƒ&š÷6#‰ŠÖ2ÌˉcJ«æЗdñ<h让QÍú’W)È0è ¡@kžÓ· %>¦­bí÷ÂÉ Mú{£kSgðµ@Cs¨Í)csÁµ~Ñr,£‹©,ÚÇ€ý¨ÊšY�cIô¶ÃFØyMn&-x›N_·½ ¡o!ˈ±¥v‹³| ¦ªùJðërñ·ô´"ïñ~¾§¡ã3<=‘¤C,^{|¥¡…3ö¤ÇOÌÝÚ¬ACÌBÀ·ñeIÌ™=„) °"� J�evÐÐû{g*¢—˜’7è(Ár+ÇjhµN©œŽª4´yy@Hßž,FÀlÚ£ º˜<¤­ÖLjhóÒÿ­²»ÐШ PF >ü(ÏOŒ=;>^Õþx’w}Ý“¤ú].·ˆZÇ%Ü‹u?YW~cÈ( ½vz´ö¶,8+Ÿ5s·B°!¨›ÕÐ1Œ‚£p±ÚPZ˜Òƒ�4tz˜{Œí…&d=‡^ú ÊÔ¾: šÈ¶˜[«#イ_(þ¯jIºÑÝ ±›®SŠ9Ú7±Nd&kA6ò†®+]œ^í~“ÁÖ@TkYôŒÈÀçÙ€†ž-#ðg:öB/¶*ö× F4ò±Zkôæ yšüqðtöüšÚÿ•„Nsœk¢§’‹ { oÜ”†ŽqÓï ºÃ>çÚ_g÷úì„ÿÛ"0°ÏhöçÜÔÐÜxQdÓÉ(=1µHчmIôW ¦«ÄÿáZN¨í-´©Æ$ìždÖŘ(Và(ê4?—½Lá%5´y S¼°Ù¹H°Ü倆¾|Š`£aÑ ýƒ®°ú&´©Ðæ˜@CSW.J„bDüðÕüo%®kéÿ¡÷_7Ô¡yf“¾ÃÄZyƒ—‘2ùop¤¨[ó“QÔq³úée÷=Ëq2¡çÁM_؆7¸+ úرèiÕ“ AlªLÑNùIªFòšŸf‘¼õíO‹ókOFS%#Ýb“ g†5khff-Œ9»ihS šÅyÕHûš_!sº¨ãt…‡ÏŽ�4ôÙ3ÿ7D >ÚpavîbjYSS’¶æÇ6úES‚{G¼7R#n„B+{'ÓÛ¥ çÚé2jf;x/`Ù»8Ô»/x¥ˆÃ­ihº°/~<5ê"¿˜ �ÐÐ( `  Ïƒ9_ô4h|çt¿†^ƒÕm¬¶V<ÿù5@,Óã¿íÔj†>¤TjSƒñè“Qa°ÿ Ü+ïKžCÓñ³Þò 4Ø™\LI ¡“@aØ­ ´Æí[�®Ö²ÉoÝq%g*B:òYGÒz+]ó¢"Sæq°ÜÖ cŽBÀÛ&WÔHш)¦‚¢y]M¹‚â<4Òì�&f ¡›¡ÃÄk"`j¾5ÔÚ8 bƒYú ÿG‹jYÌߢp¸bLm]”wMÂqŽzœ‘’"Ì6¬Ò0¥[ŒŸ¢ü-zîÕO ›OZrzƒg^!N>iÔÅÀ€S � }Š4ÁÉN=ej!ˆã/áqÅOòš#Hº™+i¯7Óë=h•ìikisd~z[é@C·á†YÁõvÕº íQ.½N &^A¥€†ž! ða¦ÕÐB‹vüœy›×ÐtØ\<ߪR�AFÛä¯Páú¤jl õkhº>ë¬Í€¾b „µN°×Šût~|›y7§yÞç Þ^hèkçÑU#à‰³Q ²Ú!50£ZF*³AC{² !œ~ù\ê4ø“1ÍÙˆÛ¨Ð`g;âëÃ|ÝŽ†^/5;ÿg»„Â2ˆ€†F…�G˜]0ßü¶F“<!ÿø]ð«pÜ”>å¥@ÚŽ=†Èß!FâLõŸCÅm뺂ý!Är0I#ñ°‹C¯špÃ5ç:„‘Ý€†Þ j,t&ˆÊgãt¡¡½SœXe’þ^S"þä/?%%M±20YC44N×δç»}-Öv¿†ŽË2i¿;ÐM ܼ›ø£@ÀB�ul&<ÑÚ;ÅáÎëÿ±§¡õWQ4TO|V—4dgH3îÔÐ[à–DÃŽB ˜ôŒÆÇ\XC•5¬ z€†îAs¯ŒÀ©7 SCÓ±±PÀ±Ê¤ãg~½›†&l;õn0}}+£ZtŽô¬Z;E95¶0`mÒHV#4ô$©„@ ƒ�4t%Œ¹9&Ô@Zàò¬xTfç^ E.Fòw·¸'!))Š•W´S°…†^áÝ·" p æ…kp5+\-^ªyÛœì-–×C�úz9ED˜GCk ˜9%Ín®’×UÌYy0�÷zI‰œ¶®ŸA¸èéä¸ýÇ€fôVJ^M04tsR0l�4ô¨Âæ8üÑaE…ç©aqXµÚ ¤žÔÅHÖkÅqf|á|¤™åòÖ0òt䝯3û út�‡¯�4ôµó‹èÚ8üÑñf£ :k0ž4´wHVlØíàŽ›IQT™Œ¥í@ ]å_:S–!~=8 hè£Çºç@à¨sD¯õÆ}tõVœk IwÆ þÂzÅDÃE¯ Ð Mα]§ôÒ¼æ˜ô: †Ý€†Þ j,*¨=¾òNÍãsè* ½ŠÎжÊ/zV+^xÌxO°˜»3æÞô6là4ôΉÃr@ ˆ�4t" �Ç  ¯bAü' ÍSU É{9.¬¡ù¡ ùÉ4ô1{àB«êë´ä hè •B¹ÐÐI$¸ú¤ÊÓÐÁqr,»WYLÓµ|œüvŽQçÐúcòÀ¯Wí7QþS& 4ôM ‚=ÐЧHœ¼]H׿¡ù˜°¨¡ù¬>iδísCzì¹–æÁÕËácé“"°†»N /Ü»!� ½ÔXt!¨áµq¶ÝËAZ<1ÿœ­Coª¡ùÕ…þ >8¼ïJ3&ßÞ†õ¢·?Ÿ…ûŽn£‚å@CO‘8b¼¾H¯{·däÏ¡¡¡½Ë.¦éyíͬ¨p ”nÕe44êLˆ�4ô„IK@àúezϼÑ"s#/?¾­=‡žê(z‹sèør…_«@Fc£v"ìn¾Í«n%ÊØìtÓ�X€†F%�IðŽ– -nQjS™ çù°X\ q,säÏÕ3¿û|ÒJ‚[S"P,×àÃ%ó »ÈSÂ�§€À‰€†>qòàúµ(Þ1Yüx÷ÚšßÇ"NÓ{ £¨¡× B÷€Œ¹âr×Ä+³Ú×6�!� ½°0 ºmRvtФƒ{9ô,ýÑpñü¬+òôäc5´y˜öoâ&ò öõ[ñ-€†Þ]Ø­Ì ¡ƒ†‹  5îŠyÜ}UPaèñÐÌ9ô:C_]4/Љ·†@qÕjå"c܈ì€�4ô c Ђ@|ÀèÁ¦žk¸—c•†¤ƒÿ„aQÄW¼‚�� éIDAT´Ä\3çp ]ã,Æg$÷Ní=¸ÅEvF�zgÀ±È" ¥ëÝWР¡I‹Ç`“ÜÆ 54‡%‹²—?‡n^o¼†6÷šÇ 1cÜ8æl�4ô¨Â&†@ñ€98|ªÒк›¿>1ÏY4ô°"ƒ¡}Hjhú8Èo2ÃzYeßб¸ÐЗJ'‚¹<¢Az§ÅÔ}M@V#Bƒjq\|åØŸuÛSCC—\~gí`­À­¿[ X�hhÔ�8浆¡iICÏŽKöqÜGC›°ï)–»µš¸vü•°B,@`r ¡'OÜOЧÂtØl~ó/ÐÐz|¬Å…Zá§‘Etôg¿àЖgˆÛà4ÔgÔk`…(€Àü@CÏŸ#xäÔƒßDᔚ­7Öʱ8ɹ¬§¡—Zéѱ€>öÞlƒ ÐPœ S.�B�§@�úi‚“·Ž@ñ& º+ƒjÐÐúw½Ü΂†Þp,7ZA\;~ˆ“0€@hè$PFÀ»—C» Üàžõ÷m{ ½’9ž?¸8°ühØY S΀|A�ú"‰D—G sEϘsukí-½Òˆi6<ù"D€=4TfÔ1�* ¡«àÂ` p0mgÌÂéÕoÏg9~¦@ ½·åÉ›x:|ÚÂǬíh«É¶YÛEË@�p ¡Q@à"ˆ»‚/ÀiõLƒÏÒ³·ÐÐÊÙ S†Ñ¶³ÚfM �œD�ú‚IEH·‰@³†>ãý¾c5ôªžOw!q›u~Ò¨ÛÔpÛ¬“B·À逆>]Êà0p2:¸3a5‘—ÝSnÆ%׫NâVeƒ�!Ð,…›'| �v@�z±Ø äy*5fhèó^HìTRXfmR¸mÖa�ÐÐ)˜0œâ}½âÈöt÷rÏ¡WeœLÙI/$’ÑaØáäKQ¸Ú<ñðá�¸ ¡o$Ñ<C@hèÓÝ <VCë£hhì–4—SóÄÎÃ�ÐÐ( p[˜§ÔÅ£ë©0ÚBCŸîBbªŒÀ™�f)Ü<é�@` ¡÷Á«�ãHÞ-}¼£%†kèuÁs]H”@ÂûS Уƒ{æN<œ�WG�úêF|@àËüú„§-Ä=*È<8Ü3÷ðÀá�¸ ¡o!ˈœõgìÌÌe4ôz®ŒÄè¬ÀÎ鎥À � }#‰F˜·ŽÀe~}"â-H[/ú£ãï©Àž¹GÇõÀ­ � }+™Fœ@à÷r@C£’Ï‚@î™{|à'8;ÐÐgÏ üY®ñBhèl¾1îP:EpçôCCÇâ@àV€†¾•L#N °"pö_ŸÈkè5Xä‚@gíuN?$d, n hè[Ë8âçF�úÜù» ïûp¿…Û@Q#€†>}¬ €@-Ðеˆaün üz·¬a! ÐŒ�4t3t˜€À@C�:–,!0üËÐÐ%Èñ>8hèãs�€�È#� Ç #wC`ìÞ@@ï–8,z€†îAs�Ø¢¶ÐŠSv �‹]! ßûäÉòè)¼ž¹W1I€†ž41p �@Q[@C£löG�ẕ"˜hè²�€�H!Ц¡‹³RkcðÀ½¨ pƒ@Cß`Ò28+E5Ì ÿš×YQƒßÛ#0¶ØŠu¾}@X�2ÐÐeŒ0�Iˆµ…øe±±Gƒ“ �7fF`ÔoÛACÏœeøhh�§AÀÓúpø-ª§ÁŽžhèóçÜÐÐ7‘f ®@ ¡×C ŸD€†¾FÆo0 èL:B>)ÐÐ'MÜ·ˆ€)/<¹Œ{9n±DÎ34ôùsˆnhè[É4âgG yÍ¢IFºQõìÂÿù€†ž?Gð¬@C£€�8¶Žœ¡žÏ‘]xù¶·¡VQ@à\@CŸ+_ðÜ.±†Æ‘óíVÆù#ûÓxçÇ�s � }Ž<ÁK �ŠŸqãErRpïþI·ohè/�„Î�ôñ9ò/ëÀoÈÔc†@`  ¡§Hœ�@ÀC�s£6®�4ôµó‹è.Œ�4ô…“‹Ð€ÀÀÇÜWÈ"b@‘£@€À€†>cÖà3¸pDw+™¾í8ñaËmçÑŸhè³f~[@�ú²ŒWpÓ?*œ hèså Þ›C�sß\Ê0�@à @CŸ!KðÜ0ø˜û†“Ð��ó"� =onà�„�>æF1� �€ÀT@CO•8€��@�� p ¡O$¸€��@�� 0ÐÐS¥Î� �€��@�œ�hè$ . �€��@�L…�4ôTé€3@�� �€��'@�úI‚‹@�� �€��S!� =U:à �@�� �€À €†>A’à"�@�� �€ÀT@CO•8€��@�� p ¡O$¸€��@�� 0ÐÐS¥Î� �€��@�œ�hè$ . �€��@�L…�4ôTé€3@�� �€��'@�úI‚‹@�� �€��S!� =U:à �@�� �€À €†>A’à"�@�� �€ÀT@CO•8€��@�� p ¡O$¸€��@�� 0ÐÐS¥Î� �€��@�œ�hè$ . �€��@�L…�4ôTé€3@�� �€��'@�úI‚‹@�� �€��S!� =U:à �@�� �€À €†>A’à"�@�� �€ÀT@CO•8€��@�� p ¡O$¸€��@�� 0ÐÐS¥Î� �€��@�œ�hè$ . �€��@�L…�4ôTé€3@�� �€��'@�úI‚‹@�� �€��S!PÐÐËÛx� �€��@�� #ðþo|Ç“õß{ßû^€€��@�� �€@hh½ �€��@��: ¡ëð*^”`��@�� �€À倆††@�� �€��u@C×áuù‹*€��@�� PDà™†^žá€��@�� �€@§¿Ëÿ@�� �€��@ ÀÿÞø”=v•Z����IEND®B`‚�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/vignettes/biotap_sim_properties.png���������������������������������������������������������0000644�0001762�0000144�00000257012�13277247010�020746� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR����£���Xþ×Û��¡iCCPICC Profile��xÚíšWPT]×ç×9én &§&çœA@2’…& ’“„¶IŠ$Á@PD0¢ŠŠ"`�ŒEDQ3(QÅ’ú»Ðçy§æ›™›™»q]ìZõ_{¯PuªÎ¯jo�¥#ÁLf, �qñI,w;Kº¯ð �Ð@%84‘iáææÿ[›{�À€Z0“ûÂQ5µW2àeRЯeÿgãaùøú n�@‹üí‡�-ä·¿�h©IÌ$�d�ÐB£‚Ã�J�Pe1Ü­�‡�DJ$ÃÝ €ã%�‘Âp·à™� R‚ƒY‘�Âß�€ Býí‡Dˆh�=%42 @Ä �Ï@À›……'†È×�@XXbh€�µŒ‹KPr�ÅP&+ @) �d}|ýè¿ÇÚh  ·€ÿð-î3@ÃN�QÕÿhJ§„3�…ÿ£Í¸�ˆÀãÄm��@(–�¸·löŒ<�¡`e?›½t’Í^©À ´Å†&³R~ŸÇ�à€Ü@a�P5Ð0µ`à ð…@…(ˆ¤B:l‡]PÅpÊ jà,ÔC4à h‡.x�}ð ^üƒð ~‚ „‚ð"Bˆ"‡¨ Zˆ!b†Ø Žˆ;â‹!H’Œ¤#¹HR‚Eª3HÒ‚´!ÝHòA¦ïÈ"Š¢d”†Š¡r¨:j€®EPt2Ñ­h.º=ŒV¡uèô6Úƒ>E‡Ñè,ÊÆ0ü:Fc€±Ä8c|1á&&“‡9€©ÄœÇ´bîbž`Þb>a°X,V«Š5ÂÚbØ`l6[€=‚=½ŒíÀöc‡±_°Ë82N§ˆ3ÀÙá¼pá¸$Ü\)®w ׉Àãfð< /‹×ÃÛà½ð‘ø-ø||¾ÿ?‚ÿAÀø #‚!À$äήF ³D"Q”¨A´$zcˆ™Äâiâ5â#â8qžƒÂ!Å¡ÏáÈÄ‘ÌQÀQÉq…ãÇljB’&‘\Iá¤tR é,©ô‚ô…Œ#‹“uÉŽäPò6r)¹ŽÜI$ÏP(YŠ)Å‹OÙM©¢\£ P>sâ9éœÆœ ÎxÎ<Γœ78_p~ç¢p)pYrpmá*åºÈÕÃõžå–à6æöâfqq×qwsOPªÕ„êCM¡–R©¨Ó<$E[ž0ž\ž*ž6žažU^qÞ5¼þ¼i¼e¼­¼¯xñ óñùò¥ñ•ñ]çä[¦‰ÓÌhiÛi'iwhïø üJüŽüqüÅüMüÏøçDL‚rjz¾ò ê ú fžìü(Ä-¤+ä+”!T-Ô-ôY˜OØP8Px‡ð9á>á9q+‘‘b‘f‘·¢xQ5Q†hºhµèÑ1Q1+±X±b7ÅÞ‹s‰ˆ‰ˆ_#—Дð“Ø!Q/ñR#©&é#™+Y/ùŠŽ¥kÒýé»é—èo¥HRR¡Rû¤nHMIóK[J3¥Ë¥{¤däd<d¶Ë\”y#K‘5––=,Û%ûSNVŽ!—+wInLžWÞRž%_-? €QÐUW8¤pOaAQYÑ_q¯â-ÅoJÒJžJ»•Z•¦•%•Ý•w*·(R‘PqWÙ¥rM勪´ª—jêmÕY5%µ@µRµnµuõhõêO5È©õš¢šîšùšíš ZšZ‘ZZ/´¹µíµ³µ[´¿ë(ë„ê×y¦Ë­k¯›£{CwNOS/Fï”Þ°¾ˆ¾§~±þ¼¥A¦A«ÁOC-Ã8Ãs†ïdŒ‚ŒÊ^ 3ŒKŒ›pš8šä›Ü[ƒ_c½&wM‡)bºÖ4Ëô¶éª™™Y¦Ù-³Ussó,ó¶µ°ÖbmÎÚ;8 ;‹<‹KŠ¥‹å~Ë++«cVo­¥¬Ã­ÏXOÛhÚ$Ù´Ø,Û®µÝiÛcÇeçawÔî­½Œ}´ýEûŸëLÖm_wÏËÁÓá˜Ã˜£²ãfÇ'p²w*vzéLwŽrnt^t±tÙãòÌUÂ5ÒµÑuÉÍÆmŸÛ«õ²ëã×·ºcÝ]ÝËÜßyhy¤{t3hŒ ÆÆ/O[ÏÏa/U¯4¯{Þ4ïïïU'Ÿ2Ÿ)_Cß]¾Ïüdý’ü:ýùüCý›6`6xl¨Þ0`p0à} A`~àëª37öI%Ý Ž ¾ÂÒJ ½F ÛÖŽ ÷ ¿ð¸‰ô‹lˆÂGmˆjŠæˆÞ}5†3&,æÆ&¾M›6uÆŠÆ&Æ>ˆ“‰K{¯¿;~$Á8¡4á3ÓŽYÅ\Úìµ¹EfE°ÚÅ·$$i$&M&[%W&/§ø¦\MåKe¦>Ú¢²%ËäV›­ÕihZPÚímÛ2¶ ¥¯I?–¾”áŸq=S43=s(Ë4ëD;;(»c»ÌöÛ'sÖåÔårå2svèï8ºcygÐÎÎ] » w}ÝÍØÝ’'ž·=ï}¾S~c@AzÁX¡}aýÚžm{ÆöÚï½X$X”YônŸó¾+ÅâÅ;‹¿ì÷Ú»D±dÉbiXiïƒUÉ“Žr8tå0ýpááù#!G5>zºŒ·,³ìÓ1ïcwŽk¯(§”o-Ÿ<áy¢³B«¢²’»2£rºÊ¿êÁIã“çªEª ªkbjO9ºqZýtE-µ6§vöLø™—gÎÞ8§qîd]^ÝÒù„óã¼.<¨7¯¿tQñbyOÃî†åÆÍ“MM—Ö]º}Yÿò…+²WŽ]彚ߌ4omþÞÝ2Úê×úäšãµ;×Í®7ßмqî¦ìÍ·„o•Þæºß†mËj[lOiÿÞ×1ÕÑ9vgã¡»¾wŸwytõßs¹÷°Û¡ûþ}»û]=6=wX=èxhù°½×¢·ý‘壎ÇV;û¬ûºúíú»Ÿ8<y8à2Ð÷Ôãéóg>ÏŸ>{þbêeÜË﯒_-¾ÎÄ æ q •¾~sâ­ìÛsÃZÃÍ#f#wGFÆüÆÆÆcÆL¤½Cß¾ç{|RnòâÃSNSÏ?}üø)ù{ºà³Àçª/ª_Z¾Zíû¶áÛÔ÷äè}3b3çf fïþôø9:—0·:¿gAtáÜ/£_÷}?,mY&.]QZ¹¶ê¸:ÄŽÿËYà/ üe¿,ð—þ²À_øËYà/ üe¿,ð—þ²Àÿ¿,À f���Ј€µ�œ¾�|}�dÌÿmü÷=Êà �(� @ȃ9Âh€w?b°3È*& ·04L*fëíÅyàÆð[ ‚„Nb‡Ç,©‹\EÉáŒàräÖ¦ÒyøxI|XŽŸ À-(#¤/ì$%Z(vI|P’H7’Š•®’™”Ó‘ÏPèQRWiT]V·×دùJ[J'T·ZoÔ@Ôa´Ç¸ÝdÆTÖÌÝ|ïÚ–x+Së›ZÛ—öøuzŽÛN:w¸¼q[Ïå.ãaÄpö òJôÞésÔ÷¼ßMÿ¾ £ß7¢AÔ`zˆV¨Y˜S¸D\䶨=Ñe1•›Šb“âüâmt˜R›ùX‰˜ÄÕ¤¥ä¥”Õ-èVbÏ6‘t™ ùLz–X¶àvÞr.6—½cqçÌ®éÝ“yãùo ^¾Øótïó¢…â˜ý¿J³"‡²>êZvîØB¹É fEeeGÕØÉÅ®SR§­j·œ¹|ökòùÐ eõ=WU›¼.e_>{¥÷êl‹`«Á5ïëa7ÂoFÞŠ¹Ó¶©=¾#±sËì»…]GïÕu·ßÝ3û³Wàõ1ññjßLÿø“þ¶§ Ï*žï±ãeú«”׬ÁÄ!ç7˜7Çß¿Þ=b02=zv,f\k|iâþ»#ï£& >à><˜Êù¨÷ñý§ÃÓ®Ÿ¹?}iûzãÛà™ÎŸÍ >˶l6� €.e0oH†Ãp>!¢ˆ3’‹ÜFuA«ÑLæ9Ö û„›Å ˜¾ÏrÄôÈDò¥‰³+šÛ‰ªÍ#ÌKà]ᛡ}æÿ&0/ȦˆÐEMÄâ›%H^¥¿•æ•q•Í“ëRÀ(®UÊPnV™UÓTÐ8¡ùD«£«»Q/_¿Éà¥á²±„‰ÅšxÓ ³‡æ Ò–öV±ÖE6 ¶½vïì—¨Žt'ugckWg7ßõAî‘ñŒ$Ïm^ÙÞy>E¾üŽùWm¨ ¸xyckPGðƒÐÁ°±ð‘ˆ‡‘MQ‡¢³b6mò޵3Š×JPbÊl¦³$éI²ÉÊ)š©z[ ·ê¦ioÓHWÍPȔΒÌÝ.CÍ¥ì îÄìdïZÚ=Ÿ7_ÀSÈÜó®È}ß­ý²%Ù¥%…>~¤÷èü1±ãkÊ}N0+ò+/W-VÛ×”œ®U8{öü¹éóÊÂêË.ö7b› /E_>r¥§™ÐbÓºãZ× ÌMÓ[Ûn_m›îîdÜÙy÷R×h7ù¾N׃؇[{så=.ìËïßù$k íiÒ3æóØñ/Y¯¶¼ÎÌÚõ&ómòpÜHÄhà˜Ïøú Çwöïm'm>ØNÙtúä6íøYÿ‹Ð—/_Û¿íÿþcíŒì¬ÐO…9ŸùË¿K~+‹l6�  J` ë!öB !DqF’‘Jä è4íÀ11ÍX~lö#.÷ï!ÄØÄb9Ž›$oÒ,¹„¢GäÜÁ¥Å5Î}ˆễçéäÝÁgOã¤=ç/ˆ´’Z~#r]´Ll«¸·„¡¤ ä ½_ê‚ôn™ YC9.¹qù…BÅ�% eªò¬Ê Õµ#ê© Mm-.­)ívúqzú4ý÷͆yF~ÆJÆó&]kš†™i™£æýk+-˜–V<V£Ö6Ù¶ëí¤ì~Ø·¯Ûçàï(âøÂé ³§‹°ËëI·ØõFî8÷“ŒDO/!¯iïÛ>¥¾‘~¦þBþ?6ôœÌÞ¸!È0˜7x:¤;´&,+|C„a$_ä·¨‡Ñ51[79ÅJÇÎÇÝ?’ÉÔbÎmna¥$ª%Ž&•&›'I©Mݾ%r«kÚšmªébÔLŽ,LÖjöÒö_9 ¹ ;ævþص'œï\Sx}Ï÷"…}¡ÅûKEø,?4zDáh|Ù•c¿ÊµNTäW^®®&Ôh <]R{ï,æœM]Ñù7õZ÷6|h²½tæ ùjRópëúk]7Ìn¶Ü6n»ÕaÝùè®g×Hw\÷ƒÖ^÷Gúrž¨ ||ÖöâÞkÒÐÞᬱ¹I×ÏBs6à÷}:��^àH€÷ �C ˜@‰@àÆ À0dqñ€H´üûÿЀT¸Kˆ!ÂBÎ#¨8Ê@ Ð6t£‰Ù„9ÃJb°Ç°ƒ8Qœîî ^‚¯Á ¨X„Â*ÑžXD|Ê!ÂÂQÇ1K2'’^’È©änŠ(%r—SŒ3…³ŸKƒ«ˆë·w U’šGå æéç5ã­ãæ+à[¥±hùÃùG‚†C? ¥£Â%"ò"7D=E¿‹‰«‹÷K$KŠIÞ¡ÇI‰IÝ—N“Q—™=&ç-Ï+ß§P¢è¥$¢4¬|Fe³ª¹·Ú²úOïšSZcÚotžëöêuè_3h4<cTa|Ädߚݦ9fYæykYÔY¶Y½´ž³å³Ó´g¬Ks¨r¼ïôÓEÊÕÕ-{}“ûÆ.Og/A¯IïŸBß? Å ´�\�;D–1 ;ÞIŠrŠÞÓºi0v1^,a-3bs1ëVâl²bÊÆÔŠ-£i ÛÒoeR²²[sxrw,ìÚ•Ç—_Uh´§¯(tßâþý¥²šÙ~z4°lòxBù|Å*¯j‰šéÓmgªÎåß\ï×`ߤsYâ »y¼µýúñ[âíöwÜîiÞÿúððc¥þóOŸW½’¬~»nTgBÒè#ßôÕ¯üß føg¯ÏiÌg,\øU»X¶ä±Ì¹|fEaåôªÜj;;ˆÍ�;8¯aÄ)Fî£jŒ²Ðs膎 ÀüƊb7`˱#8Y\$®÷o€ÏÀwÈ¡œ0IÔ!f»9x88ÎrÌ‘lHIïÉFä"ò8Řr€ò…Ó‘ó™+žë)÷îSTjõO(Ï Þu¼×øÔùNÑÄiGøø  ” Ê 6™ õ ‡ ¯Š”‰‰Še‰ËŠ?’H“T”|E/”²š“n‰•U”ý W'« £°¢Ø¥´O9PEE…­Ú¯v]ý’F£æ­ZíJÝ2½ý½» ·m3N1a®ÙdmmÎ\›mQdYiuźÏfÚo¯°ÎÉåxÔ©Óù›«„›ëú\÷z Œ,O†—ª7ÙûƒOo£_…醂€ÂÀý+‚®„,„Ɇ{Dì‰ìŽÆÅhm²‹õ‹ŠÏJ(e^Ø|Ÿõ)‰7Ù(%$µtK×ÖÕmé)W2ç²Í¶ïÎéÛAÝ鲫xw_>µÀ«ðäžÏEûòŠGJôJ˜=äw¸ã¨ZÙ‰ã|å{+x*ëOzÖ`NµÖ¦žµ¨ã>?QßÜPÒuÙò*wóhkýõä›n·ÍÛu;5ï*Ý“»/ó@¦Wá±b¿â€Â3…ò¯eߨ o­ŸP|ß8eÿ©÷‹Á·Ìų sôùê…ÕEõ¥5Ë+„•ÞÕ6�œ QDv!oQ=4ÂèbŠ0Ÿ°Øs8 .÷oˆ?AÀ¯ˆöÄ&ŽÝ3¤0Òs²3ùÅœr‹ÓŒó—3×kîMT áÑãyÎÏGà«¡ÙЦøKÌ> V ù Šœ3ç/Ñ!YEÏ•Š‘^/c&«*'!ϧ@VäP"*“T¨ªbjjê^yš-Z“:ºvz‰ú5OpÆF&±kjL‡ÍÅ×úY°|bM³ñ·­´›ZgäPà8è¬ãRèúaý:÷3 šgž7Î'Ëü‹¤;‚’C ¨ዑKÑó›ÅIÇ_`jn¾”h˜Ô’¢“Ú´U#íBºZÆ…,ì›9¶¹­;‘]λæ¨fïy\$²/ºøZ ¡Ôû@íÁùÃöG<ft|Oùh…y奓ªÕµ§äNלQ<ÛP§}¾¹^çbc£jSùež+Û®Ž·8´^¸Nº{³÷¶j[AûÇNû;'ï®Üct×õÀÆÃ³½+ûŽ÷0zZðìù …—i¯îŠ E½©}ûfDb4z¬yÿÎ÷}Õäø”äGO™Ó'?_þÒúµñÛ‰ïy?g4f¾Îžúéóó×\Ù¼îüÍÛ…Ç¿Ì~_YÌ_]Ò_*\YÖ[ÎX¾¼üiEzÅweÿJ÷ {Õ`•¹zvuŒ-Êf°÷²»Øl€ßo°��€d•›À¢;YYÃÿ[‹‹Mþ§/�Pâc]œ�@��>„[;€�¬2cÝœ~ïADÂã==þøªñ!.®|³–­ûﳈ3ÉÒ�„�f’ãž™eå��ä@x¢Í?y*c‚Ü�€ �ib%»{€,�Ò–˜âa�T�d"-ŠáýgÏlX¸õE#¢m×ýñy£“Ö1�€€JoJptÿ] ÕGˆ…pH„C<¨XõŸU " Xá›à=° !b!X@ÿ³Ïê¿)¶ ,ˆ„ðÿ)#B!’ÿ­ùúŸ Ñ ÿêÁb,‡ÄÑ9ÿ©ð?æ‹…`iÖiNi.ÿÇÊcµ±zXK¬)Ö kt¬�VÔ°ºXC¬Ök‚ÕÃ-L� "ÿéqct+®)"åHÂVc¯¨?3„ü;L� ¢ÿ—ýéýÑtóô¿Âï7��x*Àñ��wÒ/þ·o-)|K�€Us++:2*‰nÁdƆ«Ò×Ňª«Òµ5µ4á¿� eê\¼Â}a���bKGD�ÿ�ÿ�ÿ ½§“��� pHYs�� �� �šœ���tIMEÚ3�µŸŸ�� �IDATxÚìwxÕúÇ?Û“lz'„ˆ”Pô‚ņH±€‚Š€xí¨\ z-Hð^ ä'ˆ(\Á\Šb Å‚Ý 6DDJ€@HÏî&ÙÍîÌïͬ»›­É&=Ÿçá ;õ÷¼óž9ß9çŒJ­‰âŒî]¹âŠË{ 6tG‡§#@ @ åû‹zÿ¾é‡ïö¾¿UÏž½z=òÈ?9묞SêêêÆI’$<$@  $Ôj5:N¥V«Ñ:ø»nݺÊ555Â3@ @ ÂB’$ìv»¬ÑhTÚ‹.ºP®««^@ @Ðh$I’µ™™"!Ë2v»«ÕŠ©¤„ƒ›·PþË/ØkkÐè£H>£í_J\j*ƒ­V‹J¥ 阵%ÅX>üºÝ?¢®ïM!EG£ëÞã°aD¥¦…}ÌÒªb¶îÛÌÞ¢_¨uÔ Ëm ]ÓºsQî`RâC;¦@ @ ‚ÐQ}óÍ7r  êêꨩ©áÈWßð늕ÄÅIÍhC|»,TT9JqÑqÌf3]n¸ìóúN§ zLË7Ÿcýï2b’“IÌÎ&ºm{T*ÕGRyä–ÒR coÅØÿ‚¹íÀW¬Ùõ:ÆÄXÒ2ÓIOÊÀ.98QvŒ’¢bª«jsöô9ý¼ Çà¯@Éï?SDgtL=)ç7•”“š„æOìãê’ßÙ[d ÇÙ‘¹N«‰rGI1"~@кЛèÑjµräë¯Ù·ìUÚGéž’F§¡CH»j88¿ý.ûÞûÝÕµì[ö ¨dr @£Ñ<¦ùÛ/W. «­‘ìñ$^p1F¡R©©þê*>_ÏáJ(^¹�³J…úÜ ƒsÛï_ñßï–—GÎé\Úù2æ£Újfã/ïðù¡O(,(aÅöe A¿Îç<¦@ Z¼)Æ//ä£bˆ0ÄsF¿Á\Ú¿#àÈ'/óÜžN̸û¶­GY1ç%öEG;�kýÿkÊ`н“9¿­áOéEGù÷ügÁFª¢ÿXVSfàÊî¡wª¦Ï?™yó~›ÂƯ®!Žj>á~êz3w<­Ùm-ÿþe®¸[ͦ¯n"6@\´¤MÍÁá3¹ë¹ËØôÕ˜�ׯrð.»©˜µŸO¦­x”Á©$2˜JJ(X±†.*53ÛiSj"î×}h¿þ$‰ä½ûè^f"É\ÇN­š+ÖÔ¥ QÙÙ~YSRŒêçhÓÁÊi]4DeØÐÛ Qû Y¥Fg?JbF-†uèôVŽ¿ó5»•ÝÎï1K*‹y{çJb³bHé…1NC¹tœ½e?Rk¯¦J]J\¢ž4] ÞÞ¹’Žé]ÈŽj'¢@ Z *Lß¿ÍFÕõÜy6,^üo¯~Ÿç¬æ‹Û¢rìãóדpÜ)°ö’£ÈêÒ; @Ñ· Xým?îœÔÏ)6$BšNÊ•|±a3Ñý®¢w¦¾YNQ[r€×6¾M—A71ôŒ�¬‰µ8êj‘¤è>O> H‰E+9ýjúv#ߦÞÈ’Ô¼öÚ~ç©»ÿÃ}¯Jœ$áô<ânS󿱑ýq½|Vf€eᕜ]“ÐH¾c·â÷oÙº_ËàÁ½ ¥s‚ñ̘Ýÿ\®{õB¾¸ù,‘:@ÐzD‡Ãpƒã[¿ ¹®Ž~hS]Cœù8*iTT€$µg†ƒÅèëèc´TªëœûŒ¹Îï1ë¾zŸ¸$;{'¡C'£‘ PŸø Pã êDШ“è«ÅüÓWïã¸æv¿Çüæ·ÏÐè5´ë‘HL¬µAæü`¶a—ìTéŠ1$jI‰IÀÅáÒ ¾ùí3F¦ŽQ ­¨ ßåc™tm.Sn¼œÏ¿‰ÂªZ9W½ÀÞ1u+ÃP«HåÊ “Ð"#3w³ºâîœp z@¥‚šÊr,uŽ–¿D©œ¥ÏÌçªå#8ÛÑ<ç—õÎã&OæšNa@¥Ra3•Seýãœh4*Ô2 K8½~/7Ú*9^Vݬöî^»€Ï˜Ìœîzlæ@“P{ÙÔ¬ÔñËÃÿâÉ^á’3–…Ù’ ²„Êá¨÷³÷Δå¿ü—gž„®çŸM§´‡YÅàGg1mÄ?øì²*º3 •ˆ ÁÞâÄìù•Ó*²lq* Î‡O€ÉâÜÀlA%ËīԨ$èéPqhÏÞ€o‡˾!»k<Qé)èâÐÆÆ Ž’AsÑÆ;ô h¢u¨£¢8­«š£eß"I·ú=æÑÚCduK%5#ƒAN«A§qP­*Æ¡‘‰Ö¨Ñ:â“CÆØ©ë¦åhñ¡“óK þZàÈ�–JNœ(Ò@¶#I{ÖNåñ]ÝX8esDMo¾ð, ×ï Ãð{˜q÷5äD×RV\ë:jEuPGQq1Qng+ýåCþoîS|¹ßù{ð-OpïßÏ#(øèyžÝÓ•;ú3ñ¡Å� ¸a&Ü~‰nû?1ñ)vüí?~ ¹qÎÆ^áwë™;%ß¹xhéû ;­œ—&ÜÈoÀÜ™˜»¯;‹ßÏ#ê«çyvOGn9ó“f¾Ìécï ñ¿1pѳ ïç<€m?Ïßý™Ìãrã.¿iKߟB‡h^”œÓ-Õ™J).Ö6Xïnw‡Á#Hù$#IÖM¹—ígßË”‹£|Ú› {·²èΙl®?æµ-àŽa=лl]Hʸ!ÎyŠõÜûŸ\CœG+¹M/ìà¦þºÊÊï=ÏMŸ¤ðÆœ1¤(åö㛌|ö8¯¾p+Ÿ(6 ê༆?ä‰IÊ5 çŒê#”µ¿–é·Ÿ‡¾þü™wŽ¡î݇Xü¥³|M¿…n‰õqÓ~^{ê6^þ y žfxö¸€'æÎá–¹ûèõØ«\V÷fƒeÿ”°ü?r,$Zùù›•ÜëO1rã“Û¸mðEtü FqÀ´aK?—IÀºorîå§‹ô!‚SCdˆ?^Bµ–¸$=4`Ð;ÿé´ÎWAÉq`·ƒÍF\6’ƒòãÅï  qY©èRSÐ%Æ Š‰vS£®ðТ¶ÐEGNOœâªK¨ pÌZC5mÚ&’‡^§A¯Q£S©ÑjÔÎ/OHzê$ ›$a3ÔQ×VMQ¥Iˆ @Ъ‘e(/=ÊÁƒ&¶¿·ŒoÍë—vB’쨤öÿz:*IB¢ˆ×/¿‰WÍ’wæÒQû;‹ïŸÀM—›Y¹éF24î <ç±ñêªn·Iô¿ûe¦÷í@ñ—Ï3þÑ©ô¿ð.ÎÑ£–jÙùÆ&¾qϼ¼Š„C3aæLª2wT7lqíħøû3«XØ7š·¼Š;g¤³aî•D; xmJ>º–°udGJöàH7 É)Œxx&Û'Ìä¬ñ1ªk"ɉ"©–o<ÅÎ7®à™%ËéÒ9ž ÿýùïncp—‹Ñ…_¯çýi¼Þ9mU}&qZ _Õ˜\/2øþ;~.7`¯µ•щÎYqØ ?ãÚ‰O1èÞùl¼¶+‡>Z΄ÍN'É’„„ [Ñ.~­Uûµ·öàGŒ¼ó_ôð ïÝЗڟ×sÍÄIün~‘¹£:jj÷ïdñœÜñ¯E,ïІhïa G.q`•$rþvÌ™Æç?_ƈnq€‰O,„ ^¤ƒ^ůŠM’DMÁF®ô4}'<ÃÆzQüù*Æ?¶l—a•$´õç_øÐNN™Ïª»mügüƒ,ýäBž¾ªPÄÒ·±òÊ™¼÷å@Nl~ž[&=DÖ›K8ûÂkýÔ»|Ó­<~Yô‰©Ä;.«=¸Ùùû’Ïähøöiîýv`ƒxÊ¿ö<íÿú¶ÿZr/]RÓˆ‘¤ 1(Ytt ö£V: ½H @ h "C°áúèh -ÄFCL [ÿW¥‚ÚZ0™ÁR Õ5D™-èôZ7*MB,º¤8Tñ±m�½´õo[v°PiõèT4åVˆªxL£!ctqQÑ´j¢4¢Õ:¢4:@¢Æa§ÚaÇ*9°itÔDI˜ v‡ˆ@ h58ÐÅÂޥ˘³t¿ I¢º‡£¾—zæßvð ðèyôL±b•{òàS3X3òq¾Ù7‚+;ź5ðœhg7õ?Èê?–46ÊJªHï~>¹¬¡ZªÅáÐ aþ·?>@ŠÅŒ£çm<ñù¦~»Ê«r9ºk0ˆ :é9\\G·£á±Ï9h¾Œ\­ -ð¿Ý?ðë9YœÑ­r‰j»žì3ºÑ8½[rÚi©µXêÏ5ˆ×¿ø7]µ¬µ.{f4KœÍ®›. wJ)ŸÎ|&,¥£¦–êÔ>Lyl�•'J¨õQ9êE†Oÿ‡o;ûöÑñ—˜’Ñï?F3åÖs‰®¬¥çU÷òÄ—¯3Õ¤øÇyÀD•Œßöþºk0šÇ'^Ll……ÄÞãX5å3ÆÌû€ƒ—u ZvzïùùG¿$jl6,æß×ßÍÿÈå¶D ‡9½?æÂ¿ÖïbXîy8ocÁ>xfn7jëLØäppd×ÇÀh¦Ýy1Ѧj:»'>ùSM q8p8œçýÄÛL», “ÕÆÅ}áuƒ‡ÃAͬ& ìŒíp1IÝú‘ËUò·3rèÑfv ''ÉVƒUÕpÙÎ@åï«w‰¬ÄÓƒ¤XLñT>²'ç ßZÈéÒ‘LKµ-h Æ"‘Úe¬.£Öá@ ˜A«‚½É×v>ëÁÖ q‰ ïÜÀbÊ*¨¬„J3µHèÛeì!P—ƒM£F ƈÒýÑ;œC24VÐhPÉ`ÓÆP—ð˜Y mj͵¢´Zbµ:bµ¢5zd ÆnEo·Rí¨£;r­…6‰mDO@ hUHÔš ïô§Y6:˱ï˜=øï /˜Ä[O]Ž,9·‘$ m‚È¥¦‚ 3@ Õvgݤ7¨<ò»Ò“Aòz›~ø›å,¼/Ÿ¯ëÄ~@…sBHY6Cnra!¥2€š6]sa[ :©Kq°;F~T´ÎÀÙD«$$]î_9‡âq1áý…pÖõ<ûÏ蚢ÇTfÂ8L¥TUÅÔÛg†¾ÃÈ´Rjv-¹×pú²†þ÷;]»ïe)ðÔ•¨²Y ŽÕð¢ó‚™¾n5£só38jÊ8VZÊþm[á’ÇQ•Q T×–c•ÜýSï#IFrØ|ØkÃR¼úGs¼ @m-VC:P…Í!!!c2eŽ—”û´QUÿbÁf­EÒj,:ν÷F¸w9»ïêƒê“' ÷az%Y©«q³I²ph×v¸d8Q%¥TË@m…ë’„Frž¿ÏéQ=QX±�‰²óµ1F�–L¹%.‹rgÔQWSé¼&‡™ªªªúuf¯e¶Àåï«w‰+žŽºâ©Ý9}á­töjJÌ΂·VTb2xïã+>©³KΨ•‚L†*Ak =Ïàıcä¦$Cr"$%ArÄÖ÷d°X * Ðé(./CÓã ì†6dö¢Ü¼“¶DÀ ½t:gE©¶; *Lj3{NOìÊ÷Å_bµµbµzb5ÑDi5hqÓ^–µœ|Ž •‰ �²¥”‚‚4Q§sÃÃ}Ùðä—X†Wß—A’$Õf`/%V:¶ÕPg)ªoœÉ^"ƒÜPd°íãùûò±ç½Ê®[z¡–÷s_Ï«eu½È�`Çîêß×òÛO{A–°IzRÒ€ëxÿÇé8¿S$Ê a¶›!{0/ýx%%»?æáëó¸o]7Þ¿­/õ—€N«qÙ(Ë@E«äêònqdsËí¹ÜýK°ÿm'ôN¯8gƒ;¨ëE[eîŸé4Ñ)–¥ü©~n ›ÙSd@¹^Ìih¯ž”´¾°òŽK}HUÜi-Ò‰VK®9!ÕÕHIѾŸ/2»Ë^öYéØ> °bì6ŒKx·_{ Ë[pû â°Ø½lŠ¡S¯¾ð»8xççÅìýèc£N’Ð*ç·X£©ßÙ¶gƒþáÕßrCwå[2ÕeÇ(µÔ€ V÷¯È^Ë‚”¿Ã—ÈÐ0ž~ùæp 6IÂ^?塞þC¤ƒlîùÚ^â@ 8é"C°áê³Ï±ç7Žè5d§¦@R"Ä'8{ �èô Ñ€FÍQ‹Çé9¨Ïîp‚Üùbj~øãÇ­d¦Ä;ÅÔg­Õ:Ÿ3õ2Ç[©qè»_ŒÃîÿ˜Îä@õJ™IîbD¯ÒcPëÑ©ôÈÈèÕ•%J‰1DÓ)ñLêjì"  Õà@*JrèˆÊÃ;Yýäÿ€ÛÈÔ;0¹ {ˆ>­×ϼò>9w"ƒ">üÏÓÀµômƒÃöÇ× õ=<†KØ ÔXŽòÃ÷~Û²’N•å82RpÈé°÷I–nLäÚ©Þÿ ÿÞ WüûlŒŽ:⌂ùpÏcY<|Ý�55*&µkÇØòñ6:œÝ¬øTz�ÿ3Ä9ëF›Ó‚/·ï¦çÀ\bõzßö9,ä/Mç«0qI_æ:€£ìW6}[BïAH÷1ßá< ÇàH]4`Cj§uï ,aÅ{§qMïx¾ç^æoÊØ4õe øÙ—½™½‡�sx{ãÙ\wagjÍ¿çmƒÛ“£v`©ßG–d¿Ï]FæÂÞå8Ú¥;…[×ß–ËKW×òH7-V“ÕN›ldõ¹˜ÁOh™ÜÏÈ·ó_á OŸDÕ½ÁóüÊþÎu†qù<yýL¢ŸC· =EG±&Nû 1é°÷¹ÙÛo4íb£Ñkh°ì´@審áË—f³Ê:”§ÿqÑ$ž¨;t^ààþ›‰oMtttÐ}ê(ç—·`üóg9¿Z!ˆ@ N‘Á$Ë$]z GwlÇe Íht ƒ³·Z ;%55êõhûõ¡ÔáØCÀ,«QŸ6Šc‡ßC›KêéÑ€Úm ¨T”«áøa –œQ˜ë¤€Ç”«eúe ggñzÊc-Ûp¨dõº¾ä�‡]¦ì°Sq5çgŽÀV]'z2A«BBk„ß^™Éݯ8—œsÅD–Ý3†[m: #9جIÜ÷Á2˜t+÷ŽwμOçñ,ùà.’¬%T»¥wY6B‚s?W­•Ãí÷]ÁÏ>ÊßÃù7=ÀÄ+¶°hÊÍXç-ç|Ù DõÝÃŒŸïÜeàÄçyè‚dÊJªQ'^Àæ×çÑg0áú ¸”k;«’Ø=w†ó‹�¯eɘž8ˆÊᦉ¹gá#|¶°=Oÿ÷YRµi {ÙXz1XÄx.騡Öd ¶ú�‹}ȳõ'ÅÇ@|¥'ë3óxÕmùY·æóäÍ·3âQ&??•÷€Žc'2¾Ï"–GkQ;8”/|Ô7È}Ù{FÛËyk¾™‘“f]ý¥÷¹íß,½­ •'*À!ctü¿tpè8Êm<uçR.^óONÓŽJNr3,}”]EBeµs8„—MªôKÙüºžÅKß`Ãùü2.}ãV>ŒÒaw8œßÙ3EVæå°D1á³µf\ÇŒ{?p™tߢմ‹ÕÑëºÇà½9Ü7þ n~f9WwŽo°lÔYʪŠ9hæjüËAâÉÐá|nëüs&ßL`ùÛ—ݧøïò:ײ®›Žº*«H@ h¨Þzë-9àãž$Oô‰èþ…´HNŒ'ƨ¨¶ÖRVUEɃX»æR“žNUUjµ:è1u0–}DZÇx’3㈎ÕJE­¥Ž²BŪ0'^B]âé!³’b~ªÜDzR É)ñc¢@–1×ÔRZZÅñÒjz& %‰´ ÇAK£%­]6F·†³d·RYRDe­DLZ6é16Ž:PG%•ÍdÁŽ–ø8EǨ¨õcÓÛ‘eåHs?'j3³ˆ–ª±bĨµa—e¬VÐÔ•³{ãL&|z_¼p5ZKV­£¦–cÇÊ]Ç0ħ‘‘…¹Ê‚Vk &FCiÁLÄ’“Š£º«âãôTÖÛ¥&©M[¢¬è±—Ç‘”MšÛu¹°²øúPúÏטs^\}ƒ´±d§FQväU>:äicÓÉNiXWÖ–Rp¼†ä6m08¬Xí­Á®1 “,9RŒ-é9ÙDYK)(2ù´·ÊÆäLÒŒ*ª,VЉÕÖpüX 6PÇÑ.'kÉN˜ý÷4$&²ë™<êx”7îêƒPSÉI‹ÅQ]Êá&W\xÚä@ŸAÛ„4j¨-ÙÎãCîÄúÏÿ0ùÜTç÷ÞÐÅÒ&3¬UXíZŒñ1®íõñéd¡Ê {9ÅUu>—ù-©>ŽUÕ®˜‹MÏ"ΠAƒ›¥ »w<icÉj›D­É‚Ö ¦üX …_=á?ͻɻq*W½¶‰Ëâ-®Øऋ o¾ùfÀjI®ORt4Ö]ßc¨®!&6T*,3¶¨( gŸEyMk’$•JÒ1QTýú ÑÒaã퀊J“–jU;â»\L…¥6ìcŒì.ÞN¥ã ­YG] ºÓ8#í,•–Ž)‚S¢*C«Ó¢B¦®.ü!p­5vêì2¨´è´`¯³s쳇ùÇüKYþæ¥Äêt¨e‰:ŸÃöTètZdYÂîµ^£Õ¢VáÓ.çyýÓÉ¡-óÈ{á+^ذ‰t«)¢^ d›?yÙ«Ò ÓªA®÷_cD¥,ØøòNº í1ÔÝj~cÊø‡I<Š)6¾^µC\ÌÖ?B²Í~ù«dìuvdÏèÔx.÷µ,@ù{ljF%ãA«Ó¡òOõÇ’ìØ2ÇÄ`MÁ7|Qw.7þMÇñ*›H@ h=Ofk×® úT IjµNGBB±±±ètõ“lÕÕa6›©¬¬¤®®ÎµíŸå˜@ øk¢sT°·XOûÌNŽíÀTt”9›³rÔüiÛ‘ª2ÚÄPVXB]ÈÚ„ë‘_Ùùë!*«l$vèÉŃúa(;D…í¯ƒÚøtÒõ K,âfAëªÚW¯^Ò«Y–]oý½çÌŽ-‡Õ3àT9¦@ þzhcIŠrPVf:IꩈILƨ¶QRfBô†÷(â““0FéP«UHu5T”–ñg›ËùäÇ @ x‚Yµj•xn@ @ÐdT#GŽ"ƒ@ @ ‚&£’•@ @ š€˜ùP @ AD"ƒ@ @ ‚ˆ D@ @ ¡ÙD†W^y…%K–œN˜6m›7oÑ hõœJ÷•ð¿@ @ð×#d‘᪫®B¥Ryü3®õcǎ媫®rýÞ¸q#ï½÷^‹_P0;ý5vîÜé÷Zš‹{ÜÜ\ŸëÖ®]KFF‡£Åìiªß ô—»Ú·oß ÞÜÿ]zé¥=ßɸ¯Üï)µZMNNä7Þ8eÊÉ_|æçç£ÑhZµÿ@ ‚S m8ŸsÎ9¼øâ‹(ê?4ŠáÇSWW×*.*¡à}-6l`ÿþýLš4)¢vŽ;–矞ï¾ûŽ^½z5F…F£iU¾=Ui®2\¿~=6› €/¿ü’É“'³nÝ:rrr�ˆÿSøO¹§JKK9pà�¯¾ú*£GfîܹäååÔ2@ §¨ÈOïÞ½}®7n\«¹¨@v†‚÷µ¬_¿ž½{÷F¼qtÞyç‘““êU«<D†êêjÞ{ï=6lØÐê|{ªÒ\eØ£G×ÿOœ8À™gžIçÎÿTþó¾§n¾ùfFÅ#<ÂèÑ£ÉÎÎ>ie @ Z›“áŸÿügÀƃ$IL:•¶mÛÒ¦MæÌ™sR.X’$zè!²²²8ýôÓY¸paÀk™?>k×®eÛ¶môèуɓ'GÌ•JŘ1cX½z5²,»–¿ÿþûÄÆÆrá…úôm _Ž=Úãš6mÚD=øî»ï\ËæÌ™ÃSO=Õb>ë­·¸æškhÓ¦ ½zõâ…^p­»ýöÛ¹ûî»=¶ÿå—_8묳(//G’$ž|òIºtéBBB^x!Û·o÷ØþŽ;î`ÆŒþéÑ£›6mjö2 'î‚]G(ÛxsèÐ!nºé&ÒÒÒhÓ¦GžæÄ`0ŸŸO]]Ë–- ZÎþÊ Ð>'+?„“§”{óí·ß¦W¯^¤¥¥1qâDWï@ @ˆ äðáÃ:tÈïú3fðæ›oòú믳`Áž~úiÞyçf¹(«ÕJaa¡ëŸÕju­›5kK—.eÚ´ilذ]»vqôèQ¿×2bÄÎ?ÿ|:wîÌóÏ?Ï„ "jëØ±c)((૯¾r-s*áË·|™ÍÚµk]Û¾ùæ›üôÓO[.[¶Œ³Ï>»Å‚¬  €Aƒñé§ŸrõÕWsÿý÷c2™�èÓ§Ë–-£¼¼ÜË>r�� �IDATµýÒ¥KiÓ¦ IIIÌš5‹§Ÿ~š;-[¶Ð¶m[Î?ÿ|8àÚþÀ Êð§Ÿ~¢²²²EÊ0B¹ŽP¶ñæé§Ÿ¦¸¸˜¯¿þš7ß|“þýû·Ø5uéÒ…ììl~ùå— åì¯ íi, ¿üò‹Ç¿¢¢¢&å©Ã‡óÁŸŸÏý÷ßϸqãx饗\‹@ @ð—C‘#FÈFŽuýÛ¼y³ký˜1cä#Føü][[+FùÙgŸu­¿üòËå믿^Ž4#FŒ7n”eY–m6›œ˜˜(?ðÀûdggËO>ù¤ßk™0a‚|ñÅËÍE×®]å{î¹G–eY®®®–F£üñÇ7Ê—ï¿ÿ¾¬Óéd³Ù,˲,·k×N1b„<tèPY–eù‡~ãââd«Õq¿_rÉ%A·«ªª’ù½÷Þ“eY–ËÊÊdƒÁ /^¼ØUFéééòêÕ«e«Õ*FyòäÉ®ýív»'Oœ8ѵlРAòm·Ýæúíp8d@^³fM‹•¡â{@Þ»w¯ÇòP®#ÔkõŽÍÈãÆ“G³]W ²íß¿¿ÏuÞåJøÚ'’× R©d½^ïñO£ÑÈjµ:ä<å+ÏuÖY²Åbq->|¸<räHY @ ø+öÄK—.uý>í´ÓBÚoÿþýX,^{í5×[Áß~û-¤qÜaàÀ®®ò€«G@AAôéÓ§Á>*•ê¤ =cÆŒá…^àÙgŸm0T"\_^tÑE¨T*¶nÝJNN²,sÿý÷»&|÷Ýw¹ì²ËÐëõ-zŸ}öŸ~ú©«ÇAmm-�III >œåË—3aÂÞ{ï=W_}µëZ àQ–çž{.?ýôÓ)#ä…r½Öû￟n¸_~ù…¹sçrÉ%—´èµsÁ-çÆÄFsä…>úÈcY~~>>ø`“òÔi§FLLŒëwŸ>}˜7o’$…=é¬@ @pª–È`49ãŒ3Â>‰Ãá�œ_mpŸ(/!!¡Y.J¥R¡Õ6¼´êêj�RRRZU!Œ;–™3gòé§Ÿ6*®/cbb0`�[¶l!33“+®¸‚sÏ=‡ÃÁöíÛyçw¸ï¾ûZìÚdYfüøñ|óÍ7L˜0ë®»Ž%K–xló÷¿ÿ«®ºŠC‡±lÙ2Æ^¯w s‰õØ>&&Æ5âT ”ëhìµ^sÍ5tîÜ™‡zˆK/½”Ù³g3uêÔ¹®ÒÒR ÈÍÍ ©œ-I¤ò”Z­¦¶¶ö¤ —@ Á)!24–Î;£×ë)--åšk®9i{æ™g’ššÊŽ;4h«qìÍ©J¥jÖ‰ÜrsséÕ«Ë–-cÆ ¬_¿¾I¾2d+V¬ %%…)S¦`00`�+V¬àûï¿çòË/o1ŸïÞ½›•+WòñÇ3pà@ŸŸâ6l©©©Ì;—>ø€;v�ЩS'Ôj5_}õ—]v™kû/¿ü’aÆy4ê àóÏ?oñ2 D(×êµú¢gÏž|ðÁ<úè£äççóÈ#´Èôüü|¢¢¢¸å–[B*gï2eŸ–$RyjÛ¶mtîÜYˆ @ ‚¿$-Ò—×`0pÿý÷³bÅ þûßÿR[[KeeeЙó‹÷Ä………Øl6T*ƒ ⥗^â£>bÛ¶m\}õÕTWW{|ÝÁ›¾}û²sçNŽ?Þl>;v,+W® 8T"T_<˜Ÿ~úÉCL4h‹/æ‚ . 11±Åü®ÓéP©Tüúë¯2mÚ4� ]ûét:ÆŽËÂ… 9ûì³éÙ³'àì9sóÍ7³zõj¾øâ , O>ù$ÅÅÅ_¤èß¿?ß|ó ¿ÿþ;o¾ù&'N<)eèP®#ÔkõfÙ²e:tI’¨©©¡{÷îÍ"0(e[PPÀÇÌĉyúé§yæ™gÈÌÌÄh4-gï2eŸ–¤±yê믿v ÏZ¿~=[·nåÎ;﵋@ à¯I¤&ö 4ñ£2©Z^^žl0d£Ñ(GGGËcÆŒi‘‰ù“O>qM|ؾ}{SSSå·ÞzKÎÎΖŸzê)¿¶—––Êçž{®¬×ëå»îº«Y&Ç(((U*•|÷Ýwõm0_J’$§¦¦ÊÆ s-ûöÛoe@^°`A³MèËï6l'Mš$ 9**Jž:uª|×]wÉÑÑчnÛ¶MäE‹y·¢¢B=z´¬V«å˜˜999Y~ùå—=¶Ù»w¯Ü£G»uë&ÿüóÏ &~l‰2ô7ñc¨×Ê6¾&~Ôjµrbb¢|Î9çÈŸþy³–­Z­–;tè _uÕUòÿþ÷?í‚•³¯2%6šsòÊyóæ¹&~ åÞò•çÎ;ï<yàÀr||¼¬Ñhä»îºK®««3þ@ þ’¨ä@¯ð›»ÝΑ#GÈÎÎö9oBKqäȲ²²Âzë{ìØ1’’’ˆŠŠjQkñe(TVVb0\¾+,,$++˵þ³Ï>cذa;vÌçøêêjJKKÉÎÎöÛ ýĉ¤§§·ê2 å:BÙÆå{FFF«/g_eÊ>­õÞ;v,ÕÕÕ¼óÎ;œ8q‚˜˜˜ój@ %Z\d|qõÕWËòåË…3§ î"ƒ@ @ h¡‰‚@TUUpÏ=÷gN)zõêåú2ˆ@ @ =@ @ Dµp@ @ ‚H }üñÇ…@ @ 4Uii©.!@  Éˆá@ @ "‚@ @ D„"ÃË/¿ìóÿ@ @ =Z€çž{N8A b_ |)Dn>¶ ‚?= &~|ùå—¹å–[ü_ @  ¢'ƒ@ @ ‚ˆ  w‡U«V ¯`̘1 –=÷ÜsÜ{ï½Â—arÆg´*{~þùgQ("ö[/üñGqŸˆ<"¹¡Õç†=zœ2~>•}zªÔ»¾bY ü…E€[o½­V{R ·Ûí,[¶¬UÚã¯d/|š=ûÛßP«On‡I’عs§(/û­Ö—â>yäÏûž?on8U8•}z*Õ»@ˆ X­Vìv;�²,£R©\ÿWðµÌß:•Jås;_ë”ß’$µZ{„/#gÝnoRe>þ|ºwïÎàÁƒ›T™òO\\\³Ý UUUÍV^3gÎ$??Ÿ¼¼<fΜ)bÿÎ#M½O"õÐÈ—±±±Íz~“ÉÔly¤%üÓÚc_É Þy£5Þ‹3fÌ`æÌ™"7´¢Øÿ3̧k×®¥°°¬¬,®»îºVåÓÖ–›$ %Y¸'Z•¦¯ŠVInþ*f•¸òÛáp´Z{¼ñ×uMø2¸=6›ÍµNÙ/kÖ¬¡¬¬Œ»îºËClHNNfôèÑMªÌë€)S¦¸õóæÍ º½"`=z4â啟Ÿïj0(§L™Ò*c¿[·n˜L&—/”÷X;~ü8ôØ®ªªê/“G½O–,Y‚$I¨Õj¿sss¹øâ‹#vŸø{ݱ£éYïÞ¸Ê;œ<òñÇGTŒà’K.i–<r²ò~vv6çõïMAAíÚµãðáÃŒ=’øøxòòòÈËËk•õ{nk­õbvv6GŽi5¹ÁʾkÖ¬irˆ7†t…{?:4l›ëÓwß}—šš�jjjX»v-#FŒðëÓæ­w#!2Îåf@ DÏ´Ú€*nFFF“ +** ¸^£Ñ„lO¸v;w0{¼ Ôu-TÛýÙß[#áË–²G­V‡]3†U«Vñâ‹/°{÷n’““ÉÌÌlÔ÷óòω'üã©§žjШ衇B:¿N§‹HyyÛRTTDFF†ÇÃN¨6µdìkµúôé‹ÑCÛ¶m9zô¨ë!NaàÀ¤¦¦Ð·o_ôz½ßí"ûÍEc}Î}òâ‹/’––P`$‰½{÷úm07å>QX·n£FuààÁ=X­µtìx&Z­–ß~û€Î{P]mæÈ‘ßéС;Z­.ìû¤1y$\Ž?@||¼Ïk×?-kìÉÈÈp‰ íÚµã˯·søðarrr•7Zê^ 7ß¶DnÈÈÈð¨+Û¶mˉ',oéÜŒ²²2Ö¬YöXúHœßýþjŽí#åÓÂÂB×ÿËËË)//çÅ_$))‰èèh®¾úꈔE ŸF꙳±Â‚÷ò@¹Y ‘¡A‚U’„w¢KIIq%—%K–0aÂ׺;ï¼3àq/^쑤JJJü&U¥»W0{¼` 7ʾéé锕•ÝÇŸ=‘ò¥rÞÔÔT�8ʾ}åtê”ÄáÃE´m›MFF:€ËWÁ®?¾lI{T*U£*ÄqãÆ±råJÊÊÊ\C¨%oÜßò{Åé¾î‰'ž ??Ÿ’’RSS=õS§Num3uêTŸþÑh4MŽ}÷uS§NåÑG%%%ŵ¬¤¤„””¸o-±ß®];L¦*2330™L|ýõל{î¹Øl6×ö&“‰öíÛ{ü‹‹óØ&Ry¤11Ýܾ õ>Y´hiiiDEEa6›Ñh4Øl6Ÿõz½Kh¸ôÒK#rŸøëµðÆ/rþù—³iÓ* †h~ýu§‡È°`Á?™4éiÖ¯…œœ\Ž/@¯7—HÿþC‚Þ'Í#¡ øÈ½aãë\¡æ‘“kþìyâ‰'8¯oÁvíÚq^ÿÞDGG{Ük-Q…RG¹ îC=Ü먓‘JKKIII¡´´ÔCx())A¯×»|Ù’¹! .ôV­ZŸqãU‡Fâþ $øÚ>ÒòiVV555”——»„åwyy9‹-r-5jT£mh¬OÅr¸(Ï2¾zß(up°Ü,„È6;êŸ&wè ë.@,Y²¤ÁöÞ•p ‡ªpøðÃý““ÃáÃGèܹ3f±}»LïÞ$IïW°JǺ®#55•Ï>ûŽví2HLŒãœs⨨0aµêY·nŸ}öƒ¡CeãÆ5ºÂ<Uíñ~�òEYYeeeìÞ½Ûçú{î¹§Yo2¥Q¯<Ø–––6xÀU€•í"Y^áÏß=×Ò±‡Ùd"3³ &“‰Ûo¿¡C‡"˲‡YYm1›Ì¤§¥»n”a‘Œµæ¦9}© ƒªª*¬V«ßž ƒ£ÑèñЊЌC‡öø\^]m¢S§ž¬Zµ€²²"t:=*•ÊeOll"[¶¬eéÒ9Lžü ?ýô-jµÎàNfÙvïÞÝ»w“™™Ibbâ)Qù‡âŸüü| n³jÍ[ÄÇÇûl´7gÞ†{wy÷ù#”Fª{cþdÄ"4¸ë dSsæ†pb<99™ôôôUïû+X;÷cc}:jÔ(Ö­[Gyy9ÑÑÑÄÇÇOFFUUU‚ÃÂ… ÉÊÊj’Øp²âÁ[hpá.0œ õ®@ hE"ƒ{W±@ã°"ý ä~.w9=ÊvîË¡  €ÜÜ.TUVðËnݺ«Ø¾]9!ú³Ç›P»Ýù³=>¾-àT~Ÿ~-ýúõc×®]οßï¢_ßþ.Q¦¼¼<à›•HøÒ۞ǻgžYÞ,ö„ZuïÞ½Qñµ{÷n>þøã€½k¾Ô}_1•œœÜ@hPz7¸o©Øå~KNNv l';öM&999˜ÌôdPeßöíÛ;•ÓO§Êl¢Cj{uuu‹ýpÊÖÛ÷ÍéË`÷‰»À`2™ ’$aµZÃBñ¥2<›éÓ—p÷ݳ}v¥½çža·×qå•70xðhŸþmji Á@‰µGy„ÿûßÍkìñ׋AÙ®]»väåå¡×ë=ÞP6w=ʽè.0xçþl¬=î¹<\!Dù«ˆ"Š€Ú¹!!\Á1½ˆB»}$}:jÔ(¶lÙâúíî¯-[¶x………¬X±‚n¸!b>ml½ÛØgs÷8ö•“åf@ D†ÉÅ×\sˆ ÞÉH9—{ÅÈ÷dêª|êǘææv¡¼¼Œn]»q¢ø8¿í•éœë”„X^^ô!ÉÛžHù299™Ž’˜P`صk'K_šÍ9çÜÉ–-O…%’„ãKö�Íj¯ –|MšäK(𷯻ÈÈ._“…ùk¼øŠµPJû”‡aïI‘”ó56ö***ü>ŒÏž=›iÓ¦5XŠÐÐ\±¯R©HJJªªÈÈp Ê߯¿þš¾}ûº„ˆ¬¬¶T™ªè˜–F•ÉÌ?þq[¶laÈ!TTT49ö•íœ9s̺ïîÏÆÆ~¸¾ôëá Á„__j ç>Ù±Ã9Q£‚ûÿ!ÐX]_s1¨B¾OüMÔæÞ½:¹¹¹×ÇÇǻάÛ|(±öðódÉž|òÉF5#‘÷>ì|5J>L~~>Ó¦M h_¤ê¡pò¬{Nõµ} ¹3“gÝó¦²]RR’Çúòòr1™LCyy¹‡À¦ÔÍ™¼¯#З1�WC8Ôa;‘|.t¿¿šcûHûôÒK/õéS÷åŠQ^^κuë|öhˆ´OÝëá ôXP|­Ä±ûrå¥@ Ü,„Èà3Iùû”SsŠ ¾*ö@öx+¨�Ç‹ŠÈÉÉ¡¼¼ŒŽ;r¢ø8Ym²(<Vè|%y÷™¡ÙãM ®kÁ|¹o_9çœP`P–$&&RYYé1›u8¶7Æ ÙìñÕx÷ço•JÅúõëý–ƒÅbq5˜†îóm”¿Ê4ü=xH’äóš}íë-0¸¯÷žÍ<œØw?†?{”òŒ34ò•zKǾòe “ÉD»œLf™™™˜LU<öØc :ÔµÞ9¤¢Šö)§×ÏÉ‚ÙTÅk¯½êjø45ö}•íìÙ³ÉÏÏwͺ¯ôŽ3z$IIίˆLŸ>½I±ª/ýÝ'îs0"HhP"•ù!C}Ÿ4îþQðî µ{÷n×2w!ÒŸ ±{÷n"Xà X¬ýóŸÿt !LJJ¢¼¼<hQâ,’y?//1£Gòå×Ûý6FsrrÈËËC£Ñx,o{Bͳ 3fÌpÍ¢ïnwÎŽ„=„mï8­ªª"!!òòr—À ä[e¿`ñÜÔÜàm³òû¹çžóãÊy僉>á6ŠC½¿»}8DÒ§þü4xð`6oÞ 8'ŒT„†¦ú4Üz·±ÄÅÅyÄ»?±*œXBdh�[2iøªÔýÙãk]NN555tìØ‘Š²2²ÚfQx´¬¶Yì?p/¿,aÀ€TW²¬¬¬ ú†¦±3ýóe§NITT˜xì±Ûüã•W6Ò¯_ž{îMŸ6…c{cí™tïuÍj÷ïåË—7è^,‹‹‹\Bƒ÷öË—/güøñƒ½E{üñÇ]u×ìkßéÓ§»®ÊþM-¯Y³fùÝW¥R‘àZç=)šûq*++=®«%b_¥Rý! T™ÈÌÈtëÉPå!08{2da2›HKKÅd6yÌÍPUUñ<¢ˆ3ÁfÝŸ>}z£c¿1¾ôþ­f³9lÁ]hP«Õ˽ÏÎ}r2ë¿}Í×âkYnn.Z­ÿjÓׄf¡úGù¿»Ààý,D:ïOŸ>ÄÄDÞ Þc°fΜé÷-x¤ë!_C7e[e>¨@½+µ§²²2`ƒÒ„„***\åªÑh¨¬¬$!!ÁuœæÎ þÊëÞ{ïå£>òy¬-[¶0xð`ŸB¶¿s‡Ó¨ ÷þjÌý*‘ô©7 ,pÈ!¼þúë |ÜŸ†[ï6%Ïz÷\Ô+&”Xq‘Á߆pñ~ '©ù{ÓŠ=••äævùC`8æŽ=Fll¿ýö|ð;—]Ö1¤‡£¦(³Ál?|¸«Uß`Î÷ýúõwõ§<ãK_öLº÷:/~·Yìñu •JEYY+V¬ðüqðàÁBƒ/Á×DŸþÆßú²ëñÇ'??ßCdð~°ôwÝʃ¥w¯‚Æ–—bK°ûÂ{¨†û>ʺøøxŸv5wì{ôdpûºDFf¦‡À üMIIÅd6Ó>5•ªz!âÍ7ßäšk®i 445Ìš5+¤Y÷•7FM‰ýÆÀÊÿa@£Ñ4J`ð·SîwV¯^ ÀÖ­[Y´h{öì¡sçÎ8p€ììl¢¢¢�øþûï9묳�øá‡èÙÓùÕ‰ŠŠ l6›ÇDtá䥡i¸„êŸ|°A½èn³¯h¸up¸±Ÿ——Gbb¢ß1Øîs (ö5—=þr¨/âããØãÞˆÔjJnåÚ•|ämƒòBÃ×lý‘Î ¶+--¥¨¨ˆI“&5h—––rýõׇ]¯7×ýu2¿TªO7oÞÌž={<ü¹yóf† ‚ �<†Õ„*ÞœÌçw%~}Mòèoy¤bY ü‰E%IøŠàNïÞ½éí6àÖý•¾ð÷% _“ÔxwËôg/…97· ••Ud»õ`8rôÑQ~߀ŒŒtµý¹óg7º®óeÛ¶Ù¬[·©¡Àз»vî¢_ÿþ®!°"`åŠí±h6{üí;iÒ$,XÀòåËCª,•Ù¦ÓÒÒ\ŸnT¶?~ü8eeetïÞ=håçÏ?S¦L!??Y–]ÞǪªª 8ã²Édò˜ÝýºÂ)/E,ð÷öÔE`tíîv)Û6gìggg{ …Èt›“Á\å«'CÛú i˜L&ÒÒÓ¸ãŽ;¸å–[\]û#™G™ußWO¨Hçe¬6›­ÑƒZ­Æápxünì}òG®ÿc.†N®gëÖ­�lܸ‘­[·òî»ï2yòdÀ9ÌiÓ¦MŒ9ƒÁÀæÍ›]"î]»8xð 7ß|sÀûÄŸ† p˜‘¯òr_¦4¼[ýmªžy晀|||¼ÇÛB_õ[¤ó¾òU†¼¼<òóó þ¼æ°'P¯B_¹Õ}Þw{æÎëZÞTÿ„?Þ<÷aÞõEKåïs.X°€®]»R^^NQQlÚ´‰!C†¸¶ËÈÈ ¨¨ˆÕ«Wsýõ×7*ö1tèа®©9‰„O•ßC‡eèС̟?ßÃ_ŠÀеkW×ýäîƒÆú´)Ïœá¢Üwî=¼ïÇPr³@ øóѨ)^ÃIx;vìù_s(Ⱦp m<cL4¿ï?@rr’k|u¤|ÒØYŠ«ªª=ú1ßÃ÷î ú¾\wÝ$¶o_ܬj¼?{€µgþüù®Ê9œÏŒ*Cmm­Çrå»wïfþüùòò¦?ÿfΜIUU&“ ³ÙŒÙlv ʃ¦Ò÷5|!T{B±ÅÛ®`Û²«9bߣ§Bl¼çïøø=Ìfqq±,¯ò\ßy$''ÇãaÍýaJ¥R¹rH$&ëk¬/[ª'C¸¾T†­[·²téD×òŽ;bµZINNæƒ>à“O>áÓO?¥¦¦†uëÖQTTDEE…˵Zíšœ7’e ï<¡Œ«ö•?µgîܹŸwn®òpý3cÆ *++ ÊdoMõs¸öxϯ`2™\ÿ”<« »òn}‰#-?‘~îŠÔ×%܆¤¤¤ Þ1cÆx Š0ÉgFwü Ûh šã‹“'OfþüùtíÚ•={ö4Z[<4Vph®x§ž“Á׸*ïßá ·ÏÞ>ÏåëÁ9{œßXmtrS¶7›Í~¤=x7Å—J·6ƒÁæwˆD¿~}=†&¸ÚÏ×›®¦úÒ—=Ê Ía2i—;î²¹n1F£Ñ%0¸ŸW9†¯Ï`*‹óò–O–eXQ®I–eWýñÇ÷cî] •ãyÛJy¹Û¬›±ò ¥±ž——ОHž»@Pp¸€¸¸8öìÙÃí·ßîs¨DÛ¬,~üáGâââøß¶ÿÇ·ßî1dÂl67)ö½ÇšzÏÇàýVH™—¡±±¾îh¾ž ½O¼Y´h‘Çï+¯¼²AãÚ]ä�=z´k› /¼ /¼0è}âÏ?lt/Oïm”Æ‚û[Iå÷Æ4ÎBõkóæÍ|÷hð7¦º9ó¾û¾æ8q¿[Úž3f¸zZxM 4¼Ãl6#I’__657ø²'P9žŒÜàëz| ÞÛŒ3†U«VQTTRãÑ;ö±bÅ ú|÷îÝ®z>ÜO<6'áæwñQ”¿ŠØàÞ‹!Pî ×§¡Ö»?wéò1ÎøõWÎÿ9ôí?<mGDbY üD#_¸¿‘ _ÂD01#=±±±yäÞ Õ…pºÝyûrëÖ|.º(€¥Kg{ ý¸îºIõâÌÇpoØGÒ—'Ã_û <˜ùó瓜œLff¦ÇC‰ûü îìÞ½›öíÛû\—™™éÚÆ½ÑìÁÉý¯Ò(P©T ³î"—"øš”Qù›——Ǽyó|Š ¡”—"b¸ok2™<ìðÆb±ŒOE`˜7ožÇ¶ÍûYYY®†Ë­·Î§[·®ÔÔÖ`¯³ñàƒ—1uêc „†£……<öØZ┲�� �IDATIJN¢àÐAþïÿnÃd2¹†L„:Õ_ì{ 9î³îûbÌè‘]Û{/†âËÖÖ“!Xƒ8œúEù¬_°o«‡3Ñc$p+©LéK`Õ?Þ±¨7S°ãE:ï»çr_ñ¬ ;÷kŠ=Ó§O'??Ÿyóæyäܸ¸8×s‡»Hã.4¸çB÷ ,#‘BëHø§)¹ÁEEEùã@½u‰U_Üpà „¥žoi"éÓ¬¬,WOw¡k×®M~þŽD½«Ðþ»ïˆ¼�+W®dܸq�r{¸±ýw>Å+V0nÜ8dY沂sZ]¯ @p ˆ ¡$¼pz3x÷bhÊâ÷vK–,¡wïÞìØ±ÃãïO?ýÄùçŸÏîÝ»éÓ§Û¶mcøð�œSoúb¶»‹Þ ÈPì w\¡÷1·nÍÇh4rÎ9wÖW ÊWV¸†$¨T*>]¿’6m²ê»››Í—'ÃïuʃÇ!C\ø*•ŠöíÛã÷8ÕÕÕ>wã7òúë¯7é›Ôî¿qÈÊüþ¶Sò¡ø+¯[òóó#R©7F`hlì+ÂÁ£®")1‰ššÒRR°ÖÕòÎÛ{¹êêÜ=.üŒšê’’’¨«µræ™gð¢O¹{âÅ®íµ=PCnÖ¬YÄÆÆz̺ïÎáÇùê›ßx5G9™s2´Ô8Û`ãˆÃÉ#6lûüûöísýß×[É={öpß}÷…íCŸ‚ €Þûz×S‘ÊûÊ2÷Þ}î‚“{œ{ïënS$ìQEøð¾ÇæÎ‹Z­&??ße£¯ž Mi@†#ò4%F›+7xÇ~§N\_j(--eãÆØív®¸â T*ï¿ÿ>àœ(ÕÛß«W¯v5¢/¿üòFç†7’šš 8‡1*õ¼ÝngíÚµa )P>¿ øL"íS_ëÖ¬YCaa!555”——7ȾrE(ç äÓHÌeá~Î;ït>ë)BC0Ûüm/@ˆ M®$ƒ ‘8O¸q¨CŸ>} %¡Úi_Z,WãÞ×:€6m²øï’y¬_<3èƒfSjN¶=ÿû߃ á–A c†êï Þ õ™3g|#;kÖ,,KDÊkÖ¬YÌš5 £ÑØä ž»Z"ö• ÉI‰Œw&ï¾³›­–””¬¶ZV®øŽq7ôr =¶–Úšjxp(/¾ð©iÉÔZ­¤¦¦0÷™ <ðà•>"Mið(噓“Ãyý{³jÍ[.qaÌè‘|õÍòòòšÜÀhª/Ý{" †F}ÆÒ`0„Ô“!’ת°ìSiÍaO§NÐëõH’äÑXpo¤}øá‡ 6¬Ùü¨ï..ùxCõO ÞOÁîüüü÷€J¥ò)Ö‡S^îƒ"(._9J2i6›ü ÇÇMé‰í›ûþøRƒò¦„„Ÿûzç€ãÇ{”ESQ„E`hÌ9¬V+€Khh±3jjj�\ƒ;÷ÝwÏ>û¬O¡¡9ä¡ÛýþW„ƒanïk!6Bdš¤B™U¹©=¼¨ëq {;¼ÿ* ½ûî»noã'ø±+{Ü Öu-T_º7 ½»jZ,ŒF#ëÏdÇŽl~ù bcc±X,~»u6Ö—-mO8\}õÕÍ^!‡:«»?"Ø5{7š|Í:Nyùë½ÑT_4Wì›L&ºuëBum-ïÔ ©))جµ¤¦&c³ÖzôdHHˆ#19™^ø‚ÔÔd¬V+i)ÉX­µœyF7×vîâS$böìÙÌž=›iÓ¦¹æ^ÈÉÉ!//Í}†Ãápuõ÷U¶‘ö¥/rssÙ»w/z½£Ñ¶Ð`0P«ÕTUUa³ÙÈÍÍõÛxõ>q'ÔOXîÚµËgõ}ûö¹Ê7Ø}Il6ûöí£S§N.Aù žsK„ãŸPìöÕÍYi8»7²•†´"25&ö•]0æÍ›ç*3EðeS¸÷âìÙ³?†žù›4OÙ×h4zô\$ÉU?ùê]‰ÜÈwþ>ã×Ò¹Áî½t¡!{÷îm 4DJ IMMÅn·û<G ¡Á}ÎEhh ‘þº…"0 6Ì5ƒ"4„"J†ãÓÆÔ»þŽ©ÄßâÅ‹;v,õCCýŲ÷ö¯ÌkÑÜ,þ$"C(É.Ò=BéIàkïÏi†ƒû¸ÎæèÊØ˜ñj¾¶Sœ6¿ü¿þü3?®{£ÑöèÖdOk¬ùÇWÏwá¥)×Ü”ò²X,ÄÄÄ4ºGCc˦1±GmM-i©)Xm5¤¦¤bµÕ’ššT/4¤b2™\ãß““’±Y­õë­¤¤&cµÖ8… ›Í%H¸7´"ûŠØàp8<–{ )ÛP}éoåÁUyPGhP‹ÅT`×—ù„åÆQ©TcèÓÓÓ™6mÏ>ûl‹æEPPz.hµÚBC¤êÐPïE%ß*n‹ÅâSèŠdìCiT(ó ø²©1öx Áê!_~h ÿ„s¿·tnð‡¯Ï=‡²}ff&‰‰‰ÍRçzŸ#Xo*e2gƒÁ@ttt£Î)ŸFGG»¾Ú¡Ø¢ Þy:RDú™S B­Óüm/@ˆ a?j´D¢'C°s…bb‡¿!Û¶m£{÷î|ñÅœyæ™ †V„cOsù2Ð[Aeò ùãºçÙóóϼ‚û/4òŸY"æË–´'T”Y¨[Z`ð¶YiÌûûW÷[„@]¿›Z^J·ÍHõhh®Ø7™LÔÙë°Ùj<z0X­VÒRS9Tp¸¸8Î=÷\âââ8TpˆgvÃjµ’š’‚ÕZKJJ*6›•:»­AO†æŠ}å*Re)#4DZ`p¿>÷tºuëV—À�ÎOXîß¿ßõ ˨¨(ž|òI�^|ñÅ_ PÞh*"CsûRA”®ÜÞË#•÷½EKï{w„ ~'7tßW8#ûá– ›šb"4„b‡ro*‚?!°¹ëE_ûŸÌÜàE`ðŽo„Úøo ážCNö— âãã]ó1”——óꫯíñ•eþ†¬¬,Ÿë[âÆãÇ+>}m²bY œ‚"C¨³†G¢'C0Õ?{ÍÁL`ðž“!Ü7eÁf)Õ—¡Ž×¬®®æÿÙ»ó¸¨êýà¯ÙVPDQÜDE\Rsï¢išei@&e©·ºv½•ݾ^·¬´ÔüYš¡Y×ë¾¢©i’"ji¨án⊂€0 ³œßtN3,à ΠÈëùxð`8s–Ïù|>s˜Ïû|>Ÿãêꊌßã÷3§ÍÞ·G^Vez¬ù'õæ›obïÞ½¥–ß¹sÇlò([ÿ—÷e³¢GÈ•lÌ¿ÿþûX¸p! àææf6 äìÙ³+<oK3¶ÛZ^Fê‚^™/&UQ÷ÅüÙ¶õŠ´…öL(DƒõQXXˆè˜^ˆ‹‹“z(|öÙËXöÿŠ E…ðöö‚N§…—·:vrÅž={——•JUåußˬÉËŠ>'% uêÔ\.‡B¡îæ–ümiˆÄÃ|NLYóËÙ³gC¡P //Ï,À ‚ôÄŸ²Ê×ÚëˆiñŠ ¦ÄXYËí•?ֈŧŸ~*•«˜?R ƒÅü±gzL?Ã%ƒB¦i²ÇumöìÙåÞ•-ïµJ¥*wHš=¯ å›Åå–†±U嵡,uëÖµ:À Ö;±1_Qݘƺ-µZýP{åéСC±{÷n¸¸¸˜>ÿüsxzzJ‡õë×Kß4 Ö¯_/lÍÓÊ~ç,«'¦L&+wž«²êxYë[ûÔ"bÁ¢‚‚‚2g¥­Ì—ñ‚kÏô<Ì—¦Ê¦Çžãúl9ï7{ÿøêWÁ¬ñû(8:=ƒ 2»ƒôí·ßJÁGEEY}ÉžÄ@‚øÙô1•¢LLéêêjö±wþT¦îÿ5"k¿?YÜC¡~}\»–*FF#5f&½Þ >Ù‰6mÛ ¨H ½¾H 0DDDXuw¹º{Øëˆi !77·Â9Ä�ÃСCɨ’w¡ÅÀ‚é8`ÓtVúXmÚ´PÜ#Jìš-.—[bKƒÌÖëfEݽ !‚ôY.ùûQ}©/YV¦iª Œ²fõr¨ÊkCyÁµ³gÏ–9äÇtn„’뇄„Øå<l=†éü ¦²²²zJ{~o¯¡?üð6lˆÜÜÜRSâòÊÌÕð0i·t½)뻊¥›òû&Õà ƒ\.·ø¸ªÂ‡žÑW«ÕZœ ÞôŸtuK=óÒÒ—ïŠÞ[œXh1ý•É˪NOÉ»QÖ¤G 0¼õÖ[øì³Ï¤FÃêÕ«U©´[“?å=5B&“aîܹ� ͸¾`Á‹yPÖ2{•—سBl”¹¸¸H1¶ä½ë¾““"""þ 4t6›äQ 0äååÁÉÉ Z­VjÄüãϧHˆë‹R€UuÝwt^Zû9:t¨ôe¾¢9Ä�ƒ½?'•=¿’=J,}N*ÊÓ ‚øÚ^ï6*š¼N&“ÁÅÅ………(**’‚………pvv.|±µîW¦ìLŸ.!–YyizØÏ¢ØÈ1]ÇR³°°ÐæÏâãxmŸ’R±.‰ë‡„„X Ö–h³µîØzŒ:uêØœ&{}¦mýŒÈd2éz �»wï6 8˜öt{8ØZWö;§\./÷zSÞ÷_kÖ·tm&"¬úça:s¬øÊZå}Q´´nuN)kfúµ”v[•L{QQQ¹ûªL^V÷ôDGG—ZÖ¦M鎀-çbmzlÉ›… –š°ÌÚÏš=ògÞ¼y¥¾œ‹¢¢"›fºwTÝW«Õˆˆˆ–¦†¢¢"³ ¡˜æ’ëåååA­V—[ßEÝyYr¹øûŠz2 :ÔÊ2-ßò–Wæs"6¶Ñ©Êº¦Õj¡ÕjÍb@«Õ– ²[›ÓÀ…­æÎ[ê³Z^š&Jž·Ô°Ôx®è¦Cm¸6Xû½Èt[kíÖÔ}Kl 8*àèïmâu�víÚ%½ÎÎΆ‹‹‹(³ö—=êÃålÊ£þ—;Ø|=d€ˆA‹ÄeYYó襲ººš6æMß3݇é?eÓ(iuKOI–.öÌKËé1ݶ2éyûí·-¦§¼/å},+J~ÉuDƒÅÞå%N¦gÚ³¢ä«G]÷¡Óé V«¡Ó餿K>K©á þÖétpqq©5×[?'ûÛß*L»¥FCe>'K 0˜öh0]nésR^þ >¼Òeëˆüy˜º&6œ‹ŠŠÌîÖ«Õꇪû¦Ý¡mÍñØ:FZGܧ½>‹:NZæìì\ayÕ¦ïöªûÖ<–ÕšºoÉàÁƒ«Í—c{^o+ªåþö·¿U*O+ó·í… 6åÏá¶Ö¯¯Ó鬮ËDT˃ âÝ®²þ—\VÞLKË­Ù‡é„>Õ-=ÌKû¥ÇÒ—E{¤ÇÖeååOeïöU¶ÎØ£¼æÍ›'õj(+ý¬û5ç:R>'öüŒˆ%k?'5å:b¯ô¨Õj³÷«CÝ7MSMû,òÚ`¿ºÿ8pdžš,}^*›§Ž¾6Ûú†ˆd0³jÕªjuÕ-=%YêºÆ¼´,99™ùúϼ¬ /ù9áu„éᵡ&Ôýš¢&çiMú¿KD/Ù½{÷Ì¡qqqˆ‰‰)õšˆˆˆˆˆˆˆÈŒ""""""""»`ˆˆˆˆˆˆˆì‚A"""""""²‹Rs2U{2‘]0È@DDDDDDDv!‹ŠŠâp """""""zhÊŽ;"**Š9ADDDDDDDE)¾x÷Ýw™D¹yóæU¸¯DDDDDTÙö†d Cll,s…è1µ|ùr«Öãµ€ˆˆˆˆˆ*ÛÞP:ò ½&þR«3ùðŠ®¬iDDDDDDTí-^¼Z­r¹2™ r¹NNNpvv†L&�Èd2éG¡PÀÉÉ ~~~èÑ£‡´Ÿrƒ )))ÈËË+7Ý»wg)=êÔ©ƒ'žxYYYÈÏχ P©TP«Õ��…B¹\¹\…B•JWWWdgg›í§Ü C^^Ú´iSæ{'NœÀÑ£Gh """"""z Fxyy¡Q£F0ÐjµÐh4Ðh40 Rï…B¥R µZ 777ëƒ ‚PüdË’½d2 Ф¤$DDD°4ˆˆˆˆˆˆˆj0£Ñ(d2œá¤..¡Ñh ×ë!“É T*¡R©àìì •JUj?rKÇY˜þˆÝ#œÑºuk$%%Ùí¤är†DÔ/õº<n. xÕQ±6Ùé¼ � @–›®#——N°Ø“A 2”O��­[·Æ‘#GÌ&z0åáªDü硸z«�� Ó xeÎÙ2×U)d˜2¦)~HÊ4{]R‹&®øWT�ò5BüÝ0ÿÛ«8”|Ÿ5‚ˆˆˆˆˆˆ¨’Œ‚�£ÑFƒììl™Å �H1›‚ bW‰’ âââŠw T"((Èb"‹tFDÍL±Ë +ä2Ì}=q;nK¥B'•œµˆˆˆˆˆˆ¨’A€Ñ`@jj*òòò —ËáââgggFèõzèõz•h(7È ŽÇP*K¯Ò©S'´lÙ‚ @­VãâÅ‹6%¼ž‡³_ ÂäOÎ�Þ ÄæŸÒñÇ-M…ÛviSõë©°ÿ—{Ò2½A€þÏhÊð'๾øãf–n¼;÷Šà¤’ã˵Ʀwñòp?œýãþ½ü Q1ÃC >1«ãoKëoû9ã‡6Æ©KyØz0Ó£ð À€.¹„Ü|}™Ç"""""""ªiÄ^ ¿ýöd2<==¥yL§P999ÈÉÉ“““Ù0 Àœ ¦=Jþ8;;ÃÓÓ^^^¨W¯ž4Idy” ^ì‹û¢] wÈå2øxþñ𪫲º'B5Î\~�¾ô1Õ*9FõóÁËÿIAÂÉlŒèã�jâ_g¼øï3ðóqFpSW¨”2Lxº1¦~z¯Ì9‹'»xÂ×Û 2�-š¸ÀÍY±3N#´¥F=Ù¯Ì9‹;YEèÖ¶N¹Ç"""""""ªiär9Ο?¥R ///¨TªR�P©ThР<==‘]*PᜠåMæ`šŠ‚ ‚�ääë�…EƇ;q™ %×½]]¤ejѸ ¹ GøÁÃU ÿFÎÒ:…F|¹ù&¸•^ˆúõœàé¡Â75¸›UÜá—³¹èÙ±vÊD¾Æ€ÿî¹�ȼ¯ÃšÝi(Ôq÷žž*tnåQˆˆˆˆˆˆjqH„‡‡‡Uq€ºuëB£ÑHC'¬ 2”7'ƒ­AƒQ@üá¿&pôªkþD™ '~+C‹N!pv’K‹¡=êãÈéû((4 +W‡#gr��Z“€†Á(HÁ 1µ®Îr³ ‡Vg„‹Z!F,Q*d勈ˆˆˆˆˆ¨&ñöö†»»{™±²Èd2øúú"55Õ<F`)ÈPÖ#,KþÈd² ƒ %jðpS@&Z¸¡cˆ‡ÕÛþr6Y¹º2oy,%M:ãâµ|œ<Ÿ‹”?XÜ×ñ³¹hÙÌ *¥ rÐ)ÄGN[÷„ [EDDDDDDT])•Ê2çd´D¡PÀÃü=oqâDzÆ_”½0m»‹_PhÀ‘Ó9X;».]ÏÇÙ?ò­ÞV§ðþ²Ë˜ˆá^ÈÊÕ£U3Wì=vE:#¾ÿ! kç´Ç…kÐñþ²Ëåî+_cÀº}wðùÛ-!@òÅ<üqKµóCØz,""""""¢êªnݺVÅ�JƼ¼¼¬ 2ˆ½*‹!‚Åž yz xãD©å³Vþgµ…Zó�ÅßÞú @ñÐñuIçSó1îÃßQÏC '¥éÙÙt [fÀE-Ç¡Ì}ýû«+Òë-Ó±íç ÈeÅO©(kýعg¥×Ë6Ý´x,""""""¢šF¯×K¤´e´BÉÀD…?Z³C[‡KˆJlu?O_ærƒQ°©Ño4 ¨lJl=Quc©ýoK›_ά$"""""""kY :”Û“¡nݺضm4 <x�­V ƒ¡øŽ½B¡€Z­†»»;\\\ШQ#æ2Q-Wn¡[·nÌ"""""""²‡K‘](¹óÃ+º2‡‰ˆˆˆˆˆˆj öd """""""»`ˆˆˆˆˆˆˆì‚A"""""""² ˆˆˆˆˆˆˆÈ.d """""""»P2 ˆˆˆˆè±Qp8µ•ùP–ö‘€{}æ9ƒ DDDDôø8µXÃ|(KTÍ| "‡bˆˆˆˆ?!}ˆ(æ�$­.d>Q•`ˆˆˆˆ?Q¼koŠA"ª"œø‘ˆˆˆˆˆˆˆì‚A"""""""² ˆˆˆˆˆˆˆÈ.d """""""»`ˆˆˆˆˆˆˆì‚A"""""""² ˆˆˆˆˆˆˆÈ.d """""""»`ˆˆˆˆˆˆˆìBÉ, """¢Úì~A!¶&Ÿ,Î%²Cê»»²P‰è‘aˆˆˆˆjµ­Éç³jÛcq.qÑO#ºG'*=2 2èÛ2�QkdÚW'ÂÁ ©,D"zäd """"ѱF÷`ˆªNüHDDDDDDDvÁ Ùƒ DDDDDDDd 2‘Ãüpƒy@T›0È@DDDDD3éðQ2ó¨¶`ˆˆˆˆˆêÝcÀì“Ì¢Ú€A"""""r¸~¾>Ï| zÜ1È@DDDDDUbbðé)æÑãLÉ, """""{ùî°Ò¤ÇÂó÷ß9 䣚ə̯‡Ù ¨ïÌ| ê…A"""""²›•烷-¯óé) [ ,Ma~=Œ¸¾@tKæU/ 2‘Côm ½ Ì—¯yª tiÀ<ªŒÕ+ä=* 2‘Ýõm ü4 ü/šW¼ÌYQ`ݼøïNÞ̧Êbª+ˆˆˆˆˆÈáœÀ–ÁÀ¦Ì ¢ÇŸ.ADDDDD·v� Dµƒ DDDDDä0Jyñ…#˜Dµâ3Ï, """""GYÛŸ<Õ&ìÉ@DDDDDÃ�Qí Ùƒ DDDDDDDdœ“ˆˆˆˆ¨†Ò|wnfç�bVmC̪mhâYWƒò×µ­¼:øï$`~àZ™GDÁ Q $2Æukö6{o\·öP´lÁ4È��F�.uAp`ÂþúqäajwÙÿ•¿ÌãÚM&“U»41È@DDDDT#–B™ËÆGtÀG?˜ÆGt€àS¨×Ⱦù×Ý_rx«T0ùͰã3™y\{Éd²R×…êt`ˆˆˆˆ¨:·'Me½nÙÐ}Bš!áb* �aÍ#ÄÇ F�èú°çãâ êø-ûF£clü³ltü¡joø+ÀÀ<®]A…’×Óe%ƒ*àÀ Q .”ü-¾Þ ®�ž k£Øò ýW¡ÓH�r‡·J…? l�;ŽÑ)ˆÃ<®ñwÉ@CEï1È@DDDDT‹ ¦¿AÀƒŸŸ¢¢"i™ èZß ®ÚŒô÷óBjjêŸ{ª ¸µîœš¤åŽSxÀ= PQ%‡«•2oçqæ- Õ‰ùQ› ¦AñG¥RÁÝÝîîîåöl¨Ê`ƒ DDDDDÕ,¸`X_§§§C§Ó¡Y³fen›³êc�TŠO©_pŒ€BU%çp80 €\¨ä,SGx'xk� ” óƒ€k×®!?? 6,˜¯!UhàÇžˆˆˆˆ¨´y: ·H@ZV²òµhâ߬ü/örò22yñ=¶š5k†¢¢"äää”êUÕØ“ˆˆˆˆ¨(Ù0øè7à?'þœØ 7ïÄF@_îd–+�CÕžQ�´Þm'ª*HMM…‡‡äry©áUÕ›!M""""¢j`–ÿ|TƒN‹g™ODd™8_‹Ñh,ÿºâ` 2U¥æc ‚ hëÉ<""Ë ƒ`0 4”¼Æ8‡KUâG£Ñˆv0µ­Fƒ©©z¨Ì"²L¯×Ã`(%—Ëa4!—÷-¨ª‰d """"ªFÄ@ƒF¸È 0µÌÀŒ!¢ ‰=Dr¹¼Ô\ Žž›Ã%ˆˆˆˆˆ!1¨PòÇh4J?âIªYÖ¬Yƒ•+W2#¨ÊˆAñ§¬k‹£1È@DDDDTM”lÐëõ;æèÑ£áììlöãååUmò䥗^ÂèÑ£kdyîÛ·»wï¶*ï]\\„AƒaóæÍü0P¥ˆÃ%EpAÄáDDDDDÕ(À ¾6¼Í´û³#„……aÉ’%Òßâîêà©§žrhÅZ»víÂÕ«WñÆo8$ï³²²ššŠ5kÖàÅ_ÄG}„¿ÿýï4mTó˜ö`0A¼¾Tż 2=ÂÀ‚éï² ƒÁáÃ%<<<йsçj™GÏ?ÿ÷ ó�� �IDAT|µHG||<.]ºd÷†|ɼ?~<ž{î9|ðÁ=z4üüüYÚ¨æ1.!“ɤ@ƒ\ Ž 8p¸Q5 :”|¶}vv6–/_N½^/ýTE�";;}ûöÅüùóÍ1£Fš5k¤eï½÷Þ|óMlÚ´ ;wFÆ 1yòdIëF|øá‡ D³fÍ0oÞ<³c½÷Þ{xûí·±~ýztìØQêY!./¹ÞЫW/4oÞË–-ƒ^¯Çßÿþw4mÚ#GŽÄ•+Wl>vbb"úõ뇠  |úé§Òû_|ñ6mÚ„'N ,, ÿøÇ?��Û¶mÃóÏ?fÍš¡{÷îX¾|ùCç¹Z­ÆÇ N‡U«VUxœªLÕ¬ ã.Á Ñ#,”ü-HHH@¿~ý°{÷n(•JéG¡PHÁ{ÐjµHKK“~´Z-�ÀÓÓ¯¾ú*fΜ‰Ã‡KÚË—/c̘1Òö×®]î]»°xñbL™2Ï>û,V¬XÕ«WKëÌš5 [¶lA\\.\ˆ… bÇŽÒû7oÞÄ?ü€%K–`úôé:t¨´üúõëfëíÝ»|ðÞzë-<ýôÓxçw0fÌ‚€¯¾ú çÎÊ+l:ö¾}û0eÊ<ÿü󈎎ƌ3píÚ5�@dd$zö쉠  ,Z´&L��ܸqýúõþ}û0lØ0¼óÎ;ÈËË{èò ŸŸ.\¸Páqª:mT3‚ %ƒ•e]k…Ã%ˆˆˆˆˆªa°áêÕ«7n4 Þÿ}³®Í2™ *•ʬ§ÀÃHJJB`` ô÷Î;1`À��Àرc±wï^DGGcݺu˜5kvìØµZ-¥W&“¡^½zؽ{7Ôj5^xᤦ¦bÏž=˜8q"´Z-/^Œ™3g¢oß¾�ŠŸ¼°~ýz 6L:®F£ÁæÍ›Ñ A‹é-**–-[àããƒÐÐP,[¶ m۶ŬY³��{öìÁ¡C‡¤�Š5ÇÎÌÌDBBBBB Óé0þ|8p�111€¯¯/òòòЫW/i›É“'K¯§NŠY³f!11C† yè2iܸ1ÒÓÓË<Îÿý§ø8‘O y$i£ê«ä\.â#,«"¸À Q54L›6 jµ]»v-µ®L&ƒR©,w?¶Œ·îÓ§âã㥿 …Ù~/^Œnݺ¡_¿~xùå—a–¹\¸ººJ½0°lÙ2F\½zùùùøþû綾/_.5ß@XXX…�èС|||��®®®�€Jﻸ¸HÃH¬=vÏž=�P©Tpww·*ˆsøða$$$àöíÛ�€ÂÂB»Ô…ÌÌLôìÙó¡Žã¨´Qõ2”÷èʪ˜ô‘A""""¢j\_ß¿��4iÒDê5P’ 0ÝV§Ó™5&T*€ânÔâð q;ƒÁ�­V ½^o°EEEÒ~ ¡Óé ÓéЪU+‹ç"6îÕj5´Z-d2™´ì©§žB»ví¤uëÖ­ëð¼uÔ±A@tt4Ž?Ž &`Ô¨QX¹r¥]Ò|ïÞ=ܸqÁÁÁegù×+YÚ¨úÊ"aZ7l`ˆˆˆˆ¨šÎ;'-óòò²º›³N§ƒ prrP<T@§ÓA¥RA¡PÀ`0H]©U*•ôx;Ó®ÕeígÊ”)hÕª^{í5¼ûî»èÓ§Z·n]*íEEERZ;†-Z@&“!((NNNÈÊÊÂÈ‘#«4Oíul™LfÖ³áܹsX·nöìÙƒ>}ú@§ÓÙ-Í‹/†³³3¢¢¢¬:NU¦ªÿ5¤¬É9ñ#Q-–••UªÑP1€PrîqøBÉF©8ÌA Fܾ}iii¸yó&nß¾-5Lׯ_`Ù²eøÇ?þˆˆŒ?¾T×ûcÇŽ!!!r¹ñññøùçŸ  ¸WÃÔ©S±víZ¬[·………ÈÉÉÁ‰'ž—ö:v×®]qêÔ)ܽ{�àææ™L†‹/"-- 3gÎ�¤¥¥Ù´_qÒÍ7nààÁƒ˜:u*,X€yóæ¡aÆVÇQi£šd°åºÁ Q-h$´lÙRúûüùófƒÁ�N­V+ýèõz³Æ…8´A $TÔØ'~ D@@�‘””„ÔÔTLš4 _}õ|}}�qqq¸sçþùÏšíC|죟ŸÆŽ‹gŸ}VzÒ�|ðÁˆŠŠBll,üüü€E‹UIžÚãØÃ† C‡Œ)S¦ Y³fxýõ×1mÚ4´nÝJ¥'NÄ{ï½' u±†˜÷-[¶Ä¤I“––†ƒâ•W^�«Žã¨´Qͼ~”5D¢*É.\(DEEaãÆˆe©=¦–/_ŽÑ£GW¸¯DDT£%­VÇ�Qq@D´U›¬:’Œ˜UÛý4¢{tz$ £Ñ(=zN¯×C§Ó¡E‹¸ÿ>�`åÊ•xùå—Ͷ»ÇËår¨T*èõz³ùÊ"g· =®Òôјí§¤—^z ظq#222àââ"í¿ä>ôz=nݺ??¿r'®t{ûÎ;¨W¯œ�999P«ÕÒßiiihÔ¨‘ÝÓnzƒ�ܸ•†¦~ =ú´QõÖ­[C­VC¥RÁÉÉ …J¥r¹ …r¹\êÍdê×_…‹‹‹´ž¸]Éצû¯®®®R{ƒ=ˆˆˆˆˆª¹\Ž?üPúû?þ(w]±¡`Ú`(kˆ„µ*³Óõ4h�wwwé<JR*•hÖ¬Y•ìul___©ÑO iú·£ñÖçQ¥ªG5DÂìúÅb """"ª~ÆŽ‹#F��¶nÝZáú …B ˆÃ'A0Ja [÷£×ëѶm[´oß^zßh4B&“I½ˆ¨öàÓ%ˆˆˆˆˆª!™L†/¾øO<ñfÏž N'us‡3Èår³Þ*•Jz2„øJ•J%mc:oƒøD ‘Á`öoi?%Éår¼ýöÛ�ЇcˆûŸLAD 2ÙìÈ‘#ÈÌ̬uç]¿~}ôèу€ˆˆæé§ŸFpp0”J¥$P*•e6øÅƽ¸žé:âøé’‚²†XÚOYAµZmÕºDÄ ‘U233qëÖ-f‘ƒ”5Q›¥uíuLG¬KD/ˆÈ®Ôj5êׯÿØŸgff¦47cˆìª~ýú>|øcžÛ·ogÏ """"¢øt """""""² öd """"ª!Ξ=ËL @o”r@Á©0èOmÚ´©é`ˆbÍš5زe òòò¤eÍ›7Ç›o¾‰Ö­[WûôÿðØ;w.®^½ŠN:aîܹhß¾= –ˆˆØˆ GŽAªÎd "‡?~<”J%^xá�€¯¯/vìØggçG𮤤$ÄÇÇcöìÙ害aÃŒ3FúûæÍ›HLLÄéӧѤI.Q98'9Lxx¸ôºcÇŽ<À‘‘1cƘõ®(©  �Ë–-Ö-[püøqDFF�²³³±~ýz*‘ìÉ@DÕBnn. <==-®—žž£Ñ___›öŸ!C†àæÍ›×;þ<V®\‰ÀÀ@�ÀêիѰaCèõzddd° ˆˆˆˆˆ,`ˆªÜòåË1eÊèt:¼þúëÐh4X³f �`ذaX·n”J%Ö®]‹‰'¢  �Æ ƒ\.DZcÇ––†ÈÈH|÷Ýwøïÿ‹É“'C¼ýöÛ˜1cbcc±qãF�ÀæÍ›1bÄ|þùç8þ<�`ãÆ8yò$¾üòK´mÛÖ,m;w6ûÛËË Mš4Ajj*z÷î]ê\®^½ŠU«V±P‰ˆª‹Ë‡ �âÿüm…ÃéŠ> \L®Òä ‚ ý6f?z½ƒz½·oßÆÐ¡CY¾9¹\™Œ“,ƒ DD6‰ÅÒ¥Kqúôilß¾7nÄðáÃ1bÄlÞ¼?ýôˆ±cÇbÅŠøé§Ÿ˜˜ˆ¤¤$ uëÖØ¹s'fΜ‰… bþüù¸víA@½zõ°téRlذÁì˜3gÎÄ–-[pæÌŒ=‹-²*­éééHMME÷îÝ1`À€Rï=zÿûßÿX¨DDÕÍÁ•�VZ·nH' Ï¬\¹+«8È`‹>úˆåú¸7ΔJ( f1È@Dd+'''�@Ïž=Ñ­[7Iï™i×ëÖ­‚ƒƒ¥×W®\Áš5k°páB¨T*³}«Õj»¥sÞ¼yhÔ¨6oÞ,¥ÅT÷îÝ1xð`¨«W¯ÆÁƒÑ·o_DEE1CˆÈ±.W='�A½¬Úäpú¬¼|&L@/÷*M®-=”J~u\‰eNÄ ‘˜Fí ƒÅu›6m �ÈÌÌă–¦“'ObÓ¦MØ»w/5jTæ:>|8 °DTT¢££™DäXI�2WëDXyÍ9’Œ•—·¡W¯^ˆîѩʃ b€Á`0˜ŠŠŠ Óé ÕjqöìYÞᮢǟ.AD5ŽØ£@¡Pصׂ©ŒŒ üýïÇþýûÑ®];�@bb"._¾Ì """"*{2Qs÷î]�@HHT*•Ý'HÒh4xæ™g0fÌœ;w)))¸wïæÌ™ƒS§N±�ˆˆè±tãÆ ( 4jÔÈìëš5kPTT„ &Ôº<)yî¶æÅ£È;Gó?þÀêÕ«qùòeŒ3O?ýt•Õ?ªyØ“ˆÆtn10 *,,�èõz�€N§“Þ3}-:wî<x�N‡ü�0mÚ4�€ŸŸ� %%………Ø·oŸ´]ff¦ôÚÍÍ �ðûï¿ãÌ™3X½zu©ã <÷Üs8|ø0¦NЧŸ~#GŽÄ+¯¼WWWxxx°`‰ˆè±²cÇDDD }ûö†···YP}ß¾}ؽ{÷#MãèÑ£áìì gggx{{£sçÎøæ›o~Ü’çnk^T´¾#ÎËÞåe0УGxyyaÒ¤Iå!uTý#ˆˆ��ß}÷Þxã éïäädDEEáìÙ³X±bΞ= �Ò“#fÏž-­»|ùr\¿~Ýlžžž9r$‚‚‚ššŠiÓ¦!&&�0}útøøø`Ïž=hÚ´).\(~fYóæÍ±uëV\ºt �ðÒK/(~DÙ'Ÿ|‚gŸ}¶Tºß}÷]ìØ±£Ìs gÁÑc¥  �'NDË–-qíÚ5ddd`É’%¨S§NµKk×®]‘€™3gB¡Pà7ÞÀéÓ§k|<ÌyíÚµ K—.uhú~ùåäææ"66½zõB·nÝjeý« _ý54M?— "‡7nÆWæ{mÚ´ÁĉÍ–õìÙÓ,ÐP’¯¯/víÚ…‹/¢~ýúðòò’Þ2dnß¾óçÏ£eË–Édˆ‰‰)iŸ4iFŽ ¹\Ÿ2óñÇãã?fQ­páÂÜ¿o¼ñêÖ­ �xñÅ«eZëÔ©ƒððp„‡‡£eË–6lŽ;†:Ôè2Ï+,, m۶ň#¬>¯øøxüqù’Ù{KII‹‹ \\\juý« ëׯÇ‹¾}û2È@DOؾ}»Ýö—žž�¸sçŽUû½råJ•'QMçïï¥R‰={ö k×®×MLLÄŒ3pãÆ ¼öÚkÒ°E øÉ ,À·ß~‹»wï¢}ûöøøã&5{õê…I“&�~üñGLŸ>_ý5BCC?6Z¥R™í·<Í›7ð×°ËmÛ¶aíÚµHJJB£FðòË/#66VZÿ½÷ÞCaa!ºwïŽ9sæà•W^Á”)S*Ü®"F£3gÎÄ·ß~ £Ñˆ×^{ ï¾ûn¥ËÖóúâ‹/°iÓ&õ:„……¡oß¾X°`UåuýúuÌœ9?üð”J%f̘QêPÜ3uöìÙÐh4 C«V­ðý÷ßWXÞ–òÜÖúgͱ&Mš„Æãƒ>¶éÚµ+æÏŸXLÑhÄ’%K°jÕ*¤¦¦Â××sçÎÅÈ‘#í^¾Ö~Çœ;w.víÚ…É“'ÃßߟA"ªÝ´Z-nݺe—} ‚ ÍåpåÊ\»vÏ'""²#ooo¼ð ˜={6nݺ…ùóç—ÙUýÂ… ˜2e ^}õUddd`ÆŒxöÙgѬY3�Àœ9s°téRLŸ>½{÷ÆâÅ‹ñä“OâÔ©S€ŸŸ6mÚ$¶lÙ‚””ìß¿_ 2¬^½K–,±*ÝkÖ¬�téÒ@ñ¤ýúõÃþólذï¼óÆŽ+Í¥tóæMüúë¯øå—_0}út©ËEÛUdÖ¬Yزe âââpïÞ=¼öÚkh×®† V©ò°ö¼\Ý=‰C ?!íÖM,X°À¬—gEåµ`ÁdffâçŸFFFF¹½úõë‡çŸ_~ù%-Z$ÍoUQy[Ês[ëŸ5ÇJMM… fÛ¥¤¤ ''Gú»¼ôÌ™3}ôæÌ™ƒÈÈH\»vMê kïòµErr2^}õUŒ1ãLJ««+ƒ DT»Ô¯_ßîûLHH@hh¨ôå#11Ï=÷\µzNxƒ XøDDT£}õÕWð÷÷Çœ9s°ÿ~lذ;v4['33  N§ÃüùóqàÀÄÄÄ ¨¨Ÿþ9bbbðÖ[o�âââàëë‹Ï>û ‹-Bÿþý±lÙ2äççÃÍÍ {öìAdd$0mÚ4üþûï¸wïúôéSn:ÓÒÒ°hÑ"ÄÇÇ#11¯¼òŠt÷{òäÉÒzS§NŬY³˜˜ˆ!C†HË5 6oÞlö¿ÛšíÊ£Õj±xñbÌœ9SêÚ¾fͬ_¿Þ¦F¨x^Û¶mñcǬ:¯ƒ‡ �¾¾¾(x‡^½zY]^�púôiøûû#00-Z´(7m~~~ ‚B¡ŽaMy[Ês[êŸ-DzFÉôhµZ,\¸}úôÁ›o¾ � ²kù> ƒÁ€M›6áàÁƒˆE¿~ýd ¢Ú£GvßçðáÙ±DDD&“É0cÆ ôïß/½ôúõë‡øøxDDDHëôìÙ!!!��•Jwww�®^½Šüü|³õ ÂÃÑ’’�èÝ»7d2:„¦M›BL:Ï<ó t:vî܉ÁƒÃÉÉ©ÜtÞºu ñññ ÄÔ©SiöþáÇ‘€Û·oøëIV¢°°°2»mWñ¼¿ÿþ{iÒèË—/KO½²–éy½ýöÛ¥Y™ôY*/1` .à£>²iü¿5å]Qž[[ÿl9–5J¦çêÕ«Ðh4<x°ÃÊ×^ÁÓòcˆˆˆˆˆª½ˆˆ=z:tÀ7ß|cÖ°³D«Õ�ÜÝÝÍ–»ººJÝÕ]]] aÆ:t(ÂÃÃa0pòäIìØ±£Ôxý’ºt邸øøRËA@tt4Ž?Ž &`Ô¨QX¹re…é®ìv¦ ?�xꩧЮ];i¹8¡µºté‚íÛ·C¯×› }ØôY">±ëý÷ßÇСCñá‡â_ÿú—ÝÊÛ^õÏQÇ*Y†%÷oÏò}2™ ‘‘‘ˆŽŽ®QQgˆˆˆˆˆ�‘ïܹ3.^¼hõ6-Z´€\.ÇÑ£GÍî9rƒ ’þ0`�þ÷¿ÿÁËË o¾ù&Ôj5"""°víZœ9sƪ! e9wîÖ­[‡={ö OŸ>ÐétÝN'''deeaäÈ‘v/ kÒ'“É*}‡»}ûöؾ};þýïcÑ¢Eøç?ÿ ¹\n·ò¶Gý³öXr¹Üìщ‰‰V×]'''ìÚµ &L¨Òò­H›6m0yòdiøFM"ÕJÉÉÉX¿~½tÇøÄ‰HHHÀ“O>iõ>ÜÜÜ0~üxlذGŽA~~>>ùädffâÕW_•Öëß¿?RRRðÛo¿IcËûõ뇯¿þ={öD½zõ*unnnÉd¸xñ"ÒÒÒ0sæL�Ås8b;‘Z­ÆÔ©S±víZ¬[·………ÈÉÉÁ‰'ìR6Ö¤¯k×®8uê”4Q¶µV¯^ëׯÃh4B£Ñ uëÖVl)o{Ô?kŽcÇŽá?þÀ–-[0uêT«ŽïììŒ×_û÷ïÇŽ;`0’’‚Ó§O;¼|ËS¯^=L›6 Ÿ}öY 00È@DDDDT‹eggcòäÉðööF@@�zõê…Q£FYÝu^ôñÇ£S§N0`�š6mŠ… bÅŠ—Ö …··7zôè!͔߷o_èõú‡šH¯Y³fxýõ×1mÚ4´nÝJ¥'NÄ{gØ};S|𢢢 ???Ø<áäoذaèС‚ƒƒ+nbjÕªUhÓ¦ 7nŒ#GŽ`öìÙv/o{Õ?kŽõ /ÀÝÝmÚ´ÁÌ™3ñßÿþ×ê4üßÿý^|ñEŒ;uëÖEß¾}qôèQ‡—oYFŒ¸¸8 42™¬Æ^Wd .¢¢¢°qãF›ž KD5ËòåË1zôè ×ãµ€ìmÕªUˆ‰‰A\\¢££™!DäXI«€Õ1@TaÝ5gÕ‘dĬچ¸è§Ý£S•&W‚�£ÑƒÁ�£Ñ½^/Mô¦Óé ÕjqöìÙRÚÓ7p÷î]ÂÛÛ»Òû)((@VVüüüª¼‘”““µZ ggg�ÅwüÅG:b;Sz½·nÝ‚ŸŸ_¥·m0¤9J>E«¬ôùø6‚Þ(å€BܹsõêÕ“Ö±Faa!rssáããóÈËÛšúgͱ222*ýä¯ÂÂBdff–¹ÿ‡-ߪ´sçN´iÓjµ*• NNNP(P*•ËåP(ËåÉd¥Îó×_…‹‹‹´ž¸]ÉצûR(Ðëõpuu•Úœ“ˆˆˆˆ¨–kÚ´)š6múÐûquu•z)Tµ’òY(¨ìv¦”J%š5kVeçeÌ×ñõõµy¿ÎÎÎ6%YÞÖÔ?kŽõ0wvvF“&Mª¼|G.ADDDDDDDvÁ Ùƒ DDDDDDDd 2‘]0È@DDDDDDDvÁ§Krrr —Ëáááa¶üÔ©S0 èܹócu¾Ž8¯ììlœ:u ÷îÝC»víвeËjs¾:999ðôô,õ˜L[FdeeÁÉÉ v{\iyud """"¢ââÅ‹8tè222`0 T*† �þøãètºGdX¿~=.^¼�P©T¨W¯ºuë†ÐÐÐJïÓÞç%V®\‰Þ½{£k×®P*«GS+''Û·oÇõëסR©`0ТE 6 ...6åqNNâã㑚š ¥R N™L†Æ#::ºÔ~Ôj5Z´hÐÐPVºƒ DDDDDTèt:lß¾AAA7när9Î;''§j—V??? 4·nÝ©S§???øøøT¸í¥K—nݺ9,}·nÝ‚V«EXXXµ 0äååá믿†——^ýuxzz"##6lÀ7ß|ƒØØX¨T*«ò877+V¬€»»;^yåøøø@¯×ãÆ¸råJ™euóæMœ8q;wîÄ”)Sj|t´¯¿þ/¾ø¢Yð§&✠DDDDDµÔ½{÷PXXˆnݺA­VC¥R¡C‡ðôô¬viU«ÕðóóC·nÝп�À7¬ÚöÒ¥KÒÝuGIOO‡R©¬6�HJJ‚ÑhÄØ±c¥2mРÆŽ‹û÷ïãäÉ“Vçqbb" Æ'v”J%1`À€2÷Ž>}ú ''·oß®ñuÐÑÖ¯_ &ààÁƒ5ú<Ø“ˆˆˆˆ¨–ª[·.är9®\¹‚Æ[\÷Æ8pà�rrrеkWDDDHï ‚€¤¤$œ:u <@Æ 1pà@4jÔ�°iÓ&øûû£k×®�Ї*üøã>|8|}}�‡†B¡0ÛoyêÕ« xn��¸páΜ9ƒ›7oÂÝÝ¡¡¡ �?~gÏž…Á`ÀòåË€AƒYu^999HHHÀåË—!—ËÑ»woi¿¦NŸ>C‡A¯×cùòåðööƨQ£°ÿ~èõz4iÒ‡Bhh(ÂÃÃKåWýúõѯ_?4mÚTÚ§¸mHH<ˆÜÜ\ôèÑaaaøaÏ^œI9‡¦~0tð xyy•J“ 8yò$:wî ggg³÷<==‚'N <<¼Â<ÉÉÉèÔ©ÜÝÝmªcnnnfeU™:XQý€øøxxxxà‰'ž¶Y±b €æÍ››åiYåqüøq$''#;;èß¿?ZµjA€S§NAtéÒ½zõ²¹ŽX+33sçÎÅ®]»0yòdøûû׸ë {2ÕR...hß¾=ñyÝŠ�� �IDAT­V[æz÷îÝî]»Ð¶m[„††bÿþý¸ÿ¾ôþ¡C‡päÈ„††bܸqðððÀªU«¤uêÔ©ƒóçÏKëŸ?ééé¸zõª´,99Ùê1ø§OŸPÜ-_lè`üøñhÙ²%öîÝ‹¢¢"�@HHš6m ooo 2Äl†ŠÎ+)) ùùùˆŽŽÆèѣѤI“2Ó€víÚA¡P`È!èÙ³'� 77—/_ÆñãÇѳgO[•_â¶W®\ÁO?ý„îÝ»£U«VØ·o6lØ�A‰ÌÌÌR½L¿z½Þ¬!nªqãÆÈÎÎ.·ñošÇ9990 ¢JÒëõøå—_àêê*•Ueê 5ùuÿþ}äææšm—žžn¶?Kåñã?¢S§NˆÅSO=…úõë�~þùgœ;wO?ý4Œ#GŽ˜õб¶ŽØ*99¯¾ú*¾úê+0È@DDDDD5ðaÃЧOüöÛoX¾|9îÞ½[j‚‚Œ=]ºtAÏž=!—Ë¥�Á`@RR:tè€îÝ»£Q£F1b Ž= �hÞ¼9nܸN�¸|ù2BBBšš �ÈÈÈ@AAš5kVn:óòòpìØ1|÷ÝwHLLDçÎ¥Fo·nÝÐ¥Kx{{#<<ƒׯ_P|GÞÃÃÎÎÎð÷÷—�ܽ{...ðôôD“&MÊ ‚Ô©SžžžËåð÷÷—zgˆ í1cÆ }ûöðòò²*¿DƒÏ=÷Z·nnݺÁh4ÂÇÇC‡Epp0‚‚‚¤ó,+È� ÜžnnnÁ¬a^^‹ûªS§ŽUu*==k׮ŧŸ~Ь¬,DEEY|…¥:hK~Yø(YGŽA`` ÂÃÃáåå…ÀÀ@Ô¯_ƒGEXXкukøûûã÷ß·¹ŽT†Á`À¦M›0aÂüôÓO5æšÂáDDDDDµ\ïÞ½ˆ-[¶`ÕªUxñÅÍîÈŠ=�@.—C­VÃ`0�(¾ƒ¬Óé̺úËd24mÚ��Èd2\»v uëÖ�„‡‡cݺu0¸xñ"‚‚‚,>Z177—.]’žzböþõë×qíÚ5äååIÉŠX:/1[¶lAff& €€€�›ó¶Q£FÒkóKÔ°aCi[q‚F±ë?P<'By=\]]�………e¾¯ÕjK=.²¼<÷¥Ñh¬:g•J???ddd AƒRW¦Ú’_•-½^-Z”ZW<ö™3g¤Þ YYYfÁ{Ôk‚ bÏœš€=ˆˆˆˆˆMš4Á„  R©ðÛo¿ÙÔ�Pêi�J¥Rjè«T*4mÚW¯^ÅåË—„&MšÀh4"-- .\(4(ÉÏÏãÆCddd©u·nÝŠ;v@©T¢uëÖvË“V­Za„ pss“îîÛ£ÁXQ~Ùƒ8qbVVV™ïgee¡aÆfòòXœŸÁÚF½§§'žxâ <õÔS8{ö,Ξ=[é:èèüƒ4¦OÙ(ù^pp0ºté‚.]º`РAèÓ§Cëˆi0eذaX¹r%Ì Õ,®®®hÔ¨îÝ»gScV&“áæÍ›fËoܸa6!aóæÍ¥ Cpp0 üýýqæÌܽ{AAA•Jsff&~ÿýwDFF"""¢Ü!¦=láãヱcÇ¢gÏž8zô(AxèÆ¿5ùõ°”J%Zµj…äääRi.**BJJŠÕó¨T*4oÞ¿þúk¹óv”%((mÛ¶ÅîÝ»‘ŸŸ_©:hm~Éd2i8Žø¾µå¡P(péÒ¥RïyyyA¡P@£Ñ U«VÒO`` Cë�´iÓK—.Å”)SÌz›0È@DDDDDÕÖÝ»w‘’’"5ÀÓÒÒššZªUQ´cÇŽHII‘æ]8rä Ð¥K³ Czz:ÒÒÒ¤.å8yò$üýýK=Á–Æ´lÈËË“ÿ'›�Š'9LKKÃlÚwrr2rrr ôz=4h`qn{æ—=ôë×<ÀÖ­[¥à@~~>6lØ�///ôíÛ×ê}õïßZ­ß}÷ÒÓÓßé¿}û6öîÝ[îvâ“<âãã+U­Í/???ܺu ÙÙÙ8þ<vïÞmuýéÚµ+®^½Š‹/Bddd == …ááá8sæ RRR ×ë¡Õj‘––æ°:R¯^=L›6 Ÿ}öY¥oçd """"ª¥4 víÚ…mÛ¶ÁÕÕ<@ûöíÍÑg">>ß~û-”J%”J%† föD___é.µØ5= �F£±Â¡5ʺu놽{÷bß¾}èÞ½;°ÿ~Ô¯_hÙ²%’““±dÉtêÔ C‡µjß§N®]»àää/// 8Ð.ù^2¿Änñå=¡²¼½½ñòË/cË–-øôÓOáî¼<Ô©S'N„Z­¶z_ 6ÄË/¿Œ;wbùòåprr‚Ñh„··w™óˆÜÜÜ0pà@lß¾§OŸF‡l®ƒÖÔ¯öíÛãÂ… Xºt)êׯѣGãË/¿´êÜúöí‹¢¢"lܸQ <ôïß>>>èÓ§ŒF#¶oß¹\AвeKŒ9ÒîudĈˆŠŠ2›3¢&’-\¸PˆŠŠÂÆË+-Ñcjùòå=zt…ëñZ@ö¶jÕ*ÄÄÄ ..ÑÑÑÌ"r¬¤UÀê *ˆ°îš³êH2bVmC\ôÓˆîÑ©J“+A€Ñh„Á`€Ñh„^¯—&zÓétÐjµ8{ö,"##–Žœœ nݺÒ$•¡Óé Ñh¬~ =iµZ( ©gC^^^©næ<€³³³´Ž5Ļ׎hø‰ùåææ½^¥RiqòK‘A�ôF@)VÞ4ÏÏÏGvv64 Ž?. Q FHHˆUÇ5ÍëììlxzzÚ¨xØ:hMýÊÏϯtYéõz”¹£ÑˆÜÜ\Ô©Sr¹¼Êꈭvî܉6mÚ@­VC¥RÁÉÉIú\Èår( ÈårÈd²R=.~ýõW¸¸¸Hë‰Û•|mº/…B½^WWW©½Áž DDDDDµ\ݺu¥§>< •JUæzU¡dc·¬qìå=ÎÑñι#ˆùUÙù"láææ&5‚ƒƒƒqçÎ9r¿ÿþ»Í“eªÕj³ÇtVU´¦~=LC_©T–ÀËåÒ˜UYGj"æQ-ãëë‹gžy†Avlj‰ˆˆˆˆˆˆÈ.d """""""»`ˆˆˆˆˆˆˆì‚A"""""""² ˆˆˆˆˆ7nÜÀíÛ·!‚MÛ­Y³+W®¬1é%"Çbˆˆˆˆ¨Û±c"""о}{ÃÛÛ§N²zû}ûöa÷îÝ5&½DäX 2ÕR˜8q"Z¶l‰k×®!##K–,A:uIzvíÚ…¥K—Ö˜ôQiJfQítáÂÜ¿o¼ñêÖ­ �xñÅYzâããqéÒ%¼ñÆ5"½DT{2ÕRþþþP*•سgO¹ëF|øá‡ D³fÍ0oÞ<‹û¬h}£ÑˆE‹!44žžžhݺ5¶lÙ‚/¾ø›6m‰'†üã•Nï'Ÿ|‚öíÛÃÇÇýû÷lj'ÌÖ™4ifÍše¶MXX~üñGiÙ{g·ß~ëׯGÇŽ±dɋ鷿ܝ_¿Ž &ÀÏÏÍš5Ê+X é±Ãž DDDDDµ”··7^xáÌž=·nÝÂüùóK =˜5k¶lÙ‚¸¸8Ü»w¯½öÚµk‡aÆ•¹ÏŠÖŸ3g>úè#Ì™3‘‘‘¸ví5j„ÐÐPüôÓO¸yó&,X�//¯J¥wΜ9Xºt)¦OŸŽÞ½{cñâÅxòÉ'qêÔ)��RSSKM™’’‚œœéï›7oâ×_Å/¿ü‚éÓ§£[·nÓo͹/X°�™™™øù矑‘‘VBbˆˆˆˆˆ_}õüýý1gÎìß¿6l@ÇŽ�Z­‹/ÆÌ™3Ñ·o_�ÅO“X¿~}™A†ŠÖ×jµX¸p!úôéƒ7ß|�$mïë닼¼<ôêÕ«Ré-**Â矎˜˜¼õÖ[�€¸¸8øúúâ³Ï>âE‹lÊFƒÍ›7£AƒÒù•—~kòêôéÓð÷÷G`` Z´hÁÊG%— """"ªÅd2f̘@ôë×III�€«W¯"??ßÿ=ŒÁƒãÌ™3¸víZ™ûªhý«W¯B£Ñ`ðàÁMoDD„´¾B¡@xx8RRRl>VXX˜`¨(ýÖäÕÔ©S±uëVôèÑdå£Ç{2"""pôèQtèÐß|ó """`0��O=õÚµk'­+NºXREë‹ï»»»;$½Z­¶Ìý»ººš …¨,Ké·&¯Fމ   ¼ÿþû:t(>üðCüë_ÿbå#ˆˆˆˆˆèñãííÎ;ãâÅ‹�Ї899!++ #GެpûŠÖoÑ¢œœœ°k×.L˜0¡Ôû2™ EEE•No‹- —ËqôèQ³ÞGŽÁ Aƒ¤¿år94ôwbb¢Udz”~kóª}ûöؾ};þ?{wE•ïÿÿUÝ=H $€  ,!e½"hFù3* ›1ƒŠÂ°ˆ æjÀà.†À�7 p‘á¢,„8€_df€@e Nöîêß–†,Í"jò~>mRU§ÎùÔI…‡õÉ©s^zé%ÒÒÒxñÅuãIµ¢×%DDDDDj¨;w²dÉ÷€ììl6mÚD×®]ðóó#))‰Å‹“™™IQQyyy—­ÖpAUåýýý9r$Ÿ~ú)«V­Âét²gÏvïÞ @ûöíÙµkßÿýUÅÄã?ÎÒ¥KÙ²e ùùùLŸ>“'O2bÄw=qqqlÛ¶ýë_¬X±‚¤¤$¯ú«²ø½é«ŒŒ rrr0M“ÂÂBZ´hÅ¢G2Q’ADDDDDª3gÎ0jÔ(ˆŒŒ$!!>}úx áŸ4idøðáØív"##+@±ªò/¿ü2 àÑG%$$„Î;³uëV�iժ͚5ã™gž¹ªx§M›F›6mèÞ½;5bƌ̙3‡¸¸8w™þýûLLL S¦LaÑ¢E^÷YeñWuíóæÍ#&&† °eË^yåÝ„Ríèu ‘ªK—.üðÃ9r„ï¿ÿž¨¨(ÂÂÂ<Êøùù‘’’Brr2¹¹¹Øívl¶Ÿ#æÏŸEåýýýyûí·ÝË9Úív Ã� 44”M›6qüøqêÔ©sUñ†„„ð׿þ•‚‚NŸ>íQÿÑÑÑìØ±ƒ'N¸'v,**ò(séuyU×¾aÃŠŠŠ8wîõêÕÓ (J2ˆˆˆˆˆHõÓ¨Q#5jTùƒƒÍFDD„÷U”÷÷÷§aÆå ¿æx ¬´ÌÅ+G\©Êâ¯ìÚýýýñ÷÷×M'Õ–^—‘ëBI¹.”d‘ëBI¹.”d‘ëBIáÈ‘#|÷Ýw¸\®+:oÁ‚Ì;W("€’ """""5ÚªU«ˆ'66–f͚Ʈ]»¼>ݺu¬Y³æ†ÄÚ¼ys÷å}zö쩨È/̦.©™ 6l÷ß?ûÛßðññaÅŠÔ®]û‰çã?æàÁƒ<ýôÓå_¾|9%%%�|ñÅ<ÿüódffÒ¨Q#€_,î+¹‘êNI‘êÛo¿åìÙ³<ýôÓ„„„�0`À€_,žÕ«W³ÿþ Ð[¶léþþĉ�Ü~ûíDGGÿjú´ªk©îôº„ˆˆˆˆH Õ¸qcl6k×®­°ŒišLž<™¨¨("""xõÕW+­³ªò¦i’––ÆwÜAݺuiÑ¢+V¬à­·ÞbÙ²edggÓ¶m[žþù«¾®?ü~ýúAÇŽ™={¶ÇññãÇóÜsϱdÉZ·nÍ›o¾ €Óéd„ DEEѼysfÍšEÏž=ÉÈÈðêú*º†œœ† ‚Ýn'""‚9sæèæ“jK#DDDDDj¨°°0ú÷ïÏ+¯¼Bnn.)))—½r0uêTV¬XAzz:§Nâ©§ž¢eË–$&&–[gUå“““yíµ×HNNæÁäðáÃÔ¯_Ÿ; 6pôèQRSS ½êë:rä]ºtáÏþ3K—.å…^àÑG¥V­Z�=z”;v°}ûvÆŽK‡�˜<y2sçÎeâĉtïÞÙ³g³qãFºwïîÕõ=øàƒå^Cjj*'Ožä³Ï>ãĉèæ%DDDDD¤úyï½÷hܸ1ÉÉÉ|úé§,]º”Ö­[P\\ÌÌ™3™2e ;wÊV“X²dI¹I†ªÊ3cÆ :uêÄèÑ£<^uçÇ$!!áš®iÔ¨Qîï“’’˜:u*›7oæþûïwï/,,dùòåÜ|óÍ�ñÎ;ïðä“OºÏŸ1c~ø¡{Ū®/22²Ükؽ{77&**ЦM›ê¦%DDDDD¤z2 ƒ‰'Ò­[7žxâ ºtéÂêÕ«‰çàÁƒäçç³páBV­ZÀ°ÛíåÖUUùƒRXXH=~öëÊÊÊbÓ¦M|÷Ýwî$ÂÅÚ¶mëN0\ˆ­   Ü‡a^]_E’’’4hß~û-¯½öš;A!¢$ƒˆˆˆˆˆTKñññlݺ•V­ZñþûïÓé W¯^“.^˜$òRU•¿p<88øg»—ËÅ AƒøòË/2d}úôaîܹUžwáU __ß Ë\i\лwo¢££™0a={ödòäÉŒ7N7(É """""ÕWXXwÞy'ûöíÊ^eðõõåôéÓôîÝ»Êó«*ß´iS|}}ùøã2dÈeÇ Ãp/QyµöîÝKff&k×®¥S§N”––zu^Æ ‰‰‰aÛ¶môêÕ €]»vqæÌ¯¯¯²kˆeåÊ•¼ôÒK¤¥¥ñâ‹/b±h~©~tW‹ˆˆˆˆÔP;wîdÉ’%ͦM›èÚµ+�~~~$%%±xñb233)**"//ìììr뫪¼¿¿?#GŽäÓO?eÕªU8NöìÙÃîÝ»hß¾=»víâûï¿¿êk Â0 öíÛDZcǘ2e �ÇŽ«òÜ^½z1cÆ FŽɘ1c=z4Øl6¯û£¼kÈÈÈ ''Ó4),,¤E‹J0ˆ’ """""R½œ9s†Q£FFdd$ ôéÓÇc(ÿ¤I“8p ÇÇn·IZZZ…uVUþå—_fÀ€<ú裄„„йsg¶nÝ @bb"­Zµ¢Y³f<óÌ3WuMî$A‹-°Ùl 6Œñãdz~ýúJÏ<y2Ï?ÿ<{÷¨ˆ÷ß§ÓIPP××WÞ5Ì›7˜˜4hÀ–-[xå•WtóIµ¥×%DDDDDj¨.]ºðÃ?päȾÿþ{¢¢¢ ó(ãççGJJ ÉÉÉäææb·ÛÝÙ˜?þ•÷÷÷çí·ßv/ëh·ÛÝ+†††²iÓ&Ž?N:u*½G—MæxAjj*/½ô~~~øûû0~üxêׯ_nÌøøøðòË/»··mÛÆÙ³giÖ¬™××WÞ5lذ¢¢"Î;G½zõt㉒ """""R}5jÔˆFUþà`³áýƒFåýýýiذa¹ÇÂÃïùš.ŒñB‚¡2Ë–-ãàÁƒÜu×]8p€Y³fѦMî½÷Þ+¾¾K¯ÁßßßðQ’ADDDDD¤šóõõå믿fÙ²eøùù‘À¸qãÜ#-D¤jJ2ˆˆˆˆˆˆP6ŸBbb¢:BähâG¹.”d‘ëBI¹.”d‘ŸÝ”)SøôÓO¯¹ž 0wîÜ ·Eä—¥$ƒˆˆˆˆH Ö·o_÷òŠ>¡¡¡îãO<ñ}ûö½ævæÏŸÏÎ;«,wêÔ)jÕªE¯^½Ê=¾nÝ:Ö¬YSáö¥:uêÄã?^îþ×^{M7€Èu¦Õ%DDDDDj¸¶mÛòæ›oº·-–ŸþÙ«W/Ç ‹eéÒ¥”––²qãFŽ?Nxx¸~@"¿!J2ˆˆˆˆˆÔpµjÕâÎ;ï,÷X¿~ýnh, .$>>ž/¾ø‚ÌÌLþøÇ?ê$ò¢×%DDDDD¤BãÇç¹çž»l{óæÍtéÒ…èèh^ýusLÓd„ DFFrë­·2kÖ,¯ÚÚ¿?Û·o'99™ØØX/^|î3''‡!C†`·Û‰ˆˆ`Μ9îc~ø!ýúõ#""‚Ž;2{ölsN'&L **ŠæÍ›3kÖ,zöìIFF†GŸLž<™¨¨("""xõÕW½n_ä·D#DDDD¤ú(8[öõ‹ ïÏ9ðïó_³ÀØycãu¹Àuþ«i–}œç¿–:Àá,ûzð;èÕóç‰Átþô)ÇќøÍ9Ìßÿþw6®ÿ”#FpâÄ &Žÿôùÿˆˆˆ� yêTÒçþ7/¿ü2 Ìœ9“´€E]@TDcâã:пßøÓŸþÄÞ=ÿ-ZToñWxü’ý©Ó§qò‡ïùlãNœ8A@@€ûؑÇèÒé^þüòd–.]Ê Ï?Ç£ø=µjÕ`ò¤‰ÌýïÿfâĉtïÞÙ³g³qý§tïÞÍÝÜÔ©SY±béééœ:uЧžzŠ–-[’˜˜XÖ~j*'Ožä³Ï>û©}%DDDDD~A§—}Ý·±ìãÕƒ~àaØ<¶ì¼ñ1»*ø8óü×3ÀèŸi’BÓÁç›6pSh÷®%K–еkW÷q÷çüöÉ޳iÓ&š7oNii))¯&³þ“ÿcðàÁ”––òö›i <˜áCŸàÝwÞbÝÚ5¸œ¥?ÕsY¾ÅÅ¢¿Îç±ÇÃp9é÷û¾LøÓX/\ÀŸÿügx/Çc»œë+÷ø%ûwïüŠÆш¦Q?•F|Ê}ZÒ¨‘L2™ÍŸoâþû裡¨ˆwޚɓO>é.7ãõi|¸b.gY’¢¸¸˜™3g2eÊ:wî ”­Š±dÉw’a÷îÝ4iÒ„¨¨(š6mªßeQ’ADDDDä×°uÙ׿!~ wçìÿ7d‚»‡@³àœ`¸‚‘ –ŸéÝ-6îl×÷Þ{Ͻ«qãÆ?µg±ýô9¿}÷=h~[ �>~6‚kסÄa‚ÅÆ‘ÜΞû7mÛÇyÆl±aX}*¼ŽÍYY>’KÏ9{îßÕ⮄{Yœ¹”)S“1 £Âx<¶Ë¹¾r_²?iôs 4ˆoîåµ×^s'.ÈÊÊbÓ¦M|÷]ÙÏ¢¨Ä¡ ¨„„{;ÿÔ†ËpÇ|ðàAòóóY¸p!«V­àÀØíöŸ’II :”»îº«ÜöE”dù¥Ä„øA^>è!:âÛüI†ó §³ì«ÃQö}I ”–Bq1ø}ëÏ”d°T«61-c+<îþ”·}ɾ‚¢b°X »¹^…eʳpñÿ€ÅJ½.O@|±•„„ïã¹H­:ä]v¼¸ÔAP­Úîý½ûô%ºù­L˜0ž<ÈäÉ“7n.—‹Aƒñå—_2dÈú<ò{æ¦Ïs·Y+¤X¬øúüÔ†éƒóüˆ†^½zѲeK÷þ÷÷½{÷æ¶Ûn㥗^¢gÏžîöE~k4ñ£ˆˆˆˆˆ\7·ß~;aaa|õÕW?=ÐSTTTá9EEE,_¾œ7ÞxƒãÇ»?‡¦V­Z,Z´èªãiܸ1û÷ï÷Øgš&GŽ¡aÆûcccY¹r%/¼ðiii˜¦ÉÞ½{ÉÌÌäÝwße̘1ÜsÏ=ç4lؘ˜¶mÛæÞ·k×.Μ9ãÞŽŽŽÆ××—Ó§OÓ»wo÷ÇýJJ%í‹(É """""5–atíÚ•ôôt6lØÀŽ;xä‘G(,,Äår•{ÎG}DII   N:îÏ-·ÜBŸ>}X¾|9ÅÅÅWOß¾}Ù¿?S§NåÔ©Sœ9s†W^y…ââbî½÷^w¹ŒŒ rrr0M“ÂÂBZ´hÅb!((Ã0Ø·oÇŽcÊ”)�;vÌ}n¯^½˜1c#GŽd̘1Œ=š€€�l¶²ã~~~$%%±xñb233)**"//ììì*ÛHII¡{÷îepz±-¢$ƒˆˆˆˆˆTcÇŽ¥´´”ž={òÐC1tèPêÖ­ûÓ¼ —X´h?ü0µk×¾ìØO<ÁÙ³gY³fÍUÅÒµkW&MšÄ´iÓhÒ¤ Mš4áwÞaÖ¬Y„……¹ËÍ›7˜˜4hÀ–-[xå•W�ˆˆˆp'Z´hÍfcذaŒ?žõë×0yòdžþyöîÝKQQï¿ÿ>N§“   wý“&MbàÀ >»ÝNdd$iii‚¡LÊ�� �IDATU¶°oß>²²²p8^m‹ü’4'ƒˆˆˆˆH öÁTz|þüù•nƒç_õZ¶lÉ·ß~Knn.õë×Çb±ð»ßý®Â6–/_^á±»îºËãU oâ¹Ô„ =z4À××—&MšàçççQfÆ qîÜ9êÕ«çq,55•—^z ???üýý?~<õë×ÀÇLJ—_~Ù]~Û[8{ö,Íš5sïóóó#%%…äädrss±Ûíî‘Úw8äçç_Öþܹs™;w®Çö{sæb³”\DI©v.^=á—DëÖ­+-ãïïïN"\êâIw‚`Ù²e<x»îº‹0ëí·hÓ¦Çëî0›ˆˆˆ Û¿xôƒÈo‘’ """"""×À××—¯¿þšeË–áççGBBã^Sáë!"Õ™’ """"""× 11‘ÄÄÄŸv˜N05?‚ÔLšøQDDDDDDD® %DDDDDDDäºP’ADDDDDDD® %DDDDDDDäºP’ADDDDDDD® ­.!""""òñÍ7ߨ~ .¬.a±ÅZeq§Ó‰ÃáÀf³aµzQÞl°j•L9/&&æW‡’ """""zˆëII©Áôº„ˆˆˆˆˆˆˆ\J2ˆˆˆˆˆˆˆÈu¡$ƒˆˆˆˆˆˆˆ\J2ˆˆˆˆˆˆˆÈu¡$ƒˆˆˆˆˆˆˆ\J2ˆˆˆˆˆˆˆÈu¡$ƒˆˆˆˆˆˆˆ\J2ˆˆˆˆˆˆˆÈu¡$ƒˆˆˆˆˆˆˆ\J2ˆˆˆˆˆÔ`}ûöÅß߸óÎ;yÿý÷“×òÄOзo_ýPE~AJ2ˆˆˆˆˆÔpíÛ·gÓ¦ML™2«ÕÊÓO?ÍîÝ»Õ1üñǼýöÛûzõêÅÃ?¬¨È/Ȧ.©Ùj×®M\\qqqÜzë­$&&²mÛ6Zµjõ«yõêÕìß¿Ÿ§Ÿ~Ú½¯_¿~úaŠüÂ4’ADDDDDÜš4i€Ãá�`üøñ<÷Üs,Y²„Ö­[óæ›o`š&Ó§O'66–zõêÑ­[7²³³=êºpîÊ•+騱#v»¤¤$JJJÜeLÓdòäÉDEEÁ«¯¾Zn·ÿÖ[o±lÙ2²³³iÛ¶-Ï?ÿ¼GYoëÎÉÉaÈ!Øív"""˜3gŽn�‘k¤‘ """""â¶`Á�ÚµkÀÑ£GÙ±cÛ·ogìØ±tèЀäädÞ~ûmÆŽË=÷ÜÃÌ™3éÚµ+»ví"22Ò}nvv6»ví"))‰ììlfÏžMll,Æ `êÔ©¬X±‚ôôtN:ÅSO=EË–-ILL¬°}›ÍƆ 8zô(©©©„††ºË¸¯¥ªºSSS9yò$Ÿ}ö'Nœ @7€ˆ’ """""r-Ž;FZZ«W¯fóæÍ :”öíÛ»²|ùrn¾ùf�JJJøË_þÂàÁƒyöÙgHOO'<<œ7Þxƒ´´4÷¹AAA¬ZµŠÀÀ@ú÷ïÏ¡C‡øä“O6lÅÅÅÌœ9“)S¦Ð¹sgw’cÉ’%îD@y턇‡óã?’Pî5yS÷îÝ»iܸ1QQQ4mÚT7‚ˆ’ """""r­rssY½z5QQQ$%%ñàƒzoÛ¶­ÇþÁƒÉÏÏ'>>Þ½ÏjµÇž={<Îmܸ1u¥¥¥aš¦»ž… ²jÕ*�8€Ýn¯´}oxSwRRƒ âÛo¿åµ×^s'#DDI¹JíÚµcõêÕ^—/.. 88Øc`` yyy•žk±X(**Â0 œN'P¶*DË–-ÝeBBB®ù𼩻wïÞDGG3aÂzöìÉäÉ“7nœn%DDDDDäFiÚ´)‹…­[·Ò£G÷þ-[¶pß}÷Uznvv6ÑÑцAtt4¾¾¾œ>}šÞ½{_Q †axL y)oëŽeåÊ•¼ôÒK¤¥¥ñâ‹/b±h~|‘«¥ß¹"AAA<þøã,]º”-[¶ŸŸÏôéÓ9yò$#FŒð(»uëV>ùä lÙÉÏ?ÿœ¡C‡àççGRR‹/&33“¢¢"òòò.[¥¢<íÛ·g×®]|ÿý÷å÷¦îŒŒ rrr0M“ÂÂBZ´háN0¤¤¤Ð½{w÷D’Um‹ˆ’ """""r•¦M›F›6mèÞ½;5bƌ̙3‡¸¸8rÑÑÑLŸ>zõêñûßÿžGyĽ²À¤I“8p ÇÇn·é1qdEiժ͚5ã™gž)·LUuÏ›7˜˜4hÀ–-[xå•WÜÇöíÛGVV–{)Ϫ¶Eª#Ó4)--¥¨¨ˆââbJKKq¹\•ž£×%DDDDDj°>ø ÒãóçÏ/wHHýë_)((àôéÓØív ø¬ÜM7ÝÄ|à^"òÒyüüüHII!99™ÜÜ\ìv;6›­ÊöCCCÙ´iǧN:å–­ªî 6PTTĹsç¨W¯žÇ¹sçÎeîܹ^o‹T·äBII %%%äççãp8°Z­S·n]‚ƒƒ Äjµ*É """""×O`` Çê©ju›ÍFDDÄ·^e™Êêö÷÷Çßß_?H‘óùùù|ó¯“,ÝžÇW‡ ÎX¨[ߟ‡ý›x{.·F†Ahhèå¿oêBù9´iÓÆ½…ˆüú9NΜ9Ã{;Ââ EpK(Ü7…ðC°ùvîwpÿ¹3$ü{-[¶¤V­Zu(É """"RlÝ ›6ý*ByÀb””šõ30Mp™`XÊ®¿ †ib5M ‹—å]`ua�F ê׎¡S'ýŽÿL\.ùùù,ü[‹³ éüÐíl<nB@„úq[ˆ?MƒmÜâoáà©ÚääðOš7oî‘hP’ADDDD¤:Ù¸þô'õÃoˆ…+›‘ÿJËWãÆ)Éð3r8Ê=ÃS¾üñÉÌÀZ„Û þçP1µü}hh#,ÐÐ@_ë‘sØÊ¿Žì%,ì·Ür‹»%DDDDDDDj¸ÒÒR>Ûu†¶-R÷¦Z˜>þ–ZàûRÛ|¨eó!ÈLJ�?|ý!¬A‡rëyâ„G=J2ˆˆˆˆˆTW^þËp]ôº„Qõ˜Ó41M‹Å‚Å‹×%LWÙÇb”}ªµ_Ñë?ÕÃá ÷„É]-jáïïK©aÅá²r‹ÕB°Í‚¯Å‚Õ¬`µB`­@¾sÖ&/晴 """""5BçÎðê«^=räV«•úõë—»åÏmÁ‚”””0dÈß~¿›N0`±ÅZuNÂéÄép`ØleOoU•wó|£ÚÏÉðÚkJ2ܨÛÖ4Éÿ|ü±Z¬˜†‹Å –Í `Z,˜8-à4ÀðµrÎ𧤤ģ‹ºRDDDD¤æZµjñññÄÆÆÒ¬Y3ÂÂÂØµk—ûøO<Aß¾}ö8Ö­[Çš5k®©Žkß¾}ÝK_†……qçwòþûïÿ&þ7ªÏä·¡¸ÔY–¸2 \ç÷¸Ê[¦iàpA‰JL(q8MÓ4=êÐH‘ª  €aÆqÿý÷ó·¿ý V¬XAíÚµÝezõê…ÃáøÕÅþñÇsðàAž~úé_$ÖöíÛóú믳}ûv222xúé§i×®­ZµúÕþ¼é>“_?§Ó.—ËÀ…Ó—Óe¡Øá¢Ä§A© —‹Rçåu(É """"RC}ûí·œ={–§Ÿ~š� àQ¦_¿~¿ÊØW¯^Íþýû=˜od¬µk×&..ޏ¸8n½õVÙ¶mÛ¯:ÉðK÷™üú¹\.. ¦ ¦ËàßNµÍ²ä‚Ã,K0X�.JÌËëÐë"""""5TãÆ±Ùl¬]»¶Â2ãÇç¹çž»l{ýúõ$$$ФIfÍš…Ãáàü#5¢wïÞüóŸÿtŸóŸÿùŸL:Õ½mš&mÛ¶å“O>©°Ý?ü~ýúAÇŽ™={¶ûØ[o½Å²eËÈÎΦmÛ¶<ÿüóåÆjš&Ó§O'66–zõêÑ­[7²³³Ë½¾Í›7Ó¥K¢££yýõׯ¨›4iàp¡Î%K–кukÞ|óÍ+ŽgåÊ•tìØ»ÝNRR’Ç{ï¦i2yòd¢¢¢ˆˆˆàÕKæÝ(¯ý+é³ÊêÎÉÉaÈ!Øív"""˜3gŽ~‘ª›åü¤¢°.|m¾Vðµ‚Õ…íü÷þVð-'£ ‘ """""5TXXýû÷ç•W^!77—””W%�Ž=JAAÇöW_}ŶmÛxî¹çÈÊÊâ…^`ݺu4lØ÷Þ{çž{Ž9sæðÚk¯pèÐ!\.—G½{öì!//¯ÂØŽ9B—.]øóŸÿÌÒ¥Kyá…xôÑG©U«>ø 6làèÑ£¤¦¦Zn¬ÉÉɼýöÛŒ;–{™3gÒµkWvíÚEdd¤ûœ¿ÿýïlܸ‘#FpâÄ &NœÈ#<BDD„Wý¸`Á�Úµkç®sÇ—[ÙžýwÆŽK‡*端¾¢aÆîs³³³ÙµkIIIdgg3{ölbcc6l�S§NeÅŠ¤§§söô)žzê)Z¶lIbbâOíïØÁöíÛÝíÛl6¯úìâºOº¼îÔÔTNž<ÉgŸ}Ɖ'Ð/R5bX̲¯¦ JMÅ&›Pj”8Ávþ5‰òF2(É """"Rƒ½÷Þ{4nܘääd>ýôS–.]JëÖ­+=§¤¤„+VP¯^=î¸ãfÍšÅí·ßî­°víZ>ÿüókŠkÔ¨Qîï“’’˜:u*›7oæþûï'22’ððp~üñG*Œñ/ù ƒæÙgŸ ==ððpÞxã ÒÒÒÜeOž<ɦM›hÞ¼9¥¥¥¤¤¤°~ýz\a|ÇŽ#--Õ«W³yóf†JûöíÝÇ Y¾|97ßîU<©©©îsƒ‚‚XµjôïߟC‡ñÉ'Ÿ0lØ0Š‹‹™9s&“&O¡sçÎX²$Ç’%K܉�öo¾Ù½¯ª>»P÷”)eu_H \\÷îÝ»iܸ1QQQ4mÚT¿@ÕŒq>±à4²¥RMø·óü‚)&;ÁçB’ÁÎrædÐë"""""5ù¡Â0˜8q"ëׯÇårÑ¥K¾øâ‹JÏiÕªõêÕ 00€ÿøÿpÀYÞÓÇÊÊÊ"99™qãÆPTTäõ¹$??Ÿøøx÷>«ÕJ\\{öìñ({÷ÝwÓ¼ys�|||¾lY¾Kåææ²zõj¢¢¢ÈÌÌä­·Þò8Þ¶m[ü+‰§qãÆî~½Pׯ1MÓ]ÏÂ… éÑ£=zôà믿æðáÕ¶%}VYÝIIIüïÿþ/wÝu7nÔ/P5äºè¿¸ Ð¥.0qaq¹°\”d€«œ%T5’ADDDDDˆgëÖ­´jÕŠ÷ßßãaø†?ä¸\ 4ˆ/¿ü’!C†Ð§OæÎ{Euì±?00°Ò×4¼Õ®];V¯^}]â9}út¥çZ,ŠŠŠ0 üéÕ«mZµÄzþ!ïÂÄ×ââº[¶léÞqݽ{÷&::š &гgO&OžìNIõ`1À°€Å«a1𵀆VkÙÇâÂ}ÿ)É """""— ãÎ;ïdß¾}×÷¡Åb¡°°Ð½½yóæJËïÝ»—ÌÌLÖ®]K§N(--½¬Œa•Ž6hÚ´)‹…­[·Ò£G÷þ-[¶pß}÷Ýð¾­,žnݺUznvv6ÑÑцAtt4¾¾¾œ>}šÞ½{—ûW‘ªúìÒº+ËÊ•+y饗HKKãÅ_ÄbÑ ùêÀ0Ê’ 6Ëù¹ph”Môh³øXÁçü¤PþĺDDDDDj¨;w²dÉ÷_Ù³³³Ù´i]»v½®íÄÅűmÛ6þõ¯±bÅ ’’’*-„aìÛ·cÇŽ1eÊ l„ Ú·oÏ®]»øþûï+¬ãñÇgéÒ¥lÙ²…üü|¦OŸÎÉ“'1bÄ ïë+‰gëÖ­î•7V¯^ÍçŸÎСCðóó#))‰Å‹“™™IQQyyy—­RQžªúÌ›º322ÈÉÉÁ4M iÑ¢…;Á’’B÷îÝÝIVµ-¿N¶ó‰ëù&¬V°œ_QÂïüо¾›UI9ïÌ™3Œ5а°0"##IHH OŸ>×}ø{ÿþý &&&†)S¦°hÑ¢JËGDD0räHÆŒC‹-°Ùl 6Œñãdz~ýz�iժ͚5ã™gž)·žiӦѦMºwïN£F˜1csæÌ!..îéoo㉎ŽfúôéÔ«Wßÿþ÷<òÈ#î•%�&MšÄÀ>|8v»ÈÈH‰,+âMŸUU÷¼y󈉉¡AƒlÙ²…W^yÅ}lß¾}dee¹—ò¬j[~} ,Ö‹’ >–²Ä‚ÍR–hðµ­,áà£%,EDDDDä‚.]ºðÃ?päȾÿþ{¢¢¢ ó(3þüJ·ÃÃÃ/›ñÂÒ•?4ïØ±ƒ'N¸'#¼ôœKëMMM套^ÂÏÏ�ÆOýúõ eÓ¦M?~œ:uê”[GHHýë_)((àôéÓØív è´]ð1Qž>ø ÒãóçÏóòéŠâ¹t’Ì›nº‰>øÀ½Dä¥ó8øùù‘’’BÊ«Éÿ.»ÝŽÍf«ôš¼í³ u'''“›{yÝ6l ¨¨ˆsçι'ÿ¼`îܹsgTµ-¿N–óɋ맑 >}|Ï',.W¹#”d©á5jD£F~öv®tµƒK'3¼`¸4ÉQ•ÀÀ@Õ~iÞÆSUÙl6"""®¸}oú¬²ºýýý݉©^ X/|ÎOìèkÛùQ >Vðµ¹ð;Ÿ\ðq/5¡$ƒˆˆˆˆHõ·u+¤¤¨n4Ó—y~ŠþªßP7L«ibX, ;}ºìu‚J~n†«ìÐ0�£š÷å¦MºŸn0Ëù$Ã…‘ ¶ó¯LØÎb¸0¢Áâ*;¦$ƒˆˆˆˆHM±qcÙG~Ýuü4YÞ=v®]ëUy‘ëz/çï¯ó_ ,V6‹ ëO‰_kY²K¯KˆˆˆˆˆˆˆH¹L¸�\àrÿj8]³lN© ³,É`š—ס$ƒˆˆˆˆHuÒ±#Œ«~ø%¹.z]¨zÌiš˜¦‰Åbq/YÕƒ é:ÿ×f£õk§Nº·nP¢Áá§Yö½Ó‡œN(9Ÿ`(=?¯i©’ """""Õ\çÎeùŸÒœe«KXl`±VYÜåtât80l¶²©ü«*þÁϰPýçdÊe–Ý[Îó£LÓE©³,™PjRö½ŠÍ²9J†’ """""""R>óB‚Á³ì5‰R'”8ËF4”˜6‡ (;v)%DDDDDDD—ë¢W$(û¾ÈU6ŠÁé,Áàë› ¸ôº„ˆˆˆˆÈoÚ7ß|£Nø-¸Â×%œN'‡›Í†Õ‹×%œ®²÷âm°êu 9/&&æºÔSì40/Ì¿à0(. üè~ÅðuáÀÀÀ$¿DI‘ÿ!J2ˆ”Ç0Êî)«áÂf‹áÂÇ�Ó>°ù¸ð±Zðó—ËÀ×¢$ƒˆˆˆˆˆˆˆ”ÃjXp_¹Ä…Åbàc…@‹ «üŒ²ÍâÂ0]ØÊɉ)É """""""X¬`à:ÿ«,†›aÁ×âÂj¸°Z\Ø 0\`1ÌË–]µ¨EDDDDDDj6‹Å‚¯Ÿ‹âü"L— ˜¸L““‡—ËÄÀ‰aº°8Á,qD1¾¾¾žõ¨+EDDDDDDj6›ÍFDŽ}wGi)¥¥NŠL“³“|Ó¤Ðé Ðá Ô NžË§y„„„xÔ£$ƒˆˆˆˆˆˆH çããC÷va|ùÿ޳÷È)NæsàD>šü£ÄÉ™B?”p® €¼s…=zš¦µò¸ùæ›=êÑœ """""""5œÍf#Ò^—Ø'™“±“.=cØpĵƒÁb°ÅfÐÆé¤~‰ãÔ9:|Gt£0ÂÂÂ<ëQWŠˆˆˆˆˆˆÔl†aÄ€û#(qå±l„Ö°"¸©6üèÃÎÒbrl&Ã#$¾‰M›6%00У%DDDDDDD«ÕJhh(O=ìG—V'ùŸ-gøêà÷œ9wŽºv?º61è -"o"""‚ºuëâr¹<êP’A¤*))aÿþýlܸ‘Î;Ó¬Y³Ëf…©Ê”)SHHH [·n×Tæ—ŽñJþêÀÔ©S‡úõëc†ûØ‚ ())aÈ!^×wáœAƒ]uL—¶{5qˆx$ l6êÔ©CÛVÁÄÞÖ€üü|V«•àà`êÖ­Kpp0X­V‡ÇùšøQ¤Ú¿?}ôõêÕãСCäææªSDDDj¸S§NQ«V-zõêåõ9óçÏgçÎ×T¦oß¾„‡‡sêÔ)ý;wîÄßߟÂÂÂkº.ob¬JNN½zõ",,ŒN:M:uèÚµ«»ÌºuëX³fÍÕ{5çTUÇõ¨SÄb±@ݺuiذ!‘‘‘4iÒ»ÝNhh(X,å§”d©²²²ˆëØ‘öÚ‡¯¯:EDD¤†[ºt)¥¥¥lܸ‘ãÇßжϞ=ˤI“~•ýrôèQ:tè@nn.YYYüðÜ>}šåË—§Gª}²ÁÇÇüüüðñññÁ£$ƒˆ�pß}÷É­Ío¥Q£F„‡×W§ˆˆˆÔp .$>>Ó4ÉÌ̼¡mûúú2oÞ<²³³uý2mÚ4JJJø¿ÿû?Z·naøûûÓ­[7^}õUÝ8"—P’A¤²Ûí„……bš&ÿþ÷¿/›¬EDDDj–ýû÷³}ûv’““‰eñâÅ—•1M“ &É­·ÞʬY³®ªLy{ì1BCC=zt…ÿ_bš&Ó§O'66–zõêÑ­[·Ë’ÞÆ8yòd¢¢¢ˆˆˆ¨4Qàt:ÉÈÈ`À€ÜrË-WÔ§ÞÄ{ÁÊ•+騱#v»¤¤$JJJÜÇ>üðCúõëGDD;vdöìÙ^ÇðÔSOñÌ3ÏxìûÇ?þAûöí9sæŒn|Q’AD®___jÕªEii)V«›MsÀŠˆˆÔd‹-"**Šøøxú÷ïÏÎ;Ù»w¯G™äädÒÓÓ?~<+V¬`×®]|÷ÝwW\¦<uëÖ%%%…íÛ·³`Á‚rË$''“ššÊ“O>ÉÇŒÝn§k×®:tèŠÚŸ:u*+V¬ ==3f0cÆ V­ZUn›GŽ¡¸¸˜:\qŸz/ÀÞ½{IKK#))‰~ýú‘žžNFF†G ]ºtaݺu$&&ò /ðã?zC»víÈÈÈðH(Ì›7ððpêÖ­«_”d‘ëËår±hÑ"ú÷ïaôë׋Åâ1š¡´´”·ß~›2|øpbbbx÷ÝwiР{ä7e*3`À�î½÷^&L˜@^^žÇ±’’þò—¿ðØcñì³ÏÒ®];ÒÓÓñõõå7ÞðºýââbfΜÉðáÃéܹ3}úôáî»ïfÉ’%寔““”½ÞÄ{APP«V­¢ÿþ¤¦¦rß}÷ñÉ'Ÿ¸5Š#Fмys’’’(..fóæÍ^ÅѧO Ã`ùòåî>Z¸p!Ô/J2ˆˆˆˆˆÈõ·yóf>LÏž=9{ö,Üu×],^¼Øýp~äÈΞ=KÛ¶m/;ÿÂ$pÞ”©ÊÌ™3ÉËËcêÔ©û<H~~>ñññî}V«•¸¸8öìÙãuûêY¸p!=zô G|ýõ×>|¸ÜxBCC8}úôeÇV­ZÅ„ Ê=Ï›x/hܸ1îí¶mÛ²qãFLÓtïËÊÊ"99™qãÆPTTäUÖ­[—x€E‹°fÍœN'¿ûÝïtãËÏFc¤EDDDDj°… Pn"!!‚‚�ÂÂÂ*¬Ç›2U¹í¶ÛxöÙgIMMåŽ;îpï/.. 88Ø£|`` {Ôƒ7í;N�zõêEË–-ÝûCBBÊ-pÙ«#�;vì`Á‚$''_vÌ›x+b±X(**Â0 \.ƒ âË/¿dÈ!ôéÓ‡¹sç^QŸ0€¾}û’““CFFýû÷Ç××W7¾ül4’ADDDD¤†***bùòå¼ñÆ?~Üý9|ø0µjÕrÿüöÛo',,Œ¯¾úÊãAú⿨{SÆãÆ£aÆLœ8ѽ¯iÓ¦X,¶nÝêQvË–-4kÖÌëö£££ñõõåôéÓôîÝÛýéÚµk¹±ѵkWfÏžM~~¾××àM¼ÉÎÎ&::Ã0Ø»w/™™™¼û3†{î¹çŠÆ÷Ýwaaa¼ñƬ]»V¯Jˆ’ """""òóøè£())aÀ€Ô©SÇý¹å–[èÓ§Ë—/§¸¸Ã0èÚµ+ééélذ;vðÈ#PXXè~¥Â›2Þ --cÇŽy<ì?þøã,]º”-[¶ŸŸÏôéÓ9yò$#FŒðº}???’’’X¼x1™™™‘——WéÒ™ÿõ_ÿÅ™3gxàRíSO�� �IDAT8pà€G‚¦"ÞÄ{ÁÖ­[Ýs0¬^½šÏ?ÿœ¡C‡ºë1 ƒ}ûöqìØ1¦L™àÑ7Uñññáø³fÍ¢uëÖÄÆÆº¥¤¤Ð½{w÷(ª¶E”d‘ -Z´ˆ‡~˜Úµk_vì‰'žàìÙ³¬Y³€±cÇRZZJÏž=y衇:t(uëÖõ˜oÁ›2ÞèÑ£½{÷öØ7mÚ4Ú´iC÷îÝiÔ¨3fÌ`Μ9ÄÅÅ]Qû“&MrOi·Û‰ŒŒ$--­ÂXÚ´iÃçŸNQQ-[¶Än·Îܹs=Ø/åM¼P¶ÄôéÓ©W¯¿ÿýïyä‘G6l�Œ9’1cÆÐ¢E l6Æ cüøñ¬_¿Þëþìß¿?Àe£öíÛGVV‡Ã«mo3fÌp 8>ø€áÇ«GDª©Ù³gÓ·oß*Ëéß¹ÞæÍ›ÇàÁƒIOOgРAêùy}12ÃÀtˆ÷îßœy[v2xÞ‡¤zˆAwµ¹¡áº\.\.¦iât:1M‡ÃÓ餤¤„ÒÒRŠ‹‹ùæ›oxðÁ]œ››Kýúõ±X,×Tæjpúôiìv{…É oÚw8äææb·Û½^Îûܹsìß¿Ÿ›o¾™FUœ<1`:Àb£ ¨¸ÂxüñG, þþþ?~œàààrç‡ÈËËÃÏÏ�Ž~wŒ›o©ÍV/ò7YYY$&&rèС çŸêá£>"&&???|||ðõõu/Yo±X°Z­X, øì~ܱcîrλôû‹ë²Z­8ÝÏšøQDDDDD¼æÍrŽWºäã• ôXájÛ·ÙlDDD\QÛµk×.wõŠ«·V­Z@Ù„”7ÝtS…ÉŽKõë×ÇazCZZ=ô rCèu ‘jêܹs�üçþ§:Cnd©¦j×®ÍÒ¥KÕrÃh$ƒˆˆˆˆˆˆˆ\J2ˆˆˆˆˆˆˆÈu¡$ƒˆˆˆˆˆˆˆ\J2ˆˆˆˆˆ�¥¥¥ìÝ»—£GbšžË,X°€¹s窓Ê1eÊ>ýôSu„J2ˆˆˆˆˆÔxGŽá 44”{ï½—æÍ›B§NÜeÖ­[Çš5k~“××·o_ÂÃÃ9uê”Çþ;wâïïOaaá5Õ?þ|vîÜyUç6oÞÿ ?={öÔ *¿)Z]BDDDD¤;zô(íÛ·'<<œÍ›7Kqq1›7ofݺuÕæ:Ïž=ˤI“xçw~Uq-_¾œÂÂBÛ·oçÅ_$33“Fe«Cˆü–(É """"RƒM›6’’Ö®]Ë-·Ü€¿¿?ݺu£[·nÕæ:}}}™7oC† ¡mÛ¶¿š¸Z¶l‰ÓéÄáppæÌ�n¿ýv¢££usÊo’^—©¡œN'<öØcîCU6oÞL—.]ˆŽŽæõ×_÷8öá‡Ò¯_?"""èØ±#³gÏö8>~üxž{î¹Jëp:L˜0¨¨(š7oάY³èÙ³'î2¦i2yòd¢¢¢ˆˆˆàÕW_­2îÇ{ŒÐÐPFËå*·ŒišLŸ>ØØXêÕ«G·nÝÈÎξ¬Ì„ ˆŒŒäÖ[oeÖ¬YåÖs¥ñUæ©§žâ™gžñØ÷üƒöíÛsæÌw¿®\¹’Ž;b·ÛIJJ¢¤¤äg‹IDIñpäÈŠ‹‹iß¾½Wå¿ýö[žyæúõëÇ Aƒ˜8q"‡ö¨¯K—.¬[·ŽÄÄD^xá~üñG÷ñ£G²nݺJë˜<y2sçÎåùçŸgåÊ•ìß¿Ÿ7ròäIw™©S§²bÅ ÒÓÓ™1c3fÌ`ÕªU•Æ^·n]RRRؾ}; ,(·Lrr2©©©<ùä“|üñÇØívºvíÊ¡C‡<ʤ§§3~üxV¬XÁ®]»øî»ï<깚ø*Ó®];222Ü#�æÍ›Gxx8uëÖåèÑ£¬]»–´´4’’’èׯéé鉙듈’ """""â!''€ xUþäÉ“üÏÿü#FŒ`ìØ±øøø°~ýz÷ñQ£F1bÄš7oNRR’{noë(**âwÞá±ÇcÔ¨QÜvÛm̘1ƒ ¸G3sæL†NçÎéÓ§wß}7K–,©2þpï½÷2aÂòòò<Ž•””ð—¿ü…Ç{ŒgŸ}–víÚ‘žžŽ¯¯/o¼ñP¶úÆÛo¿ÍÀ>|8111¼ûî»×-¾ŠôéÓÃ0X¾|¹;Ž… 2pà@w™   V­ZEÿþýIMMå¾ûîã“O>ùÙb©ˆæd©¡BCC8}ú´Wåï¾ûnš7o€ÁÁÁCò²²²Ø´i“û¯ûEEE^×qðàA HHH¸¬mÃ0ÜeòóóY¸p¡û/ñÀn·{u 3gΤC‡L:•Ç{̽ÿB½ñññî}V«•¸¸8öìÙ”Ô8{öl¹s:”ßê5`±^Q|å©[·.<ð�‹-bÈ!¬Y³§ÓÉï~÷;w™ÆèÞnÛ¶-iii˜¦yÍ}&¢$ƒˆˆˆˆˆT)** €o¾ùæšër¹\ 4ˆ/¿ü’!C†Ð§OæÎ{EuÔªU (›¤±"N§€^½zѲeK÷þ¯Ú¸í¶ÛxöÙgIMMåŽ;îpï/.. 88Ø£|`` {ÔCAA�aaaÞÅת X¬W_E @ß¾}ÉÉÉ!##ƒþýûWÚO‹…¢¢" øæ>Q’ADDDDDªD·nÝxï½÷xöÙg¯i¹Ä½{÷’™™ÉÚµkéÔ©¥¥¥W\GÆ ‰‰‰aÛ¶môêÕ €]»vyÌE¯¯/§OŸ¦wïÞWë¸qãÈÌÌdâĉî}M›6Åb±°uëVzôèáÞ¿eËî»ï> lÕ‡°°0¾úê+ºtéâNN\<Zã²øÎ'®Õ}÷ÝGXXo¼ñk×®åóÍ_TZ>;;›èèh ø.}&â-ÍÉ """"Rƒ%''sîÜ9zôèÁîÝ»q¹\8¾üòKÆŒsE Ã0Ø·oÇŽcÊ”)�;vìŠâéÕ«3fÌ`äÈ‘Œ3†Ñ£G€ÍVö÷Q???’’’X¼x1™™™‘——wÙ*•  --Í#¶   üq–.]Ê–-[ÈÏÏgúôéœ<y’#F�e¯DtíÚ•ôôt6lØÀŽ;xä‘G(,,tÏÉp=â+øÃ˜5k­[·&66ÖãøÖ­[Ýs0¬^½šÏ?ÿœ¡C‡zSJJ Ý»wwÖ¨j[¤"É ""7ÄÅ3\‹üV<øàƒÜtÓMê©ÖÚ´iÃçŸÎSO=E‡Æápмys÷_ð½áN ¼ð Œ=šaÆ1~üxn½õVºvíêU=“'OÆf³±iÓ&n¿ývÞÿ}âãã r—™4i¥¥¥ >œ‘#Gbš&‰‰‰ÌŸ?ßëx{ôèAïÞ½Y±b…{ß´iÓxúé§éÞ½;þþþøùù1gÎâââÜeÆŽKŸ>}èÙ³'aaaÌš5‹={ö¸çdpÇW\Xߨg®*¾òôïßß=ñ䥢££™>}:ýû÷'??Ÿ'Ÿ|’aÆyÝgûöí#++ ‡ÃáÕ¶HEŒ3f¸È|ÀðáÃÕ#"ÕÔìÙ³éÛ·o•åôo\oóæÍcðàÁêùMJOOgРAêˆß’/æAÆ`˜ñÞýìæmÙÉày’>è!ÝÕæ††ër¹p¹\˜¦‰ÓéÄ4MN§“’’JKK)..æ›o¾áÁüÙãÉËËãŸÿü'M›6½ê÷õóòòðóóÃßß(ÉP¿~ý«ŽiÛ¶mtêÔÉýÆÅ¹¹¹Øív÷H‡ë¡  €Ó§Oc·Û=’ËÍÍ¥~ýúX,å 7`:p˜{ìx•ñ9N6› «µâ×+²²²HLLäŸT+›¬<ñÄðÁpâÄ .›[âçî3ùuøè£ˆ‰‰ÁÏÏ|}}±Z­Øl6, V«‹Å‚a—ÝÛ;vì À]îÂy—~q]V«‡ÃA`` ûyCw•ˆˆü¬~øau‚üæddd°qãFu„Ô8!!!Üyç×\ÇÅ®4Á°lÙ2<È]wÝŘ5kmÚ´áÞ{ャ¬Íf#""âº÷C`` ÇJ åñfe†ë_ZZ=ô!!!8ÌòËÜ|óÍ74&‘Ëî1uˆˆüœêÔ©£¿Ëo’’ "¿ ___¾þúk–-[†ŸŸ üÿìÝy\T÷½?þ×Ì™a�aDdßdwDÜMAQA1%&q Ø46IÍmnš´½iúí/÷¦¹mÒ¤YjãÅXI“J$&—,Š„ e“M#( ‚ˆ0"Û,ç÷™ôõ|<|È9çs>ç³F?ïùœÏùÝï~×㌂»…F£�<öØcÝŽMŸ>]z;ÑíÆ  qqqˆ‹‹cCt¡V«ñá‡�ô¢é±§žzŠ DÃß.ADDDDDDDƒ‚A""""""" 2Ñ àš DDDDDD½¸vírssqõêULž<ÁÁÁf÷ƒ DDDDDwµ”””––"** &Çjkk‘œœ ooo<ôÐCwD=Ôj5†iÿÞ½{¡Õj±fÍ�€(ŠØ¾};æÏŸY³fA¡P˜Ý7’ê¯R©0~üx„††ÂÏÏoP¯ÓµýˆA"""""º u 2Þör={×®]ÃìÙ³o:/www,_¾ÍÍÍhhh@^^RSSððp�@`` ƒtNUUÚÚÚ&*++»í mäáá%K– ²²ß}÷>ýôS<ñăZ–®íG 2Ñ]F­V£ªª jµÚ$ÈÐyûv  ëëë%È R©àêê*mO›6 ~ø!Ž=ЍÕjLž<ÙäœÚÚZ( “`‚¹}#¡T*<<<àáá;;;ìÝ»—.]‚»»û •¥kûƒ DDDDDt— DNNŠ‹‹¥jMM nܸÔ××KiEQDVVrssÑÔÔ„qãÆ!::nnn�€ÀÎÎ .”Ω®®ÆÁƒ‘˜˜AžžŽÜÜ\ˆ¢ˆ™3gbÞ¼yfË•ÂÂBèõz$''Ã××K–,é³ –ÑÑÑxë­·››‹ùóçãÈ‘#ÐétXºt)òòò‘‘N‡ääd899!00°Û¾Ÿþô§EñÇzéu˜9c:æ-X$]˘¯§§'222Šððpˆ¢ˆcÇŽá»ï¾ƒ 7iãy'NÄÑ£GÑØØˆ3gaVxd¯mÔ—Q£F€É¬“:˜éQ‘––†üü|ÈårDDD ´´“&MÂôéÓMÊ»téR‹î—žê8kÖ,DFFò—sâÛ%ˆˆˆˆˆîrÆgô‹‹‹¥}………îöm}FF233Šõë×ÃÞÞ;wîDCC�ÀÕÕß}÷Éà5''P(øê«¯PTT„U«VaéÒ¥ÈÌÌ4Y+¡³   xyyÁÉÉ 111˜1c†Eeè'''¨ÕjÔÕÕ�4 �¾¾¾˜<y2A@LL æÎkv€>ë¥ÑhpîÜ9dggcîܹ ´ø¼óçÏãàÁƒ˜4iBCCqäÈ©®=µQot:Nœ8[[[xxxHûû*KZZN:…ÈÈH¬]»õõõ(++CKK‹Iyígi_õUGbˆˆˆˆˆF˜‰'¢¢¢MMMRaÒ¤I&iôz=²²²0uêTDDDÀÍÍ ñññÇ—òimmÅùóç¥sΜ9ƒiÓ¦A¯×ãøñã ƒ¯¯/BBBàíí‚‚³erpp€½½=¬­­áíí±cÇZT†þR«Õhnn6»̘1Ëåðöö†«««Ù}–ÖK§ÓaÍš5˜2e ->¯¹¹ ˜9s&æÎ ¹\޲²²Û¨'µµµøàƒð׿þõõõHLL„L&“ú©·²S§NÅìÙ³áää„¥K—öú8Múª·:ÒÈÂÇ%ˆˆˆˆˆËå())‡‡Z[[áç燳gÏJi Õjáåå%í“Édðòò•+W��666ð÷÷GAAPZZ …BñãÇ£¾¾Z­ùùùÒ7äõõõýZ÷Á’2ô×7àíí=à¶3–Iª—AúºZ¨MÒ¹¹¹I)t=¯°° …ÝÚÃ8S�är9T*ôz}¿Ë©T*ááá+W®ÀÙÙYÊÓlºôñxÚ©?}5Xu$ˆˆˆˆˆhèüÈ„F£AHHärÓ‰ÏÆAŸ•••é B¡@kk«´=eÊ|úé§ÐjµÈÍÍÅ”)S “ɤG(áââbrmKYZKµ´´ ±±ÑdÀÝ_ÝêeÐT6£,>ÏÑÑ …‚ ô«=úc̘1X°`ÜÝÝñïÿ&LÀĉÍסKßÛ[„ÛÖWÄ  !!!Ø¿?êêêov*“ÉPYY‰ñãÇKû+**L¶ƒ‚‚��§NÂùóç�ptt„ hiiÁ„ ú=XíO,õí·ßB¡P`êÔ©n·nõú!È�¹¢_çƒ ÑŸoý0iÒ$:t>>>5jTŸ}£V«áì쌪ª*i=‰šš“õz¿Ð…k2‘ÉdEÑì´x¥R‰iÓ¦áÌ™3¨¨¨€V«Eff&š››1sæL“tÁÁÁ8zô(\]]¥uŒoOÈÏÏÇ™3g ÓéÐÖÖ†êêêËäîîŽêêji­KË`ŽN§Ãõë×ÑØØˆòòr:t™™™ˆŠŠ‚Ý€Ûm õº™óŒ " qnTÆëMÐÿ°¯¯??‰^½ìûô�ô"�¹€™³Ã‘“—¼‚3hÓêÐÜÚ†ÊKÕÒ9þÈø&û>=€CŸ}އC®PB”ÉÍ^C®PbòÔiÈ+8ƒò‹hm×"ã›L\¿ÑŒÐ°™—µë‘¿ªÃg2€Ž©ñk×®…R©”ì*::À®]» P( P(gò–�˜<y2 ºÍX¸p! öíÛ¹\QŒÕ«W›½^pp0rrrðæ›obúôéX¶l™Åe誢¢¯¿þ:d2àììŒ7öûÕ—æ˜Ô "D½Á!“°ú§ }ž§Õj±oß>>|r¹¼×öèd0ˆÀøÀ`Œ=•ƒ¿½þcu °~ü�*›QXü“hìÛ·§rò0uêTÌ¿í:>úØ|ßÌ[°ÈqáÂ8;;cyìJlß¾2A)åÛõ:‹ÒÑWÿÜùc_-[‡qn=žÓÓ>i+_‡+Ù«¯¾*&&&bÏž=Ø´i[„蕜œŒ„„„>Óñ³€ˆعs'6n܈;v ))‰ 2’díÞÙ$î�"-ë»™9ظóìHZ…¤9ÓoiqEQ„(Š0 Ðëõ0 ÐétÐëõhoo‡V«E[[ ;¬šZ«Õ¢¥¥¥_‹6š h4¨Õênk?˜ÓÔÔkkk“WjÞl†‚Á`€¦áÔv¶+¬�yß?û»¹¹YzsEŸçˆ–µÑPöMUUvìØ 6ÀÇÇgHï—ÎAzöé§ŸbâĉP©TP*•°²²‚ P(Ëår¹2™¬[ ñäÉ“°±±‘ÒÏëúsç¼A€N§ƒ­­­4ÞàL"""""ê7¥R ¥R9àóår9,Noîq†›-ÃPêeÐ è<K €ùAöh{»A©ƒ Èá4¦{ß¡¡¡žžž¨¯¯ÇÉ“'ááæ _Ÿ¾ó´RÂÚêæûÊÀg%†=ˆˆˆˆˆˆ¨O‚  ¦¦Fzݦ··7æÍ›Ç†! 2QŸ‚‚‚¤7‡õ„o— """"""¢AÁ  ˆˆˆˆˆˆˆhPpM""¢!’™™‰ººº»²îcÇŽÅœ9sxÝ¡ÒÓÓáíí ??¿›Î«±±r¹öööý>777z½3fÌ`§ ±ÛÕÖì㑇A""¢!RWW‡ªª*6 k)))(--5Ù§T*ñÛßþ¶×Ÿ•••dØ»w/´Z-Ö¬YcñuKKK‘‘‘+W®@¯×C¡P )) ãÆ³8óçÏC«ÕÞ¶è@ê}3}…ˆˆ“cµµµHNN†··7zè¡!+ÃíjkK®{«úd ""T*ÆŽ{WÔµ®®mmmìt¢ÆÝÝË—/—¶e2Y¿Î „Á`¶Ïž=‹k×®aöìÙfÓkµZìÛ·X¿~=är9ŠŠŠ`ee5¢Ú­k½‡ZQQQ· Caaá]ÿÞê~*o¿ý6Ö­[ˆˆˆ¨gcÇŽÅÊ•+îÛ·³7ˆF •JWWן?yòd“í³gÏ¢¾¾¾Ç ÃÕ«WÑÚÚŠÙ³gC¥R�¦N:âÚ­k½‡’Z­FUU4 ÔjµI¡óöÝèVöÃPJIIÁÑ£G±iÓ&,Z´ˆA"""""ºóˆ¢ˆ´´4äååA¡P <<¼[š#GŽ@§ÓaéÒ¥ÈÎÎFaa!ôz=’““áëë‹%K–˜¤=z4är9¾ÿþ{¸»»›½î`oo H娶m¢¢¢àïïo’¶¤¤Ðh4 Á’%K ‚IÙ<==‘‘‘ÐÐP„‡‡CE¤§§#77¢(bæÌ™˜7o^·zçççC.—#""¥¥¥˜4i¦OŸÞ­ÞÆs²²²{úš4 çæè¥1pssëÖV'NÄÑ£GÑØØˆ3f`Ö¬Y=~¯×ëáïœ9sF ÞÔÔÔHu®¯¯‡^¯—ÊÑ[ÝŒe ±cÇ Ñh0g΄……áóÏ?GQQÜÜܰdÉ8::JeÐëõ(,,ì±­-½n×¾hllDzz:Î;¹\Žùóç#,, rùï)¨¨¨ÀGŽâêµFD†Ï¼9‘fï¿ÎÛ¾¾¾=–u¸ª««Ã‹/¾ˆƒbóæÍðööfˆˆˆˆˆFN‡ëׯKÛ¶¶¶Ò`,##§OŸÆ¢E‹àããƒãÇC£Ñ˜œ¯Ñh Õj�AAA(++Ãõë×±dÉØÚÚv»ž ¦L™‚ôôth4DEEI3Œ ТɾÚÚÚndÕÕÕáÛo¿Exx8ª««qòäI¸¸¸ ,,L*Û¥K—péÒ%Ì;�€¯¾ú EEEXµjZZZ°ÿ~¸¸¸ ((�––†S§NaÁ‚?~<Nž<‰²²2“�GçzÛ*;;óæDÂÇËdzObçÎxì±Çààà sùòe”——#,, ---8räáàà`6РÓé |||PPP ­O——‡ñãÇKit:€Ž…9 ±bÅ ©nŽŽŽRÝêëëQ]] . 22/^Ä¡C‡PZZ µZ˜˜|öÙgÈÎÎFTT””ÿåË—ÑÔÔ„°°0TWWãĉptt”ÚÚ’ë^ºt /^Dxx8<<< Óé‘‘ÆÆF¬_¿ÍÍÍP*•ÐétP(:†«W¯^ÅÁƒ1}F®ßèh¯ÉCLÚ´s?h4TWW£¦¦¦Çûb¸ËÉÉÁ/~ñ ÄÇÇcÆ fd """¼ûî»Ø»w¯Éæýýýñä“O"$$dØ—ÿòåËØºu+¾ûî;ìß¿ŸJt‡¨¨¨À믿.m¯]»þþþ0 ÈÎÎFhh¨48‹Åùóç{ÌËÁÁöööÐjµ½~ ¤§§ãüùóX³fM¿}4R*•xðÁ¡T*1eÊ\»v çÏŸ7Lêt:¬Y³£FÐñ­üñãDZxñbøúúèX̲  �AAAÐét8qâBCC¥YK—.EIIIåÐëõÈÊÊBhhhǺ âããñò+¯âøñ㈉‰‘Ò677#)) NNN0 ÈÈÈ@EEEë÷( ( L:Ÿ|ò Z[[agg‡ÒÒRÄÄÄàìÙ³R½^“'ObñâÅ��œ9sÅÅŘ8q¢”ŸL&úuë0jÔ(xzzâôéÓpwwÇâÅ‹�.\À¥K—¤¾B¡€ 6lØ�¥R‰ÐÐP\¿~] Xz]ãýeì caôèÑpvv†L&ƒÁ`0 ¶ÛËÁÑ í:²¾É@YYBCCoê¾îôz=RSSqìØ1lÚ´IꈈˆH²aÃ( ¬]»�àêêŠýû÷ÃÚÚú¶•)++ À /¼Ðcš“'Oâõ×_GJJ ÚÛÛ{ý<¾¾¾Òç�išzcc#Z[[M¦û¦ùóçÃÏÏ{÷îÅÎ;±nÝ:xzzö+Ñ£GC©TJÛÈÊÊ‚(ŠÒ–nnn&ƒÚ††hµZäççKoÖ¨¯¯—Ö60ïÏTuã9^^^Ò>™L///\¹rÅ$­——œœœ¤¶6Îâèi*¿ &LÀÁƒqîÜ9xxx@«Õ" �çÏŸ—ÒyIÕ\�� �IDAT444À`0 °°ßÿ½IÝŒù ‚�www©¾ÖÖÖR•J™LfrŽ£££É¿WÞÞÞÈÊÊ‚\.·øºžžžÝÖ˜3gŽtDEEÁËËË$È`l/½øc{ ¹™ûb$ÚÛÛGLyd ""ºÅ:?Ï<mÚ´Û`¸rå Ö¬Yƒ{ï½·×tƒo¼ñÒÒÒ¸°#ÑH&“™<ÿndœ~?”Sµ===ñðÃcëÖ­8}út¿ƒ æê¢ÓézH°pqq‘öûÆ·\ôçù}ã ·ë2 Z[[¥­T*Æââbi®ýÖWÝû¾1¶õÍ\w„ xøá‡qäȼ÷Þ{X°`Ùµ?†ú¾Ž¿—±±±HJJ‚½½=ƒ DDDts4 ôz=ÆŒÓkºÚÚZ †~¯ íÚ5ÄÄÄ ²²²Ï´ÆéÂ>>> 2ÝEœakk‹êêjé±½^/,t[ÂÖÖnnn¸zõªÉ�«ósöåUUU%Í艣£#A@KK &L˜Ðí¸Z­†³³3ªªª c‘Å–––ó3f d2*++1ÞÏפܯuCHHöïߺº:ÄÇÇ÷»nƒ©s[ßìu]\\ðàƒ"-- ÇïñÍ$ƒQÖ‘`âĉؼy³ôèÉH Ñ0œœŒ'žxZ­?þ8ZZZðî»ïèxny÷îÝP(øàƒðÈ# ¹¹qqqËåøöÛoQ]]ØØX¼÷Þ{=z4Þzë-lÞ¼¢(â©§žÂsÏ=‡M›6aÏž=�€>ú§OŸFqq1�`Ïž=8uê¶nÝŠI“&Ýt}ÊÊʰsçÎaÕÆ±±±=>ïLt·ëºð£qà/|}}qúôi¸¹¹A¥RáØ±c&ƒsÜÝÝ‘——‡¦¦&ØÙÙu;^SSƒºº:L˜0‚  ººååå˜3gŽ”ÆÃÃùùù¸víjjjžžnöZ•••8þ<üýýqöìY\¼x .ìµ|‚ <<§N‚§§'‚ƒƒ¡×ëQ__/=ˆÌÌLܸqJ¥ÕÕÕP*•fg|�k�L›6 gΜ¿¯\]ÆâÄwÙhnnÆÌ™3­¯‚‚‚ “É Š¢ÙÇ9,©Û@õÖÖ7sÝœœøùùA­VC§ÓIk3 UY‡3üüç?Gttôˆ{¬ƒA""¢adÓ¦Mزe òòò°oß>ìÙ³+W®D||<>úè#¤¥¥!::>ø ¶mÛ†´´4|óÍ7ÈÊÊ‚¯¯/BBBðé§ŸâùçŸÇ«¯¾ŠÇ{ ùË_pሢlÙ²~ø¡tÍçŸ{÷îE~~>L}»YÇÇ¿ÿýïaÕÆ;vì@RRo6"3º.üt¬!ãããƒùóçc÷îÝxï½÷`kk‹+Vt[c «àà`äääàÍ7ßÄôéÓ±lÙ2“ã---8xð >ùäØÚÚ¢©© S¦L1yÝá”)SPRR‚-[¶`ìØ±HHHÀÖ­[Í4233‘ššŠööv̘1âÅý.\ƒÁ€}ûöA.—CEcõêÕ�€E‹A.—ãÂ… pvvÆÊ•+±}ûv“çü»ŠŽŽÆ°k×.(ä€ÂÊqqqÒ-ƒJ¥ÂÚµk¡T*{„öU·ê«­zÝÜÜ\<xVVVpttÄ=÷ÜsÓíäää4 ûâvŠGbb¢Éú! 2Ñ€Ÿã;w.fÏžm²ÈSçGŒéfÏž-Mã={6¾ÿþ{¼ûî»xõÕW Û„‡âyÜžDDDHï+¿ÝÞyç;vŒ7QÖ¬YÓëqggglÞ¼öööÉd6IÓuiccƒ¤¤$455™]wÆ××Ï<ó ÑÜ܌ѣGw[÷ÁÑÑ›6mÂ7¤A×sÏ=g’fÅŠÉdP*•hnn†B¡è¶&BO\A…{î¹jµÚd–‚\.Ç¢E‹¤íªª*´¶¶šL¹ïš·J¥Â½÷Þ íŠåh¹qjG@.ôYž_ÿú×ýê#“íÎo®°¤n]Ë`gg×­m¯®ìO[÷÷ºF‰‰‰ÐéthkkèQ£LÉ驽Yïmjccƒ5kÖH3Qº–u8züñÇïˆÏˆˆˆ†©Î Žõõl³q5󺺺§'ßJ~~~X¹rå°iKˆn^×7X¢¯Ï¢Ñ£Gcôèѽ¦éí[ÝÎÇ.N)—ËáààÐmQQàéé‰úúzœ<y®®®Ýøæ(•J(Ð^ƒ­§º DÚz ×5¾‚s°ôY 2ÑmÑy%ô[9cˆèN%jjjPXX…Booo“Ç9hørss³hqR 2Ýjjj�t,f|Lb¤.ED4!((ˆ 1EDD°n#ˆˆˆn±Îë+ƒ�¤÷¨¿}é¼z»¹•Ü‹ŠŠÐÔÔ•J…/¿ü�ðôÓOKÇ=<<pöìYœ9s­­­øâ‹/¤cuuu�~œFZPP€üü|œ:u ‰‰‰fË­×ëQXX�Ò‚’ dõB4�6CŸär�ü÷äŽéN6Ñ­óÞ{ïá—¿ü¥´““ƒÄÄDü÷ÿ·4€7¾9â…^Ò%''ãâÅ‹&y3«W¯F@@�ÊËËñôÓOcãÆÒñßþö·pqqÁgŸ}///”””��üýýññÇãìÙ³x衇��_ý5^~ùeÜwß}f˽sçNlذ �€úúz<òÈ#øôÓOÙ©DD½tüÓçFbî$œÉ@DDt ­_¿ëׯ7{ìÿý¿ÿg²=wî\“@CW®®®8xð JKK1vìX8::š‰‰Á¥K—P\\Œàà`Èd2lܸÑä}åX½z5är9\\\z¼VRR’’’ðþûﳉˆúÒåÔKFd€A""" ?|óÓÛ3 `Ò¤IÒvç�ƒ‘««+“ˆnڻヒööv<üðÃl €‹þ!ƒ w ˆˆˆ†X]]öíÛ7(y‰¢ˆââb�À·ß~‹>úhH^ùu3u%¢‘%!!AzôI&“ÁÃÃþþþxôÑGqï½÷ZœÏ_|ææfˆîr 2 ±¶¶6TUU J^ÙÙÙðó󃟟�`ûöíX¶lߘÑÀ………áÍ7ßD}}=ÊËËñî»ïbݺuøóŸÿŒ_ýêWCr̓¢¬¬Ìd"ùd """cÇŽô<W¯^="êîììÌ��š€ÜG^¹§ÄvcÙw{{{̘1CÚÞ°aî¿ÿ~üá@BB<<<ýšÀÙ³gd ºÃ0È@DD4DæÌ™ÃF¸Ûå~ ¼³qä•;q™Äþ»‹©T*¼ôÒK˜6mvî܉ßÿþ÷0 xþùç±k×. <úè£ø¯ÿú¯óè-ýßÿþw¤¦¦B«Õ",, ‹-Â+¯¼Òïkƒ DDDDwŸ E@dâð/gÖ;@é1öuܶAAððð^û?ÿó?Ø»w/vìØ«W¯âÑGÅäÉ“göüÞÒÇÆÆ"-- •••xå•W¤·ãô÷DCÁ Š0ˆ"r9ƒA"""¢a(2qäÌ `:qwwGmm-ÚÚÚðÆoàùçŸÇ¢E‹�t¼M"%%Ål� ¯ô¾¾¾puuÅõë×1oÞ<‹Î!º•ô€ˆˆˆˆˆh°ÔÕÕaîܹ(++Ã7ð¯ý û÷ï�œ;w®Çµú›~ ç %d """"¢ArõêUTTT 00z½�°|ùrLž<YJ3zôhóƒ³~¦è9DC†þcˆˆˆˆˆºyã7`mmÄÄD888ÀÊÊ õõõ½å&  Ïô2™ íííý:‡èv` ¡d """"ºËµµµ¡ºº:ßÿ=>úè#üóŸÿÄk¯½†qãÆ�þã?þo¿ý6"""°jÕ*´µµáܹs ë–ŸJ¥ê3ý¬Y³ð¯ý 5557nœEç UÁ ¤m±§@ƒh€L&Öu9RtE­€BiA¡ÀŠé!pQÛ1È@DDDDD·NVVüüü —ËáããƒÉ“'ãØ±c˜9s¦”æø´Z-6mڄǃqqqصk—Ù<ûJ‡þóŸ Dbb"Þ|óÍ~_ƒh0D bßéDˆ?Ìj¾^;ò-0æ< �¹�…R‰ ‘Ód """"¢[cÏž=¥S©TøË_þ‚?ýéO¨ªª‚‡‡Š‡]}¥wttDzz:._¾ ‹Î!jrYÇL±K,AË Èdæ1<ù“p¸ûùcoÞ9d•]º-eào,Y>€P(àãã3hé]]]oúDƒA.”‚�ƒ(B«ÿññ A.“Öc†÷ÓøIˆ?&Nœ…Ò궸r‘ d¶Q 0 [Œˆˆˆˆˆˆ¨Žk2ý@.“A>Ì_U9¬ÛM@DDDDDDDƒA"""""""|\‚ˆˆˆˆˆˆnQDCÇ߯mƒÉ�™ùïÁõ¢irýû>Õ0ì0È@DDDD4B²häE@ßÞ}¿ drèõzèt:( ‚��Ð�ƒhš\.”ƒ07_«×à þß׉&Nœ8,ÊÁ D·–^Û1›A"V‡Ìô" 3tÌÊg&Ãd.¸&ÝZ]‹èãu‘æ‚ |TbxbˆˆˆˆˆˆnñHT�Ð)J ë{hÚ9¨ g€aøv-›€ˆˆˆˆˆˆnýhô‡áh§EÑtá…ÎÛƒ œÅ0|qM""""""ºõd�ý:z½^:¬Óé��‚ @¡PtÄ"~.p&ÃðÅ ÝzƨÁ³Azì g0  2Ñ Ð Ðw}×d/dCÔú!(»AÚtz(ä2r®,0Pl9"""¢á¦©Žm@Dwœšp§aˆˆˆh¸Ù÷àÔ¶8|\‚ˆˆˆh¸Ñ¶É÷ë·ó~Îö a+==ÞÞÞðóó»©4Ô!77z½3fÌqý, 0år(ä÷.4ô8“ˆˆˆh¸zï çc¶Ý---xñÅñþûï÷kP|ùòå›N3RRRð׿þÍÍÍ&ûkjjð /Ho*ÎΟ?sçÎõ«Î/¼ðŽ?ÞíXmm-^xáìÚµë¦Ë5>ìo]ˆA""""º¶?È@ÝgΜÁ`@YYšššnÙuÏž=‹ìììAÉ«µµiiiæ<·JQQQ·}………¼©G˜·ß~---#¾|\‚ˆˆˆèvûö=à›í?n_.þñgm+°u5¸ðœTæ ]9²Þ1ý{$Ée¿Íòóóáåå…ŠŠ œ9sááá·,ÈP__Ù³gßt^‚ ''3fÌ€››Ûm/Ï­ V«QUUFµZmdè¼MÃ_JJ Ž=ŠM›6aÑ¢E 2Ñ�}³(=Ö{šw6a÷ß}8ôå)=ÖwyèŽrõêUTUU!11‡F~~~· ƒ(ŠHKKC^^ …Ù „%i:ËÎÎFaa!ôz=’““áëë‹%K–@Edee!77MMM7n¢££û L:%%%8|ø06nÜh6(ŠHOOGnn.DQÄÌ™31oÞ¼Ësýúux{{cÖ¬Y�:øòË/±råJ¸ºº�¾þúk‚€ÈÈH‹Ê~äÈèt:xzz"##¡¡¡fÛêäÉ“(--EBB¬¬¬ÌÖ'00999(..–#555¸qãBBBP__oR÷¾ÊfI8p�öööX°`tζmÛÿ~·;ý¨®®/¾ø"<ˆÍ›7ÃÛÛ›A""""º A‹:f2hº<ÿì:Xð80y9ÛÈSbÙýPPP€1cÆÀËË S¦LÁ—_~‰ºº:Œ;VJ“‘‘Ó§OcÑ¢EðññÁñãÇ¡ÑhLò±$É턲²2\¿~K–,­­­”Ovv6æÍ›'å³sçN<öØcpppè1?DEEaß¾}ÈÍÍÅ´iÓº¥ùꫯPTT„U«V¡¥¥û÷‹ ‚‚‚Ì–çôéÓ(..–‚ ÅÅŨ­­EYY™dÈÉÉÁòåË-.»F£Á¥K—péÒ%Ì;ÝÊYVV†#GŽ`ݺu=�@¥Raüøñ&A†ÂÂBC¡Pt럾ÊfI644@E“}µµµhkk뱜½µ;u—““ƒ_üâˆÇ† ¤ß ˆˆˆˆ¨†§Ò:f-dí4 0<qpòeÑÈÏÏÇÔ©S�“&M‘#GŸŸÅ‹� ²³³а°0�@ll,Ο?/åaIš®`oo­V+}c«×ë‘••…ÐÐPDDD��âããñòË/ãøñ㈉‰éµ.S§NE^^Ž=Š &˜Óëõ8~ü8/^ _ߎߧÜÜ\ ((ÈlyüýýqâÄ hµZ(•Jœ;wAAA(//Gdd$®\¹‚ææføøøô«ì:kÖ¬Á¨Q£ºÕ¡¾¾©©©Xºt)<==û쿉'â“O>ASSìììPXXˆ˜˜œ={Ö¤î}•m }h‰¾Úzn·ÔÔT;v ›6m’~d """¢óšüê Àn,Û‚†ÄÅ‹ÑÐЀÀÀ@´¶¶B©TÂÛÛÒ ¦±±­­­½>®`IK444@«ÕÂËËKÚ'“Éàåå…+W®X”DzeËœœŒôôt“٠ƼóóóQZZ* è{[»ÀÛÛ2™ .\ÀèÑ£�áááØ½{7 JKK�ApõêU‹Ëîææf6ÀÐÖֆݻwcÒ¤I˜>}ºEõ „\.GII <<<ÐÚÚ ???“ ƒ%í:X}h ¢hµZèt:\½z---ÈÍÍ•©lll¼íkF èõzˆ¢™L…B™L6,ƒ ííí#æ3…A"""¢áÊ}2 4äòóó�Û·o7€ðöö–^ÿØÛ”mKÒX: Ðí…BÖÖV‹òprrBdd$233¥GŒƒJã ÜÅÅEÚ¯R©zÌK©TÂËË eee°³³C@@�<==a0P]]’’é1…Á(»q°[UU…ööö^•è\~ã#!!!Ëåýn×ÁèCƒÁ�NƒÁ�…B…B¹\Aàççggg( ‚Ðk»ßŠ�ƒV«•¶EQ”Ú{¸d2bcc‘””{{{ˆˆˆˆè&8t<"Á� !N‡ÂÂB,]ºS¦L1Ùÿüùùùðöö†³³3lmmQ]]-Mw×ëõÒ €Eiú ,�À˜1c “ÉPYY‰ñãÇKû+**L¶û2oÞ<˜¼ÒÒÑÑ‚  ¥¥¥Û£=•èxd¢  �666ˆˆˆ€ ðööF~~>jjj0he·²²ÂªU«°cǤ¦¦âþûïï00'$$û÷ïG]]âãã»·¤l–ö¡L&3 WTTHuã~…B!µ£££# t:&L˜ n'½^¥R ™L&EŒÁ‡Û]6 ã˜Í›7K÷ÖH"çG+Ñ0ã9 x&ãɶ !UZZ ½^©S§ÂÚÚZúcgg‡‰'¢¨¨H(úúúâôéÓ(//Guu5RRRLš–¦éÊÝÝÕÕÕhjjÐ1s`Ú´i8sæ *** Õj‘™™‰ææfÌœ9Óâº) ,[¶ ׯ_—ö ‚€ððpäççãÌ™3ÐéthkkCuuuå1jkkMß¾¾¾8uê¼½½amm=¨e···Ç<€ÊÊJ>|Ø¢s‚‚‚ “É Š¢Ù7XZ6KúÐÃÃUUU¸v튋‹qèÐ!)8% 4;FŒí^PP€’’³ín RÜ,KòEQša!“É T*µ 7ÃÁÁO?ý4þö·¿È�À™ DDDDÃÏOždÐ-‘ŸŸ³ÓÖ§M›†œœœ={&LÀüùó±{÷n¼÷Þ{°µµÅŠ+º­3`Iš®‚ƒƒ‘““ƒ7ß|Ó§ODzeË`×®]Ò”û¸¸8³oaèÍøñã1aÂKû.\ƒÁ€}ûöA.—CEcõêÕ=–ÇÕÕ¶¶¶pss“¤¾¾¾0 Ý.¬²»¸¸ !!|ð0gΜ^Ó«T*¬]»VúvÞKÊfIN™2%%%زe ÆŽ‹„„lݺUš `îúÆv?pà�:dÒîÆÏ3¶sç™ÆÆÀ—\.—Òõ–GWæÊg ÐX2kd¨ÄÇÇ#11ÑìZ 2Ѱwÿý÷÷xÌËË Ï=÷œ´íììŒÍ›7C£ÑÀÞÞ2™ ÁÁÁ&çX’¦+$%%¡©©Iš R©pï½÷B«Õ¢¥¥Å¢׬YcvBB‚ɶ ˆŠŠÂ=÷ÜFµZm2°4W�xê©§Lòqww7iŸÎƒý¾Ên hôµßÏÏÏ>û¬Åuöññ1Ùîú&KÊfI:::bÓ¦M¸qã†4 ~öÙg¥2™¬[]zkw­V Q¥õ"ÚÚÚ¤·y‚ -Îh0 T*!—Ë¡Õja0`0¤ížòè‹(ŠR€ávüñ;âs…A"""""²˜%þ¼5ÀÎήÛ>¥RiÑ q är9úUžþʲß,KÊfIä÷®íÞùíF2™LšÑ™L&“þtô'sôz½´à&1È@DDDd–N§Ãþç"''@ÇÊùééé°¶¶Æ›o¾ÉÿL ¢Îü®ƒ{½^/Í:0 …BZ¡ó¢‘Æ@B×ÀAOn&Î3$†ãë+d """.ÿÉQ(PWW‡¯¿þ�ðõ×_ã믿F||< DDCd0ÞûA€\.G{{;€ŽÙ æ>‡cæGòE:Î$À`0ºÍ– þáÛ%ˆˆˆèŽ•˜˜hÑ>""ºy½½¥¡ëc F–>ÞÐ[~ýÉC§ÓI‹ i‘Inƒ DDDtÇŠŠŠ‚§ç¯tuuí¶ ãŒàÇ7@XrŽqP¯Óé¤E?UÆ…#u:´Z-´Z­É+8‰A"""¢n ’’’¤íøøx“Õâ»jhh@yy9êêê��uuu(//GCCCÿ.ÜÜ�\-š:òAS]ÇöÕòŽcDDw(㢒ÆõŒë1ðæÞà`|\AE´··C«ÕJ㢎Àë't÷–GW:®Ç·óí 2�ëÖ­“~þÕ¯~ÕkÚ×^{ ~~~xæ™g��Ï<ó üüüðÚk¯õï¢G_~ï¤väƒÔg:¶ï×qŒè”››‹S§NÝòë^»v ÇŽCjj*JJJØà/år9¬¬¬ P(¤A¾B¡€J¥’^AÙ™L&ƒ•••ÉŸÎë9¨T*¨T*deeáÂ… R^*•JJÛSæêÒùü®¸fÏÍc Ñm„ ˆˆˆ~îÍ“O>i2óÁ¨·×Ü™uÏ“@d’ùc6ìVRRRPZZ*m«Õj8::",, !!!çsþüyhµZ̘1ã–•]Elß¾óçÏǬY³†Å�1%%/^Äã?[[[iMM ¶mÛ†ßýîwÃ~ Ûß¾4ÞCQQQÒç­1xpåÊ$''ÃÛÛ=ôP¯ùôµBnn.¬¬¬àççgq·ã¾dˆˆˆèN¡ktmÝv'®½¿ã‡Ö뽞î`-ÀÁÕÉüÁ>Î5!€QN=ïš—Aÿãß­×… PX±?é–qwwÇòåËÑÜÜŒ††äåå!55ÑÑÑ’kž={×®]ÃìÙ³œGUUÚÚÚ6¬î­­­HKKÊ+nkûÜjEEE&A�(,,ä/˜…Þ~ûm¬[·666 2 ‡_>}¾ÛîÚøáÉÿÞå?—<©bÿ? öìOºeT*\]]¥íiÓ¦áÃ?ÄÑ£GµZ=$A†úúú›D×ÖÖB¡P »™‚ ''3fÌ€››ÛmkŸ[I­V£ªª Æä~),,’ûçN”’’‚£GbÓ¦MX´hƒ DDDDÕ'õ{·Þz ¹¹¹˜?>DQDzz:rss!Š"fΜ‰yóæõ˜Goé³³³QXX½^äädøúúbÉ’%ýºF^^222 Ó霜 '''üô§?Å‘#G Óéàé鉌Œ „††"<<¢("++ ¹¹¹hjj¸qãm0ž„cÇŽA£Ñ`Μ9 Ã矎¢¢"¸¹¹aÉ’%pttì±îS§NEII >Œ7Jû\¿~ÞÞÞ˜5k€ŽÇ�¾üòK¬\¹R }ýõב‘‘ýªo×¶êêäÉ“(--EBB¬¬Ì "''ÅÅÅR`¤¦¦7nÜ@HHêëëMêÞWÙDQDZZòòò P(Ì–ëÀ°··Ç‚ ¤s¶mÛ†¨oN0Ê�� �IDAT¨(øûû÷»Ý‡ƒºº:¼øâ‹8xð 6oÞ ooï÷ùÁ…‰ˆˆˆˆ¨'''¨Õjém+_}õŠŠŠ°jÕ*,]º™™™&k9tÕ[ú   xyyÁÉÉ 111Òóòý¹†¯¯/&Ož Aƒ¹sç�4 Î;‡ììlÌ;�€ŒŒ dff"44ëׯ‡½½=vîÜiòöFƒï¿ÿiiiˆˆˆÀ„ ðÅ_àÃ?„(ŠˆE]]]Ÿ‹"ÚØØ ** UUUÈÍÍ”öQ«Õ(..–Î/..Fmm-ÊÊʤ}9997n\¿êk®­:+++Ñ#G°`Á‚ @Çl˜ñãÇ›”±°°ÁÁÁÝfšXR¶ŒŒ œ>}óçÏÇ<€ššh4“|ºí«­­E[[Û€îËá$''¿øÅ/ðÿ÷hnnQŸœÉ@DDDwŽ˜gè§G~=N½ áA­V£¹¹z½ÇÇâÅ‹áëë  c¾‚‚u;¯¯ô°··‡V«•¾©íï5Ôj5ÆŒ¹\ÞíÛ^N‡5kÖ`Ô¨QRÞYYY •Ö ˆÇË/¿ŒãÇ#&&Ƥì÷ß?FWWWœ8q...X¼x1�àûï¿ÇÅ‹ûl»©S§"//Gí¶èì@ÚÇßß'Nœ€V«…R©Ä¹sç„òòrDFFâÊ•+hnn†O¿êÛµ­:«¯¯Gjj*–.] OOÏ>ë<qâD|òÉ'hjj‚ ƒ³gÏšÔ½¯² dgg#44aaa�€ØØXœ?þ¦îçþÞc·›^¯Gjj*Ž;†M›6I÷ ƒ DDDD·ì6V\0‘hݸqÞÞÞhhh€V«E~~¾ô­o}}}ÏÚ÷7ý@Ï鉛››É Ù˜·———´O&“ÁËË W®\19wܸqÒ¹J¥RàK3  ƒEåX¶l’““‘žžŽiÓ¦ÝT]½½½!“ÉpáÂŒ=�ŽÝ»wÃ`0 ´´W¯^µ¸¾]Ûʨ­­ »wïÆ¤I“0}út‹ê¹\Ž’’xxx µµ~~~&AKú¢±±­­­^ÏâVÜc·:ØÐÞÞ>rþ)æG'uÕÒÒ‚ÆÆF899IƒêÀÀ@¸¸¸HiT*•Ùsû›~ çôg Ût…BÖÖÖ!kC'''DFF"33ÓdaÍÔU©TÂËË eee°³³C@@�<==a0P]]’’i-„Á¨¯L&ƒB¡@UUÚÛÛ{}T¢sùLh4„„„@.—÷»/t:�˜¼t0 å=6d2bcc‘””{{{ˆˆˆˆˆhäúöÛo¡P(0uêTØØØ@´´´t›úoŽ£££EéÎþœ3cÆŒL&Cee%Æ/í¯¨¨0Ù óæÍCAAÒÒÒnª}€Ž°±±ADDA€··7òóóQSSƒ€€€A«¯••V­Z…;v 55÷ß·€9!!!Ø¿?êêê? ¾pvv†­­-ª««¥Çôz½|è<×jµ&y Æ}9Lœ8›7o–út$áÂDDDDDw9N‡ëׯ£±±ååå8tè233;;;‚€ððpäççãÌ™3ÐéthkkCuuµÙü,IïîîŽêêj455Y|Î@)•JL›6 gΜAEE´Z-233ÑÜÜŒ™3giÛ* ,[¶ ׯ_¿©ö1jkkMß¾¾¾8uê¼½½amm=¨õµ··Ç<€ÊÊJ>|Ø¢s‚‚‚ “É Š¢Ù7#XZ6___œ>}åå娮®FJJŠI@�<<<PUU…k×®¡¸¸‡êµlCy <ýôÓøÛßþ6" �g2Ýõ***ðúë¯C&“ÁÁÁÎÎÎØ¸q£É3ñ .„Á`À¾}û —Ë!Š"‚ƒƒ±zõj³yö•>88999xóÍ71}út,[¶¬ß×èèèh8p�»ví‚B¡€B¡@\\<<<†¼}Ç &˜¼ya íãêê [[[¸¹¹IëEøúúÂ`0t[¸p°êëââ‚„„|ðÁpppÀœ9szM¯R©°víZ(•JÈd²÷Åüùó±{÷n¼÷Þ{°µµÅŠ+º­'1eÊ”””`Ë–-;v,°uëÖ^Ë7”÷ØÍŠGbb¢Ù52FÙ«¯¾*&&&bÏž=Ø´i?a‰îPÉÉÉHHHè3? ˆˆèn³33w~‚I«4gú-½¶(ŠEƒz½ƒ:NZèM«Õ¢­­ ………ˆíe0 Ñh V«-š>ßWú¦¦&X[[›¼æ°¿×è­V‹–––a³Øß@Úg$×·¿eÓh4°··ï1`t,PÚßùPÞc·Ó§Ÿ~Úñ–üsxjϗز!"§C¡P@.—CÈårÈd²nmzòäIØØØHéA€B¡èösç¼A€N§ƒ­­­4ÞàL"""ºã\»v ¯¼ò  V«1zôhèt:ÜsÏ=Ðh4ÉdøÙÏ~6,Êzùòelݺß}÷öïßÏΣaO.—ÃÁÁaÐÒÛÙÙÝô5úC©TJ³�FB{škŸ‘\ßþ–Í’àÈ@¾ùÊ{ìnÇ ÝQŽ9‚ÄÄD�À7ß|�À¹sç°jÕ*â­·Þºíå<yò$^ýu¤¤¤ ½½¡¡¡ì<""ñ¸ð#Ý1ÊÊʰråJTUUá•W^‘ �€£G›o® Þxã 8;;³ãˆˆèŽÁ Ý1{ì1477ÃÚÚ+V¬èv|ܸqøÓŸþdöÜË—/£¾¾¾Ïkh4\»v­Çã–æ3{ölŒ3Æ$BDD4Òñq """º#444à³Ï>бÚzOÏ1?ú裸qㆴ]\\Œ 6`̘1=z4±gϨÕj$''ã‰'ž€V«Åã?Ž––¼ûî»�€¸¸8ìÞ½[ZŒ­·|ˆˆˆd """A ¤Ÿ{{A.—ÃÞÞ�ÐÚÚŠåË—£¼¼ÍÍÍvvvxðÁqàÀlÚ´ [¶lA^^öíÛ‡={ö`åÊ•ˆÇG}„´´4DGG÷™ƒ DDDD#ÈÕ«W¥Ÿ ƒE礤¤ ¬¬ žžž°¶¶�Œ;‡F}}=aee�˜;w.fÏžöövéüÊÊJ‹ó!""bˆˆˆh„˜8q¢ôs~~>DQ”Þþ÷¿ÿÿú׿pêÔ)�¯M»ï¾û¤Ácc#Ö¯_/匪ª*³ÁA¤Ÿõz=� °°°ßù1È@DDD4L?ŽŽŽ¨¯¯‡F£Ayy9üüü��›7oFDDfÍš cVÂŽ;ð›ßü�ÐÞÞŽ;wJë+ô—qæÄÍæCÔc@‹ˆ¨«ÎÁöÛ‰ÿÑA.—㥗^ÂÏþs�@nn®d��ég�@PP� ­­ 'Nœ@dd$�@«ÕB&“Y,¬|ˆFÊ ‚ˆ¨ÇÙDDDt§øÙÏ~†|�ðꫯB«ÕJÇZZZº¥OHH€››€ŽÙÈÉÉÁÏ~ö3\¹r@Çâ� Óé¤À‘ñgKò1G¯×KßL_¸p¢(²‰ˆhDcXˆˆˆî2™ ï¿ÿ>V¬Xgžy111¸ï¾ûààà€]»vA©TbÅŠظq#�ÀÁÁü16lØ€S§NaÊ”)˜0aÞÿ}¸¹¹aÛ¶mR -- ß|ó :$]/99+V¬€··w¯ù˜³sçN|þùçhhh��Ô××ã‘GA||<bccÙ™DDÄ Ñp°nÝ:¬[·555(((€ øÇ?þOOÏn.Ìž=EEE())­­-|||¤c<òyä“ôsçÎÅ /¼Ðíš½åcNRR’’’ðþûï³ÃˆˆˆA"""¢ánܸq7n\Ÿéär9BBBnúzƒ•ÑHÅ5ˆˆˆˆˆˆˆhP0È@DDDDDDDƒ‚A""""""" 2Ñ `ˆˆˆˆˆî*ÍÍÍ(**B{{ûMç¥ÕjQTT„ÊÊJ 6.Ýõd """"º‹%$$ÀÚÚ¯¾új·cyyy°¶¶ÆO~ò“;¢®ˆŽŽ†³³3æÏŸ±cÇâ¾ûîÃÕ«WͶ‰µµ5œœœ0cÆ üóŸÿì–׊+àèèˆ  ((£GÆÂ… Íæ3nÜ8lذGޱ¨?¬­­accƒ€€�,Y²}ôoVbˆˆˆˆˆF†½{÷vÛ—ššzÇÔ¯ººáááhmmEAAêêê™™‰¢¢"Ì›7ÍÍÍ&égÍš…ôôt<ÿüó¿üå/‘——�¨¬¬Ä¬Y³PUU…o¾ùµµµ¨¯¯ÇÇŒÈÈH³ù<ûì³8uê{ì±>ˆÌÌLìß¿¿ûÝïÐÖÖ†uëÖáõ×_·¸¾Ä–-[xc o¿ý6ZZZd """"¢‘ÍÃÃ'OžDeee· ƒ‡‡ÇQÇW^yz½û÷Ÿ�`òäÉØ¿?.^¼ˆmÛ¶™¤W«ÕÇæÍ›ñâ‹/BE|ûí·�€—^z íííøì³Ï0uêTÈd2iÆÇŸÿüg³ùüêW¿ÂÿøG\¼xÙÙÙ½–ÕÞÞ3fÌ@TT~þóŸãóÏ?ÇÒ¥Kñ‡?üUUUÕ÷Àøä“Oxs )))xøá‡qìØ1ˆˆˆˆˆhäZ¾|9¬¬¬ðñÇKûrssQ[[‹èèh“´Ÿ|ò xàøøø ""ÉÉÉ&ÇŸ}öY<õÔSøæ›o°xñbà¯ýk¿òÐëõøýï???á­·Þ²eËðÎ;ïHi þøÇ?ÂÏÏ>>>øßÿýßë§×ë±}ûv¬_¿&Çüüü°bÅŠnA†Îüýý�:z½ï¼óÖ¯_qãÆõ«]\\¤²÷‡J¥ÂK/½­V‹;wöÙ†ÿûß‘ššŠï¾ûaaaøõ¯mQ»ÓíWWW‡_|¿ùÍopñâEˆˆˆˆˆhäQ«ÕˆŽŽ6yd"55qqq°¶¶6I[QQÅ‹ã‹/¾@\\žyæ\¿~]:^YY‰/¾øO<ñxà$%%á¹çžÃÿßÞ½GUU'z�ÿîÇyñòøÀÂ’’W%K,kLQVzqÌ|$eâ­ÉÔòÚx½^oã]:Ò`S.-#§±ÒDRÆSc4&¦K[™%):–`" œÇ~Ü?gÏ9<ä€Gù~Ö:‹Ã9ûüöÞ¿³Ýîß—ßï·úé'¿ËX¶l6n܈ `çÎ(,,D^^ÊÊÊŒeV¬Xœœdee!##ÈÍÍmpÿŠ‹‹QSSƒ!C†4øþàÁƒqêÔ)¸\®ßûí·�C‡EQQâãã›UÇv»¯½ön¹å–f�bbb‰cÇŽ5Y‡&L@BB¢££‘™™‰Ù³gûUïÔz|óÍ7˜;w.Ö¯__o(C"""""jõ’““±oß>üòË/�€mÛ¶aÊ”)õ–KKKÃܹsƒôôt8ìÝ»×g™²²2¼÷Þ{˜;w.^xá˜L&ìÞ½Û¯2<ñ3f -- ýû÷GFFzôè]×�‡k×®Ejj*xà$''#!![·nmpß<G·nÝ|¿{÷îPUÕg(BII 2331f̬^½O>ù$âãã¿.÷èÑïzýþûï1aÂtïÞ………ؽ{7$IjÑwÔ£G”––6Y‡½zõB·nÝСCŒ1±±±~wÔz¨ªŠììlÌž=Ÿþy›Ùn™_?&“ ;vì@||<.^¼ˆQ£Fá£>ª·ì—_~‰/¾ø?ÿü³ xKHH@LL �Àd2!$$¤Þí"+ãÔ©S¨®®Æˆ#ê­Wc™ªª*lÞ¼Ùè½pâĉFçèÒ¥ �àâÅ‹ ¾ñâE˜L&tïÞÝxíÌ™3صkz÷îôôtL˜0�йsg�@yy¹_õj³Ù0lØ0üðÃ8p Q/-QVV†„„¿¿‡†´ä3tãÆ@Ün•!]7ÞC&ŠŠŠ0iÒ$ȲosA×u¤¤¤àÀ˜={6’““±qãÆf­§©2BCC�f³ùŠ.À=—ÄÀ×;tèÐàò}úô (,,lðý'NàÎ;ï„Åb1^:t(víÚUoYϤ‘Gõkûô郥K—bèС˜4i~øaLž<¹ÙßÏùóçQTT„~ýúµè{ÄwG×— ˜0aRRRŒ ˆˆˆˆˆ¨ÍHNNÆœ9spìØ1deeÕ{¿  �[¶lÁ'Ÿ|‚‘#G6:‡Á•4UFÏž=‹ýû÷#11€{Ê .ËDGGÃl6£¼¼“&Mjr6› 'NĦM›°hÑ"ˆâ¿F_¾|ï¿ÿ>}ôQ¿¶?88£FÂúõë1þ|„……ùõ¹qãÆaÊ”)HOOÇý÷ßoL鯵k×ÂjµbÖ¬Y~}‚ øüõ;ß]?±±±HKKCttt›ÛvÎÉ@DDDDD�ÜC&$I‚¦i¸ï¾ûl` ‚€ãÇ£¤¤Ë—/àž¿À_þ”‘˜˜ˆŒŒ <ýôÓX¸p!ž}öYØl6£g…ÅbAzz:Þ}÷]lÙ²v»8tèP£ë]¾|9Ξ=‹Ç•••�€ÒÒRüæ7¿Aß¾}ñßÿýß~ïÃK/½„ÊÊJŒ;ß~û-t]‡¢(8pà�.\ØèçÖ¬Y]×ñÌ3Ï\±|‡Ã’’!//éééX³f V®\‰®]»úU‡ñññ8|ø°1ÇF ¾;ºö:v숅 âå—_n“C"""""2„……açÎØºu«Ï_û=¢¢¢Œ†ÿ€ Ë2æÌ™ƒ%K–øLìx%þ”±lÙ2,X°�°ÛíxóÍ7¡ª*‚ƒƒr–.]ŠY³f!55‘‘‘èÕ«233]oLL þñà»ï¾C·nÝЧOÜvÛm(,,ÄÎ;jѸ¸8ìÙ³š¦áî»ïFxx8n¹å¤¥¥Õ»‡·ððp¬^½¹¹¹Ø¼ys£ËíÛ·½{÷Æí·ßާžz %%%ÈËËÓO>éw&%%aРAèׯæÍ›­‰'"++ cÆŒ1æi‹„ŒŒ }Ö¬YضmRSSùÍݤ6lØà×ø?ž ˆˆ¨½y+ÿ<þÖd¥<Œ”áq×uݺ®C×uhšUU¡iE1&zs¹\p88zô¨1ñ`kPQQ‹Åb4¨KJJ|&M tû÷ïÇÈ‘#®þÞEÁ™3gYo‰Æœ;w'OžÄùóçñÊ+¯àÈ‘#øõ¯ñãÇc„ Wœ¢¡ý8yò$úöíÛ¬ âz}gÏžEÇŽeñÝQëõ׿þ±±±ØqäžÛö^™„™÷ÆA–eˆ¢I’ Š"A¨d<x6›ÍXN’$Ȳ\ï¹wY’$AQí ÎÉ@DDDDDÍR·1Ý’Fê•ÊÈÎÎÆ©S§0|øpœ8qëÖ­C\\î¿ÿþzåȲŒ¨¨¨f­;<<ááá�ÜCD¾þúkdddà½÷Þókއºû1xðàVû=Ô½mg ¾;¢+aÈ@DDDDD­ŠÙlÆ‘#G ‹Å‚#F`ñâÅ׬ ùàÁƒñ—¿ü…O� ˆˆˆˆˆ¨UIJJBRR+‚¨ âÄDDDDDDD ˆˆˆˆˆˆˆ( 2Q@0d """""j\. P\\ MÓX!Ô&1d """"jÇ&Ož «ÕŠŒŒŒzï}ûí·°Z­5jT›Þǘ˜X­ÖFãÆ�<öØc˜<yòuß¾¢¢"Œ?;wÆý÷ߘ˜tèÐ#GŽlÓÇ”Õj…ÍfCtt4ÆŒƒíÛ·óC"""""jrrrê½–}SìÛöíÛ‘ŸŸüü|¬Y³�°eËãµW^y�˜˜ˆ‰'^×m+..F||<Μ9ƒ½{÷¢´´åååøàƒpï½÷¶Ù:2dòóó‘››‹Å‹Ãáp`úôéÈÌÌô»Œ?ü¯¾új»ù7øÆo ¦¦¦ÍïoaIDDDDÔÎEFFâàÁƒ(..FÏž=}B†ÈÈÈ6¿4žŸ;w�pÇw ::Úg¹©S§^÷m[µjœN'>ùätíÚ�ŒÞ#m¹Ihh(lü>sæL<òÈ#Xºt)&Ožì×qµk×.â™gžiÿ·nÝŠÝ»w#55<ð@›Ýöd """"jça6›ñÁ¯>|¥¥¥=z´Ï²;vìÀÔ©S…{î¹6lðyÉ’%xî¹ç°wï^<øàƒˆŽŽÆþð‡f•¡ª*^|ñEôîÝ111X·nƇM›6Ëhš†eË–¡wïÞˆŠŠÂÊ•+¯º<Û^÷÷Ý»wcĈèÓ§Ö­[EQðÛßþ·Þz+&Mš„“'O¶h»TUŦM›0cÆ #`hŒ¦iX½z5î¼óNDDD`Ô¨Q8tèÏ2O=õV¬Xáó™!C†à³Ï>«·O[·nÅ]wÝeôâ8}ú4fÏžÈÈHDEEáõ×_h][,¬Zµ .— o½õV“ÇÁŸþô'dggãСC2d,Xà×±ÓÖ•••á÷¿ÿ=žþyœ>}š!µ=aaa=z´Ï‰ììl$%%Ájµú,[TT„|Ÿ~ú)’’’°hÑ"\ºtÉx¿¸¸Ÿ~ú)æÍ›‡©S§"%%¿ûÝïðÓO?ù]Ʋe˰qãF,X°�;wîDaa!òòòPVVf,³bÅ äää ++ ÈÈÈ@nnîUÕCqq±OûÛß°téRÌŸ??ü0-Z„)S¦@×u¬_¿> òælWQQâãã›Ü¶—^z kÖ¬ÁO<?ü‘‘‘øÕ¯~…üÑXæÇÄ™3g|>÷ý÷ߣ¢¢ÂgŸ>þøc¼òÊ+xá…Œù(Ö¬Yƒ²²2üãÿÀ–-[p÷Ýw¼®cbb‰cÇŽ5yL˜0 ˆŽŽFff&fÏží×±s³øæ›o0wî\¬_¿ÕÕÕ ˆˆˆˆˆ¨mINNƾ}ûðË/¿��¶mÛ†)S¦Ô[.-- sçÎELL ÒÓÓáp8°wï^ŸeÊÊÊðÞ{ïaîܹxá…`2™°{÷n¿Ê°Ûíxíµ×0cÆ ¤¥¥¡ÿþÈÈÈ@= ë:�Àáp`íÚµF·òääd$$$`ëÖ­¯§Ó‰œœ$''cÞ¼yPwÜqÖ®]‹ÄÄDŒ;{öìiÑvy=z4¹ üã1cÆ ÌŸ?C‡EVVÌf3^~ùåfïSMM ¶oߎiÓ¦CF¾ýö[tìØ½{÷Æ=÷܃»îºëšÔu=PZZÚäqЫW/tëÖ :tÀˆ#ë÷ñw³PUÙÙÙ˜={6>ÿüó6³Ýœ“ˆˆˆˆˆ0~üx˜L&ìØ±ñññ¸xñ"F…>ú¨Þ²_~ù%¾øâ üüóÏF0à-!!111��“É„8N¿Ê8uꪫ«1bĈzëÁX¦ªª ›7o6þ¢~âĉk2Ä Aƒ� �Ÿ!$6› ªª¶h»:wî �(//¿â6xÊõžR’$ 6 ßÿ}³÷iÈ!÷y-==)))8vìþïÿþϘ Ðu]VV†„„¿¥†´ä3m=l¨ûï‡!µjÞC&ŠŠŠ0iÒ$ȲosA×u¤¤¤àÀ˜={6’““±qãÆf­§©2BCC�f³ùŠ.À=—„÷¤Ž:t¸áÁælWïÞ½�G½b¹‡�âózPPÏPˆ«1iÒ$DGGãÅ_ĸqã°lÙ2,^¼8 u}þüy¡_¿~-:–qüµ%‚ `„ HII1þ]0d """"¢6#99sæÌÁ±cÇ••Uïý‚‚lÙ²Ÿ|ò FŽ —ËÕìu4UFÏž=‹ýû÷#11€{Ê .ËDGGÃl6£¼¼“&Mj5õ×Üí ƨQ£°~ýzÌŸ?aaa .×·o_ˆ¢ˆ¯¾ú cÇŽ5^ÏÏÏǘ1cŒßEQô¹bs‡ÜyçØ¹s'þë¿þ ™™™xþùçZ×k×®…ÕjŬY³ü:–Aðù ~ Ž¿¶"66iiiõî€ÒpN"""""à2!I4MÃ}÷Ý×`£X?~%%%X¾|9� ¤¤ÄïuøSFbb"222ðôÓOcáÂ…xöÙga³ÙŒž‹éééx÷Ýw±eËØívTTTÔ»ÛÂõÖ’íz饗PYY‰±cÇâÛo¿…®ëPÀÂ… :›9s&Þÿ}äç磪ª «W¯FYYæÎk”5lØ0ìß¿ÿüç?‘““ƒôôt¿·}Ó¦M8}ú44MCMM  �Q[\ׇ%%%(**B^^ÒÓÓ±fͬ\¹]»cC²Z�� �IDATvõë8ˆÇáÇyBqüµv;vÄÂ… ñòË/·É€!°sçNlݺ¢X¿©e4ü �Y–1gÎ,Y²ÄgbÇ+ñ§ŒeË–aÁ‚(((€ÝnÇ›o¾ UUl”³téRÌš5 ©©©ˆŒŒD¯^½™™yÃë°¹Û‡={ö@Ó4Ü}÷ÝÇ-·Ü‚´´4Ÿ;{¬Zµ qqqx衇pë­·"##¯¿þ:† f,3mÚ4„„„ 66Ë—/Ç;ï¼ã÷v¿õÖ[ˆE=ŸŸÿýßÿ½ªºÞ·oz÷îÛo¿O=õJJJ——‡'Ÿ|Òïã )) ƒ B¿~ý0oÞ¼€­Ùĉ‘••…1cÆó´EBFF†>kÖ,lÛ¶ ©©©<³ݤ6l؀ɓ'7¹ÏDDÔÞ¼•ÿ k²RFÊð¸ëºn]סë:4MƒªªÐ4 Š¢½¹\.8=z&Lh5uVQQ‹Åb4‚KJJн{÷kVÆþýû1räH£›¼7EQpæÌDFFÖ›CâFjÉvUTTàäÉ“èÛ·o£sTWW£¼¼‘‘‘6DÏ;WobGØívTVV]bŸqœ={;v4– Äñw³úë_ÿŠØØXì8rÏmû ¯ÎLÂÌ{ã Ë2DQ„$IE‚ Ô;~<›Íf,'IdY®÷Ü»,I’ ( ‚‚‚Œöçd """"¢f©Û�nIïJedggãÔ©S>|8Nœ8uëÖ!..÷ß½rdYFTTT««£–lW‡0xðà+.dÜå¢1- �Àjµúôž¸uíϱԭ[·€t }Vµ&f³GŽAvv6, FŒÅ‹·é.äDíC"""""jU’’’””ÄŠ jƒ8ñ#C""""""" † DDDDDDD ˆˆˆˆˆˆnRo¿ý66nÜÈŠ ë†!Q;6yòdX­VdddÔ{ïÛo¿…ÕjŨQ£Úô>ÆÄÄ·glè1nܸ›öûýôÓOñÑG5úþ¿ÿû¿#11±ÕŸV«6› ÑÑÑ3f ¶oßμ ˆˆˆˆˆ¨µÊÉÉ©÷ZvvöM±oÛ·oG~~>òóó±fÍ�À–-[Œ×^yå�7À‡~ˆW_}µÉå† ‚üü|äææbñâÅp8˜>}:233¾®é7Þ@MMM›ÿ^y K""""¢v.22Dqq1zöìé2DFF¶ùý8p ñüܹs�€;î¸ÑÑÑüòo ]»v¡°°Ï<óÌ— ÅàÁƒßgΜ‰GyK—.ÅäÉ“ý:Fý]×´uëVìÞ½©©©xàÚì÷Êž DDDDDí\bb"Ìf3>øàãµÃ‡£´´£GöYvÇŽ˜:u*¢¢¢pÏ=÷`Æ >ï/Y²Ï=÷öîÝ‹|ÑÑÑøÃþЬ2TUÅ‹/¾ˆÞ½{#&&ë֭øqã°iÓ&cMÓ°lÙ2ôîÝQQQX¹råU×CSezöm÷îÝ1búôéƒuëÖAQüö·¿Å­·ÞŠI“&áäÉ“õ>³sçNÜsÏ=ˆŒŒDzz:œN§ÏzW¯^;ï¼5j:ÔືnÝŠ»îºËè}ÑT]6—?ߟ?ûôÔSOaÅŠ>û8dÈ|öÙg�€?ýéOÈÎÎÆ¡C‡0dÈ,X°Àïm´X,Xµj\.Þzë­&롱uºî¡¬¬ ¿ÿýïñüóÏãôéÓ ˆˆˆˆˆ¨í ÃèÑ£}†Ldgg#)) V«ÕgÙ¢¢"<øàƒøôÓO‘””„E‹áÒ¥KÆûÅÅÅøôÓO1oÞ<L:)))øÝï~‡Ÿ~úÉï2–-[†7bÁ‚عs' ‘——‡²²2c™+V ''YYYÈÈÈ@FFrss¯ªš*³¸¸ûÛß°téRÌŸ??ü0-Z„)S¦@×u¬_¿xýõ×}>óÉ'Ÿ 33ééé˜:u*²²²|“—^z kÖ¬ÁO<?ü‘‘‘øÕ¯~…üѧœ?þ¯¼ò ^xác‰¦ê²¹üùþüÙ§ügΜñ)ûûï¿GEE�`„ HHH@tt42331{öìfmgLL "##qìØ±&롱uºîé›o¾Áܹs±~ýzTWW3d """"¢¶%99ûöíÃ/¿ü�ضm¦L™Ro¹´´4Ì;111HOO‡ÃáÀÞ½{}–)++Ã{g¹sçâ…^€ÉdÂîÝ»ý*Ãn·ãµ×^ÃŒ3––†þýû###=zô€®ë��‡Ãµk×ÝÊ“““‘€­[·¶xÿý-Óét"''ÉÉɘ7oEÁwܵk×"11cÇŽÅž={|>ŒÜÜ\L›6 kÖ¬Á˜1cŒ¿è;NüñÄŒ30þ| :YYY0›Íxùå—}Ê©©©ÁöíÛ1mÚ4c¨‡?ßGs5õý5µOþèÕ«ºuë†:`ĈˆmövöèÑ¥¥¥MÖCcëºuHªª";;³gÏÆçŸÞfÎ%œ“ˆˆˆˆˆ0~üx˜L&ìØ±ñññ¸xñ"FÕà ¾üòK|ñÅøùçŸ`À[BBbbb��&“ !!!>]é¯TÆ©S§P]]#FÔ[¯ Æ2UUUؼy³ÑÓàĉW5„¿e4�€   �ðRb³Ù ªªÏgn»í6cYÀ=‘aff&4M3Ö{ï½÷ïK’„aÆáûï¿÷)gÈ!oö÷Ñ\þ|WÚ'Q¼>Ë.++CBBÂUÕC ëîZ… uëŸ!µjÞC&ŠŠŠ0iÒ$ȲosA×u¤¤¤àÀ˜={6’““±qãÆf­§©2BCC�f³ùŠ.À=—„÷¤Ž:t¸ª†\ ËlŒ(аÛí‡�â³LPP1´ ¥uy=yïÓõpþüy¡_¿~-ª‡ÖTw&L@JJŠñï‚!µÉÉɘ3gŽ;†¬¬¬zï`Ë–-øä“O0räH¸\®f¯£©2zöì‰ØØXìß¿‰‰‰�Ü“P^¸pÁX&::f³ååå˜4iR@öýZ”Ù˜C‡!::‚  oß¾E_}õÆŽk,“ŸŸ1cÆ\U]^OÞûä ¼oÇØÐ0AZüúµk×ÂjµbÖ¬Y~ÕCÝuµ¦ºkHll,ÒÒÒÚäP8'p™$ š¦á¾ûî«÷~pp0AÀñãÇQRR‚åË—�JJJü^‡?e$&&"##O?ý4.\ˆgŸ}6›ÍèYa±XžžŽwß}[¶lÝnGEEE½;24ǵ(Ó㫯¾2æ+صköìÙƒ'Ÿ|Ò¨™3gâý÷ßG~~>ªªª°zõj”••aîܹW]—×Ê•ö �† †ýû÷ãŸÿü'rrržž^¯Œøøx>|ؘ¤1‡%%%(**B^^ÒÓÓ±fͬ\¹]»võ«ê®ëFÖÝ•tìØ .ÄË/¿Üfo±Êˆˆˆˆˆ�¸‡Lìܹ[·nmp\}TT”Ñð0`�dYÆœ9s°dÉ’z6ÆŸ2–-[†    �v»o¾ù&TUEpp°QÎÒ¥K1kÖ,¤¦¦"22½zõBffæUíÿµ(p÷’X½z5"""0eÊüæ7¿Áœ9sŒ÷W­Z…¸¸8<ôÐC¸õÖ[‘‘‘×_Æ »êº¼VšÚ§iÓ¦!$$±±±X¾|9Þyçze$%%aРAèׯæÍ›×èºöíÛ‡Þ½{ãöÛoÇSO=…’’äå塆?õPw]7²î3qâDdeea̘1×mØÉµ dddè³fͶmÛššÊ3+ÑMjÆ ˜<yr“Ëñ\@DDíÍ[ùßàñ·v +åa¤ »®ëÖuº®CÓ4¨ª MÓ (Š1Ñ›Ëå‚Ãá@AAÆßjꬢ¢‹Å¸½eII ºwï~ÍÊØ¿?FŽitm÷¦( Μ9ƒÈÈÈzsH´T Ë|ì±ÇP]]mÛ¶áܹs°Ùlõæ_𨮮Fyy9"##›ÕÈ Ä÷q­öéܹs NVéíìÙ³èØ±c½Û¥^‹ã²îº®wÝ]k»v퀰ãÈ <·í3¼:3 3ïƒ,ËE’$AE‚Pï;xð l6›±œ$Ie¹Þsï²$I‚¢( 2Úœ“ˆˆˆˆ¨¨{Áïù½5þE³îdˆ-i”]©Œììlœ:u Çlj'°nÝ:ÄÅÅáþûï¯WŽ,ËˆŠŠ èþ]‹24ÙØ ò¹cÃõü>®Õ>5õ>�tëÖíº—u×u#ëK„+ŸcšËs Ù&ÿýðtNDDDDÔ:ÃÏ_Ûr×é–0›Í8rä²³³a±X0bÄ,^¼¸MÖC\\œq‰›Å͸O7Óù£±ÀòZh(x`È@DDDDÔJ ×£‘Ð%%%!))馨—çž{î¦û~nÆ}ºÙÎîŸÍ;oøÛS¡©ÏqâG""""¢VÖ@ð<o¯=ˆ¨åçA€ôfðwþ‘¦Â† DDDDD­ aP¯‘àõÜjµ¢ªªŠED²Ûí°X,îóFm/þ‡ ÍêÍàY¶¼¼Üçu† DDDDD­DÝpAˆ¢ˆ°°0ìÙ³‡DDÊËËCXXXíÝ#àîÍÐŒÞPv»Š¢4kŠ¢Ô @2µuï&!Š¢q«¹N:Ál6#77¬,"2ÔÔÔ 77&“ ;wv‡ ¢Øè¹¥1eee¨ªªjVo†ÒÒÒzÁ'~$""""ºÁá‚®ëõz1x ’$¡gÏž(++Ã_|ªª*¸\.ã¡( EªªÐ4 š¦A×õOäFD­ãÜàéÍä9Ȳ Y–a2™ŒGPP:w]»B’$#œt÷b¨246¸\.ÔÔÔÀd2!,, ’$5ºmº®£¢¢.—«Þ{ ˆˆˆˆˆZY£¢îp I’`2™Ð¥K„††Á‚ªª>Ï=C¢›/dðL&“Ïs³Ùl¼f„ ð¿�¨ªŠAƒáèÑ£P:u2Öé.¸\.TVV¢ººááá(--eÈ@DDDDÔZž^ ž@ÀÓ¨Ð4ͧqá6x/ ¸{<ÔíÅ i+˜¨óÞç�O¸P7pð>W¸‡K÷ïÞçœÆBMÓ`2™ðoÿöo8~ü8ÊËË!Ë2‚ƒƒaµZ¡ë:‡±]¡¡¡ ªf2d """"j%ƒwè Š"t]‡$IÐ4 ²,û\Ì{7<TU…ªªF¸Àèæ A0B††ÂY–ÿ2@0&~ô>¿\‰®ëE‹111øå—_PSSc ËEÑ5, BBB¼í%C""""¢V4Ô.ÑÐ…¼ PUŠ¢@’$#dð<2Ý<!ƒçáé±ÐPÀàyH’T0øžSšâpšÍftïÞ—.]BUUTU5 OÈ`2™|†f0d """"jEáBÝ ÁÓ“Á»ཌ$IP²,ûôd¨û ¢¶{^¨ûðáé¹à <÷ûÜÃ%ê—ãïz%IBhh(DQ4nSY7ÐhC""""¢ܨ xBŸ wYö™ƒAÓ4c(…÷ÃHxÊdÐ@Ô6Ï ÞçÏ¿ûº½¼ïß±¶7ê M uC ³Ù ‡ÃMÓê •ňˆˆˆÀ¦}‡oغu]<¡€û…ÚÀ@‡¦éÐ5ÕýS× {æ\PUhº]ÓÜË×–a„ `¸@ÔæÃxMÔ(=·¦EˆžŸµ=º'y ˆ6øÎ½¼×p‹æ†ž�T’$\ºt !!!¾“K6R&C"""""�yÇ~DÞ±oTÌàõ£Îs½ÎÃxßëw]÷ý¬ç}"jã)ƒà9@€ÑCÁ{bGŸßןÏ7g^£L�—/_ÆŠ+°hÑ"tïÞÝ'„`È@DDDDTÇĸþ@ÊßcXƒîÕ¡n½¶×‚VÛk¡vIwï†u‡HpÈQ[ÊÞ ™ƒP;”Ês Q¬íÝ ük.Ïp«ñwöó šÓ£Á3ŸÃ{g .àwÞÁ‚ š,‡!µkƒ¬H×*¶Å{ïçžÛRÖ½{DÝå&ÝÜáCݹ„:C"¼oè3ÍuôèQüýï�9rÄðáïø† DDDDD­°1á ¼ï4á$x/S7``Ø@tóê† �Œ ÝA¢%s1xs:ذaƒÏk›7oF\\, C""""¢¶.Ô}Ï;P$©^°Àpèæ>? ̱ÐP¸àý³îsåææ¢¸¸Øçµ‹/"''O<ñC""""¢¶Ô˜h(hð~Ï;\ðþID7÷¹¡±�!Pá‚ÇĉñðÃCUUTVVBQ˜L&˜L¦+~Ž!Q+mLÔÑÔ{ ˆnîs•^kxÂÈ–“$ɘû¥îœWˆˆˆˆ¨ 4*êöl¨Û£! "j›ç‡Öt`È@DDDDÔ § ¢ö{^h 2±qAD"«€ˆˆˆˆˆˆˆ=ˆˆˆˆˆˆˆÚ9‹Å‚?ÿùÏ$ ¢(BX­VX­VŸIEQ„$Ie6› ¡¡¡>å0d """"""jç{ì1„„„@UUèºMÓ ª****Œ[XšÍf˜ÍfX­V�À±cÇ|Êáp """"""" † DDDDDDD ˆˆˆˆˆˆˆ( 8'ùPUµÞCE¨ªzÅÏ1d """""""}ôÞ|óMèºEQ ë:AÀC=„ÿøÿhôs.ADDDDDDD>Ƈ¾}ûú¼Š)S¦\ñs ˆˆˆˆˆˆˆÈ‡$IHMM… Æk>ú(BBB®ø9† DDDDDDDäC×uôíÛãÆ�ôïß÷Þ{/4Mƒ®ë~Ž!€O€ ë:&OžŒ.]º`úôé .S'~$""""""¢™Ífüçþ'BCC¡išñðÜm¢.öd """""""‚�]ׇ¦ip: ò TU5†MÔíÕÀž DDDDDDDä.¨ªŠêêjTUUAUUŸ A€Óé„Åbñy`È@DDDDDDÔUU¡( ªªªPQQššhšA Š"$I2Oöd """""""’$áôéÓ8þ<ìv;A€Ùl†Åb$IFÈàùi2™àt:2‘¯Ë—/#''²,CEˆ¢«Õ «Õ AŒÞ ‚ aƒÅbADD„O9 ˆ¨A+W®„Ùl6ºBéºnœ\A€,Ë0™L‡ÅbÕj…Óé€z㲈ˆÚ#OwR§ÓiL’u³“$ ’$Ál6 DDíç/ýf³555—.]‚¢(PŘÁ{Ùæ>|8òóó›õ™º×õ•••xöÙg²¿ ˆ¨A‡£GFŸ>}|.5MƒÃáÀáÇáp8 ˲q!äsÂ""j¯TUÅåË—Qtö:PyÙ —"A$h�0›„Ú =@× �t÷s½öBSÓÝËz–jŸÜÐ24U‡.¸oW&Š€Í¦#ÔR…¸>Dõè�›ÍI’x@Q»¼'S´ÙlPU¡¡¡°Z­:t(dY† вëçÓ§OcúôéMn‡çΞët]סª*ŠŠŠðñÇlŸ2QÃ'YÆåË—a6›Ý'>A€ªªp8(((€¢(°Z­0™L>ã³<'-† DÔ^)Š‚ .`KÞYœstÁ°»ú sDÈ6+tA„ªš„Ú�It7ÚµÚ×T Ð4ÁXFÕôÚ†¿�Yt7ä%Ñ H‚nü~£Êp):D‚¦ÁUã@eù%üý‡_`ûág<ò@7„‡‡C–yÉIDí7dðüôôpÓ4 ²,Ãétâ믿Æ=÷ÜcÜ¥AÄ…¹ÍܬÐ: C‡ÓéDyyy@{žñŒOD òÜ–Æår‰§ªªøé§ŸpéÒ%Ãd2Ád2Ýc=c·0Q{¥ª*ªªª°ùï¥øîBGÌ|d:„A%è¡B€¨š*Àl$ÁÝØWuÝhÜ« ꀪ‚&@ÓI¯ D@�Iô„ -C—QÔÝå €%X¥CîêÒïæ8`Ï;‡´¤PtéÒ…=ˆ¨] š¦!ƒªªÆ¼UUUøá‡п˜Íf‚ÞìkiÏuzs¶Ç³MÕÕÕp8 ˆèÚóœhDI‚ ë¨ªªÂ…  «Õjôrð<¼C DÔUUUáØOåØž/ ññ~0YC I24ÐuwÏ�U Á݃@Ô¡i4Íýº®»jž‡î¾€ˆp÷ @Ò�Q¼±e(`‚�Ud€ C“%˜ƒ% L臛¾ÁèAå¸/"Â￲ÝlƒwÈà™‡AQH’dÌÏpöìYDöèá¾îöô v'��»ÝŽ÷ßÓ§Oo0hh.—Ë…¿üå/˜2eŠû\Û{Á³Mªª¢²²2à×î ˆ¨Až¡ªª f‹ÐuTVVÂáp!ƒÉd‚Ùl6z3x†M0` ¢öHÓ4TTT û«J ¢ ªL6Ti"4—�At PtÀ¥¸{ è’±v˜‚÷ðÔ6êuÝÝà÷Ì‹ ^CD÷±¶7Â*CÓ8E² H @€ªÕªˆK¢èÖÛ^À½ÿ¦Àb±p"H"j·Aƒw/—Ë—ËQ¡×^cWWW£òÒ%„††çJ¡v²œ¯¿þo¼ñJKK1mÚ4c’H£Q/Ëõ^óü¿”››‹½{÷böìÙ¸ûî»÷TUEuu5jjjŒkz† DtMY,˜Íf÷IÐ逦¹ÓN“ÉdžeL&{2Q»çt:a·Ûq¤XºvÀ¿høârî –ÐÙdÁ%EG\T§ è¢C’@Ô¡j€KTU�TÀ®ëp¨@&@Ñ@Ða³¨Ã$&0×>ndN—ˆ`Y‡E‚dÀ*ê(u8qÜ©—5 k')©‚ÝnøE,Q[ ê—ðLœî™ˆÑl6CÓ4\¾|‚ ½…/\¸€?ÿùÏØ·oŸQž¢(õ[Y–.á¹KÜùóç±jÕ*ÄÇÇã±ÇCÇŽát:Q]] MÓŒÛT2d ¢kÊÓ+A×uØíã$é¹HôܶÒ3/ƒ÷É’“?Q{äé{Q ":,`‘`•%8E³AlàuD %÷œŠ&@SEœàP» Ô¨�4À&I€IÄÚ‡E�d 7´Œ §û÷ÐÚBuDˆ"L&§$'ª]q±¼.— ²,Ãb±ð@!¢v0x žž Þs˜iš“ÉdÌ«PUU‡ÃK—.áþçpñâEŸ2/]ºTï[TVVÖ[¿Ëå‚¢(ÆïûöíñcǰdÉAQ”krg8† DÔ(Oh iA0&í’eÙèÁP·'C"j¯E,ËèØÃŠ2‹Œ¸ }Cm°ZMŠ&À¥¨QTØU 20Ép¿§º‡R¨àT‡âîQ ¨µC²˜%÷C˜¤Ú 7°ŒN.fI€Ù Xk'“Ôt ÕŠ†n5þnw¢cw‹H›L&(DÔî‚ÏC’$¨ªjô`ð„Óu'O×4 ¡¡¡X²d ¶lÙ‚ƒú ]c»\®ÿ_òž«á¾ûîäI“ ]×?*z¸3C"jçDç9ñxNDž‡g²GOÀà¹Í¥Ï2"¢vÄl6#,, ÷÷)Åö*'º†XÐ¥ƒ!& Q‚KÓáp¹í5.!:L’Q h€KÅÓƒ@‡³¶¯êîó©Ir?,þ5ÜA -ã²K€Yl&÷O‹$@ÓU(.‚EÝ].Œîá¾¼Ùlæ&ˆ¨]† žŸž?ÜyÏÑàùÝsÍí¹¦–$ áááHKKÑ#GðöÛoãܹsF¯ož!Í ‘‘‘˜5kúõëç3|ÃÓ{"Ðw‡cÈ@D† Þ';ÏP ›Íæ“|zÿ¬{‚bÐ@Dí-dèÒ¥ FE ﺘDt²Yd¡I\š�“ ¸\€äÒânàK¢»ïTÝ |‡X<ÏkïD!èY̲�³Ȳ{n„Y†à̲‹,À*&A‡ KP\ª‚H݉øˆÜrË-0›Íœø‘ˆÚ]ÀP÷z¸îu4€‡ {ÿánÈ!8p rssa2™êKív»Ïœ7ž`CE<úè£øõ¯íòz�Æú‰!5È;@ðNLƒƒƒQ]]Ÿ1\uDDíñ¼†»úGbfå9žíˆ¨ð0˜¬�D’ˆ.’ À$ 8X‡EDÁݰ7iîÞ¦Ú¡ .U€¨ü«qïnØfI¯í}à~íF–¡9XL,µå™E@Ò€ªj—JÊñ«Ž¥ˆ»=aaaìÅ@DíŽçšØÓ{Àsì <s0Áb±Àb±ø„ +—†��rIDATÞ×Ô‹Ó§Oot=M¬›œœ\/|ðÌ áíö̈®ùŲ§çBPPqòN§—/_†Åâgëénå}"%"j, úöí‹ËÊ`>õOütÜ„ž·uBph› AÖ!*îIeI‡(²h* «€¦�ˆ: è:d Ðj¯1Ùý9©v’F©ö³7´ U‡�¸oÑ©Îì—ìøåLn³ÇÐ(}ûö…ÅbiðöjDDí…÷Ü š¦ÁåráòåË0™L 5nï=<¹9ü½;„÷.<ó88Ž€Á ˆ¨Ñ å   c¼¼ça8þ<JKK›Íf|®nOöj ¢öDEtêÔ ƒ†ÙüŽýx?Þ‚sRØÅ ¨‚W턪Pfk‡)(š»×€ZÛ“À³œRÛ67z Ôþ”EwPq#˨qy•6½•2 Kq{tˆÎ;÷‚'"jO¡BÝ€AUU¸\.Øívœ={Ö˜w!$$ÄgØBs¯Ÿ›³¼§'…wdEQz‹a† DÔ ˆˆTTT ²²Ò˜¦î J”––Âjµ¢S§N¼³Q-›Í†þýû£S§_UR‚óç¿…Ó鄪xÝÇü’¿É…ç*€Zûhvúq ˨}.I’{^Šn]нûíèÚµ+l6ª««y@øçB¸p᪪ªŒðõüùó8þ|ƒËû«sçÎøá‡Z´}žëüž={^›aÆ < ˆÈ8²2ˆˆuÑUÛìf¦iÎ;‡sçÎñ '"jc¾ûî»Àüçy’ššÊZ%ºÉ•——7¹ ÏDDDDDÔÒö† �›6mbmÑU._¾ÌYxˆˆˆˆˆˆˆèª ©©© ˆˆˆˆˆˆˆèªÉC† ál"""""""ºj"«€ˆˆˆˆˆˆˆ!C""""""" † DDDDDDD ˆˆˆˆˆˆˆ( 2Q@0d """"""¢€`È@DDDDDDDÁˆˆˆˆˆˆˆ‚!C""""""" † DDDDDDD ˆˆˆˆˆˆˆ( 2Q@0d """"""¢€`È@DDDDDDDÁˆˆˆˆˆˆˆ‚!C""""""" † DDDDDDD ˆˆˆˆˆˆˆ( 2Q@0d """"""¢€`È@DDDDDDDÁˆˆˆˆˆˆˆ‚!C""""""" † DDDDDDD ˆˆˆˆˆˆˆ( 2Q@0d """"""¢€`È@DDDDDDDÁˆˆˆˆˆˆˆ‚!C""""""" † DDDDDDD ˆˆˆˆˆˆˆ( 2Q@0d """"""¢€`È@DDDDDDDÁˆˆˆˆˆˆˆ®ÚÉ“'2ÑÕ9yò$>øàȬ """""""j©'N`ÇŽHIIaO"""""""jK—.ìÉ@DDDDDDDÍwüøqäææÃÉ“'2QóüðÃصk—OÀÀ9ˆˆˆˆˆˆˆ¨Yê ………عs'çd """""""ÿ])`àœ DDDDDDDä—£Gâ£>j4`(,,dO"""""""º²ÂÂÂ&†;wBX¿~½Îê"""""""¢†”––âøñãxüñÇQXXxÅßÿ6‹csÃ7:Ä����IEND®B`‚����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/vignettes/biotap_initval.png����������������������������������������������������������������0000644�0001762�0000144�00000110405�13277247010�017342� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR��¼��[���ûGy��®iCCPICC Profile��xíZgTM—®î‰0 9ÃsÎ ɃäF’ˆ$A2"É�ˆDEE0�&’"¢(ˆb�%©ˆb‰Ûàë~gÏw¾_»ÿÖ:§«Ÿ¹uëÞš®ê©;õ\�$NxQ©¡0� ,<:ÒÖDŸìäìBƽÀÀ¤¼|¢¨z66ˆÊ(‹#ˆ6R†e¶l=7—Þ7À³ ÔªtR0úþˆ#‡�@6ˆ€%à7öÝÂÞ¿qÜÞMFtò¶°O ÒU!X:’bk€à‡�à‰Û˜æÅöÞÆŒo·°—Wd��œß}²—W�‚¹H¿±÷–ß±>ˆ}.d X¦pß pD„øÀêøúEù� Z‡èøúFù„ †�Ö ‹@Ú%¶ž‰¸5é+\@xëÙ!w¤ìÑ@e±ñá_²°Ï�4¥À-ý/™Ädl‰�4sþK6o»ý<!¶ÇQþJŠÛæ "bófss^�\�ë…››«5››ëµ� Æ�è õ‰‰ŒÝÖè­Ðdþ8â@(5 v#`¬8àAˆû@82@.(�GA¨uàh- Ü] <�ƒàx&À;ð|?Á*A8ˆ1A$IA :¤Aæ-ä yBþP%@iPT•BÕÐY¨ jƒ:¡>hzM@³Ðwh†aÌóÀ"°,¬ï„Í`;Ø ö‡©ð~8 > ‡«áø*Ü÷ÃOáqø#¼�o¢hQ¬(2J ¥†ÒGY¢œQ~(**•…*AU¡. ÚQwQOPoPŸPËh4š͇–Fk Ñ´:€ÎAŸ@ŸA_Aw£‡Ðãè/è5 Ã…ǨaL0?L4æ¦S‹¹ŒéÁ c¦1óX–+ŒUÁa°Ø8l6¶ Û€½…}„ÀþÀ¡p¬81œÎç£âÒpÇpgq7pp“¸<Ï—ÃëãðÁø$|þ þ:þ~¿DC¤ Q¥1§ñ¤‰¡É¡©¢¹Jó€f‚f‘–H+H«AkMëG›@[D{޶“ö9í†ÀKP&˜|Å„Ba”0O$…‰ÚDb81“XM¼N&~¦ÃÒ‘é4é(tátYt5t7éžÓ}§'Ò‹ÑëÓ»ÓÇÑÓ_¢ï§Ï�3ð1h280D2ä340ô1¼%A$>’ɉK*&5“‘æiÅ}Ó«;Ç7˜x™v0¹2Å3•1µ3½dúÅÌɬÁìÌÏ\Æ|ƒy”y…—E‡eËA––;,ïXq¬¬æ¬a¬¬-¬ÏX—ظشÙ<ÙÒØêÙúÙ¾°3±«°;³'²×°÷²ä`àPæpæHä¨åèãøÌÉÌ©ÎéÁyˆó<ç ç"/—W0WW+×n,· 7…;»–û÷<7O(O Ï-ž÷¼ô¼j¼ž¼9¼—y_óaùäù\øñ5ò½àGñËð;ñ§ñ7ò¿$£ÉòdWr&ù2ù�­€š€À›³‚¬‚ú‚TÁ Á~Áe!!;¡ƒB—„^ …5…ƒ„ ÷ ÿ¡ˆ¤‰\™eÕ­C‰)‹ù‰»'¶,.)î*~Xü¶ø7 A {‰L‰v‰9I~I[ÉtÉ6ÉOR|R¶RR×¥¾H J;HçHwH/ÈHÈxÈËôɬË*ÉÉž’}*GÓ“Û'×(÷Vž[ÞV>[¾K~YA^!@¡Rá¹"ƒ¢©bŠb›âw%I%¥“JÏ””M•S•o*/ªÈ««œVWåRµW-P} †UÓWKRkWû©® ¦~^ý½††§F…Æ+MvMŠf‘æc-:-s­l­{;°; w¤íèÖ†´wj'kwhoèèè$éÜÖÙÐÕÕMÖíÜ vêíLÝyG£g¢—¥×¯OÔ·Ò/Ô6`3p2(7xc(`ègxÖpÎHÞ(Ú¨ÍhÍx§qºq¿ ½‰I©ÉS!Ó ÓK¦?wií:¸ëž½™½Y¹Ù”¹¤ù^ó6 `ajQ`ñÂ’lhÙl¹b¥o•gõÌšÏ:ÀºÙzÕÆÈæˆÍËÝ»Ãw·Û¢m­mËlßÙ)Ø%ØõQX(ž”‹”_öÆöEöãÒñ÷Y½›7œ,œÊœfÕ3œŸ¹»D»ô¸2»ú¸¶¸¡ÜìÜjÝÜ Ýº¿÷PóÈöxµGzOÒžAOAÏhÏ{^œ^¡^ÞLÞ~Þí>DOŸ+¾x_7ßf?ŒŸ‹ß%´¿³ÿ¥�t€K@S 6Ð-°%ˆ&hOе`º`ßà›!Ì!!!=¡Ü¡Q¡„ž…ˆg†ODhFG|¦šP«©«{ö6E"ý#»¢x¢â¢†£å¢s£gb bªbÖbc¯ícÞGÝ÷(N*.;nf¿ÑþÚx8Þ3¾ã�ßÄc ;ÊV]o$q'%$%k'ŸJÞLñLé>(t0ýàLê®Ô†4ú4jÚð!ÕC¥‡ÖÒ=Ó{2Ä2r3¾fR2Û²x³f½Ï¶ÈnÎaËIÈ™Ê5ÍmÌcÉ;7uØôð¥|öü¤üwG,\-à-H/øRèPØQ$^TX´Rì[<P¢VR}”p4æèÄ1³cW“ç_:á}âQ©fé™2¦²¤²OåŽåwN*œ¬¬ V쯘9eª§R¡²ªŠ¡*±j®ÚµúAfÍùZ®ÚœÚ•ºàºÑÓ§ož‘=SYOªO­_8ëwöÅ9³s7Ï˯i`mÈjX½qaú¢Ãź—/‰_ªhblÊlZkÞÛ<ÓâÞ2|y×åŽ+ªW.^¾Z~éZv+Ôº¿õ{[PÛd»Kû“ëæ×ïÜйÑzSþæù[·NÝæ¼]ÜAߑ݉îLî\éŠíúÞÖ=Ûãß3ugϱ»ÎwGzíz‡îYÝ{ØgÖwÿ¾ÉýÞ~£þ; t?ÔØ5 7ÐõHÿQ÷cƒÇ=ƒ†ƒ½C&C}OÌž<¶|j÷tä™Ó³Ñ‘©ç~Ïg_„½øþ2æåÊ«äQÔhÖýXñkÎ×§Þ¿9?®0Þ:¡3qwÒbrxÊejj:xúÇÛøwð»Ü÷ÌïOΈÌ\ú þ¡{Öbvä£çÇŸb>mÎå|fû\ýEúKÛWïƒßܾÍ~ùÿ82Ï3~AmáîO»Ÿ“‹‹KyËÜËçiüº¿â¼òa5n ¿Vº.±~}Ã|cl3üo,ð7ø üþÆc¿±ÀßXàï¹Àßs¿çÏþž ü=ø{.ðÿ÷\€êéµ  ö÷àG=�tÎ�0@@ýoÛó(¿£ €BH!xËÀ#<„(ÐEø†C  ¼ƒX!=(áÞ¢p|łڇšDÛ¡0v˜)ì~;®M#C³@ÛK¨&¦ÒùÓ›3(’ÈŒÌL´Ìh +Ž]ˆC•Ó‚+;—ç2ï(?ž¬!*X-4#¢$š(Ö/Á!é'Õ,½&k*W(ÿRQ@ÉG¹VeR[¢‘§Ù¥5¯-¬c«{xç}¬¶a¬Q½ñ Sì.3óƒ5–ÝV¯­wÓÛ ÙiP,í=¢ÓJ/¸Ürt›tÿ¾ö$y‘½|t|-ü\ýÃæ•W…ä‡F‡¹„G(Qö2GÒD¡¢6¢WcVc7âàýøxÆ\ B‰¢IädžöƒL©„4tÚæ¡•ôùŒ¹Ì™¬éì79¯rŸç==<’¿\\ø«8ù(t,ùøçRë²óåËZ§¨È©ZwõTÍJýi3õqg¯œûÚ yÁçbYcÿ¥õfé‡Ë)WÎ]¸¶ÐÆÞ®vÝñ†ïM¿[·ƒ;‚;CºÂ»£zâî¤ÜÍí-½×Ð×uÿUÿÂCº¶G¤ÇøÇƒóCÓO††;Ÿ6=«)|~èEÂËØW‘£Qc–¯Q¯O¾Ñ|36ž9¡617yn*xZazõíýw'ÞΨ}À|x0›úQåãûOÇç¬?3|ûÒùõæ·Ñró=?[—ÖŒ77‘ù‡�Ð#<”$ÐŽ àÄ Y"¼P `+¸^Gù£FÐ6è§O̶§ƒûŽ?GL«BÀƈ-t¹ôA $EFN&Ó:ó<ËgÖolK웜D.2·…w/_ ÿ5òA&!ká,‘^1”øN‰DÉV©yY¹SòOÑJÊÊ{T²U[Ô^¨¯iòiéí×®Ôy¨»¬'¨ojj˜oÔd<`òÎtÕŒdN¶µÔ´2´¶´qÞíi`N‰¶?àâ˜å”ï\âRîZíVï~ÉãÊžvÏn¯ÞÃ>£¾S~þZ%‡„8†‡i„+DHP…ö’#ù£ÈÑÂ1’±òûTâÔ÷+Ç+KNKLæOá>È–JJ#§£Ò73V3—²–rs©yïòmÜ..J)>ÊÌûøÉ¥Kå<'wT8!+!»êJõJ­i]Ñéñz±³¡ç.œŸ» yÑ·±ìÒP3ºEýrЕWû[qmF퇮÷ÞDÝÒ¾} ãZç\·`åNúÝ˽“}„ûJýBîH{”õ8w0{(ýIòpüÓègÔ‘Ðçá/"_ƽJÍËxô&f<lÂÒcÊiz÷[ów¦ïgŒ>Ïš~´ød3gþYõ Ç—/_»¾~÷û±s^xã§Ø¢ÓÒ•_”U—õ•íùÇ2û@h‚ÝÛxaÇæPY1PôY;àD¸E@íAµ¢YщèÌÖ; Ãmâ hDhnÑ:Ò.Šˆ*ÄQºCô ôÓ ÇH–ŒXƦC̦,t,#¬lÁìúkœ¯¹np—ñìçuäSçgçŸ' \ÌòV¡™mËw—“$I.H=—n“9!»OŽ"¯¨@¯0«Ø¥t\9LEO•Eõ½Z«z–†‹¦„æ’Vھ: º°îÐÎ*=ª¾ž£Á¤a³QŠñn“¦]»Ž˜¹šs™?·8jioÅi5f]cº[Ãc;lWC‰²7ràp˜sìp*vpÑvåpýá6à~Æ#e›§º“לwŸOo²Ÿ›¿z�sÀ·À‡AuÁûC,BC—Âˆ *P÷¶EÆFÉDMFÇèÆ|‰­ßw0.`¿uüŽÒ <‰¤$šdTòFÊêÁ_©ËiˇÓd,gqf[æ¤æÞÈûž/vħ ²p´˜»ÄõhűÉb¥áeWËU(œrß^K㵸:…ÓgŠêïC7jÈ¿ðºQáÒá¦-Æ—Ï^%\‹no߬$[mš·» {ݵïè ëgxÐ>`ûèÃ`ê™áÏ:Ÿß{E;vx<yjqÆú3Ç"jkþóé[{V€É�8Ž@‘ €áÍ�`§ÀÁ �­Lhú9€øÚþ{ÿCØé›Û¬Žì=ƒ¦À9p'¼„’G… Î ¦Ðühwt9zÃqÁ”c^cù±ÞØ:ìœ .׆ÛÀ›âóñOi¸h¼i=E—6—öAŒ°ÐGä&FïÒñÐÅÒ ÑËÑçÓc°ch#ñ“²H Œ^ŒCL:L ¿™Ã¼ÁÉò‘Õuá.ÇÙ}Ø?qÄrœE\¢\7¹í¹¿óäóÊòñÅðóðß!‡ ðÜŒ’z+\.âˆp…ƒbEâ\ã’g¥öJëÊ0ȬÉþ”û.?«0¥øZiDy@¥[õºZ³úYJÍZGvdj§ê$ëfí,×kÐï4xa¸hÌl"oJÙoVm~ßâ§•€µµMÊîÛ'vÝ” {Kv‡Ç6§\go=Wq7wŒû¦Ç¦'ÁKÐ[Ç'À·Ä¯?€6Ð"¨0¸=d4t%œ'b'ÕoAäí¨…ñØ=û*ã&ãÅD$ÜN"&»§´§2¦EZÎÈÈbήÎÕÈÌ÷9²RXX,\ÒzÌôøÓR²™“K•%Õµ|usg:ÏVŸÏº°·Ñ¥É´Eé ßÕÍÖéö®'oóv™Þ±¹'ÿëÃã%†.<©~)0ZûfפÒ[ÕÌs×¾²~W›g]¸±(·”¸|ñWýJÙªÝÝÚÙu±õ3"]›žÛ¿&HFÂ+ˆ²‡  û0k‘ðyø-Âý»£ÊQ¯ÐÜh7tz#Œ À4`¾cÕ°‰ØGÁUàfðJãÞGÃHãNsáÕhÒ¾'hò ÓDMb ñ 9Ýyz}8ýS† §IŒ¤dÒ7FÆçL»˜®3Ë2ŸFØì¬l¬ÇØ8Ù*Ø…Ù›8t9†8ý87¸Ê¸5¸Gy’y…yñÅó‹#¼r®€žÀ¢`“P¨°¸ð‘ÑP1%±uñ^‰#’RRR›ÒC27d/Ë5Ë_T¨W¬SªR.S)R=¬–©~Pã€f¬uGˆvN.ugŠ^¾~•ÁUÃA£9¬©Ø. ³HóR‹ËoÖ|6Ö»Ólí.R’í)ÒŽÇNýÎÍ.•®Ån9î¹…{*=¯y {/û ûÙùçôa‚BLBÃÓ#Š©÷ÞüÍ£뽯8®wÿƵ„ØÄ«I‹):3S‘Ò­2 2³I9¹5yŸóÕŽdL©—”,s9Þ]*Svê$sÅáJƪÆû:Ôéöú}çô.¼mlm*j ¼¢¡u²½ñFÌ-›Ý.åù»÷Dî ={,>$>,öLì¹èK±Qá×Rãn“oÅß7Ïš~ø¢ö-éGÁBÄ"y©vycEvuÇšÚ:n}`£{þ-@²Wd@o`8 C)£òQŸÐfèó"&ó«Ž=…Ãà"p/‘÷¼yË3iæi}iG–„;D]âm:º;ô–ô¯BH€t‚Q…q„)œÇ\ÇbÄ2ËZĦÃö™½šÃ•“ƒs”«†;ŒGÉ!xÏ×Í_MNÜ-¤#,-Â'Ê,F§‘ÀKÒJ‘¤ydddä²äÛf”8•MT¢TëÔžj`45´BwÔiëòîtÑ+ÑbÈbäj\e2»KÃ,Ç|ÔRÉ*×úÃî]¶g),öYާdàšï.èÑíã­æKò[ X Z 9&~‘*¿÷r”zt[¬Ò¾–ýrñd/&Ë¥ÜJ5NkO‡2,3K³&sdsSòçs *¸^„+v,©?ºtÜôÄñÒ™r“y“•ºU—k¤këO‹œ©;+~®©AñBk£Ò¥f$N¬¸ÂxõÀµé6³ö‹7ho†ÞèîÌéúØcz§æîú=J_C?x@yxn`ý±åàÉ¡OÃOsž<{ÿòþ(×Xàëú7¯'ø&ƒ¦Zßbß9¿¯ž™žåÿh÷)i®æó•/í_›¿úžõÃc^nþëÂéŸN?-–-)/ÝZ6^~üKç×…®•ì•ÉUÕÕÜÕ‰5•µÄµ+kŸÖ×× ×ûÖ77Ô6¨ç6¦6¹7)›‡7{·æÿwÖÖþh "B#"ɆÛÿ練Ð$Ïk»0!51<Ôj+·‹ ¹>øzš#wäÚ †nçÁ!:—_¸½"ÛÂÒáÞVÖÿ`ÿHc[#}!j´þæ@°?5Ú†ò<)>ÐÀ ÁDD^âeôÇNU°—’ƒ†DË�j‰Œ±µG°0‚;£bí¶òèH~HqüGgÁ×Ïð9 ûïú­3EïÚòÅ‚üù ‰0ßâ Væ ø!1x$R‡#9aÀ�þSË�à…´Ä"mQ ¼GpÒ#é`ò?zÿ&1Þî€ôûŸÉH~YâíÏßÞȈÏ?6ƒ€/‚ÿȽ[m[£‹Ú”ú/Ÿ4¶ìmF¾A~V~íϘТhE´ Z­ÖAk�2š ÍdÐÊhu´Z­…´i�cð±ðgŒ[öÃZücODì×tDZ·¾»÷ŸVà°­ôߟÿm èÑ\ëÜŸ ù“Û9È“XdžN"y~�ÜI¸´uû%Ú/n+WDP÷GF“õ¬I?iò®pYi²¢¼‚<ø/ eê\ƒÚ}��� pHYs�� �� �šœ�� �IDATxìÝ€ÕýÀñß^çéU¬Ø{‰Æ ÿM° ¢I°ÄnÔ4¶¨1ÄX±w¢!6ÄXÐ`Á† Šôã(×ûþ¿Ù›eYvïn¹Ûö=vwæÍ›÷>ogç·oÞÌúD¤@ÿ²› ›žëƒøBþìµ;Ù|›ÜÇÐç¡óœDaéÜy<"€� €� .àŸ¡¯Ýyî£%qŸ»îjöÚý³yµúW™¥ÿäè_·?þñ»tÐA‡õíÛ÷œœœ!: @�@�¤¨©©Y²fÍš×uzÙzdL:u¯£>ú’ìììÝëêꤱ±1)+F¡@�@�0ŒŒ ÑØVêëë?°ÞÎ{ï½÷a~¿÷ªª*„@�@�HzëÀÕ`W233ww†4tíÚõëÙeB�@�@ •,ðµ€7C{wë_ÔºÙ2‹u,„”­]+ßÍù¬ÿâ ©¯®vÖÉÌÉ“îÛ‘!‡"{ö”ÜÜ\ÉÊÊŸ/Ò5lÍXžnä]^^.K–,‘ÒÒâÃÖíÒ¥‹ :T ü¬kº¥<Ýr–”Ë›ßÌ‘E«¿ê†*Í·Qr³òeÛ^ÛÉ£•]zµªœQQX€� €� ‘îöî»ï~Ð\i­÷׆;,ûï»òÕ#3¥sçéÙ§ŸtØ_|:Üwã²åR¼z•Xà:ú”SdÀÞã¥S§Nθ‰hù644ˆå»lÙ2'ص ¶ °@òu=j¥ª²Ró«pò´ wÀ€N~Ú--K'?+çü%ÿ•Ç?zH Š ¥WßÞÒ»[©ol5ëVÊÚÕÅRYZ-'=Uöºw‹åŒº1 €€‡õ²ì«…RQ0LFèâa¾dÕ~5òÕ»oË×k+¥ë€dï±C$ú§sû•‚œ@�Ö8=¼-]¤f=»ËÞyG¾¹ÿ2¤Sl×£—Œ8ìÇÒëgG‹hàZüìóòÍK/Ëç•ÕšæA Xý2hŸ}lÌDÔ2ÔÖÖÊÊ•+eÅŠÒ§OéÝ»·ôêÝSŠŠŠœûmذQÖKñš5NëÝíׯŸÓ+-S+çüoÿ+þï>é< ³ ÚGy„4êp©¬)—W¾xNÞúþuY±t­<òÁý"¬ï9rßfËm[ÌG ^k?{In¹qšÌý&P‚ýϺI®›¸¯äzP èyWÊ[»Ynû+9÷ Ál)<‹yç—çÈ­¿¹Oþ{Ò˜ð…-¿®ù^øýƒ2dòïä Áù-§1Eͪweú=s¥F¿;Sn»ï¡rÀnÃ=q±81$o¿vûø åÜ{?”q“÷˪åßw »¯åÖL k?–¿Þü¬ìÔNíØÖ²Õ”­’/?ûD¾÷š¼²a?™~ÍQâý»¬­¥c=h@«^ưô‘Çe´/Cv)¯—~%eÒù«o$ë÷4hl”‘íÖ•I·ò:Y•!K4m·Ñ£%O{e£MR¬­±=u„õghþ[·³OŸu-’Üœ\ÉËë䤵!vµ]´iíÆbyvÁL)ìŸ/=†åIAçLY߸J­ûTªë+¥4£D:åH¯ì|ÉÔ–vxïÑ2 o`´,™@B 4¬}O~zÖ4‘C¦ÈýSLjϞ• _)‘ZÝ£ïV…ùvÞ+²¸ó®rèÎ}#Ö©¥¼ËÞ{EÞëyªœ­Ûò~òKÁžú´ S+î¡.úÅû£·^‘>çý®ëÇ^ú†òuòØ+ÏÊèŸþRë·^þrÏ?åÙÇþ)ÇL}L.>p›Ø3l—5"¸èvÚ§ÝÊdÉ›Êø«Ÿ“ž:F2¤N;'Öë»l릚õ‹å1mÇ!g_Ø.í¸eé"›…§ûîåKäÜÛš¾aîy S¶öØ Â·ËkðNÀÞL^ÐÜ´êÍyÒ]‡ìY!Ò¯²J:—¯Ò¡ ŠlØà¼y_~#¹ßKN]ƒäägÉÆŒ:qÖ9鄨ٖ””H÷îÝÞ]7ˆ­¯oêªg‹kS^^ž“ÆžÛ:;w¶§§w¿ž+™9™2pÇ"É/Ì•Œ\¿¬‘¥òIy­i¨—ÒìbÉ-Ê’ù]¥ SžüP²Alc{ž1?f"hUë×9EºïgÊØœjÉØî÷²è”RT*=&Z‰ëä‹Ë®—?]ü ¼Cäý½ù¼såÄÉ©µeÕºÊ-6Ò _T3sì–ÞÉ>Sš;Ãã¦ÛôØ ú%ÔïoГF‘Ë·)m„ºäŽ–‡-’š «e}UKëoÊ©µÏ³×#œ|Æoåøäü‰ÇË©ã)Ÿ/^)µûõMSù\´ÿ¹¹vkmý·H×P,óÙ¯U:gê¶XÞÆ z=ˆM>½˜£å÷A7²Ùj‘Ì6Kà¼óó‡dþé]eÕ3¿‘£ñ‹Oߣ޿˶Ü.s@À; ÍÊgCšûËÿò+Ù©Á'ýk¥‹~îû4°•Öˆ¼ÿ‰È EV•8P]´W¶¿~íµ´ù_.j6O¿kÁ«]ÜfÃÜ ÒÜrØÅiî|Kcimwy¤ÇåÕßKÿ1=u|qwéÖ½›öJvaƒTfKUö:éT˜!ݺv‘ݺJÏÞÝ¥¯¦µu"åżæßøÄÇGôˤM¿ó±l,+“õ%«eùÊN¯Ó&¿‘¯8@8Àþ&Ês;ïïofÿEþd+Þ2U&ê²;ç|·Åû¾ù¼Ëäé‹N”‹û$°^õ7rçÄ+ä¹wçÉŒ)ÈÁ‡êéý+ž•Å2û}}ðÁºý©2oYEÓv*äõ[¦l¶Ýe¯ß)o™#Îç»úç~Õ­”'¦Niª‡ÖåŠòYq`ÿX—ÊOäŠÃ—G>- ÖkÝ—¯ËTÇ!àqçì¥ÚÍß)ÿyâÝwe¦ë5E·±.ÚgŒN§Š +´'s•,¯ï.;ëëEÚ«YÓ¨u»sŠÜòÜ<™}çDÇý³ {TËdzglªƒz¼þåº`ù¾›s§L¹sŽ|öîÌ`š+f¼.ëÜ2j¾<q˦e3ßm²Ò¼›Ê?sÎl¹Å©ãº­HmÖnšwñg³eŠë¢uþrã¦:/ûà¹MË4ÍìoÜö }¿WÈœN“×µþ¯þñj-ßy}Yu+ë;[>~ýA§Ng~´p?Ot†1ošßR;¹¯Ï‘;ƒuºS>.¶ò4JõÊy2eâòÓV{N”[šÞÿßKAÿMu®®ÕΘuk¤´¶TK§Áx„4nxÜ䆉ôpzx­@ÍM]V­•~tvÓœ\—›kú—­«k`*ݵ×Õzdµ—§s•yÐ ÄÖ¯ h£åk­õÞZ/ýÙk÷ÏÖ±»8Øk÷î–Ö^7WÖêÜJé·M‘tÓà8';Sr2õ†Ã„gé£s§‰Æ©ÓºÚéßÚÜ:©Û&CVo  £•“ù$’@Þà½ä—Z ¿\tŠÌ=þ9ÿç?–¡=ÜžÕÕrßOÏ™?¹V^zû Y3ç.™ø›K¥ÿS3dìþäÄŸ—yº\wÄ0É)ê¹Å¾Ô|Þ>©]ý‘|UX¯!Cª¿-¾ôm™pÍ ™uîwrͤëå¤#ÿ*#O¸VfÍê-œ4Y®|åyõ—Úú ä“êÀÀLj—Ê⯆Ø7nNï~îÞ¢·„‘¬Ñä©‹o‘¢ò…rýñ¿•ûvß_núé©.òƒ,]¼X†ehO±íßK_•cϾ^ÆMºY^:eœTö‚?ù7òmùt¹å¸‘ºu+ÿùë¥ ä ‹îÐò×ʽ¿øÜ÷ºnãg#¬x›M~ë~Ö)'3×ɿ䣹2C_ÿhüöÒ©Q?§Ö-žÔ¿®ÞMúæ6ÊWOþA~s×Ûò뻟’ ÛçÉûÜ*¿;ûX¹âåGƒt—Ä žœ*“Ÿ<Jn~`–týþ5™tíµRYôW-ãùúéë墻jåŽç^•êÊåjð·¾3eÊþ}tËòß3uœuýÝòð°~Ò«sY„6®Û¬ÝÌeÂäå´›gÉ_Çu’g~÷39ûšÞòâ-?‘N KåŸýY²/ž!o;\Ö.Z* ½õµºošòeüI‹Ì¹EäèåáSv’¢L­ï5­¨ïZg­ïŒ‡eÔÐþ[¼µé“ÞU'ðYßR;59\»@μ^߇ý6ʽ'¿™ÐYõRX±^,^*zuu o{.Ö÷q ÿˆï¥`!6ÕXkœÝÀÛÀøb²˜§ øðf´tê(GÇ׿fjÒB½b#_‡êèó¦G BÅnOVV®ÝzªS‡<äéݲs²š=%åöÞ†>Z@k¯m²;÷Öeöè¦k®¬¹ùÎP…Î:æ7WÇçi Ý)#[mtc£T5ÔK¥þÕh@^«óªò¥,·¾Ùr:…áD ÁßS.üô Ùa†OwÞ&g>u›œtÙ=rúÁC¥jɇ2SË9é ‘RûC±t³§Œ’Çå»Õe—íÉŽãD¾ë;L $µUR©½V¡SsyÛ`›Šô‚TgÔGá$“îzYÎ_$åÕEba¤Ò]òäùã;¬Œû‘È _,“ ;èÅLaë[ZýÓoÎN~v‚Øy­Ž“Þp9íŒí¥jÃz)í2Tv%2/'ÛY–Y¡.•Ü4qÒ|óÑ¿5ïåºÉJᆠ)Úíd™uÑ\9éÖÉwðÌ”ÿÄiÏÊÕGô—²šZ9P}Ê lÃ)ZÈ? MïÔk~'|û‘,±eG_!—Ú_j7n:ýø“o–ùWýH*ª¤jÝByFƒÝqÍ’Ówë+«åÀÉˉ3^“´LÜf˜~"™àiòò§KŠriØé ™öÖ ¹ò½odãÙºþ<ÝÆTèß ¤› ÖÔOèYµ3÷9XƒÓ@ùOSÿóöì&UÚÙP]×-j»ípù‘ì7"G~Ðó1?=Q䪷ä»ò#dT–ϹOåûŸ"_íÞ_¶3FüUeRY×d«ÛL ÒyÛq¢—,K娱2|Ð�©+](kU}$Í»A¶ÍªšêÊ-߃MÎ~ýŒvÞMõŒÚNMËýÐ<9cL–TÖgÊ•L’W'ÎoVž(;e.å̲!Î[pó÷aÄ÷RØ~áÖÚâ5 ·äº”ç ÈNÀÛ\¯©>käP©ùî‘^½Dºjo® Ðñ¢7Ê ÔM/@“zªgãFý+=™$9lñí=Âzumœ®Ⱥ=½–ÆíÙuƒ[§wVÓZšæÊÚ¿k?=ÕW.Yz¡›ƒ(ÌÊÖ¿\é”™ãL«êk$Gÿ*ô6k:âÑ_]!ýŠtHßèC ËsE@OÉ®\‘#Lœ*û2ý²“åÞ?-½?#‡émýlš¡½¿Öû˜FÉÉÙRWµÑ ¯¤¡\ïwm§e#LÍä}äPÝ÷l=â;û‹ãùeE±Žå¯+uòЫPËW¬û[žMѾ<ÉÖýËþsÂ& ÜýÍï·kú=m!ù—~*wM»Iî{MCËaÃD‹Ü´nc¤º4JNÏ`µTëÇ-™:ÜÊÂJûR^“Û[Ÿ”JmC 4Vþ=†æÉò56.ºÆIWR>œu¾M'œpš>ò×Ò­ÿH¥ÇëÙ¯ݦ-7jÙ°bM ´×À«V罿nµ¬^_d«Jõª,Ùþ`Ñ[&~/G Ñ/ôZ‚QƒÄ¯wª)q²×;Ñl«‘ýü|Én¬//\%ǽà¬îü3*#'Ð#®õµò÷UÿUk×7%Ôaó6¶ºêä´›¹XÛ gûjÓ:ö5e¬t²ÐìarÁÌ©R|òU2iö_Evþ¹Ü~É)²mð BÓ*úPµ®ÔÙ~ye©~ôkž5zÁ±Îo±¾ã—¾5Z_+|„ÉÚϦ@;êó¦zFm§¦åyuÔÁg:å."\QZ);ä[~…!=¼›Ïohî½ädùŸÀÛ ð”4r:æ"€@â ´*àÍÝi{Y³r¥ŒêÑ]‡/è‡w·nú¨v€µ^ xµWUï¦Ã²¥X/¬ÉÜq{½P,úG‚]¨f÷̵۹A¯ûhLvP´@×ý³´¶Ž{°ŒD9´h[»õ¶äú³œ ·0+G 3;ið8嫃'ôÀ¤åÕÓõ:²bMµŒí¾{³yFÚóˆ¯@µ¬]µ\2rÈ97M—{<G{ë6èY‹@qÙcïÉ)Û¹7MòK¥ÞºD{-*۠ׄ6·iX1ïÆÁº¿ëúz¨¬¯†M z¿ìÆnºï^JYu3¾Ñf8³¬ÇU÷e —-XðëP£Àöõv†+_Ó/Ïãœ×NXfË›òïs5Øý…<ÿÁó24Ç/³ÏÜIž ®ë$ܼ.öyaÒÇÆÆNÒ£—v×ÎüBV5î!=m¾Nµ5«õßÞzÖÇÒ8©µ7VǨiùmmû¿)²ô¡“ðŽÚyW=PÏ^ÕUÉÒånÔÖT·ª òÁ­è0kq=4ØÒ2¦5ò…VyÔ#$_çmpŠP/õ€nàX-_/\¤…Ð!Më:óïòÔoõöM“¿A/[Q¢¦Måwýå:lÞÆºmg¶Õ9G]´£BNÙŸþ^ºëhˆ¾~ÅJ)¯×ú 8TþþéOdíç¯Ée?¿P¦<=FfŸ¡–áS`óÎ\§~­­ï†:©¨Ñ‘ðüš^©œvÔ²»õŒÖNM˳´ÇÞu.[¹\s%Ûë­)W[þš¬)¹@úõTåÚòéûú¶ÛÏMÉ,Ját¶½? Ô¶å¶jôÔ,A�Dp^·'5ZÁ2Æî, _~-ËôzöЀW?Ô»ègAÓA5[?¾´÷Ut¬ìr;57tdŒÝ)pJ*J¦úsÆz“‡ R©ØnÐk=»îäo°˜2½8Çî±kéš+ëÈ®;È’Ê¥äûré>º@r|9’«="Ùúh‡ß=Ðåút8ƒ~T­]R"ù¹dDÑÚûÕüõín™xD Þ+ÿ÷²|P6PÆ,]sÖÉGóf;EÚyDÉÕ 1Ï?ËŸ~~­tºó$Ó'G6¬^.5݆ʮ™’¯œ‹î|Yíy¢ ÔáIº;o65—wƒýZ¡¥Öý1pª9pBׯ¶:¯õ4p`yÓ©h ¢j3´GUïØ {]íí¼\ð±|?rŒ|ÿ/½cÄšßAõ7 i¼îdq™Þ`éËò¥såR R¤ÿײqïν^·¨‹ˆ’=ƒÓw·ë SåÙWÆÊ û”ªÞ‘n/rÆ=2HÇùV4¶–?8¤Â-¿mÓÔ =Ú6U•ê] Ö7}î»uoŽaó3ÉO'’³o™&¯ ¸JöêŸ#_¿ý¬ÌÒE—îØÛ1ið[ƒüIî{¥H&ì3R*¿.7¼)rÔ c¥ £·œ|éArÊgÊŸzÞ.?Ùµ¿vܖȲ5"Ûn?Àn­ãl}Sù—ÚØ-›¹ÖÉà}޹ãr9ÿªþrÙ ûHQf•¬ø¾Xzn;Zº6¬”ÿ¼6_†ÝNúwé);j–ïçvŽü™ÞÞ­ª¯•Ñmï@yÃÿuyûÜø> o'u°ó7<ü¢ô?õGÒGVèPÚu© Ê­‘ÆÎýœM¼ûÉçÒgx½<~î•ò²Î9(än [¼—Âö Ë Voy¹QÉWØÉ�Y'KW­’Âýa£®öe‰ ’A Uo™~øt;ä`Yþá’›—+½l ¯»Ö£kAª»Õ±±kµv…Þš(kÏ=¤D?ˆÜoÜ‘ l™]ˆ¶Q‡Aäè:öKkö!ôÚk ˆ-0¶´v—›mòë8¾=û- Š_õ…R0PÇژæïâ:,L‹é—u?”KYq¥ìÛ÷§R[¸B9ZžÌG ‘2ª–ËŒ[î ² 2ù–Gåàžõ²®"W&Í}Br¯9A®ùõ¿‚Åžr÷càfË®'\%òÒT™ò‹'åW7?,ÇŒ´PaÓÔlÞ•M=¨n   ~ ˆvº“ŒLÑó?ÎŒÀ—ÒFéäÄ…zý,hÐÔ{7YdÊmr®E‡O‘«&¿-Sß×Þ2gùæùowøu2ræ5rþ©O놓ä’ÉGÉMwO“+ºÞ*·;r˺ µ-èð+ý8²ígos¤<sG¹ûÛËäé;¬`qƒÜwÆhÙ¸F#ïðòëg„}´­À*Á}ÚƒiS¶?3B�a݆R}Út¹¡æR¹|ÊéÁ|¦ÜñŒ3D/–-µÏ2ë!>H|ÿ»L~ÑTƃ&ß%—î×]Ö­-•¾ÇüAføïIš"¸9z±ÌÚ¶ŸämQ~K±¥ËÈÜ;ˆTí'sºN®8õ™ô\ÓFåùË#¤P‡5|~Ë5»yXv#'ÈŒ“¬ãÂbs6Mz/óþújC~“G+ꛑÕËùÂhïMY…>s{ÒÝvl±ÔÁ 9ÿsüZÿœiä/äћѭÖÞû1rÄ‘rù-—Êsºðÿ®»E¦¼x±ÌÓÆ¼O#™m¾_Xž«?|X&ߦÝóÎ4_~sºÕC'É£·Ø~Ó@ q¬KõÈgžyæ¥æŠhÁ©ýèC'ýÕ³œÏ¾^:¦®{Qí!ÍÓÕ|ú+fÕ²NÇq­]òÔè´*ýÕ4'hC¢MnÀk?4aëñ-Ð@ÚnAf“ïuƒ] ‚-(®Öqx-åiåÜ(Ųpã¿õ'…ó¥{.›k9uåUÕz/ßR½‹Z¥ìÔí0½ ¤W‹åŒV~æ#‚^¤WV­¬¯¬pnŒRн—dV–è{º,ØdJ¿¾z¿¦TjêuhO—|©Y»LÖèÆäté-ý5*,Õa ™õë¥Xƒ®Ð©ù¼³¤·^œ”WS"KW—ilÕYêÌ[2 eÀ žâ«\«w,´@.KzêÏú*d™^@gçPò»÷“¹Ú»ªÛï’Ÿ¡cés$?»Z–-]£Ë7Ï?§s/_ï“2µºtÖáOµ>©«©Ô^i½ÇwqÙ–u)ÏÓ‹ñzHuS]­^Ýûê—sŸ”Ú³ t<•¬Z¹6Ðó^þ°íÛú¡SFA/ÔKï:[¢–eág„6/û¦õr¤gÿ¾’]¯ã‡õó,· ‹øõ¶m«ÖÈâÿN“Io%óþvŒdUh{éõ™Õz_ÛõŽ—õé+EµÚf*”«?½®Ë—-SÏ-ÊØê–mìß¼Ý4Yn—^Ò§{ž”—Vèçm®^‡œ)%K—I™ö•ZÚ0ÝœºÛ‚²Aïh°ÅäË—m÷_ÅZYVlímSóõuÞ_ùµ²ì{kïÈSVao=‹˜/•n;nQÏ0ëúU2í„så°§õn!ƒô½­´ú~Ù°b¹”9oïl}ö—l½H³Aï°‘­?@ÔÐIïâã¾­Ô-ìVR§ìcS°äþ*­Ëê¨u ¦ã $„€¼?yê©§B.‹Ø²\n¯ª“ÝôŽ 5},¹z7†|핵Þ ÆP«=°¹:ôa½öòºÅ„öÖ†çêæi¿°fÁ¬õ⺭¥uaÆ`Ïm ¯M­ÉÓÊYе@>× W66|'™Y5ï긻<éš=X¶ïµ»Tl¬hU9ò‰$ wLÉÑ!Dvr¥¡¶Fô¤ÅS¦^°™¡g7êëôâÌÐ¥ºn¶~Ýb¾›¦y»IÛòèÓüõ*z¶&ZÈ’«O˪1†›ÖïƒïµS/0µTKåËÔ<tƒþz©‹Õ”U{>dê—ø m¬ÆÐ²ëWͽLλãyø©C¤P¯OÈб»uúã;[LN=õÖgúã9õÁÊo‘jӌָhGE¶âúu›öƒ?¡S ¼›ÜC—µæy´ú¶fݘÓÔ®’Ëþï<9äöGäAzßu}¿Dzo[™|zv"ª_«Ìb.+ €@ XÀ{ôO<ñ|Ke²Yë]µƒŽõÆÚ{n“ 5(//w†'¸?Ñ\O¬»-7èµ^] |suˆ„݉Á&;Ýdãv-Ðuu­¹`×ͳ=ÊéæÍ# à•@vÃYTœ#Cúæ;—Òz•oZå£Ã0Ö.^¡×lèu#úÃHL €@4 xöØc=-Aè| PÝ 3< µ@Ó¦Ð4¡ë6÷<t77]Ö\¡ËB×ñ²œ¡Ûà9 °5Yùú#9y ²n]™Žqfj“€/Wºõ,”½3PeœzðÛTnVB�°AInpÙš­»iþ#¯á¦‰¼4ò\w÷14U¤y¡Ë#=w×ñºœ‘¶Å<@ V:ý°5á¼±®JzWÀ¯×èí%™@�–,àõioKéXŽ� €� €@R ؆ %%%O$eé)4 €� €�-Ø}Ã,èeB�@�@ %,àµ?&@�@�RR€Þ”lV*…� €� à ðº<"€� €�¤¤�CR²Y© €� €€+@¯+Á# €� €@J ð¦d³R)@�@�W€€×•à@�@ %xS²Y© €� €€+`/ €� €�)+@oÊ6-C�@�0^Þ €� €�)-À†”n^*‡� €� ¥>@�ö¨­­•·ÞzK-Z$¥¥¥âó%ÿÇ͆ äƒù»¸›Ô»˜ß¬O†vüúVpN1ê{"3SDúØ«W'Ùkïþrê/ÇHn®ž˜@�oøDñÆ‘\@ LÀ‚݇zHúôÈf(2�� �IDATé#§všôèÑCl¦`ì_Ðô:Áæûí·Ò}›Qa…åe¬~ 4l£>4úýR_× «W•É£-_1G¼ïP‚ÞXQI�QèáJÃØ7Þxà r'L˜ M] ã„vòº=¾ðl9iœïol”µn®[j-¿S·ÐÊÙ2æ„6wð7µ«=8’ú¤^Ÿdw/”ÏÝ[.»ì¹û¯ŸÊíâóˆ�l•�=¼[ÅÇÊ I QƒÂO?ýT&Nœè,¶×69½¹&ñTߨ •5 ÁcruCÃ]æˆ"9Ø<{8ö\»yM´Aß'5u"NØIž»ý ùí;oú²ç  »�oìf¬�-4448úuë&öÜíᵞ½à†°<Ü`Ñ‚ Ð)Ñæ[pV¡AY`JôÒ&šž[ž&=}?¸Áoƒ½:°·F»z{öí*•þÌÍÞ;®8 €@[ÒÐ5ÖA�fªªª‚Ë-ȵ^7ÐuOgúC5`Ôè¥_rÆúî±Ç›ÖsúÿlqXãü—_~Yúôí#»ŒÝüô¸;†4Öü­.5õá®[ìèóßùÏ‹²¡¤X+ä“.EÝdøv;KßCÜã疰éer¦·R;ï}bcyëõ½RU/RÓ˜!߬󉽲³³#W™¹ €@ ôðÆ€ERh€õêvêÔÉ tÝ�×Ý 7KS¦7ß|³ì³Ï>²ÛnMw?ÙŒ˜†Ìrž¶vþ¬Y³d÷Ýw—wÚ9<‹˜òqW¶€·¶¡©ìîL}´9›‡æ…îü™»IjkªeÀ°ÑòÍÂÿÉêåßË™)ã9:$—–óÙ,±¾póoùkW-×a Ò§ÿ ðì·j»n™íÑzx-ØmÔëÕµZ{x32T² ËéáÝbÃÌ@�Ú @ÀÛ4VA�–òòòœ€ÅÒ`ÃÜà×C vÂ'wyøü­y}ß}÷9«{•·åã^³æ^sçÜcK·âá‘æ[`·Ë~?–S/ú£&ôÉ5”—fý]v=øhëô Lv¯.šËÇ–wTú»¯›"ý_^rƒmÖ»íj^ÖþÎ{@ÿ±»4Øû"Q­+7ê‚<zvÍœ ¼ àõÆ‘\@ LÀ^»5™ÝŠÌzEÝq¼aÉœ—DZšúz=Ÿ2Yø·nÝ:¹âÊ+åõ×_wzˆ>ø`¹~Ú4)**r¦ââb¹à‚ äÝwߕʑG)¯¼òŠüç?ÿqr:÷Üsžã³Î<ÓIoù]{íµòÚk¯IYY™ 6ÌÉ;d³ÁžZ' Y`å©×:Uæè }¾Ü’F›oA]uMÑrŸ!#eÁÜ—¥ª®Q^ytº¼ÿïgdÅâ¯dж;É ¿¾FFì°›“ÿô+'ÉÐíÆÊŠ%‹ä½Wž’Û_þ\æ>ÿH³é‡í°«”–¬‘¹Ï>,E½úÊäo?/ÏNÿ“dfeËINÕàû0'ÿ²õkåþ?þV¾˜?Wºöè-¿ºò6³Çþòüßo‘OÞ}C>ÿð¿òþë³åä‹®—]8B¢¥·º‡—õ6-벯?—§§_/K>ûŸät–?Î|S:wïeÉuƒêõŒìšM­þUëøè%eú> àuŒø¼ àõÆ‘\@ LÀíá­®®ŽìZph“솎ýuÇ34Pµ^âÇÜI{ÕUW‰Í³{üÚdw‚°¡/¾ð‚ê-­.“Å‹;ã?mù?ü  ʦqŧŸ~º,]ºTnºñFÙw¿ýdÉ’%Á´–ÞÝ®=ÜùšÏ¼ÒZ]ä“F™ÑõÚƒþœBÔùeu~ù¡¼Qæ­¨“+ËÜfÉðý•·ôõªìÞ²ã’ýŽ”7nû<tÏrÈå÷9ù/Yúƒ|øÖÙéøóäè?Ï‘ùrZL¿àíWe»Ÿœ!GÜ<[^»éùãÙÇIïÑ»ÊW?* ŸŸ!Ýy½”?ØÉöå¿’Î}É |,ß¾þ¸LŸú;9~ú<é|ЙÒëí¹Ò¥ßPÙãÔK¥4¿‹Ì]Y'ÑÒ›ƒ[ÖŸì”õý9òÂWÈðýŽ‘S®~BÊ×,•åù’¡Qm[à¢5ëáÕðVéýx¿ªÑCS'O¡ï?ž#€ÀÖ „ÿ>ÐÖåÆÚ €@“€¼6Yï­û×´(ø`Aøg6=±ù˜¾ùæ›rÆgÈÈ‘#? X­·wùòåòÝwßÉ;ï¼#“&M’ÁC†HÏž=å¸ãŽ Ï*øÚò³_~³ ù í)¶ ¢FÚüG$š+›Q½?Cê-àÕ!õMv‡ææëfY<÷9ylÒx™uæÒ—ƒd³¦9ù Úû§ÒuèŽâÏÊ“>Ûï%ký/˜¿•gÈÞ?‘'L‘‚þ#¤Á—)-¥¼ÏѲóÿ]"z‘>;ì%Ù eÿ‹ï‘ÂmFJÿÝ‘’%Ÿ;ùo\ù½,_ð¦ Øã0)[»JzŒÚCÖ/ýJ*Ö‹/¯P2²s%#§“dué-þì<i.½9¸eÝaÂR°Í})¾Œ,YúÁ«²qÍr§<Y¹R«iÍ«V¿1Ôécó\{z5ƒZuÊÌÔCS.CÜ÷ °õ|…ÞzCr@�ðÚ0ûs.VÓÞP÷Ž›_¼¦óµ‡Öþ‡=XPkÓØ±cƒËvÙ%p·[ææ³óΛî×êÎsó ÍÛÍoï½÷æ¡èÍβ| rB>:}¥iÀ¶Å6ß®Ãê3j¬Œ=îéÚ¸tï\eñgËÞ,MC:,t,Èl#S]ºöê·Ù6[Jߥ{ï`úœ¬,ÉïÒ] mˆ€–³“æk&–ÿú’N>{ê/Úþ¾cöÚ5ßKÏ>ý$S ­Á§[ßÓG(ëWÜ+¯ÞúkyâŒ]e— çËø_^)™9öeȾY±l¬Ù]üZÆÂL½+o^ˆqPŠ' €@Û<ÿDYµj•ÓëRYYÙ¶±$½€µŸ¶É xÝ@Ô}´eáÏÃz¸_¿~–Lìç|û÷ïï<_´h‘óh¯m¹Ö_ýupùúõë|Có²íØëAƒwøè£Ä‚ä¶L–WAîæ?‘l±­Máqoè| \{.#wÛ_Bç¯[ö̾î9ñægdØî?’Oþõ¼õÀõÁmØ r4è,ÌÉtò5½¬¸ZÐjÛÍË ¶V‡Þ;å>ðŒ«dè‡lQþ,gÛ›êÛRzÛŽ•5Ô§`àPùÅm/ÊÒçÉÓWŸ,=ú–Ý=Ûù…5 x-ðÕáÛÒ¥·{Ó ×fu®Ñ2vÊ–¹sçJçÎ2ò¤—@~~¾ Ñ3w}ûnêØOÞÕ«W;žBG×¥K—6÷ lM…Xâ/PZZ*¹¹¹NðZéBÝÐ×áóGŒá¦vk±]wÝÕËû裊õò:ÔÉç€?üá2yòdgìî‹/¾ ²Ý¼-_û³uöÝw_yàœ<,èµ`Úæ»=¶Ns“¥+lêáµàÌíÛméù¦À5ð±ë¦_W¾ÞÙÜ€¡£¥±|­,ûèM©­(u¶ai,P¶ 5?WV}kz @-uËœ›­=îš½.:J†ïq°¼7óϲ͈í¤[ßAR[U¡C5%/¿³ô4RV.ú8¸nKé3šÊênËÊÿýGódÐŽãeôHm†IŽÆ²V›,àµá.ÖËÛ ÃD²ô–dö:ßåå8_hìX„�é%`×uÔÔÔ81¥}v»([£àiÀk§ {õêå\=¥§Ñ¬L ~66¶®®Îù  xÝÏ÷1Tæî»ï–¿ýíoÁYãÆ“Ù³gËßÿþwgŒ® k°‹×ÆŒ#÷Þ{¯ØgŒG·Ýv›\{íµrÿý÷;Á¬¾7ÝtÓA¯õðZúéÓ§ËÙgŸ-‡z¨Ø/ÁY/ÂüùóüÂËeém oõéäÞA °X¬ÏÔzw›^Ÿ„η`0KƒÏN:65tþèqûËö-·Ÿ´“èЃÃ'_'_¿óŠ<ñûSå´g9ÁjŽöÊè6-ÿXÓgéºl»ÛÍk Ö:h†§Ýðˆ<víòçcGK·m†Hme¹œvÓã2\{¢÷=þL¹ÿÂãä–cFÈϯù»Œh³é!º½PŸg§-ÖJ§ÎEÒgøö²ßÏÏ–Ÿ«¨iÇ®sK2ëáµ ;G¯|³y…zç )Ì•=rœã‰ÎbB�4°Ï^»kφ œë5¼x-"=³¤¤ä^/,XàœV,((Øì`ãEÞä�É#`à ì–d6ìÀS·÷Ô ÝÇXjd·³ µk׮ͮvÖYg‰mÿÉ'Ÿl6¥±rµ”_x&Ÿþ¹,ì±·3Û>@ƒAnH¶Ì/ßP¢cm»éPÚ ©Ñ^V›ò:DÍ?Öô-•³F]Ûn—}œàÐôÖ¬®=û:^îüæÒ»®CuEY >z[2w²ï–—=:C4ÆÕ4Hem¬ÑûðÞõáRùä'â|)q×áÒCÀ^ëå­¨¨+V8gä¶¶æžöðÚ)Lûu%;(µå€¶µ•a}H ÛÿíƒÊ&û<p{yÝÒµåóÁÎEšn¿ývç^½;sGë¶!¶Ýæ&»£C[& à;n¹¦ Ãk©Z;¿°°‡“©“¾°`‹ „çkz7Ãð|Üù] µü[VÌÒw?í¦µÇæÒ‡;t.ì¼™ƒìZw®vô:Aoƒ¼zûݬÌlY[Z%ÇUêq¤€cI(:ÏH;FØŸÅ”[z1yðº=9m9˜yQò@�İ©ÿýïÎðû\pƒO÷³Á}ô¢´ãÇ—·ß~Û ví´—ý D[/HkMy¬>E:¬Tã4'Àµ^LgÒn¦|ÌoÆÇÀÔËzvm²`WÁXZX{µ«õW…×gJŸ5ïéÁî¨@þE�´°ã„u–Øg®“7¹xQò@�”°(»S˧Ÿ~ꌫµ-w<¬=÷rúÑ~$ö×QSNNŽh‡%ÓV Ø÷ ‚¾:„׿[¶A{yW|,³Ë=;ÐmeQYR@€€7‘* hÖ£kA¨Ý á“O>‘£Ž:J† ’ŒÝÍýä`/nSXgó[v0+÷â=óªÓ¼«}/Ÿ¾ü’”}÷¹Øƒ¸g¹ñ/ ÐvÞ¶Û±&D°SQvÁÚ©§ž*/èOþN:Õéáu{y£¬Æì4°÷ŒýÙ½•í}cï{Í„�x!@Àë…"y €À6taðàÁrÎ9çÈš5kœÛËØU·LD°÷KQQ‘ôîÝÛ9@°I‰y ÐV޶ʱ´(`A‹Ý“×zëìÞÉÒ6àºi AÅ@ ]xÛ…•L@ TÀ bÜÇÐe<G�@ ½¼½\º½KKþ €� €�Ä(@À#É@�@�’K€€7¹Ú‹Ò"€� €�Ä(@À#É@�@�’K€€7¹Ú‹Ò"€� €�Ä(Ðnwi°_#bB�@�@ -åååmY-â:ôðFda& €� €@ªð¦JKR@�@�ˆ¼Y˜‰� €� *¼©Ò’Ô@�@ ¢€§­ùýþˆqg^~ùåîS@�@�pn¸á†ˆ-Å–WŠ0ÓÓ€×çóEØÄ¦Y»í¶›Lš4iÓ ž!€� €�¤µÀŒ3¢Ö¿¥Ø2êŠa ÒÂK’UàÍ7ßLÖ¢SnZ€}+¡›‡Â%±@Gî[žöð¶ÖÜ«îéÖnt¤‹�ûVº´4õìhö­Žg{x+—€·®¾®ùZ¸C›!Ñ|­]ʶZ+=†ÑmZ»Ä#C/ö­iS§Éù¿>_ºvíÚÚÒGNçQ"g6—m…´á%†Í¢y±o5»X¶¡­V®\)³%\x³¥åË—KNNŽôêÕ«ù-·a[ÍgØÌR¶Õ N+¥ªa+«ß\²¸¼ õ ›•©¨¨Hú÷ï/ëׯ—AƒÉ=÷Ü#cÇŽÝ,M<_Ø7{¯ÆÄ³l;õB÷­sÎ9G¶Ùf¹ú꫃/--uö­/¾øBrssƒóCŸÜ~ûíò‹_üB Cgó´Ý· Â=nÙ>µ×^{‰]p3bĈv1êÛ·¯|ðÁ2`À€6ç¿bù çØú›ßüF&L˜ v\«¨¨††™={¶dgg·9oVD âðê>=÷Üs2pà@ùío+þóŸåO—×Ûo¿½<óÌ32jÔ¨¸lŸ"‹€¼Üéä“Ov.µ»£¸_Øžzê)9üðÃ%++Ë9йiCí@hù„溜礣@¤ýÁŽ[ö¥ò¬³Îû¢xÇw´ }AíܹóVí“V~wß~ì±Ç‚åÜwß}åù矗cŽ9&8'¤¢@\.Zs¦î£ÁÚóŒŒ ÙvÛmeÑ¢EÎk»£ÃA$ãÆ“‡~Ø™géÆ/ÿüç?žª9sæ´˜öé§Ÿ–ýöÛOvØayçwä²Ë.sØ_ýêWÁ<ÿõ¯É{ì!‡rˆ<þøãÎüiÓ¦‰:å”SÄ‚Ûv¤tÑÊdóùà£Þî~änoÏ=÷tö©7Þx#ø>œ9s¦üüç?w^GÛ¿,ŸÆÆF©¯¯wö™²²2'½åsÚi§óж/¸Ûç‘÷~ª¼Â÷-«—;Ͼ<ZgMyyy‹ûÆK/½$;s¬¹à‚ œ/Ÿ–WKûÚücY±b…“¤ã_´}1t{÷Þ{o°Ìn»ØñÍò>|x°ìî2Ù;â=à¼);蟸ôð66}X„ÖqãÆb;§Ýšâô‰ÅÒœÞyN�üÑG9=U??ñDg•¥K—ʼ·Þ’×^}ÕùÖÛRZË÷Å^¿Þu—s°·oâW_u•ì²ë®òÉÇ‹õâþîw¿“éiû=^OOuä‘r‰Î³žæ<ø Œ9R4�ˆ”ÎÆAE*ShýxŽ@G„ï['t’<¢_÷ÝgY¶l™ó7N¿Ø5·ÏX9m¹ý}ÿý÷R_Wç<¯Ðº m¾õEÛ:¢žlް÷}ød(ÖAòÒ‹/ÊôéÓ[Ü7,È}ø¡‡œcÎ]wß-ÿùÏ‚ëDÛ×l›v|©«­uÒ†kš;.…oÏò ­‡ {ú“ÅØvôèÍæ[:&RM .o­@C';xÚŽwÀÈ­·Þ*ûèÁÙÒ <Xæë¸¥yóæÉ2`ºÞE_,¹yyÁyÍ¥½ôÒK%KÇ'Ù©§Ýwß];ì0gó6.j…À7ê,ËôçÛnsæ[ïÖõƒlï½÷v^×i kÛž?~³éÂËZGž#СûˆmÏÆêÙ~5MÇÇÏÒÓ˜vÚÒÞÏ65·Ï¸ïyKgyÚ_}S Ûš}ÁÖcB •Â÷-;nYϪuÈœ{î¹²ãN;5{œ°‹@mÜüöz¦Ñ¦ý÷ßß9SiùZ^6Ùsû ÝלúOè>z¬‰v\jn{–ç‡~èôLõ“Ÿ8Ût·Ã#©*—€×OŠúüC†œe½QG}´3¦×½€-t½ÌÌÌà¸Ä–ÒÚP [7ôÏÝÍ[³fäççËÏ~ö3g¶=Ú)žÐíµ&]h™ÜüyD #Bß³¶];ÕjûÏ z†ãÉ'Ÿ”ûï¿ßy_·´ÏX>n^¡Ï-O{Ýš}ÆÒ2!*îþZŸ«ôLaII‰3ìÍ:Rl‹¶o¼ÿþûÎÄð|B_Ûóð×îöB—…kÚº½×_ݺ=w[<"Šq xmÌSèd;œÍ ÿÞ{ï9W¼žy晲`Ág|‘¥³Ý&{tÓ·6­­cÁ¯»ž›ŸõäÚ‡–]¥jãxC§nݺɺuëœušK^¦Ð<xŽ@G ¸ïíÐíÙtÞ³gO3fŒ³¨5ûŒív%zqq±óþ¿óÎ;ƒ±m£¥}!tû<G Â÷-÷¸ecjí®&çé<ûbmß°ݳÏ>Ûdw[xQ‡A¸y˜O´}͵ =æ…>oëö¦L™²ÙqÔݤªÀæ‘gÕÒvÖðÉÑÐùv%¹Ý­Á†7Ø g{Ýu×9n[×Òºé[›Ö>\ÜuíÑ^Ûvûõë'ÿûß r† "µ:Vê÷¿ÿ½|ðÁb·ÝÆåôÓOw£¥sóuËd¯™èhHï?Æ`ãmÏ?ÿü˜÷jdëÛÁøDCÿïÿÛÉ£¹}¦£ëÌöèHû–{ܲž^»0Ú®¹ä’K¢O®¼òJçBµ‚‚çz+·›o´}Í­›¥sÓ†>on_ln{v\³ üWzñ6é `à™Ú»¸|s+klwW°ûéÚ7á<_>Ù)U»2ÜÆË¶v²+ÄíB²:Û¤¨}PD›bI)GµvíZ§'Ì Ž-•×>`Ü:EK)Oæ!ÐQvŸN£ËÔš}Æ®>/,Œ|O^ö…X´I›¬mÙ·¢íUUUÎÙÄ… Ê©§ž*Ÿ~úi¥¹}-˜(Ê“–¶ÞC%f#С¶oÙu&vûæ$|²}Âî$âÅ­aãÒÃËŽgC l²u:uên±ÙëXÒn¶bÈ û¶>EúÅ©HéÂ×ã5-˾eekÍ>c½»ÍMì Íé°,UbÝ·¬Þ‘ö ëÀ±Éí­ Í·¥}ÍY±™šÛ^3«±´ˆKÀË/º¤Å{‹JÆA€}+èl2-¼Þ·ìbÒ¹sçò giñî¡’‰ —€×Æ=1!€€÷ì[Þ›’#&àõ¾eCä¶æ§‚iˆM .ï›o¾[)I�­`ßj‰ˆY€}+f2V@ ¡< xmÐ|k& Ì„� €� €@s­-›ËÖy:¶ ôÎ-m˜å €� €�4'àUléiÀÛ\Y†�/ðý÷ß‹ÝÖ¥µSKé[ZÞÚí@�ŽˆkÀ;xð`™3gN°¾vì³Î:+øÚ–÷îÝÛØß·o_çWÐn»í6ill ¦á l)`¿Ž¶×^{9û“Ý›÷úë¯ß2QÈœ–Ò·´Ü~Å®b·ûõÚ_—.]Brç) €�ñˆkÀZõ[o½U/^,wÝuWèl¹ãŽ;dÙ²eÎÏ1ÚO›Úrûõ3&ˆ.pÑE9¿üd¿Œ6þ|™>}º¼ýöÛQWh)}KË-c»‰¾õ&Û_iiiÔm±�d°_'›9sf2W²#– ð¾üòËr÷ÝwËSO=%999ÂÆpØo–ÛÏ£>øàƒòÝwßELÇLÒ] ²²RfÍšå fa7º·Ÿ~à"Ò´”¾¥å3e&)(pÍ5×Èûï¿/_|±Œ=Zêëëåˆ#ŽÇ\9ä9ùä“Zï½÷Þòá‡l™Ýsצo¿ýÖù2j?2qüñÇÇ4ä(˜!O@ f¸¼_~ù¥ÓcûôÓOK¯^½Z¬ÀQG%vÅÞgŸ}ÖbZ ŽvFÄ~Š{èСÁê2Ä9ƒœò¤¥ô--w³š={¶œtÒINï—WWÕºyóˆ@"¸îÕW_í°ö+iK–,‘Ë/¿\&Ož,6äΦo¾ùFì'„ÝÉÒØOÔÛtÞyçɱÇëì6Ï:z˜@ ýâðÚ7cëÕ4hP«jkéìC¦ºººUéI„@º lܸѩr~~~°êö³Üîüà̦'îühé[ZnÙX²õ*o»í¶rÉ%—8áÛá5É.`gKl¬ºýÜ|Ÿ>}‚Õ±÷üqÇ·Ù¼àÂ'eeeÎÐ"ëñ-))qÆÙ¿ñÆ!)xŠ�í%÷€÷Š+®áÇˉ'ž( -ÖsÞ¼yÎi$[‡ ¶pÄ¡ãh-hµ ?#M-¥oi¹åÙ³gO9ðÀåÚk¯•ßÿþ÷rûí·KMMM¤Í1”èׯ_«êdÇ/;ûbסœrÊ)òÒK/±Ÿ´JŽDl½@Ü^ë­µž!×tá…¶X#»«ƒýã˜1cZLKÒQ ÿþÒ­[7Y´hQ°ú6th»í¶ ¾}ÒRú––‡æeÏ÷Ýw_çKéš5kÂñ”hÍ·Ç\w8ƒ}1´q¿Ï>û¬3ØÆs\J¼%¨DÄ=à5£=z8�vk#û‹4YÕ£>*÷ÜsÜxã’››)óH{ûiwL°‹;m²ÀÓz’&Nœè¼¶¬Ö;ØRú––3mzb_`­Wؾ˜2!jv»ÌÏ?ÿ¼Ùj 6L>þøc±! v«Íõë×;éwÙe5j”s sÇønذ¡Ù¼Xˆ�Þ$DÀkUÙi§äþûïwôÛiw²{óÈÈ‘#åÞ{ﻸͽÖMÃ#l.0uêTY¸p¡ì³Ï>2nÜ8g¨Ahï}÷ÝçÁîZ-¥oi¹ MÚm·ÝdìØ±bû¯½^ý:Ž[FH `­cÆîom²» Ù…møÚÜ/öåñ‰'ž7ß|Sì̉¿6´ Ú_À§›8SÏßëŦìªíĶSçååm‘å“O>)“&MÚb>3@ }ìêp»û‰ýDk¦–ÒG[n½Uv«@Ëh·[bB •l˜‚‘·³“Ñ&»Ÿ £ÝjsíÚµ×kœa�� �IDATNgŽ]PÊ„@º ̘1C&L˜°ƒÝ×}ÅŠΗÃ-Æ8#+Æô$G�$½5YkŠÝRúhËí Í¸úÖ“&ìN Í»VÇлžDª³çeB�ŽH˜! We¶„� €� N¼éÔÚÔ@�HC¸ iØ÷¬ùiHM•h_y÷îÁ…bíKLîi*`·!㸕¦OµÛUÀŽ[5Å%àí¨Ê±ÒQ 5÷MGêŒ@[¸ÛH[ÔXÄðtHC²hO>¬¯ éϲ‰÷¶¤D^Ø•äo¿ý¶L›6͹¢Ü‹<É@�Žð*¶ô4àõ›ðÌ?î(ûîÜò-Œ¢¥»ô´!råÄ¡[¸Ÿrx?¹üW[ÎOø“}{É€^ü€E¸ ¯“_Ànf?%üë_ÿZ®ºê*qorŸü5£ €�é$klÍÆÓ€7ÚF¢Í?çO_È{ŸmŒ¶88?4Ý]—l+‡î¸÷á+ï–È»v“¼œÍ«qè¸î2ç½’àú<A Ýì>ØË—/—‡~8ݪN}hWÐcP»nˆÌ@ÀSÍ#EO³n9³kÎ&;èì$¼õ·£díí½ö¬áòŸÇÊoOÌÀMwÆO·‘í†Êù' ”G§î( ¿-—õ²ÿ.Ý‚i‡ê…î]³å_•9ó&Ý_î¿z{yþ–±b=Â>û© &R\À¾Gúñ—¯6ÕC ]ÂA™>±c×Á»w—;.í¿¬�Ó/#£ËbËÆŽ ë¶Ñ³Šw_:F^þË®2íÜÒ)7®‡á`y‚@ª ÄuOë×37¸³Ûó‹N, •Ê%ùZŽ9 wp|­›îѯ’¥«ªäÁWÈy7})õ ~ù·öò¶×¦_»±ÞßW篓ÆF¿ÓvËÖÔÈUÓ¿‘Ó®[èÆ03!€� «@ø1¨A3v|:ç¸òôkä/-u²Ð;Or³7õ®X÷Lä…§ –¹ÿ[/'^þ‰äi°{ànÝc-é@  q xÃËûø««å¹7‹å‹ï*œÀvÔÀüÍ’TV78AnyUƒ¬+­s–Ù°†=Æt‘Ú«k“ gøÏûëœçö mXQ\#ÊêåÛe•2jÐæyò@�f"ƒ,ù#¯¬”75ˆuKѲÈÏËtÎjÎÿ¢TºdÉgz–r—Ñžßhë0¼H¨Û’-[]¬U]} ‡68#Ê“¥«ªåËï+q½6ÄÁ¦Ïí¹j²q¾vÚhø€|yC?”˜@�ðJ dC ¦¥üvQ(Y™>¹ì—C‚I—ëYH&h„ x[[ÝM'Šk¼òîZùé~½¤¿ž6šÒ»k½¹W>TN»v¡ØÐ†Ûu €�[#~ Š”W†ŽïµÉ\º`ÓÆòzÉÔ§—ßõµ¬meì¬È? °Õ 5¤¡5µYURÛ릷! ƒûu’#÷é¹ÙÝl˜CYeƒ¬Y_'v1[ß9b§”˜@�h‹@¤cPx>+ÖÖÈH’gÇ»Xºs~ oiÑÒJYªg2íÖ™¹ÙÃoa>Ǥp?^#ÐIð>ÿV±½_O¹ïªí‚ö­ù½…e¹ŽÕ]²¢*8þ祲R?xì v¿^»˜íÿ~Ü—q¼A!ž¤ª@ee¥tëÖMÆïTqÔ¨QÎ}ySµ¾Ô Žˆt ßöS¯­–3¶<qÃNò©µ+^_ë$±‹Ü®žþ­ì¢wlxNK³¦í(ל9<|u^#€@;Ø9—3KJJîõ"ïE‹Iÿþý%+++â-‘ž|òI™4iÒVÿ&¹"*è”éœjM¹íâ€R½}™M] ³Z½^kò& ‰"`¿In·#óêWi¥^”x ¸ûÔ¾gÍ£5Ç »+ƒ¸Ñ®G±cQuM£ÔÔ5óå é&`Ç-›f̘!&LØ¢úååå²bÅ ±N›­’r ¯ÝŽÌzu[;¹Á®¥e½ÖæO:@�ôhÍ1¨º¶ù@–cQú¼_¨ib$eÀ›t”Äðêg³v” @�Øâðº]ر—5@ 9†34§Ã2Ú.Àq«ív¬‰@"$ÝEk‰€F@�@�’G€€7yÚŠ’"€� €�´A€€· h¬‚� €� <¼ÉÓV”@�@  ž¼\0Ó†`@�@�ˆ^Å–ž¼Ü)b[1@�@  ^Å–ž¼m¨« €� €� Ю¼íÊKæ €� €�ñ àw °}@�@�v àmW^2G�@�ˆ·�o¼[€í#€� €�´«�o»ò’9 €� €@¼xãÝl@�@ ]xÛ•—Ì@�@�â-@Àï`û €� €�í*@ÀÛ®¼dŽ� €� oÞx·�ÛG�@�hWÞvå%s@�@�x ðÆ»Ø> €� €@» ð¶+/™#€� €�Ä[€€7Þ-Àö@�@�ÚU€€·]yÉ@�@ Þž¼~¿?Þõaû €� €�)"àUléiÀëóùR„—j €� €�Ä[À«ØÒÓ€7Þ(l@�@�pÞp^#€� €�¤”�oJ5'•A�@� à á5 €� €@J ð¦TsR@�@�pÞp^#€� €�¤”�oJ5'•A�@� à á5 €� €@J ð¦TsR@�@�pÞp^#€� €�¤”�oJ5'•A�@� à á5 €� €@J ð¦TsR@�@�pÞp^#€� €�¤”�oJ5'•A�@� à á5 €� €@J xðúýþ”¡2 €� €�ñð*¶ô4àõù|ñaË €� €�)%àUléiÀ›RÂT@�@ %xS¢© €� €@4Þh2ÌG�@�H Þ”hF*� €� M€€7š ó@�@�RB€€7%š‘J €� €�D à&Ã|@�@�” àM‰f¤ €� €�Ñx£É0@�@ %xS¢© €� €@4Þh2ÌG�@�H Þ”hF*� €� M€€7š ó@�@�RB€€7%š‘J €� €�D à&Ã|@�@�” àM‰f¤ €� €�Ñ< xý~´í0@�@�˜¼Š-= x}>_L• 1 €� €�ѼŠ-= x£–ù €� €�ÄK€€7^òl@�@ Cx;„™ €� €�ÄK€€7^òl@�@ Cx;„™ €� €�ÄK€€7^òl@�@ Cx;„™ €� €�ÄK€€7^òl@�@ Cx;„™ €� €�ÄK€€7^òl@�@ Cx;„™ €� €�ÄK€€7^òl@�@ Cx;„™ €� €�ÄK€€7^òl@�@ Cx;„™ €� €�ÄK€€7^òl@�@ C< xý~‡š €� €�¤¾€W±¥§¯ÏçK}yjˆ� €� Ð!^Å–ž¼Rs6‚� €� €@ ¼1`‘@�@ ùx“¯Í(1 €� €@ ¼1`‘@�@ ùx“¯Í(1 €� €@ ¼1`‘@�@ ùx“¯Í(1 €� €@ ¼1`‘@�@ ùx“¯Í(1 €� €@ ¼1`‘@�@ ùx“¯Í(1 €� €@ ¼1`‘@�@ ùx“¯Í(1 €� €@ ¼1`‘@�@ ùx“¯Í(1 €� €@ ¼1`‘@�@ ù< xý~ò Pb@�@�„ð*¶ô4àõù| ‰E¡@�@�’OÀ«ØÒÓ€7ù)1 €� €@ª ð¦z S?@�@ ÍxÓü @õ@�@�T àMõ¦~ €� €@š ð¦ù€ê#€� €�©.@À›ê-Lý@�@�4 àMó7�ÕG�@�R]€€7Õ[˜ú!€� €�i.@À›æo�ª� €�¤º�oª·0õC�@�Ò\€€7Íß�T@�HuÞToaê‡� €�¤¹�oš¿¨> €� 꼩ÞÂÔ@�HsÞ4P}@�@ ÕxS½…© €� æž¼~¿?Í9©> €� €€W^Å–ž¼>ŸÏ«ú‘ €� €@š x[zð¦y›P}@�@� àMÀF¡H €� €�Þ ðzgIN €� €� (@À›€B‘@�@�¼ àõÎ’œ@�@�P€€7…"!€� €�x'@Àë%9!€� €�$ �o6 EB�@�ðN€€×;KrB�@�H@ÞlŠ„� €� à�¯w–ä„� €� €¼ Ø( @�@À;^ï,É @�@ x°Q( €� €€w¼ÞY’ €� €@ ð&`£P$@�@�ï< xý~¿w%#'@�@�´ð*¶ô4àõù|iÝ(T@�@À;¯bKO^ïªGN €� €�x#@Àë#¹ €� €�$¨�o‚6 ÅB�@�ðF€€×GrA�@�HPÞmŠ…� €� à�¯7Žä‚� €�  ¼ Ú0 @�@À^oÉ@�@ Ax´a( €� €€7¼Þ8’  €� €@‚ ð&hÃP,@�@�ox½q$@�@� àMІ¡X €� €�ÞðzãH. €� €� *@À›  C±@�@�¼ àõÆ‘\@�@�TÀÓ€×ï÷'h5) €� €@² x[zðú|¾ds¤¼ €� €� *àUléiÀ› V @�@ xÓ¸ñ©: €� ¼éÐÊÔ@�HcÞ4n|ªŽ� €�¤ƒ�o:´2uD�@�ÒX€€7Ÿª#€� €�é @À›­L@�@�4 àMãÆ§ê €� €@:ð¦C+SG@�@ xÓ¸ñ©: €� ¼éÐÊÔ@�HcÞ4n|ªŽ� €�¤ƒ�o:´2uD�@�ÒX€€7Ÿª#€� €�é @À›­L@�@�4 àMãÆ§ê €� €@:xðúýþt0£Ž €� €� àUléiÀëóù: êl@�@ ¼Š-= xÓž:"€� €�$—�orµ¥E�@�ˆQ€€7F0’#€� €�$—�orµ¥E�@�ˆQ€€7F0’#€� €�$—�orµ¥E�@�ˆQ€€7F0’#€� €�$—�orµ¥E�@�ˆQ€€7F0’#€� €�$—�orµ¥E�@�ˆQ€€7F0’#€� €�$—�orµ¥E�@�ˆQ€€7F0’#€� €�$—�orµ¥E�@�ˆQ€€7F0’#€� €�$—�orµ¥E�@�ˆQÀÓ€×ï÷Ǹy’#€� €� YÀ«ØÒÓ€×çóE.-s@�@�ˆQÀ«ØÒÓ€7Æ:@�@�v àmwb6€� €� OÞxê³m@�@�v àmwb6€� €� OÞxê³m@�@�v àmwb6€� €� OÞxê³m@�@�v àmwb6€� €� OÞxê³m@�@�v àmwb6€� €� OÞxê³m@�@�v àmwb6€� €� OÞxê³m@�@�v àmwb6€� €� OÞxê³m@�@�v àmwb6€� €� OO^¿ßϺ°m@�@�ð*¶ô4àõù|)DLU@�@�â)àUléiÀO¶� €� €@$ÞH*ÌC�@�HÞ”iJ*‚� €� I€€7’ ó@�@�RF€€7eš’Š €� €�D à¤Â<@�@�” àM™¦¤" €� €�‘x#©0@�@ exS¦)© €� €@$ÞH*ÌC�@�HÞ”iJ*‚� €� I€€7’ ó@�@�RF€€7eš’Š €� €�D à¤Â<@�@�” àM™¦¤" €� €�‘x#©0@�@ e< xý~ÊÀP@�@�ø x[zðú|¾øª°u@�@�”ð*¶ô4àM]*‚� €� 2¼)Ó”T@�@ ’�o$æ!€� €�¤Œ�oÊ4%A�@�ˆ$@ÀI…y €� €�)#@À›2MIE@�@�" ðFRa €� €@Êð¦LSR@�@�H¼‘T˜‡� €� 2¼)Ó”T@�@ ’�o$æ!€� €�¤Œ�oÊ4%A�@�ˆ$@ÀI…y €� €�)#@À›2MIE@�@�" ðFRa €� €@Êð¦LSR@�@�Hž¼~¿?Ò6˜‡� €� €@Ì^Å–ž¼>Ÿ/抰 €� €�‘¼Š-= x#”y €� €�ÄS€€7žúl@�@ ÝxÛ˜ €� €�ÄS€€7žúl@�@ ÝxÛ˜ €� €�ÄS€€7žúl@�@ ÝxÛ˜ €� €�ÄS€€7žúl@�@ ÝxÛ˜ €� €�ÄS€€7žúl@�@ ÝxÛ˜ €� €�ÄS€€7žúl@�@ ÝxÛ˜ €� €�ÄS€€7žúl@�@ ÝxÛ˜ €� €�ÄS€€7žúl@�@ Ý< xý~»˜ €� €�¤‡€W±¥§¯ÏçK}j‰� €� Ðî^Å–ž¼í^k6€� €� €@Œ¼1‚‘@�@ ¹x“«½(- €� €@Œ¼1‚‘@�@ ¹x“«½(- €� €@Œ¼1‚‘@�@ ¹x“«½(- €� €@Œ¼1‚‘@�@ ¹x“«½(- €� €@Œ¼1‚‘@�@ ¹x“«½(- €� €@Œ¼1‚‘@�@ ¹x“«½(- €� €@Œ¼1‚‘@�@ ¹x“«½(- €� €@Œ¼1‚‘@�@ ¹< xý~rÕžÒ"€� €�$¬€W±¥§¯ÏçKX0 †� €� \^Å–ž¼ÉEHi@�@�ÒA€€7Z™:"€� €�i,@À›ÆOÕ@�@�t àM‡V¦Ž €� €@ ð¦qãSu@�@ xÓ¡•©# €� ƼiÜøT@�HÞtheêˆ� €�¤±�o7>UG�@�ÒA€€7Z™:"€� €�i,@À›ÆOÕ@�@�t àM‡V¦Ž €� €@ ð¦qãSu@�@ xÓ¡•©# €� ƼiÜøT@�HÞtheêˆ� €�¤±€§¯ßïOcJªŽ� €� ीW±¥§¯Ïçó²Žä…� €� Æ^Å–ž¼iÜT@�@ Ax´a( €� €€7¼Þ8’  €� €@‚ ð&hÃP,@�@�ox½q$@�@� àMІ¡X €� €�ÞðzãH. €� €� *@À›  C±@�@�¼ àõÆ‘\@�@�T€€7A†b!€� €�x#@Àë#¹ €� €�$¨�o‚6 ÅB�@�ðF€€×GrA�@�HPÞmŠ…� €� à�¯7Žä‚� €�  ¼ Ú0 @�@ÀO^¿ßïM©È@�@ í¼Š-= x}>_Ú7 � €� €�Þx[zðzS5rA�@�@À;^ï,É @�@ x°Q( €� €€w¼ÞY’ €� €@ ð&`£P$@�@�ïx½³$'@�@� àMÀF¡H €� €�Þ ðzgIN €� €� (@À›€B‘@�@�¼ àõÎ’œ@�@�P€€7…"!€� €�x'@Àë%9!€� €�$ �o6 EB�@�ðN€€×;KrB�@�H@ÞlŠ„� €� à�¯w–ä„� €� €ž¼~¿?«H‘@�@�’QÀ«ØÒÓ€×çó%£%eF�@�H@¯bKOÞt¢H €� €�i.@À›æo�ª� €�¤º�oª·0õC�@�Ò\€€7Íß�T@�HuÞToaê‡� €�¤¹�oš¿¨> €� 꼩ÞÂÔ@�HsÞ4P}øÿöî<FŠ2ÿãø·gQPÀ{ð>ú¼5ÐÕh<þð�E¼ã $*jd×]uGdc/¼‡³ü��ÙIDAT¨€÷}kŒàÅ5Š ‚ Ìô¯>ÏìÓ³Ý3ÓðtuuÍ»HSÝUÕUÏózjÒŸyú©@�².@àÍz S?@�@ “ x;ù @õ@�@�¬ x³ÞÂÔ@�èäÞN~P}@�@ ëÞ¬·0õC�@�:¹�·“Ÿ�T@�Ⱥ�7ë-Lý@�@�N.@àíä'�ÕG�@�².4ðæóù¬{Q?@�@�„BeË 7—Ë%T}ƒ� €� uPÙ2hàÍ::õC�@�¨=oíµ%F�@�(C€À[›"€� €�Ôž�·öÚŒ#€� €�”!@à-‹M@�@�jO€À[{mF‰@�@�Ê ð–Ŧ €� €�µ'@à­½6£Ä €� €�exËÀbS@�@�Ú ðÖ^›Qb@�@�2¼e`±) €� €@í xk¯Í(1 €� €@Þ2°Ø@�@ ö¼µ×f”@�@  oXlŠ� €� P{ÞÚk3JŒ� €� P†@ÐÀ›ÏçË84›"€� €� PZ T¶ xs¹\é³@�@�2BeË ·Œò³) €� €�‰xaæ  €� €�Õ ðVKžã"€� €�$"@àM„™ƒ €� €�TK€À[-yŽ‹� €� ˆ�7f‚� €� P-oµä9. €� €@"ÞD˜9 €� €@µ¼Õ’ç¸ €� €�‰xaæ  €� €�Õ ðVKžã"€� €�$"@àM„™ƒ €� €�TK€À[-yŽ‹� €� ˆ�7f‚� €� P-oµä9. €� €@"ÞD˜9 €� €@µ‚Þ|>_­zp\@�@�Œ „Ê–Ao.—Ë3ÕA�@�¨–@¨l4ðV ƒã"€� €� PJ€À[J†å €� €�™ ðf¢© €� €@)o)–#€� €�dB€À›‰f¤ €� €�¥¼¥dXŽ� €� o&š‘J €� €�” ð–’a9 €� €@&¼™hF*� €� PJ€À[J†å €� €�™ ðf¢© €� €@)o)–#€� €�dB !éZLž<9éCr<@�@�N,hà3fL'¦¦ê €� €�ÅæÏŸ_lq°e‰ÞJW&˜ ;B�@�ÈŒ�cx3Ó”T@�@ ˜�·˜ Ë@�@�2#<ðæóùÌàP@�@�ê„Ì”Ao×®]mÙ²eÕQᨠ€� €�™P¦T¶ 1½h­W¯^¶páB«««³¦¦&Ëår!ÊÈ>@�@�:‰€zvv/^lÊ–!¦ ·GV__o‹-rd €� €�K ¡¡ÁzöìiÝ»wRñ W%RÁB.H Ù  €� €@§:†·SKRy@�@�T xSÙ, @�@ ”�7”$ûA�@�H¥�7•ÍB¡@�@�B xCI²@�@�T xSÙ, @�@ ”�7”$ûA�@�H¥�7•ÍB¡@�@�B xCI²@�@�T xSÙ, @�@ ”�7”$ûA�@�H¥�7•ÍB¡@�@�B xCI²@�@�T xSÙ, @�@ ”�7”$ûA�@�H¥�7•ÍB¡@�@�B xCI²@�@�T xSÙ, @�@ ”�7”$ûA�@�H¥�7•ÍB¡@�@�B xCI²@�@�T xSÙ, @�@ ”�7”$ûA�@�H¥@C*KE¡@�¨°À²eËìƒ>°Y³fÙgŸ}f .´ææf÷ð‡Îçóîi.—ó‹Ì/+,ˆžTk½?®æ¹úœu©ïb=zô°ÆÆFëß¿¿í°ÃÖÐPÝúZuÆ´å ÷ç˜^…:÷ý>“4ÖOðèŸþù?-Õâ@�²- í÷ßß~øaëÞ½» 2ÄvÚi'÷|µÕV«éÊ/]ºÔ~ÿýwW¿çŸÞ~ýõW;ì°Ã\øõ!#© fÅÓÊŸ1Ix+ߎ@ %MMM6}út{çwìœsα~ýú­Ð;›’b®R1|/œz«¿þúk»êª«l—]v±#FX}}ý*í»£oΚ3¦mù•ß®ÒÆÞ•oÞ‰� PC € »ÆpöÙgÛzë­guuuQàÕWµ5T‘¶ŠÕ#ýÓ¤�¡àùÃ?Øõ×_o °áÇ»:·µ‹U]—9gLWõ”hÿý ëW½ãÆû[û¥a @�jS@áOcu_~ùe;âˆ#l£6rÁOË››£ˆÍÓðÐW»*‡¦Ž–GÛ*dÆ·×k¿¬®®>ªï†öâ‹/Úšk®i}úô©X¯¶ÊP Îq«bÏ;£éÊœ{Åì:º,ic¯Ä™@�2-°xñb»÷Þ{mðàÁ¶yc£­Ñ­[!ðªâ­?¤—‡àƒ¤¶ûþûïíž{î± 6ØÀºEûiýÞUy=lØ0ûꫯl¯½öêÐ~Uv•ÕõëFeó!WehY×lË–-u=½*ëk¯½æÆóVj¬rHçbŽªß#<bwÞy§=ñÄöÓO?ÙV[må¼ßþÑGµ¿þúËÖ_ý‚¡ÚK“zõýv¥æ-nÙ3•¾áÐÏÁ}÷Ýg~ø¡;—ûöík:Ê=÷Jùudy5Œ¹-™Ô™@�2+ z}¸¯³Î:¶é¦›Z>ðdɵ®Ø#ŸWÐýß°«ó›nºÉÎ<óL›<yr»á©#þñm|#Ä—µõ\eW9}ü¶zÝÔÜä–«çN¬m¼ñƶîºëÚG}ä–ûc…šë˜!}]üü—_~±C9Ä.ºè"[}õÕ]{^{íµ6tèPûæ›o mqå•WÚ“O>Yx=iÒ$Ó2×öQûùý•šgÑ4º9|ðÁn(ÏŸþiÛo¿½ »—]v™½ûî»ÎÄŸ¥\B.¯†quïUâu™#€� P!õö}üñÇ.ð((iˆ«–éCW=[ ºKyW˜ŒZz~ã‹›¢[™ÝvÛm¶å–[ºùù矿˜Xí¥¥o5þ®åÏÛ[¯P¡q· ©Å¦Öï÷w^¨‹Ê?®ö£Û)Üh_ºX­k×®¶É&›Øœ9sÜíÊÖXcb‡Xée![×S…ºä’KÜíã^zé%[;ºõšê{Ê)§¸žÉóÎ;Ïî¸ãWvÕ½ù¿† ¾×]w=õÔS®­½k±ý»7GÿeÑt„ öÅ_˜îÜ¡^n?)ðÊK.åž{~~Þ–©¶‰¯¯†1×·s@�L üñÇî»;»'m}C}¡çS¡P¾¹ºœ)4FÝ¿Î Š»Ñ¼åÿJ´hæ3] ý÷uÿ¶ÃGØŒ™3l¿ýökÙ$Z¯‹áì8Àæ~=·pÛ³ O°ƒ:È%áöÖ«Wvi4añ‹íÜsϵ¾}úÚ¸ñã ûŸø÷‰®góôÓO/,S”puȵ„ôæ¨ÇWÅW€ÉG¡^ëxu?^}ͯÀ+“Ð7¤³KGx³ Ø”)SìøãwõXùøiØðaö¿ÿÃf¿?Û¶Øb ×>K"ÃY³gÙ©§žj7ß|³õîÓÛ™º÷¨i[šÙïbŹÖgÈô·ß~s¿œýó_ÿ´nÝ»-wˆ×:ªsüÜÓ*õ¨_rñ%ö /¸shß!ûÚ¥—^jk¯½¶{çÛo¿m“®šdï½÷ž>}ÆôB˜Vòøqãí•W^qçÜå—_n{ì¹Çò#VÁ˜! Ëùy†� Aõ<êb-}P+øéÎ ~®çî‘ÓÇa”‚„4SŽ–ÕÅѶwÝy—sÌ16ðÿº{÷N»kÚòm¢õß}÷ÝtãMnø€Æî¾ûî6ö¼±Qð̻㴷>:ªû§ãî¹Çž.ä-]²ÔC÷×:eª°ÿ…cªõõ-wšPÁUn½·¥üÑs·¾¥Î ¼k­µ–»ß°LBO!WpêóùgŸ»ë!Ñ=“}{ùm†î7ÔUeÎ's u_ðÛ5r”;ÖöÞ{ï‚—{Ú<Þ®­žgÍô‹Ï¿p¿à 8¨t½#“ø¹'Ÿ3N?ÃÝáã°ûï¿ßæ}7ÏÎ<ãÌÂ>&^6Ñ8à�7D桇²^={Öi»^½zÙ[o½e£G6õ0ÇÍ«aLà ýÏþ@�R# ^Nõâê¯uéÒ¥¥‡7z[>xë[zx„ÚxÌ›7Ï}%|ì±ÇºíŽ;î87Vtþüù…÷©âGy¤ëYÔ_9»øâ‹]O™zÁ´ïެw¡5ÚöÐCu½´3fÌpïUðÐ>5þÒ—³lcåV¢^l\=×¶z®‡ þe"›PSHg_·ø\½šÔƒ_®çÛm· ø¾´î³¬‹ÿŠmßúý­_gÍÔÛi {ëºÆ_ËÍŸ{­žÝ1cÆØ6Ûlã'Ÿ|²=û쳦Ÿ½OçÓsÏ=ç^o¶ÙfnÈŒ–Ï;×ÝäÀ´üÑ dŸ|ò‰»ÀЯÆ^µ0 €@fÜWûQ¸Ó8Eÿ냠Ÿ7Ô·„C½.õ¸ûî»]X¼å–[ì /t¡JûTï—>È5NØ¿ÖxI=xµ¬#ëUFm«`zøá‡Û´iÓÜë©S§ÚÈ‘# ûöÇðsÿ>½Ö­ÈZ×U¯ýŽaן8¡œ}}âó~ýú¹Ã¼ùæ›ÿS}}®ck½GÆ [\pë]Ô}—ãû*çyLF5}ûí·m:ÈÍ×WÛj8p`á=z®ÉïçÆotî»í¶›Mœ8Ñ[²Õ·šn¸á×wÞÙýRÌÞSë*yÞ2†×5 ÿ!€�dU@¤ª[fé.ú€õÿ!¯À¤çš|Ôkÿ\’é¢( gÐm°ü¤[”iùYgåé=~ŸZ 0¦[gùûþ–»^cVõµ±n%¥? ¡{«ì~Òþâ“/¯–鹺8O“Þ§q¶úsÃ2 =…pöeR½âuÑE‚º}–.º:ᄜ±_?sæL7LCÚÛèý/­^Þ£>ÚõÄûà§c´Þ¿?®_í£ez®G-™ÊN½»ºÙ{ÄÆÑÆ+=—‰2Ô-÷4©gÖ?×…ŸšôZÛÈóÁ´W_}ÕFF¿ˆé.'t’»0RÛ?~ùøöèuÜ\ÏãSÆÞ¸8Ï@�2% V݉AãK‹õðj}ëßb�O?ý´Û‡z²â÷°Õ×µºhM=¯«é7Þ0·U­î«°¡ÐêCf{ëU¿­zÆ4„AcQ*Ú»ÐLïõáÁ‡3_G…võð*ôª©w1‹bË´¯ÎÅö­eòÐSúsÐ ½ûï¿¿ÛTN]qŦ»eè‚<M¾¾zÏÕW_íz$5ÌDwjP[”;iµlªû/ëVn2Úzë­í´ÓNsž íº‹…±šTW¹i;ý¡ovÝuWw! Îeõòj[m§ «uºgtcc£3Ò{µ~ß}÷5Ý2NÃ!tgý²©ãég¢Ø”„1·˜<Ë@�2# Ûqm¸á†¦1ž ¢êåÕ³ú Õ£½Ià 4vWá!>é¿ÿþvûí·»‹£´/ iP Ó‡¼‚¶ÖõìÙÓ½­#ëÕ{¦ñ‘~5j” +C_î×—šûÀ« áƒ®zwe!“ÐSç¶Ê$Õ_½ˆþDÕQ q¾5WÛj[=Ôô ‡zçüñvih« µjª±¸:/5ÌC¿´éžÌ:?õç¦u9É-~îéœ?ñÄÝiCúÅkJt§ פo5ôí…Îm£Ö¶Ú¦[o½Õµ‰îŒ¢ž`ýÜéç@ḽ©RÆú)}åòŸö Àz@�jQ@aïÓO?uaG_oë«qõ”êÃYÁÈO>0ùÞ<¿¼œ¹ÆŽî³Ï>nŒ¯†;èX~¿ÚO{ë‹ëšk®±Ç{Ìžyæ™b«K.S=TÔ³«?´¡! Çw½p>œ”ÜA™+’rV½tOYÍûEãvÒ’š²`ª1¸ .t½¯ñs³”¡†åèçÄÿÒßNûѤ»›t¬{÷î]luÑe•2^þ+dÑò@�ÚЇµ‚çæ›onºãÁQGU¸°L¡/d`Ò¾t<õvÆÇŒzÁöÖûíü\!Rÿ¨.>”¯ok®°ëƠЬ€(‹xÐokå¬KÒyÛm·-§hÁ¶õžš×ª©Îr&?†·Ø{ômI[“†”;Œ¤RÆúÕvà¸qãþÖVY‡� €@­ ¨ËߎKáèOëj‚ïå Y/õNiìc©PÑÞúÖeñ2WQ¬ÜYß{·hÑ"÷u²Æ0kl¥î2äû2'éì™ôÓÊ‹Wʘ! •o;Ž€� §ÕWẗ¨¾Þ×NÕ3©YÿA›‚¢®RªýcÖ¬YnÜ¥.è:t¨ëå.·§¸ÜÂdÑÙ{jŽi¹gDǶ¯´1·cíÀV €�5. TeÕ}B_ýu›={¶z +Ïu‡ A¨ÄÅ\I²)lêÆÿº‚^|A¯Õ›=xðàŠ]¬Öº~YsÆ´u ‡„17|»±G@� h\¬îV `¨á _~ù¥ûkhúÊ_a­–'õRkø†þ¬kcc£»z^·…ÒGå‰XU‡¬8cºªgBûïO˜ÀÛ~;° €@Æ|/¤® ×C˜Bc]uGƒZ ½ žÑ½{w÷§”u 5=Bßs·œS¡Ö1-§µWnÛ¤Œ ¼+×>¼ @ # e ºµv}SøðàÇ%ûåi˜×ª3¦•?{’0æ¶d•oGŽ€� b}Øêëþ¤¿òO1IEІsxVL;nšÜÝš;^&¶D�@�@ ˜�7%;B�@�H£�7­B™@�@�‚ xƒQ²#@�@�4 xÓØ*” @�@ ˜�7%;B�@�H£�7­B™@�@�‚ xƒQ²#@�@�4 xÓØ*” @�@ ˜�7%;B�@�H£�7­B™@�@�‚ xƒQ²#@�@�4 xÓØ*” @�@ ˜�7%;B�@�H£�7­B™@�@�‚ xƒQ²#@�@�4 xÓØ*” @�@ ˜€o>ØÞØ €� €�) ‡7e Bq@�@� xÃz²7@�@�” 0¤!e Bq@�@� ÐÃÖ“½!€� €�¤L€Þ”5ÅA�@�+@oXOö†� €� 2zxSÖ @�@ ¬�7¬'{C�@�H™�7e Bq@�@� ä¢Ý=êc…`ÿðËõZÛúå~®ezh;MþµŸûeñ¹ž3!€� €� àü_þÏõÜ?´]Sìusô<þÐvz­môˆ¯kjˆ̉>Àú¹¬žû¹¬_§¹¹škòË|Ðõó–µ-ÿûmãËxŽ� €� €€º^ÂÝø\!V“–ùð¶ZîCo|Þüÿ¨mÈ,ïˆê����IEND®B`‚�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/vignettes/biotap_logic.png������������������������������������������������������������������0000644�0001762�0000144�00000107327�13277247010�017002� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR��¾��[���—D��®iCCPICC Profile��xíZgTM—®î‰0 9ÃsÎ ɃäF’ˆ$A2"É�ˆDEE0�&’"¢(ˆb�%©ˆb‰Ûàë~gÏw¾_»ÿÖ:§«Ÿ¹uëÞš®ê©;õ\�$NxQ©¡0� ,<:ÒÖDŸìäìBƽÀÀ¤¼|¢¨z66ˆÊ(‹#ˆ6R†e¶l=7—Þ7À³ ÔªtR0úþˆ#‡�@6ˆ€%à7öÝÂÞ¿qÜÞMFtò¶°O ÒU!X:’bk€à‡�à‰Û˜æÅöÞÆŒo·°—Wd��œß}²—W�‚¹H¿±÷–ß±>ˆ}.d X¦pß pD„øÀêøúEù� Z‡èøúFù„ †�Ö ‹@Ú%¶ž‰¸5é+\@xëÙ!w¤ìÑ@e±ñá_²°Ï�4¥À-ý/™Ädl‰�4sþK6o»ý<!¶ÇQþJŠÛæ "bófss^�\�ë…››«5››ëµ� Æ�è õ‰‰ŒÝÖè­Ðdþ8â@(5 v#`¬8àAˆû@82@.(�GA¨uàh- Ü] <�ƒàx&À;ð|?Á*A8ˆ1A$IA :¤Aæ-ä yBþP%@iPT•BÕÐY¨ jƒ:¡>hzM@³Ðwh†aÌóÀ"°,¬ï„Í`;Ø ö‡©ð~8 > ‡«áø*Ü÷ÃOáqø#¼�o¢hQ¬(2J ¥†ÒGY¢œQ~(**•…*AU¡. ÚQwQOPoPŸPËh4š͇–Fk Ñ´:€ÎAŸ@ŸA_Aw£‡Ðãè/è5 Ã…ǨaL0?L4æ¦S‹¹ŒéÁ c¦1óX–+ŒUÁa°Ø8l6¶ Û€½…}„ÀþÀ¡p¬81œÎç£âÒpÇpgq7pp“¸<Ï—ÃëãðÁø$|þ þ:þ~¿DC¤ Q¥1§ñ¤‰¡É¡©¢¹Jó€f‚f‘–H+H«AkMëG›@[D{޶“ö9í†ÀKP&˜|Å„Ba”0O$…‰ÚDb81“XM¼N&~¦ÃÒ‘é4é(tátYt5t7éžÓ}§'Ò‹ÑëÓ»ÓÇÑÓ_¢ï§Ï�3ð1h280D2ä340ô1¼%A$>’ɉK*&5“‘æiÅ}Ó«;Ç7˜x™v0¹2Å3•1µ3½dúÅÌɬÁìÌÏ\Æ|ƒy”y…—E‡eËA––;,ïXq¬¬æ¬a¬¬-¬ÏX—ظشÙ<ÙÒØêÙúÙ¾°3±«°;³'²×°÷²ä`àPæpæHä¨åèãøÌÉÌ©ÎéÁyˆó<ç ç"/—W0WW+×n,· 7…;»–û÷<7O(O Ï-ž÷¼ô¼j¼ž¼9¼—y_óaùäù\øñ5ò½àGñËð;ñ§ñ7ò¿$£ÉòdWr&ù2ù�­€š€À›³‚¬‚ú‚TÁ Á~Áe!!;¡ƒB—„^ …5…ƒ„ ÷ ÿ¡ˆ¤‰\™eÕ­C‰)‹ù‰»'¶,.)î*~Xü¶ø7 A {‰L‰v‰9I~I[ÉtÉ6ÉOR|R¶RR×¥¾H J;HçHwH/ÈHÈxÈËôɬË*ÉÉž’}*GÓ“Û'×(÷Vž[ÞV>[¾K~YA^!@¡Rá¹"ƒ¢©bŠb›âw%I%¥“JÏ””M•S•o*/ªÈ««œVWåRµW-P} †UÓWKRkWû©® ¦~^ý½††§F…Æ+MvMŠf‘æc-:-s­l­{;°; w¤íèÖ†´wj'kwhoèèè$éÜÖÙÐÕÕMÖíÜ vêíLÝyG£g¢—¥×¯OÔ·Ò/Ô6`3p2(7xc(`ègxÖpÎHÞ(Ú¨ÍhÍx§qºq¿ ½‰I©ÉS!Ó ÓK¦?wií:¸ëž½™½Y¹Ù”¹¤ù^ó6 `ajQ`ñÂ’lhÙl¹b¥o•gõÌšÏ:ÀºÙzÕÆÈæˆÍËÝ»Ãw·Û¢m­mËlßÙ)Ø%ØõQX(ž”‹”_öÆöEöãÒñ÷Y½›7œ,œÊœfÕ3œŸ¹»D»ô¸2»ú¸¶¸¡ÜìÜjÝÜ Ýº¿÷PóÈöxµGzOÒžAOAÏhÏ{^œ^¡^ÞLÞ~Þí>DOŸ+¾x_7ßf?ŒŸ‹ß%´¿³ÿ¥�t€K@S 6Ð-°%ˆ&hOе`º`ßà›!Ì!!!=¡Ü¡Q¡„ž…ˆg†ODhFG|¦šP«©«{ö6E"ý#»¢x¢â¢†£å¢s£gb bªbÖbc¯ícÞGÝ÷(N*.;nf¿ÑþÚx8Þ3¾ã�ßÄc ;ÊV]o$q'%$%k'ŸJÞLñLé>(t0ýàLê®Ô†4ú4jÚð!ÕC¥‡ÖÒ=Ó{2Ä2r3¾fR2Û²x³f½Ï¶ÈnÎaËIÈ™Ê5ÍmÌcÉ;7uØôð¥|öü¤üwG,\-à-H/øRèPØQ$^TX´Rì[<P¢VR}”p4æèÄ1³cW“ç_:á}âQ©fé™2¦²¤²OåŽåwN*œ¬¬ V쯘9eª§R¡²ªŠ¡*±j®ÚµúAfÍùZ®ÚœÚ•ºàºÑÓ§ož‘=SYOªO­_8ëwöÅ9³s7Ï˯i`mÈjX½qaú¢Ãź—/‰_ªhblÊlZkÞÛ<ÓâÞ2|y×åŽ+ªW.^¾Z~éZv+Ôº¿õ{[PÛd»Kû“ëæ×ïÜйÑzSþæù[·NÝæ¼]ÜAߑ݉îLî\éŠíúÞÖ=Ûãß3ugϱ»ÎwGzíz‡îYÝ{ØgÖwÿ¾ÉýÞ~£þ; t?ÔØ5 7ÐõHÿQ÷cƒÇ=ƒ†ƒ½C&C}OÌž<¶|j÷tä™Ó³Ñ‘©ç~Ïg_„½øþ2æåÊ«äQÔhÖýXñkÎ×§Þ¿9?®0Þ:¡3qwÒbrxÊejj:xúÇÛøwð»Ü÷ÌïOΈÌ\ú þ¡{Öbvä£çÇŸb>mÎå|fû\ýEúKÛWïƒßܾÍ~ùÿ82Ï3~AmáîO»Ÿ“‹‹KyËÜËçiüº¿â¼òa5n ¿Vº.±~}Ã|cl3üo,ð7ø üþÆc¿±ÀßXàï¹Àßs¿çÏþž ü=ø{.ðÿ÷\€êéµ  ö÷àG=�tÎ�0@@ýoÛó(¿£ €BH!xËÀ#<„(ÐEø†C  ¼ƒX!=(áÞ¢p|łڇšDÛ¡0v˜)ì~;®M#C³@ÛK¨&¦ÒùÓ›3(’ÈŒÌL´Ìh +Ž]ˆC•Ó‚+;—ç2ï(?ž¬!*X-4#¢$š(Ö/Á!é'Õ,½&k*W(ÿRQ@ÉG¹VeR[¢‘§Ù¥5¯-¬c«{xç}¬¶a¬Q½ñ Sì.3óƒ5–ÝV¯­wÓÛ ÙiP,í=¢ÓJ/¸Ürt›tÿ¾ö$y‘½|t|-ü\ýÃæ•W…ä‡F‡¹„G(Qö2GÒD¡¢6¢WcVc7âàýøxÆ\ B‰¢IädžöƒL©„4tÚæ¡•ôùŒ¹Ì™¬éì79¯rŸç==<’¿\\ø«8ù(t,ùøçRë²óåËZ§¨È©ZwõTÍJýi3õqg¯œûÚ yÁçbYcÿ¥õfé‡Ë)WÎ]¸¶ÐÆÞ®vÝñ†ïM¿[·ƒ;‚;CºÂ»£zâî¤ÜÍí-½×Ð×uÿUÿÂCº¶G¤ÇøÇƒóCÓO††;Ÿ6=«)|~èEÂËØW‘£Qc–¯Q¯O¾Ñ|36ž9¡617yn*xZazõíýw'ÞΨ}À|x0›úQåãûOÇç¬?3|ûÒùõæ·Ñró=?[—ÖŒ77‘ù‡�Ð#<”$ÐŽ àÄ Y"¼P `+¸^Gù£FÐ6è§O̶§ƒûŽ?GL«BÀƈ-t¹ôA $EFN&Ó:ó<ËgÖolK웜D.2·…w/_ ÿ5òA&!ká,‘^1”øN‰DÉV©yY¹SòOÑJÊÊ{T²U[Ô^¨¯iòiéí×®Ôy¨»¬'¨ojj˜oÔd<`òÎtÕŒdN¶µÔ´2´¶´qÞíi`N‰¶?àâ˜å”ï\âRîZíVï~ÉãÊžvÏn¯ÞÃ>£¾S~þZ%‡„8†‡i„+DHP…ö’#ù£ÈÑÂ1’±òûTâÔ÷+Ç+KNKLæOá>È–JJ#§£Ò73V3—²–rs©yïòmÜ..J)>ÊÌûøÉ¥Kå<'wT8!+!»êJõJ­i]Ñéñz±³¡ç.œŸ» yÑ·±ìÒP3ºEýrЕWû[qmF퇮÷ÞDÝÒ¾} ãZç\·`åNúÝ˽“}„ûJýBîH{”õ8w0{(ýIòpüÓègÔ‘Ðçá/"_ƽJÍËxô&f<lÂÒcÊiz÷[ów¦ïgŒ>Ïš~´ød3gþYõ Ç—/_»¾~÷û±s^xã§Ø¢ÓÒ•_”U—õ•íùÇ2û@h‚ÝÛxaÇæPY1PôY;àD¸E@íAµ¢YщèÌÖ; Ãmâ hDhnÑ:Ò.Šˆ*ÄQºCô ôÓ ÇH–ŒXƦC̦,t,#¬lÁìúkœ¯¹np—ñìçuäSçgçŸ' \ÌòV¡™mËw—“$I.H=—n“9!»OŽ"¯¨@¯0«Ø¥t\9LEO•Eõ½Z«z–†‹¦„æ’Vھ: º°îÐÎ*=ª¾ž£Á¤a³QŠñn“¦]»Ž˜¹šs™?·8jioÅi5f]cº[Ãc;lWC‰²7ràp˜sìp*vpÑvåpýá6à~Æ#e›§º“לwŸOo²Ÿ›¿z�sÀ·À‡AuÁûC,BC—Âˆ *P÷¶EÆFÉDMFÇèÆ|‰­ßw0.`¿uüŽÒ <‰¤$šdTòFÊêÁ_©ËiˇÓd,gqf[æ¤æÞÈûž/vħ ²p´˜»ÄõhűÉb¥áeWËU(œrß^K㵸:…ÓgŠêïC7jÈ¿ðºQáÒá¦-Æ—Ï^%\‹no߬$[mš·» {ݵïè ëgxÐ>`ûèÃ`ê™áÏ:Ÿß{E;vx<yjqÆú3Ç"jkþóé[{V€É�8Ž@‘ €áÍ�`§ÀÁ �­Lhú9€øÚþ{ÿCØé›Û¬Žì=ƒ¦À9p'¼„’G… Î ¦Ðühwt9zÃqÁ”c^cù±ÞØ:ìœ .׆ÛÀ›âóñOi¸h¼i=E—6—öAŒ°ÐGä&FïÒñÐÅÒ ÑËÑçÓc°ch#ñ“²H Œ^ŒCL:L ¿™Ã¼ÁÉò‘Õuá.ÇÙ}Ø?qÄrœE\¢\7¹í¹¿óäóÊòñÅðóðß!‡ ðÜŒ’z+\.âˆp…ƒbEâ\ã’g¥öJëÊ0ȬÉþ”û.?«0¥øZiDy@¥[õºZ³úYJÍZGvdj§ê$ëfí,×kÐï4xa¸hÌl"oJÙoVm~ßâ§•€µµMÊîÛ'vÝ” {Kv‡Ç6§\go=Wq7wŒû¦Ç¦'ÁKÐ[Ç'À·Ä¯?€6Ð"¨0¸=d4t%œ'b'ÕoAäí¨…ñØ=û*ã&ãÅD$ÜN"&»§´§2¦EZÎÈÈbήÎÕÈÌ÷9²RXX,\ÒzÌôøÓR²™“K•%Õµ|usg:ÏVŸÏº°·Ñ¥É´Eé ßÕÍÖéö®'oóv™Þ±¹'ÿëÃã%†.<©~)0ZûfפÒ[ÕÌs×¾²~W›g]¸±(·”¸|ñWýJÙªÝÝÚÙu±õ3"]›žÛ¿&HFÂ+ˆ²‡  û0k‘ðyø-Âý»£ÊQ¯ÐÜh7tz#Œ À4`¾cÕ°‰ØGÁUàfðJãÞGÃHãNsáÕhÒ¾'hò ÓDMb ñ 9Ýyz}8ýS† §IŒ¤dÒ7FÆçL»˜®3Ë2ŸFØì¬l¬ÇØ8Ù*Ø…Ù›8t9†8ý87¸Ê¸5¸Gy’y…yñÅó‹#¼r®€žÀ¢`“P¨°¸ð‘ÑP1%±uñ^‰#’RRR›ÒC27d/Ë5Ë_T¨W¬SªR.S)R=¬–©~Pã€f¬uGˆvN.ugŠ^¾~•ÁUÃA£9¬©Ø. ³HóR‹ËoÖ|6Ö»Ólí.R’í)ÒŽÇNýÎÍ.•®Ån9î¹…{*=¯y {/û ûÙùçôa‚BLBÃÓ#Š©÷ÞüÍ£뽯8®wÿƵ„ØÄ«I‹):3S‘Ò­2 2³I9¹5yŸóÕŽdL©—”,s9Þ]*Svê$sÅáJƪÆû:Ôéöú}çô.¼mlm*j ¼¢¡u²½ñFÌ-›Ý.åù»÷Dî ={,>$>,öLì¹èK±Qá×Rãn“oÅß7Ïš~ø¢ö-éGÁBÄ"y©vycEvuÇšÚ:n}`£{þ-@²Wd@o`8 C)£òQŸÐfèó"&ó«Ž=…Ãà"p/‘÷¼yË3iæi}iG–„;D]âm:º;ô–ô¯BH€t‚Q…q„)œÇ\ÇbÄ2ËZĦÃö™½šÃ•“ƒs”«†;ŒGÉ!xÏ×Í_MNÜ-¤#,-Â'Ê,F§‘ÀKÒJ‘¤ydddä²äÛf”8•MT¢TëÔžj`45´BwÔiëòîtÑ+ÑbÈbäj\e2»KÃ,Ç|ÔRÉ*×úÃî]¶g),öYާdàšï.èÑíã­æKò[ X Z 9&~‘*¿÷r”zt[¬Ò¾–ýrñd/&Ë¥ÜJ5NkO‡2,3K³&sdsSòçs *¸^„+v,©?ºtÜôÄñÒ™r“y“•ºU—k¤këO‹œ©;+~®©AñBk£Ò¥f$N¬¸ÂxõÀµé6³ö‹7ho†ÞèîÌéúØcz§æîú=J_C?x@yxn`ý±åàÉ¡OÃOsž<{ÿòþ(×Xàëú7¯'ø&ƒ¦Zßbß9¿¯ž™žåÿh÷)i®æó•/í_›¿úžõÃc^nþëÂéŸN?-–-)/ÝZ6^~üKç×…®•ì•ÉUÕÕÜÕ‰5•µÄµ+kŸÖ×× ×ûÖ77Ô6¨ç6¦6¹7)›‡7{·æÿwÖÖþh "B#"ɆÛÿ練Ð$Ïk»0!51<Ôj+·‹ ¹>øzš#wäÚ †nçÁ!:—_¸½"ÛÂÒáÞVÖÿ`ÿHc[#}!j´þæ@°?5Ú†ò<)>ÐÀ ÁDD^âeôÇNU°—’ƒ†DË�j‰Œ±µG°0‚;£bí¶òèH~HqüGgÁ×Ïð9 ûïú­3EïÚòÅ‚üù ‰0ßâ Væ ø!1x$R‡#9aÀ�þSË�à…´Ä"mQ ¼GpÒ#é`ò?zÿ&1Þî€ôûŸÉH~YâíÏßÞȈÏ?6ƒ€/‚ÿȽ[m[£‹Ú”ú/Ÿ4¶ìmF¾A~V~íϘТhE´ Z­ÖAk�2š ÍdÐÊhu´Z­…´i�cð±ðgŒ[öÃZücODì×tDZ·¾»÷ŸVà°­ôߟÿm èÑ\ëÜŸ ù“Û9È“XdžN"y~�ÜI¸´uû%Ú/n+WDP÷GF“õ¬I?iò®pYi²¢¼‚<ø/ eê\ƒÚ}��� pHYs�� �� �šœ�� �IDATxìÝ`[Õ½Çñ¿¼wì$Î"›,„�!ìF–YʃҔÇ*i )£PJKie¤´ìQF[ H);¥ìM˜aH™±ã½d½ÿÿÊ×Qɶœ[ã{A‘tǹç|®lÿttî•ODŠìöÇ?þq—3f:dȃ322Fë<&@�@�âR ±±qYIIÉ :=uÉ%—,ÖF”ûôŸásçÎÝóÈ#üUzzú´ææfimmËRi@�@�L %%E4ÛJKKË;=öØÕ~ßHÓùù{íµ×¡@`Z}}=R €� €�Ľ€uäjè•ÔÔÔi{ì±ÇaÚ -øfôë×ï`ëéeB�@�@ ‘,�¤mºÞ‚oŠööŽÒ[Ä6Ú2KÌ:VBªËÊdù3ÏJÅgŸIKCƒ³MjF–ôŸ¼Œ>ä`É8P233%--M|>I~²2Ý$^SS#Ë–-“ªª âVö-((1cÆH^^žSžuYwU¦[ÏòªRyié3²dÝgÒà¯×r[%3-G&o/ûO8Dw«žákÏ\@�@�xÐÜ9JëšbÉt×E‹½ÓYÅ­7؆A¬|}‘|qß|ÉÏÏ•ƒ‡JÁˆaâÓáÀV®’ÒukÅìÄ“N’á{í!ÙÙÙθŠHåúý~±rW®\é„^ ·¹y¹’£Ûiº•úº:-¯Ö)ÓÂïðáÃò´»:R‘NyVÏ·—½.¾äæIñA2¨h°´´ú¥dý)[W*uU rÂÔ“e·1{uYψ;cx,Ð"+¿øXjsÇÊÄá—Mq[G Q¾Xôš|YV'ý†ï {M-‘CoP* Ð]î0Íéñíêd6ëé]ùƲô®Èèì\Ù~@±Œ;ô;R|ô‘"`KyL–>ù”|Z× ëü]ƒk@Fî½·©ˆX—¦¦&Y³f¬^½Z,ƒ ’âA¥°°P,WVn’ÒR)-)qÖ±ÞÞ¡C‡:½´‘ µz¾ýÕëòïÝ)ùÃóeä˜ÁrðøÃeƄä®±FþûÙ£òÊ7/Èêerß;w‰hhß}ü>Ö3Ò¾˜@_ ”}ò¤Ì»êryyi°û~µ\vÊ>’éA¥"—]'¯Ür|<é'rÖ {ãìõÔ(oÌú©üùì;åõ¶‹¾ðÆoäîßý]FϾ@fŒÊ‰~û.¶h\»Hn½íeiÔ÷æÎ”Y S÷9Dößu[OÜ»Øý,ÞzÇ탻ϕ³þö®L?pº¼UÝ O_7Rò¶ ¦7õËW‹—{o¾ZþÛö—q»È¡»,gþüùOËÆ"<|´êÕ»eæ¯þÖ^â1?»ZÎ:iÉoŸÃˆ”n_Þ°â¾e¢/Ev®i‘¡åÕ’ÿÅRI{ãM ­ÒÉRÙ~}µÕ4Ëâ´Y¦ëMœ(YÚKiª­­•R ¶fêðë!NÑò-[ðõéãÂ~…’™‘)YYÙκ6ôÁÎ΋4•m(•GÏ—¼a92`l–äæ§JEëZY²þ#ih©“ª”rÉ/ÌâôIÕ‘¶î¶ƒ&Ê𬑊d>1'à/{SŽ:ýr‘ƒçÈ]s÷ÊO‘sÿ[.Mú³ù§Ãš¡aâÕÿÊ×ù»È!; Û®®Ê®~ó¿òæÀ“åLÝ—÷S@rw×7£¹Ùݸ²L˜¶è›ð÷_ù¯ þÙÝØ>úÚûkÖËÿ}D&5KZ!×ßöOyäÊ1sóØ&ú·Êa\t?[ç¸U˲—Þ•=~û¨üóäí$Ešµ£¢B_e[:ùåÍÛ~)çÝóžÈ§ÈmW#ýª¾•Å/?"Wýý9î´£dûæcKwÕÍí[å¬?Þ%GL,+_½GÎü㯤~à}òÛC¶ÆÀnVŠÕ@ 'NðMµaMk_zUúë°„ÝkE†ÖÕK~ÍZâð®uË:Á7ëó¥’¹¼T2šý’‘“&RšÅÙæ„™‹-//—þýû;½½n˜miñKC}£³Õµ)++ËYÇÛ6ùù‘ßc/úòeIÍH•;JN^¦¤d¤DVȇ5M:Ô¡EªÒK%³0Mäô“Üì,ù¶¼Rl›cž`Å3!õëzÞù‡ÓdjFƒ¤lÿ;YrR£7ª’àOM¤f4Ëg]!Wžÿw9p‡ð?ó—)Ç?¾DNnÚ k××m¶¿¾iMÍÈhŸo¿W:ûÔ§}Åö~iÕ7¤€_?H _¿öU5dm֖̉rï’%ÒX¹N*ê»Ú~cIÝ}Ôš<gáÄSÏ‘ãÆeËÏO9NNÞc–|úõiÚwHŒ|ÄÆEû£;;nÝmÿfëùKåí%"¹Rç|z·ÙòÎð¯{)zw¿@^üûO¤_uøSGÊäÝ–YçÔIumµž·ÑÃÂ{¸Ù¶G_(S|R[ß"Ãfž&?ùãýòmŠ}àÙËéaýÙ ÚRõGW3¬öÞtvËùü ™â÷ɰ¦V)Ðßý> ¸òm‰È[мó±ÈÚrÝÐe)2L;‚lݜϗtZ¦ïµk'ÁÙ0÷Ä5·v›;ßÖ±umwy¸ûU ßȰíêøãþRÔ¿H{Œó$=Ï/u©¥RŸ¾^²óR¤¨_ (ê'õ—!º®m®,æuþšÀ§ï|DßXÚôÁȆêj©(_'«Ölpz|ã²a©üýâýeÿýívŠ<úA©ó_ºðz¹Ò6œ7WNÑe7<³|³×~çeWË¿Ï;^Î{àÃàv Kå†S.–G½*·ÏÙ_<D?ö¿x¬©-•…óôùêþçÊ«+kÛöS+/Ì›³É~W¾pƒœ2ï©u~YèÕ›ûû¨y,˜;§­Ú–‹o—OJƒ¿¶¥îC¹ø°Ã侪ÛÛµþód®ãô¸aáÒà–ïÔŽ,X´Hæ»^stë#ýžÑÊéT[¹Z{6×ʪ–þ²“>_¢½œ­Ú¶æÈ¼G_•…7œâ¸Rk¯‘ù`áíÛ /|¾¾½~ËŸ¹AæÜðŒ|²h~û:ßþ‚¬wë¨å¾³`ÞÆeóµYiÙmõŸÿÌB™ç´qî+Ü1îpÜ´ìÒOÊ×EÛüù†m^ùΣ—é: —ºÇ/ô5_+ÏüéÇò‚¶ÿ¹?þVë7G^XÙÐÍö.”^ø»Ó¦SæÒnáþNYþÁ"c–?ÿîxI_S"•zîHõ†J)+Y#%Õ5RßìÖ#²ÍÊnw\—~°Ðy­ÛÏÂÅU6tǵ}w?­R»¾DJÊ7Hm]­T®Y-eZ¿ídqëÌýF+,°ˆå×€þèúl¨CªU²³©`m™ ÕÎáü"íÍÉÔÁU™v¯·tÝ\ªô×^Xë¡ÕŸ|}G<TO$«Xüc©\ ¶Ö›k=Bv³çîͶ±«>Øs»·ÉÖµçÕµ!³N†nS(E’3ÒS%Cs}º†ñ4½·rZZ3¤YÛj 7e6Kó6)²nCð¤³þA ²Fí)³´ž×Ÿw’¼|Ü/åç?üŽŒàö´®“;:Uæñ{yòµRòÌMrÊÙʰ‡n—©ûý@Ž¿ê1ù`ÖÿÊe‡•ŒÂ›ý<u^¶OšÖ½/_4¤·ó§HÃׯɵ¾&?¸ôv¹ÿ¬åréWÈ ß½QÆÏü½Üÿ ¹ï„Ùò›ÿ.ÏͲˆhÛ/–‚ŒÚß´B¾þb´½ûÖ!÷îï¡à_ô22’6ñòÐùó¤°æc¹â¸säÎiûÉÕG“QáÚ"ßÊŠ¯¿–±)Úsl?ã+ž“cϼB¦Ÿq<yÒtiøäq9nöÙòUÍ­2ïûãuïVÿÅrã…‹eÆy×iý›äo?º@î|A÷qô8«Þ&SÀº£uÊHÍtÊ/ÿe¹]Ÿ´ÇdÉnÕßUëËãÿÒÛÌ‹åî{w•!™­òÅ¿þ gßôšüâæ‡ä“³ä­ûþ,œy¬\|÷rÐHÞ¥Áxñ¿æÊì}O®¹û~é÷ÍórÆï/u…7j·“/ÿ}…œwS“\÷ès²CËÇòk5¸eÈ|™³ß`Ýs°þ·Í],§_q³Ü;v¨çW‡9ÆÍ›7sùÁì«äÇ×Ü/7NÏ–‡/8Zμt<1ïÉö¯žw­¤Ÿ»¼tì¶R¶d…øÛkmß8åÈ'œ/òÌ<‘#—{Oš"y…©ÚÞK»ÑÞ«´ÍÚÞÛï• c†ux 6ÉŠÅ E&þB&Õè'€îk¢mÏz\Ý©3ÓjÝÇ}rê¿ÆËźŸáËÙWüF^ßï?rÈÈŒ.\Ý=„ÞûeÅGÊÊ’UòÔ‘׎ü½<ÐHi­æÚ÷¡J<F R-ø¦tõqM†Ž¿Í´Uót`UŽž4’›«Ûî5ŒŠ]ÖL߉ëÛa ‘¥WcHÏHëôc ·77ôÞ‚­=·ÉþpYXuïÝõ:«knfŽ3„!_ÇgêXã, ÔÙ)ézo#[¥Þß"uzkÔ`Þ¤óê³Z¥:³¥Óz:•ábHÀ(ç~ô¢ìp»†¨þ"§=ô9á¢Ûä#õËÞ•ùZ×3fŒ—¦oK¥h»Ýe‚<(Ë×m'”§‹,2VFŽÔ?ÚMõR×´éGµ•mc„m*Ô“WŸC½×ÑOrÆMOÉÏ÷(”š†B±88ã&ù×Ï÷p®Ê2ý ‘Ç?[)ü;èIO¶·uõ¦ï¢òt€Cð¹^zÐ)?k[ùñ©“¥¾²Bª ÆÈND^ÍHw–¥æ…iK]°4í2vÖYúþÓZöñrÙì$¯²V w=Qî?ïe9áÏÿ‘åüG¤ëüåÈo&ÕMr€úÜ“܇SµümÁwî¥È}_½/ËlÙ‘Ë…‡ “&í‘lÖ_rü5òö%‰¿¶^ê×,kè~Þýò¿»‘ â˜}¾ûóòôû+å€mÆêo%ü±<õÑù2 ¶FüSN•Ë_¹]~óæRÙpxºnÿªîc®ŒTJ¥~»ü(]{~ÒvÚÞjH ÖÿÇêÿ³Ý‹¤^;š‹"c÷¸]’}ÇeÈ·Úƒ¾ÝQÇ‹\òŠ,¯9\&¤ùÄþ(¼õé‡òÅ´a2y»í$P_-uÍm¶º,8ù%Òt9RŸÔM*ÛŽ.ÍUË-ÝjïArÏ«’IiµÒØP×á5Ø"­–%·(=gd“W§¾^+ët¿zµžÔ¦eÚh·‰2]nzöVÙ3¯Qšwü‘L¿âqíühýŠN· ?|¸AÖ}ù޼öõZyÍ�Ö~#Ÿ¹^Æ»o8m&Ä@÷NnK?F—+R\,ÒO{wu¸€Ž#½Ðn°z¢šl¨ÒÛ½é»týuž1bx‡wò›rX/¯ãu­Ûókk¹=½nÈuzku][§³ßaý†êÇ5’›¦'Äéðˆ¼´t½eJvj†óµ¾¥Q2ôVç×˳éhÈ@C­ -ÔmBz6­%ψAýø{Íê Ùÿ”¹òî±ÿ#·^t¢üíÊ3eШ‡åP½$ M·ko°õF§ rbnº4×ëGµ6Ã_£×ÌÖŸ×pS'ewŒþüÙ6�Ÿ ^–õ ²ºTÇû7W9å/ÎÓú•êÏœÛÀ—%éú3fÿ9ñ©í ­Ø5�tIÛòMʯúHnºüj¹óy˜cÇŠ|-r`Û¶­áÚÒL[5øÚƒÚÒw4û)©:Ëi·¾Ao̤û«’&°6VÿÝÆdɪ7­c8õßÂúéÓö©UçÛ4sæå°ñ¿¢aãe‚žH[ªŸˆ5ê>méô ÛHåê’``kI•&÷Öúu²®¢Ð6•†µi2ù@ÑË-~#µ‡Öök &Œ”€^ݦÜ)^¯^3IþÛ9’în/_"ßÜÙÜùgBJF°‡\Ûkõ¢þkË*ÚV¶aÓclmÕÉ9næbÇþ9ýØçÚ¶±·+S%[¯MÙš>V~9®”žx‰œ±ðF‘~(ýÕI2©ý…¶Mô®~}•³ÿšº*ýõ¯e6êÉÉ:¿ËöN?L†4j{­ò›MéÒÏμ÷sYsÞî2L?`t§e /•³n®’ë¾Y&¦tnTëÁ8\vH-“’Jm}KMûÕ&Z»ruw¸É}¶ð¿ÉáÚ¡2ï·ŸËe{/³ç ‡ÿt°„Ê›l̈îßÌ)“¥dÍ™0 ¿kÐ_àEEz¯7û#k=¾|µ—U¯5¦ÃÒ¥TO¾IÝq²¾»v~݆m®Ðf×ܵ˗¹á×½· ì¡^÷fëÚ6…Ô1…“äƒÒ×$3æ„ß¼´ ÉKÍÖ|W®ƒ*ô“õ¤H‹“¬-i©ý§uZfØÊ3>h²µ«$%c¸üôê[åoüT{ï*õ“Œ`š¸è7å¤íÝKz¤N¯a]®½–Î*õüÑÎ~Ž4ž…-»u”þÌëö{ƒÛ·M¿^s»µHþà¦þ4hOó³¯?¿æd=°úÜb³eÇ€C î_/…¸æy}#=Ýyîijòß¼û, ½?’ÇÞyLÆddáiSä_íÛ:+nÚûaûÓûÖÖlP¬Ý·ó?“µ­»É@›¯SSã:ýw~dë8kk﬎a-´ø,Ó~ç„óqƒï„v‘‰#ô­æzY±ÊMomm«¯Õ° ¹¢¿^íLR^‰|¦MžðËq’£õ¬tªÐ"-ă¯A¾üx‰cÖÔ¶ý„Óî‡ÎÙ]K N¿žL¶º\MÛêïú;‹ƒmØôëïag¶µ9C]´ÓBfÊÂ~'#Üm4ªW¬^#5eø!rÇGGHÙ§ÏËE?<Wæü{;YxªZvœ‚»wæ:^Ýmoe³Ô6jçHÇòœç>3åd}t<÷Ö¡rÒîöF%8eõÓןözçZ@ïÂÆyRÙ$ëuès‰?µÒ(ìü=éjÛMz™Ûö­/*Y¿nuðYÚ™~„ö¼¯3O½µ¯ÃˆýíÑ¡)Swÿç_ÊJÌ?|à�ýÝ£¿Ø ô—gnÛÖtý¦½±¢ciWÙÇucFJÊÔ)Á+#(è×$ëE!*¥Ni»á×zzÝÉö`„ªõ»F¯­çö»ë…Þï·ƒ,«{WÊ¿©‘þs%×!™Ú;’®÷ö'8CÿØeút˜ƒþª*[V.9™Ù2®pí ëü\øÐ}ð¾XóÞSòNõÙcê(é—±^Þu¡S¥Æ –L=ióT¹V®üáï%û†d»ÁR¹n•4‘ÑýR%GsÄ’ž’%»/#tè’þHo2uV¶ß¾ÑÖÖŸIçç°íŒvûê<×aÁåîUôg-8C{Xõ ú“×T©™‹?oÆo'ßüG¯0±@Ë›Ü~ãP‡àólËgzÅ€Ÿ} «V¼,¾¥O‡})öàôÞmÖ'íÃ_?Õ²ëwtƒ¹òȧÊÌýÆKý·oÈŸþü¶È©·ÉH\Û6Ì£½þíC-ÜúÛþ7N~íá¶©¾J¯Qᾩp—»mo¦a³SFÊQ³'È™ó.—ç‡_"{Ó±¥¯="÷ë¢ wä˜øv@®”;ÿ[(?Ø{¼Ô}ý‚üé%‘ïýiªä¦ ’/œ!']uš\9ð¯rÄ.ô#·\Ç™ŠLš<\ôr<ÎÎ7Ößyæ»u3×fµ÷÷E®ûµüü’arÑ̽¥0µ^VS*'M”~þ5òìóoËØ©Û˰‚²£ùVf~øß»w·Úkutw°¾ÿÍßã8} ß#w^öi:çJ9B]úehˆuºˆsƒné#;µ *}£FŽ’k¥o0üZÏN];VHKXùÉçzI£Q2¨_†lXò¼üߺÒ÷ µW¾­üͶaĨ@÷‚oµþA):ø@Yõî;’™•)Å6Æ×B¯õðZXµq¹:v¶L{eWëåŒÒvßMÊõB¸^–٠ktxD†ncßÜf!74üÚs Æm]»ªƒÍ‹4tŒßťKE^­äŽÐ±ƒ6±í=¹íÕjdý·z–piì3ä(iª žÍ©Læ#k)õ«äöy7… eýØõÿäÀ-²¾6SÎxyd^:S.ýÅÚ«>çæ4è¦Ë.3/yr®ÌùÑ¿ä'×Ü+ÇŒ·¡§NË®këQu/7¦éBˆvƒ‘~ü¬Ÿ 93‚oP[%Ûɇzå' äÊž?›-2ç/rÖSºÞasä’Ù¯ÉÜ·Ü€²iùÛv™ŒŸ©üüäëP‡äW³¿'Wß|¹\ÜïÏò—cÇoÞ–1~§>:LÕ©Oú6ß•‡¯«‘cϹHþ}UL‡5œú'¹óÔ‰²¡DxÇúëï ûõb¿c½Áö9¿.µyÔ0ËÃl믒‰?¾UþÔx¡üzÎÿ+ ÿιîa9f´žX[e¿Ï¬Çx†øÞ»H~ÔVdzo’ ÷í/ë˪dÈ1Û×ÉWΑûÜ9_îŸ4T²6«¿­²¹ËøÌMÞ4î+ÏÜs™\|ò¥rÆ£m;•ƒåúã$O{S?wiðêVÜøÈí'X'†3XÄælœôzèÃôYeN›G7Ú›’Vì¼qj¤KkT[‘-g¼ù¸Œ¼ýZ¹ôº‹d[E[cü‰’£~VÓ™M M_™ýÜוn×feÇ·«m³Úkâ>h¯¸Hæ-vŸëýŒ9òð…:fe}Y0X‡,â!Ä´€ó•Åß}øá‡Ÿì¬šRíË#²õ[Ô2>ùLŠu¼]ÿÂí1µ_>ýV´Y¯c¼Ê–-—FŸV¯ßÂfcmèB¤É ¾ö…ö‡Æz€s5PÛ¥Ël²ñ¿nèµ0lá¸AÇèuU¦Õsƒ”ÊÇžÖ¯*Αþ 4£k=u5õ z-à*½úZL):T?4+‘êÏ|úJ ·x¸§5I…^ZÉ.¦’Û¿XRëÊõu] 8éy2tÈ@sY%-:ì§ GËVJ‰~ùLFÁ ¦™ J‡;¤¶TH©†¯Ð©ó²ÓdžÄ”ÕX.+ÖéÇ)ù2bä€ö²%%O†(¾º2½Ú¡º4¨_b“ç«••z¢}®’Ó¨ ÈÔÞVÝANŠŽ·ÏœôY¹¢D—oZ~F~±ŽÁ÷éu[uÝ|Õ䓿Æ:í¥Öë„—VoÞ–š,=io€4´µÕÚ•Ûˆ¾Q÷I•íPÃP^Z½¬]Sì‰îXÿû·íC§”ÜbY¬W­-WËꎟmZ÷ÛeÈÀaC$½EÇëÁÊÌ-€^îmíú`,}ýr9ãÅïÉ«·#iµz¼ôœ„ÜÔ½.nEÛ5™Ó¤pð)LiÒc¦B™úµîº|åJõܬþÁ½n~Œ›7]-³ X÷Ï’šªZý›©ç,§JùŠ•: x møŠîNÝíƒÕR©WâØlòåÈ6£‰¯¶LV–Úñ¶©óö:¯¯œ&YùïN¦”ýºù’ÖR¥ÇN×Ô¿ ¹9ú7'C/Åöí*½¤›mÙ&«x„ ÌÖou^Wºj›U“»uα‹¼íæõJ“â‘CÅW£cØ E_GÅ):Lg­XÕ˜@ ~Ž=öØïÙØ‚#zè¡Ç;«¶ÛËj¡²H¯ðÐøþ’©WoÈÑ^Zëñ­Õá MÚ#›©C"*´××=q&´÷¶cùn™ömj­W× ¸¶®ˆmxƒ=¶1¾6u§L«gn¿\ùTOnÙà_.©i–{õ~–ôK%“‹§Ií†ÚnÕÓÙ)ÿ kz•• ^d¸ø›E?ÈØlJÕ“;Sô–f=‘3t©n›®ïI7›ï®Ó²ÝU{rïÓòõ!ý§©A¯¸hWMt×uÆùë�}íÀ N]µÅÖò¥jºÃ@‹4‡ƒj+jkÞ¥jpKуÕZwÝáÚ—/’Ÿ]w°ÜûÐÁ’§ç0¤èxèfý"ŸÍ&§zÉ4ý"ž–öÆo¶ÖÆÝqÑN‹tÅ è>í˃B§`}7º‡.ëÎãHííζ¡ë¤êùi©ú"×_à6L#lÛ£µÙtú³ÐW½Ú…ŸTë+ÒO<›ºñÚ Ý@ &Ž;î¸#-ø¹`Á‚Ǻª‘õÐZo«ýá±ÞYš`m²!5z‘q¶à~ÉDg=³î¾Üðk½¼€3uè„]¹Á&û¨ÑÆõZàu¿Å­³Ðë–¹5êé–Í= à¥@º¿R–”fÈè!9Îi·^–MY €�› Ìœ9ó(çä6 ‹Ý™,ŒÚº%:䡬¬l“MÜ2,ÌZ@uŸo²R„'Ö£kÙ&7ܺ¡Ø-Ï–¹óìqgÓÖªggûd ­€?w¤Là—õë«+-ë#€�Ñ Onën ´òÝuÃüáîß]Ç}Þ{w÷>t›póB—‡{ìnãu=Ãí‹y €@Ošk+¤$8Ü·'›³  €@tNðõ=ðÀÑmÆÚ €� €�Ä—€#?(//__õ¦¶ €� €�t_`À€3ízc~™@�@�HdŸ_»1!€� €� ÈÎ7LÐã›È‡˜¶!€� €�˜€ÓãKðåÅ€� €� è uHô#Lû@�@�†:ðB@�@�H †:$Åa¦‘ €� €�_^ €� €�I!@ðMŠÃL#@�@�œà  €� €� /À7·%ü!¦ €� €�*ÀP^ €� €�I!ÀP‡¤8Ì4@�@@ÒÔ€onã…€�[E ±±EþñÏäÍ×WKii½ñûŹׇÎÔ*ïQ<�� �IDATí‚3l�VèÔÚö$Fæü­rÈaËBkÈc쵑ŸŸ/'N”}÷ÝW222<(•"@�M||™@�Ï,ôžü“gdÊ΃ä×W,ƒ†HFš¦WŸORÚßnûâî÷7«KdêØA¯¶ÌÞŽç¶‹ùúXÈ ìykk«”——ËóÏ?¯o–þ!³fÍ"ü†"ñ< Ç×F A�Ž7ßø‘ÔöË’ÎÞ[25ðÖ´Ä×íáÕìë^Ÿ=ØlÒPd¹h³e±1m­vYÛÔ!¼gj{˜¯;ØQ¾v¨Sô‹D”™3gÊ}óçË‹/¾(ßùÎw‚¬ü‹�x#@¯7Ž”‚�¡Ö{÷øó_ËÌ ”úæ€4éóM7)>»fZ ?–œû¶Û3c Ï/­÷ëp¶ðÚh÷X ´Ø°ÿþr÷ÝwËÁìâ̆ €@†:t�á)l¹€úÖT<¬ŸÔµˆ¤k÷žÏ§½½hCBí¦=¾¡}€V7ÇÖüšfëÔ Ö)6k¸ioj,Jv|…¹žvo·ÂÂBIOOwÞ`XO0 à•�C¼’¤h¨¯¯—/ËR¥¡·H‡8ø>Iu†÷ºÃܱ½Á�ùƳOHQñ`™´ÓníelßÜEƒpçóßzñ?Ò¿xˆŒ›<Õ]±í>ºrÜúÔivk xÆÛ ·`mÎÃpóŸ|âI=Á¯Tƒ¿Oú÷ï/S¦L‘Q£GE\ß„+'æo2ÎÁ¾™püÚ‹`{Y�fB�<`¨ƒGƒ�!ÎP€ìt ˆ>©×àÐÞÞT]žjQÎé&Õ�²þü[®–ÉÓö–±;LsæZö ]î®Ú“ùÏ<ò2aÊ49i'·˜àâögt§üz¿¶GÇ*ÛäÝ%…›Í5×Hcc£L˜0AÞ{ï=Y±b…Ü{ï½rÄGDUN´ûÝ’õW­Zåœt6bħaáÚÕ“òÂ:üãöúÚkÇggg3¤¤ƒO@`Ëê°å†”€�á2ÓdMU½h�NÑà›–ê¿Þ[gÇP«9G¬U;S5M—º!+”{>ÿœkþ®·•m¶°ü†¶Ë±YQÑN6fõ²Ë.s6;òÈ#åÎ;ï”ï}ï{ÑÓkëŸ{î¹²í¶ÛÊå—_¾U÷é¼Ð ·Ðk÷YYY[uŸŽ�É)Àà©ä<î´­/•&Ët¬ÃúÆV)ÓÂ*41V5¤¦©Ujš[¥Noµští¾UÃN³ÊZ]V«ìfóëõ¶®¤Lþ|Áirʾ£å”ýÆÈ_/:CÊÊ××ÕõW¯]#s6Sfí9\Îûþ^rï WÈù?د½œkuš<öÏ[Ú×_§Ã ®»øL9í€ñrÒnƒå—Çîv¿N]ÂÔÇæ·´´ˆ¿ífCo‘æ[ ³›»îøñãå‹/¾pʹå–[ä°Ã“±cÇÊQG%o½õV{ù§Ÿ~ºÜtÓM2gÎ5j”TVTHWëÛr ØvMÜý÷ÛO–,Y"óõJ ;ï¼³LŸ>].\Ø^þÚµk夓NrÊž6mšs5kƒõP¿ôÒKN¯ô.»ì"O>ñ„³M¤õ­]áêúúë¯ËÑGí”?yòd±í]÷Þ1ÓžÞÖÖà‰ƒMMß­ÿÊHJz|“ò°ÓhzA@ƒïgiÒZÒ,z93;G)U»oSÚ.âkïºÝ¾Ýj À+õ2a¯®Ö3Çt²@_Û¿O^ò±/8ôO9Ë^»é™ûËSä°¹JŠ®øø…³teŸqí3’‘“//ßp®¬ùæ+§,+g™)hè7R2Ö4;ë?qñ¥zí Ùûç×ÊðŠ5ËÂî·U+gåÛdwn}>-o’{Ú¶ÈYîþcí‰4ßz1›››q«Ë—/—|PŽÒ^ß:-kÀ€NP7nœœwÞyrà 7ÈÍ7ßìûí·ßÊsÏ='gžy¦<ñøãúEó)]®ÿ /8×Á}äá‡ågŸí\"lêԩΕìj W]u•ó%¶ƒÓN;M†.o¼ñ†Øú^x¡<ûì³ròÉ'Ë+¯¼âÖóµNyúåV×Hë[Y¡u}¼­®¿ýíoÅz·ï¹çYµr¥sm^»nrz{õÍßßBð Ä<Øbz|·˜@ ¬@fºŽ*H‘M6„¡9¢7ŸóÜNvók”l±›Î·¿[Öv³å6¿BêÊw_íþ©äŸèܶÓÇß¾ó¬T­[%ëW-“Õ¾*“ý™äÝVÒ ɶ3ŽwªceY9V¶ £°ñÆk¾‘U‹_’í<]†M;TZÓ2¥ßˆI›í×êeëw¬Í÷ipnm§]ÍB{Mg̘á„Nûv²ßþîwN]?üpÙ~ûíPh=²ï¿ÿ¾3ßýÇzƒgÏž-£ÇŒq.ïÕÕúßýîwâá:6×ÊËË˓믿Þ¶pÀÈçŸîmãŒ-ÜtÐANOìTíþòË/“ðrssú؃þÌí›Ô:[¿c]Ç´Õ555ÕùR /lõ‰t²š…^}oúF†¡®(÷ à¥�=¾^jRlб½ùÚÓ›“æ“ìôTI×1¾éíšfNo¯ÓÝëüã\æ,]/û›©§Àiàt§ŠòUÎÑ“w•܌௫‘ÛO€kÑeš«ƒË·ß¸<3MËÐ"Üõ­—9ÃÊNO“ŠŠ`ycvÙ¯}¹S€Ž=Ýo°Tý7Ìü‚ŒÔ][ÖÆ6Û•N=õT=z´ <¸}7O?ý´L­GØ& îe¼l»!C†´?·å]­?pàÀöõ-xÚåÁÒÒ‚~n¹voaÔ&áηa ß|óM{ýlÿî²®ÖWWë½>ÿüóeŸ}ö‘3Î8C.¸à'D;;ÖœÀ«ÇËùmûÒ¶Û<‚¯+Ä=x)àyðµñ[ö1^]]—õ¤,ˆ#êêj‘¬Q’£ÁÔBo^[ðMÕ¤ê`ÁncÀµpjÁØÂªeM›,ÿ2Ìy\·úK<d¸óxݪ/œûâ¡ÛH~ñ0IËÌ–º•ŸË }nSkÍz˽’§Õ&Ûªm3Ú™Wñå{2zò.Îc÷ŸÐýºóì¾ãü< ó&{23FöÚk¯M6ýúë¯á6wýâ†ûï¿_æÍ›·É>,PºûŒv}Û6t{7ÄZy#GŽtêò«_ýJ¬'¸ãÔqÛ®Ö·íC÷eÏm\ò‚ œ¡úí §œrŠ-jŸ,èêÿ:C¯{rÛË/¿,ù:Ä‚ ’O ''GFí¼ñ÷²õžßuëÖ9“ÙÇjí½^V˜²@ öªªª,ñJöàæ¦§H¶†Ð Œ|5ßj¯þcÿëÍÆ8áT{ óÚzu-Ù¢Üm·“a“v‘OŸºWÆï´‡´ê PŸþçŸ2\{}·3Á)gÜôåÅ[/‘}«×KÙŠ/å“–”Ô4í=Ns†´÷øjÙyºÍØ]ÅÜ.c§L—m´ìRÝfàðm±³î~M8Òc+×Â]´“»{ïn¿~ýzç¡Øf×ùµ¡öÆÁ]ÏîÝ›­íú¡åØö¡ÏÇh·!Ö+k'ÛÙX_ë´°ài¿Ç­Nüqû6]­ïÖÓ݇íoÑ¢Eb'Íí¹çžNíͶå69½¾m÷¶oÛÞz|‡êü-qVâHû=`—´¡Wöû ô²-Eð4øÚÇ`ÅÅÅí«…þòÛÒŠ²=Ä€3Ž3' ùÖÛ«3Go6!Õ†9XàÕëÜkºtN"Ó_l¯Þw­¼6ÿ/í½Ó^ò‹¼*³®¾_îûõIrõ‘cõú¹~2nùñUÿ'¹Yκ'^z‡<ö×_É›Ý"ãv›!œ|®<}ëe|mŒ±žP§;J·!úܦYWÞ'÷hy7ÏÚCrúõ—Œì\¹ø±/õã÷àúx©í¦°rÜùV®Ûûj빡­ãï»pó­·Õíqu×ßc=äÐC•½÷Þ[ŠŠŠä¢‹.rÆÄÚÉlwÜq‡S[×Ýg´ëÛ¶vs÷ëÞ»åÝvÛmr¶ž�·Ûn»9=À555r×]w9AÕ®ö0kÖ,±á×]w ½Â­o• ­«=·«QXXïׯŸLš4É)ÏÝ·-wÜÀkÛÛc ¾¾m˜$—€ý^°«¾TVV:C²¼ ¾ÖmqZyyùß¼ ]¼x± 6Lì¤ûåj¿À˜@ ù*ô’[Sþå—Óö#ÛfKž†Eb+š?õwƒ†£6’Ð_6Ï —¡bîüÚÊr Ì©’S BîüÐuíñçŸ$¶îÙw<µÉ¢Žë×nÐ!Ú«åu¶ßM Ñ'_[&Mó´ÏÀÙ……C yö»Ó*fõEš¢]?R9îüÚÚZ±Û AƒÜYí÷6„Íæ»¡Ùt¶~û†m,LÛdA¶ãä_÷Þ¾ÀÂnkÖ¬qN„³7L \öûÀÞ�Ûï™Õ«W;—bôB@¯ sº§¿½333oÛ±wó„^/e Ÿöó¿Ka­öæµJAVºäf‹|õ³`ðm ¿z×ÝsÊ$?o@¸sÍäñ›¯–šŠr9y'ùäµçåƒç•óîzT××€­‰6ä\¹vL›ŸŸ×¿ý¹û ³õÝròs²µ÷Õ®áídŸ–¹SwƵF»¾[v¤{žf·pÓ6ÛÇO‡.ëlýÐõì±õöFšÜÀkËÝÇ|íž…^þ–D’c>‰+`?÷v³op´léåäi𵳆ééõòðPñ)`¿¬v¬xNì(…š¥rµãÒ.*`\uÐviø´_·'Ö‚¥=v&[¦ôÎ ®ÍßißÝ5ð¾"K=+ƒ† ‘«Ÿ~EÆí´sÔåtw¿…ýtèDzpØDp'üÛS7è†ÞÛßëéy÷Ýwëÿö´l¶C�ø°àk¿Ü+ÒxÕOƒ¯W•¢ˆoûE5!«VJ×~(¹;í-jàÕ&¹Ch²4s¯Ãö»õÖdŸ¼Û5m™¼°Ðë_+Ñ¿óÎ;Îp¯ÿàyScJA�x øÆóÑ£îĨ€ w²/E°o {sõ{²ý¡GÈÈIzé,=Ù-ÒÔ1 [o¯M±6ßê:ÖÕž3m¹€Èb—Â|òÉ'/ذKž…ž·å{ @@?yðZÀ>¢²]íkoí«k_¹î2§'/´gÏë}öfy›ž6×›{NÜ}¹cúìföº±×ÍcB�¼ øz©IY Ð.`½¢öå?ýéO¥¤¤Ä¹,ÝdB œ€½^ìªvõâ@è §Ä<ØR‚ï– ²=D°ðb'‚YïÝ¥Ç7bƒYÐc7èº÷=.ˆ @�N¾à°¼pÃŒ{ïM©”‚� €@tv¢5 €� €� /@ðMøCL@�@�L€àËë�@�@ )¾Iq˜i$ €� €�Á—×� €� €@Rlµ«:dee% D�@�ð^ ¦¦ÆóBéñõœ”@�@�bQ€à‹G…:!€� €�x.@ðõœ”@�@�bQ€à‹G…:!€� €�x.àéÉm@Àó R`â 4ùRßÒÚV)©k•òúV©mH³?qÛÜÝ–¥§Šä¦ûd@vŠ ÊI‘âÜÉNóIFª¯»E° €�q/àu¶ô4øú|üQŽûWX/5ÀBoeC«¬©ñËò Á{ À„›[{©1¼›tý,Æ‚®Þ¡y©2º9x_˜•BøáãFÕ@�¼ð:[z|½m*¥%²€ÜÕÕ­òQ©_VVµHņjñ×Vˆ¿¡FÒ|ÁO:¾Ëëøâååï.JŸµ£§oµg7¯([ŠGÈØ1RÕ˜&€O2éõMä Ú†� °•¾[˜â7°Þ^ëÝý¶:zËK×JNk½Ì˜6^åK††»xŸÞܹÞ¢¦Ö²¯Û"}¦iq Ù}«öx7éƒUëjäÅ·×Ê»%u"»–Â, Ã>†<„d €�Ý øvG‰u<°Þ^Ó»Jƒ¯õôfûëä‡3v‘ÉÃr$7#U{5ãÿœË7V·ÊÈi’š’")šuS4ýú4ÞZìÕŽ[g²a÷±õæ¶êy&o÷ -­R”Ÿ!Y…9òÀ“Kå«eÕ2 ·ÐókÃëëéK’Â@�’D€à›$:–šYÙpNd³^ßæê2™²M®Œ-ÒÞÌ4K‚~iÖ³ÛlXƒ;TÜÞëË×Ô¤BÛ™šÒ*ãÝnï¯õìV”–HQñ m³ó°×× ¾"þVë¬ó²ÓeÄØ"YúE™”ê;Ðüúev€á) €�t)@ðí’ˆ¼¨Ó_»zCžÅ–ÚÚ, r$ç!¸¹9xÝ”¨;î~-ø†ŽõÕåëíŠxƒõµzÚÍ&»ß°¾D.úÉrùHÑ aÎ|ð`X3¯3Ü¡¥Õ'-z…‹~E¹R¹aã帩 €�D/@ðÞ¬}‹––I±²õÆÔ}&ýß.YÖ¨÷iÚÛ©—0H•Vñûƒ×1 ¶nòµyno¯íÉ?ñÄòÞ{ï9yêÔ©rôÑGKzzz{Ež|òI)-+uºSG-{íµ—ddd´/wX ÕÙ±üö•z¸¼ª©Ut,³mîöòÚP7þÞsãUR¶f•Üý×¹2û7:óàk¡WŸYømÑí5üZÏo 5Åñ27ócB�@�èb6øþç?ÿ‘AƒÉ®»î}«ºØâé§Ÿ–!C†È”)SºX³óÅßÿþ÷eï½÷– /¼0ìŠÖ†ÒR ^!“µgòäÉ!szç¡Wmö²¶^Ý7 ö&Â&  ÎM#£ÅD'•:÷ÿ©¬¬”SN9EV®\)ǼäååÉ_ÿúW¹á†äÞ{ï•aÆéÖ>™7ož444È„ äí·ß–ŠŠ y衇d÷Ýww–G*ßö‘k‚k٣Щ«åÕZ´gÖÚ’Òv• +ÕÞ"}öÞ«òÒã÷;Å-zæQÙíïËŽ{èŒïUg—-š|ýú¤F{Å^÷üCëÂc@�èž@Ìßk¯½Öé¡ÛÁwÁ‚N ÞÒàÛ±µ¡¾¾^vÙe—öU·Ùf›­|W¯^íôžŽ1¢}¿½Õæövó_3jjj †D·÷ÜðfeOþš;w®|ýõ×òÒK/IAA³Ö™gž)ßýîwå‚ .þóŸ–  xðÁËï~÷;g3fÈm·Ý&Ó¦Ms–G*ßY¹“ýwg¹ IhÔÞÙT'ôc²©¡Ö/¯?õ°LØy/§ûçõ§–ñÓö_JªÆì€öøÄ:u´ŒÊFýr½‰]Ø— @�¶H fƒïµª‹ÿö·¿u±†w‹:è ¹ì²Ë¼+°%Yø;v¬üñl_»7ÛܾÓn<pzDð['Ö뛚šêô[ÇçæÁTÇÆnØ ÿøÇ?ää“Ov†5Xhv' ¾W\q…|òÉ'2vÛmuœlpܰ»ÎàÁƒ¥¦¦ÆéŽT¾õªZ¶tù·Íé²¶¶EÒµ¬T½¬ƒ…^§­ÚªÃϹÚéùµz[ȵl\ÑlWuðk5ôêsëñµ/ò°“ÙÖèÉl’�Wºp÷ €�ô•@\v#­_¿^Î:ë,™4i’l·Ývò³ŸýLìãow²á?úÑdܸqb½|×\sXÏŸ;Ù¶wÜq‡ûT¬¼³Ï>[vØa5j”³»ÐãGá|\nClL©Ó‰'ž(>ø`{Q÷ß¿Sgw†ÕÑöýç?ÿYvÚi'9üðÃ7Ùw¤:ÿå/‘—_~YæÏŸ/Ó§O—§žzÊ)2\›;3ìjÿV¯HC<Ü6tçÞêà> ¾NïoKS³ŽÝmrÆïÚ}“Ý´WøóÏ?wò>{ï³ÙrÃkÓ§Ÿ~*¶½…X ¿ëÖ­•<(/¾ø¢Ø1´r"•o˼Xþµ~+Ýrý‚Ž¥U~ùrƒ_¾ÐÛ’Šù¼²E¾Ô›ÝÛmIeÛ2}¼T×ùªªU–é6¶í7z[­Á·ÞRxš~‡1 €�l‘@\ß3Î8CÖ®]+=ö˜<ú裲jÕ*±ºÝéÔSO•êêjyæ™gÄ>âÿðÃeÙ²eîbgýòòòöç§vš¼þúëb¡ñË/¿”[o½µ}ÙСCåÊ+¯”>úÈs|óÍ7·/ë΃uëÖÉ»ï¾ëܬ'ÒV¬X!UUUîS'¸Û˜Uw²6Y},Ä?ðÀξm«;Eª³ÙØV x .lñV^h›»2ìjÿûÆÝúôôÞíñµ{÷±S–3,À-U—éunm¹Óµiô˜Ñ!ÃoƒËí­ã´³­»ø®»îÒ¡ »É¹¿<Wìñ¡‡j›»“-P:ÓÆòmû¶Y›•o˺½\{±ývm^ÝÆ¯·Víé è<»×‹µ9÷v¡3»µ´=wÖ×ûužõuª§Ûdë‰mÚm¬ÿ"€� €@ân¨Ã7ß|#/¼ð‚Üwß}N/¬µÜB¯õðZp´Kb½öÚkNç˜1c;Ê‚m¸iùòåÎXÑË/¿\9äg•‰'¶¯j½½îdÒN ŠfzõÕWzÙ66æö–[néöæû쳺m«ÛÕW_ílÛYsss%33S²²²dàÀa÷Õ•áðáÃí"íßZo²“õøºÒîÝçNÙú¼}j{h=ò6½õÖ[²­ghŸtyéºR§—×Öqª ‰˜={¶sÌ1òì³ÏŠöö)LùîvÎ:[°|°ŽÉÍÑ/ãpFíZ»´ÀT½wm[[¬x{œlü²Ý,,ÛP‡TÉÐät´ƒ_ŸÔ$À·Ù¹-å@�¾ˆ»àûí·ß:V;ï¼s»™]ÊÊ&ëEuƒ‹;¯}¥Ü^V÷còŽ«ÙP;I͵MÑžYÜqÇõxŒoh°³Ëp¹ûîªÎÛÐñyW†nð´ÿŽåmÉs;^v³Àkã{Ýçîq -ÛÚou²±ºöæÆÞì„Nl-øÛI‹nYö&À®bÇð‡?ü¡Ó~à¶¿NB·w}m^¤ý»ëwµ|€ßt¯ÜB[Ö¶i@þÃ)²æ³ÅúÜbmŠž(Ç]>_“qš3Þׯ³[­Ò¤£ZÔ&Kƒ/CÚø¸C�@` âîóS =6}ñÅíÍþì³ÏœÇ6,Á±õvºólAYYYûºØUl²á'»rÀ¬Y³äâ‹/vz™mx€—“{ÝZ+3tBWûè¬Î]mkË»2ìN^­c×niiiao`Ý›]£×Žío~óyî¹çÄzÓÝe|ðsI3«]\\ì”å†h[Ç.;gC`Î;ï<gL·»?w{»·òÝùî}O—ÐÞ^ëñÍÕ±¹yéi’›©[º|çÔ‹¥¥f½4UWè­\9íbÉÏΔ¼Œ4ÝF×uîÓ%׳öôf9CãëÕkŽr@�’W îz|­ÇÏNö²“·ì2am؃ÞÑ£G;=up€üþ÷¿wNzûꫯœ/:°�n²áö‘¾ÿ´ò¬lÛÆæ»Ù—””8'…ŽË W^wçÙ‰w¶íd®‡~Ø9ÙÎý¿«2:«³…H[nãš#M]FÚ.t¾™¶“ÀB‡…„.ïîc;.nø }Ú£ÚkÿçþÇ ©6„Á.gfÛÛ±úõ¯í„[{zÝ/µ°Ëš=ÿüóòË_þÒ9±ÐÝGÇòÝmÝ6ôdyAFºöø¦µ_Ñ!E{nm²Çl·“ìwò¹òò=×ÊîÇž*ã§îáÌw.e¦Cô‚ҪݾÍmÃ,�s93‡@�Ø"˜îñ½ñÆqª6VÕnv¹* 5vE†¥K—ÊŽ;îèÜ죻‚dì¤0»Úƒ­gCì ÙÙÙ¡ìÚ®EEEb[ =öØcíl« µçž{:‘ÛpÛ¿X¶¥Óé§ŸîŒ;¶j'¡sÎ9Q©ÎVÈI'$v-_ ñv%ƒŽSw ;nÓñ¹íß.¶¥“Û£jáÔ†sØÐ»ts—[—ëøl;Áñßÿþ·3ÌÅ®îa=Âî¶Öv»æ¯ûÜB²]•ã‘G‰¸·|w›Ž÷Ý]^ ½»9™~³´çÖ¹×Þܬà-7+U¾wêù2rò49â¬K$WçgÛ2[Oo¹ºMNV†öüfHž>ÏÖ!…Ú{Ì„� €�[&`P§éÇìž\ØÖ†ØÇðö1±­=Ù%½,8õëׯÓ]ÙÉo¶®]ᡳɮ`¡°cy¶maa¡³¬®®Î)"''§³¢ºµÌz«íº²÷×­ÛVŠTg[lW¾°ñ­Ö¦HSw #mß“ùŸ•·Èûk›dñê)h©=GȾJ~N–s<­¾î›˜ÐòC{^c}ù¹ogÈ=·Ð>h0~½”¯¶)x³ÚìqC]ƒdi›í¹{³Þ^{lßÞl_bQ£—3ûxy™”­+‘aý³dçaY2uH†l7 î>¬ =”<F�@ KËHv•©-ýtÙÝÑ€N÷ô¯g¸0âîlkÜ÷ïß?l±×_½sÙ+ûjàW^yÅéQµá]MÖën Ý×ÝGwB»»n¤ûHu¶õík™»šBÛÖÕº^-·q«y)Ú£™*¥eÕRÛœ/þíÙÔ^ùÎBºë$-â�� �IDATWûïrоY ^ç¼zÛvìŒzÐ'…ý4ôê<=-xoËíÄ6½µhðµðkÃRt…ŒÆ2õ帙 €�É àu¶ô4øÆÊ°¯9^´h‘s™2ëñ|òÉ'3ýc¥~É^Â,Ÿ ÈN‘Ay©²Z2å³5Õ2rH“^‘! ãb’aW1ˆóiøP ¶ú¡€Ïz{í¦í±:µ ûu8Xº=¿MúuÅ ú%ue ÒZ]êŒi6/s3?&@�ˆ^ !ƒ¯Áo7¦ØÈÖËA9)2¼ MÖ(Ÿ-[ê EY1y”Œµd%ÀxVû"å5~½ YÏÆæ65úeõòYòé2©©k”QcÆ9^æf~L €� ½@BßèØ¢7¬G·87EjôBµŹúÑþXY½¶Dþýúç"/-Ööõ3þ$ŸZ}˜Ó³%5·HFè›mÕiD~ªã–=âI~xi> €@ |û>Ùwk½–Ãòí$¶4)È,¡E9²ªbˆÔ6ù¥YǸ&Âdã’BOÈ‹¦Mv3½MQ–:¥É˜ÂTšGoo4†¬‹� €@G‚oGž÷Š€õZf¥H¦`»Ní ÜTÑ/]{õúµtøŠ^ÁÌ9‘Í ­Ã¬‡ÜÞ,ÐÛÛ+/Ov‚�  ß=°ñÐ, qv³@gÁ®²! u-i²ëx%ù”‘üÖ6;‘À›ä/š� à™�Á×3J ê©€€ûeö´¶C�@�º°«,1!€� €� ðß„?Ä4@�@À¾¼@�@�’B€à›‡™F"€� €�|y €� €�$…�Á7)3D�@� øò@�@�H ‚oRf‰� €� @ðå5€� €� žß@ h4@�@`ë x-=ýÊbŸÏשÀG}Ôér"€� €�$ŸÀŽ;î¶Ñ]e˰u2ÓÓßNöÃ"@�@�úT€àÛ§üì@�@ ·¾½%Í~@�@�úT€àÛ§üì@�@ ·¾½%Í~@�@�úT€àÛ§üì@�@ ·¾½%Í~@�@�úT€àÛ§üì@�@ ·¾½%Í~@�@�úT€àÛ§üì@�@ ·¾½%Í~@�@�úT€àÛ§üì@�@ ·¾½%Í~@�@�úT€àÛ§üì@�@ ·¾½%Í~@�@�úT€àÛ§üì@�@ ·< ¾@ ·êÍ~@�@�\Àëléiðõù| ÎOó@�@�zKÀëléiðí-öƒ� €� €@´ßhÅX@�@ .¾qyب4 €� €@´ßhÅX@�@ .¾qyب4 €� €@´ßhÅX@�@ .¾qyب4 €� €@´ßhÅX@�@ .¾qyب4 €� €@´ßhÅX@�@ .¾qyب4 €� €@´ßhÅX@�@ .¾qyب4 €� €@´ßhÅX@�@ .¾qyب4 €� €@´ßhÅX@�@ .< ¾@ .¨4 €� €@ì x-= ¾>Ÿ/öĨ €� €@\ x-= ¾q)J¥@�@�’B€à›‡™F"€� €�|y €� €�$…�Á7)3D�@� øò@�@�H ‚oRf‰� €� @ðå5€� €� ߤ8Ì4@�@€àËk�@�@ )¾Iq˜i$ €� €�Á—×� €� €@R|“â0ÓH@�@�‚/¯@�@�¤ ø&Åa¦‘ €� €�_^ €� €�I!@ðMŠÃL#@�@�< ¾@�Q@�@�<ð:[z|}>Ÿ'¤@�@�¼Î–ž_ €� €�±*@ðÕ#C½@�@�< øzÊIa €� €�±*@ðÕ#C½@�@�< øzÊIa €� €�±*@ðÕ#C½@�@�< øzÊIa €� €�±*@ðÕ#C½@�@�< øzÊIa €� €�±*@ðÕ#C½@�@�< øzÊIa €� €�±*@ðÕ#C½@�@�< øzÊIa €� €�±*@ðÕ#C½@�@�< øzÊIa €� €�±*@ðÕ#C½@�@�<ð4øO+Ga €� €�É+àu¶ô4øú|¾ä=2´@�@ÀS¯³¥§Á×Ó–R €� €� |=Ĥ(@�@�Ø øÆî±¡f €� €� |=Ĥ(@�@�Ø øÆî±¡f €� €� |=Ĥ(@�@�Ø øÆî±¡f €� €� |=Ĥ(@�@�Ø øÆî±¡f €� €� |=Ĥ(@�@�Ø øÆî±¡f €� €� |=Ĥ(@�@�Ø øÆî±¡f €� €� |=Ĥ(@�@�Ø øÆî±¡f €� €� |=Ĥ(@�@�Øð4øØm)5C�@�ˆ+¯³¥§Á×çóÅ&•E�@�ˆ]¯³¥§Á7vÙ¨ €� €@² |“ý@û@�@�$ ø&ɦ™ €� €@² |“ý@û@�@�$ ø&ɦ™ €� €@² |“ý@û@�@�$ ø&ɦ™ €� €@² |“ý@û@�@�$ ø&ɦ™ €� €@² |“ý@û@�@�$ ø&ɦ™ €� €@² |“ý@û@�@�$ ø&ɦ™ €� €@² |“ý@û@�@�$ ø&ɦ™ €� €@² |“ý@û@�@�$ð4ø$a£™ €� €�[[Àëléiðõù|[»ý”� €� $^gKOƒo’š‰� €� ‡ß8<hT@�@ z‚oôfl� €� ‡ß8<hT@�@ z‚oôfl� €� ‡ß8<hT@�@ z‚oôfl� €� ‡ß8<hT@�@ z‚oôfl� €� ‡ß8<hT@�@ z‚oôfl� €� ‡ß8<hT@�@ z‚oôfl� €� ‡ß8<hT@�@ z‚oôfl� €� ‡ß8<hT@�@ zOƒo ˆ¾l� €� €@¯³¥§Á×çó…©2³@�@�ˆ^Àëléið¾9l� €� €@ï|{Ç™½ €� €�ô±�Á·�»G�@�è‚oï8³@�@�> øöñ`÷ €� €�½#@ðígö‚� €� ÐÇß>>�ì@�@ w¾½ãÌ^@�@�úX€àÛÇ€Ý#€� €�ôŽ�Á·wœÙ  €� €@ |ûø�°{@�@�Þ øöŽ3{A�@�èc‚o�v� €� Ð;ßÞqf/ €� €�},@ðíãÀî@�@�zG€àÛ;Îì@�@ < ¾@ ›Ãî@�@�EÀëléiðõù|‰âL;@�@�úXÀëléiðícv� €� €@D‚oD €� €�$’�Á7‘Ž&mA�@�ˆ(@ðHÃ@�@�D ø&ÒѤ- €� €�¾iX€� €� HßD:š´@�@ ¢�Á7" @�@�I€à›HG“¶ €� €�D øF¤a €� €@" |éhÒ@�@�ˆ߈4,@�@�H$‚o"MÚ‚� €� Q€à‘† €� €�‰$@ðM¤£I[@�@�" |#Ò°�@�@ ‘< ¾@ ‘lh  €� €@ x-= ¾>Ÿ¯iØ5 €� €@" x-= ¾‰M[@�@�K€à›XÇ“Ö €� €�D øF€a6 €� €@b |ëxÒ@�@�ß0ÌF�@�H,‚obOZƒ� €� A€à†Ù €� €�‰%@ðM¬ãIk@�@�"|#À0@�@ ±¾‰u<i  €� €@‚of#€� €�$–�Á7±Ž'­A�@�ˆ @ð�Ãl@�@�Ä ø&Öñ¤5 €� €�¾`˜� €� XßÄ:ž´@�@ ‚€§Á7DØ ³@�@�ˆNÀëléiðõù|ѵ†µ@�@�ˆ àu¶ô4øF¨3³@�@�ès‚oŸ*€� €� ÐßÞPf €� €�}.@ðíóC@@�@�zC€àÛÊì@�@ Ï¾}~¨� €� €@o|{C™} €� €�ô¹�Á·Ï@�@�è ‚oo(³@�@�> øöù!  €� €�½!@ðí eö� €� Ðçß>?T�@�@ 7¾½¡Ì>@�@�ú\€àÛ燀 €� €�ô†�Á·7”Ù €� €@Ÿ |ûüP@�@�Þð4øÞ¨3û@�@�H¯³¥§Á×çó%Á! ‰ €� €�½!àu¶ô4øö�û@�@�@ 'ßž¨±  €� €@Ü |ãîQa@�@�ž|{¢Æ6 €� €�q'@ð»CF…@�@�z"@ðí‰Û €� €�Ä�Á7îF�@�è‰�Á·'jlƒ� €� w߸;dT@�@ 'ßž¨±  €� €@Ü |ãîQa@�@�ž|{¢Æ6 €� €�q'@ð»CF…@�@�z"@ðí‰Û €� €�Ä�Á7îF�@�è‰�Á·'jlƒ� €� wžß@ w�T@�@ 6¼Î–ž_ŸÏ›jÔ @�@ î¼Î–ž߸Ӥ €� €�I#@ðMšCMC@�@�ä ø&÷ñ§õ €� €@Ò|“æPÓP@�@ ¹¾É}üi= €� 4ߤ9Ô4@�Hn‚orZ� €�$�Á7i5 E�@�’[€à›ÜÇŸÖ#€� €�I#@ðMšCMC@�@�ä ø&÷ñ§õ €� €@Ò|“æPÓP@�@ ¹¾É}üi= €� 4ߤ9Ô4@�Hn‚orZ� €�$�Á7i5 E�@�’[ÀÓà’[“Ö#€� €�x&àu¶ô4øú|>ÏJA €� €�É-àu¶ô4ø&÷¡¡õ €� €�±,@ðå£CÝ@�@�< øzFIA €� €�±,@ðå£CÝ@�@�< øzFIA €� €�±,@ðå£CÝ@�@�< øzFIA €� €�±,@ðå£CÝ@�@�< øzFIA €� €�±,@ðå£CÝ@�@�< øzFIA €� €�±,@ðå£CÝ@�@�< øzFIA €� €�±,@ðå£CÝ@�@�< øzFIA €� €�±,@ðå£CÝ@�@�<ð4øÏ*FA €� €�É-àu¶ô4øú|¾ä>:´@�@À3¯³¥§Á׳VR €� €� |=¥8@�@�Ø øÆæq¡V €� €� |=¥8@�@�Ø øÆæq¡V €� €� |=¥8@�@�Ø øÆæq¡V €� €� |=¥8@�@�Ø øÆæq¡V €� €� |=¥8@�@�Ø øÆæq¡V €� €� |=¥8@�@�Ø øÆæq¡V €� €� |=¥8@�@�Ø øÆæq¡V €� €� |=¥8@�@�Øð4øØl%µB�@�ˆ;¯³¥§Á×çóÅ(F�@�ˆM¯³¥§Á76ɨ €� €�"_^ €� €�I!@ðMŠÃL#@�@�¾¼@�@�’B€à›‡™F"€� €�|y €� €�$…�Á7)3D�@� øò@�@�H ‚oRf‰� €� @ðå5€� €� ߤ8Ì4@�@€àËk�@�@ )¾Iq˜i$ €� €�Á—×� €� €@R|“â0ÓH@�@�‚/¯@�@�¤ð4ø¤@£‘ €� €�[_Àëléiðõù|[_€= €� €�$…€×ÙÒÓà›G€F"€� €�Ä¥�Á7.•F�@�ˆV€à­ë#€� €�Ä¥�Á7.•F�@�ˆV€à­ë#€� €�Ä¥�Á7.•F�@�ˆV€à­ë#€� €�Ä¥�Á7.•F�@�ˆV€à­ë#€� €�Ä¥�Á7.•F�@�ˆV€à­ë#€� €�Ä¥�Á7.•F�@�ˆV€à­ë#€� €�Ä¥�Á7.•F�@�ˆV€à­ë#€� €�Ä¥�Á7.•F�@�ˆVÀÓà¢Ý?ë#€� €� VÀëléiðõù|a+ÍL@�@�¢ð:[z|£m ë#€� €� Ð[ßÞ’f? €� €�}*@ðíS~vŽ� €� Ð[ßÞ’f? €� €�}*@ðíS~vŽ� €� Ð[ßÞ’f? €� €�}*@ðíS~vŽ� €� Ð[ßÞ’f? €� €�}*@ðíS~vŽ� €� Ð[ßÞ’f? €� €�}*@ðíS~vŽ� €� Ð[ßÞ’f? €� €�}*@ðíS~vŽ� €� Ð[ßÞ’f? €� €�}*@ðíS~vŽ� €� Ð[ßÞ’f? €� €�}*àið }ÚvŽ� €� 8^gKOƒ¯ÏçKiZ‚� €� Ч^gKOƒoŸÊ°s@�@�: øv‚Ã"@�@�Ä ø&α¤% €� €�|;Áa €� €@â|çXÒ@�@�N¾à°@�@ q¾‰s,i  €� €@'ßNpX„� €� 8ßÄ9–´@�@ ‚o'8,B�@�H‚oâKZ‚� €� Љ�Á·!€� €�$Ž�Á7qŽ%-A�@�èD€àÛ ‹@�@�G€à›8Ç’– €� €�t"@ðí‡E €� €�‰#àið ‰#CK@�@�úTÀëléiðõù|}ŠÃÎ@�@�GÀëléiðMfZ‚� €� hßD;¢´@�@ ¬�Á7, 3@�@�M€à›hG”ö €� €�„ ø†ea& €� €@¢ |íˆÒ@�@�°ß°,ÌD�@�H4‚o¢QÚƒ� €� V€à–…™ €� €�‰&@ðM´#J{@�@� |ò0@�@ Ѿ‰vDi €� €@X‚oXf"€� €�$š�Á7ÑŽ(íA�@�+@ð ËÂL@�@�D ø&Ú¥= €� €�a< ¾@ ìN˜‰� €� €@´^gKOƒ¯Ïç‹¶=¬� €� €@X¯³¥§Á7l™‰� €� €@ |cà P@�@�­/@ðÝúÆì@�@ ¾1p¨ €� €ÀÖ øn}cö€� €� ß8T@�@`ë |·¾1{@�@àÿÛ»)оãÿÙ]DADyð^¼¯E_ð ˆh¼ðH¼@Áã‰$*`äy|^ãcT¢OŒà…·ÄxÕxÆ[£‚J”(**j<APeÞþÕRC³,»Û3=»S3ß"M÷twuW}ª7óŸšê@ |K ( €� €@ñ|‹oÌ@�@�J@€À·" €� €�_€À·øÆœ@�@ |K ( €� €@ñ|‹oÌ@�@�J@€À·" €� €�_€À·øÆœ@�@ |K ( €� €@ñR |³ÙlñKÌ@�@�*B íØ2ÕÀ7“ÉTD#PI@�@�â ¤[¦ø¿úœ@�@�ü|ós# 씥Á��«IDAT€� €@`¾5ÅE�@�ÈO€À7?7r!€� €�&@àXƒQ\@�@�ü|ós# €� €@`¾5ÅE�@�ÈO€À7?7r!€� €�&@àXƒQ\@�@�ü|ós# €� €@`¾5ÅE�@�ÈO€À7?7r!€� €�&@àXƒQ\@�@�ü|ós# €� €@`¾5ÅE�@�ÈO€À7?7r!€� €�&jà›Íf«>ÅE�@�(U´cËTßL&Sªn” @�@ 0´cËTßÀ,). €� €@ øVPcSU@�@ ’|+¹õ©; €� PA¾ÔØT@�¨dßJn}êŽ� €�T�o56UE�@�*Y€À·’[Ÿº#€� €�$@à[AMU@�@�J ð­äÖ§î €� €@ øVPcSU@�@ ’|+¹õ©; €� PA¾ÔØT@�¨dßJn}êŽ� €�T�o56UE�@�*Y ¦-+_WW×–§ã\ €� €�äèñÍQ°€� €� PξåÜºÔ @�@ 'zà›Ífsg@�@�|ŠS¦øvìØÑV­Z•OÝȃ� €� €@N@1¥bË4Sª7·uïÞÝ–.]jUUUV__o™L&Ͳr,@�@�2PO¯‚ÞåË—›bË4Sªo×®]­ººÚ–-[æ¦4 ʱ@�@�*C ¦¦Æºuëf;wNµÂ©¾*™ ˜v!S­1C�@�¨HTÇøV¤ •F�@�B€À7ˆf¢ €� €�… ø*H~@�@� |ƒh& ‰� €� P¨�o¡‚äG�@�B€À7ˆf¢ €� €�… ø*H~@�@� |ƒh& ‰� €� P¨�o¡‚äG�@�B€À7ˆf¢ €� €�… ø*H~@�@� |ƒh& ‰� €� P¨�o¡‚äG�@�B€À7ˆf¢ €� €�… ø*H~@�@� |ƒh& ‰� €� P¨�o¡‚äG�@�B€À7ˆf¢ €� €�… ø*H~@�@� |ƒh& ‰� €� P¨�o¡‚äG�@�B€À7ˆf¢ €� €�… ø*H~@�@� j‚(%…D�@ eU«VÙÇlsçεÏ?ÿÜ–.]j«W¯v“?U6›u‹™LƯ2¿.·"Zh¯íþ¼šgª3Ö¡ºƒuíÚÕjkk­®®ÎöÚk/«©iß·úP1m¸Âý5¦Wi]ûþ˜ía¬¿äÑ?ÿüóªÇÿ €�”·€Þ¼?úè#›9s¦uîÜÙ dû[Þh£‚®üÊ•+í?þpõ{饗ì·ß~³c=ÖÁ>Øh« –‹3¦Å¿bÚʸGc|‹ßžœ@ DêëëmÖ¬YöÞ{ïÙ%—\b½{÷^§·¶DŠYP1|¯œz¯¿þúk»ñÆmÿý÷·áÇ[uuuAÇnmærsÆ´µ-Ÿÿ~maLà›û@ 0‚ z5¼áâ‹/¶-¶ØÂªªª¢ÀW_áV™ 7ªG6ú§¤@Bè?ü`·Þz«õéÓdž æê¼¡ìi¬/;gLÓ¸,š?F+ðmß?Í3°@�Tj,¯¦#Fئ›nêÆòú^¦TN’ÂA4VÁ¸¦Ö& ah\½öS—.]íä“O¶Ç{̶Ýv[ÛgŸ}ŠÖË­s†àÜ’m%šæsíµäØÜöö2&ðm®U؆� PË—/·çŸÞ `[öè±ÎMlM}â·5)·àW¸Tõkè@Ïž=sëÓX:t¨zè¡vå•W¶êp Áƒn®kؽq�¬Þ×lvµuéÒÅú÷ïo/¿ü²í²Ë.n<s«Np§4›:µê÷ÔSO¹¡*ª±ÙÇwœuèÐ!·ûÓO?mµµµ¶÷Þ{çÖ=üðÃîõž{î™[·¡…r5•Ýœ9sìƒ>p×ð;ì`;vØaî†È¤×Þ†üZ³¾=[ÿ‘²55a@�JL@Áß'Ÿ|b›o¾¹m¿ýö–¢Ä+V¸a�ÚÖÔ¤`±aZÛsªÀAÓÔ©SmìØ±vçwæzUý¶Bçž®µÇñ­¯ƒÏ§×õ«ë]Ý *ÐPooôU¯ÍŸ?ß­÷çJk®s¦éìëâç¿þú«}ôÑvõÕWÛÆoìÚóæ›o¶ÁƒÛ7ß|“k‹n¸Áž}öÙÜë)S¦˜Ö¹¶_Ó†þ˜MÍËÑ4zˆuÔQnˆÏ_ýeú�ðý÷ßÛµ×^kï¿ÿ¾³ò×AS&i¯kOcz|}K3G�(K¿ÿþÛ>ýôSø(`ÒX­Ó›¯žâP£¾¢Àpݤ ·aœl|}}4áž{î±wÞÙÍ/¿üòu†%è(ë÷¯=BKÛ`h\®‚Õ¦Rãü h•ª¢yü¼:޾ºV£c馶Ž;ÚvÛmg ,p9Ûd“Mš:EÞëÒtn\OjÒ¤Iî±s¯¾úªm=²Mõ=÷ÜsM=•—]v™Ýwß}®ìªûê5† €o¹å{î¹ç\[{צŽï2Gÿ•£é„ láÂ…¦'}hl»O |å%—¤×ž?†Ÿ7gª}âÛÛÓ˜À×·s@�²øóÏ?Ý3z5¶UÏ´­®©Îõ„*8Ô›p¦*ã‚Ǩ;ØDao4oø?‡­šós\`úŸ[þcÇ ·Ùsf»¯Š×dr=j}öéc‹¾^”{\Ú„‰ìÈ#t±nªkn»ziW®ZiËÿ\n—^z©õúG/»bü EˆÎ?ùŸ“]Oç\[§ÂÕ!Ó¬¯Žz«U|2Ù(¸×6¾ªû–[né_™¤ø¦é좤¼Ù’%KlÚ´ivÆg¸z,‹||:l¨ýëŸÿ²yͳvÚɵϊÈpî¼¹vÞyçÙwÜa=ÿÑÓ™º<jÚ†fö‡Xw®íedúûï¿»iÿþß[§ÎÖ:ÄkÕ9~íi“zØ'Mœä†Çè8h ]sÍ5¶Ùf›¹œï¾û®M¹qŠ}øá‡nÌü¬Ù³rAµz˜Ç_1Þ^{í5wÍ]wÝuÖ@ÿµglGc†:¬m–@�ÊP@=‘º™MoØ �u㘟ûɪ2z;Œ¢!Dš)ŽÖi}nŠò=pÿvÊ)§XßÿéëÆ—Îx`Æ:Û¿ûî;›zûT7¬à¡‡²ƒ>ØÆ]6. @³î¼-mÎêþéœúpÁÞÊ+Ý9ô|ÞéÓ¦ÛÇäΩzTW7<™BW¹•·¡üѲÛÞPg¾ë«gË$픦sÎ|ÿŸáz° äãÛ6ØUeÁg ru_òû5r”7ΙŽïïÚ<Þ®–ËÍtá ݽ~}ûå®›u<TÿèÚŽ_{Ú~ằÀº)òÑGµÅß-¶±ŽÍcòµ“mÈ!nèÌO<aÝ»uÏmÓ~Ý»w·wÞyÇFmêqŽŸ³= |ÓþËçx €�%# ^Oõêê×Ìt”ëñ¿ oÀÕ =¾Ñ›.nbyñâÅî«âÓN;Ííwúé§»±¤¿üòK.Ÿ*~â‰'ºžFýjÚĉ]Ï™zÅtìÖlwÁk´ï1ÇãzmgÏžíò*�Ñ15>Ó—3àÆÊ«:ÕD½ÚñºjY“ ô!@&²I+¥éì럫÷QI=ºñõZÞc=\ ïÛAûé9Í_}õU“û7Îßøu¹™z;qo\×øk¹ùkOc¦u#ä9çœc»í¶››ÆŒc/¼ð‚éï@ùt=½øâ‹îµn”ÓP­_´h‘½òÊ+vÄGØ?þhýúõ³Ï>ûÌ~úé§ÜùÛÓ˜ÀW-MB�([÷•äi££Wp¨e?¯©Ž†@¬éÝÐüÁtAã]wÝeW]uUîÉê óyô†®qÄþµÆSjRà«u­ÙîË¥�õøã·3f¸¼Ó§O·‘#GæŽíÏáç>Ÿ^WU5ÔϯÓ\“Ú‘fÐë/œ´œ}}âóÞ½{»Ó¼ýöÛëÕ__«ëÜÚGyd¬ KOÆPo£žÛ?V’eï§<¡š*(UúöÛo›u›¯¯öUêÛ·o.–•üqn¿ývç~àÚäɓݵ%'}«¡tÛm·¹wý­ì·ß~îƒHSöþœmeÌ_×<ü‡� P®zCÕQ=jKO5ЭŸü›½'-+ù P¯ý²n8ÓÍSæ Çù¤;ãµþ¢‹.r«”ÇS+”©§k›m¶qçLº]cZõu²Ç¥¢8á„Üqüùu¼xòåÕ:-kÒM|Jª³ÆáêgŒe’vJÃÙ—IõŠ×E7öêÕËõ¸Ÿyæ™ÎØo×#º4|C6S•”_ã©Õë«gë&7�úí>¿Ëû¯ÜLe§ÞÞGyÄ=Ò.VÕuUoM2Üj«­Ü6õÔúeÝ ª¤×ÚGž?þ¸½þúë62ú@¦§fœ}öÙîJí7~üøµãߣ×:¶7oOc_µ @ ,ô«'7hüiS=¾ÚÞøM¸)=XÇPÏ–Žç“¾ÆÕsPÕ©ñ¼Jo½õ–i<®zlï¿ÿ~t(xõÁfKÛU¿¯zÊ4´AcU\´tCšòúàBsM¾Ž ÞÕã«àWuhM½}=[šëXi8oè<òÐUú™é—¢'~øánWÝ`uýõ×›ž®¡÷”|}•禛nr=”~¢';(�Lšt¼M;uêä'£]wÝÕÎ?ÿ|w}é‘>(0Ö¤¤ºÊMû郄¾m8à€Ü ƒº–Õë«}µŸ^m;äC¬¶¶Ö)¯¶8Ðô¨9 “ГDô¡SçÓßDS©- |›jÖ!€�”€Æn½õÖ¦1  HÕë«7hMzÃÕÔRÒ0íUOz㯫«³{ï½×ÝD¥ci¨ƒ3½Ù+XÖ¶nݺ¹l­Ù®Þ4ŸôiÔ¨Q.°ÓËøz¿}Csø*àð¯z{e!“´SÎÍ•Iþª¿zýŠCª§ÌùvÔ\m«}5)`ÓõÖ?óÌ3-~xh® ¡šj¬®®K ÿЇ7=ÓY×§~ÆZO\“Üâמ®ù³Î:Ë¡Ö5¤`Ó¢'kø Ñ·ú6C×¶ÆYk_Géî»ïvm¢'©¨gXwú;PÜR*¶ñÚ¿¬–JÂv@�P°ª›¢ôh®7q½Áûà×WÉN¾wϯ×\_én(©×Ñ'C½´3gÎt? ¯çýqµOKÛÕ³Ü8)hUÀ Û’$ÕCuõI?ÚñÆoذaÃÖ àý>…ÌÓpnéü ~O=õT÷LZÕ¯w4®WmOz„V<)0‹·Q|[ÒåM˜jÒÝ¥K—ºÞØøµÙøÚÛ}÷Ý]¯®†ëèoÅxóf;­ã(éi!ñ¤¡=O>ù¤ x`'ù…ÃbøÆ[Še@�²Л¶Pý<«žpÒI'ån@SUãÀ©�P«÷3>¦Ô³¥í~??WЫ›„Ô+bá·77WÐë' oÐOù*P”…LÒNm鬠¬=’÷Ô<TS]I’ãÛT}{Ò\ÒÐ’¤ÃKŠm¼îǤæJÏ6@�P¯–z¤4Wã\u£˜~ÑLëÓ zE£›Ñ4¾qC©¥íóéy u1bDãM-¾VÝ4i¸…ÆjjŒ³ dïékñ@­Ü¡-[Y¤ÔwÃ4uÒõXlc lucÿw½3³@�2P�¨ŸmÕ³Hõ„¡ºG=• ÚŠ ¶Ÿ¾*öÓܹsݸLÝø5xð`×ë´ç8iÊÑÙ{jŽiÒ+¢uû·…qÔC=†À·uíÁ^ €� èUã\Õ‹úæ›oÚ¼yóÜM^ºS]OdÐЄbÜôÕ–l :õºã^?â ×ºùî ƒ*ÚMmëWnΘ6náô_·•1oúmÇ@�J\@ãfõtˆóçÏ·/¿üÒýºš†(h 9©×ZwÝëçbkkkÝÝözœ”nLòwÜ·UýÊÅÓâ_1meLà[ü¶ä  €�%(à{%uǹ&ýÀŲeËÜàPƒ_¶¡sÐO4ë) šÒ~fo’æ ÝÓ$­ß¾miLà›_‘ @ Œœé¦7M¡½¾9|áÇ-ûõ¥0ÕÓâ_=me¬À—Ç™¿=9 €@ èMWÃ�Úz(@ “¥h8§ÏŠirSg–ÜŒ €� €� øØh@�@ ¹�or3r €� €�(@à`£Qd@�@�ä¾ÉÍÈ� €�  �o€F‘@�@�’ ø&7# €� €@€¾6EF�@�H.@à›ÜŒ €� €� øØh@�@ ¹�or3r €� €�(@à`£Qd@�@�ä¾ÉÍÈ� €�  �o€F‘@�@�’ ø&7# €� €@€¾6EF�@�H.@à›ÜŒ €� €� (ðÍXnŠŒ� €� €@,=¾I¸Ø@�@ Xß`›Ž‚#€� €�$`¨C-öE�@�U€¡¡¶åF�@�H&@o2/öF�@�S€ß0ÛR#€� €�$ Ç7©û#€� €�„(àz|yŽoˆMG™@�@�’ø&Ñb_@�@�`²™¨è§GSulÒð?ùõz­}ýz?×:MÚOÉ¿ös¿.>×2 @�@�/àG ÄçZö“ö«½^-Ç'í§×ÚGS|›_W_mXM>õs²Zös²~›æ>ØÕ\ɯó¯Ÿ7lmøßï_Ç2 €� €�>àõ>àÏÌ*i‚ã®Öûà7>Ïí£ÀW/”jg¥¦N ÀÖ¯×þzíó)o|Ù½>Ðõóh7 €� €�ë ÄãPmôqgssÅŸñízÝx]üX«ÿ";³šÇP+����IEND®B`‚���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/MD5�����������������������������������������������������������������������������������������0000644�0001762�0000144�00000017432�13455351453�012143� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������05414c62e06db0941e4e46bcbcf40702 *DESCRIPTION 9784bbd31ff5e76e9a8013fb1718d14d *NAMESPACE 57679970d38c17ac9c95478b9313aed0 *R/attractorsToLaTeX.R 0e037f01fa88a832cb43d3a9d5e9f5dd *R/binarizeTimeSeries.R 7b9f3b1500dd64c40cd4e9e2baa369ad *R/chooseNetwork.R 7c81eb3530ee3fede7742d9729de77c1 *R/edgeDetector.R c7fb28f26b946db5f54730be6d492516 *R/fixGenes.R b96b8b67effb0c2d55a29cc6f19323bd *R/generateRandomNKNetwork.R 9597332899ac07b3145917fafc789d15 *R/generateRandomStartStates.R 2c872695c4fa33c90c6de2431f19e689 *R/generateState.R 5650d6d8b6da147a254e9681a291a90b *R/generateTimeSeries.R 4db8f585d2e3477db95a8db2720a2e4c *R/getAttractorSequence.R 140740c1ba1d08eea3e27e9da3637f48 *R/getAttractors.R 08764b48eccb7812f9c333c122d1e689 *R/getBasinOfAttraction.R cc663c2b39dc50cd45bbb83d7cd36d44 *R/getPathToAttractor.R 9637fc5badfec905a1d865d5e65d3839 *R/getStateSummary.R a45f67785e1846f8482c9ff10debd95c *R/getTransitionProbabilities.R d31c9950c1a42c23eb5585c23e98bb25 *R/getTransitionTable.R 553c3f023784f01d73c69c469d14ea53 *R/helpers.R 8e0fdeac893b8bfc8837c9d94e9ed1f9 *R/loadBioTapestry.R f1e4da50ef5dd5ea083b8fcd060b3f77 *R/loadNetwork.R aa19fa3aaa70362a5d5d18bb114c245c *R/loadSBML.R 817f7c8476aa6b32443be62885e3c72d *R/markovSimulation.R d3dc1ab8d227e4775adfaee9973732e9 *R/parseBooleanFunction.R 75a4ff7284740122216a79cd7f9508e1 *R/perturbNetwork.R 6e8d3d79095844cf1fb6cb7c75750cfe *R/perturbTrajectories.R b3c6b0765a241bb1d4e4a150f47d3d8b *R/plotAttractors.R 20fd67145509cae5e9701fcfa93e210c *R/plotNetworkWiring.R 9f64811ec997a7aa2fc262725ae6f7e5 *R/plotPBNTransitions.R 6404119c6511b8c5741721d6cd237276 *R/plotSequence.R 3e92ac93c5ce1934d542b3eb7985aa44 *R/plotStateGraph.R 1d3e5b86636a5b54035d7062285e34e4 *R/print.AttractorInfo.R bd5b5182c9a4321e0051be7f40bcbf6f *R/print.BooleanNetwork.R 09ac08c8cb2ef098c96a86de93e5ad7c *R/print.BooleanStateInfo.R b4ce1c3d7c29f9b9d92a5428ace77b0a *R/print.MarkovSimulation.R 55d7e998f889cf528bef3d68edb38562 *R/print.ProbabilisticBooleanNetwork.R 2a6921108f7704c4949bcd96b82a2cb0 *R/print.SymbolicBooleanNetwork.R 1138169d9ef31f04670bbc2544524e4c *R/print.SymbolicSimulation.R 0adfd6c034e0bf75c16d351c4f2e52f6 *R/print.TransitionTable.R 78216cfe9045ded3a90b43edb6e0d21f *R/reconstructNetwork.R 00623749adde58c327566c72a67d4027 *R/saveNetwork.R 8db261cf9b75f737bc6ca7f49c67dbd0 *R/scanStatistic.R a9cfa06573f8eeb0aefa2329c59689aa *R/sequenceToLaTeX.R 5877e9963cac94f7dc2b245079826450 *R/simplifyNetwork.R c8a4ab49f15e1e8888d4bd132e1d9271 *R/simulateSymbolicModel.R 595c68d880e16c31046313f648cc34c6 *R/stateTransition.R ea0fbe49b283f4f0c073de77ab78fbaf *R/symbolicToTruthTable.R 42daa52bc14fc6918004e35203e07907 *R/testNetworkProperties.R 568159a3609b108c45ba2c39728fa6ce *R/toPajek.R 47bc51ada1eefa53c11e0171a589bc8b *R/toSBML.R dab752c2c82ef4e5e93224ad6934208c *R/truthTableToSymbolic.R 811f12cc71a25cbf23ade7eb93bb2162 *R/zeta.R 917b6dee50ccf38b620bcc9e2bfd8c29 *build/vignette.rds 6323b9a68ede50d320ceffa342711988 *data/cellcycle.rda 2162a3dfd9f29f06223413307dd177c8 *data/examplePBN.rda d58578f1cc7da58378f1617a6d8bb021 *data/igf.rda 8919de127f7ee2391900468a36c5dcd4 *data/yeastTimeSeries.rda 62409980eecaca8e52f1d495f499d6bd *inst/CITATION 49fe6c2b2f5db31583cdedb90833d8ce *inst/NEWS.Rd 9ab7eab59d9017896ca892246cfa93af *inst/doc/BoolNet_package_vignette.Snw.R efa622ebb03ad8c64121686dc690a34c *inst/doc/BoolNet_package_vignette.Snw.Rnw d902cc573dbeacee87bb8abc478d8144 *inst/doc/BoolNet_package_vignette.Snw.pdf fcb0ddc4a26eb5062f05b55032e5b151 *inst/doc/cellcycle.txt 27bccf40991bbe762bc274cbd7874f40 *inst/doc/example.btp cd4180d541f3f016d9b1c2a04b27a72d *man/BoolNet-package.Rd 67caa758b9f663491e69a3c18f4ee36f *man/attractorsToLaTeX.Rd 3461bfd43dd57a88d01d83df611f95c0 *man/binarizeTimeSeries.Rd 3623b2fe85476af5336cf7e220c1d60e *man/cellcycle.Rd 036eacac86ee9bfe4f821ab5ef7fb616 *man/chooseNetwork.Rd 7914c426e149300046dfce5ca9517777 *man/examplePBN.Rd 98af6630df76a0232c66ebb0bc8837d7 *man/fixGenes.Rd 642d27c47da308a31eaf78400173f2f4 *man/generateRandomNKNetwork.Rd 6b7e62a87a818acd4982332b9aa254e1 *man/generateState.Rd 38c0aa52a0ee9f8bf97e8067c77fcde5 *man/generateTimeSeries.Rd 201ec0e62a545f6a444f6caf689b3b03 *man/generationFunctions.Rd 35e00e1d48235e6deda56da6a5aa5758 *man/getAttractorSequence.Rd 72c6a2e78ad4bb47cc35d7d00c2a8c64 *man/getAttractors.Rd 9a35b1240af9834c41698983a18a6304 *man/getBasinOfAttraction.Rd 942d670fcd5de88dc007005fdab638c6 *man/getPathToAttractor.Rd 86d4773284835753fd35078d27d620d9 *man/getStateSummary.Rd 87053d20084edd33f1c2fe2c2a4f9787 *man/getTransitionProbabilities.Rd 8489c176c7be92a3e98d55b44e8c7aa9 *man/getTransitionTable.Rd ce766f16cf9e6a7a2bb9e883e8eaeb61 *man/igf.Rd 45e936129f9b2587bf185102395c260d *man/loadBioTapestry.Rd ed4cbad9b4579b8a7c6b0cc2f4a936b1 *man/loadNetwork.Rd 2707e6dd84d360637b761470776337d8 *man/loadSBML.Rd c859af507471ba3da30d304d90622a83 *man/markovSimulation.Rd 1592f64ef13d306cbc4110ae2ce8f604 *man/perturbNetwork.Rd 196308b14d4adf113e9a71211c9018cf *man/perturbTrajectories.Rd 67a72a4ba20f295c1ac6df8beed67471 *man/plotAttractors.Rd c7904f48e78584e4ad19f1f88c897398 *man/plotNetworkWiring.Rd 2638a35d79eddce77b3cac8e6cd995b9 *man/plotPBNTransitions.Rd 14494768e2d21361527b3636273ed637 *man/plotSequence.Rd 4fd22acacd58b14152afe03320b8600f *man/plotStateGraph.Rd 5f379a9e2b4a9a418d8b665af74757be *man/print.AttractorInfo.Rd e0b2b98da9c074e4e30dd73d57dae9da *man/print.BooleanNetwork.Rd b480ee06d8d8c2ade8ad0b5c89a13a7e *man/print.MarkovSimulation.Rd d03ef8645e4d3ad814798e882167aa8d *man/print.ProbabilisticBooleanNetwork.Rd 0b0de959a1efcef7fb7cbee820e80353 *man/print.SymbolicSimulation.Rd d6e7961146750c9b36106a8d280a1c09 *man/print.TransitionTable.Rd 98f8fc35b62488d9311508f3cba92992 *man/reconstructNetwork.Rd a00de398f679b032e7455478b427b4b5 *man/saveNetwork.Rd 193c5cf928939ccffccce788a27154af *man/sequenceToLaTeX.Rd 5944620706adac67972e04b0eea2627f *man/simplifyNetwork.Rd 235d5f7bb9ebf1c349f20912107b4dd9 *man/simulateSymbolicModel.Rd ce79e445196a6f65daca2a2cdce0aa88 *man/stateTransition.Rd d3d63606a7c4517c4faa078a43d9bbdd *man/symbolicToTruthTable.Rd ebae90dc72087715f94107aee6eb6536 *man/testNetworkProperties.Rd a5db19da3fb5103170c96cad7d537b74 *man/toPajek.Rd 205d9b5aa773edc1124a0ae58d5e7a0e *man/toSBML.Rd a43aad3b0dd5fff7a95a9075bdfdaa2e *man/truthTableToSymbolic.Rd 7ffc48740e826cbf5c56c11fb8dfe9df *man/yeastTimeSeries.Rd da975f995fc5f2ef57170b3d3ba53178 *src/Makevars.win 56a684219ad834529e4c4c6e9deb9ef2 *src/attractor_info.c 8b25f0694d6279bba2e28c947e304524 *src/attractor_info.h 4f5885dbe22b3adae3da6a066bb3cb06 *src/attractor_search_interface.c 8e4fdfd767d86b61f15c5c245e8dba77 *src/boolean_network.h 7e1bc399f8290fba5715ae68f560e5eb *src/common.c 8b9a314ecf353576c5d9199a8fc9d97d *src/common.h 777df32f6a8cb6981deb459bde233165 *src/init.c 3ae7901969630cf0f1c12ac9024957eb *src/picosat.c 2c29607ee624151f84ac09f55535010e *src/picosat.h a869a6a74b9c0a1c4c796003c1251d60 *src/probabilistic_boolean_network.c 686e443cfcfa3f597ea866bc25c356e7 *src/random.h a18cb9116413559c5438e6f25e8f7149 *src/reconstruct_network.c 22bc54f938607f08f72f1fbbf7289b7c *src/sat_search.c 0d6515ab8ff7605f16ca10eb5c6fc9e4 *src/sat_search.h 351d201ca2f926bdd1b5f4694de19902 *src/statespace_search.c c085761b2f853545febe7170a3715eb2 *src/statespace_search.h 4d4e389c0ff626a5e0db88416991e94e *src/symbolic_network.c dbbf4848847aefb8b756d749519bdf1d *src/symbolic_network.h d73a9d21e857cf8d150fd8e1aab02e96 *src/symbolic_simulator.c 460b4e88a7af5ba2c60231ca9f3644c8 *src/uthash.h efa622ebb03ad8c64121686dc690a34c *vignettes/BoolNet_package_vignette.Snw.Rnw 45d3f76bd49d22f8d6e0ad5cc2a14c62 *vignettes/BoolNet_package_vignette.bib cbc02d945670e5381418720262b10955 *vignettes/biotap_initval.png 530409792bed5d5a53140e85554b9d61 *vignettes/biotap_logic.png d4a2fcf1d0a873afde1c021019649014 *vignettes/biotap_model.png e02e5fea28346a3d8162b4feaa6ffb05 *vignettes/biotap_sim_properties.png d6aa77a2d43960ebb98c288990d3fe41 *vignettes/pajek.png ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/build/��������������������������������������������������������������������������������������0000755�0001762�0000144�00000000000�13455114165�012720� 5����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/build/vignette.rds��������������������������������������������������������������������������0000644�0001762�0000144�00000000375�13455114165�015264� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‹������•QÁJ1Ín¶Õ¡wÉìÑ¥A¤zðV†Íl‰¦™%;uñæ—[gµ+6Š``&“ðÞÌ{ÉÃ\)•+=Ñ*×Rê…¤©Ä¹D¦ 5“Ý\ùäu õlpýì6™±¼ }¹ }‚¿¬Áy´ÆŽdw5; †É€÷f MƒÀ»ˆ¡flÿ¯©­müÅß*ÅæâýÉ’Uäߨ“�[ì’–'¶ìpýö;?Û'”Ók|é)Žœ#Ìô€)–ò8ãÜ{Ç_}[-e¶J5ü褩/Ggç¾JÚËJÖºÔèÜCÙDáºßC “Õ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/DESCRIPTION���������������������������������������������������������������������������������0000644�0001762�0000144�00000002370�13455351452�013333� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Package: BoolNet Type: Package Title: Construction, Simulation and Analysis of Boolean Networks Version: 2.1.5 Date: 2019-04-15 Authors@R: c(person("Christoph", "Müssel", role = "aut"), person("Martin", "Hopfensitz", role = "aut"), person("Dao", "Zhou", role = "aut"), person(c("Hans", "A."), "Kestler", email = "hans.kestler@uni-ulm.de", role = c("aut", "cre")), person("Armin", "Biere", role = "ctb", comment="contributed PicoSAT code"), person(c("Troy", "D."), "Hanson", role = "ctb", comment="contributed uthash macros")) Imports: igraph (>= 0.6), XML Description: Provides methods to reconstruct and generate synchronous, asynchronous, probabilistic and temporal Boolean networks, and to analyze and visualize attractors in Boolean networks. License: Artistic-2.0 LazyLoad: yes ByteCompile: TRUE Encoding: UTF-8 NeedsCompilation: yes Packaged: 2019-04-15 14:43:01 UTC; julian_schwab Author: Christoph Müssel [aut], Martin Hopfensitz [aut], Dao Zhou [aut], Hans A. Kestler [aut, cre], Armin Biere [ctb] (contributed PicoSAT code), Troy D. Hanson [ctb] (contributed uthash macros) Maintainer: Hans A. Kestler <hans.kestler@uni-ulm.de> Repository: CRAN Date/Publication: 2019-04-16 13:05:46 UTC ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/man/����������������������������������������������������������������������������������������0000755�0001762�0000144�00000000000�13455114165�012374� 5����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/man/reconstructNetwork.Rd�������������������������������������������������������������������0000644�0001762�0000144�00000014673�13277247010�016621� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\name{reconstructNetwork} \alias{reconstructNetwork} \title{ Reconstruct a Boolean network from time series of measurements } \description{ Reconstructs a Boolean network from a set of time series or from a transition table using the best-fit extension algorithm or the REVEAL algorithm. } \usage{ reconstructNetwork(measurements, method = c("bestfit", "reveal"), maxK = 5, requiredDependencies = NULL, excludedDependencies = NULL, perturbations=NULL, readableFunctions=FALSE, allSolutions=FALSE, returnPBN=FALSE) } \arguments{ \item{measurements}{ This can either be an object of class \code{TransitionTable} as returned by \if{latex}{\cr}\code{\link{getTransitionTable}}, or a set of time series of measurements. In this case, \code{measurements} must be a list of matrices, each corresponding to one time series. Each row of these matrices contains measurements for one gene on a time line, i. e. column \code{i+1} contains the successor states of column \code{i}. The genes must be the same for all matrices in the list. Real-valued time series can be binarized using \code{\link{binarizeTimeSeries}}. } \item{method}{ This specifies the reconstruction algorithm to be used. If set to "bestfit", Laehdesmaeki's Best-Fit Extension algorithm is employed. This algorithm is an improvement of the algorithm by Akutsu et al. with a lower runtime complexity. It determines the functions with a minimal error for each gene. If set to "reveal", Liang's REVEAL algorithm is used. This algorithm searches for relevant input genes using the mutual information between the input genes and the output gene. } \item{maxK}{ The maximum number of input genes for one gene to be tested. Defaults to 5. } \item{requiredDependencies}{An optional specification of known dependencies that must be included in reconstructed networks. This is a named list containing a vector of gene names (regulators) for each target.} \item{excludedDependencies}{Analogous to \code{requiredDependencies}, this is an optional specification of dependencies that must not be included in reconstructed networks. This is a named list containing a vector of gene names (prohibited regulators) for each target.} \item{perturbations}{If \code{measurements} contains data obtained from perturbation experiments (i.e. different targeted knock-outs and overexpressions), this optional parameter is a matrix with one column for each entry in \code{measurements} and a row for each gene. A matrix entry is 0 for a knock-out of the corresponding gene in the corresponding time series, 1 for overexpression, and NA or -1 for no perturbation. If \code{measurements} has an element \code{perturbations} and this argument is not specified, the element of \code{measurements} is taken. } \item{readableFunctions}{ If this is true, readable DNF representations of the truth tables of the functions are generated. These DNF are displayed when the network is printed. The DNF representations are not minimized and can thus be very long. If set to FALSE, the truth table result column is displayed. } \item{allSolutions}{ If this is true, all solutions with the minimum error and up to \code{maxK} inputs are returned. By default, \code{allSolutions=FALSE}, which means that only the solutions with both minimum error and minimum \code{k} are returned. } \item{returnPBN}{Specifies the way unknown values in the truth tables of the transition functions ("don't care" values) are processed. If \code{returnPBN=TRUE}, all possible functions are enumerated recursively, and an object of class \code{ProbabilisticBooleanNetwork} is returned. This can consume a high amount of memory and computation time. If \code{returnPBN=FALSE}, the transition functions may contain "don't care" (*) values, and an object of class \code{BooleanNetworkCollection} is returned. \code{returnPBN=TRUE} corresponds to the behaviour prior to version 2.0. The default value is \code{returnPBN=FALSE}. } } \details{ Both algorithms iterate over all possible input combinations. While Best-Fit Extension is capable of returning functions that do not perfectly explain the measurements (for example, if there are inconsistent measurements or if \code{maxK} was specified too small), REVEAL only finds functions that explain all measurements. For more information, please refer to the cited publications. } \value{ If \code{returnPBN=TRUE}, the function returns an object of class \code{ProbabilisticBooleanNetwork}, with each alternative function of a gene having the same probability. The structure is described in detail in \code{\link{loadNetwork}}. In addition to the standard components, each alternative transition function has a component \code{error} which stores the error of the function on the input time series data. If \code{returnPBN=FALSE}, the function returns an object of class \code{BooleanNetworkCollection} that has essentially the same structure as \code{ProbabilisticBooleanNetwork}, but does not store probabilities and keeps "don't care" values in the functions. Due to the "don't care" (*) values, this collection cannot be simulated directly. However, a specific Boolean network of class \code{BooleanNetwork} can be extracted from both \code{BooleanNetworkCollection} and \code{ProbabilisticBooleanNetwork} structures using \code{\link{chooseNetwork}}. } \references{ H. Laehdesmaeki, I. Shmulevich and O. Yli-Harja (2003), On Learning Gene-Regulatory Networks Under the Boolean Network Model. Machine Learning 52:147--167. T. Akutsu, S. Miyano and S. Kuhara (2000). Inferring qualitative relations in genetic networks and metabolic pathways. Bioinformatics 16(8):727--734. S. Liang, S. Fuhrman and R. Somogyi (1998), REVEAL, a general reverse engineering algorithm for inference of genetic network architectures. Pacific Symposium on Biocomputing 3:18--29. } \seealso{ \code{\link{generateTimeSeries}}, \code{\link{binarizeTimeSeries}}, \code{\link{chooseNetwork}} } \examples{ # load example data data(yeastTimeSeries) # perform binarization with k-means bin <- binarizeTimeSeries(yeastTimeSeries) # reconstruct networks from binarized measurements net <- reconstructNetwork(bin$binarizedMeasurements, method="bestfit", maxK=3, returnPBN=TRUE) # print reconstructed net print(net) # plot reconstructed net plotNetworkWiring(net) } \keyword{probabilistic Boolean network PBN reconstruction REVEAL best-fit extension} ���������������������������������������������������������������������BoolNet/man/plotAttractors.Rd�����������������������������������������������������������������������0000644�0001762�0000144�00000016062�13277247537�015731� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\name{plotAttractors} \Rdversion{1.1} \alias{plotAttractors} \title{ Plot state tables or transition graphs of attractors } \description{ Visualizes attractors, either by drawing a table of the involved states in two colors, or by drawing a graph of transitions between the states of the attractor. } \usage{ plotAttractors(attractorInfo, subset, title = "", mode = c("table","graph"), grouping = list(), plotFixed = TRUE, onColor = "#4daf4a", offColor = "#e41a1c", layout = layout.circle, drawLabels = TRUE, drawLegend = TRUE, ask = TRUE, reverse = FALSE, borderColor = "black", eps = 0.1, allInOnePlot = FALSE, ...) } \arguments{ \item{attractorInfo}{ An object of class \code{AttractorInfo}, as returned by \code{\link{getAttractors}}, or an object of class \code{SymbolicSimulation}, as returned by \code{\link{simulateSymbolicModel}}. } \item{subset}{An subset of attractors to be plotted. This is a vector of attractor indices in \code{attractorInfo}.} \item{title}{ An optional title for the plot } \item{mode}{Switches between two kinds of attractor plots. See Details for more information. Default is "table".} \item{grouping}{This optional parameter is only used if \code{mode="table"} and specifies a structure to form groups of genes in the plot. This is a list with the following elements: \describe{ \item{class}{A vector of names for the groups. These names will be printed in the region belonging to the group in the plot.} \item{index}{A list with the same length as \code{class}. Each element is a vector of gene names or gene indices belonging to the group.}} } \item{plotFixed}{This optional parameter is only used if \code{mode="table"}. If this is true, genes with fixed values are included in the plot. Otherwise, these genes are not drawn. } \item{onColor}{This optional parameter is only used if \code{mode="table"} and specifies the color value for the 1/ON values in the table. Defaults to green. } \item{offColor}{This optional parameter is only used if \code{mode="table"} and specifies the color value for the 0/OFF values in the table. Defaults to red. } \item{layout}{If \code{mode="graph"}, this parameter specifies a layouting function that determines the placement of the nodes in the graph. Please refer to the \code{\link[igraph]{layout}} manual entry in the \pkg{igraph} package for further details. By default, the circle layout is used. } \item{drawLabels}{This parameter is only relevant if \code{mode="graph"}. It determines whether the nodes of the graph are annotated with the corresponding values of the genes in the attractor states. } \item{drawLegend}{Specifies whether a color key for the ON/OFF states is drawn if \code{mode="table"}. Defaults to \code{TRUE}. } \item{ask}{ If set to true, the plot function will prompt for a user input for each new plot that is shown on an interactive device (see \code{link{par("ask")}}). } \item{reverse}{ Specifies the order of the genes in the plot. By default, the first gene is placed in the first row of the plot. If \code{reverse=TRUE} (which was the default until \pkg{BoolNet} version 2.0.2), the first gene in the network is placed in the bottom row of the plot. } \item{borderColor}{ Specifies the border or seprating color of states in an attractor. Defaults to \code{"black"}. } \item{eps}{ Specifies plotting margin for the sequence of states. Defaults to \code{0.1}. } \item{allInOnePlot}{ If this is \code{TRUE} then all attractors, with \code{mode = "table"}, are plotted in one plot as specified internally by \code{par$mfrow} parameter. Previous value of the \code{par$mfrow} parameter is preserved. Defaults to \code{FALSE}, meaning the plots for more than one attractor will be switched interactively or all plotted in an non-interactive graphical device. } \item{\dots}{ Further graphical parameters to be passed to \code{\link[igraph:plot.graph]{plot.igraph}} if \code{mode="graph"}. } } \details{ This function comprises two different types of plots: The "table" mode visualizes the gene values of the states in the attractor and is only suited for synchronous or steady-state attractors. Complex asynchronous attractors are omitted in this mode. Attractors in \code{attractorInfo} are first grouped by length. Then, a figure is plotted to the currently selected device for each attractor length (i.e. one plot with all attractors consisting of 1 state, one plot with all attractors consisting of 2 states, etc.). If \code{ask=TRUE} and the standard X11 output device is used, the user must confirm that the next plot for the next attractor size should be shown. The figure is a table with the genes in the rows and the states of the attractors in the columns. Cells of the table are (by default) red for 0/OFF values and green for 1/ON values. If \code{grouping} is set, the genes are rearranged according to the indices in the group, horizontal separation lines are plotted between the groups, and the group names are printed. The "graph" mode visualizes the transitions between different states. It creates a graph in which the vertices are the states in the attractor and the edges are state transitions among these states. This mode can visualize all kinds of attractors, including complex/loose attractors. One plot is drawn for each attractor. As before, this means that on the standard output device, only the last plot is displayed unless you set \code{par(mfrow=c(...))} accordingly. } \value{ If \code{mode="table"}, a list of matrices corresponding to the tables is returned. Each of these matrices has the genes in the rows and the states of the attractors in the columns. If \code{mode="graph"}, a list of objects of class \code{igraph} is returned. Each of these objects describes the graph for one attractor. } \seealso{ \code{\link{getAttractors}}, \code{\link{simulateSymbolicModel}}, \code{\link{attractorsToLaTeX}}, \code{\link{plotSequence}}, \code{\link{sequenceToLaTeX}} } \examples{ # load example data data(cellcycle) # get attractors attractors <- getAttractors(cellcycle) # calculate number of different attractor lengths, # and plot attractors side by side in "table" mode par(mfrow=c(1, length(table(sapply(attractors$attractors, function(attractor) { length(attractor$involvedStates) }))))) plotAttractors(attractors) # plot attractors in "graph" mode par(mfrow=c(1, length(attractors$attractors))) plotAttractors(attractors, mode="graph") # identify asynchronous attractors attractors <- getAttractors(cellcycle, type="asynchronous") # plot attractors in "graph" mode par(mfrow=c(1, length(attractors$attractors))) plotAttractors(attractors, mode="graph") } % Add one or more standard keywords, see file 'KEYWORDS' in the % R documentation directory. \keyword{ Boolean network attractor cycle basin transition state graph plot} ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/man/igf.Rd����������������������������������������������������������������������������������0000644�0001762�0000144�00000001673�13277247010�013435� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\name{igf} \alias{igf} \docType{data} \title{ Boolean model of the IGF pathway } \description{ A small Boolean model of major components of the IGF (Insuline-like growth receptor) pathway. Through IRS, IGF activates the well-known PI3K-Akt-mTOR signalling cascade. This cascade is finally inactivated by a feedback inhibion of IRS. The model simplifies several complex formations and cascades by representing them as single nodes and specifying time delays instead. It therefore demonstrates the usage of temporal Boolean networks in \pkg{BoolNet}. } \usage{data(igf)} \format{ This data set consists of a variable \code{igf} of class \code{SymbolicBooleanNetwork} with 5 genes. The class \code{SymbolicBooleanNetwork} is described in more detail in \code{\link{loadNetwork}}. } \examples{ data(igf) sim <- simulateSymbolicModel(igf) plotAttractors(sim) } \keyword{datasets IGF pathway symbolic Boolean network time delays} ���������������������������������������������������������������������BoolNet/man/stateTransition.Rd����������������������������������������������������������������������0000644�0001762�0000144�00000007357�13277247010�016070� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\name{stateTransition} \Rdversion{1.1} \alias{stateTransition} \title{ Perform a transition to the next state } \description{ Calculates the next state in a supplied network for a given current state } \usage{ stateTransition(network, state, type = c("synchronous","asynchronous","probabilistic"), geneProbabilities, chosenGene, chosenFunctions, timeStep = 0) } \arguments{ \item{network}{ A network structure of class \code{BooleanNetwork}, \code{SymbolicBooleanNetwork} or \code{ProbabilisticBooleanNetwork}. These networks can be read from files by \code{\link{loadNetwork}}, generated by \if{latex}{\cr}\code{\link{generateRandomNKNetwork}}, or reconstructed by \code{\link{reconstructNetwork}}. } \item{state}{ The current state of the network, encoded as a vector with one 0-1 element for each gene. If \code{network} is of class \code{SymbolicBooleanNetwork} and makes use of more than one predecessor state, this can also be a matrix with the genes in the columns and multiple predecessor states in the rows. } \item{type}{The type of transition to be performed. If set to "synchronous", all genes are updated using the corresponding transition functions. If set to "asynchronous", only one gene is updated. This gene is either chosen randomly or supplied in parameter \code{chosenGene}. If set to "probabilistic", one transition function is chosen for each gene, and the genes are updated synchronously. The functions are either chosen randomly depending on their probabilities, or they are supplied in parameter \code{chosenFunctions}. Default is "synchronous" for objects of class \code{BooleanNetwork} and \code{SymbolicBooleanNetwork}, and "probabilistic" for objects of class \code{ProbabilisticBooleanNetwork}.} \item{geneProbabilities}{An optional vector of probabilities for the genes if \code{type="asynchronous"}. By default, each gene has the same probability to be chosen for the next state transition. These probabilities can be modified by supplying a vector of probabilities for the genes which sums up to one.} \item{chosenGene}{If \code{type="asynchronous"} and this parameter is supplied, no random update is performed. Instead, the gene with the supplied name or index is chosen for the next transition.} \item{chosenFunctions}{If \code{type="probabilistic"}, this parameter can contain a set of function indices for each gene. In this case, transition functions are not chosen randomly, but the provided functions are used in the state transition.} \item{timeStep}{An optional parameter that specifies the current time step associated with \code{state}. This is only relevant for networks of class \code{SymbolicBooleanNetwork} that make use of time-dependent predicates (\code{timelt, timeis, timegt}). Otherwise, this parameter is ignored. } } \value{ The subsequent state of the network, encoded as a vector with one 0-1 element for each gene.} \seealso{ \code{\link{loadNetwork}}, \code{\link{generateRandomNKNetwork}}, \code{\link{generateState}} } \examples{ # load example network data(cellcycle) # calculate a synchronous state transition print(stateTransition(cellcycle, c(1,1,1,1,1,1,1,1,1,1))) # calculate an asynchronous state transition of gene CycA print(stateTransition(cellcycle, c(1,1,1,1,1,1,1,1,1,1), type="asynchronous", chosenGene="CycA")) # load probabilistic network data(examplePBN) # perform a probabilistic state transition print(stateTransition(examplePBN, c(0,1,1), type="probabilistic")) } \keyword{state transition Boolean network synchronous update asynchronous update probabilistic Boolean network PBN transition state} ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/man/plotPBNTransitions.Rd�������������������������������������������������������������������0000644�0001762�0000144�00000005376�13277247010�016450� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\name{plotPBNTransitions} \alias{plotPBNTransitions} \title{ Visualize the transitions in a probabilistic Boolean network } \description{ Visualizes the state transitions and their probabilities in a probabilistic Boolean network. This takes the transition table information calculated by the \code{\link{markovSimulation}} method. Only transitions with non-zero probability are included in the plot. The function requires the \pkg{igraph} package. } \usage{ plotPBNTransitions(markovSimulation, stateSubset, drawProbabilities = TRUE, drawStateLabels = TRUE, layout = layout.fruchterman.reingold, plotIt = TRUE, ...) } \arguments{ \item{markovSimulation}{ An object of class \code{MarkovSimulation}, as returned by \code{\link{markovSimulation}}. As the transition table information in this structure is required, \code{\link{markovSimulation}} must be called with \code{returnTable} set to TRUE. } \item{stateSubset}{ An optional list of states, where each element of the list must be a vector with a 0/1 entry for each gene. If this argument is supplied, the graph only contains the specified states and transitions between these states. } \item{drawProbabilities}{ If set to true, the edges of the graph are annotated with the probabilities of the corresponding transitions. Default is TRUE. } \item{drawStateLabels}{ If set to true, the vertices of the graph are annotated with the gene values of the corresponding states. Defaults to TRUE. } \item{layout}{ A layouting function that determines the placement of the nodes in the graph. Please refer to the \code{\link[igraph]{layout}} manual entry in the \pkg{igraph} package for further details. By default, the Fruchterman-Reingold algorithm is used. } \item{plotIt}{ If this is true, a plot is generated. Otherwise, only an object of class \code{igraph} is returned, but no plot is drawn. } \item{\dots}{ Further graphical parameters to be passed to \code{\link[igraph:plot.graph]{plot.igraph}}. } } \value{ Returns an invisible object of class \code{igraph} containing the wiring graph. } \details{ This function uses the \code{\link[igraph:plot.graph]{plot.igraph}} function from the \pkg{igraph} package. The plots are customizeable using the \code{\dots} argument. For details on possible parameters, please refer to \code{\link[igraph:plot.common]{igraph.plotting}}. } \seealso{ \code{\link{markovSimulation}} } \examples{ # load example network data(examplePBN) # perform a Markov chain simulation sim <- markovSimulation(examplePBN) # plot the transitions and their probabilities plotPBNTransitions(sim) } \keyword{probabilistic Boolean network PBN Boolean network plot transition graph} ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/man/getTransitionTable.Rd�������������������������������������������������������������������0000644�0001762�0000144�00000004367�13277247010�016475� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\name{getTransitionTable} \Rdversion{1.1} \alias{getTransitionTable} \title{ Retrieve the transition table of a network } \description{ Retrieves the transition table and additional attractor information of a network. } \usage{ getTransitionTable(attractorInfo) } \arguments{ \item{attractorInfo}{ An object of class \code{AttractorInfo}, as returned by \code{\link{getAttractors}}, or of class \code{SymbolicSimulation}, as returned by \code{\link{simulateSymbolicModel}}. As the transition table information in this structure is required, \code{getAttractors} must be called in synchronous mode and with \code{returnTable} set to TRUE. Similarly, \code{simulateSymbolicModel} must be called with \code{returnGraph=TRUE}. } } \details{ Depending on the configuration of the call to \code{getAttractors} or \code{simulateSymbolicModel} that returned \code{attractorInfo}, this function either returns the complete transition table (for exhaustive synchronous search) or the part of the transition table calculated in a heuristic synchronous search. Asynchronous search is not supported, as no transition table is calculated. } \value{ Returns a generic dataframe of the class \code{TransitionTable}. For n genes, the first n columns code for the original state (in this case, the \code{state} parameter), i.e. each column represents the value of one gene. The next n columns code for the successive state after a transition. The column \code{attractorAssignment} indicates the attractor to the state is assigned. If this information is available, the column \code{stepsToAttractor} indicates how many transitions are needed from the original state to the attractor. The table has a row for each possible input state. The \code{TransitionTable} class supports pretty printing using the \code{\link{print}} method. } \seealso{ \code{\link{getStateSummary}}, \code{\link{getBasinOfAttraction}}, \code{\link{getAttractors}}, \code{\link{simulateSymbolicModel}} } \examples{ # load example data data(cellcycle) # get attractors attractors <- getAttractors(cellcycle) # print the transition table print(getTransitionTable(attractors)) } % Add one or more standard keywords, see file 'KEYWORDS' in the % R documentation directory. \keyword{Boolean network transition transition table state} �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/man/getStateSummary.Rd����������������������������������������������������������������������0000644�0001762�0000144�00000004117�13277247010�016022� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\name{getStateSummary} \Rdversion{1.1} \alias{getStateSummary} %- Also NEED an '\alias' for EACH other topic documented here. \title{ Retrieve summary information on a state } \description{ Returns information on the supplied state, i.e. the successive state after a transition, the (synchronous) attractor to which the state leads, and the distance to this attractor. } \usage{ getStateSummary(attractorInfo, state) } \arguments{ \item{attractorInfo}{ An object of class \code{AttractorInfo}, as returned by \code{\link{getAttractors}}, or of class \code{SymbolicSimulation}, as returned by \code{\link{simulateSymbolicModel}}. As the transition table information in this structure is required, \code{getAttractors} must be called in synchronous mode and with \code{returnTable} set to TRUE. Similarly, \code{simulateSymbolicModel} must be called with \code{returnGraph=TRUE}. } \item{state}{ A 0-1 vector with n elements (where n is the number of genes in the underlying networks) describing the state. } } \value{ Returns a generic dataframe of the class \code{TransitionTable}. For n genes, the first n columns code for the original state (in this case, the \code{state} parameter), i.e. each column represents the value of one gene. The next n columns code for the successive state after a transition. The column \code{attractorAssignment} indicates the attractor to the state is assigned. If this information is available, the column \code{stepsToAttractor} indicates how many transitions are needed from the original state to the attractor. In this case, the table has only one row describing the supplied state. The \code{TransitionTable} class supports pretty printing using the \code{\link{print}} method. } \seealso{ \code{\link{getBasinOfAttraction}}, \code{\link{getTransitionTable}}, \code{\link{getAttractors}}, \code{\link{simulateSymbolicModel}} } \examples{ # load example data data(cellcycle) # get attractors attractors <- getAttractors(cellcycle) # print information for an arbitrary state print(getStateSummary(attractors, c(1,1,1,1,1,1,1,1,1,1))) } \keyword{Boolean network transition state} �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/man/plotNetworkWiring.Rd��������������������������������������������������������������������0000644�0001762�0000144�00000004062�13277247010�016373� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\name{plotNetworkWiring} \alias{plotNetworkWiring} \title{ Plot the wiring of a Boolean network } \description{ Plots the wiring of genes (i.e. the gene dependencies) of a synchronous or probabilistic Boolean network. The nodes of the graph are the genes, and the directed edges show the dependencies of the genes. This requires the \pkg{igraph} package. } \usage{ plotNetworkWiring(network, layout = layout.fruchterman.reingold, plotIt = TRUE, ...) } \arguments{ \item{network}{ A network structure of class \code{BooleanNetwork}, \code{SymbolicBooleanNetwork} or \code{ProbabilisticBooleanNetwork}. These networks can be read from files by \code{\link{loadNetwork}}, generated by \if{latex}{\cr}\code{\link{generateRandomNKNetwork}}, or reconstructed by \code{\link{reconstructNetwork}}. } \item{layout}{ A layouting function that determines the placement of the nodes in the graph. Please refer to the \code{\link[igraph]{layout}} manual entry in the \pkg{igraph} package for further details. By default, the Fruchterman-Reingold algorithm is used. } \item{plotIt}{ If this is true, a plot is generated. Otherwise, only an object of class \code{igraph} is returned, but no plot is drawn. } \item{\dots}{ Further graphical parameters to be passed to \code{\link[igraph:plot.graph]{plot.igraph}}. } } \details{ This function uses the \code{\link[igraph:plot.graph]{plot.igraph}} function from the \pkg{igraph} package. The plots are customizeable using the \code{\dots} argument. For details on possible parameters, please refer to \code{\link[igraph:plot.common]{igraph.plotting}}. } \value{ Returns an invisible object of class \code{igraph} containing the wiring graph. } \seealso{ \code{\link{loadNetwork}}, \code{\link{generateRandomNKNetwork}}, \code{\link{reconstructNetwork}}, \code{\link{plotStateGraph}}, \code{\link[igraph:plot.graph]{igraph.plotting}} } \examples{ # load example data data(cellcycle) # plot wiring graph plotNetworkWiring(cellcycle) } \keyword{wiring graph plot Boolean network dependencies} ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/man/markovSimulation.Rd���������������������������������������������������������������������0000644�0001762�0000144�00000007115�13277247010�016231� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\name{markovSimulation} \alias{markovSimulation} %- Also NEED an '\alias' for EACH other topic documented here. \title{ Identify important states in probabilistic Boolean networks } \description{ Identifies important states in probabilistic Boolean networks (PBN) using a Markov chain simulation } \usage{ markovSimulation(network, numIterations = 1000, startStates = list(), cutoff = 0.001, returnTable = TRUE) } \arguments{ \item{network}{ An object of class \code{ProbabilisticBooleanNetwork} or \code{BooleanNetwork} whose transitions are simulated } \item{numIterations}{ The number of iterations for the matrix multiplication, which corresponds to the number of state transitions to simulate } \item{startStates}{ An optional list of start states. Each entry of the list must be a vector with a 0/1 value for each gene. If specified, the simulation is restricted to the states reachable from the supplied start states. Otherwise, all states are considered. } \item{cutoff}{ The cutoff value used to determine if a probability is 0. All output probabilities less than or equal to this value are set to 0. } \item{returnTable}{ If set to true, a transition table annotated with the probabilities for the transitions is included in the results. This is required by \code{\link{plotPBNTransitions}} and \code{\link{getTransitionProbabilities}}. } } \details{ The algorithm identifies important states by performing the following steps: First, a Markov matrix is calculated from the set of transition functions, where each entry of the matrix specifies the probability of a state transition from the state belonging to the corresponding row to the state belonging to the corresponding column. A vector is initialized with uniform probability for all states (or -- if specified -- uniform probability for all start states) and repeatedly multiplied with the Markov matrix. The method returns all states with non-zero probability in this vector. See the references for more details. } \value{ An object of class \code{MarkovSimulation} with the following components: \item{reachedStates}{A data frame with one state in each row. The first columns specify the gene values of the state, and the last column holds the probability that the corresponding state is reached after \code{numIterations} transitions. Only states with a probability greater than \code{cutoff} are included in this table.} \item{genes}{A vector of gene names of the input network} \item{table}{If \code{returnTable=TRUE}, this structure holds a table of transitions with the corresponding probabilities that transitions are chosen. This is a list with the following components: \describe{ \item{initialStates}{A matrix of encoded start states of the transitions} \item{nextStates}{The encoded successor states of the transitions} \item{probabilities}{The probabilities that the transitions are chosen in a single step} }} } \references{ I. Shmulevich, E. R. Dougherty, S. Kim, W. Zhang (2002), Probabilistic Boolean networks: a rule-based uncertainty model for gene regulatory networks. Bioinformatics 18(2):261--274. } \seealso{ \code{\link{reconstructNetwork}}, \code{\link{plotPBNTransitions}}, \code{\link{getTransitionProbabilities}} } \examples{ # load example network data(examplePBN) # perform a Markov chain simulation sim <- markovSimulation(examplePBN) # print the relevant states and transition probabilities print(sim) # plot the transitions and their probabilities plotPBNTransitions(sim) } \keyword{probabilistic Boolean network PBN Markov chain } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/man/symbolicToTruthTable.Rd�����������������������������������������������������������������0000644�0001762�0000144�00000002157�13277247010�017011� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\name{symbolicToTruthTable} \alias{symbolicToTruthTable} \title{ Convert a symbolic network into a truth table representation } \description{ Converts an object of class \code{SymbolicBooleanNetwork} into an object of class \code{BooleanNetwork} by generating truth tables from the symbolic expression trees. } \usage{ symbolicToTruthTable(network) } \arguments{ \item{network}{ An object of class \code{SymbolicBooleanNetwork} to be converted. } } \details{ The symbolic network \code{network} must not contain temporal operators, as these are not compatible with the truth table representation in \code{BooleanNetwork} objects. } \value{ Returns an object of class \code{BooleanNetwork}, as described in \code{\link{loadNetwork}}. } \seealso{ \code{\link{truthTableToSymbolic}}, \code{\link{loadNetwork}} } \examples{ # Convert a truth table representation into a # symbolic representation and back data(cellcycle) symbolicNet <- truthTableToSymbolic(cellcycle) print(symbolicNet) ttNet <- symbolicToTruthTable(symbolicNet) print(cellcycle) } \keyword{Boolean network symbolic Boolean network conversion} �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/man/yeastTimeSeries.Rd����������������������������������������������������������������������0000644�0001762�0000144�00000002627�13277247010�016007� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\name{yeastTimeSeries} \alias{yeastTimeSeries} \docType{data} \title{ Yeast cell cycle time series data } \description{ Preprocessed time series measurements of four genes from the yeast cell cycle data by Spellman et al. } \usage{data(yeastTimeSeries)} \format{ A matrix with 14 measurements for the genes Fhk2, Swi5, Sic1, and Clb1. Each gene is a row of the matrix, and each column is a measurement. } \details{ The data were obtained from the web site of the yeast cell cycle analysis project at \url{http://genome-www.stanford.edu/cellcycle}. The time series synchronized with the elutriation method were extracted for the genes Fhk2, Swi5, SIC1, and Clb1. In a preprocessing step, missing values were imputed by taking the means of the measurements of the same genes at neighbouring time points. } \source{ P. T. Spellman, G. Sherlock, M. Q. Zhang, V. R. Iyer, K. Anders, M. B. Eisen, P. O. Brown, D. Botstein, B. Futcher (1998), Comprehensive Identification of Cell Cycle-regulated Genes of the Yeast Saccharomyces cerevisiae by Microarray Hybridization. Molecular Biology of the Cell 9(12):3273--3297. Yeast cell cycle analysis project web site: \url{http://genome-www.stanford.edu/cellcycle} } \examples{ data(yeastTimeSeries) # the data set is stored in a variable called 'yeastTimeSeries' print(yeastTimeSeries) } \keyword{datasets yeast cell cycle time series binarization binarize} ���������������������������������������������������������������������������������������������������������BoolNet/man/binarizeTimeSeries.Rd�������������������������������������������������������������������0000644�0001762�0000144�00000013357�13277247010�016467� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\name{binarizeTimeSeries} \alias{binarizeTimeSeries} \title{ Binarize a set of real-valued time series } \description{ Binarizes a set of real-valued time series using k-means clustering, edge detection, or scan statistics. } \usage{ binarizeTimeSeries(measurements, method = c("kmeans","edgeDetector","scanStatistic"), nstart = 100, iter.max = 1000, edge = c("firstEdge","maxEdge"), scaling = 1, windowSize = 0.25, sign.level = 0.1, dropInsignificant = FALSE) } \arguments{ \item{measurements}{ A list of matrices, each corresponding to one time series. Each row of these matrices contains real-valued measurements for one gene on a time line, i. e. column \code{i+1} contains the successor states of column \code{i+1}. The genes must be the same for all matrices in the list. } \item{method}{The employed binarization technique. "kmeans" uses k-means clustering for binarization. "edgeDetector" searches for a large gradient in the sorted measurements. "scanStatistic" searches for accumulations in the measurements. See Details for descriptions of the techniques.} \item{nstart}{ If \code{method="kmeans"}, this is the number of restarts for k-means. See \code{\link{kmeans}} for details. } \item{iter.max}{ If \code{method="kmeans"}, the maximum number of iterations for k-means. See \code{\link{kmeans}} for details. } \item{edge}{If \code{method="edgeDetector"}, this decides which of the edges is used as a threshold for binarization. If set to "firstEdge",the binarization threshold is the first combination of two successive sorted values whose difference exceeds a predefined value (average gradient * \code{scaling}). The parameter \code{scaling} can be used to adjust this value. If set to "maxEdge", the binarization threshold is the position of the edge with the overall highest gradient.} \item{scaling}{If \code{method="edgeDetector"} and \code{edge="firstEdge"}, this holds the scaling factor used for adjustment of the average gradient.} \item{windowSize}{If \code{method="scanStatistic"}, this specifies the size of the scanning window (see Details). The size is given as a fraction of the whole range of input values for a gene. Default is 0.25.} \item{sign.level}{If \code{method="scanStatistic"}, the significance level used for the scan statistic (see Details). } \item{dropInsignificant}{ If this is set to true, genes whose binarizations are insignificant in the scan statistic (see Details) are removed from the binarized time series. Otherwise, a warning is printed if such genes exist. } } \details{ This method supports three binarization techniques: \describe{ \item{k-means clustering}{For each gene, k-means clusterings are performed to determine a good separation of groups. The values belonging to the cluster with the smaller centroid are set to 0, and the values belonging to the greater centroid are set to 1.} \item{Edge detector}{This approach first sorts the measurements for each gene. In the sorted measurements, the algorithm searches for differences of two successive values that satisfy a predefined condition: If the "firstEdge" method was chosen, the pair of values whose difference exceeds the scaled average gradient of all values is chosen and used as maximum and minimum value of the two groups. If the "maxEdge" method was chosen, the largest difference between two successive values is taken. For details, see Shmulevich et al.} \item{Scan statistic}{The scan statistic assumes that the measurements for each gene are uniformly and independently distributed independently over a certain range. The scan statistic shifts a scanning window across the data and decides for each window position whether there is an unusual accumulation of data points based on an approximated test statistic (see Glaz et al.). The window with the smallest p-value is remembered. The boundaries of this window form two thresholds, from which the value that results in more balanced groups is taken for binarization. Depending on the supplied significance level, gene binarizations are rated according to the p-value of the chosen window.} } } \value{ Returns a list with the following elements: \item{binarizedMeasurements}{A list of matrices with the same structure as \code{measurements} containing the binarized time series measurements} \item{reject}{If \code{method="scanStatistic"}, a Boolean vector indicating for each gene whether the scan statistic algorithm was able to find a significant binarization window (FALSE) or not (TRUE). Rejected genes should probably be excluded from the data.} \item{thresholds}{The thresholds used for binarization} } \references{ I. Shmulevich and W. Zhang (2002), Binary analysis and optimization-based normalization of gene expression data. Bioinformatics 18(4):555--565. J. Glaz, J. Naus, S. Wallenstein (2001), Scan Statistics. New York: Springer. } \seealso{ \code{\link{reconstructNetwork}} } \examples{ # load test data data(yeastTimeSeries) # perform binarization with k-means bin <- binarizeTimeSeries(yeastTimeSeries) print(bin) # perform binarization with scan statistic # - will find and remove 2 insignificant genes! bin <- binarizeTimeSeries(yeastTimeSeries, method="scanStatistic", dropInsignificant=TRUE, sign.level=0.2) print(bin) # perform binarization with edge detector bin <- binarizeTimeSeries(yeastTimeSeries, method="edgeDetector") print(bin) # reconstruct a network from the data reconstructed <- reconstructNetwork(bin$binarizedMeasurements, method="bestfit", maxK=4) print(reconstructed) } \keyword{Boolean network binarization binarize k-means edge detector scan statistic} ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/man/toSBML.Rd�������������������������������������������������������������������������������0000644�0001762�0000144�00000005015�13277247010�013762� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\name{toSBML} \alias{toSBML} \title{ Export a network to SBML } \description{ Exports a synchronous or asynchronous Boolean network to SBML with the \code{sbml-qual} extension package. } \usage{ toSBML(network, file, generateDNFs = FALSE, saveFixed = TRUE) } \arguments{ \item{network}{ An object of class \code{BooleanNetwork} or \code{SymbolicBooleanNetwork} to be exported } \item{file}{ The name of the SBML file to be created } \item{generateDNFs}{ If \code{network} is a \code{BooleanNetwork} object, this parameter specifies whether formulae in Disjunctive Normal Form are exported instead of the expressions that describe the transition functions. If set to FALSE, the original expressions are exported. If set to "canonical", a canonical Disjunctive Normal Form is generated from each truth table. If set to "short", the canonical DNF is minimized by joining terms (which can be time-consuming for functions with many inputs). If set to TRUE, a short DNF is generated for functions with up to 12 inputs, and a canonical DNF is generated for functions with more than 12 inputs. For objects of class \code{SymbolicBooleanNetwork}, this parameter is ignored. } \item{saveFixed}{ If set to TRUE, knock-outs and overexpression of genes override their transition functions. That is, if a gene in the network is fixed to 0 or 1, this value is exported, regardless of the transition function. If set to FALSE, the transition function is exported. Defaults to TRUE. } } \details{ The export creates an SBML file describing a general logical model that corresponds to the Boolean network. Importing tools must support the \code{sbml-qual} extension package version 1.0. The export translates the expressions that describe the network transition functions to a MathML description. If these expressions cannot be parsed or \code{generateDNFs} is true, a DNF representation of the transition functions is generated and exported. For symbolic networks, temporal operators and delays of more than one time step are not allowed, as they are not compatible with SBML. } \references{ \url{http://sbml.org/Documents/Specifications/SBML_Level_3/Packages/Qualitative_Models_(qual)} } \seealso{ \code{\link{loadSBML}}, \code{\link{loadNetwork}}, \code{\link{saveNetwork}}, \code{\link{toPajek}} } \examples{ # load the cell cycle network data(cellcycle) # export the network to SBML toSBML(cellcycle, file="cellcycle.sbml") # reimport the model print(loadSBML("cellcycle.sbml")) } \keyword{SBML Boolean network file export} �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/man/generationFunctions.Rd������������������������������������������������������������������0000644�0001762�0000144�00000002756�13277247010�016717� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\name{generationFunctions} \alias{generateCanalyzing} \alias{generateNestedCanalyzing} \title{ Generation functions for biologically relevant function classes } \description{ These generation functions randomly generate canalyzing or nested canalyzing Boolean functions. These functions are usually not called directly, but are supplied to the \code{functionGeneration} parameter of \code{\link{generateRandomNKNetwork}}. } \usage{ generateCanalyzing(input) generateNestedCanalyzing(input) } \arguments{ \item{input}{ A vector of input gene indices for the Boolean function } } \value{ A binary vector corresponding to the result column of the truth table that represents the canalyzing/nested canalyzing function. } \references{ S. Kauffman and C. Peterson and B. Samuelsson and C. Troein (2004), Genetic networks with canalyzing Boolean rules are always stable. PNAS 101(49):7102--17107. } \seealso{ \code{\link{generateRandomNKNetwork}} } \examples{ # generate a random network with canalyzing functions net1 <- generateRandomNKNetwork(n=10, k=5, functionGeneration="generateCanalyzing") print(net1) # generate a random network with nested canalyzing functions net2 <- generateRandomNKNetwork(n=10, k=5, functionGeneration="generateNestedCanalyzing") print(net2) } \keyword{canalyzing function nested canalyzing function, random network} ������������������BoolNet/man/fixGenes.Rd�����������������������������������������������������������������������������0000644�0001762�0000144�00000003006�13277247010�014430� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\name{fixGenes} \alias{fixGenes} \title{ Simulate knocked-out or over-expressed genes } \description{ Simulates knocked-out or over-expressed genes by fixing the values of genes to 0 or 1, or turn off knock-out or over-expression of genes. } \usage{ fixGenes(network, fixIndices, values) } \arguments{ \item{network}{ The original network of class \code{BooleanNetwork}, \if{latex}{\cr} \code{SymbolicBooleanNetwork} or \code{ProbabilisticBooleanNetwork} containing the genes to be fixed } \item{fixIndices}{ A vector of names or indices of the genes to be fixed } \item{values}{ Either one single value, or a vector with the same length as \code{fixIndices}. For each gene, a value of 1 means that the gene is always turned on (over-expressed), a value of 0 means that the gene is always turned off (knocked-out), and a value of -1 means that the gene is not fixed. } } \value{ Depending on the input, an object of class \code{BooleanNetwork}, \code{SymbolicBooleanNetwork} or \code{ProbabilisticBooleanNetwork} containing the fixed genes is returned. These classes are described in more detail in \code{\link{loadNetwork}}. } \seealso{ \code{\link{loadNetwork}}} \examples{ # load example data data(cellcycle) # knock out gene CycD (index 1) net <- fixGenes(cellcycle, 1, 0) # or net <- fixGenes(cellcycle, "CycD", 0) # get attractors by exhaustive search attractors <- getAttractors(net) print(attractors) } \keyword{Boolean network probabilistic Boolean network PBN knock-out over-expression fixed gene fix} ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/man/generateState.Rd������������������������������������������������������������������������0000644�0001762�0000144�00000003200�13277247010�015447� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\name{generateState} \alias{generateState} \title{ Generate a state vector from single gene values } \description{ This function provides a simple interface to generate full state vectors by specifying only the genes of interest. For example, only those genes that are active can be specified, while the others are set to a default value. } \usage{ generateState(network, specs, default = 0) } \arguments{ \item{network}{ An network of class \code{BooleanNetwork}, \code{SymbolicBooleanNetwork} or \code{ProbabilisticBooleanNetwork} for which a state is generated. } \item{specs}{ A named vector or list specifying the genes to be set. Here, the names of the elements correspond to the gene names, and the elements correspond to the gene values. The function can also generate a matrix of states if the elements of \code{specs} are vectors of values (of the same length). } \item{default}{ The default value used for the unspecified genes (usually 0). } } \value{ Returns a full state vector with one entry for each gene of the network, or a matrix with one state in each row if \code{specs} contains vectors of state values. } \seealso{ \code{\link{getAttractors}}, \code{\link{simulateSymbolicModel}}, \code{\link{stateTransition}} } \examples{ # load cell cycle network data(cellcycle) # generate a state in which only CycD and CycA are active state <- generateState(cellcycle, c("CycD"=1, "CycA"=1)) print(state) # use the state as a start state for attractor search print(getAttractors(cellcycle, startStates=list(state))) } \keyword{state Boolean network probabilistic Boolean network PBN} ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/man/getBasinOfAttraction.Rd�����������������������������������������������������������������0000644�0001762�0000144�00000004576�13277247010�016747� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\name{getBasinOfAttraction} \Rdversion{1.1} \alias{getBasinOfAttraction} \title{ Get states in basin of attraction } \description{ Extracts information on all states in the basin of a supplied attractor } \usage{ getBasinOfAttraction(attractorInfo, attractorNo) } \arguments{ \item{attractorInfo}{ An object of class \code{AttractorInfo}, as returned by \code{\link{getAttractors}}, or of class \code{SymbolicSimulation}, as returned by \code{\link{simulateSymbolicModel}}. As the transition table information in this structure is required, \code{getAttractors} must be called in synchronous mode and with \code{returnTable} set to TRUE. Similarly, \code{simulateSymbolicModel} must be called with \code{returnGraph=TRUE}. } \item{attractorNo}{ The index of the attractor in \code{attractorInfo} whose basin should be identified } } \details{ The function outputs a transition table containing only the states that are contained in the basin of attraction, and displays additional information on these states. If \code{attractorInfo} is the result of an exhaustive synchronous attractor search, the complete basin of attraction is returned. If \code{attractorInfo} is the result of a heuristic synchronous search, there is no guarantee that the complete basin of attraction is returned, as only the calculated states are included. Asynchronous search results are not supported, as no transition table is calculated. } \value{ Returns a generic dataframe of the class \code{TransitionTable}. For n genes, the first n columns code for the original state, i.e. each column represents the value of one gene. The next n columns code for the successive state after a transition. The column \code{attractorAssignment} indicates the attractor to the state is assigned (in this case, \code{attractorNo}). If this information is available, the column \code{stepsToAttractor} indicates how many transitions are needed from the original state to the attractor. The \code{TransitionTable} class supports pretty printing using the \code{\link{print}} method. } \seealso{ \code{\link{getStateSummary}}, \code{\link{getTransitionTable}}, \code{\link{getAttractors}}, \code{\link{simulateSymbolicModel}} } \examples{ # load example data data(cellcycle) # get attractors attractors <- getAttractors(cellcycle) # print basin of first attractor print(getBasinOfAttraction(attractors, 1)) } \keyword{Boolean network attractor cycle basin} ����������������������������������������������������������������������������������������������������������������������������������BoolNet/man/loadSBML.Rd�����������������������������������������������������������������������������0000644�0001762�0000144�00000003527�13277247010�014265� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\name{loadSBML} \alias{loadSBML} \title{ Load an SBML document } \description{ Loads an SBML document that specifies a qualitative model using the \code{sbml-qual} extension package. } \usage{ loadSBML(file, symbolic=FALSE) } \arguments{ \item{file}{ The SBML document to be imported } \item{symbolic}{ If set to \code{TRUE}, the function returns an object of class \code{SymbolicBooleanNetwork} with an expression tree representation. Otherwise, it returns an object of class \code{BooleanNetwork} with a truth table representation. } } \details{ The import assumes an SBML level 3 version 1 document with the \code{sbml-qual} extension package version 1.0. \pkg{BoolNet} only supports a subset of the \code{sbml-qual} standard. The function tries to import those documents that describe a logical model with two possible values per species. It does not support general logical models with more than two values per species or Petri nets. Further details on the import: \itemize{ \item{The import supports multiple function terms with the same output for a transition and interprets them as a disjunction, as proposed in the specification.} \item{Comparison operators are converted to the corresponding Boolean expressions.} \item{Compartments are ignored.} } For the import, the \pkg{XML} package is required. } \value{ Returns a structure of class \code{BooleanNetwork} or \code{SymbolicBooleanNetwork}, as described in \code{\link{loadNetwork}}. } \references{ \url{http://sbml.org/Documents/Specifications/SBML_Level_3/Packages/Qualitative_Models_(qual)} } \seealso{ \code{\link{toSBML}}, \code{\link{loadNetwork}} } \examples{ # load the cell cycle network data(cellcycle) # export the network to SBML toSBML(cellcycle, "cellcycle.sbml") # reimport the model print(loadSBML("cellcycle.sbml")) } \keyword{SBML Boolean network file import} �������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/man/perturbNetwork.Rd�����������������������������������������������������������������������0000644�0001762�0000144�00000010034�13277247010�015714� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\name{perturbNetwork} \Rdversion{1.1} \alias{perturbNetwork} %- Also NEED an '\alias' for EACH other topic documented here. \title{ Perturb a Boolean network randomly } \description{ Modifies a synchronous, asynchronous, or probabilistic Boolean network by randomly perturbing either the functions for single genes or the state transitions. Random perturbations can be employed to assess the stability of the network. } \usage{ perturbNetwork(network, perturb = c("functions","transitions"), method = c("bitflip","shuffle"), simplify = (perturb[1]!="functions"), readableFunctions = FALSE, excludeFixed = TRUE, maxNumBits = 1, numStates = max(1,2^length(network$genes)/100)) } \arguments{ \item{network}{ A network structure of class \code{BooleanNetwork} or \code{ProbabilisticBooleanNetwork}. These networks can be read from files by \code{\link{loadNetwork}}, generated by \if{latex}{\cr}\code{\link{generateRandomNKNetwork}}, or reconstructed by \code{\link{reconstructNetwork}}. } \item{perturb}{ If set to "functions", a transition function of a single gene is chosen at random and perturbed directly. This is the default mode. If set to "transitions", the transition table is generated, one or several state transitions are perturbed randomly, and the gene transition functions are rebuilt from the modified transition table. \code{perturb="transitions"} is only allowed for non-probabilistic networks of class \code{BooleanNetworks}. } \item{method}{ The perturbation method to be applied to the functions or transitions. "bitflip" randomly inverts one or several bits (depending on the value of \code{maxNumBits}). "shuffle" generates a random permutation of the positions in the function or state and rearranges the bits according to this permutation. } \item{simplify}{ If this is true, \code{\link{simplifyNetwork}} is called to simplify the gene transition functions after the perturbation. This removes irrelevant input genes. Defaults to TRUE if \code{perturb} is "transitions", and to FALSE otherwise. } \item{readableFunctions}{ If this is true, readable DNF representations of the truth tables of the functions are generated. These DNF are displayed when the network is printed. The DNF representations are not minimized and can thus be very long. If set to FALSE, the truth table result column is displayed. } \item{excludeFixed}{ Determines whether fixed variables can also be perturbed (if set to FALSE) or if they are excluded from the perturbation (if set to TRUE). Default is TRUE. } \item{maxNumBits}{ The maximum number of bits to be perturbed in one function or state. Defaults to 1. } \item{numStates}{ The number of state transitions to be perturbed if \code{perturb} is "transitions". Defaults to 1% of all states. } } \value{ Depending on the input, an object of class \code{BooleanNetwork} or \code{ProbabilisticBooleanNetwork} containing the perturbed copy of the original network is returned. The classes \code{BooleanNetwork} and \code{ProbabilisticBooleanNetwork} are described in more detail in \code{\link{loadNetwork}}. } \seealso{ \code{\link{loadNetwork}}, \code{\link{generateRandomNKNetwork}}, \code{\link{reconstructNetwork}}, \code{\link{simplifyNetwork}}} \examples{ # load example data data(cellcycle) # perturb the network perturbedNet1 <- perturbNetwork(cellcycle, perturb="functions", method="shuffle") perturbedNet2 <- perturbNetwork(cellcycle, perturb="transitions", method="bitflip") # get attractors print(getAttractors(perturbedNet1)) print(getAttractors(perturbedNet2)) } \references{ Y. Xiao and E. R. Dougherty (2007), The impact of function perturbations in Boolean networks. Bioinformatics 23(10):1265--1273. I. Shmulevich, E. R. Dougherty, W. Zhang (2002), Control of stationary behavior in probabilistic Boolean networks by means of structural intervention. Journal of Biological Systems 10(4):431--445. } \keyword{Boolean network probabilistic Boolean network PBN state perturb perturbation noise robustness} ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/man/BoolNet-package.Rd����������������������������������������������������������������������0000644�0001762�0000144�00000014457�13301234400�015612� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\name{BoolNet-package} \Rdversion{1.1} \alias{BoolNet-package} \alias{BoolNet} \docType{package} \title{Construction, Simulation and Analysis of Boolean Networks} \description{Tools for reconstruction, analysis and visualization of synchronous, asynchronous and probabilistic Boolean networks, in particular for the identification of attractors in gene-regulatory networks} \details{ \tabular{ll}{ Package: \tab BoolNet\cr Type: \tab Package\cr Version: \tab 2.1.4\cr Date: \tab 2018-05-23\cr License: \tab Artistic-2.0\cr LazyLoad: \tab yes\cr } This package provides useful methods for the construction and generation of Boolean networks and for their analysis. In particular, it is designed for the analysis of gene-regulatory networks. The software supports four types of networks: \describe{ \item{Synchronous Boolean networks}{These networks consist of a set of Boolean variables (genes) \var{X} and a set of transition functions, one for each variable. These transition functions map an input from the set \var{X} to a Boolean value. A state is a vector of values for each of the variables in \var{X}. Then, the next state of the network is calculated by applying \emph{all} transition functions to the state.} \item{Asynchronous Boolean networks}{Asynchronous networks have the same structure as synchronous Boolean networks. Yet, the next state of the network is calculating by choosing only \emph{one} of the transition functions at random and updating the corresponding Boolean variable (gene). This corresponds to the assumption that in a genetic network, gene expression levels are likely to change at different points of time.} \item{Synchronous Boolean networks with time delays}{These networks additionally include dependencies on genes at time steps other than the previous time step. That is, not only the immediate predecessor state is considered to determine the next state of the network, but earlier states can be considered as well. Furthermore, it is possible to use predicates that depend on the absolute time point, i.e. the number of transitions from an initial state. } \item{Probabilistic Boolean networks}{Probabilistic networks allow for specifying more than one transition function per variable/gene. Each of these functions has a probability to be chosen, where the probabilities of all functions for one variable sum up to 1. Transitions are performed synchronously by choosing one transition function for each gene according to their probabilities and applying them to the current state.} } Networks can be assembled in several ways using \pkg{BoolNet}: The \code{\link{reconstructNetwork}} function infers Boolean networks from time series of measurements using several popular reconstruction algorithms. \code{\link{binarizeTimeSeries}} provides a means of binarizing real-valued time series for these reconstruction algorithms. Boolean networks (synchronous, asynchronous, and probabilistic networks) can also be expressed in a description language and loaded from files using \code{\link{loadNetwork}} or stored to files using \code{\link{saveNetwork}}. Furthermore, networks can be imported from BioTapestry using \code{\link{loadBioTapestry}} and from SBML with the \code{sbml-qual} package using \code{\link{loadSBML}}. The package also includes an export to SBML (see \code{\link{toSBML}}). Via \code{\link{generateRandomNKNetwork}} and \code{\link{perturbNetwork}}, the package supports various methods of generating random networks and perturbing existing networks for robustness analysis. The \code{\link{getAttractors}} function identifies attractor cycles in a synchronous or asynchronous Boolean network. Attractors can be identified by exhaustive search or heuristic methods. For networks with time delays, the function \code{simulateSymbolicModel} simulates the model and identifies attractors. The \code{\link{markovSimulation}} function identifies relevant states in probabilistic Boolean networks by performing a Markov chain simulation. The package also provides methods to visualize state transitions and basins of attraction \if{latex}{\cr} (\code{\link{plotPBNTransitions}}, \code{\link{plotStateGraph}}), to plot the wiring of a network \if{latex}{\cr}(\code{\link{plotNetworkWiring}}), to plot attractor state tables (\code{\link{plotAttractors}}) and sequences of states (\code{\link{plotSequence}}), and to export them to LaTeX (\code{\link{attractorsToLaTeX}} and \code{\link{sequenceToLaTeX}}) and Pajek (\code{\link{toPajek}}). Transition tables of the network can be analyzed using \code{\link{getTransitionTable}}. Paths from start states to their corresponding attractors are identified using \code{\link{getPathToAttractor}}. } \author{ Christoph Müssel, Martin Hopfensitz, Dao Zhou, Hans A. Kestler Contributors: Armin Biere (contributed PicoSAT code), Troy D. Hanson (contributed uthash macros) Maintainer: Hans A. Kestler <hans.kestler@uni-ulm.de> } \references{ S. A. Kauffman (1969), Metabolic stability and epigenesis in randomly constructed nets. J. Theor. Biol. 22:437--467. S. A. Kauffman (1993), The Origins of Order. Oxford University Press. Further references are listed in the corresponding help sections. } \keyword{package Boolean network probabilistic Boolean network PBN attractor cycle basin transition Markov chain simulation state graph reconstruction} \examples{ ################################## # Example 1: identify attractors # ################################## # load example data data(cellcycle) # get all synchronous attractors by exhaustive search attractors <- getAttractors(cellcycle) # plot attractors side by side par(mfrow=c(2,length(attractors$attractors))) plotAttractors(attractors) # identifies asynchronous attractors attractors <- getAttractors(cellcycle, type="asynchronous", startStates=100) plotAttractors(attractors, mode="graph") #################################### # Example 2: reconstruct a network # #################################### # load example data data(yeastTimeSeries) # perform binarization with k-means bin <- binarizeTimeSeries(yeastTimeSeries) # reconstruct networks from transition table net <- reconstructNetwork(bin$binarizedMeasurements, method="bestfit", maxK=3, returnPBN=TRUE) # analyze the network using a Markov chain simulation print(markovSimulation(net, returnTable=FALSE)) } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/man/getAttractors.Rd������������������������������������������������������������������������0000644�0001762�0000144�00000035553�13277247010�015522� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\name{getAttractors} \Rdversion{1.1} \alias{getAttractors} %- Also NEED an '\alias' for EACH other topic documented here. \title{Identify attractors in a Boolean network} \description{Identifies attractors (cycles) in a supplied Boolean network using synchronous or asynchronous state transitions} \usage{ getAttractors(network, type = c("synchronous","asynchronous"), method = c("exhaustive", "sat.exhaustive", "sat.restricted", "random", "chosen"), startStates = list(), genesON = c(), genesOFF = c(), canonical = TRUE, randomChainLength = 10000, avoidSelfLoops = TRUE, geneProbabilities = NULL, maxAttractorLength = Inf, returnTable = TRUE) } \arguments{ \item{network}{ A network structure of class \code{BooleanNetwork} or \code{SymbolicBooleanNetwork}. These networks can be read from files by \code{\link{loadNetwork}}, generated by \code{\link{generateRandomNKNetwork}}, or reconstructed by \code{\link{reconstructNetwork}}. } \item{type}{ If \code{type="synchronous"}, synchronous state transitions are used, i.e. all genes are updated at the same time. Synchronous attractor search can be performed in an exhaustive manner or using a heuristic that starts from predefined states. For symbolic networks, only synchronous updates are possible. If \code{type="asynchronous"}, asynchronous state transitions are performed, i.e. one (randomly chosen) gene is updated in each transition. Steady-state attractors are the same in asynchronous and synchronous networks, but the asynchronous search is also able to identify complex/loose attractors. Asynchronous search relies on a heuristic algorithm that starts from predefined states. See Details for more information on the algorithms. } \item{method}{ The search method to be used. If "exhaustive", attractors are identified by exhaustive state space search, i.e. by calculating the sucessors of all 2^n states (where n is the number of genes that are not set to a fixed value). This kind of search is only available for synchronous attractor search, and the maximum number of genes allowed for exhaustive search is 29. Apart from the attractors, this method generates the full state transition graph. If \code{method} is "sat.exhaustive" or "sat.restricted", attractors are identified using algorithms based on the satisfiability problem. This search type is also restricted to synchronous networks. It can be used to identify attractors in much larger networks than with \code{method="exhaustive"}, but does not return the state transition graph. For \code{method="sat.exhaustive"}, an exhaustive attractor search is performed, while \code{method="sat.restricted"} only searches for attractors of a specified maximum length \code{maxAttractorLength}. If \code{method} is "random", \code{startStates} is interpreted as an integer value specifying the number of states to be generated randomly. The algorithm is then initialized with these random states and identifies the attractors to which these states lead. If \code{method} is "chosen", \code{startStates} is interpreted as a list of binary vectors, each specifying one input state. Each vector must have \code{length(network$genes)} elements with 0 or 1 values. The algorithm identifies the attractors to which the supplied states lead. If \code{network} is of class \code{SymbolicBooleanNetwork} and makes use of more than one predecessor state, this can also be a list of matrices with the genes in the columns and multiple predecessor states in the rows. If \code{method} is not supplied, the desired method is inferred from the type of \code{startStates}. By default, if neither \code{method} nor \code{startStates} are provided, an exhaustive search is performed. } \item{startStates}{ The value of \code{startStates} depends on the chosen method. See \code{method} for more details. } \item{genesON}{ A vector of genes whose values are fixed to 1, which reduces the complexity of the search. This is equivalent to a preceding call of \code{\link{fixGenes}}. } \item{genesOFF}{ A vector of genes whose values are fixed to 0, which reduces the complexity of the search. This is equivalent to a preceding call of \code{\link{fixGenes}}. } \item{canonical}{ If set to true, the states in the attractors are rearranged such that the state whose binary encoding makes up the smallest number is the first element of the vector. This ensures that attractors found by different heuristic runs of \code{getAttractors} are comparable, as the cycles may have been entered at different states in different runs of the algorithm. } \item{randomChainLength}{ If \code{type="asynchronous"}, this parameter specifies the number of random transitions performed by the search to enter a potential attractor (see Details). Defaults to 10000. } \item{avoidSelfLoops}{ If \code{type="asynchronous"} and \code{avoidSelfLoops=TRUE}, the asynchronous attractor search only enters self loops (i.e. transitions that result in the same state) if none of the possible transitions can leave the state. This results in attractors with fewer edges. Otherwise, self loops are included in the attractors. By default, self loops are avoided. } \item{geneProbabilities}{ If \code{type="asynchronous"}, this allows to specify probabilities for the genes. By default, each gene has the same probability to be chosen for the next state transition. You can supply a vector of probabilities for each of the genes which sums up to one. } \item{maxAttractorLength}{If \code{method="sat.restricted"}, this required parameter specifies the maximum size of attractors (i.e. the number of states in the loop) to be searched. For \code{method="sat.exhaustive"}, this parameter is optional and specifies the maximum attractor length for the initial length-restricted search phase that is performed to speed up the subsequent exhaustive search. In this case, changing this value might bring performance benefits, but does not change the results.} \item{returnTable}{ Specifies whether a transition table is included in the returned \code{AttractorInfo} structure. If \code{type="asynchronous"} or \code{method="sat"}, this parameter is ignored, as the corresponding algorithms never return a transition table. } } \details{ Depending on the type of network and the chosen parameters, different search algorithms are started. For \code{BooleanNetwork} networks, there are three different modes of attractor search: \describe{ \item{Exhaustive synchronous state space search}{ In this mode, synchronous state transitions are carried out from each of the possible states until an attractor is reached. This identifies all synchronous attractors. } \item{Heuristic synchronous state space search}{ In contrast to exhaustive synchronous search, only a subset of the possible states is used. From these states, synchronous transitions are carried out until an attractor is reached. This subset is specified in \code{startStates}. } \item{Exhaustive synchronous SAT-based search}{ Here, the attractor search problem is formulated as a satisfiability problem and solved using Armin Biere's PicoSAT solver. The algorithm is a variant of the method by Dubrova and Teslenko which searches for a satisfying assignment of a chain constructed by unfolding the transition relation. Depending on \code{maxAttractorLength}, it additionally applies an initial size-restricted SAT-based search (see below) to increase overall search speed. This method is suitable for larger networks of up to several hundreds of genes and exhaustively identifies all attractors in these networks. In contrast to the state space search, it does not construct and return a state transition table. } \item{Size-restricted synchronous SAT-based search}{ Here, the SAT solver directly looks for satisfying assignments for loops of a specific size. This may be more efficient for large networks and is guaranteed to find all attractors that comprise up to \code{maxAttractorLength} states (e.g. all steady states for \code{maxAttractorLength=1}) , but does not find any larger attractors. As for the exhaustive SAT-based method, no transition table is returned. } \item{Heuristic asynchronous search}{ This algorithm uses asynchronous state transitions and is able to identify steady-state and complex/loose attractors (see Harvey and Bossomaier, Garg et al.). These attractors are sets of states from which all possible asynchronous transitions lead into a state that is member of the set as well. The heuristic algorithm does the following for each of the input state specified by \code{startStates}: \enumerate{ \item Perform \code{randomChainLength} random asynchronous transitions. After these transitions, the network state is expected to be located in an attractor with a high probability. \item Calculate the forward reachable set of the current state. Then, compare this set to the forward reachable set of all states in the set. If all sets are equal, a complex attractor is found. } } For \code{SymbolicBooleanNetwork} networks, \code{getAttractors} is simply a wrapper for \code{\link{simulateSymbolicModel}} with preset parameters. } Printing the return value of \code{getAttractors} using \code{\link{print}} visualizes the identified attractors.} \value{ For \code{BooleanNetwork} networks, this returns a list of class \code{AttractorInfo} with components \item{attractors}{A list of attractors. Each element is a 2-element list with the following components: \describe{ \item{involvedStates}{A matrix containing the states that make up the attractor. Each column represents one state. The entries are decimal numbers that internally represent the states of the genes. The number of rows depends on the number of genes in the network: The first 32 genes are encoded in the first row, genes 33-64 are encoded in the second row, etc.} \item{initialStates}{This element is only available if an asynchronous search was carried out and this is a complex attractor. In this case, it holds the encoded start states of the transitions in the complex attractor} \item{nextStates}{This element is only available if an asynchronous search was carried out and this is a complex attractor. In this case, it holds the encoded successor states of the transitions in the complex attractor} \item{basinSize}{The number of states in the basin of attraction. Details on the states in the basin can be retrieved via \code{\link{getBasinOfAttraction}}.} }} \item{stateInfo}{A summary structure of class \code{BooleanStateInfo} containing information on the transition table. It has the following components: \describe{ \item{initialStates}{This element is only available if \code{type="synchronous"}, \code{method} is "random" or "chosen", and \code{returnTable=TRUE}. This is a matrix describing the initial states that lead to the states in \code{table} after a state transition. If \code{method} is "exhaustive", this component is \code{NULL}. In this case, the initial states can be inferred, as all states are used. The format of the matrix is described in \code{involvedStates}.} \item{table}{This element is only available if \code{type="synchronous"} and \if{latex}{\cr}\code{returnTable=TRUE}. It holds result vector of the transition table as a matrix with one column for each state. These are encoded bit vectors in decimal numbers as described above.} \item{attractorAssignment}{This element is only available if \code{type="synchronous"} and \code{returnTable=TRUE}. It contains a vector that corresponds to the entries in \code{table} and describes the attractor index in \code{attractors} to which successive transitions from the described state finally lead.} \item{stepsToAttractor}{This element is only available if \code{type="synchronous"} and \code{returnTable=TRUE}. Referring to \code{attractorAssignment}, this is the number of transitions needed to reach the attractor.} \item{genes}{A list of names of the genes in \code{network}.} \item{fixedGenes}{Specifies the fixed genes as in the \code{fixed} component of \code{network}.} } The structure supports pretty printing using the \code{\link{print}} method.} For \code{SymbolicBooleanNetwork} networks, \code{getAttractors} redirects the call to \code{\link{simulateSymbolicModel}} and returns an object of class \code{SymbolicSimulation} containing the attractors and (if \code{returnTable=TRUE}) the transition graph. } \references{ S. A. Kauffman (1969), Metabolic stability and epigenesis in randomly constructed nets. J. Theor. Biol. 22:437--467. S. A. Kauffman (1993), The Origins of Order. Oxford University Press. I. Harvey, T. Bossomaier (1997), Time out of joint: Attractors in asynchronous random Boolean networks. Proc. of the Fourth European Conference on Artificial Life, 67--75. A. Garg, A. Di Cara, I. Xenarios, L. Mendoza, G. De Micheli (2008), Synchronous versus asynchronous modeling of gene regulatory networks. Bioinformatics 24(17):1917--1925. E. Dubrova, M. Teslenko (2011), A SAT-based algorithm for finding attractors in synchronous Boolean networks. IEEE/ACM Transactions on Computational Biology and Bioinformatics 8(5):1393--1399. A. Biere (2008), PicoSAT Essentials. Journal on Satisfiability, Boolean Modeling and Computation 4:75-97. } \seealso{ \code{\link{loadNetwork}}, \code{\link{generateRandomNKNetwork}}, \code{\link{simulateSymbolicModel}}, \code{\link{plotAttractors}}, \code{\link{attractorsToLaTeX}}, \code{\link{getTransitionTable}}, \code{\link{getBasinOfAttraction}}, \code{\link{getAttractorSequence}}, \code{\link{getStateSummary}}, \code{\link{getPathToAttractor}}, \code{\link{fixGenes}}, \code{\link{generateState}} } \examples{ # load example data data(cellcycle) # get all synchronous attractors by exhaustive search attractors <- getAttractors(cellcycle) # plot attractors side by side par(mfrow=c(2, length(attractors$attractors))) plotAttractors(attractors) # finds the synchronous attractor with 7 states attractors <- getAttractors(cellcycle, method="chosen", startStates=list(rep(1, length(cellcycle$genes)))) plotAttractors(attractors) # finds the attractor with 1 state attractors <- getAttractors(cellcycle, method="chosen", startStates=list(rep(0, length(cellcycle$genes)))) plotAttractors(attractors) # also finds the attractor with 1 state by restricting the attractor length attractors <- getAttractors(cellcycle, method="sat.restricted", maxAttractorLength=1) plotAttractors(attractors) # identifies asynchronous attractors attractors <- getAttractors(cellcycle, type="asynchronous", startStates=100) plotAttractors(attractors, mode="graph") } % Add one or more standard keywords, see file 'KEYWORDS' in the % R documentation directory. \keyword{Boolean network synchronous update asynchronous update symbolic Boolean network attractor cycle basin} �����������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/man/attractorsToLaTeX.Rd��������������������������������������������������������������������0000644�0001762�0000144�00000007040�13277247010�016251� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\name{attractorsToLaTeX} \Rdversion{1.1} \alias{attractorsToLaTeX} %- Also NEED an '\alias' for EACH other topic documented here. \title{ Create LaTeX state table of attractors } \description{ Exports state tables of attractors (corresponding to the plot generated by \code{\link{plotAttractors}} with \code{mode="table"}) to a LaTeX document. } \usage{ attractorsToLaTeX(attractorInfo, subset, title = "", grouping = list(), plotFixed = TRUE, onColor = "[gray]{0.9}", offColor = "[gray]{0.6}", reverse = FALSE, file = "attractors.tex") } \arguments{ \item{attractorInfo}{ An object of class \code{AttractorInfo}, as returned by \code{\link{getAttractors}}, or an object of class \code{SymbolicSimulation}, as returned by \code{\link{simulateSymbolicModel}}. } \item{subset}{An subset of attractors to be exported. This is a vector of attractor indices in \code{attractorInfo}.} \item{grouping}{An optional structure to form groups of genes in the plot. This is a list with the following elements: \describe{ \item{class}{A vector of names for the groups. These names will be printed in the region belonging to the group in the table.} \item{index}{A list with the same length as \code{class}. Each element is a vector of gene indices belonging to the group.}} } \item{title}{ An optional title for the plot } \item{plotFixed}{ If this is true, genes with fixed values are included in the plot. Otherwise, these genes are not shown. } \item{onColor}{ An optional color value for the 1/ON values in the table. Defaults to dark grey. } \item{offColor}{ An optional color value for the 0/OFF values in the table. Defaults to light grey. } \item{reverse}{ Specifies the order of the genes in the plot. By default, the first gene is placed in the first row of the table. If \code{reverse=TRUE}, the first gene in the network is placed in the bottom row of the table. } \item{file}{ The file to which the LaTeX document is written. Defaults to "attractors.tex". } } \details{ This function creates LaTeX tables that visualize the states of synchronous attractors. Asynchronous attractors are ignored. Attractors in \code{attractorInfo} are first grouped by length. Then, a LaTeX table environment is created for each attractor length (i.e. one plot with all attractors consisting of 1 state, one plot with all attractors consisting of 2 states, etc.). The output file does not contain a document header and requires the inclusion of the packages \code{tabularx} and \code{colortbl}. The tables have the genes in the rows and the states of the attractors in the columns. If not specified otherwise, cells of the table are light grey for 0/OFF values and dark grey for 1/ON values. If \code{grouping} is set, the genes are rearranged according to the indices in the group, horizontal separation lines are plotted between the groups, and the group names are printed. } \value{ A list of matrices corresponding to the plots is returned. Each of these matrices has the genes in the rows and the states of the attractors in the columns. } \seealso{ \code{\link{getAttractors}}, \code{\link{plotAttractors}}, \code{\link{sequenceToLaTeX}}, \code{\link{plotSequence}} } \examples{ # load example data data(cellcycle) # get attractors attractors <- getAttractors(cellcycle) # output LaTeX document attractorsToLaTeX(attractors, file="attractors.tex") } \keyword{LaTeX Boolean network attractor cycle basin transition state graph} ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/man/cellcycle.Rd����������������������������������������������������������������������������0000644�0001762�0000144�00000001705�13277247010�014623� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\name{cellcycle} \alias{cellcycle} \docType{data} \title{ Mammalian cell cycle network } \description{ The mammalian cell cycle network as described by Faure et al. } \usage{data(cellcycle)} \details{ The data consists of a variable \code{cellcycle} of class \code{BooleanNetwork} with 10 genes describing the four phases of the mammalian cell cycle. The network has one steady-state attractor. Furthermore, it has one synchronous attractor with 7 states and one asynchronous complex/loose attractor with 112 states. The class \code{BooleanNetwork} is described in more detail in \code{\link{loadNetwork}}. } \source{ A. Faure, A. Naldi, C. Chaouiya and D. Thieffry (2006), Dynamical analysis of a generic Boolean model for the control of the mammalian cell cycle. Bioinformatics 22(14):e124--e131. } \examples{ data(cellcycle) # the network is stored in a variable called 'cellcycle' print(cellcycle) } \keyword{datasets cell cycle mammalian Boolean network} �����������������������������������������������������������BoolNet/man/testNetworkProperties.Rd����������������������������������������������������������������0000644�0001762�0000144�00000032513�13277247010�017273� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\name{testNetworkProperties} \alias{testNetworkProperties} \alias{testIndegree} \alias{testAttractorRobustness} \alias{testTransitionRobustness} \title{ Test properties of networks by comparing them to random networks } \description{ This is a general function designed to determine unique properties of biological networks by comparing them to a set of randomly generated networks with similar structure. } \usage{ testNetworkProperties(network, numRandomNets = 100, testFunction = "testIndegree", testFunctionParams = list(), accumulation = c("characteristic", "kullback_leibler"), alternative=c("greater","less"), sign.level = 0.05, drawSignificanceLevel = TRUE, klBins, klMinVal = 1e-05, linkage = c("uniform", "lattice"), functionGeneration = c("uniform", "biased"), validationFunction, failureIterations=10000, simplify = FALSE, noIrrelevantGenes = TRUE, d_lattice = 1, zeroBias = 0.5, title = "", xlab, xlim, breaks = 30, ...) } \arguments{ \item{network}{ A network structure of class \code{BooleanNetwork} or \code{SymbolicBooleanNetwork} } \item{numRandomNets}{ The number of random networks to generate for comparison } \item{testFunction}{ The name of a function that calculates characteristic values that describe properties of the network. There are two built-in functions: "testIndegree" calculates the in-degrees of states in the network, and "testAttractorRobustness" counts the occurrences of attractors in perturbed copies. It is possible to supply user-defined functions here. See Details. } \item{testFunctionParams}{ A list of parameters to \code{testFunction}. The elements of the list depend on the chosen function. } \item{accumulation}{ If "characteristic" is chosen, the test function is required to return a single value that describes the network. In this case, a histogram of these values in random networks is plotted, and the value of the original network is inserted as a vertical line. If "kullback_leibler" is chosen, the test function can return a vector of values which is regarded as a sample from a probability distribution. In this case, the Kullback-Leibler distances of the distributions from the original network and each of the random networks are calculated and plotted in a histogram. The Kullback-Leibler distance measures the difference between two probability distributions. In this case, the resulting histogram shows the distribution of differences between the original network and randomly generated networks. } \item{alternative}{ If \code{accumulation="characteristic"}, this specifies whether the characteristic value is expected to be greater or less than the random results under the alternative hypothesis. } \item{sign.level}{ If \code{accumulation="characteristic"}, this specifies a significance level for a computer-intensive test. If \code{alternative="greater"}, the test is significant if the characteristic value is greater than at least \code{(1-sign.level)*100}\% of the characteristic values of the random networks. If \code{alternative="less"}, the test is significant if the characteristic value is less than at most \code{sign.level*100}\% of the characteristic values of the random networks. } \item{drawSignificanceLevel}{ If \code{accumulation="characteristic"} and this is true, a vertical line is plotted for the significance level in the histogram. } \item{linkage, functionGeneration, validationFunction, failureIterations, simplify, noIrrelevantGenes, d_lattice, zeroBias}{ The corresponding parameters of \code{\link{generateRandomNKNetwork}} used to generate the random networks. This allows for customization of the network generation process. The three remaining parameters of \code{\link{generateRandomNKNetwork}} are set to values that ensure structural similarity to the original network: The parameters \code{n} and \code{k} are set to the corresponding values of the original network, and \code{topology="fixed"}. } \item{klBins}{ If \code{accumulation="kullback_leibler"}, the number of bins used to discretize the samples for the Kullback-Leibler distance calculations. By default, each unique value in the samples has its own bin, i.e. no further discretization is performed. The influence of discretization on the resulting histogram may be high. } \item{klMinVal}{ If \code{accumulation="kullback_leibler"}, this defines the minimum probability for the calculation of the Kullback-Leibler distance to ensure stability of the results. } \item{title}{ The title of the plots. This is empty by default. } \item{xlab}{ Customizes label of the x axis of the histogram. For the built-in test functions, the x axis label is set automatically. } \item{xlim}{ Customizes the limits of the x axis of the histogram. For the built-in test functions, suitable values are chosen automatically. } \item{breaks}{ Customizes the number of breaks in the } \item{\dots}{ Further graphical parameters for \code{\link{hist}} } } \details{ This function generically compares properties of biological networks to a set of random networks. It can be extended by supplying custom functions to the parameter \code{testFunction}. Such a function must have the signature \code{function(network, accumulate=TRUE, params)} \describe{ \item{network}{This is the network to test. In the process of the comparison, both the original network and the random networks are passed to the function} \item{accumulate}{If \code{accumulate=TRUE}, the function must return a single value quantifying the examined property of the network. If \code{accumulate=FALSE}, the function can return a vector of values (e.g., one value for each gene/state etc.)} \item{params}{A list of further parameters for the function supplied by the user in \code{testFunctionParams} (see above). This can contain any type of information your test function needs.} } Three built-in functions for synchronous Boolean networks already exist: \describe{ \item{testIndegree}{This function is based on the observation that, often, in biological networks, many state transitions lead to the same states. In other words, there is a small number of "hub" states. In the state graph, this means that the in-degree of some states (i.e., the number of transitions leading to it) is high, while the in-degree of many other states is 0. We observed that random networks do not show this behaviour, thus it may be a distinct property of biological networks. For this function, the parameter \code{alternative} of \code{testNetworkProperties} should be set to "greater". The function does not require any parameter entries in \code{params}. If \code{accumulate=FALSE}, it returns the in-degrees of all synchronous states in the network. If \code{accumulate=TRUE}, the Gini index of the in-degrees is returned as a characteristic value of the network. The Gini index is a measure of inequality. If all states have an in-degree of 1, the Gini index is 0. If all state transitions lead to one single state, the Gini index is 1. This function requires the \pkg{igraph} package for the analysis of the in-degrees. } \item{testAttractorRobustness}{This function tests the robustness of attractors in a network to noise. We expect attractors in a real network to be less susceptible to noise than attractors in randomly generated networks, as biological processes can be assumed to be comparatively stable. There are modes of generating noise: Either the functions of the network can be perturbed, or the state trajectories can be perturbed in a simulation of the network. If \code{perturb="functions"} or \code{perturb="transitions"}, the function generates a number of perturbed copies of the network using \code{\link{perturbNetwork}} and checks whether the original attractors can still be found in the network. If \code{perturb="trajectories"}, the network itself is not perturbed. Instead, a set of random initial states is generated, and a set of perturbed states is generated from these initial states by flipping one or more bits. Then, the function tests whether the attractors are the same for the initial states and the corresponding perturbed states. This corresponds to calling \code{\link{perturbTrajectories}} with \code{measure="attractor"}. \code{params} can hold a number of parameters: \describe{ \item{numSamples}{If \code{perturb="trajectories"}, the number of randomly generated state pairs to generate. Otherwise the number of perturbed networks that are generated.} \item{perturb}{Specifies the type of perturbation to be applied (possible values: \code{"functions"}, \code{"transitions"} and \code{"trajectories"} -- see above).} \item{method, simplify, readableFunctions, excludeFixed, maxNumBits, numStates}{ If \code{perturb="functions"} or \code{perturb="transitions"}, these are the corresponding parameters of \code{\link{perturbNetwork}} that influence the way the network is perturbed.} \item{flipBits}{ If \code{perturb="trajectories"}, the are the corresponding parameters of \code{\link{perturbTrajectories}} that defines how many bits are flipped.} } If {perturb="functions"} or \code{perturb="transitions"} and \code{accumulate=FALSE}, the function returns a vector of percentages of original attractors found in each of the perturbed copies of the original network. If \code{accumulate=TRUE}, the function returns the overall percentage of original attractors found in all perturbed copies. If \code{perturb="trajectories"} and \code{accumulate=FALSE}, the function returns a logical vector of length \code{numSamples} specifying whether the attractor was the same for each initial state and the corresponding perturbed state. If \code{accumulate=TRUE}, the function returns the percentage of pairs of initial states and perturbed states for which the attractors were the same. For this function, the parameter \code{alternative} of \code{testNetworkProperties} should be set to "greater". } \item{testTransitionRobustness}{This function calls \code{perturbTrajectories} with \code{measure="hamming"} to measure the average Hamming distance between successor states of randomly generated initial states and perturbed copies of these states. code{params} can hold parameters \code{numSamples, flipBits} corresponding to the parameters of \code{\link{perturbTrajectories}} that define how many initial states are drawn and how many bits are flipped. If \code{accumulate=FALSE}, the function returns a numeric vector of length \code{numSamples} with the normalized Hamming distances of all pairs of initial states and perturbed copies. If \code{accumulate=TRUE}, the mean normalized Hamming distance over all pairs is returned. For this function, the parameter \code{alternative} of \code{testNetworkProperties} should be set to "less". } } } \value{ The function returns a list with the following elements \item{hist}{The histogram that was plotted. The type of histogram depends on the parameter \code{accumulation}.} \item{pval}{If \code{accumulation="characteristic"}, a p-value for the alternative hypothesis that the test statistic value of the supplied network is greater than the value of a randomly generated network is supplied.} \item{significant}{If \code{accumulation="characteristic"}, this is true for \code{pval < sign.level}.} } \seealso{ \code{\link{generateRandomNKNetwork}}, \code{\link{perturbNetwork}}, \code{\link{perturbTrajectories}}, \code{\link{plotStateGraph}}, \code{\link{getAttractors}} } \examples{ # load mammalian cell cycle network data(cellcycle) if (interactive()) # do not run these examples in the package check, as they take some time { # compare the in-degrees of the states in the # cell cycle network to random networks testNetworkProperties(cellcycle, testFunction="testIndegree", alternative="greater") # compare the in-degrees of the states in the # cell cycle network to random networks, # and plot the Kullback-Leibler distances of the 100 experiments testNetworkProperties(cellcycle, testFunction="testIndegree", accumulation = "kullback_leibler") # compare the robustness of attractors in the cell cycle network # to random networks by perturbing the networks testNetworkProperties(cellcycle, testFunction="testAttractorRobustness", testFunctionParams=list(perturb="functions", numSamples=10), alternative="greater") # compare the robustness of attractors in the cell cycle network # to random networks by perturbing the state trajectories testNetworkProperties(cellcycle, testFunction="testAttractorRobustness", testFunctionParams=list(perturb="trajectories", numSamples=10), alternative="greater") # compare the robustness of single state transitions in the cell cycle network testNetworkProperties(cellcycle, testFunction="testTransitionRobustness", testFunctionParams=list(numSamples=10), alternative="less") } } \keyword{robustness analysis perturbation in-degree} �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/man/sequenceToLaTeX.Rd����������������������������������������������������������������������0000644�0001762�0000144�00000013352�13277247010�015676� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\name{sequenceToLaTeX} \alias{sequenceToLaTeX} \alias{sequenceToLaTeX.BooleanNetwork} \alias{sequenceToLaTeX.data.frame} %- Also NEED an '\alias' for EACH other topic documented here. \title{ Create LaTeX table of state sequences } \description{ Exports tables of state sequences (corresponding to the plot generated by \code{\link{plotSequence}} with \code{mode="table"}) to a LaTeX document. } \usage{ sequenceToLaTeX(network, startState, includeAttractorStates = c("all","first","none"), sequence, title = "", grouping = list(), plotFixed = TRUE, onColor="[gray]{0.9}", offColor="[gray]{0.6}", highlightAttractor=TRUE, reverse = FALSE, file="sequence.tex") } \arguments{ \item{network}{ An object of class \code{BooleanNetwork} or \code{SymbolicBooleanNetwork} for which a sequence of state transitions is calculated } \item{startState}{ The start state of the sequence } \item{includeAttractorStates}{ Specifies whether the actual attractor states are included in the table or not (see also \code{\link{getPathToAttractor}}). If \code{includeAttractorStates = "all"} (which is the default behaviour), the sequence ends when the attractor was traversed once. If \code{includeAttractorStates = "first"}, only the first state of attractor is added to the sequence. If {includeAttractorStates = "none"}, the sequence ends with the last non-attractor state. } \item{sequence}{ The alternative call to \code{sequenceToLaTeX} requires the specification of the sequence itself instead of the network and the start state. The sequence must be provided as a data frame with the genes in the columns and the successive states in the rows. For example, sequences can be obtained using \code{\link{getPathToAttractor}} or \code{\link{getAttractorSequence}} (however, the specialized function \code{\link{attractorsToLaTeX}} exists for attractors). } \item{title}{ An optional title for the table } \item{plotFixed}{If this is true, genes with fixed values are included in the plot. Otherwise, these genes are not shown. } \item{grouping}{This optional parameter specifies a structure to form groups of genes in the table. This is a list with the following elements: \describe{ \item{class}{A vector of names for the groups. These names will be printed in the region belonging to the group in the tabke.} \item{index}{A list with the same length as \code{class}. Each element is a vector of gene names or gene indices belonging to the group.}} } \item{onColor}{ An optional color value for the 1/ON values in the table. Defaults to dark grey. } \item{offColor}{ An optional color value for the 0/OFF values in the table. Defaults to light grey. } \item{highlightAttractor}{ If set to true, the attractor states are highlighted in the plot by drawing a line at the begin of the attractor and labeling the states correspondingly. Information on the attractor must be supplied in the attribute \code{attractor} of the sequence, which is a vector of indices of the states that belong to the attractor. This attribute is usually present if the sequence was obtained using \code{\link{getPathToAttractor}}. } \item{reverse}{ Specifies the order of the genes in the plot. By default, the first gene is placed in the first row of the table. If \code{reverse=TRUE}, the first gene in the network is placed in the bottom row of the table. } \item{file}{ The file to which the LaTeX document is written. Defaults to "sequence.tex". } } \details{ This function creates a LaTeX table that visualizes a sequence of states in a synchronous network. The output file does not contain a document header and requires the inclusion of the packages \code{tabularx} and \code{colortbl}. The tables have the genes in the rows and the successive states of the sequence in the columns. If not specified otherwise, cells of the table are light grey for 0/OFF values and dark grey for 1/ON values. If \code{grouping} is set, the genes are rearranged according to the indices in the group, horizontal separation lines are plotted between the groups, and the group names are printed. The function can be called with different types of inputs: The user can specify the parameters \code{network}, \code{startState} and \code{includeAttractorStates}), in which case \code{\link{getPathToAttractor}} is called to obtain the sequence. Alternatively, the sequence can be supplied directly as a data frame in the \code{sequence} parameter. } \value{ Returns a matrix corresponding to the table. The matrix has the genes in the rows and the states of the attractors in the columns. If \code{sequence} was supplied, this corresponds to the transposed input whose rows may be rearranged if \code{grouping} was set. } \seealso{ \code{\link{attractorsToLaTeX}}, \code{\link{plotSequence}}, \code{\link{plotAttractors}}, \code{\link{getPathToAttractor}}, \code{\link{getAttractorSequence}}. } \examples{ # load example data data(cellcycle) # alternative 1: supply network and start state # and export sequence to LaTeX sequenceToLaTeX(network=cellcycle, startState=rep(1,10), includeAttractorStates="all", file="sequence.txt") # alternative 2: calculate sequence in advance sequence <- getPathToAttractor(cellcycle, state=rep(1,10), includeAttractorStates="all") sequenceToLaTeX(sequence=sequence, file="sequence.txt") } % Add one or more standard keywords, see file 'KEYWORDS' in the % R documentation directory. \keyword{Boolean network state path sequence LaTeX} ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/man/simplifyNetwork.Rd����������������������������������������������������������������������0000644�0001762�0000144�00000005501�13277247010�016070� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\name{simplifyNetwork} \Rdversion{1.1} \alias{simplifyNetwork} \title{ Simplify the functions of a synchronous, asynchronous, or probabilistic Boolean network } \description{ Eliminates irrelevant variables from the inputs of the gene transition functions. This can be useful if the network was generated randomly via \code{\link{generateRandomNKNetwork}} or if it was perturbed via \code{\link{perturbNetwork}}. } \usage{ simplifyNetwork(network, readableFunctions = FALSE) } \arguments{ \item{network}{ A network structure of class \code{BooleanNetwork}, \code{ProbabilisticBooleanNetwork} or \code{BooleanNetworkCollection}. These networks can be read from files by \code{\link{loadNetwork}}, generated by \if{latex}{\cr}\code{\link{generateRandomNKNetwork}}, or reconstructed by \code{\link{reconstructNetwork}}. } \item{readableFunctions}{ This parameter specifies if readable DNF representations of the transition function truth tables are generated and displayed when the network is printed. If set to FALSE, the truth table result column is displayed. If set to "canonical", a canonical Disjunctive Normal Form is generated from each truth table. If set to "short", the canonical DNF is minimized by joining terms (which can be time-consuming for functions with many inputs). If set to TRUE, a short DNF is generated for functions with up to 12 inputs, and a canonical DNF is generated for functions with more than 12 inputs. } } \details{ The function checks whether the output of a gene transition function is independent from the states of any of the input variables. If this is the case, these input variables are dropped, and the transition function is shortened accordingly. In non-probabilistic Boolean networks (class \code{BooleanNetwork}), constant genes are automatically fixed (e.g. knocked-out or over-expressed). This means that they are always set to the constant value, and states with the complementary value are not considered in transition tables etc. If you would like to change this behaviour, use \code{\link{fixGenes}} to reset the fixing. } \value{ The simplified network of class \code{BooleanNetwork}, \code{ProbabilisticBooleanNetwork} or \code{BooleanNetworkCollection}. These classes are described in more detail in \code{\link{loadNetwork}} and \code{\link{reconstructNetwork}}. } \seealso{ \code{\link{loadNetwork}},\code{\link{generateRandomNKNetwork}}, \code{\link{perturbNetwork}}, \code{\link{reconstructNetwork}}, \code{\link{fixGenes}} } \examples{ # load example data data(cellcycle) # perturb the network perturbedNet <- perturbNetwork(cellcycle, perturb="functions", method="shuffle") print(perturbedNet$interactions) # simplify the network perturbedNet <- simplifyNetwork(perturbedNet) print(perturbedNet$interactions) } \keyword{Boolean network probabilistic Boolean network PBN logic simplify simplification} �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/man/plotStateGraph.Rd�����������������������������������������������������������������������0000644�0001762�0000144�00000011222�13277247537�015636� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\name{plotStateGraph} \Rdversion{1.1} \alias{plotStateGraph} \title{ Visualize state transitions and attractor basins } \description{ Plots a graph containing all states visited in \code{stateGraph}, and optionally highlights attractors and basins of attraction. This requires the \pkg{igraph} package. } \usage{ plotStateGraph(stateGraph, highlightAttractors = TRUE, colorBasins = TRUE, colorSet, drawLegend = TRUE, drawLabels = FALSE, layout = layout.kamada.kawai, piecewise = FALSE, basin.lty = 2, attractor.lty = 1, plotIt = TRUE, colorsAlpha = c(colorBasinsNodeAlpha = .3, colorBasinsEdgeAlpha = .3, colorAttractorNodeAlpha = 1, colorAttractorEdgeAlpha = 1), ...) } \arguments{ \item{stateGraph}{An object of class \code{AttractorInfo} or \code{SymbolicSimulation}, as returned by \code{\link{getAttractors}} and \code{\link{simulateSymbolicModel}} respectively. As the transition table information in this structure is required, \code{getAttractors} must be called in synchronous mode and with \code{returnTable} set to TRUE. Similarly, \code{simulateSymbolicModel} must be called with \code{returnGraph=TRUE}. Alternatively, \code{stateGraph} can be an object of class \code{TransitionTable}, which can be extracted using the functions \code{\link{getTransitionTable}}, \code{\link{getBasinOfAttraction}}, or \code{\link{getStateSummary}} } \item{highlightAttractors}{ If this parameter is true, edges in attractors are drawn bold and with a different line type (which can be specified in \code{attractor.lty}). Defaults to TRUE. } \item{colorBasins}{ If set to true, each basin of attraction is drawn in a different color. Colors can be specified in \code{colorSet}. Defaults to TRUE. } \item{colorSet}{ An optional vector specifying the colors to be used for the different attractor basins. If not supplied, a default color set is used. } \item{drawLegend}{ If set to true and \code{colorBasins} is true, a legend for the colors of the basins of attraction is drawn. Defaults to TRUE. } \item{drawLabels}{ If set to true, the binary encodings of the states are drawn beside the vertices of the graph. As this can be confusing for large graphs, the default value is FALSE. } \item{layout}{ A layouting function that determines the placement of the nodes in the graph. Please refer to the \code{\link[igraph]{layout}} manual entry in the \pkg{igraph} package for further details. By default, the Fruchterman-Reingold algorithm is used. } \item{piecewise}{ If set to true, a piecewise layout is used, i.e. the subgraphs corresponding to different basins of attraction are separated and layouted separately. } \item{basin.lty}{ The line type used for edges in a basin of attraction. Defaults to 2 (dashed). } \item{attractor.lty}{ If \code{highlightAttractors} is true, this specifies the line type for edges in an attractor. Defaults to 1 (straight). } \item{plotIt}{ If this is true, a plot is generated. Otherwise, only an object of class \code{igraph} is returned, but no plot is drawn. } \item{colorsAlpha}{ These parameters apply alpha correction to the colors of basins and attractors in the following order: basin node, basin edge, attractor node, attractor edge. Defaults to a vector of length 4 with settings \code{alpha = 0.3} for basins and \code{alpha = 1} for attractors. } \item{\dots}{ Further graphical parameters to be passed to \code{\link[igraph:plot.graph]{plot.igraph}}. } } \details{ This function uses the \code{\link[igraph:plot.graph]{plot.igraph}} function from the \pkg{igraph} package. The plots are customizeable using the \code{\dots} argument. For details on possible parameters, please refer to \code{\link[igraph:plot.common]{igraph.plotting}}. } \value{ Returns an invisible object of class \code{igraph} containing the state graph, including color and line attributes. } \seealso{ \code{\link{getAttractors}}, \code{\link{simulateSymbolicModel}}, \code{\link{getTransitionTable}}, \code{\link{getBasinOfAttraction}}, \code{\link{getStateSummary}}, \code{\link{plotNetworkWiring}}, \code{\link[igraph:plot.common]{igraph.plotting}} } \examples{ # load example data data(cellcycle) # get attractors attractors <- getAttractors(cellcycle) # plot state graph \dontrun{ plotStateGraph(attractors, main = "Cell cycle network", layout = layout.fruchterman.reingold) } } % Add one or more standard keywords, see file 'KEYWORDS' in the % R documentation directory. \keyword{Boolean network attractor cycle basin transition state graph plot} ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/man/plotSequence.Rd�������������������������������������������������������������������������0000644�0001762�0000144�00000016757�13301226616�015345� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\name{plotSequence} \alias{plotSequence} \title{ Plot a sequence of states } \description{ Visualizes sequences of states in synchronous Boolean networks, either by drawing a table of the involved states in two colors, or by drawing a graph of transitions between the successive states. } \usage{ plotSequence(network, startState, includeAttractorStates = c("all","first","none"), sequence, title = "", mode=c("table","graph"), plotFixed = TRUE, grouping = list(), onColor="#4daf4a", offColor = "#e41a1c", layout, drawLabels=TRUE, drawLegend=TRUE, highlightAttractor=TRUE, reverse = FALSE, borderColor = "black", eps=0.1, attractor.sep.lwd = 2, attractor.sep.col = "blue", ...) } \arguments{ \item{network}{ An object of class \code{BooleanNetwork} or \code{SymbolicBooleanNetwork} for which a sequence of state transitions is calculated } \item{startState}{ The start state of the sequence } \item{includeAttractorStates}{ Specifies whether the actual attractor states are included in the plot or not (see also \code{\link{getPathToAttractor}}). If \code{includeAttractorStates = "all"} (which is the default behaviour), the sequence ends when the attractor was traversed once. If \code{includeAttractorStates = "first"}, only the first state of attractor is added to the sequence. If {includeAttractorStates = "none"}, the sequence ends with the last non-attractor state. } \item{sequence}{ The alternative call to \code{plotSequence} requires the specification of the sequence itself instead of the network and the start state. The sequence must be provided as a data frame with the genes in the columns and the successive states in the rows. For example, sequences can be obtained using \code{\link{getPathToAttractor}} or \code{\link{getAttractorSequence}} (however, the specialized plot \code{\link{plotAttractors}} exists for attractors).} \item{title}{ An optional title for the plot } \item{mode}{Switches between two kinds of attractor plots. See Details for more information. Default is "table".} \item{plotFixed}{This optional parameter is only used if \code{mode="table"}. If this is true, genes with fixed values are included in the plot. Otherwise, these genes are not drawn. } \item{grouping}{This optional parameter is only used if \code{mode="table"} and specifies a structure to form groups of genes in the plot. This is a list with the following elements: \describe{ \item{class}{A vector of names for the groups. These names will be printed in the region belonging to the group in the plot.} \item{index}{A list with the same length as \code{class}. Each element is a vector of gene names or gene indices belonging to the group.}} } \item{onColor}{This optional parameter is only used if \code{mode="table"} and specifies the color value for the 1/ON values in the table. Defaults to green. } \item{offColor}{This optional parameter is only used if \code{mode="table"} and specifies the color value for the 0/OFF values in the table. Defaults to red. } \item{layout}{If \code{mode="graph"}, this parameter specifies a layouting function that determines the placement of the nodes in the graph. Please refer to the \code{\link[igraph]{layout}} manual entry in the \pkg{igraph} package for further details. By default, the nodes are placed in a horizontal line. } \item{drawLabels}{This parameter is only relevant if \code{mode="graph"}. It determines whether the nodes of the graph are annotated with the corresponding values of the genes in the attractor states. } \item{drawLegend}{Specifies whether a color key for the ON/OFF states is drawn if \code{mode="table"}. Defaults to \code{TRUE}. } \item{highlightAttractor}{ If set to true, the attractor states are highlighted in the plot. If \code{mode="table"}, a line is drawn at the begin of the attractor, and the states are labeled correspondingly. If \code{mode="graph"}, the attractor transitions are drawn as bold lines. Information on the attractor must be supplied in the attribute \code{attractor} of the sequence, which is a vector of indices of the states that belong to the attractor. This attribute is usually present if the sequence was obtained using \code{\link{getPathToAttractor}}. } \item{reverse}{ Specifies the order of the genes in the plot. By default, the first gene is placed in the first row of the plot. If \code{reverse=TRUE} (which was the default until \pkg{BoolNet} version 2.0.2), the first gene in the network is placed in the bottom row of the plot. } \item{borderColor}{ Specifies the border or seprating color of states in an attractor. Defaults to \code{"black"}. } \item{eps}{ Specifies plotting margin for the sequence of states. Defaults to \code{0.1}. } \item{attractor.sep.lwd}{ Specifies the line width of the attractor separator. Defaults to \code{2}. } \item{attractor.sep.col}{ Specifies the line color of the attractor separator. Defaults to \code{"blue"}. } \item{\dots}{ Further graphical parameters to be passed to \code{\link[igraph:plot.graph]{plot.igraph}} if \code{mode="graph"}. } } \details{ This function comprises two different types of plots: The "table" mode visualizes the gene values of the states in the sequence. The figure is a table with the genes in the rows and the successive states of the sequence in the columns. Cells of the table are (by default) red for 0/OFF values and green for 1/ON values. If \code{grouping} is set, the genes are rearranged according to the indices in the group, horizontal separation lines are plotted between the groups, and the group names are printed. The "graph" mode visualizes the transitions between different states. It creates a graph in which the vertices are the states in the sequence and the edges are state transitions among these states. The function can be called with different types of inputs: The user can specify the parameters \code{network}, \code{startState} and \code{includeAttractorStates}), in which case \code{\link{getPathToAttractor}} is called to obtain the sequence. Alternatively, the sequence can be supplied directly as a data frame in the \code{sequence} parameter. } \value{ If \code{mode="table"}, a matrix corresponding to the table is returned. The matrix has the genes in the rows and the states of the attractors in the columns. If \code{sequence} was supplied, this corresponds to the transposed input whose rows may be rearranged if \code{grouping} was set. If \code{mode="graph"}, an object of class \code{igraph} describing the graph for the sequence is returned. } \seealso{ \code{\link{sequenceToLaTeX}}, \code{\link{plotAttractors}}, \code{\link{attractorsToLaTeX}}, \code{\link{getPathToAttractor}}, \code{\link{getAttractorSequence}}, \code{\link{simulateSymbolicModel}} } \examples{ # load example data data(cellcycle) # alternative 1: supply network and start state # and plot sequence as a table plotSequence(network=cellcycle, startState=rep(1,10), includeAttractorStates="all") # alternative 2: calculate sequence in advance sequence <- getPathToAttractor(cellcycle, state=rep(1,10), includeAttractorStates="all") # plot sequence as a graph plotSequence(sequence=sequence, mode="graph") } \keyword{Boolean network state path sequence plot} �����������������BoolNet/man/print.AttractorInfo.Rd������������������������������������������������������������������0000644�0001762�0000144�00000002305�13277247010�016573� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\name{print.AttractorInfo} \Rdversion{1.1} \alias{print.AttractorInfo} \title{ Print attractor cycles } \description{ Specialized print method to print the attractor cycles stored in an \code{AttractorInfo} object. For simple or steady-state attractors, the states of the attractors are printed in binary encoding in the order they are reached. For asynchronous complex/loose attractors, the possible transitions of the states in the attractor are printed. The method can print either the full states, or only the active genes of the states. } \usage{ \method{print}{AttractorInfo}(x, activeOnly = FALSE, ...) } \arguments{ \item{x}{ An object of class \code{AttractorInfo} to be printed } \item{activeOnly}{ If set to true, a state is represented by a list of active genes (i.e., genes which are set to 1). If set to false, a state is represented by a binary vector with one entry for each gene, specifying whether the gene is active or not. Defaults to \code{FALSE}. } \item{\dots}{ Further parameters for the \code{\link{print}} method. Currently not used. } } \value{ Invisibly returns the printed object } \seealso{ \code{\link{print}}, \code{\link{getAttractors}} } \keyword{attractor print} ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/man/perturbTrajectories.Rd������������������������������������������������������������������0000644�0001762�0000144�00000007361�13277247010�016732� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\name{perturbTrajectories} \alias{perturbTrajectories} \title{ Perturb the state trajectories and calculate robustness measures } \description{ Perturbs the state trajectories of a network and assesses the robustness by comparing the successor states or the attractors of a set of initial states and a set of perturbed copies of these initial states. } \usage{ perturbTrajectories(network, measure = c("hamming", "sensitivity", "attractor"), numSamples = 1000, flipBits = 1, updateType = c("synchronous", "asynchronous", "probabilistic"), gene, ...) } \arguments{ \item{network}{ A network structure of class \code{BooleanNetwork}, \code{SymbolicBooleanNetwork} or \code{ProbabilisticBooleanNetwork} whose robustness is measured. } \item{measure}{ Defines the way the robustness is measured (see Details). } \item{numSamples}{ The number of randomly generated pairs of initial states and perturbed copies. Defaults to 1000. } \item{flipBits}{ The number of bits that are flipped to generate a perturbed copy of an initial state. Defaults to 1. } \item{updateType}{ If \code{measure="hamming"}, the type of update that is performed to calculate successor states. } \item{gene}{ If \code{measure="sensitivity"}, the name or index of the gene for whose transition function the average sensitivity is calculated. } \item{\dots}{ Further parameters to \code{\link{stateTransition}} and \code{\link{getAttractors}}. } } \details{ The function generates a set of \code{numSamples} initial states and then applies \code{flipBits} random bit flips to each initial state to generate a perturbed copy of each initial state. For each pair of initial state and perturbed state, a robustness statistic is calculated depending \code{measure}: If \code{measure="hamming"}, the normalized Hamming distances between the successor states of each initial state and the corresponding perturbed state are calculated. If \code{measure="sensitivity"}, the average sensitivity of a specific transition function (specified in the \code{gene} parameter) is approximated: The statistic is a logical vector that is \code{TRUE} if \code{gene} differs in the successor states of each initial state and the corresponding perturbed state. If \code{measure="attractor"}, the attractors of all initial states and all perturbed states are identified. The statistic is a logical vector specifying whether the attractors are identical in each pair of initial state and perturbed initial state. } \value{ A list with the following items: \item{stat}{A vector of size \code{numSamples} containing the robustness statistic for each pair of initial state and perturbed copy.} \item{value}{The summarized statistic (i.e. the mean value) over all state pairs.} } \references{ I. Shmulevich and S. A. Kauffman (2004), Activities and Sensitivities in Boolean Network Models. Physical Review Letters 93(4):048701. } \seealso{ \code{\link{testNetworkProperties}}, \code{\link{perturbNetwork}} } \examples{ data(cellcycle) # calculate average normalized Hamming distance of successor states hamming <- perturbTrajectories(cellcycle, measure="hamming", numSamples=100) print(hamming$value) # calculate average sensitivity of transition function for gene "Cdh1" sensitivity <- perturbTrajectories(cellcycle, measure="sensitivity", numSamples=100, gene="Cdh1") print(sensitivity$value) # calculate percentage of equal attractors for state pairs attrEqual <- perturbTrajectories(cellcycle, measure="attractor", numSamples=100) print(attrEqual$value) } \keyword{Boolean network probabilistic Boolean network, PBN, perturbation perturb trajectory noise robustness} �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/man/examplePBN.Rd���������������������������������������������������������������������������0000644�0001762�0000144�00000001671�13277247010�014661� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\name{examplePBN} \alias{examplePBN} \docType{data} \title{ An artificial probabilistic Boolean network } \description{ An artificial probabilistic Boolean network example introduced by Shmulevich et al. } \usage{data(examplePBN)} \details{ This artificial network is introduced by Shmulevich et al. for a step-by-step description of their Markov chain algorithm. It is included as a general example for a probabilistic Boolean network. The network consists of 3 genes, where gene 1 and gene 3 have two alternative transition functions, and gene 1 has a unique transition function. } \source{ I. Shmulevich, E. R. Dougherty, S. Kim, W. Zhang (2002), Probabilistic Boolean networks: a rule-based uncertainty model for gene regulatory networks. Bioinformatics 18(2):261--274. } \examples{ data(examplePBN) # the network is stored in a variable called 'examplePBN' print(examplePBN) } \keyword{datasets probabilistic Boolean network PBN} �����������������������������������������������������������������������BoolNet/man/print.TransitionTable.Rd����������������������������������������������������������������0000644�0001762�0000144�00000002415�13277247010�017120� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\name{print.TransitionTable} \Rdversion{1.1} \alias{print.TransitionTable} \alias{print.BooleanStateInfo} \title{ Print a transition table } \description{ Specialized print method to print a transition table with the initial state in the first column, the successor state in the second column, the basin of attraction to which the state leads in the third column, and the number of transitions to the attractor in the fourth column. } \usage{ \method{print}{TransitionTable}(x, activeOnly = FALSE, ...) \method{print}{BooleanStateInfo}(x, activeOnly=FALSE, ...) } \arguments{ \item{x}{ An object of class \code{TransitionTable} or \code{BooleanStateInfo} to be printed } \item{activeOnly}{ If set to true, a state is represented by a list of active genes (i.e., genes which are set to 1). If set to false, a state is represented by a binary vector with one entry for each gene, specifying whether the gene is active or not. Defaults to \code{FALSE}. } \item{\dots}{ Further parameters for the \code{\link{print}} method. Currently not used. } } \value{ Invisibly returns the printed object } \seealso{ \code{\link{print}}, \code{\link{getTransitionTable}}, \code{\link{getBasinOfAttraction}}, \code{\link{getStateSummary}} } \keyword{transition table print} ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/man/simulateSymbolicModel.Rd����������������������������������������������������������������0000644�0001762�0000144�00000017600�13277247010�017173� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\name{simulateSymbolicModel} \alias{simulateSymbolicModel} \title{ Simulate a symbolic Boolean network } \description{ This function simulates Boolean networks in a symbolic representation, possibly with additional temporal qualifiers. The function can identify attractors, determine the state transition graph, and generate sequences of successive states. } \usage{ simulateSymbolicModel(network, method = c("exhaustive", "random", "chosen", "sat.exhaustive", "sat.restricted"), startStates = NULL, returnSequences = (!(match.arg(method) \%in\% c("sat.exhaustive", "sat.restricted"))), returnGraph = (!(match.arg(method) \%in\% c("sat.exhaustive", "sat.restricted"))), returnAttractors = TRUE, maxTransitions = Inf, maxAttractorLength = Inf, canonical = TRUE) } \arguments{ \item{network}{ A network structure of class \code{SymbolicBooleanNetwork}. These networks can be read from files by \code{\link{loadNetwork}}, \code{\link{loadBioTapestry}} or \code{\link{loadSBML}} with the \code{symbolic=TRUE} flag. } \item{startStates}{ An optional parameter specifying the start states. If this is an integer value, it denotes the number of random start states to generate. Otherwise, it has to be a list of states. The list elements must either be vectors with one value for each gene in the network, or matrices with the genes in the columns and multiple predecessor states in the rows. These predecessor states may be evaluated if temporal predicates in the network have a time delay of more than one. If the number of supplied predecessor states is smaller than the maximum time delay in the network, genes are assumed to have had the same value as in the first supplied state prior to this state. In particular, if only a single state is supplied, it is assumed that the network always resided in this state prior to starting the simulation. } \item{method}{ The simulation method to be used (see details). If \code{method} is not specified, the desired method is inferred from the type of \code{startStates}. } \item{returnSequences}{ If set to true (and no SAT-based method is chosen), the return value has an element \code{sequences} specifying the sequences of states to the attractor. } \item{returnGraph}{ If set to true (and no SAT-based method is chosen), the return value has an element \code{graph} specifying the state transition graph of the network. } \item{returnAttractors}{ If set to true, the return value has an element \code{attractors} containing a list of identified attractors. } \item{maxTransitions}{ The maximum number of state transitions to be performed for each start state (defaults to \code{Inf}). } \item{maxAttractorLength}{If \code{method="sat.restricted"}, this required parameter specifies the maximum size of attractors (i.e. the number of states in the loop) to be searched. For \code{method="sat.exhaustive"}, this parameter is optional and specifies the maximum attractor length for the initial length-restricted search phase that is performed to speed up the subsequent exhaustive search. In this case, changing this value might bring performance benefits, but does not change the results.} \item{canonical}{ If set to true and \code{returnAttractors=TRUE}, the states in the attractors are rearranged such that the state whose binary encoding makes up the smallest number is the first element of the vector. This ensures that attractors determined in runs with different start states are comparable, as the cycles may have been entered at different states. } } \details{ Similarly to \code{\link{getAttractors}}, the symbolic simulator supports different simulation modes which can be specified in the \code{method} parameter: \itemize{ \item{Exhaustive search} {If \code{method="exhaustive"}, all possible states in the network are used as start states. If the network has time delays greater than one (temporal network), this means that exhaustive search does not only cover all 2^n possible states for a network with n genes, but also all possible state histories of those genes for which longer delays are required.} \item{Heuristic search} {For \code{method="random"} or \code{method="chosen"}, a subset of states is used as start states for the simulation. If \code{method="random"}, \code{startStates} is interpreted as an integer value specifying the number of states to be generated randomly. The algorithm is then initialized with these random start states. If \code{method="chosen"}, \code{startStates} is interpreted as a list of binary vectors, each specifying one start state (see also parameter description above for details). } \item{SAT-based attractor search} { If \code{method} is "sat.exhaustive" or "sat.restricted", the simulator transforms the network into a satisfiability problem and solves it using Armin Biere's PicoSAT solver (see also \code{\link{getAttractors}} for more details). If \code{method="sat.restricted"}, only attractors comprising up to \code{maxAttractorLength} states are identified. Otherwise, the algorithm by Dubrova and Teslenko is applied to identify all attractors. As the SAT-based approaches identify attractors directly, no state sequences and no transition graph are returned.} } } \value{ Returns a list of class \code{SymbolicSimulation} containing the simulation results: If \code{returnSequences} is true and no SAT-based method was chosen, the list contains an element \code{sequences} consisting of a list of data frames, each representing the state transitions performed from one start state (denoted as time step 0) to the attractor. Here, the columns correspond to the genes in the network, and the rows correspond to the states. Apart from the immediate start state, the sequences may also contain the supplied or assumed predecessor states of the start state (marked by a negative time step t) if the network contains time delays greater than one. If \code{returnGraph} is true and no SAT-based method was chosen, the list contains an element \code{graph} of class \code{TransitionTable}. Each row of the table corresponds to one state transition from an initial state to a successor state, i.e. an edge in the state transition graph. If \code{returnAttractors} is true, the list contains an element \code{attractors}, which itself is a list of data frames. Each data frame represents one unique attractor, where each column corresponds to a gene, and each row corresponds to one state in the attractor. If both \code{returnSequences} and \code{returnAttractors} are true, there is an additional element \code{attractorAssignment}. This integer vector specifies the indices of the attractors to which the sequences lead. The structure supports pretty printing using the \code{\link{print}} method.} \references{ E. Dubrova, M. Teslenko (2011), A SAT-based algorithm for finding attractors in synchronous Boolean networks. IEEE/ACM Transactions on Computational Biology and Bioinformatics 8(5):1393--1399. A. Biere (2008), PicoSAT Essentials. Journal on Satisfiability, Boolean Modeling and Computation 4:75-97. } \seealso{ \code{\link{loadNetwork}}, \code{\link{loadBioTapestry}}, \code{\link{loadSBML}}, \code{\link{getAttractors}}, \code{\link{plotAttractors}}, \code{\link{attractorsToLaTeX}}, \code{\link{getTransitionTable}}, \code{\link{getBasinOfAttraction}}, \code{\link{getAttractorSequence}}, \code{\link{getStateSummary}}, \code{\link{getPathToAttractor}}, \code{\link{fixGenes}} } \examples{ data(igf) # exhaustive state space simulation sim <- simulateSymbolicModel(igf) plotAttractors(sim) # exhaustive attractor search using SAT solver sim <- simulateSymbolicModel(igf, method="sat.exhaustive") plotAttractors(sim) } \keyword{simulation symbolic Boolean network temporal predicates} ��������������������������������������������������������������������������������������������������������������������������������BoolNet/man/print.MarkovSimulation.Rd���������������������������������������������������������������0000644�0001762�0000144�00000002464�13277247010�017326� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\name{print.MarkovSimulation} \alias{print.MarkovSimulation} \title{ Print the results of a Markov chain simulation } \description{ A specialized method to print an object of class \code{MarkovSimulation}. This prints all states that have a non-zero probability to be reached after the number of iterations in the Markov simulation. If the simulation was run with \code{returnTable=TRUE}, it also prints a table of state transitions and their probabilities to be chosen in a single step. } \usage{ \method{print}{MarkovSimulation}(x, activeOnly = FALSE, ...) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{x}{ An object of class \code{MarkovSimulation} to be printed } \item{activeOnly}{ If set to true, a state is represented by a list of active genes (i.e., genes which are set to 1). If set to false, a state is represented by a binary vector with one entry for each gene, specifying whether the gene is active or not. Defaults to \code{FALSE}. } \item{\dots}{ Further parameters for the \code{\link{print}} method. Currently not used. } } \value{ Invisibly returns the printed object } \seealso{ \code{\link{print}}, \code{\link{markovSimulation}} } \keyword{print Markov chain simulation probabilistic Boolean network PBN}% __ONLY ONE__ keyword per line ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/man/print.ProbabilisticBooleanNetwork.Rd����������������������������������������������������0000644�0001762�0000144�00000002500�13277247010�021451� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\name{print.ProbabilisticBooleanNetwork} \Rdversion{1.1} \alias{print.ProbabilisticBooleanNetwork} \alias{print.BooleanNetworkCollection} \title{ Print a probabilistic Boolean network } \description{ A specialized method to print an object of class \code{ProbabilisticBooleanNetwork}. For backward compatibility, this method also prints objects of class \code{BooleanNetworkCollection}, which have been replaced by \code{ProbabilisticBooleanNetwork}. This prints all alternative transition functions and their probabilities. If the network is the result of a reconstruction from time series measurements, it also outputs the error the functions make on the time series. If genes are knocked-out or over-expressed, these genes are listed below the functions. } \usage{ \method{print}{ProbabilisticBooleanNetwork}(x, ...) \method{print}{BooleanNetworkCollection}(x, ...) } \arguments{ \item{x}{ An object of class \code{ProbabilisticBooleanNetwork} or \code{BooleanNetworkCollection} to be printed } \item{\dots}{ Further parameters for the \code{\link{print}} method. Currently not used. } } \value{ Invisibly returns the printed object } \seealso{ \code{\link{print}}, \code{\link{reconstructNetwork}}, \code{\link{loadNetwork}} } \keyword{network Boolean network probabilistic Boolean network PBN print} ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/man/loadBioTapestry.Rd����������������������������������������������������������������������0000644�0001762�0000144�00000003773�13277247010�016000� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\name{loadBioTapestry} \alias{loadBioTapestry} \title{ Import a network from BioTapestry } \description{ Imports a Boolean network from a BioTapestry file (*.btp). BioTapestry is an interactive tool for building, visualizing, and simulating gene-regulatory networks, and can be accessed at \url{http://www.biotapestry.org}. } \usage{ loadBioTapestry(file, symbolic = FALSE) } \arguments{ \item{file}{ The name of the file to import. This must be a BioTapestry XML file (*.btp). } \item{symbolic}{ If set to \code{TRUE}, the function returns an object of class \code{SymbolicBooleanNetwork} with an expression tree representation. Otherwise, it returns an object of class \code{BooleanNetwork} with a truth table representation. } } \details{ The function builds up a Boolean network by importing the nodes, the links between these nodes, and the simulation parameters of the top-level plot of a BioTapestry file. The BioTapestry network should have the following properties: \itemize{ \item All links should be either enhancers or repressors. Unspecified ("neutral") links are ignored. \item In the simulation parameters, each node should specify the correct logical function (AND, OR, XOR) for its inputs. \item Constant genes can be generated by modeling a gene without any input link and setting the simulation parameter \code{initVal} to 0 or 1. } } \value{ A network of class \code{BooleanNetwork} or \code{SymbolicBooleanNetwork}, as described in \code{\link{loadNetwork}}. } \references{ W. J. R. Longabaugh, E. H. Davidson, H. Bolour (2005), Computational representation of developmental genetic regulatory networks. Developmental Biology 283(1):1--16. } \seealso{ \code{\link{loadNetwork}}, \code{\link{loadSBML}} } \examples{ # import the example BioTapestry file # included in the package vignette exampleFile <- system.file("doc/example.btp", package="BoolNet") net <- loadBioTapestry(exampleFile) # print the imported network print(net) } \keyword{BioTapestry import} �����BoolNet/man/truthTableToSymbolic.Rd�����������������������������������������������������������������0000644�0001762�0000144�00000003155�13277247010�017010� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\name{truthTableToSymbolic} \alias{truthTableToSymbolic} \title{ Convert a network in truth table representation into a symbolic representation } \description{ Converts an object of class \code{BooleanNetwork} into an object of class \code{SymbolicBooleanNetwork} by generating symbolic expression trees. } \usage{ truthTableToSymbolic(network, generateDNFs = FALSE) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{network}{ An object of class \code{BooleanNetwork} to be converted. } \item{generateDNFs}{ This parameter specifies whether formulae in Disjunctive Normal Form are generated instead of the parsing the string expressions that describe the transition functions. If set to FALSE, the original expressions are parsed. If set to "canonical", a canonical Disjunctive Normal Form is generated from each truth table. If set to "short", the canonical DNF is minimized by joining terms (which can be time-consuming for functions with many inputs). If set to TRUE, a short DNF is generated for functions with up to 12 inputs, and a canonical DNF is generated for functions with more than 12 inputs. } } \value{ Returns an object of class \code{SymbolicBooleanNetwork}, as described in \code{\link{loadNetwork}}. } \seealso{ \code{\link{truthTableToSymbolic}}, \code{\link{loadNetwork}} } \examples{ # Convert a truth table representation into a # symbolic representation and back data(cellcycle) symbolicNet <- truthTableToSymbolic(cellcycle) print(symbolicNet) ttNet <- symbolicToTruthTable(symbolicNet) print(cellcycle) } \keyword{Boolean network symbolic Boolean network conversion} �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/man/generateRandomNKNetwork.Rd��������������������������������������������������������������0000644�0001762�0000144�00000021171�13277247010�017421� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\name{generateRandomNKNetwork} \Rdversion{1.1} \alias{generateRandomNKNetwork} \title{ Generate a random N-K Boolean network } \description{ Generates a random N-K Boolean network (see Kauffman, 1969) using different configurations for the topology, the linkage, and the functions. } \usage{ generateRandomNKNetwork(n, k, topology = c("fixed", "homogeneous", "scale_free"), linkage = c("uniform", "lattice"), functionGeneration = c("uniform", "biased"), validationFunction, failureIterations=10000, simplify = FALSE, noIrrelevantGenes=TRUE, readableFunctions = FALSE, d_lattice = 1, zeroBias = 0.5, gamma = 2.5, approx_cutoff = 100) } \arguments{ \item{n}{ The total number of genes in the network } \item{k}{ If this is a single number, this is either the maximum number of genes in the input of a transition function (for \code{topology="fixed"} and \code{topology="scale_free"}) or the mean number of genes in the input of a function (for \code{topology="homogeneous"}). If \code{topology="fixed"}, this can also be a vector with \code{n} elements specifying the number of input genes for each gene separately. } \item{topology}{ If set to "fixed", all transition functions of the network depend on exactly \code{k} input genes (unless there are irrelevant input genes to be removed if \code{simplify=TRUE} and \code{noIrrelevantGenes=FALSE}). If set to "homogeneous", the number of input genes is drawn independently at random from a Poisson distribution with lambda = k. If set to "scale_free", the number of input genes of each function is drawn from a Zeta distribution with parameter \code{gamma}. } \item{linkage}{ If this parameter is "uniform", the actual input genes are drawn uniformly at random from the total \code{k} genes. If set to "lattice", only genes from the neighbourhood \if{latex}{\cr}\code{(i - d_lattice * k_i):(i + d_lattice * k_i)} are taken, which means that all genes are dependent from other genes in the direct neighbourhood. } \item{functionGeneration}{ This parameter specifies how the truth tables of the transition functions are generated. If set to "uniform", the truth table result column of the function is filled uniformly at random with 0 and 1. If set to "biased", a bias is introduced, where the probability of drawing a 0 is determined by the parameter \code{zeroBias}. As a third option, \code{functionGeneration} can be set to a user-defined function that generates the truth tables. This function must have a single parameter \code{input} that is supplied with a vector of input gene indices. It must return a binary vector of size \code{2^length(input)} corresponding to the result column of the truth table. For the generation of canalyzing and nested canalyzing functions that are often assumed to be biologically plausible, the generation functions \code{\link{generateCanalyzing}} and \code{\link{generateNestedCanalyzing}} are included in \pkg{BoolNet}. } \item{validationFunction}{ An optional function that restricts the generated Boolean functions to certain classes. This can be used if no explicit generation function can be specified in \code{functionGeneration}, but it is nevertheless possible to check whether a generated function belongs to that class or not. The function should have two input parameter \code{input} and \code{func} that receive a candidate function. \code{input} is a matrix of 0/1 integer values specifying the input part of the truth table of the candidate function, with the input genes in the columns. Each of the 2^k rows of \code{input} (where k is the number of input genes) corresponds to one entry of \code{func}, which is an integer vector of 0/1 values corresponding to the output of the candidate function. The validation function should return \code{TRUE} if the candidate function is accepted or \code{FALSE} if it is rejected. } \item{failureIterations}{ The maximum number of iterations the generator tries to generate a function that is accepted by \code{validationFunction} before it gives up and throws an error. Defaults to 10000. } \item{simplify}{ If this is true, \code{\link{simplifyNetwork}} is called to simplify the gene transition functions after the perturbation. This removes irrelevant input genes. Should not be used together with \code{noIrrelevantGenes=TRUE}, as this automatically generates a network that cannot be simplified any further. Defaults to FALSE. } \item{noIrrelevantGenes}{ If set to true, gene transition functions are not allowed to contain irrelevant genes, i.e. the functions have exactly the number of input genes determined by the \code{topology} method. This means that the network cannot be simplified any further, and \code{simplify} should be turned off. The default value is TRUE. } \item{readableFunctions}{ This parameter specifies if readable DNF representations of the transition function truth tables are generated and displayed when the network is printed. If set to FALSE, the truth table result column is displayed. If set to "canonical", a canonical Disjunctive Normal Form is generated from each truth table. If set to "short", the canonical DNF is minimized by joining terms (which can be time-consuming for functions with many inputs). If set to TRUE, a short DNF is generated for functions with up to 12 inputs, and a canonical DNF is generated for functions with more than 12 inputs. } \item{d_lattice}{ The dimension parameter for the lattice if \code{linkage="lattice"}. Defaults to 1. } \item{zeroBias}{ The bias parameter for biased functions for \code{functionGeneration="biased"}. Defaults to 0.5 (no bias). } \item{gamma}{ The Gamma parameter of the Zeta distribution for \code{topology="scale_free"}. Default is 2.5. } \item{approx_cutoff}{ This parameter is only used with \code{topology="scale_free"}. It sets the number of iterations in the sum used to approximate the Riemann Zeta function. Defaults to 100. } } \details{ The function supports a high number of different configurations to generate random networks. Several of the parameters are only needed for special configurations. The generated networks have different structural properties. Refer to the literature for more details. Constant genes are automatically fixed (e.g. knocked-out or over-expressed). This means that they are always set to the constant value, and states with the complementary value are not considered in transition tables etc. If you would like to change this behaviour, use \code{\link{fixGenes}} to reset the fixing. } \value{ An object of class \code{BooleanNetwork} containing the generated random network. The class \if{latex}{\cr}\code{BooleanNetwork} is described in more detail in \code{\link{loadNetwork}}. } \references{ S. A. Kauffman (1969), Metabolic stability and epigenesis in randomly constructed nets. J. Theor. Biol. 22:437--467. S. A. Kauffman (1993), The Origins of Order. Oxford University Press. M. Aldana (2003), Boolean dynamics of networks with scale-free topology. Physica D 185: 45--66. M. Aldana and S. Coppersmith and L. P. Kadanoff (2003), Boolean dynamics with random coupling. In E. Kaplan, J. E. Marsden and K. R. Sreenivasan (editors): Perspectives and Problems in Nonlinear Science, Springer. } \seealso{ \code{\link{perturbNetwork}},\code{\link{loadNetwork}}, \code{\link{simplifyNetwork}}, \code{\link{fixGenes}} } \examples{ # generate different random networks net1 <- generateRandomNKNetwork(n=10, k=10, topology="scale_free", linkage="uniform", functionGeneration="uniform", noIrrelevantGenes=FALSE, simplify=TRUE) net2 <- generateRandomNKNetwork(n=10, k=3, topology="homogeneous", linkage="lattice", functionGeneration="uniform", d_lattice=1.5, simplify=TRUE) net3 <- generateRandomNKNetwork(n=10, k=2, topology="fixed", linkage="uniform", functionGeneration="biased", noIrrelevantGenes=FALSE, zeroBias=0.6) # get attractors print(getAttractors(net1)) print(getAttractors(net2)) print(getAttractors(net3)) } \keyword{LaTeX Boolean network attractor cycle random network} �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/man/chooseNetwork.Rd������������������������������������������������������������������������0000644�0001762�0000144�00000005636�13277247010�015525� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\name{chooseNetwork} \alias{chooseNetwork} \title{ Extract a single Boolean network from a probabilistic Boolean network } \description{ Creates a \code{BooleanNetwork} object with exactly one function per gene by extracting a specified set of transition functions from a \code{ProbabilisticBooleanNetwork} or \code{BooleanNetworkCollection} object. } \usage{ chooseNetwork(probabilisticNetwork, functionIndices, dontCareValues=NULL, readableFunctions=FALSE) } \arguments{ \item{probabilisticNetwork}{ A \code{ProbabilisticBooleanNetwork} or \code{BooleanNetworkCollection} object as returned by \code{\link{reconstructNetwork}} or \code{\link{loadNetwork}} } \item{functionIndices}{ A vector of function indices with one entry for each gene } \item{dontCareValues}{ If \code{probabilisticNetwork} is of class \code{BooleanNetworkCollection}, this specifies the values to fill in for "don't care" (*) values in the truth tables of the transition functions. This is a list containing one vector of Boolean values for each gene. The lengths of the vectors must coincide with the numbers of "don't care" values in the functions. } \item{readableFunctions}{ If \code{probabilisticNetwork} is of class \code{BooleanNetworkCollection}, the string representations of the transition functions must be refreshed after filling in values for the "don't care" entries. This parameter specifies if readable DNF representations of the transition function truth tables are generated and displayed when the network is printed. If set to FALSE, the truth table result column is displayed. If set to "canonical", a canonical Disjunctive Normal Form is generated from each truth table. If set to "short", the canonical DNF is minimized by joining terms (which can be time-consuming for functions with many inputs). If set to TRUE, a short DNF is generated for functions with up to 12 inputs, and a canonical DNF is generated for functions with more than 12 inputs. } } \value{ Returns an object of class \code{BooleanNetwork} consisting of the transition functions whose indices were specified in \code{functionIndices}. The class \code{BooleanNetwork} is described in more detail in \code{\link{loadNetwork}}. Constant genes are automatically fixed (e.g. knocked-out or over-expressed). This means that they are always set to the constant value, and states with the complementary value are not considered in transition tables etc. If you would like to change this behaviour, use \code{\link{fixGenes}} to reset the fixing. } \seealso{ \code{\link{reconstructNetwork}}, \code{\link{loadNetwork}} } \examples{ # load example data data(examplePBN) # extract a unique network # - always use the first function net <- chooseNetwork(examplePBN, rep(1, length(examplePBN$genes))) # get attractors from this network print(getAttractors(net)) } \keyword{Boolean network probabilistic Boolean network PBN conversion reconstruction} ��������������������������������������������������������������������������������������������������BoolNet/man/loadNetwork.Rd��������������������������������������������������������������������������0000644�0001762�0000144�00000033554�13277247010�015164� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\name{loadNetwork} \Rdversion{1.1} \alias{loadNetwork} %- Also NEED an '\alias' for EACH other topic documented here. \title{ Load a Boolean network from a file } \description{ Loads a Boolean network or probabilistic Boolean network from a file and converts it to an internal transition table representation. } \usage{ loadNetwork(file, bodySeparator = ",", lowercaseGenes = FALSE, symbolic = FALSE) } \arguments{ \item{file}{ The name of the file to be read } \item{bodySeparator}{ An optional separation character to divide the target factors and the formulas. Default is ",". } \item{lowercaseGenes}{ If set to \code{TRUE}, all gene names are converted to lower case, i.e. the gene names are case-insensitive. This corresponds to the behaviour of \pkg{BoolNet} versions prior to 1.5. Defaults to \code{FALSE}. } \item{symbolic}{ If set to \code{TRUE}, a symbolic representation of class \code{SymbolicBooleanNetwork} is returned. This is not available for asynchronous or probabilistic Boolean networks, but is required for the simulation of networks with extended temporal predicates and time delays (see \code{\link{simulateSymbolicModel}}). If such predicates are detected, the switch is activated by default. } } \details{ Depending on whether the network is loaded in truth table representation or not, the supported network file formats differ slightly. For the truth table representation (\code{symbolic=FALSE}), the language basically consists of expressions based on the Boolean operators AND (&), or (|), and NOT (!). In addition, some convenience operators are included (see EBNF and operator description below). The first line contains a header. In case of a Boolean network with only one function per gene, the header is "targets, functions"; in a probabilistic network, there is an optional third column "probabilities". All subsequent lines contain Boolean rules or comment lines that are omitted by the parser. A rule consists of a target gene, a separator, a Boolean expression to calculate a transition step for the target gene, and an optional probability for the rule (for probabilistic Boolean networks only -- see below). The EBNF description of the network file format is as follows: \preformatted{ Network = Header Newline {Rule Newline | Comment Newline}; Header = "targets" Separator "factors"; Rule = GeneName Separator BooleanExpression [Separator Probability]; Comment = "#" String; BooleanExpression = GeneName | "!" BooleanExpression | "(" BooleanExpression ")" | BooleanExpression " & " BooleanExpression | BooleanExpression " | " BooleanExpression; | "all(" BooleanExpression {"," BooleanExpression} ")" | "any(" BooleanExpression {"," BooleanExpression} ")" | "maj(" BooleanExpression {"," BooleanExpression} ")" | "sumgt(" BooleanExpression {"," BooleanExpression} "," Integer ")" | "sumlt(" BooleanExpression {"," BooleanExpression} "," Integer ")"; GeneName = ? A gene name from the list of involved genes ?; Separator = ","; Integer = ? An integer value?; Probability = ? A floating-point number ?; String = ? Any sequence of characters (except a line break) ?; Newline = ? A line break character ?; } The extended format for Boolean networks with temporal elements that can be loaded if \code{symbolic=TRUE} additionally allows for a specification of time steps. Furthermore, the operators can be extended with iterators that evaluate their arguments over multiple time steps. \preformatted{ Network = Header Newline {Function Newline | Comment Newline}; Header = "targets" Separator "factors"; Function = GeneName Separator BooleanExpression; Comment = "#" String; BooleanExpression = GeneName | GeneName TemporalSpecification | BooleanOperator | TemporalOperator BooleanOperator = BooleanExpression | "!" BooleanExpression | "(" BooleanExpression ")" | BooleanExpression " & " BooleanExpression | BooleanExpression " | " BooleanExpression; TemporalOperator = "all" [TemporalIteratorDef] "(" BooleanExpression {"," BooleanExpression} ")" | "any" [TemporalIteratorDef] "(" BooleanExpression {"," BooleanExpression} ")" | "maj" [TemporalIteratorDef] "(" BooleanExpression {"," BooleanExpression} ")" | "sumgt" [TemporalIteratorDef] "(" BooleanExpression {"," BooleanExpression} "," Integer ")" | "sumlt" [TemporalIteratorDef] "(" BooleanExpression {"," BooleanExpression} "," Integer ")" | "timeis" "(" Integer ")" | "timegt" "(" Integer ")" | "timelt" "(" Integer ")"; TemporalIteratorDef = "[" TemporalIterator "=" Integer ".." Integer "]"; TemporalSpecification = "[" TemporalOperand {"+" TemporalOperand | "-" TemporalOperand} "]"; TemporalOperand = TemporalIterator | Integer TemporalIterator = ? An alphanumeric string ?; GeneName = ? A gene name from the list of involved genes ?; Separator = ","; Integer = ? An integer value?; String = ? Any sequence of characters (except a line break) ?; Newline = ? A line break character ?; } The meaning of the operators is as follows: \describe{ \item{\code{all}}{Equivalent to a conjunction of all arguments. For symbolic networks, the operator can have a time range, in which case the arguments are evaluated for each time point specified in the iterator.} \item{\code{any}}{Equivalent to a disjunction of all arguments. For symbolic networks, the operator can have a time range, in which case the arguments are evaluated for each time point specified in the iterator.} \item{\code{maj}}{Evaluates to true if the majority of the arguments evaluate to true. For symbolic networks, the operator can have a time range, in which case the arguments are evaluated for each time point specified in the iterator.} \item{\code{sumgt}}{Evaluates to true if the number of arguments (except the last) that evaluate to true is greater than the number specified in the last argument. For symbolic networks, the operator can have a time range, in which case the arguments are evaluated for each time point specified in the iterator.} \item{\code{sumlt}}{Evaluates to true if the number of arguments (except the last) that evaluate to true is less than the number specified in the last argument. For symbolic networks, the operator can have a time range, in which case the arguments are evaluated for each time point specified in the iterator.} \item{\code{timeis}}{Evaluates to true if the current absolute time step (i.e. number of state transitions performed from the current start state) is the same as the argument.} \item{\code{timelt}}{Evaluates to true if the current absolute time step (i.e. number of state transitions performed from the current start state) is the less than the argument.} \item{\code{timegt}}{Evaluates to true if the current absolute time step (i.e. number of state transitions performed from the current start state) is greater than the argument.} } If \code{symbolic=FALSE} and there is exactly one rule for each gene, a Boolean network of class \code{BooleanNetwork} is created. In these networks, constant genes are automatically fixed (e.g. knocked-out or over-expressed). This means that they are always set to the constant value, and states with the complementary value are not considered in transition tables etc. If you would like to change this behaviour, use \code{\link{fixGenes}} to reset the fixing. If \code{symbolic=FALSE} and two or more rules exist for the same gene, the function returns a probabilistic network of class \code{ProbabilisticBooleanNetwork}. In this case, alternative rules may be annotated with probabilities, which must sum up to 1 for all rules that belong to the same gene. If no probabilities are supplied, uniform distribution is assumed. If \code{symbolic=TRUE}, a symbolic representation of a (possibly temporal) Boolean network of class \code{SymbolicBooleanNetwork} is created. } \value{ If \code{symbolic=FALSE} and only one function per gene is specified, a structure of class \code{BooleanNetwork} representing the network is returned. It has the following components: \item{genes}{A vector of gene names involved in the network. This list determines the indices of genes in inputs of functions or in state bit vectors.} \item{interactions}{A list with \code{length(genes)} elements, where the i-th element describes the transition function for the i-th gene. Each element has the following sub-components: \describe{ \item{input}{A vector of indices of the genes that serve as the input of the Boolean transition function. If the function has no input (i.e. the gene is constant), the vector consists of a zero element.} \item{func}{The transition function in truth table representation. This vector has \if{latex}{\cr}\code{2^length(input)} entries, one for each combination of input variables. If the gene is constant, the function is 1 or 0.} \item{expression}{A string representation of the Boolean expression from which the truth table was generated} }} \item{fixed}{A vector specifying which genes are knocked-out or over-expressed. For each gene, there is one element which is set to 0 if the gene is knocked-out, to 1 if the gene is over-expressed, and to -1 if the gene is not fixed at all, i. e. can change its value according to the supplied transition function. Constant genes are automatically set to fixed values.} If \code{symbolic=FALSE} and there is at least one gene with two or more alternative transition functions, a structure of class \code{ProbabilisticBooleanNetwork} is returned. This structure is similar to \code{BooleanNetwork}, but allows for storing more than one function in an interaction. It consists of the following components: \item{genes}{A vector of gene names involved in the network. This list determines the indices of genes in inputs of functions or in state bit vectors.} \item{interactions}{A list with \code{length(genes)} elements, where the i-th element describes the alternative transition functions for the i-th gene. Each element is a list of transition functions. In this second-level list, each element has the the following sub-components: \describe{ \item{input}{A vector of indices of the genes that serve as the input of the Boolean transition function. If the function has no input (i.e. the gene is constant), the vector consists of a zero element.} \item{func}{The transition function in truth table representation. This vector has \if{latex}{\cr}\code{2^length(input)} entries, one for each combination of input variables. If the gene is constant, the function is -1.} \item{expression}{A string representation of the underlying Boolean expression} \item{probability}{The probability that the corresponding transition function is chosen} }} \item{fixed}{A vector specifying which genes are knocked-out or over-expressed. For each gene, there is one element which is set to 0 if the gene is knocked-out, to 1 if the gene is over-expressed, and to -1 if the gene is not fixed at all, i. e. can change its value according to the supplied transition function. You can knock-out and over-express genes using \code{\link{fixGenes}}.} If \code{symbolic=TRUE}, a structure of class \code{SymbolicBooleanNetwork} that represents the network as expression trees is returned. It has the following components: \item{genes}{A vector of gene names involved in the network. This list determines the indices of genes in inputs of functions or in state bit vectors.} \item{interactions}{A list with \code{length(genes)} elements, where the i-th element describes the transition function for the i-th gene in a symbolic representation. Each such element is a list that represents a recursive expression tree, possibly consisting of sub-elements (operands) that are expression trees themselves. Each element in an expression tree can be a Boolean/temporal operator, a literal ("atom") or a numeric constant.} \item{internalStructs}{A pointer referencing an internal representation of the expression trees as raw C objects. This is used for simulations and must be set to NULL if \code{interactions} are changed to force a refreshment. } \item{timeDelays}{An integer vector storing the temporal memory sizes required for each of the genes in the network. That is, the vector stores the minimum number of predecessor states of each gene that need to be saved to determine the successor state of the network.} \item{fixed}{A vector specifying which genes are knocked-out or over-expressed. For each gene, there is one element which is set to 0 if the gene is knocked-out, to 1 if the gene is over-expressed, and to -1 if the gene is not fixed at all, i. e. can change its value according to the supplied transition function. Constant genes are automatically set to fixed values.} } \seealso{ \code{\link{getAttractors}}, \code{\link{simulateSymbolicModel}}, \code{\link{markovSimulation}}, \code{\link{stateTransition}}, \code{\link{fixGenes}}, \code{\link{loadSBML}}, \code{\link{loadBioTapestry}} } \examples{ # write example network to file sink("testNet.bn") cat("targets, factors\n") cat("Gene1, !Gene2 | !Gene3\n") cat("Gene2, Gene3 & Gene4\n") cat("Gene3, Gene2 & !Gene1\n") cat("Gene4, 1\n") sink() # read file net <- loadNetwork("testNet.bn") print(net) } \keyword{Boolean network probabilistic Boolean network PBN file logic parse} ����������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/man/toPajek.Rd������������������������������������������������������������������������������0000644�0001762�0000144�00000003666�13277247010�014271� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\name{toPajek} \Rdversion{1.1} \alias{toPajek} \title{ Export a network to the Pajek file format } \description{ Exports a network to the Pajek file format to visualize transition trajectories. For more information on Pajek, please refer to \url{http://pajek.imfm.si/doku.php} } \usage{ toPajek(stateGraph, file = "boolean.net", includeLabels=FALSE, ...) } \arguments{ \item{stateGraph}{ An object of class \code{AttractorInfo} or \code{SymbolicSimulation}, as returned by \code{\link{getAttractors}} and \code{\link{simulateSymbolicModel}} respectively. As the transition table information in this structure is required, \code{getAttractors} must be called in synchronous mode and with \code{returnTable} set to TRUE. Similarly, \code{simulateSymbolicModel} must be called with \code{returnGraph=TRUE}. Alternatively, \code{stateGraph} can be an object of class \code{TransitionTable}, which can be extracted using the functions \code{\link{getTransitionTable}}, \code{\link{getBasinOfAttraction}}, or \code{\link{getStateSummary}} . } \item{file}{ The name of the output file for Pajek. Defaults to "boolean.net". } \item{includeLabels}{ If set to true, the vertices of the graph in the output file are labeled with the binary encodings of the states. Defaults to FALSE. } \item{\dots}{ This is only for compatibility with previous versions and should not be used. } } \value{ This function has no return value. } \seealso{ \code{\link{getAttractors}}, \code{\link{simulateSymbolicModel}}, \code{\link{getTransitionTable}}, \code{\link{getBasinOfAttraction}}, \code{\link{getStateSummary}}, \code{\link{toSBML}} } \examples{ # load example data data(cellcycle) # get attractors attractors <- getAttractors(cellcycle) # export to Pajek toPajek(attractors, file="pajek_export.net") } % Add one or more standard keywords, see file 'KEYWORDS' in the % R documentation directory. \keyword{Pajek Boolean network attractor cycle basin transition state graph} ��������������������������������������������������������������������������BoolNet/man/saveNetwork.Rd��������������������������������������������������������������������������0000644�0001762�0000144�00000004060�13277247010�015171� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\name{saveNetwork} \alias{saveNetwork} \title{ Save a network } \description{ Saves synchronous, asynchronous, probabilistic and temporal networks in the \pkg{BoolNet} network file format . } \usage{ saveNetwork(network, file, generateDNFs = FALSE, saveFixed = TRUE) } \arguments{ \item{network}{ An object of class \code{BooleanNetwork} or \code{SymbolicBooleanNetwork} to be exported } \item{file}{ The name of the network file to be created } \item{generateDNFs}{ If \code{network} is a \code{BooleanNetwork} object, this parameter specifies whether formulae in Disjunctive Normal Form are exported instead of the expressions that describe the transition functions. If set to FALSE, the original expressions are exported. If set to "canonical", a canonical Disjunctive Normal Form is generated from each truth table. If set to "short", the canonical DNF is minimized by joining terms (which can be time-consuming for functions with many inputs). If set to TRUE, a short DNF is generated for functions with up to 12 inputs, and a canonical DNF is generated for functions with more than 12 inputs. For objects of class \code{SymbolicBooleanNetwork}, this parameter is ignored. } \item{saveFixed}{ If set to TRUE, knock-outs and overexpression of genes override their transition functions. That is, if a gene in the network is fixed to 0 or 1, this value is saved, regardless of the transition function. If set to FALSE, the transition function is saved. Defaults to TRUE. } } \details{ The network is saved in the \pkg{BoolNet} file format (see \code{\link{loadNetwork}} for details). If the expressions in the transition functions cannot be parsed or \code{generateDNFs} is true, a DNF representation of the transition functions is generated. } \seealso{ \code{\link{loadNetwork}} } \examples{ # load the cell cycle network data(cellcycle) # save it to a file saveNetwork(cellcycle, file="cellcycle.txt") # reload the model print(loadNetwork("cellcycle.txt")) } \keyword{Boolean network probabilistic Boolean network PBN file export} ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/man/print.SymbolicSimulation.Rd�������������������������������������������������������������0000644�0001762�0000144�00000003735�13277247010�017652� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\name{print.SymbolicSimulation} \alias{print.SymbolicSimulation} \title{ Print simulation results } \description{ Specialized print method to print the information stored in an \code{AttractorInfo} object. By default, the states of the identified attractors are printed in a binary encoding. Furthermore, the state transition graph and the sequences from the start states to the attractors can be printed. The method can print either the full states, or only the active genes of the states. } \usage{ \method{print}{SymbolicSimulation}(x, activeOnly = FALSE, sequences = FALSE, graph = FALSE, attractors = TRUE, ...) } \arguments{ \item{x}{ An object of class \code{SymbolicSimulation} to be printed. } \item{activeOnly}{ If set to true, a state is represented by a list of active genes (i.e., genes which are set to 1). If set to false, a state is represented by a binary vector with one entry for each gene, specifying whether the gene is active or not. Defaults to \code{FALSE}. } \item{sequences}{ If set to true and if \code{\link{simulateSymbolicModel}} has been started with \code{returnSequences=TRUE}, the sequences from the start states to the attractors are printed. Defaults to \code{FALSE}. } \item{graph}{ If set to true if \code{\link{simulateSymbolicModel}} has been started with \code{returnGraph=TRUE}, the state transition table is printed. Defaults to \code{FALSE}. } \item{attractors}{ If set to true if \code{\link{simulateSymbolicModel}} has been started with \code{returnAttractor=TRUE}, the state transition table is printed. Defaults to \code{TRUE}. } \item{\dots}{ Further parameters for the \code{\link{print}} method. Currently not used. } } \value{ Invisibly returns the printed object } \seealso{ \code{\link{simulateSymbolicModel}} } \keyword{print symbolic Boolean network} �����������������������������������BoolNet/man/getTransitionProbabilities.Rd�����������������������������������������������������������0000644�0001762�0000144�00000002676�13277247010�020237� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\name{getTransitionProbabilities} \alias{getTransitionProbabilities} \title{ Get a matrix of transitions and their probabilities in probabilistic Boolean networks } \description{ Retrieves the state transitions and their probabilities in a probabilistic Boolean network. This takes the transition table information calculated by the \code{\link{markovSimulation}} method. } \usage{ getTransitionProbabilities(markovSimulation) } \arguments{ \item{markovSimulation}{ An object of class \code{MarkovSimulation}, as returned by \code{\link{markovSimulation}}. As the transition table information in this structure is required, \code{\link{markovSimulation}} must be called with \code{returnTable} set to TRUE. } } \value{ Returns a data frame with the first \code{n} columns describing the values of the genes before the transition, the next \code{n} columns describing the values of the genes after the transition, and the last column containing the probability of the transition. Here, \code{n} is the number of genes in the underlying network. Only transitions with non-zero probability are included. } \seealso{ \code{\link{markovSimulation}} } \examples{ # load example network data(examplePBN) # perform a Markov chain simulation sim <- markovSimulation(examplePBN) # print out the probability table print(getTransitionProbabilities(sim)) } \keyword{Boolean network probabilistic Boolean network PBN transition probability} ������������������������������������������������������������������BoolNet/man/getAttractorSequence.Rd�����������������������������������������������������������������0000644�0001762�0000144�00000003067�13277247010�017023� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\name{getAttractorSequence} \alias{getAttractorSequence} \title{ Decode the state sequence of a synchronous attractor } \description{ Obtains the sequence of states belonging to a single synchronous attractor from the encoded data in an \code{AttractorInfo} structure or in a \code{SymbolicSimulation} structure. } \usage{ getAttractorSequence(attractorInfo, attractorNo) } \arguments{ \item{attractorInfo}{ An object of class \code{AttractorInfo}, as returned by \code{\link{getAttractors}}, or of class \code{SymbolicSimulation}, as returned by \code{\link{simulateSymbolicModel}}. As the transition table information in this structure is required, \code{getAttractors} must be called in synchronous mode and with \code{returnTable} set to TRUE. Similarly, \code{simulateSymbolicModel} must be called with \code{returnGraph=TRUE}. } \item{attractorNo}{ The index of the attractor in \code{attractorInfo} whose state sequence should be obtained } } \value{ Returns a data frame with the genes in the columns. The rows are the successive states of the attractor. The successor state of the last state (i.e. the last row) is the first state (i.e. the first row). } \seealso{ \code{\link{getAttractors}}, \code{\link{simulateSymbolicModel}}, \code{\link{getPathToAttractor}}, \code{\link{plotSequence}}, \code{\link{sequenceToLaTeX}} } \examples{ # load example data data(cellcycle) # get attractors attractors <- getAttractors(cellcycle) # print basin of 7-state attractor print(getAttractorSequence(attractors, 2)) } \keyword{Boolean network attractor cycle sequence state} �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/man/print.BooleanNetwork.Rd�����������������������������������������������������������������0000644�0001762�0000144�00000001302�13277247010�016741� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\name{print.BooleanNetwork} \Rdversion{1.1} \alias{print.BooleanNetwork} \title{ Print a Boolean network } \description{ A specialized method to print an object of class \code{BooleanNetwork}. This prints the transition functions of all genes. If genes are knocked-out or over-expressed, these genes are listed below the functions. } \usage{ \method{print}{BooleanNetwork}(x, ...) } \arguments{ \item{x}{ An object of class \code{BooleanNetwork} to be printed } \item{\dots}{ Further parameters for the \code{\link{print}} method. Currently not used. } } \value{ Invisibly returns the printed object } \seealso{ \code{\link{print}}, \code{\link{loadNetwork}} } \keyword{network Boolean network print} ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/man/getPathToAttractor.Rd�������������������������������������������������������������������0000644�0001762�0000144�00000006135�13277247010�016451� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\name{getPathToAttractor} \alias{getPathToAttractor} \title{ Get state transitions between a state and its attractor } \description{ Lists the states in the path from a specified state to the corresponding synchronous attractor. } \usage{ getPathToAttractor(network, state, includeAttractorStates = c("all","first","none")) } \arguments{ \item{network}{Either a network structure of class \code{BooleanNetwork} or \code{SymbolicBooleanNetwork} , or an attractor search result of class \code{AttractorInfo}. In the former case, a synchronous attractor search starting from \code{state} is conducted. In the latter case, \code{network} must be the result of a call to \code{\link{getAttractors}} with \code{returnTable=TRUE}, and its transition table must include \code{state}. } \item{state}{ A binary vector with exactly one entry per gene in the network. If \code{network} is of class \code{SymbolicBooleanNetwork} and makes use of more than one predecessor state, this can also be a matrix with the genes in the columns and multiple predecessor states in the rows. } \item{includeAttractorStates}{ Specifies whether the actual attractor states are included in the resulting table or not. If \code{includeAttractorStates = "all"} (which is the default behaviour), the sequence ends when the attractor was traversed once. If \code{includeAttractorStates = "first"}, only the first state of attractor is added to the sequence. This corresponds to the behaviour prior to \pkg{BoolNet} version 1.5. If {includeAttractorStates = "none"}, the sequence ends with the last non-attractor state. In this case, the sequence can be empty if the start state is an attractor state. } } \value{ Returns a data frame with the genes in the columns. The rows are the successive states from \code{state} to the the corresponding attractor. Depending on \code{includeAttractorStates}, attractor states are included or not. The data frame has an attribute \code{attractor} specifying the indices of the states that belong to the attractor. If \code{includeAttractorStates} is \code{"first"} or \code{"none"}, these indices may correspond to states that are not included in the sequence itself. This attribute is used by \code{\link{plotSequence}} to highlight the attractor states. } \seealso{ \code{\link{getAttractors}}, \code{\link{simulateSymbolicModel}}, \code{\link{getTransitionTable}}, \code{\link{getBasinOfAttraction}}, \code{\link{plotSequence}}, \code{\link{attributes}} } \examples{ # load example network data(cellcycle) # get path from a state to its attractor # include all attractor states path <- getPathToAttractor(cellcycle, rep(1,10), includeAttractorStates="all") print(path) # include only the first attractor state path <- getPathToAttractor(cellcycle, rep(1,10), includeAttractorStates="first") print(path) # exclude attractor states path <- getPathToAttractor(cellcycle, rep(1,10), includeAttractorStates="none") print(path) } \keyword{Boolean network sequence path basin attractor} �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BoolNet/man/generateTimeSeries.Rd�������������������������������������������������������������������0000644�0001762�0000144�00000006651�13277247010�016455� 0����������������������������������������������������������������������������������������������������ustar �ligges��������������������������users������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\name{generateTimeSeries} \alias{generateTimeSeries} \title{ Generate time series from a network } \description{ Generates time series by simulating successive state transitions from random start states. In addition, the resulting matrices can be perturbed by Gaussian noise. } \usage{ generateTimeSeries(network, numSeries, numMeasurements, type = c("synchronous","asynchronous","probabilistic"), geneProbabilities, perturbations = 0, noiseLevel = 0) } \arguments{ \item{network}{ An object of class \code{BooleanNetwork} or \code{SymbolicBooleanNetwork} that contains the network for which time series are generated } \item{numSeries}{ The number of random start states used to generate successive series of states, that is, the number of time series matrices to generate } \item{numMeasurements}{ The number of states in each of the time series matrices. The first state of each time series is the randomly generated start state. The remaining \code{numMeasurements - 1} states are obtained by successive state transitions. } \item{type}{ The type of state transitions to be performed (see \code{\link{stateTransition}}) } \item{geneProbabilities}{ An optional vector of probabilities for the genes if \code{type="asynchronous"}. By default, each gene has the same probability to be chosen for the next state transition. These probabilities can be modified by supplying a vector of probabilities for the genes which sums up to one. } \item{perturbations}{ If this argument has a value greater than 0, artificial perturbation experiments are generated. That is, \code{perturbations} genes in each time series are knocked out or overexpressed artificially using the \code{\link{fixGenes}} function. } \item{noiseLevel}{ If this is non-zero, it specifies the standard deviation of the Gaussian noise which is added to all entries of the time series matrices. By default, no noise is added to the time series. } } \value{ A list of matrices, each corresponding to one time series. Each row of these matrices contains measurements for one gene on a time line, i. e. column \code{i+1} contains the successor states of column \code{i+1}. If \code{noiseLevel} is non-zero, the matrices contain real values, otherwise they contain only 0 and 1. If \code{perturbations>0}, the result list contains an additional matrix \code{perturbations} specifying the artificial perturbations applied to the different time series. This matrix has \code{numSeries} columns and one row for each gene in the network. A matrix entry is 0 for a knock-out of the corresponding gene in the corresponding time series, 1 for overexpression, and NA for no perturbation. The result format is compatible with the input parameters of \code{\link{binarizeTimeSeries}} \if{latex}{\cr} and \code{\link{reconstructNetwork}}. } \seealso{ \code{\link{stateTransition}}, \code{\link{binarizeTimeSeries}}, \code{\link{reconstructNetwork}} } \examples{ # generate noisy time series from the cell cycle network data(cellcycle) ts <- generateTimeSeries(cellcycle, numSeries=50, numMeasurements=10, noiseLevel=0.1) # binarize the noisy time series bin <- binarizeTimeSeries(ts, method="kmeans")$binarizedMeasurements # reconstruct the network print(reconstructNetwork(bin, method="bestfit")) } \keyword{time series Boolean network synchronous update asynchronous update } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������