nloptr/0000755000176200001440000000000014636512442011577 5ustar liggesusersnloptr/tests/0000755000176200001440000000000014636312376012745 5ustar liggesusersnloptr/tests/tinytest.R0000644000176200001440000000013114636244620014742 0ustar liggesusersif (requireNamespace("tinytest", quietly = TRUE)) { tinytest::test_package("nloptr") } nloptr/MD50000644000176200001440000001421114636512442012106 0ustar liggesusersadcdf5c8e85860f1e53ed080a8e57be7 *DESCRIPTION be48e9fa0b8b1abf0e1f056a6acc4897 *NAMESPACE f531b404db647a0863acb478ea2512b3 *NEWS.md 2c9eea2671549aed2473f5ecf26aef5b *R/auglag.R a4d741da1971102d9a2c8a95e718012c *R/ccsaq.R 8706da0ffa93ea4cff2e8d2dfe4f39a6 *R/check.derivatives.R c4261b17a40d117c8fc104a3cfa3cdcd *R/cobyla.R 1b6a1ea87e47aa865b7cb7dec6166e54 *R/direct.R 3320b563947ebfb5abaaaff511a90dd8 *R/finite.diff.R 638427a200f1b1de773337d301a91c3c *R/global.R 3792b2df9e5f8182e83a2585e3f3dad2 *R/gradients.R fd3eab1e27255b3bf17ec7a6e972293d *R/is.nloptr.R 1012ad9882d174e8df18c13bc88f8fde *R/lbfgs.R 44cef8728c80d2076264ea1fe6eeb440 *R/mlsl.R 7734348be66484e73d96f99cc2498667 *R/mma.R 4f39342517f60bfa58a1fa60e595a71c *R/nloptions.R 2ca3fde24d91145116ae904694ca1895 *R/nloptr-package.R 796bda94a828dd62ad8fc678eb7c3c16 *R/nloptr.R 87b6db027006b426f4b7151c8856358f *R/nloptr.add.default.options.R 3c228ab5b156ec7210a5bee3dbdc4c41 *R/nloptr.get.default.options.R d45fe0c993e466fc311f0b98e3cf840b *R/nloptr.print.options.R ba6c876d36576ebd561b7431ad6b6c9f *R/nm.R add17b063aac9bb9558baf51883d0898 *R/print.nloptr.R 38cb479973dc647f6a548b53b354d211 *R/slsqp.R 20d674fd10cc1d4a25d8b7f024d330d0 *R/tnewton.R 442cdf85bd35202e9a862fbed687a52f *R/varmetric.R cc54c4372a98b965df710a7cd302608f *R/zzz.R fc0b8f48edc29e61d814386272097baa *README.md d48967c93e5fe1eb6722b20516da8cbe *build/vignette.rds 41b24a7410fc707ea978acd5073dc371 *cleanup 88d2e07eb4d1d112ccac8a205e2dc9de *configure 91b535fa365c497602f8923cbe338a62 *configure.ac b13c04c6ff93be16915e4d59145683ad *inst/CITATION b0c446695d0d4eb649aa1b047caa9553 *inst/doc/nloptr.R 619958a6b7ea49b4bcdf5bf0600d1336 *inst/doc/nloptr.Rmd a8723cba4b5037fc6f3ffb5f453260be *inst/doc/nloptr.html 43c93d3a0ca355cc16a0f64117216cba *inst/include/nlopt.f e3e3187995f39f8b9ef632a82a8013a9 *inst/include/nlopt.h b6613ad3b69f214e64cbdefb4d4c80ff *inst/include/nlopt.hpp 8ff1729153f0592dcaa284f4471b228d *inst/include/nloptrAPI.h c6e161ae97979b3eb2c088e02e645ac2 *inst/tinytest/test-banana-global.R 79b84cb8bce3d75a8ad8b88f4754ac19 *inst/tinytest/test-banana.R 01cd0194d50eeb83c285b6a42eff484e *inst/tinytest/test-check.derivatives.R 002a4ccdca7baa3d8e60a064336b13be *inst/tinytest/test-derivative-checker.R c444b18a7a246750683d4be611facdf6 *inst/tinytest/test-example.R 160466347214bf0a8cc058ec9b5b12b5 *inst/tinytest/test-gradients.R 2eee41b62f88010bf7243e0082bd08de *inst/tinytest/test-hs023.R a2ac031fa9eff6ec3f35404f893dd0d5 *inst/tinytest/test-hs071.R 953d535b34e32314d55fcb5708566aa9 *inst/tinytest/test-is.nloptr.R 2901a91c515a92eb20dbbee6f7d1f67b *inst/tinytest/test-nloptions.R dfc0c09e19b7e400e4569a0259c539d3 *inst/tinytest/test-nloptr.R f3a8bee74228a90418ce9d85ca7df862 *inst/tinytest/test-nloptr.add.default.options.R c072a836125402cba5f2a0b7947c13d3 *inst/tinytest/test-nloptr.print.options.R 0b5679928d00f4e3440b2ec2732070a1 *inst/tinytest/test-options-maxtime.R 2e3364c8b202dd590e29836a7b060119 *inst/tinytest/test-parameters.R ca34d54377139520253ef7274ed191d3 *inst/tinytest/test-print.nloptr.R a2fc55db793f1a3c0d93e5df25da0121 *inst/tinytest/test-simple.R feae5e58b876b903ef0d8ea269037ee9 *inst/tinytest/test-systemofeq.R 267dca9d164f31bba83b6a32d7eecb7b *inst/tinytest/test-wrapper-auglag.R 79ba0ad9c44692aa3ff324aff119105b *inst/tinytest/test-wrapper-ccsaq.R ebaf8a4801a1db3693be45167278934c *inst/tinytest/test-wrapper-cobyla.R d79078c65677a13c038ed4d233c2b1ba *inst/tinytest/test-wrapper-direct.R 811b3e5baaf0052c7a3d4c2fb07b5d5b *inst/tinytest/test-wrapper-global.R 9214436377834626deefdf1e43f6b9a5 *inst/tinytest/test-wrapper-lbgfs.R fa581e8b29166a2b1868eb59ffa01d02 *inst/tinytest/test-wrapper-mlsl.R 4aeac1345452c86157c784e2344d3168 *inst/tinytest/test-wrapper-mma.R 68989551461a5081accb2b9b8849cbce *inst/tinytest/test-wrapper-nm.R 5449d71f7f7ae359681fb98e6d1e242b *inst/tinytest/test-wrapper-slsqp.R d72091f7293151325d75b86dccfc4ab2 *inst/tinytest/test-wrapper-tnewton.R 9fa9f5c8d40e7e8c1286e65f7d8919b8 *inst/tinytest/test-wrapper-varmetric.R 7a334477c5d4f530996c2ee22b0413bc *man/auglag.Rd 331b234ddd5f8bf58270bb939d75bf4e *man/bobyqa.Rd e0f617551ee0dd04d92178e0a953bf6b *man/ccsaq.Rd c9fa25267c65d4678c34ea132e1ab903 *man/check.derivatives.Rd 64b60c929a88b8d4c1e39a6d007176be *man/cobyla.Rd 72e5601fa9a61df9c497023f382351ba *man/crs2lm.Rd c65670513f9a04bf72194040045494f3 *man/direct.Rd 123679eb319498c0be11dbe28628bb58 *man/figures/logo.png 5a891bdeb9abfabfd687355e7a4f2c06 *man/is.nloptr.Rd 426a333a57703435a0d36f37fe34d9a5 *man/isres.Rd 630d7cd97a0dab1ac277c2e181d6f48c *man/lbfgs.Rd b9271b8c5c9eb95db464a73cce389c7d *man/mlsl.Rd cc701525850d01d210e8e11d1bfd91b5 *man/mma.Rd b828ee50bc7a9319767c1bb63db35092 *man/neldermead.Rd 1a2f5819e5dcba4c5e7b6cb728e1a3a5 *man/newuoa.Rd c7ad4c8b3c37b83985c7cc9729848419 *man/nl.grad.Rd b0e622c84af36c9bc7b6addbba5bdd16 *man/nl.opts.Rd b1600c7815b219501c6f32f7a9c271a0 *man/nloptr-package.Rd 1c11038346cc9dc02cb13fab29bb6970 *man/nloptr.Rd ee1e5366588c505e06b6d586f3985d37 *man/nloptr.get.default.options.Rd c9f1db0752fca45dc5737fcc992e9b22 *man/nloptr.print.options.Rd d8357d55e9d181ad9bdb6dedb278ad20 *man/print.nloptr.Rd 4f177e182a19f65e5a4708cd2121cb16 *man/sbplx.Rd 0af31d7b7d33248aa7dd7fa44ca0a25b *man/slsqp.Rd f75535fb06c5fbbe14889c97c779b589 *man/stogo.Rd 2db8666fe18fefa27d470b4d9c0e1f49 *man/tnewton.Rd 44388ad7db4146a545057f6ae282deeb *man/varmetric.Rd 63f419ba1c5f5d13c63f0bb910d5f7ef *src/Makevars.in 03973630c5039fd80d1e1145ea73327d *src/Makevars.ucrt 4adef5279df6e6085c67f45c29ed8cb8 *src/Makevars.win d41d8cd98f00b204e9800998ecf8427e *src/dummy.cpp 1ad915ff67fdebb7a64088cef9f9c635 *src/init_nloptr.c 8fb4dca31069c62bad33d7e0062625a9 *src/nlopt-src.tar.gz 2c98a53bc82b2b116b05554376df7a3f *src/nloptr.c 2435d40892a60b23a75cbd3c92763b44 *src/nloptr.h 1a486d88a2d4c9922919b716e6e57847 *src/scripts/cmake_config.sh 53ed6c22d808fde48f2eca0d83fc5a15 *src/scripts/nlopt_cleanup.sh 9792b873cb51bce028346abb20bacf89 *src/scripts/nlopt_download.sh 3fd0eb363669e71650dfe0834fb09258 *src/scripts/r_config.sh 2edead7f1b9f4909c311e3fc41830c03 *tests/tinytest.R c9d418e9199bd3a74f662464b0b348ba *tools/cmake_call.sh 0e377c2bef61f13be9df61bcfb9b9d8c *tools/winlibs.R 619958a6b7ea49b4bcdf5bf0600d1336 *vignettes/nloptr.Rmd 475041bb34f2f2b507c809121dd96fb0 *vignettes/reflist.bib nloptr/R/0000755000176200001440000000000014636244620012000 5ustar liggesusersnloptr/R/slsqp.R0000644000176200001440000001444114636244620013271 0ustar liggesusers# Copyright (C) 2014 Hans W. Borchers. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: slsqp.R # Author: Hans W. Borchers # Date: 27 January 2014 # # Wrapper to solve optimization problem using Sequential Quadratic Programming. # # CHANGELOG # # 2023-02-09: Direct Jacobian now converges to proper value so removing # confusing commentary in example. Also Cleanup and tweaks for safety and # efficiency (Avraham Adler) # 2024-06-04: Switched desired direction of the hin/hinjac inequalities, leaving # the old behavior as the default for now. Also cleaned up the HS100 # example (Avraham Adler). # #' Sequential Quadratic Programming (SQP) #' #' Sequential (least-squares) quadratic programming (SQP) algorithm for #' nonlinearly constrained, gradient-based optimization, supporting both #' equality and inequality constraints. #' #' The algorithm optimizes successive second-order (quadratic/least-squares) #' approximations of the objective function (via BFGS updates), with #' first-order (affine) approximations of the constraints. #' #' @param x0 starting point for searching the optimum. #' @param fn objective function that is to be minimized. #' @param gr gradient of function \code{fn}; will be calculated numerically if #' not specified. #' @param lower,upper lower and upper bound constraints. #' @param hin function defining the inequality constraints, that is #' \code{hin <= 0} for all components. This is new behavior in line with the #' rest of the \code{nloptr} arguments. To use the old behavior, please set #' \code{deprecatedBehavior} to \code{TRUE}. #' @param hinjac Jacobian of function \code{hin}; will be calculated #' numerically if not specified. #' @param heq function defining the equality constraints, that is \code{heq = 0} #' for all components. #' @param heqjac Jacobian of function \code{heq}; will be calculated #' numerically if not specified. #' @param nl.info logical; shall the original NLopt info been shown. #' @param control list of options, see \code{nl.opts} for help. #' @param deprecatedBehavior logical; if \code{TRUE} (default for now), the old #' behavior of the Jacobian function is used, where the equality is \eqn{\ge 0} #' instead of \eqn{\le 0}. This will be reversed in a future release and #' eventually removed. #' @param ... additional arguments passed to the function. #' #' @return List with components: #' \item{par}{the optimal solution found so far.} #' \item{value}{the function value corresponding to \code{par}.} #' \item{iter}{number of (outer) iterations, see \code{maxeval}.} #' \item{convergence}{integer code indicating successful completion (> 1) #' or a possible error number (< 0).} #' \item{message}{character string produced by NLopt and giving additional #' information.} #' #' @export slsqp #' #' @author Hans W. Borchers #' #' @note See more infos at #' \url{https://nlopt.readthedocs.io/en/latest/NLopt_Algorithms/}. #' #' @seealso \code{alabama::auglag}, \code{Rsolnp::solnp}, #' \code{Rdonlp2::donlp2} #' #' @references Dieter Kraft, ``A software package for sequential quadratic #' programming'', Technical Report DFVLR-FB 88-28, Institut fuer Dynamik der #' Flugsysteme, Oberpfaffenhofen, July 1988. #' #' @examples #' #' ## Solve the Hock-Schittkowski problem no. 100 with analytic gradients #' ## See https://apmonitor.com/wiki/uploads/Apps/hs100.apm #' #' x0.hs100 <- c(1, 2, 0, 4, 0, 1, 1) #' fn.hs100 <- function(x) {(x[1] - 10) ^ 2 + 5 * (x[2] - 12) ^ 2 + x[3] ^ 4 + #' 3 * (x[4] - 11) ^ 2 + 10 * x[5] ^ 6 + 7 * x[6] ^ 2 + #' x[7] ^ 4 - 4 * x[6] * x[7] - 10 * x[6] - 8 * x[7]} #' #' hin.hs100 <- function(x) {c( #' 2 * x[1] ^ 2 + 3 * x[2] ^ 4 + x[3] + 4 * x[4] ^ 2 + 5 * x[5] - 127, #' 7 * x[1] + 3 * x[2] + 10 * x[3] ^ 2 + x[4] - x[5] - 282, #' 23 * x[1] + x[2] ^ 2 + 6 * x[6] ^ 2 - 8 * x[7] - 196, #' 4 * x[1] ^ 2 + x[2] ^ 2 - 3 * x[1] * x[2] + 2 * x[3] ^ 2 + 5 * x[6] - #' 11 * x[7]) #' } #' #' S <- slsqp(x0.hs100, fn = fn.hs100, # no gradients and jacobians provided #' hin = hin.hs100, #' nl.info = TRUE, #' control = list(xtol_rel = 1e-8, check_derivatives = TRUE), #' deprecatedBehavior = FALSE) #' #' ## The optimum value of the objective function should be 680.6300573 #' ## A suitable parameter vector is roughly #' ## (2.330, 1.9514, -0.4775, 4.3657, -0.6245, 1.0381, 1.5942) #' #' S #' slsqp <- function(x0, fn, gr = NULL, lower = NULL, upper = NULL, hin = NULL, hinjac = NULL, heq = NULL, heqjac = NULL, nl.info = FALSE, control = list(), deprecatedBehavior = TRUE, ...) { opts <- nl.opts(control) opts["algorithm"] <- "NLOPT_LD_SLSQP" fun <- match.fun(fn) fn <- function(x) fun(x, ...) if (is.null(gr)) { gr <- function(x) nl.grad(x, fn) } else { .gr <- match.fun(gr) gr <- function(x) .gr(x, ...) } if (!is.null(hin)) { if (deprecatedBehavior) { warning("The old behavior for hin >= 0 has been deprecated. Please ", "restate the inequality to be <=0. The ability to use the old ", "behavior will be removed in a future release.") .hin <- match.fun(hin) hin <- function(x) -.hin(x, ...) # change hin >= 0 to hin <= 0 ! } if (is.null(hinjac)) { hinjac <- function(x) nl.jacobian(x, hin) } else if (deprecatedBehavior) { warning("The old behavior for hinjac >= 0 has been deprecated. Please ", "restate the inequality to be <=0. The ability to use the old ", "behavior will be removed in a future release.") .hinjac <- match.fun(hinjac) hinjac <- function(x) -.hinjac(x) } } if (!is.null(heq)) { .heq <- match.fun(heq) heq <- function(x) .heq(x) if (is.null(heqjac)) { heqjac <- function(x) nl.jacobian(x, heq) } else { .heqjac <- match.fun(heqjac) heqjac <- function(x) .heqjac(x) } } S0 <- nloptr(x0, eval_f = fn, eval_grad_f = gr, lb = lower, ub = upper, eval_g_ineq = hin, eval_jac_g_ineq = hinjac, eval_g_eq = heq, eval_jac_g_eq = heqjac, opts = opts) if (nl.info) print(S0) list(par = S0$solution, value = S0$objective, iter = S0$iterations, convergence = S0$status, message = S0$message) } nloptr/R/ccsaq.R0000644000176200001440000001403114636244620013214 0ustar liggesusers# SPDX-License-Identifier: LGPL-3.0-or-later # File: ccsaq.R # Author: Julien Chiquet # Date: 02 October 2018 # # Wrapper to solve optimization problem using CCSAQ. # # CHANGELOG: # 2023-02-11: Tweaks for efficiency and readability (Avraham Adler) # 2024-06-04: Switched desired direction of the hin/hinjac inequalities, leaving # the old behavior as the default for now. Also cleaned up the HS100 # example (Avraham Adler). # #' Conservative Convex Separable Approximation with Affine Approximation plus #' Quadratic Penalty #' #' This is a variant of CCSA ("conservative convex separable approximation") #' which, instead of constructing local MMA approximations, constructs simple #' quadratic approximations (or rather, affine approximations plus a quadratic #' penalty term to stay conservative) #' #' @param x0 starting point for searching the optimum. #' @param fn objective function that is to be minimized. #' @param gr gradient of function \code{fn}; will be calculated numerically if #' not specified. #' @param lower,upper lower and upper bound constraints. #' @param hin function defining the inequality constraints, that is #' \code{hin>=0} for all components. #' @param hinjac Jacobian of function \code{hin}; will be calculated #' numerically if not specified. #' @param nl.info logical; shall the original NLopt info been shown. #' @param control list of options, see \code{nl.opts} for help. #' @param deprecatedBehavior logical; if \code{TRUE} (default for now), the old #' behavior of the Jacobian function is used, where the equality is \eqn{\ge 0} #' instead of \eqn{\le 0}. This will be reversed in a future release and #' eventually removed. #' @param ... additional arguments passed to the function. #' #' @return List with components: #' \item{par}{the optimal solution found so far.} #' \item{value}{the function value corresponding to \code{par}.} #' \item{iter}{number of (outer) iterations, see \code{maxeval}.} #' \item{convergence}{integer code indicating successful completion (> 1) #' or a possible error number (< 0).} #' \item{message}{character string produced by NLopt and giving additional #' information.} #' #' @export ccsaq #' #' @note ``Globally convergent'' does not mean that this algorithm converges to #' the global optimum; it means that it is guaranteed to converge to some local #' minimum from any feasible starting point. #' #' @seealso \code{\link{mma}} #' #' @references Krister Svanberg, ``A class of globally convergent optimization #' methods based on conservative convex separable approximations,'' SIAM J. #' Optim. 12 (2), p. 555-573 (2002). #' #' @examples #' #' ## Solve the Hock-Schittkowski problem no. 100 with analytic gradients #' ## See https://apmonitor.com/wiki/uploads/Apps/hs100.apm #' #' x0.hs100 <- c(1, 2, 0, 4, 0, 1, 1) #' fn.hs100 <- function(x) {(x[1] - 10) ^ 2 + 5 * (x[2] - 12) ^ 2 + x[3] ^ 4 + #' 3 * (x[4] - 11) ^ 2 + 10 * x[5] ^ 6 + 7 * x[6] ^ 2 + #' x[7] ^ 4 - 4 * x[6] * x[7] - 10 * x[6] - 8 * x[7]} #' #' hin.hs100 <- function(x) {c( #' 2 * x[1] ^ 2 + 3 * x[2] ^ 4 + x[3] + 4 * x[4] ^ 2 + 5 * x[5] - 127, #' 7 * x[1] + 3 * x[2] + 10 * x[3] ^ 2 + x[4] - x[5] - 282, #' 23 * x[1] + x[2] ^ 2 + 6 * x[6] ^ 2 - 8 * x[7] - 196, #' 4 * x[1] ^ 2 + x[2] ^ 2 - 3 * x[1] * x[2] + 2 * x[3] ^ 2 + 5 * x[6] - #' 11 * x[7]) #' } #' #' gr.hs100 <- function(x) { #' c( 2 * x[1] - 20, #' 10 * x[2] - 120, #' 4 * x[3] ^ 3, #' 6 * x[4] - 66, #' 60 * x[5] ^ 5, #' 14 * x[6] - 4 * x[7] - 10, #' 4 * x[7] ^ 3 - 4 * x[6] - 8) #' } #' #' hinjac.hs100 <- function(x) { #' matrix(c(4 * x[1], 12 * x[2] ^ 3, 1, 8 * x[4], 5, 0, 0, #' 7, 3, 20 * x[3], 1, -1, 0, 0, #' 23, 2 * x[2], 0, 0, 0, 12 * x[6], -8, #' 8 * x[1] - 3 * x[2], 2 * x[2] - 3 * x[1], 4 * x[3], 0, 0, 5, -11), #' nrow = 4, byrow = TRUE) #' } #' #' ## The optimum value of the objective function should be 680.6300573 #' ## A suitable parameter vector is roughly #' ## (2.330, 1.9514, -0.4775, 4.3657, -0.6245, 1.0381, 1.5942) #' #' # Results with exact Jacobian #' S <- ccsaq(x0.hs100, fn.hs100, gr = gr.hs100, #' hin = hin.hs100, hinjac = hinjac.hs100, #' nl.info = TRUE, control = list(xtol_rel = 1e-8), #' deprecatedBehavior = FALSE) #' #' # Results without Jacobian #' S <- ccsaq(x0.hs100, fn.hs100, hin = hin.hs100, #' nl.info = TRUE, control = list(xtol_rel = 1e-8), #' deprecatedBehavior = FALSE) #' ccsaq <- function(x0, fn, gr = NULL, lower = NULL, upper = NULL, hin = NULL, hinjac = NULL, nl.info = FALSE, control = list(), deprecatedBehavior = TRUE, ...) { opts <- nl.opts(control) opts["algorithm"] <- "NLOPT_LD_CCSAQ" fun <- match.fun(fn) fn <- function(x) fun(x, ...) if (is.null(gr)) { gr <- function(x) nl.grad(x, fn) } else { .gr <- match.fun(gr) gr <- function(x) .gr(x, ...) } if (!is.null(hin)) { if (deprecatedBehavior) { warning("The old behavior for hin >= 0 has been deprecated. Please ", "restate the inequality to be <=0. The ability to use the old ", "behavior will be removed in a future release.") .hin <- match.fun(hin) hin <- function(x) -.hin(x, ...) # change hin >= 0 to hin <= 0 ! } if (is.null(hinjac)) { hinjac <- function(x) nl.jacobian(x, hin) } else if (deprecatedBehavior) { warning("The old behavior for hinjac >= 0 has been deprecated. Please ", "restate the inequality to be <=0. The ability to use the old ", "behavior will be removed in a future release.") .hinjac <- match.fun(hinjac) hinjac <- function(x) -.hinjac(x) } } S0 <- nloptr(x0, eval_f = fn, eval_grad_f = gr, lb = lower, ub = upper, eval_g_ineq = hin, eval_jac_g_ineq = hinjac, opts = opts) if (nl.info) print(S0) list(par = S0$solution, value = S0$objective, iter = S0$iterations, convergence = S0$status, message = S0$message) } nloptr/R/finite.diff.R0000644000176200001440000000327014636244620014312 0ustar liggesusers# Copyright (C) 2011 Jelmer Ypma. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: finite.diff.R # Author: Jelmer Ypma # Date: 24 July 2011 # # CHANGELOG # # 2023-02-10: Tweaked for efficiency and clarity. Also switched to using vapply # which is both faster and type-safe. Not sure if we need to carry # both this and nl.grad/jacobian but not changing for now. # (Avraham Adler) # # Approximate the gradient of a function using finite differences. # # Input: # func : calculate finite difference approximation for the gradient of # this function # .x : evaluate at this point # indices : calculate finite difference approximation only for .x-indices # in this vector (optional) # stepSize : relative size of the step between x and x + h (optional) # ... : arguments that are passed to the user-defined function (func) # # Output: matrix with finite difference approximations # # http://en.wikipedia.org/wiki/Numerical_differentiation finite.diff <- function(func, .x, indices = seq_along(.x), stepSize = sqrt(.Machine$double.eps), ...) { # if we evaluate at values close to 0, we need a different step size stepSizeVec <- pmax(abs(.x), 1) * stepSize fx <- func(.x, ...) approx.gradf.index <- function(i, .x, func, fx, stepSizeVec, ...) { x_prime <- .x x_prime[i] <- .x[i] + stepSizeVec[i] stepSizeVec[i] <- x_prime[i] - .x[i] fx_prime <- func(x_prime, ...) (fx_prime - fx) / stepSizeVec[i] } vapply(indices, approx.gradf.index, double(length(fx)), .x = .x, func = func, fx = fx, stepSizeVec = stepSizeVec, ...) } nloptr/R/direct.R0000644000176200001440000001322214636244620013375 0ustar liggesusers# Copyright (C) 2014 Hans W. Borchers. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: direct.R # Author: Hans W. Borchers # Date: 27 January 2014 # # Wrapper to solve optimization problem using Direct. # # CHANGELOG # 2023-02-10: Tweaks for efficiency and readability (Avraham Adler) #' DIviding RECTangles Algorithm for Global Optimization #' #' DIRECT is a deterministic search algorithm based on systematic division of #' the search domain into smaller and smaller hyperrectangles. The DIRECT_L #' makes the algorithm more biased towards local search (more efficient for #' functions without too many minima). #' #' The DIRECT and DIRECT-L algorithms start by rescaling the bound constraints #' to a hypercube, which gives all dimensions equal weight in the search #' procedure. If your dimensions do not have equal weight, e.g. if you have a #' ``long and skinny'' search space and your function varies at about the same #' speed in all directions, it may be better to use unscaled variant of the #' DIRECT algorithm. #' #' The algorithms only handle finite bound constraints which must be provided. #' The original versions may include some support for arbitrary nonlinear #' inequality, but this has not been tested. #' #' The original versions do not have randomized or unscaled variants, so these #' options will be disregarded for these versions. #' #' @aliases direct directL #' #' @param fn objective function that is to be minimized. #' @param lower,upper lower and upper bound constraints. #' @param scaled logical; shall the hypercube be scaled before starting. #' @param randomized logical; shall some randomization be used to decide which #' dimension to halve next in the case of near-ties. #' @param original logical; whether to use the original implementation by #' Gablonsky -- the performance is mostly similar. #' @param nl.info logical; shall the original NLopt info been shown. #' @param control list of options, see \code{nl.opts} for help. #' @param ... additional arguments passed to the function. #' #' @return List with components: #' \item{par}{the optimal solution found so far.} #' \item{value}{the function value corresponding to \code{par}.} #' \item{iter}{number of (outer) iterations, see \code{maxeval}.} #' \item{convergence}{integer code indicating successful completion (> 0) #' or a possible error number (< 0).} #' \item{message}{character string produced by NLopt and giving additional #' information.} #' #' @export direct #' #' @author Hans W. Borchers #' #' @note The DIRECT_L algorithm should be tried first. #' #' @seealso The \code{dfoptim} package will provide a pure R version of this #' algorithm. #' #' @references D. R. Jones, C. D. Perttunen, and B. E. Stuckmann, #' ``Lipschitzian optimization without the Lipschitz constant,'' J. #' Optimization Theory and Applications, vol. 79, p. 157 (1993). #' #' J. M. Gablonsky and C. T. Kelley, ``A locally-biased form of the DIRECT #' algorithm," J. Global Optimization, vol. 21 (1), p. 27-37 (2001). #' #' @examples #' #' ### Minimize the Hartmann6 function #' hartmann6 <- function(x) { #' a <- c(1.0, 1.2, 3.0, 3.2) #' A <- matrix(c(10.0, 0.05, 3.0, 17.0, #' 3.0, 10.0, 3.5, 8.0, #' 17.0, 17.0, 1.7, 0.05, #' 3.5, 0.1, 10.0, 10.0, #' 1.7, 8.0, 17.0, 0.1, #' 8.0, 14.0, 8.0, 14.0), nrow=4, ncol=6) #' B <- matrix(c(.1312,.2329,.2348,.4047, #' .1696,.4135,.1451,.8828, #' .5569,.8307,.3522,.8732, #' .0124,.3736,.2883,.5743, #' .8283,.1004,.3047,.1091, #' .5886,.9991,.6650,.0381), nrow=4, ncol=6) #' fun <- 0 #' for (i in 1:4) { #' fun <- fun - a[i] * exp(-sum(A[i,] * (x - B[i,]) ^ 2)) #' } #' fun #' } #' S <- directL(hartmann6, rep(0, 6), rep(1, 6), #' nl.info = TRUE, control = list(xtol_rel = 1e-8, maxeval = 1000)) #' ## Number of Iterations....: 1000 #' ## Termination conditions: stopval: -Inf #' ## xtol_rel: 1e-08, maxeval: 1000, ftol_rel: 0, ftol_abs: 0 #' ## Number of inequality constraints: 0 #' ## Number of equality constraints: 0 #' ## Current value of objective function: -3.32236800687327 #' ## Current value of controls: #' ## 0.2016884 0.1500025 0.4768667 0.2753391 0.311648 0.6572931 #' direct <- function(fn, lower, upper, scaled = TRUE, original = FALSE, nl.info = FALSE, control = list(), ...) { opts <- nl.opts(control) if (scaled) { opts["algorithm"] <- "NLOPT_GN_DIRECT" } else { opts["algorithm"] <- "NLOPT_GN_DIRECT_NOSCAL" } if (original) opts["algorithm"] <- "NLOPT_GN_ORIG_DIRECT" fun <- match.fun(fn) fn <- function(x) fun(x, ...) x0 <- (lower + upper) / 2 S0 <- nloptr(x0, eval_f = fn, lb = lower, ub = upper, opts = opts) if (nl.info) print(S0) list(par = S0$solution, value = S0$objective, iter = S0$iterations, convergence = S0$status, message = S0$message) } #' @export directL #' @rdname direct directL <- function(fn, lower, upper, randomized = FALSE, original = FALSE, nl.info = FALSE, control = list(), ...) { opts <- nl.opts(control) if (randomized) { opts["algorithm"] <- "NLOPT_GN_DIRECT_L_RAND" } else { opts["algorithm"] <- "NLOPT_GN_DIRECT_L" } if (original) opts["algorithm"] <- "NLOPT_GN_ORIG_DIRECT_L" fun <- match.fun(fn) fn <- function(x) fun(x, ...) x0 <- (lower + upper) / 2 S0 <- nloptr(x0, eval_f = fn, lb = lower, ub = upper, opts = opts) if (nl.info) print(S0) list(par = S0$solution, value = S0$objective, iter = S0$iterations, convergence = S0$status, message = S0$message) } nloptr/R/tnewton.R0000644000176200001440000000700014636244620013616 0ustar liggesusers# Copyright (C) 2014 Hans W. Borchers. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: tnewton.R # Author: Hans W. Borchers # Date: 27 January 2014 # # Wrapper to solve optimization problem using Preconditioned Truncated Newton. # # CHANGELOG # 2023-02-08: Cleanup and tweaks for safety and efficiency (Avraham Adler) # #' Preconditioned Truncated Newton #' #' Truncated Newton methods, also called Newton-iterative methods, solve an #' approximating Newton system using a conjugate-gradient approach and are #' related to limited-memory BFGS. #' #' Truncated Newton methods are based on approximating the objective with a #' quadratic function and applying an iterative scheme such as the linear #' conjugate-gradient algorithm. #' #' @param x0 starting point for searching the optimum. #' @param fn objective function that is to be minimized. #' @param gr gradient of function \code{fn}; will be calculated numerically if #' not specified. #' @param lower,upper lower and upper bound constraints. #' @param precond logical; preset L-BFGS with steepest descent. #' @param restart logical; restarting L-BFGS with steepest descent. #' @param nl.info logical; shall the original NLopt info been shown. #' @param control list of options, see \code{nl.opts} for help. #' @param ... additional arguments passed to the function. #' #' @return List with components: #' \item{par}{the optimal solution found so far.} #' \item{value}{the function value corresponding to \code{par}.} #' \item{iter}{number of (outer) iterations, see \code{maxeval}.} #' \item{convergence}{integer code indicating successful completion (> 1) #' or a possible error number (< 0).} #' \item{message}{character string produced by NLopt and giving additional #' information.} #' #' @export tnewton #' #' @author Hans W. Borchers #' #' @note Less reliable than Newton's method, but can handle very large #' problems. #' #' @seealso \code{\link{lbfgs}} #' #' @references R. S. Dembo and T. Steihaug, ``Truncated Newton algorithms for #' large-scale optimization,'' Math. Programming 26, p. 190-212 (1982). #' #' @examples #' #' flb <- function(x) { #' p <- length(x) #' sum(c(1, rep(4, p - 1)) * (x - c(1, x[-p]) ^ 2) ^ 2) #' } #' # 25-dimensional box constrained: par[24] is *not* at boundary #' S <- tnewton(rep(3, 25L), flb, lower = rep(2, 25L), upper = rep(4, 25L), #' nl.info = TRUE, control = list(xtol_rel = 1e-8)) #' ## Optimal value of objective function: 368.105912874334 #' ## Optimal value of controls: 2 ... 2 2.109093 4 #' tnewton <- function(x0, fn, gr = NULL, lower = NULL, upper = NULL, precond = TRUE, restart = TRUE, nl.info = FALSE, control = list(), ...) { opts <- nl.opts(control) if (precond) { if (restart) opts["algorithm"] <- "NLOPT_LD_TNEWTON_PRECOND_RESTART" else opts["algorithm"] <- "NLOPT_LD_TNEWTON_PRECOND" } else { if (restart) opts["algorithm"] <- "NLOPT_LD_TNEWTON_RESTART" else opts["algorithm"] <- "NLOPT_LD_TNEWTON" } fun <- match.fun(fn) fn <- function(x) fun(x, ...) if (is.null(gr)) { gr <- function(x) nl.grad(x, fn) } else { .gr <- match.fun(gr) gr <- function(x) .gr(x, ...) } S0 <- nloptr(x0, eval_f = fn, eval_grad_f = gr, lb = lower, ub = upper, opts = opts) if (nl.info) print(S0) list(par = S0$solution, value = S0$objective, iter = S0$iterations, convergence = S0$status, message = S0$message) } nloptr/R/varmetric.R0000644000176200001440000000616714636244620014131 0ustar liggesusers# Copyright (C) 2014 Hans W. Borchers. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: varmetric.R # Author: Hans W. Borchers # Date: 27 January 2014 # # Wrapper to solve optimization problem using Varmetric. # # CHANGELOG # 2023-02-08: Cleanup and tweaks for safety and efficiency (Avraham Adler) # #' Shifted Limited-memory Variable-metric #' #' Shifted limited-memory variable-metric algorithm. #' #' Variable-metric methods are a variant of the quasi-Newton methods, #' especially adapted to large-scale unconstrained (or bound constrained) #' minimization. #' #' @param x0 initial point for searching the optimum. #' @param fn objective function to be minimized. #' @param gr gradient of function \code{fn}; will be calculated numerically if #' not specified. #' @param rank2 logical; if true uses a rank-2 update method, else rank-1. #' @param lower,upper lower and upper bound constraints. #' @param nl.info logical; shall the original NLopt info been shown. #' @param control list of control parameters, see \code{nl.opts} for help. #' @param ... further arguments to be passed to the function. #' #' @return List with components: #' \item{par}{the optimal solution found so far.} #' \item{value}{the function value corresponding to \code{par}.} #' \item{iter}{number of (outer) iterations, see \code{maxeval}.} #' \item{convergence}{integer code indicating successful completion (> 0) #' or a possible error number (< 0).} #' \item{message}{character string produced by NLopt and giving additional #' information.} #' #' @export varmetric #' #' @author Hans W. Borchers #' #' @note Based on L. Luksan's Fortran implementation of a shifted #' limited-memory variable-metric algorithm. #' #' @seealso \code{\link{lbfgs}} #' #' @references J. Vlcek and L. Luksan, ``Shifted limited-memory variable metric #' methods for large-scale unconstrained minimization,'' J. Computational Appl. #' Math. 186, p. 365-390 (2006). #' #' @examples #' #' flb <- function(x) { #' p <- length(x) #' sum(c(1, rep(4, p-1)) * (x - c(1, x[-p])^2)^2) #' } #' # 25-dimensional box constrained: par[24] is *not* at the boundary #' S <- varmetric(rep(3, 25), flb, lower=rep(2, 25), upper=rep(4, 25), #' nl.info = TRUE, control = list(xtol_rel=1e-8)) #' ## Optimal value of objective function: 368.105912874334 #' ## Optimal value of controls: 2 ... 2 2.109093 4 #' varmetric <- function(x0, fn, gr = NULL, rank2 = TRUE, lower = NULL, upper = NULL, nl.info = FALSE, control = list(), ...) { opts <- nl.opts(control) if (rank2) opts["algorithm"] <- "NLOPT_LD_VAR2" else opts["algorithm"] <- "NLOPT_LD_VAR1" fun <- match.fun(fn) fn <- function(x) fun(x, ...) if (is.null(gr)) { gr <- function(x) nl.grad(x, fn) } else { .gr <- match.fun(gr) gr <- function(x) .gr(x, ...) } S0 <- nloptr(x0, eval_f = fn, eval_grad_f = gr, lb = lower, ub = upper, opts = opts) if (nl.info) print(S0) list(par = S0$solution, value = S0$objective, iter = S0$iterations, convergence = S0$status, message = S0$message) } nloptr/R/nloptr-package.R0000644000176200001440000001220614636244620015033 0ustar liggesusers#' R interface to NLopt #' #' nloptr is an R interface to NLopt, a free/open-source library for nonlinear #' optimization started by Steven G. Johnson, providing a common interface for #' a number of different free optimization routines available online as well as #' original implementations of various other algorithms. The NLopt library is #' available under the GNU Lesser General Public License (LGPL), and the #' copyrights are owned by a variety of authors. Most of the information here #' has been taken from #' \href{https://nlopt.readthedocs.io/en/latest/}{the NLopt website}, #' where more details are available. #' #' NLopt addresses general nonlinear optimization problems of the form: #' #' \deqn{\min f(x)\quad x\in R^n}{min f(x) x in R^n} #' #' \deqn{\textrm{s.t. }\\ g(x) \leq 0\\ h(x) = 0\\ lb \leq x \leq ub}{ #' s.t. g(x) <= 0 h(x) = 0 lb <= x <= ub} #' #' where \eqn{f(x)} is the objective function to be minimized and \eqn{x} #' represents the \eqn{n} optimization parameters. This problem may optionally #' be subject to the bound constraints (also called box constraints), \eqn{lb} #' and \eqn{ub}. For partially or totally unconstrained problems the bounds can #' take \code{-Inf} or \code{Inf}. One may also optionally have \eqn{m} #' nonlinear inequality constraints (sometimes called a nonlinear programming #' problem), which can be specified in \eqn{g(x)}, and equality constraints that #' can be specified in \eqn{h(x)}. Note that not all of the algorithms in NLopt #' can handle constraints. #' #' An optimization problem can be solved with the general \code{nloptr} #' interface, or using one of the wrapper functions for the separate algorithms; #' \code{auglag}, \code{bobyqa}, \code{ccsaq}, \code{cobyla}, \code{crs2lm}, #' \code{direct}, \code{directL}, \code{isres}, \code{lbfgs}, \code{mlsl}, #' \code{mma}, \code{neldermead}, \code{newuoa}, \code{sbplx}, \code{slsqp}, #' \code{stogo}, \code{tnewton}, \code{varmetric}. #' #' \tabular{ll}{Package: \tab nloptr\cr Type: \tab Package\cr Version: \tab #' 2.0.3\cr Date: \tab 2022-05-26\cr License: \tab L-GPL >= 3\cr} #' #' @name nloptr-package #' #' @useDynLib nloptr, .registration = TRUE #' #' @author Steven G. Johnson and others (C code) \cr Jelmer Ypma (R interface) #' \cr Hans W. Borchers (wrappers) #' #' @note See ?nloptr for more examples. #' #' @seealso \code{\link{optim}} \code{\link{nlm}} \code{\link{nlminb}} #' \code{Rsolnp::Rsolnp} \code{Rsolnp::solnp} \code{\link{nloptr}} #' \code{\link{auglag}} \code{\link{bobyqa}} \code{\link{ccsaq}} #' \code{\link{cobyla}} \code{\link{crs2lm}} \code{\link{direct}} #' \code{\link{directL}} \code{\link{isres}} \code{\link{lbfgs}} #' \code{\link{mlsl}} \code{\link{mma}} \code{\link{neldermead}} #' \code{\link{newuoa}} \code{\link{sbplx}} \code{\link{slsqp}} #' \code{\link{stogo}} \code{\link{tnewton}} \code{\link{varmetric}} #' #' @references Steven G. Johnson, The NLopt nonlinear-optimization package, #' \url{https://nlopt.readthedocs.io/en/latest/} #' #' @keywords optimize interface internal #' #' @examples #' #' # Example problem, number 71 from the Hock-Schittkowsky test suite. #' # #' # \min_{x} x1 * x4 * (x1 + x2 + x3) + x3 #' # s.t. #' # x1 * x2 * x3 * x4 >= 25 #' # x1 ^ 2 + x2 ^ 2 + x3 ^ 2 + x4 ^ 2 = 40 #' # 1 <= x1, x2, x3, x4 <= 5 #' # #' # we re-write the inequality as #' # 25 - x1 * x2 * x3 * x4 <= 0 #' # #' # and the equality as #' # x1 ^ 2 + x2 ^ 2 + x3 ^ 2 + x4 ^ 2 - 40 = 0 #' # #' # x0 = (1, 5, 5, 1) #' # #' # optimal solution = (1.000000, 4.742999, 3.821151, 1.379408) #' #' library('nloptr') #' #' # #' # f(x) = x1 * x4 * (x1 + x2 + x3) + x3 #' # #' eval_f <- function(x) { #' list("objective" = x[1] * x[4] * (x[1] + x[2] + x[3]) + x[3], #' "gradient" = c(x[1] * x[4] + x[4] * (x[1] + x[2] + x[3]), #' x[1] * x[4], #' x[1] * x[4] + 1.0, #' x[1] * (x[1] + x[2] + x[3]))) #' } #' #' # constraint functions #' # inequalities #' eval_g_ineq <- function(x) { #' constr <- c(25 - x[1] * x[2] * x[3] * x[4]) #' #' grad <- c(-x[2] * x[3] * x[4], #' -x[1] * x[3] * x[4], #' -x[1] * x[2] * x[4], #' -x[1] * x[2] * x[3] ) #' list("constraints" = constr, "jacobian" = grad) #' } #' #' # equalities #' eval_g_eq <- function(x) { #' constr <- c(x[1] ^ 2 + x[2] ^ 2 + x[3] ^ 2 + x[4] ^ 2 - 40) #' #' grad <- c(2.0 * x[1], #' 2.0 * x[2], #' 2.0 * x[3], #' 2.0 * x[4]) #' list("constraints" = constr, "jacobian" = grad) #' } #' #' # initial values #' x0 <- c(1, 5, 5, 1) #' #' # lower and upper bounds of control #' lb <- c(1, 1, 1, 1) #' ub <- c(5, 5, 5, 5) #' #' #' local_opts <- list("algorithm" = "NLOPT_LD_MMA", "xtol_rel" = 1.0e-7) #' opts <- list("algorithm" = "NLOPT_LD_AUGLAG", #' "xtol_rel" = 1.0e-7, #' "maxeval" = 1000, #' "local_opts" = local_opts) #' #' res <- nloptr(x0 = x0, #' eval_f = eval_f, #' lb = lb, #' ub = ub, #' eval_g_ineq = eval_g_ineq, #' eval_g_eq = eval_g_eq, #' opts = opts) #' print(res) "_PACKAGE" nloptr/R/zzz.R0000644000176200001440000000047314636244620012764 0ustar liggesusers.onLoad <- function(libname, pkgname) { #nocov start # Set the option to TRUE if it has not been set before. if (is.null(getOption("nloptr.show.inequality.warning"))) options("nloptr.show.inequality.warning" = TRUE) } .onUnLoad <- function(libpath) { library.dynam.unload("nloptr", libpath) } #nocov end nloptr/R/lbfgs.R0000644000176200001440000000653214636244620013226 0ustar liggesusers# Copyright (C) 2014 Hans W. Borchers. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: lbfgs.R # Author: Hans W. Borchers # Date: 27 January 2014 # # Wrapper to solve optimization problem using Low-storage BFGS. # # CHANGELOG # # 2023-02-09: Cleanup and tweaks for safety and efficiency (Avraham Adler) # #' Low-storage BFGS #' #' Low-storage version of the Broyden-Fletcher-Goldfarb-Shanno (BFGS) method. #' #' The low-storage (or limited-memory) algorithm is a member of the class of #' quasi-Newton optimization methods. It is well suited for optimization #' problems with a large number of variables. #' #' One parameter of this algorithm is the number \code{m} of gradients to #' remember from previous optimization steps. NLopt sets \code{m} to a #' heuristic value by default. It can be changed by the NLopt function #' \code{set_vector_storage}. #' #' @param x0 initial point for searching the optimum. #' @param fn objective function to be minimized. #' @param gr gradient of function \code{fn}; will be calculated numerically if #' not specified. #' @param lower,upper lower and upper bound constraints. #' @param nl.info logical; shall the original NLopt info been shown. #' @param control list of control parameters, see \code{nl.opts} for help. #' @param ... further arguments to be passed to the function. #' #' @return List with components: #' \item{par}{the optimal solution found so far.} #' \item{value}{the function value corresponding to \code{par}.} #' \item{iter}{number of (outer) iterations, see \code{maxeval}.} #' \item{convergence}{integer code indicating successful completion (> 0) #' or a possible error number (< 0).} #' \item{message}{character string produced by NLopt and giving additional #' information.} #' #' @export lbfgs #' #' @author Hans W. Borchers #' #' @note Based on a Fortran implementation of the low-storage BFGS algorithm #' written by L. Luksan, and posted under the GNU LGPL license. #' #' @seealso \code{\link{optim}} #' #' @references J. Nocedal, ``Updating quasi-Newton matrices with limited #' storage,'' Math. Comput. 35, 773-782 (1980). #' #' D. C. Liu and J. Nocedal, ``On the limited memory BFGS method for large #' scale optimization,'' Math. Programming 45, p. 503-528 (1989). #' #' @examples #' #' flb <- function(x) { #' p <- length(x) #' sum(c(1, rep(4, p-1)) * (x - c(1, x[-p])^2)^2) #' } #' # 25-dimensional box constrained: par[24] is *not* at the boundary #' S <- lbfgs(rep(3, 25), flb, lower=rep(2, 25), upper=rep(4, 25), #' nl.info = TRUE, control = list(xtol_rel=1e-8)) #' ## Optimal value of objective function: 368.105912874334 #' ## Optimal value of controls: 2 ... 2 2.109093 4 #' lbfgs <- function(x0, fn, gr = NULL, lower = NULL, upper = NULL, nl.info = FALSE, control = list(), ...) { opts <- nl.opts(control) opts["algorithm"] <- "NLOPT_LD_LBFGS" fun <- match.fun(fn) fn <- function(x) fun(x, ...) if (is.null(gr)) { gr <- function(x) nl.grad(x, fn) } else { .gr <- match.fun(gr) gr <- function(x) .gr(x, ...) } S0 <- nloptr(x0, eval_f = fn, eval_grad_f = gr, lb = lower, ub = upper, opts = opts) if (nl.info) print(S0) list(par = S0$solution, value = S0$objective, iter = S0$iterations, convergence = S0$status, message = S0$message) } nloptr/R/nloptr.get.default.options.R0000644000176200001440000003507714636244620017350 0ustar liggesusers# Copyright (C) 2011 Jelmer Ypma. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: nloptr.default.options.R # Author: Jelmer Ypma # Date: 7 August 2011 # # Defines a data.frame with fields: # name: name of the option. # type: type (numeric, logical, integer, character). # possible_values: string explaining the values the option can take. # default: default value of the option (as a string). # is_termination_condition: is this option part of the termination conditions? # description: description of the option (taken from NLopt website # if it's an option that is passed on to NLopt). # # CHANGELOG: # 2014-07-12: Changed from creating a data.frame to a function returning a # data.frame. # 2023-02-09: Cleanup and tweaks for safety and efficiency (AA) #' Return a data.frame with all the options that can be supplied to nloptr. #' #' This function returns a data.frame with all the options that can be supplied #' to \code{\link[nloptr:nloptr]{nloptr}}. The data.frame contains the default #' values of the options and an explanation. A user-friendly way to show these #' options is by using the function #' \code{\link[nloptr:nloptr.print.options]{nloptr.print.options}}. #' #' @return The return value contains a \code{data.frame} with the following #' elements #' \item{name}{name of the option} #' \item{type}{type (numeric, logical, integer, character)} #' \item{possible_values}{string explaining the values the option can take} #' \item{default}{default value of the option (as a string)} #' \item{is_termination_condition}{is this option part of the termination #' conditions?} #' \item{description}{description of the option (taken from NLopt website #' if it's an option that is passed on to NLopt).} #' #' @export nloptr.get.default.options #' #' @author Jelmer Ypma #' #' @seealso #' \code{\link[nloptr:nloptr]{nloptr}} #' \code{\link[nloptr:nloptr.print.options]{nloptr.print.options}} #' #' @keywords optimize interface #' nloptr.get.default.options <- function() { dat.opts <- data.frame( rbind( c("algorithm", "character", paste("NLOPT_GN_DIRECT", "NLOPT_GN_DIRECT_L", "NLOPT_GN_DIRECT_L_RAND", "NLOPT_GN_DIRECT_NOSCAL", "NLOPT_GN_DIRECT_L_NOSCAL", "NLOPT_GN_DIRECT_L_RAND_NOSCAL", "NLOPT_GN_ORIG_DIRECT", "NLOPT_GN_ORIG_DIRECT_L", "NLOPT_GD_STOGO", "NLOPT_GD_STOGO_RAND", "NLOPT_LD_SLSQP", "NLOPT_LD_LBFGS_NOCEDAL", "NLOPT_LD_LBFGS", "NLOPT_LN_PRAXIS", "NLOPT_LD_VAR1", "NLOPT_LD_VAR2", "NLOPT_LD_TNEWTON", "NLOPT_LD_TNEWTON_RESTART", "NLOPT_LD_TNEWTON_PRECOND", "NLOPT_LD_TNEWTON_PRECOND_RESTART", "NLOPT_GN_CRS2_LM", "NLOPT_GN_MLSL", "NLOPT_GD_MLSL", "NLOPT_GN_MLSL_LDS", "NLOPT_GD_MLSL_LDS", "NLOPT_LD_MMA", "NLOPT_LD_CCSAQ", "NLOPT_LN_COBYLA", "NLOPT_LN_NEWUOA", "NLOPT_LN_NEWUOA_BOUND", "NLOPT_LN_NELDERMEAD", "NLOPT_LN_SBPLX", "NLOPT_LN_AUGLAG", "NLOPT_LD_AUGLAG", "NLOPT_LN_AUGLAG_EQ", "NLOPT_LD_AUGLAG_EQ", "NLOPT_LN_BOBYQA", "NLOPT_GN_ISRES", sep = ", "), "none", FALSE, paste("This option is required. Check the NLopt website", "for a description of the algorithms.")), c("stopval", "numeric", "-Inf <= stopval <= Inf", "-Inf", TRUE, paste("Stop minimization when an objective value <= stopval", "is found. Setting stopval to -Inf disables this", "stopping criterion (default).")), c("ftol_rel", "numeric", "ftol_rel > 0", "0.0", TRUE, paste("Stop when an optimization step (or an estimate of", "the optimum) changes the objective function value by", "less than ftol_rel multiplied by the absolute value", "of the function value. If there is any chance that", "your optimum function value is close to zero, you", "might want to set an absolute tolerance with", "ftol_abs as well. Criterion is disabled if ftol_rel", "is non-positive (default).")), c("ftol_abs", "numeric", "ftol_abs > 0", "0.0", TRUE, paste("Stop when an optimization step (or an estimate of", "the optimum) changes the function value by less than", "ftol_abs. Criterion is disabled if ftol_abs is", "non-positive (default).")), c("xtol_rel", "numeric", "xtol_rel > 0", "1.0e-04", TRUE, paste("Stop when an optimization step (or an estimate of", "the optimum) changes every parameter by less than", "xtol_rel multiplied by the absolute value of the", "parameter. If there is any chance that an optimal", "parameter is close to zero, you might want to set an", "absolute tolerance with xtol_abs as well. Criterion", "is disabled if xtol_rel is non-positive.")), c("xtol_abs", "numeric", "xtol_abs > 0", "rep(0.0, length(x0))", TRUE, paste("xtol_abs is a vector of length n (the number of", "elements in x) giving the tolerances: stop when an", "optimization step (or an estimate of the optimum)", "changes every parameter x[i] by less than", "xtol_abs[i]. Criterion is disabled if all elements", "of xtol_abs are non-positive (default).")), c("maxeval", "integer", "maxeval is a positive integer", "100", TRUE, paste("Stop when the number of function evaluations exceeds", "maxeval. This is not a strict maximum: the number of", "function evaluations may exceed maxeval slightly,", "depending upon the algorithm. Criterion is disabled", "if maxeval is non-positive.")), c("maxtime", "numeric", "maxtime > 0", "-1.0", TRUE, paste("Stop when the optimization time (in seconds) exceeds", "maxtime. This is not a strict maximum: the time may", "exceed maxtime slightly, depending upon the", "algorithm and on how slow your function evaluation", "is. Criterion is disabled if maxtime is non-positive", "(default).")), c("tol_constraints_ineq", "numeric", "tol_constraints_ineq > 0.0", "rep(1e-8, num_constraints_ineq)", FALSE, paste("The parameter tol_constraints_ineq is a vector of", "tolerances. Each tolerance corresponds to one of the", "inequality constraints. The tolerance is used for", "the purpose of stopping criteria only: a point x is", "considered feasible for judging whether to stop the", "optimization if eval_g_ineq(x) <= tol. A tolerance", "of zero means that NLopt will try not to consider", "any x to be converged unless eval_g_ineq(x) is", "strictly non-positive; generally, at least a small", "positive tolerance is advisable to reduce", "sensitivity to rounding errors. By default the", "tolerances for all inequality constraints are set to", "1e-8.")), c("tol_constraints_eq", "numeric", "tol_constraints_eq > 0.0", "rep(1e-8, num_constraints_eq)", FALSE, paste("The parameter tol_constraints_eq is a vector of", "tolerances. Each tolerance corresponds to one of the", "equality constraints. The tolerance is used for the", "purpose of stopping criteria only: a point x is", "considered feasible for judging whether to stop the", "optimization if abs(eval_g_ineq(x)) <= tol. For", "equality constraints, a small positive tolerance is", "strongly advised in order to allow NLopt to converge", "even if the equality constraint is slightly nonzero.", "By default the tolerances for all quality", "constraints are set to 1e-8.")), c("print_level", "integer", "0, 1, 2, or 3", "0", FALSE, paste("The option print_level controls how much output is", "shown during the optimization process. Possible", "values: 0 (default): no output; 1: show iteration", "number and value of objective function; 2: 1 + show", "value of (in)equalities; 3: 2 + show value of", "controls.")), c("check_derivatives", "logical", "TRUE or FALSE", "FALSE", FALSE, paste("The option check_derivatives can be activated to", "compare the user-supplied analytic gradients with", "finite difference approximations.")), c("check_derivatives_tol", "numeric", "check_derivatives_tol > 0.0", "1e-04", FALSE, paste("The option check_derivatives_tol determines when a", "difference between an analytic gradient and its", "finite difference approximation is flagged as an", "error.")), c("check_derivatives_print", "character", "'none', 'all', 'errors',", "all", FALSE, paste("The option check_derivatives_print controls the", "output of the derivative checker (if", "check_derivatives == TRUE). All comparisons are", "shown ('all'), only those comparisions that resulted", "in an error ('error'), or only the number of errors", "is shown ('none').")), c("print_options_doc", "logical", "TRUE or FALSE", "FALSE", FALSE, paste("If TRUE, a description of all options and their", "current and default values is printed to the screen.") ), c("population", "integer", "population is a positive integer", "0", FALSE, paste("Several of the stochastic search algorithms (e.g.,", "CRS, MLSL, and ISRES) start by generating some", "initial population of random points x. By default,", "this initial population size is chosen heuristically", "in some algorithm-specific way, but the initial", "population can by changed by setting a positive", "integer value for population. A population of zero", "implies that the heuristic default will be used.")), c("vector_storage", "integer", "vector_storage is a positive integer", "20", FALSE, paste("Number of gradients to remember from previous", "optimization steps.")), c("ranseed", "integer", "ranseed is a positive integer", "0", FALSE, paste("For stochastic optimization algorithms, pseudorandom", "numbers are generated. Set the random seed using", "ranseed if you want to use a 'deterministic'", "sequence of pseudorandom numbers, i.e. the same", "sequence from run to run. If ranseed is 0 (default),", "the seed for the random numbers is generated from", "the system time, so that you will get a different", "sequence of pseudorandom numbers each time you run", "your program.")) ), stringsAsFactors = FALSE) names(dat.opts) <- c("name", "type", "possible_values", "default", "is_termination_condition", "description") dat.opts } nloptr/R/print.nloptr.R0000644000176200001440000000642614636244620014604 0ustar liggesusers# Copyright (C) 2010 Jelmer Ypma. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: print.nloptr.R # Author: Jelmer Ypma # Date: 10 June 2010 # # This function prints some basic output of a nloptr # ojbect. The information is only available after it # has been solved. # # show.controls is TRUE, FALSE or a vector of indices. # Use this option to show none, or only a subset of # the controls. # # 2011-01-13: added show.controls option # 2011-08-07: show 'optimal value' instead of 'current value' # if status == 1, 2, 3, or 4 # 2023-02-09: Cleanup and tweaks for safety and efficiency (Avraham Adler) #' Print results after running nloptr #' #' This function prints the nloptr object that holds the results from a #' minimization using \code{nloptr}. #' #' @param x object containing result from minimization. #' @param show.controls Logical or vector with indices. Should we show the value #' of the control variables in the solution? If \code{show.controls} is a #' vector with indices, it is used to select which control variables should be #' shown. This can be useful if the model contains a set of parameters of #' interest and a set of nuisance parameters that are not of immediate #' interest. #' @param ... further arguments passed to or from other methods. #' #' @method print nloptr #' @export #' #' @author Jelmer Ypma #' #' @seealso \code{\link[nloptr:nloptr]{nloptr}} #' #' @keywords optimize interface #' print.nloptr <- function(x, show.controls = TRUE, ...) { cat("\nCall:\n", deparse(x$call), "\n\n", sep = "", fill = TRUE) cat(paste("Minimization using NLopt version", x$version, "\n"), fill = TRUE) cat(unlist(strsplit(paste("NLopt solver status:", x$status, "(", x$message, ")\n"), " ", fixed = TRUE)), fill = TRUE) cat(paste("Number of Iterations....:", x$iterations, "\n")) cat(paste("Termination conditions: ", x$termination_conditions, "\n")) cat(paste("Number of inequality constraints: ", x$num_constraints_ineq, "\n")) cat(paste("Number of equality constraints: ", x$num_constraints_eq, "\n")) # if show.controls is TRUE or FALSE, show all or none of the controls if (is.logical(show.controls) && show.controls) { controls.indices <- seq_along(x$solution) } # if show.controls is a vector with indices, rename this vector # and define show.controls as TRUE if (is.numeric(show.controls)) { controls.indices <- show.controls show.controls <- TRUE } # if solved successfully if (x$status >= 1 && x$status <= 4) { cat(paste("Optimal value of objective function: ", x$objective, "\n")) if (show.controls) { if (length(controls.indices) < length(x$solution)) { cat("Optimal value of user-defined subset of controls: ") } else { cat("Optimal value of controls: ") } cat(x$solution[controls.indices], fill = TRUE) cat("\n") } } else { cat(paste("Current value of objective function: ", x$objective, "\n")) if (show.controls) { if (length(controls.indices) < length(x$solution)) { cat("Current value of user-defined subset of controls: ") } else { cat("Current value of controls: ") } cat(x$solution[controls.indices], fill = TRUE) cat("\n") } } cat("\n") } nloptr/R/mma.R0000644000176200001440000001434314636244620012702 0ustar liggesusers# Copyright (C) 2014 Hans W. Borchers. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: mma.R # Author: Hans W. Borchers # Date: 27 January 2014 # # Wrapper to solve optimization problem using MMA. # # CHANGELOG # # 2023-02-09: Cleanup and tweaks for safety and efficiency. (Avraham Adler) # 2024-06-04: Switched desired direction of the hin/hinjac inequalities, leaving # the old behavior as the default for now. Also cleaned up the HS100 # example. (Avraham Adler) # #' Method of Moving Asymptotes #' #' Globally-convergent method-of-moving-asymptotes (\acronym{MMA}) algorithm for #' gradient-based local optimization, including nonlinear inequality #' constraints (but not equality constraints). #' #' This is an improved \acronym{CCSA} ("conservative convex separable #' approximation") variant of the original \acronym{MMA} algorithm published by #' Svanberg in 1987, which has become popular for topology optimization. #' #' @param x0 starting point for searching the optimum. #' @param fn objective function that is to be minimized. #' @param gr gradient of function \code{fn}; will be calculated numerically if #' not specified. #' @param lower,upper lower and upper bound constraints. #' @param hin function defining the inequality constraints, that is #' \code{hin <= 0} for all components. #' @param hinjac Jacobian of function \code{hin}; will be calculated #' numerically if not specified. #' @param nl.info logical; shall the original NLopt info been shown. #' @param control list of options, see \code{nl.opts} for help. #' @param deprecatedBehavior logical; if \code{TRUE} (default for now), the old #' behavior of the Jacobian function is used, where the equality is \eqn{\ge 0} #' instead of \eqn{\le 0}. This will be reversed in a future release and #' eventually removed. #' @param ... additional arguments passed to the function. #' #' @return List with components: #' \item{par}{the optimal solution found so far.} #' \item{value}{the function value corresponding to \code{par}.} #' \item{iter}{number of (outer) iterations, see \code{maxeval}.} #' \item{convergence}{integer code indicating successful completion (> 1) #' or a possible error number (< 0).} #' \item{message}{character string produced by NLopt and giving additional #' information.} #' #' @export mma #' #' @author Hans W. Borchers #' #' @note \dQuote{Globally convergent} does not mean that this algorithm #' converges to the global optimum; rather, it means that the algorithm is #' guaranteed to converge to some local minimum from any feasible starting #' point. #' #' @seealso \code{\link{slsqp}} #' #' @references Krister Svanberg, \dQuote{A class of globally convergent #' optimization methods based on conservative convex separable #' approximations}, SIAM J. Optim. 12 (2), p. 555-573 (2002). #' #' @examples #' #' # Solve the Hock-Schittkowski problem no. 100 with analytic gradients #' # See https://apmonitor.com/wiki/uploads/Apps/hs100.apm #' #' x0.hs100 <- c(1, 2, 0, 4, 0, 1, 1) #' fn.hs100 <- function(x) {(x[1] - 10) ^ 2 + 5 * (x[2] - 12) ^ 2 + x[3] ^ 4 + #' 3 * (x[4] - 11) ^ 2 + 10 * x[5] ^ 6 + 7 * x[6] ^ 2 + #' x[7] ^ 4 - 4 * x[6] * x[7] - 10 * x[6] - 8 * x[7]} #' #' hin.hs100 <- function(x) {c( #' 2 * x[1] ^ 2 + 3 * x[2] ^ 4 + x[3] + 4 * x[4] ^ 2 + 5 * x[5] - 127, #' 7 * x[1] + 3 * x[2] + 10 * x[3] ^ 2 + x[4] - x[5] - 282, #' 23 * x[1] + x[2] ^ 2 + 6 * x[6] ^ 2 - 8 * x[7] - 196, #' 4 * x[1] ^ 2 + x[2] ^ 2 - 3 * x[1] * x[2] + 2 * x[3] ^ 2 + 5 * x[6] - #' 11 * x[7]) #' } #' #' gr.hs100 <- function(x) { #' c( 2 * x[1] - 20, #' 10 * x[2] - 120, #' 4 * x[3] ^ 3, #' 6 * x[4] - 66, #' 60 * x[5] ^ 5, #' 14 * x[6] - 4 * x[7] - 10, #' 4 * x[7] ^ 3 - 4 * x[6] - 8) #' } #' #' hinjac.hs100 <- function(x) { #' matrix(c(4 * x[1], 12 * x[2] ^ 3, 1, 8 * x[4], 5, 0, 0, #' 7, 3, 20 * x[3], 1, -1, 0, 0, #' 23, 2 * x[2], 0, 0, 0, 12 * x[6], -8, #' 8 * x[1] - 3 * x[2], 2 * x[2] - 3 * x[1], 4 * x[3], 0, 0, 5, -11), #' nrow = 4, byrow = TRUE) #' } #' #' # The optimum value of the objective function should be 680.6300573 #' # A suitable parameter vector is roughly #' # (2.330, 1.9514, -0.4775, 4.3657, -0.6245, 1.0381, 1.5942) #' #' # Using analytic Jacobian #' S <- mma(x0.hs100, fn.hs100, gr = gr.hs100, #' hin = hin.hs100, hinjac = hinjac.hs100, #' nl.info = TRUE, control = list(xtol_rel = 1e-8), #' deprecatedBehavior = FALSE) #' #' # Using computed Jacobian #' S <- mma(x0.hs100, fn.hs100, hin = hin.hs100, #' nl.info = TRUE, control = list(xtol_rel = 1e-8), #' deprecatedBehavior = FALSE) #' mma <- function(x0, fn, gr = NULL, lower = NULL, upper = NULL, hin = NULL, hinjac = NULL, nl.info = FALSE, control = list(), deprecatedBehavior = TRUE, ...) { opts <- nl.opts(control) opts["algorithm"] <- "NLOPT_LD_MMA" fun <- match.fun(fn) fn <- function(x) fun(x, ...) if (is.null(gr)) { gr <- function(x) nl.grad(x, fn) } else { .gr <- match.fun(gr) gr <- function(x) .gr(x, ...) } if (!is.null(hin)) { if (deprecatedBehavior) { warning("The old behavior for hin >= 0 has been deprecated. Please ", "restate the inequality to be <=0. The ability to use the old ", "behavior will be removed in a future release.") .hin <- match.fun(hin) hin <- function(x) -.hin(x, ...) # change hin >= 0 to hin <= 0 ! } if (is.null(hinjac)) { hinjac <- function(x) nl.jacobian(x, hin) } else if (deprecatedBehavior) { warning("The old behavior for hinjac >= 0 has been deprecated. Please ", "restate the inequality to be <=0. The ability to use the old ", "behavior will be removed in a future release.") .hinjac <- match.fun(hinjac) hinjac <- function(x) -.hinjac(x) } } S0 <- nloptr(x0, eval_f = fn, eval_grad_f = gr, lb = lower, ub = upper, eval_g_ineq = hin, eval_jac_g_ineq = hinjac, opts = opts) if (nl.info) print(S0) list(par = S0$solution, value = S0$objective, iter = S0$iterations, convergence = S0$status, message = S0$message) } nloptr/R/nloptr.print.options.R0000644000176200001440000000556214636244620016276 0ustar liggesusers# Copyright (C) 2011 Jelmer Ypma. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: nloptr.print.options.R # Author: Jelmer Ypma # Date: 8 August 2011 # # Print list of all options with description. # # Input: # opts.show: the description of the options in this list are shown # (optional, default is to show all options) # opts.user: list with user defined options (optional) # Output: options, default values, user values if supplied) # and description printed to screen. No return value. # # 2011-08-08: Added opts.show argument to only show a subset of all options. # 2023-02-09: Cleanup and tweaks for safety and efficiency (Avraham Adler) #' Print description of nloptr options #' #' This function prints a list of all the options that can be set when solving #' a minimization problem using \code{nloptr}. #' #' @param opts.show list or vector with names of options. A description will be #' shown for the options in this list. By default, a description of all #' options is shown. #' @param opts.user object containing user supplied options. This argument is #' optional. It is used when \code{nloptr.print.options} is called from #' \code{nloptr}. In that case options are listed if \code{print_options_doc} #' is set to \code{TRUE} when passing a minimization problem to \code{nloptr}. #' #' @export nloptr.print.options #' #' @author Jelmer Ypma #' #' @seealso \code{\link[nloptr:nloptr]{nloptr}} #' #' @keywords optimize interface #' #' @examples #' #' library('nloptr') #' nloptr.print.options() #' #' nloptr.print.options(opts.show = c("algorithm", "check_derivatives")) #' #' opts <- list("algorithm"="NLOPT_LD_LBFGS", #' "xtol_rel"=1.0e-8) #' nloptr.print.options(opts.user = opts) #' nloptr.print.options <- function(opts.show = NULL, opts.user = NULL) { # Default is to show all options if no list of options is supplied nloptr.show.options <- nloptr.get.default.options() if (!is.null(opts.show)) { nloptr.show.options <- subset(nloptr.show.options, nloptr.show.options$name %in% opts.show) } # loop over all options and print values for (row.cnt in seq_len(nrow(nloptr.show.options))) { opt <- nloptr.show.options[row.cnt, ] value.current <- ifelse(is.null(opts.user[[opt$name]]), "(default)", opts.user[[opt$name]]) cat(opt$name, "\n", sep = "") cat("\tpossible values: ", paste(strwrap(opt$possible_values, width = 50), collapse = "\n\t "), "\n", sep = "") cat("\tdefault value: ", opt$default, "\n", sep = "") if (!is.null(opts.user)) { cat("\tcurrent value: ", value.current, "\n", sep = "") } cat("\n\t", paste(strwrap(opt$description, width = 70), collapse = "\n\t"), "\n", sep = "") cat("\n") } } nloptr/R/nloptr.R0000644000176200001440000005277514636244620013461 0ustar liggesusers# Copyright (C) 2010 Jelmer Ypma. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: nloptr.R # Author: Jelmer Ypma # Date: 9 June 2010 # # Input: # x0 : vector with initial values # eval_f : function to evaluate objective function # (and optionally its gradient) # eval_grad_f : function evaluate the gradient of the objective function # (optional) # lb : lower bounds of the control (optional) # ub : upper bounds of the control (optional) # eval_g_ineq : function to evaluate (non-)linear inequality constraints # that should hold in the solution and its Jacobian # (optional) # eval_jac_g_ineq : function to evaluate Jacobian of the (non-)linear # inequality constraints (optional) # eval_g_eq : function to evaluate (non-)linear equality constraints that # should hold in the solution and its Jacobian (optional) # eval_jac_g_eq : function to evaluate Jacobian of the (non-)linear # equality constraints (optional) # opts : list with options that are passed to nlopt # ... : arguments that are passed to user-defined functions # # Output: structure with inputs and # call : the call that was made to solve # status : integer value with the status of the optimization # (0 is success) # message : more informative message with the status of the optimization # iterations : number of iterations that were executed # objective : value if the objective function in the solution # solution : optimal value of the controls # # CHANGELOG: # 2011-01-13: added print_level option # 2011-07-24: added finite difference gradient checker # 2011-08-07: moved addition of default options to separate function # show documentation of options if print_options_doc == TRUE # 2014-05-05: Replaced cat by message, so messages can now be suppressed by # suppressMessages. # 2015-03-22: Added while-loop around solve statement. This should solve the # problem that NLopt sometimes exits with NLOPT_MAXTIME_REACHED # when no maxtime was set in the options. # 2023-02-08: Removed unneeded or inefficient calls, updated code # stylistically, updated help by using LaTeX and code # decorations. (AA) # #' R interface to NLopt #' #' nloptr is an R interface to NLopt, a free/open-source library for nonlinear #' optimization started by Steven G. Johnson, providing a common interface for a #' number of different free optimization routines available online as well as #' original implementations of various other algorithms. The NLopt library is #' available under the GNU Lesser General Public License (LGPL), and the #' copyrights are owned by a variety of authors. Most of the information here #' has been taken from #' \href{https://nlopt.readthedocs.io/en/latest/}{the NLopt website}, where #' more details are available. #' #' NLopt addresses general nonlinear optimization problems of the form: #' #' \deqn{\min f(x)\quad x\in R^n}{min f(x) x in R^n} #' #' \deqn{\textrm{s.t. }\\ g(x) \leq 0\\ h(x) = 0\\ lb \leq x \leq ub}{ #' s.t. g(x) <= 0 h(x) = 0 lb <= x <= ub} #' #' where \eqn{f(x)} is the objective function to be minimized and \eqn{x} #' represents the \eqn{n} optimization parameters. This problem may optionally #' be subject to the bound constraints (also called box constraints), \eqn{lb} #' and \eqn{ub}. For partially or totally unconstrained problems the bounds can #' take \code{-Inf} or \code{Inf}. One may also optionally have \eqn{m} #' nonlinear inequality constraints (sometimes called a nonlinear programming #' problem), which can be specified in \eqn{g(x)}, and equality constraints that #' can be specified in \eqn{h(x)}. Note that not all of the algorithms in NLopt #' can handle constraints. #' #' @param x0 vector with starting values for the optimization. #' @param eval_f function that returns the value of the objective function. It #' can also return gradient information at the same time in a list with #' elements "objective" and "gradient" (see below for an example). #' @param eval_grad_f function that returns the value of the gradient of the #' objective function. Not all of the algorithms require a gradient. #' @param lb vector with lower bounds of the controls (use \code{-Inf} for #' controls without lower bound), by default there are no lower bounds for any #' of the controls. #' @param ub vector with upper bounds of the controls (use \code{Inf} for #' controls without upper bound), by default there are no upper bounds for any #' of the controls. #' @param eval_g_ineq function to evaluate (non-)linear inequality constraints #' that should hold in the solution. It can also return gradient information #' at the same time in a list with elements "constraints" and "jacobian" (see #' below for an example). #' @param eval_jac_g_ineq function to evaluate the Jacobian of the (non-)linear #' inequality constraints that should hold in the solution. #' @param eval_g_eq function to evaluate (non-)linear equality constraints that #' should hold in the solution. It can also return gradient information at #' the same time in a list with elements "constraints" and "jacobian" (see #' below for an example). #' @param eval_jac_g_eq function to evaluate the Jacobian of the (non-)linear #' equality constraints that should hold in the solution. #' @param opts list with options. The option "\code{algorithm}" is required. #' Check the #' \href{https://nlopt.readthedocs.io/en/latest/NLopt_Algorithms/}{NLopt #' website} for a full list of available algorithms. Other options control the #' termination conditions (\code{minf_max, ftol_rel, ftol_abs, xtol_rel,} #' \code{xtol_abs, maxeval, maxtime}). Default is \code{xtol_rel} = 1e-4. More #' information #' \href{https://nlopt.readthedocs.io/en/latest/NLopt_Introduction/#termination-conditions}{here}. #nolint #' A full description of all options is shown by the function #' \code{nloptr.print.options()}. #' #' Some algorithms with equality constraints require the option #' \code{local_opts}, which contains a list with an algorithm and a termination #' condition for the local algorithm. See \code{?`nloptr-package`} for an #' example. #' #' The option \code{print_level} controls how much output is shown during the #' optimization process. Possible values: \tabular{ll}{0 (default) \tab no #' output \cr 1 \tab show iteration number and value of objective function \cr #' 2 \tab 1 + show value of (in)equalities \cr 3 \tab 2 + show value of #' controls} #' #' The option \code{check_derivatives} (default = \code{FALSE}) can be used to #' run to compare the analytic gradients with finite difference approximations. #' The option \code{check_derivatives_print} (\code{'all'} (default), #' \code{'errors'}, \code{'none'}) controls the output of the derivative #' checker, if it is run, showing all comparisons, only those that resulted in #' an error, or none. The option \code{check_derivatives_tol} (default = #' 1e-04), determines when a difference between an analytic gradient and its #' finite difference approximation is flagged as an error. #' #' @param ... arguments that will be passed to the user-defined objective and #' constraints functions. #' #' @return The return value contains a list with the inputs, and additional #' elements #' \item{call}{the call that was made to solve} #' \item{status}{integer value with the status of the optimization (0 is #' success)} #' \item{message}{more informative message with the status of the optimization} #' \item{iterations}{number of iterations that were executed} #' \item{objective}{value if the objective function in the solution} #' \item{solution}{optimal value of the controls} #' \item{version}{version of NLopt that was used} #' #' @export nloptr #' #' @author Steven G. Johnson and others (C code) \cr Jelmer Ypma (R interface) #' #' @note See \code{?`nloptr-package`} for an extended example. #' #' @seealso #' \code{\link[nloptr:nloptr.print.options]{nloptr.print.options}} #' \code{\link[nloptr:check.derivatives]{check.derivatives}} #' \code{\link{optim}} #' \code{\link{nlm}} #' \code{\link{nlminb}} #' \code{Rsolnp::Rsolnp} #' \code{Rsolnp::solnp} #' #' @references Steven G. Johnson, The NLopt nonlinear-optimization package, #' \url{https://github.com/stevengj/nlopt} #' #' @keywords optimize interface #' #' @examples #' #' library('nloptr') #' #' ## Rosenbrock Banana function and gradient in separate functions #' eval_f <- function(x) { #' return(100 * (x[2] - x[1] * x[1])^2 + (1 - x[1])^2) #'} #' #' eval_grad_f <- function(x) { #' return(c(-400 * x[1] * (x[2] - x[1] * x[1]) - 2 * (1 - x[1]), #' 200 * (x[2] - x[1] * x[1]))) #'} #' #' #' # initial values #' x0 <- c(-1.2, 1) #' #' opts <- list("algorithm"="NLOPT_LD_LBFGS", #' "xtol_rel"=1.0e-8) #' #' # solve Rosenbrock Banana function #' res <- nloptr(x0=x0, #' eval_f=eval_f, #' eval_grad_f=eval_grad_f, #' opts=opts) #' print(res) #' #' #' ## Rosenbrock Banana function and gradient in one function #' # this can be used to economize on calculations #' eval_f_list <- function(x) { #' return( #' list( #' "objective" = 100 * (x[2] - x[1] * x[1]) ^ 2 + (1 - x[1]) ^ 2, #' "gradient" = c(-400 * x[1] * (x[2] - x[1] * x[1]) - 2 * (1 - x[1]), #' 200 * (x[2] - x[1] * x[1])))) #'} #' #' # solve Rosenbrock Banana function using an objective function that #' # returns a list with the objective value and its gradient #' res <- nloptr(x0=x0, #' eval_f=eval_f_list, #' opts=opts) #' print(res) #' #' #' #' # Example showing how to solve the problem from the NLopt tutorial. #' # #' # min sqrt(x2) #' # s.t. x2 >= 0 #' # x2 >= (a1*x1 + b1)^3 #' # x2 >= (a2*x1 + b2)^3 #' # where #' # a1 = 2, b1 = 0, a2 = -1, b2 = 1 #' # #' # re-formulate constraints to be of form g(x) <= 0 #' # (a1*x1 + b1)^3 - x2 <= 0 #' # (a2*x1 + b2)^3 - x2 <= 0 #' #' library('nloptr') #' #' #' # objective function #' eval_f0 <- function(x, a, b) { #' return(sqrt(x[2])) #'} #' #' # constraint function #' eval_g0 <- function(x, a, b) { #' return((a*x[1] + b)^3 - x[2]) #'} #' #' # gradient of objective function #' eval_grad_f0 <- function(x, a, b) { #' return(c(0, .5/sqrt(x[2]))) #'} #' #' # Jacobian of constraint #' eval_jac_g0 <- function(x, a, b) { #' return(rbind(c(3*a[1]*(a[1]*x[1] + b[1])^2, -1.0), #' c(3*a[2]*(a[2]*x[1] + b[2])^2, -1.0))) #'} #' #' #' # functions with gradients in objective and constraint function #' # this can be useful if the same calculations are needed for #' # the function value and the gradient #' eval_f1 <- function(x, a, b) { #' return(list("objective"=sqrt(x[2]), #' "gradient"=c(0,.5/sqrt(x[2])))) #'} #' #' eval_g1 <- function(x, a, b) { #' return(list("constraints"=(a*x[1] + b)^3 - x[2], #' "jacobian"=rbind(c(3*a[1]*(a[1]*x[1] + b[1])^2, -1.0), #' c(3*a[2]*(a[2]*x[1] + b[2])^2, -1.0)))) #'} #' #' #' # define parameters #' a <- c(2,-1) #' b <- c(0, 1) #' #' # Solve using NLOPT_LD_MMA with gradient information supplied in separate #' # function. #' res0 <- nloptr(x0=c(1.234,5.678), #' eval_f=eval_f0, #' eval_grad_f=eval_grad_f0, #' lb = c(-Inf,0), #' ub = c(Inf,Inf), #' eval_g_ineq = eval_g0, #' eval_jac_g_ineq = eval_jac_g0, #' opts = list("algorithm"="NLOPT_LD_MMA"), #' a = a, #' b = b) #' print(res0) #' #' # Solve using NLOPT_LN_COBYLA without gradient information #' res1 <- nloptr(x0=c(1.234,5.678), #' eval_f=eval_f0, #' lb = c(-Inf, 0), #' ub = c(Inf, Inf), #' eval_g_ineq = eval_g0, #' opts = list("algorithm" = "NLOPT_LN_COBYLA"), #' a = a, #' b = b) #' print(res1) #' #' #' # Solve using NLOPT_LD_MMA with gradient information in objective function #' res2 <- nloptr(x0=c(1.234, 5.678), #' eval_f=eval_f1, #' lb = c(-Inf, 0), #' ub = c(Inf, Inf), #' eval_g_ineq = eval_g1, #' opts = list("algorithm"="NLOPT_LD_MMA", #' "check_derivatives" = TRUE), #' a = a, #' b = b) #' print(res2) #' nloptr <- function(x0, eval_f, eval_grad_f = NULL, lb = NULL, ub = NULL, eval_g_ineq = NULL, eval_jac_g_ineq = NULL, eval_g_eq = NULL, eval_jac_g_eq = NULL, opts = list(), ...) { # internal function to check the arguments of the functions .checkfunargs <- function(fun, arglist, funname) { if (!is.function(fun)) stop(funname, " must be a function\n") flist <- formals(fun) if (length(flist) > 1) { fnms <- names(flist)[2:length(flist)] # remove first argument (x) rnms <- names(arglist) m1 <- match(fnms, rnms) if (anyNA(m1)) { mx1 <- which(is.na(m1)) for (i in seq_along(mx1)) { stop(funname, " requires argument '", fnms[mx1[i]], "' but this has not been passed to the 'nloptr' function.\n") } } m2 <- match(rnms, fnms) if (anyNA(m2)) { mx2 <- which(is.na(m2)) for (i in seq_along(mx2)) { stop(rnms[mx2[i]], "' passed to (...) in 'nloptr' but this is not ", "required in the ", funname, " function.\n") } } } } # extract list of additional arguments and check user-defined functions arglist <- list(...) .checkfunargs(eval_f, arglist, "eval_f") if (!is.null(eval_grad_f)) { .checkfunargs(eval_grad_f, arglist, "eval_grad_f") } if (!is.null(eval_g_ineq)) { .checkfunargs(eval_g_ineq, arglist, "eval_g_ineq") } if (!is.null(eval_jac_g_ineq)) { .checkfunargs(eval_jac_g_ineq, arglist, "eval_jac_g_ineq") } if (!is.null(eval_g_eq)) .checkfunargs(eval_g_eq, arglist, "eval_g_eq") if (!is.null(eval_jac_g_eq)) { .checkfunargs(eval_jac_g_eq, arglist, "eval_jac_g_eq") } # define 'infinite' lower and upper bounds of the control if they haven't been # set if (is.null(lb)) {lb <- rep(-Inf, length(x0))} if (is.null(ub)) {ub <- rep(Inf, length(x0))} # if eval_f does not return a list, write a wrapper function combining # eval_f and eval_grad_f if (is.list(eval_f(x0, ...)) || is.null(eval_grad_f)) { eval_f_wrapper <- function(x) {eval_f(x, ...)} } else { eval_f_wrapper <- function(x) { list("objective" = eval_f(x, ...), "gradient" = eval_grad_f(x, ...)) } } # change the environment of the inequality constraint functions that we're # calling num_constraints_ineq <- 0 if (!is.null(eval_g_ineq)) { # if eval_g_ineq does not return a list, write a wrapper function # combining eval_g_ineq and eval_jac_g_ineq if (is.list(eval_g_ineq(x0, ...)) || is.null(eval_jac_g_ineq)) { eval_g_ineq_wrapper <- function(x) {eval_g_ineq(x, ...)} } else { eval_g_ineq_wrapper <- function(x) { list("constraints" = eval_g_ineq(x, ...), "jacobian" = eval_jac_g_ineq(x, ...)) } } # determine number of constraints tmp_constraints <- eval_g_ineq_wrapper(x0) if (is.list(tmp_constraints)) { num_constraints_ineq <- length(tmp_constraints$constraints) } else { num_constraints_ineq <- length(tmp_constraints) } } else { # define dummy function eval_g_ineq_wrapper <- NULL } # change the environment of the equality constraint functions that we're # calling num_constraints_eq <- 0 if (!is.null(eval_g_eq)) { # if eval_g_eq does not return a list, write a wrapper function # combining eval_g_eq and eval_jac_g_eq if (is.list(eval_g_eq(x0, ...)) || is.null(eval_jac_g_eq)) { eval_g_eq_wrapper <- function(x) {eval_g_eq(x, ...)} } else { eval_g_eq_wrapper <- function(x) { list("constraints" = eval_g_eq(x, ...), "jacobian" = eval_jac_g_eq(x, ...)) } } # determine number of constraints tmp_constraints <- eval_g_eq_wrapper(x0) if (is.list(tmp_constraints)) { num_constraints_eq <- length(tmp_constraints$constraints) } else { num_constraints_eq <- length(tmp_constraints) } } else { # define dummy function eval_g_eq_wrapper <- NULL } # extract local options from list of options if they exist if ("local_opts" %in% names(opts)) { res.opts.add <- nloptr.add.default.options( opts.user = opts$local_opts, x0 = x0, num_constraints_ineq = num_constraints_ineq, num_constraints_eq = num_constraints_eq ) local_opts <- res.opts.add$opts.user opts$local_opts <- NULL } else { local_opts <- NULL } # add defaults to list of options res.opts.add <- nloptr.add.default.options( opts.user = opts, x0 = x0, num_constraints_ineq = num_constraints_ineq, num_constraints_eq = num_constraints_eq ) opts <- res.opts.add$opts.user # add the termination criteria to the list termination_conditions <- res.opts.add$termination_conditions # print description of options if requested if (opts$print_options_doc) { nloptr.print.options(opts.user = opts) } # define list with all algorithms # nloptr.options.description is a data.frame with options that is loaded # when nloptr is loaded. nloptr.default.options <- nloptr.get.default.options() list_algorithms <- unlist( strsplit( nloptr.default.options[nloptr.default.options$name == "algorithm", "possible_values"], split = ", ", fixed = TRUE ) ) # run derivative checker if (opts$check_derivatives) { if (opts$algorithm %in% grep("NLOPT_[G,L]N", list_algorithms, value = TRUE)) { warning("Skipping derivative checker because algorithm '", opts$algorithm, "' does not use gradients.") } else { # check derivatives of objective function message("Checking gradients of objective function.") check.derivatives( .x = x0, func = function(x) {eval_f_wrapper(x)$objective}, func_grad = function(x) {eval_f_wrapper(x)$gradient}, check_derivatives_tol = opts$check_derivatives_tol, check_derivatives_print = opts$check_derivatives_print, func_grad_name = "eval_grad_f" ) if (num_constraints_ineq > 0) { # check derivatives of inequality constraints message("Checking gradients of inequality constraints.\n") check.derivatives( .x = x0, func = function(x) {eval_g_ineq_wrapper(x)$constraints}, func_grad = function(x) {eval_g_ineq_wrapper(x)$jacobian}, check_derivatives_tol = opts$check_derivatives_tol, check_derivatives_print = opts$check_derivatives_print, func_grad_name = "eval_jac_g_ineq" ) } if (num_constraints_eq > 0) { # check derivatives of equality constraints message("Checking gradients of equality constraints.\n") check.derivatives( .x = x0, func = function(x) {eval_g_eq_wrapper(x)$constraints}, func_grad = function(x) {eval_g_eq_wrapper(x)$jacobian}, check_derivatives_tol = opts$check_derivatives_tol, check_derivatives_print = opts$check_derivatives_print, func_grad_name = "eval_jac_g_eq" ) } } } ret <- list("x0" = x0, "eval_f" = eval_f_wrapper, "lower_bounds" = lb, "upper_bounds" = ub, "num_constraints_ineq" = num_constraints_ineq, "eval_g_ineq" = eval_g_ineq_wrapper, "num_constraints_eq" = num_constraints_eq, "eval_g_eq" = eval_g_eq_wrapper, "options" = opts, "local_options" = local_opts, "nloptr_environment" = new.env()) attr(ret, "class") <- "nloptr" # add the current call to the list ret$call <- match.call() # add the termination criteria to the list ret$termination_conditions <- termination_conditions # check whether we have a correctly formed nloptr object is.nloptr(ret) # Count the number of times that we try to solve the problem. num.evals <- 0 solve.continue <- TRUE while (num.evals <= 10 && solve.continue) { # Update the number of evaluations. num.evals <- num.evals + 1 # choose correct minimization function based on whether constrained were # supplied solution <- .Call(NLoptR_Optimize, ret) # remove the environment from the return object ret$environment <- NULL # add solution variables to object ret$status <- solution$status ret$message <- solution$message ret$iterations <- solution$iterations ret$objective <- solution$objective ret$solution <- solution$solution ret$version <- paste(c(solution$version_major, solution$version_minor, solution$version_bugfix), collapse = ".") ret$num.evals <- num.evals # If maxtime is set to a positive number in the options or if the return # status of the solver is not equal to 6, we can stop trying to solve # the problem. # # Solution status 6: NLOPT_MAXTIME_REACHED: Optimization stopped because # maxtime (above) was reached. # # This loop is needed because sometimes the solver exits with this code # even if maxtime is set to 0 or a negative number. if (opts$maxtime > 0 || solution$status != 6) { solve.continue <- FALSE } } ret # return call unnecessary; .Primitive return will be called. } nloptr/R/nloptr.add.default.options.R0000644000176200001440000000557114636244620017315 0ustar liggesusers# Copyright (C) 2011 Jelmer Ypma. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: nloptr.add.default.options.R # Author: Jelmer Ypma # Date: 17 August 2016 # # Add default options to a user supplied list of options. # # Input: # opts.user: list with user defined options # x0: initial value for control variables # num_constraints_ineq: number of inequality constraints # num_constraints_eq: number of equality constraints # # Output: # opts.user with default options added for those options # that were not part of the original opts.user. # # CHANGELOG: # 2016-08-17: Fixed bug that sometimes caused segmentation faults due to # uninitialized tolerances for the (in)equality constraints # (thanks to Florian Schwendiger). # 2023-02-08: Tweaks for efficiency and readability (Avraham Adler) # nloptr.add.default.options <- function(opts.user, x0 = 0, num_constraints_ineq = 0, num_constraints_eq = 0) { nloptr.default.options <- nloptr.get.default.options() rownames(nloptr.default.options) <- nloptr.default.options$name # get names of options that define a termination condition termination.opts <- nloptr.default.options$name[ which(as.logical(nloptr.default.options$is_termination_condition)) ] if (sum(termination.opts %in% names(opts.user)) == 0) { # get default xtol_rel xtol_rel_default <- as.numeric( nloptr.default.options$default[ nloptr.default.options$name == "xtol_rel" ] ) warning("No termination criterion specified, using default", "(relative x-tolerance = ", xtol_rel_default, ")") termination_conditions <- paste0("relative x-tolerance = ", xtol_rel_default, " (DEFAULT)") } else { conv_options <- unlist(opts.user[names(opts.user) %in% termination.opts]) termination_conditions <- paste0(paste(names(conv_options)), ": ", paste(conv_options), collapse = "\t") } # determine list with names of options that contain character values. # we need to add quotes around these options below. nloptr.list.character.options <- nloptr.default.options$name[nloptr.default.options$type == "character"] opts <- vector(mode = "list", nrow(nloptr.default.options)) names(opts) <- nloptr.default.options$name for (name in names(opts)) { if (!is.null(opts.user[[name]])) { opts[[name]] <- opts.user[[name]] } else if (name %in% nloptr.list.character.options) { opts[[name]] <- nloptr.default.options[name, "default"] } else { opts[[name]] <- eval(parse(text = nloptr.default.options[name, "default"])) } } list("opts.user" = opts, "termination_conditions" = termination_conditions) } nloptr/R/nm.R0000644000176200001440000001333014636244620012535 0ustar liggesusers# Copyright (C) 2014 Hans W. Borchers. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: nm.R # Author: Hans W. Borchers # Date: 27 January 2014 # # Wrapper to solve optimization problem using Nelder-Mead and Subplex. # # CHANGELOG # 2023-02-09: Cleanup and tweaks for safety and efficiency (Avraham Adler) # #' Nelder-Mead Simplex #' #' An implementation of almost the original Nelder-Mead simplex algorithm. #' #' Provides explicit support for bound constraints, using essentially the method #' proposed in Box. Whenever a new point would lie outside the bound #' constraints the point is moved back exactly onto the constraint. #' #' @param x0 starting point for searching the optimum. #' @param fn objective function that is to be minimized. #' @param lower,upper lower and upper bound constraints. #' @param nl.info logical; shall the original NLopt info been shown. #' @param control list of options, see \code{nl.opts} for help. #' @param ... additional arguments passed to the function. #' #' @return List with components: #' \item{par}{the optimal solution found so far.} #' \item{value}{the function value corresponding to \code{par}.} #' \item{iter}{number of (outer) iterations, see \code{maxeval}.} #' \item{convergence}{integer code indicating successful completion (> 0) #' or a possible error number (< 0).} #' \item{message}{character string produced by NLopt and giving additional #' information.} #' #' @export neldermead #' #' @author Hans W. Borchers #' #' @note The author of NLopt would tend to recommend the Subplex method #' instead. #' #' @seealso \code{dfoptim::nmk} #' #' @references J. A. Nelder and R. Mead, ``A simplex method for function #' minimization,'' The Computer Journal 7, p. 308-313 (1965). #' #' M. J. Box, ``A new method of constrained optimization and a comparison with #' other methods,'' Computer J. 8 (1), 42-52 (1965). #' #' @examples #' #' # Fletcher and Powell's helic valley #' fphv <- function(x) #' 100*(x[3] - 10*atan2(x[2], x[1])/(2*pi))^2 + #' (sqrt(x[1]^2 + x[2]^2) - 1)^2 +x[3]^2 #' x0 <- c(-1, 0, 0) #' neldermead(x0, fphv) # 1 0 0 #' #' # Powell's Singular Function (PSF) #' psf <- function(x) (x[1] + 10*x[2])^2 + 5*(x[3] - x[4])^2 + #' (x[2] - 2*x[3])^4 + 10*(x[1] - x[4])^4 #' x0 <- c(3, -1, 0, 1) #' neldermead(x0, psf) # 0 0 0 0, needs maximum number of function calls #' #' \dontrun{ #' # Bounded version of Nelder-Mead #' rosenbrock <- function(x) { ## Rosenbrock Banana function #' 100 * (x[2] - x[1]^2)^2 + (1 - x[1])^2 + #' 100 * (x[3] - x[2]^2)^2 + (1 - x[2])^2 #' } #' lower <- c(-Inf, 0, 0) #' upper <- c( Inf, 0.5, 1) #' x0 <- c(0, 0.1, 0.1) #' S <- neldermead(c(0, 0.1, 0.1), rosenbrock, lower, upper, nl.info = TRUE) #' # $xmin = c(0.7085595, 0.5000000, 0.2500000) #' # $fmin = 0.3353605} #' neldermead <- function(x0, fn, lower = NULL, upper = NULL, nl.info = FALSE, control = list(), ...) { opts <- nl.opts(control) opts["algorithm"] <- "NLOPT_LN_NELDERMEAD" fun <- match.fun(fn) fn <- function(x) fun(x, ...) S0 <- nloptr(x0, fn, lb = lower, ub = upper, opts = opts) if (nl.info) print(S0) list(par = S0$solution, value = S0$objective, iter = S0$iterations, convergence = S0$status, message = S0$message) } #' Subplex Algorithm #' #' Subplex is a variant of Nelder-Mead that uses Nelder-Mead on a sequence of #' subspaces. #' #' SUBPLEX is claimed to be much more efficient and robust than the original #' Nelder-Mead while retaining the latter's facility with discontinuous #' objectives. #' #' This implementation has explicit support for bound constraints via the #' method in the Box paper as described on the \code{neldermead} help page. #' #' @param x0 starting point for searching the optimum. #' @param fn objective function that is to be minimized. #' @param lower,upper lower and upper bound constraints. #' @param nl.info logical; shall the original NLopt info been shown. #' @param control list of options, see \code{nl.opts} for help. #' @param ... additional arguments passed to the function. #' #' @return List with components: #' \item{par}{the optimal solution found so far.} #' \item{value}{the function value corresponding to \code{par}.} #' \item{iter}{number of (outer) iterations, see \code{maxeval}.} #' \item{convergence}{integer code indicating successful completion (> 0) #' or a possible error number (< 0).} #' \item{message}{character string produced by NLopt and giving additional #' information.} #' #' @export sbplx #' #' @note It is the request of Tom Rowan that reimplementations of his algorithm #' shall not use the name `subplex'. #' #' @seealso \code{subplex::subplex} #' #' @references T. Rowan, ``Functional Stability Analysis of Numerical #' Algorithms'', Ph.D. thesis, Department of Computer Sciences, University of #' Texas at Austin, 1990. #' #' @examples #' #' # Fletcher and Powell's helic valley #' fphv <- function(x) #' 100*(x[3] - 10*atan2(x[2], x[1])/(2*pi))^2 + #' (sqrt(x[1]^2 + x[2]^2) - 1)^2 +x[3]^2 #' x0 <- c(-1, 0, 0) #' sbplx(x0, fphv) # 1 0 0 #' #' # Powell's Singular Function (PSF) #' psf <- function(x) (x[1] + 10*x[2])^2 + 5*(x[3] - x[4])^2 + #' (x[2] - 2*x[3])^4 + 10*(x[1] - x[4])^4 #' x0 <- c(3, -1, 0, 1) #' sbplx(x0, psf, control = list(maxeval = Inf, ftol_rel = 1e-6)) # 0 0 0 0 (?) #' sbplx <- function(x0, fn, lower = NULL, upper = NULL, nl.info = FALSE, control = list(), ...) { opts <- nl.opts(control) opts["algorithm"] <- "NLOPT_LN_SBPLX" fun <- match.fun(fn) fn <- function(x) fun(x, ...) S0 <- nloptr(x0, fn, lb = lower, ub = upper, opts = opts) if (nl.info) print(S0) list(par = S0$solution, value = S0$objective, iter = S0$iterations, convergence = S0$status, message = S0$message) } nloptr/R/nloptions.R0000644000176200001440000000403714636244620014154 0ustar liggesusers# Copyright (C) 2014 Hans W. Borchers. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: nloptions.R # Author: Hans W. Borchers # Date: 27 January 2014 # # Function to define nloptr options list. #' Setting NL Options #' #' Sets and changes the NLOPT options. #' #' The following options can be set (here with default values): #' #' \code{stopval = -Inf, # stop minimization at this value}\cr \code{xtol_rel = #' 1e-6, # stop on small optimization step}\cr \code{maxeval = 1000, # stop on #' this many function evaluations}\cr \code{ftol_rel = 0.0, # stop on change #' times function value}\cr \code{ftol_abs = 0.0, # stop on small change of #' function value}\cr \code{check_derivatives = FALSE} #' #' @param optlist list of options, see below. #' #' @return returns a list with default and changed options. #' #' @export #' #' @author Hans W. Borchers #' #' @note There are more options that can be set for solvers in NLOPT. These #' cannot be set through their wrapper functions. To see the full list of #' options and algorithms, type \code{nloptr.print.options()}. #' #' @examples #' #' nl.opts(list(xtol_rel = 1e-8, maxeval = 2000)) #' nl.opts <- function(optlist = NULL) { opts <- list( stopval = -Inf, # stop minimization at this value xtol_rel = 1e-6, # stop on small optimization step maxeval = 1000, # stop on this many function evaluations ftol_rel = 0.0, # stop on change times function value ftol_abs = 0.0, # stop on small change of function value check_derivatives = FALSE, algorithm = NULL # will be filled by each single function ) if (is.null(optlist)) return(opts) if (!is.list(optlist) || "" %in% names(optlist)) stop("Argument `optlist` must be a named list.") for (option_name in names(optlist)) { opts[[option_name]] <- optlist[[option_name]] } if (!is.null(opts[["algorithm"]])) { warning("Option `algorithm` cannot be set here. It will be overwritten.") opts[["algorithm"]] <- NULL } opts } nloptr/R/cobyla.R0000644000176200001440000002322714636244620013402 0ustar liggesusers# Copyright (C) 2014 Hans W. Borchers. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: cobyla.R # Author: Hans W. Borchers # Date: 27 January 2014 # # Wrapper to solve optimization problem using COBYLA, BOBYQA, and NEWUOA. # # CHANGELOG # 2023-02-10: Tweaks for efficiency and readability (Avraham Adler) # 2024-06-04: Switched desired direction of the hin/hinjac inequalities, leaving # the old behavior as the default for now. Also cleaned up the HS100 # example (Avraham Adler). # #' Constrained Optimization by Linear Approximations #' #' \acronym{COBYLA} is an algorithm for derivative-free optimization with #' nonlinear inequality and equality constraints (but see below). #' #' It constructs successive linear approximations of the objective function and #' constraints via a simplex of \eqn{n+1} points (in \eqn{n} dimensions), and #' optimizes these approximations in a trust region at each step. #' #' \acronym{COBYLA} supports equality constraints by transforming them into two #' inequality constraints. This functionality has not been added to the wrapper. #' To use \acronym{COBYLA} with equality constraints, please use the full #' \code{nloptr} invocation. #' #' @param x0 starting point for searching the optimum. #' @param fn objective function that is to be minimized. #' @param lower,upper lower and upper bound constraints. #' @param hin function defining the inequality constraints, that is #' \code{hin>=0} for all components. #' @param nl.info logical; shall the original \acronym{NLopt} info be shown. #' @param control list of options, see \code{nl.opts} for help. #' @param deprecatedBehavior logical; if \code{TRUE} (default for now), the old #' behavior of the Jacobian function is used, where the equality is \eqn{\ge 0} #' instead of \eqn{\le 0}. This will be reversed in a future release and #' eventually removed. #' @param ... additional arguments passed to the function. #' #' @return List with components: #' \item{par}{the optimal solution found so far.} #' \item{value}{the function value corresponding to \code{par}.} #' \item{iter}{number of (outer) iterations, see \code{maxeval}.} #' \item{convergence}{integer code indicating successful completion (> 0) #' or a possible error number (< 0).} #' \item{message}{character string produced by NLopt and giving additional #' information.} #' #' @author Hans W. Borchers #' #' @note The original code, written in Fortran by Powell, was converted in C #' for the \acronym{SciPy} project. #' #' @seealso \code{\link{bobyqa}}, \code{\link{newuoa}} #' #' @references M. J. D. Powell, ``A direct search optimization method that #' models the objective and constraint functions by linear interpolation,'' in #' Advances in Optimization and Numerical Analysis, eds. S. Gomez and J.-P. #' Hennart (Kluwer Academic: Dordrecht, 1994), p. 51-67. #' #' @examples #' #' ## Solve the Hock-Schittkowski problem no. 100 with analytic gradients #' ## See https://apmonitor.com/wiki/uploads/Apps/hs100.apm #' #' x0.hs100 <- c(1, 2, 0, 4, 0, 1, 1) #' fn.hs100 <- function(x) {(x[1] - 10) ^ 2 + 5 * (x[2] - 12) ^ 2 + x[3] ^ 4 + #' 3 * (x[4] - 11) ^ 2 + 10 * x[5] ^ 6 + 7 * x[6] ^ 2 + #' x[7] ^ 4 - 4 * x[6] * x[7] - 10 * x[6] - 8 * x[7]} #' #' hin.hs100 <- function(x) {c( #' 2 * x[1] ^ 2 + 3 * x[2] ^ 4 + x[3] + 4 * x[4] ^ 2 + 5 * x[5] - 127, #' 7 * x[1] + 3 * x[2] + 10 * x[3] ^ 2 + x[4] - x[5] - 282, #' 23 * x[1] + x[2] ^ 2 + 6 * x[6] ^ 2 - 8 * x[7] - 196, #' 4 * x[1] ^ 2 + x[2] ^ 2 - 3 * x[1] * x[2] + 2 * x[3] ^ 2 + 5 * x[6] - #' 11 * x[7]) #' } #' #' S <- cobyla(x0.hs100, fn.hs100, hin = hin.hs100, #' nl.info = TRUE, control = list(xtol_rel = 1e-8, maxeval = 2000), #' deprecatedBehavior = FALSE) #' #' ## The optimum value of the objective function should be 680.6300573 #' ## A suitable parameter vector is roughly #' ## (2.330, 1.9514, -0.4775, 4.3657, -0.6245, 1.0381, 1.5942) #' #' S #' #' @export cobyla #' cobyla <- function(x0, fn, lower = NULL, upper = NULL, hin = NULL, nl.info = FALSE, control = list(), deprecatedBehavior = TRUE, ...) { opts <- nl.opts(control) opts["algorithm"] <- "NLOPT_LN_COBYLA" f1 <- match.fun(fn) fn <- function(x) f1(x, ...) if (!is.null(hin)) { if (deprecatedBehavior) { warning("The old behavior for hin >= 0 has been deprecated. Please ", "restate the inequality to be <=0. The ability to use the old ", "behavior will be removed in a future release.") .hin <- match.fun(hin) hin <- function(x) -.hin(x, ...) # change hin >= 0 to hin <= 0 ! } } S0 <- nloptr(x0, eval_f = fn, lb = lower, ub = upper, eval_g_ineq = hin, opts = opts) if (nl.info) print(S0) list(par = S0$solution, value = S0$objective, iter = S0$iterations, convergence = S0$status, message = S0$message) } #' Bound Optimization by Quadratic Approximation #' #' \acronym{BOBYQA} performs derivative-free bound-constrained optimization #' using an iteratively constructed quadratic approximation for the objective #' function. #' #' This is an algorithm derived from the \acronym{BOBYQA} Fortran subroutine of #' Powell, converted to C and modified for the \acronym{NLopt} stopping #' criteria. #' #' @param x0 starting point for searching the optimum. #' @param fn objective function that is to be minimized. #' @param lower,upper lower and upper bound constraints. #' @param nl.info logical; shall the original \acronym{NLopt} info be shown. #' @param control list of options, see \code{nl.opts} for help. #' @param ... additional arguments passed to the function. #' #' @return List with components: #' \item{par}{the optimal solution found so far.} #' \item{value}{the function value corresponding to \code{par}.} #' \item{iter}{number of (outer) iterations, see \code{maxeval}.} #' \item{convergence}{integer code indicating successful completion (> 0) #' or a possible error number (< 0).} #' \item{message}{character string produced by \acronym{NLopt} and giving #' additional information.} #' #' @export bobyqa #' #' @note Because \acronym{BOBYQA} constructs a quadratic approximation of the #' objective, it may perform poorly for objective functions that are not #' twice-differentiable. #' #' @seealso \code{\link{cobyla}}, \code{\link{newuoa}} #' #' @references M. J. D. Powell. ``The BOBYQA algorithm for bound constrained #' optimization without derivatives,'' Department of Applied Mathematics and #' Theoretical Physics, Cambridge England, technical reportNA2009/06 (2009). #' #' @examples #' #' ## Rosenbrock Banana function #' #' rbf <- function(x) {(1 - x[1]) ^ 2 + 100 * (x[2] - x[1] ^ 2) ^ 2} #' #' ## The function as written above has a minimum of 0 at (1, 1) #' #' S <- bobyqa(c(0, 0), rbf) #' #' #' S #' #' ## Rosenbrock Banana function with both parameters constrained to [0, 0.5] #' #' S <- bobyqa(c(0, 0), rbf, lower = c(0, 0), upper = c(0.5, 0.5)) #' #' S #' bobyqa <- function(x0, fn, lower = NULL, upper = NULL, nl.info = FALSE, control = list(), ...) { opts <- nl.opts(control) opts["algorithm"] <- "NLOPT_LN_BOBYQA" fun <- match.fun(fn) fn <- function(x) fun(x, ...) S0 <- nloptr(x0, fn, lb = lower, ub = upper, opts = opts) if (nl.info) print(S0) list(par = S0$solution, value = S0$objective, iter = S0$iterations, convergence = S0$status, message = S0$message) } #' New Unconstrained Optimization with quadratic Approximation #' #' \acronym{NEWUOA} solves quadratic subproblems in a spherical trust region via #' a truncated conjugate-gradient algorithm. For bound-constrained problems, #' \acronym{BOBYQA} should be used instead, as Powell developed it as an #' enhancement thereof for bound constraints. #' #' This is an algorithm derived from the \acronym{NEWUOA} Fortran subroutine of #' Powell, converted to C and modified for the \acronym{NLopt} stopping #' criteria. #' #' @param x0 starting point for searching the optimum. #' @param fn objective function that is to be minimized. #' @param nl.info logical; shall the original \acronym{NLopt} info be shown. #' @param control list of options, see \code{nl.opts} for help. #' @param ... additional arguments passed to the function. #' #' @return List with components: #' \item{par}{the optimal solution found so far.} #' \item{value}{the function value corresponding to \code{par}.} #' \item{iter}{number of (outer) iterations, see \code{maxeval}.} #' \item{convergence}{integer code indicating successful completion (> 0) #' or a possible error number (< 0).} #' \item{message}{character string produced by NLopt and giving additional #' information.} #' #' @export newuoa #' #' @author Hans W. Borchers #' #' @note \acronym{NEWUOA} may be largely superseded by \acronym{BOBYQA}. #' #' @seealso \code{\link{bobyqa}}, \code{\link{cobyla}} #' #' @references M. J. D. Powell. ``The BOBYQA algorithm for bound constrained #' optimization without derivatives,'' Department of Applied Mathematics and #' Theoretical Physics, Cambridge England, technical reportNA2009/06 (2009). #' #' @examples #' #' ## Rosenbrock Banana function #' #' rbf <- function(x) {(1 - x[1]) ^ 2 + 100 * (x[2] - x[1] ^ 2) ^ 2} #' #' S <- newuoa(c(1, 2), rbf) #' #' ## The function as written above has a minimum of 0 at (1, 1) #' #' S #' newuoa <- function(x0, fn, nl.info = FALSE, control = list(), ...) { opts <- nl.opts(control) opts["algorithm"] <- "NLOPT_LN_NEWUOA" fun <- match.fun(fn) fn <- function(x) fun(x, ...) S0 <- nloptr(x0, fn, opts = opts) if (nl.info) print(S0) list(par = S0$solution, value = S0$objective, iter = S0$iterations, convergence = S0$status, message = S0$message) } nloptr/R/global.R0000644000176200001440000002743614636244620013377 0ustar liggesusers# Copyright (C) 2014 Hans W. Borchers. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: global.R # Author: Hans W. Borchers # Date: 27 January 2014 # # Wrapper to solve optimization problem using StoGo. # # CHANGELOG # # 2023-02-08: Tweaks for efficiency and readability. (Avraham Adler) # 2024-06-04: Switched desired direction of the hin/hinjac inequalities, leaving # the old behavior as the default for now. Also cleaned up the Hartmann 6 # example. (Avraham Adler) # #----------------------------------StoGo---------------------------------------- #' Stochastic Global Optimization #' #' \acronym{StoGO} is a global optimization algorithm that works by #' systematically dividing the search space---which must be #' bound-constrained---into smaller hyper-rectangles via a branch-and-bound #' technique, and searching them using a gradient-based local-search algorithm #' (a \acronym{BFGS} variant), optionally including some randomness. #' #' @param x0 initial point for searching the optimum. #' @param fn objective function that is to be minimized. #' @param gr optional gradient of the objective function. #' @param lower,upper lower and upper bound constraints. #' @param maxeval maximum number of function evaluations. #' @param xtol_rel stopping criterion for relative change reached. #' @param randomized logical; shall a randomizing variant be used? #' @param nl.info logical; shall the original \acronym{NLopt} info be shown. #' @param ... additional arguments passed to the function. #' #' @return List with components: #' \item{par}{the optimal solution found so far.} #' \item{value}{the function value corresponding to \code{par}.} #' \item{iter}{number of (outer) iterations, see \code{maxeval}.} #' \item{convergence}{integer code indicating successful completion (> 0) #' or a possible error number (< 0).} #' \item{message}{character string produced by \acronym{NLopt} and giving #' additional information.} #' #' @export stogo #' #' @author Hans W. Borchers #' #' @note Only bounds-constrained problems are supported by this algorithm. #' #' @references S. Zertchaninov and K. Madsen, ``A C++ Programme for Global #' Optimization,'' IMM-REP-1998-04, Department of Mathematical Modelling, #' Technical University of Denmark. #' #' @examples #' #' ## Rosenbrock Banana objective function #' #' rbf <- function(x) {(1 - x[1]) ^ 2 + 100 * (x[2] - x[1] ^ 2) ^ 2} #' #' x0 <- c(-1.2, 1) #' lb <- c(-3, -3) #' ub <- c(3, 3) #' #' ## The function as written above has a minimum of 0 at (1, 1) #' #' stogo(x0 = x0, fn = rbf, lower = lb, upper = ub) #' stogo <- function(x0, fn, gr = NULL, lower = NULL, upper = NULL, maxeval = 10000, xtol_rel = 1e-6, randomized = FALSE, nl.info = FALSE, ...) { opts <- list() opts$maxeval <- maxeval opts$xtol_rel <- xtol_rel if (randomized) { opts["algorithm"] <- "NLOPT_GD_STOGO_RAND" } else { opts["algorithm"] <- "NLOPT_GD_STOGO" } fun <- match.fun(fn) fn <- function(x) fun(x, ...) if (is.null(gr)) {gr <- function(x) nl.grad(x, fn)} S0 <- nloptr(x0, eval_f = fn, eval_grad_f = gr, lb = lower, ub = upper, opts = opts) if (nl.info) print(S0) list(par = S0$solution, value = S0$objective, iter = S0$iterations, convergence = S0$status, message = S0$message) } #---------------------------------ISRES----------------------------------------- # ISRES supports nonlinear constraints but mat be quite inaccurate! #' Improved Stochastic Ranking Evolution Strategy #' #' The Improved Stochastic Ranking Evolution Strategy (\acronym{ISRES}) is an #' algorithm for nonlinearly constrained global optimization, or at least #' semi-global, although it has heuristics to escape local optima. #' #' The evolution strategy is based on a combination of a mutation rule---with a #' log-normal step-size update and exponential smoothing---and differential #' variation---a Nelder-Mead-like update rule). The fitness ranking is simply #' via the objective function for problems without nonlinear constraints, but #' when nonlinear constraints are included the stochastic ranking proposed by #' Runarsson and Yao is employed. #' #' This method supports arbitrary nonlinear inequality and equality constraints #' in addition to the bounds constraints. #' #' @param x0 initial point for searching the optimum. #' @param fn objective function that is to be minimized. #' @param lower,upper lower and upper bound constraints. #' @param hin function defining the inequality constraints, that is #' \code{hin <= 0} for all components. #' @param heq function defining the equality constraints, that is \code{heq = 0} #' for all components. #' @param maxeval maximum number of function evaluations. #' @param pop.size population size. #' @param xtol_rel stopping criterion for relative change reached. #' @param nl.info logical; shall the original \acronym{NLopt} info be shown. #' @param deprecatedBehavior logical; if \code{TRUE} (default for now), the old #' behavior of the Jacobian function is used, where the equality is \eqn{\ge 0} #' instead of \eqn{\le 0}. This will be reversed in a future release and #' eventually removed. #' @param ... additional arguments passed to the function. #' #' @return List with components: #' \item{par}{the optimal solution found so far.} #' \item{value}{the function value corresponding to \code{par}.} #' \item{iter}{number of (outer) iterations, see \code{maxeval}.} #' \item{convergence}{integer code indicating successful completion (> 0) #' or a possible error number (< 0).} #' \item{message}{character string produced by NLopt and giving additional #' information.} #' #' @export isres #' #' @author Hans W. Borchers #' #' @note The initial population size for CRS defaults to \eqn{20x(n+1)} in #' \eqn{n} dimensions, but this can be changed. The initial population must be #' at least \eqn{n+1}. #' #' @references Thomas Philip Runarsson and Xin Yao, ``Search biases in #' constrained evolutionary optimization,'' IEEE Trans. on Systems, Man, and #' Cybernetics Part C: Applications and Reviews, vol. 35 (no. 2), pp. 233-243 #' (2005). #' #' @examples #' #' ## Rosenbrock Banana objective function #' #' rbf <- function(x) {(1 - x[1]) ^ 2 + 100 * (x[2] - x[1] ^ 2) ^ 2} #' #' x0 <- c(-1.2, 1) #' lb <- c(-3, -3) #' ub <- c(3, 3) #' #' ## The function as written above has a minimum of 0 at (1, 1) #' #' isres(x0 = x0, fn = rbf, lower = lb, upper = ub) #' #' ## Now subject to the inequality that x[1] + x[2] <= 1.5 #' #' hin <- function(x) {x[1] + x[2] - 1.5} #' #' S <- isres(x0 = x0, fn = rbf, hin = hin, lower = lb, upper = ub, #' maxeval = 2e5L, deprecatedBehavior = FALSE) #' #' S #' #' sum(S$par) #' isres <- function(x0, fn, lower, upper, hin = NULL, heq = NULL, maxeval = 10000, pop.size = 20 * (length(x0) + 1), xtol_rel = 1e-6, nl.info = FALSE, deprecatedBehavior = TRUE, ...) { opts <- list() opts$maxeval <- maxeval opts$xtol_rel <- xtol_rel opts$population <- pop.size opts$algorithm <- "NLOPT_GN_ISRES" fun <- match.fun(fn) fn <- function(x) fun(x, ...) if (!is.null(hin)) { if (deprecatedBehavior) { warning("The old behavior for hin >= 0 has been deprecated. Please ", "restate the inequality to be <=0. The ability to use the old ", "behavior will be removed in a future release.") .hin <- match.fun(hin) hin <- function(x) -.hin(x, ...) # change hin >= 0 to hin <= 0 ! } } if (!is.null(heq)) { .heq <- match.fun(heq) heq <- function(x) .heq(x) } S0 <- nloptr(x0 = x0, eval_f = fn, lb = lower, ub = upper, eval_g_ineq = hin, eval_g_eq = heq, opts = opts) if (nl.info) print(S0) list(par = S0$solution, value = S0$objective, iter = S0$iterations, convergence = S0$status, message = S0$message) } #- --------------------------------- CRS -------------------------------------- #' Controlled Random Search #' #' The Controlled Random Search (\acronym{CRS}) algorithm (and in particular, #' the \acronym{CRS2} variant) with the `local mutation' modification. #' #' The \acronym{CRS} algorithms are sometimes compared to genetic algorithms, in #' that they start with a random population of points, and randomly evolve these #' points by heuristic rules. In this case, the evolution somewhat resembles a #' randomized Nelder-Mead algorithm. #' #' The published results for \acronym{CRS} seem to be largely empirical. #' #' @param x0 initial point for searching the optimum. #' @param fn objective function that is to be minimized. #' @param lower,upper lower and upper bound constraints. #' @param maxeval maximum number of function evaluations. #' @param pop.size population size. #' @param ranseed prescribe seed for random number generator. #' @param xtol_rel stopping criterion for relative change reached. #' @param nl.info logical; shall the original \acronym{NLopt} info be shown. #' @param ... additional arguments passed to the function. #' #' @return List with components: #' \item{par}{the optimal solution found so far.} #' \item{value}{the function value corresponding to \code{par}.} #' \item{iter}{number of (outer) iterations, see \code{maxeval}.} #' \item{convergence}{integer code indicating successful completion (> 0) #' or a possible error number (< 0).} #' \item{message}{character string produced by \acronym{NLopt} and giving #' additional information.} #' #' @export crs2lm #' #' @note The initial population size for CRS defaults to \eqn{10x(n+1)} in #' \eqn{n} dimensions, but this can be changed. The initial population must be #' at least \eqn{n+1}. #' #' @references W. L. Price, ``Global optimization by controlled random #' search,'' J. Optim. Theory Appl. 40 (3), p. 333-348 (1983). #' #' P. Kaelo and M. M. Ali, ``Some variants of the controlled random search #' algorithm for global optimization,'' J. Optim. Theory Appl. 130 (2), 253-264 #' (2006). #' #' @examples #' #' ## Minimize the Hartmann 6-Dimensional function #' ## See https://www.sfu.ca/~ssurjano/hart6.html #' #' a <- c(1.0, 1.2, 3.0, 3.2) #' A <- matrix(c(10, 0.05, 3, 17, #' 3, 10, 3.5, 8, #' 17, 17, 1.7, 0.05, #' 3.5, 0.1, 10, 10, #' 1.7, 8, 17, 0.1, #' 8, 14, 8, 14), nrow = 4) #' #' B <- matrix(c(.1312, .2329, .2348, .4047, #' .1696, .4135, .1451, .8828, #' .5569, .8307, .3522, .8732, #' .0124, .3736, .2883, .5743, #' .8283, .1004, .3047, .1091, #' .5886, .9991, .6650, .0381), nrow = 4) #' #' hartmann6 <- function(x, a, A, B) { #' fun <- 0 #' for (i in 1:4) { #' fun <- fun - a[i] * exp(-sum(A[i, ] * (x - B[i, ]) ^ 2)) #' } #' #' fun #' } #' #' ## The function has a global minimum of -3.32237 at #' ## (0.20169, 0.150011, 0.476874, 0.275332, 0.311652, 0.6573) #' #' S <- crs2lm(x0 = rep(0, 6), hartmann6, lower = rep(0, 6), upper = rep(1, 6), #' ranseed = 10L, nl.info = TRUE, xtol_rel=1e-8, maxeval = 10000, #' a = a, A = A, B = B) #' #' S #' crs2lm <- function(x0, fn, lower, upper, maxeval = 10000, pop.size = 10 * (length(x0) + 1), ranseed = NULL, xtol_rel = 1e-6, nl.info = FALSE, ...) { opts <- list() opts$maxeval <- maxeval opts$xtol_rel <- xtol_rel opts$population <- pop.size if (!is.null(ranseed)) {opts$ranseed <- as.integer(ranseed)} opts$algorithm <- "NLOPT_GN_CRS2_LM" fun <- match.fun(fn) fn <- function(x) fun(x, ...) S0 <- nloptr(x0, eval_f = fn, lb = lower, ub = upper, opts = opts) if (nl.info) print(S0) list(par = S0$solution, value = S0$objective, iter = S0$iterations, convergence = S0$status, message = S0$message) } nloptr/R/auglag.R0000644000176200001440000002262414636244620013371 0ustar liggesusers# Copyright (C) 2014 Hans W. Borchers. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: auglag.R # Author: Hans W. Borchers # Date: 27 January 2014 # # Wrapper to solve optimization problem using Augmented Lagrangian. # # CHANGELOG # # 2017-09-26: Fixed bug, BOBYQA is allowed as local solver # (thanks to Leo Belzile). # 2023-02-08: Tweaks for efficiency and readability (Avraham Adler) # 2024-06-04: Switched desired direction of the hin/hinjac inequalities, leaving # the old behavior as the default for now. Also corrected Powell example. # (Avraham Adler) # #' Augmented Lagrangian Algorithm #' #' The Augmented Lagrangian method adds additional terms to the unconstrained #' objective function, designed to emulate a Lagrangian multiplier. #' #' This method combines the objective function and the nonlinear #' inequality/equality constraints (if any) in to a single function: #' essentially, the objective plus a `penalty' for any violated constraints. #' #' This modified objective function is then passed to another optimization #' algorithm with no nonlinear constraints. If the constraints are violated by #' the solution of this sub-problem, then the size of the penalties is #' increased and the process is repeated; eventually, the process must converge #' to the desired solution (if it exists). #' #' Since all of the actual optimization is performed in this subsidiary #' optimizer, the subsidiary algorithm that you specify determines whether the #' optimization is gradient-based or derivative-free. #' #' The local solvers available at the moment are ``COBYLA'' (for the #' derivative-free approach) and ``LBFGS'', ``MMA'', or ``SLSQP'' (for smooth #' functions). The tolerance for the local solver has to be provided. #' #' There is a variant that only uses penalty functions for equality constraints #' while inequality constraints are passed through to the subsidiary algorithm #' to be handled directly; in this case, the subsidiary algorithm must handle #' inequality constraints. (At the moment, this variant has been turned off #' because of problems with the NLOPT library.) #' #' @param x0 starting point for searching the optimum. #' @param fn objective function that is to be minimized. #' @param gr gradient of the objective function; will be provided provided is #' \code{NULL} and the solver requires derivatives. #' @param lower,upper lower and upper bound constraints. #' @param hin,hinjac defines the inequality constraints, \code{hin(x) >= 0} #' @param heq,heqjac defines the equality constraints, \code{heq(x) = 0}. #' @param localsolver available local solvers: COBYLA, LBFGS, MMA, or SLSQP. #' @param localtol tolerance applied in the selected local solver. #' @param ineq2local logical; shall the inequality constraints be treated by #' the local solver?; not possible at the moment. #' @param nl.info logical; shall the original NLopt info been shown. #' @param control list of options, see \code{nl.opts} for help. #' @param deprecatedBehavior logical; if \code{TRUE} (default for now), the old #' behavior of the Jacobian function is used, where the equality is \eqn{\ge 0} #' instead of \eqn{\le 0}. This will be reversed in a future release and #' eventually removed. #' @param ... additional arguments passed to the function. #' #' @return List with components: #' \item{par}{the optimal solution found so far.} #' \item{value}{the function value corresponding to \code{par}.} #' \item{iter}{number of (outer) iterations, see \code{maxeval}.} #' \item{global_solver}{the global NLOPT solver used.} #' \item{local_solver}{the local NLOPT solver used, LBFGS or COBYLA.} #' \item{convergence}{integer code indicating successful completion #' (> 0) or a possible error number (< 0).} #' \item{message}{character string produced by NLopt and giving additional #' information.} #' #' @export #' #' @author Hans W. Borchers #' #' @note Birgin and Martinez provide their own free implementation of the #' method as part of the TANGO project; other implementations can be found in #' semi-free packages like LANCELOT. #' #' @seealso \code{alabama::auglag}, \code{Rsolnp::solnp} #' #' @references Andrew R. Conn, Nicholas I. M. Gould, and Philippe L. Toint, ``A #' globally convergent augmented Lagrangian algorithm for optimization with #' general constraints and simple bounds,'' SIAM J. Numer. Anal. vol. 28, no. #' 2, p. 545-572 (1991). #' #' E. G. Birgin and J. M. Martinez, ``Improving ultimate convergence of an #' augmented Lagrangian method," Optimization Methods and Software vol. 23, no. #' 2, p. 177-195 (2008). #' #' @examples #' #' x0 <- c(1, 1) #' fn <- function(x) (x[1] - 2) ^ 2 + (x[2] - 1) ^ 2 #' hin <- function(x) 0.25 * x[1]^2 + x[2] ^ 2 - 1 # hin <= 0 #' heq <- function(x) x[1] - 2 * x[2] + 1 # heq = 0 #' gr <- function(x) nl.grad(x, fn) #' hinjac <- function(x) nl.jacobian(x, hin) #' heqjac <- function(x) nl.jacobian(x, heq) #' #' # with COBYLA #' auglag(x0, fn, gr = NULL, hin = hin, heq = heq, deprecatedBehavior = FALSE) #' #' # $par: 0.8228761 0.9114382 #' # $value: 1.393464 #' # $iter: 1001 #' #' auglag(x0, fn, gr = NULL, hin = hin, heq = heq, localsolver = "SLSQP", #' deprecatedBehavior = FALSE) #' #' # $par: 0.8228757 0.9114378 #' # $value: 1.393465 #' # $iter 184 #' #' ## Example from the alabama::auglag help page #' ## Parameters should be roughly (0, 0, 1) with an objective value of 1. #' #' fn <- function(x) (x[1] + 3 * x[2] + x[3]) ^ 2 + 4 * (x[1] - x[2]) ^ 2 #' heq <- function(x) x[1] + x[2] + x[3] - 1 #' # hin restated from alabama example to be <= 0. #' hin <- function(x) c(-6 * x[2] - 4 * x[3] + x[1] ^ 3 + 3, -x[1], -x[2], -x[3]) #' #' set.seed(12) #' auglag(runif(3), fn, hin = hin, heq = heq, localsolver= "lbfgs", #' deprecatedBehavior = FALSE) #' #' # $par: 4.861756e-08 4.732373e-08 9.999999e-01 #' # $value: 1 #' # $iter: 145 #' #' ## Powell problem from the Rsolnp::solnp help page #' ## Parameters should be roughly (-1.7171, 1.5957, 1.8272, -0.7636, -0.7636) #' ## with an objective value of 0.0539498478. #' #' x0 <- c(-2, 2, 2, -1, -1) #' fn1 <- function(x) exp(x[1] * x[2] * x[3] * x[4] * x[5]) #' eqn1 <-function(x) #' c(x[1] * x[1] + x[2] * x[2] + x[3] * x[3] + x[4] * x[4] + x[5] * x[5] - 10, #' x[2] * x[3] - 5 * x[4] * x[5], #' x[1] * x[1] * x[1] + x[2] * x[2] * x[2] + 1) #' #' auglag(x0, fn1, heq = eqn1, localsolver = "mma", deprecatedBehavior = FALSE) #' #' # $par: -1.7173645 1.5959655 1.8268352 -0.7636185 -0.7636185 #' # $value: 0.05394987 #' # $iter: 916 #' auglag <- function(x0, fn, gr = NULL, lower = NULL, upper = NULL, hin = NULL, hinjac = NULL, heq = NULL, heqjac = NULL, localsolver = "COBYLA", localtol = 1e-6, ineq2local = FALSE, nl.info = FALSE, control = list(), deprecatedBehavior = TRUE, ...) { if (ineq2local) { # gsolver <- "NLOPT_LN_AUGLAG_EQ" stop("Inequalities to local solver: feature not yet implemented.") } localsolver <- toupper(localsolver) if (localsolver %in% c("COBYLA", "BOBYQA")) { # derivative-free dfree <- TRUE gsolver <- "NLOPT_LN_AUGLAG" lsolver <- paste0("NLOPT_LN_", localsolver) } else if (localsolver %in% c("LBFGS", "MMA", "SLSQP")) { # with derivatives dfree <- FALSE gsolver <- "NLOPT_LD_AUGLAG" lsolver <- paste0("NLOPT_LD_", localsolver) } else { stop("Only local solvers allowed: BOBYQA, COBYLA, LBFGS, MMA, SLSQP.") } # Function and gradient, if needed .fn <- match.fun(fn) fn <- function(x) .fn(x, ...) if (!dfree && is.null(gr)) {gr <- function(x) nl.grad(x, fn)} # Global and local options opts <- nl.opts(control) opts$algorithm <- gsolver local_opts <- list(algorithm = lsolver, xtol_rel = localtol, eval_grad_f = if (!dfree) gr else NULL) opts$local_opts <- local_opts # Inequality constraints if (!is.null(hin)) { if (deprecatedBehavior) { warning("The old behavior for hin >= 0 has been deprecated. Please ", "restate the inequality to be <=0. The ability to use the old ", "behavior will be removed in a future release.") .hin <- match.fun(hin) hin <- function(x) -.hin(x, ...) # change hin >= 0 to hin <= 0 ! } } if (!dfree) { if (is.null(hinjac)) { hinjac <- function(x) nl.jacobian(x, hin) } else if (deprecatedBehavior) { warning("The old behavior for hinjac >= 0 has been deprecated. Please ", "restate the inequality to be <=0. The ability to use the old ", "behavior will be removed in a future release.") .hinjac <- match.fun(hinjac) hinjac <- function(x) -.hinjac(x) } } # Equality constraints if (!is.null(heq)) { .heq <- match.fun(heq) heq <- function(x) .heq(x) } if (!dfree) { if (is.null(heqjac)) { heqjac <- function(x) nl.jacobian(x, heq) } else { .heqjac <- match.fun(heqjac) heqjac <- function(x) .heqjac(x) } } S0 <- nloptr(x0, eval_f = fn, eval_grad_f = gr, lb = lower, ub = upper, eval_g_ineq = hin, eval_jac_g_ineq = hinjac, eval_g_eq = heq, eval_jac_g_eq = heqjac, opts = opts) if (nl.info) print(S0) list(par = S0$solution, value = S0$objective, iter = S0$iterations, global_solver = gsolver, local_solver = lsolver, convergence = S0$status, message = S0$message) } nloptr/R/is.nloptr.R0000644000176200001440000002205314636244620014055 0ustar liggesusers# Copyright (C) 2010 Jelmer Ypma. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: is.nloptr.R # Author: Jelmer Ypma # Date: 10 June 2010 # # Input: object # Output: bool telling whether the object is an nloptr or not # # CHANGELOG # 2011-06-16: separated local optimizer check and equality constraints check # 2014-05-05: Replaced cat by warning. # 2023-02-08: Tweaks for efficiency and readability (Avraham Adler) # #' R interface to NLopt #' #' is.nloptr preforms checks to see if a fully specified problem is supplied to #' nloptr. Mostly for internal use. #' #' @param x object to be tested. #' #' @return Logical. Return TRUE if all tests were passed, otherwise return #' FALSE or exit with Error. #' #' @export is.nloptr #' #' @author Jelmer Ypma #' #' @seealso \code{\link[nloptr:nloptr]{nloptr}} #' #' @keywords optimize interface is.nloptr <- function(x) { # Check whether the object exists and is a list if (is.null(x)) return(FALSE) # Proper use of return to break out early :) if (!is.list(x)) return(FALSE) # Helper values now that we are certain x is a list lx0 <- length(x$x0) # Check whether the needed wrapper functions are supplied if (!is.function(x$eval_f)) stop("eval_f is not a function") if (!is.null(x$eval_g_ineq) && !is.function(x$eval_g_ineq)) stop("eval_g_ineq is not a function") if (!is.null(x$eval_g_eq) && !is.function(x$eval_g_eq)) stop("eval_g_eq is not a function") # Check whether bounds are defined for all controls if (anyNA(x$x0)) stop("x0 contains NA") if (lx0 != length(x$lower_bounds)) stop("length(lb) != length(x0)") if (lx0 != length(x$upper_bounds)) stop("length(ub) != length(x0)") # Check whether the initial value is within the bounds if (any(x$x0 < x$lower_bounds)) {stop("at least one element in x0 < lb")} if (any(x$x0 > x$upper_bounds)) {stop("at least one element in x0 > ub")} # define list with all algorithms list_algorithms <- c( "NLOPT_GN_DIRECT", "NLOPT_GN_DIRECT_L", "NLOPT_GN_DIRECT_L_RAND", "NLOPT_GN_DIRECT_NOSCAL", "NLOPT_GN_DIRECT_L_NOSCAL", "NLOPT_GN_DIRECT_L_RAND_NOSCAL", "NLOPT_GN_ORIG_DIRECT", "NLOPT_GN_ORIG_DIRECT_L", "NLOPT_GD_STOGO", "NLOPT_GD_STOGO_RAND", "NLOPT_LD_SLSQP", "NLOPT_LD_LBFGS_NOCEDAL", "NLOPT_LD_LBFGS", "NLOPT_LN_PRAXIS", "NLOPT_LD_VAR1", "NLOPT_LD_VAR2", "NLOPT_LD_TNEWTON", "NLOPT_LD_TNEWTON_RESTART", "NLOPT_LD_TNEWTON_PRECOND", "NLOPT_LD_TNEWTON_PRECOND_RESTART", "NLOPT_GN_CRS2_LM", "NLOPT_GN_MLSL", "NLOPT_GD_MLSL", "NLOPT_GN_MLSL_LDS", "NLOPT_GD_MLSL_LDS", "NLOPT_LD_MMA", "NLOPT_LD_CCSAQ", "NLOPT_LN_COBYLA", "NLOPT_LN_NEWUOA", "NLOPT_LN_NEWUOA_BOUND", "NLOPT_LN_NELDERMEAD", "NLOPT_LN_SBPLX", "NLOPT_LN_AUGLAG", "NLOPT_LD_AUGLAG", "NLOPT_LN_AUGLAG_EQ", "NLOPT_LD_AUGLAG_EQ", "NLOPT_LN_BOBYQA", "NLOPT_GN_ISRES", "NLOPT_GN_ESCH" ) # check if an existing algorithm was supplied if (!(x$options$algorithm %in% list_algorithms)) { stop("Incorrect algorithm supplied. Use one of the following:\n", paste(list_algorithms, collapse = "\n")) } # determine subset of algorithms that need a derivative list_algorithms_d <- list_algorithms[grep("NLOPT_[G,L]D", list_algorithms)] list_algorithms_n <- list_algorithms[grep("NLOPT_[G,L]N", list_algorithms)] # Check the whether we don't have NA's if we evaluate the objective function # in x0 f0 <- x$eval_f(x$x0) if (is.list(f0)) { if (is.na(f0$objective)) stop("objective in x0 returns NA") if (anyNA(f0$gradient)) stop("gradient of objective in x0 returns NA") if (length(f0$gradient) != lx0) { stop("wrong number of elements in gradient of objective") } # check whether algorithm needs a derivative if (x$options$algorithm %in% list_algorithms_n) { warning("a gradient was supplied for the objective function, ", "but algorithm ", x$options$algorithm, " does not use gradients.") } } else { if (anyNA(f0)) stop("objective in x0 returns NA") # check whether algorithm needs a derivative if (x$options$algorithm %in% list_algorithms_d) { stop("A gradient for the objective function is needed by ", "algorithm ", x$options$algorithm, " but was not supplied.\n") } } # Check the whether we don't have NA's if we evaluate the inequality # constraints in x0 if (!is.null(x$eval_g_ineq)) { g0_ineq <- x$eval_g_ineq(x$x0) if (is.list(g0_ineq)) { if (anyNA(g0_ineq$constraints)) { stop("inequality constraints in x0 returns NA") } if (anyNA(g0_ineq$jacobian)) { stop("jacobian of inequality constraints in x0 returns NA") } if (length(g0_ineq$jacobian) != length(g0_ineq$constraints) * lx0) { stop("wrong number of elements in jacobian of inequality ", "constraints (is ", length(g0_ineq$jacobian), ", but should be ", length(g0_ineq$constraints), " x ", lx0, " = ", length(g0_ineq$constraints) * lx0, ")") } # check whether algorithm needs a derivative if (x$options$algorithm %in% list_algorithms_n) { warning("a gradient was supplied for the inequality ", "constraints, but algorithm ", x$options$algorithm, " does not use gradients.") } } else { if (anyNA(g0_ineq)) stop("inequality constraints in x0 returns NA") # check whether algorithm needs a derivative if (x$options$algorithm %in% list_algorithms_d) { stop("A gradient for the inequality constraints is needed by ", "algorithm ", x$options$algorithm, " but was not supplied.\n") } } } # Check the whether we don"t have NA"s if we evaluate the equality # constraints in x0 if (!is.null(x$eval_g_eq)) { g0_eq <- x$eval_g_eq(x$x0) if (is.list(g0_eq)) { if (anyNA(g0_eq$constraints)) { stop("equality constraints in x0 returns NA") } if (anyNA(g0_eq$jacobian)) { stop("jacobian of equality constraints in x0 returns NA") } if (length(g0_eq$jacobian) != length(g0_eq$constraints) * lx0) { stop("wrong number of elements in jacobian of equality ", "constraints (is ", length(g0_eq$jacobian), ", but should be ", length(g0_eq$constraints), " x ", lx0, " = ", length(g0_eq$constraints) * lx0, ")") } # check whether algorithm needs a derivative if (x$options$algorithm %in% list_algorithms_n) { warning("a gradient was supplied for the equality ", "constraints, but algorithm ", x$options$algorithm, " does not use gradients.") } } else { if (anyNA(g0_eq)) stop("equality constraints in x0 returns NA") # check whether algorithm needs a derivative if (x$options$algorithm %in% list_algorithms_d) { stop("A gradient for the equality constraints is needed by ", "algorithm ", x$options$algorithm, " but was not supplied.\n") } } } # check if we have a correct algorithm for the equality constraints if (x$num_constraints_eq > 0) { eq_algorithms <- c("NLOPT_LD_AUGLAG", "NLOPT_LN_AUGLAG", "NLOPT_LD_AUGLAG_EQ", "NLOPT_LN_AUGLAG_EQ", "NLOPT_GN_ISRES", "NLOPT_LD_SLSQP", "NLOPT_LN_COBYLA") if (!(x$options$algorithm %in% eq_algorithms)) { stop("If you want to use equality constraints, ", "then you should use one of these algorithms ", toString(eq_algorithms)) } } # check if a local optimizer was supplied, which is needed by some algorithms if (x$options$algorithm %in% c("NLOPT_LD_AUGLAG", "NLOPT_LN_AUGLAG", "NLOPT_LD_AUGLAG_EQ", "NLOPT_LN_AUGLAG_EQ", "NLOPT_GN_MLSL", "NLOPT_GD_MLSL", "NLOPT_GN_MLSL_LDS", "NLOPT_GD_MLSL_LDS") && is.null(x$local_options)) { stop("The algorithm ", x$options$algorithm, " needs a local ", "optimizer; specify an algorithm and termination condition in ", "local_opts") } # Check if the vector with tolerances for the inequality constraints is of # the same size as the number of constraints. if (x$num_constraints_ineq != length(x$options$tol_constraints_ineq)) { stop("The vector tol_constraints_ineq in the options list has size ", length(x$options$tol_constraints_ineq), " which is unequal to the number of inequality constraints, ", x$num_constraints_ineq, ".") } # Check if the vector with tolerances for the equality constraints is of the # same size as the number of constraints. if (x$num_constraints_eq != length(x$options$tol_constraints_eq)) { stop("The vector tol_constraints_eq in the options list has size ", length(x$options$tol_constraints_eq), " which is unequal to the number of equality constraints, ", x$num_constraints_eq, ".") } TRUE } nloptr/R/gradients.R0000644000176200001440000000506714636244620014113 0ustar liggesusers# Copyright (C) 2014 Hans W. Borchers. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: gradients.R # Author: Hans W. Borchers # Date: 27 January 2014 # # Functions to calculate numerical Gradient and Jacobian. # # CHANGELOG # # 2023-02-09: Cleanup and tweaks for safety and efficiency. Also Changed # nl.grad error message to be more mathematically precise. The loop # construct is 4 times faster than full vectorization with apply and # around 25% faster than partial vectorization creating a heps using # diag and pulling vectors off row-by-row in nl.grad & nl.jacobian. # (Avraham Adler) # #' Numerical Gradients and Jacobians #' #' Provides numerical gradients and Jacobians. #' #' Both functions apply the ``central difference formula'' with step size as #' recommended in the literature. #' #' @aliases nl.grad nl.jacobian #' #' @param x0 point as a vector where the gradient is to be calculated. #' @param fn scalar function of one or several variables. #' @param heps step size to be used. #' @param \dots additional arguments passed to the function. #' #' @return \code{grad} returns the gradient as a vector; \code{jacobian} #' returns the Jacobian as a matrix of usual dimensions. #' #' @export #' #' @author Hans W. Borchers #' #' @examples #' #' fn1 <- function(x) sum(x ^ 2) #' nl.grad(seq(0, 1, by = 0.2), fn1) #' ## [1] 0.0 0.4 0.8 1.2 1.6 2.0 #' nl.grad(rep(1, 5), fn1) #' ## [1] 2 2 2 2 2 #' #' fn2 <- function(x) c(sin(x), cos(x)) #' x <- (0:1) * 2 * pi #' nl.jacobian(x, fn2) #' ## [,1] [,2] #' ## [1,] 1 0 #' ## [2,] 0 1 #' ## [3,] 0 0 #' ## [4,] 0 0 #' nl.grad <- function(x0, fn, heps = .Machine$double.eps ^ (1 / 3), ...) { if (!is.numeric(x0)) stop("Argument 'x0' must be a numeric value.") fun <- match.fun(fn) fn <- function(x) fun(x, ...) if (length(fn(x0)) != 1) stop("Function 'f' must be a scalar function (return a single value).") n <- length(x0) hh <- gr <- rep(0, n) for (i in seq_len(n)) { hh[i] <- heps gr[i] <- (fn(x0 + hh) - fn(x0 - hh)) / (2 * heps) hh[i] <- 0 } gr } #' @export nl.jacobian <- function(x0, fn, heps = .Machine$double.eps ^ (1 / 3), ...) { n <- length(x0) if (!is.numeric(x0) || n == 0) stop("Argument 'x' must be a non-empty numeric vector.") fun <- match.fun(fn) fn <- function(x) fun(x, ...) jacob <- matrix(NA_real_, length(fn(x0)), n) hh <- rep(0, n) for (i in seq_len(n)) { hh[i] <- heps jacob[, i] <- (fn(x0 + hh) - fn(x0 - hh)) / (2 * heps) hh[i] <- 0 } jacob } nloptr/R/mlsl.R0000644000176200001440000001300314636244620013067 0ustar liggesusers# Copyright (C) 2014 Hans W. Borchers. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: mlsl.R # Author: Hans W. Borchers # Date: 27 January 2014 # # Wrapper to solve optimization problem using Multi-Level Single-Linkage. # # CHANGELOG: # # 2014-05-05: Replaced cat by warning. # 2023-02-09: Cleanup and tweaks for safety and efficiency. (Avraham Adler) # Question, should passing a non-Gradient solver fail directly? It will # anyway. (Avraham Adler) # 2024-06-04: Cleaned up the Hartmann 6 example. (Avraham Adler) # #' Multi-level Single-linkage #' #' The \dQuote{Multi-Level Single-Linkage} (\acronym{MLSL}) algorithm for global #' optimization searches by a sequence of local optimizations from random #' starting points. A modification of \acronym{MLSL} is included using a #' low-discrepancy sequence (\acronym{LDS}) instead of pseudorandom numbers. #' #' \acronym{MLSL} is a \sQuote{multistart} algorithm: it works by doing a #' sequence of local optimizations---using some other local optimization #' algorithm---from random or low-discrepancy starting points. MLSL is #' distinguished, however, by a `clustering' heuristic that helps it to avoid #' repeated searches of the same local optima and also has some theoretical #' guarantees of finding all local optima in a finite number of local #' minimizations. #' #' The local-search portion of \acronym{MLSL} can use any of the other #' algorithms in \acronym{NLopt}, and, in particular, can use either #' gradient-based or derivative-free algorithms. For this wrapper only #' gradient-based \acronym{LBFGS} is available as local method. #' #' @param x0 initial point for searching the optimum. #' @param fn objective function that is to be minimized. #' @param gr gradient of function \code{fn}; will be calculated numerically if #' not specified. #' @param lower,upper lower and upper bound constraints. #' @param local.method only \code{BFGS} for the moment. #' @param low.discrepancy logical; shall a low discrepancy variation be used. #' @param nl.info logical; shall the original \acronym{NLopt} info be shown. #' @param control list of options, see \code{nl.opts} for help. #' @param ... additional arguments passed to the function. #' #' @return List with components: #' \item{par}{the optimal solution found so far.} #' \item{value}{the function value corresponding to \code{par}.} #' \item{iter}{number of (outer) iterations, see \code{maxeval}.} #' \item{convergence}{integer code indicating successful completion (> 0) #' or a possible error number (< 0).} #' \item{message}{character string produced by \acronym{NLopt} and giving #' additional information.} #' #' @export mlsl #' #' @author Hans W. Borchers #' #' @note If you don't set a stopping tolerance for your local-optimization #' algorithm, \acronym{MLSL} defaults to \code{ftol_rel = 1e-15} and #' \code{xtol_rel = 1e-7} for the local searches. #' #' @seealso \code{\link{direct}} #' #' @references A. H. G. Rinnooy Kan and G. T. Timmer, \dQuote{Stochastic global #' optimization methods} Mathematical Programming, vol. 39, p. 27-78 (1987). #' #' Sergei Kucherenko and Yury Sytsko, \dQuote{Application of deterministic #' low-discrepancy sequences in global optimization}, Computational #' Optimization and Applications, vol. 30, p. 297-318 (2005). #' #' @examples #' #' ## Minimize the Hartmann 6-Dimensional function #' ## See https://www.sfu.ca/~ssurjano/hart6.html #' #' a <- c(1.0, 1.2, 3.0, 3.2) #' A <- matrix(c(10, 0.05, 3, 17, #' 3, 10, 3.5, 8, #' 17, 17, 1.7, 0.05, #' 3.5, 0.1, 10, 10, #' 1.7, 8, 17, 0.1, #' 8, 14, 8, 14), nrow = 4) #' #' B <- matrix(c(.1312, .2329, .2348, .4047, #' .1696, .4135, .1451, .8828, #' .5569, .8307, .3522, .8732, #' .0124, .3736, .2883, .5743, #' .8283, .1004, .3047, .1091, #' .5886, .9991, .6650, .0381), nrow = 4) #' #' hartmann6 <- function(x, a, A, B) { #' fun <- 0 #' for (i in 1:4) { #' fun <- fun - a[i] * exp(-sum(A[i, ] * (x - B[i, ]) ^ 2)) #' } #' #' fun #' } #' #' ## The function has a global minimum of -3.32237 at #' ## (0.20169, 0.150011, 0.476874, 0.275332, 0.311652, 0.6573) #' #' S <- mlsl(x0 = rep(0, 6), hartmann6, lower = rep(0, 6), upper = rep(1, 6), #' nl.info = TRUE, control = list(xtol_rel = 1e-8, maxeval = 1000), #' a = a, A = A, B = B) #' mlsl <- function(x0, fn, gr = NULL, lower, upper, local.method = "LBFGS", low.discrepancy = TRUE, nl.info = FALSE, control = list(), ...) { local_opts <- list(algorithm = "NLOPT_LD_LBFGS", xtol_rel = 1e-4) opts <- nl.opts(control) if (low.discrepancy) { opts["algorithm"] <- "NLOPT_GD_MLSL_LDS" } else { opts["algorithm"] <- "NLOPT_GD_MLSL" } opts[["local_opts"]] <- local_opts fun <- match.fun(fn) fn <- function(x) fun(x, ...) if (local.method == "LBFGS") { if (is.null(gr)) { gr <- function(x) nl.grad(x, fn) } else { .gr <- match.fun(gr) gr <- function(x) .gr(x, ...) } } else { warning("Only gradient-based LBFGS available as local method. ", "To use another method please use the nloptr interface.") gr <- NULL } S0 <- nloptr(x0 = x0, eval_f = fn, eval_grad_f = gr, lb = lower, ub = upper, opts = opts) if (nl.info) print(S0) list(par = S0$solution, value = S0$objective, iter = S0$iterations, convergence = S0$status, message = S0$message) } nloptr/R/check.derivatives.R0000644000176200001440000001522014636244620015524 0ustar liggesusers# Copyright (C) 2011 Jelmer Ypma. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: check.derivatives.R # Author: Jelmer Ypma # Date: 24 July 2011 # # Compare analytic derivatives wih finite difference approximations. # # Input: # .x : compare at this point # func : calculate finite difference approximation for the gradient of # this function # func_grad : function to calculate analytic gradients # check_derivatives_tol : show deviations larger than this value # (optional) # check_derivatives_print : print the values of the function (optional) # func_grad_name : name of function to show in output (optional) # ... : arguments that are passed to the user-defined function (func and # func_grad) # # Output: list with analytic gradients, finite difference approximations, # relative errors and a comparison of the relative errors to the # tolerance. # # CHANGELOG: # 2013-10-27: Added relative_error and flag_derivative_warning to output list. # 2014-05-05: Replaced cat by message, so messages can now be suppressed by # suppressMessages. # 2023-02-09: Cleanup and tweaks for safety and efficiency (AA) #' Check analytic gradients of a function using finite difference #' approximations #' #' This function compares the analytic gradients of a function with a finite #' difference approximation and prints the results of these checks. #' #' @param .x point at which the comparison is done. #' @param func function to be evaluated. #' @param func_grad function calculating the analytic gradients. #' @param check_derivatives_tol option determining when differences between the #' analytic gradient and its finite difference approximation are flagged as an #' error. #' @param check_derivatives_print option related to the amount of output. 'all' #' means that all comparisons are shown, 'errors' only shows comparisons that #' are flagged as an error, and 'none' shows the number of errors only. #' @param func_grad_name option to change the name of the gradient function #' that shows up in the output. #' @param ... further arguments passed to the functions func and func_grad. #' #' @return The return value contains a list with the analytic gradient, its #' finite difference approximation, the relative errors, and vector comparing #' the relative errors to the tolerance. #' #' @export #' #' @author Jelmer Ypma #' #' @seealso \code{\link[nloptr:nloptr]{nloptr}} #' #' @keywords optimize interface #' #' @examples #' #' library('nloptr') #' #' # example with correct gradient #' f <- function(x, a) sum((x - a) ^ 2) #' #' f_grad <- function(x, a) 2 * (x - a) #' #' check.derivatives(.x = 1:10, func = f, func_grad = f_grad, #' check_derivatives_print = 'none', a = runif(10)) #' #' # example with incorrect gradient #' f_grad <- function(x, a) 2 * (x - a) + c(0, 0.1, rep(0, 8)) #' #' check.derivatives(.x = 1:10, func = f, func_grad = f_grad, #' check_derivatives_print = 'errors', a = runif(10)) #' #' # example with incorrect gradient of vector-valued function #' g <- function(x, a) c(sum(x - a), sum((x - a) ^ 2)) #' #' g_grad <- function(x, a) { #' rbind(rep(1, length(x)) + c(0, 0.01, rep(0, 8)), #' 2 * (x - a) + c(0, 0.1, rep(0, 8))) #' } #' #' check.derivatives(.x = 1:10, func = g, func_grad = g_grad, #' check_derivatives_print = 'all', a = runif(10)) #' check.derivatives <- function(.x, func, func_grad, check_derivatives_tol = 1e-04, check_derivatives_print = "all", func_grad_name = "grad_f", ...) { analytic_grad <- func_grad(.x, ...) finite_diff_grad <- finite.diff(func, .x, ...) relative_error <- ifelse(finite_diff_grad == 0, analytic_grad, abs((analytic_grad - finite_diff_grad) / finite_diff_grad)) flag_derivative_warning <- relative_error > check_derivatives_tol if (!(check_derivatives_print %in% c("all", "errors", "none"))) { warning("Value '", check_derivatives_print, "' for check_derivatives_print is unknown; use 'all' ", "(default), 'errors', or 'none'.") check_derivatives_print <- "none" } # determine indices of vector / matrix for printing # format indices with width, such that they are aligned vertically if (is.matrix(analytic_grad)) { indices <- paste(format(rep(seq_len(nrow(analytic_grad)), times = ncol(analytic_grad)), width = 1 + sum(nrow(analytic_grad) > 10 ^ (1:10))), format(rep(seq_len(ncol(analytic_grad)), each = nrow(analytic_grad)), width = 1 + sum(ncol(analytic_grad) > 10 ^ (1:10))), sep = ", ") } else { indices <- format(seq_along(analytic_grad), width = 1 + sum(length(analytic_grad)) > 10 ^ (1:10)) } # Print results. message("Derivative checker results: ", sum(flag_derivative_warning), " error(s) detected.") if (check_derivatives_print == "all") { message("\n", paste0(ifelse(flag_derivative_warning, "*", " "), " ", func_grad_name, "[", indices, "] = ", format(analytic_grad, scientific = TRUE), " ~ ", format(finite_diff_grad, scientific = TRUE), " [", format(relative_error, scientific = TRUE), "]", collapse = "\n"), "\n\n") } else if (check_derivatives_print == "errors") { if (sum(flag_derivative_warning) > 0) { message("\n", paste0(ifelse(flag_derivative_warning[flag_derivative_warning], "*", " "), " ", func_grad_name, "[", indices[flag_derivative_warning], "] = ", format(analytic_grad[flag_derivative_warning], scientific = TRUE), " ~ ", format(finite_diff_grad[flag_derivative_warning], scientific = TRUE), " [", format(relative_error[flag_derivative_warning], scientific = TRUE), "]", collapse = "\n"), "\n\n") } } else if (check_derivatives_print == "none") {} list("analytic" = analytic_grad, "finite_difference" = finite_diff_grad, "relative_error" = relative_error, "flag_derivative_warning" = flag_derivative_warning) } nloptr/cleanup0000755000176200001440000000014314636312376013156 0ustar liggesusers#! /bin/sh rm -fr src/nlopt src/Makevars src/*.o src/*.so autom4te.cache config.log config.status nloptr/vignettes/0000755000176200001440000000000014636312376013613 5ustar liggesusersnloptr/vignettes/nloptr.Rmd0000644000176200001440000003406314636244620015577 0ustar liggesusers--- title: "nloptr" author: "Jelmer Ypma, Aymeric Stamm, and Avraham Adler" date: "`r Sys.Date()`" output: rmarkdown::html_vignette bibliography: reflist.bib nocite: | @NLopt:website vignette: > %\VignetteIndexEntry{nloptr} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r setSweaveOptions,echo=FALSE} # have an (invisible) initialization noweb chunk # to remove the default continuation prompt ">" options(continue = " ") options(width = 60) # eliminate margin space above plots options(SweaveHooks = list(fig = function() par(mar = c(5.1, 4.1, 1.1, 2.1)))) ``` This document is an introduction to `nloptr`: an R interface to NLopt. [NLopt](https://nlopt.readthedocs.io/en/latest/) is a free/open-source library for nonlinear optimization, started by Steven G. Johnson, providing a common interface for a number of different free optimization routines available online as well as original implementations of various other algorithms. The NLopt library is available under the GNU Lesser General Public License (LGPL), and the copyrights are owned by a variety of authors. This package should be considered in beta and comments about any aspect of the package are welcome. This document is an R vignette prepared with the aid of `knitr` [@Xie:2014; @Xie:2015; @Xie:2016]. Financial support of the UK Economic and Social Research Council through a grant (RES-589-28-0001) to the ESRC Centre for Microdata Methods and Practice (CeMMAP) is gratefully acknowledged. ## Introduction NLopt addresses general nonlinear optimization problems of the form: $$ \begin{aligned} &\min_{x \in R^n} f(x) \\ s.t.& g(x) \leq 0 \\ & h(x) = 0 \\ & x_L \leq x \leq x_U \end{aligned} $$ where $f(\cdot)$ is the objective function and $x$ represents the $n$ optimization parameters. This problem may optionally be subject to the bound constraints (also called box constraints), $x_L$ and $x_U$. For partially or totally unconstrained problems the bounds can take values $-\infty$ or $\infty$. One may also optionally have $m$ nonlinear inequality constraints---sometimes called a nonlinear programming problem---which may be specified in $g(\cdot)$, and equality constraints which may be specified in $h(\cdot)$. Note that not all of the algorithms in NLopt can handle constraints. This vignette describes how to formulate minimization problems to be solved with the R interface to NLopt. If you want to use the C interface directly or are interested in the Matlab interface, there are other sources of documentation available. Some of the information here has been taken from the NLopt website, where more details are available. All credit for implementing the C code for the different algorithms available in NLopt should go to the respective authors. Also, please see the [website](https://nlopt.readthedocs.io/en/latest/Citing_NLopt/) for information on how to cite NLopt and the algorithms you use. ## Installation This package is on CRAN and can be installed from within R using ```{r installNLopt, eval=FALSE} install.packages("nloptr") ``` or ```{r installNLoptSource, eval=FALSE} install.packages("nloptr", type = "source") ``` to install the package from source. You should now be able to load the R interface to NLopt and read the help. ```{r testNLoptInstallation, eval=FALSE} library("nloptr") ?nloptr ``` The most recent experimental *source* version of `nloptr` can be installed from Github using the `remotes` package: ```{r installNLoptGithub, eval=FALSE} # install.packages("remotes") remotes::install_github("astamm/nloptr") ``` ## Minimizing the Rosenbrock Banana function As a first example we will solve an unconstrained minimization problem. The function we look at is the Rosenbrock Banana function: $$ f(x) = 100 \left(x_2-x_1^2\right)^2 + \left(1-x_1\right)^2, $$ which is also used as an example in the documentation for the standard R optimizer `optim`. The gradient of the objective function is given by: $$ \nabla f(x) = \left(\begin{array}[1]{c} -400 \cdot x_1 \cdot (x_2 - x_1^2) - 2 \cdot (1 - x_1) \\ 200 \cdot (x_2 - x_1^2) \end{array} \right). $$ Not all of the algorithms in NLopt need gradients to be supplied by the user. We will show examples with and without supplying the gradient. After loading the library. ```{r loadLibrary} library(nloptr) ``` We start by specifying the objective function and its gradient: ```{r defineRosenbrockBanana} ## Rosenbrock Banana function eval_f <- function(x) { 100 * (x[2] - x[1] * x[1]) ^ 2 + (1 - x[1]) ^ 2 } ## Gradient of Rosenbrock Banana function eval_grad_f <- function(x) { c(-400 * x[1] * (x[2] - x[1] * x[1]) - 2 * (1 - x[1]), 200 * (x[2] - x[1] * x[1])) } ``` We define initial values ```{r setRosenbrockBananaInitialValues} # initial values x0 <- c(-1.2, 1) ``` and then minimize the function using the `nloptr` command. This command runs some checks on the supplied inputs and returns an object with the exit code of the solver, the optimal value of the objective function and the solution. Before we can minimize the function we need to specify which algorithm we want to use ```{r setRosenbrockBananaOptions} opts <- list("algorithm" = "NLOPT_LD_LBFGS", "xtol_rel" = 1.0e-8) ``` Here we use the L-BFGS algorithm [@Nocedal:1980; @LiuNocedal:1989]. The characters `LD` in the algorithm show that this algorithm looks for local minima (`L`) using a derivative-based (`D`) algorithm. Other algorithms look for global (`G`) minima, or they don't need derivatives (`N`). We also specified the termination criterium in terms of the relative x-tolerance. Other termination criteria are available (see Appendix `\ref{sec:descoptions}` for a full list of options). We then solve the minimization problem using ```{r solveRosenbrockBanana} # solve Rosenbrock Banana function res <- nloptr(x0 = x0, eval_f = eval_f, eval_grad_f = eval_grad_f, opts = opts) ``` We can see the results by printing the resulting object. ```{r printRosenbrockBanana} print(res) ``` Sometimes the objective function and its gradient contain common terms. To economize on calculations, we can return the objective and its gradient in a list. For the Rosenbrock Banana function we have for instance: ```{r defineRosenbrockBananaList} ## Rosenbrock Banana function and gradient in one function eval_f_list <- function(x) { common_term <- x[2] - x[1] * x[1] list("objective" = 100 * common_term ^ 2 + (1 - x[1]) ^ 2, "gradient" = c(-400 * x[1] * common_term - 2 * (1 - x[1]), 200 * common_term)) } ``` which we minimize using ```{r solveRosenbrockBananaList} res <- nloptr(x0 = x0, eval_f = eval_f_list, opts = opts) print(res) ``` This gives the same results as before. ## Minimization with inequality constraints This section shows how to minimize a function subject to inequality constraints. This example is the same as the one used in the tutorial on the NLopt website. The problem we want to solve is: $$ \begin{aligned} &\min_{x \in R^n} \sqrt{x_2} \\ s.t.& x_2 \geq 0 \\ & x_2 \geq (a_1 x_1 + b_1)^3 \\ & x_2 \geq (a_2 x_1 + b_2)^3, \end{aligned} $$ where $a_1 = 2$, $b_1 = 0$, $a_2 = -1$, and $b_2 = 1$. In order to solve this problem, we first have to re-formulate the constraints to be of the form $g(x) \leq 0$. Note that the first constraint is a bound on $x_2$, which we will add later. The other two constraints can be re-written as: $$ \begin{aligned} (a_1 x_1 + b_1)^3 - x_2 &\leq 0 \\ (a_2 x_1 + b_2)^3 - x_2 &\leq 0 \end{aligned} $$ First, define R functions to calculate the objective function and its gradient: ```{r defineTutorialObjective} # objective function eval_f0 <- function(x, a, b) { sqrt(x[2]) } # gradient of objective function eval_grad_f0 <- function(x, a, b) { c(0, 0.5 / sqrt(x[2])) } ``` If needed, these can of course be calculated in the same function as before. Then define the two constraints and the Jacobian of the constraints: ```{r defineTutorialConstraints} # constraint function eval_g0 <- function(x, a, b) { (a * x[1] + b) ^ 3 - x[2] } # Jacobian of constraint eval_jac_g0 <- function(x, a, b) { rbind(c(3 * a[1] * (a[1] * x[1] + b[1]) ^ 2, -1.0), c(3 * a[2] * (a[2] * x[1] + b[2]) ^ 2, -1.0)) } ``` Note that all of the functions above depend on additional parameters, `a` and `b`. We have to supply specific values for these when we invoke the optimization command. The constraint function `eval_g0` returns a vector with in this case the same length as the vectors `a` and `b`. The function calculating the Jacobian of the constraint should return a matrix where the number of rows equal the number of constraints (in this case two). The number of columns should equal the number of control variables (two in this case as well). After defining values for the parameters ```{r defineTutorialParameters} # define parameters a <- c(2, -1) b <- c(0, 1) ``` we can minimize the function subject to the constraints with the following command: ```{r solveTutorialWithGradient} # Solve using NLOPT_LD_MMA with gradient information supplied in separate # function res0 <- nloptr(x0 = c(1.234, 5.678), eval_f = eval_f0, eval_grad_f = eval_grad_f0, lb = c(-Inf, 0), ub = c(Inf, Inf), eval_g_ineq = eval_g0, eval_jac_g_ineq = eval_jac_g0, opts = list("algorithm" = "NLOPT_LD_MMA", "xtol_rel" = 1.0e-8, "print_level" = 2, "check_derivatives" = TRUE, "check_derivatives_print" = "all"), a = a, b = b) print(res0) ``` Here we supplied lower bounds for $x_2$ in `lb`. There are no upper bounds for both control variables, so we supply `Inf` values. If we don't supply lower or upper bounds, plus or minus infinity is chosen by default. The inequality constraints and its Jacobian are defined using `eval_g_ineq` and `eval_jac_g_ineq`. Not all algorithms can handle inequality constraints, so we have to specify one that does, `NLOPT_LD_MMA` [@Svanberg:2002]. We also specify the option `print_level` to obtain output during the optimization process. For the available `print_level` values, see `?nloptr`. Setting the `check_derivatives` option to `TRUE`, compares the gradients supplied by the user with a finite difference approximation in the initial point (`x0`). When this check is run, the option `check_derivatives_print` can be used to print all values of the derivative checker (`all` (default)), only those values that result in an error (`errors`) or no output (`none`), in which case only the number of errors is shown. The tolerance that determines if a difference between the analytic gradient and the finite difference approximation results in an error can be set using the option `check_derivatives_tol` (default = 1e-04). The first column shows the value of the analytic gradient, the second column shows the value of the finite difference approximation, and the third column shows the relative error. Stars are added at the front of a line if the relative error is larger than the specified tolerance. Finally, we add all the parameters that have to be passed on to the objective and constraint functions, `a` and `b`. We can also use a different algorithm to solve the same minimization problem. The only thing we have to change is the algorithm that we want to use, in this case `NLOPT_LN_COBYLA`, which is an algorithm that doesn't need gradient information [@Powell:1994; @Powell:1998]. ```{r solveTutorialWithoutGradient} # Solve using NLOPT_LN_COBYLA without gradient information res1 <- nloptr(x0 = c(1.234, 5.678), eval_f = eval_f0, lb = c(-Inf, 0), ub = c(Inf, Inf), eval_g_ineq = eval_g0, opts = list("algorithm" = "NLOPT_LN_COBYLA", "xtol_rel" = 1.0e-8), a = a, b = b) print(res1) ``` ## Derivative checker The derivative checker can be called when supplying a minimization problem to `nloptr`, using the options `check_derivatives`, `check_derivatives_tol` and `check_derivatives_print`, but it can also be used separately. For example, define the function `g`, with vector outcome, and its gradient `g_grad`: ```{r derivativeCheckerDefineFunctions} g <- function(x, a) { c(x[1] - a[1], x[2] - a[2], (x[1] - a[1]) ^ 2, (x[2] - a[2]) ^ 2, (x[1] - a[1]) ^ 3, (x[2] - a[2]) ^ 3) } g_grad <- function(x, a) { rbind( c(1, 0), c(0, 1), c(2 * (x[1] - a[1]), 0), c(2 * (x[1] - a[1]), 2 * (x[2] - a[2])), c(3 * (x[1] - a[2]) ^ 2, 0), c(0, 3 * (x[2] - a[2]) ^ 2) ) } ``` `a` is some vector containing data. The gradient contains some errors in this case. By calling the function `check.derivatives` we can check the user-supplied analytic gradients with a finite difference approximation at a point `.x`. ```{r derivativeCheckerPrint} res <- check.derivatives( .x = c(1, 2), func = g, func_grad = g_grad, check_derivatives_print = "all", a = c(0.3, 0.8) ) ``` The errors are shown on screen, where the option `check_derivatives_print` determines the amount of output you see. The value of the analytic gradient and the value of the finite difference approximation at the supplied point is returned in a list. ```{r derivativeCheckerResult} res ``` Note that not all errors will be picked up by the derivative checker. For instance, if we run the check with `a = c(.5, .5)`, one of the errors is not flagged as an error. ## Notes The `.R` scripts in the `tests` directory contain more examples. For instance, `hs071.R` and `systemofeq.R` show how to solve problems with equality constraints. See the [NLopt website](https://nlopt.readthedocs.io/en/latest/NLopt_Algorithms/#augmented-lagrangian-algorithm) for more details. Please let us know if there are any of features implemented in NLopt which should be implemented in `nloptr`. Sometimes the optimization procedure terminates with a message `maxtime was reached` without evaluating the objective function. Submitting the same problem again usually solves this problem. ## Description of options ```{r printAllOptions} nloptr::nloptr.print.options() ``` ## References nloptr/vignettes/reflist.bib0000644000176200001440000000454514636244620015745 0ustar liggesusers@MISC{NLopt:website, author = {Steven G. Johnson}, title = {The {N}{L}opt nonlinear-optimization package}, url = {https://nlopt.readthedocs.io/en/latest/} } @inproceedings{Powell:1994, author = {M. J. D. Powell}, title = {A direct search optimization method that models the objective and constraint functions by linear interpolation}, booktitle = {Advances in Optimization and Numerical Analysis}, editor = {S. Gomez and J.-P. Hennart}, publisher = {Kluwer Academic, Dordrecht}, pages = {51--67}, year = {1994} } @article{Powell:1998, author = {M. J. D. Powell}, title = {Direct search algorithms for optimization calculations}, journal = {Acta Numerica}, volume = {7}, pages = {287--336}, year = {1998} } @article{Svanberg:2002, author = {Krister Svanberg}, title = {A class of globally convergent optimization methods based on conservative convex separable approximations}, journal = {SIAM J. Optim.}, volume = {12}, number = {2}, pages = {555--573}, year = {2002} } @article{LiuNocedal:1989, author = {D. C. Liu and J. Nocedal}, title = {On the limited memory {B}{F}{G}{S} method for large scale optimization}, journal = {Math. Programming}, volume = {45}, pages = {503--528}, year = {1989} } @article{Nocedal:1980, author = {J. Nocedal}, title = {Updating quasi-{N}ewton matrices with limited storage}, journal = {Math. Comput.}, volume = {35}, pages = {773--782}, year = {1980} } @Manual{Xie:2016, title = {knitr: A General-Purpose Package for Dynamic Report Generation in R}, author = {Yihui Xie}, year = {2016}, note = {R package version 1.14}, url = {https://yihui.org/knitr/}, } @Book{Xie:2015, title = {Dynamic Documents with {R} and knitr}, author = {Yihui Xie}, publisher = {Chapman and Hall/CRC}, address = {Boca Raton, Florida}, year = {2015}, edition = {2nd}, note = {ISBN 978-1498716963}, url = {https://yihui.org/knitr/}, } @InCollection{Xie:2014, booktitle = {Implementing Reproducible Computational Research}, editor = {Victoria Stodden and Friedrich Leisch and Roger D. Peng}, title = {knitr: A Comprehensive Tool for Reproducible Research in {R}}, author = {Yihui Xie}, publisher = {Chapman and Hall/CRC}, year = {2014}, note = {ISBN 978-1466561595}, url = {https://www.routledge.com/Implementing-Reproducible-Research/Stodden-Leisch-Peng/p/book/9781466561595}, } nloptr/src/0000755000176200001440000000000014636312375012371 5ustar liggesusersnloptr/src/nlopt-src.tar.gz0000644000176200001440000763122414212117405015443 0ustar liggesusers$anlopt-src.tarD uȩD~vgN:POn2 [S- ]$Ŝ/00ies @S5C0 q4mr0Ita@hi(3 II/C=iLo <3NnwLX4gJ#HGye܈v|>{8k }6tv /R oq4wKDA'(6ǣ\5P^cW&ӤBZԩ,/EB!@r7Pj6EkmJS#O[9 p>S4#`\N .e1<&uvꃾ D9biyNA`mOiDA1(3#k9s[`Ѡ3&$Yc߽lmL6jCA}8[huZhD{s*dr9@GPmt#Y3w]E?X{@=i5UP~.,י~v{ K=j}М4Җ'HSMC=k՛@%X Q\ׯmBX PFCcE=dlh=Ȼ)CmB-4~0Gjbي^% Ckd[x.13C X , W _|#hj98/R(\F\DR/RU2oq-Z#Ä(D9³Y iΜ2/` PUuϊ)_?4h:?>|Kro_?Lː;{K7_|H9$^̶A#>| V< vƑFK )x x+B*$ hpH4U}Fk&-c ɿW.@V4$"L&<^Š738ޜLauLzn5{c NWTڕԐM׸Oȷ$ө1LOCdҸˏ|&Xe,),+{~}Dԇyp|^9O˭跗a:L^QfԲal3KEzV,ZpF\Z|#À' Uǚ1-#nʼ;zaUTyjhy#JQ /A$ݵK|~(cHcّAo_- LrTƅt+РhNv4~FdҠbY  X6ML-] /NHa(˹5|YS9/l"nގ)Ar5ܲͶ /9}Dˍ- @ny ЂjkNY 1 6s܀̞T#ZD8oKb.Yb&<u,|~X(+ֺma wa Hl"q|X`+2V䤏 J? șFޣ,;8}%=],umgN!WO| Ol'/ު6PԎlvBa0R'CiNHfD|Hn7EU80dQoO"Ebna\`I hDPLJ|,^D]`#]R6W|]JM/ֲբ\Wr0KIqբ8\kP ÑBeq,"ғs;Rȣ,Spؽ3DJb8(f1h,cČ#3g3ş,0RT{ VRz8d#UHx d+V7N9j?j ڔ<4|%.E떗ڊM}|+v89Yથ&+2q$i~:ȏaHǫ- :C?ix?;N}= hA:JL~wqgpN_Ft x ۋj'hN[|g,$+W ˹mF;Dm] \my"ZI-.),j#akV&&̱ǧa*ebF&ڦNcޕŵ}u:f,n>4ǵe̍wk%s3m9g)blk/b|{\f \K>fN1F΃M1j XODTv!)72S_vuP\{aWvnco&muWEw`qř\dXRN/L"f?}pRpDз 8xCSq/[Iߗܻқ۽_FCv~ HlJ׿,Q6LFܿ` d^ ٛT`3GqlfFUIE27xVzmNKkq"vҝ_ZU [G/+ T1Q}@aoP?mq |7f]P*{<{4 $.b`%BX6!qKKiht Hf#y +@ww*4*{@`u:Y]AlZ詂%ٿx lwkt>إTevZ_D|Imi$&Vy سdZ*J jk02o@ w휭J,J(#8 n-,dzybW0h0;mÕ"˭F5ۚȝN)ÔX<]OSA2p{*t@3!ܡIѠy0Z٬s >DB2C/:EUJn+󶋁4ԡ˨,H=jm%u [c8hq^Gm˃CX*V#h *[jEA'I<hXB4}}oޗ,&^8X K^QBX–'6GHYPt䄹, 9X`5h!dZ-{-8 ug{g' ;eGZMF q3Igr ?{/ JscY>VgJ;&>ĀslJi2?8}J?ڞdBKؐAE\U+s,Q_ eFr}+d#Pzrt'*›ڍQNeトnFPrR}QĹ(F2XzI*axB]K(aMD4KgZ*5Co-&`j9O:zl'}^bcRqى!ݾj-(qj=")=ҧdhVr qضE,y͑_A7":_ۻw;")oВYABمqxkPIk]ݽtImʄRSil͊k5 %=Ҋ@ V /*MOSD]dqhz+Z+vA['yـ{eat{QkI^γfy<#R a9C$VRm[Qan\]*:mءa Fp[+eaGU20_ʶŸ_MїfXuR˩SZ9__Zx8fmЂXONN%|U{N=|].]oVwN0kj>>h0_B4)/7 f&#ݞ ,PڰA}ic2q]|֕ag/v|{ 2n)fH.G4֖>qhI.x A1H U涷oSN#*gqJa`ݸ(/c[Ifۡ\1S^2 f0Y3#oմE Ф#U-s &1HRw+Zj{+Q]ztw!q3rީ]"ViS=g0ˬՉOp|>QOnE~ [|V9#njh(d0#х1j?v[;!c  bt "(qʂ T,xHi堬rKBt< v'/Gs_T3Ł|wlo2B +# Ä69Qzu QjXdljl9,D{9iAA`0yG^ڝVna n_o.^?1ŗ2w%w*'U4.8O\/C˝POS?c~\ : S)A'`H^ sB-89<:<1^:=^:}yrvSy);Lz={cРid=?9Bu wt[ &w{Nj@+ѽ~~@]G.d&{'UU}}xvP;yzzrBjp+Ԟ#P:;0c?="6lL!R_َKF㟯n8},/?!EX߯Sz!sc kn= Rbۛknc O9Kl{x`=GoQx 76F K>|g?.(_ZYO]ݨ}=_9;ÐJ|N4#r>?8?Rwl'Wajk__gxzL0ga~s=rzKZyŤ\w%m/[1 pj~H/.vKRjyԶ!dNvuc˭9o/P]j:|zECYZ)0*p [*/sɼO-su; j{/~ q?v.9!4JO9J!*@K$qpdQV<,%f!|_TJ2[yoC d `䲁Q1./aֺ^^8` ק^-?sLlcdA,=򪙮Yғ^Mkk_| S1M98".CsX.e9ecH87pFX|)qXt%9jNJߔ8GQU8鎭ڼԦD fL?̨zz:nrԉትWBnjn s]k[ŝx8,N0 [02V벾 (ú} iQ͊X)~zrr)J40@B+e蔀6 *AHOT;"C䱬ϴ&`YmgxN^|0%I~.1dz7vI7 z=4NكiσxBe˙02ſhDX) "XtW|Z< r.))s 3~.NE1dBLC+렃NmJF0܁p `@OZ@R"[!3hĶasu;ʲƠJ`L## Y'd1JrɊ7{ӫ3C>=b48jq{=8`I;7Ys(ʀDZĞ>~/6MI>?<6@yY76 -:G1U!dƑJlN,bJj6V*4UN32/9؟ebzV>9L}qN, 蝽<;@ /Jg Ke0X`9>w=9E{&0:F`vWgvD㜾z[ƹ UecOi°P'dmcp;9 LgG69_,wMS`hOp6;|pg4t{er^ A8@ot&37s<r\E1b%T8T *@j&3*e˱^"" 4/vc. xrd1Hs_59),3P,9d "*HJ) s&ڬjPO^$$Nfa0B!Z5^?SJ~P$%r_E50l' &x)ʳ/?X@UY1ӿ߸9}ƬYqbs6gd-K>tE>Tq͋JF)-3Nyi[)qurwof^oa 2iDczN"sj?UB ?s"s?|()1¹L`f 6YGc2s$Ydݳ*%%9O8/ϭjC3LݦS}l$J!^n,blZ%TqfWd\t:GD>ղ+}uL89{cž'H0CZh}g$бaMe>MLMrlaU;=Xr&6xڻH[Pn W.56y&MHn=5 Ap+x =M:Y:.[9Yb f[t4!iR!-?{yKeYK9:rI]N/0!N\Ru/9:ge\1lC[6`R ^;C,Cid!U ͠60е?hqeΛAgsnY719\&4UԒV̢(\/_9~ ;ܾAiX_-}oOVݨ$?6k_ )I( k lPЊpS8͉s?zD}:EM>=T{h?|/}?8,7qمoiiKO&*YYjYd|aiI'f))а%8A&/`OPe=E(+ كX/KfK ߷_Y@Q__*I|O$5?%]>)xKYO>gwi|R5; ?G Q Bvw?(;Zjk_?' [#H f65$BG!)'$Džnmv72["ԑ M"I "eTO =&_LuΓNQ+,`8*+lCGq( 2gM.89E 0rMtm 6a?T`:K0԰ մf-3/'?~vXb=-zǜ$@`qP-RLwH-t"ʁV*i^R+0,%L]aJq ' ʖ-1hOť)ƤAɭ45pίx^I 'J),kaDH/8na Wǒ9ȦONGG'm.y$H@J_'Zܙ/ ui8@>eS_a/N 2$xiVZB0{;np7L.QM^yQo&>N{&?2 tPC2eOfIt;Ix݂]zIMNHy6rJWlQblz+H; /G-9fX31Kl }ύqUցKKDy|! d6ŇaQRP|5+rEV*a~IX&skMvp~@ᚹcݽsQڟon/eZM=_7rf0wvS¶U/ v;}ܞG1!Fz (It@Aڄ=؆d-9P:;=|y~FT9Ǣ,QrdHvLSx 0S% +Jr؁L^KVaZ*llRu/RJr*jA4">\F;骂%OK;%IJPntH.%n`"Krj|7If)q}OQj !, (2[+7~crnּʩ8fd:]!6 zhjJax`©Ok=fC9 CIp{}.I=|,|1%lrH-IHcuSExvpw-+3^UlR!)B~<<;'j"=+2R]8ܶ򖞒WdnxG)P)Xr@0ZS2,XBH%uU hpxMb#˦Gȑ3ں#pZ=[B|/̽`jNJtĢ]bw&h7b4a~בMfȳ5#ϻvR|i9ɠjT{5-O[&t̠D4mD*R=~je#{5Wá=@b .T~Ɨ/9wc:ţ1)UQctpy)^0( -F>[PD|3%N cx~ooEuśܐV,91#K4u %y:{$s) -aq2a;E+[%SuKksɒLOT_52 75,vvRP4!k~054RU;](<#`oRs!Qy)MZQg;&KϪ ޟ70oYҧz~2㫾.K&۵iv Kp%x&lf"O=&-֞L{./Ζ~TyLK;4 IolmBy׀fiVl(3~W~>(L? Q]ۨbjuVOW?B۞|9^gW]P1/9%i k4$ޒ.o?+v]oyIӒ\JKbx; / &m %G^wG?ENocCW:0X*V}çL =rb!81xdx8#^?nqQY%;wp-Zy{N-yv-Jz8~ 37 V\\[wtz?{}LÙʋl߄W٫ cmk8s{Yyw,nM%IiKtĔ$^Byx;{?ԱKھYSmO[(@t2{ 9ϣ'=e=hL|P [8Ut F4maqۻFma(=,<`׏gPc6m,c$6i *>J4N8E[VG^MO7~qfk٤]wfgY^9f9PjR.&~<ݪI"fj0S$R_5bx1v$q`kՔV[*?b pSdo/_P5%1H^VF qp7ь4` ^S5LL_YO- ߢ<>=F F{Hyx^ n%EzE7Bg8=k'=*eΊNQ (.֖=U`aY_g5D c vvmG(ٕ*pZ}xvChY)È7޸\)]7`\VVWTc" H#LBpTc9\Vuؓ`^6*QМIk\6VQiU$[;*z<J0xs9n4d4$q Pv@ʥJ;:V[y.v\<*nns^4QG޺(\$_uHsɠV1r `=ʋ9foW=_?l|aUy^L-PA.|vG@?}[*lͻMZ-pqzy9+#LI8E!bU {& L8hxW-8BR)-mQJ;pP_l# V=W_6j/g poMzᏞtK P7 t.x'zmÃw^O)em {ip=\|)tN]L ˜x"N~.Q/R!9*:\kAյW'q"{Lˋ٪ޔiwAy!w[ 5J@y$ s T zE 듬d %}~IZ'sk4Ѕ3 TEıX;ǜޞu՘.!1T1b씄}*1xBU) PR[oix:ũ70m89 g"~R%JΚf~T{״CVS~n}ezj+?_Yτ:zg-J2*mwF[w XRҁ1Sɏ_:~uvW$_r㰭 wG`5ٚMwrsLw4e:DO> /17 PniQ}1=zR]jl+l&4Xc_6xo.I=(J˓bn *tIGN/B͓y%]ZuN݂zZI6¦t5o\۬W7ꕍ:-C ֽjmuccckUTUZ+بWWk[5 ;*Es+˟g%D#Ak6 2

v2lVj\҆*CEZק˙Nn B5B*LfJOs UaR*z[(wݚuVtU-E?.Hno f0 6U}h$oU y-}Z^,k*%ƺhETZcU~ʺ~^Uja5UQT-w T՚#ou{"nϵd[،O5" az/KmUϋƒ4z-UjQ7ĪY8ExUNZ6qdx9a]ݴVꑷAaU`^,*IT[Ld3[A""iuʳy HUl==~'5zV֨LjJ-WkrM=f|y]Нkkʱ M#HPFPPS^SmMDhq7;\Ņ > "$)WiC8I.F"Bu 5]XPSpD`e$ݐ~Ixĭ|$*:+qG}%YSIkIyɿ;LtW0BeT7k{Wmgz5Fm!mon+Qْ/k7VUi}mU_S [f 7( 0ZUaȣ~mYQ¥`] f kyI8եp<Ā/ 'p|[2vnrVAx Y!Jh5:tQk)sЖ07cM|YX"&h KkO=[$Xut_w pz5~sxlZ0DB^VJ|l+6-^&3drc:]N2pL#"TLCx./%1ftsGSZ%&B HUh. Eiv("0Wp-JTlMөıqS#1FqZ\½ ☴.9<s!-6NE~й {5mpeBm"52 'IxpK\WV0>V~Y\ K6k͚r?LE/"3}rzp >iƈ:sf.Ƣp;|卍յ -:~{q0 =TaZB}:B!. H3\V 2U2f=ݟ]=A5&P'FRGIj5a$Yv$љ}?ORa$ŝT-+*Ů֪5j3#Qr)8,@+.gL"E.C$ynZB#p Ԫ~f(wd2SyB} f4Fk'2AU9RTQ0I@ʓBhfq',*Z\l؉N&iXcZs]C55H%7Ǟ hG+YXDzhn%[eeLೝe4>q P1{}SPJM>A:}Z]H#(aWRun@UTVU2*Y+#kvC͚Pekm +|7+NCku:7ZIXMTqk!ީ &Kim9un@j*#tdU&?(N*CctS/ȀFd<Ύtu/e<QGR[ȣat/Yҙx1ٵՃ#i3+§]9fzp~$5Ja/kY#(~0% vNS'%eagD!%l+ջ*zWQ3KecVVI<[YE͵D-gζXz;~ut$A&6PR-w scF^v+nwRV^ն֠=*ҸY]֥˳h;,]'$g~O)%}u, œ'^4^ EEO 766W׷6`/@z36Llebo/m P6:i )#be)< %JFY`=^4UiMNAT1rp8c^Z߄Ϩ`Յ&]TZY۰X֒ݮzجV+~Zi՛(j+ezUfd{ǫ tfu{ѝPjFj^~g}~sY_FRPYHRm|U@d8 =l1c-5W*zZ/0̚+zbR&u{|&uIG+H^k1Eg):5szy։GjkIzђ>zmuksQHwDi1cpPzymU=2DgoDYE-*Z( dj_\σK݋w<=K!h-Q fIԠJY$VAԲs=khHM깯V˵MՍc9sOhҿtg uGF*O{'x [wń0Kx(Y tHdQֵ|.W\`"v>)jTPH̨PK0`J.7[.g ^}Vvb`ҹi/Y/o+ߦx|>k3zg`biLnĨObT9*tMjT!֓m*p T <j`Pdbd敼?xV.zF>\TplӅfYhZ$P'z85ݽZZc$qfY+R(jxgvU6bG]}F@t;t̩œjNcьm! .c}o.ϊFŋʕ7!7/jp~\AH'Uk!&@2v&5AM1Eü9/t3]6Ⱦagm3\:MؘW?=c}(=MDMӬ |jĸq :c7 S{}QWBe$SFlG|B)[ۅBbim=n,tYJx2xٗg5)+q,dMQau(ׯNvON^頹ӊ; )8-OS@KFw/~= 7d[§ւ˛095( L,y~Nגg8\eۘ -/qYkIH{ @]e;Уf&jff&keRƚj P0{&av fl /JJ*t4zĹ3)D(1R8)J؂!NeG]t1~/Q| K* &}6F؏1_IØCJ%k}}^( 4R0>ãW|LfJ0e%s6_z M01`[aX4t[H ~@QV+K 6^@0S;hV }]jӮߊTLVWjeuv;Ժ_x^yT?n_幛i;A~Fn{4|slMO@%?}ʲ oG˷ (i(6x/8W i.5PzQ/y9 F0Ƴ녱w-^@pT}."?p Q 90,<;GYxvCړ>0>nHkW6t& U'{^8O"Q8TnEU*<(` R1 S:a4! 0*b3;h+„V\6hfT:VcY1*SD|)RF=Tb2|[6:1Xʼnf;4ܔly_0-\rߚGmшMN;;yzz;<^p-w_??yuA󟼓O?qɩw~;<;zx{UOν )@ʋӽdOE16^:=^:}yrvNJ'LJOOey?u qJ;yyO'G!LphE}*@CTL=.w1Kwr|~ O0s]A==B ܗS,KUn4jC;Sp* H(l5%ZF8IIV@PMr'K9tw5>A?f`>~{p䋳d u,71ɴb4/t},j&967Gm̼7@h7e`ٚk ITa}X+262MJ$VC-z31 I?.xܨqJAPHB:PRkQ -@xՅF22M~&sݤmviiIK@+ l[ӻ\L/!]BR2I0>!mu0Ck{/23nEҧQ9i&<җ6gZ+?θU cY7uʫ8;$kMz|Y:D{xGD(c-vO[cUcy%zS|Y'l`ɐ#|~lPGdj:!*WiIc^"{P g͐-j1TLGR#͛hsE\q^FSvEφ7Z~$FaYYx`keT}"Ԁ柟_1zobҘ0+,& NU&F߼K+ ݉#[]f I\wy+ &ĝbv^]7UZ8Y}VKB`;vR.Ew(ӻ(^8(HSX>#%odͪJ3O/^N8&ja@M&b3Ϩ鑜X ʳFChA## L\yHFhʊl IImmU/(9̚2z -b;CgnJz]F֕cG&SX^p[fSfLk(#~?NﺉAe}q4MGHcW8:Op%ZӧCʏӳȚU~KX nӻ!6e֢det^׶gLBҍ$ qL(l=.'#x J`[tePf ̪^A(۠^%H!bJUغɬ8Q^+ ;NIvAd2K*UfoENyNV^a8Ȕˬ [qo1P~aVAeф|tCB6x ]spj%"㰿c>piCi\7O^&l |cK"$]Sȩ˸@VNDGQM+δ]4@4U 7Z(D",yޣ=I#нm[Z95aLʦK.ĵIiWU bv,cS-Z&ibzg yE 394`䈌T`(~bm^ ӰRV+we/j}4n<>‡ k#eX[cĩWm[[jHXA0|W ~GT _m۔pV8J3 c9F{*Fp™ë`uk>qx [sX*ϣ&m,Wn;;Pƍn{A$Z;J2tu5$v~v;)&%]H=m1AWjG)GG"nzZONkeNXJ܋@Ql&lRDٶhanc'-W6 la.%("P! ɟ ֮UHY:¶ikJ F$ٔo޿̆l{5NJ,o=&,ҏY-1=[&'iVK4~r=k'kZo"6X[n y2ͥ\10,.:qQ'b bRb&2T8,yE-l!t&vQjsNZQXbB/h=𿶮YKM;J4W.sw MZK?wOl E$Â7n~0:Wha_mOyB=x?AA 嫅Z+:Za>vr_\S O@Ʃ@=,q/2,x}87M2TRUŹZK4uR@yujXMefx˙UVVkU^bVZU;LYWk,ruK%]émT:VYF׫ZymclU\]6&RެW*<۪U lv zuRo4Zu}sUZG8j^^[ߪvu.WV777zƼY8& { 7u38h|Z٢a]jVUz׶lFljreSL ǼZZWq5JTSkkT\-|eV˵5N5qkk\nQMCEˈ}o8Z?WiV7xB#[#Y\`y*BVۀ5)(< T)ogx M:wqJf"0ٔhJ$j"M.V--,$#xW vkcݛP_`aM݀> 2J5@`]$S,5ou:+[JмmJBDbꦮV)灧UjNkv:դǪj9}2)xDjL5gX+XXknlb%r^з |/-|A+Lc[KnR7cc 7L8 rcs33S#o7"V*ښD)ͲQLdwin6M7uJYPSoYy^L/-jDnV1M%\_z$32Fn*_]=~1q>Gb=WVc3O-JLm7ǧId:hD妈GyL7i jp4\3 Lҙm,s4G0M0"e(1%q n5G?5}=}z~zmNՙTN+{uzgP]JyBӌ ,(/K /^֋R}PFaryw^mثm| ܼslN;yלŁb ng J8T;pQBêeMmSm.4z66thR^bĶA^^SQS&]+u1/F26,JZ}c>*;E/X'OUo`-`qfXa (\/&"5Si0Zro>+;_7jO^zâw4֊\|m D0=yć$E(췺فͦѨCo<)R){{g?OΈ̽MQ7?5  /vz|]IߔLw^G4#8f3 R} 2cz{N~舾-[Dr8=~@$cmӠ܌~l $Р?l2.,kT.W bO|r\10㽫J8G@,`þ) !Ά~dCO.ROe.6;.`qk؛:g1\`6%hFvތT@|zFjʶOμsC{ > rsFm3kT-1 u ?1AD@@#&T,Tπ^GvdTlxV1LN;y Ea\s$Ot0_1 )%"CC/$cՀ{{b́[)H74Dcx)8:Dċ/0n }{#͓g`iَC#|{bm:22$,NKd"Ǵ=À~əXUe MGA!a<{2z){@UE6DAOp/0ͺS;WiowH'{Wsjv(pHiAXMv;RlOi?c-螎0zؿyOBYd3 d|P,{GOlY _,ǂq@@ p=QD/77ʅuc nx7F :=Z)sM3:{º^IP$;zDa3!]WMjD2t8i\S:M, Q}w!;Oq(MRũUX(ߝIHUء_Ra{!%mp"OA3`\Fh+h"W9,AF]Q"5q(Oy+ߒvId/ Aա]G=n輈;s Yf6v>u<NYu@kY) #9r3pX o5nH*EYGo9 /'`kV/FP.TFj`ȟ = $ݠ+Fu'@st""-=XXn1N7{=>{yTT$p(p&زthx⎑uZ\^ Nu; znCBqiVWbjR$WYܳtYblD.괓L `>!ʗI[.ILN>)әDU`lZ~ G~w̛]$ I0Pl,bn3 D@ǃ!Yf$80pӰıP8}w4A $!-ܘՇw tk@>av6'u&q6B٫# vv \MMX1m2JElHJlҟ:PEFY.K jfM˦K,p< nm4 ݜ]kA̠C6AH)_Hc];ABY<&zAdR98 Ň̀qHV-P$\o-T&x"uOBOUDP.~BS<|~fj>j%;t4 %PR bxqm+:pb +]sRI"ƜHAU⽘P!iH %LZJ|鳳/e5Mo2V_eE Tx8a EeϗiQ{GfЧLeŘNG 4HT2L"P. Ղ Ob!7F1[z"ޅ#63q9%3^h@|A'mu )CFօA;#٥`ytB˂!eKsbzlMg~)Q?m!jfKI9N0 FqMuNd[OY T8cϿB@ÞvbT*~lʐπ՞\FQ'{@zT8,fBRMH'0*zIR`P_{I_xY"gبkEyboa%=aŸPv[g!^'"5'q( G2Dxئ_YKn(iγ+aYV?\e! SF4@] $3+)!οEpQDq<;~d#C`I^ܪRDHȚʾ?_"y1^| LǸ;YL<̛pq=O6^HČ I5MBLER# ކZ,^>3HhSM)xhx0+-;^:>3YgKtJG>zl\"BzVE(f'2@xZYPIa.b[d,o#"VRZ[̴ 3LYf_yWdrZ3?xTgCy n?`U')Nuw&On^W2Y(Z,"U6$c `R"ϊ8tz ,)$-b@l Aa}#k2h<Z$!q2RW>,Pج9aL*{"5 CD1E ->UtPH, b]L ({v6i?]q]ќcrڨv dz!֒xV968bm`{z쁔|"#qjJ! F.1BaR)i HF UQ)$` &v91 i2XS*9^.,f%e] T4 {-={x/XH gXHH̓80%n#J4K1 -p176DҲ,ŧe{?/`Q4_2,_J38B15sT6Ŭ oȝ!-edW2'LJzdZJ%"% TVgq9@QHx2ցyW$[F |%HpMIdOJ4d0hcBM /Zq87%&HIbW,[ط4:V4- |*M=x/]QC}ԭ߻MH2M!X;QܿG־Bb1^&.>["KK#ըu%Ē2Nz_e'qea\pF,l%>)ti(Bq[0$4M - GҦGWƊ^àk֭Y% pf m4~IǙ?.i8<M?Ѯ,e&2/Ap#Djqp-v.cd_"L> iibȤd.e<\Bc `oxɥ-#y N$bRY'X(~F D/u"j+&+ 0BV.Jc|@א\e+p9s`Iv+)qT֎fˇ$D } i w:Zi |Wae.CL>(>ÌΤm.$0nKaP 6(u;3 fpl8:9B((%@ۅ?ǰ)Q+پf{a- NƿE˄f[v"!KGz (L3h H 2Yb@zjyDEb4=P- F!X{nmrk061MnQĄu-"MpCv4ۉzؕ7uq%%ͰbÈ q Zaw0Jh|⓭bIDŽR*g2T#SҜ_ޚCCI+hp؏UŅK{cyC,/TRȷ`l2J'jjlʿR9l/KN&J#'T7UjݣV3J]Sik5.ecG{U̱ڽn=mTDž@TZؗ^rxwJk4Uȱ޽*ђZ׫9vW%i~6zޣϱ*QO{ (c{Uȱ*qG7TZCثos봹|JsUpN}J/Wߢl_?|fSoZXE.D+*/pZ6)H畔٣ o! b}YtyD !S;f_xģq" q8Nz/! wZήW>ßE\۴8i(P Y-zٷښw [{G(5,/yyzQÔ}ocժ 3i|G:kk3?\+XIZQf+cʘ?!:TO 5' x?R)5"×9yb+Bb ̛"A&|N藣 ~[y{~\+A,Ɖ-鐯"#kq .ϒ[?-H=dĐ EEes)SSe(Hjp/w3c?) ͳ]kbDZ˸P1dGŃbel0 vO.w2^ iўϲv_&2>n~D0*ajWYRW ݇}_ l 5D=4@LI )K訁jW|'xJbH 'ky%h2mGK[xI]#ˀZ1 u] Ȋ"N=x]-`TauIrKB|5\ӏ\n\2(Rs/v+ '{;PtUFS *FK|sK B$>m{0Zdrᗾi:ŋ]_ChK@/kaP3˪U3;^ j qtT[p@FxĔPdχJ'X*;sd3' XDX,`GJʲ)k/lccӃ 9V4pR3ih*).%q$ϞM(i7Q/1ҽ 逥qXa'H| Y:F\S',%#2,_CmǏkYWV]QM5)F!cJ"r\ 1 &#Uc<Ÿfވ|u^V`O]fNEpY *k~AI2&,1tBYxx+pC~U9j[=}5M mtQ{f&OGeP-&Ӧ~dGԛIYG:3 u(K|!,dg(a(\|1rÁUTx/%z&r#!v{ڤ#֘b;4@`6WS;-~* 6M7 fY{!<|XЃ 1u"hgx˴>,xXB^gor̤,V@ܙy8/؁UHYK(O(. fL`/ulXyE]@wGP@4hXsc**b"0 zH".I&ᓤLnvICEJۍb"̸F%m]rh9QXm<#MKA@}c\E-nnZ[JqV эg/CྥW^uV Wʴi9qakrm1?NL8]1;jRb Fz vVZu+b -~4╂bLٚ}[N{!FY`)sӠ>7Sui; |{ $S\2}T|}օ'[лMoo_&K?*  И% Űqt&DZd0軒RFqɥfwŢgﭢ8dᮘ"o%H%eYxp7f#\wD(ɡg s=( /|q΄Ո2ͳ.͂mjgeOJM TEXJO{ș\bro"%qpMC Er kT UV6$ǶTf`lL)LŰIb` E0jj Y+䍢i?4`C8 2Ctm(o1&ݵ‘}i($3V)xwE6q914 dFtlip~w9j%ydY@]O\ڕr9qIۻ˽dh6GF:0tH6G'k&$^MG8šFJRWs=R&Etq1ŏ0ZF"-Ž, ʢb', Ů5!cɵmKF즺 5K볳0 LnI Tiޑs) gO)X`w Y3gqmMś'fM[1RYjaہ,R C(xBQ}Xl(Tqa]xPjPZa,kpխӜA]i^&di3k&rrV~.@9Fqa[bn / :,dl^ZwBޔ- mfEL ˔ s ,X$(j-m7{$pey-+8fm+eY.unYsLÙ _2x,ULI-05pݓ>:i2@1T1 ` >BX S}Nxq+hPSB2.XiLW_|=x24Ur*qSjd\Һj!8TBI) ipfM5=R.nZd;6K.D4׊k.NԬ6+Ԣ-ւ*@C7).7a-b"E]81Ӿ+]'?'dN_)C; 8l:&2? #7o X]Vk_?q߄"Ӗ(1ՠ(7h;ۿ(_l&qJ/WK$ex_Q,6D-aVvgʈUfréQ(PuFgY{A};A "a҂xf,QH+0'qdɄ3ib i"J*unJLڼo I Ĝ]*JvĀwҲ7h#U mO)+d4 {IdcB "ZƢD"ƴzWdL177X7ܞ<Ĥ#E4ST%"sP^4Q;@NB|D2h@9y&TwvgVŔ;崜jkeCVL5)/LϧɋP^?zT(`tCkk/P9* It.ZQ\.39+SX^+E^VV^'~fHNl]u.=j" B (×p f2f^fOO(%9ko8R>%B뤭XBa ꗌS?z3]oywYeW'\d@F%aœi.H/vɱJ@RX*|TN mP5W&hg>Fb:|*"wTU䘎l*ױ0#)$}fUY5KG_U\=V^X}E/Pd+Y)[Դyn^Fy<*>zJԠ lzPXh~VBqg-dSn X)67줴n]i-hXf?LLTB`ģ|A8C 9kda:81߃b2kMd tڞ2g۴f^@+Id#ĩ3Nz0'{ DgBS.o>n(-Fʑt5)^xHhC1oI Ի͆%(saq 4Z'dLIy 7"{CSjSB^`]>Fdzq"f3挬e==,[NL%1i,9\62X'vrtX>iVb]ϗ7q6Afp!;X̑B!;Åbr(]e>6:hv^|?`W:s?ph޺`5LdZ9T޿Ƣ`KE*5Ymܯ9ʎ6,L emMxۤ Bʫ;'!x{AKqfƌ&7xHgؠ+{&웒շ^ۥ䀠qfQ^(1K%6=,t*1YSp<SHN\%}ҥsV9(jNX j@IkZ"3`TRԤ6]X!Dzyd@H,eA|JI0sxmfR%u ӵ3I0)>tZM4êjfsJgxzd̽R1pEuU>N1O¦xTYx91Gt`(f*L--AZtD:3(Ueqb̏L‰~ t3(l( i:`K2kIe!9ιQ w@|+24"sl/49{9rwS(҆5z4DY@^UL8լ/#ctmYbHիҴl颾WkN)w5\whYd#IO&ma']S 碈fj:ls(h#|&&W+t5] ͚,3!]QD$tSBG~fVvޓԂ(R=. i[#EWAMЋǒ 8HXM^8Ph׎dNkp @SB@]56Q9Y=PY'4gWيXmߺ$Lgb1Ig%?!"=JgI ģߴG@BYGA,9YOZmeYU/=j_Ll&`1ڰ7԰##D=j.QJJ\=1οDOMi@t*g4^WWÜ6&ڰƑn3sgC:WLeRpze2/Mi 'uWݲ6 c]Tn(kRr=|s|Sb%4C;1aM33CQ6oLؤNlF)Hf~ lX[eR\E0o%1vgN[wf+rQX!2váX~9S^bx3%jKmqSvdeݔĿbn @5'oLk`ۖx*`l-}qyMgލѼ  3Z>Kd\5jC s[ۓLo԰r/"Nu c0@&dphtWtF,_%{]eQCeG ,}RX>~ZSQJ΄ TJDAs(SY,/lZR9JG<]!iR1r!)VWY=È؉<*9Hپ3Õ`95\pk ͫ= )塽_Xx/sa o@&0 3JnQ=^$TkfK<\3(ň|T/~.PɟhI+3e$~?֑$ȼǃʾN5@{0uH 1هc۷䱚r OI4:f2B4㶆Lك BkJ#p]Y@N3XZ4 VɊSX*{'bΉw==3m2 6Ri%=,u@SIq<0vZlQR[^8szP[l]@jsx?Ä0Lsnˢe5)o?~XK'Ό#6Zmd%Fh ~3OyZQ@FG$[: z{y{G%YjFOG\ii!YgΦfhg(SQll5=+W\slbWn3ֿX- )IĊw?œw}A>AgX&ʴľ4:13zYrr"`;ȃ1fFЪΪ lP,Jib}c+BaQtޢ 1"eGM"JV;ISHc*2L{Y_ȼȵt5 B-+8dPry@t Bّ&@&|5 TCۊƆB(݀5ҳF*1Ą<_YH%A|[ CV/3 oBB+ ϼO>h_yf%֊&e.<>X_1^zh~ԣt;(v's9]!E1={&9"|3Q&j-s<Q|eTƇôZ=za~q;}7?:wJfn̷<NoS,4Yƒlޖ4ŹF#z9JLU9jʶDػVϭBS*#E [B CV zĩ]#^^f^L 0-aޅgk-x2VW1Gɯtņ (e Aelw3I&,x9Z6~a]CW@[4rQ"f.Rd2)O,eELÌ6`/ P9)Ͷ4t ^07dy Ȯfԯ ԫ"k>h֤Hܰ'jχ1-{~*l&2iiC߽ԎhYu1ki̳}j,)'IAe?햴m&͒Iv[LH3 hY0F`;  9Ȑy{QG$kc҉|7͑[PI>4))ص 2rcg{Ȋj`.'X1#Bth \]v8AѸ1[..6iɗ2`921븛4> İ,5d.ߧ{Ma>emc6$3!gf:kQ<BDHRE7#-ЗD#hivG\A(j<( c!iiDSk&(,H+ l+ KRp9W N3&X2ŧK>!@J9i[TH_{ YnlXpc-Q1whQ$TyɸcJ2|$|ZF٣Ʒ4lbؑmk;NaU_Z%`%V?;YIbk,yx Uw`%P.I1-lbEZyh $jWA6A+#JAȠ1Afl,>5nH$y3 FCDMu[ˀX{,I1 1T%kֱ֣qum%Bl8̹ô!B㫹eЫbg"BIz=%1+DQ ,"SShd=5cdcj!DG^IeXH\4Ozq$'^F8>͡maÿʖ&*w$(gD)!+tk2OަZPJ5+fnN@Ïյ40M[%&.l3sf61Y:9BYczٙث2=C"ժUNM a=j=?؇j+ ^yIrf pt؍id w%-ݾVk5]?붶HwZp@/ly4[`fãW0RTl1,~cdI@0rd;HKV1Zšƶ4:c:y?m8xqrJ@nL>ɫOG/iJWρf\nW\ThR1A }FʈZNǶ96".)ʛ|Vm;KTJ3YA9֩hYya>~@" .pT6E߄^s.kاI3S'f=UFk,Wˀ+jF֤FI#HlFR%qB(4vY ,!YEV ) G%unjA)}y$LO3#Qs4獂^wdu6ӗJ$qɷISNqf\2iS-x2:eCe|1VZ@QHwߌZ ]Il!>9'ڄ(tt*t"$91`kN#ŁS('"iDDl3siyԙ&JsLx:Z~wbg, j[dTĹr+љ8S#+ XT\zHqE# `ߡ.10k5 vYI7+Gi3++01t= fE_DJOϯNi\(߭£Mo[ ͭSM#1xO+?x ۝o琝YuIB,rz6H,1#"HZZKfHprAH _5B"\daL2WI60gF_~biIs Kw"ֿ-4+Q&t>E\;ؗ偊!>~U,뜐M{Mƀ@9?#I0đ'X28.۳GXrUpoD])('iUBreOi'g xW$蜥Q Khg'q:ھiMBG=i~,6I4^ FArK\Gp E[eu}aE*$! ݴwF8m;HI"(Mγ Lmx6 lc RLM&։&S5vDAw-lt}DƼi:ǃ9I5wu,&Jl9&]o=SԩV M0C`4Wt'BBdۍi T(LӘ} .^O_oZavL*X> [Sa6T'mzdqԴ] i5gYjAG:#2u#I<·_ޣHw)yK{vv *5F*6#hT %Bm)Y%s)!iQCKk>RMv=O acxզ1H[epyr+ ~H!|,J%U>/ c|1{+h~ ue`NRϓbk]ѷ&ri#Of@ 265Zqj8r*)*x9ߜ&3w]׿y9GYU__IY1䢇2u0+nPi RI.o*yJ@^:{]; &DkIVeHP}9 MC,qvkBT}׭C KrtfGW8kC*QHf1/R/XnüRx7aMJd(*m6*ZsRIu{Ga; E heCHɞ.sI HM}V[K*0 7$Ș,c6IHUPNfo.җ6V݆[(@֒".xv~WPA 'dd&W}OǢ6T#%y2@ØXv4gX ,ymO9 Čg9\[w8, ƀLqQz{'AVo"U^zd9s)^ގm$_"*MLnS`*ជk ' 4Y-75%zwf*Q8~/Dѳf޷l| /i*r!|_ec2paHP-9ïC {9A^ )鍴b^p?麽H^Rq\L3VN #@dt,.jzIع&/_Rm5WEFIq"bCEd~Ǥ0%$honua7( kMdC7m$z0y2brGH&9˱rFэ} 31ڬ1M2FzRo"tFh!Nf⫐8 1 F֮+kdWn@?11N 앆IL[TXYsmo7K/b혥p*L;E5Z cNi|í"$]9Wa7 {u;{ޕസ/ٖjH2QlF#V4qg{X=s_eM)}<+ZZ bO)Zm fFbbX _KY؏T)Uo1y.i ~0IQ' rLa\% usg3,װ Bj B6iAJV Mh O*'n=?ew8"I>oܿw4e!,y s!gRйt&t+ԒadXRa&"Ӻ3 n-7áFBI)W*w}@E,O0/(<K *,Pj2lv*Il mڼfՎ azP'Y\3'uⳕķ;&-2D`v1d8Q#Ҵ· V2Ί~:L' bv>&?[;?,]aTV["N8X\ 6_%}ԷdE t 4e[X.xgQ$e1HpŚ*R$\jeZKi2b^Y)_&dG K,+W~1$b0tH&SFOZx-Ho"p\Jd[54'8*lپ}BxI]6T LwN6聤z }*55 ^\u:>|(({l0BF|':BK{=cxVK@[dܠt`ɦA7Tj!F|?CIm q2K!Hu T"s`pf়˴ 4CZv=?v0Ig%¨9w[cxkI8g3U&ly+J;U-S"cڈMyU==X@[RUA2KA2KA2K Y\A2KwȊYJԦ>%![ B3fl,9zVD )S2%,V3n/c`.-ٳ^O=.984q`:Ec7&re@ƹ $X Q@eT1sr6I)HJ+S9\a!O>g]69%{Dx4 gjh)0H,L2y. YB FEd:LйVmHEƕceWxs,BHͿnn1n^pWa4UV<̨Ψ3ЌG\ڋ,a0~B4ԝ8eUUJ=9IFn@ _*.QB)KI=x,2{c±$| 7x[U+ /_p8Z?a$1`;N@LȋT~5ߪ+>ώ_ )3Q@WQ"yv\o%yK.ј2G84=Y+G2NTe\^9 {:j7)Á5b2^= Q@#.xMZ4wdUP74v7HHh* G\?|[./_}XSGg,OGx |?2%2b"QM&q$rseVH|/Z XBnz) bthH]%AMבQg>d58C8xe3@0M RFvPVTaee{[JDy[meHm`ӑ}GN1^x98RW2bMtދ@kYmb?lu{@`wO BjDהG1ަ ̑Y.`華U6Xi+T}1 SFJHA3}͗???9~{@yp" Ӡ>,]_ &4tFCJi(u#"qb A<1|]*/?Y+{OQ麈dGONwOj̙VQGeNGݫt-8BgSt!1%߶tȌ_E=2ؐM(( S.wƮf{@q,=hXe~샹Pd F \|SnGnӘ1h $kĭp%Txɲz KSa~*(vvv O*S`[ A"bfxwQ}dcY(`'Ξ@=>yhH@LUQloglZss$zhy0/eECܖ DN2_)&Rm"TV4 ^Ư<4[]I7j4=iZdCZr>]1XIҒ&GWsx4M-7;P)h᲍ӓJ? ;d 5 ԺaR+அp&imcX8ɑwv(7&?,MSQ!/~hZGjMxuK~E(U "FyqRXقuH3@BD\ԨYG5l袈K(.I $kM|TX66b R0!@(p#mѫ4*bDpu/S5@oF iZŃ̨7K2: R6jl:FD씀zjaUX4a7y3qRd2b$ rؚ &ِ }o9fvPc2A>yZ^G\4#~˞wtVRNJ},,| MC9\%gOT  9`Fb&K+J\-oWpࣕpus4$g2-]&MƯ8H©SƬd*US#k%pbcek}w3*dKϒi,T$B"EGPc/N62w\FY@f56Tt=mmTۏ| ĵ5Dxijt-MAW@Ȃ)6ptʶ}w56撳/%L o.ur"k(Uҝؼ*sݵJ=D1X$ţZW :lfeN"ulȧy8>πhl ]^Z<,S8D%J]-4TcȹahpI@ /Sͼ ӫ V^%dXR J؂[ JmIl]z1*2A4j(KvL}̷V֫IW/l&_?\^ oaL+(<\ɵL_+q+0$_ɔu9;WrQ,#C9Y1u5i!}ٙSܩ6cH/C bE.X {U<ΐPLnUT Ł&8TaHTQB .$‹d!+άPX&7%,ӤU[up VO¤Z;d5WNoa ɞ:pܚc"No'nH{xq >_8~"(ꬌgPyAG#o? El(d "KK1(3]e8uďwvDW .{Q ޤ|YfI Ț*;(= xQBҹS}*Aj&p[)Z!#2cخd@QDE`T!1 1I|k|#jrͱD2FS ? '-P(_ ab!tS- v[paFwgzmG[֞ j|1hZN?m:Z;V҆V#FC C&cq#\e/] dִigVz1|G(5=+,M8]_qGe H Gm}Pba'W8k7Zq+pv@^Ai&gdЏ: $?Ӱ5 _D NEuذx-2FyeI&_vWf2Igpw$œs1'qfTB|<JeB] W\FI/Kbc^%nηl\1*(יՉ2'[daY LΙELg XV*d"eHȁ =M3Z7w5SMwG!UbAӅFfN<炱L^{۴)joߚ\b4EʗU%28R&ɟ1,B$XqhyF0p@OٶcR8ƶmpK oUҨĘԭ0gǺ0 YVl [=bp8%pfӎ(a$py5$QYUQ1:H4hb+9RHJp3b,\2Sz%{(z w-l<-S0QO$Cjk[Ebe8mU$ar_4*,(K0U9iɱdrEF-xWTgqQdpy幢ywh}ZQ6,}cJ1f=9W]|֖..*40oQEq;;yzz;<^p-ɫsJ4{|xz9xqp|^^w|ΞQW`4?>{~=?9?O`dh\]v_ rJdt#o4NOkfyz><;(zg OOOy\NqB@nsvWgf,GV z. ijK~X"B&0"f{9"K}8=x6ts?GZ+kz2G-Ti8Ri(ʪ< MD&n- q.)!*TP/(PSh󑑆ɖk/2?JL.⻆o946C+Eʐ$0"7TJ6JĨٖoZyPx gQE(p:ԊrO90&2{t$ceDnBMbO\ F{W޳#P284~)O!Iet{=^y`VfX/)s=ԠxsA 9P%OؤqZƄm9A 5݄+y$*9`\`|'gSJ-8 cYK^=h.fa05t4C.dv']Fx0)_2n#-@_{8:1a "/9h 2>4Wi;}ϵGwFÇl@USV@egh}7yF;%jD Kr֖鲿};RV[JQɣRSϪMlcA81W/,'!e[:-Ca1쨨9l71$O xrJ2hJP1h:EՕz\mHkIC9ÑT0s8VPBͲTSE?Xbe d$8&3(U!WRAh 0"e<%g;@VBBRuHYF.IΧ;y.!䫈d& ١# bc$|@i-f; ՗kDR3SהtDAc!BwyjJ"Kk0{w_Gj!;To4~B. ݅&)܍돮p>1J0V1|k.(9'6Xt+~а&Su)bSm%gZ%^f(Me \zn6Ol( <)J ȣ@De)JE=\*o)/K!wsnwPR/kkDwFnO(cވn' sSt0՚!J0QXh£KІI` t /̿vFF$0{wp Gne&{e9*,JN2f)L Chd2h.]+Hz#&- &Ԡa4xy4Wn0%P,+wN*a5R.)k ?T!=Q`\G&Fo~[caZm^_2ߦ~j v-+aJb=n;<akf?R76R3U;*_| K:6%0nӳdĦ{4o10uP"XR=7-MA]FC!KCS-g5oͭ -HOFȑBH56#331\fYʲľxUl;'e 45NӐ`yy'Mk2"QK ɶVYwȼMQtӑR'\!l2#"֝@n4n)E1_ .( :yD†Y Ǝㄛ濹,~sYRV. 2 ‘O47 &Xǩ$/` p  i$]MaB.'ҤӉx^~W@&ΑG+6 /ھ o58D傕X ղbӓW'O6Yd+-|[4'::#ǨWؚhY_|R^T<0\0f Ӂrf%bm@i"oa[(NRxӢ`P"D±I:R*+DK-rCD;VkIaKՒŋ91.'͠eìn3cMOHP30RI ީg?zD=m U 6i"$9>cl_#,i CM͏բ܈y}\0c,C&zuIᒇgmOX% yp T:-ZTbxt҂rp^. Ьm?>&Js)%TtlVwEį(z1vv$4Ʊ բ7[j'?j89RbƧ;4mE//IWqE-kqz ^ږZRH<(@Aq@ؿ<:XǏB}KX&*8(Av _Z@bIf]pG~vLNS@#EGVTϺ9װ7cA Rgzs֪$9i*fБhtdZw׀ҡE M#|ut&ҋpK)C?A!pUU 4 4TgȚՑrT*8Q&P3/i0U[sMR%;p@u♂;r0E [KLPXL *9͓ "! {ޔDıY SsaDJLi 6ȹ9|_yN8Rr Qp2 cnGE%'!Lb'#;DLMR!").^Tgl`:lZ3޾&71ࠤ3b ¬Fj+ B02 6nG@~^%sQSV\c3"B1RYvbkx]ӍXÚMB1D|hEEPRkmII^WD[v") L$NRd5&eyw_Hh`%1'O˿tu3n>dVJ%{t#́w%(VI (/?oK&C/{J,g3 @LXájb]ڹ 7kp`+\oaf,[m J?zk 0:nYwO{2 {o9¶rİ(>§׸ 8G6ц>`]U)bZ- #ƛm $X 9踦U>cߊ9LWv4a~0%fppȺm7QE͢.WR? kZ D'1)O\l9PLy5q3X, baO++Όn~ñ_d9B/Ͱ1 NJVԙ׃-]/a(_E[ [𵗥Ȋ}L2+ #2x)xljP$VC+mEh,%{$F} }8KBC]B=jdM:da)UNՃy۶{OR:ժ9^ bd2ӗ.FM( y4K;rPPL?la:y?"5BS[[x( ב$,^F,=FF(bS R8J6z.D|SM>bRd5rQ)R Z~c>,}m{JcY|HBLDWta;8r)}z !3JUPrB}0t8+2v jD\寡Oc2B㤧 9ı/5(b+ tHT <>0Dõ"И-B{єysob&`҇qо€t S+Zissk oK )eBRb][G2H(!Y7i6#hsd|Bu[yQwJ"&5 'KRtSZzalE阕i:LI5N2`~{bTKom% polԊB8-J-{/m5 ~d(0( Nq';ڛ.[1xC|TKى*P%iXPJƹ)m&)WmF!>˭^t'Ns@yRTW_Ju(KDcX1ݕn:zke϶[+ Zlz=c14^M >h?PtXtcPdl霩)3p2DʢT$0 fE>@m,ݨ3(d;^,fvvUeJ@(DsAXk_X(G9XwL٫&$jEIJ`:$ŸƜ2y/K@wi- O{$Wdű[myj&0ae]$,smy-֕"f"k[`,,pرe$ p 3܈q?%LF=Hs|N iBݷM%9\ΦfM]dbə*·(Xx́h4nOV6{s7k:TX-QfR3%:J=n e$$"FlAÃr}H_[)^յZ_Vukۨ/X}`յ hX{w;\r2Uv;ή%lClZP %t;!x =:q-{ιmfg%@^?K3wr)Ae4^^WUW3򪚚A5>fckuXfAMS8! uCZP#E8xS9U#mN['^T]-;A|s Z0iFE'Dh*(xUW ;!߱!y&(fK`׆kjj]RjtMCKqƎ.vhjlMu45l9omC[E:vr-ښ c^D rLU]mU[ͮ*zQ-]40VEյuEǨaL]ыF>5AvWWoilil-UmF}#^S5jE E/#^W[U|u 4ר/jĈVOct)X"1on)kflcms 6C @>pBPƂZ iv>99oxw 050o^^//lYMࠆ0Sv6TtJLˀnd6[x=6`1 !"TGz]`#= r~DL9D]T]08wh8̶d<vm%: S@U&b,H-W万Ua~X96Vѣ _3zlCU*HU}h ήOG3W'~bt|WN1rA5n,`H#YOsW'6AP`$.}8)5^>){\Hr*kڥ _6@.!z(]')wG6hCEHJOU80)Hz9Y0o |:QiJT)||: > h!1S.=03H\p LhNQuk0MB?ɦóF]0t&hxItkO]. ~Θ_C0uA|lA',[PcGY`0Ψ."}Ԏq+> LN4B-Ium5k>PeYП{!o/qPY1x_‚V|UmUA[])e-t!&@H !~glᇴ(2+,RlB'zc]+j4j/3,~|m2B/rgsQW'MkLWB\{sTyEtxE-̊VHF rC0a,a6% ȅ(]nY g<@㨘t㝝};#~Nm  LLEOzAX%Avf|XL10ڰM8 jS6ԕ+JVYYIhEjO1rJ㨙U2g?^v7*-sQ*Ǭىi2a sFrCMM 6{N5JL yu()=-%TXV{~}`= $)ދe S* +@,{=bpBLxemׄhtfo0ȿANӦt>fE@h[w~+٨K(AS<{ao-Znf*KyC'.`H_T2 {@]~>؁N٘Bj[LTtj eѫU@ì 51Q+2bh(k ,)/ʳԆ]nh:-pC(w #9oN%?Q+QRM m=ݜOoꆲ |A&NE `7Ed>kIzg71ܩQ_3j:f eKJd_(1woiنǥt% ^p*9AHrvԾ~6#N6q[A8}9\ GUњ.gxqOHjqԄz>x|ypՈ"V T8Ԉ~9Xбtƫ[E@(W Ď/Dt}#sQШ0e"0^rh2r =+ AQIܶ./ &m Te!^ "RBr|+ڝ"j*-G>b(b.@.'IB-@$=^ndՐf^[u&?bZxO] ǻc*Bcs@91"R; z9QB] ;I[d6q64)-,ʆkA "܈y AEU^ϦDP9rc(g@y(Xh{րfl9k5ӈt0/*eojmT s/^L a'д9cp@>7k bBxgP+A-^/׳%V}(n@ΔsGكw5]SU?jSqgK|XS6I†25GF#`/}xg$qj'?Yd"TQYY@]h~Y<(= `S` HJpKbv= uD" "bw`nҮHl~0 {ؑfk.5YSr2L(F8,ٹ>&{a~`EO$ٞnN؎'z :N0JPzy@e٠CV/^bp7¤3(a @6%C`*)Pn 3BJp$-,KK̃#\W>rlL[z0Lʧ65j|6J e=Zo ,F[< Y:Gga\m!Å_< OKL$GEtbKRxbg0K(LTِ Bhp~[)$|sU5(=8\)ēAT)Ϣ␡gS \$j9H5W>!  WVqd_h˂Ȳ.5T"]PP#'a ô@+IహsDA5?}|D"+ uQ# OרQ<da)-8bV*b85&wh9Gub-bmhy2rjN_1iF zz ~"ǴԳih HF)+(Nþ"߅ϡk &T{Z40Sp0Paxq1}ɥ%/MJų]eV#07`zna]<Ǻ;['َY̯?BL$I V"|i>ium= 6@ΓPtk־ FBM!Jp6~qb!R$*4$GlTU;ǵ(n za. a֚C/LIh,Wiи'~ox;](RGșhP,}{QZs<&8 KW] 5/wutv "=F{~D>䲠ćd;$H}}qT:ecۓfN>2;=kC䪥UeړdbW* GfAG'UiQ;0Еky;Me>j^=Krɵ$G#Kũ`ݗ~ZHvG_|VT6܃[ *0(EFAh7aU`g()ҜR_l "mXN :?KweFjM$yܱBq`[/e&K~_D֦;ƥ"}SX(k_z'9u\ ep9mQw (5eeNAi:L/qEǮ `[0CvH[*T <'EI"#rUcabƾòE}`'& tL {+Y7(JYXpXꐬkqhHO 横6,8U489W1pj7(QL`K 'J%^Bk <q#C| g=Nh˱"*F䚪r G`417^cl5lF:D{oVCuǾڥ!u)EvLkFEqvr:BۃX:\ 0ڒc~RX3Q M Rh@_X״Z@4˦36?3xY>>I愭sٲd(v`uOKnuWrKuU'jOvO rgQ).s"&ƹ"s2FP~OnEdfy7<i. >}p g!vqNk|6pVDZ)$mPI΀m沉#nfNȢ\PA&O5(oJ8>k=xʔi`vͨj? MfݳgOoxdؠfj9JaX.&3| 2뀞2]' RJ` AɉwX^z<6Әs=~P(V 1y43F;\NxKI;4f!nw<>@++;\c"f6|Ay'*Kln y_.#_&ЫWYBgѫ:*SAJ| 9 \%uP}?$f+ҁXDC>岇>VP nv%QHBtc- A BWi²$xRiEuǍpi~| #y83qGA܌ͩO.fSH֋Vx''D:#hp#0M6GXK ył4"֓˜< #yMD“IU͋fS9*^ӧ3#WJ e#fd+zC`];9[䣁.m3S[@`3[[a}~̲>kNqrV6$~ؤT_MaZǜvGk#ܛS5 5~8+GL H0juCM/I ;@ytJ<<&6f# L}β6$v *1{$taQNl.d(1Q(DUPÔʑRVh9E}FJ̕hh@A4-hWqF+)a`Juy^A o=`7+6s !zA,iu w#();L[TY^2 N05"J yaz1 !(zbpBpB)qA-d0|U(ƈDnH2!cg<X9NXhL_9e+tд-BtJL13z31U"_[1Gs.~9H,uFv' nlzTAWǞw& MF.ͥ̔G59  TReQTFEF:QܸVaZ\* xt!hD=(@Y1_qp=ks%mVFɃ C.+)3oqF]u ;*dȥ}=*-q+Y~Y&Z`eԐ( ܤsx!(kłfm^8TU| fe  Z";E.V?"VL©5aQzч{g_XK&83LG/,ɦ":S4K/VIPSsNq3K:l. S(}9Dw?:ǥ.MQ))Y7:=NP4ܔ6nKT[s ]Q7| D M hpTZFCSx;B;HZvZ,ҾfOk:mެiSU<)oQ#AH8]/r[jUDT~\!C<$-Y\s `Bh 3QΊD_zNH;<*ŔyXұ),>?",5"Q؅[8SX i4/ ?9q&j0E(04<tu!a`}p%yy"! !VG>7ZSáM Ф¤?s_cKRZvcJHiSھE3\fv0/kM\>:GH&vS? 7>Ap&>_yF'JKO+:_YT[ XJeP#C'[={o(Q`O<ߝN?(f:+Xm FE׈PRSUU+t/[qr}=<@LBU*Uܷ ;_QaoQ0%fR~^/1Qӎ3ғ zU vVDgɑ1)N0"pe!LT-e˜-2㕝'W$**!C@l~z&9DHeA0+uEv㴧y<eJX;G9d;+:T$/P:m .Rtf]G E2 D~RkvNrl`X'2 :b `Yg<5:7jw2UZ̳fINQثHa*e#2$GJt6w' R%!U}=xWЩ M(5m@t̴Vɇfec4Έ1"RۏȻ}D5\ӝ@ RtCEuV\ Nd5lm*vvjܓ/_=O 9WqhFݸWϵ|,b%o͒!aYp>|$(z~^oڃ<"x"ꢣy/N'- &WXK Y7xs$BEv]{m:\W8űOknM.nb]dKD8l}Ɗ"r#Za~NY]֕0]ya'9X[NN m qŃ|7*-d<&͂PkqLAiugt2P5oQ^ gHNrlzq :x#3&ON@ؕt֘8[&0.gӨlQhY=); 4ꨯ~hRNv5M4`#’SнК+#\̦ bE,Ol\ӡ|pN;n)cOU qdY9Mcfo Du\Ha }3]ݶXW|"C2d+קo.^޸?B%V_#N>lZ$ۜ<Pv4\9yOip 9]Ly[-KEg:gʅ5K2bB$%GNbӅr"Xee1'0S FI%.{WLk]1L  bLLMblqBd+N{k.uZj/?NsB[Q=LJk!F.b#- rڃb ߈t| au!*eS@#n)%'lFw-pfn&Y_9adi g_|CeHzn~a,LDE6Nfo@B6|,^ |i@Gƶ_L,(0 xfLeX܎EZpA+Uex& a^ΥVMQ]51yB%DU)IA\CL=-[`$GJEZmƗׯ]Xft@ (&S1y0w"@O#Ű{Ef\DJ,2R!sƒ!r[Yt4uR!,#UG:M ܑCe;еL&~mT[vqf&HwArcDQ4Q ,1:]6;(U1-?ʳYoY/p|˜i;+yF|%l 8bZ4P"Y<!OE_lmKrΪmincXI9v`;vFe鱳S? f8#Riv?vTuPYԾ(:l^@Ǟ:!‡֦SY0y_)Pٞ4&d t90N8-&{TW\'ܱ|u=n)xb Ū6m8 VDo{$1($D:[=c3ζHr\ P瀨(F{1(L]/D3S>Ϯk!=G&w8'DJcc1+6PэFDZV ~̟txJ# C@O eگt ɤTXLK'g9tq ߨ 7x.*-&b`#mm:C8b\8f_d-dR<Տ4%869!yuX;E*ːX*DƊ uV@=!V)Cpt +gHGjVom?Ex ù8E$SLR:xׁL4F|)5z?No@!5 }f6a\;&INlZBHbԘeV(,*񾢵.i~2^)fBKVIۛi-(g)&+b2.ѵ8EW|&j =E=4@P}&-zNR&րZJW8r=}2 ):dzxa)&"07tGU>3@U3^ m0y>LY@'asME^‚a/BH\܎[5/+Q(<Un Uŕ)RXхJYLļͭ4 s5E=\ `sF[>$ѥt},$ZS$YRtcG߆ې&?W>l c!֋]3;aUM.@h>lcL*Hi}bzފNKTEjBUjyba^sV!7Z˫Qv,-$N |Pr3JΘ\-iNP6/~ru%q"g|L O"LTh<18|֬CHPɧxe!g?d7BN8LckV_T)E,7,>}^:;Y)DVL+ ֧O@T +C䘭P.f|m3[Z[x(@_!$kʀv4!i)k∱ xJ9LXDX>k9aVQכ 5tA$]x T_, 'u7B|6kdқ "BU9Z>:B- S[-b]̞:E+F~|qEKY":g HOGMSt=HfZ GL-%$sDT[aŅ-A %aiK,BX"Gٓ<2_Vp AGeEI*+{zz©^y\4u6ΛVI.̶^kv:0lƳxLOQŜu¹~;T(ÈV.[nHxjS@K\ίihB#5z­VV5 ;͊>(Tg9n ď#4a 0N~q!LjdHܘ0ԽWOСz&TEX8(׮wn #XAK8|QyCr~ӂNGxhP WAԅ(+kXLZ]`QEۨ ,鯤JD5)p3(UU(fxI|o,^/HhvC%Nݥ2!W+H(嘚3HX V4JV'Zޣ14onl@L{;CLO=0T3hKuu]Sb4b594lW ;:)gs &.vY#6}^eŢJ؂-ȴU2ÞfA@B;p6F#$xJWpϠGmt3:~$ǂlI\m=1iJU Bqۓ=bJG Ssc:t)iGy:D>ETZ9&7@+31;cHʆ`v0 5%xSY|ZpRPԉkSbYÁNr!2)_-@# E=r$i61шEa~5Ӕ]W0u䪁A̅*8w@*% %9>$TA8 kkeSx B$tP 𜢴Bp-z츓6)#8PU)* |G9(zDx{O,e hsS6HɻAM"҇u;XM@y Ng 81 {žS3ZqUA-gb(s*'}X]ˏ@$#347RDj+Wl0NSOngG8+Dc Ur.ҖN&L4dqiD.;bLtpÂyG.%t4DHKp+nfv\NYL ʖ|6Y윎)3^+O̕>u-EP /mhAH0cU5걨/s؛ ekdиNQ6"ytԍs2@I>L.o2+0v\ij:cҧ^ V8$͵XlY㌙p@v51$|tй|!.f0plG lF׀3mf_iA`H~ :uq"^R[FNL.EP晩DɿA6 ;¤ڢ"CƫN};xkydH/a:bҝl78\\V{ws1Sf*\=s 6#A.:W1kw˨ wq\&[I1yͪzPi6m1)l mY&Oc'!q)h(n(IKFVxMmmV $,j €1UQǁ/5k̽6~tgff'd%j8Mo[bthpj Ռ%`K̥+DK= ݝAk%96`pxgHOJ2gJKgG&\cu6, tJ C(nlGu 'HIa75 v5deBgbg G$ԁsNӈ$%DrEZ/ #9,G$$<`hLͥA#"V.Dub$.)p5(tjՐk&fdZ3 ESi@8N)zZHE )1 "RUb# 86WG5OcG?cQ*y6aΔg#hC# Ŕt 8ʙy+偯vD:O,ƙng&y%3lT_?D7&atC}m,&֍HtMR Sst9昘eqzZ`U2ߙ;q*3bm].L/kuaä`#LfGf P˧tzԕj f9ՕfH=i-]zl[t`MpMV6@OČFp S8C ^”ڻrviNgÚ4S\ܑNwU@o^USʿQB Qu{.H#.NTt_9D'oЅ=}й,FpyX\$rL-PsH'-H`=H#h\)}Eyb_w:Mx PeHCT/Y\[',Rzs49uq"#}#dl_VH*~웢-tB+Q'ڎ_7Db]jtqh0KP1gbr5Y;'p lOw"@9Jt"Ur:Nhpq8+iupƭV'yiv/'/`33Fs !;K`3&m_SUA7r/ =v%n%8zV (IGڪ/%`nSJA3PV%1,e4 * 1sbhXE׋33U q E<@*Qvø#r" \!>!EyR(> kY Cqkؤ90lP X`2 #1 %^bD8Jbp5t-5IS", "JVi3HBIg0Fd`7D|1`ϔD{9f9:E!Ӽ7HiϥF d ɴ$3c2!I%ҧ[>pO2C4_x4m$W5o5>/l˵rgKM%ޙT"];}ǘafXh$ӑbg#;G^!~cf2 Gd، +:Vٍ<(3UE@>'"|-Ibn7]@d&;XeLKu%(]"8xWY5G `6q3>hj(,30 v3ӡqUa_Hس$*U"]Sz X`YLpE2 IPiI]U$L> gOP eckɥ=FI w+?q\4 _;>92G)c ~ dZ?s ,%G% gr{tF ʖndLL0}֪K` #{1 FGZf뢖ƆhGKJlibmz+?*4z Vu܏]xSdtsӯH_/ΔWCiZ iH= 'Q_^N,d2zJgC - 8J`Huu2{?;;v]MlR46J"\fIۜvnjUv_T| A Q>tUhHDŽ Up'Ƅjk!"4W t%bV&V峔LP-}sb4"OSbW:}<3cVL$fWl b^%IKYм$J%kialnq4S&Ry{hܵY ,oeJ6>*#T%H(`ʛΪ-tE|fGcD;ۼyc%lJJ+~JTPuW^!hʷXy:F1TWX++~Xȕv`޲O =Vk<Sf!MhۘPݘ s(Hb4&q,(s[Aԙ>#c) :דX"6hŒ'SE$:b a*)i< N3J%"|eFQp:!;ыKQPp (}J i\Ts#%)hu$)؍](MBKFL6s94S2b(kkn !=?Ld:?+lv&%0Fȩ0ΐH4ޘ.U.Dg B\-}Di $TA=(.3Ԧ 3[`0s(9auQm8:Lj6y%/ld"s+]>z™:\b:23ٗbr};t ڍ!&IHj%\YN蓡UBH:y/@$МH&Ƨv +# DzmȠт:jͥ3bJA,f)pxuF$If)JPΙӳAc~*(A+DJq kG M]&ib'yQd`qqbv U<` f+Cwg@Xl5$ySDXuSqKjLZY-(tD^Q+TI̬顲D dC5P N6؆OxYq.7m )sغk+8 H&8_6QM&/IFw X)Zqv1^ cX1[[Nr@(!)%IeZPȤz^]e"~3|H̬Ixes@nbutСю>F4Ns >fhlͦ;Y'W"0 sa[d3 ;VTf:kԳ9,)U# U}ܾʢR:xŒNIT Bzh馳+-:464Xض4M͡c=`A(z;]| $x>k[ wMx"jz@!bE錒2pR`t/Q$OQ Fi;;iyE$X QlWK/$LM+Wp4l#!{Qo*(VfHG83r_ GEZ΂g숐&vCݐT8M5agC`na0.rFyv8j X jhRˆLR#Bfѕf67mIV!rYDN'sNîﰢp8Ďxt7t:xHx9ƈ8C>>[s0":( oS@- jʇRTQL-"fNaL$SѩwpD":v1`s|B/e.!òVWES)x⸥J7zQ"r{e-0<(X:ru.v 傧}us]fv˪%EZr_+bݸS"LQA1+$T.PDnAH16r`FG!g犯' _\nNNVg= 8hs|^%/9Ű3(OfoBT0KnG'=D7hD=eҽ{47ظIGOKg)AN:ִB zo_!΃URպ#۠:"Wu(@vfSp}$D'jjiX0`uV[]ڎExؙ +EMSE >?/'E!n?0t$mjY3W$ kJDr2f*^Q|qЩQ釴 Mo2ƌ Ռ ϱ ۹1/섅H.3=" sɓdʵf!HV)=P[dYs_Yv2j)ʠ[!Ycg*A,ʇFFg8H9@GxɇX17#yH>[@ {tDsۖNR!vE\OPfE} j<`E4(Ƶ`Jga}r)U:<waX,CZfxq#Gc&mabnǵlNTc kʶuEr&桟g |E4$hjo&>Bz0'?!/^!}Pdڹ;U爗XTeu;3ACZtxsݭ8Rӝ"*w|ambo/SL')Pg̘}2cna<]LɅ٢ GW+Zѯ3j 9bӄfƵ̳vHnQ msφ& eCaFыUz\pgCCma C&*X%q9܇OsBN0 !9:#v=OԨ PYgh֔pF2s}RD':;keK8`ls3'ٝR|@X/b9,L"Naz-GׇjV!s:B[ F/4lDݘ^jyY18EŴt ,R}&>@pp:(/nRjjLŲlaσ-b;}v<ڝN@fHRg@WWbR |/Y 7BiܟT^3Q@Aıbzҁ,8&%(R4"E5d$x*q{˭!e-`|$Zf>TFߌ޽wjĻ;hgqY&"<߹VꆆPzc mm6 Y q̯$_gZ9Et[\SlXfl"vS})~Ժ9m%\yT:]Bz%j vq{]5.,b<19Xo$"Wc). :Pba78ijP7}5B%!RGW>`a7ydؒ0:؍h(Q+NDμ0yp`8ATVC3%"9so.z?@Ąi_=@qqi"0|!*ZoRC,V1j!ºJ0pKQ}/x(r;O3r!K` zr4`N:}幫)dٿDy~z2wm~stX 8V ţӕ~<@"j* c`Іu@thYdؘtRiTYA(wqS̙hY NH*;,ϕ`UVßoy 7+p[=p*_ntMUuu Ĩw Fra,jr˄j䰳|yhIb2ҕgRi ׯSeY`RZ4wZtX1AKY0YebqC!E6y8YQ~.FC&%h"`PaZ `%zb'ME|k QN49&N |1x48MN4ş|J@WVDk׌D!LSQ178dJO7I5|Kܔ)Fݖ &4Ey$0JʼD+RJZP-"{Baa W]_%׏ h 43-x$^LwYTj84_Mm"acN yzI'*X;y%(V0O}"kװa2dLG</ %pr$Ozd=~&DΆG:iXl_[ ⶃ,IҌv:$xW2N49;eæ[0@Qy^J,N9^9Q5Lm]g~.zEip+ 0ݔ-WX%jIjf!+Gw#Z"q8&x __v sr7}{ 즐~SHla&d.s6BGxtyR\A/_!hlxyEp:UvzznZ"BjNj5䞏(J=]86u;nR0R3ۅQ7y>,)=yۇc!Y)FR}tߎJ5@R4c/ U~`XCL?&Xք:1™W1:hGVjnR 'uz b8bql0o\+B!'NsAbSzIʠtPzк@u˽%&x=IE.x3S%%@ĘTs0XHp+eq5_xi6H\a,Jﱀ &O ,iW[L+.§Zfo-F9ڃFUVD8Tg0[$t(c;U,t4njX[|z_jƀ#K֯`6> # ;_#9ߋZ|[\,rQ *Qޠ{)zy<Z(l}΃ j,kQˮ-u4;,UO8 R92is=5B@L5Z!tv$PG;o;07^=XK? F:" 6U 3~p3% uSH ,)SV)>\(QRA`Q!jX;2K_MЄ%k2dc꣊>p/W&%EL}ץd]#ukz}РV;׮9Z 3ʿv 4u9pg҉"0iw4]˧A!d〃/Җq,&"Ԩ>Ab$| qGz#f(Je&M& gOo;I]gj}JKA"*\}"¹gq6Lg23IKqt:pq{7(8~93ZvK`e1YG;JCNCë#1FI G{mY_BxɗAnJmE] l 9} (*m%3<!T PM7D^E?1p9r%!80^č[kV JR#Wr%b5 i{,MvC6 >=' N;Z; 11Ob&3}MC114J)Zmvo-預Z8pR$'-jYؠJlBj97 E;B{k8mUy>](SDwE%Y|r<|N،J$ E%&=[3)PZ(i:Lapǒ*i= vAv rAרRF>W[y_F]jnH\*5vlxP&ILA9ad @F3jPx 9 F6]˚G lo ee`eE|=J@ymI#WL'v1a:ZNL=lWʹ;]\ )N7nhBn A(2]Hfq.8F!''G')|BK ZudA}.0|d߽F94}Թ*8U5wqHxcW9{u/g;he@!#s"o/ϦJUd,d4ɀȮ&kQ+^g=n7<$H ACҘBV5-03"LZ`'QMۇL'yQ8.pD}~(@\?v1zuÏdvgwGѥ>cRpJwĠrZ`23}O+'OLy,1=)pyiRsOgh8\:&`qQ~&BD\<6YwڞHzݠZ qxiI!wm o۾`8rq,ׇ7V ,c:Frx{655 c pB' x }CMcw<08!S9(Pկ SawpJy o[=ӃDTVt QT+ cEGEY[D m;(oAtW)U,x)I(XWãFx ;R ~-vShq-שx~!:93P~;PLu̥u]]@JZ*N+|B/ n;_kݑ \#/vS]cە/`Uyoy"-͈b#Sx4WV{Nw)"3L]BOS#-|9baFcF禖S0% &^2xy TG<(3i8:kINS(E0zs ==Zsip^HDώ#&"NTī'xCt63z7(mwJC98vX08bGEAL'LQ&&›b+I sd:pxt'*AΣ?+rm4o ݃l(F8^\@@2 Ֆ)l"4!9A!W?mp-\^-x%8N9P-%vXKJadV'uGLT]hSSom!P̔Hwb):iBY,Tqb!m^{I+`nBB75yhK2(D5&D $Qۢf{U׼CXlR?谺ҩac.;BK|ۉUG,Zu&˚͒E^}.!beru b!8U(OC줚bxBТػ41ιJ$]_L*X^@ rWcB+zΣۉo#<+]~Y5ɀh;R<\wiAHmg ynwCg4xHUG + )tbc+}LFUDڂSJ AE,`\XØs.؁J&ȗ4s;]B@gT^4ZLv{p'y_;9s@:0.ooSB@8kvMٲ85^{Sp>[:iU6& >~RܔQCO,h;DP N IN3.$3oȖwK酱1"B| 03v*8=*WfQ'y' mJb7՜_cӃq+vpҢmi%7q6@IΰA טFG:e:aȡ!q=9iML4cNRvhHn ;7rLA~y:nrFw&YGyC6;\_Aص+bIϜe"mqaĄR>jsʩŅȧ?QމzF)֍)lB^ڃĐ AMn_d $O迌_Q"CWI8~CCFI56I{࿏)4go'Qgbld@4;iRvPX<0:]ȑ$͏$Fحa~%oVд1ZUjqhs 6#0*R&p[G@(+EtBɉ޷ Xnؐ[Lw*B[EkG:)+IU- t?"iFJ2O)wp;`w8H)W{뿋$poB _{2LC1UIx6Iwq$P˄@1fv@юÆ+8qжh\nFcR (AZ-p%IQZK"列Ll^Rbѷz[<\-+^ 8du 3%עtܵ. )Dwdb8nEԵ׳,J`Ghє4C,mD5gb7)t&jIb&lRɄ4QT Gl㕴DGHEF'9|2 rڦxPaxG=tTDGppk L=o##,K[Tr ~?k]m#[[ ȗvh9Z֪$0WF<8>yY~:2q5:>\1z I Oq5ug5E&K.X>QE[Vwk{$zӧXFTL R@)"\KоcUʶ™ퟺs1&g?߱Ւ!IAjrq5C{€;}#B)FPrT!^ Tܗ)vShQVIh*$\H$u]Rʯ`$ ./J4}oM^?MtN^^лc23F˽:FޝݸH$3vlOQJ5!ޥ%-JTCoUga9 0wGESdp=iGw6`*n4c #" `rH ͽ)(IkF^lK遵շDH"v>ᡞ| J'jߕ&IR9E4 uϧqMi!5XÂAwɍQ 2~;o88CKB0ʒ90S}6orh jrQnV+bEN#<&aST!ND$jNFMxmEV { ZҼיu N*>^+[,>'RM (n*ۓS^x&%Br<*/R1(IJ-ң^rKA40p|⩇|$ݷ> 1xG!@ZT@QWrul[w{.'&O1MgOSyR%/tjxn)9t]=24x5z)Z[#9K|g5VVR W07Ee1wM!ш>V8]7Sg#lX9>kڬ9ǧ ol LH蘔l&l1SmMb 'C٧ys=u-ͳOwˡ-o|0Qc2Ce.Nတi~&_Yv38k 0y9L: F۞Xzh^xsro9?u6ƨ+;wePaF4/s$U])|;at#1G2!`lj9\#It@Lpy-Yu}] "8g JtE2Ap@ at6ɉ,x ζHCp"<#G>LVJtH T,9G,o{nh@q$0\NO"W J2<VglAro:}~ߊz{O880z۫]ҥ#66Q(=[ VD 3?P>S>: vd3y#r{ǵSr|Ǡ$ wq=U<_)+#1> B.7IqH)>u[TJp,([h ާv|υɐ_B}IS"q޿8XǪ*'c蚚ܬ~4l)]O}8Ƌ]A ۧ7A:6$gPI2Pjk(MzV2 +%3:0xB7Enï.Ej4HBBp)il%l dz0n ȀcZ-k)K\̢J`TP|7"~'dJ,vb )iekEf$"Ʀ id௰z3VEh+ϠUNgu3s'"*v׮*P8$&#.98&_=.1a E '<,L5|xfR@#-橓8ubo< XXè0LQGU }a-PCroM-T1}S AjQ=Y^TK:&vz* =SEJbQ31cjK ll4eKi͊f:;.9fP w荑AoVp\/ ~B`c#I3%T\Q@F7bIu#_\fpݍOɈ7 ̈́~?vSr!؜I\twJs ;})B$1J@#9yR=6|6m|Ua EWsykMNasVHè )i1ٜ2k m⃈Q3Q \iIlPjv5`>鶢 b3^;OϜڪnn߿['AYD"9K3ٕ7ͰrZԳFFEq8 a~l" 8( >g+uM~hDZ$cS`I)ELBX;TPN,W х]ԕ>v}SdgBTC s;O~ZH:%:M+~ȳ'X:gSHt9(yQ/䕟O. NW9w&{Ks# qB̾WHNT Ţ8'D^cap)O(#-`lsܨUaWwF$|4!^xMn3VŤ@<0i|d 2.6; dnW'zv;ú56iFn#G2ʄXg$P Y%:<(+"Zj/djcC6Mr8L1ѝLMDT8/_d١†Ie xFCuFD"fdW˜M`s< pLm#0_Ջ P#iCO)L!׷c D"rG \&% BDYUN^2Tlkr+Ț]Zl,9N_@ [+Id~Lciny#,;^IwmB3֓0[lw:os~cI|sU8 'Hs Pkr+%N(7aÄK;apj?o\ixHwB:GB}&bA6'ig}Rܢ!K> NnbQUZ؁5,o !Mkq"N\qMt!ug.mDN0 "׽ԮDf~?]6z@)xU$e< lvgtvvgʖoPr &ظ2mo6 t[ \wNk:BCާ:'ڡ Sf wM5 IA_=~6%S|xBOfP:ti@wB֓@&VHe QB6p#ڴ :q31bGLb0} ڐp*3u찧X0j9/D|2dK>ױuB"aЦ&d<bl(ՐZPY=&\[;:<$ixxLt2qcFN' BVօ,.!XmQ4ySab@Y1ۄeFa$mh~%xDVv7^ 2F .IgUGZ`KF!bцk:pXx (gev7a./0DK564G& ᬅ`1)T"Tl#{gcŐ0ɬCO, j4џ :Jp@zuC[db5&(zG@D+T%GҵF[wԑSD4F2FH~pTey8V HiWp$q0_)j|J?rovГ.O9\$QO2ߧ*Vg1vȳJ2;hWԙO` -~: OO/Ɔ2) LB hǩ:iJqW#!k]`l*Tgs}P~ǎhώY #O)T+U1\;檘Ƽ6Ϻ+XVQ9ى,ETT7YD`B(#4RDweyIȲ9ƦcmiIj<) \2+ Cp{pǩ;OiR42&L lDGyWi<[{wy!l iu&R GcF-BQqbtvPxqV'C?d ݋.8N-;G.cXIL(9@+^C#q)ދV2襳!$\&;%5ګo<ľ팯->\8*b 3焽*RŴ(G`q+OqbD%(H,][H)\~*a!5Rʑˬ+ @W33Nkma نq S4|3B!Jޡ F5⻎>F]2Ldx-.(]M -K fB0AdVw/tŐ^.X7aD'OyJ{$Z`̜KG]wQ>%&b)ǖrZ!+*FUrb,b|)!1VG%\pTƷT W KQ,>uT<×td$vgp)B/uIS`Zqvr-*gW,@1 D겲VAd%P~@%myrse闈;"VtQ@sa\|+yR(H ZBO;BI1:#)Gt~h~gL\ĩ-( fSSGPl wP͘q OBZ Cx3@,GLHQH=CrD b`<'Z[Z4i::oZ_KW;m&8n b~TjB\Q6Yk^Xs)bazA_@轁JsSFCrGt"f%?_j2f ˁ-088,6|I5غq*UVؾb@ReڹAbR =4}\rIL*+);[4ٮBӝb;6[9?ЭfubsJ9J%J Ak 5*{*)<"3B[!S]+ 01 W}(01&}s-&hP]!!eUV2/!+ u$<:P@HA՝@xi{-F/>E񴴐dq'/1Ybf `lLMuM;հD1њYToD6:(Yd{_PB>]ѰOW,C 58 :lB P0 6 Q7A r8[ڞ5;l9r>떼VV-g:Vx!Ic|?Wy>M3"FVSQp``5]r)J䓲F `L.-UaHZˠ2%:ď<$)~0_d9E?q "6^+#-]%{N t:bi^^d"6ҚV݆;hb|VPIڝ%;#Sc:߭*PWk>I 5# YvCт"sUٕ.I1gAU}@ &xHSq\dž{I |j8Umb:GsZI`2b2e0q̃^qJmML\rI' U (*%^/ Q̙!Psc;RGUPm87,YlHsp/Wr`tq%q ids  T`@x1}=͉SLXaι+ tǂDqX Ky.^9K &MrId' 5~ы&k r,b{<e*D#L 9.0͒W]DJ0&tL$ l|On/LDKxFJP&aFU ?H\:M 1;%NsH'aGFp|/1-4B׷Pсjr@~T 3pfUld&X?I\p\ډ[[HWG&>sCEB/V.Y͋HaMSԅ)P#  [bmI2ʉ!>AE7[;`cH>YW%rTq, C*RH#A!{嶈Z@EOo))%=YyYV5O! yH?OAe2t'4<rfIX BS>.?Gj_&6!Y():YےQ1ٮTWEQ aqWGCx9]•!q5Ȳ]]UvQ(hJ,cD:u7$BO;P kPِ"2ōݑd4HKFJBwn(D( Ґxz:kĊТ|WwRm^ a8.W,j`]†xI)@)LZ=2-ԑO6ƵLwŮxtb yZ1Jg0 QéHVbYX읩eJF"]#)\Q8F_)EvЕyAH#VcCEWA l[TX*ibx\'jnjDP'Nz8㙳LV%d,# +c+4\^058)IE} X]|!=[2,7|ߥI(KHd|tyLrǴH+̝9flP Wmbx9E0tP7}5[^2hfEVYFBt ? 5*^_c0ND-kEfF`G粣+-W< c&8Mq); ]MT塥CJ&DxsCD1rvфg-QG4IۜvT5 *ǫU=(0ka yx98LH0hUowSceضJElD;OhVD!x*;Gw:YyEk)UD$R8>)|I#1B33_1?D2%$WP>P]T^zF&BM Y f!0jAGt*Hڎ99`"14nt` [:ei0h!♬Ĕ6 2>D9MrnSR"i$~2_E©WT|_X_ILt0)^#XxOЃb8*c0+lUH<3"`Ol8ۖ>x"e1^( Wd& aioa]wKc22X@K [84i=1r!` AufQFMNL:nx j DPW'8=b<* 'l8 AEKԖřnxΌevD-vu@OMawfMrSräk&I5+gIT(T^+h()`nLmA9%Z68(RHT|;ӌ$S&iYQ 7ƀjVVȾ*_A~Vta+]t^`;OXsӑՎL6Y̜IO-|d$7\e `P{mD`TcF.uʄ.4ހV+@WUE.R>"ǗuĹ I3iSt'uo Mit!_DL񃸽 A{DBQ12SHn1@>_xIa)#i"˃z!cҴ+!ͧ҉lrH?jL1وamɃ]yq"(M*XUUH3==>fe O+! mE`PƻgjԵvzKyW_mUq5%M&İ0fړ8Blh3EbUK{@vH9ay"t8Uy:H''ԐG =~>D&* 8sdE_aeJwά{/ETr|.a}h.B,)4s5@l"$Hp#@YHCulfOI{}9Vp<#{ Ď*ZU@oë`z ?׸k?ӄ+փI';l^Tҋ*i5΄tQdx0Ld]qiEFcF8 ݝn.>FIbKӵ /M"x "ő M{c\@d'f;rcglfgW~W!P__L up]umCUmQ_! }&55󿦺?'ϝ=c=@ou\˔n. הÖ}է3?;.d6[c;a[)-wl˞d+GMwL> {}:揯~^M.II~e3me!%^U3,Êzfyބ%Uzy6wj>? ;^{g_ۇj܎=NCl+QXcӽyǗ?]^|nQiq|s*\zKk}ǗBeGN ?잾{fX巗f1Sִ*\SNyakO>,upu[ԍtpwȇiIlߚfnSt.{->5VB6>6n{c/dכ)1_X;,xۻ ƷrK/Or۟w|oHܺ}4|U%nmyɲ*#u<]7+1\~ͱ_ MJVu;r-/G)Cܝ9_{sx ?~.uݟ:eڹA{R~ުm=NSΊNϫjXޯ~Q|.I;/Q7zp%ԯٯny?wk֬wg{%OrZXrϾݰ_מpmc2-s 9say;_=7.myC|X.n=|黳4^c>;m䊯V[pU.7 }lO伷k_{E>]ǽ?>|΁{l\[Ӛgy~|ᕏcn=_~=du Ʈ=q_W {:y|;/8Swy([F+ >6/j+mZ _tiajߏ:dMSdwRȃ#I>狆:'?7eYq5Iwxq{|b:䦧7oKѷ?m_v/oμsm}}ix%Wz/פVr}xI.kꮛˬ{rמO?uG#Y}| _}߯yҏϞ/*_3StZaKr{-_zE5|{yĭ|Nx{??}CדS>Iwbe7} hؒW7]%UwGz!k}t>O_A&_qڋK>w/N&|>ܭ늿=׺8j_&~}剆eӲo~ʜMyG{뤛tG؞w3vYa:hqѯv'R/\CaCKc{ZtC*ުt_<֖[7.C?Z]/7_}7G]vҹ,}kov7Osq.YwD/ߪΪ̞6͂ ssq⡧b>oYx{ uܽXs'v'/}T߾]U???I?}w_[k̽O~oߘ{͆OyObwq-ywtjti*c/{n[g[?x{G{mçKc_=[7$>[>l!H䆧wx2S/+nT?;-u^_j}_.ާ7O*??n_j~|;3Y/Z1/o{Bf/F~Cn-gNk -<9mr$&Fnִ˶eDὓVyJ?knzl%)Y6w/q˶}pyI슆Y{>I~ui{ݷ;V};-DI\)_Z]B5S4Jy'8X-ٯg_b+QRݼc:Оyw՟f9af`;-:K7іk`5{_-N-q`wƷyn;oR2'իmcݼڑ|ֶwx ʚWT7IrQ3ug%gmVi]^m gvӏ;mamV3dߝ˴*;?bd'%;Wz\vOBOjHNl\c$&]V|UPj[L7^s{KcmzQ,(/Y=gfCQX6_n峫Jj3sO?.?:%k=lm~VSsEG=~?}ngo~-_~/n -Y[w6]έ7zy:n:Sɽ?r̈TVRr+gWI 5vʈ% ܢqُ%O`:O_gmN.-,*uBU۬qs˦aL{q?]T^[NJWa{v[ݶnGzӟwn)|ӻy^zAy55x3إ,؄==I;sm7Vjݞ:;OG3h&K_}*۴u|v*[g5?"p~[N΍9+jyH"v^snX=[d1sjyf7z 7_ի _Ŏ=/.1_}`!sqܯW5qGrg]w~W_US2q'a}N&?.YhUML|qDGn`K޿ >Ωl4<;=b؄ҧWls֯6繗=o_0]vtBٹq?,Yv5ZPy#V\z]-c3l{:\_wcJvkG=}O_Yr7,W?C#.7`"v|p#V<Llqª`uM(0uGf 1ԯnykWpX=ۯ5g*[.;w|/{g7t f ɎQЙ#.͵4a<8l%{Syv氒8 /qO+K`%({r]]gM;?vn۲.gM2+(~e. a'k]8{X#V0<3H;jˎe/{ W_&~+Vp|iӛm9Ve7ms_TňOaaO.kѷo}N;]y\S;v7qΛL7u]zjx&[P۾iz~_W:ac/?vo=~o-ws)44sX]^}F!taގMK;-(zwfמYݷoŎ_;YgS]ٰف/ѵfs?[et̝zy:Gػ=b拗WL;{3W[~8dB_d^}ࡕOgo^d+}xP飽Mpv~9պy=;/ï'Zmhwg4ܶ=>mɞo3_?~1=xåW=7͟ow՗?I̗׾sƨޘ?i κawڶ&Y/4=xﭽg_6i~??vc7K>OiV獸wi#/[W9Na5el1ޝdI_מVWz:{eO<97瞞w/^xdu_]z3ӷ~#.n]`҄O}-wAewu_؆=xUw_ܬwtC{ii ߳/2n/xGf|-+N_{٧t{=O%x&VܴM74pQm~>6̿wysםnfO&2m)df#k_م*rx!^K7-vn/筮O?tsٍ-+N-y]sR_lzU ;69m~˛7d]j;>lު yhl;;MJɔ]:\f?Չ\X! o}ƻ~eM}|G)kAwїռם8pW쭫Obv}vߓs<__}_wMY/˻zN;q=],u]'<|hհ?—}ה/s-wKKz^_o?~›. }!~ڿv7]}”ے 8슦g6|x/=/;.O/[x?Kc{*=>=yuK~oJU7~p|}y??菷r#=n*n}K:4lš4Mv;wޞxv#fM_{ѕ7yWͬ z=7믻dK׮>W~v=gucG.}|ɖkFX9Em3Vۇl3zKO[uw[}s̉U_?$˗-?{F_ {?z38~vv>i C=K'6iuٙwo7gN叞gwKOڋw(]ôN 2ʏXt>k_3e#[Pn[=]d=o{QSZ}CGloY:닯݄\V\x/6uQG?y%<~;=f#_8S{Jzi/ӎ{{̨>黎c>?`q%8mk{-nxv .=wmdیn^> {>wʚh%wWv?yC{3|ArW~!/a4bͯh*9}Ե.^{Ӎ[مo.W|y ;6Ե_]ЗF-9rd[߿WDNyeag8}?)_f|&:J&b\91Ϟ'œ=-e{6ŧ=ʳM9/"^3#WxoY_5fJNjzOtvpav}K141&ˎ`?`?n^1ΗI^?o~M75tK,oU<1kMilRRz˝M[־}[o0s(̼Kw^?ѶM3֗ojkKjK&%.+ki7&B3-|+3ՇQ_WC8m̑ߩ%%k'_O?~ppouuOhbxKjqfK }۲[ ~xt:a|RvUsVlqmK>ʦ.:gx3O~URzލ>+?M1'6;6ͻ>{{|[ƞ߿=xM& w$3'|MLJ_R/-z{ӟ=ܕ7?l3xzT}K3Cr [?ק#[zƼ{`/=͏g솿}?ON8igi΋vY;.9p=Ϗ{Xt6DZ:ӗ+/yGV]w6x{u]'G ^Y2_/n[ʯ`VrQ}~+ԳdM}]{ưG=pYt-ך+l<9'bmν+<ǧ]׽\+;1Nbݘ^~W_9ۮ33~ßq_=]n=SOnd;7BoxIgQn%gч_᜙l6sC몮f|_7_Zdi:gk w{^gmN;n:§#:qyOjٲb}xǏ˦[>o-Gl;~S7X7,c}m_~9_DX8}KN0/|k8?84I?x׮s7g{7o=~&MXM1_~ԏ&/~uwwl_tV6:Գ+fOyS;?ߊ [uCcfg_~rOsl ![^Z嵍wq}l*W7]繳V导kg}|[]n)gЀQꟲ-f^Z_/xc^S6_ٕ,ۅ%7vEJOqM 7vëo4iݻzXM}3w\4i뭇K?o;qo,n._)6عx֋CN?kjnڴX]z/KHUaCLc#J-w߭'Zw7w[ol掽?woU]{Zfv_^e1kV\֛[6-r %%8fEr>_v_q 2~y9l.ضJcCN;n6ML4r䈕[>2u!]~o ;^[Ы72!nO>׬kg'[ϭIy1ɓ6y(A'>-[:tYdñ 4x 6|^7:xҫQf'mvNe76ackw:LcKZ3S[o>Q >y+Ɲ?rK3̪U?1F073=~ISkK4o:cwel*mX}Kc ~rst۞4輕?l{Ïfumyyc~Խ!v[siZِ[F3dǃ/E.?s6i~YG yfIwװ p{r'qyG<*[wQ?䙫{UO\P64a&6{,LmmuqUƗvaͱJ:kc/7f_7h5L}|{nh][rqK^>ѷ-ϰΝuP3ѻL:8~}.m*dK?}?`NCkbd}>u}}'sg?ƎvۡR#T'G??fO>m(y_`ۡelM2{MwT7#w1۞6c~ĺ)ɰ^eǒܖ v7i,-YE?y|ɇP^9~M&}EGC.3s~ggw!,bړ{9~i&:$6mǟ~Pv ]6ǏoK=v&o!tCV:t.ou[ї2=c{WwesXs_~9un6`Ӗh_~;v{.C&mb/~,܂e,yxo}?=5ˍ?j>LoUt~Kwٻ_\Zv>򮷿~ش򿽵t˜U/-|Y'_Sc蚊GG4?4Gg,i3N\w&m9U|=~|#w/9W=nol:GWzuX3j/}S7?,랹[|+7_;+:䚕N(s~+KJ~ Oɚ-1e*Jg%w;C'tg[]IIc'reƊq;!%o|J>rZsk?]⒒7\gMy6 5z}dI˦Ŷm2dfsv+2cjR~⺭_ͱ/aŪe.+)9grv>thɚ g^XdKYtؕO7VW^dS>bkжNV 6l-7a4|}KJ>ۯfP􋟳k_my a^m,Ko^_]Rƙ/_ɾz{Ry;C]u%Sm 9׸r<+^UIV̾Tn;Uk7_^Rٹqhh/-))_p&6иu0d+l:dhxppq𪉍럅vj* wM~%pC4ޚ lsyvsZo9~iv9x@hgV;]׏~Ը~#v&c?Zq8`A{!"AtB !bHWi* ERTT ;(ry&{ϬYfY3QXTʲtiqh;(zox{WAd9A׼zCdE J8o/{>O⬅⪫to P 2WP7^й(5L 0“PjsEM1!/zkQg2lj)̽bPVQK)!M̧,U] İT3||>᡹)&KU+9*|*Tv0q (7[g\F Xg.2;lC%ZbX2jk!!)JaJ߆(7nj8ơγ>J%VK^vP<~kۊ3d{}sL~BmPg>gOMG}QS fV~I:VJ0Qw0i7L.^̓%@}Lt67:VW#q) i|JJ߶Zz9Fݷ|ze {Nw3 )(|­+:%yvHp߲[<?.;@ʰ$h"Ǯy)V1<)8 b$h\^Ŷq$#b5]_}鋿nYy{ߏY) 4͊uPq <ډb[͔)6@Exh:f%:;HyogB _ 8<\o{:"RP-B% 뎶ߦra[V[O[f/`/}Be;=t+x MF5|v=#+TFdvCfP֑oS ,}^Kׅ" tɱ[B^;6YJ^wקS]38J/1iȴb_q8''3zoKUDZJlѻo_8\2 wԘM ȶG͛6fm:JDzN;cw4fGٌl[[ Z~e['E}V]be2/;dUclb0ZDL+LLLv0`Jբc>=7P!\yE=-99S1w[{nNJ+)+W\b`ZTUkO' 9카'/]iu֠d~30?.o"W8)+6X"ʫC`qT/l>&pz iEѥ]n?haĩ ܷl g׋M )<q`I8WC%ic?L.eAx~]nڎ9&͏,V7$0ip'6 ;VVHŷ[c >dI&ƺV_^O2AEzFDНoۏ%:MlzLm 8sػC':Pnݚ<'3{L1-z9v6z * яA)K)aAD%fg[kOg}{}4#cƆ@XSXfKJ)5[IKO/ %tw9g0ZڱOYk>gW83ի~!IX Tkg2-Jź>Q\٨ :Fl#X:v*DOyT9Q[nj"gU,~Ϗ63<EԼɵ!MMNF$Xb46J^㞬FV,?o*+*L}tFiiheeMc>^ư= -}}S=н߱:Ȫ$P;dl/by6^9Fff@A1R%#pK6MyN41I5y! Xp(;%f3+6+|$q''(  $5Ƭcn^׌pJ?~Ծhć5E'0tTh<ϋco$ZŽ ޿JH5Əa8@wm.NYL7c/ %uF͓$&?~Aos{w$@]R$`rG{D?^{HZkcRAv-^ Hb/X֧W*)O>? &u!/_4bGDy&?]Eu 6P J4iH49KYVH']xTg}[+_=@M`ہ[~] G~|@3!֎ЙN3{#2 Wh/7Yr="ӈI^67e@ߤؽfԙwY]ٴ8g UOpžq4)+}d|4L3w O#etᡡNSO7 qSȴ|( $ N_J0b2w}fM 806J|d_zL& AWMYC}@2XVXQ__y$T?:dT1Bomx NJ(nb,'@!ŠgpCև =MxJP$ѷm>ZҁYa0T?A ئ(_-r^8myp,KPc5Bd1ۏ6X= k'+YS[En><_+b יHdewhk @r5Sfp@! 0S 2v8!ma Ǻ;t.\A7c-kXQ60m@@]1O Av8jv=9S+֗g T=aT "-}TDWn]cVΪs=0=ѫ @>|ń.1@w+8y6﫩K5Tɑ'COs$5333|@ I/ɬo]ʹ--ɕlu7OE$4x <ҒGUU#0qvH^?Y~'](1q[U>W:)ؐejOiV1n qwۀ|׻y}E+4? |UY)y?Ǟ\PuNۉ#{Ć Lx{$=e Nhٕ- -|8JxbQUĦ43@^?`  k>o$=Beᦃ]/=%JRo|81vPdc s+"qA <dNΈz"*SӞ°UoPr_z C[-7"u5P:eXe)* t#q=F2#V x _}>?Y{ vp*uY^5KN]7wbw%4>fJH ` ~8l2}P}dӐAQw-3<|.ɪ lGevhfQq kp;%c< ?l;o u&C+*\ Ac>ϗ YQ뺇ݒuACEDK>V9ucFXײz,޷-u3n[m`(xuzXB/'$xL<p)6egB7@M=5qT8d6c|_31{N(y~ 6#?,MYfwM9kd8AYʘ\8N r "M~.e9S6cdC֙&R`Pa3?/h_O3F D~=H_+6zٻPO{R{\kd]Sge4Է4fݜR&eDzxбc"-5ߏ i5>2%bq_K[C￑簡5RɱMqҼkg:b%.[.KǷ=o -kwDJq;fLeHbm='\=(]:`]w8`k z:>E'`y㝉Gx]FjԳ;EÄF~fїS9Vq[1(OQ;];XqpS&3%͔WrJ8^ICʻnltX'Md)cNջ9>bq3ay%rW(.b=~k{gK&ߛwc]l:Jm[j?{eڛkOn5l5ZK"9|5ާa+ڪ Ŭ#J\GtIXW7f|O)c֓FzGy`FJ /jh0lv>+vPf+]#-M݂iWL^$qw A;Xg⧟ɠWq'0Fc_#\SΟFR&_Օ$uJ*1rhwIk$w8XD*nܢw A|';*뵱n`kRXOM)CRw'EyXstv{k/M;^4P8壃Lř2W0`J)-+-K]AN26]Ir(9ׯ_ĭ,: қ7=mT&wj_*Xg*]\/%m좨4S,fWc'9].h Y⸋^{ nISE7#1Ŭq&1f5oO"Ϥ>{tĪᦌk4ԸDGނ}o3.z OK@k=nG} &Rt Y[>b5{/?s6d}"#'!.F Zg-#7JgЛx`tBmFmּ^po Nlŭ:߃7Q7GCߋHL&aS䕲3STRxόްkKXT,d {;oѵo_B )QyKLPFSv{{} ]ɹ{`6ǘ`_>Gw˘9dH=+]/ܑ$"LANOGSv INR,=*[N^dj(ڤJnS4 a3zIq95V~@)tISeo;הġ0ݠC(]YtE^7wc-7 =sDXQx3nfzn)2Ar?$ 44f>i͸->5^Gi?fo֏a'X7'^eh|\[v|S;[> KE4hZa1k J& yfSJ06FW&> WRT'33yLs158dN̐5Iqʌ9WS!hP{.G3 lڵf&?|+wdKyL^Iyb 4xzl k9<*H3$b̻#/2u"?+wΏ@H.,Pt1 oj?M;lũlzҝ.EnvjUGm .I ;ڔ>gwzF5ڰ=VJJoz^᰽DOacTpaxΩm';STet17Z8ݔ77r ng[w ZŸ@_ ۋ]M~(4"67O!C|YM;v]z:wܯJԲ4EpE{oz{ "eo]IoU3xm8ϴ}GV*7%U}ZNz(jDΡ9/lIJVTcə]Rצ|BգT]:έX m"2!ҴP{b!w+/|<UVGOgW7*B;W[gRo^"[EjRؗ 1- n舜ǽ(*dJOJ #]g^9:9&3qQe.5R;Z;G!zr&=]ָmWãˑo.1q7Nn-WPf9x׭es /ֳ-O_2:ָ=TZ>'%>|{7{җ$6=/_~<$rNK ɦɠG0)t*aYjF*zU1QߴooD0Gɺ)g;7 +?Ji$s#4L/t)OZEճyWE@pНB8d+&wqVuSwXQ.m9] 20J~G3QϷ{)#"+- Z$멣ֵOmx#JYQj&r}aZrϵ(vWKsBC#"x1#Y˶O?ugD!T>A$ʵ()!9}z/Ze]( Pӱ9.+vc]䛬/V0|@vpT{U99`:ۧW`,QQ6e'2ìUڵJZ5l*՛޲Ә=3TʌX(Y*Wp04KV^iԹ&Sa3+ ޱO19PsW@(A,Dk|О{5ےwErSVo!6dF>mѷ!w{rUtl:i&=+QP`M+D'\zQR2!/+r)wrկUՋ9"t]ы}@qer="U%t҈oc:o Eq lO1#o ,곑sȺa Pg@l pv}lx~p8}n wBiHV55FsL+gPq(*{Nȇ6֥h#Ʋ6OZЀ_Ng9m\@HWT{fjZ ޅ&N[t\ 7t̷hQuƌ}θ@**@WQã&iLֻSWP%{sY'ro>ԀVpW5R!<@55uppi杀}+E'uק+6Q!Y)p,.WCT3.#EFNJvUϘ'4nE(c #Go4!2^ť57 kg U4%>@Fq\^V;Ħ@7~3mVس ca*I T*c.vO/Ga#ʑL/fWo3m[0ٸ3?jMnO|0Q -{CԅN[s u-Wq8e0Ǻgui+ %L6qo|ZrӐ<.ٖЂDˮSxM'PteY3B2]\˿W:\եd'r%G g]#T){(3EZAˏDv&u~ ' aa$Z/WyVgdٜM#yZ1؂l<)brXH'1/sED$l8&ui7Ҫ۽<-hAW؁W@/̀*8Ēn9vUJn:[C1%U ]Di\d|t/L3\znJJ`,/KK%d=<0ɸ1+qt$ˌ+ |Hn\&YW#N9U1|Gǔ7?h9뇲z0[j>H6W/h;27ER#kZh^^n&^7ࢋ|x1X<[vՍ+]%Yu Ցl|bQ/pR=-^E@"6qyԕ4|YȕM7' 6<:Mr^k{EvL,XsB"}~Bg>>xg衯ar>W@S⣻. m6“խZW6'U =A)@}>Hʪo%1tE;[$ 0`r2SZ_׿EI¨ƎL| [s 劭<߽$*Tetv<&]rZ7n4!R(H֣2d:X0 Ӂna>ΑgszNZj˷~>Q'k3gtkשc뙨c3(Qe?& ?ƹ].ܫq 'c3 aRg8Yf|䟜`~G\@ppNnD}U~ ؞W̠p@TcWşZãRuxpAPUqC_.$ѨQ wHj3F2=ߍ\H"FmιR*8Y{&33Cp4M?OtRe9~Ȩ.c>tM#q~>{fN31ny|)V~[ɏr=9AZE*~be1qk'߽9,PˌYe-WrO6xcO%K^&Q(7Ŕ:8LqdtUdHߡ'0Mnq@GЛHτnGG{g.o &X~1h yiByJٔMd:PwGVuŠ%$S{_aZ l=ᇱrq{J&'֯x;uXcuqudu}a{~i݊'CS?]|Q2ޒj1Epdz5=vb:R襜SluCvZA|;V|ݲe㣀b6*]OuBؤC#r']&/t;U{݁qVhEo.VGlRf{@H%--cɦ`#2qOհoiz[]Wv]±j݇%4̓YZ}cvtIi[H$ݽXSC:SL:ʲ2nL"/ސY֢k:'|_HzOmnN^dY]gLm2#Q;9I}Jm- lټz=--NnԽBƕ)B9 HJE ߤH@t]qlBٛi|XA~{7˗2\+]tyrx'jb_țf\*0 cA=\[`^V,e-Jx]F-!+M'p]m|I4MB7x˲KC^{2HSx*c29tUu{oWz49A(K1ddWr˓lݯߛ̬& xZ 1 F\=Π ;m=ۆkfbx*5Qj~R&q?^'^r!sBziMVc{f]0I+=ixkTuz>1azS t?5̸eԍ]F/:;LxSʗ/ȳJ1[;TXxb;Ϊץq nT.8YqѱpCO,L6g%܋a=NO@h̽J156_ƈ:9`69:cI8^WơO9C#:5"\lr$9]=?-i|tiIaA|%; . &ww_hc |K:Vxi¥;mDz\MHgJO˜ d/ Zqtj% ߀tNNg}e&4-@@(mzMO'zʫ*)b'WhSJɒ}a `W&څ]/p׾Zf3w/eC>KvW|~^;VEҔ5rԾ9T,JXlr{۳m-ֽ˔#ӲՎxt!A( z|ȻaH}g_] I|-P$[#$A9򲶵HAD%qA,F}~4NfFpD_ ->a|yDC0+]Ju1tG8_LcJ~-j+Сz객I&V6?_. Cog*Vvv9Zan7zERr7 mƘ1ҙCCCEmR2v6~恾^uߣZ*1; 4'ŚT :yS_W9-3r+oxmuӝ]/-k\$$w&9hZV{BvF\ɧRe[ɝ&ld >VB?:)8k޲#5nx iWܵ/2Il+>iԄLˊ~J0..NÓR8hoۑ62ס< '4U/z'|@0[ǯ{zP½7٢R`iR]^7֧ 쁨19 =,:鸣aTp7LR Nok%a$pi<(&^m⺵S֫M= 9T}9@wUT'zsZHZW 6>@~xzMb9%ᱟϫXE X;qc^h //4_oB2^Lwt:cb$\WYXk&9rjlԡ+ʺ8J ʻG =|}w5Rzʼtcݫ1_p٢/) ]…k$_ݛ婐#36ddlZhc:DvεÆm|-;$=OU?):>#Z^b9h5Nb߸Z"x7l譹ӣO~7sXhWmqIh)Xbg8M1*Я[_Lɷgq >/ijSc֥7m1nZ̜RSIze,=ndVFdNtðyhґOgbzT`:x0d;bIAMH!@ >(-0\9S^nm&{뛌tLE/mhx=4%` 2RQ|;ne:1LEU(әcbnk5 p~}_R4潜ǀ@φUR-W5QuXHPA!7~^,?g|<2 YZz!ahqb_Jop*D[Mͻ>\c*dZ\f6{g{WԿ>C}sCÔ"*(}hW€URn f+ }䓛(Au+>9|5X/v}oӯϮyVz"I$Xd,II w/: yE7lwK[U;ΝxXe[2eW㱆-yZxːtcunPP:h~Jf^TgM 9Z )4`|lΨՅeݗW{ɳC\V~LU<=tu3c-wD{wȎ5} nk6)uDSzR Ƕ,8>wb!G|Kv)WƮM37_6ٛwk|nVcY?̶gp{!ykL73rxɄʹ. `l"^:jv%C0PD| idhպ4>4bV^roKO#eI~R ",Ue.h18S$"#&UHf3^LqgC;ryݕu-f\L'/T,jDQfuV狚sפ >۳yS/UPc%7oX*uk2-:BqtS\-wrGyucTTlM)䑾2dxqY}v2Q0 j~}UJ J՜r|wto^vk@tzspx<-PRiN{kB'Q^Tيf^N #.UbǖߐGI|K*&2>fz•?$=FD'P'sF_#2|# gGfj\]eo]Y{l>:u,Tj!4TstW3P|DZ(u)*fn?T c5Q&|Q>[Wl\~G28&; qr \~;G:]-4+HI2A5Vv f8s-lgMŽ?(H(GZ:fԞ vYi Uo#Ӏ!I=VGJE):ފ13ÎwD_"ŭbpWɴC=eN`b gE}LJ] T zc5!]Jtjmuq:0jg‰Z:XL>oJ笊g&`WW!CNQ.L%3; Ne.a1,%mZ<=y⦂\Soד}lLQWg&$(X[i 7hJ kJ=UYV޽1φBzm]DY+ˆm5l=&%mUc]Q+<X UB2gQQ~Yֹ'q G8|g2`Q`. XbR 5Y:,Ƿo29Q]h-(倄"% ]'J cحN.dR[ `ccݎ%1ˀ^je-i?k68 @{~ֵQi;1Θ*yDNLmqa7ktAm Od~ndz>_XuHyDno`åajQS h0?P,ɼO:peļmd@JC]xtn"ThVd|=.D(|54_G4cۀb-ުݼs#xauWoU2Gv)$(اR>M=c 'Em͟y\7Sg"i/ir쟢Omk8m ڕ^T!q4Ò̀  M1¬y`ShhdrDBm.%ݽ^vGq[*~Sm6#P(> X~wJk^3 ,.=n!ҵ)̗*څ,l,V|(GLo z.Ex s"ipRy'쯯:#v%@O=Y2N!܎<϶ԐB,Ƥ!]VFO)Wڭ%㽞_\a}TMAhmr741X:$s/L3/^H|e%Ieٽ%R׀U LJ* o12y4}~hSb"\~@ò465{?_¶G\7cӕF%;E $Fp&epJx[)blKN w7eTI;od6teH ;xB'zc^7ڗ$sKo++ VeT/+ > )#|_RSݐ߼aSgV<9*c+| rm*XV0ȗH1$= ( K|.pDݔ2>pStDT=u0YUF8^y^@kȞЁadEL9~ihDtzoF ^h6f5%g{x6x1eI ߔz*xRs]{601.%<9aR XSeY<.OQxu#7Pګ`[X6T&nk֚ Yu>4K-kӤ+^ rНtU6N738}Y{uUվU eS-' |}!ͮꐑ[Uŀ"+_pm@O~iivUXvJ;‡G5!y`%TNWiFԱ۬_|ŝh23O Un~$sq{ܽdbAf}Pn.m۶D*ڑ{6YQn=y~+2ݪ*^CQc hvw+xh;֕G&8'k.g;2,;;C\~ԠOqj>S"1 Ću56\R'h0Myoߴa um!yw@cHT-8ӽ3b~ G_x\jxe+; Q3[5{q~~&~UQ"ܮlQKV+H!~oL Ws_ҵGھr HכMivTuB 5qSUq vV[˖ּ7=;''}f⋳؀TSrt)Tb`39|dn&/kHRГ'|+gWH7M"O9`cy y tm{cyk܉$nݬ*{@[B-Gtz>We,z+֨u5┭KP贪=97Ǻ9uak|;V*u+xz~xlއ5vUg2|zU,N{`jk%;݀---I oRyvqp<,n#?孝{sa=,u8sG>w'~?ZFskuFL^ܒ3= +o ^XwkD|︘͝ u<dZ-N%ɎBɵ]ZB5E uOmڪ֐B<c<$Uum`ď%Ps7w$؁,떬]iA11ní;J%JvvuPNNzK rW^wݩO4q9 p[\=[ _.>v=.o.%xarU* DUfd 6]5B!ˏkA- ,Cݴ2|Va]T L)aۣ\mؤ5W;TeٔeZOaq's,V\dF{mN9]bx#q5Du F4sr/a@3f'vWgml[uAkVJNKv/EvA`Uu"WyHXq$j5=:ΚJt}kYe2p)xȒbZ_/, 'ϺuQQd_ {W լ ؟:tR`;Ψ׉|z%%p3=~p/?u?=MrMh+Y*olxװ:zk.mdYEa"LoN_lT~~'chq' wRO=.,PK]nGTrק̚J#>)y%zMvfjXc͕553fv{e0,iA: pDͦtQ?+*Y;wg`T­ 2ݧ=8^ <+:!ÂJX ׏ \|yfTuc3PGH&C?ٸ0 ):<PZ@v7f&C M$N3|X'ŨQS-LtVC["Q/>ߘ6{3}Xn`xc]ユ X~i}}3gоdžn]9UAe(`_t\+85R\a]9 Ly>WtDzDA~]rgq]LhDdWlrc;V}dد*yym#eLT+x5nTtwԞM1xa.S9̧k5[IK)oDNWm)\^؁\+]L؇û='guE(ەp'Gd2hO>thX}BĜ@W=ᛶ~pӌkl&*23n@Op?mGj0(lүhReZvjYg9wg$~ϳo ^L?wV{Bp:%޹<+F;_n%0g (tF ћQϔ+|;3PZ( ?$i+|G|ېS_f8)|BNCɏ%8,Z;pmùWw+~ɇ ۮ/qaZJ~b5[ca)oԋ\3}P~ gMU%WYU˫>ZQ]ogy&3 t\(~hpl}c’t(퐧Wa?v[|)qM?w#g?#VٔqBhXNOހ Dm OpI? sLl=v5Z7D5fթ]{o#d|o[b߇M~WC"Afȏnbqr+vzwb*5>x[By_ag[#t\d4:2p='Z$j1ZWO7КȋӸ{-*X X }Km.(`Љ /M:.mx•ggxǡut*\>&T]~yufO[%^5ۙVָ!ύCOkXx O:u$e:l/6jhHY|w{gG}íeG 8dի=t<JφKt^gUŹ(v 6qzL]!u;^2wRP?P@*QR2[X@f#Iv #V:FӘI$%$0O2?*+8Ug{ 7&x̌Lh#kk#ck<̎dulHvF669ڈhN12sXے<+-ޔ`C3煾Rc^_/ÃccD)v$2M2h2ĞFIh<FL7rh)Di odOS{iSW Hvhm7"Xs hv&Cͅ AB %g7BB"D>"f >=~sB?<$4<`n\hgp]d ڔX"|֙`cKG:^^"M} 5w XPa(pC@ES5 &5CWbWl7`@G#{.f0#;;#g<7ЄdcV, # y`"!JT#@qr"HSLIv_=KYy&b643#Ba8AJ81&zsO ك2fF<C# zF{م#6hC!=K8x#2U[̢Kī7#:F`Ai(47TVTQ)Jᔔ&8IS#RsWxiahs fC@! N@nl'5"x D@-xEUvxX]1!Ic1`nFXql H4B iYmh|, 0 yʀ󼧅Ҝ50[1C""$pdM C9Թx.r!.#`bdhLVFVD<H8I6!pDħEPB[!0\mWqgfA& COG`zPrDqĖzp0_seD`Ձƅx6x#"aC!'XƓLe Y֙0w v$Yq΋Z!\A2QL)O8oIUy < ŵs#& 9`C>t)`yr*tAcLLI {T>x҈%[L`S@;"Q,b,ل` Pb wyh>/Qyf/@r$r}lANgkB460[ʚddJ ~fE{$lltoDv % r´A#:ֿ ᢍCyp۳̟|]&6$Rr#>Φ9iD !2!/R4M $-9'{ Xa>ؿ`m-f^ǥ//ɋ5I%fEe6$IG "CYFɅ7l^0rpC"m|- X$$AbI6@*N \ճͶP4 ڐoaĎ!eD_G5R>9;T#H!ah\V ͼC;s5yHt" -9redhB`cA @31^V̄`B\<73Z&8œ%WNJ8̓=$ȥ Q^X +u뙈Dء^8EkΉ4 ,@ d$}k{-;kOsZȀYAX JiX('``CEH"a/AHX i?ϣ } Jz9KęDXXO `L-\Tk'8@ Cf°53H=t3#HAh\b`ՁOޑ4(B@ ce $B da  b? ;L- %㝌Ll|[4/BAw.`g/B{2ĹHOΚ,en4_4[s̺FCsR &:k odL^ du!%Yjf6Z6"]m䄇^’YSPYk6xs!$6{HX <H/EjB`xƐ1 ̮: d1 -+`1*yVMv9= ArA9 X) IP ʴYIpmϬ JYsK*ֺ@.= QeP8) љs~ yS<8 wۑ$BT ތoHҜXFKAk@`Ҵdy!#l^l"C*¦p^+l9C-S5D"CE lʜP21pڋsmf62EQs[?2܆*a #F~gaD^.Tk'5 D{ j'"x \rZUd377E$CiN\ D2o?8ɞăFCt;@"EWr8ʽK5[$?tΊ<h.0BgU R9N0_eO U.x/ٿs,4XÎ\M04̼boyLa K5¼fFkBz@ gC@Y>@iFJpKa(EEM€>RLJ̑f9mσK*Ǭ2o,N:aÀYۆ3PE6[ۼڰ9)pQ 4禮i"s5ÿO!4$%54 ਐih犑HE:\%cѩŽ7ܑ֏{ doNs 'P-JSĜνܞ`<~ ( h7)DMy" sGD 2XE-uiC$x?Mi, ѴnIc9gќ:Wh4 wE*WJe5h+:Pn6;(?OD-= w#hepJJ*SfC23Si#б%h NwB[=c R$nv(pϵDo*t,Hq.q;9u8цu: lM" <06C ZU2bJJ9lowCG.Z m?wdQW <>tv2=i "QCMqR2"V2'SlHP^I™F DCE5:<3irM8+}Vx){e8[e8aS ; p5&FPb6af`Q+`=<+hP(AW:3_P<݈'CpD\P =?s( ".K[_:p1q<8~$";R͊!QQIPe;G!=.w& C=T,-7!m`)a@r:}@$f)Fd2~]oן.p*qRQl(RA2KꤸNܤ0\g4pT48tOoh;wT LX\rAU@B}9=M5oxa`!"WS,tM !KivY~zJ .ԘbnFp~^26 '>hG 2E V d?}~>A{Qw^[c$nݚddge %82x\z[*4+mqd;)3{RoL!@d@z]NSIgx$a5j† X+ȌpPb3=s ѷ pH c 1xKT rUb7 #gvP4f@eCl=p0v;)ğb9aZ-505Û J'2OO?wˋ-gZ.1O|Gz_a 5aĠ4*ZA_z[k #A ìA-`z1x8pUr ؚvrg@.Ϣ.r$+2=|(V3kN7SN'g3'?B|?pۆ{ zq,B-᫔R]~ l(Z-˃'Y(d桇\(2Ř8+d: %/f GakcfBzzoQ"eqG轰K]H2C@L:QF4%;S:n4X&?|'̞^w..JR/f5Apw3(g`aؘ: ;OLofd3#;A;#r}Q.;&D~浆ٰU_+K hF0ğWA.;;o7$4*C^Ep#xDo ,xF|6D OLf[iܳ}#@cBg Н1Ny/пm%$7-Gd֖k?562 |=_z,r/m5ګo;GdJm&p.cA Vj.M=G/r@m8m(A}BmH0mHdl%Si/qPw%$r "=o8$ oy!A@_OP ԎOP -__# ?[$gN|?BBxyܜgC.FKHjhceYwC:.7>v5*>CRn YA-ﲣ7&Ys!Sl\ XLn i@_\ƒڴ)5ȅ+17=qS2C.w:|\$N17\aANM)LгቦDPP:%zc:+^,LY )usB?[Ѯaǃ9}dJC9_1䡨00B8z*A /`d'01l 1\O(П]̟!H/>JL ERh˙bLtG!Q7ja1 y(Vnζ3نEE ~nL]ٖily.N]ys>vZXxk`MquYi-D!⩿mahEwA&Y! @y c?Zȍ:fvyr(#M6!SaF{UyR:0?ԘHY|?/DSD/J|p?Rnۺ 4K+5E;K7 bfv#ּ.fDνsa| AAH@ y!$B8Qc#S|5=tn;:Bn7n' h3e&GD+BzuMޚ4<$kWr#v#/SAmnW9q}p|DaP~q|, 1Ş:of:Mf\hio+G1AGYˌ;3Y0og(\H >& r ~BGf'̨ go?Fgr HzH# &:Ig_4@[RAօkDpa.<_t*0Ob'>zP懎#Џ!D %j4f\`% '95a ]9"%ls2)1FcfX8[P dM u֋9 -Ȩ4qZ=V v5Ds!sDW(d4%Cv]oJ~㢎D>3=GQ~82U= uQo|3ZHIZOEжIE#@PH?kH>ʼngHX`]'Ğ`p 8<!@+ fgkha_R]]{UZ4D$u0JÚa*ָۚIIAPhf<>KQen6H1FVjsHqĂ@M1vӖꛬ-MEP!OQwfBcjfUxj;(KxaF֩Z%Bs;^&+nNʭͤxr2ԄmQCHT}ďN?7!ZSEۤ9Hߪ8)e6D4V0x>D}˘Z7~ÍN|z;..Pþ&t:bc[`B9dMl$e7Ç11gٗŋɰJ"B%}!-ƨkfqn08)fz;YGau(QndVs>R6kؙf/7r?1q];xuEo$|yN~׹o)ԺŎM0\;B[]n%o0ɻ6wuߎڍY[tU0zxF.JaN] "mnNEz݃J}]m,Wqnv2m*u*u ϰeGԋ{f 5ld A`էVS-[[3sW佉- s3ݛuLw7j#ݵ[yI  zWaK VR0׮~e ۲iWIWpI1pݏxwk OqӾ=il3w8yXp9Nm?I'Sk<*4&xЏA-=u>l8wFP]Fb&2ԤW =8 1~S( K7^:)Ag,'|2iP0s@9"g>_FK̗f fsݟv.c5 !W (i4YЩ4[XEX/D Gs!yR@F-9 e y!G7g mণ"6n3LKBw,ZRTS*hFݟO"oi_XeCܚ>giV͈VaPŋu[5gV,mq/c,qo r-ZH?:#r4TlX5\U`N]!\^T$:Kgg0 tӷi:pрc5:v.qҫ: , x[uiWci✥mQ8H.LAOyӠfVT9J]Rm̚9i.Ds8&PO$xW@@botMȨbj0&FMt?{0qB%m˅fG#fE,QL)y'UIgUzK֪욵X5>_L_=ؒH *|0.fQ/vȆ\P6[svMvY=yl`__b+.B+ ]LxW.ەkÞɞugerY!z@%cz񳦾鸤܎ާZ$.!dӅb@]*~֛~DQx_{#u)4r]]fW] PNqeeZo{w>>3O,`vǝA}M;3v>_y`v>}`A$ig&-|4qan&@Fl}O[9}$ۢ!Ls7M薺ga? nd X2Yё@ ֜w" Tp#}K "ZR jFM T oC՛c : y O|@tNRNåWW}_U̾&DM5{)%.i˗Lџr<l+zi'P]*C;ф־KfnQ-"B#dBiiH)ʔLXj2|TB;d:^֎"Rʆ כc ETL f(؝e4xc*e=ШOIrbs15Nu,q\z!Te+k ;Sg@aKmCz7 U5湾Qռn<%K썭WOj oLA۹ԙ@s];hl']^teVXl'$4^Zˌg7tF$( 쬇nof%ͨMԦ KzPYź_|Ia]?c31|vX?1KvާgӶܷi);) *`G~bG{n}l_,99zz~Q?#+BIvlf9u=~܁˻OA>yދ:?:Q,D>ayٍ럧ks7|O4&Y޳̵Y];ԵĮ?p"fS^Z&×- ^z"{%(q6*<~Щ@[>2xΡcwE>.$N7,nbB-<`ݘidS:Q˨, }:(ʋS$U .'Y_z)#p?VէEם78v#P^9ݙXteI/&nr鱗}ooT}RG/"yAe;UxϽy{1zbv,0h5x_[=gm:rnTƲtyb#/L'87.H:_ްfrJ<R{;R-JfjgeǶ, D듬huS礌9⟵=&@Y|"Kzuy|9V>bS kYa_CɿO2s)6>)ّlUKC3?#g=U>O3wT?Gp Y~ς<+gsj}QrzaKT t]^GCrbeRŦ(}|_,#~N\"ҙ|lPbQۇċya"Ǣp`E, >> 7TY]T7 S/~ [iw炨PC|x #ooNTupTX*ݳM9_= }4< wsrT je._ a @A:̢|,2jA+U@MZrF0Xĸ viTeްf`]cb0yMݍye܊¹EoIK}@Zgj5?k>%nC0qtqG92:GoF\" {yf`n6<~1 ydxC"t^ϷYϑDA#;O?6_w\ϑԟ!EfVG)n_vO_+沊d&wbѭ}~VoX n?]2onTbawgN&1{Bo< s s[I\Iyj|c/wQWLOM KڹO^-1(V{QwՏc^;={m [˽M CyzUZ^!Fwaԯ\3#4\7ݯG)6JZba<af ] h{YX9柷X?5f埓]E|`y7؝d?.{rwf^&s[*s?h?du3W{*NzhF4-@^{T5iB<܇c& /ioj/4?A/\2tϠs]nm}t{x|ԯ/6pjy-OWkM3Gf>L6C:MOO@2>Lݟ5oϓ@>IC'|TRrtWʺS'|H?XI,:iڲ>9e>,܇Y쏘@bΧ&}`esd?ۃ`}{cַۃ =XogJ@qָk܃5'5C?_RcR:V{rh#cЂWmpl`8\yK'?C_Ao8yd2n?!t^GAnOc 7pC/~QwRSF L담әܢ'O5x BVCjqC ;PfL/{"C(~s qEsr?I3)=jC ^w2][mXW`%y] FPTxvRvn|9viIרo`L%tzv}T|Vͭy9 LۋִRF1{4N$a{H5zV #_`05yD|9-?O>BupoAó3q\q.%!cx I"h:~ܾ9QGQF>x[H[3nOaSفO]CON;QoꜷƧsj /NPZvKtM]gq~LAUw6 J\51o7P֨a]TvpRN@=Ktg}<)URK+|qTu`4JX(WPmm8v.G Z]M0W$ ѳU9:U95Zw+Qat4vz6ߤ(Uw_non?'*7{g<~ܭ_< t|Ic\-"8"hG_-78;2rsGZÃs2IszxZN4r`ԢLnV걙ra]Lc@_i:%)NEXUM[g[ЦA"wJ"c5bh~4d4[@7[T !<@b樥FDG3h{(4~]!Y~{!G5g -OU4Y jh mM-XID%[$J׊DWqshQy".|=ao jrBz<"t]AD/(p | <C{rm o1ɀ$<>ҫv:b$EWm~|yClcVKOXzy~M8~_zt3+'Ǐۛϛ't՜:5,O:"?rt[Y5z,j-hv7_^7O^m8n>|wvbGO[JFné" g_AVt<)>Ɔ;>sk7prh5Xk t^˺V5+IE:g䶖 )9|^C+ ȾVsdūWͶ.`9_+`{{ Jʯg:RH]W*F][؋x䴀xF@$nMj>\pPhd{0ok"lkrG Q?06 H: .OH*12 ޢ@ʚ[ ϐsPC)jr3xEWV4cЏ^l7N\vRjri $zBg8vJCI[=`%ۜF\Ʋ(Iu+#+g&o]֝-3;j,w>> ~/&%S^]e}[I:N])OL S1PE+ Ř kt'H3JtnN[] ZZ mFj{M߶)'xn =aʉrκ=* M<:V/aS@orrv]NQ\y,+5enW#'ȩ` )Z`j4Z~4E tSxE4 @#] &cg#le*Qo/씺 4@Ǭu>ꔤCn(};,Ge8}|6WedV[ݚ\vJWN t(SrnCx.,z_ȏϛGϝGf:q~FUpfoئ#zLt mPЎ\N?y{9:!l5m3۠8"AuO/kn,i%vr[饃3p*Ϝzy l9(veO1R{H"{1 b B&7Yg|W.խn!Ns'a-j]@/;Qϭ}d}bq5^IQZ&/]M yS;;;yK Y cݯ(ho>7smz,T_4zkazvmsʿI|괚u1uӧ_|[___>\րH]f<C]Ȑ\lotxK3S1\vSkNjh?P ů9q W kp^w\=ϭCntClI'x-xװwc_7_!mz8,1@<|Տg:}x.H|o q!v`C|?G"i17yx"NDP Ć~~=z,ٸOt84<7p 4׈^ksE]$j. a*6.`Z]^9\zHW"Y:ufߐz8vz1]կ-',qfO BBB=P!"`0CRϴ^WfF=أX#ݘqFm i: jp[=G'nBpMF alp}g< P  {DK$ץ8RׄBhuf?y.tzȴ ]%!ݣ>C4>%^@%JM d$A-"E\x% K46]u">a l|hߠB B6}5"'𝠎# 8{(tQph :lRMx[@ ¶+QdXN:U @cA8*=R!`QDmiS[1C -qAcn$ği'v 3n__t=KG쟨`HIRZ ཐ! _p!Q |wV8_%]GXD%G<ĢCFrFoI8" hD,尘ÒMDmEv@CG =.AzH$>cph.1Q)6cbgxIЋIȋ7$ >tL#r[q@-'Q8 xNrqxFF|" yBc$Y+&zKY= 9!۠96Hj0Lm5h6h54G qAmF6h lD[D[ߠ{ Jmmn8;u+]96Hj>n N2ip#$`QLWhQCE ɪAAU#f9!h6h4ǂT|Chs`yn6h75WQwIԱ)$Ǵ: [ QɄ(4]wԝjb qTxd9*ia(z8hBq&$AbO]BW[Ax}BxL& a?zA-!*DZ J~DZԞ{B<3!9,!IJ/FLOHJbꋔ~B:OB2!'!mIh&S?bHWB(pWCD['=>"}~R3HG@Y-Fc<-r|CCZ"?@˓ yv!rK!`Hd:"?; W$+f3 ~/d3}xAt5eqPt%1?(= "V)Ԯ+ӌA.1| +%*]$&钞Zbe% eM@PS K$whMY.q`[\R#`+Kz|0X)&H~OiVӕF FKzj)枈G?xh1gm5xhHM4 rO7XwI`n-q=J#l3! jc粙]c6=O=D"(Mc~< "'|/ylHLv&FI@4>wI@y4|F ]VyߴRdJOl <>ZჇM)||&HlZB|GĿ' eeem>$4$H 4~ a7x +A-1%v«̆B?I4qo(z7`?Fd ΖV6m7PVz70q3̘6GlDcgm)KN&`醭LṰ?7OЕN`LL<zo,A]&AaK ]kpdErC6Ç9?N Y0,,̐B2Jn:!9uՐ8A\Az(ج,*d_Bhjk5~+<_K4(+ + y̰BDNC~i81 YFŀg.F}ÎAvUuI+wwi^S`p5\PĢr2rȎ _({,8܈! UGhK>fB"v6E,#G.0r|Mx#"D2ѠH9%zE,Dd\Bq?P(^`qwcU4/NBL>Wqv;*Ѓbbqu,GZޅ\I;o]~]աq)sx<0yݲg6,^}wKFSDY+W:qg<藁ş 6˜drgC/eDw ZZ6ٙKRfuVJsg\q!7g"mm 1 bsa8?9\DNՅb[4ll.31,1="sa?"b]Σ 2lt>{&3ȸHWr w&Xa7& [)JKY[/lL9GDy )"͟fp#͡3,y9cgH_u,TW86{ٸ60)R o]{'A+4Z须|pQ~] =02Kb\ʷ͵mMCFlŵg/"bh=ZE ܺp=354M'>[qk}E{Vu.fW#.="y^o+ݶ0ە[~vH ~^(w /pṈ_`G6Գtߺٝ0!j91ܺ%چtQň⣛E{. n>'>3w[Q:, Yq"7 ",~59-i n q _F2!G݌Qd湑v5B%zM݂fYznX/QrllHx~EYگ'<" !_ u?g i7tJ#2{5*W{Y^-SG0Bݬvm: Vnf^ln֘{EԘmzET+,UD{q,*zr 6dc=P= *CX=b3<(3,͓OjfI7Ǧ{1 Jtf:3D]7Ï$gh!*G]7K6݁;!f_Z/{[SF=b7+usgkkC[!Fbuj(q\ùQְbQl"{$yfHBYpm@84fAR#][LUorRz'+qK5Xzb^RnF9;AR'H` <̎Gk!] RK/ QDQ^lGh)eֈz}Ou mjԈo8k}ݝM~}˪+BOۂkL[F!TO+6 5Q 3ҵ2B޳m% i-Il,O2XpE4L4*D7[3eP p/3;טow|UMY;= YhRFȳmK[~Q-&Gѳ~O뙶'<]y6D+@5v؏%7Kr(Z&,%?ER3)ksd,1;,6R rVF9,%zB-H-Lؒfjg|iKܵ8=10G3u-9E9/mҼ8Z5rXR ݷe BqV벻M0Bp_K/yffmA5 oISsJk2ϒi;[pEęa#%2j?z# RLK'ܐ fL*D^jPÿX1B5"IKV$c ܌j8ntd ~9U QZ0cA!#b ZuC] \~N=Zk`E W-BMpqvl'P#r+󮵳|۲EȢ2@i01 j >6OKmP_cpP=h2 1P-'P8F,"T(`-Z$PjT4߶F/0z_:q~bljо{xɗPx*@=-+Y6K!+Ah<7Ø((YS ΗC_F *lK*%fj!Q\YYM*S[ /`tl.nF ] 桵DA(?48)"Y {U/ CC5}P*)a)PU]poYڐNTA@IG2Fꮢu/tbh\[&16F1r.ĂFІS{ΚLlOы qZIbuiWx"J(SWd 4^aoҽCW]Ss -QQFb^g,U[(h%:,ebP2?:Hq2 c^7W6V]D! ג4Tcj#<ޘ(yS$0/Vkʧ|ttx+b0Il_Yy# - <$ʟyHX<֩RUFZRl J5$\:E:TFIU ,(ٌ x#Fߊ:Y&B8c)v͢BvTʎcM8ަDXdH1J%!S, ]$bxZ  H䨍b$IefJDᓟSElXŞHRb4G%5W),pHa!Ի%v=!X:.|Sh2j.8F a&Z]=0B|%,)P'bΪ+q|gې+OA*1^nP;ƏvC왊D1@Ј@٨ZV$,L4bcC"EQClWQ{Jp%B!s$Z"MY3mh#YUߒh r% DQ(ηK#MY;Owj!͗!':"6[עM$44T+O K| I(<$+&h%傺q5gʟ0chhNϮ32c-$:;5ΈNWTHDEWr7- Ԡl&B 5 * %9bIZ Vlχ&O_OgY7 /aF_0kQSgO,U#&Ji敉5c2e]^EƵ)qӢp9fPE1Qx,mg!ӐB\;L~\]D@s dFX\5@аH,)Z;ODJpu&*OYb0똁b≶M j9Z&Q $E{"BHNBˑjͱa0?+EPoo&X]j4Q" ދmV˧R7|M85q֊ ?LOZ}]\V̾4!WV׊eL%"Z9oY!vA) #DŒip(a&k7uWxb(:Ա'I4Qx >[F]VH,̐`.E( DI3z% 3 2߫y`Dʐ},®zfrHB}%M[A)R:EĨF&j \?̸$ix3JGHWWBc+j_7mXv(UOIhcg+H9•K,6"Cpzz:KS3פ%K,}b5q$I‹ eC hGDZn( $DeZγD쯙k*Bzy[b3 `bw%!7v@jѤbɔaGeM>3PȄrqu{h2Jf_8l>8*hu8QLa3EfٟJ+ ث4qSXC ̉v&D.1jVBLDԥ,pJH>)J=v;I:`)VddHT^IBgV\Qy#?s_͗<$_0-6ؐX]#?8)m'$% 223ѩ + I4*n0S A$Vv=*s:BA]2E'(sHU8Idᷤ$vbx[vI &vpYLA" %IE ƚő֊4bq53oNLtMnfer08@'Dz6 ٍ7" X#A<3LnM<A2'/Q-\zF^C]gK7IZ1 2]B Jy i107 &$Frvc #d%ttfOXcL=#U+Ilu `=.8Ɩu_k7$;p.BA$+sI 2IܻtR@|Jz M+TL]V\l$\Fl,_NYb_:{Ȼb ,V;y\c1Dz*KHWJ,^SΏ5i6jır8ceT[~(V;=Uf^5M9zC"HW-3R2zןk$F/&;CវBg!PFRhN1d6'qn _Ga9ň8!SE)طOp&Xf1 2߬7$‹N3hʨsUD`VQ>R9I^VI}$bTVPa+ v*e 9ǷUĜ8&[y\vb_Ym\vS k}T8UZ elk6BiH~#V&I[ 9_%&fsNK6Yquh}I6vK޵l_3AUd%FQ ùJErdnu9F5M@H+ "H Μ&BNđ ڄ.$vjf^]WDȒXu8[+%ȫ GA *`@"K-!XU~fyyZd!9B@ %*NלqfsIRˆ-/pAꖐ:$Kr9\ 0Z[XPXSDM =Wc$qp!U |qu9\5K~*plR^C%Y!8X\.n9\}AĎ}PڋnjK]3!7Pj [%=j*Hʐ'FcO,!W.݀}L?5r|op#k! UFPAEr9uU&>.HC.klkm In X*ÚH" ,?zq .KV79@̀^W!dhܰZOg+E>W!֐ 4,cr>ΡMvX"e:у|uvS*>$O}q:.gYD2" 9ehdsOĈc':^.H#2z*!8L@841ayn 6yT,Y@C+%.Qb@ 'J"W pDX%*ӑ>Rܙͫ +3cLdĎ]O8zW.N&ksD/E>DYt9y:s0-gA+bcmgCNE 9LJI$C+V^E6TN138gޗ8?,9Ǻ!a]9f9TZMtV"ѓ@#M4bJpnkDqv[}esˊXX%tJ^C'9],FlbO,Oʮ}`LK'.8}11\'dr=g:%ɟu)R1(.Ҟ8 s*4{]+1;%0ʕYU7Tt c 9K{jխB^e*xj`*6.)r':_ˢX*l6Dn E:-J:OEQβ$|͞Y8BjV̢ 8suG^4As~ cA:L+8N126AN~Z.Oz~QPP  8*]j.gIuV!ĥ d`2fS>Kp<2wTA78r]PP?b)%9幘E$ʹa|B'堮]*ٍ-H\ҏwj  1gG:8kz$:S6һi.U8 SX7'(rs%Kw&sڰIbIzWA$ ULUg4IURlNb[NK~5B&2u&KBߤVQ?DvQTӅʶ 1S1zI421}Q9z28ҕQ \}P`^=W7diU;y01g9uPX㧒#S{Æd32o:Kh{"xHPN1^,#UPSz lɄQKvq1+CŪ1,Op2T0$+QrB2["`)pM>5WuHS<J~iүk?q p%:NPdeMSɫA]q![=rb] p"93=C$[W`z\YE"T]>BR,SU9K7TO=sW !ou|[(Y}.G@;}u.jg,l FP)J8 s"VTV5G_) >Npٻu.;ĵbQȈʓ̆@V,#}N豎͹4u7Mރax<d*JG5U'\qhƑ GOTr35#u EVbQ18t.MKsI Xc*d~%}(@3X&-j:Zȓb~- 4v,a6 9ʏ8cIYH Gk8FYy҉_N +s}f̥I+B1վLZo39;(2"{|,Vɠl%{pMqh0zoLAPP٘&U!5riA5J ȴdjp4;ą[ꊽ55\&)M$e!0V!lBdOiYU璙B 6 )5آLKEr\HqyK 4b[L]T]Z!犄\c#|E`zD=k3 g94C嫐FUVLj[zvPx@'"zpn|p|=L\w⩣UY77r)a[K9 \U^l+UP+ªQ8)qV5HQTPxd !:TPs:2ĜV wLFı*+& Ū49B숫15\n2{~ݔs@>*Q$ {UGR)$.V'3Gڡ*Vdy4⒜D]e)V(f;2"G|VD Xe $"`JH+x5w|P 2ue1 bv|Ӈpu+d脭.p:K iN >LKl,SUb\{CO$ ?CɊsA]{`8!J9L1ƀ$g䴍})aU=:̛v˯43G.䛐l!Nα#O{j3O=OD|B"Bk1[91 J!9DZwr}SIp{g< (Մi}\{`BصHLĩQ}1'74aqd"I>K-\\=T.¥d;IYEa3@иazqT"S7(V/=>F}\.9!v q-/ cSiTbsehB7+j9B2:ǜk7& ! yXTi \ *E\|EzS" \Te+?IFdAL4lu0s\I([&*2т`Yop:$ ;^%a)%1$wq5>RatpXxf`(eB}$(*Va rƀHo"90Nq1Wr$5#c _\DwǮuN|uVG0w+6VV:ݳ/}>hɸr=Ox}}_ zRįQy_`=}|?.'qH;-{~ZV9B;puݚvۇGߤd{c[\;vNZ/:E9n9AoN1\ C ;8~Rgz:0aji14ZiۧxܺЯú?^:8^Tz=:*%i:k4Za4\nz52q$P!.()O7yb0("/')C`T7ndjh]"kew053jXm@Q;kڂbíS@fNt'NZĆL4vu58Ղ۹lm@OV/`ڒ|k3'Nv,-6mOE;'pGԅ 4xcwNqN&3#cH@R3x<Mz+$r&(/uƈ<dzs|sѶ_|/ps:|Oo;NG#yGᑳroڃ6Nvkޫ/j`#{'a.8G[?vvO~.wvO;ldt^nn>Iu~؆n͝tmo7l& ՜[e0ͣ_j}MmE x`^m&ǯ~8>=yu8<|pV~>p xk&u6|.}}t1 `76lAQs~q!x j IybM9~b`kbC?o86v]MM_-|:;󟠙،zpxWApG1#`kvڛ۴Sb'O޾}b}_tC䆭V{ѓw0̜Pk5BkM~$isjChX};-W/_n57o6XÛ^ N6>8͌i6~?>~/m0\_fשs6t6iI+"#XlMް"Zi_c^lmlxEN 9[-C'?mo>; ׃6pQ2-4џvfZx3ǯWclOSKKa$/q;uiw낀&A`]GMwxI $j!Zgg\ka8]g慆mԩ$瀸udF opFi_HVcJ(?L^34hճ0W=cB&] yԯ4Yz!}si&(#^:Ϟ:5Qof^X1T[@aVy,p1{Ek^N %/oaH^Ui]e2.'ZfO_D^Ck߾1[ -xݧmy/D W{es*k[ QF#,>#N]oM&DV`kNCjxHyIEaTjLt>{n!H+NgxyKs‡KT:Պ^`S{I^je?_ѭ|mCn~W*Bt([L҇ßT蓢=N'C/$E֜Y 2jF# OzC91B!'N"Y0d"\hxݝ^_:?:o:0jmQgVtQ+z94#r;0Tg^9"B"\j u6 cC6.SV >N Tɔ0ͳ6 Ch Ð~^_1vZ#hhh]N&]xS]5{=Xwc߸57o\Dگa$ڹo97'p <Wxx U&͹ JVVH ^[aZ.6p&7Vրr:LgP6ޭ |<=1-{Xʇd(.(hGr 6+?N&-&^=1{.Pę :*]C4ksk|F짦 VjqCEkjx[~Fxn;At0lY0r=l*$v(KϷ~D(L߾olߙ/G825A^ h?!1W#?]z*1TS\%1a S[Jyt0ۀ}#lcu3Zב9'|rA7it4$VBc lͯVd ~䷪S۵o 82wD^se*^toqV?VmI?hm=+6>wUn]^ oRTa\s_q񬦶xjC ŻLN3VBDf#Oe8r ΋o -i'.)N\?]0<xV#8gϺ= ~ p\uUTq>&(9m XQ#'z~W-x_hS_)oty rE 13t/Ia#T9d:V82VAz{Aa֔\g@:c | N-I1URUʭE qJW"[8 Bh8ѹ,e?nj˚ɏ"&) c{ _˴1K" L% I˃E1+1GHOƖrYJ;8#.qFl @9ю<ÝCAEJ|n]# pD=h,3#_4_54jŌM ,kfX\4Ϻ*0s3nIB&c&szy`í]޶vb,l8xlVQG/6%?zisB/9*Q]+ r){<1 CWD: !Ni]pV\@;N:^_ \՜*o{Y;kN*WU;G}P W Qr$ ل0ݭW Ę;UdrcHh0kϣG?ssY]PdLR|3t!zAk`^! ?MRrQp W%RtxVNᬞ&iE)Fo5~uuzq9x?jjClBej΄¬ƹeAVy6Dz46 )yM0 R FGM!( Q33ye;jv A --t&:`X%J˶ jtZVu)3> f@6tٙYPW:( +v F;z3 O^wG5Dq~=xD%fXc 3mX ?@U6N{7n\b~mJF&rui&Hӭ+^D w{ iu`_m 4c%fb H!eǃ{Kp,Z[z8(;y WR:A}y5R/@Wsܭ_Mnlv6a̸њ?&yÚ6q-Yl_ߩs#-u_Λ /YPް Z%k-̔AI э{Pu;*ݔuKa2* &>mE ƾKNGcu[)d%׆{-Fȳ u8<҉an [1gp%g a~uNO` Q\qA7*k.iMuo8}+&M0p(RpG}T1+l8puSB/lATqV7k 7*A?ښnKRZܗ ep|Y>LUy2g2e-mѠP/7:N,ޤi?v::XfM#73>ݯKqMN7ޭd [&y…=-bw{d WfѢbBZ%=.c㸻C7K/zGp=5Wtm;]o`mS |s:N[iGwoOjo4πkݾ@ 1 NG&+E0l`$CkD0=ja[ߥD1zOòTF1h$g)Xt eD8Rm^i"6<`%s`)ffMPd ᔓM1P jѹ1ZȐUMY uR],m9ha<0mzC޶k/r٢9%2O~ 9lB~) S]伹+, ِ#Hs ҪЎIC+5:4vɉPBIJ*]J C*9F%^T{ :U(l˫f*mWb!6WVV_9-Nv *~AҒ\uMV=LmU-(j;#AbbVLΙPlL+Y(aܷr_lG ]ۊY͗/1|gzpsxdljTpf7TM kqo ApsFAg|ځ?YΠU5NJ1iّX)D!'_b_wQ`| t9sfl}5R)Z=,!2gTg}_򫦀GųC;@;԰ɨ׺`vSl; )5/ Iߤ@Ou+kuf]g>M;XwҮ`~. z2k܊TWmͯ/ޙ_l;Ko7ɭ*cC7?ӃCZ̲7.ett/eWl//OsaRl~Iۋȧ˨.X+5֟z]ܡ -dK/I^͜ 3ғ!C8}kAǾ-{}Ӿ).h+M2V妪v|;}Qo>+=wH3)\`~TH҉KOIЍTQ@h8ۥZ_\O@). ! H7ٹ޺[Xr\KP,/,|Iyn \%h52.L)3XGSuYzV"a+ص)P, 椆ʳrEfƫA-ʊHr8\ARK}W-1/S܆AEmnW6ۗ)(06-,?d `{4Y2+u %Xz¦ w*̯UopWH[]3l_sd^)ߩt%*J5LARy [z=^Zad`:ߪu Pˣ݃rKlroNt.?Qadc92o/X6S&d=5`+IL[ 8xXG9ag5 VIg=(Ϡ]qֿ^o9:\rUugX3ӵL^#5j3?d >U:*p-v%xyw)jYkpJv*npd5)I~U6.AfUyMSUU_QAOj12m;f񫪎w*_5EFPW@*+I.;|M}{{g`d;7tUueV~i?;5"z}Z<>٨kM&ݳk4yꇃãͽӢK@jrU<ϣk/o_&+xc6]_olXG)N>.LڲH̓/`mfU³L FqS5c Kި636_ |GPQϬoAK$?Kr{A 3-*,n ZNHzH/( ϼF{kecU GZdf*8@J(6'*W1ېtgm-嘁(^ "I%FvJOK5n՟[]{kzqNlgp+a~Q~*ASF;ۥ(>[PQ?J84"v}a7K~X0xZY]2:ݸG Aez޹][8K x{ 3w7~uuw&v妃-R *O.g,QuuO(\zxfR<28Gikp41޵>dgމs=>س5ùz `~bRڹ3[jX?߸5nq7/:6͕ KbBź.B{M̫N ~{5~~AA#imX',^7[q뺂9E +9) ɫH& MޖSt]@BT%g_sj7s{|# -OڭwPP3 կⳳj:|40' d)i33|5{ӡ*YK5I~"q>/ D!!!Rfg31p*i:8}qw,S'fhNo;Q>%o[g4&?E=:v [~'=GZ+vр:Qz֩bHC|(Ovw\[vmB +Ct`=n1&a FI\h s@jRP366teu0xHn\S*`c~շ sF'+sueDz t!aVp;O,Tu4Fvai NLNlX 2 )՜& ܛc[|y8y(aV-T:c"L|>Q_sНR,r׊kT.`dI]@ppKOzA~޿WWA۾5*E߫u̧|5/^m )|/"a񆺰{px35O/=+߀0ZvkHТ8ֹ"aNzxE 0[ufTcT@`\ :)"nn?E?,]i>)j=|/r:\'67wyg _VN*phPw D `}>?me4n[ QL.G#L.pj؈6*RXE@>Rj./;%W_T>a~@{ $exmH,pR+nv `\ #Ղ-ps6&`f=;|OXNc1NغO 2C#-͒dE ʡQNYwQ%8X`ͩ/y*>IIjԴjmn:pI+ZѩަSO$sw֞ {IDJʛP~|IHIoSNSX&A r&T6^xM/aRqecMig>xf,ɩz drdem?#|sDy5"-TJ5lI_z =BǴQxmjnKch$CО$xJnW?[ 52[s0r0%͗(lH%Ńw ]>JF%ޝv81dJ"NJ[&%7ǔG>q1eɱZD"V2~R8,"3-$A!$sE-K-XJ6(0^nW'VgZpq2Z}BOԦd%TzT28m 8 3\IFhsEP}jn\s]*1sk:BAnlӨɲArEs1B v,vL :K=1n zTKU2gbPHA< #?A@A@A@?Orb=*xϱYo=7׭19tP:0Hz~^sztrţ{[MIKKxEZej'eD8%vAY}5;>n1|{<gSsMYיD'&Ja̙YULGFq+-%Os6VF5)ʹF'u&X3#qs4jk`vq6lvu]y5\| b ռ ^vT\Ůd8\ qD_p5c}̝`҃ dk8Ơ@ם*I0fXuyk4.*)MaHA=u1mg8`Wf9-p*ܩu矃` .'6ڳ̨ }+,(u<z5ghlaBIiӒpiI>9k~qA1 W hrҪgp? >Mଠ{\J| 2?`봅堬j<JiT7pճo&(NjCFfAf0lNV0AZk Z-l!EJ`=U{p"_!vcn&ĒI~%xTN(rNjnk{ xd_LL)R@}0(='PP'*-{lt"k19~}|nf<(qi|OKQ8|8{=Vo7/M+zDGPrS!ZsFY Ij\_Gaܿq ҵf3 ;3|;rjǂ G;&7X*@D`Rrx|pks0U#{{÷r^}D_k I=C3'k0U)_ObjRw[ m k딞Ӵݲ[跮Awobkr\DvrɦRScͩз\WY15p늌\ߏ/[|HiJ a(Ty//`Fǐ-EJi ?n.ҥQ0*vC??H8 B?}AE'T+W *5bCdQ\E|Lpl0fIMsgu>ǴjkyTQS1Xvb GW`2МF*\ $7/: 6WtܑZU2D S`wϩmτT34{%c,1/pn.1:@R&g*ZĭJڳTZdz\/1R_RNqn3T8 Py؜[tNV K6b&j-ۨ,f`k 5DM9 !pi B0GȖde1k?УG|aXbu4V21C,{ 属sr ʽYPm- s4DP'*Pu.{ao3~q9~L>~lM 4Y;s1D *L 3k 2OlR1B0]Ao!sWN`uNIؖƂ"K:ӹ1~Ǭ{k݊6"t Sˣ"p&oXNlFKE=\F\*haef yʀzY {3PnЛw>W| b1 fc(l. T}Z5֘=^n9`FsEfH&ѫ.PٱK-2P(VT0~5'#C Ke-w}љ  y-ӀY*2P;ERjl&cY;S<:):c&C9_- ~о5no"vy'EFW~Eb;Z+-<X4@qeQ/W G(Rr YIjʀ6-\)϶ -B!1K6'^iR`9ҚLMt2I [V%"gi:t>"SIt +C^]Se0˳*UcQ?+:S)=˭źV~6gרq+W=wٓ7½y7訧1ϠR70}7MџwGǻgE{6zwwxכwwƻrx[@mҝKnFh7_d%-)9a e5o dr}G ֜ᵮcxYmx᎙sjqnX æo5 Ʀ"@)h%`a,,#e"cTEF*?pp>{ ^= U9v~ 3K@fM͚zO=RY^ ~_ _ X1+ 9|1K}q {G1 鳡<*ΟE%_j,X|;i/Wɒ|W~١gFs:$Yu?v3%TZd•OUS8ֈɤPz<<|O%!珞soqo γzִPV8B𠥪 '`WOΫtڄ;pb V8ɝ{/O'Ϸkx T&5gqElh Yp WrSŬHwfdIi|c_/hq-[P)Gth,-=<Œ Fq?? Z44e=RzwZz=-o6%FZz]zN{lްN(}sUzO)䖝Yf6_U+V|8ocSvNa]A.VQon8<"<ãHW}#ܹ\4CoN!<5C>3Ⱥ y 9l(7%fKUԆ~w*O_X7dSIqgWG3_&m{}d:a!eeyiOFv6tЮ̣[Gxe-_ɔovpIu\/QQ3{903@L}r@Uj7Gebo|v%v7nsU;Lpg٢Yi3mhi0:ZAByVp(wy.Hl=<y&. n뫳^/=.y)S!YX0VJUȫ0 N>tT3y͋% YUݨ¿AA, tr#ʃٔv`fm9(۞">fb/粊?,^܄A3y:oR4(NUa7n>ԠLݺɕrc̎Sw:;Ƞ0w3Ư@w{)Im ՜eneefxll.ne9CP V v3D+4G`= |j'f[e@n 5G5dH8H _Q_Z,j|Uv=ElNuFch53(\Dnn &_FuSXK՚FO t>QʈŇzIŭ(Ts1%-/wq{h_,/_Zb_綿Ev{^i);ߨ0vNڤkMn#s `9uz)5×R<ߘ"e,9yPْqSz|l+^i嚣[֓#KuE;*ҭN/t>8(f׭L'i:r-^zÈÁ&:/m-OO+ <nrr,Y3*+, WR$1ThӲZ)-<1ZS6oTMs ;B;Y' M%c2d-N5<b %$g"y& YY#N:ӘLAsH7iϳA9_ELۮqŪe3ߋ`U *:k̈g7Kih.A6\D@2a z`t;m_AT ̾I-S+lan(eX!BMu7jX~ Vc(cr3δ;?v֚c^*1 [->Z 0-Z䛭y@/bN7>5yV'6=aXV1t<R&v/gQ(zgNekzy* *xv|ryg\/ψ\%Z.?&>/)[_>:Sҹ)7TUW/6_`QUu*$%=_sv.y,o+{}/>k07hiq!&.a'NIyZgN/29t6-2Ațnef`e-Quq2kte"jT5괭'Y~OBeMk')Hg.SM#@!tHg^gTK_!n& *$g"L>\|.:H[hvr,C5h[^1h 8[P ̀HeTCX,K)8U%eE,9\xQצ+7JU18w&C |:)`SVzs/ţ䩲Vc̮ڡl3C{:'fԱF ֘WY&n*e"\Wu& &X:Ysֱ3SAvɍ</}Xۖi=G`f"r4_N@5 QDx*&~jUhK^̦p77w}9As_u[(3Ӵٷv_4<ܛ%}OO䭆 ޲-3Xe9h/W.폦j޶'0SR"nRSP*8:Og_]d&[N=5؂\Ȃڣ2N-$.j"7:}FmM LtJ8/ȩ$bn=2M7y>i+CZ$V|Z -wA$Eìr0͐Aރ慱 ˌi:8ufO/YzYg@ksPT:>PXy9:~I|KiR 7FKϕ/K|^(5޻cK7t׳٢<l) EE l[+>s,CHz/e٘OṶr͑]3ȕc?BEU2PyU|)-L`g i5\y)LҥLq$S&Wg2 Yb|tXv`ɯw:6 E3['Jm;U*= 7o/K- ^Y >~\tQ.bvs %)wKRb*݌kf8/yg&PܢpG܄}vXtCḑz>,KҤl>OCʾg)Bԫ7ƚ)ݭ{dmYlp)Cܦ嚣~U9*u$0b6pGc,EM]ݲls.jOQRۥ3(}fbPbU+mCk!g~f6gv5}uB΍Tsr|;PIWLq|i.ZE՛bZ@_=} N-TyGW |*!=$2b<*ӗ|YחxX ?z 2/f}ĻO1BL( 5I=e~7{cfu. !RO:KGb,4`a  5tp $>ըL^7 ?U,uvlxH>8Y?,Kѐ@4oGleP2|m"=F1jN.JP=TydrAV-U@H ]vbPrݍDv " RL)(UOW33l߃͸^/]g74HxfsRYKco+Jk]#8Kp$/=0:t š3Gە`LGP,?@f]9ޥSgMS\'Y\bFcX-yaN[heߴ=NKm<=JkDcxgq/o&qw0=OޕjfU7 \EC %в'e9xA~k۞/|sXAud~uе/_EAnOGnWw/ս/%|v:s[t31y+,C&VtrwSO`_82w' k|j5CGx/ O-P!D@K-% ܄ɰUeڗx{2HGGUꪓEO/RGnQUa`6VAm]vH^U` c#v05)~4,\԰ΡSxE`F0>Aw FSp9{Nخ7Ά-U.NmZ:RE AOࢌb[L@pXAOn#6 se?n;LJ;'?om;ˣßvo?wmG5ݓA#t̓_g xysx~^sv^==x8{'!Z݆v{'Ԝݓlvt^nn[~Kin_<˧5a5E :nWZP:mF "ȗhp~|_qJԩ4==RL%lz%̝^w̼Drn6[SEJEJ{vc[͟}nme/vAyVvU$,=dl/`cЊZegv0< :K9ՁaKYxbg`(brhp:C$)C@8H~ez 98V ؟`r 3x Sc>5)FzTMee+II)HMPڽ(mW:^zs/WY 20%VOf ҄f=]NƣG sGhOG)sUTu* 3`AyN7PBѺhSiNʂI4ݒ!c1n:NlMGen\kՉiM:]A@oFH?m@#Em5&*Hƀ_tpwtA*W@ 2œwy]sUF/&:PVR. |ʔ"Ok h^H1NVv72MOi{b3VY;kρ8\S3=o<7x|y?m%/ȵ?J6A>aw]AB|>i# cwU?}<ɗC+-_n.68|_-BK?Gi+WEZit=0CMԴ Ov{w[Xn)wم} 2gjL {({vP9m_&aHiR;k Wr|Q\ K6Z[?m}cK5; X)5>N]>8GFmM/Y{1T e": AAy 8I {.SlN<.h\Q<ɦlE{E|  d]uoJ[=HyuQɈ` #8/C`{a50fq(' S7s5޲1"/G6Q>WB ͟YO)b^?Cн5GBh 0Ga݁>+d޽^hgj,ӂ˩֮ycpWo?O (r7)ɄOqH~ʥ-U7e)^2%y>V#'3(ș2@ we)V<g[Փ3eibV^jIoVM9J3V yUdp)(eQv*IEV%8 ,%% 2Z7P^bӧ`pR 2To2DnkߢV_m5F<vmxB^69G z 2歷W4@ u8JN'Ut*cjGi8Hd.jN|2\{+NiKvqxSNZ^:nloќvͤRNu2AFk}ЛA :U !l> tJ)SH_M΋i s5U{crMT F|MzxLȘ$ ǁ#+ P-Q{ߒ}KA7ὋnKC?+~}58 _B6т4P& u6ӎڳd'wϞ=y|rFٿ56rJڃth; 4xF*[8{H.# $׺# p6=T֨CM.ӑ(kV[{ZAD:gxfYGQC/u1п-bTF[>2&2ZA!|?/g1#-?(dnp_h@2d[:  TL&+N`$aB&7twE!Nʆ<}x& 'a|o~պ_&gwn:5k, 3*?:sz3pSl\GT:d?"5ݰB1K 2fZMdfa z‡QۮR@ROc$m o!'~Ne+&VNgŇ?-ƶ^AFu% g^"6gp zVy,! J9fFm?1kZUK aN<{)dn.hX}c7M.'V .k0Ar5ȍtCVǻFtKX>UAQr^sPl29'.|˥s!ȶ)9BJ-.љRk)%Z֔*KO n$OlUWOmӓ 7~g3L!:98Ae28^!o+kafl6&\@ S @ 8ptr%ݘ΍(({  x*b1?$U2`~-)n,N"oӅa2q0㘒Sjdv&?6N[Kv _(Ǚj7g4eT9ipG}ndw~p)WP@Y0|>9f;.'eZ`j,p9#+i-Xu8t]!LpP`$7=< I<P̂%*ATj7?srDrd2醙{)) :7*Wu‡L4[jm@j- K`%/8IWtľ[?46Z⋵}!VK`1ۍ!cB|[p[=-]lNB#+Է᛻f? ?gW77fUuUYJpj6ȴ؍B)bkLđUtg_G RSULIi:vqŨt*YW:Fj*şW[u}jO8P")}oVy\p5#hX R)c B.;Y Հv`ƥ;S'[-}̛est>H@eSwhwLõ/UݙS$1Q)cMu/;f 9b tY>e>zo_|ʷh<~ҊpsO(_((whެ5by`JOWIl_CsB|Y$"Ю,ٌ*6YrV?3A@vXO`\mr5wvv~Q.ͤタ Oc.RPќk!)x)8-';SaUٻC8Ӟ$jUI žS ͍*NL)2+bT)akjH/P\q>?\be򉧳NA4pl Њ,LV(Y35h Px ~ PhB&i*gy[L-`䯱VakXўYZe\ \8Hk(l\jė=CpJᤠ5v{84lِ:$~g'f*j#( ߆$2-׫͆7iMЖR Kg41ye͟7Ab7=[$aZfk;1PUeS ϚHq+n]ڄ/_7a&85m V]igxNm,'og\9niov*lȲb #FyMY%@"$QY@/.Բ),s^ ˹Pc9N *z{6ZiGّ͎o"%[+tźp{4X6B4hMDe0f GT~¼oA ʭMe4)Bݚ}ڶ}kP5+T|_mx<1~H B/Z͌to#j*hAOɪy@@u Q`B TZ 3j*>ըœ/:x˷dZ9~P9@RumP8دj 5Ż⟞9Rȁ[(L~3K򪼀xYsyބy.FK ;mw;fk%qGT9kSEU[6SF+Vǯa}gc,~Gۙ;}~7}d+Ӹg,G?*3)jNRu lq|^4m| g7HCf@h%uZ4L釰WÖ^53TC WwGMI[S%7/Q߫q<(%[% lyq߫MS |Ւ |ӔH0? xuv~7} Yu yjwc-xj|Ynp{Q~ @@3uhУr[ aVpJ>JAwI[*~'W{z Mث|uf/VOc?F( `Ք.!c_㹟Z{(K3 O2l)4]K4upno8„`o5u?"d;hϚdea~#l( j03R8|S1X>` ݍB3^y#*Vr4=3q~ErhՀ"5yz>epĤ~l5u){C tj1ܷ'KW p b6{4ghM;:X /,B rǣ-UYD1/4apqThSD I=NJjAZ P)O.D4էW^ZĞr+dk97^H3GC *N̒'^=eH>H3iG C)cXB~ Dxi'4m4Dix`|Β wS%/ŘPU*é:d&p ` 7^']8kڬpF~[B&Ԩx[(TL'Ih:k¥irکB*D&aK 0cJi@g(,ަFv'Yñ@=tø0F$Aiخ~3g0[{!r]QͿģ;<:$"DUHIoēp\M9z{ r* S`Gxi?<3ܥ66"}EVeW:!$|'z0aD\|Acf='a*Kguԉ̐ !k ,~@uD/L>.Qb8v̱7?s Ԍzna1g]xmBN>zfۋ)F3L[#)'G+HZķ ?3ҧsrh3/昝mz ٔTy?5aFgV92M 8j`J}+|剳.>3 G]4CmNV-X8`i߈emUBIL^|LLWyDRXzDgN" w(S$TRGE?t.]*A<v9yK0xwbTxWwd w"dna+~ɻY2WsO, %A[sNFϹǭ֠3RvuCEVs94(H%Nc c,P)I$0ˇbk,(_ۍЙ) ӓͫFR0@6d}DN>O .C(3Q1W=+B L{РpHD422 h֠6C6Uoym|w`,zF(j)AX_at1 I@zˆ \dާf^SIc7fWqRRuXb)u2#0̲)1D8H"= ԓ3`~bV z$3ǀeT@SR SFt]B!h (L@>3p]S'O#>4+M5S(`MzGi@ **Z ܯGaB%"%lJdŎ'isbv<(֠mjXWREj5OkDd /l=k~P`xIC,?22],uYj"Ynp:^5ϓ&u_ꫜpD({Vy֨5$HlBvzєtV0Xxg"3cvk׈Òזyj^W<|l{nopئjlՏcn`z19_*V|5ibbk3UmPT a?Ik~hd (iǀ@ɼ3qKlгLUNm6@O;sXd)84wCL5LH 2gN#Q_t-GF]u߀vfx@VZ"ҡۛIr=SδG\}H+@yI x;L"1m2n,K߆nͰ2Yy $YCu {u2PY%wGAnE︅Ə8g+Ke(N|W̥wg.9 E9aBXuuPTim*3qϱ :e#pN* E5QEtcn&eE4$[3;-$95K#LzL2't16Y;7:+_vGG~tə*H߱63#2i|< >cV[\-`9Y;sۋg$!4"LfrD3+0DS@<4RxR+z{#qG̓^#C4^MbHv6oz[tּ"bGv^SvzѪD>O=ק\NCc%1 L>E͠& 64kTӬ/%pzҪEpBN.WUXzo"jSlt1(ohhp/,|P8?uK-5Fn4 :J<e*fϢ.!) nKy X丼8<38}>yN4,%7}RJܛ(bTK V/_٠Rx@ؗW,O鰊V*p[`\ȵ]}w\țJ}^h΍w8Leq.Դ+|F 9s(`M9G1o0.jd8ꮯ0&lza4)6F-:Q ϏoO6O@:kguW]gg 8jUrdY-)蟊9Wt-SE Ƽr}QA}!kP% |ퟵvۇGİ}"Ԙ-ae >%7oQ1:,M=]Qv%quF-IIDDĘCbCNtC:jX*F;֢8& ! oZd.H=G mTC="O[nFh2EٌѱrcHMi7_S' NcITh[4t9Uw%"z ̬;O{!+bç[ok d#/EX4BTOVMӁpHYZ1_E6_c oTU{'4/żXH AMj[ 2c8 o%a K|P & \G8P0A/kk@f~y2', E`z0g UzJB3|HT]c$XOCVÝ&'Q۱}kcA3 ߭mpѪ+cOĽRy"P01N_2*1^Zr!~ǔo\t $/]8b'}®q"w8U9Q<2gY)(䴱hM ;֭NTI;8}i Ȇ4v$EV=&$8̚dp)|0;Gem&.QP0_]nAzP9D)8IH:s, tf$c ڡQU A< vB u!A RT$SkcqҬQ2}z>+8U: Y&\HU{^=BGZ;W)#~x˫xS SvÕ0[<6KA}@UΐyyѫHU[l&jNU'К|rclmIV^3:+ݭ t%rB'&DJ Y ퟏʜI*`'A\Ed(=mk ))d\2ʦpD!voCdT 'O\'YFӧ3q_$(jH)rD3_*zg0+&SV҇K>D-g O;[G,%*⚗56 Ky'|+빛DE~Mn>,7\tvۿD||/oYuԛChȠWPL.=82g4=]_@FzSt^:4O;ZR~ɤ XR9/4kR2}֨nx'.iRv %vp͒ig)3ZJRM]}a~YgkwՇ$+$^:=qpATмqx,GᛳFtOF]k%!Mڋ*Ntqvrbg˶^Ù-GD+3FS0ú.^~ Ϸ-"ܔr_-KLC(8Lȩ ٙQQ_Z&}I%V7H8+HThy)_U@0<19gLTJޢ/+{VkVL Y^vdgC:0krd J߰yC!\4dC#z]Y$dPT!Ɲg6SysߪNjf9z 2쟵*tc3&2 "r\;YimRTkrNa/L:м 9ƞ{*Uy=N'M~=_25K92F~`б>N:bx: #̅K3^*צo7d=m5`:|8k N\[UfЁd \2v$O(d>oeIYY#=TDFCƔ B<ӹ$f=4=h c)_okFVj=E^BC.7B/J'a@ GcF>}Mv>(Q8~$Q]:oX;?奈LUMh; sgn )ؚQhګx0NH8=eϪ;V}ƃm ~:2`m F`2n?I{_߃-?X߂S$ZI" M4Nqω!xN*jnP#vdKE<{&I r>^ܝ?xNTB lK ˚PgR_9LD D0iBB+4[!O\+؍>sEJBm୫eb! htGHĜ9׍I+V4(lC:E.)81-_%>AJ-nJdzflϪU<^7lg'?7f7+&7>W_?{ ʖr7N^'羨Szk6བྷQ &V;/Kπ&?}svz҂_<>9n<G oҀrU,ON=i_4fa֛G~TՠO3j&s|A`:uy'@WUqV $;1lx޷Q hC_-W[x99g\$p4 Q'cG9/}8aB1)I>}uݐ0~^TRi eXBz/»R FD{.q'3tNQG .[NDi a `"9ߵ ڀ[ Cr=k07Q};J3r^U3#CK@OȻ߮j pcԦ⡺rbOp( ߻x~^aAg  E2>K%"(_3Ƭ2ܬ~wel4OS@>DY/9o҉K\*Os+u^7JM8uzdYk*{Kf-NvtxAE`RޫCIpRiD_T1?>WyP@ _}S_XL93c*t6޳͝k>4wiC79/[fIeQ<;0TO?z~)u:b{>S=\YJ"?gs4OU"1^t[6_)&b2=TR`βEN%3 iAmk??KΓ?Qˏ~/n_2{|ybfnadAU <󅳤|r+rvPyo㣷0ݗ,ʮ:s2+pG'gƖ*28MQk:0r26RUaa= `ice[KZ#f1½31y,{]KK1gHWm`b9}/4^gg:NLLֻ+viQLo> _ uc zk sA|2aNUp\ W~. 1r~dbqY4$EBNt ;c7:'{T>q߿i3']F0mdwJ˧>*cR>/~`^ #+.p?x-2fQ&6'_V;X|NuVh,F n.2q%7O(t-lx6V}xXjIgzRKq[RrT`:.k#aBtL,=Dtt-!VѠj\23{"d/W˚o<=ϒe^NA@Q 'OW* -ЊqnT %^y)U4|e^|n , &./QX!7(ubB1oWJ.4‘9ȢsAte\MVhjZup0eO))6"]5*XO@00@w0u7jR!q6__kWllۯYݕoo~-gwC4 u-J&6#VM #6h'wt-+-lN\$)|,&y"0X^78 heL4 3,KH>Lt+}Zěd2bѸ۔^UqU s޲; 9oFeg4ƞ@&>)'әcJMR]+m@fy]pYĥhb  {>Xj`Nc -u88 UwjCUmf*acsRE4vZՌwԋj mфRt0F $qQEOV@֢*Q20~V,}'/uHuN[+ SKuXqxcE͟gX1tllay_d>%WǑեuˡxFq/Q19d0eSEyp6 dU>?jQy ৒į>}%|--WW—K-H,(;ح4u-fuo\ݚ;>o܅;aV<gc?[mKn藻ʉF9N6hއz`ZەSƋKATj(5`'O\0\ol/k1ofN74rlP#>)`ZOY*U8o/ь 6~w7o.OƯ|ΜwԼqC0z+M|Pnkq(Z5o\jΩghy:-Z?:tZ[j}UEصd(6=Y{әVfms r~«( #$i. -a^`wc &x X0>%hOZcd+Re[˚dA^h {W!%!škZps"1x bivKQI5c2ޖXmP).Y^|bxx6@r;^ĸ~ L'hsL7=tە-{ڇH Q.g{(`_?Sh/A1Wc@C~0"έN|a,$aOkNMLi"[=c1&z*ސW$^Q.V|;; L%ݪKk +mzC"r > aoRE㻟qxn߼nMSnVrY;(JGus| :}ɷ?YWŶ}仝TǏvK{#vNT`|3YOucN.MS.W50)'ۃFkyJqME=M@ qizC@{qLNNpBU1*xh:17e,LjnRt[fw U4idhj\GҮjuea!׼CUiSh"ox)4z_}/U]y\ǪqUG%v,'ŵ>rU` O,3A4$TAɭes#Q6+V7Vter[ /BS ! ^0b {S2}*QR NI4:*B(Qx9b#EbW$W-Mc#Q25r:WTACA2fTIdN̳ o0%bwf㑕wa UEJO!7c {tQiE8 *h7Am%/}̈0NQpYw0."|J3Pۇ)Ȳ@^:.XUwT=MFZ7\"O_-gLg^ xv cͮ}PEx>s,O {as+m. ?KҦ*._^B"|Y {O@`I*Rnut{yoXp~2c)*9KNJr#I \rU˷j>95$)LM cM;}9l) vU.3ssXdXqC,שTtnaG7+s$ꋎB10b<-uE\~we}Od1"iM.>m5IEj2!V@Dp=T! /nX&|q&@€^e) x(Y)Qӓ"+;{zqzoz[rxkq0Ok*H|Qbi|6/CQ@c%1WLAn5D,>dŦgȏµ9g@py[i?NA/`E;7LQq)6T\t@4#q'#&5y/dI&XW$Q,OT+ӳ/͖w2Yd$V(Xj c?Е翘t`D R buk1SV#9! rV/_٠RHqx@JʠTG!p7>S:æs.&QKed튮]߾vI+ yd ͜Dj7's/M,2~6@D} 5Oe3VW{A7gN>=Fwd5OB8.|հuR';JOjcF~v>\!pu2 ٙDHy^ʹj*hAKʗE2wW|xW" vի)Wl,f/^R{Yk}xdKkgUf=KoٽOtiMoXH,m=6>x%_hupi?ceZX=]|o%'f/r sYQmв*p\!8Xk3,>ڸk؝ψZ8Ss6SRw@C4Jh0"$rXgj牨 k\/pv;ט$ΌWΧxÍ$\_訮̅?ya;X(cX_EXM[ʅj|vK0/yAnE\ 1'0rrg-6 Zyh+J#}rsUxmUVDoZjA$1)}k'/~y) Hj+Pi]p9_`=(6;q;6bħ))g/RɯoC QDsieRk|h4ǂsӁO nB|R=;cH܄2rOH,s<~5gͺw.ì׹;Ha,*Yraib;<@8Ndžj}[Q+UT fV+GԦQ7Iq!rU ɝ5HhG 'PUSnI 8Jϥg}nZV飪$ijٛWMLxB NѬKO^o qGJ iP=$ǝG8+D=+߈^M@WM)G#/pT$R=s;t׋*Q{g@tqjKc0Z^7_,o]̺ fNi#7F/#2SHo>6ۧ_GjH_Z~[$0#l;R+1qvͲy1\ wѱc\{?vg*,*&/={!79$"dr 3!MRN/\jYM`5q}DZJ;ǒYٱsMx>&1e 1ה: {l-悱^"-Fc1Wqe[o ⩝RQeKQ8NCLywm<>´[::wa~YgkwՇ 5`Wz>o5P>g&]"rb1^֨9t^S`YR@,oo6u r vݼɋ›نmi.[1G'gzgxaIdV :=>z8k n RĽTZ$+kR .6###xȟ_40ʟ?*~ .՝s{+e+iOeBL͋ob?:-hPDQNX)]!q ׯ|(leZ`YNA?iF"Q@ɷSf2&⌌j8!Ew,>/M)Iibv[J]@؃$,b kuS 1J&pKQy['/~埞>O?G oҀrE,ON=kz}>AŖ=6/< ,p<xQ3 zC?D'g+>;om~l!p^]x#G ?i5̌Njvn[$nn:~n)?yCl A99Vd\>b'JY}@rB nJ^BzM]b٠^>y"*L:k^$awI X(W̠z(ɲ y?[{Ȑ:= | %n<t^zx_%ܿ"m4/p,)w O%'`M߇ \RCD@/jA b$ج[a!aS-txrPQSzcUXv_h~F~ _DTYՂO+,A2Zl ;ԓyg۪յ.*TʄPjJsϯ _Ft/*!SUƥkIKtݽWRRnX$#Dʓ`;KSHtO^gS@V /=bz+d;\ ^9QYyϚjy+vW-l|'֩$N o)9XH-::VfR[Y}Tŭi<}vkMU,ߑ>O+j݇____TgQ~kI\ȠE_`"Aķ߻ C̀93JKz #]w_xe;^m$k+ 9~s6)mw$yG1yfnU=\̤X7cIkLRs;IeQ!G,ۨo* I=[A="#!DB.zp`HHONVߙfbt:Duq {3u $u yD8u+~7,5d* BWgwy?x`\0+nq'wӱie'hYlE uݮ']^_:(2z*(3gqd-T *ңdD:. yyoK:}0Bzq%uZn3^lPJ;#)`A>We IE~kWAPXq,2!}/pLk@c韦֔/9 OٿQD}kQ!]Q\i~=$MUR l_;2 /nr8Ɲ` fˁ)&J$UH@ShJ,Ur?ϕ-Oo~|xsoY!VزvY._c k` NWT/^?no.|2 F,z3,Õ޷OQOVfQRwyW9ZȓgRi`0o;VRG=cV(c|Pr7r7$r˳EUw ߗJwp6x( gt\K<(jieŇ}8XLq`s1E #QnkhAkNQJWzO=}Rc:/Гܶ7믜(ŭUGO9#,||3?:b'ٶ4g *}@G/!0In[dC]ӓ\! 䶬r![ϣ.cT*n0d8gM]iKs_"Qp,*bȇIxxF;&ߎ?UFLi!BwJ1ll{f^뙂ޛ/`LW0kTm^ :ɚ]3Z #v&GKsXb M)@F ēR^~u8,Xo5P~D?kф=GDf"eb8&mw*9 ؙu*ףlTl'(ѡ e,%** DƢm x cNuYN8_&w.vYN=S-HUuGGV'Ins)un;c՞q2g3U;Hdq2g`L^ҊV^:N,I#u҇X.̕rfPE>ttDŽy*q΢_tJHl[vQM;=s'UעRr+D#ir+pC*NYBiK()0H gW!eƍ g#6pQnͳ BNʙ#\VvXeq݉9eYU :xdqmTi3≙$Gq2IxGސ쓺J2-4)K{|ixgJz x<٪NZm;B11JhBI+i(5 ۅPu88J"zdj{䂬ERXH5û(QT |͈na&=Q@0ѵ^G(m&CW4eASMkf$ȕkNN'$yE:U<.T? y JH qI҅iI(//~cؽDc)NXkrD7e* R3c.pAp&X8y7s|s"עSyl ūHtɖ)|YdIK~|e6"m]6#L { 0%@U`U&c}&!?>{cNu&>W,R@\2zy h$+'3IK#zx$>bD))Ks*k$Y5#R~.a[S[)f)EQItA"_#|J5Ӫ)i10y,$o 6KdlglU K H9ΗDŽ p%ܸ3#RqpZ I_尤ij}BeAlfd084$]R[-)>, .0XoszyIlFFLXɞe)f4Vd;JXXy+ڡ6~K!*a,|NW"7X]3vq\ sr[~SUթE5!X\/#% B{*to8p2P`Jd_! L%tG96ּ?šߤs0uavDER@Æ{iJ#L&HbHZ}&aniYs('Pj}x1.z:NȦhA5:d<1˙6klܝ LuFs;Qb!F+cW,"2*"J ɬOPc(ghg9*p V%k/R/ vBʔUHeB r|zb i@3iQǜP7)SFVa pLlIEZbCؤiQ1ȵTl _+y6UN8.3A05"e\aDŜtE6m%`=ZO¸ZIю[%j{*b1k*Go{QC j*YdES`0%SKNoqcQ)gXbgY 8:KC$zϖ713mˎ"i׭X`asO rPP^oeOXŒhW4oQp Ȑaa=^4InNez@OU&e!Ce$Z?j/Vn]H2"6z 5o:=$2ݒVA { l;?shQKq qYAYiAt*m]41L905g4,N2*4 tN{*}BUfATAMY#3({ފG Ω ="= VEN~8Rcm9/.p_^Tx*ژz_ S=8*X49qֵ\:\~+W CAօ*r:KR)P#U 4iw.Bc˲ ʯ7#vVn~~ iTteɋ0%,BW2A) y\d<Q'E~C!3^Q~oz[rdV)5S |bjG0zdbhBWLAQ=;2qlR{!?~מZtǪp 'X*B@40(; ?Slt1(h"+AcKt^hz8O4;Ecse9VÕͺ&NrLt[Y=Ŕe۔뼔oKXiH\|**u)q$NBji|;"oYF֮0}Jԏ&ɭYj7's/M,2ô;k A PROf͙SEOI5wdE㸬 V֩v9jɎ3@,H>\!pu$=M"fq% oDp.eՔ+~ {6eȧ/]ҽޤb%5s7s3:键=gL;*;bX{< mj}J~ȤlV˴zt:ZѮ;\8&;ku؝ψI$=jnF3[Jpqʃp>àlZimma J BnvTQ6zKy%c`q<pfwv35#(;QypI^wZi#\d`MpދS5Gv( hmlmL*kr@ !Xg;*= XԘNr96vըRt`'Y3yDyVp:E1QilG4Ab2XKRsq'{gxaIf V :^>z8k)][kdֲl(N@8BKugܭ-;7:[DߘJ7MG´r-U ++$L_VU.rqN7 zQf[ Ni^<1Cwon3{hE#o[TDǪfɂUg[`O:\I E/[ ~qlOz׽ct/ %;ct 6^kz}$2K*ZeTlڼo+γ]ζ޸3ǿ^uƬyOp7QKCm(|bk2uQdV:Ni7l^9o2Ed 5Ucn߫e*(Ƀι bAKN9#=?BV+Sh8ὶmz{9OdVn a@ ;_{[ wOOFm>t*`w! 9|2A%Ӻaߌ_b>1$iip Z6GJaf0$3Su)V-NGEDKDy.I,wXbPgOVX Ipa/ٝrXe&! C7aTCY_2&ڻŋ )wM("vSÒ1sOJJFbZqvV ­\QAR([2wh4[J>JxDi5ݖ`+~V+v[v;K%~K~߭e]sLWpXsVJ?#B'K+Rnܹëyy)Fasap>@SG4L$&'wRXiۤ㊓ߺ m]WUU0Ao2=jKsL4=/ *R@ץ+.nNj2ٵR9j\|̅ȍƯ8<_w ůK_ps[;R\F8T[=}|Wz-$ޯsLy 0KYO\J}.,IObG7Uw{C̦fu]HFZ n:ϓߘIȘOq–mJ-GQs*N]OO~#; g;<2T2蹃CzZ̟5+dtS҄ta0*qJ66W,Y'J(BKڧ1* sA v'oQ$ζ3?t3%=ws\xF!_}*5z$%iF>Pd;C  fo};ێ-bG#y8xl bQa4&]Xvw 4h~^/,IE6HHQF%`+P+}6`18PQ֞'0dP2Jl122 !=O#82yux>FfJBz{?᱂?|ea`ժ\.5'^'b)"S~ufՂҷl7E埪'wnݎ,^=r^.&StsyChL?=%pm֭{wN8~wj4xx/ `-ʚz,Pe} "G% qIpUNtɉ&. 2{i?9^!K㼋h.QW툱èTh֥g⧖W<ԬL#SIcV*gyy4el? w P%,&8;N #]ф.e)p;[0>? UHB]Ub+Z{x=qzf:,"8 R^hcz@{V:"ڻj:Oim;5ʧ&^qVPn?"T &ܪkaE |_A;Nd4z#5Xhk'.ծ[{Tzrn[p‡~(ND@yfU|>Ek= q &RQ:Qpw#rG)cNSs8 kW1rd=QX? UuVy(%|xۡ_{,$UP"}{6.0g, 9iwQ#6"Y½Ux($/И=m+jm5_-S.{w>,b3Xo-"gdÌL+?3gʩӤ$/ QHPRĒܗGG룥/7R`+':`d!˅5;Hwl+v`CvvppVzZmT܅ޡeP6R5IɎ|,H4W:RF>DeӀ.p[nX&erHa3d5()Ed)8r5)篤=_R;PJ׸&8eHr) OիzZMpw,hUBY^;vג# 3_Jyp.o8ol7'or߿>*xSU#*䭬:kh_=i.^(x}sM?q0Z$S2Z:a宧雂fxC^\(AٸX%sۦ{t~8$Ѫ5!&jЊr+MXxkS9k$ay'4",Jw7Mr^' A,a8%%|VńX=[cy9x%zlg!⑭& l s#*=?ǔJ^"<ܧG`B2F_(AMn^3؂\GN5Y7\G?ȪÔr1?mS2e/W?72BWWcZ[()8IͲg R 7-T nv_7MS\g{NrӋomtyZ9=lнӰlCҫ>ӄ2tRnP =bv?*K1qݕZWTĭR9mfɏpV@W7OhbxſTHQpH8Im׶ N[vgϊ#Efa"}Y>›/)iqCjp)|a,Z_=)Ԧ=ԭL#E 1ז60j\Y e>-ZRqUeY;DweŹXWzyՓr*N⫒T|@^DRh>#p1O& DB1>lSxG_^RVWZqXO]8!_8vD⍃" 2B;ϿU?:=l4[6 0ksuPw?qe8Hju Zfv8~(Yڹ}uxi4}jwa1ZWGL̀vK/\˗'g .jvԙeFPD99"1 SxErūܳf >:>Y H lB?f'1M a|^@FQthGE>\^$&7 oNà{ɁyhA}T RUU0KBU8 dx ʍ`*9 X|E(#%z.X搙~uIb]+3F0.W$oQ@_O㱪۷O;ElUl1ysә;x۷ 2VޅRE=p]BH*t` Pp 927dcASNV+Lqv)_m-Q?xi h&Ϫ늯ɏMrȴ:a"LE4=?n=?9~Zy|QS`O\>2Mr1gffRfp\݃\iZi1O^K 9[w? puRei^N*cm׹sϒ?cVv^]V/:'uBS+,^{>X1'_\z^_2O/ |_gC/:ڊճбp-\|1B-So(,fΈJ}uX6f:}Xu׫}]4*c~8uyt}@[0ä3~@xP\ߔvf,CmNqy]ߣ9SwFS =t mἪc DʕLylz՝k#&d!y լԃk6֬\6ǐ9w,ϜN a7 s%,qɕO˹|5I&HR}lh_S,Y9$bcNkP/uQUpnVMEyy5˫:JjueAէؓaWXVC٢{՚gj ExT./Ga{!Q%P>vB/r}0p QSAؔdrх ^SnJr 59I{m?ClTeO9[%NYdŹëyaKC}JK:OYz=R `  e 'Ԝc1T~< 0Q$Qwmz|6g>xc:/A_q{'' Pj\8dh8Y+7g9rz5`~WB};k$jäw_詜e(9=JZlÍl;?0?8A_Ѝ*lΎNX@f6 l2@D!:jF$H'8s5Wa}"4_}!;$E`S/ 僼wO(K.ͪ0ffGp*a4gȩJ@`Z;<~nImA2>#ypc'ԓǏΓovnw{ga'On/u.*l#(H;M Is̢V;ya|q[`?%>VLܠJm{{5RoqC `2P@]L he=YNI0 {_Sބ$욭v{gnQ?8j| ogn~ΥxOے{yhl \B i/ab1RxT^bϺќd)  )}OٱnA8>o۵S+v2{ F_ܿe&G_T4!s{ Quktq*e\@Ps2K襊,׿]Wǖ5QW:23,G[;?oGo(w;0gKZ0?wv)dx8>tf=ux>vۓL"(Dc:6aͫ(g~Ê'3/q!6;6jU걫7,l yKkTryA yYG  |*Jh2$kn y]m}Iċi.U^kaCsʄp1U.+TM :jTO[F:W37Gj*um/}e~CQ, >a&9¡aqJY GG/,֤˟jJBE>CPpqH]j6y 6חbu^[Z^ ZP󓃓  Q|_p>9N'\LL0~XjTW6r#HnfRb o}>?33fz RT+S2Rdx*PqL8-9"c91_D9ںm~([ g8z΄xR :B,S=v\#Үݘɤ m6$1dZH"/HMB8B, gfR0IGC@4፷ yb<WiZ;"=Rf؋c Jk<[pACUJfS;n\F"Nk;N(u≊(V^4c\9i}UCԎ;+:7tΠn\+4fx8UER\o%/ubV\oyI>~:8SeA,&n0`_Fk(>e3!2` ДA#O| H4T"zH {d?C.a?|)'bv[5+m9̮rL6=+x=NabU)cT:eL^$>%>~xM/v9M(1'A'iL&ğU`Ӣ?&ٚq?LA϶2)fPTm PyNyP 5=<|GZhxA4 M̮bӀNh>ɣ*A~Qg]T#5FxIUӸCŽ'17BduL(TIjdJp^k$zO+j%!U=R$#/-ʕOpcཁ֥UAH3ϼj h D6:@/m/7gP:+]YnC4rMbfX?0VCt%Pɇa'MJf~8&_Hէx &uVO$hOXVɲ%6DT24eoX;E73`.A-<Nj{K[c'"6H{` ۼ#W_Vw[{h\VjS;K!jZ70x!Ax\ch CLH;sأ=z8$6 lfKHuv n:䁎+$hD@d߹D A0{=oI|U| p2P[8yך"3ˋ &~d9:d 7W@rM`~320m(2s*͖‡>AG)8xM*O~K@$| /'ӟ`>PmXbw\:@%|bp 314u.D\ A",+²Ʃ<1 hkA{wk7B+X 󺥻'R*R@2 zX,'L7/hWEӰ˲l /W膓?26L 0SO(WP2S'LA`::2(G.b|Y}RgP/Ǩ&!;c~lF&xJ9sE c88Hp!)%j`?al<ܑx*3ꄨb~"ɴUk7U4%eJer^ 'PS" 0Ouu] Ӡe9ss#rQJM^?VHS^W _)Y__Rxp%DFO<]u k>j%plKFF|7W0?a;䃶!jC=$# G$޻xxXܳ!WPB.e.넼 PkyBeuR2??2\>"v?g#2@EmyAw5ʽv0Ml'>L`eI eC5DHDl*E /hK8FN:TyE*G㶾9zX6bnlt%vK$)DR:;6s,{ᶙnf>g'B}qj{z#USoەPpOM6 Q:WC9xD h@ w ZZ0 ko)0K|x1[@b1[AN#K>HG:%;ASl;|?h{rtDodO{DqFz(,˵ܚ$d#1X5N 7 F-# 9IW YXlnam"v-͇Lj1ITp6"!2ymY A$ p?b&2gin*:48{ y0y0!h2'hMU`_=azElDV.=`g wy-q?ҁ@iJ"^(.5*:Ve.**T*L+9~kDtmֽE ׹]e`9شG;)aBZD}I$"BAiZO~xnXbA00s H#̊5(@; Py'NBL>JC`pQ]ž%RBgl.gCS>[h {WTྙu0IɪBDWΡ^L 4F7o. iťq?2z)m׶ Y4QܘL|M] fnѶ2Ԕע[ڰxc &Z`(XHژ٘)H|4VA"5̠0P]LSq%Jt $ 6oclM=˽^ia(e|pT;BH]QK8t]Zy+}Z,~!xsc4ga>_TaNG(0fRCMnrg4 -@.'MG<-È$4y|4r;/zwx!3!r8W-fV]f}Kʋtl%HDe}QZ_/r ϻR=<`bV$c9聯%hšff%0B.ݖ✺H'%jRfBhl,9<)VN/ *WBl"Lnا=_:r 1~?2<lQD_Ҟ6EaHzRUHo(nzL0]OEi2 al=&ŜsD獳}a|I*q۳h߭2^´$vA" u;?tEc9sén  9^t6 =k&Q 1W"׻u$.4PO?صݰli;vzY-n[gww{/ُD>vJmߵk'cqx>+xmdaՇP􉺉zP/rG%/OYRY~ՔyH"ȟg %O9#?/q%98F!=wλnrܙ4|u ǿG`>̂9F%TC?Yt|I̪ݥQxc\'Ax .r"6OܝWwS@3ld'~O{&W s$Q"+Ak< N'xa:Y(LmIS ih,exڣ&m~qT?W%IOz #y_lrȗ0'dcTf  #GjI^Rq/VS -{e=n}7%B|B<,2gF{,OQ^ QbLyfڥʤ(xx,Dc FL ݗ.8 K[j*ߦW;w1FşaZwa`{;{y81ߒ/rҚ%w f;Ѐ"YSl&Tg܍Ǭϔr%-}+۟N;gȾq4~af(9vvÅg|Ő$`Rp/9昸JBGyECɠ8Cp^F+`l'yK[|t; Vý鱦;=놦m5/4'vhq%ҡnh`VC:v2츐$;iH:wWdZ~l S_ گk˝.#9n 0'3 -I]`!WPӗ: |?-cX n1}˖o=)vʸm 3]. gؾHW?DIn| I8*Ht0i-~3czvZYiRy%CehMߤ61;霻Sy+*k)WN8A4"vx6u^/mNXXtC2;1 I\4^)Z ihvP1:0b)%+(R OrJIԓ(MJ{&c]nVZGiv- {>b|?9~'9dE?'GrY\j%I?m#I?MiXiR;(wPV8jJ,弌gV+V9>8y- ~KG;d{.`u Gmh; ;lGlRL7y!11ׅem@۱p=FtZw9J"<[SVc?]c|56X &bˆRSI!}W/ t9e3DAe,J-ocEI4IJhRc$9&'t U #axg)e /K~VDX'{*Iz+MQ{;[]$CPMHyZFRX0#l l5$y>EdGVC]ʡvj+Om),2&7< nw.!@Zj EmrK>S~dwʶۋ@s/5uZ̮㎓;?ɳ{]4a dIԂ\<@Z(Ӎbm>`k&:篁msj$s.YHG$u X+F&]_χcςND\į=Nݼj7| ~ b7 ,Y~~?!~˥P՗죋v3x`=8c=IDjO'A<#_-)('BQdM}l}s^kp$)yIOJF% bMGHi)Ho4v!흺u-9]u);:%2]s9]nZʙ}yeE[Lm@sB3*3.j, yZ F^N,uX=a|'gH1Ӷ(YӢBۃr"sIMnsЬrp=HsI?g4'_̜UR^]E3-]Z)"!foCy28踦6|bֈYh`#@xKږOs?2*6]=GXAD=:}(YD 01,ߴ?Y}WpS<GDe3oQaQ$Hn4)jR{gi"N7ОXZr@ΈeKs0~αQ)IҐ׼Q],)Jp'8E^8´/W{CKluV#Z!5+xgޤ}H۸=И6%psNP@v1z.mvƣ“<<<oΎ <G*Kvo,S;EC ^>iu}rmة;0a 눴L̑tVOr]Jɠ> T6%~00taKhhc'>v<0i6"Ƣ-2?`%Ub3:Jї/!TŭbŌR#^/T/aMT^pˏ]ȯЉSe%d*, *V'bG4 TRZB7Lw%erRFЮ1CkQ5]fy)@78HJtLuT! IWJ:\%UѺV.m X3I-W(a?[7TZ DJ/2=3 R[kUZL Bx sWIO~KjOq_P㓢+:c^5 :?G㱔*QTc>U ʊ8=+v9(dz8QBv(IO/e<pT'EQp _`:-#,T~S:^hhOFLܟޥyp^\-ja%uaT*OTxMxq t0óµY;Xx*0×oK\+Z" _~Qc#5602,Xc|`5p_j,"=X_<'VeE64%lRIoL|UZ*NJѶr 8' _e !ӑVs Kێ2*aE̺9䖻Bn90H6v9v/ꝅZ`l)Y&,yR0|,?aG{yZG~vt+jqr2%<@ EX|ֵEigPǝУ|5y.o͝n-! Pȇf6=졣cȴ0xFu4_[obn/PM<[R-,ؗIae\ :##B|NCy1R<uIϹ,4)N#|@1}aC\G\ea?] ΪpuRwu駲$v]M*/wW2/kGٍ]TlUp0HT]Sw\zjڳkOEBim7Sں"qvM}~('K8Yz8d'fdHqԝR CG$`@?} + YlaC?oًn?++ux%LBœ+$,& 8|or=xM{8Uު|LK_|e 4ɿ_i'bdZ6ʆK,5y\V/E‘%Hf&JO%A~{7ܽKO($U_çr e)U Er^Q}o j&J$ϩ(ߪʢU,~N2 ~|X8fFs"5j$dSڞ=ImZ%g)^ {?; r]W=bUQGDbڟœ _f$rZMqbA oɟ=)q1ZNPE!j/ފ${~q~6R<^İbW1@%I?.UL{}e`AG1:)eSbQZiu {rf On58*e"Mg)/X Gl."%PuU**Jngo^5?a!oAܵ,gz  C}*Zg*yL. M<*"pғm q.2*@; 'Gi2zIk]Ώ޲b%G}t8u,͞ӿNڝK?{}~7*~y://?# ^Dt)&Ҍ[zy椮_[ Q.d64Fe*k2+ r'nNG|npRhY8172'Po2 =ZkzJ̲rډ {pŻCҎR%iG|pF@/mړ8SнސW?OgdBb4%NIwNuY))SuuS4Yf4Zؿ>=J(=enh[Vo&V..nHc͢,n-GM{v'3EwrAc"qer0$~CH^KLnf.5D4ʥC@Y0! BMxd9VⓊd]!z @.F Ma,>jf;[gWV_5@$K kZS x}#b_V^i~IPnvҶc;ņzji!:ϐ]N 8gu\,& ?X JͪRMn h T"nd_Z{ʶǾ~? syvW_#)$.A}KEqJsG7@9 Ѡ BYv0w[z{Wۻto2q2n.dV@'D{UHpOAwV(EPyeeZrbT-0:PG꒱ rh8 Vg*K b ih*7d~b6p6Uk8 EJ!Ni &~WhmY[}#5;'k%g҈|~v%:Y,Ь[fl٦ %Џ؜ץ}`@֨R#}?Un]Z".>Bs.Twn@L՞n`Ku+ VVkkX' -}3}! dx{aphB$t6WHeBqqWF @yPzesrkwZiMt,UblBWj:(+|7b"#5X 䓣!(pn'1;8Q}F4^:4qPhU&y#-vQ\M`2i 9T8KQ A@~Oc2W>CI]6wahמw, Ν-@hV=&ft]5N7Gcm>$*KM^Fz.9sWy[ga?Zs";_ݡ|Yq FXE͒DaSc,EtB>6pߪk\Ibk;y3~Tņ1W@S!*Sɪr@r,nx[hcjK_O&9]%cgU` 6 l6=Ld9qP.C{?+.sR}9d:iRzܸB+~IgVDjcp`YLfh ta _ٵ\\˂^AWCӵmʮ蹥~_Ols>ΜbU òUU|>"y:V(w>weg䰰|ŕU$χN*ӟJߐr]\s!t^w8IoT%\Er 5ɡƕP7ZIhoJ]*n-LCsB%j3W!O^$5ѽ-F Z?,o*@Msb[Z䂬\EY,u҅jgnj]Ǭ(+ 9BEKi?ĺe_'9dAuI;S!(IREɆv΍QO(&# p(-S^Ԡl(4a J"#me gDY%zLI8_=NpO\H)AhKOxH\KLGCGgܳd¿mS컖C~Rɦ)έդ~Wɑ+;+'&vf&xfMm/D4SC9U2ԭLt̏-_7y˜ANFB.4\2^J}8]˵ W^iK]vXo2(;ҞA9\u_'k.ХG#)<N޵J+9̙ }RI}(Tk]5_aEH[n((.{Ynɼk|.fDZ'.RhddM48!B/=$]`usOQٰlgL| 2/[U@ |;KDIF*@BNKnXᢿ- 8ۨbY7)jH^U*j;E*qEDUۤϢ/+2l^붴li;+ d>I r9b0<Y?UQZ-kme7QxV0~:?9e$diwFsjQYJfXf|:x}.j2=J e_0LǻuE`g5FS]#|&%뵈ŠYuz"JP R<8?&+Nʵ]5s==l!(D#"W3iV^0 +As\+Eɹ*w/1ܠt_ҋ"vuUsцkYnH\;/bK'`Lr~Pbxx)4qiSAwsV.¥ؕs6(|HT2JK3{ѺRF?њZI x$2ړ +~8ByZGm{_7oc7R)>c<@UI/<]ڨ<+\ʅXD-tkqxK\ WSIG,Agyk藊̬B6gAnN*e1Mr~2܍ia)tWKF"ư VQpmb?E ,)Ę̂ZW3`pya˰#exIpU EHF'upt VsQlVZ9Z@YI.*B<k68房{Yo&vhV),хMUM1I%$2L+o 1,@)'0)y^|I&9.S"$׬H]w*.|0k(o2V[tAq΄ٶx÷jp;*#̫;5_0:f]"@{Pxd4K6tݼK_Χ8ES{ɓ@kj =I`:R 1TU 1 د'&%yXVY7?:?c2p <xKeJALhs\0(%;.VMRJ@fҤlv2LN{i^j?AGN` O%⬳iRsa ML\[ܵysyЮjerp(L_48JRv.W46E)yNj}1h`Fi Yߏwk:++N+@-Ǵ4?. H+eW۹E;n m,i/sf̼g>"Y<_#tP`Rmvb5^uó#_,)WWʿ1^ޭPn\;o{NO\,+4Vou>zGV?/1S4Qa77MC4$G$2L4VܡF".*UwBqF9l_Yb.h"9FmIP Nst& `O·X qW-yQ!RmfH I՘% iP]u-mi:)4Dk:{^LՐ&e^WPQļ$Ou<7B5͸i´Dai 1j^13֎iDe^* 0b 4Lⲣ 2%f/Nn0lBfr=gfyzP=|(&S:a"b]@jT/CJqrdРeLv͉1/-(VXNh5G-)ȰhW|^NXҰf|`r,n81B -<ʿ'=@ôα"B]op(ed **0>^ qT"toʌŦd1N`UVS:&k(V"c*La)äNpH+3W,QFK(ua&+S t/iU$ 46i`Pal168FS&Hpt-E0Flm ){:at?h D? !m# NUaogMP}o̩YT>/|'qn?# 5[V5^MTA =8 )j`Ru#,bބx4]CX0FiʇBBvy|hK'_/bCIQ7"~7 ML˵:v%*9nXN1 G#Eo2u䷢>~?ByA bMNa,PqRqdtţ`q|'2bTչ K4mP1D=FT)rRP&Vö%g5o].@C8(vζJģ]{!׸n7!/ɫo~;W'<N7H(?y7 Rz\KOONԫcup>r7Oxw^p>4fj=?ğ,0AuB@3"T4t ,n: íJe)4Z"/ 4}jT5eIS}TgOEWq-aIF- <&3Yu(PUa &ʽ@=0J!n:"Pgi0(B%b{I%Ty:!VWZNIJS/_֌\y` ~d&a&{jEdn}~AЊ5k>8 .L4 4UhV4-ԈQ\4dTK mĬBOkøݙ?0~:bQ%pxt@olLkqGjX!NG7MoUh߸$9׮< auPQ%,5@ jq7t STCàW9Ph? +DSWp6(5)|hH.SqGcHwN4װmllt՛Ƭ2}X 9PA3Yp4'8Ҋ՚,I䔏^у#X#@i9 gβ(5\3S3OL?3 K $@GӯBd0vuY}ydkv?ooGGo'E{E"^|A>yq3I; KtCH* :r RϘGWAB~֦RZE.qo)Q?H_o \v[9 Ixv5J 9v~$4zs΂!7&%f)L>B GAARߞf`޻oϖ5HizT=8 [G D뱺XH.rՌ TBV XzVR4L2xܝ H\Oy p{̡ Vz IS>e03)Jm^6ZI%b6$:&ms@v 1~J<у/41ȯ:fY z[ d4 jx"%y*%:_š29C3Br 9o^mRbb{#شVVt= pfIek+*PR$.*)̆J b};ר)9& |U Ʉgi]Ž.qSo8Av(s3y mƪײ}N " eQ R-w[>}},Hxiew0GS/:\%Cc ԥ o; v$wDPo] \.:6Ɨ1x3 Vo"/s)~("c+(Aq c+<2yQPԙ-&8TP-ҁVseT+]Fsp;&8?-}Ϟ0k*;Zkv"rbH:7=M$O tݰ7.' o-u=] t+s@{a IY KK"$|ūDTzA,(<*O \+`. 褥1^-OL<'rD 7UO[EZ*oU2W߮5b@>WfHNn)o"9byYKB φ/Csv5 103%5wc_V-wV73)S7Q$ЋA ͘U[ޙwhO3{^ظvE[Ih즵1L{ax&ҭm?1)0UlK _Ta%5?ڹ S,#E` tzv&A?I*B7טↄ)[z`٘Yo96&,f-(}Lj4BZ٪m0U;*" ~_jIaڣ:f~ .̈IP;Q鋈h@ ۨumGgZ *C|.cU! )TAoVJ2K^Vf$#A,dCN~=Ca2ffh{}'kfhkJ5ѾИK|^J9UjR,<9/Fʥ[c`s]S|eX;,9"bcQx@z#}Ko"+}qM'lIl:8'Y8$t+vLSfcpF )g+TωL:_n!d5+%_?qȅv{KnGkO"@x*L9 uؼLYr:Ų@4Q%72YOJTe!(@Dy]70O &FFU3 dvF^sVmhs;Zed_-o.XށJ8=-Nu;C6~{5yeL[ }6]fA\չ$n)b.N3q-IM'sHGLzj'\F4t*#LE`؊D"| -J*FQz%.)gΎ2-`kخY8kph^آZZۘ׻2tfg*mDj1][Q(S[܊&}Gvm3 $"Dۋ4J/H`/bUL6/ȲX^8vjj_Mܘұlgܛiu QZGV9_áKYek"_ydkwr Ӝ qٯ.SG6vDUտ!Mwe-UF!:~$E_&5*4m}R)2 |8`;tS \"dA6zGʔ%&e%Å嵐% nꧻoXw]ZE[F@pznй[,uü})1UŝsXrl Y 3)V۪s(0Dk=Kd{WIހA d0A~: ۬A?࢓`E&vij+*kٍҼZʛ.`U;wbTςcu"fXy&v&1vty+c*L.ʉM䡟tI)9zjLqQߞ!槵- gCEZ+^W0È>ZE媫q3NQtƞa(x͂~wEg}xݺ]hq3yX6^KbNE? 't$ݻq+خzǏ3D!1Ag.N:gކc΢+2Mj~s7]ĀZ퇏s?ڛfhܵ!G!aCpo*Uϕri4IMցEVoVk[ƊfJAi?76ZhCXQtm*4j?&mO& tb#w 5!~p 9.:E ݕV^v{ 49ԔL[H ,1EȨ5t?#o5 aVE#ʉk: OPfwo#Aԍ&&6-1%B5HR|b))WCR.QM4M6w-jtߗN( 5Il'xN)7T|SMf.J* 'Ja r>3.Gwl'j"z4TgE=̀T,d0 U!dn56\x4X!.6j }*d8w.P{&vb6#pX#[iσb꾮IӚף)?kPOC Hk2{`zuą[7MN s9aO&)N#ZjGӡ*3'|}|4B4HϜ']]HC3ƺVȒGР_n:(i-^?Uw,}5(k!.Σp2Nu'U3Qr|M\ۚW*?07iL+³` i4CF]$ +{wabE $7\<Gfh{,/G@op`@TMY9PaI(!;PN8¸ 𾡡*f#Yq c$`F#i#$AUDE"y 4 @|qꔀGp~5kl20~yU`Hsh:PAGH Ft[QrA'a4T@"DG(jŔ(a}"Q]sD"~q̈́W`@CT:K> E^UMޔ {rӾRXav>VHIH1xFgHykxJ""oͰ\dDD'Mle=%SåVoKebcayl$ J>.Po<'B,^K͇(h΅N3X3sW|vv{Oz0NCrӿ+y㹌(n'a0hC„"P'P-$- M2U!S׃je:.lΑ ; ޿|'?g4.efb@OE¥Rt4RJW֧Ra^G9gHG0NߏQ tM0Pmu24AJC:i^U w떠1WP]GhqzD7pkcC@ZNE?ήuaOPjh>z5R?`^h|E#I^Uq7jy I;'XQ ^袰XTQofjfish&Lpڧ?"jaD݅yJVG> ^9MlۮN+oi+(7FtY08"BL _ LTko;%PE8' ;[ZPC{^qSqa[!9,J4E/9$8d᧿"VGoO'nǂ뀥GOO2[8T?=t`x#.t6e } ˒莕r) L~-n/GpJٯCxIL]xt(pChl$f{|0.\W`>PW? )qo0A(u)w/QE#Dm͑GEu9TrAr켕*z;0* v`;,r@2ۋx5%6"f"aެ:ۏd柢 ;'x,/ {| G:&=AP0'Yai M@%ҶNlpك N< |pTmt*"9X;-+kv.BH E3KX>P5I&ԞW4¬-IvMn:;427B$#X ܫJop 49 =0rH'&/kWHw?b/y'c^o҂=_TNf|AyTa^D򸪙IPsjlv: mjyo˿*|{( T:-)QvVfS6LM{B{RN,"C4)2 3OO`!Yus{?Tz/|WC2:SŢ@-SȲs7#8<Eρ5zm% -^{ǺzD0iFRźt ihCx |}羧)9e3w"aRU UI>V˅ֈrQ7cwg=JNߟpmZݟQbpMɈض!'q׊Tv{D'x u'IФ4mNIrTWrA|7H0)4TCf(ػBa| V.fF)=',5=k轿iƞun!Y}s@ɚzĆ-N\b\>@ew׽pn>u3Qe~xN\UQ͡7 $7ZgbcwCu!&}(aV"܂\fv}]:xSzC6& q홺L__3IVxxQݖtiD-8ԩzYdus}S;8ؒ'a]TT?p8iL8p -(bMWPem uObwFv2K Ȉ 5^:Qh)p><}gIQ1<{P<4Th@SqY\"򗎠3M LИ 4g.C㮈f͗,Nٴp.x[ ݎJ.^ 0 f fY@FW={Zzۋ&j&D-$(wwp<" X>ēINFqGҐIo\30}bk; odžJHp/5MD"6ȹ&th z1g-1Q¹dNw & Z\A v2!r'.-YW o8B&J"f&sl3`ט Ҁ6bE%;gvt!'-vU;"xLq L^":Z.X8$XGS]:k..WxW#}_8zKkPYĖ^JaČ>k^ً^;9nu&wExU6L:AIksXB-";Ʈd{*sᔸ P, T7'hsJr*$=ziɼ( \˔/{?UiY9[ZZJȄLyhoX (wZV=tV+L6J`Feam9.[*(&UajMGjfŠ@#>إfL>c2o ,&,0aYW@ٸdΥ9כ뭂sއyk^$f[RHX3 9Fi-\)ܘo܌.q>a q!Owao[O_o/0aQ= *.3W @GLF8c*14m cϚD><xgc \ەwخT }=CvҬG 5N )95(st{dA*qU2VjGh 5phb40I!ud0\ꕩ 0 n>3x ֦p%HPAdnh@{EyPrםL"PgjT`ԏZ#Ie)}&e0  i".1 J=; O&&C jx4Pj!+#cej{!we N`h{TӨK?Hp@9 UfQ+bJ1` Q9ƽ$aHAEBִ &ؼ>Nc7z‹Cخ$M9|lߟ__?~B_($~p㞋1=? 0?4>~>|7[{sw_3LQ2\qA5aNA$/s"4՘L΀=;8DZ% F`CG5 B->8-ԃ"#!QOj(1#M.U%$2ǭ-̟ݙ_؎1(NX{1=9,urc%^ Y#¸D%GhUW |wꪦUӽmN:C֝lLº;]^\Ey*+e^ w/Z?N+(H"̣n(0Źݶ'C$8/80N.*9LL_JkAkSMŹJj$Yo50 qƘd1HJ\Js XH)l]>Ip:04{m14 vk,!l䈠^Ę-6ӾYRWQ\qtfL7/!F_F ֲ@.4K@A1GhXCOx<ް 1@G֏_.Sf]]N3c mCCeE!ג=٭Hͳ* )?zۀGIO \g(zg='Tٙiݷ! i:n1yqm!YA:kFiQ6Anas9eNK֯uŸWoF˃֧d64"qQeiќylwi/ݠB;o^Tad4m6L~i iGnvDN/|u7Ae+`aU@jbktaf =βgFN.2 8/G2Yق+YCxr@ 1FbUWY =Xo-_wY_,R}gg$S!慖m.9r=aLU?Wp{i[cyq̱N;H ;6xg/u?DfVVO+c,-e@P&1…q339ͺ"}uUWe\":[5PjoV9 i4",&2RPٽ4dܡ5M7?-7u_ J(hM:NKTN"RƨnO}Q3ɜmcRU^H,aCLܧ.LA\-MBE6R"&( =XWe(M;L9 5@e9I|Vb~kFL1žT͝n,U.i 'II̞PȲ)4Κ=VlO)ώZ/CHz[ҹϮߴ`;VwYQ^,^'mGP'n<}[]pIռrnP:jG(Ɩ wPW$'eS4{\Uo;QӔhxƺ>VSqflM"=+#Xy:{ߟ=Z*T En3+7*B-VṨjA)xe}!Z=0_>YlJ=;KʯoV -RRc(}1o-h mc?hRO[;M躃ExVznBTcj5 keJy8j8jX;ߝ",Dc*H*VtUCwt yoTO蕪A.'qU) ~030G sk;f>T[j7r'R VrUۤ9{T2i3~P.<-hɚI?03;4I2Y$; hx0@Ō0[)2\k߅hVJhu6rc!@܄|x}o%'a#& c-岘ɖ6^Z#i7N5qS "HO&8oɴ{1 bc/q=&7ԖdS1Z,^9ޜ 1z:XU[B`M}p BMzyo`^ou4"WrئRf2C|?tᵮBu34ZAc7|3DD~ 0H=9aTNnfsꊐ'aˆb = @!Nk<)' v!2B(II'h6}v 쁅ˠQ:ׂbYȥJ`<p*E3Y4ZƚXǺ?#WB ( Īj( VP ZWg`f/%+P*nd^i0 +feRꋪ2tD`8 [q"^ޔ@往zGW>#c.o|C P%yŃĴWQ$ t`xma4*qfL౶Iv/#)9a{}Y/m0ǭviw𵹀-Cb$-p6UbE#$`캊W5MB)V -dX4 \ua;ƫyzzGۘY6"kz7`TlᕐYF22Ъ=q~{lƫm֏rQC?C -j @CͶ]tlWE4$Xoۺ7,\6"(lo40NrW!V3>Z׬~Ml zÅg a8FH &9t@. u-Q֟ݐ@[4#m S}u qN ($&`p\#\H%$ KRnmtd=pRPMqp &BT pPǧ8Rh 7,Z|88pRVReID-KCsŻ9?O5Jp]l&#&_K#=l-EKX kmJfګxё*UNTwin D7pk,~q5r e[&!1kVeO}9SAE1e]YJm%x Bj)50vifڨHD JX:c=j4[,C8 HԮDEYlȠ?BK~7ZcĞ5Y~΅ns(5".Xw\s==ʇ ^ZH k'2T/wx }ׁ׆| ?`&w1DZ7zr!39eK%< ~Wzco,2c Uiqܚsa%s\ (fJHL:2*|:OAmeOl;ژ8 bF3Fǀw)K]^K\߻ўYx#.< ,+i]cQ& \ euf-ZFdRbuYmKdK 1 fW ;|& d~aW#*DwF.?Zup雛겋*ژͻ6>_5R r\vAuOWc \ :O ^@My$Cm{%xWWe.MyS:)_@5mKsr fxVg*u9.1A-3|[yTP +;PS(*PԳ!1bUs(ϖd҅3s絞}5d/TFc{A: > `,< Y ʌlKbW5U2ny=kDnbcTh.[r.m2(),qt\J-h{"gw_NA)w࢔vn{^,.v0QZؗ܂~2dYweq-s[>  >vБAZ%ׂ~a+ xVƅ.B yY:^*wGKR 9r4 h%0pceJuqZ2P.K5~ʞ0Siۥ|-ٜޗR^pi,t1=w'ܚ݌?ds&bƪ"zl%Mޤ%*woHJY\+]S-[1ͽ&^5iPXbCX%qU_Lj5SӔZam@Bh1kN?'^d:GAp&xK="4B㿼k:y(N< xn.U7v/$(] Lʃ;q0 =[cRjwu U$qkG-zΨۡA1#O静F 1oJ2uΣmTAgzфt!V T ef~c*_<~'Gi!`)̺WY/?fD~3mQpuڨIG ۋTlRm9yD{YzZ\'k%R3NgGibg⿑UXՀEewT ap2yRlֻ.%YvBM3xC7u6s[ (M#@jdnoq,>&B <{@5UZB']`iu!K#g (L<#TMT|1YaXuY|e.Df-vhagËxbаi +elͅHU"AtWE ֤͛Pe֟žl4,jHkn8d?\]KQ3fS.(F<dbЃBH ejFR}t7#jŎ=no;bv#%azn49Ge-b/eМ0?\Aw NzhXv (JVbg93[YjSV4QA-m8-,-M,!5¤iO΁~Ö\gmSpǶ࿣%Oտple^Z`ѕ?1אn(HB=f3#P)Z$ڋ~s!\iח! E`3p-',Z뷪wRaĞ Q !}Fec:H3Fp9*J^4GdQ G96ţ;D@ :7ZIl Ե^(Q;`y+Y9.WsͿ#v=:{tZ@/u5UiS7)@5ǻ[\Q"EfFIfD8 эa7;&jj.DFtZ.0V0_ʲѾUDUdH'oz:Y hqNCNEh^e n⎩pO9Z2BxǷl mф`EՋ|vИ~I)FǝuAgBlb(]х>p^UnF7(Ĉ\"֩eR@6/QF>_ƹᐭ[=}X ݒ<:QE-ex ˩eQ±}NIHZ~U?AKhZ%vi m.]PG3\H WDBESʻB[*uK"Fq/ g_=:1G:^i[KB6ɚڨcU/]uce槽% p_ /.CG'+UdQ?,p#UaˤJ3/pm?W E~<̐@W8. 6rũ*4(<{\t~X8ge-ckLJ A]%ص *B8v]Vbq<  m,ޫczpc N-4`<&~S ݋^e)2Ww;K;P>:4V'.'S޵q/V;C kE5?qJMW0SjMxho9/8iS #DzӚu2^_Ծ@:`|'zY/V6Y(*ܜUmCL(ux/rq0ooF0} ^abfo^i72~yW@|#G/>q÷΀ kAYv ϊz?>]?cs{RkqͷOnbyNw<_%MBN.ϦsPS$]u7I ?~XHm#P||̔Ee ?>rCGs`fsa>dۺwh.U)#&^z:P{Y&[[1]ky/vԤ$,mǟ5Ǜ{G ]&A:Tl!0 ˰FSƮYb.ơEۦ0$h?'LLS+VNW]P"nQ!Z}MMd2NFcH>&ݰ9J${eIp6 (>u$DkĎ^z0=A]pa@= NNT8+*/WߵZqJ CUAiot4 `̳[ۥ)$ VNY18'ApHV^3TLj.ޡ?ZSe y(xE]3?".b߇:?3^ H^jU&t)ޙ__)$ OvFb,$Q0{,m_um4*JERFgQfUNžvQ5lӒc{/0 < T47k$ئ juJ=e]R3OG.J'+seb*JX| Z9SO ~q3xH+>vݷXql[Pᛚ?O>om<N?Be&NFH eF|iޝKI7 @ԛ$Sx3:0{mm./Ex6a0?Sà PJxn*Ue~ 8|O 8iOOTs /88Kl?S}"[G  !~2'3}(m ;N1jBꟃApi@9*ٙ~1,kraicYLՆ"d.M^pv|KNQ ؔ0 taeFv(. BOj}aEͺ:a0j-0ms=zVQ uĞGpr>9Q^`_% V0vMH"p> ʉ148䚣3%kwZl3 ҹL8z TU#:5֟:z:9'k.NъeFu HPmBdnP hS5.ke> =D%L#ߞ9EtͬAwzx@O9rB6Zm\קbBvzGYh`Ɓ~$X;Mx=yg͖ѱM88 7oeanLIWnN3s]DK]g0ʚ%G&z=pи>N`@lF -Ԗ=52ԟR:4Ni 9Hiқ1S>KR31&1ǭ}{e/ji8%׻_FB +Hp.oYMp}ϓI8>Q4NsFMAr$ Yt4%`T+}_3$OV OPV NRhZ)Hr%-..u'kA+Hg#02>`T}Iq& 1'ap: Ћ'R]' dYǾaRh'f;gjJ(6S3 ~H/$ ZY燓ޛgOp{6 h>b|`f3:}/@6odڧC &I\M=ӋTM]mjm}H'x[)= >';7]_q yU)*ȋ.)cE"`.vd\ڸV<8'):{ߟA\:@:iv3B]­jpoIAy AuVERY:ckٗ3vRbpZa`ZbzZ|}Bz$5stWD. cuflq09dJAdـisa=)$>`xu"qtB`tYͫ׷T /1)j~8kS7w.1(6jMVu hEjѲɢ0͜5}׮$^MNp#zZByɒ.&A;uU5Lw~}n՟QJM3 FM:[r3qOM|]q9o uF~[ܶrHCݪ _O\/\:ڤf -y-66I)2(o̎LI2cd ٛQO4ϥV<Àq4ۡ9qò5k6nASzmJNx8A[+ QZM³n4Q#*/hs=N(`x~t,_?_{o\'YyrGOvʱQckW h|ʰlj]\UT'Bs8CYtleh4s (ZYw?18<3VbVZ]%NvWLu*J3Sֱu^':^ ڱBX^t?1 y[w v/rP×xE㫆oN/[ID7HsXhv%㙅@x1͠xܹfG(8nDf+b9<0DTo#ǰQD/i(~Q0 Fv\@O|Ts a@ qP38cyty*#j}gaELg~x΀OQb /4#u &uyWMyP<5T r8~&LBG38RvJCa+K(GAnrzn*~ꁽ)c KTJVsX)n*6kk5wf]EEΌeY cRldT|,3Y׭,ju[wzl~[?7G?_\F\@Rl[ý:/_={9x'?٨T->Qqväw̆jdc-rȄdP E'f_K2g| >Cߑmi`v"6•6t9[sꪺn *VDRY7EL21Wk+ZiU[Zҏ,(PӰ1WlFšF5"Al7+P/P%$^%eq4MWʍc ^iMsG/NR/ݫym,p'K*W=孕z&ȯ|iA%3p:qiL,hkk)Dil,Ϯ3'ζ.Z:&vKB m˛A검egܐL8>y;wz$; ѕ)wN TtڷkfƘ4;x?j(;gT)OiK ;V`Sk0^\J):9vb7םDNipKR[C`) cš@6ʼi\Hln^ckLhi΀(Yb;v^i1u{h,i'Zt| |ܪ&a,k)Igk]eE痋6Fb;vmox1eniij/6p2ZpS3\;2NI C֛$Vxjm|8c"y FÓk5*| =K=xS~y4wĎz$ݰW9Ƽ:n~T'3Da󬮞5&H'ٻt`# I8Ā ZBA|޸+O !QCÿl4"{@ths;P˟ >%l猋K6SMiQH*vc]hD\S:|:fs۞~ncsCɬcrRd6K`p׆ RujXl2.F6J(n?̤ɜvPl.cpP+7ZAcV2Z-6)Wi+\8sV f˜P0 D-fktʔӉz2wNZؙ}(/6I ௎f HT̉Ѹ:oe$WrHrdfQs77*VvPLZ|ۀ1rjdB@Z\|t(-6D?iDvb@2N(tCМ<8 TWx#̙f.50;Vd]ݎg;wLeZl]$L=ckdЫ7.pE] QKb)KL⚟{)Ǧz[mG f'}IZ|x"䗭4&9P:7`HycX{ңj˜3cџХ!򺩔3Dpf kwxAeKϛ0'S1;6\⨻'vi"bN Ám9~o0סwQ(h_9 "8SͷF ϳann(֋|TɐЅSPXmKkiH\z|_ͭo*̅D^wppӎ-Ś7 ˻?zx84̇EZym!N9}_"T뢊VyIo&9&jTC0ouv,Mye-lrT-X~7&r?6d2-CvrG'e -!z]pl,vؖtyqwR'@Վ)){K\V@z; =pTHɦ쑩$Z3a62&*co#ԓ3X0B(>|{D3-M`6_Q^v–;JZ.8&VwT¸y-OStK7Y[Z5P ڝ,4 @5xBWo]\رx yc1H5OL 't xJhOjar#{x2qαRyi"0[:ݺx禼l>n;+բ w 2sV;D2!?C?$1g~asrH[ urCdMMY4D%4Uqi79OFWh IGzS\$-6-bڞ^F#4/g}Z>8#{,-eIAK w8[!|$uWW#K'>Sh\M_NE>Iqr5][+=\Iᱩ$eMR^L"R{ )k1siL|dVw*h >%U0yR!9|F˧k( Cߪ<+]+Rq7.sg-#AsXMZJ {}2<8{TZ$pkzf7e>ʠP.aWtmXwrv2fqUӴ9{˃~~grQ^@ݎrFkJ~y56FӱM upo 4{eV]לNƤn/5UcBc.&:ު(Jr(^312L1w wM쭕Q7g7B\Tv?k"-*+VN":Sk`#F.sq.icSW#8:廜B>A?>DVڔdU`FkFCs?4ж)r̼ZQNbϭ~ ʫܦpY݄/1?۶-qMꝙW5 Im#z̊p* _k꯸0=ƜDžL[w]8I;bw:}F3@ 2Ļ;'@ڢS8,-n CHeƗq/*tOZomf?nn<ڸJpt5 B ^ָz}&揋kĜ`^8@P6,#4un[[ƺRejlePX\ڵs&00MYLO9uQtg6u璾 v4Q9#{RO21^}sjfa5Т|]YW7u߰ƴ>1T\2wN_ؤ-' @Y54P]zFLf2AAo:l3ƾDiϥ~|ѶCd=-ʃӌ*66f=-OEkv[FvfZXL@H5W` eǭǭXڼv5w7s6[9}/U 0HӠ{>M$EI4Aބx4]W j^_0JIF, Iث~R9 Z0 )N- W %*HX u#a썺S *TUE|"kTU/$[W2F$D WZS.׃%$rI>CATu,**%*9ױCk#:@qncGXw"#F_~P=MbA{I"\DG uG1ݒDtDHzY#CARn OJ%"GxNl X? }hlMݎ7?遲??S{'{~r7Oxw^p>4f}wpXWߧcJ&m>=*O1lCћcxR1<8ٯǯ]ʁ|G | d߶K(q\`tDMU' }֋Fȹ ̇^Ř09bAA?0*@{AxS~}E]: L96 9Gux&mm_ |SV!h hh((a7IBU!(p1Cnpahq)" LnfVW+x2a>AAa|69WqI9~W ׍sb~y^Daufևqw~r@nqCٺVfibӺ}k@c.>gTWzSIlU.[Z14F0(Tǚh]?'Zzmw2}&9Kj[]eש m)o28Mj3< Y8Z[:*AӇQ*4˜G=:#KTQ@bG.-ͮt:0#)%:XTGunMC B7 w+O7!V~Sa=Ņ> u\.^N L$i(0L;~iI*t,Z`t -%|/ ඡ-ͭ7!ih78L:"C"R2270 ^zsӧ'' Z>:zyKyAC]>;ZO)Y3yuٱ$ѷi\a#kXk?Pd\s`aq;ssu3Z %gݥU( p̴EyBSp1 WΚ ӳ*-L:ZyE!RmoWenS_/"2;N0WypԲ5yO ~3O)+}wZDi2 mJK> /2eɆ>IZ?O:̌X ƨzM6?g$Rh<Ћ>chZz(Wk!&l/nԃ+: vF r2#ny++!*zCrRsJ2}-'>wT76* *^#¥ KfICלw,*~;3Nk:gmTЙ‡nZ!:؍TK;cj*N3vhFDݰGDOiN篎?뜼yztm }Ru{B""8 8@yU!mksTfoGMRw9m8h,Dȓawᶿ?♻XQ1_KYw7/cr#FVx>p ̀ wN @"*TU q:I9}D&bҦR? a8W}l׍: /H h khE4X Ic$ik,9=ӂH'y&mh'N2؈%Skâ<7(١-Q]jRC ?|H0)rU_1Hn"eSs9ʢ ÐuVZ޶sp_%|>Q|P-zpKJ%HMF9NzfDV$^R^⃻0-&F, W D?Fl;pɶ#e6"Al^mk( JAipEO7OƁ0?QӐG(<ɕṕi[yzw Uhi ^e_wŇxyrO}?Vx,-6d XD\ZHt,:$hukH6B6Bwf 5bs5t<•'J Oe}pe?fH7u9m˻ YEFޢ1l*fל)JrwX+ m@VI.0,"֠Vx˜>)l&%]~**il pXQ7X3b%B,ཟ4U`Μfbs:02-ZD4תF-U`/,[r4:Lۤ5h4̼΂!IW|0`m22̕f.& 2~7r:{8'к.!samz }(]o"[ͯuZMm!n-vJQ ivӠc?|͍߿Wo=ßRɞKyLŵ8mim1ݤ aQ.l@N=kXdIԚ &[Kq{_d$z=HgMqΆېO=B߇۟%TtV=D=O\]vrP+T?XTbha) @R,bA~00&IJ&zB!Q䍑J̚hJ A#;XIH3e *7J+C K.tzM[_dPp &qFz"C jjvG Ri0 m.&p,gx9r"Q? 6mV b(v"5p {{[.8!Bog|,tSNuK;ޕTi0PP_'=8 aGVa2)4C9;pT4&;]7˵G!>]]lI._/gޢe9`+'uhp \ HoW  >F$ 3  `Uy];+;hؓDM D0لrfZ͐vT p#z.]jOpp,LՇ ]@AM~q,&h \~],b]轟'Ỳֱ#c )}&gb/9>X ?fi gwp gZ%%ܝtkWJP+/߮H1Ȳ.o!rqD<+š^8O&wU4b=<+V U 4@6$ENB|#uz^?z[_سдKzma/=2u)^e YJ>ZTpYIp1S^~pHyf&OC 9H8,$$#I=نƊ7:& E9Hҵ$Md.̀3 W kbL_ũ9G!kl rR< XEIzA5/f.c ⼺AɃb򂽓TmS2kxvvNCZqP+P+P++f#_ƛ11A/aWS [uVCZj WhԳ{g(߀6]܂\{`e6= &\PW9:k]ZΎ37M3PK uBξvq@"J8ǃ^?kخ"Ԅ#W⚿ $g.A?&RN-IFRsX$ &sXc~H 9"dPX]vϿ/I`~`v/!]q8^OP o4s1k)f7[UEO cH;;杙+eœFtj=puuҵHuuuuuu5b֗ʖCo-T"uB9[Kd!2[i)V VQG2[Kĭ%ou/0w=8 /l}l{]ÒxzjxNlI_Qrey/z`QdUYB}WwGBl"9{MG eݑC)&ckހMm1=9'nƝ[(NⲰ`q1#BvwwQhqooInD8zv `7xd7/ka{pwuM4H$YДIAI5=?#aI]铸E6Qh!}2BFZTm 8b:>}n7:㿭?\=l~cA@Ɖ~ebLAAXN)W gjrCX}d$IfjܘOٗ%}O}E 4 Jw sؿsx7ڭ,3;6w6}j`N117KH ' ph*uZq@u R`..nU*KO_¨/u`Tw?MK9r,q+Sŕۉj⪦ޡ[SbV6ll>ހZR9#Nޣ!5bG$РR҉1K_>z)у\=nq P>4͎R5vd-\k *6agFrK}WbSM- S(puS Y{HaL҇^-f$[1O؛t*S K&Wi|xQKiƁ5)S "l\U4@GĤfR+ J̵kMV$aR0oZ45r}!GH"!w2140M;dDtp;9W &9HdT46ՎY":ȭ(5R3[VVA1t< аFPE|i;Xh 9J`1*O.?6^8_1lSo| 毃cBcei2n<mʁsĐg.=J/UFF^fHOle*ߌv'$B#p܋4vFYBw'8kZz*JfY$'o(ߦ[V %[{ZzdonCL?Am'o=|aV{+FW T{u>֮q8AQrĬٿ+9r2'?|Opz4垞6R`$x35BސʳY 'RU"ʯͫD ۇL,y"^ ,: p`6 oZ7D;r:fSSMؑx`-A=ηߴp)?ODv +O"2n$3kj4=(]A3@Nê:⑕DP@*;ȗ{r:F)O*y9%*0i/꯹6B{ÊT @@ |A# bL R/㩘r| i6S2Z<)ڍũ'\jWcJ4F|Xa/ەf>h:]蚆xtUpl@|Z_ȝHL+'duR8櫦n4#FΚ2~%uHm>sw@r>P6P>(,Lm7?wT~;#nox鏝܇{?qG23D4NC(^N@  -NhZ]2kaXri7kt:k4e3i$Zxc5jI0L[0ݪ,5Xrc0ĭcNŵLI&v2j@e7`y4!N9'ZkiwtiّSpN:^ o6A>7G$WTenm?%j8V,) >&4)Yч˝?`@t?!,K9 4;Àue.jcZ{g7'EXIs ~&]m]yZFE Sa{k4i4MM'N޵N"E.28oP[ ȃԬYǀ})q)>^Nn{afd1]|rglLDCo hcMb+:X"vlW|ҊFcNXE-΍wu jl<avmv$Nf`pōV+g!X}Z 4at##ELqғ1j|"?yLFyCҒN66Tm ME 'Cj-術d$yIjIH;0[Jreμ+<󐝡9G3$O=oug xÀ9)^Z߷[b'b >׻9TrʬΗ^@9?9 'vgҔo%*<|~]Y&9mœwr ^ RGE칇M_姠LWј[ g=t=,\wz=αkz&i%i{I6l+8  msk=`m•Tx| $&/9SO?-v3_Y|xχe-9'Μ`?컇|}==Z\!jmΕz`>IpG|`]ikQXvcw*#jAJY L[ooߒCU00sI,0sQ`!%D* QW~-,~ ϕD低W%5މ{ OG=s)e7\\* ;£Q>'Wa /Y, UȟIsSb h O0&ernpNF%h ;$4tz=2Y[6 (AasYidL^e ޶m+{)dya ގ.iEL V΁M"kð]zt/vbd!tHGVʖkO0yk+1X2=_`5;wEzGԉ2k1AK'U(6Z ^ȸ_AmzCMDDq̪vN7JD:c_+,,kWҠrϣ?RW5u@y#k;BE]?74'XZptF~Oљֻ~wsPѴeOn1U3A րϸPD^ZŞ 7hIJ݈\ 0<$< KWqQCa}Q&h;f*Υ(sHxsܰO[7FґB|wTs- e&(q޲iӓɱe{ӄz@voM84n>9>e:Cx0A:`E Zj4fX&e\o̊3p.2ItN5zA͹}Ѕ+9H;x}tx2Bf#,.!tَ71z y@F. |]cH߾7 R`ڦGKƴqgѶQ-JO>?ͮ+)SO2g};Ngz=8X=4iHDkfo3\;"dE`Beg8|F4y;[ia.^ץB8Zx=whs4'(99!? Qi'>kE)pMNkڢ9  ?c|g^:Ba'YD9g@)G1cU9508~GZX9XkY $,+R:dkf p4*kk>RG`@x~wP+FktM.9:KѪh`$0ͱti;?qo;wZ%+鹨U]MsL(Ժ' oС*eP?2&,XۈXm-Wi7(21B-k% hM7$NsFZ6 ~(HBB6Ͷݮa*}iMš 6Z*l`LL`LoZP"AilWQ7cI<oSKK|q5nl=+l**C8UdGdve"v2Ax~cGNI̅-)W͹|=KnD5ƭ:8p4Wy(σ lN4~i' [%B_A6wL  Pu#UpA/X 2X5WոF /O F@e$BŬk)sX8EƂALa"4q 607ix,s63^ʹ,؜.ݙhVj5f̃U[ z٬ǍM /DxIܱDi4 e-6L[˃nn&w?su \>x+xəkQ2dkW}~,ת-p<8s]c?,vaFG%@h>%}X1t9t$wTѝ&(@AF=SQ@t<`얆^z ؖE8]mA+!(AnCO\m,0AU8|~RlZQ|j#P9wJqUwg&lƬCM(a9&|1Dn`nǏ~{h̐lh8.uBLV7Ql_F#8p,k5Q0tՀ#v6E[uӉa9Ïpዎ CƩΐn[j+SWSݠFْ n&ODJ2d%̍,6I H@;".̈ pCV YwQGEz{VtOv5oN"bnz%<Q0Np *vBV`|@7QlouYX3q(E{KK$֯ ost)XXZJnXhVWw,A8 4ϵdeoOtzC9S9ּ~: #=`T$=TAD9Ynϑ?8Z5;NZM]s>`u [L.Lǹu,+D ~Fqeqʐ41syKwS$b&w%zK]+a%axAWq 㧁_FZ'uFbJp`x^:KP$%ܑ  qGYZSsfD#`̉ W3oH;gf4ha1\ԆzhuKwkf`n. oθ.}zW-+Tڦ}XN[l/DHCwy{zYD$^׾Ȏ3sCKcq c4CLx Lo@p5,叞%`@܋mp1vJO%~PEL[6vvA Y1ι=Y :!sl}ǽP(Mhc;x@ՠnhD CW蒄 Up3jhjiY  ڹW&PY3WNjoX"HQ^Ӯ[nv9}kr!%@L=uvVl&@i955>_2-'>;9@Kۥ;X>A8'3 1iˠP0U~ ICJ_8F}*_1V@^/ҷJ6gTM)_ vVOG),74U:3ΟhR`BY" Iy@{.ϩR7դhUKRn -e]р l BEt/4UV|!x;G u8)T䶫,R6mYw%q4H;ڌ(KÂSbHazbA = DJ+'p\,;Y..ÀMoiTabX xE20 Њ`8mJeƻڂpz()f,#C ]v֤b,mja$%[.4 Mؐ,^Di f CU / 'pXD, rbpgqrS-N; -o>ڴ6HStڮv^"KGt`}ńSjaPΒI&Lh28'j_i³X/@d頇d;CV/@_FH},2/2u 0dStaOP%/i,q&:]<@P_6[xTr%ƔV\YŝĉlteL'!P@^:!x1`5 ;gs9(' il,0s<`V$8g4kS跾DJ !% z@ueF~jۮ';Ɲvg%v"qKM-wyԅ„||^^ $O2yχu+.<炩BV`0>tM^u?na]-b kg݊ H!ѐZF'Zs_kWc$Fai-E! u%2u:]б9z^DP;]@0wtwcF 1a*vr<}(7sX8@gWG[ebO<8%Qg 7zm;)w`0z {f](=SXo[BTo7!_0NOnכnJ%A>7G a5pJ| lv%Z̯Ǔ2߽7c\(MI˞d_Q Meõt5z>W y Fɿl@/q#'|I 'mRNvJt63aZ2F. IMr}`n"zQ*p&*43#αDg^ c'e¨&Q/AϋS댓sh_?` (ļ}D1B FWf\֍{ U Ѻ'Ӊ[Խ&lj5szE .d ey;G{{3y:qh,BZjrd G%SKQ~܌]GD>&^.ʍMLw^  7zCD?k `ԍ&ĂMkdX#=n.;`>W3>-Oh9S`novMgp^9M 6\xdjۦ]&X럫H[^;ךp$f.gMH%^/OUC*NC2= 'Wag]u5-^۸![XFw"?uYOh믲__KT:e!.~Ybz`I㹄i,-X"!a9.O4+m0~(j꛳m˄>5Fw*d0lkLӒ[!iB]ԭ-\J?UsΏoW= ‡+sg.l. f!dLU!CY2^룜*GiMO]zf(X|ҵ,o};dKm/;Xq09 "{șެ2a=s7bmFdY/ZZ*ͣC3 IʂB4R`̏{2t 巣.3t@o# G^|T?&h)&mwLO%ua7ѪCq0/]-ZKiV*Nrr6ߦs\hPL*ZF}-n6~en2p ŴbXH&³2Hθn㫘t;4MÎEV>ʺMЭE3jm$GANoLAw=UzljB}]?~sŭ8]IUb!Η "in*$-%:TnuPNR/f(N(*iiwn{qٹYh(F.Ǥ*\h%+|r-K$K&*f`­b+p0}AEŻNp*n TJMȨ[XjQv7=с >ue\MJ2_8 ,C? *. 63Vbͽ1?b;cM1215=ԮHf_>-FZKZ08Kd=;:Çz~_?6[?6[??|)J!榻 :KZ7pUn<]a1dz*E^Sd2Z[jd6G>ܚK7M[WVIp (o~^G!x78Wp>L z}|$C3D2^d:7Y7 FW4vLH2Er|M t.p"؝LKx}Smt0!f؛ֈA#꺓 1MOcrs!ř['*{īt4M!wDJ8C/h?y#%otm@iH֟Ծ]<@Svtr$ =Rr =Uc8dn7Be !Q<ڨ?B!T~W,8 \uɠt zuŭ*ڏ677? A< 5 k%xkDCSսzaBǵ"Is<sk>xo:gn i$cCye[_dBP[WՔTEd(7ZPo~dr$Lo#`0N0Bת~xF?4w)˕e@aꖗf(KLㄼ iAKfzKrNA>y N4yĮR*G(s]L۸lS'zXqm],7rݼC|MGC¢#AogС/e4NrXjC6P!$+$d3?;M8h}1+> ’ H{`;jj:[o !u%ca ,VY SAY(=8->GOWy"zk "xUUIƸהl3Hk[ cVR% ؤ7@X ȍJ& _P>SYoMC4ٙ- ݰa󍸲ܵ]rL}Ip#Hp$JFH%.r~?xj2bN$[mB-`hIhqA(ojsFHVR#̊yGR"yc4F6S1  y|y CKziaB~-BR`Fjt]f`rn~9t'e]=h~:xl搙Yt|ik @߳V8bSmdS]&lڶf4:t W8_'-e4a)E*1(bL޷ӝL.g,X;LS>y m躊ջzc2ҹR;lSF #xD.bHB r]b++#3 Eip"jit\!<"sOMip@5+sH6"H ;ul*fCX=, ˩`0-![AUm.fe%ٔD:![uؐ/3Ck1ˤ#z5Lk^IV69S9ɕhM'N'CLm_fぴPͩrF" xd4W?98=Hb@']jEƫR$gӡh/)8@F qU.y:3@b^cf5j%c_ #ѱyAfGL".2WXcѕ'(v*M r[wYSm55oԙioQP*?j|/sݰng-,zLˬyDޔC J)ay䆊Jʋ,>zH< 6s7 ;˖7i#>o.lHv:ݢS]ޔ><Rb¼H K*wQ%75I34UuP܋i"wlVmly$> S^ 5,82U-lhr'W.7LTLr0Mԡ"V_SvΝ`=5LK`qy#a iYO7`6Ư0Ɖ7D[ω }*JWCbQRrlG˩ L# HS4 Y+Dkgh'p;YwaBYY Tֈב^G58!ly[}zj9\uPڭ@vL(zѭ<=6RCZim`0Quk$iکsε@kG|‚D!9fB)~ų.o~>YVN%aW$P*?4'7:AH h6:jiy9@Ǚ3Qz}$יּ`yLjQ^0pt ܰ$aX3^*'$őǭ簧܀TmznTDh7j~Lym͝!qR߾ xb㤫"EgIye._ =4=g=ˆq潹`6 ׷M3 ҋ%.fN 12{F*(d^#O[E$ˆȑ"7'()uUY^;0VF_ Ďj՚%Siߣ^?= A[1'syGek#4pٛbmU- 'uSJQEQ%ѡ=슾,9Q#W+pxSٰ<,"45Q3_t+ v]i@Q Pk٨ [9Io?1|w`R/l,MPxRe]tDO}pAO8]$#U˷K21B(qzN 9{N£.?Fcʻ)aЖbJ2J Ǔy-+/,5]m%呥G]G̪S5y7G{/?9%'nf!]m|$*OKc kDGe޶Y /qk5CC#VZ6=0@('VBjGj%8E3$3F+atYO+G:m alKl [0F* D/KǗPw{29 @.7z; c(5;el[k\̚qB8UakXymay녳mǏ&p{Z0Ѹ.&_yHqYkm,o:`y{MHC,䍁"-& Sn/36BccƋY` ayG&n [J| 4O%0GW)ZA|=!+L^%#*WL7*Lt4Xذ<Bp"oYMo':K)͂4"tDkqxhƒzLiU\`adgż<ռYw"%VR9%"梠f8c?c,cç b$rYfP xtr[Lv(@q8os!]U5~7s%38 3K9M<%Lr|E j,"\o Ao1%5Vɢ拽@ -@ou\8Qt߾k:p3ڈ"".;rJ-F3_t^#__ZS@y'x;vs&e[_1wNn.\kz25$ l4:kޟ{rtw EGrMCp:qC%v"0ǻ9@phǏk! 3kph÷f&؏k,i=,nlE&-!V-z>Quf,ߪ)a{2;K6ZE0^-={zy1Joc.6[ [Dwϵ?h^28|IfߝP٢{(R"P_JՒZ2Ooo86vX\|_EJ)**=ke%Ko~V|_z[-}p/ 78V{IE+sHxQj o;mr1DC\T/Km|zO A3W ^4 өDk-7x½%,KM3R:ffjfy 5do+hD @m~L7dӾ@d|G4H7 9eJc> 4N<"j$O=p4sETB8L"a(*b\&cw/Սs!4˅% JkqV P. ,e8? Ga]| G Q?mSh'\(bfᅄPicp^`W]JHIc5`rU Tn5r$W`/2O*]Ag51-K`p,<`At6Õ}<EE%A~Z1E՝i jNw".9 dIF+ /I6;J"&r,P?Z:C2VV3rpP?@[氓^I QTMsؙ $k{QL?AȽp$2!@:%I5S1-SdRYtH6#;dF45D#@C15xN jPXӞBc1%I0sn0>0p0 !so9BvW2ac .Tuh bL9ݞ"2K1SJ28~Ҟ+ ߯A;H!PP)6:mB s/w` >0nϾ9v{ڻP =|I9m|5ϸló-b-*a ϔr/ؾe9a_2/ow|YBcd1Kt;a0hj0l?iC&9';Lxy_\ʫ(܌/ʼnv@nLҨC 'nshv(mxHV}CQï=&,8A$2Zݗ'P(ӌ$Tˉ!Sȅ7;Ӯ!?8l-8ʶ1'ҒUyV#8oe1&vﳚjj"bn8; r4Mq qDZQqURL3?_Kb+GƆYdHCu Ǡ#2j=#7*P/GIT\ $8q!V'jx0!)p /%\M9!-n079^ٿeܚx<#n%Ta Q "i y y ;D>,L!EXXqQFoJRzlO7QofKst)je5/ze9d g8cⳔS1]cp8uXP&6 :WsV`7hV3JÚhSJFT"Ď7d]m+'bޣJ5U,HrIN5mp\NHd*_+*eB>ZP;g`Z6ĭ7L;Fbc9lHh:^c2{ cЗT6g2 ˒}韘y-Wc#>-peUoAi&&i17dɁ$bp[6,E>A  qQ @h GM|&\tA)Zd{VA6Xqk,sn<[- [MzInľoznM[b4 SuTxk<Ё&hHvQE8*?9kR B ) lTEI+&vz*ȩI&Mx8Mhd_Pfc,iu2KZԕ6 rnV)R媅|}SB?3%f쟲"f2R-m &hdBFJtWEˀ!=*^0a/+ZJlDmH9|p5ȹ8IA8j 0 *DӤP}=;@Y$ɇ١.M]6ci*XrK1E֘*&N4 voZ@&hjRI f/(C 9.Ʉ):xw\{DwC: CCkdp.NjyJF\8+uP(KdC>\j2SSdiA Fi M3k:.DL`i#E" Nl3( I(QrK*3!w@HA51`K"*R Bz*LΐNϵ\Pq*Z"l&O 7 _>?M̓Jh%E.rksQFuD B3ňvD\)EþQvD>i:&[]ΛIƹ@r Y\po"k9JƜe%q@N02JFgJDx>AYjV\"a=[%Bdg;lW"*' (I.p=,;d!뀻5d[Y,_9Ő{j0AL]BP5%R4nHh?Qu*`YR%hI4Xlۦ-:yLA0ގB|?Y5*a mU{[CoAXK/+?A@u% H䱯$.Z`lF@Fy?2hň).hll Ȕ^ 7cQ]q@̾fHgJFKC_zqs.(4#1?{q}c$HLtrjx\fpG,v >= ?IG4VMVs~m{buŝYCJ1lxYeDm6WBkAl ,!;4jfYɘ 346.Y?__WK~|K|eͽ}dR^2_W1o0*U=[A>ڨ]&zJ2-Pe#lQ%Nf!377חե,Zen/če%P qq!- ,j~;u0',xLbTJ, `VCT˴gLa7:H6Gks2! @7AV"iJ>Lސofd-p6VaX`th twFֲeK)|f2J>QjNœ/l0p56ǃϤV$2Qn&Z7z1]͂$aA~L{Dm& `ufhdCu x&4pHuFˇ pli0ZP` PKM¤טsQ&4ܻLt-2(px&]fR˄r[%=4P0xζPBr:[ ^?i!p&SbAfO)N 4 :2m&29l؂Vm%NIT< f?MbԁGbmzI/W WAv Z8 #4 JV ~V)Sccá,{5 FZ&X+rkFvRY$)#c;&2d&6 If+b¤s\x7 kw I^dsB'C)nZ?$4TyZ)z;`0 hX0c',_;=pZ`I#t\cW ,J&Rh@TUx{hX+RHj Sv$0)䛛ƀ1ΖnI9E O"D84!i&ŗX wp(2)\4妜Ug^:vIR+\^wiwIZ)!&C^5, W:v9-QQAۋL@1V%>橩 l4uJmfɜ|aa#(IA|`ԧ&BxKεIcL=`lID=$Jvc%[N`48]?yX~7~{޷#P^vvևIMh"AiB5 aPgNS[wSN&&5/I R! SaVV}xdRxLAbwp1 8uޞ-`[[XJ4JSъ9B|' ְтk 9TDH38@3Cz ;@q+Wcx"`E}^ Ռ j~is( *E!y[dxk 7Im't@[jB)lnH/'>*$4 kf]ӺT'= :OkJc&=3]Mk5N~CR .@Ds4…  [D\Ãdy{qBxqC.]Dh^l%0L:]%%0`)U`!^ޕc( =` A"Ru2+z Õ]*te68 ( 9F&ݑHr,e广auOu񋤎Mx 4B2ϯDdaaBΣKғ'&59n1$,FH :&@迤ި }ȵ똩)BqN*F˒ *qVnms)it7H5m!vqpB5hY Ӥ54܀兾(-;@!0{qPIZ7MNb$6-$=iNp"ذr|2~6ͥ`勲1[{i .ؑ9x#{HSDra@ MF 't)\!xNJ+2W&dLo8mMśtGO-d5@]N]ߔ/ ރۏzwqgr1 IdV%"c\rC$xY }b\ip 4ܵ&h)aKϱee| 7 .d"06!d*v![(^kWF B֦%?uV˜G>)*5%j [ @YFW~fi<V&o6FlîC+ Ӫ Ƣd4Jm6? 8l1HYeߠbΎ iBx\['qtd`!F`a ξ}I ZW޿Y+)Osx%z^6\ _SfDey+ě-n/OUԙ#۪2ϛ8P$۵Ϸc:pVVC/MEߟZgŧ9?\pA) ',$cP/`}u\%`[IH^ E&Հִ|1G*dUfy8#= zг8u 0+OOYT YYo`x?X͞0/D֠8?Wi6_IG'ix1,IPg#laU+lT+s$ySRRbǍnmwߘ~tD :SXur?8Pwڷcj>>ZܺBUsyk戟 kj>rk-.mla;鑅k?vu֬sujg/3ԈG [djr>񗆧e}MV_9rǝ[ .BO^Þ&VR31Jiotwyg=˷͟tpiC~Z?)%p.\kx[xDE8v5?l\cJ\ms?U.MqqCʒ=7/EǕ1;+jwwegХ၈\_x=g}/mv/–՝jq w1oYMnfʧI[8IA6i\ 8yxslgnu PtoDhN!%]Rj?hT86ZO"{c;҅$qMR/ήxz};?U#<3A~OT~yhCљ?ksm+zW2uj_37oʄ˶t"Qn+ |ܯ^FۙRmG*x2?ţs[5NeŸ m5o' ixΜsíƞ~d,s{B?IߜobA6mı1u&mQtK I?w/;fDUa Q/W6ڂum7 ۥq7$_MPĭl˽p^|;嗔\Nҏ;6F]|Uəۏ=?sn\T}akd wȼze'1wIS;v\+tčZG]k?]ru]{2ٰJ~]t)Cw .|ҥ{m̹#KWD<nNϙ; 0nuXXzlmLz\ܒzGk:g?9yR&/Ns:;}g93}_XUۂijӿvw_|nUL{ƧwG-]a^ eW]==cc!T|4l(fN~,aǕ.\Pc3,WV ,/>cwN;ܩ|;WDܼD.7>O ZhI @B?,ND{8vs=p?1'dJK[}:iCLsYG|T5)f$ >אξɃM>^-f`LC\yQgZ}~?2lHp:w[W焣=4iV~]k2 P?+oqwÚ[ [)ӶS^5EҒfrXcG ǵm{,{ Ux$oީήA*e C]km=ZpHegR۸gW,zݓVZ\96,PA`[9^5CEv-`ꦟ74_٦pj%mKؿܙ 6yqZ޸Zܺ]75NҘn8\7k97~Bl 72/0tQ5NYOCe;<]}4xn96m.ɯbuzH>~ӒwXrSB'%){|je itz?-_zc3-ի :9}~+}7OǏMIצmj w^{Ig:k[O4D~_yt;[x4dOk6JQ|vFrR7xڑ͟45Oz˲u>>>6]^9RFOW\׬3UU0 %TF~MU89G-:tV ?\/ikjbG6:Y]vP`oMNT?ڬ~xxD[ ?\k6b HEMz{HRo/ߒo(-\սƏkL-/k]=6mtJ:&wQ5"igm~gӖA+)esoKMÔw;&BR(Osnw;;Ce{OoMj>ocS[c&6f1`i_J,^:oO+>;-jnW{/sos'N@&b=mgG箶zuWZ{˳Gy0iϺtS9]DV+ U eýĜWU~2;;9B5ftءdܴG.-uŞkx;Ac=(7K Ϝwl{K~Q^aR*;<mifbR~Gdd:7Vw'۔k[U:I%jK~h>gB__57IJETޞr~{W`W"zQ{hWޱWTҮqO>Kv^u\#0Λ,뗴JrXeIi&v;S8ó?}g͂?VXn뱞Tv\]n=׷>Hp򣍥毐/R3.mГ+:gȻ5[U˹s10Ӎ#C53O'\>>]8&Xy_/g|l[{nj^C+l6O"5UA;1aߍ1]vsF\uOe~+ g쌫Y]ٔ:˕<gU+7W3Eekt^9}iR+-kՉ)cxJu6c65aY}D׼ªs$m&]8x㺍 ߕ1G㴫d>{jUcKȀ?|ĉwiLwrS{̳~kk7 V׼ڥaՅ.:ŕ#Yu;?[ykakOE4м *[_C?o /s 7LM9yO_25пG¥ڗCtu떴G7?v^Q{w6px^aO T6;me̩5-j65,Ӂtŵ0{Iïemuv7Q>LRty Wt+`Q^1A6K0:=ƶm۶m۶m۶mkl~q7}+P{ 1/9jC؋aRϩ\?,v~sSCd^:Yףo*3q8S˫ $"jڴ!? i+mYASf}㍞ OS%򼢦᐀)>R:bȕCUwg ~ַ92BCACk7#ߨ}J"ѾGh<F|{jfえ(c!73SD$ǚ-OfZC#~zuWRJ1>g2X¬z 궑Jԁ]XB?}j}9pҗm vL^DZ8I~ZsVŕS߼@:iXZ{Mg+q2XM 5yQJ1-2)^6z]*_1#b&s_N P*ÝmǾoiXd?8eAI-Sd>9Ԑ+ =[<" &π*b"jsJfǸs؉̣SKyhPkxZLk;~D>6<=siٙXsYWad=I<2j^sX|~@*J1,.qBfw͙P=l@c3v+@ |%rV<TAJ ZSǭYC5CݟN.Ǩuֵ/#(y12a5 EeLG$BP U H+wӚp_Y;'>oQtvh+*f7lC.>rT8x=0"=NcEښY Qj# *y@^\xAz_b%#e<;3*jaD*ۇJ6|͘!v{:@B6q)2a\ } b?dRŔ8nd?0 .qAz'm[7NwL{h0N}b\xaåv8*:O菮f:}[/쀧EgS8Y^\;@2k)U'wŹE%!!Nw jp^l! 6?j\[՟t}SgZ\ὕGR*4kBہ$,e:so A|G'.[L݁2M.hj 6޲.D3؇hS^8ΜU ǔ8 枵| /=)Y', 9kſ>d(ʀpq2SHK5j}oZȘ 9 "}߭Snj?WwGӇ:ysT(xN)8{2AUZQ|rS]_p<5nc)|/s ob11YGFlLjrEc_y9FW{hU$˴pE7}jX S$@!B7LJ] dlOR*2U :(nTFO+>I ⏁\a@0}TG ujL謦n>B2]("yZS3 |TdžLQxO>wWQk/ X:~MU3n;,&~_#X#Hc GM8b E,O'L [jS>e{>C6 Np{_2sia1i &LCQP"RY5a4y(Ub"koIBlw Dx-G+4O r_v*~j(NG|jƼKs?w:mV%d{2evq> ׉wY#ɮpgENVjol=C@UVhDqPλX'shwm}rSsS -OV?F6y)e;[[L qnB}[)Ft/gڰ!kDн2zLgd&|Ի ϩ{ 7JT(GwL/rRĈg2KLRyz6~;K/wp+*gD,@hWX-H!#uLą:2.K%B2"SVsJ$Gc̉42<Wf2\q.߯T(HcmeԮS6_QICc>{'obI.&lcwiWFޜC"sJ5Xl?]L2޻g=<5j&k*х'uSQԆg9U"Ly s-EcޙH aI9khv6g۪^bFt=v6Y"xH_n`M3?dx|Ej\N׈*.߹VikjpBtd˰h"a8zrt2 C #F<)q^&xP-떅?JwUc *>< Î@P{Q/':qZ;=v-FOmQ>l'E'B#O 7Loyp Wֱb NԇuD~Y}M~@aL513X`mV(ҎA7(j*)!<LDFōefh@rRV^7nܳ#5So^FWAѥfBDz멣R:qxƺ^x2E8 uAgr kGykZFܠWHD0((7GFKEܩ[۝@g2r5}Ud+jۼv=`II>_Vbrǧ7> ,ÂB!4#f1h!g@8c]<aPxog`Mْ23v7/x\/`ޮJ lLGH&0]?ȵCۨ2ˀRοLeٛމ7V-t.xTwS@o6ᣥK-DajCPN J2񉥭 ,Lk>a7_ʈ0yJ!'g\ks&"[k+,2`D1!=Z3Ks=,8ş A'׹6k%4ܐM/ "}}EQP:a J ,6Yk'+o_^"]e>",yX^M10P ]kb-3F Z}uFj4_y74,Rb< fYd|ƯE')!桎MHHrtnIIX9䴃Q& 8nip/"eQ(6KJ-"3`3f̏3} n ⧹E/ jb/fGU o&d+iso3b+(EzAWxj`W$C ɑK5?KyUvm#vz:@R+LYrډ Xpwl$L5\TۗDڶ_JAql>WȖ{3Rs".a IW?puDF'e,{uW=vjC.H19FM]qe,Svwxj;{;2H7>lгX zLBN7l,lhY5DiYʲ9`M/mQvX Mkigx$* 9X-B =_+ ime=yJQ*V?^_]xJW#/{{*8dnv'Vq5QRhtKnЛ&'5ݑɵ "2xa\5m~'(%9)m #ȗ;eNծdk#}S$B $vhg$!\>cI Ze<F<1&Ir7x!;fyHI^VHKS|$.ɓ`яRd]{|Eւ)Y| 3bj7"SO AV+;KFJ* gYy3Fr{щpWdbݏn:f:㙞~\xsTembT ХDfFS*&ϻk 5wYU%b?/=q_AȾm>Zʑ ΌJ'.(:ZNo]=U<8USGVdq4ȗT NܦnI2;zh"GxX]K2 Tq vny l$;dHc4H@{ޅA>5hh-lz;PYJ\1=p3zJ< F<nglZWdధ}wib`B/]?)!&{ ?8JIRpU+%,)^ق,Ks/]7uS,d#|ZbuUq3ϻT'=ORZRۿ%hn"<3\|&D'LEG0LvO5ԩ*en4SZОfWQQ}Ⱥ%W}}vK~+em 3T]vPzɨ9rȹ]|]|<gGdx~\_Kr=^staVe \P3nǤ|V|#lp[I1:bd/WZAQj' /l=}ӿ˝sQ)c*XS!ڍe3>:P~AE|+2jhҭ־O`c&z bj$!ǻPWm#\p=P]1= }!l<ӫ> ]|R4 {`8rT̨yQV7Umqy}B ߏWۻ|t )o)K PҲЂͦPZaƕ4m B܋JrX#rg; 1,zRCQd3_EJcO{XNz ! @aRB 'ą:8* e˞7HMt9@4dN˺N$E$N5=s09[}(pfz"bN7A|# HwC8f |1DZ/O7$ 0wd`Gֻsrq[yu@5dT V"Sprf,gXGZSreS %ʧF_9L-p?ϒX1@Yk8W2e0)r@hs}<쀟islt pDqӤ-_W=\W+@:[9Yx##WuK`\giкѣMao 6kց z8OCZ2 Dm4Ĕ SLzPֈSlj<kvOtg +_(_p 'Ddv(L䝴&IB^3좽鰫5`gCkftCQɰbVf<&‡)f9Օv&J߉TlT]iA[ ؐ@+Ar{w-E{BI~M- 43!Q\rq!# t/rhQ>KeԆ Z%G(}RiO %刍D&3ɘQ]%tNIi{}?Z%L{s5ݎ)2Znp\R !fۚDC2yDBFDX ڸs&k"PAKq5j3wQRUk`M2k,xj[fI;tQ^(AvՊY\BeA.]ک*$WuFkn5\֚+ӨpQ51E1L553p1E5^,ÆW11_ȅaU5eDX!Vݨjh7;wGV̢oaoa9qQ(^V(͟ $PvЁSOrkU-gR`T+l4 CpN%yHSN~("2V i"ī[J /PSyP8M2ZO8[EǬEjz@T̐sм"i N!Evh>rt oR: l;XY;è+h/g+IV|#RrD]`ˏ́mrg#Ud">dGS5FM`Jf«oސPpFW4nP&"]h)`t|=7[lvdpf<SҖvOK<$f\vq&I̶(ua58tM|ˤ&Q)+p[q|"O &\2֮M\}8^]aYR_QP"!+EƴG[/OlT7@dGJrBT/w30Oo'a5p?70ތ<yN (FBֺ\cc'.T;;iPO (++s;n̓p9m[H,Z .CuOb:Hʍ)amY fG%X6B!XB+yKR7?APVಟ$$jѴTh+Toӣ'e(Y|i9w6a^KCkEϯ&y1ެqNªA;Uz@6$ʔ?{ v9*aUE(q/WM}NP#83N|Z χPgGܖ 46 S ,l㒥ύ_>d'Y7P@> -V&@\pVx.f$hVE Gc R_oxaN|u;Yy|%G6z>\of}oqSԓHHЬ]!."B&JH'MN'o`q[try?ڮ3NO]t+I<|PX) cVMZɁĜ|0%.E`c|:"ю34("5)-Tzx&}"&Ffu[șa ęH5Z۩Rfw&eWB=ScEFĨEzp0Li84RG 8!A޴[]v'ntE,DRD 9  GCd{պvp/)b۸aݤhhnjMcfM3sW-pjwq#2\lJ]ȈpcCJiC+!`Guu#3N 1F]iv4J1Uga06+| HsFYYQ t[q#[:ߦJ[.,@p) ?]nES%F$b2!a&bPd.P6 xqV#ћNW)n8{gLhm48ڌ]^ e"3K/d5:6iTXɮݴ;!9ϗWU;q>LDEUq Աxz,f z7- &k2+Or2@˩3< >qta5rN{pC>r{-2 Bbܖ-F0C-g#j :"؈Z|ԓ%ɗdWVQL/LݪWZEasAdZ"/{V2"?ɯ,7nCv6\s8/D K)Ꮯ?J𠻊E |}gu<>):͞2yuFb)JBQ{қd@Xy)I kN HT!-qSEA3w 7Qq p.(!;=!J@e(=K2ǗV"hɶ*|rCZZ)Jbb9W 2@uY@+}e/)(Q⸕.;΢B*M机cYߘ|e)@!7*rAu SN1BW3'I+SV:'/r!Ѧ5"6YwwE횪9@Nii'Ǘ=豘y~DGZ ͽWQF K Є-\,ix UjxF}s\G gJp'Wi,qkÃJWA/T(vʌ=N׳*Qg&dQתZ UD)L-$R0Ssli%3C(RL#D/Ib\yq/&;q[F62 G\#S<#(K;eS?J*8WZ9Rrݻ/|Y[lu7y̘"(BFū; , B\˔KWAXrLԧ]OՖ/:[8#9"[db>U _-BKg챮fBK-f/crL7^=ox BCEr+[u/G=G}vGŁX|G$?u'Vya$锫[[qK@? .l61";#m72-U vcy`g\n U?YR~{vzVQT"(1lb'L.ͮ:n`gRH`1yRCJ7sh&1=xhv[ 609]!HV^oiه6RlۓgEWG."EdM]0k&;>:"z 0ۙքM2hT(EE [@d%DT5x㳳"t03tߠo4TC {ρyՐkZ^nȮG=J .О􍷛 蟯/s\-Uc5qvc~jLjILjn̒T7dzP4R(ܲ_q*RU.-;=qA]݉Ǥ5q:%)ryΥ9a+qoez$T53j`dU(+?`#{J.Qۘjn˯KL%9& ,xM]m^zݕP>ng/9xݡp đ-ի~~ ILĜ)AC(| xȨ8-nK/pA 9څ:KwOt,(u='Z zu!`!Y0#FDlU rN8Rː/T RٮÊ bn1+v%tz*@Vvޗf/qW81`V){J7)Ww>yx)szy25_~ ]ԥ#ۉs"T+GS /֨X͓tbN\2FM; &)鼘a^ǪnK2 ۯEۥ :,&Q9&dq}5 cfI,QeCǦNkNJ_ #쓟,2;V8 J| *Q<9>v|hۛ{g:R9_[ǜ re#xKQ <} g-!E MP6bJxX~ qI2EjmXl1o5RaѪqYgH p9qa/Ju@{{{ܑ4k*acюgx>\ʛ!?)xm iHƇgA1qk6-x [l{$*3u7i| "*mP6cJ/b҆4+oCЪE8wc'3xB'E'_ !> 8t'N)v;mkOm/ `F|}"z&X He'qRjZ&''5m|V+F @ooegp8~f;g=uqwѦjutTR]th eM1ˈk>RHtl_W}98#*Wh `Ju4(&S$'Qʕc~aшg`X)xB#NH)y%LI>:N<.>^mZ{y^^i{1;{ s4k(Gd SDy*vL'y>ՐPRV,38 [q21j9ܒ-?\V)ΟJF}w-TXɝPr[uޫ̡p c`D@+' &_4ӯ%_!%Kyčm ~t~Yhҥa?mCB!(.Yi6id5{WS'>/:SD t: ΀%!f 5,95Q<e闫?w!QD`êI., z( 3\MtYZ tɺ&lSYiBFCq抄cA8jI4Zue^zwY❜NгCR:RwQB|M'D,z 5APB ' ?֮ 1hcec_n F]!E(AJ1=9ؾ2ߛ]8M{ "%{y)4d)l"0-+2 }Epqv@Oex@Jo:nf\.]B>7 y=T` E%]VF0@1󻏲Fig5aRN`c<6;NJq0~ & h$ t:ڍ4!MJCN61%sɗ́rp6Ud3S-{VAb~x|#1ԥ7BJ:,TQm,Y5* n3g_CVHNIt_*ѻ7&,fKh.9$=zz=KU1sT0gŲNM pZ"nf.xy!un0m ͼC½%zMV6&fSs"$xȈ.* Üssy*R &%R K riSn)- >_0ԭO휤Z\kv^Y~ǡnlvP$zq:&ό 7~ylK4~Y>M8 (3` /3)Zugۗ鳿&xtEpy²p]!ډ<]0;=\_O\Jn`]^Y \[@8́wTnL]O|JVu8+Pħp%q@/ eg;d-<WS%.?8è2A˱9™uBEL' bs\-@\a4HWL%1#nl>l *>@1yȱupET>1.80U%" k7oQ6Qi^&v?z5) w]S"qߺV * !!4>8XJKuc"xHStBB1K8Zz6kx4eo{WUrO"[ks/2"1qc߽urB¸&fSmצXcRd1TE 0LC\8JDJZD\McltVW}(߻JŠLt |Q M`}ɰpX(^y$_@|@| 0p0q^8A"iӒ(u4\n˞\pZB>6YزB2Qyp/w,m`O۩q.}~XO8kQ{?T?R36s"ˍvw<݃F?nw*nq SIVőcQǫ3?TxoqTƐvCq#G7'V%r')Ne-2 L'ˁn,KE# ΂C3!ɟؚT+gE$}r =hŐ`#sItZah"!+MPp(!8Nn8wC^{HlIAL% R8/㚛,m3R? dN/S*v4٧?K* 9K}ﱫⰇe |PrITWz1S9'yg%48.Ft7sk7~CRpĦkdp&8Ѐ5w:Uf&i]@is ~L+3c<2Q̲JQD]gi,M̗LMٖ1L8Gl/yz1FƟhO ˌ%(ye:Xa6ˮWW"&HؔE@nB$\Qv>KihJ)_uRLC^'MϲDXX<HbBVVM@ G2j OPwJ% BݼWث Xnԩ*iW2;oiCE>:72Nމy,gl:8x03GҐ|QdpX4%5s'n&>:5%䠏A2~_23)QDmi)4_ g׭gVb^s*ү /_laSњE&`<|Oa b$˻Qg! |΍ciTD 7 PhpBo6a6f9yϼ# yfpG;GA(-ff3`f+8vN BswLA`lMh'|!rJ~0"gAm{ff 0C}hi&+"L5DBuq1 Y"gu냕wt1&:$)#`?៍YF-RIK]o*t=/hB)N5j$4*aG>DʫSQNS;4<SCI0 r 7/)>cHjPF@EL خw(/4Mn>*7Hhf(RU6XطOzl"\8/"|ѫ8si^ar9JE'Xt\S )9B>*1mcȢ@eךȈ(=l\+ ci.iNiGHꆅq"SʼnsǸqy͋Q` J` ܀DdBAID-ae66͕}nO}tFկךN_MȾ? TF,caF45DfpⰆuYcY_xcCc%&~^+x׫ b^M\p|TvnKK>Һ&|J/m.' K_پ }ˢ"ޝgKGrExuH޿٢~A w Y2zNC1Q-*W 8W& sS\aMaӣc* B#+6]|kH$9ⰦCr\b2#%9O E1Fjn3Qi'<(>^L΢ ,ͩiQ3Lz_in$K>*= I z XQ+:TaQf2aLxh?dpyC&%y_QO<VO}ps[33ռchTZ0}׽ 1Tm2coF=fJp=a2=`_Kbp}qW_9<~|mQ1|{=)h&k&{"p M8͆-Ѿ(9j)L)YNg=S=/j 5LmaRlTHV {(-7Վ;n-G3,=;|en-$L{+7PtŭWG-2zW[9 jM8!{@1IFmفy3 ^E$}FE|Xb/M1]0Il8T GMH*z &5wiGLH,H2]Ж bc=&%.梌8p\尛K@ǭ HegUƉ>>H!TK&vPos_2VO@Ip$QuCu!P{H FTj)Yf{筳KcYgco:kUPӫC73e5v'_1ވ;PE6l ·2+) *@K#u{??K/!?Zk9|\z~R*tK+/Ox>cp-Yr} F'0/wXN}Rj@/)h$# дxZ eh/Pĸ~"ߴ%uVص+CCJЍ|Ǎ'숣di5Bl#(gKt?) i3E0n %iM|spD9 `ee)!lKVpZ9djc܅ !w$:4iR H@394Tew{N܋pF#hbv)W+,Ij&Ҏqκk͓1;7J\0S\#ɱ!{F[χL ,'%xU2/cUw#SQAs y*xL` <@13gЅesԳSw7*9pU* f}FQn˰ZYZwM%4oR(mM6ؕA,M&:t W7@.ĠFNx@ktXcLcÅ?l:c}L~/ųVs?KJ5.U `uۉnth43l*R$rۄ)W݅.j@86ڰ"SZzbˮͥ~k.|s\О.W-m@R\A`psg7џO3X!?m\ښ~c:OWWu.PBr6`K防ەñaKƛ463Q_rArHdᠣ v[>t,Ka: sxw¥ :;UI=w@]6jMq9b;S!mgԽi5MVҒ%BKHq~ܭEM=+Gn'Qe25V|$A@Shz*xʷUu#ǻgmcֵ csmglݲQ#ޖ|rnQ{8׈f8_{;8bL1*%GC֜RņC7׎m eX ǻ}Rux_M걩Dԙ؜{J*!7ygD~uXw{%7}++M$҆}R9iObѺfz(yW7f؜vYȜݔyM 6-)+|䐮-pz_cS/#EVxc`0*o wiNef& Og3yjM!2|kij>M/còSv)s[nUYŎezڙhXchњp)c#e 5ZȗKv! fHhiٙt,pj^XLs}u\I%Ĕ3?}AU`߳!suΕ\?W7C`Z0?ǣ4Cdzj2nq}^R#+$Z+SfkOe#e'r/L3a#}8{xDd8k>QNArh<)',Zf[?|Rx ҴG[Ȓ <+U,BW> 1CwgOS?%XV6!Y*!+φȘ+n0Yi:T$l)Z«iK4YEc:p4ƁCG ]cUl3\4&;ԏɽ$^P&ǿVOARӆzɨzD7/qZ3S̛u& ~R;m59,^r=m.x, NZgѲ@gם2.[uLV~WKO7~j Tܢtq4r})byHХZD`ۏ_ V-4WaenuTr׋h}!-a=o+uiY8i^;6]k$( }͏KKaUHfV$COp'Q O+eVc38R 9f6l]f|5nG`۵{khCO?| H}蝃T}g/cLSTZen$k[O$/kK&Jq4E MQЕYH5NTg;ז7@Jfk"2 MHs$:cxlxD.߱Xް/q G/wgթV%gNbX῕Y+2hR0u%>,,^+j;WnU@kOUPч%9-cpSI/59+ sb CH!g x v6"d ] |nyR3$q<  $Jz3!z  @7b;'$gjg 鷶$am9jؼx pn@ED+V{+s:+- *X H,`60@" s|{BX薸d|TNכ}!:GكEЛ Y ͇SVi ŀ(MT<Įhl\>(1 fb8ܠ3gR ixσ|ȥ\'JhGπ 1T0Y PKiXEk{})w{AEPfGHi,{dBdhxQ7DꭅM+<1% kǬK VJo֏iugL/4gi[sW쿁sV[h୞in[tr8Pxx~ox_Ÿ!231iv4 xWy=Kd XN"^QXr!D7_0?kV\a?uĵxz?.T1$}"U:VZz?M.cuɕQXz+,MT/?X!JZ妣Hx!Fy[ZAחَy#LqD!46͑,,-E=ҧ6k06W`O?ru`!Z?HvP"~ T%dx HFlE␣L9uC4]xp %gd7pJ!@H]K~˹;.ew0ӐBB@{HuP@g:@$#Tq"@&ʼ~?Ǻhk[qOcݬj=eit]`n wr95h !QC*؍]4 a ;JݺlJ6"uѠ>%8asB7 N ~Q>E(Gh|P:JAw{(Fo9ɜ0oY?_g )4%/*&=!&ПM47;P],t:ow(<'9G.8L>]e r œ={Lgh8aSH-`ZI8'M*5 qĺ% ] Bs5EqT"v;6Ŧ Ev6f"ѺVw]ژѺiʟ6#%WGz^͋l$̉=!m΍uP(>ˤ PQ.^9e0fJh_T >|\:mj9$~mzUht@; խ7TlIt>_Z=wrTsl]$/dQTidp'}lvmӤO d7nRy]qרwkw4>TKwX P5tE.v; =V†ĸse/7_Vg%.ײced:0__biFj06sx%Qcw9lw5d\W)܄ȤWv_gd5\JoŨzmZ eO;yS2q+00~I8gu\3|2?`:'J4p9`sYgSWֱD0 0E:K CYSRMƶxM箂G.{3`w3}F%;b0Τ(7ّR&/R K;˕Q/.RV#yNcs~$f%1uMGI4֥:gth 0 '쮫V/!8bTMTM~ t2߭#۽pch?o J݇&FEVSFBt@!ŋ rJ~%J6'e2DFu)] kӺWÓav|ϖᵽܺϟ{am W˺l!ى-zu0f!4L$ЉbGc^%^Z5#Xh$P¨gQ9 82,6 Qhx [c7uq>D7`yhꏽ.Lٵo\'_,X'_Ad+4~qE -r^YjP<u zGH5R!qgM t@!j .ʭIw7E&e-N&i3@u}A5ڡ?>LUYdQH"n=v~Nq4$(K@@\ aRҥtA$%RflJ;3ndP"SBdMKfwֱ(.j*[1YlAu"/G#B #p;m-J8"֋$=zw]"XJ!63@7ȧI]hxZeMjd2cCq6TfnЪIڌM:Q7-g/|@uǝN+yQyYOCB[*༛*>tǹxdn)lp֗O=QzOAhzj˗jn绵A'r咬8F!_$bH =YkFT>_= HG}ϲm=حydžqq"Qa :s'"y<\ә6ӦEODc)!<wz4W"CFX|g M|= FQЗՐWH93㲄jŮ%&kKf*Fޠ=^zi78d8jZ֦Zjɭb1 }ԇӰ 32Wuy$`Z,0a۟ ǶǶͽǶm۶m۶m۶9=#/=kZUYի Hj~ OA Ֆ|&Е\EL`Oa/2{:(qtPfto+ܪ! Q=I=_$#6x"EAXEq7!q9P ]Lw ]a0 6vneKu!'-p8QIrzxUP$%tו~vICI$y aܵ؞PIUfSbq;цvgIإr'& m+RBuo֢dgalv['z1[3T˂ӔŎ 1evLh qR6An=;;}T U䌹, % d^.^ogޤ7o/Joz7oLHwQxeQˋ:N'! Bs,HqlpP ɀ`'묇Jʂ "(< ^q5*i쫸0W28L!=?5G#}0>t!-ڶh(Ń$C}%B2Tl֯M,b\7h >wH{ZKҊ"3nfTE΄1URS_pwhe/bhGݣq*>1kВf> d=<1m~+Jާ^'cUms8!dgd/Th>,ڣ-4sΐ7hUD#w2#"́Hcd:n @Zuihv.Y꼐43d {ϫW.Dr}Ge@"p:n] /_7BU5z"ݻ^jۦ!:t¹ҝ/)G,uԳK [qٔy{d$I}#߱Wd<̨SoBXSAr(`( V<-d>.{Uk*JG0 u dm{Jz-ιc3X^+O$f=[X`W#B&m)F۴hc"5yЫFM@QP)9v$+'0+\@ ?+؂i79?y9y&$4wNjc6e$K]NR %D AeiB~O:eׄN?FF>F k˵#~!X@O]Go0eoĻO*;vHw6fsU o+pO70ܮ$eZ.u0 g1%Jc7lR&ٍ1{,_gz4(gp.ezQv2e@)+ٙÙؠdP&Хp@R}$>.NT~jʱ'Ցle' ?.Q`uVxyD\oLOjYZ|PԮ99E1 ?MgS oENf9ySWGC&Pv"iU6Nމv76U$R|ux& zfD}NQ/'MXf:W9Ki CQP$*A8:QF,$?;͔ - TA7 Pkqbޣ:lг+Lģ7roi;~^s]σ OYteRȞRD/惾U.<د&~}Zy^³~Xq^ӯq]Y4JۤAh(F팥`yIPeZ,uĂ2xз*l]A]JgO{E7]- :}LG0_ zS$je8$xg^`6PSvv3vl4}bAX`CΔx6X{w. cu5 .9OCgS3N3w+RAveƓ$߈ S^r)?nk,jm.ThBtͧܶO/y&16e&.cþ!m'm0- l'jȆt۩?}3}q|zĶ񒞽?iY;v4 f!nY =^'mt~ IaݲꅐE223 XUy*Gɭ)"'N;tNDKbW{A?isK E{zL{/|s]L֎ֶKe.tĭ$$O"Myyk]79,>kk].b]ߣ=mW1w-vi{iE[vYݹͯWfIy"]ٲ=46<"' c'RN]=Sזv,nĪZ6y{+c$:߮,* lev^CP "T0ObL&~"g).]sC5lrPZjkS2#fey$"]n] H3g<*vΊs2xpZq<*S,KW×v~Xf'/ݣI>W&W;bR'GmEZp_vI>[BD4^W'VJ:MmK0% ~ҿiy Fl, ر$tv9qef l(9p@#ZFYr*kO/n =Ჱ]%4]4 *33L!ckn~JfH95=gXƌFD{e\Hzc3%Іǻu@x,ýM`tZNE,f!e*)6_(V3VQeSFc[S eht `Rjkze߃3puYjPPބWĎ,?k8/&̋$p"]WOwBMS4gmbhRǞpI4%cbS <5ǀ!Ol?dE("@(PETbT'F-$,GPm*a!r@-P vsZz"/`|w v/9y8, N9L)ZpNߨ/*7JB"q\ayO6P P7td= w AqH!rİ0Dْ:gր4tF@ ^T/{ ݚTDOvr;P}\KԈC*xL,gAq<֗pHd᚛ZaHTn:hM|OY{~,]Ee1\oB`9AzW9_ )"O/'ӿZ_5(HG B}\51ř<`V,׬DW]zIڧD;eaPl)SԽ p|6 yX;-LmJ2NyIIyI]F_|#z[k uk!xQ%mTQ6]۠ZJXQ|`!8*r#Y*}2iYӔP<8o&+ P GwiޞBZ Ʌ"V?J/j(Yߥ/Ɛ??'w?`ggO+ Zܰбl&ނ SUp=W|,҂TqUmR\-NJNTS;tu= WӇ%ǶcWG{g},RxFIGcrŔ *ר*nӣlyWtnQK -lDV4v֗GKVt~!~$Xhj#kcۤPYD#@< ?!TC_Yߖ/LJռxG]즐C}E\;kޫiMgx6 sPAr" -!NK3bI=a{5~=*g^`:OF}1\l!e^;cڗˏm1w8M![bz+N>'!o񱸇y3:$E3@M󸆿NҲUӞ\{ ]-q0M1$ ; ~nk]7齉P' lPlPs%H>i"sVQt9oƵNst4k?x rh~ٰRX5f59\tHUZ|21c#.QM:_$K; ַ0A)܏ J?3-M^0DRyNEjr]~0KK>.P5z7Ph/<;'kZ=%vd֗ͩ˷9sЙ޾s`X{zݦ/E+)@gb%O]..uUBeY/anĀ~*g2ԲJd10|9ΫL<ꁡT1#JȚ֬DAM;Bp@ǡAW"mZE}U k߯(}މZmx\OQ^K mЋ_B\&-,-7orGV@ LS0$fz/ql7z k~B]%ћ6d;q%TDIyp{!v=n 7/G$-Tpa, aJJĤn]-(_2؂~Z)S7,cxzRT_~׉(cM/>ث+-ˤq ,L&1zR۲(9gο{R'($ /G(gMM1F>W8S(]P,r N-_'}(%LZqc|5O!li%֓h)',y̛ACq-Lv;ërQa(lHb)bBcRa Guf4H"9 jPp-(D b&kXqrf&JU%i^pa 1ۋ'jaqq,K:XK;8?&}wv-$ 垳FasYp^yg0$()(qcq!*ơ1Eyna@ +>*}d|ZHm)áw?K78zƖAwO|i#g+)V'tw^G][aj'Я XKf UY2u,%EroC* O Jጲ6]ߑ\$/i˕`.x0hGY1DaSx'$/C@!>?fr9y*iiGY?6^PEW;%4D6^(e_Dp lC`{9"MRo.)N):@IW+oNo)C/F܎KԁuΙ UM>iȄ)[0{mb~ȧ mĩ/nj;u֔7[NWA7Fu#5~AFT `"m,Z$UGVGUA5kg"`##/Rh2;6nc;r(kwF@EH:J/f& :'kу/.mHcpm8M0,=Y1a8D5b<4#:I3#S03ao>eՙ.kb 7giA}5gp] 6_ (вbyꬌ6n?\1D6 xeZY\AZ|jrl|'Zb'+iM={lb@dZ&㰫'xks5G{LpWϔEܵ-^rLd0"Z6:L=@J-z#MaL>,N&Fn~ ~0{z7 ?]h57,nBm g+(3ȩw7ww)0{2 ,iJax񘕪S}.|CA )y*8;8䲬:&E ;53 UGZGjWE9Bt(e}]3D VOn+ A V  EӐ LyC$_]mJĊ#f"XVkvkccse+];D.%бa$ʃtF]8S+C&cȇ 1- ߜX%١qԄ)8KLp"Gcc^,)`0(E6LBO WRAP[tB+S1Ն"2̏G۹fy vfnvMli烦ډʭ!qS{O1ÚZcKk4o?8̮7"o^f7je[Ug7v^2Wk(d?7szYN'/W_ }[,im ND P9HNzV14)6dkc튟6:FKkk5;^8JZiJcwP[|CcX0k2pvvwahp9r+I/ì uu;@5|ご,ؔɒް;Ah [n_t4@:VNY-bv2 ޏ]dpYGy},4Muoglg^4mg}.:@umglZ`J߆_3VUFoU*X>^B, M\Ș>p~~=uS aRSޫ.8V }poh_%:NAi/MJwijcU{f&=TJ2=Tca[ҭIfzN~~͝Dms4Lzf yk$ P(k?{nsne-;/Vˎ`t 6ɯRL)a}s={M`4CkwW@OI_p4!:^zQ@SOV@d`E'~]?\=xдytܬ9'ޜ^~~ݔ14*1(-ȏEn\*\d15@=]Vfg7ݺyJ3cҪwXAB6 vW'&b- ^ڛi5;JE\9D69çy+qw+Vk1 P=8lʮ6 ?=ըK8˷l|nʇR.MAMS,kG^SBU77tZFxom,zu:%5Xp0:F ?R8Ҳ{˙xfF)K{yV@~l1lSÿݿE=Xץ)f9\.ί~i6&)X4wIJA9_/2ʞ5&iX`Rz28&;wA}';. +@GR3$Ԓfjnߪ¬|{Em./_\>e9+;:$p<_(րO0>i_'/skcـL#oՃ g%+1DKP 2B EGiA zCHW? 0Fw`fD$pI̦`| 5nR n78y^!~ޑ-f _5VDQN@E4Bn˨Cp 欼Jb6?e?ji7{'|AdKA/L"UJa^D).cQI?+B Hn]lqgF$WB B^t>(`;q;N]\bMKE׵=1L+fu#HLTq i1nǼitIצR4&=iS-0k|IPۺv5D̈!6 ?Ɍ;<-+&mQ6TA x !SRj>R QrncoGM5`@-:A5*! b@G*} k47ے 3_ Rb؀2TR%:o8){?q#vJkk|'B|X2%风82*P+s-ІF'{#i*pYraKk bPit~!T5X ds}:aY {Qhg8;I[8A2Aj!ݫ GXH'RP~+^cIrWJ6'UK8jMA"WAԩ9e_¥`?=L Um إe&Dڢ!mJ]*P*,rB)OnEq) |*Tte.䒀}& N}ޑSQe=l`ImHkf˦_w|.֌ 4ސ{j抡簅;CwmӹӪ}{9JQ8i~ԉ/s8A抚ͻD ~0k0T*ՄӁBf\ %BaE*ᄎFQM) K`SU+G^PLMIr| E~ϗ5nSƫt^"F泻mҕ"Zv?%>E?J6;F>xQ19~g2';E u?;_ |X "tXk0*tժA9/RI~tcީP$?8 E31-AldOK՛}rI.t2_O0TVE2=BJfǫ# %e1P).+b''jaW!lDSRR58}iAӁ@@ Vy9ir;M؈i,ʪn@…F%dA'`ك"A!H͸w@-d{& Uf*HR&L_@c/Ta*Pݜ!z d5d|tZ@. :N:0 FjO/%]9wq88qq ng~(=oSqlz/|5ԁqU%JV[ t.R|Tͦ W۽Ϳ>ƬkT99,xM6:ϵu3:nZX*<2SUU}DjK|EW6z͇LkmxDcW7rq5ovyaW[IX5HodU_8+QX!3k<v9xtHvu#]Ͳ7@WJ3ѱVJÒo%hJv1bvϰNnHR"'5L)?D\vx@S50&a@ |.*S<&֚4~R]oƯ2ʫ|M3|xX\sXVV>ȫ(^Es\zn:y$?H6D:~^ǻ$|){ "Cstr:_5e6 k5APIlyjIY^z}S^tLq}ZrvM$bYNX~P{hD?8XD.F.}@7jv֢0cb[Vf cYUb;k֦%WjqKL-mZɐ.YІnl\̓:$"Z3>IChϺ>qN)·ѷ7OLiaR)ڿB|HWlki I4z[\Ӹ%p9{Bz2k#+Ʋliwߊ Ll82=(1,LȗqQHjP&C;08ũrEE}vrAR@2!2PH?.t ӢI3Z3F'ٚw1ڌ/yEҼReAi^[zr;@b%~@&b0vȈIL}I"qTLXD3rȈvf ' \C*@#b (`S c kUzNs7Wq̪+옲%G|̰[!i+`)/+4 ƂBgL %';6_# B5k!.Y7J"r<8^K ϬRs$ /ш[69=um]@*%k T"Ï9Mbu'@ϐW R(魵eD?"EBgog=Y1rT1By8=17 (|\?̉7XR[zCCԌ SX 1P3BPr1~53h=`gx8i޲.ImV$\eA=f$B!ZxZXNdne6G9L>(1N)/<$pٌ:3:\L:%/5g^I0 An4-E80n*2Hb^La0d~nAWT ! yd!V[?yn^vv:(X {P  1\$!W^PA $BOk6]F{X2i۽8Ķӑ hW5H4jPgz?=BF@{H$Xr9x:CDAg7x)t@ /lal jm8w/;QY )= "@zRv[1`cWv1_ _*@@m$Q*RD$l$%AVBG ḦSmy"x4-3Q)v"0ШSQZOVdP[GqZj:6@Bw@^@a5Fù@k KloU_X0 ڞlwdYiI?pxn 0JcfPz/v fPL #MAy+k (n}gVO.&X5'oذoQ_ooc&F'љ1U1mv(2u|ҵCx{ _]nPm&j̭YfX3{ @mEl8!e*srVoqx`ͫRn= nXZrz|ݺ$4Gf!HylDbr&C5Ysd l |ȁ1$u!/r IpIt-F`JrM05"{o!{1vnd ^+4ϑt@vU/D*ǬĖY' x  ͏XA1J& M ux MWzpG8Xq&{C:tA a?0cOpI,(}<+T$mm"QI_2b5lgc \xQ^@!ӁMCxL]3}0<60Q w" …Ysyj&*˂ۢp}\l`@?T\ly9΋1lЏ ĐK @`2ՓݕeZX%~Š1O1lllZѦMSMM1% ym0o.chÓJծn:ab,G 67Mio=aE+boBH'&O {{K44ER -RN!1V~-@wP@dI z) @eAΤ~lF$dD6WK+V yC[eǭhsk VX#c2<$G$u&MJ@5$jD @r}VehJ^-RH,W6ZQ#B _ޡ*G}L ޝQ+LȞx1Lq! 䉓{OIgX9T6٧I1\aA 'jq[p-/ yv>R%9}-4ߢ59xZ.%7"DjA?<c#";=W*qDȭl #'$ VoZ b>Q0Ä?Pk"䯶8K`{|7>ʽ5ȿT){a2a}5&*α '#2I8/W\LţR We8 0Z4?\PZ5&k/nRja.` rYd-礌5Dr.($פi$p CϨIs@HܞqƩ[]|Sy9<[N> ܈yu\:ji.^QGCl=k5I\ʾ݋l{EJ.DATA!`?*-ߕN4Q"a5 )VVͅV'g֡ `?Q,ݩ:zL'r@ئC.03fc!|DK3źE*jǰ:F'm1oz|m j;䘝(_?z3@ ;gdsz%Xnʹz_bh*cr͹SH^_)0?d|oo+f-3Vh:nQI@#yD]IARtѥex=n9PX2z`a\]:#5jpQ[|sFApbJ|[n#UhRpxG !S&/ +<*gz4$ʗ(:Π1lWЌbW d$oMT1S~5g/<%鞲g "ooͭ5ɀ`Tx#}Nj >y#i=rӗhn#F[mXTi eыEam*⋛+q_i#GU*)uaxGJSZ$6K]# x{1I88lwdҚokqX=( 1EѝU&2uTh 8u+w<ש%exc7˞Ý;m{ 1%u27ɘ&5iB XYf;saז۵ƶFM/Yׄ6<.m:Xϲ#Kb޹r:>0HV# ƴjZ\-ipϼi>ryinڜlOv5C}XR =gLyI{G=T>y=M:|;]^ZdM1 .|,,FdBO&c ǜ{TRtԱ6Nh3iwۊwZoϩ"oa[cZ ڈmm%<\O5 prl%:QG1;f^Cg7Zӳ~3/@,I_[u5. v>xgq5vy#uR4̇cm(gAp޽M]Кig9X%ձ9\*y}rs 5y0y"5TиLC;ӳkjqy%A+^*EKebo:MT/Km-Ӣ< rsO\Kͣ/zq(.K!1o͉~vesZMؠ?,s:Ou#WXǤ-xp _o lr:<^-"ųysF5BuiGgR:U9#F}T}`XgK5f[+/Υ-c8T-JO`O^J_RVy~ŭ) LL\R:!ոM<<5/kNX䬻%.zkv>g^Tx.ݖiJWKσb-Jܧ(ߣH+ĭwA2{&Szc "Jǥ-]߀I/mz@Ioϟ ύ(V5UYqxdeWT?́gZ6bZvPnv]Y^E{6o$?%q'ffj8t]WtlO2_N.G!G&GV#:C%tuEM6Ң>;Wp_3 IJWvӻCɠk`/3Byc)j 첨~&g{y dfRơȆ}9ECaKSSi{2j;7N}S߂OM>#fL Ʋːq|h-):[#A֯h!nEҋ ʏҝ\>%f T7Y&Ueū~ز˯jB>؜BqwXdvh0$۹q0 4MqC[wm4]}k\X J-++-Nnf!:PͶuىJJ7LmP+V2DJ_:p:D5qQp/,gB3*']b=7TtT4HZ/`?a~A: _\okj@.,\"˄)6XTzVz 6s/ݤ)eAehfT%Jpܿ"9`RKoVCpBVfT=}P;StjX0.oQťX_3W Ei$n107q*氇OM; le= o]y6EY|tH.ǭSw3}4q\tnOFd٪(\Rqwݲߨ2߽Q\Ŧz*,7ta+ =un d|#PTZ|(zRhZPC  vm&΃b6?gJ:`uZ@VBڪEc b({)0db <5 9XfAI9$ k6͐WHv.i*Qx'Dƒ! 2!S#RPT_IJB3ȢteF=S /` /0L-(g8 [`K V=BzcpM(ߣ7iSes;l E|x,LxxW+:eQU m+W0#!M|H!CbjnjN \dge&9nMW/_U ,%cbLߙPς,& bO=жN) Whtwx %U͜ iHKU7{8`89si,*5~MC;9ZTB$p2`븑Η$b4=#=2 3U39xz XbgĒ5~r}F4L ;N+;En۱j'68-|"C#< BH 3d,|;妏2 A\u,w -y/1~o*C̔_CvL|Yn(AX*t02!aBx{7>N76wy7KoW9)ӧvA>-& 4U4틧,T-h!sg]nlYoqV)ZK/bw!eLk";ϵ_}AWU`avdWY\Ƽ-r${'$ wK$,`O1)&.:Hp pAȶcWx4|_fvY5Y!'Tݗݗ4۝0 o:h??N5Ҵ>y?y'/ixǵ?y~{>]ku6-Im^O~_SWjU|~ si'z_n6Oe|QXdܟ׮Z'z({}Z7,M+a9^</'v$]V!tSxo:nvOi%_j=_>~j?i'{v.-˹nVnh'7~o*,dov;[JyEtiBܷA b|eASbۦۏ-=,֋?+_篿󿎵?νO?ڻ~^>??y˿k-xx?i??Xÿxߣ_x? _yϿ_ɾ_Ͻߚ_ڿ +/寓CL_tW]8-^S6ٮO+OfM.esܔ^&sոCn/JOJ֪M^ϣ\/9I"뼟Q_N92N 3ϻɽ~oKNiƖ9SYFbu/TgNKUcW>Aaڮs]On2M]Q rاEvcjIޏԜE^\ NljX?Phr:%xNRi[rK" kpDAj4/،Ҽmd^~?}E99MxZ_XT;%$YV>횝vj5-#+y, k ebmmGZy9:O3lnn}og\F?UME;UV^CdToxsv,2V1Î1٠\SZc3=wR7Kn5 *,|}*Z$tto Jk}]\;˓y]F$_oB;dVݠ¤Y]ox)::&b`ꗛppլ2Ȩn3穋dI7T1C^rJjW(ΰ3KEOz(MO*^8r-LbQ7R1ڱ81_4.WF/7#hls'9WMV3QqĊX2r)g>ҏ\`#qViub_&$m\L8[ϯ۟.Džw(uZܣboi#^7?.\7|t,挛bt[$&8jSθu,'2<1gD8$C"ǫ` :!ȁ.ELd:CN*8MtnBc1+{BBD V/Z'>џ@g wF-P ${^(~v+־UDmKEpB8Z'2?-ؿ&W)ĖN>Y?8k?hgцG"+Gz/(j<vohBO?J@К1>b1LWn:8'c#ҖuhgC?#gBa6Oma 9k+RGǷ6cJ.9w Gw d*w GG3Ӌ}|N3#q Q#%Ӎ'̚$)eKT SCv ~}ZH䴧ɬc0feէωMIfI89jRq<8\?!t46FPp^X.yPO٭4`x,2(.S c\Qw.a tXY}yOkc_ !Bm Lnm87+LAe^W:јUC?M~8Ul&{\!p>ofn\*LL}=]Ӑx\;i6Cp~n^w z}?xW5B-+&iXyr rߌp/?p#c]{הo{ fCWjx#3?B0@{uB/nK݃}q~!vWF"߸f}y|y"Ĉ iޗd~r' ;,aأ~u'G폤7TI<#K'k?G LAmL QmN6'1?~PJ/ >&;\5P"QX6 7 qi j:]<o [F&52׾aP"H3E8z7Y7-l; }S9E8g!ܨ!e1G(2D!<%Il;ն;{: [$~.zA!NdXzpI+3az!%Q:G4BSy'};JSp9}V""{{ѷ銰ΦF(PZ&$b|bb7 y: GlXǟSqs ;|7Ef# H\GLE"  0eAt;c%Ĩ7As U-Q-v0&'}m#XzOBm7#J H)ݥHFGk<7FLH(3n~ JLۄ40!3?㬫O{TehՏ-4q[jaK$rVA65 0EwpEH:҉"61c⪂h92&TJU.u7+ 1Fu$N?8({Qj׾M"yoDuᴓfgW:[ٶvT=en~|qoM#aZ5P?t |unXl5SgxvyGxa0[svr{3Yewmy]x*ʿuѺGg+gswI28-wR^GShO '`?c{ kТ&=s إmL" cVᇣB&{O1& # e|~fHZ XK7KAKзH'ӭGWt%RI't"b TeRmI3#]|,&'8U ez-AoKxp]Ob)sDDX?)Wi<GRXOx F" Az@EA2JޅbZPX« R~+jHU?6c;>Q+v(2dk %Sn"+&gHw%{.!hty90Thm\޻x~9Z:1qSWSIjo502 ?Y\i.#rЫ ז8HV^Lk*OG,i,cog{@ 55G/),ͯwx`) Ne+OYUtwKơ!#c/wdyO v:7_Y :d0*$7*+yě<ۉCCZ{D38/˻МZ1gj5 g?DmO+@htځ/@%Y14wh]zm]@ɍ1` .8cbc-2? 5ub@ "?fEɔqMw0D "$B-PgSk$ԑq!1o=ȃ$/J;1aht>:QS頎#"uwIA~îwJmؔXDRmO@wAcШPBetn|#'߼Ua>vrtǐ,2>% aOl/J#6ß~mU@Ɉuz@{CH^hhԁ!!-+/ܼdM^O.etρߔ_q! eV.CA9FZ˳xG5&.)3eMEƮcrɅwdJz q zm >&qPjl|T[Yi^8lLDC%ACw;+ᛱe% +hj_~fѪy'ui_p-뤣i+dpV ,wZ-kjY`Xy6  )tܖmᄽ^jDЙYҽ~O&I9h4؄} #S}A[ 8䟳9ШQ23Vh(~|([!Hb%C.IApOa|Jk@?"Ze̔ * GI?_mi iv]CL%?BB iw TC qrI #"$MY+a" $+tB:ơ⣫'C+B{_C\C/F~lBT+{ ;ZUkvnd9m`f>,Pkp221} #,>+w-F<*-N;REm_;,F!6A؍#Ki*ͮړeHqN )b[m=NpV2Vb8zo>$"$ \N{,;|$G^GC/cߗ6݁H}>7|2ڕ_GlvQ\TUdP*M6w72p3щ''8 <3ۉ#L-!TjDpj8{pX0fV -]LjۢYm|N;ix{ip0!eH:?&:D|:b8 :q1S+ZovGUJf.GJ$`a{#ZWl8x+mKqv {;DZU@#8 VT 8p_AԊCOgy_DAfKSPo {AķȄƶlڞ!/n ,1Zzww )RʀU8!(RFKB;SQqas8(CdFHL MO{HEVfaa& 1{ {' ܅bymhj&7 I!|`kRYB[:Cq/m#@[^SNe"j%]@țd}. GO<Ŝ;Vq\ ñ9xY f[_ł y?q\JnjSNhDЈ3ê+К{:"l/Ɇ~R xzZCĿ?FڃYZ kXtV5"MƿfVC { .~;^ƴk_0g>BtȆoS >~XoswsE#%ĪtDuW V'ٸ܍G]nD>^zCdhH턹iM!EtU)\-D(/ jg@Ȇ EE4o@"CZ$ع$ qu )ŽTd}T:~g+  gG,"W'\j k0ŢkCz,(wqob =dz}  \8B~=an˹qJt(f(r70פT3pb%&ĜXwLf-R}$XH>7I ^0= ;J/lLM1$zՂ Ns5 ̯2KtDmZIlB36Н/?̆NyXY|j%㎒^Ry[QXtP`;.Ir>)VU2 dty]H Q,ʻӀmׄ爊jg!lNQƔ~M(B^jPKQ9(j3"A ,t5m֌.lˈ8nK$|PAG``ƻAZ;b`n(zMh>Pθ5:jo <37];W h[-#Q6hh~P0x1 QӲJ?^ShGt [';7O>Ąf l@9!H]74mu87)'ܬPL}G֙;~}{{pv1=E KWQ-!ĝ$(6b+=U>rfmPB204R;t@~Qm$T¦k>?$ÝEQ<@jܑ$s"/< # $D gaOMaNks\VOpu9es.PksG늅ZT6`#80D@,%S7>dGI<ͦ"0Ko^ t K'Z7a/^(?*7r_޺d<|ʃB2ImA3t9-zxRt8%d_o7'Kg;M~ v*YM k9sBjoaS\em J\ZjX>p|e{jAp౐=EB"b"Jv8&zeMfJO}VbtDB- .@`@v+`DbcGHbGf3hr,gH;;6FV\ 26Ri Ӣ 8] wc  =kKu'p׬ti6Pgf^ z:{%<'sx1) \F痯h!1B6;Bp4ZHa`in~`s&^9V_haÍ9fJX$ֆ? ])FUbNU+w51S%a e T&ySq7cĽ.|Eu@[-6/o$%T^jVMG{~fGK }ϝh&]63p3U9j'ٽ[RE9tF.ei~v].oDK ߰1P6{MLX8 rOaɛ(ne7n&iaJ;>ϣsj*bX SjEy@A{ecbr [XhxX{muj>m۶mԶmڶmdfggN+Yw'bBE}4Tzadېqqck9z ;j{ إÏ]&'w1 |!0UYqLebKsY/Je:ͧxu_#@XugX(98!H7u*:R'khWɜ-8@.ڇi[ 0΋@JX:I ʠ|,!:Cz=Y$X˸r >%9hjl!#9؉Ņ8e% ^&曡H@qɬzi2N#k:f$I,Y^Xlbا8CU|_bsXĉFiH7Ў뾯T ֢ lE!SXhb).G{, Q XĖ܄h3)}z<Gq!E4bU k{$J1SxG Gַx n""Q=q Q:a*^}Κk.8JVł;֩J*BmKkeK&Z 1%N xy VkE`Z5=+WZpK9%\ eJ7?mc]LnpeC+*U4ŘUKBs}QxU6N% L&Ζ-ObW [Ӻ/zJ`ST"ld?MuyB$[|lFZ1bD~oXcbDTеp;J΋݆~baЭ7Zlv9}*w9*(Q{Iq:b ,p:Ox&uORL;B_$a꒬s~pΚs pMf3%H_"r̛{pCc[Y g{0 gW˷]@C>SdQO⃸zM(iwdOh,DeQ'"2S{biR?5ۊ<ό7BNSN'AdV 3 a [+ pKeysKl|2TjfK.Ͷ:1O{kΈ \GHʩ&P~ rRܯJG7N$ =m{GNrz^pR洺E-ڏ*Qx$sEy<͑:fcD*zWh"EdlZE+OȔ8L{q=eZkD,WuhѰ`16G=t"sz:*::FDm0Baj6׭tj-'̇ YUuRbDPPXV˽i"T71tm SulMg,U[$.@H# yZ^h3O L |B:؀fw]mM!YN%/0n) SO.ZJ;&& 1ɎfMTkFul(ew*.Yr+ t1lq}nm݈"/_EQ.8BK\>E.,(6R["$-14w_=ۮܯxY̗ԣ͆@'@^A#a(%ILzƟIg$/?`seo<x? RPä$}m$6XQdjӷ+/GJn*@ \åTrza8҂' :PeQe : maos2 V#>#8_8 PpN 8G{@ڧuG Ǚ@ %$^ W& 'nAޭRr.ꈛZf4T6a5Xu-Y ^ }&[(%Yj(Qhy@A@ԓCB[wI ?u=Ҫk6JQ+ 1NUӣ{uᘝzIXR*pdwy}@Y.]&K{ umSk02B+w s~Z%زvxqS<p8 INCՉyqF(#K@KSɀS䊵i>xS־jHLsK\@ ~fkƿ<^p;F$ O+abŘ %qp-ET]zLɻ:?Ԏ6t:0;AW~;LMI$@Fx"q/0Y9HQBj_^Ly:Gsdd a ⎠#`=A V"b.g J01F1C+HaeyF.F/oeg  3xo YFsn͉~K ;MC H~Pu WJD5Lh@<$!CvI{EEx:T*hͭh㿠N)sjz}7Sv7;Vʦ~f X?7ZS9m( SQNiᩣU/krϾr?P?SՌ׫#R!Vಔh:ev@KڥKm tb{M-DW7)xlL4 %`9ρaMwo;Qx{Pcl@`O;7z̃9J9$ 콟Bq2|1{`g(¬T‚vHY'r[NhwEs!>"!j-vZ;6 96^Eލam%k~7S;34*ūgmH^lhC.#xxEfV6C-1+r_i3[shhP_mV7~>}̗7p'<:,[!t^F( BQ 5 1J001!e'tÃQaԡ Xzazu m|w7fܤ^ jb -w:p6ׁ1W9F0Z]-U_c> g+A"5!}٬,]‚Ȯ*X1_1 k;^,/ޜA`)RMD+Un^ti^aOƢhʘBCpY<+"Ky\QOu8* CпMRNnFb-#7eLO " ;|*@/@c\.\vĴdN#ҘS ^ W~[쨩P<'%Jt5XP2w!">",%F\hzW(QpU@iuq{=3ڡ|G%i/Il)7FGS!]kθt_@K[{>_?v$Hʒ*"tN/O+04!&jZ˹jDP0ZyjFE)Ci!P P~49r|HC2P\2/_Rz#O)7QQuلW)3.Zls7-Μ˗p>,~Yf0mN dа:6˟@H) ę<{5 [hҁk?o/sq#u$Uo9=w%8& RHꉔ:ջh`>GJd$+J+ZW3 #/QՒmܐЌX| zP/-Fڇۓ'"]巚>e(im8dDa5*)@ʼnm ط#sf' qYA@WE΍Sѧ}YNq-cvFr}=콶5{vdv6gV"UNΟkPʂ\+Sٚ2e8pH]Cn ő`bVMũj  nũlkr' 9ǥkd`hx$IDJQo焉QC&5/aco*d'C)qKj(.JEA~-< 5"m _Xq 3 ml|Hl3m.);D Xx D> R9r *_+% S긃1;jT3'!mˇ}EMmFI#i#l:IuN/Ɔ{Ԫ{!U3x)QÅJQjO.;|U"x-o~l-`؍D$I(U7YlmV3"Vk(4z;QYuy۟H?F^yۅ'IK)OC{tDv4sF@o7A5K-[g=ZPaKi?؜^y8X`ڍFE+ 5$^R/8a#~qbWvA+dn3n 'St{7ȽMW-73dfPK\Vْҝ[3ʓ7j;!*- bl^|š& bQP$#pསv1dmi[ҁ ș#'b"l*S1)(Ň{wpnpC{ϧӑ(]au„ZOLyt(UO޻#Ÿ́5 WK $vLgSq>RYIӵESz}-g*nH`~z칺`vMqʏ~vp!E(x@ar="5Ԁ*>KP 'E@h!H`HL:"6ca"K.߄V9cȸ>̽_(&*p .$̅ ]KZ_<,"TR2 N8Ghw+^c4+Z =v qRA{0P|?"=㞖nYl;@8uVIh%Ek]Pg6_qOd?XxRYO:bO= +'F38/Obw`,Rg! |qe%0͏60/~y>}`P~% ޣY4;va<"6%Rɖbk\KfdI_6hku݇']rF?.DлZ S-JH5h+f<_tW{K<3Ʀ佧;xgIkQu9nG[W+'|Ҥؙa7𯩐={ݎj"U3^[@N{xFѬzҵTR<~l6+zjVڙkNj\|b.7M> fuLh𼈘st?ܛI-)>UQS0I`-t#Kn\&;To'R zB/n62O \Zɜk?N^$hٚm"qOC 1r:{ެ;OQ;x[#Iibȳ+PcS@ecoǏdSsc"rD_eMixs̸9h.xVlܭh7d919?b{%oF~3N/fƩ?w RnoA{⿹qrOPjʝRӭށ)7GbG9[fԊl 6xchOphy^x&nߩ?/|L_eEb$;xB(^FG qlCF~>:s|js2DRe2PhY=+K"*^"*Uv>iGx'Bmx6kr| XcO=K_lͱW- \m2Sb~=OAvjڵ^Vcl7w_-+R\Q26ԊPD'/O:=@q7}u|}?s%;oL2m2GMWhW@r5yG'1WO+C#Os1\Ȭ7"2K'LwOuy#w 'ԖG?͋t)@6*´#e~-̓IBlΟuTL{16)#ݫ}О#R?lP8l|3Df ],Ly'Դt>k[akL[I^\B^9 ASM&Xoq"2eD(òO'-n&jnOb !֚˞ŭBjRʙ2:rzG݅ UHq/+ʢ1 o!%QOHnL֌WT[K:'Z"z%D'avI& =L.RG3>r,T .4BN+\j;d?#pdߓvjM\?&)̾ȣ4zE󏁗6C=Up[-DE2|8b2ͫJ *l!c`o!YG1D "m-rYJtw.ZUl+}k5w):` 4I)}$Bv u^]M%6'1l*}NI`^Tl# 2Aٖ:8rM~||H;A2Ƹ$ლ}Lv_`{p~Y jN6;|F2xQfJ1SӉ`9~5pԛ4.A Ou⿫&ߵT E}sP鉸WK%|ߞ:$7RwIE{mIfޙ 0}3m "3V}$9J{B_J tKh`Mj]{ B锲Z6TIM\rٛCr lӲ˃<ʷq^5f><|-tmm7e߅b 12Fwըۍa9yPɋ`Qq|6}*~ljѵSdbD Yzy50j61WcAL Ǩ"O?&Rqmt j©4"RXhn$=Kk &ÀX&^%Y_9\?pZG.:߅BC^RDV9bͭ>Ÿׯ6!+Rd:s$,ZHү&3CUx"Z],S:t,cDP49] WxϤwBjꭿRF^ND#wQҒP/\q^p>Cj{"a+L#eN@(tȸVMS.sdSqn}ef;ʭ8CD}'x[u(m(Nwj?d-6xX!,ˢTHq66[!irϨ=zԴ9SOWAN^֯YSZear%=ZDQJ/ZTuY'G:@c'{G/%>e^Ȫ\w}Anx c6QEk? <>""@ّiYs{O{址ǕkӈD-niYnaP砗*01Z<5Ҳլ$"xֶhWXٕ/Vd0MΤ'ioz6dm^2 :'uSwߩ'K=Qmƺ1K!È?],(]D&cXX=R>Xa)&f(Ԏ=sh[sħ M)_r~r7aՂKGxkqڢ`*tTN9"Q|#Wi[6AٜS]y?`q$eHGrgG2"h6*}~"|m眪ӖJtU{ &EQ˜tC͌;,2{)-Auz\G* IO7fk&˖w7&r?z}HcnW4q<ڲ(t4W{[U50,QC,/;rnDAl 4bZtɫm߱ YIB\OdoYa( "E0ƛ+tHCnFNSRF *9xIJ^bx6QcuԌX2wJTDpͻc==J"_JJ@tLK G~EzH63PM:tJ~4!d$ξ 2o]/J3k v%7JѹQHOt<讁gRXWO4mhq5_sņ ӵD)opHHj4=[bQ:UPkP6x:"hMA D7 >cQiZ#_N]*ZISKj+"\ha嗡mL%NOTXSnii1\r\1[fLU|6侄1N3WpJwq⎮e/j41;V^qVC߶⼠Y(9KԀGJC;BKFB]+8j޽Akg:$9kɝSO6N ,'w2ODu)抣,iҐ⿳75 *AvD )l %{Eh2-".Ok:Q u:/LBtcc: (pPJ{mu@Jh1zU5{(0Iد&_ AC }>,tcЀP$+AJ>sSe2O; <*odp*Ÿ5.F[u JnN(,Xl%gdP,ipReE!G+Nޕa:8?<]ˁ⟢ W !iS "F: ~㹟xDR\.ՠq|CX\*eR =doX;A] #~*ejg`s{{R $3z۫@C0lMU5aeW;a=W'mif̜/+sy +\FɡywN@݌n3b\ Tn7{&+[%ٞʗrS^DwA`ՌgƍN=Q2aVȉ:if8,-}n#ɚ܉vU !]qpw7vQh/Y]jy5iM^H{9 79Oἧs%(F:7ݔ-5],o+Zi^YG\76 ܂^#\RQ|Z]em˧l]MhZ㫣 ]"Pu7(+ptsu济|OzS׃ o]xoOAMIm-HIos!`ϣȂ ERY4X O6 XxMl<RJ3\7=s G<[PCՖdWWĨ!l.n?d0qc;Z?6UZ~PE25gN1YvÒ$G՜7Re1LDlGGh_F]%3 ]]tة"_Fiͭ{r/اlF@YYcn~Pk} "JPv9'6II$'Xջ -|X\ԭ:Yn )Ff]%Z!Bmpީh $Un-|},0A蜵ӗ騌̥w/[G$'(*Nɰ3-T,/y7S"̔`1 5,,@Lү7XHWg60 # m@og1LJ Kkp7 @eÉGW{ .%坡(T=%,\ Z4iYA UyNhP=]ptqr!9; Za9,cihZe"!eexv%Av! 8w$L t\*3)m!,n<+Hm[Ke ّMd?>T2We Mx#{=y@'Ŏ tʾزYe~G{#GPQhZeӯ|FnPc*eU+qzl:rM2"Z8ysw?'uxQ`.2&nZh$,1}bDiAǿט?еJ-u@-*ivE)ֺdNeNǓ50g-qjCՐ~'-[(*IoLOݯJ+J&ؙ&67ж%ap$*lcHBzT ȝQ(%eM*%}'1P5y#'(NɆO_B3VrTjEi[eEFԼVKRyR偦д!$LL/ / m9JAs<4- $kDʢބVhP#. 64}*q 6u7b[ݾI= m. JDn#tHњR]g7uosb+CVb[M|yX5{&#'YYT}ܽpZ6gtĿc{]%'y_ԭ꿀 `),g| d|Ntmn&˸ VX`#<%x-#G׺ȴ`mn/RgVUfWZ`V2#N͞u8 )8\̴8:37+}TpuSh=yѻM䝴bF<Y@eyt}kyvYyO27GgW[SӳzW(.T Kd>:r9A:uǮҜk] O^rKu7,) r`ZOh-ݲ~z0N H j@ٕpH$Vw>J| =H<]6 H/ґud|&SD>^ דbdJ+ N.c~`Unei4iwVug>&< `S)WLj= >7,%Fsز;!F 㛧#Gd,ËR=&[}L\Tt8sm+>_m:9%el%ϿKn]O >ss2xߎ2}O'xx֡LξUIj5Ri*&%$K%*>Zc"I9feK[X}^(gf1kX}Ґذ}EJE:C䍉wW~BXU(o٢@gBܘ`t>H.Р ʹ{3}w9~?t@=l:a?UF W )rƉҚP[#|1| ur;yռ#6n s:XI0? /Xv{w0V)wL#tyS-}#GHW ; \s*p|0EvZ,6X/ߚ&'ʮK<}ks5\up_GCp0w_%"NuK?_Id[uꐈnPC@ْ\{oH|i.\-$_D%^Á}$ +Y &T3f>حSS}P~͉{m%6mO,E=ɆJ+#=7KɶGDh_$<Ŷ5B64h{{'$7̗2'?wr{rLdI|?>^}THy@4+` EP"-cx:ހyٗ~% 5T\2L6HL$ǓDf蓘֍WXv=ML0_NɕʰdY;~u&rj-H]R;'˜菽I{iC>-# 9'BD BL]ҶRJU)ձ$ c\fo(EIlZ 3S[_Ok*jƝ& $jri|=[7y:- n !#3 ~Ɯ&B~C(ԎÓ-u 4e*1iQTp18c-wǗ(ACEZ:*$ն5jL1cښDL&?J0r6t%Ra1  lYx?(́X́@ySj*7eqT(Җ8s|I^`t3-| bVHӘX'stKYMBrCջF-lאfCqҕdDp-5uDpj-H\!Du| G';F_뎳Y|V+ٝbn;~:b+873;ra֨_؋h_n֘ L٠X,SLp-),N-ZYL^Cq8YXTo*+E,Ԧ9QgT:=櫚64^A"/m\jnc1L;DDele((*+1r*) 'dҚDbsCKwRJ+  6QjE WvTC͢7a'qA2j"r956 n#?(S70HW$Ы μo}7†uT%OTgw(9YFC[EOa2kG"aMJ'uMYgBŸSG[{MzOUs>y%c$R攒 ZU{0"#BѿKR6fjBrN4Ļ\%EZH7ZPiTǵ8>~3\'272/3GEÍؔ<+4/d]$H_|އBCǿGyfK8"+Hf|;W gѣvIaZ/d`HVCB8b_o67.lK}iZ>ڸs$U469ٝӺFQ.;; cREE #~0ͨ/PtttG!tESyʘݑP/irOd: (T85jJ;|) {+&35OjhI;GjNy ^P/4FS=6we3S2۾.*M[\zj 8ScYs\źjmoo%̴-#C/qV$wuQ`a :\UqeE'CrsOyªK$DkeӬ챊c(\n2 es=̊T!qirF+mNԐYMp=߷8pv\(rި'y6~.+AbZ:nն"A *KQɃl7b_d&)ޫPQFU{fS4 ێX%z~A/IF|Fo;|vEɥxT9C?g_:LXM-ę]BUGBzfC!E6cS̝.%Џ.*Dr$@#f_Mt~>SԲanQnY $8FKe(ZPᇙ̙ǨɑPɎ&V\]'pEEtLmyg6zDt8BhYl%uTPٛ\`^|e6.u ^LrL'cw65({pC-xFmܐ):ClL% ŒkPۣ)1RնûI%4qWĸE@%Ft\]cIdNdl4YB' 7>-fM.^G>)_I{5K_Xb4c^V-pp]5PM/ݟ=;O+[΅,(a)5~.cvun}%}1 uw`/#x:teȳԻ+= \O%^$=4rnkWF7PEPY, eHk>XZh"X'WvrX.5/N['7yjNFhsdShSW V =Wf&yާ/t<%iNͰ ^,3ȫQDS,iBƘVo*wGfCaT[U>7]\\&;yr bnjymc 9E+V G*zR+WTuԫJ]:ގ׽_{w9TMuks vM F\rpz1M0B ː.F k~EσH|_|5r穷i3,FRom; ~B1]-r#'kzڵa~u:֢Ocn3"NØVP-E0-tN`/+wpP6/uf2L)6t*~sSQBZ,<0{N<8.hG5;ZhD(MݩHjd0w3Kw owMrmiՑG_-Ku ۔T\Z_͕Q<ަ-2ljEybEa$ؖzż8'ߨؼve(s6rThꢝ~c|;AkuMj}<ݯvK8YW%=F[ A]9:gQ dE= ƖQlC /WsFCE QBw[pb(R/+}Ers7#aZKgb4J71B5"G3<>ĚUsė5HԔ[=JcSTc ަz+(8aT6V%+4N~\]F3 2iuWZbg%MGM#,kKM؀A_R쎡.̩#TIϮ;w*t>QӇ7 WgòI4g˞z!.F8)P*˪>7J{X4"gS&K6Rڭa9YbZ ` >dS`?n]y~{7Z v[F㌫6ӘUurX駑\ܮڏ%J&Y25MmL@G4y)}Vm$չPj6RZ͍ݝkf(Ƨ9d[{`W^* Vi)wǷ1q20qc૛qUMf\ڻ źU+ ,ݒR\-ӎ[W -O(V+cddbZ_ F"?%[D;{#+} 6ˏfɰϠE&   jo"i֯rK/SX"r%Jw^~JڲVb.h2ixrmz>VHr(-"zs&_b3Kain{x\@ L1'O}%xx} bILGŇ SkÚqu$m0)ؒkmdo$fRvHn)Ӝ¹6UnZ2T甄fOU[ @^3+1fAؽ< 3w 𿅖I+ Ul)WӍw`Ͻ>+U9ee,19_tK%s*5CI-Xjq$-!NGOqw%&|-UG_=j 2|Yrӹ燨ľIG->ͫ*&gŨ촵bM^m"~C45= 8ӳTAl,^+Y(_^q.lyoHyXP,@t5Ul-Tg,A/:}3B@#/c"pNRs;ؐ"i4pK1G kuiIJ&ЄHhFܻYհ&6C2UzwkX+ZZYw/ATOHͼg|$DRVT1ʗr9 N M)g} 2T;ً&TkvAκl(Xm43VZ ;r^[Br0zkV2l'+/E)l>*>Շ:}NrgCȒ+~TO/ea[<8>a6O("y_y.s@t;IKm qxru<-E9]) `PZCqhW`4\FěNL |}Fq5߲[{u|4P-$Rͧ+M<_~`}cFi_ gמ)&&s+.:.O8)4f^;oq /ɛ t )͔ʲzw/<Ԋ9}tq9,dc{7C` gǃzߺ]"ިuaUs{|cULچ+.Npd@6vXx{>Y:X[7b41B y(xJ lמjkn?t'2RfeTNR^^03aq\KKi(-dsUɘ@7MbC{;c9Tc4Id>V!o6ww*)=u,;2+\u.&4eU>M7\7RK-b ,GEIEUk96YUM;SeV}Ȝio f(Nz\y&y'wTIiu+J8`"ۿޕg/f~G;4'ƓIWHOj`uה2J=5uBnKK"Hѯ~NBeRE+:xhh%#&%g6vq+TrR_a|mc"tI,ZՀ7 U]Ʒiž4-1]9#E"+iS*wiU&)s 0gs'WB`Jqrw[{x u#d"kO +3Ga5 `ն&#j{gɚ:v:KLfZz] :eo T%0Bh:%XJeҮPy|V}KZu/KzyelK$;YnuRJkL&ô|frG,%&ҹ'8s6橴l fg`Z4Ť<@Ԗ;\(zL!%,)ʾM[ zKoܸ||ɐ$tFrjdrt*_5_dqSV2(kM(/6AgB8λ] "(勡PA*56UVK.?JMP<KAbYSgR7Zt̲Հ²7`~7}pM`F"_̑qڍc92˂&-^Z;b4u<5 d5IZR+t;vEOfNIwV8'Rt8jኑczV2mPqC,\[6*_qуʀ'2N+( qd<}exnkwʈ@$eTusD$뱂P83=HNmH²HRG)6 ΃4xl_7.r}_Hptv@\5CE98U( Z?-Xo|$[<:&\h{`iQr4=w,j+e(P=hoV0yoaS$Nu2o(tKi[7D>w}|E*m?&`¾."\r^ߚ r\||Ӻ⠠aLO|kcνC$k^'ݽRFNX[t~(s-nIFg7_^njΡVN)y }xAk{8s&5mg̾HTQ-eIa ]kgHnk![ v6">/2$$g>2jPyV|S*4g2C5gfZcU)̼.ԨcQ寠̮ DG шcu[Pո n,|(yYEu^InI%f3ODܔ7YW PRTnQ[ OrBRd+;ˡMDFیsF,:޸cVRkEGjM콦;9IQ?3'ŖK'݄6 %3&~^Ye=<<7ͼܖc=fc=?藉!N M‰{Iw2K*͂%'Q(I﬍݋ mi?d4I+L (b΋,i+c톨D*IՌFI"+7_Vkb+H&rQYfHN&sZ:%WH'/3] ]Q8l}'ۜUAsvYjœ\뒫P>>C _U{v/ uizj$V>[$!t_\u@_LZ{4_m2( ;ZNCoUksIee-42T|"YzSJ<*3^V3bЋi?AmSk;짠i5]Hk#)]@i xIjZ.xPRֈ^ez致~!eqrXyL !˙TDViת(?bv_}!ffZMa8OpTR[ySe~fv>ȉ%]-;2RҽeG3ͱ`7݁XN {=fF|fC)`' +-~W;9)H6c.ߨ-z6\F-V%}%}}A?Zpm޶@t;or)FQD}ա)CFB0$X{y8.WeTmEsQ{zC^X>>jx88! {a~Yv/ C967%Q0P<d}| <Dߤɑ/_98K~_>~?}_|o=˝dr~؎M7L6U;|+:{ ( NlTPNZWQɾq]߷wRg觟'ywk2\wbWeSBAfsOw<Ǥ}7mHY療de]I=^`aRF;?_OK;3 cN{?m1iӒ$FZY[5)rhjE=ksُ{I|xY>@xt#6;u2b5+'C%u}S;s?yԦkȖ|AY=FՉ85U5UHSz׹HQ5[b_ {JDg\̿;Ge{B{+e5}Yưr ru@Y(NcY_cǎ&&4Uu"S8C t랼;밸1RSra0ccueJـ븷 0e>CRN:l\U_6Eyhjik7ˈ[噓v_C~/_O~CoIamq|fZ#31V/r4*ŪՋ 5Udqĺvu&0C8 vJKKGiGJ1\ cIt(;Ï5 cθIlB։pŘj lwZ]=VI拦' b K>bw1<4 .a2M =-l4R4/2=RQ}yiN|c^+7 Tf>v;*5`(MnM4/H戌7(HjWtpPFBng>f\k"E鶍oԩʗK':7 L6O qjb=*[t3 xTC[ucļ;$"ؤ[+:J}M+o#S璁1}(bvFwovbbH_Xݫ OU|w+m>ux:O6'Kn;Fp:nb/^ :Ck6\o7Z1-nP&jV(֗\ ̡b5  4y<<톡ſr&CormyO9Cَی=ƓMꨐ [mg "]MG_QROŎ`S 1 Ҁ}v'l9٠tb[\w'>gq^KY>CLk °ۋyzV45W6^L䬊<٭Za7fLf>S\Sh7 ɂT!s9vmYjd"/c HRK]ϪNtT>lߟDO%j8-09S>fPcGxCBGӕth؄L7aL 4j wTY&( ؉T֝im6-ѹii4}٢[;~ F}öc\p4zwuZB|u+wzR5j V͇ͥXNH5nDr?mQjg9p*BTJn3uD5 H4KbCFD{b0UA@~lAb|QDc)ڧJpCVЌ[yq.cC_:|\?`5}v,LzjYL+g\t0WlY oCG 4%Rx9n0Rab'ˮh1@ԕL e&Q{03}{b+fE,DWݶ.5K1 9A)(vf"l1|]1 QJP{9, J@q_Vqf({$>Lꃜj9D+2* BWSrJ+8(Oו? B%~ {+pdTLѿdW!*bGHw~ E-"풤G 4X%$B463KW%V۱όǙ3,tW|eQ+Jћ-u*ʝ3OcmWd*|*\G}y٠hhjRyJrT 2jY@12:K3P:gnMZ'oec`"]u6qS|(b=PvIne<8VtlpuG,l\d@: zΛ>:iZo'?OJ!B4)Pw /`l4˛`«$]ݖf է%EXV*{fmV1,9 l*z pdE!J-qIv@qbKd)Cz[_joŇp~^07!vPju^O9;HSyWп"M7Ft^ìWp Z_]5M팍l"wTWGyatܘJqRjDz|۫SK5~îZlLc|HLQo kr(6a_F:7^73˰y+Kkg&Y[g ʊ6q=Z?IK6Э\.t+yDE J]rX}4c;׮.Aӏ%jr;':!R\m%j1d; DfQ݌Wڬ:3\.sQ,%f>3OZ0kaJJz"^Jf81VJ:,6RO3JK[[/t=SCї$:-  Q;L &i;hփ]ym_m^آW2n,לC"ҭ4˔fY6ZRfRZ*],;VS$%K!1/z*ב Kz~M'KY#BUEj/=-/ᾉvM>.LkdwK{~4ßyXakT)|zQLq < n :( uS0:GRCٕhقj5Y_hJENXT-ve&eȰv!iO_ O9 zH_NesBSDMtŚLz4My<$d"a6et6Lr qaj>aicRolS_ܻn^uiufKvg'xy]},q],OuJd ?5s&)eޓO{:{Y:5f͈ENcaKEw=|gr  &FV{W  - ګd)`Ȫ6,$ oiGWTm) ]] ҭHtw#-s8+ζآa_)|$'s*l~z)[XxͱӨ)zo<@,LZ0+,yM#s@J'UW0S"6ޗ2zH .ZIhK9$sADئ]]P&/6 zu?΁xFqk`dU ] -Ize[ì(o.- ?שRcPo05W{$d[)+;@P[ӑqw*<GٵM"AՄ ǧE:вG&[7Ęa|ފeqV؄XD#0J|cZxSqKXg?O?Z8TA3=t\lj%waM kLyBr zxa~ TRչ4Q[+Rc%+G^SU 3JvxJwy8, XM;ЫwW%ЙקtQl@ yzJ5D`FjyeߜUHSL%ȔGfun-v%h- rr6J*1D| s~g\&̍Tld9IK1Xg%IJ4}73E¼υsWl_E)#AFa,?PgL.NjU9Y=[['`AU1o"] 1Bs}S{A5f3tSUf3]Z+H] 8qS,~9 TA"VÊ6EH~w2Ƕ>T- o(cm=18p5_ji/geV'jcx#-4 @(VA.4FQ@1f }`4W#8"\S$c%/9\Ltÿ--ViÖQ D㍞t}&a Ch,*dfuW"ZYk~Y~B\ h7t[DŽ !EyE$tY.eҢ_t|{Ȩr{l>@37^\A73ܨ!v9Yz?T nwL᎔xMT'KD#ϩKM2pUg5cbfn7y&xepǷk}ʢ`4t\KmeunZ ࢳ .~S݁ )m:'@ Or [2Fw{: Yr-BxRֿ9ԣ?7&^ԅJwVmTnWQm@OsV_ڽTlOK1VBB! Xv@2aohSUٯbT KCsx.n0|82ofm{S j]gK3DD3V/j(rV- i E- QmSnhllT0q9WĨTbX Hsa,6FeYݺԜ'  ]BjqS袤`ƞfSx5ׇu`0DԊ%C Л`x)^ '\Yl>Y:,- ^oo}ڞ GF]HaҊClB[xu|vL^Fk};[5{z≖8ycv8›'3g zHXsT r6=C͙>) &E:`)%/DlٴrDTLJ@N1bt1qT ]"FXcG]Ye! M .ʒ@k̋y=m=Dw,{T<uW㧽~ZFUij-w~4HB6t6H9[]!4ȚS(^0vxt8e<9s9CB@i¤}֬Y\/5o22*,kquemQ>2M]"}.8kZ: RedI9hdل}`D1#RI5)eYIhqT6^.$h ȍwkr4o|X+)r:CeG}0eٷ{XsxFkPFI(nʟ wnG"){ rOAwmHZ,x3I&Cx'hklKmU$|Z7h7-@e_qս` ZܷGرZ>"gkK̉אGghs)k8 9Y#_߹@ŗW nr>R"=\>L˻рzPzޛ*Y+2wCN|Fl4kyQ麶Gmp2=hRe YL-/[{w"6B1JNGhx,z1NN}Lf4NߠОcN| ~RB}A˕Ig)>:~zkb+J.5AK3:e<(`=)zj"g*Dwv*oʰ~DD9  e6H^k4;J0G׶a=L 94L]- )c :9&:Qkb64Խhf+P_[aƱs=Z0b֏ AW) &+OЛ6Rמ0|47~1-FtM.^f¬Jwf͋{eRKE lmʬN4}a줎qӫtQֱb[ϲsm= DZݥo6Q2,v_RƯPOƅ~L$%t妟Rg #xTuxZT-f#xArb9uhYRF9np mއ0qOaX5r~^`r0U' >6{h8I8|`|y .{Mq_%'ƥ2 CrJ)> C Ωmg.m_\_(ݭq?Tv)vKSzv\9ɅuuCm%t^<Ҧd|čsK\i}2fC:U~8|rf!o %.Ongjq "A~Y H J1-.dZA5Ɉ߻0[z&r< `RD]fIa;=Snu"Rl]bc,6w PGA */` 6  gBdh~UH[;00䅃1WW >uKdD[C/O!HyIM WkLC=&=;sO!/^1b'^5d0V7ns q'`-(܈=Gwn,S:0KxFGXv51> i yBke `.lY!6t}I֧*(kR@< b_ >4""2 &S(*؂楎 7]ƽQR'J\*37=K\2bX!B)ɾ݄ͲcHt^'+ӍUmzEM@i8E8@g <1Z) eY T:6A&iExnKB(jZ处5šD )<ZZ;gɕ:pnl,/>!lĈK/ܾt\J[Nܣ] Q $!&* י3ƎRs+woO'qԒ;F1N6볋zt:җŃ+4")‚_ ngN᠍ԇAUmnv֨ 830Ұs+je:XPͽ;1 M ?9!)٣=T stܫ}΀>nyqԳסK3%@7njnbc/@Mf hƧ&[&oK+hg(Sfv.@ncVJMJ?.YҀLj~NRo5j}c-6|1שɱH=¬%8x1Bo˻yzn]ǒ@("(ĸqciwsHN=U\\Ap؇_?\y5e1F-Wvp>~kvs;lg/oxY_6GV 6*`bw 0?\kS=08RN.t PM+EU-A]>2w? 䏷w -QU61Z~@!f uM(! RX{1U?ώR@rN+VacTγ7],Qi#}Kc'.˦s[$|M;c jkƭ9|{O_sd+Mz u>8Qż39 Ug'~/ ڌp3|mgȴcj5S(&ٮ1HAٌq1-0CAgJubA_C݊F1T{_Za*tUt5Ԩf~&LpQYXfP+Zu%Z^Fu8,YP"|KБئVfYϳb&F[4Iik-"^o8wcR?ݱ >Y~ K{Gr߭SB6tT))Qr>hX z\|KjbӑwU5|_ecB49Voq(绅s9!)sU3A,V&"c+z%Kߺ{{Ir+v `G9*\RjvI"k*-zcJ=]}) r8iuOW{-Yo5} sL`[% ) o} AwFUSox9ΣD#2̡~O;v-nTܬBfE4kӘy?m!߫h?[z^ L[ͻfjXP-@6> z>_&v<&J|GY2` 93 =@ݷEcYU;Ն dhE%RQZv)*uW !$P:Ѐ&1@$+cEE:@_Ӿ:@Ĵ#[ 鼣[<O-N(Nxc_ :kKgtcR l l:3q✣:\FMe<7r%J]Qv뚘wv`j$gowi@{‚dj8ZO6|{ZPCN HeJ榔Z@g8])w͞tPDc1K,=}/~YU7, $\ ^<7!EԛYVyBeϩi|э'W6|{:. p)GܽtyqyHJZMTM\ Sqxc%TЎm=裣^ LA4zeIp;8]{䈻47N|\z3SJbke/Ud2#zB 1nsDl.6=|]sKj3,t),]ƒ> Exnʁ{M% 6Ua3@_lz΃gb=ᓉC닆6)c">h[V,J\,"J߀ 716V';V/f wTbq8/A/6IgWiaP[gW_^NY;Mzugڃ'swq)1^}7E5))? G ð5,sGJGvU{זXO>mف[n8㛞>Q{e#}G+΅ږ]̐8Hg"\1y7i7B22 1洴Wt+v&r*3Yklɮ&}睛4ǵ,dro 2)'NɻQ 'Я\X;}K#2=7?GMuJH&@-87DcA@cFsJj]@d>WAkPrͤXu77^;uT7%k9D[FRNYcF#5D2b̰&'!q*E L Zχ?/8.vCWƔf"aK_QQgb%-s2e`=SzT[ MeTTয়63t:)US"+5nGcKM`*('zzs V}c: S~+loE"|ˠV>hS!t[T:^[gv?e/iҿ_>r2'JIJWo=>%"U3;pdQK= I~zk_7s@ε٘aɗ='pˡf>"fZF3cdǥ`>OǍ8$ApJEl{KZCH tog@]nemK/=z0E94w묛̯/GˮzԑLTb>fg Ld4-mcDA鉚xsG\ h 2w =?le]$z֐)OYznC e:o;~';/9mֹ٧ ;4hI ɛ$&b8naϝx ]Eqέt M(1:Oޓ;BnH2{EP^AX4yRڦ$_$ ckEu%# A!KL%XKNڵu1OGL-D d.?xq%ޓ:\ CtClEš?1Ars%:O@C°2@[:8\v zV;+QUM0 ^Ja6byr*2rINc6mC{&/' 5ʍz]\m1Krٛf}a_YyDPzt}QµGs&_~Ï"ӶV:*^5"Ϟcv|+*v^āQ=NkPTP@Bn[OWv1l (iFὁԌ2; 3"4WoݝdE mQU[Rjņx[nX9(/!r/AN߄{8#FT&E->sNx#%)1 /9.d sQ V;k-wBkqagqmo2ʑ`0/M4uJ2F^Kϻĭ{HFf!?Sbݙ336` Z`M+4b""g7B:5;.5=3.27)Y1$&bk':/E 5[}sa"h} fnZS(-nRLKr$uϚB&$.vfjg+q৕Pcw"xa5ۗ@%^R~̙l?r/ 4wņچK\}f^Z4J~`mUjAJ~>MHʗىLDN)m17-'-./]hSNo"ђex5ӦD`8YS.Z'p>Ϭt #wuE"BY'&ҿU+ɞf1CHtadEg1F"j ٤8lA:W3/T}! 7 Ja"z +u te|c'2xe&5v︥&C&P>+38lrn+b`.nEZ[cr'ڤ<,S`d U0!J\L*Z!A~$,Up[Sxk$II\1 6W dЁt[. η%lBXpu_1EQ] U + 큩b&'cA40wca&}Xn7bw[F|?O3.b#~5rxJBɌC63'5e &[-fmТ4bA䅢B Į1Xpf%kP$yJ[؟ѽ 0Ζ=tc-99*Q)Uv߹AUDwb=ÄYqU۷ >$I <`BV*s-ARg5si z1H(,+|ܣ@ ޷)0;譸!+,v#XV򃸡74#@w=;ZdN.6&$m5L H@ JerY_ԉ#? ܾ'M6p.[ԨIG*+_vX~FV-A۪CV.0cvh 9niWŪ[A}t~pD}^|^&dmlWrTGnLߝ$YrhӾU r T8> B*hX+I뾇P.E4Oy1>5CQqx.}y7CD?,#qLlAQ31N}ܰ_%u: g"Ѻ'G=HvyEVEthgH`,UW[Qb;.ywMYvr0"F״)F%aR.ۤ}VӾ)KR5YFZZC0c!Ԛu}<}Ubn.^^M#f)q(Aa@8O' yL*,h2sf-U{8 GhB쌃D rK`9%T'q47`-̱y/Wx@^m Ќ/SV]R_p*VQ>LfJT1#{v㮼&> m ?Q&R5{]g)uipBvOPS{O앙s_*qIKZr wC9<8& ch_'?>wW-ʠ^DdIXd ?)BUds"-7uEZ`q3e$ݔ)+Ie^_լu?-cvpdTE.$`oB w,.,ME~rXr; 6,lգĢ+E)A 2?pU֜^Gw(DY5C mh}5xIxIq8X>bwMY}9ճB5}>`MBM!_ Rb&% 6a6?ib \n6!KBWPXt攡J.U{R|X|k֦"9}/rsrsI>Ej59LDb^kgI&C[x?12ÜK:j'ͣFtt'##RtSu:"H'/ ޥήzGtcv-]tW53`މGBX?1JC6~ŚUC|Pam*`% D[<#2$?}NEb7r ӊEG{pw8m#xiNAieM3zq߁ǭɛ0:Z{R{(G3Sh~ێfEĨ}3(4_#Ŀ0c~CNS;ŀ!Y1`h=!؝xLRnr~'ݰ>'O 4>/.q)-Fs:YY Z7WJuP_]{گ؍9rp^^b\,:@x%S?$Az.y5i& 6i_vPWO.?d˻gE%7| Y7ÒoWfyrls{qQ|r2 quau ʓb` Hw9*jܓ2kUq{Fq wT| OFj{IDSH4IH+C-(/|?0e6Z=v~f\|z<ӟ6\p} PC%0$ C"=L}%^";!64rC>jrJI Ɲm4k"6.E)q2Lzy(w$z)EV6d4l#iFA'sd8RM~?ԯS.k&`REDR+TơĢ-gU:r0_O$>c8l+8:cBOR7Ҽ ڝq΁SYug*@z|XYÌMaCY3\ nib& +ϡߞom$Xv47 UYΟtU *s95?HD\إʧ-%OlEK3m8 ¼G`G1Pg#{>lvfwC,TfTcHH @]'Xci.3&^f`Ι Ŧ  4:Az|g.O\5T== ڈVùĖ,<TF͞c\!a??|;`r*X:7= <24> u 0!w= 34ЖIGZvWB̿_y,CG`Ld;=y׽>(W<($ s6$['l %W#lC2|GDfL%t-fl"dS;y,$N+^1?m^Ί[憙_;&qY3bQz0I:;Wk%ToeU "d97ÛhZn ׻Pz=5swy*~9 R0rzjp h%&f IIWW%^k~6o fgWA'cY n[b݄nG+lvmlb[G_h te_ABvFOJ۵L/ݙ 㤞MX!T2U>ݞ|xmũ%qg;3Iz%%vaȉ aj %˦}mD#M4E yߎÎ, azwMCӋY- \(k`a-2#0 A 1 *}Rк} xkVG.{V>p MҖ~]oLc@|7o=T[KFfVzU̎Z47\N=ر 0{_T]7cVEy+"҇pL `Sĉ?lG#KqB)~0 `@T[4Q~i _řذ-zݧ΂6w\c'JK 8#L^Ȱvp!xvr-n&%Y4  *Y@l,bcEQ!?VIVSR:S]`sIneBp.?&0;@)x,u-=4zh耨)#?TC3ǡm@&F\*O jNF.فkM&S G HjQc' ۂMpMC>}En*+j adT?]>Y=].VYԁ|vݻLzcUh$%$C?^G ߖզUKJ\}n[/%7_~M,B(>f؇8낰FiE}`n/2@86;M*L M.DsoK rƳih~,>E>^n *G],˚+Z|JH굁DF G6]ʚ[Yz\6,( a48PLgp[eZtuׂ7pAԗonDu}KAŷ9umW@dֹUz.5'e+jE~kJOnnf {}XK$UQ}ӯQ_03qmY yY(mHD}2nuDt 8˘<~kkCL1!@ kDX<6WY@d8W\'y }z!B+4P!ah8Ut~uLvA~nVEx7dx=#@b'G)W#˱JPB;|ڪ4A St-z\U~($hioEܳ /͏E7G Iy0& e1NҨȇedԦDs()F|"Z1>(:rZLq^vs&2,:oxPuck#3/3)îu1ɹFIxf!y 9,qMɣ,Fq! bnFg*>)>/p)D:lYOe*LobMuM Fz8̵_X=4.͓}Ƃw&D "a>RR2QZi&Y5Z٪̒ Pĭlpd5/%v+, 4q)ׯ0K= ,Dܸ d炁'$4ѽCH M^'~:&tHR`g 89jm.b?(,5{9ߙ4*![v*' ZUUrG&Fe)c)X%IA iW bFW ^ЗF)PD*hҠ\:Wt̀tZ-7;2*8^JZpSk5SlS ᓠ,) p8STY'0^Uö-H{K<lTbb]J;曥ɼo"?u/t|b I*4tC sڕ(pN0!2wJJMoTv)__~gR-)P(5E.PXrsEj#%.Țe6ჶSypb=-_@XUp0+gɄE`>g)M[9.61<tu;sh.' /0Dz',E EM8 @=>?̭#+CL!&^:VBf6b]܋ * (˜B8~/_MD1)m6>W)`oF^[l.}QqwG<K, /Mc3\R%9Y@CT ˁlƼQ3_TFSaOjC3;Df-,ɐZĝW6V3-gzj׍Y[z @79ZPTmmG8|\%/ۥ[cݸl̍}>bΉE49]KnlKl tBڶ]S*͏E0ٚIQt*:j}7%f[AeƮ.KR/=ou|ԕ.dJ,^DnWnLTŠU=%f||CZ-NNַ~, pn,E+w|2uk<D9{#@zPez*$B>ww*do˖n+cm*{S&h8\}-3?u8fXD TtXJ4ΚԳpo8 ݱ\6q}9am%*k0[QUՙ +_%lU*6ŽbɛP^gbt'#DBʪԅ"MjS=Ɩyl ú0i+/Q +xU٫_XU[θW}7j?ݕCt+,~2LeWWrF'Q?:;]f &wxYX& xOc]5M eg*g/m-8A1i٢zGEd9Ӳ+W /kb(cFsت+:܍C<6ff<6)F=)أvN &9-zz6?=fRGXջOk i[s r҈ne>^ؖ Ac8շz0Z49&z B[&Nit|_Iua0O;6 ==\2{2w2ʔmr ٚ' ;;E@]?w"!OK9r4 aВ*~OH;t+2s.B 1$u}5pӪ!PӺm_bXgOL9(`*T2Jt+f&Wj#c9mkX4Uv٧NG{mk16`g3NGKZ^^'r_72|Q[u|!T^zuI,Ulv䒣oT*xT 7NDū$q|9L2w4+MrIM}BvLj>J|h0ӟfӮ0UxjȀߝwvvcaRhdVs4+&ɧބ(WYRć^YaOւz`w3v&jh}(U#=&9һk}2-ʌGV^UH#n[OӲvGeH6؁ߖm3`!D!K:\-UaߺS,_ڸ>{DӃ6m06|XeؒGg_w;azsR)ڤM0/k+\^̶k)x7B|T"|[Y&]_뙍eWe8SÜ dj1X fo@}~@R )ީ$]\k_x $j[K-XU)Us^^^YPv; ?)acm!S_Vu% xf_zRðe HLOLK\7Rٳkؕu *hkvA')K6Y셏"Ael>mkOu\/iqkI6F5 snT6cӇt2~ @J]|+ b|s]r_nJI[[q!~l F `|(%ةsdS5{ef_c3^5UÉ:HwE0/%?E PW{RuX>˶3\'~jq#x@=ᢧãT 9w3 -!nTkDX^Qʏ++pvm뚇 ZL#BuYc{\k15zmir1U|=iGr5fÈec)U^W_g\i; nu.Qz-ne>H!k'h汘?똆Uh }QwOJɷ6M { ׯG݆dSǀ{ 8ÈMKATOtla;V? 9HR@H]jJ8jj/ v?h96QF䟅HLvUoMC$yC;g/Gkgә@EF*Gm+Xʓ?(Fx61[Ѭ$L ? :wiH x[BWR[G̲[u`_6F*È~4Bvp9$hR,ތ{Z'C;|^% Ò"xvؐOIqՑ/lGY[~Y<SX);2^G^ 3κk/MB[LjeNYS;[uJ`awl]sG^K "Mh~LyR{X#^TN ^%[*h8IתMeu.X֑rkcTeT>gb[u&!K$G`4ʪn{3`n ]_j(,&` AϟQJwDpf&^mq'8nr'zp s|s+lR= KN NƺkW uB*)gwg2P\d ?ّv[ҔRY>8ɯxFv1:: %!^OdKPd.tH']l_/vE^$b /2ȣvB6葍ۅV3{E~>UVp^M/4e]>𬂋gϡ H_& 7=.fJ}vR&K[x7{nxh4uԁ[4\1U=-3Yph~.~nфWLlΉLشyP~$\)FLڙX/(y. ($gU ;tc €dmz{[hэ]ƙyiLٗ*'z"]AxjxoPuǿ|wP*U1[[ {wmBDT$ZŮQSZQljjOd˰igQ1kNɵUgVۭVh.-+C< zyE|"ݯf9A6]u$N3W~+9 YW]Cl5}HYhߜ&ՑoM'20ߙ}p ShC"(q[,- Cv:sڞhkGdRJ_;IgO #ߴUu[-` H/ny<[#q0d`lwVtw ״0FU_ܯz+6w<{?D=*y*Y-N=ݱĽ;4&]U|n5 nԲ+H遬+_n%tƈ4]_hf+wSK^.xx ZZx7;qp:nfT8WfU P4 WӸ~n\jj^Х}r'' x@H1@ӹZݺn\<{\@w|/(bƂg {7Q79˱<Ԣ e*naCdwQ;9M!evg}kh~dҐ&Csb| [^ *q@# 6QvIbe3K$NZLi#{5bA}?:!.뗡 @S3X`,1@1F[yq:`s(„{Sb-:{gv9[I[ƚDQ?6H;tZ'DǬ&Ryz ;kXEEcwݨ=<+NԼ(m1[K?Y|=[ɨ[֕~UEՖCwBݔmoO $fFpl_ Y6|b-,_[q[[ԟX$0 }/Gv.i Ωbkq'"ԂT'gJվֽO? ]T=[_iz5^|l_kplGgvoq%Sx4|j j:[S7QUl!2 ]$ux\V1;Zuzק.&O=)X;?B'BFL__l v#~@@n~úR>[Z97:^J蚶TRޜϽF%["d?x QK./D}7s ^K! AI$wsiLyNWYt%ޙE 9GS nLOAL4q;隮 ;B0SuNZDuiT[߶d"uD_ݣa{ k)JV) %vHLe ,9׽x; 8ZwmQJ l =IFq3.2[,nNX^߿椅mԝ{vı-Ʋy{s2+ {{D 23m? EJ Oak +z pTk՗ZzDT-CwcMNO#7ff xLM[ "'^EK"0c!y l:e˄KUgT9^ pX^-5SmA:K¤W{|0 Hl~׺2Y|8UdX7>;'/ t2Skh$"lxif%/K.yӅݳ%[e*N2O_|2);XG 4N/>KlE-"t<=3s-Ip/&B%_t7d imq'hieQD2šoOyQ@>(ss ;ã0vꊦW?,Jlk@^8أ[fw )IeDqUsc\M2@㶭Lo!ȱ^,3˜-M ^-_,,9 #~!sbb6'` 'ֈR=mR&J~I9x?zx|?ޓAŇóm7{I5n+e4{,>1RӼŕJWz yS*D\7S0VU6U_ nb@}CfKsݑ>yhؔcA-2CGڍujc?%Vъ61EOj$. ?d b]`W7R"Ec}S,OvU.~o/cg{w Pghjeȳjʩӽ[ljgHbN~U&r:vѪzKdZA GW}@0zuIndTЄGQFE@I5XkDSl=W<|R`jyQ\_b" A [2S^d{LE|l N/pXo UƑ;QQ2 iuꪈ Y>m[90j`0GZϮJ])5Fs jC<p%`WteA@ ɮ([-j~RJ?)ܼ uXY@Æ%E&{fOH(Nè%fM@wL\Atw%zry/zMh2m4c3ݘ];OvptL6N~ViƖuS,g/5LIw xw)LH&`9f+}1eDz˂reǠNnS>nwͶNU. Y_ E@#Kj(Eן`ts@~z^h4enY \9 eEH{,6je]Jf61mv<Ե9H3㨔݂WkXv 234}* ̸@lƦVJT)E?[txPK{X*(t%kTYʰ`lp%j/y~Lh\DC`2, ќ];quS g*95dw*)xJ ]鄠e OW-/ >RYuaᶞWY:gu5F؋Y9xۯFw9iu7`7>>IBHIʴI*l&Ori 9I9n֌Go_YruX咪c ?!SG'߭d] *$a)`UKk!MSc]Q8 %/ @Lj _7дhd JJg / ޛ$8=wZp684 <+~}u`He#YlsFլX4$$6fX! ҴGK~2WxZq;^Ȯ_ ܲv@UPk*0D{ x:i/KѦxtOO'rd09GՂ9(; z2^$BѠ~q,x&ST9UbκKt0K_bLKKϫ\! ]h7̉ zgS!T^%0i+z^*ʏ'zu57o ehu! 15,>% )z(Ё]3O2aM]|XfќjVН2uF^AggmT2S7)c7k>ʍ\(6 !?^&qn!)8}yhBuHu<ԹWwV~ $Fp:ʅ̭Lj߫z5PQsGWœ{nZd@m㮎XqCꭅPW^uVQ9e|ƾ L]H3a@ܼp䭕n߁kYzgmήs# b ly!m3bD3 N,h&YqȸW-Ml.cX)#rCEf\_h!Mb}hK FNSc(B:3'&BaVY $Oˀ[l|zTa%}/B{|J0үN&_%?r}d)_!{UFh!WP 5}9ve !E% E0Z2KZ^$$,xI5]Sξ X.i%T.ϰQ*iRPN>/.{_`ꦲ1aɦl4J^0su+/hy +L"Qnnɱl$::}ͬj.t>ZJD lh0LC1mm8\J{$y7'cs,EQk_jy\%iZV.Csjy/Vm,ϔ6I_Gu"uTIkW3:hVc%/匸a<+ki WXP%D8nnWt꟫őƉ#҅7D%vu*fx%&|ks@BZ`]2_Vžm¸pclGr]8 2K!+R/1k|  *_ }6rSNRԫ-4=Ur\F4jz=7$۰QrӍRj4őĩdlF_2'_ ~ç9eG1kh{f ˓(D٬q}ji|=#ъwg _(QLʎ(E I(tJmo4# &*eE>+:$-~2!ܫ29czuBt,ٚ<>S`꒿~yO$SC z:yJk%`>L]8~u:=DC} =S|ZskBazD ku봸iël_}FثxU grE]re0ym L64F!@')껄v_KH}9T,=Xޯ:?Sb20zqElT9wB+{q:+e0d=q"*l 3C5cPO9I`Plų^^N㺫:\ɨ_}qF#Z:S^OĀn5Qzh&{Agoig7:ȑy>/hN\.cR =@SV+G$vqM6ZI).SMCSna!NR0\b#+8ZN8dx`J= 'εWK/6ݩAL.^#ADvwιW 63$+{?DHY/Tqp߬=+@b9e\,<,ڋ} wClD~^ıuV ~w)VsR§||vso (Tŭv Ϸk$9Fw=tB,-b'{+odP_(ee%.^qBӮ>?$Xp rDuҷ;`Z=gſ(8_6r SEsPB ꥉNHJy8Wz"7 #sν 6R $ KuNY:}Z$7Nr/+ n&,!m@;=MO /*QcI^GT;Z2u׫qHkx-)` bKB_=ŔRG$]ӭ9Ƀu,^lQVB`pNu"AxҎJ`@ccX6KJh*&/*lq&=$"Vous.G۰N8}Lhg()2Teiz$z:,ffTE|8T;f3(NeM:)]XYV*k P4.ɐir/" H|+_Y[edŴuZ L .Ah^|V>G>UH΁8sETad/K}DY[e+N: Ȧ0m=#.ğ,daʬ35l#`Q?KeǼI?ͻZs (2NՀ8c97Gٍ*iǤĤ5b\*ѣDA51-Lsm5$?oGjFGl&j+y7D5th{sh6(s1 {FX bM峟 lރث|)XWD1P|f5_c^s.mHWi~;~i@'aSi@osz%'- c:%F1dߓVT%j*vͩ$9U8zԙv痦C"O`s˷o'ܐQJahk|zhV$6#Dstw"KSP$o+Eӝ>hEt\$ۺ6]ixSZwR> )C3D9:/J]n]ʣ-vHڟ$ 5.#ꪣھ.--] %]"-]!]Jwt7H;|xpٱ\s~,!Xq0sq&񊕫?6 Rž&6 %%w&bY4ɣ+)BTQ,@"a#`wp9Y Bf`m~/]L@IKO{T1c*OƧ*tGu2+nNd  ^ 6<Ȳ5hOfTG*3mۑ>nF6ȑ6(L9Vނy4Sٷ#Vzc A xq 4 aI6]ڵ50܃ySBuAu;KI= #hB _k^ö?[dλUr\(pt> aW%rH>vۅ}`~*mF|:AN. |!Vb SXS-Lk" C'k]= _oJ,sjGJ;ӷ)j&G:kJj<549-Aұ$Pi!h( 1; Ehİe >)hO% }HP!W},)a9Xk"&{KlrnNQ4B@> 㖦JgJ1K4(M[Y;"EW@$>y #pt}~|@jd?UtFhٳ+F兕-g}X :WMvotz]eΨ3l ׯ/Ȇq.? s]G4%ޗV^ ՖH.VnVG+&ݦ~;4@#c`%hw> }2:c-{nK9>5.եI!0ߺm9*@/&3xt~ޘ`ү ӗݽV!ړiK< =ɺe^SL x3c! { $Cb;3raq/m\^bص8?q]Xdd Q׃FAﮪnI@5r Lyٍ>,jqYÙY]`+}ZV#1a85Z#ѳd#a0AV-񈅙=ډ_5PuS1O751^5M_m#rvōe&: 3!@&{ІߔGDϽ'\WdNDg"kMvFSDSRAx765IG#&G&SOl < n=V==svo'QYMp8$`:l7r2#NT׈w3M$=Us)ْT |6lVңig#rNpɱH+][usgP43ɭ7qV.nm~ DIz\e/r=o*F`ob$p(*{Eg8Pǹl鹬6b);gf3o"k` ߸]8$ wjF=!8mpR_ފ*mq}\&1 ;9䄈o.jt2*&FqjP<ռWywzLf*}czQ֝kM`|ߧ[eoz ,ps=Bېnmf8h/8MQGG#^i`DKtXT*磼[MHfצwJo9Emn.UuφٛE1 OnI-_gKR&T"riNûv* nz/CXfOdJOr7̷ ~5VVܔ*%%.{}1xӃqi'8ͭ!A%nU-&G ĝs94 aau{&BjRLmGH  TvuHf# S O8GuvЇ.W}gۅi0n V^Y2c%pj9-t~,$!^[ś+XX-ΓyR;ϋ+o/,?j =#ַm<#b9%S1`BFA7:z8\m(v=-Z{Z# ԣ+ciIOgϧ`qbf>ZHpyavX=*%*eaz%[0'F78h6{PNWB8~8;M{UU{dާ'.\-9,2$|NH@17ѩ:]+f<<;&j%T$-7a3.>.Ǿ$'P+%Y#_w~\c>(֗PT']Qݡ<=8q ę//o7{\GPڪ5+es^4sf4OKZ)3!u u״a{G@1V<7|;acx 5xER,/ھbfyWWQa9v&[BdkwNϓgS_ډEL^t|Ѿw56ޗ?|7˧ il6^ΣVb>mo(KK \@L&xu_*<BGGpzMO*9=kMkC<Ѕ6Dk?8Z?m=]khrwN`30RfN,[~8& sP 5\qii'C\hvVI̻0!x7C}~:x,H5T7'Rf'6H&3 S,YǗullT FdpٚJro[6 [~kSpD\8[ s$6߀qiy0fdhLuJF {b(X+jo\-$p +oυrlʐE8>15]L^ද}S/x~OdZP?KToUwꇓ 7ߑy# B!26bKl-ĕT /| qDR!uVZGpŝa?W wRE4ma9~s[/a^GeV0cua?4N"v6H3w,ifl?r-M#/^eAUfe>E6Ʃ3 b,hx[5n_ kitCMRӆP OvLpV_3߻+iȱD8,@Z]2 NР4 HCX"kߛ;a6\FpfQIWҍ E33ׂҘ"n CCv k$w@1y̋\mj7q=I%kr/ٴNkч?t۶X>Eۨ56ޤCcr0+{koT<_s-$L#3,DItKHgڤt|i:KgyTlN mU#S:taw>1 Jw~I#(W#Ru=aPM!s ]CۭxbG,rg֙on c<s$lG [*&TZ+GsXoP\2:u<![F@+GK!}yH9 Ҩ)E(Gr<î94%IRL8]* T G.ZH'JŞ$5zlY?e4>'7wG{!Ami>mApE!4NX5hPp CȒ#1](ԗ TqOHLPlfe̜: tZm\^bS2[փɜEHUS =t7J?gᄑnINkʯDw4EVxVa؋xj: >/B4yCƋPqNtFYxPܲ;&&ޓ߼#U{_WrUQ/>@u/pyh#nld1#,֗S+K~V!ZN`Yv}Q3!iHqVu]G H4je۫ziMƢq+'2WO~ɤ κj4cJX? 3 rzC ~ot!-dչT~ŏs7+mbsdPx(LL5u%.B>.F5˳ i'O"|YEy>oJ=m?@4˜Ïv'[Q4}i Յ۝7yʉ&wJ;+M‰(|B]kRNyJr^_0GqMKbiH&y-sfB4Ք?Fj;䙶*@M3T+}NKDTiY/QFr˻w:^hd)>-M&wTbS 4D 9ҀQ ,*Qk.Saki@ɔ*OQWa 'ӝfg g|72m{l?ߔ{H>Ge$#T$tH ,<,Y̟"e'u%sm;hr<[,B~g8w0V`b#XUw븮~_\2c+X[rT9貧F}q:.j7h$ OIJn1%{\ҵHv~bq Oʭz3oSc[ڟ:WQвӿܼ#,|4Ǻ%C5]H@P\0˅Kfs}rK.ڳjv~VAF;S^!#wOf5g8cɒ\p4 ^ҲX֌D:4NW:I7HLL3<u%,Oyv ,Q~:77Q{?R8 ( M=B?5vq/k5HrÀWᾞ0NMBGWa26WamR@ƃ˸։< /e n+oBCLW` sqŅ2P/M3>aIeQY&'ZR#!7&d=Ln3 Do'EVє ̳}\Q2֜ `St'nD%meooNRvnI4:By`.W rd;0|0ulE>W$%)2c`! szs:4CQ Ncg *c̄᎚rܬaFx$은H,e=>3785:{eڿJu&&6N$aJ\`1DZQwp#eC`x^٦<[{Kmc|M e7r*'uV@)܍SQ 2" omJo{bڶ)Rhg"⚱ᥲ\[0M ,UyZ㹉P֕ w5 53mC=MJR[ZDy~H̟94Y/]4S$tbk]D+aK;\J yԹɇl Jr:D8D!={s-6c ANKi8T˽Z"Jt6(Vias{lxm&E9x4q<"w֐T*J2Уهm"3n uvl@K6 L,cw⧯\YٮU`*qqR=yI 8`6HnrrJ+x{d9?j[LRv6 }˿Zc < ذkƋ rKhm%KƔrI'&zTO[ 4PʠXwj[2u?8rҪܥ2:8Inkg,y7ɶ ,|Myt| !M>@|vרƚzîLAy+#7ZIra<20jM-^[prZ63Q(vɬ.dF4pnz '` JZ(^ dPb$)}uV츸Sx 3-kAr"piҮ*Cio)i2`/BS*?v7iGe݄@jqw w -tШш\1SX!Xd)]`oVYWd wot0Փ@|  3R, %='PV:&ʜ!AoXsHvq!*Йhm%hvE sAͣ!HB)V"tJ[H?<;rpBf„Y:F;◚p꽻 2$rwV2-}OҀ4(-8V sN/l'v_9 M7,#L5b2G1 -O96բf?BAnt@.+.f\kJn I=0N̼ ҙ+ܥ½!VVlC" R\rzu&eK-0k nuWT+v1 Ɍa߳%Md[ʈvꢳB٫ezu~lEΉO~F@v%5ϥll<ĸVUw#h8>W}lURZBޭ3 cCPh8/eQ0p 6] Bs/޶X/ Co#ظc¡ }N0UA<">i]{μoms!iޤD-iLbkb22 9iwOWas\Y{K񲬽j wS _YTp=ɰ5[4[# mF6Zas4<+NX #_SQ!Z$'u~)m}ZphjŏfUfC~y?|XlGbDI:uMi-!810b2/i`iDNػcI PR&B.S]cVeZV-"|d9AD`@xJTG-OdI۟e06d0Ք%zS?, )|K"M_ \I7Q8vbW&RRBRVL|b*Ø#ޛa;UmlJ]<}n'h(Z'"OX[!! |hbaTA'faOn1;6+kͿjU)L aü F.@؂)éءGoa<ӆ.tmDrdF%GP\k^`0n͵wi ]aL-oB ^b18`9:-=i yfz*!a,-vb6ʹ@4|>zbk!Z@)W*:XrWMlnttQh(;WvxG9[bd<S:k+xZEQF/եk/;9G2D(P:t0 4k&Q8F#(|jlMQdIdqǻAfDdȣP@vaڼ Fʡ)YS`G"w-ג—xÔZ Yist揤˻ $U^nYXݟ ~;c؂Y:^ĞP]xJM#a~l_'{ CZ֟EGb\3*Z9^4O9glxik_!쌈rzGxl6a0m<ÂNQZ i$5:USЬyvx7̹RCqQm(6#y/m 9w-=!La@`%0u֤c> sYVZZu=Nxk!ohL`̄~͌ڝٮ#fRkmk~Nf̪yĞ̬KJv@ǻٱ}Su" &+ Bx7P LE,P&cɹ^zM6͹}*խf PL!NrG/pK&ٷnhb8G Ghdڻ3}< cw-%>o/,(]DkySJ-MSЕޗR"'(ű T8ٜ|*=䭢 K~O}6+^(#}}hzv`1SR mK0F9\.|ǵ#wۄ­ nna0VFFl`6纷(eazUv dk0Li< gaufZDC/tKGںTި:9Sr'ŜfN(Ua2VP(1Q FമE'z[</ykeَ9 N1Qrsqk3Hts ;2k9CLxX׾I7g)^6ӂЁjqawva5@D~V6XbN.)ɘ#bܾȌﮒPaY9yI :B4O-}kX?6:y0,lKXǕ ^f rUWc|9snͥqsz_+6qɇ[hN~[ZRruԎoG4 tIqtQ3w|d6U'؛\~5nd;(,u]ZOV7eYPi||beƝEyR&oJk6aloAV;kΩ",->{ڇiuF:ӦgY#m"VGg +b/UeG>/Zp7h I=y4E7迕Ic8õI[f9V_^Cv΁MP2J{~r*e6Gw ME\UOs"l$wCZpuNRho|a_C:+F 6'F=^W''y V)xIzUì)'p F;q-nGդϑi"hԧ`4\.[ٮy&/߽&p,u&h g uWK}9 SQ_z ~d-6zgG(qx[>|!Ms6%7*=^6/8C3d %dՊTϊ>TYmƿKj"/<( (ߣf$X3[٤o# n;/=d" ;<ͫG|>maZ/h^YD qbq= <{^]=`{*1G?5O=x_ddP}6dR1RJؚc&J6=ʆ|Ha8M $Ha U[o[&GXHE(T'x9Ü[~k.쩦ud3m~}y6GjuIǤ_5PjR_$%D 梉fG\\{Tbrlj}$Zpcy98[ܱ>{_D00ǭo]sV@@p̑3_^f0q:I;z`FL1t譊ih~Hc8y,_Nyw&Q'PӯC>QODB"hJ˕(A~:{^wO?\|Fm.C&qcNa#=']Xd&Oz?]?{~~pkp8n8ޗs.2}tmwOGkSu_wӣܿߟN;ɮsoT`+)ҷ[:JnA?)'|,a vUέjW^H@З8$pۼ~=`hW8ՃRWi366'i&^`2aK$oMŅ[ه_4^DL޾;yȸ]2NtY:SM'd]ȶA<{對 L!#/Z˵xi~IVbnOE i<&كcˊB7w SX#\F7SȣCg}b{p2{C^u԰6;~Jb5< + nήN農ֈ) 0UJ-nyR= ~Z)6 QLikS.TZ5v򁡖-ʜTN[ZjȊ\w"BfPlK/ xCX)w'2=|mw΀}q)clTzą-_8%lQ9xc/οx-RA~DY6F7U]0*›]$Gc mar@dk;12ٜcRYx1~ތ4y#fWʂ䭡_{Wൈ!<@ԆHf4HymxVövPLH\ U: >g2ֵn>T<*|'U48 Z#\)ZQftQW WY;2~,؆sbFάLǴ$uhp[aۍ2*=娳@ ,¡$f3BtlMu= y}迚NiʐnI6MdC?{ۤ-჻B'E\{괓G壙=\9Y@(5$We?bm6O3x'}W:EoT )L'I[tJhTdoΜSZV'[ftSwt0C)ϑ&`l]%^,T`m>~'ᴆe_J-{Y25MۀҌ"q ssQ)\agc]}ң,.#Mz6hfۺ. ];8^X3A2_o#D6S.bYgYYg W`wh$ƱfOx[j3>y]зE˄:lCE(4G,^iAl_o{_vfc<#NFxKvF7M|EcRD嶄ѴNfVd R]|* h%$s?X"llzP U.3>kVrcŧ ":7;Mt{/Fݪ[Gg|˿[Pul5d"9;Jw'lg}iԜ+ؿtsuΠ[# A y>.ЂR?/.OO#s57#D|0ywpeT竴RJRߎX<CXGRs@jjӁTiEֵ-k3X:$b'%-^[Ef7`(~ڈW ubS/E51VvBqj1네GLSgC@WdRUqIi\UPI_/naNrY V7-h7cKYi9fn}4@5ϬB`6W +Sk'lVF2'Xg[.''=R;:w* Nz̲z aA `(Vj{*-).Su%z#?'3!#,@MJΥ/U6NtVP@)`^gkrzTfm@/M#_> I$En\ q]˪r2,o\=.@m0n$tf!1Mm&9Iq(bDc0sW:6]Mm8‫ @\SP2u=>~ z%ؕ|,cf$GZ(΃Y5]9jZm/+uR }3Opdm )iMB>AδuSIM1UEDgĘ=D;=SGS$tմI|j/P 뉗L;= ,ί*rCyNl43Y־kNlR`b yCA4&]gD'O)z@iRڼCDl Ffm2kFCߧ]5Ŏs*2BjMk٫6}}Kq",+^U\ߞ}$h3V&,۶8#$N8i덧8t8T庫bZ<29o;}X;G`:kR WPm b\McJ:fT*:'- 6:P7:˱8lS&j|6lUq:asr)ӧ0ΉjTvQej>X fT N}l9olWO~aM8˭qPCLP8]f\y'.zVuC;Ňqл;~K~mI: zqdcL_E,mҽT1uH ` QG3 -'K^V1b!À T ,ѭ'PgqJ5%#A1VELu?x$ʐVw#(X&]GÉ~_?u!+)˥O1Ƿofw & U>.3 *N"WabI(3P,4m>s\n Kl܃>™PBffX)ڑVhfۂ{()n@sV8rMnٚcy2!u$F a+}i_Q+";ʓSMQ[xR6##id-5"nzt8)WaYHN ۡosK.=*8`C]Msoժj0ck5GaO8\*#XCG^ccs( P[N||V(X뒕ϺξX]?!ZJk gm/on)N9҂}8jVsmyX"I0w*dYI^!h5Y)ɒBT{HYBۜB5 L9I|VGq3307i PFcaoHRѼr:i oN;jJq=1ͣ^G+ M=ec:k NM.CBVӏ4?asb7JfWI`f!+:] j#L𢼽:cuPCjX@qx%\u }ߙp$?O!ߣ+`?&Y=B~[g1~ wfek5R%Ee \Wxr^D޼jA`àꘋ*WcߗO>Tݎ]]Y?IC]zA8B޻} [=o1i k0F+Ke 0)j,dn2ev;p)K6QqW }K [=%MkbomKsPYl15H|g76݁JG-2Wnzm,ZE>DU 0-+Y+BsX+[L7?RAR9[-<7.hK ']lj)w%cckuY`'!8\#FD) |U]u)`AI.vU]/@>& W8KWg93ѐ,K\] +Q65x`9YkXO&oLlIF#&2iJ?eKC|*9j9sYs$s\ TM3>SC}4!Ҋ<n3ڗe箔:X+> K43HoU8:ovh@1MyǤq<[-YXc=MF_WfOF)~yXKGm􊩋;ʢ5['6]~`U4T9F-s1n},JFΞck/Qyۄ9 ^cfPC|kObW+")]Z:+ ` R{:tzR`,2t ~inzsG_Jv{O($gG?얍4)f y1XTWShJdqԟD"DLX׽/l Qӈ Vk[m4#0aL{3|-.Վ C&!8=`/t[KmzBްcUw/,Z {NSvU7˲++n3pH\@uoy.\Bۦ=آ GnDt¡`M[]ho4O;6l8~,riz >!)D Y~>1N1˘L~F'zO_Wg2gxam 4tAsqiR\>On͜ MZq5>j?bCe`l+e2݆iŁW;l{8A9ËbmwkRY+q|)^  ILb e ˹8P3*~G^YxC|j]CՆ{jl0$ݢBw}٪/fyMBQth`U73S '8AB]r뭭Ԛl؉WLxRK7MkuK h?0SAX5ae"ym(Wӌ~l$k 4"uuQINĩ/SaT̕K&Ndx8fVU4.w-^ynHug_1ctU/ڰ+'w~Vv sD~j?on7o,$ 37y]5eiPXk`1g;5y(`FJ$D*Ap?97:kOxtw®:Lv%l@o6(;!E[21'UkTxh#bes 6)(0!y0Mϖ R5{x$X~"Z`u8oϿ[*{|&mbksw>^Hm>LK#tHft_>j c ~xw7߅^jp"8P8HAb!=Z?v* ?GƎ\h8*}mҷAxH8b >DfY?cLқBەb O 3 ՚>ywPT:Ay~מyXlJC~ݛG~=i{[׆>sa#0Yu'3ߚzoo33'o*KNq5.4 $;%IM|qN=ز,[ q1 s닇պSlѴ1X`V :yx087 Ȟӆ4JƢŅ9zSO($<0R6cSHu}Iɨq.7]ҢBZc] )[ZvWMKA`-`.vWtl[~ U ˖C e*ѤG,&A뉈 T\䡵w :<e ﶽѬ.*/o["6B_]ӻ ޡɯ~8vDPW*T<Kuk~`片DF"nWT:d$@d 2@?%1kOɧ.j\ 1chgt A>jt7 +8:zo?GƎ^$޴w!G3%@b;XR{hHh1TS:|@ sj*3obIϨ g'X,k{!vۧ:  .lR1Qo$`%oxk򍏫l x#?4um3M$FMQͲRitOՁLe$հM$+}* o-rh0Wm(T0 p{e.2|ױ\y[=_ƛe =ʪVxڎ _A٤)+lUw56!8q,e^6$B4P PU$@Ae䚋Cϱ0ר [M k{9M?R:}յ{RN43J$N@o+A[(:T{7nk0%Ϻ_x_>àHcqҧaFK0~ ]L$dnh_KXY^B !m͸RegJf *^[ɳYe#(ZbDg[ԚkfV8΁а:,OkoBS%kqiҭoF m.*w'?"p8!š)scCC+]<\rǀ8Ss̃  ˊAWO:O{zyld[{o+ B9F[$N1m#hGה2u^$C}1$@ѳӉ{k3t6UTGG>zmLJ83s$"%{)jF6b{  {:DI0NwsK5P|R e?&_,.M8lk՚v H:"͝#;eA^a0)+i0lN`߱YX=TY= "1R۟5mQj\M?Xa(YTw¿q 4Ww秿#0gAlߛ| wIQ>a;-Ʌ2?8rLR1 #~Z`yPW:b'&lN,91Mp|$M5#Eshq2<{9(S!gBǥd2K1c8a)xߗ?H_fAUAqL$W٪7Cai2ꀲTl&6}PJdGٗj><|B|>لx>ԓwKq5ec#H,3)d@XjgTGXLWJoek FFI$/ʤu' (U~<#&_KAu=yUE^3 aNVAO~`elV N> V] t3V~QeBB+ zUPN VHi?~mMWT4h9!,S/m@Oĺf0x7$?-:!/:`֚J 7hyW4v̱1Bs%6μ XKIhu@0Q+XЂuQ?U!&ExmGF(ܳYpœM2zs||ټ،u8nۺ`+0GCax̿skQoA>6=5Wda&])X]` '} QZz1v,ސ㒫aY =d=v3~O!q^Y'Gdh%)*jp|!qio@&#fA'k2hvm޸1r(Jd4y 2o_H"'h7dVy/ZLE#8NxϓDCZSݫjdVхqPe3[cKݯ'Uך: aɇفN5.y-cR3 \:ekn61GR1#l20:UV~Aa"[ }dn4oP?U0e]= 2ߊB2\'iRY{ + A_xvT7ZFl qӃR#[q>l,NeBá_{g̞ bV&7ݥ{-"}nbTZ+DCp X='Sp.5|[Hu!i k wTz E) =Jid%=7GѪ+h39cF>.G yt^aV&]NUA%AO5Zd mHx(m9i׉cfN>%nwł# A$Іr|ZNH{ h30Lv*Yo`m@p`zY }Mc^i\)2| GZW3k h36~޳nĉѿE=nYbgX*rzEѕfOH7 ymL Xiz5UO\n:fϝ;1H9t $y6 c{b<#&+O+miѡaG.X= !R)NjN8E,(u/DЌ.wf.Բ"oźX&)V,fmKmjt4*6qލܷima'y;?>?>cvN8 KEhiEKeNաPf@mQn{TE;`%2n몕v8s{ڕ=ܫePoٮxYzK}?'>âQ}pxu6Fb%wyÒW];&Xhm) pQ<쑷}1嘁u _36rm""ٰ=/>F֨dd7:F|m=o0P#e^hܲ""65DT9-T^dgk ӄ2ZͣzxHtE!g0K_sƱG(ʓa^cA*m[a1N[SIORh>ANRY? ){5= e@Zxh>9ʐjgޮ A'KY("Mwg+5:Q^[d^w:4kayv3L!_Eg!:m"* BZ9˞np~ ©=!郸 $QyA |lVhUw 綱">d6S$ /ѐ͋GA SA_RWkyߙ 4v"z2"2^J9 &<'oBYѸÄktvzz+d'`“SkS%AeGWCέP@KA@8ö%?Q"(i tϝ&8ĵdo`lx+ 7ms2.^%~6'љ1Rar~]k̦SOf??OH|EqXXۼ?j/L~sF~k0N,ѽ4/Myn2s[o'~1/hǥ'OYJz * ?f '1erGJ}AA)f,;vh&_ڝe)7-'Kn#x`^2&uT`ᾞ~#no gZ[c3 zs$LcpIdt4SRт\hXoW |wM7UIz>M᳞;KGx"-\lj˷\U}_,uaJ~Sg^`^<ݯwXkM G$- έAM2:2I#ˉѿ x ),Ċנu!{k#f_eVl"al6OH}x(hophqC E! k~qDOBQє0nXU4ǻ>~˱|dVp_T]Ss=wa'; +&"BZ߷{WÛJӷ(*8NdrT]]1|{|-C"6]uTH]D'zC42t70|=v9N #yaKږ Q~a7[DOtfO>sW|_e FW9Jz?o}ҺWl.kXŸ.tZ~nr$I56Ļż3thr8[F2ŤÔT,!ul \ z>7uF.`-Ԫ.(ZsoyHW ҦYĘjsRDjğeoOGȀXcip;%`\U˹p'\?0C;V *;hs |߇dEk е 8:Ԩn^/*7=#Hsq$$s6rbEކZ<1]#Z^Xwtz$olό,g>`3Lgis@6lY9{wu7@ ;̜LĠ .=WW qR}B x'TGF-&TK]tIC:w: \ޕgDsPڷNT|Z޹*ޒny f/JFO 5CP"}C}uut{Sl{+Q;D?%]b,ǟ3.=;m-8 ¢9KrnU,)be0tӡwh٪?' og\NxUAZ(ޏ:M˵<ԗDcr&x @K^j&w/ہKd 3D_WHIeb=s/>q޹Fp<'->0bsR͓!Jh(ׯw>Աc9lV}R,0* =-Tw дc6[ЖLu@K߽NROTć sR{i [Z(ޮշ %̓>Z/':|" _^po!>m-Q(jT&G uUɝ)fD>)mw5\U+m%Pks`=[_!^X7'Wh5R+|ǁe@!Hc veƈfod 4Vk{"OC*'@YK4k:4nJ>Ao~4g} 2aLTpXu\cʍw׷+;Kw|-'ܮ[dq'XU?SƳmȀ-Wl(zt%x)4RS/vj9ięVeE'虋 <-"Wע&̈́=8-z[7Üw Dik%Xg"ǔ/DB f ;QV<\+3|yg)n?<*a203+芵A#j 5jvRyƍG8UW '_oʹ0uHI4\oM7BOǧti)G6[K{8SX3mʐ ֡iA{.~|>~gT.z"JXF^#5s\kQJgju$kfu>4/1bU*<',BQÉAcJboB@5eNզ8`%+:/+LR]^ni-x͹+x`$Rӈho5$f0l )J㱨5-AK‰y(/5ۓE^t JTFA׷#NɏgI^8#W?)mfWg^Uˎ9сXޑtAVԭZ6PrDTNYY>8&øz=\Oio7rx ,÷IMez#5EUHJ+-Mǔ}bF9+n3>l/zo"aTdU9q^ô)|gH➌"g؀~zz(9%*=,B5y༟>A`uA=S֡jH^/O#\OW'$1o+"߱<% 5x&Yh;}8 Y) V}zXF=|X*EFjtF5`e%gPܗ[YdiXޯ OC%d UoZ5^۽~^?d #]ɪm樜(K׵'-́lG s3|ٛjn>nz<W3x 3nBMbEwO/$hBІKTyH󧭿Hp#ڪ Ǖ-ۦW榇@xE4ꥩs4^~k1E0wGq |Js+c:awcf8"Yat^?8Ť6:qWAWTΪ) {.ix:+G3Kt:)QER| !Ac.5DמC" UjqCP8fnvA N)\)Rj,3u$خB r:蓃Ri-c̦Cdo?9W eWMH@؉%gC7Ԕ)/ҿvsI(=Ef%YaS(f#zN1A_; `.{x⟣*X7 lT_nb+@wM,x_^4|ا? 2fHҾ.[8 HMڳsț6&E4GnPK20 -*RQWzn\*G!&zG#b0?|xn=1rŕ'#.ao^`Z4`b=@҄ owA|pF+}^gSn7ɿ-Ufnڴ ߥ׎ҋFL]%jh3n; 6{d_'wHŏß<äZr@-O[ -[X9mt7+woS(uu 3’zTW=ث&2~¦ ]JE3}Olc@0d%ihS{N|`ܸ&ZU4[ -Cpw n4%<@ oٝ:uNUu/MHv5pڧދ*7xQWPhQ nZQ BN89I$Cz!c!/HF ?^Q|Ko٫\$u ~ 9-fj:39w/q2> /kTb>Jou22Gza!](:" D*Ĕ䤴,Qi]־5#P,<Kv;jů>HXG$.umz\oژ|ReK+űB9}@ -*`-Ԗ"L5W)-O(SƿRA4nKٙslӏZHɫr7ҔJDs=MMɀ@D2.j5뮎ԿP3*U?FMYK6QG](WVxk2Z*]y.XDDJ>*x"4;ZM9kh r{GK9C!-% }H@@7=%]akie58 ?56hR+0Vz-w>XmϚ/0v IiO:^K8GtNzQ`HOfʠïa9D9z?=ّS_69<[(정^OPV[KcQ:)B6E:u\C-_¥a-E;1 Xj +vK;p逅azQata@ϽP0.wq*Js4ɝ]~eW\Xj |9qA4~6+֎W TkCuȵyf0#mMRa6ϼ2GV )>|e<zp_!6"ip{ 'UCْ ̲s isbkb3g{ Kqk2aAoAm1\R`{ "YI2$s FvS\3ub!tj &OWkeG/yeeĎq'EǢ}l{_9(Rv])TK🅫=; xgz8nI?Bfnu.$529rD=ŗyj!P/YVb_[0I顋o2Gk z0@cr9fP}l#By3!<`u( =3`.ÜBUhV`U{Oa9D4963/Ft\Yz+X4`O$c1780s3 N_6Y"XEˮ н*1Ob~< aX#;%#q}w2y>)f\^ b,Kmu6\bcOiK3)Dy=&nq&.<='R͹| pyM&sWK-w. NYO~)EkāL^bM1rJ)"y uQ|Ք ݪ#{'& :Lxv`8Isml4J;VNt%7IdWe;KII. rc)R6Iv)sGSwRo.B$:fbfAfC9-q0CEsd[ZLE_#}#:1i.aI1WE3,_q }ِvoE=Kԛ_^AWLv$ n=6X q*gρ|ёHukb10SO_CO>[%C r8L,l#%s<'gg<V QMdynx C:` ka݃D$$b浲hf1kEp#HO\ey4rC'%zwx}EVHR\\Wo$ΑO^&;  ɤbJ# /""z}ٳ18/(@-$`B(*_`ΉyP<)ᦼ6XKa]aM] +9&aȉ[rz)Qq&dDHP9cXƆV/!2QOM`9'%>6ˆ=]y˷o "66wg B*Y$ ;rL kՍ~:7vfWAk(qfk,&8B6>\vW;hbCF gιC0>S&"G2 t+uٍdFe"gVfypدat^p(\ή@x\l̈́u ()̶:~}mtm5#-驔;ͪ)<ϧ4?EB6ʱ۱0Ct2Hc1>(S쮏@l@)%zMF*e%gwu^!J )N`"Iݜb]2%-Gf3G_p(V1W-'$|b'33ʤ>R\nJ+)  @0jruʼ+y!GB}ThBV_l-Uu:O9t-))|<\\:uʏmjVQ Dޫ[OJi㮦.di.5g-68?u&|ԯ>H63@SHthzre֒Ƴ}hѹh|vڻ <$Y]y+~ xRw~5g_:bDm`wP:9Q Vqcܜ6Ǔ. "{=5YdYO =y._ eݽXne"-_q^I%&vuko d}`D~ٶWA`$Bz t0x>L%lw ұGJ,VLEd};T ~fm\dvM椃Z39{ZoRܥzϴ*qlvk Mf)RNڪ P},Ϭ&Qpam$]gOpoɋ>@[`Sh]|Kt T%h-6FqM2^G3?>#֔Ӛ=[J^ߒy~c`?36$ m %lX%DR?JbB8awxϴ$1OPO^c;5^>dXRSfԛmp=DLd}I,5W* EܦQ#&43?G=hҺЊw=Zm&+B`ݼS??*0u~s8^x>Flk`T]l}Mcˈe`j8)A1̏H#`)M٨?=~{:b7Úz0ĪL-܂q0L+344J={ĽD w da5}דqqfX$iOYfL桐ĆpLYe~*x\U&M0(F&\3řrXI; te2Z٧Ue~er` ^VWܓgo0ûʉK`fQlLwmjˎecY af >¢fŠ9,CӁEqw"@C7;2>,I\m:۵,>67Ʌ6Ez?B%' ܦbJlge7ёeY%[tDx >QL-7=X+c~;sWmHaAfF*fHOPvb~Sؔ]!+6bg5MM[y&\dZمS2 PCyJOT=~)_ [#916ߟj-l@` W‡pJp'LAsU9o_9ЕtȷGvʍ#N,i=N>X8jwzM"?"L|{ rkHk(V(ghW鹼z3?e-OQ_/LYZnK^ltqB{U>:)9}=2$HEBOTܰX+j!tKj|.:!?*}{XI@ *P&',}|/<0 + >[R :}x c"|r怰jdXr <Ŏ J "- 3vq:i!s-M؎$u[q䦒 Ų0'/nI`˪vՋ ob&mvvE8:ȞL;00F_Aw`7pk AȁQSrD8Z‰ uUdBw":<0f==ܮ~'<}IDH)7oL= b8kdsl'W̔$f ^}q/;7}gd/xYJl\SPE/UN BR̥8Hi}\E>K X<ǎ)T!_5Ih">e[6q/to:6=& lw4POx+~;  kPaPjv5+axZGиWLm5,KbEy)<0cnhN L)|_>Qje˳A׽.B$ /d3QM;kjqVDD' __s0|AxAU{b.Z؇6sSo83 ùq7vśҴMKG$M}cu@' rc=3c>G]:4"@otq\H>RH{vˏohX5|Vpq ."LͮpcxTWi&Tc,yf2OWH3,] E\Jё[|t]Y2O@&mJ;F .7Sh">Py' tJqAD;x4z9DKhguy~"Kُ`*in??ҫ\1ȲlLL%qCJWw5< ppg3&djӪ5@2Z7:qJѨ"mKc%m6ZLl՚sk]INJDrO=+ޚmZBEC~=GQ}S%zXs+I͕Ibn 振wkr~M g<)O\ y~*iZ҈o8!} *`n2;MXvp60b>O/R?qA% &*..ɒ 0Qz$Sg|GGLMf_੸[{-f. ]3<2T<PcSᆷ bUkwk$ ^ =:f5Ys6t꓌Jq@g6q-zM}Fmk<~x)k|P)m]g`Ngeڒeq/s~nOnrr%1v܁ǏX(.id8e3nI,8C2k!ӿ"9( 8{=7iߺ_#߇Z[\җm/MiTA33+CC7s"?tg|À?f].ڂ_IkYj6g[I|V2oqWެސ&KT=SD*itl1 KQ"/cc#:줂C! !/ G^0&Гm10G|P:z"2%%L&RH̳ V_1+7.nP.z?29}.Pm|p^=tiׄfP n!:SuBF_31fB9- (#|e a @Q9up@Qڄ(ZƆ#Yuϫٱ~Zbq`޹x  I@  Z!Hoel<{k,JEтD{{R>EKTy2'dǽ2'.Jbo&` ^.#88?nySzaI|\,PCE|>LR'r7tyC飁_AVZ+sNܲSR2q!dbnK.MJ}N<-(xhzbKui!OT Xb4V35Lc;3󞎐Apx}%Y_;~xhgX;=AVmֶ'Eto8v,Zv)`Eɱh>9ވ:gspvpE@Эg'YKI9zj_):1,y4[[Y]f"LYGFr)EB O 8u{I^* 0YFq̼9 oOu0[z^0>Mo@7^9stoeH&ZvJq`MQưAI*Փh$噖erJN5u9FFm¦tP $UΧ7e=&Zσ2Y 1/e\kh%.TbkIƙ6+is4l2 *]KSşpiO K0)4ŋ"鳫/=EbNn+h>*a>{/ZsxQgii Grtka:}>^l}k5ZY Hb94t́!*γ-<1a]< NqNN*XOIxPcTc*<7" ]8}&YM4jX ;K[ -v;$w¿0fJׁ_HAd O.y74X/l%]KwI;[}z&, Gs%5~E髫'[M.ސk\L:EҁϺ.=˕hDeu߫0M"q$8m2zuJ%3ʼn=4A7Y8ݐ,'hEg?D J]&i72LO&6x3:C CS>e x R!M7W]Z렢"(g.emnDr\O>i1>=<^e!ևE];OR1ӅrHc]W+uu9dEy1Ir{#X <7KWF@`XP<z=xw]'ކd\hv^Ѐoy"\o\*H3>%5eJ|_g0}J&$8Z}x9M1}GFR}qīyH]o/ Ի }xyow!,R@αHR-G ߰@*Y)u/N|:NŪD_X7-L~TS^]:Ȭbmh ] ~ VYYt!NuH@3E3Lpuk*e(sE\RY^dp< :se/O52vU&&*PzIFPK":"2@)9H)jw [Sh;x0SD^BKK/9ǡR0k5}G:暛.LzH}Z\C3/l8NVl+BMdY͗.=ųadS yw[u7a/=O@rw1_ y2.ld~Kix=ňv)' aaL{Pp奚/tx[ppjR?/X$LVPW^䭳#j[8Dٱ2Uz>՟?Z_jh#˩!aܘ!¸vS(!JRP":w3Au=f x@Rtr(oWA4:ZWē=`$.t62.W\ZM*+}V^GӚ0P]y"?;9B1m$foo)%%Z`L`4iwޒn̈́N =@aPk>Z!`̴#JH`)K~A=|r7i0@`:]PkCv/TH^z~" RY7ɺ^+UIh@OȨ:wI1z$^1í4'\uP2?:Uz̿uB"O7CU|#ptبdl(ZlADK͓T:*f?A'*{kvҐN ;nJlAz@~9a*ӱ|s}*'g4 Hԇܭ5h? 8 vAnC qKEr4LYw?$@,iA3᫫.@yL5&F Yeq^?o)?l>ĉCȵ_CE|:1L=`@<F ۮR6hWuWUe#\vjҥkVAߤ89fPġYw6"EÚyQk*տL_1d|o[}#/2ĥN '{ 6n ڇƠ3rz,Cx;+,~$lKg=Ek;i/?ijZ,;]כU*V~~<^ ;pm3w=3NRY6BЩ%xa/ PU5Ω9dmo3Mw }gM  B_R.bV.ouqwp-q~<{^xD $d ē Qs(1b_0?L*d2!'ݪ<riC)㓫SAz\OSwT'/kƿ)I?C۝.nsё,é6 H".Z=۩L/sysc.3 P 1{e\0\[pg^g[cZ.g2u+H\kX*J߾{xl͒zO/*4Ք;EfaTs H^2]Tǰ`w_L4!R:`Fh2"2/cV^53՟?cc)1cHeZ4t&>aSYF~00M \쾛|:X- ](5(r~S[y쾕,+U.Y4 01/c1{L`W?4Dnmze(?|Ax o0I^_罨(YFA<bcߌTSC#-d`f:폏yKU] :ݢ\>D)x .[`*\x|g#`EjZ:+ԴhwBR{޿@jP]=`Jn<9 R!{~ftw.ލFG;]cxET{iӖӣd͡ːOzOذd0;:&/x}\R;Loٷ1_yd McDFA+|tbq aVx,&R N 9KGN{}]QD/7_,w/Pz~p;StZ=K+=_߲w~NEJ3f1o4 iЋIN5?qNu2%uK80=H+9zxʧ9FͪV;P➥|7/,ִ@HӨ&~iyJ3Z`'WBM6*;">b98Rbd$f| 9ۈ:JV]߄ncA,ҹ?,>~ϭ y§,roB&Sj%7b?[DZpoz&CK~կ[NNia8>T Ps?P}UliLc|[]Ge(HB_Yvi9\FEJ_z1 w|3?[Pi#ĊygbLD2to':5E l)r% 8EJ٧uqc9PCvA-#%fRmOНTvS=86s <֦UN5sV3^(^upSMNX6f]7xZC].tK%\KHKٺHs\:\u>UDK7=C#zlUOfz9yFl/}})Aź~$^8^)tߗUR$gic<`s[=:Uvv$Ȝ]r&:Ɵ+rf*0 5c0xHlNA%ڥrt,"wYZnJwPFhkntj)T饻#9%/H7>9-"ʱbV\{kxpme &@40+||&  _r%a3pFbWBىL}lLJGM$G"Mbd0o&dI!8~Lb#b޵J!̉KhiӅ mxy?k*<$ g@\6I6 GzLBRL-sr4d}$2}?ϭl`{姈d8GY!Lǹ}8Ų P2w2 2\"Ra pʘ( tq4=5n>'>a?.-θ:}k_B{d7xZH&+)AC2AuT(GyD#(?/k OI18F=JbaޕGr۪Լ]_j:gKwatYV*ZAĀ}i*nGK׋|s~࿓NY>4"рƣwHX>sV&Xi_8'A %'ђɞɈޑK'bB5GNj_ߟ4Q , Ŷ#Q`X l! !A(K _!iPi 6l wWOP*X&4!ʼV z{5ͭo.& G8_;͔@ZSv6q]'Ӭ0]5$\;i n.YFa,z< ;Ygjs8AmY73*B6=&j_{NVfX׎F,1 Jל_gQ3}'zbFf>lT0wT]HDEѧԎNI:0?LwnK6d3ˬZ]zq3;?!}bZHK/`7tZʇ 3<ˎNL|g-x !xM6I1 67vTT=ԂýV 0in-[7A&օK^FlP%Q?Czӄh")A殟6U+zg}d߇ΓK2#c8Vn՟V[|2o6N:GtѭE( _Ѳ&o#徭;"7!ZG`)glbBqKT؎(~ )pҡVҸ{}_won;slW3ZD7i2̅F|t}e sl6ƒd_?5g΋MR{$_I<S \,9 {LJ4nw1bEpeiTDS6^(nZ7ࡥj'r晧ᯩ`fFhWFvxI*6pM| Gtar X 52kS8R OwC<"=u"kgp/bGq3%vpo2O Ȉ_D1:ܥfXhO|5zb-p܊ 8(̰D9ٶ:sAD,F{[Y#pULJTM/=47G+L `VL2o[UNDTO[0;{>ÎmK8-6 `IbtSXP_B UۢU.O~Bʱ N|5d FA& '!%so/K+:0ðT&Q^igwX+2ƅjҗ:\[';+ߛ菛Siw G`)4'ATݱ+IuWqDnP,`Pp<Ã= /SHnzf`i=ް/# FNɟ'WF(KyF,(cwkS1w\T -DWR!_yӤ?yx ׷3e6Iq 1+iagJXOﳵiۃ"PC7*&.ɩNr|ze]ھU,nf;o٩eVĽw0W 2*e$!iЖ{O"҅'aV^6} #_e(F _}/7V[ye)a"%ur:YZ{PW݅3GxU2^`H8M6:{d@eM`Jb-ԣF-?C,*"~#~YS㠋XeMjXޛk.n1!W:"bPzˡ6?p,I\F-3Ár?g) 3GYײǹmץ9{fhrma]tz~mU ä͐!,.supd 2U pe]\4n nl{RL뚀Th˥Jě/5]ŚAvwx+X zz5tyh2  y;mIfGU~z8xZ#p$ G. yiз:| X&T4ɪ[O`,aJl.-8u&}$va 14 Mq\I3ʑX-;ԐTYH*ڳ&ׅ97rG/or17bXu=7^toiO"SdEL*#r!v0>y?[:RW?oΑ$+*t CT=fXPKrƏ~]HFMΦkw2GY,$G"1 fho>ٜtv$yJWq8#عi0)ĪfS/k"7s(D^N/Rů箱V3n̬sx$xaEt19Ï m~%]淫%ҀhOs,HhΑ$,`|>䇬ha~_;>/?Y,?qBiA`g|O },$I+MF:֒ tAALm}Ŋ80eǑ a)ym˨dTCg:d@4EM&w/CIx#<2]; t)x8˄O:.qԆ<Ć%\\P KT EeUQ:Rpm$UV32Ӯbƽs,@L"O';Z܂ٗ8dIyܲi]*b'zՍ9!% I<=xVĹ 7cwSԐx̨aI-aYK| Qp!_NܱQ,g3Z ccDU+C Aމ!lhi ÁR~湊Yj{ʚ1Bh牪ˇN) wpt ;8l9%) QsMZtKc]@򅻔$"E}N=`=!RkH`VrTVp4*ÞâVA}+(sN$]1C邝tf,f2]Ϸimy;_rB)!lheiW*xґDff@e$ ; "6vsиD'u$suAy #u|ݝ7IYQM'!9 DnNfpeaԡ˔攱ePFY*"w/TmŠ:#98Ҡ(ИG͹*>wX.DG 77 :wX.2y~to(7͔kV嵩T`Q]o//&B;SXC^8z~yKm!_ [⹴u L·PqJuAƀꧥIWiddț?Xb'n|a쏩|8ArEr _ޠ…k+C' )䗥+dm!5 !ژ'y䯻|#'6nӅopVrG HHRI2X~tJGۺ><}AM2;=ښ-ޕcdd 1-s*.S^5X]qK^aMI´vk\ B*}$pZ C40se]$r $[\7FG0(kbE)g?poiN/-R`B,=tv,\!-`\Z$DzL)f5".Ր#5o)|.)<]VM'#kUAs!c*RK쨲PZBjW6eJT;{?!^},dQu=jp5 ,jґwx(Lna-. b,pQ/0J0°%f?-M;L~Mg*}29 MȞhTn&f`A[p9<.ඎ;rg+9?]) 3"NC&П y;ǰNy7B!1KAU|uv6'ۣ+:`,j1o&;]j#Lx}(,S3}4ř=}LPL@%*K. 3ױ6='mLEv6NA\$$FtoUkӭ6!b: @~;Ӱt3\(r@{ˈ|q+q$ಗ -sG+@"Oa̿ua))#O>Ә!ɷZ `!ԱۙfKH& )[ѳL(~b.B! (}G/h) ޲&){0lf$~[~]~ЅAy]}IW#؋lW^6 {y,ʓhhTP"VfYJʪxJ,dP-GF5 рN/LX maĴ5$ ?Heqe["omȇ Zl,[v]e^܇`#9. ˩~b0? JJQYω&I$YT5`U VHZX&U0z;SpBӊWKdTI@ῡbx*;qG\s`]bGúHp p@N!9nK/_=9['-v>LضJ@.^q 1<y"_~VRzV U>M-k7 ЦY؋˵Ioq&L}`{)Syʄҹ%fj{%Pk>)o&U<?y*Xm.H=` 5Dݱ^<`@=GJqdqKs Dgi ԟ-9v2z4?Vݯ/M]=c6 #gˏ޺uB܇0H3MG 8 `P *)t",$5LlN[,gr5'KGD%5M?(|a7ujQXr=B6 *DP[#>Cgvm:WGoi b෹wc'D4 Q&f1y% 0WЋ-U6Uv޼SUar_g&2`齃Ae$ i6>%N"o쭄@\%?+P/#xlœi 2'@!i+/BX2meC7> ǜ35LH`XJ4W jm~)&P}bGe9櫵%Ms+;Կ*3dM2dOT#2U ˼ :X3(6#1©4Kc@$Kqk5ЭI( eݎ PL|Xzav4)&lC#yD+_4i26B%9M:M;C[ [^Y[ttC@4 +j b֗ȗxL"8 ^첇9 ب# `[@:" &;9&H XˠEpj \werF'!ړěn#aN|Y1`]ݑet ,Cɿ;-t/aef"c B_apCgAw$^.w,g'QGh*RT dNUTAhKP<<ӣXr\BvUXVI1w;~. <;r1U,dHxtνjCw]D?>5@G0 Vd7Ys p)dK rvڳCx_}:Tv6,5k v]bz0x94brl\ i@Q'Xań>FvezaH1TCifͲ "rI~-^Gajvq1)>*`\6dPVK*Zgc*`2^ɷ!SY\[[)6*=78h/\DHYom5e3REH'O,`t!i2qnN<]ol8 )[C<,~&s7N[> W|;s&a-PpMEO&Rt;Zd`Kjvbď*eJto5/}9bZ"  f1F"-z~oAj`)ׁӧ@rUN"VqNeyomո[ϖWJp|0ކϑP jP]|89oiUv9 96L V[ЊiLjsh~C ( 6eIƥFEt A-[~#$͌:l|ڣZ_g:Ѻ.:Ds]"޺Zo!S6t}֡wi)JZk%4UFcW%)w]ME,D9Ckr8PJvQWd+OzΔ+ ޛN5vfM3H}i;f|kAH"ީ SCթ tÌ UMyOGrsXS HY{L;LHѣ<O'8tyr1[$P鹆(h%mFwA0nC`3(DsqZcÌ" 8$',Lw16Ș>Uk٢O E҈">S_`rȜL} ȣias=[Qҷ M*ȅT Z(勹zL$W?vO]ˑ+-39$jXn]>ysADVl|Sc\1۟7)BmN )tYHص߇he/ƅTVxhC VH6\sTP*.ev:7hF3{@U/`'dRk|KeVX*ť\n+E7}ob76lrG$*OGmTycezOabdykEfn ۤ)K6~=J3OO_[A:3Z bɞo4au>Yۖb=-h Ob[nx2eYffPgt3NW$?wOܾ>pOoDIsj͕8֟X/&,: {:ɠN-|DlP,ٝL롷[Cj.BG`^ M偷l=?eA%h5SˠsMx$T/˽qphCApu 4瑽MxO9QѷΑ XW*L>Wp_,2۸B@a}:i!@}#>5?LAV঵E+o]tow0QXV|1$O褢w®QlB2>__qn~O\~V4. ˵7q&ʅ߅L|<ӽsoTRT)' d?+gIl7}@Ky$Yc 7 3 쭟d6;d% (SJ7KoAY{0 2UʙrIv/NL  Ua!ru-s[Fnb;Ri榙v.Xѿ}9L9!mp!rm`~+WUɠ<ԅ ;dk3v̰ÏT;ȫWeHHkyOPjדnG=lS=8Tnaì\C%*e-RV,a'ݮs娏)_)l3ށίY6޼%3N,ً-(&NL`'S|D.Q?mi;98۷ :S\$:- r%<+d?iz29zO sl#Xc ~vJjz+Fvꠅ[S}޿T|A338U` v_* BGz8l;=UdktrcFU[r4i|t"`1*VzDG}OJDDd:°LJ_KvW?\󛓷 ؁LlϏ9/⁻#;: eq> $O6 ?=sTaCo֙ZYfK)K'K@i,e!q=ARt;g].h9Sk(~[OKVFomk` :7(F#/6Ei uzڦSpN?7e>]eWv@^FKzb %o=.JŜ{_plt We"9HH㖼8gRu ['%#tʾ0ʒ(Bj-bS$_9qSL}u,1go9x>Z\gq~ʖ~ʯg[JIxou;UOtǭmEGi+EjL~89 I(byMWm H:`c/Ο?YvsHVy LFzl7>3V ,'%ːpopZW~"],_&hN_5XA[7 r%^/5'GPaqh Ƥ hIR?+C|nZ;-h5DbjotTOs%MGN=_rv,8 fNzY~a)?V=X\I͉pN]/Z%*Zl4`B8Go(j1w  +n4rŊww p>*r,bdʠ@!m}k; DMx%~Vgӭ㻇$<iSw[!]dMjțC~к `P D( R7D+_ߍvy|n(3O'5cG[\W_EXO^NcfU ;O|}fOqI ls!H>#vmҽE,fjV%m>_v;scvNPZmjޠ^ X>Hp2D\; OLvn,$ K-ERQ߂CH?F74X|EhsϨdhifJO2 Iտױm 2=W>;|ho1*ou%8P,65|[&8=䲸7r{C2knt`7oLW6Цrߦk0}[kkZ[kVpmhe՘]ݠ6Vs@I4ɦJ_-Pͭo0eO8 ;3AGf?WɁM1uûVO:Sğ`.ТVj.bf繙8OJ%"]S GFL8y-9#1gYdΐn\DF4߲tu7FvqvC "i(<#E)i·dT J31\H!>g3{L߶?#8Ds0p/aO|qYoԎ@ ]3an!ràm,«Md﹕ʉ W㠓&[[ ߊ'Iy:ޣˁ4Ln7941SOlrdѰp3@в\;M͒.g;7_J zkq`:hhs̐Mev\C@Sڪz^92ýM`u]e}[i`9O-?a:vܝ>Ox sm*5zkeam8 9ǔ1=67Y\tu)(RL8Qb)_`brwy3b,41wMixTF+ҒU~BU& B) HS ۆA/2Qǥ6HUW_Ʋ3 :Y=ϗN >Zhx{t5S||&U`ـ/"ǤUB6]2҈fmaRE݄ | e=#zNKڄIw6Ủ ]B"yϡYh9[m%h 2M")+5 e4?P67*5LQq#(nd+Yl)Og]U8 vuyRmim^v Uǃef OB؆BQTZGf(2\2kg Ob?)PIq [hψVuS0Pؑÿ#CVsJICW{: A2kzjlf2ޖz*OJ~0%y YGaI5}N\Do v,UG=~=7P=ք!Ja缾JUfT z6˗"wQk 'Yo{$qn%<@f=84QZ^}c\:2O 5l oQT*w}sd"Z}#~,<6R Z;ډ^7?*#2 EFLU?% ,"@_-ԡuGK)*ЇՂk.ȱX)S*kĕK _ƁbN4FiB2ћjF%44b_ˇ1cVn6Д7xb>_@[uգ Hܑ[Sh*X 1G$Ka=-J];>ꋟz~`KϜBaLap 7]Jξ 2(IIE/f:V~5-?BFzKJ$ =/XD}mGĩ*ϰ2?R;EZ~:M=ÿm=5cdKhpI -P^P.kMsD2"9iBe*1ݦF<8ò  W(Ȝr.)QbXA}Dɧwd9̛Tt]ۂwMaedoM5|o{uT dʺFr*n&֎C m9tS(=_7Է~ Of9FP6 yWSeLfE^t'zXLQY[d}؆݊PYe1ժ͇PzmY)^%M>U<9{>FR?@*kqh|iB(t]}۠qYŜjz;u~8!VWշ-o<(B=QLGPdPNv}S "BKw:=}L"C`_yi @7IXwJ *OStX(\F3͕W{Im;C+C"{ռ05\fiWLQꩢτf2߼vN9M's$,M#2@,guɚ|_G?J$*4׼ 3`'7ɥyEzaWF")]ICxLWLDž,um?DQ2 ?=ӌ3Okps$] VPl~vLz0jxޤ9.{?Rnj_+^ @O )bWpCSQ%KJ4GY8"Ye`DT5PtӹȠ^>xL qwAo)k?_{Otgޕ''m ׆"[:2#J`mZ~M\Oiĭ;S"JjǨ L) 3şұ# z苀|n:5ϝ6"iᎧIL;H3:72* Ur-\ÁLꝘذC d ux }(%am|YH|{](z%JDG 9="r {-ǐL|o7N*z[t^` P%XXbDto* GF1-Ut@s'z%U뭑'e`u%i&SM Ɗ2 j26k-d;@q򩒞"gwT2PTGp זaT`w3wul &tfC1ߩeV2ͩz8bQNp $D _իM=5) p4#mvG.vmƾߪSIe h:DdYk$XN2f@y--?:bRߣ6 q$3h*ӭkm W5#N*|9PcM*_u'߶f&( }2Z1v%B+Sr{(z| 3kiq /'}KD$;͋.CI]w؟%'V7K,jW vUp\iC̐il`GMQf+`Zh"}5=>H/[z^>z-Sizw$%Ԃ'&-#ف+q} O)vv@vu.F =Ij|DTҶ1fuF66_oUNu4 24u,#NIIl0l)h˰滥 "$/酓`% Ȩ1z_A>BJ)[6!ٹOǸ_A2i'^M挲&(vmrS{v/RsniB[Հ4h4$*gR g).\7w$d<wmD *lX5A_SsS-$ߪNGvrnyh֯ͳDK\#5:z:o*LG{|0l:N4tht ei3ae&гH4_D'X_D_07I WNP4=eI2"g*&n m.55Vtrn%.,/6t..b-V=s:xVž<`-HA8D%#BGWL`A18&&\A*}JWUZ= H QqwgF7UmM,ۯ/+vwǠ+i ^+0FuF )ջJVj(Eܧt9AD)9/=OLdIKbsfov^ [jxg*da +3 Pi8 IkAo/$lWwg6Cv,iҁSg f2eXO)o~tkz%w8z{^.k>{iB48u#REմez&{%i[/|tڟ7,iy{k<@>aޯAF9c5@*^} khC ?%`+9amcj!XΉ3d 1HvּH Ea܎%ĵxJ{I <$Yށs\ZOV- ,jUvsonWN8Es%5p%Ed!M#˖5=&Ƚ%.Ֆlg&٫4fS}s!%siW+yI@3/2bpvJb>NI,da,,:ܩhssc3h]~ْn{t[M477j]%دEY LV|lֳ4bȋw#b֞gnIK1cwLF:(u/?{,)?zN@¿MP8PRc -̞x< WUlX%Y*Zgc̨{=DvX?"@mE7`)^I4:evhA]Dqpr=y%tp)sƊWz 㭬V`EB͗zp }Be3=5˝IDe 4b@>8r-ΤJټn%$FJ&5 v.>c(@UjE)'/Ց R-^ ON}Dg_Rd%!] q^7 #~Gk_Jw:߳Zŀ)j <Gp0L\zotXƿLqkX'Xy`p+|{bUث~YgA+)'#%q~ T {}M*PYꂶU,:aE\hK!(꧅5,Fk%o$DZCyfi2< ;[6>m D&ÍZ_ɀκɦH2/UK3MdaF?v㤽y"֟Hu0}<co.S߾YUcx?! 8^b6̬P&㪫L+}./i;-"ٹWCHǠq|?O_G_,(+AzI9Q0<)n{D7Hٱ\ 4*׏t<:T' m|}N~Vm%cgJc9okXFvYwnyL[q4$"Õ*P"7SҶ*id5r>BI,@xZmBpU[߿)(. wswϘ!z=VJxXwhv^]w,b$_YФ FB%E nhf%gY7e\Ai8\X, r? B`Bu̜ښiW_@%"Zj^1SMIeZۘ:a>QQ*⇤I AhɌ &?q'1I |4T/v-@era".J sDz oPFGsҧF<;Lm~5k(>8#4YI.&gR ?7]ZFyK>.cH8zLE-cb#xQ :mE#5mImTϽ3Sn+H Se6? /he|5D l9y$dBfR` B*1%vhtoiezJNkgЛ'T< TnSKuKM-SLMORH,+:H!lpgpv@\oa7n9EAdI\٫-FO%tP@icU5;5((8x|gJ!ׯڂh\dS[-9#r%4lXmٍ;%cl{Cn-g &o)7ˁiYٹt K; z\;-sZ5t.C5[d_~[R9X`c^Hxv.jF*M1})I٧ړ[@Isv9OkV\ ʜgr}:>\i3Z<0Զ.l`?shi9R(H::Ms٦<4BAI|?%Nݦ{h"{ de88Ć8ipk_>‚xX2֮xHm5d%'`"EZڳG_,^64wYifyۛPxf2; r`iÑ!ǏR䯇(t(bKhF\pzB9) } 2˙kM?s 2si3L}uݵőNjb`}!wOOlHPecƒ-p<} bE*V7d\stWiY mi]h;f/ڲmQ]}PeEɂ;ո/*7BRI.6-&]:dtCm'PGi B7}ޓ>DM4vRhGw<F>6rQrMر[^ S5ηӨFo;v6iɘIb, s!䟞'[4--*' n9R+CHAa9j%JAqgWM]+aX}-̪| u2ggߗ?tET_O]WTj ᩷׆ux&E6ҳ^=[`{9}S/E⏿W+7f9r姖upђ95-N`$q. r0 O(>ªZfӑF)tuR'Ǔ z+ uO3~%#D\Tgs 6aN,:Fhh0= Ү$/p<;_4 ߾X)8o݊遟6$rmyAg4%'(5cAuWL}!Эl!EZ`c ^i%>l]@:1QfKrRU._%h}saq"?F:o 6=m}?oARhi9iҷeb'bϘV~ڌY@`d p+)nX[bWz=sn>Y 5q5lұkk}7V.T_˔_O~e( ^Y{ߐ|<X[@Kӝ9ҎKrr9+`VSc8~՚qHT%Qc>}dp|؜ Mڍ('BmSﮉeO]9LL3ɉ%bM Uj80Vx3Q!1n91Є56t̢ဘTF~Gh@H8NߩY} gFk/MF4S1@5Lej%aW[EzXr"jln׮=v ԶX7kgP$ &pi9(TE}zFa%摏$ $zM4aV/Pň^u-^I<~q2n+ǖ@}q'J}qᰡeig㿘+=2("E eu=X`\j[pa*m E mj+#>{!89Sdy{')YI 2vT 5DuB`kXj+&= mg2w* l>j)rc[={\0 h %U}^dWθ s=%t7"M]m&@}͕RbOe31ʽ8w?G7JmmGn`=j_Z½X4Crj6:BYL2-=}tLfoP;l.~ew0]dy-G$/2O=w$_Nh!̑LՆ4Q_!#RLz6XjnxDdٮHחtmLV4c_.h7GtcE79[R#53 |olx7+ZE9쀙/AP& r1b2k\$rzzuh}i$M`\ԬV汽!M'P&d'd BRq7-=Eljϩ0}vN>3,3 Rb{=-j&.EKd>qfzX-^ /H.DVL_>5f}٣CNV^[G $Zk1\9 P mlr(tNl_ tc䕶݋n4su1`fUb@'X`̮3옡iByB_Z۝M#eM&̡* z0C _b;R"0MzPЄ4{z|^L*"yo׷zK?KOyOۨUyЗ||窭it8n:Ze_9r{x1"y+p<||_tXWu {7h?t_bxiStǫ|ր|KX=5ej8s=Tx5xYhL]̞3"::v>¥흑\pwg O:ʘ^Q,J'-YqetBh _ pY|s;| rt}>iSePzZiCy0=at pYܘ)He$ꍴ ..i'?vGst_V20k oI ZLH@V=ĞѭܕJ21Z(a|6{BGytAR< hN378D@Tj3j-D vK`m~Iw<*J5QJմ8Sۧ-7N*[;v H6>UG{n5yy ̽@8|~/dEb wz 4O/d2QXx/],T4Mbg-/>p@pa@Tv3*rK4$3^_1Zk4q$ POG0ΩN#?քQel6xL)5U$#˜|p(~4ǿo2#>Ty^ra† M|ǃmI`EH\+/eP^ڸTb"0r: ' j-/g:ɗl@eCΓt pnI$6QVYhGڵ@dkģŽp7B2s!ZL[{P`VQPo&RNj(֬%%>¼8VmT"0zb^9hA:qdLxc|D pڃuƮ-a/g<72D.W.}_8fc*Ą* Y,ժw8 )%* 0RQ(~<Vo;,1gHv"~VC8wܢTvraВrm0)Kr2H;M!9i*کرPuv,.YT&g˄>y"c2){=4U/%9˿` κBߘ(+lG<%SU|8%z4 2%ƤD.@cq^ NS@,|eWho|*T9!s޺Bc-ݖ,-Hz LGm]0s-zt";ɐp8q:TΟYqVQ1K: 쎽ZǼDw:)T1H/",,QIXT86W"5yŸ#7Mt ;X;#iNCXF +|K3*ItgWXre$b3W-b-:ILSyni1Xwdϊ Z\$ j%Qyീ.Q ~ZIʵ>)>Tbx_|ƧX#mdpepT́iΰ5^Swγ/ Y[~qϦMʭNjp3ROMC3[BH05;~[(Iā-|1vJ\NǧM\%䡯ITFp)C׫i5%~j!SnG}.rvJFtslfhC: ]x@hpf6|X!NtDw j6>̵ L7V_S3R|f l㛯kNcBA?Aȁ9CeU@,N2 $zP4~ 5“q?˹(1}ɓ Ӧ7)XvM7$;ýRT' BTnuJCvb[.ӯI'XW /;:uzr$ҁ+ڷv+t<Ii΅ 'Ώݶ"NiRd_3p@>qMj; u;SfR$3 JR`X0+7X>V hKdr?9ggmn%scqPc{#X^it[z79:9BTA߲?bIo]?Fɲg,ՊV;?~U5'n9cⵌ"h 8+e9 d䧋8HftU3v)$a5yjwj/YdXM\ Y#sFsŸl>aF~sڨwp)k@,."0L(:>/C,sq[12BU&ǂG0 emEgC綊ˤIkrE6u $ay6\%8#¿u+͇| s@g>jJDyjs8*w-m|ӧW׫+_1xԡ{~Y7&85Y/UZp=RwO,Y1zuh>4Mˎ 3LJ>K$ZT#nj䅉n@G cFn!c/xCj7{s)Œ|k[3c[-m@h `tbR-lG{6 ;4/d)?!M4 8*bôy 0rZ ڕ3𧣒 YǁmA}[yb:aD=xe׎E\ÍfN S?*}ΓG S*gkzqYiB B)tL".c#$l0:Yi>sHo09Rjj5meP?:N*qčaayCy5(jeIQ޼G̦5/OrZW U G}~/4r@;-LGi0V5 V"3#_SD_1|KÕJYכЉ`}Xr1$'kcmրXd&l%ڣT#2W[ 3G8C|"z V-}vķ޴ZɫMzE @KRohF[#['&mVw>6'~~ :Ϻ"K^w@;+z$36 OR9(Rw]\7Ãi1LLNIқ eWhBxwԑg+elӢsr*ﯜrx?_AݝX56:u押E`S"Eh1:,4js_;>[۾|4 p$J6W<9JEfarqpg}кRqbm<vVU(]Ӈ" չ2qSmO4IDK_xUqVK{goرO5M|/\i4|JX2쵈XfB>lZ^|G/yE*o"~wd) sh#Wb%QEg*QDcI;X@v1Ld/bFpNF1ncE-]c neUY*ՎsQ#6VWna#YEN`>_U_Yvv8 ۼQcKۙ9QAH=Do&tsU`IiiZC7KXTʉݚ\D~IF ! g[2//Br5N"YF$**['·HΩ׼&޲A߇.CgB!P *:,ŏ=畇be9HJ8*vlX}ffƑoo殌XDjўp*_Vzy^H0A}#MWpH2p);UdY|ټ':J;`t.>nҥ(!~^+lPAXNW1ғ:kNm7ⶴyu!cu\9b'(M.Jp(5ҿ]LTziadUsZDp5noC@~+̛ TAvkG:G]'rX^5622DGj|S7kRq?AZr .UJ q7?IN 59R˒L.m :O/l pKa UIp?Hx5ir\q][ ܱxb[;*ϗ0#$2<4X$Y՛5"`k3EazH|>EU|-(~ oK>^ŲbA}3MY](u`,@W^ԉ<3J,EɨDTvpecј r`U{Əh֥E"Ȑ_q(H÷GfAqվ.FcrCUQ&E~7wR?hw܀ܠ.4Zgѥ#p=)WxM-3H,• `b!xrM;{O.R6+cSs|&= `Zx(X8VqvH7[d iuہGIH^U\sKC<챁q[cȓѷ9ꚏh mP${hZ\W Pppbͱlla.枼-zb)F+Hۉ˺-y5&R 0kKei~Xq .uXܭ_(‡YO/=rg=WV;0[ &nݯh^vjH¡B*ZσKņ)kTIojGaVӗCh7wxnyYzGϟ3{!_'a2pz!Kaʎ=kVa2MP$W ? st<aa鹼0+j;&O5?'Y|T 0œXxX9L;6jmu҈YJs,Q0|/9M ajMhS!~[^"'@<+8r=nY[Žэhw 5B7iJQ⇊E%l0 aSu)5=n3t3KC"a:uUAuĝoqChޭ3XEsE(N`]c 8B]ye+bT[ֺG) tiZxM{{u_qUb_rŖ? 4k'*9~vBI6eHZO'XDͥ<KgK/@{qq'h;nq;is"Q^ىc5 7t/1M4shh{ǣr]~JKOمA Ǝ^)At!A#gu70e㽘Aʕs+qM*G4>icM3H=Mt05TI<иY[ JrPFPbs #}sxW*HD&"HjbiP|^kQ&*Ӡ,m[3sNxj/ !n6"-)3< oJq) =- I䙝ϋ:g Z)0rk bJl0tPЊ᭖"9ĚQJ 6K`V4; 3ip"Ўœ$ k vC,q^-/GU NHQ S0FAvltl۹קC~qR:9zO6{7,v8]pot:q/]'[MdMHɏzwQRX ` ~Yf!w[m8g vcBv|l[Te]k5 7}z?x"1CobUYD{ځ2~Qj<@ЅU4^ajH$|7K|'k(N",n]+nIulXF8g5ﹲA@Bo/aBGIȧ's#"(G{}Yz OYBOAXUж64iAg.߳#ĘWWX$S*8;N mLX"$Hx*4R؊TUétf?r?Z>MbN](w5> ]ۑoT!'] vQAGăe A 9;G{)o|+hzh>mF]I}t:F3Q.۸~춙sP++LDV%aѾr7Ol(@-}]@ׂϸϳ?j醼|O Tj Y^"z_Lf{\YKĭZK1fUg]hm`@:1&8|OZ"m );I-X("ˊK!fp=ISz W;-텰 41`!DN~<'Oƒk~oxyT#bMzy^`% EöWr͡B(ƾ_V0n-6O>~R0_e.+t=l/׃5ꋆ*=n2k/Lx#lNOr譔wE{8=o\p%^`&3 + 7TCsd1ֽ9m ;|ʮVP5a'm z|8ت#V@7_gs)*v;)/Oj"yDgxz- >J7gm[ju7ns3!"1<pdWRҲzL9fMa:zЪb0dJ5)n$nR}Y6Ws#08V_ tYe>{Z޽Iz0>?)}`o`UDhŞ*QЦm5|emn߁ TgP͇^ /.? {yi^H> .BJ׎Nޱ5<;1B0SEevA8KL7=Men蛖cNr^Fu;Wd)ĞiԳQZw]Ĵy@:::6 WB{|la`  oyc"p.o9(lFu;Eh oÅ*h k q210 3k< s>U.R0t 9ȮIrk=84o^!S?=7>//B,Ou-H#}[.zN5 ]=!f JB2cg.9O]!3,6poJ9V0E O֏F {R4EG JYгkEYMGz X0$senn%LJu;l'R6v, ZT#r[5u2.>pdZ9A3Kr*`ý@o6:?+4LΡ-HK_49ۀфͱS1y%~vEٶin6\Ys.3.Q3I{w5r 2{߲X Bj=W}u0v*:a5D6\uEO8DepA]0M[=AG<|Z?ʯ a7 ӬտC/;&@K9ktOt4Y%Uci6}Rkx@0u[C!blcbm=jF,ZtQI**lݔvu%Gϥ[{NHR?CZ:MI!WQp(V}۞yZ==;1^v1uu#q?Yg`} v:5.*w,`sP2mSW%7{ͷ <&o+)BۑG>E:G5]CZ_M?^z "3*qRIGYg%ӟ_vN)MfrG*ג3 IEzoPQ.`S9k>Ere[h, 7ms{p5l5imĮ98+V߅ܢO̅-Tjp{G6"0oa'Y!su 'R>~k=ٸx2h(`'6YGAy e>߄}2i-cr ds>+k͚&veܔiۉq!O򇔛" / ?Pv<#/8t ??jҒ8b!/m2,$¯-@ W nYǺ{P؈xY fcrw[L!jo])A?&Ť4-4NJ)#$"fYeO!G-:'~ X0LN n5\+ț( ;oM ֗hW+MJ\U}F4Y YJ39'0'Rɚ;Qx٧ * "x,%O'n/#6?VcR}CA[!SNK5ulTA !.C] lSWy- H1א/zin14 FקA?CTpD(mz;B"Tσ VQx^H-ܑv|ˇ,d~_iX>bMPmԡ޸J{CXzإIL=`oH}b$CM=^B. 6zH~SȲ ޺XVoĎeM4"~>KèϑR"t.T9}e <&܂1HL0VOWJ[&Kli<-M051!N1Tυ Pw1&},0g*>O(XuG{Of /uT[7MqlFkt,ۭwf/!|AL_!qn|1^O}1M~_Sgb4O%[c`EC0YѴ1$V>*5[u.UV~zn6V::p=#]Оȁ~AϭW!Fr4(1zz?gωOi9B3Yk W,՛*3`qݣ"bE%\%@`[֗4cWx>^M")J~G_ej{1P#? {a6UF>{{- i-- -A}o'd1RL4 muwWY+WW,58D^R,t=goJmQnE9ۈv7s9PP/UE0:@ 2H g/ޮe\`]qQX]6k(r]"qx`K rGZ&^֘4]߀ ĩ e4E)^ޝBW΂i+ OBm|oݔSI-Q庾it}L:=`'S`JFZ $_AJX|Tݔ`ɨ&/耽 @Lq>ߓFP5}Ds@\1**?,7뗏{fbx*x {џ?;EJ|t]mmc;ᾟK 6jKf藚6b`|n.?|y̥:0h"lE{۴wUG?# kc^nn0XNWby.1dtYv}x܉g7nAB٘ygs]JʓVS]W)6bgXRz^鷫nvM>gh$X9Mzyc賃m`(x6:O BO1;t I }&|$Ke h ,Ņmcn69[ӹi}ֿ{D;Cob*jqtS[sHChv|{l>lZAgA1h vwj|viSxߜ=`JܣZc\t i&SҐ5` п'S(_CS'"y~-,yՒ0?i phI@m;iYmsr\Dž:bw0^FA&T8ڋMal}oyY3`•N 8vPpQW˷*4}&PD4cZۙo4=R[8km}IfX:co2EJc`I X+-+؊6} \Y@HrX ?ͽ$O}IDI<+WiFb49A7Sщ@rC/)P8ᩲR7!һK* t=;vԫ%|-₞wu+bXjS4!V&ǃ-ŀѝ~?M_QyN-;;$Ch \ug꬞}sH.WΓiSeډNR8 +-ft<[ႛz1U3%14@Yi}}k:[MM>3ϴ]ӶH> Q*Fa,f^d_hGGl,DtBT>2I1\ Sg\xE0|C2yPAh ~G!`o~>9jJ€EahtqkxS: 'TH)>}{7Y.'FgXjEk 9鸝2f4uV q^q@=ԂJȳ[U)!X>[SɣIЀ_@4v2L>LY:qelVζpgn1H%)U ~L*:V4t;7H닺Z[";o Tᅿ="ag|4!--?ifkgZن}j&k-3n| n7R[SXo]$b9DErDTouP)`*k]G(!P!]w3u3}m;HùZ]9th" 촞qf0כjZ) H7miPM1flLb]욻DE FK0V%*p 1e%ܴu_3T4ϚuBUH7<fAF6洘?ɺLw`n)qsߛvyCU Ǖ-l%qAs*g´yvnҚr]g(7QvC[$e@ŅI Y^A3aɛ-R[o%PXF8Y7C CG3[]avK5GϽ'x_a L<կnlɽ>2L@d4XtO/eIt7Ӆ"P͛ft-2?PRT"z^cO'oSŝ:|,h­A?Q9J-#1EC K<>6H  ]5O- L}?G*7iRM,sx𬇆[]"]Ɋ]Pxqˇ{Q-ŏ'O+|IVkUF7{ +ydim3z>Vt6 x~OkL&)zrܨ܈Njg=I_Fu9諾}i֙ w(4XJJJJN}u[E o*k;V=΀SZ̳ĖvZ3,p6!i OkH6brAqK+Š۪" ,w~xWn Ncs^;)+vI]T"%%XMd̗|mω>MtE+4q5TܾyXY(zluQprfop=7d<⻜CB\ ۯܤ4>MK*{7lqH6\7.`~-#.$^>E\tE7~%l)׸ZDũNn9hBTH}LnEX)*ALmX㩘3"!IN/34恅a5|Uy-Wm?/1J0x|qJF%bn MO_^R@u^26jgĦ}];%>g竧!Gc2ᅒ4H:uŠi|Wnh]Eݘi7bA 3R;jDlq;7iNVw4!2m*hx4IpJ6kvz^H %؃g8YH;9jX /~Vo>z(9sCGns@ʿb컳\!!#l۶v~Ѱ,>/s3& zܣ3=8s&FO%~u[ LT;|iϛ4oCK$i%-'WĞPty/ҧ+6QZ~+؛MWT5tfn  [쳆@d0Snvv.=|h9I_hl%6E˗F=r9BgCᑖ)1nyQ9 fMZ0zNI~7DR.4WXfw) |\J/+O+1%;9YAYHyd hz_?fhE E;8uFTp7=)K1G@\4#RuZg͕p[79z$7\iz׬<Dz1eUz'7q̓*Uz`rxMժڈ9qL8# ;cQ:rCMOecI sq"IĽvIHjb*S6S 勮;(z)Cw林%*+i0sWR!Z.'c|h[C$,2%(/:k1Yȿ}cH=w O y kSAg$@C)7jL`8Y B|p@*`dBANYFO/g'\HI{3fU\LnXߒ?"]hs݌V'VˀO(7]ʡX hZY qmc,f#BW{s>gv\kygeJ\q*6&kQJ ňkcgZIT ڞ߀[$ߦ#BZ= G 44IqV)7wG8wKV/^E#?:e+MEk>1Esi`ϪڬA5H#[4@c] k^cwy 7Ao˧D"z|V0ZI5#kpt|&5S 0a#|y@Od~j۳$:5+17'}PWQ8O"k}upvl#^VS} \]VXS3 |4ڱ~$*!rI(YLЛR<~FcN-xap%]gq9?v7>7wӝZ8 2^zzQxO3j5eꝮU%_XI-/QGD7YVWO"۲ty2.H[j,.CX ag+@.(szQL})'0 q IeΙ%<;Q-|U&|h{p<H ?q 8&\} MgOSr4(Y a=> LkigWeAjd?G5CqPvDžU# -Hܔ tݷ<[w'ZG:è纍0ˆ[=n|TS JaHd>r:S9̟_̔T "H=!+Yss`{)޷Gᘾ^*/fvtv^+@e2'}&ЈI0U1zy}֖@ʙ/bgXjZBxJ1Wѥq9O{할O'aBT\o&{87 U%/߼֊2W皰,iL.6x_踟f"M VhyI#ByxePLGf{ܚI (`_Z(q%|uYv5v4w]?Wk~?f-lt@xkc-.Ez|)iH1u&@4sRӀzүq;B63 u jL࿗p XGt"8|")|՘,d57ʇ,I*g50 4D|R*ɀ#3tZkˆ..*4ُC+!}SbP :{z1;(RJ@=!yK#%(B .^ 211O&vɌ`,|:+ߚc]}#SXhH'FaS_*z[dpwc?j@8dg)鮼Hq9&!fרTg=1]"1ۘ~Iq/$^%uF`Qa"&J.7qA\z;!q`iG0SzI_Vq붚{_m~QZ%{b.'IƉi1Uy6кy 8}㓷f9~T-\ xΆDL&}Dɧ4t4hoM3';Nc382%diBZ{ !":Lu  6~kRJa>έ3MY߲81DUQv0~8g廙ǒ/}i I%TZ+cץ]I i ([ ~rI W<Ryצ#҅_ R -Swe<ӻ$Bu¡6\\X7a$qg4>0m ˝h^y8S#:x\BcǴY"1;~wӲ ;yg QY>,^I0bQ7eh`b o" VZgZ=rG6F* QNxz z->ܲ2w3X@ -ڧk*u2S+;¢.|NE=BPX?>sKH's=T8Pg.k8 6t&)c&\{-l6%rPJUIJ8Ls;ӲtJ̵~F֕x$ZOǃ) YZxG.CG*`5pqG-@bņXEM$~k8j7<&15-CI"?by17#auPޱSZo.㍲Ӷ.˗ `Xf$cǸtBߎlXω 2. zQUXV*>6o?_Ա[l+/9+Q|?ֿ3Bu|RC痞(K:{)B2nyBgʍYECc ¤v>FpNQ{O%摀+^AۆzT4iOmb1 ;{& bm1ČFW#h8?2\~{?w 73W\.d|"@EBf|RoUNYס\)9' ue8VNWl5t-{א A|@ ²{3ya. f ;#q1~l9@Ct͐Q?9UD 9i78/p+9U4Bk6dV  Oteh1oy<f_OPfXp~)"!ojq;CZoF[kمzݙ9>[8lX(ק'[=Sgmdc`Kބ|CCl1NG_螟6!DTox 0s9R/$Wpo:V S>&:e}|v 7~YZ%7!mqƟQ M3L!Gp?Nj F=bra윎d (IJ>l41#dgJ\Xe 9sjůLG˸7"&=U1 L/; =]闍G%ߘmwlQv ئo 2V%Џ/NŐf_pUVP%?un ʨR<k3}3AZ MGrYwጟx;M}D!kdT\zoL1=ʼn>n}:ýi6Kl?mRK1C叹iAU[D5|B\Sjgᷘ1lb,y}4>{ɖ?,ydyߢVeF4B^qAִJ:qL,'սE X ;m-z;hNj4.//cgwMȉֈmEɡi[|$_ i`$Ұjyjn;K؊9\)0g>0 7$ڃRtlab<{2,F:Q=Iᵎ9 {/'kby$2L p N:cVkbnVG.ܢuFKi}@ԊHcY! rr|Hn-Yn5qn~͓#+tVu\cf&d+QQ oDE]NiEȍ{75P!OWSkp '#ە Q 6Y@lo_.S0]Bg%ux 5*s>pJ7{5R?Vuhxrx =.BA$!jYV߷c Py7qs):kQU|4?!%2 8iKh{o 0P^xdDűmnslU#6kηmO,RߕaYRӲ 1y{/nsq˔6kv?X\TϕUf~MB O2p-A@k*3MK{R7!)EjIrp6-o/"iQv>5#EpZRw1Y[z9Ԡ9[Ya@.ū| S$߂*lb#Z.rxῗYbXH"> ,V'#6S.( 3U}f B'w2?ǝUDo_PnK4o^y qc܆_ĖSl?+ZxvZa3rj)t~M XrLur o2U'/A[{0r;SI,Yu>|!Pڈ_37RF );E_tzh@];P߮(Rl*$T4M&kpǴ9iLsit+,e=Ķ8!pƴA[ ݾn S@SFX`ZEBnPNܨ+ M {籉U_O᥃+$rlU%&oi1Ul9 []^1@[fݓ AИ|.IkrD Id{"81cY˘3U9bp3 -6uD PlζLʹ,ѕo5` ZRTn!x? /Q$hoZ,yJz[T`<U Ieh7)診1%ؾ2s{+-(WfsXF ᢂ*$ /lwڼ gֳ0[6ؗ /R95})awCM uBN_^uʡ4F:c u4 ~9*%bsy9U,eLxMqhT* !݂]E$#Ixqzz,GhMn[&?s8i[iЖv6-,iQz.a8=&HB֓Oc 7J?DְfM=.4iЧH1 J58qbaz|p{p'K[mazqT(u}gjɚG2[@A>sUh3p>WSF{rW3vD ѡ>3X~peoir5 Rv0>琱6lȠϑMݢ8\l@~Jb>P4eaZ*1ʯBI4pMOH˦S6N=\{?lAͯ6^k3TŵvQLse{@챬I5*5!drF!-]ښ| ij.يr0&,ŷ!@cϛoʕ?&.",2 Pb>€ZMtBkvn !XP5i(ˊYUSȽoK / )q8V>#*TDY4}\l7j5i \*,v3xs/uٓXmX[׍R n[@+A,eK6W[eL[y!& L3ƣH[&`]7/\H0@ľ/wą/y#x@d;FPYΥEߢ^'xSV6it^x%̴H}k zċaWM ;gY:\ʼ5d9 +OU+?)--7#o"v4*|]{vFb/l8]iy2F.dUحp +\/TV6]@ggLeiܵS† T {Kno0t :pN:^hSIJݾ 2Փ<'4u΋B ƐaIUpZ" W-Q49Z@2̫j7īK SdH@Nx6E "JYaP8ۈy_־\u5WfOiKTP: c4dcC)' %=aHi_ ['Ui[HQƉ/o$׾qЁI!GΕg"B<׭<@g䮜qNmq@aMQƭQޔ}sbTdzr=Vvþ{V}Rʈܶ]'ߥ>lXcJa!"R]:inw^=*VaE샊BR9ZfE:͎Zmv^Ԁ]"xhXjy&8w'DwבOIKٝctǵdeA&cPu-Yu3e#wr4 mbRKZ^1.@i)  p1iej7Wh;{K:o765rCM}.ꉍ% ͘ĀRr!Y8Z/trf.D_R]8!o_BM6eމk"筋f&טL陋eX0g5SNfkRGx`=O!E*]YH4-{MPKePΉ%z?N <'Cid[AE,Abر~5gmS&puva+J6>#5sS[#4KwJu}w''+jɶ/G x% RQ}&Ī1]#7$qj 6,:mLxjeRH@sr>Hxi*=mkFٚu,NAeD;+EQɦ@\;"2mq͢Z@%%\! ݶsN9OW*yNq2N*'>  I. @ElVڟ&qw=?F;I2[vɦz[ݞz_܇P/`Ўl{f\lgU ^O>1Ye1μ'ijma_&7Ģ]|Gz.Ήap̆4zt6.Uϩ[^ߥf?5sO{LQ) 4^s+'K`M$AhOU1 aqjkǃԏy9aHQQque3[;?Mk Gp%ޢ }.)j0Cq`=K EཱུGlVp;a펂DM8:7Ν. ï~# Γ 6bq4q?:Аj[AB|ԪW} !,iϳy z2,RP*V$>,NUOd{>qޟG\a+$^W,+xx :"BY!OT oeW2?4e訬~d|7XBĐe- v;8JtzT,0=+}PElF|}zf|r~O#' ->ݛCA YzGSEBp~i:sڃO[gM@@J^ϓ8@{T {1.?el[b.+s1B^ xxiL~7V;ݪZDK&OL:8u]{?b~?UVvc9`,-&Sq!IDwlɶN=-;v:."wP1ڽXKf\w@߿6*SG:>0_kGjɦ9aiĕZL'pL삽ϩdKouJz;gr:ɝԖx㸅sx/6[TwF+wqnGo13z,꽊2^7O׿<,6O6連 2JOtVRXZB!AYEGm}yFŕQzg}{lp#MzlkVb̀#.&1/KKhHenN6ʭ4Tەm+{!W+p>e&˿:C41L0bgyM9I:;n'|4d?^A`UXW7$Dat;=I69J",Olkfiz.g(?p\DS(7(̫tF1*s,s[UdO>ၧ߲ݥTQqQۥQvզS1t@O)kOלyaZ%8/s2nstr@*>[j0b> @J$rf]+H)JI.ۍ6R_rMY.8]"̐#֘I_~Hr2`t"5,sgd, &!e'YTDl "5՞13JJα0iݹ>{":_{!n* Ͷ(A%Ї@ lW(6ꋐxMc5'EJ:DEkĻaj=lC\*ӊy:Z0-o.Tlֆ%w@ԾCQQB?tk)c {lwb 'âLRdH!yh[XZъMAnXe:.VE'xGU?K\:c:^tCFS`Λ̟H+KM\^ƙ?kJW9DdN@B17xx]'{CK7ߢ`s~7}z^קPIŢpVeƞ~7a N-}3Z+R[WiQЖ+=VNDv&+"YkxQ?7ˎ ?Oz.[{+?COxwS>>jO=˂gSw51ņNsq>:ϗw>YNlxA2yDO;v gxNyù\AEҥ=Ypkȗ8XVl|t dUg ByT5eY"Yuk-UsD5I,-J LtOI P)]8&JФ `9^yv9Ι  ݻWc+UQyh^,!_N0Q?4'hi2Kc~b#HsN>_wl("|{ު+@>iV_wosNlpA ^5~iaӪ8}-!%bϣJr܁͍S'PЭ)GnO- ~@ܯ*N8t(Iq.t#@:txd>W< q<T#\wk^í EN!!Hq"MKJ1 G @nDhH=A()\;YC:nG`ɡ[݀㍤IO_JZOa̮Ѳv^"e qbndq}> flӬRTo)y.$%'g@R^ LKIj簥( UsAK-I& R|%Nu&byF<ReBx". [b);?p$w݅M#ئr/2lɮ5m;jc}3"'jqVhE C|lrY1kz$\Uty o#r>bāPՋΕ-tR/w7uvwGeRC߆ڀGOA_Z rAz.Ś:遚]ȹ>XY}EHGt+ۢtb(- n Hn{kQZ4T;;/;ylZEE2љC~^tju+4S|߰kĂzg6Iy`ծk_Mr/JG3>VN/2 mD/QYcJ_噞Sk;seun鱡p[܂:bرsǾԳ7sښv`෱+4wSv h,Ƅ|Sձ_&w~76o`ŎY6ylju\7 D0@vfW&u ^sMsB;]q2Ld6K]MOeIm@EttR^#UVcDK7!kK\ǸΦe5g>woMJoG;әHGX7qJu˫G|"p$4z~Yg~&v}veV2~R[ȸK$<':79C5cci,wEL}tR}nJ3Ҹȳ}7\o!K3]c?a0l!ԩ]v̒TNc1T4@!uOx_Yz{4GLT D9Ffe6k9v9S'9Sj\6<D[9K oUG R$$Y2v0H}oR-I T )'{lGYAMM$k 9qО[Yk".y4iIoxl.rf]WEg)t zi.]-^U޿rET[=Q|7m# otee;jYeJqѻ<5|0ưO_qw=ro?$]&XU!~Do]W3ۢ*h1 !ge-͍f5<q9%2@*_jvʵ~=x $YX8?VLhɻذRBX_k{r2;Ȩn?G;3"Sd7XRuVB^g24VFpҀw{-.Pw_^sTyht9!d ιχx5y 42;VWV^͖\VI6Mg0fǤwKRgx AYgZscdu2+ipkl:K/60yz'7e@-a%>U'VQtE|7$<ܻtw4N^c}=00MѦ/Giu<Ė$juz۷Һ}u*d:n be xxoXI4n3*p~sԞf_Y{>MU $m M ]YWk#nJw ˩7GMٖMID[5g"NMY@S`EPY6d`6LX}%tVTˀq_YS1.y66fs{, s4ҿܒ$h1o$[g18c#'WcئT- v%D 1lk8 V`>r+}~>ه2ciY|R_T;2|=|X&]6U=*\Z^^ܚ}_z333+m­Z2`z2dM]nV^ 5o\W!IfjC׻6^V>!#(7Va/KͽMZBsCGŖjo$_<is.ͅ?%|91eGK ^`XۄE}ej^)=zӔ- tt=sJ=(`\(@I_S+ Tg8+>eg?j=@q(rSkc=FW$A)ڥN"$+Zxqqw$74ۇ =Fs-HPҾ]kma 0 uSaRQf$?^&X@C# tΆ_tȃV^?0|uM!$) iU>.^6 +#Z(fӀTwo߇m~K.0̓3k5ya3|pI7\*GȞ-(u$mf]ckۼJXlCq,cu Y]S?u\FHCh=vy/%xb=,q43DrRVDU-ZL_0my7OmQrA4,R|R4LmgvF_\~C% wL6 [Uj>8YB:BK9_V9L *FE[RsvxSIlZq*7R' ͝/Fۈyoǩ4:_Mש(FQ5,hʂ|fNC7L0Eo9=->SRɬo *IU(`ì8 %}aUG!Ad>dAŃ/q͏F$1%l5M o[pe!e0qGyx.X`d- HٕA_lKKIS 0ؗr a="뎮u0R٢ROK6Yȫ+d+y|Xp@ Vù{XǪk6zjR8PLJ }p+ F> i|Խ5ǍۃE6OF8|&`Y~֨YN-Qྋ[\ qA$e֡$-Ug|ȁ7 շ~F^~qakN5n~wp~fj4iIm{âz@x뻒O| of^3*9ʞJ\J0QԖ @8>Bir+AFcF%Idg~o@cEs. 7UD./|9Ah3J5ܙaQprc;:?`p&Q\_K%{`kÎf"lf V>R=oְ9s66^ĩ?YF9S%VBB_J_M?2w/aܖ.u2ieIŀUvصr٦}rF=:F $q*X|8Rui aosAWQޔ o ';!~ F"VGiض=֟1SGWOT&˧;(hVv!5եTpawp;e{;|OA `ո[L߇U?KfrT5LG]sUm;ԡe$ ^,X`7@h$^AOnɳKgM=*,`FO" A fTHb -jnugDo"`D >LsjWUc >;xߊO1 o靿b1%W#̻)va'woGTK{W3ͺ"yXĄc gYt܍6:slLGt1IӷT*nFۨ1׺)BG3H[* vQH pٷ59_71@?Ϋ]Hr]lG2#X?+%cIAzh $aWKdmmα!{VㄤP}*ģ&7O!-dVx K+wtаs@<6#gs#RjNjA 3j[-H8\_昽.W*I~j'NQbNJB]j3Tbħs k!@ՌI{Dhs.Hʷ5fB&H"`@!(:90R0^48Ῑ_79r d\= lgUnp/ ԧwqJ{|W>4M}Ye*bbt2L>4uOtxJπc˹pnNq*ѮώF]Xӭr!c[6I|ċ@h},VgY~ؔ $3?/ENV9 ; [ mxpaEx q`.lk udKgXCrh(4#@6XywOr]mi(L€ vvuL |Px~"a.%)[Ƶ)ƸPſ&}o*F}AH UerݺذS5lTG`a.fqz$ V&~r]6dẽ>u+2? .yĐAv9IXf̝R[ -^O#'d9fE{¢0ۋi lH1Vk 7pD6wfTFQO"p m#[8_31VϟY,UH̀WZmr"EoOR*Hj[ &KԼTkI8;D~*|b=Q!725R,ux08yfc}_-LyL5^&)0x%ɑAK}p|7G%Y 낾L9Smpqm]uq!I[^;_V*H3*ʠfoV6U$f2> ⽕O a^en}*F}V*8Gp|بe4ƃEr5:t&@%%B-iϼ"i#9A[w @ 3k˸\Z1Ijeȉɜ3۬W 1(R, )h倬RLz$ I`~\+)v^T)S/D s`UB5jWuPOcGl Wgcŏ|]&U,ӪҴz# kj'"&p+7wv_I @J$X^vui01O 魲2?୦)9CW16Uahlο]8Xs2uXEٯ$SXߜ[̇g_G!l+A ȗ9|ȎLg{[66;d D.Jg$|q !@EU;xp#x͉uãmg.h> dD_+'j`M<q0R6)T;كB-]b/iV\1 U–{׺~tGd~80))ݹHMή 5f4W ̤_ʼnoumHéhʵXefz&2 a">W~=qY4:ls"PuHcjw(&3 ֐Jgk珄xJPbC D k;jXx~XN*_0ON $ `DH 32Wˠ LbBo1<^ꗨ)-VQV>U;Ut$[u[t2Y6}(c4N i"N26npg姩82Aja>Ĕ2u(c0MwjlB\JP,eq3MCGoDUŏxa5~bMzsrǞ1%궁 K! ڮ6AF3h]f~p>H\JI ::= ^ɔ(Đ惇hʿ뽕oD&*#C{(H%cGRInF%}H{M:wM3KMp.6gPz{["s?3beX@eJcݚ{}r=RЛK;) IXA:@z;:f(5&T:0bBd6ҭNT,9&z&[ZV{*,O^^5)" ' чb9CKi{{R]T3.SԤ5Z#oiP?*"kh̽ľFQ@XE wgz`yD>#L P LJ^^@TDGj]On>O݅҄Ow% @F q|]#-ԑi,=["=9pPSW%QT\~-1hqqiX5E _*iWR}BSg|N]#u5hΚ̘6 y)^bt%o5Dc(!۞IЗ7 Zb^Ug@ P0Q"¤JM!ͨ(-ڳd2{8[cknt[$I^K2bZd`_/(oݴQ)Po7"^02Լ"Q5@XHb {Yf3z`Z@Zݧ%)aDUtL tO=2OW-W(}Ʒsest/%y`0CPL52p vxqpC/_sA-<H1X:_*Ў[î bN~.)F% =dkBbXkȳwTYsXfE^;sevHH_/y阍,mO8qs͂u3鵜#p.ƄzF# \`WND8ᩣϿR-W :+u',1W21StP}(/q%E]ӓH{u|.@XeXfpƾL \J|Hx5i%֞(v0#)u`?ևT:M=G6buIBz]!aa޳! 6+/-+eR`LN*f mN򍖶8M,IڛkȀ"ݔ= Z#8g#)V zswX@LJYU>aYJaX:C)lޟ%NVH$]m@J EYx ,fڪ^ rI^@<RRY91?#ju"N##fOdt}($tCL$̃":LIGs=N_z!.-aSm}Iwt7_ k (w׼`}d!UzG,*sB-s$h$:0bb1>EOݬ'v%m^k i;] BI Z<{n\93~~ʅP%뇕جJ[&vq Nh۹i^Y(P޹UBG xФo ?*!e9 EAe][n}WՔ ɢ,pB G`xܯ,AK~{QOU_kV۲LZs.[s/T\qp*tZcꯝtB=ZjE@>#s]Lkڄ/%?͇ ^3rz-A)vLX}9ZuO'\TP ʶjN#Zl2DyiW>)詯K&|ɮq}jCK!y0HĿOQ(7X~w{=8<ɭ*Rw@Ee*@MiZ F]0J(`ϥ 雪'٢r$(l2 U"MКk[DiZo9Z!I+]U+Z"?u&1*J0 02j]`qC[Z-iY?*\: dn)q6P mI :`rM^36n&PIvw'6LֺR@iUO +mETw C4 g\l -Iyc8rgOg4ԨT7W1 N҅_*Pe\ b[i}1$m[4NW-'EԀp9$-(- `'<$DM%x?j웦}jPG&x-!jH|ݚ#8'PΉ‹{%tjz4nɃsOIm G5t<ӟ{`tmEm 렵8tvlb'_\xj RV66KlH@2a_l[W Wf5) UxyvW떋bPy Q[t\J gb4D/yT`RZ\I y1)[0QNqR0VF1ΛӃ$B ݝF ҕb%(01FvM^9IߣuJ.!/*ޜpA_7Ӕ3jN5*5@>qlS>~)),,9ۤc5M]${P{^AFk>ө-3 o)|1sbչೖGm4dgFUgLjAdY+(TFS/({JpԜ$UL(OsXEs_0[MikKo3I aoazЏ2MÎhnKqv*%MFJ+n *oϿa괺Ok%Fb:xPi`|ՖGkDers~vϫ`5vֆSUA53MJo!IsĹ|qc]y*~鳮tl,p@2uTR}'_[WWS\eLU rO$ULpeT,e>+lk_~)-v|2)PkWk͗`X|- ;$T\+~o _"AL0?^,R;fŻêަ$\ǟ #\g `7MOq]R6 HBD]ɯvQW!iGųA$ 1@{P)~8̑vx W>b\+ftڙ'Khf]U"Re溺Erh_P_ x'/+]hQt/d`{<&3@pT2Ǽ7T~^n-/KX$'0HUWDqJ/ B;1l^Q2oς1jE4{$s5e7f9&xEq vLwKή*5:'/`!Bq@1;O!돐ڜ?+1xbv`[U;=`}ɶNP/qR ,RNpwI#nl?ZbTIJTݾ N缀w[%nX} Sv% 1'+gA}92]dNu$B[5= pp,WjTI*1U }٩soaT +yNJkxۃ `$ؾCVX0_Mp!K{ΥĖ Y8v5/|* )1ɐyK=#&*/տ,3>q-w,+g*ݼȓҹ{C$TXԛ_}KcL~vˁΧ_ߤp@ 8z̕QOdTK9g/gFhR\y"_?"`ଈCnR,UOݿ蔾P_k_F# ˣYϐ ήM!1 8"h]ȠoDΐ]%_ުl |e/LW6Xɍ}ZWͬ$H n~| W??cW}*zJzYW/2=3uW+-77MOYIw][^F݉Egu #͉SZ=S8=Y) Un; GY<;xrALpI`Ч:u}Jo0ߗoկ\ &[A\'/+wߓ*eV&HaɎ3|YyXsϹETZ_2b5%h I>ejD0QI0@JS" ILWy?A A|ֻ8vt8ۧ WF\>1@E75ߢVc:칃L2YAv(e?e*kBI07V69hJ#}"S#Oqөp1)#8bꤵ֑Q#%./wG8hFi&I-udw:d3?7BypbomV*GNFUxJض:;0S]l@nhNZ k1f#&Ưu|%C*;CZ^쑰i궈fh=,D@[K2"^^*ߊ類Ib!jE7H"ZUTpu4 rk@vB^h W Iߣġ%vU:,~B kІ_1~AaſI8LϘBmI3ŝpIP (%AT -ۘ>5cSbU滢[#~pPU+hZ;1aD#ǟԞi{|9vvC0դc{Y^xm){̿XI9)!c 9=ArQux5{Hrg;ۢ?$̗CUgc_ tIAX:U2eZj<&yI#-{< #foNnu)q ZuF SwNQ +u޸󑑙d0YMVGO=Y6x.&Nl/|z&ٲUrH$tp28ZF^Cq/BsAMSdEJ/I$%d:.- QYfLQ wo W ^0Wa*_b#U:{ø_Lش`+]}&oW"[[l. c!lJ *2;Ew+xq.<2^0뵴Dfaޗ̘jl-GiI]<қE-Uk z0)Z :|\3fK7 :u^y rwCNBYR7xSR_hT׻ I(k{ ĝc8-ﳡk> L~JD<'qd9l`LF~`̿q-ʯdk~9!\0 2>vհ63iY!Q'hl( ö ʾhn 6@oN*_0 9/[.~ myuB .k:j?k ghI*}niuUk+ZtE n%8x=\$.*6Q+vHXPkҿԷ*=5# X .O+,@2an{`LANG ,8ꄰij ^|aqPR%JXo)MQ?p|}_B |F ^[#zwmqE̖f sMwJ@OIMr^r:AG#]0'_EƮ02xRױrO]Ed R// j4!rf![R7Lժh'tK !Fr/*Cwt WrW*#W:uBsMN&2#Г)tү.'sSO24:WI_;y wXATuys`-,7ӕXUׁ\;\ VQH^I͏3chu13zduJ`5G7/vej7d~g$n>I4d99Rw ux !,3G}6]P,<^=?NulcE{Ϲiji=%c FHuĻ}+47 7~WBߑ, :rQ4pG/APRN(g33D bt=ÊokDxJU6>5HMPX3'FC]03]eO!37Sl$}o]řQ;I̝Lf x$?HAyAy c#ɜCXuG?xrH 듵SlC֟|(#jCݘ\s{/}3[Cx7X!/o*#e2* 7ߝ0,1&ڭ" 1 )7PxYEs[ddrsa aɃjO9kd񁓵irIֈyZ(Kl/zYPа^`a5G~K#Jg,'`8iLlzTSSͲ1mCte3XJ~sd ǔsjmMdX5`¥~&aNdwee!DXGX#WP [P~ZtvSeA j[y_DÊ3Ҧ. 6ޟ!j b0Gi=^%PGbx6KAi4 vI(FE}kދ]ZU>P{s~OpV`cHd1"=i0g7sOZe5B̾. `qQk^g,quZaW)^hzzCH|k!tO(p 8jNrt.ʼ|6Njqyp?e4v;3^ .sq+@qp~H.5 )U&OccCҐcG-F2-O"{0FGUqzOb+Zvjد'kJT<gO>Sۇ _$ϏXe\ײ&& f&AYHC>yϠ=֙WnZtHd _/V4x}+)Ëh:9;$.DfJgS(pwܯL:"YKt?~?F_*< G. DY{NHK}_: hW\q!W)ՍY0Bd탄у5;p`Q|*m_LO"~GBnZ~Jb&N/:C{v;թ7sIQEaNni7[GoX_lG 5uz#!hn( ΜIJǿi ;UT)$ QpL$Ըl#hL,"Q!LÚ*o>Oկcbt]&g}ke넆<Ηpq <'JCWD tӊd I}1f"DnSBsA~-o=*rq=fƿKϠP ##"KM;w[gY=-/QOn/Q{_ "ަF6h"^"ó卐`q-6{г&@ʏQ%,?K1NVPUq1cD3a/i Z-"_Uڑ 9]Z@!.$s_d+_v@DvG?_5rxzqf[0z#(Wn9K (p*&I1eZ<=MzC4hI& C0oϰCUݘ? ~Da l9u%bTY&@xP? C֌+g_tpG^Po~brE A_O`V+d֒1uϪɌ7ʌ{Ecu H*ؽFz:%}NDfV]bi0٤*j;nhmT(]dVSTP>ѣorom_qK'eyI0GѰ8Af$z|yDt6?hg_ˬ:".kI#Yȼk(D!s֥?)ޏ*[CU)1ᔱRo;ᘞ!{6]8 %j6D1'"ɥ #ȁ"|pGI7sū*X7S, (f1K3eIQ%O?fJ8AuE=S:1ج퍞Y&%y_-'999{x$4ǛT3cfKØ6Mu6Zm2r2cG;$'pg"[ ֓ݸbUt;vXl,Tx-T1 7Tu2vf@W$xy2$ "nPIaxF&3&7bԣy~-\TG,Q0p֛fA, $m8XRb&<,aNx-(&}k1+}zp8Udhu4mq7`ъ+ڈPcCRB  1(lHA|qTμ!%JPb׹ɩ CU,Yjy]oհEX/|U\/ kj#[ۭ6f&*v @o\G* w4&vl4vrz"Dgd LcInn7wɀ %`@座V NG2*2ˢ8T[=AE-,\U泶p " p5υb56/]*. ҡt#!HwwwwI#ݝ%߹?{>{ϬYk>^m2\|b s*2@i!zԭ4q:.] E̕Zint[d05Q1c^@s{gDkP1 Mx a̼r[ʒ-hܞ|*%pyWMIZJ}}_߷lxL(]u@$xӔGOWt"|ְ䓸aYYdOXW0>=KћT<k}c`K `dhy!ja`e)Gm}FW!_NpP }obeK~BSH<"YOX+`0ʣLՇ`={ N97b uyǗǗg< {T{:k·ewYN݈5 |LK>§zeAANPя;%rnF$+AmXχGOb^1M)j\+ɝRb+m9sDK%gT9&߾f>[( Q@utYHF{gbpJ!gC;'%~WMP8sdwoJ}mk=t)Wu <v$ݍ0<ӊ(vץ2VZ%s^7azza1ʖ9mo:z$̺k=#^>W81vu|^E> Zywiݞ=Z0~ ][ý Ae A:L! 3G 3`]O2TSٻmTv~wHZ><| C 3$qVqZdOKܻ^Pݛ] e>l%- -%߈ ,< 'h;'2j}? *k^MDO*Ӳx-HDXy9ByeL#ITSp@'zs*Οݛe;;zzaVfuAYvSPnGzw9e9`P&z^g)8 |g{diW89F[bCSB@pq=(ul^zř[/ GFζ箟L/k|wvFևb^bz~w{qӇ2%v@o6|SGGS54ozu+IB!E#_RۢL}&,};l" n4G.[v_#zM޶5^fpZ_PdpD+G3Ϙֵmz5uHsI;Ef+w!םӾIш-pIX_dJĀmʵ. YJ8!W8ZIopHz^VvzI^8tVNv@?֢8\ŜQ=wD^Մ3AKa`^N_OϿy8ShrF+ %}n|dRҭŶi)DpZ\#('k!" F6щ0L FW5غ#-[s|g?HGaG}xy͑h3#SiMB֫9R<ݔ8xrBty⚄QٻPRL3 ^ uW(Ip4'K"ʕoKW O [e)yl ȥp>-#{&rZ$|>#pO'T5t })iBXdZ+ {Lo(<(A- P js汶/Pȁyr.yA2rU̾}V|5u{Ƨ#Yvyca;:mSabn! :]/[@oYb4Zltm˳ey ]" ͡ڏ6_b9X)K_yZP%J夽+ۻ/EWޱpGږ.^=&Xx(]^M[y9URs(Ri*=:bACP߯M&HO !kmS@_/uǍ!}) lKZ9[2+q>akX0n'oYrT1`~dpM-O>?!ЖV%ci=W QZ.d~K??λ*uOGAܐ>y@3_ڣaW7ݵ.WЄyIgrƒM^~SP??,\~)0(Q=~ϗ"%GΓg'=}^yE^gG 7-i< w <PSp>& Z0z!L !=Tn;I c1tn+.d]]]w$ǡxk޸yf()z?,t-G(F2gRruEZwx \W\BtwlYP,3Z6FH}`6kA%VM9g]2[E jN= rDT)\P3?k#}moa&^-Q|7_S8&΃M9I{n)os$p%+@XV>OǺc }Al&1$)cc]_/sΈ$j89Lao*xn3 9ڱཧ_xh1+K͢ħ]]#P8b@e ʇlȲC=Ix~ԤE:'@#>q%*2?h<UɡϾɮ9ǵ~ifXҽ!ϴzɻ#=:!*av}i#RYpt{T3{ZgY'Yfxa" uz{KuT@,Z~&ub ^E)+7'lPfiYsy7u?KqV~{ЦҤz0؛>r1GZoW9|.vNopYSggOCUѶv l}p;BQj$[n "exq0Kqh}r.w3ŸXE3_'KǺȽ_u+هɠuAku5[~RS{z{>MUbSbtoDbݚG6}qx}w󼙬2_FvTȵx\ߪ(S0Ue#HcOs4b@F1RdcH UG"eGA⟣vG2صj>lhѧ@GFXZ4WOm|Z3h+gQ͹*2z~׈ڦi$X9ASx9Nܔ˥N \4b1w C}fS9Kx*ՋM?-|5IX&ݞޢԮ]rY~  "TXvx)" "-/O" ."㓳_GdkX9*_{v U\Y PhzĮOmt w;;&Lr#CJ}S- K_Q]%OU.\ D>s/wk`e񢭭th^AЫ@c){4II-ɯ;̚[ vYV9(^*ϧ㈏/ya+ b\PЮbGHt^ze}G"!&D"M<Gngu*mTTS>lcTε{H>`N_2ͮ=Qޱ,ή=UuǢ׌:P Hb^G4.WCEJNb_ruS":M; 6 N#ṡ!H?8GW+m3ZCс4d:4a^f†QZYo'h-j ~꠽Q$y;x1+s9Oj*@jyӛJͽlXiR rY#urCK.Wiҝ\LfbQ/wE],peKmtvҧ+`Iu *];t_j_7Gڵ.9K׈F %c`.3"ѼV.zvTa}DTp5~rjQįZ؄Jr%9sNrtvHvuQWoEcLsօC)]ndF).ܥL䞧xƲ@W<~U$n a^Yg%{ mOv>qڮpˣ=e 6漻NJqc e1K!u!TȠvGbp;0zP !5e+ ",pNYBP 5"aKr_? CwLS{QmOadfF5N]*[xqi8,]f$$5-AX4n[Γi3\bo^S1fvܔ5_U3 NO:X^|bнF %$Udg1:Ǯ[{0]j=^\B! [$"B,KaGKK?Xg6Gi<f/ #c~*K5yQPs~'cmǐC:}E+j_E~%}#nd?+B-`Y9]/^}t4? ډS&Xxf{?[ВvFCegN8r8!ZۇܙvRZ_FLj?(eۨv7aX_ĎYBڀO*wDL&Uv& 8?t}ImvtIQVp%4Ovymb^1bE(b'|z'cjv5\GLJ4y+cȝMj\ k<[$ , xmN!U_:▜ovﯟ&!Zܝg˛LC\MzӀ|& +K0`iW8 D,"p4C Nz\~Z?pu.?D1YTsd>VF)#)?WC6'-352<hmé6βH|:bueDpv?s/1~"7 6WX%ԧv%x`^am;yBiV}O8\@a 9Vx d'e0x*ȅ]DՊvx?ʲv8 ;T3~@ls|ڡE p}0{;SIq`gmʣ_jV-a+7!FqgB4/oɺ TZo9Ɩx}|Z&px恥HGw=i11pse%GQ+~ ^hJx`6}yܹ#MI# $MW }$ԥWG8=V)l:bpZ])'ֲPU] oa3s >r\:ԑ; # 8ƥomGw}MxYgF{(wG7Sx}8n*U9'Aag^\㷴Xe};t,_M&B)O]J(A{1ng'Fao}Nj+ AMqbXqV:kOvotU_y;g2a7%n yNOxpY3bߘ]/9|4%#NWk2|˾IvR}3 Hk|V݈J4"Lhx,78'X]1SODHDV9vb'Qp"?kq_ufyQD>!o*‘a+}T(6o96%@e'T)n7C'.{\c%ra5nM.Dݫߩj7xEoq}O4)nUR\=&w[.o5 Up_rZ;b$75^Ιkypޔnwa@x_٫pR?yT]NIOfmF's)'m_B `ەu@he41&]M E!ܯVةAvQtS^zZpj}>s'g1K@hc_:--jE i.eޅsu3//Np(^+"~!;|$ǬwƳ@Ud]Nc^TV2 l$drBjO>1SZ9n/Bꅮu(q/7g眚>Rw&L <`ǂZ̽r#R o> ` 8yl{Z/I޸B|*6ϼ~v$z(Y7AA4j["kLXv b%%b23}6?ߴٺޢ~"r{m?Atgnwylg Z7V&J;Hz¦}Kz6ېf xML[BL'XM# e2=Z7!C!8"9ё`s_=.yfyV>znAr$ql(nmHWgŝ T+1O8I0mf>exҋ6w@?nWK&vrhMQWT9 C;7)%g֕%!t.3@d~]> bX (hPPु׬n E;`w\ .vHu~'2WZRg,c%nJzxH̶͠27W/Z ;ደuqr^9̡&SYN`tlc Q9i6Tu-t fvWʽƮZ>>M$?/ӷeã^kE8u?H~*BP$eTۥk_KPݽ]HwPH oj=~S\ Teݽ;q9-%ʯXn.J"K$K tW섻$8). dLI*~ON渱)Z:7Q1FjUqߧ"rT\dIR6R7 ݖ'S)ycQFa{`8T? C-F)yLUV@J  u&dOxanM~}.?čS|du7;G-'˼&)X١'iThHxl2xJM[pH`/_7pi1ZG9oiA)){P)[pUK2djhYP0f&lU[A c&bd$r{YGoُᐠ4| (MlKwB)"_4s;rS]C&Px kR.58gRf6RF99xϤ!Ij Dc!l(UM]˙j{Xhq!E8K֋MڒH'צޥ]Vc_.Gr;|R+K?o6~IJi`и%$c; ocziQ@uJ ShԺR%T?$zF? ){+EL!UT1߂M]^\IEѲ-z<nLE)F}'\ΞE(021Z .:Qf~'GK#adGARu& Ef.N#0!lpH,ޗˠ ΃O5A ֑t J  yHv;ٳƏeqLe  `jԔ쫻o`f=ȅEY2A_1+&[VjbSF#9d:3RuYc 380E]aM#&5kjH\2$X#k;\w s'U \~ĸϺO*,vf8*Y$c"n{7y죦FO%:S +|w< ߑM9~-#,ʊۡۗhsUGz1V}to{{kÄOVܸu2_{ 9p^fZN^v8Ar"]mL M1.Mݩ8eqRRy19 t`쌬Vd-\I8VUxK,#v qIv-}ys 6ߓ0Y3hkED!iV?86fs0F%G,#pl9%&Y庵OLI9y̟eq#!1Pr3ZK<}'SiG_=iECT'e"7B)A'ny77ё@. S!{^Gcd'0cm*?Ćf/{Dvhg1Ui}xtR}BXy)xˣjm )ʨHlp?oI+gJ-K^z/L p0Қu*;ÏZxNO8'S+A%U\0#a V|^ο~3a4j,0ra":mU[U𶽳Ub`b,A2y_) —<7<2no-DZ &~v D!;/{䧯+dEVpS}>Ԧ~-A)E߭YFr|. ѹ|4>a:h*˨c2h q# HnDG c4p쐖SWm4Х VG ҫ o.&~ \E\'Wȫz7keC{Bkڅw煼ѰmaGrgㅼa"|5l7Cܓnσ YU?smE-A)߬% EIZL*uqE@/ֈL9L J&W}bBτ@qqиpҡg; gJUo؃w:[>ѼZo?AsG hqO@$Y1}5.5 y(8PxMgAS7!J^ɡe0G5ʤS\>H9BkN!Nh\Si\\[=UG7_`$hx݆\XcٰKAWK!BcxJ!w6y,(Z_bJ:LftnHNhE}Tb^ޢ!w'?mL0thIImhI>+cTd7s8# ZzLP#"D9I#ºUZ'?PyJW"{Fin!zxzwx#Z]hwʈ/Di/*=pNB`٘'N`4͓?hG9/@/'jD#ϱbq˻YD$E`p[eͮ>OʾB ME18I8FM^Wv[,}0&l'ݷpk?[D֛\e`oTuޓ^|6{xtk>ٌDsNII]ʴGܻ@xPo~oM\ǜ ?C>S]>j |`tYn1-x N< ta**7Zͮ^챚r7M`$>ǵՖ[AV4S}x&O VWduո2zm c[)U_\}ޫ3vbIs|lfޝAM'g N>9"*$x c?,hg1ɗJ3 *X,!0P":P`=*ͤo/~4A5#–gџ08pŷɱj|"&j ]Sk>Uduק ޭ89ZcN {JBSG34)ݟtwR=g\p^{5AC x|ۻ/K’˵n6BCӽa۹7XU< "\ JSQuupMr=n**0dO7bs5]ؗbBi4AB#,[5%o45tUT&T5vfi44ά QPNytEKRR4Uab)-5ބU:A]Q %IX1cWRiTqa8o ??)XlV8zxXn%aT#q:pv=|:cՔ0b uaat%x=j ̜Gc60aYo,r:2Pbp$a`O 9fA5(8`*P!ZTE/tNjrwYPnGP٣E,rtK|U5 2J.E;O6{p2n;:d5{nIs)댳 ,a,J3-ۯbE oŜC34DT>Kcr̃b6;U7(p;W[^_ZX#&AbW~>`Ւ)X8M Ccx]ew1tpIޡ=?̼Yfx% )9 ;|wťщ,+(` }x9GII?d5!u2! QG6nԥYϮ[s(wwŏݿoUV$ܾ*Z̞c*73J7sW4XkxW$UBU1;P71݊M==IyP` Y=@:8(|%u>Ihu@sjEgzɒmX ܿGSvQf˂RN*sGG}= 1gstՖ(Ӛ-/?V9`yI+QxM󣪈5a$&WԚtnpvuOZ,jiyپ Xcg8ؔǛoT33X؎% U!e8 {.1Dgl60o}DCP rȘzW 8k2psڥg# BPzisquL3&pafWMg0Л«.E.yV{A&aek(=xLr:vNM'w $jqZT)5*3[GuߞiT RN|1Rca/Cb=k促oA.uYQjMu4ִO:0#ؖ2!mQMcˎc3K> v!v*{X[*K c Y7haK֔÷~4=\Rm̙v|C+.!y/ڱJ}-*x|2wq*]S!a6ҟ&V]Q]6{wmK]#,&m7 6i 6aJrA}PKyYE ژN:~tzX'_J %۴6zzfl2@ Ö0 ߅yhȵYtk*݉v. YSǘ!Ox1Ϣv*' 4$8v k2VAS,^"UmG 'n62CG(D(b4WsiV'1! Q`I` VO qz/Gn4.R;$rȻO^(]yx=BukS[G[bSk5*CIU>X׎\Όcw_fxwY} yy €cL6qe1?>gc1E$;#'MXלB'-Nfv1tf' OHNѽٿPT4|Ru#CMUd(q#є̰Zw%p;k-~xEqu/?o(];Arw/M7 G(EܳMj# NϠᒊyM9۳]֎1q|B,Hm{MsEۍƚH^<ȲamD8ۅϿD {+#dW( gC'Ɔީ* o!f?c+&J/H#J&V,j MWr J#GiOÕ@葈cD,+ab@znfѡ+jm@Xl@C/,9kR5R"LhlZ<Ѷ!aXbݽ}tHaxozǢd*Nogׁ(.{z{RM@ۆgyI͞x.^Q;3yJ̝\NIn@짣\d:?ͤ/ i7[5,%9@. :淛M"0wwY`޿hGѵ5{=\ "~F2$AtI3sm$荃uz?m"BH#tM̌7$Dd 6oɓ~g̍K;a!|jbs f1L%X76?Av, X t[*jofXi (`bjt-Î[;@׮~87 L>5}u}cTq-xWM*Uz՚iaڦ=-t B Si,慎ӦJOTY 0~wٖo73 lK{6) ŌN!`ܿN;'?qOLY9  |+ ѴLj ^2.r4UZ%0"Gx&z]&v]HV׍¥LpMޣE'-}"gJ0\D•4uq8uGm;lbӖuⶏIoj7MR;3xioE?OzVJ@|h`y~e(T;Ô"BdkPۙ`w)B1=4sF7&Y@h|_2=HX]ZO4ʺq/m'OZ1\~l1kM/G (ЩVT6Ұ^k SfЖac!xy> o>%R?9R.3T*0ݷYKi*9!FO|ݸgw`5*m'!,EYf!QLLYf[F]aoJ&hU-a=ٜK՚Ͽ^`[vd0bm6 3O-KM7s{^̸3|*quh@08e6ǃ2S/M2~ן`o::&Szn\(-neuK~(pPy|pѫM ZNG1y{$CQ!xѰ4%u1>FJ!_7Ƀ$?58gh7!2p[-&bP<3gYh,Y,x@LM{r3]L;55jnof]kS,\eƳĪFdB~XӏmxY|TƼr[E(_xQj |BҽbR{.Y$l&7 O`nI++Y>."K 3>s5$3P]*ĸq]ep--NkDa `D`ο|ǸqbhH=./<#Lwg57u2Ce}]% M1uC pOȇ"eODW-lҧ A "#eW )T<m= W^\ut;g:} ?жH8l!P4-t͙ynn˶&]܋x7D ]EX}vsx:˞Q[J[lZG]Łc XNj=Ť]W^# [ۗS3i˘1P3i#/2GΡ3r3s+ct9alv2Bgq/$hUkii{WW`}{KXZ a;YKV͇r9pd^/^ )hΦ:A8G+yds B*V[))\-$kW:ZAM@tTy%F1_R? QA#yKDcW~w a3" KHRP3/)k`ZW+NN=cPڭI8?_qIx^s? bgT|7 nÈBj% txs4ɽTIe/~xm%&$>`]zX7͑=;PTg_Ld׬Zk*^m2AoGs+KVW]vp0'8~gh$-ۨ,Swi{ #51%v? R4S!ƛQ0NxPTHk40=n Mv? QE# !gewg/р`u-t {0w1$9o0$x\gӷkWEFXweF|VCW y4ӟߋ^=h7?ɽS^dޟ7EG~N^ϡ'O<>Y|f*pk\t7j?ϛ|Fnce]vJHDOqQs$\'>0.%-_/q:Vgުgm1gG6w_dm=>AM58i%Ãǝ;fcd k֨*k;+kf;z o؊ XZJ t_LNq4mBLnhkAEg$jPHI\Ag 9y%Ht0 -!ai}TIKT/\ 2BZϵo@RЎ޻FֱӵZ8E×p ^zMV>&^#ώ<̀bn@h9_Yj,y̲,H,<i<=qrQoߒֽ:#^ G)Ċɔ)]'x0SGL/s{=t:WMٛsXI_+@ %PBl "O(hrKb!ᮤKb56ҳvL{(qUn=LvP=Y'LoX$A^#4(w&Ꝋ&Qʔ#*yH3 os#x|8s6Hm#V Y)#A.\Jǚ/X2#mHS7=0ۅ.7SU+̋GL/^[V\QR6\$GLQX}\'E-E6w`fVs =Ā\6*1 D-=纴 -WחVk#i=no--3&tr.,K+/"dl)% xU&$uI0-cG|ẏl$;v(d"veWOck.'kB#3>R0LbAI+1ddib}& Nvy%*z!sֶlNHWY#h?2K;dH9GO== =W]rfX7BQOR&WpGθVуyLNڵk#4{ciΒCdmf41WN C; 3s~2N ~l|Rˣ-n&"{\߁Ι6錗~dĠE߁~iJmPBmKJ ~7=/l.6qztxjNia!2J;~:z(=.5XK40&\83ѓtnu{L7*՟覘8ș)¸~_(ЬkԽ% xSS8x6Kyx@7;͏wnT{)&n!!1qVclOoYoAOdy w6ՁA"tݱ7օOG=0S.1ÑB݌iJ6<_:u<kNϡAB\#n ,OK!h]N|IFAgP!THuOʾfT"'G4H26=)y-}պ'=bɧ.nvo17 ? ]f|->e'"+&ߙbޯ3MZVe +A}c$@Z'w}2{USͣgTKín÷ƾI>Y-i\/zeH *$mO'oAB2ɇ0% 8o{2&.xdpӡ _*4xVFj j׶Y Ƈ﯆! uЯϿ;jP /8x3ʡB֧B[#W/fa\2&zpb x/+-Կ0Ψ2_څ/Ҕ]@l.PUBꈷmES5ͼo*U0}".ε6ă>x> ר϶bagRY.|n/0d 3Cʫ-Zu w6,0ԁFDΨb{)7HWgqg($`bxW7YsrEdnpj"%9TjycyfU94e^~ Zco, U:Ojb⺺)V~H OIuk"}˭Pi%UsDeШJ/mAblн~&hxslw@T8ƴU^sP>Ӷl|-TqmQD} ̅Ijsk3:XteRCMo)-0QC{K}<\ut~,!DI[K~|aoqʑv dPe_KcyK'1|iб A č!Dpwz쉞p|FZˮ䬻"96#ʰ *+3Ղd:Vcװ:E ؘu#n Xփ0gsfuA#lf`[=E4lLwfw7 YH'+iҢhk=<թehz7ŌUʚ!(bD@J@W& :}.O3_&maITsUDt6s@獉Ml`V..nfy$DZKU2Gc[{뚢o+Rbr/l|f>F3T)t3\BMFy䴆7y̘[Wt+rǯÉnuQJSUz!R4t }-'q9m4*`/Q-dK_1"otr TNaG!W}lC}ڷjST`XQ"?Ӛ^q| |;CQq}4rݲ1k/8r6j_Y* *Kb{A&ʧRxbe﨏GkTk#6.xd?"c'^x >TDzHH8-[L,{m84J͏b .m*΅Y4t^ѝ*)`1Zbf3kb/Xկ2B}4OwTD.,X =uCc;U}3ŵ[d2,}Fg”1M)d<Z ΍~Xrq@r>kwd ]%9W9ʡ_ʹNٷD {$sKx,/(9u=F9vk*~$Ѭ@7t$ &_Θi;M,j\x@Kn90}tx`nUhV+%(G &9 (Jxei97YYj|mcm4 /jQIUeYaC:r$;d$?I406=e1+2'P@I)dLH&wsBH\j2=31_(?AsWЭ$;{$IKXzNp(<(5Hdè46PݭXvBr8A`hãy.<ų=TA6' &^;pUfbѯ߹7sŘz WCY9@/YNxUZ'[deG =( >!ꜰKp`A:=|.Y [HdRMY pY$0}ߍeH[ܻX?VEB Y% dFLaDynƩ S}hg. ok9q]{H 9+{C?K' e>Ml*{cJp-|`$Fc< iyrg9$bI.wOq7(J 7q'܀fk\8ܕX ޲鬕vΰ·fTEo ?tӾAxX`]JhR.5#S)gkk`f$&%َp0H3Q 3  h vp@TT3,w[ |k~aDw_YFŷۣTȬ,ep8%D`yd"!T˚$[w͞~ d)Q1HC-wiϖY$ZiE1pkL" 2( b5p1UI-nnr[rËOj+EeWܵd%4˅I$'ǮniYmcaJ&W O.qڐ=%䄽`(w쯛nc DDP5#Ԇd;9$O."E|yavb?_wbItlG {](*?ڂxN&>Pm9Ld +l\_ :mb.2ы]dzK9(*4lG; s ><(Vx ,3mj1KX@$Kӕ59 H!Hi)?0\/J0زR'l!RYY+b3<;D-Pl\rm$v ^8w/vp?r`& 6?շ!ұ:R0U*&!cqSnMv\ ѽ)eR{.?ab {i BG&::gƐۗܩ,:;e-V6bp<<ˈ'ExhzᏁ"|Ǣ gӧd ',#df;9`j]EJba ŊώtTʑtl1ԣ?邁M.K7  ,~w!R x3ࡕ`(6k6G]#X $Lz*5*F,o 3zw2WQu Q>A U:bmG"皎hZhx\qلXh݂ef Ciчs/y<] > yq|i[4c#1s:M_Q~_\hX,/,/5~?;5/r튨e<8}QaqL%g^nשt"ak֮SƪA決Y_ͯ5vN8LcAgؾTxu zF$Vk堒L 1_A I8Tˤ LK'vH"V0 2'9Ev[_-!Gu][ŃXBin&o箇.uFIȈz`-wL/@>Dž1d@]B, pF,6kRHw h$Y$N`;+9o nڤI &#I5.MOn FtJ|K0fG27pς8$)kd%sfö I%72Z_ b'N?p3HIRsg@U$ʴ=`[`~ _>.r7JkYۜxDSK)-|c$`ЊlncL%uɳ"ǧ)G㩕$#(#a$k^R 6`ɓIuIP:2|_10Ew;DBJ$!48N,9w;JrUt'|k)ge gl@c;ul1@`-uBBK#p ,ͱ/BIjkeyc -})gKl_ ^Bl)Z}@ 0G@~@o   w< &:T]7@3LD|2+թ'vX<dM5b%Db{ Kڃ84d\&?K!gG&Ђxu V H~#ֆ)%o¨ Bk'~P@ i|Nc~ة;lBOK$> Iu?X,6EAI#%씫Q 1`~)^Q2 3;ǧ(Km;n¾Xz!FLU QD;#WcG"]:Ap,ns[)!oK!,a&\!ԊV Fioo<~R׵_N/}epA5`䬠%!].E"jpV"<:sU#l/ΡZ/_p?+q%IKY|ó%+$m7H$k(xܢ 3" |\-ث80(,XO4.]|hX?6O SaPe>]]4P&dY"&f:0T[LU P渂mٚZįVʯʜyopVYcfhK[lezj$<=$շ-7wēeX`aG}v|sٟRqK㟀Ɓ`)sD,PhVzuD $#L] 6SgJ3_g|D;'3Ik'6>VCH#D}I]upcf1(DlX7FԟQE1n6x$; '}TMz Қ'Y$WpDIߕ-.k'xTc,XÚTUyVR2S键A* ILwQdG3n0K+_1߻HĹpヹV@HRQv!;6xKd9az= z`iA4^$;cexhqz6[*v`&GP53~EUa0VZQtse]oa@ѫ5F~6Gű[#Ob$xA"꫟Gr\BU?~$xejcH!rUVhms|`lhwإD5e١O(rRfsMYO+5P *ophoQwؾ&h5PޡNSh]0ΒH<h<>}yAGi\d^76Ys~Z(#e -9ZBs_7+D:kB.ϗA ˋ1uXipf>,5W4N9w+}fIGy1}烜X{hS!:dj߷&S$fS3k(  wY0yO`$v/#2hfI0lVlY3w8k^?9RɤX~z8-?5<"9](ZvPS`E&ҟͧw6hZ7Adu6ִV\7$f ڳQ.esSspZfksDjkpY2migK߲nKâQ}KǷ(G'^G|Ȃ\?mx?Abm),b2+`d w, uq]#1RG}Vtè!+Du_t-lniAU,WBpP*bcK-OzqzwuFBFE<$fGEr~ Z:Qb RcZ$vۉLkDr4':@p.씴:aJ${ogC. W!X"Jl"w?X~^jo3Z#|+l?&ed0nKM⯤q/8R6ћNS^cp"%(U7x'0FJHj5]VѕB32 !yxFM~Nk )sFVH=\W:y-Hi"̖(2}9*3 P0YP@eJ8W[RtX[6Ԙ BD+]*lۺRq#D]kGpã,%_!))ݔ`֯l,~IQ= >5}"̀0@B U}SF]}M?q1Wm:qiI)0Ndp|jM]^G+4DO:o ۱JHchM²4!Ǡ È\1ӏ6DUײ ³ԌTE gaI۫_*#b }]`c0o@,5x[_aD S% ;k'JXۺ1Pf\1 X`\ ֱ[M,Y-'|bXc/TZpq"I;ք b/tX3:KK=0L kKemyZVӚÍFj|+,Bvmu%vP .]oqΔrq赶I{=<+ pWk buxEa0Ն?GRjU14 Vɋ|PhC4W~ <ùAWnAqRd8]I~2gE{*~YɖEsoyRnn{h(G<rPM'>B=|*o:r?7Qx*ڄ9ᆆU@Qed&X8]%xOImt5poj@ ~Fd0%Mh/MQ3[=v֍} P~x#|[YIM+`뛤 A,~3U LKq2&#h4ƒkID=W˟}ֹC%{H͇09_s*K?F)>&m[3m۶mɄOl۶&mL<=|OU֪ގrkh-+63ʗf=bXP, %[+CvyR\RgJkW\th,UU u{4Cj;f6 'P{p辽a-R|vxazhNZ}f}'~E\)G57!FcjfI2T$O ϔ}7c/ǽ)gDʺrԱ&E=4 npțEhl7i5Mz܋OM+ii0Þ?x_Jb0yOi"Q&S?gdMD6.Z\^レ wYpyk:nֽ7vpl.myՖ} ;%v& WWWoeEVitQ^lX;<TkYl6R_,4IL/iTkt\J >>&r$aIk]ʡ7cYM) $ PW(LR']LS.)[{oZ{3*ڎ˲၎WYf 0k",xC#$0R7@WRS)Iq pKM%0W.½PNACZqT1U7#:qWj6+Dǖ=bjSVu vCL X5Ml; 9a7=Y:'fMYL"d֪+?wzqL5k&c`n̂Z:9npJzee4U1(Nٱn}_>Wƣ/g.&wN2N#ph5ή 8-f&M2l{e8e8o1eM#h5å?0˝'T1 Ãޣż=,_2cuVY#0ԯv[(׵zY @ ]LB"]#kQ(n u2=;`\tY ;&x]3BiEG]ms<)!HC_~M:6@k͢IEO[L]yErxD,R %Abx[t _5ۀZyRqCJ`>DvW87˙kGs&_~B5Sf<}3 4^ui$_&X \6Kߏ.HlPF&f -"#Jd+ߓ|>1Ʀ@hV<0KAܰ[C5٫ںK,/lc҃hY0Mqdy|h71- bLY>㜕_-,тHe!woRW=W,6Cs⺞y E[.0hrņivʞ?՟haԕn~ )O-BN@7xtt~/0 m4Kr2B!x!T_e{m9\m:@ 5jhܺ۳??GIҰ對O meF̓8oY_`Ҩ4st 2Q0>\ Peew4;Nz>'C0%OEO3}ӣ`yWu߷{, <Տ yD~_U;+0Cq ƭiͰ|2}_ό7zo,ȟgaGÖByYo~A ~Jp;]'aW:|W^ݝ=~y}W'3eWE36q_\?&Y=fz2s~MRV1w )+?Lq6=ONDŽړ|';U]гqt>[Y//Ԟ DwzĩB^"tt *̵.Ky1aԼ#Ѥdqzt`@`:D~7wvxZviAqz֝-,./uy,%RccFsB%/$tۚ[+{&%)mik]ͫW[a?Exoɓj8ƜuM<Ye͜Od!P|V:y.֐}Ž_b }~{ 9N1M Lk$%NWWלꑛX7Ҧwj?KlEөJG2Z?iO}g%5ݞ5G;cyyJ|nYbD_o/5X]n۬t 4i?eU,qOhǏo#nQUg?d~߽VWM7bN児奔cHΔggc2bv㤣仢~relz;G?2x/G gX-wă'{ϻk[&RQ0g3vp3a胻~*rbubb^vSx/e:nߗ%qymrfͷ=hМJŁz) h|kIE1ÍY6BZ}(,ՂןvoYcovH- Į])0R?+}(ON-ХۖT\n^|獙LN~k{]tsؤN勳&8'Ä|D6:m8O\~W2B{6@֍Ni˅4$|t@WFCVWAVOl;P>g6)?ޜovwÙdk<־A$>cZ(z)6YƔd^z@FQR6t}Q ,|~o]{qGwtCOa+e')U<]wwoqdkiGJ5g؍;y\m0w J>?ևc%;ii_?RlTiFG>2=e1zVhb8 12O7{* $߈4ѳ?iz^-}?u6r1%?9\Q.]"Tab5RgѠ'h8U>M>wps}ٛ=#iMB%ӍѶ,9v9]tv-[j8Z!E?>;#YswxlB6IS7or ~g%~"ޒfkVɌ,jMjL4}߮|' S=/ ]?I/!vg+9NTԒ&3GNiL`I+63qvq25eodL@+3^gc<<2v.Dll_*ыYڸ:ыۛϸ gD.M,xDAKPHe|p,(7 #A9N69&9a^ZwE>Sh#G,mAxBJ*]ꇃlJB==/ϻILffKrs_ɩ9ͷѸHU=-א{ e)0SP5`pfr^NHe^eCe8&@A&ܚHx6GrG5ݱHi}=~db"y^fכN>'B(_Z#ZsumѨi&RXQ2E\9>ticv2t(L@8#4L$,|qzq%+9zi a$V%+W~BoZѢ\'G:v4.ayE'1#ʅ,؁-5QA*[L"z.S/e߻:hpq *^Q1QxCy?D$I6ZW P&>^"MɩyDFƸ`# j5%1(,3m滑f_k fu0^ u/C ؘCo=>?WIDt;P=6<'|Rس9M_ڎAkžIFuCWs!" ǰ8"95܉?U(Av1B̰S/| aD_?16s~R kBwyV~%"vviIC+"tQG>r v''ڹ;l=Dx*>Ғ٪'4$Q䧺~at9Q5}[MtnA ',zuZ~fiҴV~ʡl؞~bq:+ɷj,Xvӓ(vOJc]A.\B/Y!KU3ݶ"`ᅙH"Z,HxAщd<g20ɏ7N=1ΝD(3P̗$BZ-kXQн֚b wwDHCT\_o۲^E! xhT @\ӾI2hpfkJa=#{B"M8Atf|g'-A ]nX~BCP/KY;Hn͛Jox .}p/ lfQ_u'8a2*sArYǕٝ[ٵu'7W\Z9*}ٍY.֡/ r^|w<;љAftRZ&:lIbs/.$G҃F!a320|U?1 LN¨Rq{oRpv֧ykX,,'жʾV+:2tLޞ< ۜm9 GL#çM{J-wpjAפeMvS^}S &Ww_s}d&9~ޫVĄZe+, =N/z5:]yk z9Hrl9>5C̈-un En4)Ȭ*Bgw 5| c_R@N ~:UG(S o-}MGuxιyqJEd`hUG 7ߘ>vzp5FԘEm)\OICIoSoٺ=(iko٭SցH{;┴<mQn3V.9t4*a`HN/vB #cwOň_?= DגVT."4,}p!ퟃj&4ɠ9[1r/&Fv~yh0V4 ,\T׵g;^srzPO\Sf&*8ඕǡfαĵMPыM_%sS^:{ FNL,,=[{c;9xURd 8"C'+wy PH:L1_OWW@?LR+$gM_'(וY7xn5N"`/R/'<6"J<saiŽ^>+F i/Yc_WY/Ucgj]θp[2>Yz?'ʸ8+3QWh܋?w)雴'eȮa 7sN>΄_ݷ1csP0uW@xH@mڗ/rztZ`5FāOhۗ?PN/ϪzZ_>@FHvROI>w-HZY%ݞ[\;[j.)C&,o4/!%#P qcWޱ/ 7<_%޼ڞjX#={&ϥDاg_Y;Z0.i軴\Fė{Z7FT#.4zvQ¶ Qev+꾺#uD?ʫvWC0nTxC޲_{ױ_ ! amǍAaS)CӘ2 ,X>pEJ' s85MYqHk]`JXٶ&+i\m{LQȬEȨ6٫NMqA'zUV\o# P.s)-v64$Pi "J؆e/ŭciJ."&ߟeKA%-C~J(,a7#-)]"|.?7{qФ,Y0& 37G1c'2SZJ!dS \hd㴜T3ّ-_Q6oZ?;)|r.* :Kq@qg.6oeO<"Lh>ǻ^YdԬH`GZY я66d]`RCA~f&-bw fNLt ѕj`UtNazџ1NT,hHsBF>Pm&V%0]%UK`F.IĈ&C0E'$0 q㏱Cb)"bBƔ163&uCf9atﰖQ4E rd)LBپ3Y8CBK __12U/H]5^M#kO/_l{@{ÔDcsbapD l3p*)fC G2 ~߸ɟ_wOWך3ך3χ {'3R~-spx}[vI*}={۟7UUDuOgۻ9pl_{y\jy|oƯ<k#?G\{.߰U-??dཏMgq}wl:8|Q]?[E_fwOx龃~ٜԟg7Mn֍{_)~cIxfQ'T}Y|o)ս̅Q$-]8~ژ\]}+P~^]b|;8ΗBga鳁nmq0],UbIԱ/$,lq3^ϟ+l9*х7,woEWSY襣uꐵ~eڲ!Ǟ>BƒÛ3_u'*c]f uPJD=ƥE~%W|V.?fg/jjr)>hǮN?WO`[W OK ٱ@\Zdg} ѯhKKi2٭Д*~c_N B7~*ֿIQ"5u) 6#Haw|B\^ք{Fy~=2&Q03e'LlU枰RQvFuPK%ޭ 6]Fgpkv]ܺs1eo҉l֯ҙ(kak6ǟB[lu%Pc{GJIꢋle}鷔wɯ}ʋs4zl_@ٛ'}Pnei =5a7(ȞhYNXMftdze֬ ײ3t+AS(/(f0y[? 6#Wk==:CzYpr.3|˯>nWo}Qp4P1rQ$7,Ae6UsV2b( G!_"Semā)]؁BfR'^ :hl4 0{臺UY)4B.|')N }Yv ܑ= Fϰшo{(H4ft٧"1͍/@ bG/D NG.:O1tm,W7b[k=k@\l>ʅ18n=}®ӕgF'j\^݈rN|P< ]k/`S]t0EhXٳ0i}؈hJ<3s]@(Ê9Iz'l:;ӚQQ D@aCH|'u(ܳ,lKЬ-x)D`D^Un/9o~9{8Wb@r/Ë 8Я!s;lXP.zxk})0T %[;vfmtJq`H6Jj,w|G+\lodMM{ȧǏY, e@O:@:YVoX_, ccg y М`l?~1vy" dG-p8n/.1Ð"􅟋\j +ESqz&pAvLM{V&~HcȦl$*Մ^CXb$,5aaJ*^6d3w6t-h.OX(BM=rz 1T`}e D nS[ndEYl!`>zE3a%ʛH?T`*3cy,D; X'8ɋXL8;L^k|o+!;V՜6=ȟ˅8&fK2b3S:l@}?1s%B U%]49v-_WEfX*bYNGAȪMH@â-2Ɨs\j[D[m')הÍWY-9W%rb 85u[:gi¤3g)ڨe f{goֻk?-X]AUĪhNwtO(n 0F@鋞#8^s<) -{5klI]uu,Nj4.V,vUȥEhyߡC&qԞh8CyPI3[I`ϙ%a>S׮i԰%^R~6'n NclΐbB>ۦS^h݂}G' 2^}xɐȻ2Ƚ"Ɏۭ[r`+A`~0/C3*X̽Erԍvlt*eiV˲"'_S"ekODWײ7G^S6N.ZЉE5vtSno`wHX$ϭ$xdL@9 -Őx9L3_qE/sh9Z!Eqh` \,4MwT_j&amZwBb9G l"vu+fqp?[F@&NWH'?)ޏ w~b% J!7SRUe^!$% eV  U߸9\ r_DA0_ǪC`!]7Ɔv 2 b~` f3!'$3GnM2 ` R8=r .\ܙrp}oggkFe=M1[@MEX_vioǴ~?J@ D 9S 1АW 5idݻ[xZx$ dYfxWk EWϳlhk/2GU^^dˣDd3R3:A! #jBG8t3֮{QZ>(YSNG^nvamyB/Jp%N,ـ`*N;1x^/jm lf7qz5{ ,f<׆a]K߽\Æ94m,+ִb)!ڷ:M50JF;Z2Zgq5Н\}>xfٷb&@n~U\GfuƲ$"l$US<ƩC)p8no\~xS<J"`0iLzBl J=Kzxak\!@uZ!@+4l:\48H!c!faΉ hK9 QEN,wgV+8sC<Cf,)25_4Axt%<<4㉨q?<~K%e➐>@b/o5@C.f#3s7N oBSh<\~ٽ3 жl'8boLQˍ8aSi19.0qV khB7dk/{nۈ]`9vUnY,u݅')~:$Fi/flpf˞uƃ_P5 9o=2SK)N}9P:gsә( `\\w\SD6@A1hW^.]DPe59X.oZ*SUS\˲h?6 ,`49_LYcS+h>u҈ DR87/fLY{и3ުyPŭ U= 4D.Ϟǜ3&XܽS4PA CIg4.բða0w=˔vHJzM =5C~Hd}ʂt*iaydv WnRnd)B8H2A qL8ƜF =/nkR^޸Jt}Q88 ,*}]k,vKU@. 6~}d w7b,_YF. eey.(Lc৪*S̫|PPe mu7[궩Cn*Eվ4a55L hX mN[m4c\C2> ٮATgiq7|Ҥ(H:NP=9e$DkJ+iqΩ=#%C#X(IQѾTׁl&p)l-8ۯ344օR F VJa)G` v}jj{LHislȌy 5$yLPsw=+Y3JЄCsGoڜ;` |-'/ wJs|ZyF[,YayN+N HyvO"(.+BEgM|!!|qt* q{Zg("Dz1Dy XjgcLi8i{V9Zdפ$3$aM隅~qZ-Wϟ/49 cp+67᪛*tK1k[g9כ^ kG~ۮn_]*Mbh8@*ʀ(=ˤʍ(M[ԝ kv{+FGϭǸi yh(%yw}M De+G[?ښ\w"߱ 0~|Җ, +9ͫXERyJ޳7S,h_D:ؠHD/uj~E# d+ֵ{ނvƨ !Ў;wԺ[K}71mEgJ“Uv[>L-<toRω¸95zДה `&?k<גosvc<Ҷ)XO h'ծeAqVy)i0CFA9:f!Yt@~=&F>ɣ pwo[0UUJgm id1jei_B 8hRĘO2gYh5I^/QBrL \mr&ؽ{8W1W9ιg ĸpe̦Mq=Մ糧#‡eKcgur)U5Y|{m|-x*ϓeRX{̮;l *|RMh_iũ-]1??Wx ]?Zku));gveTevϲQYw1&}վK|fG$T,KKI7OڋEھ+-0tQFż &K8.s?"ݺX!@z rA4vBzHi™ ăt:8\)n5BZe0fLUr<=cn |@`U[rK<j:We52&i~^e}#k\ ŸǙ}bbt7D+ &wp \.p¼I.sI.ǩ&Ȃ/L\8*W=L)Nn6֯γ].X.VZ,D6" :r5eb~*$SC\HD p1tľr8s8y0E4 QsD5<;D;YYF|MwpdZP3]` fω)ծkAXn_MMdK~: VY[O)[8ng?_)fACͷ=43NgP+3%}}s[6b0÷FĖY_NB ʻ65gHKܠ"X+Ԗ DhU~o 63Yx]- &)i\ <U"_\_0_^$(87 b&Q:h>w%Σ[`uU4d\xij̣:+(gݡ(JO6ZK \I1Mtǵ%iV=Q)n y4K"xD{ЬrV7%[:8/q<Bι1WOh?K;Q3Tsܞ@̺ e5MaVmu %kuJ?v+ HTc"dQGܣ*>M訇 &fTci_,pLvdFJ{,8vNbV~IO4b0MR8d pnen OhwD yM/|m<' %h"VQEʌ}Ta7uױh;I[Pƀ[S *9e 'SG>3WΥM+Q6? 6 (eCa.hoأ $a=$D? OA=^AYʪ=xAճIx D7 -pto,ؖiZca_G[k$1x~w(|[WeJq~ a&ABlyNX`ve dzNA%#Δs 𔖖IWg- ^DlNv9439&e-Sܦ7'h2oѦЙIC[dNؾktF on/?atj,i!7 L{E:hm^}%0^0/ͱj->V Qmڿf@~=A puFNkA۵}"ޙU$Ԑy>51 kiqgs=aϦ޹.ugvmUPwr/퉃_U52_b?ۭa)+.F\|޵}(ѩ>{E⯻j-{!7f18{ul)N\Y폀m~,Ǥ NV+ǑPhWJ3l~ShueN˗ِG!Tx5nqm" ͣ3ӕ 3"en^M5b{e &DZN*̜ /av5X|5f]҈.VL7~7#%}xs?~mT6~2ȧ7:V.mL;̊"Koo?3{#udž Ysc&g>0EkGQh($=ooYqiR;ˍC˟Z \ux ;\!*_|toػ'-1@^B@Ru3Bzn^V~kk&Nl| pؿ8uW"!2.ur6Dȟ\At{RѵtuƴjyNg{AFx~ :1 baq0r59U'7^K>C.e=B8ӱ97I86/8IN $%Ւ\(j01ˆ%B82*4B=Vo]E*p xn/(agl p_DӺpc2jnr~گՑC3=Y㦫?鯌w6;x]( 9"eKUȤڇLCya@tCD 9)O %^Io# vw{+*#d [rxpSSL=nmؾo])Z65֗>ya/!ZՒ9[I#C5n*9ɱ)eUl!ңq%N0zB& T6' #`5"dSieyvѱU ~]^SZN>_#LRN0>4;F5 w c\7E6h^qL4 qTd\N"RGͦfݎп yqTa/pem5WWW3Tԁ :!%)\C#꠯lcV1mlVa["3# uCÙq+SN=l0߫z85}ῒ킒fyQtw2ȿ)ݭ.9g0`!HϷ$䮂ޑבʹDH!QuX3L6xSe8G%g QFŗ(nOTlau{u,Y1 t$&On_a[GA``12g" *JĀU,DCSR@ -; 񷠚ny_|u=(Cd=u\b\˩I:^ŢRLD_ buXI1_N~5-;KJOp\Eً;%˅lXͦ,0g;SKC$e]:d DV8EG;LcUp#2&v<rd(ƻG jUgz]҃ۛ^5kmR|8$$ 8UJūΆա)+; _Dߎ͍2; aqAl;> ]r&}$+8NTĭ}A\&zP@&#TWs7H DR`nl74׳V<9ES%c[ 婓T ]TgO~)S djoT29&⤶VWw|ku x`( h3s TKr=pJZ}ؠА+ca  G~JpJ*ޒ|{A *7պJn a  PO[qUz߲#vC-E1N4vOx`>I DRrT qc%b:鷣[fCfWip>Pxs}pSt7?WoEOvF23+nAf? ó/kW.E7*Iƚa^:R/WV==Č b s6@fP8G\0:MҋV^ *7|V P6ŗ,~-nA>#-VL-U` V7nُ^ Ù%|rqܯn6tjFud{y0zw .ŮqG4T:f;Ч(/D̨.A#)9NStq@F Pn.cCI pu lGyVOI \]r}TuK1eP~$L o O6M롕+Y89Px9>4͍ oLl T+zTя ę>- \,D\~OR;)KnV͊t8-`[ 0QF2,rs"orDFN'G' -`P@\,B(Gi%g%I,֓I"SBJoy/0'g1o*tv̾ % sɤXp˿W]Uǔw+q'1wu[g4Bݝ8?_+Wҝy^Vm> <\,42o7Uzrm :ױoCS]s)$?pP] t:Vw^%xo<쒞 ;Gܘ |pn^B&0¦R-V ݶC(Ӽ>Y OuԽCw#8mu NT<~HATQfݥ}R?6Bd/`سjk)F4}o?eXvvTjofLzr&5L '}N3Xp|K "wp:O #6ڙ*)(+">f"(xntGSq9"VG;:J.TH<$!(w2B }'S 総߉U2U:iNLǺ|kuјQLq_+]2Zj `CO(nt-Ay715]~vwDhXНZ`.O$D_^}"vw[g4aeBi+m;?`nI3xߍ] w޶.jjjBQFEL]u&%h+?/T)c& %X'n@gßxM@k {RHo1²?t1o{06@ K 6MXay`o' O@p ͌$t&.h]䷥|%9acf y7l`V)[/vbՅ֬j1mgty[*䢹J5@KYm奌v,|3H}ÙgQfb,{C8$2y"Fj[]$ZDTYlm Sk,n4~8K;lR>{j+]>}|jQzki@ERaҏz;چ%Q0 Q}RgYq/TwH%GWcaqV|:iݧG WEkp U浫;`6QL3Z%P% ?=6zg:2" 2ڀ&y258l_/W)u`? w| eb>.CLG(^rS*]~;Q+sxxu4CɽY񂊊 g}oǂm_".!%=ҁH1sh5ѤKGvSN6: d'1=!hThw#Wh7B|qbtuX3߹^_||ˉV {-$*G}[h=8fo+_CҦ ܱ_o;ݰ 2ȥC7TȔ$m$Ҩ)p3ߕSʬtseu^pA#ANX`(ƌu|`AcxiL QIC~W@!p RIevRr>ޞvkC.8*0w$A%;M7-5A>ik&NUx/ӱeR]cAĝK} 5zE *m"`1/p*i8> FC"{tD0Wڵ>}]7yv%\!E" "SД܋=8mTQ2Ɗ¬eFKSu`; x5޷Ц3 TSDR (ŚF :ϋ]<`R1IZ`vE+<5]B>^-bJޟKoz2yOդI/9dC ʄ1QǴ1%~IC4l#V˃;bY6J.tN&tZ7j]e%gEWL;G@/4L}ƍuY%ŭH._|nIu+W-<)f y `ؐ6Au(;ə)HjH\)vDgW8yem6t6"p]fKjȻN_\R󻾅IJ!@~m'tⴶͲ 邋ܕGBԊ1As A/e܉1osJ>͍߹jFT}NŁDS U6D$+s۪tۆĨc(ٺ< =#*7=FܸGTֹĠ0㢗2iWek kvVSTВ'"c;t9F)}`!&"ʇ8y {7,cx_ļWUgra?[%s[~'@wvZP>hES/H:>g7EW!wWY竗 Ns\ :7 OZ[-jr۰n 2:p /xJpci ϼ' p_x_1(V(U "s$Zܼ'X[(=XK`n&O߻̨3T R*|X |;?p{n"*vB~$߬/К=MkflZb0UWJ.Գ;N*4}PJ[򿂐A'ea*Ff{m9OOD]Fq&EtGB.ohFIFB( ƱA1E4%pOfz*Bזq:A韠Of`wE+YE@'ՋYhn:xfRn^oŴXB@Fx.jV:>_[#b@R2iA n Mg: ҺA1w'S?ׂ꤈|VQDu^4UkN*wk(0H h< W^jr@tVwb)-`1bJiV/#؊iIoLHc_ N g;Rt)ŹC-g"}(`9Txm+(J)k{AjڛwvC6Yq~(Zld.$S풴ĵpƍЄ_zG1Uu-CHU/=.ޓ9鿦fc{Y1ɣۀ8ߩVO[rD-xZdWEi`frK|ujG 8`1}4[1:j΅Vp bszu׼^9nrCZO=ɖ.9{/;c{doHoשܙt;+-sAPXi{CZF|;4x<**3Qߓ3lAᝏ.#Ԡ?YBC _Bs0AqtJˁ+`is>p*l1RJtvgף#jZa_j 42(4XBrD P WL]`e(G HE%AZZ e-9 pUtt>nI;DKGH^jMLgnHMnR<[}TW W0vdK2XC_01mNd/)kAp.;k+]?iUd *׉VeVYH5ӉW,{Z1HsZ  c%B<]TfODbp$KDQ{uMvաN 1 EP{0mԹ[3d,LC4oBګx02Qxx6puGd@hNh \ͨjΊFMB4eIկ6GG`DUj2y6ټ&5(RuZ}&Em~oYۻ> ͥ9X\*FIM#nR_AGN$Nhs\/~/ֿ++zsYaUP)> ɡEߏ0-bowIˢ9oӓ3 y&7}P[tNNǪ}iI@O@:J*OpׇTv܁(Vd]oywU"Ew,nsP %숊Tழ`n V 4#fN"x MLk!r6et\ I-L_tA' ?W{]o]%:3:_o wII)P:Yȉ- [_]C-!8`:y9-^] Y^Dײ^[h٧ݣK2/+)A+ŋŮn҈{:vLOžk 2$g+);$ZQ[_ۊ-p')M(m#—͈!oN1khDӊ L/N@ @!^G޵3mGWE*2ZI[)q r$i R@GK;^Gbap+>U@[1NF%D8Ff~7P ܻ`t yz&k)_j9$N1! 1vk*^qo+ nJi~h%{oꌄ b< YuzM5Ex>L*Uz":!Pf-JJھ.5aa~6<,΍m a!lԤDMzD $dU JLb݈9B4B_ MD~\Z=d E;,`##{yS':hM[9ȹy1 ?Ǐ.`hG猪7'ox]r+ W2fcu`P{H`nI`zX(=M{[ Gq[+Sܽ[Y};kma:(g$ixcƐ4.CV tGݽcz~U련; +&[7 G,fQ\dadQ lv:@A\2w6e%_ڃ&tCG5&YgpΣ}׶A׶{Lcg(CFeL_^I}CP}D퉚 >5*fvME%5qM / Q Yt)N-6ښV-A=`<g(* GbhDD y.V`F~__=ESY8zY@F-D:[& ndSA*[ECL?{9gyzBޯ:9N@/ #,< SDRGy7 l)B5}ʬ]` eGJ8g}Ynt_g;bBXMEdPCr,7@ܝ( ѣQH=+G&edA|U&)D_’B01C=õ,qk3ܸş¼V@CG7!%#Ư/B~!UsI/VM| r? `r`P{̾@O%2Y<0!ܓ4בDhb|-13uf1ӡIA69rߙud/0GΦSِ #׼RYSjV^ܰUGn\訌%gpn~8CGu> Xs3ؿI^s5E|.mV{+lm’=xo053.`=a902Iy%!.G$>O',sAi}zu,*J"*b1AS/1zbrﲘ}$;Aof 'c}ZנdؕF[pnX<'wT!zKEF{Brcw:t2 ?ԏ_Z-&|N';y}dwz9&ӳN/%x\s럇PXh:xB&cBv XUv4*꽀zmӿcq)J59P!j`6DKAY0 27KΈԧ=(1jC $djYy:WKwI vָ3IS84D#y @HH#7x:qMaxQ))y/TP2 4F5{Vk*DK+NW. =`MjUTFOT"8!)FIxMbq $cBdTPFa c_xd J5QXnNFX BVoXc |=7Hv[ƔR uRwjv9*ORs[DYg*c,EDݾҡ-)b.:V*wɺcRH8 5єt&*A"bSʳ_ p^#Y¯2oob=uLA@!)vNW.\~X:QN2DzGhe axsf;DzMS-\ L"ƉM }LO1gh &]8)[L"ߜH0-$UPQ)}Qhն;?Ձ`839Ցq4P#P=J'̭j8ݶ'mm4-jԷ?%1ZlsVmՕxԎ[TPFv E(DtDX N}/~`-4{gT$بf&F9 zE$JJ6M!1G(+ mvw*aml>޻0]Bf];7h2+B+U["iTHd66f!M%pZ7뺵_Ѐ:< 0uJVGlhCf UB/60C 5.>Oq'5s! ..{/;C8@ a̳tչnV8z8m8m4Iƶm7m۶mFc[MXMc띹۾_69g΅ցŐ]cPx5H`==޶ iR`+n4[ǭn5߰/ 512Ɠ0ʅeA^s L:Y3NaWeUm;qU(Ypv>RJ<+y/Ps:JVs,):;'.Akwd3ŻG:/Opg ,ePGh(|[~aZrsuo0| VJ w%aUOk8l]IQ<|a`3a$Czς&9{A9vq4z̔rdO/ɜ~CEΤx.mq̚ B7BC9hrή_mO ʼڇriRNv<}d,هd˸k,.H*TMI:{5iq("8VݚrW$w X![aأ_z-o pmzH7uaHJ8JR› noB >&\&;9ȃ%9"p I%om4ë}[̫|gƩ`5eH>B-ϹU#zσ18uI?\ь `y47ˊ\e 9~H. zZ'p^0o%.)ai6݋<}kgzPQwxY̦$`A|XӸ[]0Sa,Q/%=MLH <h)PoKH-^e#YԔT|1/n \G}jl w*4Vx h5^0gzG2zib>ubTg[Dє#s0aTpVTSwߴ\@Zѡf3{€J(%•*2l=ƖJ bgl1Us" dz& x%^<ޔ1f"` ud0#ͨsQXl?"L¿OZ-FOEmX:ZC( mk>Jd`Ɗ$bwg"  ɠ>))LDDē)m`dI<}T⩆~&>{FO)&HkA\4K܉K=~H|N(_ /5S76a`=0`(aTEO5ؽ{T:(Pu0)qltSEH) ҁHiQujgiP-@tu K5G$IS oIPeJqŋi!pyK/q֮l) RHϭ:! } X(vꞞ‰j0*?w32"8[/6ҦATFCV1X~!(7 #1Di{?) ".|*geGB`3~%XIW?WqL0y%e6MC7V$?#c͈'u19ܖ.D36-R5]e2Y &m\tB%hKZ*ܛVl N^EVs&3VUUzAq OYJ>kQ,\ճΉ6NC>..В;mL:Pj9-ۉ/aD}#;i QNr2Q9 jk dgcAt^Լ+pj[RܝΒ]1(S+=ZnLODzq/JxW}*ueBt\m4b<7mVMj^%X.xqrU븺F%nxalD~,r{oVtLE,AP`3=T['\Q%12qx_cwPÆ=eo'TtMW~r{lܐI,`!Jx䊼4H^*ҹ̑i u;Ufi;kz ʚ_W/6Ʊ\c!찟wOB'vIޥ x4rg>٨ Eq~c3q~hGvd+(@R.u0{lK2F"iwQ [#fplo6#IV/aI͛ ǥ#)T_2mƂESJ'{.Tw_:6`Vzi'E,؟'|B8tY1RBd3\n.Vrb`'N0:,6tAx ?.US)y׍G{OiBsG7UB@^eor8- e߷ݮŷ@{Q @DqJsnrC᛭9-$ (xA×t"®Ӈ3JE{06\EZB`(u|ЄnR6zp| (TZd(4g[k Þ3c#UP۫"QL.KT q#BQcϼ0˹6o?.Lt|3r}g:PjK2h󊬋4Wo<дVX{7CoDLMMNhٛg y@F]h'o$s{+ֶ,3ߝaq4n%[Xq4.֢* /yBԝScW)Ly{n;uEXD:⢲3X?G4{5xWEB $ sɹ!s8.,9.0Q\ZQ'u!mv;ӧKo`[M3i}neb2nj3a7꤉sӦJ/i8BTl,uD x~^)Mb9!{Q4K PD^_1 &HVZړw?GP`#QFR|#IƳ_J FfgNz<d-.5A60F{:X11F<0*Kc)`~.|0.!:}ٌ>n߃CVd:nMy%5<.^ X+kװ'BH5i; 0ʺ2P}Vۺ#0˙SF 3_mfے>6k.)h?NMr)AP6r~ ZAsu1$=~<2X9eq\>W*Bg" s(wO%wHghud04oH=Zdc0P};H2JjOҒlŎ3iRTttӶwCA"ioAȌIv+Wx!uy,*@O/<=*Ll5eOfiz'DO`6FD2@|¤"`IZt$ce7KRKRDO6.YK:䏠%Mѭz Ac7y4.*z[@Ђ,, eD .=C jL9)\bsJap䫥B<HZTzU&dz=e7+ cLJTD@i/vflᒒ><C>< B^lSxƴٲRt`G2_nBaQt[ݍb>UL5yBR0AXd1 3/] ?ƁSaE`) O/Sa}d$`Bmˏeuk|V>"B Wa_P&Ŀ98ΥǑB[ĺ)1e ;l WM߂c#zQ{P7 9nŸ4cØ۞h'.VŅp,GRPX.36,5uGYCdW_M0?ȧbR7MTҊVP[[Iyp'wJ${ 9`YY+6VJ+a 3cn?[*6غۣZnƄXb`w lSƧ-g#u1c5R_<ŨkzxW8H LvᅾC)9Ws*,kD韷w*sW&:*k%*z;kMy]F=ёȌ`,8ooIE&ǽ7뒄Րc8,|L(?UD$fl+ᢍTN}4WwBʟT!1^q,[a4ʕu\88cZl\+W`X3X1b,[֥ 3?$Pg qz>OϞ5Uنڤ!U{VUo>ߛ?EvU 0㭱()8[S]z96RI6,|`7'rC+_Qr+]G+~JRL qk;~Z+#[vor4''HDă&I?cʲ2V3+ɑq,+ۇJޚeA de*t k(dZ-@Fȗ;* $~4"k7[+#st~‘%_.ۛcD\o& X~SL o}o_/oco_OG_~}mTϯ~8 o}W}oWvo7_c_/Ow_$׀?^]o 2l;|~i]>?B iʎ |Y^|Z?E,2y~k{Ζh}~UHқʎz4[Λ>%K+zr\}Ջ:۹d7%h+ly_z, oYO|jgӛ#-wřRXeMNa+L)R<>K++Lr7q1v$xܒJ\K/uJgϩ 7*X˳cO rJSe'ͮ»MY7::MF,[;C0;>rPq?A#ֿBZ߭<'Oh٪T7DF2S-_J]k7I]gdČF/=aYw[ѿ] B=蝜7{DqNOE2;x[)<9tv诌ti,'&0}hP~NՔ0 3Z,OR]i/] Q|7. 쉞 -V|yTz( UyS bn\)ͽU2_NUO8AWo>s86;Wۛ"Y0n]\6O7zHI~pvHi3MO1#~̖c}UmFyWzKȱRu@'3ШB/yVƷLJ4jΦp.*51'Ӕڌz 8l^X}Iy6Ed_5Z5@ǰNmPҊgD^Pkr~0EN[<]Mg<U_*h&vS)YfY};ne>mJ) }Fa,gvGK3xxɳ3ΥKetJ60RVPUOCD-RV;W-͑`` ە@9ܭ6AWOƥ[*.łKTh9e}`47 2Tߏ[XB+9=gW nۜ_;eaPQa{>[b,smC0$z {kWR'm%#R]PseM05U/O:Ekܽ 81*CX>1oJ}yղ\μ2/9p( \8Á;xBSbA?]m\T="jg_fBzuSOAb[;ǬdB2O3`˲BO zltia J:8kB:ɲڪ1Oh^8ۺւ)~u?:>,J?@6gv{;Yެ'oM\#Q1 >x±.1v ܜHED.v@0ddyyq! Lo9G R5ESā<Ȓ?ȴpa\ Qd7_#:Q l]z Pen*fpd`|z`^a [wB:y\VR 98lsN<ƔB ? v܊^6V7Ykɕ swSKG3i{f!S*7c Gt\֎-oȠx(|˦V'i)&Qӌ[(2 r(*iLAܨuſq/~Tض}2y0 ;&k޵EIh/ D7Q|I#d?*t3>nT苀msVHCXKA6W(X3_I R<'Fg#Ox@`dc_ &%OMh7X:b,.v2OQ֡ J^,r1ze9?3@ qTQmGzJN`шӘ0j9/\ÎW`Јm!w0o@ h1CsbZ@kV"ocZ] jXy8EβHTæk}O]-&/M°Z j]0^~#}afL$ز(0,/ۊJ`U! bjwXrZJZm]Qi# ^nWGs%Lp`w8VvѤjv(hMsH}WKҟ.W3ZJB*gA0$z`+ti}ve9 hjz;}LM3vJ; סY=5#"tNy* 'J@WxaO1f2 ԝaT.fYHؚ);'b,ogO,ex D@Kłʆ&eő7Bz5Y qLi*XcU IƈH9 }'orGDYo`N`7vPrg X<6pޗ4`a|Jq珏j"c8D0.cDy||oEvK{bHfΗPXF$eQ[C2_<bSteyxMb3pVd\ }R.ϙb 7k Y;xY̖#1!!Us2<م& Ͼh `![ s[ T-U KێV ؁"rdeNuK;[`JX%!=ƙ/?s vðq`xh7T_N{k{lKXF7A1Č+*60eO[ h˼4PδQt ;3nbD>#&oؿ\4gY[G_N^19 kN 7ԷGoܠ52p1/Fz_$jO^[:ƱdRGOa?w1//lB~9Gp92jr GP'l:m(Hfs>5uHJ(;.}Fz,ľnc(ޑuOĬ_otx!K% bm5KblvS[׶_29COeENemXZ3YX)Bk:MYJ:NEPw[zaP? t ڂ"|$e;1s~im1Dxv:&J[hNÇ[[A0;fj $0cOVjK Ho?Q\vXE>?Gxm }Bd>KރǮn/)ه6ː{mk[䓅 `")KIn V+<'\{NcEb:,IOC.D&Ê?X:XN')rr#O/HT='y9>P_@GABɡz!pAѷʢ%DPγq:K > tyx,­ע꫎w4O[)e< `'`+~zzYEr ØxOB:gw.G]6k埐_V0L  5 eswW}pʞQyː'/e [ +Ǥ>BuML'@3NքafRQ|$m?Ze40h:])cbH-`]ϻ㽶jkia F@E"QB羴mn*^ YmB}@/HǙ?gX*eB~ tpUFAf=NOp!lSgWqz5 Q`[Is,YżT6Mt8._:1Î/cL74{*U/]՚E G)BN/ wR"v>0% UHWOegTo Mudy  Z=X: <}p~ڞ8CYMpil+;}c_\I!/ёYly 9[9nyޅG~E!V3vя +"8')Ͽ{sɕl ]M^\4q|Ƨ)Q ( )CVBQ׭̍Ak&4nM\!) j4q)4*9\)Ks&C<Ã|u7# 11S]&KvxLe6>S%^褶B)"!DcO|ѓ;u%ȰNipyGSq!Ҟ:N3LL "." P,ζȯ`y&C* N'sSlERy]B޷.4|Xz^5r;o^҉i.RǮ?W[vDmgs>)}6}9bBH:z{}x=}W+}_t D}23h/e2[~oYU_$Tuy)Υ[A҇韅\rct@R%1RՕ"!fnJ1HJWo a/P&OEq{VJᤢڧ, 4xt[=7x`'`Y&ߴ9HP/Y}B {CjѷA^ YkmLH?x\ Mo/7I(,q 2ֱ&jr9 W]iJw%/'pyh#R!#˫YVscl4\ˈ,F1&M YE_ڟϚvuA ; S BqD+kQeHGr{OG r}Etָ͎Lmrd ̻hJ{:ڳ%<_ҌίkWmu "SzC Jz͢ %G|_G 7Eg F #־=vRȣS 򄑍:kܝA'1dvZ+缑D dd\VQE?Mo6 1OÄ>Ң&/f?{}G G}V$G8P} nyqR=:=R]5:#tcֻ'75=Ʋ}PjiRs2aۗOW.4ekAJm'_cvZ!m/ϟ3imAjF?aG<s#eUȢD! eqK̳m4h-6z]W[%2Q'K ;9-zZWmvUxȷ CQ >ћrm׽!v|+k&xuZQrngA^Ѿ)S;79A@tU湐}-,l3@/:9Nj\Fh+Tz˿eZ@9 ΪgʷNyI5 ̞&2kfIKұɹr iR]'w8o0~'HoQ5EMxq&|v(3~:I?wZjK:UDwQDD޷|i@C,WmRIs;:T^vU ӛ< l1 ehg@ȣ )=-Cc \qP5҆W+'QL'vG_XM0"?FOŤcj~DVb#X xEX7$&]W XicLr=q2DA$aX2+H*tZq8S9'LR?|kWa<M=3Dqe_i>n4"U7>>yˬ3gCW҅7q'{mR2Yǩ~5-)9nXCN8JX+JFO9_t`4Lj--0<`{xrڈPp->ϧU;AS׶y}2R (UG!=9u[,)|$Zm9`U6f8fi#\ȩt gkLc(.l8ʍ>w꺌4/u .^dæЄZޝOqH#v_ݦXEݾ7Rr|hWF'}iM+'g6~!scKEs<_]޲-kOn4m'Mf*WI(6>KXRm --B1LMW qi*H U*7YNB9{Dݥ+Xxd;AB`-qŚ*X ?3I8~q4=zE6jo&6<:R$]}W'BƳ’s1%ƇMIGGT6/eKPAy&vսB}TsZ O5,+87&1ԟ;^x<9ًq@>:eIeTٟoJk6M$=^EUB띇b(mV+m6Sc3'[[beJQSB!Щ@B,3JRs`4$[|'FK9B(y4;Փrr % kO0躑 VgÞ/ C[4; ]x{L6=7۵%[Q0W5O;l,0Ƀe=Hhي>Bs8=QXOTZ3V[mҚq92:,\K/o ˠC2xt;G_կowRQ&c8${]V bZnCq?sd)ru.<`U0Tr.ϝ೧s8M(t},\ְ 1]5j[~nA/c@aPǭL9LFq7BVTq` K]2$vIQ}DE5i_R|tj]366jhr6l, 5DԼS­6ny#F"wa ZH8+EhiS&{HlH7k-Ùk c ʪ/0 =8qF>7Kbb`ѥEХL ̕U ( wH@aIЪ뫘FT"<-xQnooJ6?^OB>Uǽt  `P3x/b$ty!vYtƆ FO^vJѪ!Wsje=:iǵFf7"yN=&TNcM^߬bV13 *d2G8ߜ5 8c`;T Ps)e!e=ϯ%vJ'?)'9Q:+!;~tS.t;5g p0F!UR<8xKiX{h"g,%0^1Pq_t*t?y'x v.< ~착E(Lx vrE3iVϴ~-`>\ s|o|EJ` o' BOoz03(nlZ !^_2-ףz-P<d?S`wkႾE f`q)Q o^p~%ʉ>1b_TnzP꧲,iSEwAH8h z-.x?M[=\ݱ\R3ϡt2WDeVV8}|< B؁,(x}]AYz|"F43x?ƚɦO&<_9;D'{)2WJh9UaG* o{P'{ٖYIc͸+ҥise)~0HG2 )BՏk4V Gxם1-h"pLa~*zދ4w8u9zeVwgMDx%]߂?%ѾzQ)W mPY p;E(Wk]-79 Wf,bǻq $g?u!-F=;}w8 5-qOG3}-tTO ,d(:Uzh@b0Uu@VC/P .MҳNQ6lЕ-Q&6pӡ3;2Rm@r+yb&j/5!D&!/q*bVDoK%uGe4+R04s#r#7`jw´fkpyOPpJVܟs}۪ p@{כg(Ӊ@ߖi)!MCفR+ AWCz,PANM  skmbra lrK5Ht ] HdW0?Ba Z1 _4ʖqwet@ Ev^Eoy]ZwH5Vu4j+s=k0Xxt1|[فm[rہfz*aFhwq#Y_ŁX_g?rό#kI|BK2vUŲ"´A 9r]ÞW]Qu{};75 ݮwxYY4tAV 0_rIcvpU>Ϙp!w-@s2R79aGmG.~} h#aoPK E`mVjbFWT׆k ?:8a3lXcr7 cO,;72TWG5>{^IzsNq@a3h (W8:׍:ѵy(30{ $Tu=etL^ C܆T:r4P-k+tPD<$ ߡ Ifa cN|P٦(x|o6*by/N჊ؕ;5 $5#8*'n xNOm&CC#i M7]fbb&'Cuc"QGЁBd>Z r 9c*qP? Vw=၄.ȨM  y2iѭ\Аw#̐&<8ѽ}|oX{7?-Yǥ}e \ 4s;mn4}e+婓z/ƑDqߧ vŮ.v@fE~oV]/0MsOD"3_cCcu3^c3zH ?d!lĮ_ۏ_/ r;zl.؝Lg#)D8+!PTh63kì/|þ[<2@g5u?0?w-uEA^@O\ճ՟|B \"zAtL3h?'Fa" 8腭KBZhl@!1iw!ڒ>ԌlITCǝ\&ABӳbLiS)uB" 04Qr˫42b[!oτTp0&>QB./:gYΚr[֯=*`yk􄾊,CvuF* `ą/Q=BJOXmu~~=ll+ ๒z|7Se_zA:ad .%9G;6'=NDB3ĨX_U=C}&ll74#.tN5&c {dU^\B/Mk5nǐ`͘!"xe[arq<<.F`u-.z,)7QQ 9i$LZhN=2lC+Xy8hΎ)L_nl7k3a:'?/'wa)õqz稴:IzR_*^U6;Yw5h0DdfVDތ֋r~~*2-2Sdt+-E%ݜh#ʧB^.tg!V@d<&O Vk- T`?^zAT &8V8~ʩH 6N:ah "gդLXar\i|%Qk K_uXǃAͩb#Ă%H*s>dk&?CfC= l<=Y|,=A^fb ے,#gp}_qHL2t9t={Z&/~S9!`yDuMMF0jP|ǜqv7go\LKߏ*,alw߃+b,#nb'Z) .QJ[S#e_[6L=lQqfNgT`FY=5tֺ挡tgQ3u.*B)Mf=Q=Qv9б_%,%Z j_;! soiM?Ggk1/zr}&;E 3 f 954Gf^ ~ѹePk"n6j+GT&`E˝/Kr.TU1kG4u6Ü*砱W~92-<,#-JGWL,+FeSۓԇgK`|E 2Z@߽y$9B1靡Gu)~W Ǽ5gt#ٕ ""[єt4CCی;u%3eXͼۢ"˂';չgL f٩JҳER1`+e #h(5dŒb :`ɻ8Y,yq-R/pBy":Kg3قygEH=[EyT$]!s̉I|ɎI*21nR)-KpbQ2@m ŵ^ w3`k0~CU ,ġa㄰ɧ-P2̝ǪoxMg/L[ ss66[LJn 5/jm1= 0>@ߗ6.ƴͻuX$=Ё)O?%bK苻2>>}[NRse(|wHyj7pe(m-k[=t%I([7| F''ir>fD 9jsZviD<ա+2u[ɟ!ȶ6:`%=ˏsy9k?Rg*@=>AQEp&i eSp8h]8?8#A=Pz]iwA"x22µ(tM;$Q"'%[erb<pY]g or]g4uP[ϡ6B_nЋ]7/AƎj" ;8ZX[[_ [\[O5wM&y~ #er5 $6J,'G9χe&޲{SG@ih )iR\\'N Yy\̷Kayv~86SWJ_Nm8P:KzvdkuQb$T<'ܖ/SK嫊NmV=M6 i[b6@q, 9Zp15B\Γ_ː^=y|G͵{g o6-Wu etM\( )?C)PS_e#SHIVJԳ@u_sDMs0 |P[ތup3o0ʹ"_9CdT L8n=Xpl"R >`Tlfo5w\ :$W\4.ٓ[ܞA(1$59ڏSK s珞ܖaia(Rq{]/X&!Fk^^+73=X/vߏG!XcPC fj:cw[}bw")i2vO&SYj #~ lt&7c#Nm.}C}zB!PĬ/T6JhbGAWjZGsk %{. kा~ߴ]jp͇E@0^-欈l ~΂X*ed$$^_Gy``d$(Rn•~6Q Y0li7wޞ-Mm3:w5u`UrW'aK&.֗ί]#Z`+Ged{cFQ:r31AiziS ͈YMe:~&$76pUh\t \g=K`$Oq\^vC[ާvG-ۦ0eQ˧,ɓxj sN  *[q]wU^QN04_|GZUJ*˹"o)FφE5Qj!_jJQcg&&v ]'T5?xnPpbHl"f; K?s\x(QrzBaP_7Z/#ּ9ݶxy^X!m6G ?x#Uzh%' R-+"i iGs<ٽb?p㈧Aȉ.4χc;cv-*Hp顮>/2ly;ju` 0g·gjbl"zU 6ʻ򦞋ڴ@cyNAa,曩s`K5,XX6;fF)P]im~젚:YUaY̨]IjKIkUux(h x vybS%IK iV~aRjԬmf%jtRgѱpQ)?pع\pvwr K7$\4,c(`ūy9{iNnsїl\E {ʟ<.JY[b}C S㤧vJֺò΢,ȡ &ܒX{0˚Iv§6S9oU\8 "L!ŇND^rmlv):ݧZl,η8jPӊ9{g2iԾA luT螼W\E+M&Ւ`}%+Q_S p5Q:R݈_40LXoIζ:qݦv?)ك_:pBwH'tvx?\ZGbuvb)`I`%C?}\eA^pZM>^eut Sgx~ģ+ϵї3; ryߪT`{8ʑ%UužAƋsXybi*>TT#}E>'A_?C__ ;x#=Q :q\&HYK')AA\h[#= &зm@{^Qңwfc.xdY([Q*H0rEF`]%ZQ0ڬm`՚E{kXSO6.I4Dutix"n_|ꔁs':%X)0ŮW!AT:%6%hV.FE*6{4I;m|XBXrMLϳ `cR";;4&T?9==Ķm;Ll۶mv2w]YY'υ`;R] nѮk*}IC&߲[xi rez5 5SSԖ~3Ҕt0}kϙ;6˧AQ`enܲ "k=X!TFy[ٶ%tѱ1zFGNl[ѝA; gݕ{Q(z~^(qoڦ& c|Snt#.5_[i| 3(DqR>V,O1aA;YV;Q{ rr Ʉ|z 9C#n3t|81 V \WXs:ͼs)+6=ir [ѰN> *{̝Svv%BR>n˕tSwxlO=D΋(uIп4c|y ?D Lx]"@}cSe  cQ<uPI+J(* 5\P8j9e[Ӂ]q甯3nF |7Ed`t[q7/A=ur0{ ǿRQ?{bOwqDQLaykC.}m6 [G=>iR8 {F' V*IV&3U闗N!?Y }:ّ< ԩ E&ԣJ1h,J$cR:WQ(wo) @~ Cq˜Q&`Wb~Ŵym^zz\^(K`Ix݀zu 30 dutުb͉vR=N>(CBŁ_ƚV&uV/rx8E~)QՊ ɫչMݮ8 eF UAуkjU7yH ?Y_0a0N4TE|G1Pgi˸HZ 9atp)9p ZO &Qxy?"(y:&$7'=bGAc8LpG 2Y4f֯CSv#%v{K.0uKY./a+ʋ1.c 4~qbs7**4#$s'yoEOT!.3:UXi`q۝Po/2dGk z~ qf Yn19z,1= (j6cb*y;9lFf1>XW ~вiIT΋2few,Yy;gl;-n:vP(L]8t eh_.J[?0I@D}{3QpdMPGq NR 癸hw, l<0UAFۡPx{ 3%9 v5{KKn<E*\1:Yf4wq\U mYÌY2U/;K̔#㹈]yd/zKg( 0e)s-ܳ@ƞ/Q+xy\ySxe6"S0Ӳv~QA[=#1-vsͥ0j_pnAhO ?*~O=5x<5! L0;M !e edN'n1|Xi71d]ҟ4F7@&vy+ *}d7, Z\ʷcc~#o@`aF$+ m_LfDEY5#Z) <5=0*DUeտ.q+*ͶZҌf0V2zL3x=@4b B}CR~ "Б! aҸ\4ta$@ /tL_ d'UjdaX 4d^4@)bTssx&}YB`2F.}GJ{yVqjF٩jCi5qѻΣ_K̸&cA d/" IȦﵭ>K6SY3 ,zy &`?"8L,=9r:\7.;*ƕUD Aў~=AfPqjїb/ OP#=Trm8˲ў⢽Ml&⢐l}a|ND%UZMmE ޼Q|ʌ.=yHt2D\GT= Ia\!8xD<hInMQ'Y OM}xoDmz?HSnTzy2J#Il`@gSd2Rneݫ/+3Er!/=F/y H2w$)(C!TAȸ/V]\)kv6- ƺG@UCA") XsqQ܄oO+ +tl  ]5`K 㿽't߆Obה ʺٮKx?P[7Gυ4ԝk/2r[Tt ҽ$f['"eb7}`ǰzE}r,ïIHTf_?\s& 朰ks鯻uBw[ć]^?_ -_CE`vWoV2B91=㉊55Yy@s 3g-OǵEc/< ^HhpYK|Gߔ>A;ɎMF] -7yogWUd#909" yT4hY@"Up?L{ pN v,r"ݵ6q[`_F2i3O?j9iR4!9|mnX ,f?4_wimlĸ|jp4U:"boW7M9`4N[Z#˟\A*VyL-KBU4>Mtܦ6E6#.ߒ { | E,):o ټ2V*!`cT(@OHU zkGշgFItP@Z'<^G4M B:fȐ]RtwYP! 4PہHӷX2/2݉1i9.6;K؄h'%h!aߵcgXak@CUWaf$M։d%[K)-̮΄OH`:hz΄G]QW~w#! (씳Qe7sMf˱472( $\ؕ߈;1|E;z(WlIlzV!h}WwG(î$b G{ ҕ"ÅiſYqi C[ j#c]hY:HKDoB]Ș!]Jrͺ0t;e䤕7zv60LwJè?3p-g{:sL;m蝺odžRLgHk W9#gc *ⷔ)FǪsb@i)# 2v¨?À8kl{ 0.lzۼ=2VeOI[у֨pme>Qpa7>p?+ܖ-D[BvXE>6? L(HNs<ڐ ~OahJ߻ $y+,̀1T(pVS e,aъlj@ȹ$7l=?<eϹ1FiaԄ6fGm+r<Ѐgc6Hs"B۩DeNAH\^xPC0H .EifS2u3o;G%:?H.LPUp@X94]+Ԯ ~k^mҵ (o~Ìl>2"bFQVPThb6Kptbӭ: m: pcmd*>nr}|=jWBkm9I&c=?}\τw3'A*֮Ug,Xg6rV?ҲR{vei5N}6#^Ϳ힗r2)(Q< -|m0፩Ll(ҥN7L찫M"`0OE.eGƦPXI~} 箬2c'amw|KJpͶ3#  y g_Y;Hqe4 {}9MsO:i% jpZ/WOJݰe+N!õ[ g_oǾOܝ' Umӷb۟w sos骪㟗 >\z龟/_owzݟmט:r_e{ׇgv_Ӿ,cn<__ǾO.l ` |ڐw9j KHUݟzR[T?}D 껮:i t.>_/z;E~iJo8x/o9GE@S9Min:ȚiA&]qR˵F>)z;(b2mwfR6\N!] }]L1}͌_ ;n8ߒw8k=Lz1Ȼp6m {<խy/xqOS/2xR\ %݄1БM _+ ϋ}BY6ؾj52}CVWUͰ3p ebK{kҗ&fKY 6J {)WƵ3n|Z }f4S?*!5VoUg;N#tn=5.d3  s12|pӿ(Oxw;% 8#Dy3yT[ 81 -z]jW1uJQm ,,5]3M:ؘ m޾M3gG dc }ů:QkGݶy#M"$ J[:buX_g岗Jsu1UP|#|q%WJ uQ0ɛ+c, 7E+KoC,>Ja$p9ys`v0r>N<7 lo)JO6%w (wuQu&EJص.oq[-v :e~j|0Bixro:F^L"U;4E2վ9g ~.y,bha=nV1 EUs)b[a ,![zzsu6, KRp˙!'vMu^"R˛och _l?eu`tlr Tkji:N-\njEr :DNUfGj8:*rSfCTtQ5խkq#Y7ғڗ?Kݦ|_>||#g݇$hmM[f?n:&N?qOKC[zsƸުN3o;ӓkg>a(;K鍫L%%LĵIۨz*g'_λ'_әjIw.[Ze& ;s&Y97 /+5: e2ZbeEGZ(1Ww6>%憔6K =syL_n>z$s^;- x`KL 9 yXy=r,/b L"_VE 똂G2mtA^YeN2ۢ"v?٨^o>$`.dL@` ~r\woə!r de#7Exes."br2 %ӥ k(պͼ?˘Nq;IXdĈX`XzK'5ąl2>Nm0M52[>j:DڐXV`4 /K+A tH\T0~ٞ0!^7wԊO@4K'aId)'qN|R1LAj:* ӚPTqld(tH>$r?Gi~fxW(ڍUsMS5foЂPGG>졛PIAjݣUP4`eL:6zTu[D?M.P`O\evY$ v^c@( 4vϟK!%;dCO z'JZra[AP;WAV 7i Q_ {Ln!ǮhS6]_1 `ސ/\*Rf,U}2% 2>nCbk2^hu.ts ט`/2y #h[P o_z-58'2%9sjEC#g3E p028L@=RBBN[mUE`P DNGw7u>^d yaEtj84#g0ق9,ҨKF+귤z7x#ͮ7{3Xo{ԖǗVJϒd+οYQ 5hC,)^~k^g@ vݹ{W*aڃ9i[c02"/i:up{h UK^JWم NDhQ)%R} ~5R_Dy.xG:Um-n5zCPSmD~ʖi}Vq)}/Ԃ|jT;|iXĢ)E.f?xh~ 7scѶ|%tMxT*2äo InQ᭨q5m#C1M@U#dT Ӡfb3 ˦fMo21@3L_cSƠao]x_x˿\*!xz{wͥAK`˔:^9ROžߜa_6Dw} aY5*2فQ.ˈq2 W0׻Zu[[Γ=(`ɡfS:׻o^^GkEzv <3pw;l1JZo9əqib6b?-'I\{*B{:)^aN06Qh>&D3qQUyY D&]_bo4g"cL Mg -EbU#JDd$|YBhFO , zae%CWg]CC]'i_0f6ߝB?-@{[9nzR(̩͘`jI++ccFLbVȊrDC~/"Ax2MjM9$g$6d! lkGL̊`DK'`@}c~ӧ۞F'5|qΒdb%G}=t|=!CbNfzk|^2aV ƭ HdޢI6O-xI/+KgJh n=N(m&7hue^M flx_" ^ Q\>JI\f( 8ݞWN-[jd}=֙$CpêLuRs.Tii^W$&صIUe'́sH~רA-"lxwQ`4eIjX ^<X IRLË]N 4*x5O%wn%M 0~˦#ꊡԲ ߤJCbT̔D]wɝ1ӼvsOZ( %Ij2Δ_i|XJ ϊ=krvYF06S[W@JUr߹c::SzT ^ާcZ-# ?Ф W}N-oo2;5IHQ,Df!YpWl> ;¬F:%x{=H9PA_ Qb\atQR"eƔn5-Up7Յ޺ 6V69sNFوݾ ވ)+1o+䙀1澔(%4%N4'qAFy(@XAze^MnH<_IŻfme*~T΋1&Pְ*Lw**ˉmu'Ηbdˉ@?|y e-,Ayax ݨE:0jߗJ-VTJ<@pT)=qiN)cGrTK_An[_4$Q҉WG2C%&TrV#7k8U=QTT/^\{7WR5]"LuS֋"zmU@C%;R{ *1 XTT2Lb6iPW3/Ф5pRc>zYY-2J8i z!#UP:W 22' xTCe{X;e+% p Dm,mɄNm=1ܫ, K;4WE K;@B M%aMyxWTa 5}EY͡Ӳ#8vïZ.@y'43 ͥ%좹nǍ[>C .NG$;xA@m_ /.> G(p" ě`_7tҋUxdf5p@tQpQm.Nb ~g<ٲ~ƒ&'W.bnjQ` ^ؾe,ᷚ{ Tϟ{.WN ҈rW~uKU&⎟y=y%fש v?ѱ4}Ԟ(pa0$OIdZ9OAmh'2 [lt{ՖG|xySRc4agI}i]1a./ xY{۳ Hƴ5pH.1'|.u ~*grarg;eS.UϬw~@іGxImG_}Esc7$hZFCEPUQAU+m(]k=JuCw 5s &~4L8R7lL~ xF,:(][SއOeIs:EIh3B^L}B~gh %Pv$wSsF..JLzs//%=9f\Fki|7vrϵ{`NiR;%U+QQlE$֧K+i/60.=s=~U4{<0) V@!s- ijϢd8B>wACrddV ^bD4E_<}5pv2KѮW +MEH#ut[ ^ZSbd|!LȸGTos Ys%bo>oېCe`e'>Evu\=&#Ҝ 46$;kCg fR2uiDl]sId/RivVw[xUu}Myot}~xTS(OP$$X}.gHhqGђ̱_=+RQKEZv"t mJN wTK-3,;c餼LYiyZM.*hUέ7-/'&.G"Y=Fs*<@ [1b lߊ=(#M^WCyf8hl:f_dV"*wh:oٷX$D7w&|Y/ >=mdc?:"4ɥ)^tGr4[GBwo/lI&%|i>)MUH`&K6gP^֡e?v@CƼV>vm 3/,̧]16J|:a=-ʶϸةOD̥-wM4]B?TE8(6%x/9x Ǯ`%[?ʇy$N&%< 0ټ3"*G=ox( Z8>n~[{',t忛'G|z+RhHkK 8$C/H'q{_Bヹ!᩹6s}ÙMuxDqCowҡÌg^*Yk S@ zy QhB: 0W(y7z]; 16]:X//U2 ZK^r Hh]{<شo~(~jS >PAzCzdOc,,7a!JV3<{d":a7X?ߡھ%>ݳ,˘\`Zuk&z!T2YlY 7l9嵢$g{cZfJ >Y qIZ #8 `2/sEu~,`0Ipe&nwi8'Y<;Y&5TM6RcEfAt^.= WjnXvWtkKHheJ˴?;,Y% C/0 4hsv Ac7!d0ɍ`VEy.B`hWRnӎR6s!S۹TEKlԫv@x|pZ%E-j84 }8آwe8mm AE#zTe4hnwyJf:Qg*Fgf\*? |:Pw0'JѲsVyR!g2t4`P|Gjj2q$2&E/M:xΙLٰLl|4Rϻ".҄L#3Xl dљl?&=W)߮[PNWYC _M&ЬfQzqz W:>բ' :*3x]H3"!u{#30tQLGid,˝- ĺ(S+քLWl6E'1g.,`w[S*5GKZ T=%'N#%k-var}8ҷ.z/- N+i 2EېҤb6rSzezrP]A8[;ʞu ;a./g]G5g2Bl' qc|%_\"uVPNWɻ;2$`Yì4/H}56xԻf7Cu.O<*?k.^Zj+w`˝ v\{}Hʅ'xu)'ǓS3Gps},חs{WY[B8nwH`fӱwk34ל0A8= *91lBkusve7mk;ŭWS c7q~?*b3cf$?>1%w:U>4OZz?Eh]iMS磅"EI )T@}J| n8!!.Y-u?_ <[m =)_}؟Fh?Lޏϋ^UXl~\;[&X(+Q9:#!)%g +*$Kgi Uz5 z)9O1Q:B~^V;grQFu2;P@BT*74|{(-^QCϝF(˿=w D XĥÁ"8;{/RGKSrNy!:pTOu#W7Z=ӳǎ0J+xS?QU `MYQez{+o˯ 8jӗRr='pbȀU)9|xG`}t5qbkM⿮%6( )`ŘwIKw$8|WyܧTZ!/fiC{J% n\g W9e;LwO F VO4Uђ8סJt%[.5<#4|%5D ʰx sM&Nɾ3 4D:FxӯEǜT1p|^ ]}عeyYU^7ޣ=4S 11z+aiw'}+. =yoW-m;ꩢ8leg^&m$ǡ~B^ $Xj mVdmJl7$qྖG\s)Lhk՟ 8v\T,q)\&2G YRDsWLTE9}3j +J!aƖ^]͊b7NI5^7fg($g ވJHt?Xd(M5h7H,QMRrm%gEFMW2cs"(aSI N:&И`Шјbg4S%e:7wryGh3O:S`4ʗѱL#rxo{_j kX&e K@CF.k4O=PZ@"Wd92c2}qaJ͵SMB˽ O*4 2XF/W̢ICYc_Z őmuŌ";ڴg*M}{5Ú !y\[%‚sm`KZְN[΄`:I47j١].%tx._Ĺp7X0VDoe KSbl`ʋZv:giaBԀ,>N<.'cuK d1Zx޼1XX#\?%~fh-ăxrɶA4} v8;MVTI4UELB+>j޾n ᢜx<~mQY=NeE%3Q;\- /.WߕysoI}3mXmsy8 YfRbyiqK ++S6K5vݚ gbzR{UDO:;!I}phytX )hltU_ww 4幝GԐW#PTna#B2KY<7CtÇ۠laXSy8Gnx'tk1{2`˸<Ãxo?ҷJ ,`DVMtsD1w};E^xZVŨ*xrGI=&\|.-ea>gXLg 2i}Ś nX z<ůw%"fHۻ?*$>;@L՚===Q"[fk+Qb7Rgvue8y/dJnKL [ʁ|.qhJ[dj\K_d+sT1!;tX?1g/wٶSɤ] iV#dl/poZl.BS2m1EɐG)BPfbi3cAY'?䡂~ .*4v }@r3K 3:+ڲ KY6ҏ+'ZDm KYDʓNU4\ċ!Ӷh&R)"B]_1q7QYѺ?S GDnG;9ݨrs Դ^6y}2{X8a #]f|, )"G@u&f„ZR~Q+ÇSC8"fGĔJ0zʄ 9>ZD<O-*ϰ>":լZ;,%R'Q*B$%U74;Ar\PE$6tp .K 6=F}y=Vs` &[ jg㯽Ac.=[Ew)@7&=ВZ ijY0ۂaUQ6<.eW(5ϛ/oHfǺQQEE e_ʜ zi= fM$vmdU͸ pؽpwq\j.+qUE/AF+3'g`B:*?r\`ur^*pRQ a)V["m&\iK$ԺH,uFk-{wsz -d5LJֽEԾK$M @Qh;\ugQSsMf;OW< b1AL(JxTQ)5f>d YQe>h-1*@)_%tHrn%j߆\*Ul.UDfRәʿlwcNWOcĎwR G۽AV˒'*83\oD|sx`3 H=_㙸BI/MF}`u1~p'J3Zcw| |x d3EsrQoT^)xTG|GuE Sxgm[vIm4͊xjpDNԒAWm(lBgnDlˢꪶ &ݫ|BU8_⿪ϻunC;x0q/$t6v-6E(g0E=h|v)DM a>q9z#HgWN[?[;I V{kTMN{~ru"z @`*;?W$_0,/^fAQw#=3=U!g/|? v8M6{UH!"z}|%QgW]ԺW>G ~<$i0!+s E ZrTGso$6,WR^:,GDb(jwX@r=\w/TvT^-: +!fMMT}"_IеÍ({SyYq2H݆m񲸚Mȡ;@:mRONoվT[F .{Ey+}jI`F_</ԻrO}M{c,0~RME06/X^3@x4ŀ}ȗ> Fpd $L??>Y9ι!{jJS|S*}lxPQN2up"%i澗ab4ZRcJ~M'xϚ7"t̫."P:fP& }&~{--{wp|E%޷"}g*|s?ժ{;, uY3t_/L5>/xg{j$%GYlHSy%[@M\ɤ}QP`)^;+均 >_vHAfg{6dn;)ֹlհy߳zX_.~ix8o"Vf05Tc[G'4+uә hppO2 8xq esi5r&\+>\./Z|~omg) _{ ݢ ]j(?c *a$@XDw*2 su4'8<,ۋ?Z`XNCOiDo3_u`MCхb֠lFFYx@!}89vFS6qw<{l\=gQZlA=nFOK`M4g47.и$p[ʦn)OKܛ*")wH S˜ /*2e V?W޾ P./`C٫ނBI囇Am+1 ?'? ( }.:錀+=QֻUbǶOi-3_`jQs%alz=UΨl[:i`X84,_A!hLWdQM}N7`r {}RL| ^UV?.}S|h0eKB+<;uLP;UqBh aA$<ސ\_G9"GZwID{XTaC&L_OYLȌ.٤ڦ$FQp"0&o#4+YrI#`AM#ee,zؤ?UcB"0E8cxXO0+5v*⏡;)e45.\OJ >!pEփ3M ud)0 ,v δEmr:܃?izEDW%/Ζyu.Mg{AU-6.H ^dHx]*<p۾Z#u7~ߴJpr?2ShwJp32%>]$VbYaimz܆2LmE\45q?iq.U!CggoӞNQU3JD33IuC%!77 ,hޙ,꒫{vGJ[61m;cR.zeoԉGׁm^Q@ÝDd>JBA$r\.п7y8t›y5᳠|}noF|>"f$7 s%#*@ `|k%qNtG6Mh|i/JS^4ixj=1NPzS\E}a|`ī>@&BuZ+e0'j7v*2⪖XCK aړ C)$V!5} 2M?-5%I(23kl>j\ mA:),f8KmD?L%UrRMX6ȈT:;|׉To!?\1^7P=`Sԋ(pQ ~GHNٍ=1^7uo*2.mf_~])L#;<]/};i}ZN/+Yg'#[zԦҺvqLb˙Wf=ן?.u0壍 n.=# $B8-ǁuõ(r?겓[3]ɊAs,o#Zf~F($"bhME*?s,i%!6Zk>KmC`t⌡z4Njp9O)i+n]kr'abb aGo$'G|=!wbE/+J\\  h]tOfh1˖Wߛ_Cs$8Z~N]RВW_s4mC//=M+wdnIIK - uUu;M=qpzݾYH1[GSQ`l^oηÃ5k!pP;::H9qZҷM"^U[դΛĵ'.Mo4^is$=O%DaSRZA2Ko'%R6/ g\LuU}3k; Vߪg\)6?u$>I:]yû>/[!Sʻ-M|7EZY(@d4/#6m{R'{]S u-@Lj”l+`ҎH# CNLc0u9\wv Smiu&ӊK<-^WCE_\B&f JvEP.쉁Ņxՠn;/Hja8 tH* r/mg!{!L8榣})ЎC39͹d!]T c~5l7SoijP{Q PLt R~]ّdEia/Il؛m\KF쒈14Uz&QP}A_D'Yr=`9_(*gLJ㹂H9I%cfi%oִ5Kv ?(3IdMkE5w"ud%%_@j&ZҀ_pI%*l7QRNHԔr~{H}rMn:OBk8 5|~֦/Vg CAnA&AWO:Սer9J|83HT:^`{uZE^ kgm UcڌLؔ 1?qb(z8^]]nA~$^(p96eGϔ??Nu%b8;R,EȖ) *2n+$g{M尬j8Ւ2ۉMz1hʺ1Z+FH rJI1]5mFHSaEǴ<#1uIm5]DΓS^Y;oZ9(^] 8R܈0Q"fMo]%#1wRfB+#b0ack)>|.6N^Sw}=W#8[3TR rO`]5qCL #&)K2z@l(0iˑ#"G@_ڎ@,SMZmS2jGࣀmޒp0B.XE—eEC)GS4/}N69NL{paW qX!ZC{jB O|W_$ A]G]-!OJRc|$";Z:-W49M9i$PWG0^BPybUeɅhHC)0펻d߲S~l_}[Ę]_q$/udߛt>j:yA {Ehf)p(+bYLW̝z򡊂,ul1Ygy#̅.5n35C멳m|+@˭'LvA 4HX|ÙxdYnG0Q$ `*(k{UeC CHS~7 x ڒC*" k8{#DiXmg˫UJ-*$jY߾W{lm+6-v&@ -a4:d7:йK0՚oӦC%g#')EHy8p_\Kf r(sX"x%ewPBTof_N~] ̺3~ľH}a!Pm JL,oizKA%GS; =l_e /)!Z`ҡ ,#Hܒ䯬P{od .)& siG8yך˷Ss(QhzO3jjշ㸼1!!DN+T_jӄzWȨ:vȍ]!%6"D66Bʃѝ. GfI|j #\_74UU=@kJ ǮnmJRS5̡CuYf)6Me`xzn3&D@BՄ @\Y3c` - δ~Y7\8~xV;iYdi\ *ܪKNDi@3N ZW4{0@͞^%/7UQtEN* _VC6WoC~+G9ȝ? ,*$U&sUA:H0@cQ!VgG+ (1t_^U7gP+/I`O9wq/> $)g6$s?w dڒĭm`%Ll6D?dzPy Q&saQ S&7ƱYa-lI)p)- ɮ0<];^ Qs+ 4F!.?Qi7C- ۄwGQیY˻^ruf-.B)lgIB䓐2D|Wr;Yg%wv{^b!W泛*4è⠻93h;2<ٻdXSeꩨuʣh<;%XhhnǾU7A!cV*+{=isb>wFI@~B:x56׽2N3h`GZ7[`X30:r ^(T5uawrC7h伩2W8 FUow}; [a/ѬS1)Sg>>dݟI;q\8t'Yyg?T:$W}8mWqy+x&*ت=EAy.5e%'M @g/xs"5"9-^j$ڟZnm#X=qH,/X?^\#_IͧBGvhtż6HĿBװ%*t(]݂Z,9E#R$t }'rh4 Jə5i(j+@}wSl%*(`rioIF\46-ɂU9xQD0RȕLvR XT5p8˪B ċnUJX">x5?pQUXQ,˶,[Kv&AT g#7Voj {M9B8UP!ʩkdZK~cCDIg<]d8dY;[n8X|"ްdSl: eg>"bc9捲SI=鑥MSĢ*IPaQ;=ñ8i4milm۶m۶m=|?rkYaѩ-20f?EUYw>^.I?`!5=#*m\XC'xVT1q9`s> Y7f}[@8%8OsMl&9u2Q0pr.5TqP J6h9w٘Q~R0l8mDEGX0`X4ѼgQ>n ꕁL#A-jV2k(uy)?I7;c0S2S#/ZK9Ys BϜFy w45Si֋I93g1+|%|6(@\$ב[i1O8!O_w%Uk?LvFpq,0_p8*|*&ya13Xr/sd\C?i0Y *^=9#okLAZ\ف`s6E2$zG;nXu~_eE/׫Q"EyC]5BBbG`lU#?]-^|EABh`2챹\Zq < hԬ/]}Ot%BXC lk"+<NV`g|1$ܩu_v(v$KC)Z@>ϡsi\cW|x̌ [LM Ƞ#rYmQ;0DYxE/#.d*Ddm AD `UVWVhr:3<Xt^4Ou|O?i *x,g$\g6ȒĜHJZNp<ح$r.e 1$Su.,WLPK ]gj{;{ G⇴a.>Cg]ư7m5mDXD:%.l@E?C\K*Jq9bgݘ8WM|9ܟaA%CHp47:9L?_>DiT$㮬Dbk=^1z"tn NS^CGUaUJqKi7UŋLx~,"4ZEiv>nR YХapnCir3tgThNE'jPs*՟ 1+źwWg ub8<]Sch $܉}oӼ5MZTUa=N@=ɱ+scCnq8~\UwoF}VÃK5}1f+"FTh1P8YJCН>´Chת qVDkKzʬf<@j`S>=B9[Bq(}}plqT Mwg9q\u1'pC3 8N:RK/iU e^8['&=q뭻λ;My T LkvLut4:qiRiAu2P*m%1^V~̹&d^/6Z\m|yFuA_In [uip( (fLn h!].RNJE\C tշ 'hL+ OUb;Y6+,8oD(bAKߢ#/Sz Oe# 848T7f G}'ҠJovvT6jZv`45~ߚK:uJW߾YRQf) wLqT2݄):8`T8( :ep9:aEB{` .0jv\I zA]ɮ?7/>'1z{m-.T(wEϠ}ykȍ}ғesDzAf%ij6Z58WcJzNn+REoꈏ`;qgU.K?mWYmwӜb3jE5b@ [u  lL/NpmW>2 1F- 'jKAr3@0^ \>?G~B˰\[60CKj0o0{.rcUn!&_r;GԠU- AC\Gc]!CiӁtA{en6^;4kG;[Ժ QL̗UDćUjr usfՂ Ԗ8 ve S~' ,HY? AN>ߙ9܍_6;)VaΐKFLxrFN!.ؕ?:G*bd /F-Mx !i>*/&K;"A"*ػ-όBIH=0'F/LZx}l#_ dHA2dbS@w !5*J!d*b筤 mEs $H3]r U0RO <`@a[5 }K b\8 ˜hqޅ^<=A n7ŹC αj>s;/}gT 5ޱ^A~HȜ0xbm CӼ0,?O9&\K4[0S{ǒ2fQlFU `aԗ|"|VIlbId :9P4yA٫ۦ)Ӫb X4Mf^c/ydS؜aZ h2H1nY:b1ɫ >{G}{kNc9^77k]vBn)@R 翙}Չi12@oJ%.0aB)ًܮ(Ъ\4#DcFrԪHaj'A H@~9J+ ZsVC o$2elNFY 8SF/(aW[2V#ÝXk1Bu\lQ'KG6vh\ #̮wb?jPA` &Uҽ=HJ;bg>\͐` o"gp6o5Є=tDೞ1bS m{kIP^1E7Pu:`J(' T< HH('?<gWuS DגoCNB5Tߣa.m]*SÒ567Xqu)&haܿSԽL[AY1n lT^CڞrH,=`2h_*6yhs%)196LZYCeԛw] Pz%YnnPSҙ85]#L,eYքK5PM!JJ*2$yj, FBN֖~dZ\gG0oGN*X˸癄3ܞ^kr]akgKmJ>[z%e<Wwi*kvd =96~{K>x,܂ޘ%K+^cB113<VXtEZ3%Kz)H /QzOfq+egEcMX΋5C1pllu\{^>vC{Z<{YD龚E%=Oo;h3ec`Dzs&R/W/K70Yi'nvR'x坆JPN`lkꮽonGP: A्xMɈCo _%NltZ$A*ievd?gỀO*Q v!{'/0wM;'+7~֞;L0ܯ=ˉ ;v`e<ڻF%k9uI2mC1H$Lggs}R63̈́WK'ztlcKNkUϿPl85T=:ٛq^D3Zꇏn yKvmomx_oCgT&%>Э J,F ';ߕrpYEd4'E, ? kjCIv$]f[>~zԈLBpa2Wܷ)R|WAW;U}p3eI )ZdX} %Y]sg`.R w=:Lgxo"z5mKkgSZۗN#$B1fwԔ|/bhq,՞<}7M^ lτYQ_}={nӐwظ{^BO4rf}[t2&Jun[dsOHnĞr*,2vH>~ /ebps)|; R,8b]\L4iMWm6"<@>+p,r<|:ם(;Yd8.ϕor֧}-gart)Ƴ[{O'gۭ$W2lP6ڱM@34-36rp76e迿ؙXX9czickSG3"6Nvgb斎Db"Ɔ6F||pX׌2֤M/I28I߿B%mo6ECŞӼݷx%E ~[jg>z}|p=}>[)}-Y_{?}EwKy$x Y(XܒrϦi(}1G7m]Bm^ $-3볓GK_2͵ڰ+މS e c3J}>>L5|PkJlL\}R]iG:bew=);1|'!sswE{ɲբOFAƳnsu+!gbSlG—X'V͟U cgB=,Ihm֒t URgu],eY5u%WXY8~w+~9T> n7jrr*7>ky]Sk84p }jTWIDBy]7XiR :kp/˄qɽ&fEU#QJ׊ӜvH&1Q;t;W/䴷B1iMJ%[m~}eSaR.!N%Shk yc"tWSZIŽժcmҺw}]juX9WxۏwIL~eL>Y&;sښ>*uVRgCXlװ#YeE#keI*MɬN\Fr:|4gL'쬭%UwY|"I=) 1ˑ [|{L'ɂKWxD|''y˧#^0E&%Fؗm}NYA~WVRh j\}{T}pvsVtB8~J‘b@&Ql|N.JO'n^S"үU)=ujm4snB !@8X#GJ@:O\)mսLM8'6k~i_gyӈ?Sos!Glf,$ů֒D`Ԋ$JdSD7ZZyf5?Hb&-鬖;mxșͨhkRSO{٤2|G^V&I>K}1MJ(hw#q2psK(\,sN`Hc?-.'L{' <&_5$ ;$,ޗ(9%DI=AHfK45.Xx)djPuDBkHSdă"'0ѣɚR|͟)>JA3͈9+_((1Xv`OĎo3|?b?ӟlX%"W9,f*Fi}ϩ!/`7~ܶ+2T'qtYK@y,G~8,%崂lvh8=*7#t=|dS *+?{錯Fa)3#'˹kT~$9]rJP$5YHF[@3%DRIxD8ꯈM}'>' "j)ދ1"(7p[w5Q Yѹ0u\Zɥ ,ܮ\xFkʊɏ$$RsiPVl;і/[օ|u\P )L>WU(+Toa47qȗMCsH*1@caK@Qpců1eDxDAi嶱aM@q0`NO Fi~ⳣBAD)Bu8\ȣ,7bۖ2DtaqrW;lگYh4bkY˔\{yv^}lmAYhm?Ϲ>{t{.S02)|y)s~e+RʔMMYʌjgnCt}I߽ѳ$1\Q3tkudy/L)JZ,>Y"B61HUC%\4Yt'ML ?X:F4i򉩢 1Ό'#t4l'L1iagAin/6&lc~^3_֦}GtWP8@snϧRϋ[C gk\=apD@cJTao!cj.nųk5Qz\n⭴S%4\쵊W(zأ.7;3M-t>6&"|qFp`txx<W~TD y$Dh'[CĹףEH\WV . A[rIp#ݬUbR|'@؁/<َI\D)pEcG1U'?tlTřMPS8FEE2A~ۊkzwcڟD9 AdFM֐_vp:Cf.ŸNn-8NE{~qOp :),A鸭&z1]ſ~J*v_'nӍ<^COi[ZIP2H댲+.X Nۉ!uPcWQNe%.>ˬj?U+ߐʄxwWjx]=եF4\FĠ|"n-;ZxB{! V˼^.#~-:DR%? ;>REL"p2păo*Cxje}He(:l`ʷr% :DWB+[TMkO'`䧪`?!iA cIrk'} ?䝨#b̚ʷ|~ZrPI߸֝ ǀRD;hwWnb E3x C\QA DRt )-VPIT# <6`8H4A8-Mu z5%6.uoWR8ua^˯.C޷Dկ="yDUR1{Ҙ>ga"p!p2J3|]Ƀ8s%T65fs(&_+!); i "AOJ<#FHyHkt"a?5K뻖}4lhؤ젰5h. nW/hsI;:0PW@js~_%^gl@j* B?uHLk?QoϻO7KmyCN}~ՠ X'3i/CkkM}lܱ"ݰL-w{T%dޘpC]=iw0CvZ b>t;Khl0bF1NA~ӊѾj'xapH#5J-I,F0?ub1oVcRaT[Y/;9@%u|pr˰CxV>shi[scsBPܘ'^XI!E ,pgyg#F=h=||@x}st S޷L^XLF_1my :Y>!nR g.Z6*CZ*6*nBw:ijOȹϖS82\gU؄ (L7N*2rpڕBQ ׋CAq=n [d;7qG<3 ax^wP IoX+vnMF@ݻȽTa?lqEV1*ͱ?}@1~4nFVF;)D6Vg~ 9Q38qwˊG _k4BHVk'h)NXgGQs +[ǙݎWy僸I/EA†[gl~,3eUA]Ź!WI3e Yثj@pH'oGał8 7]q+k ]sℋsc~=+r߭vqKp~ `9fg`u b-6ޜ6V_'v$1ԛq~j}Hu-Z_Wހ2C`'4fp=22L> E3} j2uX)7bk41Ip6?PH@T)Bswt ӷCiͫ/{"2[WK *ZP `1eIwjRz? T$(D:5$H`RLj6均N2\MNuM)gŸ@Nf.c#41#0!LT-7m W6{ƶI2WI(>ƚ>`= {%Hզ>[%ɏ Dh {DVoF}W"n6~:#w!/ULJ|ifHr)MT2 P \R5yKt1,WKstdte(Pcl<>|/d rNs)k0~'x"4Y| nn=am=DbxYWSApSՏENe-N}@a>'dk%]g$b{ |ϳ RI`yk97Y喽'RgE~W\zqJOg\a3`hQnn1rK+4i;'JڏZ–(B2;:1@+—<9׌>1i.n5''='ya<\ ;Kd~nƀR^O8?r/ߌFY+H ;0mҨ8SG?];ޮ,f$Ts^JJ ؑÏSuw@Pm“IDE6%BO#8 1 e7_˻^غ`.E"uLm x@^erZoIx@@N>R0'i%}@jlPNmĢ?1ۈfhBS8z1 f +?R F!8_N FpgC,eOiVTBx $6-u8Ku$hL,#' x%Dl">̏C쵂[̕}0-HԹ˲ 19!“m 1:wӟX^Lk/3{XvkڭmбY.l8t&?CETkyųǛ#u9Q^l# \SR93|CPN#|9MnD2_5 $1S-]*AJn}o|,x-\.0tEg S?76[-+&eΆIJlcѱgu".nSoJ~[{rYUQb/M:>TdXZןj_Ň:8'֢)U vDPvw[r[`L45 ݩ,0;3棴>DE{I/.NZRʜv|BYP6qԲaXNd_6%HcM߁ sl4 0Ә=㽑$,*C\}IHVA{MF]ϣ(1Sg9֝>2ļĚ rnٽ*]<6V<84?#H|@$5xd[ ;EQ@<`0ژFFD]|PAxp` iY/lDWw؁""n:15J2\F )ԋ`DA(u쫶O_(n։:?6?olȜ $ٷhQTMdž\GA_9Ccn"\>Q2ݝѷh'iKЪk5_S9>8L3Oq/Z * m u 3ovZ\vi5ml {%q!IIV/{)fm?nqd0a2KKR(+JyK>2ͅƧΈՆ+Fƭ-;pD~t&17ڃ <lEKªj{(ҝF2 [:,/ $L8XlSRWȫ Njy!>l!% F UZ[]4W,XX'7?%\_u'U ˰ăS/CM3%8W#b4E4/"WbsȰHvoo*z-R *]Mq'k r^ռXk}g]'סsm/OTN&wяNb?M{~fTT*#r>Ƨ?^teEYs4P @udܪÚnz%t`Oqdϼߩ)c:TȎ 1!tGBh{j]`_fmy.~SKOxTh,h_A5,%eӶn&Pu$Pq:E`EWd\, ߊ}JP!\m/)vXϓiV$P*8(Z*2$Pk߷^rg_d2."L )qC1#O8[4d4ړ⩏<]%<] cW.~RryTEc8X2ș0|ECϪ#E ,7X:^ezM!fSĤ=-[FsR$lU.H6.%V"baFLuGRmhDMZ3w[4b _S'Ise6'r%s)_$m`X-6o-=;Ybưd}*-܋tҳE 6揿oi!VR/nh| ؛53&mu(:J,{`ߑ!&m؛Fsh]^[~'8,x ^YD#o#WUnd yJD@[LH #@`4dRU.pc A[epK,8a%!n{S@YFTw]!<9.3:wA<7iFu%!v~SP&ש3~c/>Yle` IAJg" RR+STг7_[DT`SHZh W. %Z5^GOg$㇂N?5ZȌmjsմV*%M&j$=/>tBV'U0@Zq{CAhoi1FgLdBÍ>2ԓE<1N:@Du#/壴~|z3ap <%&=\M~"(Ö|ٓ:4{FLjq:5Ӌrr=ٶk-嘭&YW6PX ;X$?> x11g,iZ"޽~Tsa$6 [x(Ns,gݞ>j7cQeДL`~*ѩ/s8'䡌#V;l|jIX0-BAc"\fy~#S>4A?_?#@JoͲ~ y]I6u2J p<ulFNDjTӁ RŚ" =gݩ._>I {B^r/3v,ʿ5.xl,!p-a2]b.U'Ds$DN#{$/e&*b*2f[3KA rmK?Dͦ|kjSBz:ۍC*Ydˈ{"oh%Q,jq2;PAmYϩV;w(dz9OӃӥ< eP_k]\ߞP? Z95},)m'ٰ |J]Ꭳ!{XaBWM`V:_MQ_Au%O*)2Pa`Qa(\sctMų"~]e}w"7܅56􅑠v$;) ͨ"=p ~N[:7TGMYϯ3╅GmU2 }/Yp&r2-x 皍ga}՛=5h#yNo{z pܶ8ݤ >" ãqƙu$)nQGtсH{ѕz;y' l/gHڣ}Ƀ,@|rci|Đd>j@?}Sa nTe)yPǀ3'&"ELX7^x3y;[C>ew}DZ^i`(T5a2 /qWSf=Hkb9ӰzjPb"P_yXz-,{3gEn@MaYL,ξ'1%[!uZ8P Wk41,ME~,+a 8l=~hj՟|.w &/9.MmF඀W'1xU[n%j5}ק(r`# N]Xb yM8Qu.';S1Zq}o?%FzвD|\y)KMF&(#mHC]ǓtyrW] Z)Wq͍ X׽Nm>[\8Mrgn3@TRWKKa32g* 1RIXN\G.W>]6{h݇Qڍ4sb k`U)=quQk@##@a-]![;)Ni > |sbˀ_Ȑ,cp$$ # Y@leXRQ6caйuqfl;s^^v}k]0tI$QzO1϶GY>T"Ӊ}'d =*;4O6>Nҹ鼷<$Maj5ܴYCʣ&oNC|Rn `@d M֩YW~BQ?2eLbd4=^k(cY4 ddCG _-s _׶}Qwдgm`01 9o׏7ן{]QSl~??NB Tc-f[Vն޵ׄ.l9Xֵu7Q69@ZXw?O0m'QLL&PU|Ĺ?\iIOYWhJ4\WZ+[p*<_!Si\|R .%6So+ k{1+Tn0mD1[JK=g=Fs$h/Z b#fy &;8@Gb-U=)xZˡesL#n +, ީͅO7,6gOk' `.#ed 0=4*.6z1]2QȸZ$Tf@szN#}9.3-9srvwNiPy`nPS'.0U$z2i AR)Jo VeͼXCtk>o A%qUp< BTLf\6#D;9$;扳bc{:3 &z]gq_Gňqj᥷vԄ?KNUs-~dhEn -tqHj?Ju n <*9,a$j(.̳PT0~&6J_* ~d˥MTC!<<< kf =V­%߅ F`ѯP],82.ʓߑ:2 pҧfnrsDJ~_Pٓmrx&OAm^[ -31!a9؄1=ns?e̽Ju@-{7D 5I)rޡv_zAq^5x+02k}e?zapj¨v:/7EA`Y'ʰY}6?칃VwR pT j!1ʰ"&"C\#Ux x  \g>W[H(P\HT>ul>XAyiq7GAl=2DMu;?!1Eb)e}.1seMng6R`7<[x+nϯ@qM'`/(&q_Ubķ<B/9 qr3p)Y*y_TKEn Gʴ}#FF>_iU0\7yQۣoËlPV/,J )Ĩ P1n{ց3  nJ洗hWM,fWqdW!S_ń[2:r5r^c\pPo ('*\WC?25AlY#B(@*D2qpkЖ7X87Ro]fU[@F1bޭot,* ogś^)ggAMlPgz3uZèU~EKU}Qe޴Lp_̥o[`ZEU8?/GED7貿3k:vHKf$?BԦ|u:T]]Lbqw(աvo通zD? Ó1ZcD*58ݲbHI^շ?[MJ)펽:'/at&qcdXt}>D_=d:l a㞓lE WZ=|G@\#?R NeG1x=MC`i+O_*<1Ȁ[Cn/d,ɼL3gb_k%ЫON[\xGmb_)p FR'9c@d&knS XJ%je""T3r^vɉCE.:JDgsR|N8{MZ2J']K'{퐕!3Ykҿ\q:Q^+ ^2a٧:/$u@T#3b;9rrQ8L0Lub+V7y+9IzBH:zܑt f `xK]/ 5=]+C-%]W7-K8H EfԹƭ"gGd"܁7X8:? ߡS/-c?/U xm;koM:|awz_LrA7~ OWYitP0jTB9Aԯ,8OeKT5.K·_Ⱦjx%31qN? "?1JDmbc4J6.([@թIЌ>2n )W)#CfBv9ғ>~J{ڏjix]s&'5^U_==*O1?+c*dCsݗIՋA>,6C ӱ;=kK]3ڼ}o|nW1r:"ap_Ł&gI(֛{xk_H?/ &%,`zbʋ1D֍iwbzj/Jdz ʚÎ ^Y4ի=+/s|82]GqHK-hSՠzdH(YpBiN|S9oNHA55:x݊2e{Ipo[ gZw$2Hep¬hЇ04&\HО [pCLq˟h7b$*z7u+sTv J|εU m"m X ra٣+ӛ7lD(Yw]Nqƞd8Q;s^ -@C·/1(l:#q!?&k跗M2ͦx^+džXDrQ_ekxdki)1ԗVF "l~thJ' bpd{'i6aw ;yknf]lr7/ ߝ2y8gVȣ H혷݄q|g_ooҌVDŽ>KGF#zw?n_^Ia}^}`{طNRX{6vhhLlcJ2vθtuCQv6EnPSSDza S iFTy|>F Ҽ@?VgkH1Ld}(5װ,Ip/S︵sOJF”:+?ت ч,K-51gKv;l} ݾK>$eML^uGY^7yhE6u[^1 9Y8qъ@f8|z,c8k\0RIBCi"a;.>Hx53 =%?+X;cكQ,jS1uP>Dߕs3NJMAF+FO.B {1pIy8ـYĥ"K…m\$ƽw#8HN/j?pajjF[מG>,&y鬺8MM=.5s.2!Og{YSyk'ujNL=5f{J۬Aܜ.]|5&9l1E%!X[H}zCUGy+אr-qCOȂɵJ5LffC[iHuWԟ|RҲ( 1^)oYEᑟ]!P;Ir ZBeVz ⼀tmz8kU8}ߐA?щ,+;gTIb+w[!-M Y-R#TĮ=~Qm_jϪ[FpKy=-tnv> <&ESFizUF.ݵɥ 8čE'zFaA]1nJm@hE5{bVw\|Fc4){ֳr] rŇSr0l>g$, )w;2/[2 y՜ORqO]HE-_JX(·G|:AnބlE;IAOS?4bXE<#3䀘6qӉָ~-KOJ pKeijEBqwe$'{i!E60[?/U=u*W3p)arH6y!ڟ([-<>}t6 ˑ8gX<›wP=ʂ]98>f%>2辌T:U{wR w*)XϼYr 5gA!nG7>pr8 | e Daɥ eȼ\V ig٤*Bb3UYm+%Yl c%#P^/sG݌B3-{Zth8 >y!c?RA1m94HgM@f=scW7KpFމhCݷ}H,g9?}^A9-F2]6ڴGn c 'L#N}Ǔti? ]d1Ukֈ6ޱ\h(cq eN'l`F uVU=Kk ]~ߪ0]9t-ahTbJSegq(r:Wzz<1xMb{ 8Gg}_e4~.Ӷ֮'gPg#N[8.;Y"8t]hm,E"ߤ#+_~׍ 4+cP:E,|%^,x0A+sk L]WtM^^A3~ъ.Sl5a*M 7ۀ+,PoX2 e_8y2rV'Psp'q6IHjmIhJ-j˟hemAOKDW}5#ɮ!muxCƩ|ly9-0i5qB3Ao{C+.-A_ R{r%pw`Sve+H_L4=e~U@ Bǜ)jEL4cFUj^;aKDk!9V"tյ]ؔ2x y!C5K; NBH{I`y JN~E#́WV!(>_?.=I,Y:Wm7/uu/N7d ?? cl5/.WݍbPE~:(PĵV7rI"%_Tc"rFo|]+z?jvTn'T*O)v(fhF ,P;; (!(IW~[v_Xoҥ٫bϻk_ꑺӡ8`#I'e1mbBeHkI:#;U2Pq[S ppBFO_qA{ȈI]|{ju*D 'C*/JM}kQ\/2[B=ܶ>#'KQ+HZHY6+iT//+ ?{ȻPa/Ҏ;0?%yv eYD#b_?j(\_T6YÆTΉ[\pqײG7^}%<7$Iݾx k&Qf1L1v\6oG.&/,qT)xn@: %𥫦}ùc[;խ7]Q8lDQV&d&H%EęmI? k ^.(ȏPWN5](P%S/YThtewE!-!qʀ[Aҙ'u5Yevo $c8YUU.`o orB*AA][5+bl@M#&$ҝIەGH]: .T&&FQa}-2JQ ٨|9ǵV9`}E]Ж &5BBz&#)Eap'K8OMuCEyڻ}GRPc,ní߅[1jT2Kr(L$3( K-z`GJLrty7kx(i򡆾~~̘oVߔxD$_[ż^cs>C9P:⏨Z<1ۦԜ,S^N"Ru-$oٔ%xʥhvP?)g8wEAp(8]?_. Ž(x_Oy ՞o-;6M Q\n๝=H:!`hkfN냧/<rgtɘ" ҝyCWؐx%/|K~6VӘ'D i2>Ex[p'Zk>3mT^xӹ;U0`jȍvZ/nQ<bCe/RܢyD,q 0 ȥu Kǟi6ΏחPw-D HLAXVM8V'j܅G -f8嗸|aVDg>u8BHxl.n{ w8|9iNn*; igv'7|ϵ5^mC1.|.=rTN[lqGW!9!zӨ!9B}e37˿CCRAvNVvquBj0o]2 qGx*M/b\dյ'o6&}d@سoz_ֲZkJ H/4yƿby˜Ua}>2Pv:sfxUc6i|Y: n4) *1 4? l 8'WrU?)4Da8o;{/iL*a)* vC^4a"sD85ڠ&i_Xl+,0) _[e +qҹjCq%haFNˉTDΣ5##cR+rʔ^ p$PcB܁4$K&$'ݥ]}Pmt$6aOqUl$K^y(Q^&</b fdGd]swߦme.,G 0*5"%jo?&tD٦,y(ql1|/:=sb˶mUubu Fnpd嘞l'( b,$: V)OȼLJ/@# 3,gtM4d9mLy\'a#tik''3Y2P(7Kny_TV"IMr㴧Ԟ& V4D= E#&v}_;' rءɣso6j%>ڰYqV.SeLudOꯒRfC7#`Ⱦs,XK1OlAG0#`+,VL:JoyJUEoE0u`E *@]CsIRLk& ]R nK%9{=;+Xh2Xk 'aΤ~y/q)XKѯoH9Agty c?n? r"h-EKNj c3i-%sml{53K芢D҆Dy)Ҹ|faG{1aJFAOK^ ly[ީv,EN˩ L߹Y8gy!HM{##~h )S e>ǻG.ͨ&"˪t.'7&k_?W$;`!"JsNd=Цn\'װ\p,vB=ꐑx(?QoCGCDZuN_7硎; /$/-2eO$Ƹt/f9nF vL ts˄߰xE`5 7`%X4=kN p9*!)`,4GCуd,6屜FQ/?X]o$1 sW寁1*'| *3=&ٯCdZN£ DVΠqhۧ p5Tݍ3X޼|Z|~NɧY]/eEb]]W4W09LxȜ ac- aN rG+}C͔=p ]I),n$H=p6N&%<>mNzޡ<]Vjxu7lnR+vӐ1^ދ}O^ղY)%᪖76pyT@ۭ?GDւWc<#}iq׿NA) #/^q:~^.>L]mHij?{j:p0NZ%nF1QIO.d4V\KՒFsFo$ðy  # [c{ UV}MwM*3_G 5PQ9xNGɚ!rc8<CuMU B|LZjap@ Zy*GY\^. 3? Dwhe)=t#{g L!~uO7~8.ê͗Q`wscũ=\~ &@Ҽfr7CXMLB%LB_7xQ<˅`Qe|yQvR'@S)NHDp]4.200~:2\F.BLLE<O_E/l2=@z "du-:+F9 0biZ$󟓵my?=2:n{3!aD"g`R88i<h9u쒒n*2+yTK#eN=wg $l1?(Z~O޸9Uҫ+!qNIV;;hkq2@4MFh{l)rmMtT}*gKb)k#_1 L٠p$ݏ{\ʎ(Se!Iv IzaBq,ZGM!ۛw0̝@|oAZ`ƹ0n$ 7b!wT ށ^O7Y훻ax)7_쨕[PKžPrW0Mu`D>[X>K}+Jֵm ]f+)8v`&Ƃd*m Σ ] D!YY_hnG*tnGd@6Ya9^/$zY{ g‚k iG.(vm':,сWACJI>\9-?kf5AS)Vj;i)jv]ib*g P?,l<|2p,u^ +m~:gbR-l<o%<\{PJW433i;EI崎f1[F;67\1GO(Ml9(?iy]{qf,aŚ@x> oN3˒ 8Ho%^ؿ @[-udz0^X}Sżآ/v`|g5?GQ륡xN{2p[pN.,7feL1ArG83x gn'ڜ=eˁ^2Q^(mo#Y\=߉l#)%i I;HJ]QDG!'x6Mtcxؓ%݃^nIoI{?`'e]|-3%u'ob4"B q%lW6YS<-k˸JBxЮyH@% v~^ ;g4OQgYV& IM_쫈A0 hHls\B "25~ȫLH>\TCz`LgpDϰq]ng M.(('3c+͞TKӈc TPu \E8_~,X#~4G-WKN&6Fib$|*Q!OҗL9Mkk-P0AۂեLhۘPK$t6Kd=C 7n0˝]) 񋋀CO>?U/lufprD71a_;bf͗I[J 8$ x'#Jz :v@o2>H>gyw}e*z!:FRFDwVdaM ٵU3xW6oNҸA㤱m۶ƶ&ƶm۶m~}Ϧs{ڳ>`dDRdsU%|dP nҿa52E@(D6B6NC%bͮ_D1{ZY`89rxW2H `I_wlk/Cܳply}=雉$cċp(o.+}g8xhGJCg_7;W@_>o gS//Rq@ą~dyO6'LV$uʌfQIn(*wfSG ,|,&?KkC.P"@2Q[',Pt/u2 `O%^+g'Ct_Gm2E_7ψ->G(r!EA N(x+>[@$v-PF\,E]d, zTgd`Ir7CQ&1*FU6UY_HNm+ 8$9p|HlB%4j7.8,qx_8T/0KՑ+SG2/Kb,R*Fjx_Yw?ty#Oh>:*&hDNhʝǭoB5QfT~P`B^LVW3sLpmw "'^ i;M'!>) GIHZ+3|\H7P}IZ bw;Z`TgBʵV-6 'ie>*-񌵑ѝc cz_#Vzf:oSs_$P݋^յ4mws#/xϣIoFuḟJ0N `%`]AP]%Ѫ?[ _2a.I)2H;*+%(îEBݽ'L(o3άn),Sp.?3V0ˠ^ ;P:0WML%Ig;hI펕֊#+虷2m+.+ 3qO(wKJiB>au0 ,<.롡s`5ʮF'n0"2&)U~c'h(9Aĝ~5'8z~tINr/Md-+ %ٻlҲ  f^Ha,^ S_e16c}C#3]0Z,8zmY3A ,PIY2-pvI~*ř_W'Js0+nnH xYVinٶkZD14tQ!Ь1 q&N*sȟ+&iA5c[_cp?$ ?{{iccJΪJiOl!VXUK*^>>'_U-=F;5x|RЏ,B}mdC% ̙-Ȕdx8m(7~س'΀0DlٶLe{F_ jZ㍘6 frEz&2-*$m}$>|E X3&v8 { l+ʇ\4N\#T"6*7q ,Cj9,]%ztF'f0RM}>=FoܻaY Z&?M&xjoHY4&#uwj˺8-1Sb2< 9:Cz{*{݆+V)Q> j8^ ?TGzfYչw+.:,[ #F Vë0Ptc~Vtp .0 %"n2b.2f8>>gLgeI(Zپ?L2jk0og6||i}FHlV:Y>"Msѿ]?^}.}>|U}>u-Լ?=ŜΞ]ғz|ݴ}Gdq&ɪծ74ң[]rxA7IO1R+@C~k׫IMt!8qސw ,|Wr_hRlk\Λ|Y9QȾ;O::E˫eHɾacG [3DB Zq&AN>k8Ia%|5# ͤWyZ9VgF%CAL]0ZrL]J&ɾ@:hE֍Ɩ pkS/mbt)@] I}:&կ,Ӧ9[QNJ "E7Z ~ 6?m' wbwb8, l֯a]Y{^?:uMAEyɬ7\Ƹ'UA3.vŀ>Ycd قy! @7dooK4>'D~21PX"9e|m5/%&̆&dz\ tT=%ٽtRVb]>`#8tn5Һ8N0i_(@I[rB_xjX8o:vW}; 4H]]Ɖ¦#3O]!k:BՔ41WQs)C ,^NwX~vAP/N L/ۙuIFϷfjW r_r߹5APQ;S?`z'H3]vŎZPkW.%4A}Wԇu #XԀ; [sқ-~'tL'X T^DqC2y0gA!qJ#YR@#~_q ːs!6]:NՇ,P2_o?9@l p+-RjHY>[X{ŠaA8/3/̪|nd|Tn1d&CSe>L4\2T;)U_Tuʻ* e]Ec ђQ5:mR;j05cPsN-6_s.B6yd>;ήf&Ͻ^rmΆm^1lp >U4ydCmn;O_ƺʞ/Vޫ#kߏre\ۮb|'n17>mN^_>N6?:~j66r9UUy4,tu=r7 ƾbHwIR=D{6oXCG)5-*]9zڥH <Yk+b^kuoH$/~X-m9Q}yp9vnrm.-|0?#u}kgMoyd.kǺGE*6sg;'_>AZRv 76v> #t]o;&>~N>VsKjXύMr >wx5ߛ>G\;7&6C/; ֖Z1wѦߟآR`p+^nil,*z[;߫l|~0V ߽p[ْ̮Z(:t >HfY|8LA^~~C%:-HoW;ei%!rv6J̛{;qbJܣ!˪ŜФ亀h"<ڄuX+o5^5G%vMoߊZ aӻlro%s_Op[gfM^Qeߔ.VJi_&9Pyժ RU1ʞŴԜn1h.?8F~Ig+a8u7tbJb>qY__MBv3P/NU+b3VV>6'}ۡɲO?BBѳQYÎU/NR |YL7ׄ/N>~=xٺN<:T;NB2D wg\6ܸ|u_?5}G >bdaE-a)uP1ӍϭDnnӆ#,["Mg9G Ɍ-ݺA4WDŽ)>tmi&nНoOI#Ѕې /h2hTPY* C'-SO{rΪ[%39t?MbB@_yk젼5uT3n`}X͔[:)j7x2}Zv l˙!k]_'ikwc#>U\abt£ (&[%?ŦsYq10 3<'Cy&M͢۳JVҤͧџosO-؟hu9,ɞ|,=\\CHiW-|oG"-v՝Ij:H2t>Dc q&^" f|m鑕VQ>֣#u{_kBļ4]E]$}n,oز38A;h[P;&m@6t&ʚ ؤWƥXCtJk)wv'Rj wuǠIh~hr|T5w1ƈ^+OWAsLeTVE߁.NY!9pBq7yv;k5泝 >$E {Ϸ]K-wG [-&Tukx~p?vOZPbWB&,Q.fֿ't@{}J:%ͤ<s W,9ݜ0Pf, 'o.fmUnē հ!\5}+ۧBFkUI+9NG<eLl - 'U2*S4Y5Ϫ?zN NR1#դ2WVФ._*үŃwxϘ͠GzlzhIP5O\QA4Z9JxÛ&πɿ~I@u'.,y>;Pr>9!,F j 9S;9q8<*,꣰ _aέDjD eQgŧIR(dߋS$wqs9rnւy~4(,,/i4pEtZի!b<:UhKKkX/ 8ER'8Oq=AS7Pp9u=X4^zs8UǪX¹i GE45+-)W^~Tnie7?i "w97ސeǣKu"rOU5jԮMNxSН.}OcNg?lqOCBf통Sn0^G[15^&.K~="^z|#?>mlSܶȁ_a=*KZ^ vF៝W$`҂XƈC# D+CTɂ>0ģӦϞ@LrP3_R 4*Ԛλ}/}ͺbe'W 1PLDu}L6S=Cm'eǣy_uJ\~̣5K_yf)oI8 sUSf+a{z9YQ^W')K 'v?4ŃûaY6XzeU:ۑXˣ~۠B,Lw M!1Crٺh1xp+Om o֨2Fwi qhz#]xJt渑'ao{M a"Ҡ!ިX Ѭԑx!͵bћ׿~5'I߂tԎf:"ԝhU&wF/qY.lb^rq.mGhh\MO).:i|[KgFez-pGڹ6$#%#uwBg|Z1o~N^Qu4e'wU}՟M$JA^Hhȡtx@N1dw6!8oѶ^S'RC:)hnC^Ѥ%/+-~MלnMXGge蚏;4$>^!([+n )(]Fv޿wybPeq_3?Olh^ce.X 29B}k$y7!6^[]7Q`~Ԉpe:Pg]bP2*bmL[Sb2ϰRd G^J~SB8E|"pv/Y~ Krr!R?pwA5vufH;%X>ߠ]&O^0d] |9#F:/P\< (~`F~Ǐz  ;|(ߧD̹.vОg|gHΥEb6v~]z <~gB T"*щ5'>E&`mB7GHXH7 = !-AoY*:YuzRC?cL-(ݞ2Xt? L1Ae8Z抍5JmM``A(ѡ.vd^&FjVjA8t_'G&}~0O݂ۡ+DˡʕԤrC#_ͱ0 SAnrs'6lr#$(Th^GW,hM/Ƿ;bTă4H \d.4FΏA#kx'9j IqRV[VPͱe7'> tI?@!57iYZX5=>̊A7jl7z6H5%bkRx{a7n7oc_=j ݮSJrI9OwМ:PsDEhZGټ]y޴Z`J?7bbPo~|`)J`!:uxOK*a$mG@ nva:fv?qp/4@Z{Ĉyl]N:+\霸Gj*bf!!6AQ2:Maݻg}7#Йкop.Z~DJ2;;cf\Q3:X&rЙ<T#^-NʃjltюvDZWZc?.lpD6ELdx4Ҙyu =& u>-ڕ0| Ri|䌫5@]-}ijGȢYXB;3]U}+NeAaf`U/էJ-\8bQk݀PaFA"NM)fAǠ‘Y_8O~ Exg8[VQ:mEO+-w_O0e.aF= =.WW`$#T-uG@o _#/7]3ۀګΔ4o>:W7AʔO5*P2*)r;8r/b8BR6ĵ)xcBԩ7fXP݁fq"<==luWM>H]舒o3GNt7Wh>'s:e7h3Ⓒ~îK-k5GPcX\%ƢpP@mmֈ˼\ՙ[ʌ !`KG Ke@z^%eƏS魇o.#q;F?G_ocu}ҿxg[!rZ4>7̮\Q8T2D@gJ{8濠i'p75ṢvMj_{[ o6zQ#oeOG@bw1f]{֠6v&<AY%ALr5,EUn܅.)Q' dG}=z[ '.S ;Vx&X)r 4b[_P#rQhn026oVm'Lvד맥a&搅$],qj귵1 (PJbLc"O|iwQ}9f0&Rx<ő\fyϑ,~ҚIکol&[ʿk,y`C2 M.7% ]Cw㤜MjԺ5YPo%,R:;1CPt5qŁ 䭍>yبUwp*@ɧq*£ސYOm\) [24׺*!vF}ĤJQ&u*;VCl!T_ov0ʝYgɬLߢAֈlcD(miNt za)qNSކ+!ovT}:5xrX`6_[%ی؞NDO`‰q1jw~c+Lrܳ{՛4d'CyԸ)gnX!X9yl{]2 r`> AGuJ!z:e~clPAwV=2͕0m:oYVZ9pe }{*Kd69U-0UM`&,|K9홚Z~ NAO=b05j,^\&B~gҶG0~|u^%2줕dvbBBc;Yiyxt%pp~rWfy>o6]DyoUg.Q1KnҩA;~`4UC'랡6+=+ \z:1~iiwDÎ=:k/X8䨇pM &nrPfB[GctՔGLI#=*BLh>9Yu$+'1ґZRUH;@Q֪ ̓I'@0jrtԮ𞣳C]fc~xłGԡ"L*I(أԺ[ld8`eXo q^V#?{ ac65$glO\TJ>EX&}7̣\RHVc$⟷" .״ MER#{hZdd_2<,HaV;?ܙB;pUΎ [Ac5VYvq'uѳ^q2ʮUَxQ(oY߀ zd sf$x%6Fբb/F8GA#@R7z[ͩbPa]@^+L˗@ | y}˨}lxBMFΰd|^UKaeJQlv ŞIu ALV8M$̳6 7*謪rM f|` +<иTÒkh? :l-6Q97ha9Dѧ$ysGV 'N(*n EhjqX>!g})CZȷq~Bln 2ضTfS(7 ]e;S"X2p;Y$DcE{?Jb̐c- #"g:uXѤ1lPɳk=vg|d۸r$b/5㢱0eȤS bMwmRAzku 7*qh"8l8O3QP<<`Rl>՗s ɥ9iFVI8˫H{90>.:L f ,Fm2-Ոkk "xx|<>,/]^t6j@9 @ÉÙK N/0p.Gv7.e<g ~ u&Q@Lw\\.FbFqO.,}?ry7. 0dʾl̟ iF-&PoJ,]Bmv@;c*cv p*NgO q*ʡ/9(Q%ȁ̗OoXm|Tȗy -\(z\AdU*yYT)OLeE1.^~NuBB1G)qVpz DTGݼmA^`ppNE+NU`"O铌Y`~PqY>}c2`NP@6n ^d-;Iɨ 8>ݳ˞YPlHm~7GO)/ZM'/__G*w*΍Qbs(1Xsb3;^ߣf>3X,Iej5bwŽ@uic}~VT5-tsPGy_(:od{qqQ` - %!^؛/4X8n7٢O&4k(%,#OcBNw?ӈ5Lu&++пȇ *;!;>&{ ƒ|E 6>莩]9gQlZox]|"3sށx5 ~H&f8&5 IeqۙK<w9^56\)(Ww^Yoq5(^-2i9ԈaZNjd+yud{6ox=ï;ޱ@l@ QMׇ֦8@u2O UUL|S^78 nK:!ǘ诿#?SJWM6H|wvCo\'{N q'o=M2)7eи8pN"5o3W2e51YȓL4G0?Q^Ktmek1@"k+>9kď'c+Cmȃ;DVYݫ^۔#ݙ㷬jjh>Tz] ~ xX#t|f@cm}`vWgWC&:7Eg<.1ag/y$v;s->t7iS2T tc3qweaR0?:O,Zřv36I3t! }Iߔ4'5\s4nu;c3[["m_d$~0GNǀ,C])k:KZ>a#e@d8jlw0I2]̒tskbg]wy RRUmzE/QCҀj:rz\8xdz޳,&6:681AҞ1Xp-[M7 b"<&dJRXh:9u 6uJ*x.R)5\Ax6arķ;äwaKLg LPBMM?y!~zX+DZ btEU!BWCOׄ|8BN.;oᦉ:[Ġ*hH]Fh)RޓuN7A Tt~Bz ~<6H{,cëc! ̼6hJg=0Fc:w1}#HcB%Yh ~ٚ/y,N%< 8ʠ5SZxE OH6p>-Tis), v8@.v<#$ 48DӇu{s_"Ev)e!9H@9,$rK|UVkF$Mj!: 2sƻh ]sd!uXHz?/"b\D80 Nby@!$NHx@]Ud=9ZWR)0"b@V|aP,O|2GFMVF}RElAܥ{D ?ýaZe91H}bZXV$ mbSWISCT{!Xvih.;. tz"$dRfg4zeɟ(ԧU pVZM6K :C02*a=20I'MZl*::y .L@p dr| /6J9ҶMˍWRx}\? YBC$@p(֧׻>-#zќf ȥD \S6M^(*zfRg)IJ|Bp la{mɓw2;/M8b\{n= ;bZ6kI>sm?rm tV$[6_dAPYU״[Y],m]Hzo%cJ%d[_i$%$c훬S ;}y:Ă :>kWPW/oXV4=\X42FTL id?[([Lz81$nUp_$-XaS D#W~LM7*ÖK{svu3VA@,bnYu`ݛcy`I_oeWk׀wM@Ӯ-!@="b? A@c3v+ރ&2T_+m | >ŒRwb4A-xg!7Rc4Awh DFp  ng.Mչd*pߵp wAP\Dy{>peh; ^IDY #!2h`i-H6H9wnT;u.J՟ &\z_]ՉD |#y`oe+p#9O#Eּj3|8kL,v`Tli>xu&y9{_yI%VFdVY6{IVs=TdS_Y' fTҔU&VQg-A3z?F[HQm؄)`ӻY w[jéĽM37m*DcJw)C~b;Zݵ˻DV9BK&HoҔfGjώu~u(9QʹAOGT:j/HYKRdة -/Uig$)ĎE 锱n8&jَBlrQ ^[A 3S@ 8Q]w+XOacَܤzZ )ITi|1k7N e$Up|#ї[207*•99mhx"lGzYoC l ǩa)tHsޫ CʔPة]ر)?XtԦjrԟ4NmP}Tr\iz?L`hbKM2T? ųKc$v 1lltjA̘<b %ѳ~TܑQ:e9]o6QJ6zT{pXf3燲1({N`fjmwӄ9 3a/$,,|،!ReJt}LÌn` OB |' y,)v:QϣGaF֍FGᰵy?~jXT͹yT0iN@[?STm>h%Vs2z%{+aT4(mv/v&O+X-$uW׶&%L i恘~pu [ʕ%wL+-,Cג3bFk,9e6VœcdԠťS%~DO }wroa}8V^'XI-q86z2Ѿb/ԇY A0UI5ʝeQW7m3ϣF0z}q5W촷/]C6hp}U̹x/c"Ob":.Cg%IzKI{@M_`srj8P[֢̎;e4󚻊 m /= A:敻޽2Xdt,sȅ>DK^X 'DpˁP6 uX%Yw3dFRᑿՂ 2yPlqIr0BdYu*Jd<7ldܟdsXwy63#y-fd28oEf ,~TFe~{._eנ |y6JRqZrwXx#ߊHBZN4a"KM{4vPv`]IW$4gV=1X1̜R#T[ +xgbސgMޔCB~׋eF4Y<~֧+Þk{RW;s~4o Ou/绍3[窐(φm6 G"ˮEyiJ/'֓/JgDzqa^Bf`b7v^h,F!ByŅ'q{ -gp]$\.:w>y=Јw2+zzd;40ڴT1Ȧ0Q3V`7GxQW]ޣi bp@kܵ)x e1hϱ%FaC e,"2j)]®F5h`Eg^kt=[8Nu:!70UΈ[Rќ)~ yJ7ҒfG 1ˍ] ŠW,csSTUwIYzeel+/Qӭ^ʱnC.O1&f2Ǩ\A,VBQ5i;l$#w (T3#O][ns, "ğapȻ7|{}+@X W1PzUs|1 "vw*oy-ZV7I>-.8D4eTA: fف_q(xgS"PfZ1ѵG8x5{Qrye2]UJTD.zD_3LG#ihl_sw%Gp\B6dzN"o :Q8tsFM&FPQtYغN w ݋xҿ*/>"3`)6;CrVg6.\tLҿT8=7>Uض4(Ap$|xuF\ asmk߁8[?8w+O^~aE *b S"r$7o ic^0Ex[6"O.qd?= 5I <{A5&1 :b '۱#/7sr/3.7Hbe~%BwP4$:,!#QBڠRWeI&iYYCfOd5U໧6O^G1+M`aL*Y%so00r ZF(!1VSf.FYXYE驩x0 f^-' _zЛ\+J?]Cy *EGc #Cn+773m&0vͿ8kQ}kխ( >ViFk$ َ^p.Be[3I=[_+0ZGW@ev6A(X7 SBaڇPaC%`C_ʭF$C̀]c@0hmhl_,}ƴ[CH7,'u؉g!y5:Xp4{ ٭#Ohn{t;B [Z.zGюGM9ʼnem#tRZf˶Yĥ!yϤONвx2k W5K0?GRajk@cAW/r,mU H{c#@(᷽bTYK TSYI`ݐ+THid_}|ٳ,ƺLEf컉.XCmN|J5*vK5xyb2qչjd"~5JX_Mঔv2-.nt;|=jZ'7_jxV0~ƒᷳǑnh {@Tjo 9?VGF sm$l7Ioѵ,@M5Uz.,q48T(1)S4Q@<SկS/:8ĊQ}K:g KE*;Z)7rdFh'URlaK?7:9r$ǃ E$wUa7Jaex>q,DEܸB4fJԆo3,iF+Ds 5 4ί׹-ei'7[BDnyXT1/?<7cerSD$˜t_A;5jvٔ M*%Q4%Md>6jqn璽K +g$EB?`9ܔrɾjH'U41ƅ̾uG{ֽިE9A3Ɲ (g\:!=Jx80$CCp&9ta+xQӑYATdQStN~a6Ţ)MrDі @I#QYzqA :ˊK^mGcZHiWt6YG֭7w;;ni`(U&P D37^?F_'TK#xrk?Z.LZeRI5Ѯ$)B }YTC٭c+ V }!T,c xCU[ ,8b !3qȒS^hY/XF^ZfE[Ԗ+6(xlOI>SgHC|=>W?OYw4*U&2-sȽ+J~{Hjv6qgUb._cBQ#QUEԭ0]ok9Ф8k|jPuyyPET\I*E󊢛8o >o1ʼn~%{.fI=Jbui&Bډ>ڌt/L鰡OY"q?81;y{HnP[HxT1(JC{s/ F9Fb~JS{̹fBQ1$uos9BE%(rr$i՞Qx.gLS قM}R`wKjEVu}~ Ϲ#"k®. Ь {^MΤ]lDm6^l0%kN ]()=欜%̊vdKo],䆾ŕb}!]A :ذ406sDZS"TS볤EƠSΘ`G:y֙Hymwo@o6W΅L22$LfaIWEejn:W'ZQ*X^vod7,%q[ayF}ta8ݜVe1{[*6rQTyU_ ']eO [>w]Qٖd9$g)ز1^7j~{EZVs4{ir0(T>I:XR#Y>YD\DY@0 x꺛P!耇'}XEjP9O:IYo2۶/;O[_ujm"Ԍ+EG!+IZi7T30b҇ݓIc EUC{VJ1a fW`GoҬjϏDwX'^\wC9"t A%}z21Nke}cRmQ^*a56jV牻w1lq }?6b+1"*pe黑13j(9jO܎^AFc8ndk0}8iԻzRNqZ}<SDsrm]8h=ϧ/ad2 ܭ ^P_05\ ѪquJaXАi(f8wD9jM뎜F@p2~36{6Vr+m2t75 Qd碥x+͹c+иJS}]Eu[e{pAɂN|E@%)Z\! ukjؖZ^X ޭ"KQi uh!zMYI{>s_Á1tz0IAC\8n¹[9\ZBY\[uQ9gcojqIuuT_HY v 27pRԛN>90 loufHvz}"/2#| A9NeD8SQwu$yŨj p(瀝fXk]v Ơl݇364 H;4=0CՍ2in063$H^oƯ3-+rU*Y3t펒(͗ 5^s}EdQЮt)[$t(%d\^,WUR`֠>X켢˷")jNaR1i`$䠢MqӤu7ο,(7 lX}{3#Hv4uvëa0{R..Hs)6V> 4?u $-44~ p^h^0m֮ /;jXǢb\;u;zPKhʊ'\ݪl;wv(Aw4؍uA3B"'WHDJۏ賏x0LHi, ,H?;k¿BUUR}Utbl\j T#R y i@fL㜀qH  ,\ℾq'ˈ|}} ϰo\O;O0rm8lU7X]Rfը!(:6ѹDP]TbjCSWeA啿) ,4d\NlUw[Std+XAJf01-6Nt+=Whoc󟻉I􎌫Mu)/j`8 ׉1:vh"Iog~r8CMX4e?.>|mvrﭲqkꪃpL VyrRaEg'J"e?XS@xNURmKKPf_vK쒺@/hɼR6[_$^@nwzg ڼ"BzIECd As`ؓ2 GДؽ L[G$SPM?MVa:Mu#)~W( ɣSE>uBjNiã(X+D5CpBc0cP~'`{zT .gqqTrtS~g4;[!.^[ߩR!ӪIY(SiO;IūN=pLGeQ!hD#A n?Y͘ \z_H1 !VT@85׮8kqr>'8\}dD`3>͛𲶚l}&VPTԝu@II; P9>O9cdU.)Nn M)L2ȩesMB.9(@y>}/ !Uza`ﱝn)w Ǻ¦,ɍ ),'+mqV$n΅7zY@PH5g\\үtn~D&ᑓqbE Ֆ( ņZ@Nm7"ruSͯsLVig;M`"tQהP*S0̭&]s.!H8$AyKhO׶UM0#7e3Y>0Ya)1c9\kIIQ}N0PqN)YM1^ 6 }WW6H'!q8'oW D>m0+`.Di0p?6nzm3_?$l/)ڧ=*۷qJKh wo4+N`G3m!/Ŀ 2DxL\} 2G IkX3CCy71I1IcT >j^ sjv'ons>*g wͫ$!FDAz\WM3(- BASuÓg#V0>jX;XTn^P(N\r[RBꎭ m4XncH'=[|)kS&ReCpc[e!8d .;i0㌮]N&A7xk8#bD_=ri+e_m)͓~:=SQ;n`wj̙~P hj52'=M'5>,M5Rn|수`Í DK6S~)utBAJ-~ HU9ޱ [6-Sx =Gdhd'Rҟ\7\ 2f;{ oE<- It0ܵ58uMJط"5gt-=>vqޣSg ]aIEyn@Q3P@.Qj:f:#HSx8b (Ꮔ9Nv(y `i#2=3txgsXB.@!QIb<)A2'̽zk{+0ηu*.ƽ_2ҋd[DO?)=0bȐ!zbO}m5Tb9~]%( ^* 4Z)؏SX;`3_oY+yqͮ}c, m ҥ&O~:nӬ3(L|#C+1NDFeGG9OGzM)/jްA@hlX{Lq񋓁 یsn5b_("w(aMn1ION/'1.+UU!=3l n}[6_t6?M6]"R犧DPta6U`(]N5 wB[Y?^Y>KShŖ{ߑ5x)N/ 8fn*ɖu\>nVke*9*@Hͅ8渇D*g.LsWJn6n9ɱLYx^6cX6#9۔IeYUW-p%vFt:o ]8iPYI{|֠~{ƾ}^,3`?(gbBH6־/5JxH?:&GA# ,.=NhlZc6G1ϼK#d\d敔dώR1)CPl]e/q\Cf`o^{9v}<R3T~qH:8T?$pc*K.P}~f0!VI; F?fK`:Rurn=tm{* {DJ&,cDKBg``[CFgSA z0}Z$̥U(?)xw39z|s2T=r1359Zwpg%L>l}zq0$jZ@gPT }M!;ed\vwPA`SsVw&Qڠ'h ‡1D}[b-z`Eˏt Vw@U2AAx ,}(GJ<8w@TG#(}&X s΅Ў!O4řl5ÌXHrqڋxȑֱj0I.mi""X&GdD\t%csу0 e30xeٖ;h.x,y3lU(wUEjyogCsJ=Flaz=͞6AwUbÙkQI#Sa;սoimۍƶݤ͉Vc۶L{%=kuz*j(ErK TЅ"ҳ|t3%ϲ1~eA&+);e5Xj05NŘD7\2eTtK X/i"+6HkԭU/Djr.;tI1{C*iBс5襌.Ӊ[_а=gh?)cע99w?^ yb WkG3tU_|)O 4wP~wM,tA Hpyr+]—8&x45fF^wt>$ Q>h۫Hg(wv_r%s"Q3A^b:*}p_iБիb[qY xQl.; S0wW|Mrw,z۩>MK/^G&w $k)zz:[{dOgbǠ (@8Q5[ nslLPB*0N"ī_p5_2h4O/~MkM՝9!6')(-PtUPDЩ3i%zPI1B/Ew5u8me ;zbf<a=mExDC501| dl6 KLmo DNH[ L_ 6xK W,Gm!1+j>Юx/Yk.eAdG3d ZGk?7BST*oųgWqݎh{AKWN1Q]vxJU3̐/6+XJ}y:%Z>Jd*4&ޢgH;5sX'n[Cu~4}ʳC׫m;nLcPc ^9?*5!&˄cy%E&/1|31=N HhՍ5sae:u>`g9cٹ-e8Uz ߓ\FNo#r| #_[@NP>dKe-10Ԏ7=7s3-ΑUv/D1˜f$e[fk߉U -- r!@*g5DJ rʅRHН+u}Gtm{C/ʩK%( {!a A: nVn?̕"~g)f"5@ςMZr4atB$ B h&Ą}jea Kg@rT11G{#g4qlJsIGNiᨫCVM$5Ea/)|OeNn9ư$bz/qi#V?pYw~k\bK:}[юߛr1"f Xʒ^Vȝ~Y?hC߆!Rt49X4M_@bn~fuN.jeJ`hyTyf:4xdkRP֓LNm{X49ํ{mxg۵e{35N|ts4ηߧ말웘GjnjZcG6xrm x{7 TWߣ_Z'nY?PN?=R#> 19λw\0*6ݟxO̺$ ;/DD Qbҿbxؚp/3D琡.ܫN)dɂC]!T/0N"J>6u,z?+4?lOHqbm[U :,E~j~B䬅`=# Y9KK]yWhYޘ:˦%ʼnlL']"!B<"?N o~׫ 9?'jzf"~a\8gBg HWϣύx\ЏC}N^|>zԎVwQPg,6Z:{$Ux 3O2ԀΘLh8!{O\Uͻ> 6b` 4ZSwU֑%H,z!^]Uong=ؒ+h~ dbp%u/ľ+85#Uп}/5hpa'<V_ь6\ lTEM/q5.зǤZxmD=$_T{vmgFˣ[Md,kJuؑ=|īA9/jBZy!e ig,ڈKŸ lA!oO"`!gt gL b' @yh7! WBqg9OºkDR\+7g>Jz@"k5>!FpuՍTD%<OI#'pBR8` ( UO,7 ȼvmKBۆQ ef7LLϺ8c 2L 7(q"ےW4Svۍbm> xWF>2 }p!$hYDS⿱(TN/[zTVyk*55fN~E=}JXUÈ=+k_֣.^E윗v:mV.E \ut>3;(@&Xinǝh!O;FèSkoڊv8 ܋WXfšAs.+yF5%};oJ#E`Ǟz_j{Raɍ-9h,M%Ea`TLAȍsq赼a{WOM)Id+=6ܔ EMߍCrt0⍎ZČ TW/'4vRo9'VocAxj#,nR?4 f" pdХN|ԛST@8@BgQ8)f;uD묲U{j쑠m3?C3+N1XͮO#C $HOVE(P-yE.df{ذy3V=*ݕfb$ /}h'.86~'ubB*};; qeN/_^qDŖjsV>Y~uj}e.*rH) ` L#2e2zix_71 RE}ȝz bǀ2 c:;Yzv,A ,.XAo>1 MsXi g)O yF$`j)2\흾 l6=V<#ʃ+=t,730`ͶFbt H~A,~겟/śEzmʁFO(UX5FX_Igma뾔Ab 2W!JOi:}=c#hQv;ԑH_mk S_wۏ a\?9?"L7+'B}JwNSǛdߛηkBG(![J-;;>o#:o{"3$UwӪ&rﯶ3\NЊͯ{gbOއ"[=_;[v//[|+_V_}_ }MS8:߯7q2Zo|y64|\NkdžIoM&ڄ||gS\IC4>k^ٿED6;<1_-G Kqľu.=K$qY _$ 88c`zZT软tj4dYULhJF/1Lw-HR1'Լ]tGwKl 齭U2V.' eq}_,~MK k?QPIox'&,+)XUI05[VM&-l5xWIzBIi+mBܧšx҅ j yL{Hj3X<|1n@Pc=I.t>{:%$%VpZZGa-sj8."S W"%hg*׬{{+_QW͋U-Cu{3 ޷lI_["ퟕ՟V̊>k>=gKpom?I\S`Ѯ :ܝ(篇'.9Bu2)>5\_}:?N6<}raYBj]4l p`x"]~X,;xGǁW`9=,D}jt!bnLuF8 ;moFlC/d5a#[2*s!ΖzPȪ' m4_<z4dT~\3\'3Q~ZYA#U VlƬɐ}ӫyt)NayF"||ո‰5hw;t=ϼl3gg 0mvSSW(M-`sC|,DaB`Q }m Hіdж#EM} &dg@UӠR_!*qx]F?G.ܑO'|H%5f_huP^j!l]8*P{MZ QymYς $* pgXUk1(1'I~tOJ8iu 2YP)3cl{[[q+7+ш…$^gNJp"*m#Xn*u\X s-?1Witޭ8P\ocHxáC,ψP CqwGBu.N*S$LL'j3IK!3a4$1UpP!ӊ*2(r$:a4t<Y_>%LX| V# Lp\ˤ:u=n_#@PA-3kFX(lC{?\geX(DѬkrK*c| {Ųw\vz,+E$D)C>-[  _,LJok"9/:g^3Ks2/H7 <_=6:#&3P3!^l-Fn}ہh>ctbO4cMQ:W6U>[r;6Uy< TENpg4?0M&,bmU+xL$\҅ģJ bD[m〮jDEv!B[*FC1?tOM%B$ZpUv5PTs@!R ˬ2P.7Dܖh6Wlo8] ^%6anT"A= A!Igq G?˽SRJ"&(,ϛhYJl$(4ÛI+y x)@.Z} ,ﶟÈ f5m sv&} qx璮{Ձ#o "C&~HYt@'mal9\285eX_󫭋x:ZKC> ;K7 6;8B]~R`XpF"oVYO-џBPWtw fp,(iy ;QnִSߔJǞrGj*f]68pT ;y+nz:tCB$I} al&|X>:+OE'; =OI0Y䅿BV9uS+I+6 %w4XG8U+,+>x{7:Vq]5J0"1G^.dD8AEG~texe7j@}Yx ʡjG ={}$Jݩ g6!|C <?Wf(fe9)[C[f?7poW8CrK6 NryW?s8waig+$*(o1T}ls^&\x 8驶bk7`hlڒ8t!.`P0i T7)]4rWOo+L%Xw/r0W]GܸdBV0byU?$&Qc@Fj~yδg1E~D,4C>x}"1&&GO Si[_ L٣v٥[fwzxLME+eyY6/=Tˈ}2zf`F&.c0(fl8n&ًaYK!f->Ub\%ƧTlbbv5GA0MsgkHGL,/SUhUصۤ*hxiMv>(y @ JTo2S44km矤Q7 4k5 gaZ3xqgl~&b'_5Rж.Kle$qo&} +,H< *_܅tNl2b ^vCi1'$_ƟIGQ6C%̈ɝ9 g_/E8r9(p啴pɑNev* LMpۑ ;Tπ"McFs3mjv/" t;'nY#5,ڭO |_Ci,% nUc$qTbMO3%!Q*+i)O~ra_-.ZJTMZLA_V2ѐ6#i@ga>,s A yW?12⧷egu4?j(_%0.=j*}i]0SZ̨#KI\5POkLԽ얙ۑ76PK!zx㥂f1MN8v/;٦'5PG7MS|@Aߵߢ_J31MY. UON:>o1"fbi C7Gc Wg\R\ OsG* sHG z "LcO\&,ag"eh/++Z 複FVivj怟f է z׻yӻccd-u$)$ h6N5"f0:i+- l V# GeEH}#}2Fd>@F=Ґ` I_5 L*A^Z2 "g_-h (Y&)Bw[`,HԟsM DIܡ(=P Aa6Aûw$@fxYtݮBc ix.ſ" ?śϲDX|tH,ٱifߠRnıVr]6?6 } 5Xcalx) a(Yw& KOoU=So$uu _[]'Ǡ6qv[kᷪٓzNl:h)<)`501fiz_=C\h7] ä.~[z5 3gOgh)grj|`G؜fso?K[e +Hˆ{ ,x= |B*Dm@p}T/Uv0r Ӎ0I)Zf_h d+ ܭV8aYeN=aJ֏={LK,MR$*.yrCx 6Z C> f ґ_(DڠJhqq:W}uNI(rCQ-(XRF/ JwUESjJ#|c MfC"k8b?>v" me,>|O'A~kRW;WAoMOtUzm2̧)JCw7YwZU@c_Z(lEoZ}P&xb1v K[<1.hREm6}. GmPpǪC/֥diOlб~qQG1{{hKR^Y/Pd\vdq %Y|39`gV2J+81Bu ) nUP nC&Czߧ>zJp+yY#M<:-^S}#~A8F͗ܨWZN7~V馡5jlL* ZvOHP.mMd$>J8d7=4~PRl,PZ2j5mZ(])"J q$&+@$8"ّlWuL9(qbJ86fݏ9ItG;@A^ɺuU+m5 qCհxj!zn{*4XKȶ9}S>t62l w8EVm6]0VmϢɣɟssM@WANU'GǸBl^ 2Ҳf~f~6o4#/!mc2V)W.\B+8lR ˌO@Y-t]dm-nwYm5FR˛ڣMoyGD<|΅*ٷI>YԨm0)i*o+-JlQw;C}x(DDrM8mj:Yo%Ѝv+p~oeg|Oh,Ҵ#q>{/B wtBhf1 URa_;=eBGna JOFcHu[ ei1 Ueyf..@f 8%~?)=2R8fǂ ܥ"v dyW^XnDy&j$ NzВ :Jsyw+gCL*c;#ml^>^ g\ŏ?թjјLI^ӨcolԞ .ܳl`T'^L?:o*r0Z 7"H(F3ZwqY)b[+%v&NwI5dtʕPafǤ"JFy(}(g§ ~H+.zo ܦVv2!ViJdUxӇ^܄>X,mC/~|w)fm#&B*(l^}L`?cOJ7j bw<-_D56Ќ5<0H@EJ^8t&.^pBjR$=|aR3*"\TQ6;sĘ#&niV_v$@3w6lg.-;oHn\C쨩pμyͅӯ,{)HP㜕н+}+bΖ?2Bmϟ$C%#K_&'&pg ef\*̉c a AO,P'DK_:K_".[Xi;j(*k"r7B# LjDן;{I;+knF?E3 d(nwӉYC͛Q^JQnZh(;  ?وn<Z|#cQ<6Ra"^j ,Ĺ ¸= QE8Ea?eW6X]J̴DA%|6OS`ļm*Rɢ,AOH.aFWdw^lxU0\pSK+~PY5݌P:d_/| <^7bEA׆TJGX p6jr} 9 ≁X^=k 5(/i;24t_w) 6S;fad6ݦZSْ`97hbi}d' 8;([Q=bJV9I@x2͕fg^5xR'ٶox(`~^annn?T{7xvE ;(׳Dyd0m0dž{ӫlZO_\մV-!8> <fD>pBek =Pt\kPx/dSSZuYj8\,@K%\6hQ3-U~ ^#lXji-T&Tc|-ߐI#ٮV fAO~uzQO=}fAZZQLe<Tm}q:I!<6se_!)f"W K+0ffA%M{W|ӋJ;H)Dg_>$Y8mA]TJQ/P[ci+`i4ғ|?w:Uë@LHu{EP4wv68w.+"jY֨ǢwUE+oo|#^!gdy n>kZbz6 V!|.%ՌMC׿WD|*_0=jNT W[~jQ@3]N?Ƽo2DzmB]꿮`zl/GP:j87'"_sT Sp/n-S)w9LnlR̤"yO%gXv)$f1iq 1{E]8x3wkyzm _C7jRi|2Wl=W[+hVUb I_γ1]CnIuNT q< ?]zx%K,hqH}kJys}"ݟVfg;e}U0QA!`B#ȞI;b)-UL.؁fe㢂~ ׌} K/ӥ!wl ՌcE2w̶[1eUy>o͢ gg| ߍkj]4gkfx1d?V+=J7cA6  }V {f&^GiX,FEПQ͝#f n?sbmˮ!Dz<&S]tDN^*)aVQ8wlv)_9XPȉ؍.#j}8YP ߶7Wקu'gX2P*ix a0Գ2{fy'`-|ա3/wuqyi_z:j0V k'AG9 bjsOe޹yW͜<::Ii ˔cx#y%=Z oM*;Q ӭ=t.XVQR5 %zYs 62@œ;T'RZ\>>Dq A'w@')]J[W esLٍVV9AlF ݧ"836YW]x-Xy. ]d8J8rTDo)uԖ쿠$aWZc<a% ǻ[!qW!F[= PTt+ChIudpz\hy*Gw2?O\ԺO)zgRT4cғ-;/LT 7N[>66dW˹}X5I^^$*ޛI57x r)|mAKv, u1L`hv`3wo3{E=j,آAeƣgl ]s,1s% $ %SD4ᯎ_ kZ>04߈9b[8cn쮲Xy)P/s̥'Xugײq; $#%~~ԓΕCKZ`]U_e8%*jZvm1xÅW(r'E-ES@du4ePF(!wiGg#0Ǽ8M&suaY@BkWyOŀR\\$0>yܹ|{{{ߍ.biu%67}3l;_'%:" I$(2ɊAU 1U2oAf{5fuT:]QH+3Y]EsYn)(ɈP yԠ@mؐ{=3C d ?f3{0W "{b#/$vy=NhHssIxGmNmH/2Ղc oT/@AzQ41K}#5or_(>(i&ΥsWVqQAE]]Mx`wXGV,⦀\<;LZƛ9ZTrY<}rGUzLrg8䲃Td6x¿J]1=!ДmZAx/SơgAtuz+}y|r]Ǫ!7-"}$Fpep{AOߴ'CO IMfvPP۸ boR]80 _Ez6\ Z%n0zVZS{缭ZS,b#;Eު'l6`X>`= OjE;s u|f# J;<%q`9I]Ta3-TȊ̭Az> _N?APM I G8(f;;:|\"*cv@IhM,@IH7TD$NNV/utӽR~-OcPD%4x.e ,jMIx6mHWX'ܓeSsG_$FX6{Շ9m rp)&e^p6Ԃ>S}\|駨%Vg1RuZ}J%?4!ݎrv=Y\%jd Z=; T*6@zssK~"clܷvY1p~ 0.&cvvLBΟlU#b3YUuq<H;Aj4[{}raT-uM?T)*1}Nsͫ:~:?amH0j$'#Hi {uªdtEhJ hƢi4mw]QvtC[1+@%+*Eer41c4Haϼܶ^>J!榍5Qߗ &xˋJ]5j'h+Ύ>nGsE+~O>qh,-:)$QxWAdG)YC^blxL#odj )l-[-\U,"^O#f>,Ш%S;ⓜ0o56 01Ǡ&B,&{~VG&QeNt?HGv|Ȏ "B%PKS}?Q_ ъx(rA͢lXh3#Af7bD/ &ڟi)!7IKXX6@i- T ?)-ɷ9w^2'D Xbu@O&E1L_sԴ%=5(·AہޓZJ5";XLre؎)Ey9PZhoSfV 6bygMw&*d@:޽ i독ׄڷY]R/It/شeƯ:15,= K*fjMJV*p&(QYZ zYϡPf-0ﴸk& rvA232qmjh{'#7{3{|ôHiNxn5/ ő"Zo#rirNA Q T4-^XPI>F5#q0#[ Np309ayrAv,1뿒?S4ɚne/ZC TRba~0ND ۷T-a B \&k`_;S1q-  |jP5C %h"r3F#ݔRq $8sI֩éoww|1?p\IAIPUqY1pjjK?7+Kr+ -?U >ҺAr۱mI)H;aV! ] G/$`Laovk0eaRvmc[}(DS2 [p'hgcTghJl}I''\g")# 24{̱e8lsvسXxgjᵢArwEIH}Ձ%$Qh>t7tBI.>A}0F.A#qTfѸ׬}@h&oOClq;̥бQ1W"[?PHeIG;s4gA_fGR:@?t;zi> ke)yF TKbFL|fijw(;]}NLvm׻ԤC̪[vL[SMXmFTph/GȩrUH:nYTZ鷎1hh MUeeUU'Im<<##.m"j* ZHA*fc'`.#z"CBi7"T%Ud@1(m*iyņ͑W:x Zv!sŸUl~e@ݿNZl[{x,lQ=J 1u7lX;lB/ezrazClo:_[@"@3xbMaa=5<Yg*E^j 6J3^;n Ȏaq&$NQyY0C kfWjSDP]GPR# /+HMRS#$$ ^_*#v[܏<94nDa#s;_c{RsN916(aEꄱ? 9}Oe/>ڢ!Gn:{nrWE{904Kg  '`mԑk Hr. ؼv)2,O,9DFKj>_.~<>V&󺣮"Oz:D?f3@1[ 2rH$jEpd^f 2^{v"́H*Bᥭe )(+L/ otXpc%)s{I8FfOA'M )G:V }VQ{b nO{\mq &]}$1E a|DɛJk>v-aU"/Iv0GIҙn\nӷ7E?:P'6>~|5is%NX R`s)!~q}yߡsI # xgzun'fz(6'x+ӱ7Qur9 EfϤQG@-\>p˯ٙnAbJMfms.m:ER;S{Fgra>ȋ}^YZsKœzQL:Y(xEXRGUܽqCƟzм}ˌKo -l;&8tNI=v *v27mc([Ɋ۰;GecRؔO;\W[4ItjAk$]F o(m:Q-ضfP;~JxQ[D p!A쟝3 +k#1vbM]H[,7-d&k#6%>,@'҈V%M&߱NVE\VW O*i?>@Bݍ/pFh]W5cҺgŗ gk׮a8sa%֌M}iF%-܏UuGgf\`+ U{NW/ih&`8і~9jH9\7@꒓{/J6F>YO'b45f"[>DIf0"4? 0{z*o"c]!?dW 4;Y62b8?Qm2G\ rXyjprdl\8`KD- 7sGv}M;OG33Ț? &W,ۇT;U-90H<7"^άx4wgs[?a >dZٝyp~>:Fd=_$Aَхƺb06FFiXʲd(5Y))^L?I窌XUL!b ut׊c+dZP͟]4T3$TA/Ce#vYvW CX)×R7k ̻CX#? WKća^h(s8"{D.Te(t@ s`P^a`nCFi)*֟orQ'߳-h;V/aD OP͌xTRqWMC9]IxZ'kN lN=p'bѱ&m&EoBP\sGf뫥m%jjvJ]^.qE횸e,0@֧ XPc5KAĨP~ܟ]gWf =EV#'q8j##Kz j Yˡv;@\-oG4Ŕ0u^Ͼ}/%Is S2ԥߚF.(h:`PUDe/(Zhfi -*y_x.U~G71A! $ $nM(6:&5.FED/=N]*zMU͏4(tUaG9v쨧k9J$a@U_%t_3}̳Ɇ4愣ּ!cpFa}Ja4k!JЎH[,%BfL|!~:V[Ċ׵ #eaB cjP.2oWR7h[)_Myۗ n"xt.$i̸*̳AMsJz7kWJ!H221qqkҜ>2QGϹ«c͸=}L)ԔՅ1i%X^$6ZBaO€I@yd YDuڔ}Z׽(.f7JљןQLDw!O ?fԡ'^Ez D!#"VtdK Ì{+3ʼnu_={j A)aOnj4kyA!8vZmxk1ZTZio$7ià?r:ɲjpߣ07z5:xꭴO@Mp$&v\=lG:ǃAaLv Г+>ky {qG0 ,#$7*JKFЅ'-ۜKDC`.+%H'Jm ,DDTCQUQRw@/oBq1Pzp{)-vgPX?)-r v@-7yuT45]9CN!CPyQp=*nrJ)xKWsϰ^yQNJQWj[?^;{ Y*EI ZO%Ŀ՜Xec9Ev,0O5C@wN}3mȡSPɢؐRoDF]fφl28q~9h.w# gy_&paKބ9A$p(UvE8e&"#..$oFc9^Th3!e/&a9܄XvD+#έ:k'Y0t~F7ڠP94e]gῃmP !<:M*8{+ڞÒVPAT嬈kff^%uGzpcۂy,"VrKw" λyBTuC,P:jųbY>kzʜrlfX:7;Aq9"?@pɫӅ9Bfa~)e,>jAeLȕ;=/ ̈́B1VOH]`Ù3[-R%KnC,!Vke<$&˱2nJCLb7\, rHVΪK/u.b{2JG%lH Z)bY s~(MQC6cԦ鹆 #>yiZ1~GlCC57kՈw܆♍;ʱҳ4'ǥű,RGJa@wDaa7%FcR|X5 )O:x) ej]ivM$r2utĪ(B(}Ē)nW6 I7s;эsՇa+^8C\2I̻@f8i[붎EW!r>`HYhb\_GÙdU1|&G?Լj-%8PH?|̓)GH:4GaF'>Jz!^өyBz׻1:T-yK_174șTkY[5ߦwdtO5E"ȹ zXqG61ay̷aFi^MR+{r_L;Zn,ӗy&-'sB)e8<-m' ^ :(!fFT",>pW0f?B%nR!~WbhR1'1O{v{pxߔj>~[{I)"B\V[oe;l&a{O{&ٝ[]#΃h:!\{. x-2_g#_ ] Yo^,_7_K[5|eVc<<2l SS}^T vc=ˋ˜Er6qN*aTsM*֛E̊2hi:My-nZ߉ߞ`.pXs|Կr܉\yLQd!:@}󻾜6!"Z\Yq4gV\ /v;nwtg(WPJ #>P"h (t2T & repX|.I§%\ǹ l|z_ҁZ %B8:18j?FtuN gHMȈk'wJ0[*AO8 or_E)Vµw@R  dABDD YڟavrHX@ZrQ˳<ײT$r9QKf{EM 7&KHV8Q!T}<:PGWqgQc`|Ms%x񄆮X~ϟp]UFG=\H:_y`w4}X]@ޒ}>ܢRK7Bjb\r6㴲Uꊓܺ 9=+v`mv(nk,#9z (Β.YKQozDG y!hcή\|}꼡uŝ_@83d{vf!quէYͤW~<&+Ž5ԙ8*b젨ktc3W#\QF6d|HK݇V+3&AmBb'l \6Zfbu؈㕁-tL\ߜ{srEBb5 M.h ڭ[fuY`H|ZWOJU~bf/!t>/-FMixG>H/ )6[u Vd*QCsШ0#BaX.y+Rz_|B;.I-nM)X/|]pj:\~qS"Z ̾W%TUfƓkbߏ̻UlJI!^Xv}BӽsZɳuqI{F_wFYX =\2Q4OeZިɠ(GQ<8K\+r nۑ3պI-a~:Jdy):?4{6cl{9Gh1]W̓G춗m6Q.D/$j7HUn֯ebܑrc!-c=+;/o$AMل=R>_RQ:T=I%( g{u?0}$(aЮm7)A/kV ̙rS";ٶEgt-ߗFJd?\as TBh/(փ8"|Μ,3`V%@ ;gv3"kG˦ ~kc=Is De nS֕D>z5ڪ6l"b@Q.ۍJMCBֹtwݣAץmurGNDթш4ɛ֠C=_tӡ˝XwA>grR<;v2ll6}qDUqKR4+rD޾Lmh EiX mAIqFP5tƱL ƠI-xmvō`]%K"~ b@SdO&2)I)Br C.%%0]c~FU|-v10p+3(wK }lf'N`e",&{.sKE^+BE`#sH1[$yѢZ\ltٗ]2IGؤV 9K.[˞@z}h\t|X)D]~!4.FI'z,z `k(܉qa&@X'l5i~cpjA~ecy1@ڜQ2&|L}<,ehw/;ձ/񖅆?Q?&<-ƻnWݠ %E<~u$5w~޿X!3[aGR~@[L<. V8C`9 &NRt+a"掠n?r58VQ'@*@qAw$աh`yr;I\!Y0^w}ϯ.&vDft+̠y8H NBnA\o ]`SH"=_ 6| c7o݂_QمBY87t_" GrADTBx 2e5K.o`CC-~ϋ'O]ў }<`?5vZ7]1w+Þ.6P_lb.#+q~wO\y)gEǢ5^Ff4 uiv(7raFf";kҒhjYN#;O jUS XPV>j)𶰯IJB24,ʤSgKtlKR4J)x6;#DbxA5yH%J!)*U?GZJh /~HVQD1 R}w^V٬(/q]PL&LUT}R՝D,4KgaOp1GЃ6]O=u6 SPfsP_s)''C5n5vၯ <0 k@1n`[[ gkv,8HN8 ~Tͼ-I P9_brǩf4gvW']% kJ)V}3܋ArМ梳աj^2k?Вu=⟉3rJâL'4k* xJ ŁْWq$7(엮srk1Vo֩yjof9 ,琷FC&rDy\"!D[̲+g9z+S@c}Gk2u6=Ÿ*oS^#V[K6UMW`@ʟ(s ِpŊ&2? 3YA7Vp+;4]PuGS{:aFG\Ѧ?!3\ 1,bܻM<}Wi3stc OӀsPeGϋjA? TAE!kRᬃ%IkFCl@S64RRò9MO[kq@T׵ʖi%Z.DLK={RMEs`jUNU NJd{PH0U cgЈh"?X`Hʺׇ%8vl:16ݗʁHPd/mzkZ9>}9.=:3Y1Qq5M@pwA %@pwwwwww<tWW]}y4Gv7t #[dߕ&䵢$YԷт0K 2v<ł\Yب+*V`d6 y7:9;kk#e+lR{vBIrmP5Ke%fqSE6P7eTZk[b@1J,2{[td"NmcJ'0).~;LVL x8"p- Lc#: sY׺à47ܣK-0Pl\Ι^ _}c͕VEfN|\mGtTQGW%Ú„O% `x^l`(}Y>!8S~Q*ꒌ$/Rjʊ p*_㏉y zV&zf"Foژ +;ʚ7p51ok (ռgDQ4`REi|NUk3 KE햘|yTL Cݐ7Ͳ?)YbjνNoY8IWHސb֯{GT|xYcߌ$_r4 yyl8$TO&uYdhSjQƔ;(&0eŴ2xu%iS Y.&d=,t3 okȒ ݤ0IXT.s&C[1uxAQ]x [sW0}0&38F|FY9323܀O ,phbqH4-\5U@DfOciTӶb/% EܢfwXyt9^ >Sb UɛIa%z"+7˞PJ?ۼGECLu YƝ@t {~{)Fv\q&:/\l:f¨g; V@hq~L)dHgNtLMh1`EaWxµS}܅ jɅio X fSNQ_I۸$3.up=w4alqn>ν5 $ p(#j1ηvvdҺ9v߯yU2tMXw |r@Q-lZ8ZY*)7V+jy_ !8(δ7Ҝf5Dj^uwQ0$37l>_kĨ-T.I\5kNa?(p5/W3BؕtE TAӱldZ,p)4WjϞ t󀋖Ye$qCc 2yQš_0 m5U5ti$У,7I#x )gQdsdߖH*[ / %>NK{:Ms/QV82('~U;6/z.OKPyfHFJvè攕8=&JU_&@VC0K+,EE@>Z饠"Iv92m;E5*_TZ#w foo Jȑ$WeyBlQ3]=>]wVXOLLf*t$[?2&72^U R/Y{@r\ߞb2G}a%Z (4*.%T.Jeh[o `PTF'}4rC+ݴ.Mcyy,VwY9ypr"E8kynAMp0#ۋ_f10s&A|PgE\VͧkT=-50 afgjjp"`ܨ)ͥJ]E`S Sg8h4[~E}ODKm[ ?c84)q@[ٺlSz:8^{G͙ je2lY>j}Kҩ֪ʹԤƻsumo*]d)d,ׁ?G?;4 Au,gW _{NAk+ #KYjO ʸzX Oɧ87T7zd&72 6bg!/?e\'b@+ht+6*#RA@!wqkS$Żsq4`Ya+M@h&~ %y Q $DW}P ᥙ W:D[/Mg40P%AsZ@Gh4+0{p_;zO9;Qz*!VMwt H%'qxe$F!9Qf1U>NJ /&z~}V8=mnlWe8{"u}m`32 YhV)&Q4 WvDv1+ɢDPoug;r#H*` >g;G3TʑA,=L(. cUAM&ӗtk+s4_Ϧ&Ho e¤Jv@yi\_T+vZj[a9*I{j@bMPXԙCRF+$==/jW,`?,em?S_pߟQₛ1B.@ΡA!I}~eʙRugnso#%_>u<, %>rk d PLm/li@73`(R"CMP{PRP Hbwy%d]yQkuxG~Zg?.qtIEw?y.q~eKdG7Oo_޽7cqZlL!yz<9RީL:V+6'Hra3+N1V- YgҼE,Tqe)nVTOXB/ d(R%p;l9O [-3ϙ8\2ˉtXYe.hlvWҧHr~\Z|kWats %&Fv"<[6[z[amWᗽ5(L?dh+Kc0WY'|DOW8leE'8H[QW,˙0<@@ ɮiZQ_OtpQPgk*S㶀ݟJ#0ᩕ1wA-x5hᦁ:4oyWcՍR=Jݦv:;W谦uώ  5f1|X2ᖾ$ څ+z]KaQN IZBݣzϾNkRVqsgIw?uIV[ȞN<涴 u , uPXxﲇm'1v`^ QZ38{SAcs%@U:UM Hظur9:z@Ռ( PX#Jr|Lg?M6YL ,o(G}~1 NC2{)XDmy = (Gp=,_Ф]iVnTeu >DJLmT/@]Th~XbiMsh6[͔d}!}(Hr1$zlG8M` q)b;h2wTH)/9 ĢM5>vz zə8 c&1ߌ3At ܙR8^U:n==*s!vsL<>_0S+U!2w -Ϳ-z [7RS3?\XzLmg\M+eg[dJK9r>~C&iA*mK#*oT%Rb9wַ}hLQh+ã/m/@+}O[UfFt Emy| ךRi76aQ.N^?obBj#8wmm`*̊h@ JI)RDFbVgh'2IJ6nx}b0hn^ u*#>7(B/I+S{r$T"9(2t/ŌƺMP`xN(bmf]M#J|qwn`;R'~_U-+:ҕᖪ+ά <7V4ĿÆ kF4U%BaS iE96 \͝wQ ]w9/ ;bH7|}.A.ywA-A}`)VmD^y{tM;ϟY7uxv2{\`Ƅ+zf1:޴^rxBOjn^O^Ԋ#t0Vdt3 _KxF ~(m׃yk uf }+k);gSԤN\Ym`Bq*9Ocb$D)k F/rxItݮH!x]-\*ݦF"NEKkH 7yux"|@￴0 qՇ2z y@aI-w4'bm:( <&yo83A|l-ݜMLD`:$<{@[KʛD8Xk^q-^wHt"@@D'j;\rݖύhȉrW Ì|.leAā h _`3OZ,6[TS” fZOӏ"`ǻ*B:}(%gWRdhoB.$Azh:861BOL'L|毈 8Kآ.+rťH^PA߿ve*1얪a4G4 ^ah$Hny氌c@}W?}WrF0J~F*V8tr ",hUeg8BZ=ѠN7j^:Jd6qj(Z 2_zg 7_̜NF`}R j\-cY)J~DZCϗx~VCψ5#^ 5"Uъ-Eft|&l@Wqd"L Eڴ* 7DG.&fj}$Wǝ"(tn]ӂI~w?StNY&g'`WkIr"#1Fb:V7n3gcЦB ;%__7S[)+vH{ +s+翴@&!+g;ΜYj-H/zm~u!h@Ѐ_/=('Q^4PoXM"Pjkzk_x ZR Jξbp"޴<\͍ T`=K!hɻ!jhjNfHBzt8{,@l'|nSFr$]z*Hitĩ) XAux(}/֠u)8u~=aj5T^mh nr;Mu:q@|=hr>Gs\#*Tu| wg#Ao=#MHU:E 8Qfr+}zG孟##ă؆pmE(mUz*2 3QeS. ̨OvL2}GlsRwFD72YLfY5ӱ=.PjHs`_qU-/RU+"cs*fP#c\&}vt yᇍOoh:XA6BȞ]C`[/4rv|*vH]42è9F_tm2G׫Z@81(aHSDO4;(q%Z˭$p&oۃJY`>FIϘ35/c× Ȑ͠R|2(&ݢ"^B 71n52i<ˁ4:ƿhv{Ca1wm"1%ÿ`2YDG?CP~](͝ i&:.sw @nvJ(ITf= j;v 8dXj_fWsF[kW쫓b )j}ˋߍa}**~skOk05lMQ c,Xbh<:GsF,7Zc+Q bˌcQ a6 $ÎQ?ZCUnNJRKUNZM'a;\ߞ#ٷ$DδjM=C-C=+|ӶOliRћRAbݙu5u IdˣaiP )j2i Q ^Tzթ_0!bktAJf@JdNHU0# &ٵܧ#36#"z,}gA,0m6h_cTA,FJP`(UE_jG'SFF}P1mOwBC*buK*GvwzxjjZJ !ׁ^JapANl߮rMmuK$$duxY' pdV 5f .Y'(r= =T*xz۬UM{є?K N_M;*@6uot_ڽrhՄ P )+Y0}&k oX1qhFt)J W,N~C;R_$]A9SgĽ#ixrwS)I澌z /s?Dͩ}qNqpxN6ZHC/4v+>ά*n7ɃSID%=q$:+l< )uA(dy ~_SiC.Mb&Qď{?^'. VH 䯗CjJCCϻI>$u$uIJ/v Vm %{O#_TP{&$t9Im2ƻTܷٟi!`1d½|G&AtNHKd $=%6uD$J4 ўE6ooAМmxdFdk8~iZ Xh:`3vr_QU2}|s3+|hpDIl/-$ydn{F)wLnm!( ՂOeO{C1l=}vɽ]zy(.nǭh7-O1ük5NnD{hGN9$-J0  #$[hAC wC^m}TăI N{rPPOgՍ_r6#[$F4xR!$nr!j36/iV@F!^(9c7HC">qexJ:; ױH/9ʦ- p)]ҹPvUݻЮ Rοre3+kc33Xc1ڢtDS#&j?A^TܲTe!aoc_mBk5aKײf;gw;7 77yE0T5JiQexǟ&-ފ4z4Mtz.Ge:FZ"L$1& \kJ׃`7oD_$1My[e7mF2 ݜoEDcm ,mu'*@>%iٿ9_VXΝ?kXީTapE-O b_?PDGEn(ӨSq|l\q ~fȷbƋ۪~3lE@r„2bE?O6$N'NH z`pZ^&S_2fF/av,ru\N֭m 5)QOnV) xWUVޛymTHLiaptv30.7,X=p"Sj^IUeW 7.قG-aʲWmQhY>Kbs{  .kş/K z: .l9EX;UaD)b0o9+?cZ` 2(M807юzQ#_9$۾SKAW46A4spF1n_i3mLdbY#uP6oU=6kz8X>jG4noаe ?֊kn;j}sctp3|z]ҷ@Megq@&.|@:J2_|ⷄr(^%|fN7VshȒֵr~w{EwcAvs]2k9BEGL@,ud>Yd0GDR:8}$ pQ|op_mf1+V8I`T .W9@4$<sEG=p@TYa NsSLv2 2uBvw5Aø9jHV+ eƖQjr 4מ>K#g[[!wTd^Mݮ>sI.:t<߸°kA0Hc̚ng8ĨXK=tƅ5PVn@4+7ؕd\ҌϷPl@?V{`pZ o%t:^\0v:≧v@Za-ynFAP! Jҹ&r(p_x#5roLv؉CTX}sa*vH+wg [kāko25ا90Kٴfm"@I bZW$7Ԉƽ6A𢼏 %W/_W= OadֶUDo2݉63t=<$|c .H\). RL|ٻNX*ӥKu/Rn*v4{*(' G rRևz>@ / n:t#)\CBB[S⹹"('e6<|K_AQ#5Bš-̇CuɑLhMlN sWYp]Ow'#IP,A$J7ؿ-}g~;Ks?~gDÄӊ@z '=& 5eIERpL*nZO$3``3W3Whkk2^`7;&}зz뺸!d-BW LNEf>{M :F,,Y*iAeә rb۠L8 Yժ?1:c$%;:>wmK)AٽSVL} 1Iel+ovXR۾ʠB[,V)ּݥ2l9([ +K}dy6jOc ד<&1ݿj#$;_}˒1pJWz\̱%<jzF@:Tv{=~Ww/1dz 57H39)O xLGS\ZgϺJ3Q6]HKëvU'FT7̀/nVܦY3qS *lq{ƒ!hզ >oInj4fx}ôJl31Y-Eo^>Vz=Vc*>3L~zY I[@alϳٯ; 6V 2m_pDGޭ"쯈beV- tQHna$Ɩ׉U x7ʈSW\- SaVm2-S B}AiS~bR1oԍ]R_Ԙϡ%F#Ih(`0J[sHFeBq Ρls|[<}hQ́} k瞎[Eѝ)$P-@)ޭZDlmR^0jOZ̏ 2nk嫀XSI pd>LYTs\p9MH{)A\\6s;QۚaJzw|:KxZ~N՗~k:Fe51U:f,)"$Kbm|*CeZf# JW8E-ENd `1qA H쇽 NDUd>`{.[/o4E&[(=~Gi R /gB?^ ]~K"nM5Dݢmj ۿ 7j8`ッNf;+}x8s?Ư&,RZ?TS'5Oi䑯yL4Go.9!ׇr"Nb^];桕yzx'{9 bH{?m`~y4;߼M?=CWk 7{ji+:7ؗ#W( O,vԶyY<5)PmdYd~B.IՔ:kQ㡹["$?cT2`@"̗dΣjᢡFz̃da̻KKسn9W &ookNgDzO=g&x?n맄`u`9ʝ`a6p %^JuM[Zh!|9)JY_W4\@ _AĻ=h7=EЋ2TS*etJUS‚V0TJU(Ljd %?)Ĉ۟=b1Ds~*ĪJpes!W?g!5vN1yT^1QnP۟r1oTmĴza/,-E;;5f{xɩv&i=oν\Pѻf88嚿RqiG]/KUˠJ_cFE].EF E 1zTHO L09&k]*%ٙe^~$,F*ӧZrbS/%qd;}-j|5 YLZx(ʑ`AowC^swiXE$6tѻZa (u*|Гp' ш~5Ol][#%_oqF{MQՊUp NC5rf4XCLpG|:ej CI9*VU[T7qV!qi/…OtqnlCUM811vP16<^/XuФ_O,WvE'Z8⦄BWZ4?'3wu6O 1PP T &*8J/bD5 괢:-B[OrFW97ǩL! 9=_}13dC,+eoL QƙR5OkGUht9犒TZIV@)dv0} :?OM| 2<{ӯw/ f>`‡0LETcwOLg_Zz ÌK?}7Dqyj~{څLz-o-nBۻg?TW aK̐EL}QdЄ%,aniv]$ KM2yl?MgZ5b[2֤ d [#a>y(. 4e_3m+"%6֯Ġ[Lqw+ݸX@X$ڇO9GPyn!@_7G+ԄS6-\s2bk}nU+K|Id>Z㴦f5YȔZvUv.=l~9*VصFZ)Ǽd2Ker!P19(1_(}]Yazx`Ipml'5pY܇?t=A'e_ة@EqB iׇdeoO@4PjAX.JȨM ^nUML==\+w^Kۨ'UƤg}o~5\NuW*lѤ0"OXYh3W7uͮPp]5s#]/9# UwbD[Uc CIڅR6n&r0+IyCMK2SYGZ{+Zx{yqKk`dyL_Bf[WGqF `Ʋے8P/x&| !B";&Yidwgǣ֫ݶj`?E+.$U)0T!R9D%ҏ8% ;KIX,{σ __ h"pfbmˀŊ>vDP&/&g|e^\L?_PڧF8Xb:#8,i'+kɾ2$8z\Չ۲ANԁѹ,;$ =uAM'?\ ZB4lIܮp}`s9pdU麸I1G7ݹsiP2O,lG_ &w$xJJ6LAe5Ob`,B5ш-ybr<&jAE*X`g\a>i$&ίIQ> n129T/>V[qSZ=q/߰C#Uim%LV l#6tRj 01d%)Q룖Ԉݱ[F]3vɕՊ()m=jt%f^aA9?rzƪ9S)5EW9pi޽(am!Ty58mWED9 Z>d{):>HK13?9|.xdw)k{lܲ o ?Ze>XKr-va۵L$TUMu._dPZIHnGXL"mCFm[QB_)|*!3Ԯp6_<4/exIv7{yh%ƻסM {g @`XRW W3,]*(2!%Mg JMi|26+}yT ]'-|lQ9X)|y@U5IReiāijkk Vj.6^، 'm}D "n ʹxKiҪfufo}yXH 'b2 4,2E(J WB]f"ȃDgAg[(\,!ULe٦E(w/8G&whve%8P3GdvN 6pI@$x)AF%Srz*SfTDZT:p1> Y<cNFCJU(/h+s1S1Pio1CQ,a:'2Ze:PMNΫoC4&`|Hcu}+G`Zy=U1(i~I PHDM9q Gܱ=o.y{Y,`y> /kIL k48l~e  8`{+ibQq1q&!2IkHQKCS }ݒHU2%zs[e)\Tn_t/1[VPy nfN!(|tuZ]B9J=Ík-JT{G9{8eǁx<=PZ̳қSOrs*4h"}w厾.q D//ڝE4w.O#w4Q%.| m0&ƙzưKi$8՚i?Yy7ըR]%T{1/>͕#ek#Kf91~1VKMLy"kJe[K5SӴ͋qPK>Q IPƔ #1_T~ZX($u J_\Y ca3u$+~zG-0[*Q&hVL|9X0oʧ" 42AӭСϳg8f14ŲVە))@:sOAYLK!FL2)Zq^)\4mr@ ^FE4*E_E0#"o5D'6 f4xR+i}íuv1q'u@g2&~UMCcy)B5VKgvnj`g%uo/_-@ˢ \ }N~z"Ht?H X 6R{v{YwZ dl g c-֔^)6hZns K2e~SU: R?u_]!{T`2!3= w(pܘk1A3/~}r)vKlb @lINi"jcsU.ƚ -xh$,-NgQj3ʧU9" in ڨ6q(u~xIf4#=M HyWb@־_-f\Ϧ}1<#ziVfzxƇ Ơ[!=hTz~*PBCF:=$ڷ|*C9y* _G#Azwg~/`0*n`Oi/bJcr*kunuoĥfuMw:5,s ir+%-oV7?M6X;-U>MP<NJBٹރ=VWX<ַL59Vha;g)[}-.6{p՘n3:EK(֩$&Ŀ-}p5m}xrZtH>9e}.sH~ RE"1鱡q<8>֞I9Ղ V@P$\Z[I݅J-_9HC\Ѩci^ݫ;Jm^;*nadWq_b)}n0#s ]3h|S2\ btS2:eHłk:wS M/ _S`4 / z.y|tOxOWD}\@E¬dAヿVT|ŔNcq:p[MoWJ }ҹB;د>gjZ5nc{,v, u? 9<:He vX{~ Y~O^vAA<1R˺= nv5] T3su*/pLYZIv_4]  %fEbr4VyX# - ޫfs"s%j,r%jDsUcRܬh mi/R܇ˣik+=kZi2pXr}e˲pd\b8D}WLE2e[,,Ӹ@RɌskrM||o,ПY-ZT{;)zg w|f~>mN^*>b?R=8b=1~h e91ikQe:jh9*Sr"IX9kz+Cj'(:~0+˓Ţ9фtVqA`G:ëb#3;?Ccğ4LDs=&0|q%TQɄ4@ i8> .GiJCMfgZ$`3Wȹ׫䛆t!, 9hԤ Y!Y[TVDȘ}-GLEBROM Fp+@((Z:)'Lnmyع3_ĞEMCކ{Gڏpk-Ty$b$oчۣT;iL.^O٪|!O#֓_`2Lxf6cRle`ׇp,.vtQAqeaL|z39Q%G_zRAfdM38r6Cf UZrxt :$f.irQ+whF>SO{P 4Hة)tU>wE~ģcva΍w ~P(ARBe'D< `FaKHlCW}_4)ļ-M[2׷$G)7v}Nqjrh?TvO(`ġHK&x[pfu!s\*Uj4lS .?5,7;ћgӖ.%d-jm/0Av߳dQduQA!6lj1YHƑHҚ02w2?ƌ[npO&3$aCUё,;?\6L3r6Q&9bظ;R +C,v|~.'Bk~8p@%F+W(KB2 ưc)u XxêV2O6mg*ފ airvk[/"qRp ]$c%R(;}f~1˃G`R5L5J^ۂviA2s _cb2NUcf8camJ1h1^1/_Z1|dɉɬJCEa%gq5XNKbsR}mXR{6.}ըUbY\L3zZ QYg =~6(`?cFӾg?),D&tF}9 `N5DhrF4cewvRv`Q1X'Zpr)dccMT[TJ YBeɄ&aSIW>qzWm~b)2;tP/3$IojF8?E_V(A8 O\}˲(ղ.8dS+t-QIHwõT=_7GCMzp26|r&9{u&&{=VN~cv3Nau2|<@ c#lB,EcZ8tX[m:ajZcg:mLL-mx_g|gxKIR_^!9ЎHxE#EL23~akVl}wv=Ud^9}>2A|Ei2)8\dd܍nyK1T oS,TJXL)=Hmsa7&m0'+[okۗ6i25PӇ.wݫ`QƐ}}2iF}46b<ƓZ;L]w}LO7\hRw5\n҃ǺPrhussSQBN:/htzn3oƜs;hy'Q jR޶+C uZgY1 hjkp8٦ݧTL>'Ӎ _\kYHP5W8? LV>Μ?JLu)osnNQ5<\Χc[" Y~SD =%(LIvO!N5 Χ~p^C,QTBg\֯ bٝUPwi&(#*dyY;p=8QZ\9D0ψ\ 2=/gڤC6*Yr9C-"\jdnvSwۗSü8d܃|ֈ}y4 3E"2"=W?WXnb槎NmJQH3eAץ23wCsk>?n1oK8z^#He>;öTىF&B0EJY03VE00;.>p&eY{x:k,<=|꼇i %|ŚΎ8gfq ^i=I&^ˀ;1.rlovɽGg!ݎx] |2⌣%8Up>}*ͶzD RGs^HnpfT*'/pjɡĺ:> &z͂=ͫa Rg@8p sw䥳xF8|$i+@5`c6Zym !? C&Ciwcm4phZ9rp A%I#7)đs0?A,[}nq8:t |=zlH K/%),-35ShEZ/x׍Q"D auS0A8PŒ)q,`^H!*! ʮ. G0/\ ~ It DwIS5Z Z <Op!lTy2_8|NV;}-?쉻V\ױsYXUV,2pIأgOнz/Ď Wn ~˂[E8떓Q^̃"[x(YRlikcEYMj0[TאbӾ \&[.&|L'׋E{ؑGݲJ`&kRR Oہ9noPSPrMa ea~Ʈ} 4X\(_WlT6w>o5C=y0yhZwVJMpv?¸w]PXQ9T :~l!N<&9p5^nS]cэ4D<~qogآz/. kk[S'Z^hcuȅTۜIO gm8Bß])(S( .~&Fe &%ʀczZ#V#= K,:Lc$w9BX^8yݞ;]u0OCe2-Ԅ?+ب`]T|3YH4|+Yx&],(wҜtkGZ^NG0(9btSߊxE%7wEM弖MĿӌ/9!_Nb ?6 &6Zаm_%txY%,eYԪ[ u[@q\",uBB~ƒ%DM#~)2(%L6Ҋ\#u j'QbXYGƎ{!OzY' 0{p,'PɁPZ=}-ӸJY?5WkE5.ݸx&4IO*兴-Ǻ`|+c_ 9)'>ܨH<=lRQc*KS5$hݳy?Bh4DV,ZA~mGG'J^ԩЯP0rg Ȑ 2}l>Q-N5US8)?>6-FdU]Wc&u^ DF Z*a,$ F;*0T~}ИŶbdˆ*sFUuH FXdy0LEާʠtLDT2v2G3jdN۵ `dwE-xفh߲H%uh}5s%RTRQU#Z~7vi1pT5,S=ÆLta&H3햔C((ρ!x2ZBfGTEu g<ejawC$_=zxUHe&朻eDW97ԇ8"E &HR`Rşckmd ^̂5ʂ_5v=l))@U#eUFt,R߯:]s2x<_ՆjNN&\7"Tۿ f)nXH6ݢ=6f8a¹1Q'ag\=5v r+RHh_s]90sj \dc UU{|g/JAbI%ya8]j5MʇAb7,րlA-jRDy_<[I$i+Jsfdaavo3 l(V6%Ё^..+E9f(P|X=2`šAW'!4!B/+éfAVcĿkn̍e{׽Q }:Y Ķ秧)˻mřL-[*!9K脝viDn2q+==l}[TC5SNCC`8F:`0Oꄛӈެ=~y۵iVn( nr඙Pk ǵ. d*nǼB[f n(yS b,b$cرBx#t׋u|2`/=H A?JR'&mz؞u4eZۘT/8wӫYRBpmk WasI}H9ŏ>"]h4$7%2ۑh8e5xw23no3ocsSެ(rAS^H]&C7m h@eҴ2!Jwؒ| ?I|#"{ٺ%͜~.Ct9g '<#jc{(RSJʘǰخ}hSW!6hY ~\P Q?*~eP6Θlf6ZwS0y'x7n>1ԺLjI[ЈȲ& +A*[wew {CHٴڶnWe~51+Whdv txOƀGoxJڰQt ?"5iF$@8gynFtUw<lS M4+r%agZayHL(#'~ ZϬ-'q--)!ٔ@eŭj]FKEI-f,#ug#nVoš7l+ L jRShhX8̷_ٝa:2m)+##~:KP #2[CyѪIǼ)T-؃ٶ}]H!ѵ3VEm-ènU͌ *̟փLGne-%mP $mBX?Ay7=R Xռ;Uֹk[ Gb^O1% i欉Lm q\v(舍2S۹jO^fuŷ'c[k+%U&ΞF 'Aq`/޴yvv2ͬX:> <;Y v  CyR)ք-7xfʬ2cjvW~&|Er#1qlM@pw [p Npw` :wwwwwxV:u+9;O5M|!_C 3[p ^q-uEMz+ɧrOB fs9ڸaqﭧFQ3V:0/ G 52%6DHx} ;iU{6罙 W+KQRxXTŪ[T,q '::bL);FrM/ѭP ҟT|dVx=uVfri3]ݺ"UJJoh|f'EOmHCr|'b3C;nX4VB1ĖPHwHE }\WBF8=鈁B?frٱYIqk5 EkRT֯Lv-1SzFu} 4M>ОTObv2lTuZE/MlX)DzDϬ(^͈rǣRz΍urZOv^#RbK USO~M)\fCNٻDF]+*I`=_zbdR@Y9]WvjxP?6 /)x.)d߁,Ji ljH/U 1.4n!Cg;Cg=NE̋ f. ,@5P gc\ms|"IuBo$cU]p6۽U|uGFD/& Wّ&dl3пAW*oR%>~k]UُѾǯllڟQ1'C3~Q$٥Ucv^h}]?jnJ ]XG^Y  O~x+vE>79q%Azn⸌㒸M5;oƋo(j}y6WM9 T_rY9_4fLɜϊ2gdWxs^k9?zU.*L'blCjw Gf/{$T?|%+h{ &€9P"+QޅhSv4ua"bzt:"_6GBxjtFB1*UXJ^RWm)BU P>-Oh ًO *f܅؏MLv3و :Z|?E ]vz&&m5C; LmQ(qD4:aN51 >VU:wF{:D)hu#UicͿPy?U=t ]ǽɖ.r DE8ujutEEr=8&lLyoMmxM <\h07aWF>rGVق?4+g~+x_"kY./ %gJP^U&&XjƆk&C_D2TnawYj'*~gtb@`32L: ;S/ԏ2+ M5hӬeȇ0t}bnքzPyMdXՊ=ӌ9D)Ll=z}&Kv;* J*,AlfAT@mT="ӱLO|$nap FL^*xX<ꋎѮƤMίd`̌&.Gc-.( d(|Tfm~L;VW|p^ >}iĝ}(vK=WMC!hʚԎ7ic ôKd_A6bI,LjF :&Rn8x.34 @$JuˆGX!zRI,Cȟ @A)f7lKiUpIѪp_kD@3&$LIpvun6:0eH6œev~!|<;<>d=ۃ9:/Cm膣D~^D8!+4״Ŵ]ݲȮ+N|hዿ+D0Q.wKkda$s T@*n+f*A /n,~KJ%$%+|yeuT\qr )v xE/&F|'K9A.Lܧ_}LAvTwS-oW׺}FD]8HuϷ0]OrzD?0䷎_!7t/㑤:v!`2xd 9x9hJ9BϋinjzNτk%a.%1XH!tg/=]\Icԧwش'(<bz}HA7HA[@bW^曪*eȣUHSH%d~˜si"g8W ?UǴs$7 6П*7Pb_vß/VGKaP msyEvZ6DSt goK "}WĪ2W}pZ+XU5\>:Ϭ?7|4-@!xmHŘ$U{y}!BGI>ҵæuMSܣN6NКHagv4FULU< S M/ӧO+7ϼP+3%zkṷG(>wyдa(ֻ͡6m%XV#-m.6S {l#> =?dR埼n' ݆y vXT>Z ۾8O+f%b;ڇ{h"Z%t*{UwdJFϳp>F.m LX}U9ƚ'jh #bAaZ9=_bs/ԧR>CS&(U V\3- i~-;`.R|iF=R3B+G̽2~]12^A}`51duX68*+ @>"La ڤ 7aٻ=bn/\<#|5}UrbyCGw٬3դ1nԌ5Tf[\q sG4J3*j8\j1;N\:Zo0 p?婨-'H"ҭq&˄Gbp;.|k?&.EId !3l ~P-)ϡ&%\w]ji&3{i-rF]BQM򉲵WtT „҉mu@\wR5`1ӧO)M2[-fp%.݈!-Vq\Kv3qDi 7=0yeWq E)CdGC9t ; = t063їȯbPtkfmf.b  qēBdkSͶibj. ϮH-淁 \KJp/!wgAS[]}7yL, ywuI7 աnȥɽY?Ʃf8/ +z]ݔi F} u({kC=4Z_5Dؙlv8e]5XɥN'*+JG>ӑGdx,T-(L7G}ek40&wvdU5{3boO`m+cA<(9I(]g LT׍~^`26iX,?@xh%phO05Me8o4 r$ }Cp :Ms5V-9wex^R8v3T#m|P8b]*3 Vxg`jYF80cQ,n]o3\zW|f2Q)KjRn o/\;\9A4EKegZ}~( .UEw@Y :qDyl04h_\\.)D<h9k[}zOo%Gf}ucTPz7%1M6 ?4S' \[-SߣP({CVXӉ¯sq:W JT~S`վRY)Xj²A$oVB4[$iy 6ばy>G77RM.xHJ]XjVD ˜*wG^ѢVD@gkTӷi*:Ws%YV䔓+S]b(-E#Jl v$~&Ҵ֢cmH GBoM!R1ʟ; re'ކj﹧Ҷ*PpA~JP;eX{ݿI.KJްTI,QEn`V>(*uXu#k^׺݃eW !,]YA9؃lu[u$d=}ooz_p5`σLcȌS<~%ح'S*g5q%B˃~Un*# ?"1ÎKX4<ƒ6r9ފ"ޒ ^8DZjt t@$BnA-/B; `ex*V4~Jeuo17P`hPLt Xϕ<)ՊA 4jzŢve4 FG3%cm? m{䎷Mo)vO 8bN)-iѢ|@^{ˤt:#%whxcӕݎUbk~0ј;d@Wnmn{j}]jq*wh_KCwׇvOHx`>8pHh:IWGFS<9 yл<%vFaGI)K x(<-=Զe_ͅ%A[j"a#!y_J[Ͷ{0߱+|PƟVDk_n3%#*eݿٚs°Ґ#%0%BIp)?9>U5yUT(6_Jq։l:AteӽƻDH/#6~s]w(edIRRn+/zyYfӕLC'@KPȸW>j~`߃`Oo 3%-nnq)L\AcnowQ7[?"IWZ63- KxjU\V V̙ok.e^HjH/v3,i ^l$v{)⊩l*ڲ^hR~M;^((b$2QQ2^0 p%ajf0} |sf<!@m"E))V: :T =YKQDK! Ԟ%us +"zSo<ϖzLs\[5Ss;۪%z սFDrgs)8$iiB-rlx,ֈ(i?Drli}#b}v\ B@LֱrTJz5u.eM7gW.YѸͭѸ"(£ {8 <ǸR-! ꞗ/6oSB5+1Ⱦ| &'ETW~SMl&[}ΟF=p*N5/(YK}d^e MQ]b?+&ͅAqCUYٛ 6)o%rkiUڒEo*zZ%?+¿p|UxF_{>~Pno*8EHA;)|3^Z\v4'8{q,[3v;AM"Tk5H Cl'\Reۣ \oHFc WA/YbqWv0ʇ?C$e@Pb DMc~,VIjj!5sSh4&ןzzr2vkS)ppE+=/얏Qn )\O MHeP~au)KGjMw6˟OwZNmpXse1KMiG& :,uIͣ"~MǝgV#O7+&y'~m gIxzs5&!pIeQu2c3^ɠ>^Dlx*_Nr%VLNL.4Zԗ#K5-c'{~i4NHte5/`3[EqQm+ b x1!z!\ï\Wx!)ޅ$SګaR`:[O*Nn/㖗Z-]4AM oO:XIGiH4c7IǗxƕa?q6ː*VCˆ\?eF6 .L7,` Q Wފ+zG6A( (3,@~gRHE`:]m$% ڄd Q3밴`eײq/qm<-<חSi!;yʂEk&4S~PJrc0^4JO9o32 )[ڝFrfևxw .:b-0Z߳M° S>ɡ,PLw.8NmƋ"zG.VYp lkJ"mT#Zn;Vd7]<|,.;{l8yLnWZ;\! נ D4+cDSXsd6u8aIAB%HlĿخI)OJTo$Z襓!Kf V$ sP<.%rg{m}TKkTq- Hj6hyr+{(aΖ>L9K&!HM=.v<`Tc7w#X=\\ZcDGD,>幞s@ޠ0)FĹL Ss랤nN1{qDYXVg Q Z,F͕kgQDIN/H>Ag[ZqgFC6[V/5!$dZVGMGMePcfUz_C`؁LǏ=l#x`&0; w< D+.hb]U 6ӢErgM 2&] zH! -B#m9`d89'Z!g lx K_ >H9>"]"O_ ¿䘭"](/VFx,"pB k jK5zӫ;~ Wq"~fl[=+'LAqY:k|b#^3)1q,?Q>nXy[ 4E2`H EOO{SL+~9[Z_@T_H{zNM=ש]xZ`}G[_';X dmI‹KBϕϦQ `Zteh}VJT5̤>[wuʔqC3P e'֣wH>‚I_&oNϦggF00N ]^\=(-r7[,Zc4O@q p I,{(7>sH.;Leu.COkyenU4"U|GQuYmS%)^_et'ZmKZwJ^c\:N& $ݛ<(c4$̮!%0Y*h맑ږ(A-G{"5ѷ($"!ɢaudQ'+NXG霁y7wTs;{Qr eؒ|yqo`=RƮc0 2G9͛ELD˚-'{ޔw]a }OL& z VDtj _F! A 9sb\G>r) ME~tp7.lծ)B\J?rx_2|4E0hN/5lƟP&ܰ*q,J`C47wT\uF7K [3t|H;7`O= C8O5Q:;w.נEFeIFo&w`h`|sP$eRL1JZ03 0v$HZded *+pɀFx]dT7%it3]U"r0uL$K^jxyT@?P^O=+YsɈ ODO}}jصaޏT8g. }{ko}H1nuoBhY^覾6NȚ| BQl*k`8y0^$x:UbA*)@%}mvQsxK;JgI+.'K*k2?k'"[˫\p$fhgCx\߈*zŻ6Շ>\)r#eL2ëp7ᴟ' 8~rzF {Ωj+RjaD9@e|[S.醌Hu2e2ŶoS5!Dnm}ߞQ)nP0k%a7]h&/|q Q7ĦG/&AaA@_ygNuD."sSWKүJš8XjZg2y/\Pw?ZMpy*kl53'`A?NPIRcWiPonTF="{ݮ;,?t,ŰosުBl%y Z y٘O_yUNu<Е-%a4`F 5F}D;eǑ)AB0mm`zT4@/;yg%@>a. RJDzbr/TKTMd̏G?HV-PzZSA4wCdP(,X4EACJ`o?9O/P>Y %V ΄I } (DWMS^4u*#8 Ȝ pLd#T%6J}C*K8qǻZ4W;kC^awGu8k+UyZNqI[5U0M־;廰} 6{M5NV ϱJ0k1F(+cz H"SC 仰e0LnGgph P@~chj($, l虴\n5P )gT>!J X\N4Q*ijJrE}֥Y##kȦ H._\dZI ze44 ٧)hn nWC4'I:)N̓A~Y<.WuЌL{dK+RɃrCV{&?{]m+?q6 Rh]4؀-GA#yOh=Y Qe"RL*g拱DEf8oMዷ#}k{.g0D(4-v}uXF𺲨0F@ 3 :uV1DR 1켒n \DÜVuJ3UO^X lOn-(!'YyIA֥{?F$~"5%To '¦{FϏ^`/0D"NY 3w" xvzpIf[.2JhJK>p qOf1BJ&Ƨr2"dťXt$@vLKx 3>VLFkdM}RvlmZasi呄)>tʚ/NC`hO&!jjvo>p?8fң/#4w5&+;{InA/ɸYN}c|GܽQ ^1XO)!9"a\Yv:5%G$5+0sR]RR*]ӟUʱ_7 eH^"-BȽ,F? [yh<5H||!e7U܈fSrQiֆUVh֡7FF/ᰘX>W᷵11n#;}llzչ{PhYp܀܆ٺY-LxP"@^Ģ|C 7Q [iԝX(9(<䰬5{4] WunVH(Ÿ NN9XEq>$_dW[xNƖFlO%SWj-M ei|{WZX7:5,: j+*2b\5 Jeۦ&f|uV_;C XQG {Ъ,&HsȎV+ڙea6G _=HjG1eؐnS{Q-h?uNIgD~rfFXvh=fu: {00Ah[b:} {Va8By8'xƁ'4/M~FzH#)`"L\u x)G0xüq>$֧d+J2PDŵK sRh]~*:Eϰ ΰ =o}n[b fuO[Ϸ/wem B^&PvQV[c@M4f9ZԸYslY=uHb5.IXzV>>c4!>VIVb![ \("u/!0>/)79/r VͧAܓ4{UY}xwZI\9ڏ ֧O sUa[̆`|۵c((bBZJ.'7..VxRܒ,V*ch-ʍ.c3Tq*؊ļG&#RFvkr 6kg1K{ѦﲲcMAӲjr#u3R$2}a׍tH#ӀMs!4/":FT.´b}4ṱIfժf޲Jn)LO!K'#[>f+,|~ΞJK1W&<[[N-7O0?f'=ۻdM22x.ͳpBLs "Kƙ4nZa-FӡsM_ٝYj ㈮KFYܹDyruCJϱE^Oķگ^>ֲQ~7,{{z)XԈs/K(ڴzb fu9__6_f>^JƿЖm%p/h圕S6x 9~F noDse\+H#ndDx(;y$71&D*d`p4ئF@9y ( N!PHnt-<O]7k3}X:RIWʯVqi?}5o\OԠL ف|ESȣG;H0UE0Yc./k :Zi=R'#.?rxཆP$GP&4Ѣy_F|}1uqMLi7’0 C1n`:uJ:dH#F}<9n˴G{z#׋ia{,B!K_߰Z~'NŻ.Ԋ?U^~v*b(PdnP6WF0땽%k84隂J'22!-uo_RНR዇5UEğҊ!/+xd}Yw^c[-H aBa϶^hwWmR2`/ۛ^[n[--}lm lxS'cZizn'\M@D U4)?w3{Ȟ4"uzjU_֡iQI-#K%VDFԪB?{&+tn $˼T *Gֆ*bX«Rk"${X+O<fms >B \ z< )Qw 0YڤJ]DQ4{eG%PIFDGzz d U~ooT!JFO(癚ZP,K'c_3_?pMLaI==fx^O;XIdtpuW} Up|fa)"L .F:{eډA:*!l6ƌT$02J?GH1Wɼ3o!Z74E[30$5NT=J䴳ɹ( )$zZ&x/=UBd1 )luT ׍0gp"sJS;q jťlM2s!f<[3sb|yT}0k䗜T5ICCO*1<#{`:YFLIbnjn]OƇՍHaKKn8ۤ]>n?2l0Uq Gtl҅LǪtkje^VpUPt`:0EܴhXZ l5{/sXr}8Ū#JQSn<-yKl*Г+RDU v+e[i }`~Z \W~U=Ka-P w1|>p+ 4#ָ,֝c.q>2_Ǔ ,pF-NX/VZ3e> rӯGNqqC-xIBi| fCr$Xޘ d T?6XKȮ[sE5)&(Q!(hYp;a* 쯔Q~aV Ѫ5+qYS)#(@-mVSmzϣ)G;PitS vS*k*P7[uk͖42a:bn)6{vY]@"gP V:\Lմ󒜨|@W) 9H3;yo )]=L mi k/!q:XɈ[M{4DGc r>WlVnĶF;_X!uXB<{݈>btJ 6DWM-G3սUb[^ΪF@@ n1D6 =#c4A TG& w&DĢJXOD8~.dg;wxs)vi%'ݾr|mFF:(&e/]zwfV ;=;R8d愹`$x59.L2e֝:BN&$/7+):e|5.ÿAud?-:YJf}9Re;3TuE8VC bh7?XvSŗ_6{or30?ld{}';٦@nOv/fD@~e=Cy#G_\rNXVe+^,=8qU?C$k^2 eQ:{ٻYH:|idDײ2d( Erӿ^VB;QCDQ#]Q 0˧Qb'v~Npulj vUEe |ܓ qy 1ICޱk|sSB >9 r3i-!bg} iaѨntg{Tߠ.pRoPK罞%cMgI!B ~gBaT,6*/pYKgz>_>շ0/Oպ /ݽL m%T&4tsmne=rr+ϨRw+*lnەWNg/C|K/%`c\,!4pr (&0TbCAU7Q! JK# 8dӘ‰lܸ'ιux4/ȃ Um#4\~6o-V+%4!4M@&L,kpJſ9G}z,|2~Y}2ڛb1x6/΍Aezϵ&N4 wc+V-XI<+ǃB#zi8AsKGf.U DHen o;PU %V3Fy4]T$B?Rm҇uÍHܰ[ۣ 1&y0)~) {vRrl z2'Dy }ջ-u B T+b*htRXmjnK;R' mW D,0ARz%,Yv[b{}jABT\S͍73!єTjLmP]tJ5㸼.;к5.ILy#KȗqV?kK*"-& J,vho Wff<{Oa䶇71Ls,hWk`_5աSZQcAdoR((ad"%WyIE'qO#9wH\mUҤm+&GGVj._ 8HLorafYE:Gߦ$ANo, 4rc' /%/&w1#7RZF+7n-RiK [p6S8MRZ7 }PsdO_* ֳX(#DWѢnn}g؀r\H{KH"TZ0/^x ށpC|Eˋ;Rrۋҁ($xmG+ 4&ތ=]h8D9JG `ފ#B@,"S"wr |c$yxl̡/@U`TR)Tn,M duaѻ+b?{o#w0Sd.*\x9Q=4-n/',LᓕFc\|G7q5ғP./%`wU`ZrYϽqjSs/bdMH$R>%[wCI*ȍKJ>7:܈.غ30!wf(oMf!`%U&ucV)%إDv9ثK.f^e&#WӯX GRCWFռ&~K6Zo@D3i8MMW”zpa CK}tϋ;64`4J0CNt·ŭܠS ?AfM=hktvٳLxn3yR9I`k<0$8)?B|hRGVcƒ<ާD+V] <|x7_P/lj礵pf^WN͈wGMii:5|i ۾SKtЫ t=kgn/_r,uure^)[crrr翳H?[-nPZz^V'xai(!K!5YZt#_f'dSxoAPշ\m O S#(aM:.D?*Ŕz2cgIv2dւO玕sK &rv P1LAxr'm7y3(ܧl Z#uynN!߅4"?JwE[2x) Di#ee┴cj~ YY lʈ-/a՝kXN3c&5S<&tm14lESC;_&7ms`dbfEw>]'WPߋߴ{".?#.`}_;zͺ>ԟ UGmARΎ2@MM [W$py\rM-󉱆-1JN5Lg&:``M>$ g\޸ )o EQh)%o!<|FsD>Mǭ x%BeVZ"-MP[iwYAmW+C  ԟe%QPkQD˔n~TUORXb,i8Nayp!OE/I Uޠoq٨Sv!HP3($3Ln%w[ŤtI:wӫcM HmQ@tjKT96 mLT.__}XN֒evDw͹ڠJe&Ġ#F=)3PXuq{ n!Fa[cOilR$73=/:#S\*ނ"6x]uj/=7xhu^iuGFrPs6[$wX(G# pBkBh9{eK^ ~ںiE%`Sߝ;,7ㄵ9o!G[nu=c+%fE3ݿr25tgѭ<4~LxľJ.NgE%@,y`m;'%r'd.:/[[g\BE 4 n3"i*9(LLUe7\E>m l,H uG6<ؙ)SYԌ:\Y|*ȬS?^O@4x]skT)Y~/4]KH tuu}>:)abۦHɉ/I~,=6aZ.Xf6_ /;.4OX+؀nwQH% Aw8"i3гQ\Fc==ѽՙrz"zw *pN8S\ Bh ֙pjX V2[In˔M畻q; K-9VuZpc>x@uV/ee;:[:Zwy=g)m|*u?zh|bvrPjM<.u`fpP 2{#0T p}6ٱ6сwzY,cݡq5}s,})N67'-c1r0kK%B?%¯:{\|mu&,L H/:TCQq7ȯ_-˜*z1׫,]+ r*I5ǛySϚ䷽q6]j%U&  'Lx;2Y=.ny\hflQlc|%\hrˢǘɥf+}%Opϰz1b u^WU)r u@7WJ\JUz u Ғ32bϘ9!=Wψ3j` W1Yn'nYK"w[g %6eݡͮ Fɋm$3։RpoHR-rǮdJĺ@9ov,,r^_om׷j`Ğ8sdQ,J9\DLYa:RmF7[t -k7_6yNh5PML|K췾Fa was-`Ȕ{U)imViY&yއg'~H#9x됾,ʴ9АwxMڰnvr~},f W FFӃIV-%+NW[8)Ƒ-tV>\%hF҅!_# [ jss—-CnRG wj1(AUWŴGI]^/&<1d0]bYy&%6׳Ul:0(iƿ :tYfX(i Zј$eKfaI(M9=@{OBHGWc KbEZDB3 Gu`v v:Vwrˉb6jRR$(y)&gcgSIf5kSKnцQ3-CQUm̘Ӆo%~u'|t(*6 $Bs*?aXSm12?U  А?;{:5y?y]e{-8!l!ń~CU2e_3p#G}+"VКbz$c-!C/|kqd?-,F0C5h8|L_/l T-"fk1?آ+1L.7[$&C@j}ǵ2] qMʸ0bj83퇎^r9?@ܩKMAe"a*u,qҧ1ۍq6/X'xGfp3&k˖cG;̚Pi@iB瘬I;˻, XVr5cFVx)ٱڇ\GhdvIaQT3n\!rE;EWrxnؔ{نU˒qLU 2?gk7oqR@=YB!AS v0e2qҜRyGkJV9o]pX- =oatznm:e!dYcJ`قh̅8 GƷw̜I8i?E KYX&W0F3V͹z׌paTsiВ2 B)-/#d](<5@{MeXL z*3L0[J YvAӖ3j82aM^:rLaXu QFSp Wծ?e|StfjxךqB@ mS|uvD6B?ظ$K~Yo, j6F61teb/#><43⎹ vao̰xFwFY>Ns}{%qV3P\Qx;-hbuR?cz|w4r̓L}n,"eb*JƎ='EC0J/k,P;⩀hA?RF7_YW9V<F ӓ3ʚ<ʳAk3JR'dZ( qsGW}?C! *WN0&-^n`()?[rih*hEms-k(W)N"m rFOGFjSFA(9㗩`> 4]T=;X(fk]jV==ӢPΎa11 B7hautvi gPLf['2US&hBօoY^. L_ϭ a ?d$cLZ4j(Y' ?y ɝgNCBLkC (kL+5'Fe٫7xm1E_Ypi WpGbHvaө[Laj"Vb)Hu\ۣ'ּnԘo<ã}}ceCdQ.s 6R@]O7+NS^g TMo1*Z-om{rEؒ~VvѕdU"b'Ƣ u4NT6n}ffZ~fBXw_Ƕk%EOM=̾{waL!)`"clUÂe?J _9Mʻ1{R1#6H"n:Q2Hݪ¾ ?:f|^+…`kogy匭WIrpaMVVIOqIifIh 2 EpL߰&{/%\?&D=uqFº0(|Z9;ܖQjUY}7~'Tj7ZV1(e>p/Ao}Rd$y9|11sֶٴ 0 B")cЛZ@̘b4Z}$BOabSve_)^L<2D83feIv3=j{{;bX RnU;M§݉h[<6E^W\ 2$6Ռ\@:$iZp(ɐӺz7ӁRB堺a˹\S-2'#ZWO!bƤ 0%{B깰d9.ӗ)pq/kچDjH?sltմ rdh,`%kar?vM Hv]$醣]OrǵRM ( N izGyrڴNqNIW{Қts\SjK=8 %8@u ԧ/Yyq(d u|fúuC+KDASprܙ-dQx%FE@9Nj~)(N]R}2xw3 /7(;'@2wVcrP" nG-NU,S1fgܕtA@Q^N+B$&nꭶ1կT6 NGWQCj*IIveNMv˩݊JOJh!qۮz us U/\+2%A".Ud |:N VsOumaK$ΟHkxc=,ACDYm/p 9* JHQE)on0JkVQ·C2L@ 8=CuR$twcvSsiǁ5$|$)LoYKv!<7 ,Eײ-+ZVD [F$ijd+$6" 3YeN3&UH". v- 8f* wY")`r\rExo!S.G[$t2yK)EE& j{3.d[sz&.'.Фјƴ Jr6t9yHJ`0):4̗bm6c +pD.ƽ DXzM`,y*jљ$hLLzz9s+a[vpE KxAfG(8Ly[{[;N*t+%*tMFyrlJ[봂s_ ﳥ_F~H8ʭ۷YPAS;~ŸFN~UaȢ-}%?[-BX0F_6KmX!ԉO_rdl)gCt Q~ yTs/n)M M1Li"rJ{=:h䗬h$@KZ!٦Gbb4\tNol_XBz]zM6k,W (NQn q>4V{O=轮oh7N]R <7bag҇|HCg M35Ccv8uf]Op E[?7I>U+ғ0Ħa.m4Z0k9"'nb 57y=d{u6DŽNNJz(K+'&N !*9f=ή\g趤Fv1C(P`JWђz^mLv)[TēQtO[0QPh4䒃ĜTS>yl7x0з,7ƪxYJ䬉QO˘CL&AArGfk:N5s^nq'vq*gh (lsMt|58mEM4Mt)%Rǝ`hSWffPbZu )Ȃ#K 7,=xU/>΃'A$IoI&7{NbOP]$ wcAt9&Wow􍬕G(x|bMQz=`; >)p[һg/ fRʘWnsO9nVWcFRܢP1ǿ&ɴȩFS!c,ڻ)?,|8(+uREP⽳Nm } 39CslXLk2oBE}]!I'zrBhc3_צ^sIʱCid׳iL?:>D%_䈚6_Yy0]OcORV 7NkL),z,SZ|H(BgƷzLlk0 bſN_U  g,fhJЫ)"B ;X T!$P(a2Y|t _Hݥ봶=[۬-h؛jz< aIAՌ\ k:;ZCZ$ am`TgMG<ȸ75xAB0ԼB5eP m( hgU>ܔ Ĝ[k ~h js_O ax /4R H@X,Q갑tz Dosc$'r<Ǡ~Nr2<ȫσ .Ql:}e $ g.Ω5U%"|+sUv/Y27]g2ZP86|1"+gaTg\]0z3#5OjRrɳ (HcRCw{7"}WVOg=&VYE\JmT2aaF62UXov!1(K>(I pG ȁhf_FBhˢ_vQ3<}ɚ!|Jclz*FaA(Ҍ &Cg )qOߩ\ mt_q7'$R2aw 6)FZTM8=ڠb`ysu܊HÔZ">Db{MRZϞlhKlAک .@A]c*\;@>zQl/0=lZw#u*NJ7=]="ɸ+}tZMf]SOd{qb}$&l4gOz.';;_yc0wyv zBq#zPɧvI MNd`U\[SWd6"qE÷O&uLDLD ƈ[e𕐲z-,MXy(<{?X~ϸSVsW~l/#7V686\:ƝtǸwcO |Wd"ɝ><#{ SwpxeWGv*qs@f7'ϱ8PϹubZу nMJI${4h`sXβCjR@wrL];nH >|1LKj|ƠP{&2:~O*wޞ 2}|,9ۧR}DYt j]'3LUzl#)hR7Θ)k>O[wZp0.'`x:Y[q tk6q T0]S) %F1FK@ мNh?ydY`f6C< жJ `)I!([Ҍ[CBVyn$C_!M)fo\QI/sY)7Kٶ:K:`rYdn2.o\dn |AӪd{K+hyh= aNm|0&P'gTɤ8tI^\yyDpӌ bQX?6m:Y(aEibzԠv=h*E߆'#y'Cm7LEJg4$-Ns"KݰyEz> ,5HJ 8k  ii@\ yMp_];vi^UZ;CC?KECsh6t4u ' 8w 'dK6 d@ Ww BWw_0!v$ 3̺pѶʲp2QY~AQ$7 (H}XK|d;)zg(H<*Fq0tV#]f㩙k}Ȣvi=ӝ88$U5*Y&>喹5욟r=gC_P0P2۱0qjhNƤ2R "5N( .?2~r|o`G[?QKrL47#ļrVG|c\.hBM4&bE8m2uMk(㯣ŐS +;CȳʨrT?gZDu]olro)UdcG٭)%ʰ*ۦkJJ;N.niPJJa!J7p׾bb͚5s+۩ b 1QJ3.jma;ө{189\3ꀿ-+LšH%*U&1 ]l2s`#pm}av+YumOȯ aJ)=ר= ΃O IyS i{F`,1_[#$?ܟqnC/oU.2N?JhYwOged)* &"խ2@PTTv&V>;i7h㜸ڿjZP@SKTuĽg#vܿ=nڢ0d$ =%B+j!y{=EZX*mOXөyxDV}%s~$zjU!j‥$)Fv+Mq(q? ?A6Iց6[X_b1ˬx[jåBfRbJv_;xo NwŹNʟN68gmzALN,UjF pXWz_>wuFx;bL ZŨ*Dkt˷k へ\^bXxU CO@W8ogO?m'WMEr^>k_rS?HelPor홭'< O`[9xX:QeGz4ck"z9;!I3Xĉc#/FH"%bA Ѱ.º"mi+3@ذxts^HMFW |.4//-d G6m?.O+ax?F)I̢@ &G xfr:9ۚC2$U ̥W%xUǣLT{e(2t[+Nt*8aއ-L;ٴTK`dWO`RVrN+OdX^Xm%xJN챕xz|eݦ#[]R`3RxMU Yx'-Σ+{W'"3JFdF.c=k='*@H>Ѝ0>S~',(7ҹo 6 /WcsD.[194t `!p \ \iETfg6]Q)1&"EIu{4JmN/8{F~^лrHaYUI2b͏q0Cӗ -!2k@),gVyru=xO@ä/_<@ ?8uUL  ؐ52ȕUS7?2@]YϮgtTw/ Y;D꼼SK <Gu5 r?_-(q#q`my-=?24ĸͤ~gvQM&#9y29̷_FQuyñ簶(ѷ*z54܋|N)]b$m&bUVP36৭g-ES󞨃`c̚5|#C })Hÿ5ocvAi|;Tmn(wWdֶɰo8Pt&͆f\:6tf `êl$U:P&~vwت3W|jq[hH<$@׮c-K r\m|mK(~o"ERh.ۜ|2Eeٲ;n֠F5 "ކJcW aÖOP vεr갻!""S@}Ѯkg\5T-W߸aZW$_++'FS'ft=yD@,l uֲ [mf6+6~V 6?q՞O9=m!d:MAEx}_'͌LC䆱R>J1 SS Fua[M\ɦ6MѦl\[PӢiO)ѯ%}ԙK A7[ce/41%94cΚhST*%KhVU*o FRkаZl ˇ-o_tk@}O-¡xW, 3)NZYM 2NXE=c W1-ϺԠv˵y9CK D-:𱹯] DfF+H3as&~>.džY-c'c;iUkѩ2rݱ#*s^SZLF`%^o[yW Ru‡~ u':\>@I^&F?ܫǻBV~! ,]@&'9/>\éA baʥ+ {o68 1s|*H8D&wk+{-FzI:}. k]{g Z ֠ͦV5} ۸FhT4dVBfA¨C7MDZ;6<a J&pִmKɡ @XUPS 3p9?f(&%I΂ 80,5 \{,$::K$`n2 q׈"]Y>UrgE D"}tj':hM|J<؋szR>zɵ0)IF7ލ YXEun+ $̫wwb[WвN͙$C}}mݍo]0, QmnxIKCZ=mCdgI :eB!pG*n? Q>(. % qDٻ&GzzZb:˩m-L)a{pC<-ER5" G j h*]f 5jTV?O?c]^ф-5!7d1M Oa$>^xO`Ee:.ŗ8{kiߜY^1D~X28sQ >8n# vH$_(9R9Sa7:[:++a% f1\o:G0Y-p(x$U~mm Ԅf{,IzFѷ) S{3bysk fdN>u`O}񞟂uVꈊ nsoM؝=oMétoXڌcd舷?IJ8J% U ZcqYq!5i N\gjyҦMyYnxFsc^nDP KS<𭟤z4ߞz퍼VBO_Uu% 7ǥ)?'sշrSǶM<@X|"5~ _誎m+M2=M[l0 9 O jU@{Y=6HaŁxVł致$Rm7C"ig,;\!ZUڧ3 ~'-ĐAB4V.Д~XaxLK*JaJc7IhS(Wpx=ǃQfO8L=1Y-tro+PNW+ v+̙̓XoX(28{Opj˻޻ *,0X K_ *$i!4Feí# 6w>=owVI6I#?bciR;/ͿpQR\0kVdNZӵҨL3$Mv1/'|@S 8$cf{4,E!_Ea_^S\ػݯ_BsB|DHrzD!#el`Om4ۺf\)) 8 )ftɉQ/^!D~>6X,F) ^1 ݻ3^Bjh2=&KtJ`a}c<8X8]uyMIC/2Ӷ,Iw!?\S[CգjLcfkWQRH_4qD*V!B.xqYڀ30&ԟts4~'ܷF1궃kM7v݁8 1{FކN%{Mj¦Y60c3q}kc7U-4]?ہ 5Q~ll=Tlְ#!eAbEpD4P ֧/xĊFOgO8Ϛ?%p Y86;ìKF#z0:i! ޶¬R_`0o7${!bR` 3D(JӾ߿#=2|y{#O;u!k >n2znmW͵q,pbxŶNOK2 fѾ*I~ۖ{[E2f-01x0jE$t*ogX1ESUaȄ%?v|.U E?zI#c Lk⠆ꕳ^RW[KGZ)(Th;fdrppl`A{? nE]g fZ*d(B?ef06ov;鉣/ƹN#F:SWaipaT8gѱ#`*xa| Z>Oe`q<9K>|"T1m4&]W.|8ır6Nu|5klnO_*F*gsXoC'mn:;|v(}ovBxdYx-tB6qWFkmE--|?q*ռtna3;&Ԑ5uf~n/X'hwB]Dce^-An6x8:87 ʠ< QXutl_8 )?ʄh쒽v)h1 y^.׿`md2TG,OLw%sciVr$H`ŋdOR澊WTJP |_?|S'ކD·gy򋙲7& ޱGM^&APa࿇8&M_{ARPLH w3,սJ1 >i8R{6: Z%~r@,b46HoNWrc|5/Q)qڸ1$vA??[JV-xC*7I t< kǩˉ{_I_GOO/@2b~7ZE8t $`+_s ±+=}^tˋhӹ+hbȡ9!x GnNPz玖ZJ(:CNe5\f:7Ӣ5j=qY"AB[GK P"̖Ԁ_@PΤ3ʨc1bLUrO ~!SRB Z{[ H]`hASxg,A:jlKkʠͲ[kxQ46 Bм}g5?))DN'3+3L/Fm`"XyGuSd`V}/֠9`X1uxU 3ވ Gb!G,;sXFᇳ}gR#'bЀoZƫ³+<e2˔NqoLNRpp yBЌ2ޯd𴬣Z_y-𾷥EzZ: @5r]|@bk&wt z;d+/+;62.;/^Rp3wk` m'N.+2O߳ԣIn(hc? }_9FT veӒŢuzL;\Ga|t7N ނ GX!^4pou;ٷU=|fs*eWԏWlU+QR¸{ ŒǠn26" U+!&1);w[mWu>n UKqopc^c =6X)!H4b w'8fAQG$@N|a7wGM~q3H[JQgz!+yБOɮeLyă6t\Ica%98lU$:|qM]_ :-_(\Pij݉_6kӐS=|J;l.C.%+7S`pgy-1Z2>:3y.vEN[Dn+£`_.-T4z.-2mDCuۡދ|rv?-LG@CFr-V :"oEr6oW$-62,2zS/ϣI϶+!blO^Ryǁ;>:?b$Ξ)R]@T?*|4k;L#p[6ֹ3DH ?e=w76oC#Y HUrAiP{KSxB1̷!2g`-L߯=;ܜrt!҅lz\E4شSjH a,$:ڶ!&g{bwajAxN~I(pfr: : <Kg`'VW2 G`OAׂlD#H{ryvzJ%N ׷D#{l̗i7|-QsFW4P<0(A>Z<-W"%kbL}lr  P7;%ͬ#);a76-fR}JN.ZuN6njߵY3g:l(y2#ǧߖ15zJgɰ=x[|b@4g[C'{uɐ?"oQQR>T[x1YQ>9A5ef1q\0 6+5aQֻt& 0mr)f&*g D&cs/N!'Ÿv v&_.twtHI-? ꈟoj/4hTE}ُC^1iʥ%h|`"}4.w.aUB:n2p|qغ k^~>8 $|iaSfo ZIM jy^ :k\IFf ~~׉.wB~l P1kM: T 4aTôQG J5O븆 j><#_lPmZܤǬECeV :(Zb= :[*Q;:;0W>{ +y틗Isڟ[,y*qj'`ΤXB۫2\@4+=!9 6*t\Rm&!H tmd+3Xi-%< Ҹ{aMY Ð+J>f&*ږ/x'a@43sʣ̎LT_Ɂ.5X8ݽ%oE)Ӭi0A-L|y-$:OP?|?QLhM gG Mq3w8o[ב˄);+ vǬkc"Aǭp+&I8x]'Qh*m7vǬ8!6N| MlEK0_vbeSR U 7\ᲀt6f[˜WC+yzW6ܨokf*#!g_-\㿬GmF4iCh ֐@{ Pk$)·Ƙ!=;oRn7-%^ 1%Sq˺TRq!nCk. 8gqEԇMZt?\O@`X}m5!Xa{02lv-l;\bVWdwt^ƢBXJirlF!4^`֜!Br?_⺮Y KLi#) _?+#CʺqH]Z8K;V/z/.K.A \_y]N4!F2hᄿٰJ1sv6l1UO9WƊkxdqD4A>njO c^J}`wϩ&¾>L' Ws@*;to ͏3N xΈRsXt'uźQ0 _)(N9s q&gkTrp^%0qr쵊6zidug赇9vDq'Ӵ~6!Q:l]9531 po-hNu_X`{ ֖pWO) cͤԱOt妄wx*9kAa !^&ⴷMI߀(qQ+v!v24^<@o8nKƮmt,  J&^ť?ps//X=)oX۲ԑK죫)W1GC >z#%h;% dq|Y釩K{f&Ԛ %]i@r A5Z~:o\~e_8k* f3<.=Z^$TlurU/Q<\}sRB85S we@Ji93␯ӣKDZk֕K~VBg?03ԻL0QǐPC"<߆;RUعΔ)8yKXЬda8D9uꇞ\ 'k&3]ꞋH4q YQiHL2K륝Ŭ /gb1aI:{٩DA'ZHYV=>O]'B_sg3wzQ2>M)`]bM~Ma i?>PBG:IxGZGLÖ7{$u 1PKGU(K"66l7;M1ʎ'!:ǒS{wuE2;c43I7ogD>B$0(!=@v_=;x@+QI$ˆCt[hp5/ܧe-G,h=58Xi$^Yh^Jkֵ)tE$/s梖ĺCBJ̓)H'A?Z#;%VP/no!ZO+:+{['iG1*Dљ}uplu_%nһ(SDKVO~qTWn1=$l#ptQyq%ٌqs?L7Pwv/ێ }BwYK8b_iBѵ}:9䤄RܞKw >N?F]Kq!uɸblb_m\P|.L(vlpTy89})TˊB6q[Y6G/u7zy셟qLjHJ3*vʆ8c{ah9F0v5ukzE/R<1p>L}^0h%[ ];Ln$,ຶ[@ DBoɧC] E B3s}܇7"wBy簣*PZAEiy!c|ٷՄޏ9p mkDm$4!ZP%=?n)Wć*'4gvbfsгRHEQ}mC 'Ck./_eʬ(fpy~a SvCRV6BWGUVSL*mɫHϤe?I"#!yxTN*2k0-@ *jĶ'&~=#iwaWTԛjx2ƚڭhjVIyOH.22 +mE9]tB6 Va VI6wvvAM-"y⟃~DYt%૗tĦ/!7؀#OC]f{s$3vƏ%|$͛&7Y wIR C쏆CE[zYG K)FSI&XB=5WAf6!KҮLSGNPO`s;0aU3M m\df}AOc$.3BvKqplG,XS&մ$^B%<0qvu++ 4PˡҨ'~*8eWTcȕr5%nyvӬZ;~tkC`G8C>D%aE=O5|_ 0!i/~3!(glhB2qV`[ł'$O%<,,Qx1 4ewΧY*@ .b;v?[H+NY y)(^V)(^ֶŧss: "жb\uӱTR]70 ൦hD-[lԬ+Ԭ4vۦz@5+ˀ4ԁ{+ʂwsrbԜ\[8O\9`Vr}/k4X\D85:Y|TPZ+no-oxZvI>#hfE_F&cBC\ -2.ъ`h&mn^LF-O.ws4<Ј>&Ϲ ceRZ5̾ smUNj\7`\ u_nw<2 7zpɜE<3U(M?(h gRWs>M10l"OZ;;uiUjakv;q5P :\rE}܏ #U.9]nhX-}luL&2ZAйu q$MEM!H:9+^Y X9֖ņKƫM3qH]q^Z?Z*_./8TY>) ݗ= M$[~d앴oA;L]>2;;T5|Eu*mg'Bw}<ӂPfCC/zzEA|[?e0TEDF=.U}[6ਚu^O|g8@qmHZ^CkLG8;uWg֤Yx.zM?JP*7Wkz(e%5ְ2x?nYղAn:&$O)hEYoA<jq3}g.]M-Խa ]71RŘ. ҥ;&}5GƊ%6&!4u'][͉>谰G~cU> gkuFhkǘۈ|wҦ]+yn'ӘDΩ]R*3.ǮPv~M{Xx'U֊:۶ILED9ݞ;)j 'PIpuhy2J0@64¿*\j+ǿ/l! D'eEwNT+,"rPCJ]tD`gb<3-$~[/%ke4kRgW'dRB;#1YAtnl ٘劼q%w!uP;?hha0E" ?ԎTW5)Xv"K,6 Geyk/3v\EP%RLt/& Ǩ`̏9oЫ:icIµ|GoVެAR'`U}5.#ϡݍgӶzБ$D 8È2 tUP9~|Ivgǚu㎞@6S86?*9Ad ׆9.(p]ȥ]09LˉpXAg :jsۅ{ڠ^|k5Bτ_fGiwJXЀaίmu``ov3T޳%ȯ`A=h+KZ?u)&"'?W9-a:}(feh )l?PYY|ȵeM_dokNcd[iT t{`n$Eb si}'31^RJhQ*6XNJ!~_+2OuYMvTMKuڿ6z>l] EWОAY BqorC!K<䘔bpT5T;(*! b8-0Y }4-;t1ǩ\>xpxK=Y3e:k P%D{H~"l'3jfa I' KX*Ji5Z,/,P% 6\l^kD!'fCk`ؒ6_cK`䗠 Oەh͆QKW~Rtt7|%@MA#r!wf7ΔD$HvsD0:v;=pkVUYC`x> \>-ȃG*Z fSqxǯ2ʌ[e.ʎcwPhԭeCѢ0f_׮&,]g1]105:Btj|hWen,RXa9RR % gсG/qYs k[βXx^y׹´UQ>PնPteG!mqv>@Wde"UlY}RbkghGu9Czj슥}(l?fU8@8Y˅A$O֋p f/ZmWH1-C1ύg3V8bOa%73]&gӌ>ww =C<9a\@ZQuFZQ;sTÌrx-o\ټkޓvI8Fb ^_2Pa׳%c:W룜Tɬ"7mhgc1* k819R+C5,b>)dՙ_l=UbY`yCi D!n@2&^p:F>1+.}[ctX 5l,LMLMI)zO'!dMDtv8;^$شBUI :hT Q2"uҫ#uJY"Pdwh'HsH%μ#_\?3$:t!y,1$oZ( e9>tPW3kFg(͜BBVKM6M|K#x8igt5nSƯCmy\gNzҰ7/+9,J|.vVU_Lq*/`ROS=B H6^Ď_hQzft*?afgH~~6qE4 hx%#!s4ؓ]Bc!#Sp0*lnxw{hSaƻ{MCG+l y,Jn>>bQx^s^׸ﭸID9ec"4.PΑAvI-WR8V;9O/٩In |K%9/}Ȇ= hꙚWYֿKfh%oNɥvrvܕ-pd P=MiF~6n?d"\(UE ) !$1An\C6l"D-Ǥ;G"X$s֪REq9rKQ.DsYYl?݉nS0ʰfx&3>@݋|3=(o|B 1h8&ldpsI7{v</b`RM@up׀8ph( צv5m39u2GX+I~HڳZZ~~}.7,oauI36{#o;Tv.e-)=V/*:xlf:.b{L+ hಟX,noPBBF_uRx(LkU|ș|~ /ulA5XEO t_=&s#NEtAqSQ)VA 3C1#ݭ S/%v~T=nnPx+QRghGh(14ڠ>΃o1 !(83q׼BrF!4W mrS,6n']]Z@_. J"}!诳y?QU@i'E+|MAxPG4ÃHܿgnaTԑ Q5 Wfk79,IX;8nF\aJ<}qF}6[R:[A^ ޅJys0#^_]՗mؕk,ukaU@S)~P]DNft `bn;f lΥt҅&ǐNc/Sv$Dnf\FS`36 31b[~.eN g5ھM;-TF^Ο&k |T`lXdx@YY ]*f>7k/I7 -z$' f1$uq`uӿzPL `$ǪΊN;8I^ֶв- IfaB)K zmwI3R˱j/RHז>SdS=D9\g?vFΒ+N>ѝokܢ5Е5W+:G@dٟķl`nTV؃L tURmY&PO~m)`?LZ(`Y#_ _lyO@w }F[,_vޔ*;ةmehHhCϊ%DD$_@dGf,)/P`C:ۃdn&B.b:ĭA ~4{| ^]jz٣ 1_n+n kFo9ϸ)'x.Xrj" !07214"oCVy줲KlE\KdOX"ngdTA"BneS4 T́^ӥ|ֺAp(]>sf>`+g|Vy +y_O%\S6MV#z:;ءmQ|X88@Y@`\hmOߛAN4lrgq8:.O{X o%R4ƾ5Z6VYOoM2K<63w7Dzv)lL]3+7MjmzQH䬐jUZad&CYW(c}[+[!4`ƹӈ*cy`ξU`\owX6/J؀)U\93A_s ز;!Mg`=3Z{+ңtoVkwL܆-ʅ?$9@U` Pl\.,|l?b^İVݳ&ʔ p+QGzl K@<{qV] N~B Z6."pkfrv%'"ضp쀗fXW^c-nUR kGO)fy`MDŽ2> WR| 9Kmyg.z1CF2iu\xۜI  1!pqQ??2 6[(Thuk@D:&]ݨ!\B :[ VHs$sk,݀eX#RWqY|=V,Ab%yNAh""ϸ= $bǎ0\4LDݠDKӸ 9<|d GؘiVcWckFI.67?;ҧ-'Vj'8jJwSbѢQWrLzpҩ1wԢbcþ  yZw~ V*>E;[M}9ꮥe;= `Eùcq ǒRVkC#I@я{;T2m)>J5Risj [rbD `ҀvoHYp%ȎtکUM`^o"czl^nßکx`@8w(<|:y-<i g.qļ1M[E, ; rs`pq\܁ 3N_l AFN|S/W2o_vA:+ɉ_ htch􈋴Ax͜o"jÿmRsc@b{hOtaPHH[Q1 =WXUMCrg~/Sj/aL w ;z3` **l0yAƮ8{j9`hxNq+O;EƩP]fy(A6f%&mry工׌ JGtّݒFȻ& (*Yq`CKFx4'}ea&Hd5InU XgdTa{6K8Z)B2U,B hFhjMWF~7C@Akbs72(r|z7YȪ9#͟|B 0!~8M]̆AY^I.\G۝!|RG~e:* 8o2ž\` >(n~|D[#:>] 3gʠOof^Z՜0QY0]i>3x&w'"KIӐ]?\>;AT;/,n;Spx O Ju.]@S@@bqK#Bf4VS}kZPt'! U ծwif"g+ 04>pqp˓2VKHR]2\0^y T JۇZ g{aJ ԁ"fB,r' 4Y&j zyw!EnC0\^~mo6\E⯛[1Yyef7]2~սɀNH)aE|zI:]/UӳJC|btIs(MhgrH[QvB3+)Ҡf' WmEK;⒪-3l*ҿ=.tI/afZ@򮈢-!=J4;*t٫WB!ሿtԜLٻn[?JpwVYOXAꄋVJ&vC^˅*fO|,fS*2?ƈQS-fzJKp Ra oks;m:5m,Hl[>T@8VD!=K0|&Ke1wFaVG6qwKTƳidȖ:uIF_,2D28ѤgOch2~Lm {aBxi *{=F .=nPnQ͖;S& Q6b.a/{O4y c]O&VI>c{?ٛFW@,̺(EҬ r'_~(>׀)bQk jX3xP^ILh[dctl "ntAy]k.7VH`V%+7xjwV-&"Ü^f7TwPsZuoEm[=C7pƵ*V+y,.Si (uvh9]dV9!i}3ʰ{! 2z@G@x{npHLk򡅏ό6Vر3r+38x9LuJfjK?ar])O$q&KgͪLj\8xpv::|vKJdZɡ'.xFТU(8Sڼw/*~:QD%biy?\vBѹjAۃL?e<$ 98 ܣu1p}_O!Ii.L[VObFI cl{J2+QLSݐR1جs'jY5h+VWoA&Q5^;uUJQ=oj 1gi) *6e@BPN_E wM)qW`@gpǒ)+$o1kڢ{/W_~M70%N&Z\ ܡ<.V򎃲)} ,HzxjMwU^s/ܸMmxQb9)#氖lR8k2!^O-oMje'/9lpс_c]I}7$t-؉p~gZgM9wT_32+ y5JV/1̭/pwpt~s?s݌Ɂ]3z1Ľ?FV0Fͬ{~{  K*/zZĶpR輎"Gmct! k:YOANaѻ#p:[b7oJ4Hs](",*#tÅd$wGPuhG?O\uJ Kʃ FS̼f9ٴpLh>x%dGCL<'5~HBmĴ=fqf $ Yq#מaRk9O)^ٓ*U=vjhnqqxޗ^ɶ6ɦ5Xx:oL}% Qygt}]?~ * ~jF#̎B#ٶ2HF#{P"Xʖz296Z7{Rҳw_? {c j-a[d܏i3I!/:5M*wr oOFq i9/%^<ο K%gF5/Cԉt9Y>lDՖ;rku{7БKfc +*h!AK6o; "G;] <Axd ʟtB/7f&X=p GfɺY?rc/I+]v|1Ya "8y6[}|TfUhaD(Zgq z,Ӑ1cԿce TTSW|`}O5|~ d[䇦'ym @RcD_dup^~oݘv]SAX  6vi47 w= 2bng})KޏҀHwH $;ݛF )JCk s>ƹc<6cKK9xZ{ n&nIUF5]$hG['%)[GKi]|_K>Ve(m0)߯ )~3l V\\& *O IOVP+Ck(=Qq5RB }G?D;<2~QEgB=Sڿ0O& 1oCƤ,>HU?y A@f32kzC"e0󮊿&K!5A?wChPX!)6c2W"GC48* ǜc,+uoRA aJÂ]-7w $E3'f^sDl%qB0RgM1vKbE- m ~bF&!GRaXⶦpS OCHKav cyydǀawMs1GHdߐʁLPaLg&oH,P,t =[]t-N#߬Jjp1-0%nV?wV2^@9|%I]|RA&o;LNVfM!._},dS dJ3D.c-!/Ւs|n;ř3]SFR"?o[8 q?Ӓ+*7o >Ic5&#<r.-c_)D PQ #)nm=S#*XXX9C#^(B 0,SKwЮR-!uhPREჽ鬐"cxr|Ιي'wVMoQͯ0>LV[eA*,&pQLJr[O$y,f6"A?:n+{ư9N*W^:Xш#XNp_18[y>^C$wpվ~i2:0iƭ%0+rr ѻr*jSp}%*smZAbu$%ـM4J/W{wQF9X1摖79zŘOvaMqץ0CW{z3⇦o/h`·33քgZD(8_%$iv#O_= b v"4635;@C$gz|͂&5L?):l0O04_!&Bm"'P٭Kkuq]<;IԦPSҋ|~E 膉#÷1ժմFrd@,3&gl}{B=suW6_Q|Nx H'Q𲫱)wփgRA̱deD]k%t?~"ղ%\n ^`ʽBßtsE[ $9,)Ml6>?Y[iCyih,w5%dG,V6+\m*=uˈe; 3Kآ вJKSa6bѴN eA_J#}qZB>Z mG M ܯe[vPlQg`t/샃Ȏa'8 nrm9mb FhZ{` i +Z"M4j>S>w![=< %IJŹQѫD*ťIfLR[x$zJf&Fx{Z>}rgF#t=82ʮJl _ #ӗ Sfúh_Uz}MD\ KV #!=T襤-d>t½zeVe>fsF\{ifs}N8I"䗤q9 hkSk'ZOb6~">I}jb~ss1ZvMsAh)r6Et: 9l#3yPϬ=VDvyfB5'mqvz~׹Вvyh 9q?gS\⷟.+3΀~:س2uonw4Wwt=kF3](/5YqyR{ukŝJOc27 J @t~ d=*x9np6&nP~ƧX\G!:4odiwا{XIbZ_hH 젴"H6Gvq&/r\χ"$S.]9bJ(cɡr2ؑhg;&'@ɭ}H(tQ{U41^k,sW*8N;rCiCu@pjǪy:dT=4dus5r75%$ӎ{;ƬsJgYRPc C'6L]7*sb6ϪsHӻp<>\ȝwIYn9ԁ8DnZ;2V/_Gzj$L`>^8ɏW nTtB =c.;q9 5~zH3p*Iۖvaq _/پ7'~uh"i,VOiw)_NӸ!R%r(nuP1"o']icLCI/Z\ې2OO\Nۏu`.Q+p LN :|܂Mp$ 5JS1 1aCl<-`T63ȉb TLx=tH|z޵֍HTx_MZ("Eɧ s?.C' u;h/g].s" x*D鮿Lte9z9,zNڔ/e "V`EKƹ^r ToV$%p\ER с`F~.ʖOfɚ]-?Ej ?Y${"v~xź']Jp$NΥWcRNy~[8>+L7 0רB07cWic2~ cܗfZdcq3) oZ(6SȀԃAU]@FClӢ# {2.Sb s6{z6\ށcRwMx\W/\I)cq-! fV^)~@1ofjYuF!'R %._+^Yp?J[.K*7/3DDWA8XS L4t/e+FͦW ~ÄZ[Cn4l J}B9u+Av@ ?|2'C^sIC]w۷k=! *0 7JtցFqbP$f2-)51a*p9\w&t^.2Z;y_fHZ/d?r"o;'O5j]a!:F2"1)}ޜ$Z7M|&̚] CVk=V[FRZ~*LIH?>, mNY2 Et_7#C1:CT3 H΍J[ߤŸt] vIVSMR|uH#2>J Q@UaO&J0y`Afw, pF$u >Dn/YOp,ӻ8I5%rYOLl&iRpblNlNTNDS<J6F-Zvl~rz/dbe[ՠ,j\\WaLWVcEjz]@>3/lK5BU-`\$^&zEF5;r}izrrI-ɜ&.}^x6!DFqэ8{8kƊu!hߓQ>އ\ރs[a6pKb^e̿M"q$ `?M XBIoFPAp~'_;_#~vug`ft[v6H1P'YCP#tm) lxͿ\o 'CK먐-@8zt+/E涖/C2}2рq`mveϰsCl#wx;1ꢳLnF$WiGvz Sh[<>=aʵB~VOWxü#֖z-nXi,=:o!]i6TC!wx8ZR‚MGZg8Jnh{~[j/V\(z|k6MYB>E4*IFykb=r@Փ *\Z ) ў4R8EMH{ؐ@Z)^ N0<4Sy:C(E2ȐR <$@7;QUWף*Ŋf c.H|u;8m`mb5+!d,/SwUU)gNMók-l!B/UZy n> `gĊ 1Dlロ~Q(>ٻ[G? N|=Dp\ %~99=NU l;*מubODBG4pl$)]DY\H͛s`TZd$FA p4Bj8 V3ž`+ Uk#_[Vλ;[j~zlԂgrBa jq0Q(]8g1<8 {b \Cj5ѯ_ΓuA&K̆£-}覭 \v4 <_Wx :C ) i aI*40lGӘsQ}PN`Cr~[ߏtЍ?. &?>VO&6qd!}Zn,õ0Ƣ7o·mG\ǹ.?:̠;%/NŬIaqb[KI96~E&mU>QX;.2@D먌#=/K$?' FK+uȕ[ xldR7hsR;IJ .ɬ+ F'`O5_l[xGSR_)G07S%CIAu|(^X0u6E-k mĶN"wc Mx~N/-amҤT;_s0U'JD n..{ 8߄3ņʞ iՊ wl,.EBs@}l:ɧ}I;%tf.dzgv`9f6b:l&dP\EiŁ>01T%4'C$sƻןq+;_b)*ڀ41^0䵈A(oQd j(4jYKH'~p b$tYH~t(!(HS\99O8I^gcC cŊK̊ĎxT֭!P0D r+C14ơ L1nNUj']5AQL?X.V;O04gJ*~ *~N]i us 'vo>nǫl։ rɾQCtQlVFtc_ ՙ0ɂO MB*E"1J&YRbapV~C+2L=[)r*_ДVb݋K̞ s1Hڵ7suԩ^H8e-fd$fOrhm+ t$$H1+ !0;JgI_H"OrmիX{"_9;ђhG8DFOJ xjt+w0,#7| V[qboF'TFEKb'.T踏gR 1*h5?fHcA_Cͮi!7[-j,aػ@$ W2L}NN.ᛀ/HC%`1f[x}a5=%BDYL\pCz^W 3~ qZ(E/`jTw$X#olY+BUԓn[)9wb)>cZ"6*VۆZp-ZK̭+G:TY4w%)k P*KcFS>̿KQ$Nh?ǭԣԱ M0 s} CʷZ1d ! ۩"  \!(j 4rf[Ovw'uk>Iw9){O&j͜k{]_`> ڜje}5Su[]6%PlǴ-!@&~Vi nZ|Kу 2P'|'銣QHJм ;8U{ LZN%*J`87Ny˃h/2\s ˥0i:&z_p߂=#YXIƮNjmďTE YMeH;S+Ѷ7rBh"Z՛L;fGtҞ=5VY[ҵcf|穠/b(8QFpbs`)8i߿{DAr RX,֋89yԀֈF(\1PE F7hC]/R4®>^aH79f=O@AQ'PE̊][ \՜DcLǹW'?֯LdƱ&X!)kd>0f\g ϖ}2mPP%gGķ4kǨ A>4IUrk$ ?Mݎ#IeH^3I}/>zc6(1egb!*~%лH T߅"nA 5o|LALFc}aKO*Ȩ!e- (Vi Y7ѳ:/@&9α/0d( Şxa ; }`#?cepyu9`.V ٕ6E h9B>QŽdh\?(G(|)ҟ&SD/JTwz}e/w9**kK^up&3!%k1szM~mƺug K!FOD{D/d,VX4<@ZST)?D\kO$)S2{<H ^[ "$bi|Mt)U0MީnVЗPSZl`h_u,w'ߍ`DS5wp_XHw#Q̼4Tq%ULC(ZIr VdEIWH}tLJ ?}>؛fA#ƈ%0#T7&H`=$"`wqs4I0Tك<7J`L5e8U3YNzC+޺'5*# %Wr]]߲ǀy(˨ MN3Y 3t쯹 sWy| I-bN.]>f }\&HU>iUX+dS zV#rtq fܸ bױ-㯧$7 h+ʓk0&_WL[|!)l|)0"@wNo1|OͺDm ç8}oAax"ROD\+gU%737 O\~kк0}?ʈ[oLjx&~p?[k_=ia/L]m%C#|%bV7mы1P'>Q^J ~EohZ*?A<6,BccacJM4KY/z#^lO'*1uW8Y0JWA?LF4 ()P0%cUSg4c%3[tĸauBx ^xSch+yLvnw9>Z5) MɾZxZ~L68#SA5'mJd䥷JJL_?;b˼ecZLBe{CN"zwe.1A5ryVG7XU(CC;/]QMy~!&fm>5] U $ʷyQ)w%yvg0?z-ؕ'Y)/ZrryD@פ^c_W-h8})1}16^XAE[Z`Q-?{{xϹ_EW 89&n?ܿdMb#ZWp2J8T3+0S%lIM/t8`qkV!s.c+H@ pW'v&z]?&IU;`KE@`:EU(‰ ,F!bctUP11paV)ålan]իy`!NZ^©f R9JrPwW|KbSt ɽn~i qwC,/:J|\G acVmշA,{h{0~z/;ׯ t,v{K x)7b~9SځMb쉿cBu+I [N15P7U.QAī2a,z@aG#z K]9: Ne|?1Up{+br*$ Mn IS8YL hFW󗶫 Ϩt7F6jT$?ܨNq$uL}ҟÓm"쎷*X\n`"('Ie(0+ua.tF)*=f!24$P6`7V njWLsroHTEYL $K;9vylbCxd<&hDC4w0!zZyEZ[fI_KRۖȮO7P>Z Xjl4'=20U _+Z+ ,]AQțmˌqW5;Tw i)Ewh |hVz|=8v>z#y7NHHW*|.~n$>d aS0z` X+96nQe]N׻0 bh)Fw8Qn%qAoO}LAiYv}hU 4eTƩJGۥ r>a̳(u;_0>CӬp"/MKp I<_S9ǞK :S;lmL٢H 8t7Q NM/C˲:k.F (a1K{xJN_ϭ8nDٛ  o#ՌR%Q'29pMP(HR(b̹v(U>Eiz),Fܵ=\4bav]lQit^k5|>`tl襚Aiڋ=kio9>*,N[(b?aXΏ̐SՃ Lْ֥ٔ^DBTl/w^uwy#ճQWV541KI(mH^\|k YWS @WJ4 @7/xyeԩPB6.[IJ2`W %)mqatj^bD+>_vhN<#%nlen#1@DѪ" P^j7I9}%>Vy0L`0 =#yKuj=+vOXJGguI7]ش|en|JyiEYNLXS~AVLC̒}&Tv™ޫqyE +SZ!)_89W"ɟ?y*k465;p?|qp0bE[".R#I6|i)r/RZW u(b>\+D`cZÜ[sGY.w>e:? u*%!9vS[rijJC%Tce.Q AzX3 o I6{!3zMIp7g5^bw" bGwωѕ=I\m[RVؿY UV5}fRaU'6 ps*׾N"kr䣝V<8/גLfXqB?D :QgX{@NDbEG(#~J* dgdTUV)͹Zg;M%&/V*Jxu}{d+lc:fa~Zx[fKeٳrP+D70= 4W[fӡ}1c.RDwI0]eiPBA$ 3l]Aך˯RPD=)~b2#W(oOadRKy #'ٖoVduJw3X?ǢOW钂 7sw5?Wf/¿Iɽvp6޾5ɻt*C&0K{AS2|ND馮PbA6oeTd%`Ǹx`hE7r@?|[мxPA 7E?3zZ|SUۊXv RE@MדxRZ #fsc-/;"֐@IpL:v`8, B^JU;ʂ_&#,pBvX%vsC.X*ƭSBSj J ;]~X+@*K6$|yeS-ɜh}C6*6XxtvH$HU7DILq+ۈSŤᲢS~I@i O))̗ * PW[inEa쟺msVI=`ź)g e.PвdRބUвPL_ʒwEaI\G!`Ҭ[{-Eͤ-\ן;S'h7C\[Ƨo'ϥ\. ]o ¯3h+fW}Bb6s[WAi~Ş1S$,Ӧag'I uwРb4$蹥] E|8)$@ 7H= 1ʴMG/AYgtOY,;&.PHM߮RҪfp7-FԾ[P/ްSbujT..p* n=g2!fqG"YB|g 9ʠ~JmMV`hXeqiXsQ)p|34ian­fҕMq^G,5j)UmA0 ͒|EGGVƔA#N`l#WVbOoJx¹?'b 13/TӴyN_2l@s `E#nuQ3к[6pSO'GwFinjpcsi KK4Kܩ ט%|tu\Z1nD^ ~dz-#P)é*YfG&گ ֆJu>o嫜k4Lh1{ߧ5yVM]g J~o*nxa*Wd=I!zR!af/'('}H1bqS': pg⏔Ȥ?M5̚')A+ +A]\XUJ/5'珷G:c _l3۩RP.ݸ0? Yx:/dOrL t>PiN$قoždǶn[Pbw|l{R4;&J6Á䙉SǺ}g̕1ϩ/N-V3O&0moQ<R܀|w lzmi 963>LK |AXze&Y5#fp^f'\ߍh 6Pa'+[Uu3?rS+!=YNWqmTrnJ^Rs#-Cs!&*FNB;"h"?td > y%khZ PGf7k;*ACߣvQ 1(,O{3S Oh7qdZ0މRFT;_nJi:[ȷx%+;[W$xryWX^ۄ*۸& 13=^߲:4#/\ gů|> 4[/pحp=TαO0 ߙ]{7.IpŸ({ʫM[f:)``eDmZ8ĝb^VӐGS/Alj)p>7JcȄ#*ȰSqAi*6&ݢ@_yVaX|S96~tJ'OUbe&xu=\ Ru^W aLP*4,㓬`$s]ML_C z=Lm[r?z]wnBA6TԮ#"[_?gO@K>ǝ%~aS|gbDƑF549,`,Ɠp?tЄ~3|Վٹ{*Mvdxy/[0A\6>MLzCw ş>Bm7,g).W[XU,G`P>NM! ]TUWz5Iqż| ҵsժ;X 2iCǹ`?wT+nYC3Eo烫>BidN~_E@<Ʃ3Gn>AV]цeJy^171C0G=ed_?wh(uB*OH+J'wOG럦\bLԆTp ECd_q_nipP]LkfB(OtF0ⰖF-3YJ-j ΄: &#g|7J ')k>y64%eM2M2 ;H/*-$̿w7^bStGO cV$`WX`ZnnxwJ$aFr33YpLDǷ{ xD<}?i_MHws\dG3~7Vmc§>& .,O%xa]cuE;Y kgD;Z9OJ,uoBt9vc]O]T;u`bFB҇ˌ^U D}LlGo^ r_2x7}+cC'wOP i,Î AiQK#6s@xN5wDtMH5q] b2vg,L/[OoWGW%]TwBovmh^S}!혞< =_Lo1_4߆;<__CΌ>'u"j>DsvTx]<{ѽMdyUy>ҽ=zxNx>[uyimtu9F3z]:6 cn=@cȧp:mIWOɌ "ڞEs`A`CUMN}Mpmc{d`իeHzXF!z(/,M=X@qTٔ/ֻ~/c$jhvհ\_$ [PzrBkvZgA")LOQ5ί凙$w-upi8T ]P5JM/C u+n|2 C3Y4G~L =ßdzSEƦw.|U"! 7,2kIV_*D[v`yFR3=>K Y Jz1+2Ӳ-U9:i޶:~U{gْi 5p G^jWjhw-Rkq5VfݹƟPye%j|t.*Fq 5Ե4aIǍKghCXʊϠTҎ/Q$oіZW\7E+:u$]0(1QL'D=(xu.#C![[vr* yalʖTʵf\ 8/db{h;vwа~2Z_G4wm/ 6P(?&`Jr'N $رn-z}ApZ0c$d9۬B\TOt݉(cjD/9~ho|%u}JjNv~a Ɏ{kp4b>XMҚ3WQ|+Q^|3>-o"|_kUU_^dJ[YR2ڱj9NG"XG+?@?t !+2})'1tkr y7 T^j6sC_\7b1AWhRN A".aKPE#5m!*ujJmiD̜i,S ^rtsWLzT$8=%>{klY<$\T>o)׊-0&UE?-WtfGR/[+Fu 19wA|w ci^5浽e72>t*H#Xqj&Yg2!cU}Yljeb44َnK0XI 8$r۵o@ۿ²Q6ǯ!K9Պv)ͶV1rG}OúY_Jg~fJbLJ߫dû c*izV&ZDa)ӏmuьzP'dkp픑k o ~NI!?$P)KP\#d})gɧH-`/+i'XׇY*ĺnԞsQ 12vs6 }Y|F-AuzQ!FѩDE{Q݀h*`'7i{+wYN񐛆l%kWܥ5 qv[̋'D({,A)vn5y"<{XAjL\GFo{,SSd%yw!N8c_!P0eԎSI"8\hfw_iնJ-pc6զya$CO} ?䌑0q~ dw0X2 1uI1sNA4!7I{<V8'ⵕP;?\pḁJù?|jiӫ4xdJ}=eBPw$Kf@VIxp;L HT+XbҥםO8B"cd9 G\=֒9O_̫,%F !=w> 2% Ca|&){ 2cU[ 1wK0RqNM8w)!mf)0B4X.q@VXTzhTؕ#'>i Y5˄6]Ֆ$gҥSLZ m揦ᬞ$ °E7^-̅Ь- d)rrW na4$KT{D-B q|B& vvbdiLֳ1l}Z}ף*ac5gB)`ud3MӜ0eB+sSx̸S*z 0%K%*Xk=A^}KeG(-L子d3?<7JdmTXj|y. ˸ '4Rͭ*co ӀQ=Y".`z,";%XQ6W0-wTNMd_nbV~>HΨwzQ%ཟyB4T蜜尧V=ԊGe8e,d)ЌS.]-oUc&O/Vdb6!2çבv#tR@ҹfBD[1y!d5(#k1袳c#9J juc~9o/cR2FGmMle\/j>t:{٣?XE0=_kE&KpVe)s.͐y_ @Uaۓ7."pV5Vaݔ]c؊eԧZ%l:z^L8Rjx?26j`B$>WMnbzy)mPyu7Mm2SDe[w69ZLA"]y` &ZCJTDEt0$sbVHYqHQӾ9#ZUf;Džh17$M.2XiӃ0LU~a#L\!dR S㚫L R6FCH.JY Gc1aq5c }!w*vPU}48uŬ*_iҷIJAe2DY-PA;lӹgpvc] RDK-XB$..=Y.-@i~uFjYf'.I' RDLɇ`[4DdC悼,g-t]|BGY27L}z$7O"Q8)MGytJr)_](Ig˂cn][1x`R7~Ԇ.=5Mq*9#:R`{iIxu-H@Q60D~b۰b0FXѓzGF `c6 gw|A2Zd5[6O<cggi  xk2EG (SfCL x08Q"HuiX"ֵh`4+eܚq$wJY{JN(bQp戛U~;WZI^/.ňq&TL&bWL+ oo#;$\#a2ե_DQǖG$D!F`tG<6+MLO D&kx_Y?jVg^dܼckyZ> aX)5 dы6l圶sxĄ|U:QԋB` 4! (.[ȓX!Y1BrP {p Ii3sPi4K˫~D7r9{TbHX\t(~+luN|dfIpB䔳d}3B`gJguƦT6"3$aEg UNcεڰsSX[1T`h(sng,zş8pLqCajF#qVsYo( F#U`K~d,4]h7 ` F*L,&%^ 'ݕJh%4/8uvM5ޕ)"w(b(k&g.,08EFRe39AeN+!7JCKT:tg}dr١%l! ~rST.nÜ:#X9Q z,n16䒢mUOkqbs/6 KCDz.Af43bAǗ{gfɸ5RҞ ">Rg!ΡOK7juF>xidǺ(elbUc5Q\@GTnKLѬ~B&~/YxHὮW~oD/`b(\K;5ud=[BiVC>{' ^rKSBU69OeSLTBH.Ga:#48=P&cUjXaߎ~_;Q}fLU1,^?ptCzdJV T;jڭkBUYt#tȞiC+$SR{ qe`SJ&YmuȰҧV)/ sed4<p] +z"ެP!/H3=b8+>B"K> hh}ŦJ7~UlVl@bdӟ,bqՕKJ k⊐R,6ʟ(P(P%Fmn8)H%h"yMM@#6 RSY)@ HQ%1:?k %2Y+2f UL1ep$Ĭ4 \o zCw [a_N1wr/$5Z;H޳ k'${S>$\})zO=YIL5VPV I2~P&*+KmN=*&gۤכNq$ɣ }e0"5{<Щ=<li,>Wس}+3<:y{;|W0ϧ >2 6y4Pjf;CʙIͥb =>?pDut/oMg{ .]Ǣ%bjgY7)SUEp也{?1t#_d'⃌riV{N hm`%qɬ60D<#~K ri'^ 엣qD3V܂Rㅷ'~WQ[\8X_n_5}V 5C'ʸ L]DF<kFl2?R݈Oi &&̙f6S*#\}(:7Q>kgb:vHs>ꃂS&ᔇ3QˆѪdIzؤ[ RuH-OZ'IIbt9Cԣ?S PRàX8FYV4=$`+T"654'rmko⒟W%sL"XӹR_F 틽 AE~`e5%.3/K MZkn4YP_kZaLo|Wo}̎o;W;Nxs Bh5,mq~Z6R~@@d|xmo&zn&b~|>+3|xO zI1JxӅwicF0b:lW;B l#UJw?fVLyJ۲> n9Gi ł04M%`aUίD $DZ^&*߻/8@:"A* p:&Lv?|65IY)+37׎ʽtDWgR18n3& 6`Ԛ{yOžNeF; KꂝpM$n/ahH⾯uW1 LrS+gy,#P8U*6Ūhͱ(FYE:MtLsZ`[NK[W͹+vu`BH w3.o̷)B#oͤibOm*fەD%A=֓xMpOK]4I6 G@Zsr x'Juj /*Wo`, |,ec%eΓn%x+z_瀼wQ)Qij/aýfi1e<2A̐զ?v2жo/ s#jl 96EҸD|=d4OrE5uA PX>鏥dlDi1LT~ / ++sxf3G?mmM/(ະ.@#pN_]f3&q^nZh-/g E&NTʞ?V (DB1/y-hv{ݱ+h%A}84De`a,rp :߀_2xlzAHbX)nß rTX- z+ˎ62=N]sA뀤RlҦwIB#R<:GPS'LV rޱ9a -7Ȁ{ #޹1Xe[y=Cth~چ-d߾0[+.<1Z)u1]aq'fצn٧~]G 5%=aY% R/vabJәYSHVAW*M]Sl姡T5CyrϦB-Okxmsl|ZCMn Y1|8u Wck!DtA X# Z&>FM^)yzY1JȼPdFÆsV8/Jt^ *{R Z -AOWE_ DDp? ֍o{6N CbMjno1v||vTx;(J03lm>lv,QgHu NK&wǨQS&‹e?g mA\YqKۉᦗy\|;/^]F)]KCzO؊J+JsGV2C:#gۃ(砑._j|Ylo{WKò: as}9K3#Wox+h1 }+mv/G J^m}4"ZTZ*iEV}\vg𘕪qn y|0_-u&y60vS?[@ &p! k?H G\RWv0׏}7Kn;?[ aؼv49~`.`/l*—u "W>YQ.-B$F~~$jx2ΐ a4HhL].ɝ[4+vZPy=OH +kazJT[ZW+}в\!&߰l'] V+9xg]8]8>- 6j!A.!VQ() O/`VDs~et3f~B}mԜ ?5Ե=#3J"7`ߕQ;Bak߹'Ӻy%='#k@X#9۫QmPZ(p/Ds7&5iaz8QTU61M,TY7>Zz'je3%ژxTūJ {)cA=Zp+-Q`)7# <bzB+ Ku7NVxT\f\A"8W.40s7%{ [$W}_J+aύz+u'EivGvV_tЖ|,]@:fbJ1(4=-'[y u2/\R=|!J$إłjbrBKw~:-mJf <׷F/t<|hv0sC |O847'L&T&\6-{,8"-5+ gFRv̝\[ wl&>ܢ_yŠ (+@`[<Ƅ`W/Ƙ([ 亹:Ф d 0?e2vBrr?PW t 8}cN;zY`tsAcktR>`!)MCX~2UH(]>ԅXt;5Ɖ{Pڣ+{GPUَMʓ, n2dZ0`Y}^熸ը0`9Ia2aK=/;O]^IC`(D"06[Q" gS4BC {IIKd~ȹӉ#|P~qځWÎ&?HHKټ=+[t -TC\܀{1fKAoz>k[cƸS7ET1╊ڽ._Wtr'[\C=lہH P~9Ga2 qĠ~߫( M& ζMD@}e``\>`S3S]GqgQسpl`Rb 4o"HY7+ /#iT\*G U(u ;\Ƅ^kAAb1Ant){9"2$hօ;pQ^0c450g 5Ul-2-Ŕ)Ox; h]k5tP]B [ }i*"ew)$pl(v,Eb4BxU_69T[&νq ^RMop<͟ 5玜b0Ds~8/&aU ZE$ c3L|QnIcGPfkʲ@O{_8x<^pRivHӚ#:Tzσ\W┍%? S0*`v]*<@S7}ɖQ3D9(YfS={ՖUcu{N =a?\/|BJh&~?/p8\mBiE0 \ݘ;GlZLnQiݣ5 x:ކ?MD=,ZCw?aH/uQ7a%ܮX i1WoM{O{\_8*85!S#s+#[`&5GxwxcSyf҈壘f/QSH.bkAַZm΅oGSF6bi=nkXLJlR*a03/,:#Cp1TևeDT7 2eZ]ErD _ݙ E$c {q)"kKK MJ{VP8W^ۮ x1+ ,YspD ZtnUTrEo[""0"ƒwCTr4ִhd9%hQi$U,~&.UyX2"]q$V$"jxYx^1MBa>5}Siŷ`/`JPoqNR)xĴKL=wJ]yntzMHKS,(oŒ%5S-z{R# LBOC!F)D86S3F'$Sɨ &.{`-J-Yg6DkCUW12B\{;DpI1/Oj> v-j(xV>O_ɳM aUұHb#l+\mq.&0-~]* +и}ɣNHx1Gq}sv+!P ԬҺW'a#Hɑ^S]"Ȭ ,fȨH(Aaj ư;|hn;E[.`.2k-#XƋcc'>廖/yzy`~.%Hg C@咢"Ogօ \O?X$qBCB٤b']bw⪈K9#*t5x1i{PLD=>\~KpU/DDs ,ґlIŒ݂G8DTh_,*6TULQv% x|wl6AC}T9 `^2й\=h*[zj > Z{1YdWD[#KQ@]ܡY?Z4H[zj{ ӏBF=!+;WӕaFi|ȵޛ uIl?Q9Ma7ˊ 7!CժDy5:~S@t'.ywU|ɉy_؉GsN#$d۸NrȜ!w:x/P-r8G6j zY< ֡Q;ŇHƔi2zGs+/ǢP/w؜Bayz lջ[qmsJ-2`NkHӚ_2ZL~^nZJ|fYqZ29Z.i1tjUlC"b2:o˵t7N; Bm#E d_ybϵ&߮DpH/Y-#G̡8̺<NeSj#A)ȱپ>7totY1+jOk1 "Fr !|qℯkEJR7aV3Bdҽg@fڼkw2&&CqVm+?v$}2imf;d"(ygPlv ,u0&Bc408fykw, vbʕ vݍ-lS=t"f݉BRr`Q+)щk _c'_X^"}!3Avc׺6r7q!{wJlߎTkEu؝ѭM+ykG'Jvc;TJRHڙĐtTP1Y绪!e%!49Tg1)\L6:4H/&/$)ͮl @imݘHj0Y!̒{׺0rSN_$.ŋmπ~ l+Gce7ޣaS? gX%JX[e=6``˅xA,377(*5-a‹d4W傫/e_=|;"409R ȉ[HR+*=-9H-1}̸4V%Fu5*-BgV.(Н[t%#@Ikڭ$/e/@3 }p )hc 8l>0_ {4.=aPcK x l(NzFÛSg^ G-E)Jz!Kˀ1UFAK[{C$iRG-- D^S=_<3ћ55#'%SՓY.b:ѬfT!L y=.qsA1 +<`AWOBM!Y@7dS,|~+S:Ne2C\/kN-E糨.W -s \0рn^]8K>׏hU-wȓ&6W?7Z_)y6&vC3DQ|.3[d9WQ¿xvxio3`Hw#dW; &zJOyf;˧c˕aytI )6V2̽xG;̧3!ٜF f.x-ni~պv?uK)6hfm! .dKvsM5c] ,5*9!<L|#MF%GQ(u Dei#NG Ӣ{덒nZ!oDҟ"[D*`:*T v49q}36ؒ.rx(W 5쉰vWlq 8w'4CgX iȾ@4'%Jz*7$^=FK# _"SޝzD0Q{vfqGHt! .4T%YO_jϾH~JM˧F?Kn-_yG4Kq_Q l*kvӱ]~Q:dM|/BIפSdoە݆lhNN@ؤ&67ǯbNjeH[IJ4| pxRvJ|ROQ،VbO~4 W+t)2a>*1nobZ4[6 BKjOhp:;0ojk~tY.c~gL{\+؃?_Q1qctu LS@Ui Uy?3Yz;Ќ!3a&r~EqQ %wc!X"V*z䌦pq.]Z:ə 4 h^^ O$|e뎙k'?:޵zr 2N:Wgwz k"R}$O !>^Vq3>/0TA5uǶ$`JkZh&;yX;\9G sx14dH"wh? \9K9nSnaq"=.5Nn; Scs}>֥Jݾ_[T@ p^[BVMۇ0O>M]i*mc8r(G!;LY!YfѤ+f:Y]z /,IʾA@M<̯oy.0B<^|?:4цh`(򰬹yY2c´9B#g kMM}W ZQmX-TcPd&:8,w3 .HqiU6. $8~䬦wU@l>DTZ²~a0?39 `c Áz";{,&,@—^ܹB3^[ UBT+*ykYOykYGԦ| ̊;wMl^a2SG`5Clv1@lNN, m`(E\+Ә.PK/Ts]zVU2&.n8Y+?:Y &[s1iJe_ _~p0סgTj^R2&A/hd7vBS#'⻧f"oaS'A?vD0"0Q+*fM͎_õLN,2gY-+[- aQH]4"coʝ|ΘvӺthFYApxS0oꛩ6^ժ)@!+ y|eN,>g,/6\,b$Nql3dq =-tEz:_yKMrR8\y)rj!PO+'b>+Sv@#񇃐&9O( pnI-m 6,m>'hL! 'J m)r̖d<} g)tUqٙW4MW5 ?|z±!24 릩O/h` ףnU>b8ED9X&?6^gg 4%y~`JÙZ>"zI&/̝=zIv}/yfKf뵉 Z+Y7P#o$ػ}ltGl1\bA**ccQ6Y]iMszA*!8F:%^ POP%/E~MXS{2I4.` =UŠu3zwcQcR d4⢱jfpHm-"t_TL0rtIT4!ؗ^xh LpY:~?um1>l ""|\ M2RSCC0ʜ/JrY P< aQr R%ԛllk?Q_0(3_x5)O*i {«"d4 Q3̜x +͘@^*RpObͨ:WbR5m $}эC!>s䄊*]v9A_T ^>|+2T o k:{cc61o}b<g:lPH@1<~/=hI sksRob=uE&Ed[ /SJ`7lMSxPS0 Q1'Ral(>>]$&( AʃP/Cq%H)qH-Wی\렐HcAݐdJM∏ġ~fF~qZlNeG㮏)2/wn\}򠏒ɌL n6M:sɏ<4ޫ"2uuoUEFh*ggxgb0S]3_?"&80شIyjV`*`>4ݰ!*!nN'sأ9։ʣ'EbL RlWf只?c~B֊Κ :8&aĭ ˓ql*M '(%a{ST<\/T>gH@PS9P)&fu,i©5ӏ5{l9}`4sY=d=LD1#iY XՏI6˧$/w3?F?[GF-cn)g>cI@ґt󒽛 G[8eFfZ& fzB!=T(ز^pH%7,!xAcm0@}E?]i]_={`8&sUxvF;$A,Qf:c[6ORQsD9U 1qo J f^˻3Ü7=9?Lw: f*ÅmE⒚ ]2zW6axg)=wHMEJc씜;%ae7|d&g2+N^k5>VZ$Nќ 縯Vr}ltޗ8BB/.%b 7T&FS;O,SasS;CS7!s˵GtC iG4s4CUC?}ӆ0)c].{/W@P8XjkS_iG,XVx;=mnY⑵t 4Hʗ=!x(LPI$E6sUy+y#ZVܚRL0 iW =@O˺h4ͯޑY'R_'{XM-n;|]pRFiT}Co'NƜr*U!o?B\[pDWuDr*שs½Bc-(weF즎zxCZn}[P`jB&``d%Tͱ kwgjF;U[)j64GSԺUG*dX;v\40Y7EB<|pE !k.)Qsrsz)d' iAyƼ@V$5~ZKm ĎkͩWe f“Q1ÖU7 BEʳǝYɟe|4m9P"i#;ﳵ  >}0Nh ʙUHf}v` no%ܦd #"7RYIfJ[:s8H%?&5i3ɽʐ9,p2ifVY%:BvƤI!CM])5c( - nώd)NI%"TlM `EHIqMկ >`_GbZ.y+&Tyk9`$5/0`BKOᆲTfq]qQɐFa6vwZ(@Xutr/gmfٱ1^utLvCmlt,DM^Ƞ }Ep6b3l\ILA ̜Qޠ5vq>|u{+6Tnj9`i gk3X;Yx xK-赌N2TcԄoq}K-cQ%Ŗm?5X)ǔ?•*.52oL1.nçg1BF-' ᙥaB-1H0R\'_jՓʥe-!X> EK3H&0{_u> %': EQ2ט#Zg_;DGdtG  68z ^NBKf'xvgjkgf9?]6aq\_d$KPI jGJ Vek|IG[An*3z6Xig [n%<Y*^2o_nF) @ OxbߵgqvNLCC y, Xͩffno9@E*V@da%=53_,g" +Ai}h:Gi7[>8jȡuH1z{~jrtv!>[X8q6* a(%ex`:8I#l)R̤P]>ӊ!*Fqu (s6ER#G7V6˵ 1qi"*{ΰm[B=;3Lx iӈ'VU]@u;Ϡ.yߔz"jv.R] O=Eb@Hjn2gTʑP;;Bͧ63k,;0"W(`¹RY_YcTˋU(Xo!hܰ[~t56oZ)ǶA,GDz <՘hŠ"> vCg-w{\$1B/g ! cv{$km.,+igo}i3vmoͶmflml6۶]oO}ڭ93g!5_U Nz}e*Mh>AwkQ{V4_XT%x̾fwI+GHNc PGJ;Rd;{R@]k!!Y'H_{ ,&r63騍7]fC[@@eav0vҐbQ!Fhyrts="w/uZU?2=ob- [e>)Q\g3<-fμNW/H'©VUب]뭚Wǁ=tZdKA\Q_ԿĺBV`2Wgj v>.r%&,ϘJMĶ}Г/p%s<|䊁]ϺEL:P9R+?UN]#e{6z)r8+|MjL@Fΰ̎ )g (3{b{p)s*6;ez_j}Ub_)yV+`p=&Jcfw0jS:KKO >Tn@$S5S n!m,ˌXOcU,_t1@6r(Jgt叫:Q:AXuА{?Wju+Q|*gN=Wd}zǃ{'1x lfCgC!i3.Uia;,!It-I_xPNOgn,l mW2 LO3<_tL?LFP9f3)iSs^hnYrk]ju]8>ʓ)͝aED@!E7,aϩ#kjɄ1$' q;w$vox?C ~ddhr]Iw{PDssgYC2&ɂKSJ)Hǝ2P0OG˩L"ѿ"T'Do!lg2w'F{r?n>pcxpa!Zw~#S^Dz8BENz?z6/8S8UhBd})0V`wb_M(ў~/`$ľL7l:%hDM䢒< ]zYS:8Y(ZDU‡:+dfM;m\@EJ/ȹurS_uN޵ eF#<}bGQ~!a0ٟhAT9s} 1z7gXmM>޷TH_;Ő\,eN#w"AauIQ uͱ\ zV=+lbRVYkt.2n;H(QlF=N4ܝU%f*q2>GpRٵR=K1T H!CKD,Bw؛PJхiA$)n5}wG /B+\s0$Pt_f#ᕷa֡Ⴍo?]Nnc'tb<d`&#<6= W'Z]H%C<9>xߓ= [bAz Z9V>Vfc !ufGHr Y0މjEGDwr˾q|y((q (GpgR7< pa[vf;0qAW~&f^ Km*gIڋJEҐoS WrVڈbpޝaEt}0+  *T!#D_"fgH'LǛVe sUp滭4_Ьkû* 5$օYcfdғyb$}B3dZX&]JO3#n~rø+ (a]I \>mE$P TOn&r[ڤ Gv\r U ̘c42~+ɋxw +[zLy77eH+Kdž[&\(L,cJ7y_y&F{XkJ+4q@Hv%i}r~-9>b$"0iy%ris4[vLf;m C3 $}e꟮nJ#6O /y@㩦}&#bM_ |t඾.M`ϖrϠ%Y$WN2!'2=ᗓP(+ Y*g 87.ܓE$ްHpNH%jL{mW6Nm IqE !w )}IJ+'?rG-)YZl VX|N);}útaX4|$S }.9IKq~6O2&8Yşn 5AIε=)RsY{ЪĻ1e+DӔ~e|` KT#x6~WR"l ј,+h;P{Ti$}#* ]{&g3g3ȘN-c ՙ0Ȍ[)'9ZQvr k:kk7Y8d7JIerw#4MC=5V[<]9[o-9yC` Nfkyab8إQqWgY}G~/Ugy$S\tqYs1#9Kޘ(j'<0Ƿj[[ *Tw kHx2p0'&!^({pt$"׃ɖ඘^OO&a_`e@IQ@S.yV~B•i$[BaVײ>(>nĔ@n] ׎ǩALx.\Z}op# M6 gu~u,t s!Bg>&Ov$Q4yШ9Fx9!Y4NxDX ~^̇2-bZLհѦk4++-_%bd1,2b&{ [ǒ;}zm|T{&䵹%#xo XuՎ~x  K{őK>dUJ #u=U"i%\R[22#xO߰tw I`r"+tw?v$}/6H.b~?YJC~I!Jוm>dn4f LB@=D%Q?♤%#2)*D}ؾax'Kp GKGO" Z oLF%pIYSs©~~Jp5\R|K7vF3/@i$2d2/j1(R$]Z9!Rε5I*d >d`N@k [On8MzXdԦqS2ЧCe!S2ϻ J!6!;_dlJoc9JС3t&vn r(qXCIWI 7sJa u@XxW"q /':$3Q 'jeBcυda'%!e+ku7mq٥J³QcF:ٲGLr2؉@&23B+S5թBKSEO'X`Z#_8+G2p(h,m\_B>ǣۭ bBaƫbGs7{-z 9XRD%EJ6n *KmFJD =)*[J8 xj˧ЉO߃I`fSR*T*iVn44cR6Sk:R>Sт^3Q{b{-AW=Ƕ5! },QT<؉[c,Ous7T5dͯOaO˳ςDPk lH<~ҎSmh*KYm׀% O vXe9/s?)F˭*Ei0Vˆ1JCʺB{i/l̄?&:͠W?`M`s; Do/2@_v-rK)$RšY%n.Ǒ|SS]ZK]}T'zd gD~A( nHcuWxYR3bFqEeէ䄟2z QAcjeר'1-HioT/XAd)-Wӝ_Au8˟5Fi4)mĬNo 4n7!SC'bi|Yf.V`WmVoiS(:T{OQt.휩s ӅS_TDL6T\(XwRhl17~:k~rڃVO*ݍ3ƕSe ۆlx٪]~J/BςLg*vPE?EL)ӊ,Aw[}AGI))Q,IZnxSEFr'Z["gw-uYWǶHB>mS ~٩H ]K4X8'9Qx5 Ǜ8 .JaJ?,Z="z9(,b̳NkW^#Z;d_f6PYAYiذ?"#O.sftuh ̤(gRXsAao5+ G xEb( ;Qy>ZI0M@6$_)O0S[cbk_ދ 9}& r)@!XdEŮ7 {sKgn TS;ٽ!:jkkZ|/6XDȹ.#9eE*oWN=:6ơ{Z2ҿ-zq%w'Ή-c3_mEq7Y<}&6`ي [b#K;65M.v4])j$Oh\.EMQ - j0`jnmLfU K:PŲn-F?S1KG$}{$ =tb_zn_?f9߬GkV)_xژ'j6$s`s42s!;Ȕo6O@ o2q33-,y\d]oMy:0P@w.<نPzTVT?BìsÖ(Rzc>ͩ+Ք}«..QtgKBNtdg!^;>MCDs_ПupZ܀ hbXLgdraDvh33Sm21q9|Ġܲ<,V6Bh _Ϡ>_E֮'{X$#0=|HE;+ \usJ5z=è;ăTп']'^EW=؁*eCa8~e+n}] }&lzKv03q+4coP71p:JG'뇆WF \p- [ JsWM^< e|x=ִUA ؼh%":\וPh!4m&qeE+H+ Avp$Ť,=vdbB\e9`gK7ci<쒩GFof9i&%/upao ^ȃ)"yLǮbcl6/5!f?z#gTBeB!ʫ]6߆ÏP "Eh7ES)PrE?-ܬi}G/=J@)s" 9usw]'P1mۅ8T 6a猉 A)Jkb&yGk f4*1& HK5X?),ǝG=PL3PA?@[."o]%o^b VRK>tށݖ+ U:Ē驊ɼRܱ9ĚBZNHTV"3xzpf=+ZN izgWιHE?MVM3sV*5V!PEvRKV86ĆD͛8)^yO_L * 6r ۦ WplYQibbm~ۘ _Q;˾R!Xc4`=&&pGp2R93c=¦cv!/Vk YkoR_3j*[L (VaL Mi@qcnhDE}]2Ѹ dj%t4 wns.IA5KƚʙYm#~&4T'fvIfm?iszU߸ %5] _yvkj/=[%ӨՐG]GS$ j(Y72|'7|r C%ŏuD%`_#Ӳl0=7 cY`{d]_b |؋^1͟x\J+)04kȋ 1<(g+ rSo&x쮷Suބ>uv1Z9`_sH*e40U>"  H)VaH^tI/R/~"p9kP[OgJ4䋡%ﰗ<1Yt++*/yoI'q+H*g6Vi,-y+,R"*Hi [竆TVp2D I,{ܳ%V(o[E I`" oL(^Ȅ-Nkײy!EԠ?lX~;G֤)w"V)x7,v7ْv]{Jyk>xjiebni7"`E+wλ/lPuzdmYΜLKmM?Bmz M~of#_VDsF( (Wg'I?`cڅ]j)'|A|i(gn$w%L9:I db}0EIj;R'@rO^ "HHrISęZwˆߤ<<9ߤ]eߡцI]WQ&ZJևsH4ЋD.3K'Mo&Wq?G{ W^(NLܺʝ+۳ߐs^A7ݭ&gbӣ5+'E{/" 2jDfǧCz VuD́;^^)"ŀnZ1k{$﯋xWO<?rG EMaR 9yٕ 1Tr?ȧ,i19pD\-fV;z}#B4DɥjiM.EcBi[SL:N"Ch?|1^6u:11/haxݔ涰>&5z;VWSqN/@>Ey:I-fkpWNjLH5_T:t&嶻?yEcͿVvF1V M]QU9,t-YH26wI8õ=Ot~hWO(.msQlU^Mkmfi7tjc|5ښqTHY5R'eCqիknyQ/$n#4M 7`|W-S:uA??1L.r0nc"_a !vЗwySo/άJgk* Q?f& N1G9YtgO_D !fs[$|(ٿƺd@8O m^+CǼv#̫ Ϗ7d^;ҮW'\ =onö/fп9ZRjUZs}kFpĻ`M>>Ow>q&t%慢:7sm+г!wK](BVF롕K&5AyyĿ*q.G,忝a*ϜY.:e Eɛ64n,18ڜ+~uͥSxS6GISxoY6џE<Јk"Z鎑 '#+c\VC#A1ͶZkJ&Ջb>]0xI9`#C\/ɿm띶.<_#V8(]U1Ng9 Ue85 &s aHǾ=Bxj;٭2]pE}waZZ{@1Qr~}RtV5_UaǪ˾]>U{ӑeƔP*(=1؆tuQwKoߘV(|(:ݘ"HMJA#08B-"4 O2pF꣇ \sU/)kS8fʰF7zX6BhܴܽlO<e 5:tsb?Von=]ƦmUMܴTqmFAPYEePenMf\ 4N.,_0ؕ檝1+S[3LH1g €b̴xӵmԽ:z%JLӨnt^`(0E,DМؒSF%IpQsRX暻V tHENo.TaѶb;5sqY=S|DF պJ7z(>Y3'&vYh*U^K3}!Wrn. 2q99lƹZEMRĒ鯁ϋɉ2~^v;u'}@x}˜Uh?['Eq ҎXg,A eOwLIkpErDEpoЇ:&HȽ`tM,E LX6Hk$=ܗ-@sKK霽@h 3ĔFPRg1j Ʃ*-(M+UhA Tpnu9N'?F+;6ڀ˪d&㫀W:J .uʯ- a;r5hf1ta QchN!`%5UV^0_sp;X6E{ŸTf/y٨x=Wq mԭ3{>t9)FĶ!+p}XPA!S4觔:cl&7>WZcLX2H 3" L /)R;#wbٚth,V̗`ۚ\9.[;"^E C؟9a{:-gR ĪfĄdKIms/V9f֑fM4=_e)L#b.8a,r*˫Кxv9E["0; ,yE{myy] 8Y[<ݞlpTiVLM{|7`[Ȍ/jg9YTĵN~JD^>P@ugZSD8xEWJH\8$嶡G@l{4ј=Nwf9BJyNk$I) BD=? z]ZB!86kOj% a!k<_cĦ:` )tOzlĀ8!ywtF!r*$ D*cw`Kċоo)ӷta? x;oiݻQ?}F<()/7[ގ qjmܚ KI"ڬx򨅜_6 9wnMBUN1#TcQ)"Ա:;CD$YzZ$ ?u~/.C%Eh٫+1':Z J9TR]f?me#JފaD؈<'7oV(lz)m0R9 Nm71m9f!A8)7) Xɚ'.Ѐ8=,#' Dz]itYǸDG_F̈́8wyKG@˦D]ehڌNǡ }q C~Fm&a-,';첞ԩy)޳G_<QLKedmj6+t>}1R;GO+(z0!?\JhTQbBp3e&c!%ح MDLA(P#xƯ sE.ve`aTk* c><϶L((u:JܭkR߈x/$ȅz cacbp(-zY; A@1gHP-I X%5{=y:#jR%[~b7ᯕH `<ʝ|=d# p;Z]tO <[A1T<}U_5-?^HגQA .@9"Ԥ[v(r׎ '5JT%9y׷Jj90d%NJ2}"f1Vr)7@@Ů0\d4B} ^a {g&rCsm &} f ;8F.Aƒ(}5X4 : Z9=3bH'0Wi̭KY5C?;g2=1$xLY^4 /vzTB-c?*+FEقó߻NH<tLgWW _ɷWS˂D Ս^}4f͹ޯ.7AeV͛:1$(Nm~򮍨K|gL+ˌZ^=ޫVw51Po4 M4B-j畹t DoS{fksiԿgjrӢS ѻlRb{I^1"ueNo±FAd(&ˮ3OBnf`eJLtC;W\ # SaMY87DُE؟ {U.1=ͼMYt p5xHDM>6YỸl&tK+t-O(*'}^r?iKe s'[OILTۆ3(ϑ۴ ۃ](áA{c*TOZN w*`;e`XLz7 qx l[zLËumAp Έ6)ݴUpONٜm>kbRZPaQ"-cjߌ$+S1M5G^3%!{cG D=bpW+pД{E:4MDŽ\mIM@IiuH@b% \8#~17DYCX$o佲~F#t CI 7Pɰq fU(G\|2P}NM5R͇`!F6v .uK6v$١:&ժtfjًؐ5R\كHЩF^^%%{ hfrI%oDƲro_Uϼ/J^3_j]k.S YcRB!G=pOR Y7witd^ *4E[R;ܶFRF;{;U⢊M%'=a̱;xnR0@nwfxw_jZɭW$E jWD ;P L(!/wD_tRmά3YWu=NGMU?=d7\G~#Z?](*agnR{xwVRrtP7[īVO,F aV:?dtr?GXit蜌%V@庐-=5 g?T qD!ŘOWS/\TsI9mBl'Fe(Hd4sgrh]*Z=h?#H؍&Gk! Im5pN>k sP+DSYF#|VB >mFl>wэ9/'SL1„}ʯgW{ GdtI羲`*]; d>~ȰRa?$?4B]]ܞ5V##".~c'7C#܍XU>]E7c TY%_ [gSw7ҍh1l'k슷6I>t(.& K$KCe%:<^&h޳'}vg{?u$pa%fҘJ*ДQEROV&;=WScF(_ڜ^W+ꯞ0S0ϥ<뾣٬wqߜ>E?@Щ.Y|jz4PI RY,Pg:B OJ`Ccxe Խ>JVU~Lt_4pWr$&2unak5OqQgt^uD ^Ђ-2lxlj% cbj%J>_V/cHsSx`m8{F[gH{17]B\6ռ=Ш[X+|7:@b/j NJg;JP[Gniv㊓oiAh"778Rl}/B+A5JqDh-FO [p/-,ܗ'{?C|Lӵ NےA"y}@ONPUˢ+ܝZN.k|s0 7t|Jt:eHVj'%a :l#;B[.tm逳ԣ/RE +~)VUi,ytcOF>MϜrހXsۮ|otJj0*s}ZWias6tFh}LnJR~a4WP쏲1feX$цy7r@x1طy'#5Ʃg! L ͏C9ټ_T$,DsKė#Ee;!&蹷eYErMb!!lo_\t͖ "nIAAE4F!vU mt'=;Vɯ{x[-#& Ψ~;G٫ C]O{]b]m xXHiy秠yq9m DsԅrۨS  (Hw WyKC^c7k]D2odCAl7$ɎKft67v Ӂ)%3KbK{x2Ww[3()A3!噭Jۉ(2F2l[| 60=`aץǪNG#>7/O> ֞KZ]-,VZtcmɨ[ˑY-GO<)Bmk m#莱o*vvl'5{w({Spѩ :,nn#uxt_?AlH+IӧY{l>_7n_{W޲vw{ݔ0Cd aGU-m ,__VsåUTB^$F%b+)ܴ4(t0K !?$UC_143Sdؖ# .h:a%hkR"ԆnC3p3 2{.tg1_2KXMhPOȢA2]Oȩy,bx껽=<3F6\Ye\܇4U3RމȦn\d ؼ%Ob#lgk{\VjZD `Vr͝ hVKjV*AygLj~gyG V=}5,'RJ/Ta#7k^>Y#E1&p}Io@!8e&! #]$)6i+&U~:*糼a촊HlB<.VKZkߐ, OJ;FɄ:DeesZwa$T V-RpO3}rn`NԀG^]<>D#{ U|c6i3q!Q9޿_˼)4f8Ji8loBlq(%)[{ QuuMfC,t ߹irf7 zGYx=ECFs-z z0ːGpjƆ~&fD]jqwD =&csݟ#73ή.̜?\<J#{|cgWj:T݅l1^UH?NX%YGǷ@fCb>o|@2Ϸu6u+,F6Rf? )Uڠt#&+0:Չᰰ i"|%r>P2› eʴU~\/m>RD(O/䳏~NAd~b 7|-ɬKEqC6B*Dk+40AϩEFn5QP'Y.PljS c!cq&Xwjr1A' D B7& (U%.ypNFrdg 9p}XV4n=aNJz$ θ95ceUA'Q'1*8w*gW'$cQ^®]pc0k4r ->#)RO^ʔ:0F&:lS/ &P߆o)nxf 9tmj<%xmCv)5 U5{^tV$,v^+#\Ue r&úhVqNH& F!-Q5|A:hG\7xH#ϔjZ%C?>F._ +džlKj̋M\0yz2lOBlЕ~ٔLN}/)-, R; EaFh^s@~F5t0C{p;)#"@왘lGl8ٜRsM^y ͎"sWa-[ϷU@T(BgqPB4Qb6. k᡾ŠFL uJf~Z󖹠nUi^|B!vyS 0#,cyælh]_k\nrjpH.0Y#7bkV_VLL{uNey Y'F'N!8d̆5.sftPiTM+`~k7-?L/"]e%Uu(#5.I\$!{gg bLvu+R7_QT]Bi"cWgn[yC}I ꊅfPyvL)L%fChg1Iٿ 6KIŐiGZl4=/?_"6GkshJa܉1앭jI_6.wrȃ|hdd!ڶ#Ѥ)?xچf;Z0Cɨ}5TKv>QԾ8o.}; 5`@&>I~PtP6k,XY&=F*vbm$|U?߬I7=.k[!<9(CUm_=cvaPcGJ3Џtm,k(D @ZTgM.Ŭ[w᩿/lh]Y%kJs]&*Cc5% !ړ6qX!tmN-u+wȚߑB©,o[B -9 D#?<'jӶai IˋO+ErJ>L8_t[C ~R&,^sp4LBЬ cZz.e0D믋>Z%iZ(M=]Ez)B ؙdd ~A#}e8D%D")E vb^"!{~fY=~f֙aE:9$bFbaBj6~Kɔ AIUsCPv0wxHfG9aQ;@#q-KR4@#$Ҕ~ %!So>') =PtsуM $z$%Bp|\_잲$rʔ4YIwOxv03"ڻE*vJ|.s=~2z}9~{jc3dc%}~5z %V4 9b [:55B5ij}查WwNO (ġIT/ơYQ3ԇA]b;=D3.PUX;jfˉbn-5TLc x kۊ=\T(l!׌U'.O(&jXC-7eeySH.XKj @"sZ: Ec)0FZ\@A֏iUE#*A.܊)"cs31GC?1@J](XctPly#w@#twₙ>Uhﮖ4nʣP>SCaČvPj<.\Hd*_>Q,_5S nL=l(`gl=w󹙤Q7rZ\Ǣq$ܧ0x46? k%^~aCs@a;zspmhB\?SwkA{;00=?T}e!c\{ڞ&f|hc ~Y#pJ3Yk=Ycygkhtn>l@/^3ӧ$&Fry&%|˅1+h뚵3~4( ϊ5H*Ӝ\\g^P#y.¯{,,V'WJ4_K>bL2PcM&7coL73q6 XKKr-+wN/4]|#+i؜{ thqa+xWj`u0lAGy#@ yz'm@ ΘD˘Ε==jgp-u nA:IF/y`bi.ΥhgLX>ë 7CS$ULfhquPL_m䡄瑪-kקS8+j ]1Hؠ{5GWyg%UFz5hBy==pc9E@ .%.=fI^{sq'ri+,ܯȦ6zk#,_3s{G=? 9 {2cPZcnz,!2jp=q۝$mq53\dINy,!D$LPԘ4.[m! %n6`z -<7.QPH݃]bzdo?]^,UgF\~O|i w\s@]'6 mA[Zm|B0dKZ k]yDpJR9_k;ml8 f̟\8y6:?hmȔ +#寤t1r B ?xUSg~,((B9V0IkC'N9–;[\8I@MEO|vm.sgjY`5T!bd&~ivR?t}Z&UYkYpxyDCDz?–Gًze +_tpҹs&үbU6CgiTlD) Д(z:U~R߇g"zX_|֐惒d im&M0W6A0SZ1^!#p !R @2 yO\e;b&惖i@$ʱd]dd$ z+d_x{jE SV-8 To7fZVl@Ȱ@Eo9 37 iKfMe}쁣4;޹((AlPV|?#J`|0 PoJֲS)Mlp1gl ?cg?^X7s%[>G#; */1`=yC]m[9:?—]x.-F1[Zű_hJD flu&j;tWJ W Bcy󇊁C6C@*pxȿ, Z-y]0Nlr*j Y1QR߷QکɾGO2GԦoWG4;Z"=+=/j~h 'vk6~ kIǿ0թMՈ~?O9=P"ǼPy 1(շ8KWÐ*M4-xl)ىO_F5Y_n2}ρJuj0n@.S ;>Ѽ׻̙_Oe} ;o/up&2Mu*D[CuUzҶXa!U]A4ْie |.ށ4Qg `szX+6B|42n*ۇdRiRu?8}ALZ'uc9ϋ=`+*礻Ta @J|}@ή F-bp۵ J^\޶"rC/R\&A׹ 39 ĨfSĽ3 Pneˍm _gr]?ꏿ ЛBlxtCWOQ?&ܭbqGbAs<- aQwxUa|tJڦT<ԕ:%sR ^4ȣvFSa2 D7!F =%9eX`&J1/PX Kw[O NLe)Yhw&D+3;%ˠ@d?1w[b}m7Ȇ,V)碟Dbnj\X9\t,cN)bO _ۙWOd2D7cKqE);Hm"P EkB<Qc??XW%(x' [K+(Sf_GB[ʋ2SD[z\{%3a^b,BtfJE36Oxt%40og c=:6TM&s7Mgc`lF\[e͂|Y:6dCMeʪDnZ6B)Pdue8ě-P g2 h鱸2L= '*9+g/C}ΘAXu*ÑX~ՙs:UWJm j' g0#8Қg! O%EYSK~R}E◑/0R`)t ٬?xu/a4hG|+9')HeD; #]? ou$f>v*%P܆IdbW`czẽX@&zcMHReӄԽ#.`ZorE8 Q'd/߃;|4)?1fWJUiO|kl؅ =I,rؓ1`BĦt iyo~",Iڥv*'5~QYOGD* ɧGM/^Jj+@3A3w#|^N:+?zԳorR"֊$YQSVsts됯ivY h{ݩߞ* Rg ׸ge]yD^TsQ3QD߇els?Yxp[:B=--R{)0 c)yto&cN#_ISgbRV!%V{@uXcMvXj1ņϭ s:F n,v{p.L6zLs5Ny証 Vs!]:ܔΩkr kNFdS(hS4/D!If\xs?ZXɉ 1*6R[Dыz(jAh9*ԳxBH:hi9:u噐Dl.amoı”0`[3s\)t $&4H$ 84O_Կ|Msysqh4Sa[ ͢ C W'x9T7%qnVFWKwSex?`2I=QtJ ʜҶ'ByB{Mȹ Ch,>)_V1{E c/RxҨrX<9~\MW<;{WbW;u3y)ZڄC n)_g%[ׅGjE^/d,a~>(T- ! ɷcnQ'Ǻ% FwzB_` cj"=;;d2:,?鼚;mOG;re6L֔>~Ti o=&O:N>hS\ CE-YE(/~-?JUa97{ED6AQ^BfDBlp ˤ:g/4Υʼnҹ<rfW팸;K?3&=.vR{2 :? ( cՀF80cwk֯W<¬:G}!Z5wA HjtDvx{5ڛ3X궦<pd#A9Z68́<*JNJ*4|Cŋ/ Ql\|(IC*E;虻vn F]ZxEEˡ;C}g7^`,+@x&0!z|@ ~ܽdjd6ؑ|! #у uN2ϑN L\֣8i?Ud=e2G rxhx֧vYT"Bn`dȷj09k%'Af\Gu-!_<`VB9}YheFjuD,9}AYu*Djw`{КɁGuƓy*+TKIk:C41PU:ҧY?'tnBl 0ȰjiN ͢lZ5Wv7 uC{@dFW5c^b?|.>OQ}]|3=Ih,˺?N`dv [7O6wbuM?2QؙEUQnc+ sS\-"O_J^O DOs ~ckel˧IGmꫝ*9seZgViS&ܢvP^f(k״J_aCNe{`^*I7[4Jz b#%Fʽ e "jp<4< =J+)җJj #{cC[ݴ۶fi ڍZ5 a'*Q JZؕsGdCeN!a u<5U᤬WkbӲz%g@ '#"+<֌;@6{A&{tKsZ/*5Ȥ }|gWa)k3,!)2~Kދs 9FkS\"hT vo_`a0/L&C:Wp/$k†owh~Pq dcBR}  ,UOM_mT2OD K6+=ǵ,dP.?PC>ПF( %R-rHDf(}x6sA }xђfȺtJ3q"Tْb٤LqcWj erZ-42W6*`aO+ [VǜB݇C~2p&~ Y*E9cœߕiD0?hڶ(FPm0uwk`qn"\QP-A-d,(SFB~#YxOAsrxmfߦ'ٰQ`Pd 4$O]Sh#x鏔RȊNgMMFfЅix=v& <6K2@l!쫷UW뗿GUI-oOz7<y俗7ozz1,0Lx}Lo߿|"pcELAxqWʦwe<x M+ⱪșI{pP!j0},VuN.|tT-@zi/B9&5_ 놋lx;M NIq~4e*TDO=t晷\WnN-7 {kZ,_zF'ftJK؂d@'a)^ja勦pp-360PFzޙa[˼vZp7rϾbC3-ceǷ{Z筯|ٿ0@In֪-g8 Qip8eH" F+YttFkB`.BW95V4*F7c{CX8b~Ni# kD7 7]byBr!y-mԡ&v?E GT2}ݷ!pJ!HPu«NnZFBsG:**jž~MMt-`heM/*H.EIJx30~+߅$(O8񔧑)5xT.,OI-^$iA*u'om? G*]ij!x Ce$'%d%"F4$;|J_'sӱ*aG[g4 '4*=*)#XY-~CxI7בZC1"e6ʩUT-3al9'jsuOa78:+1ߘ^}JqK*f@>ӆ=KjTS]{杈1Z PD1&b#+l~y.9NnQ#bZ.v^a ǖ`GȤ,@.`0usI!M=dr\z/'7C|.&|@v=>m<`t\r~ 3g2C6=F+uu^%g6 >`~~9 dƒFY%A\t*GPI?Q5 鰹28Uj+-;c6ֵLxWa9a-GaAN]c嶇֚@ *xj',b`caقR6^%~\̑g+vt2 -I3zU(6W% 5ɬ|23sjMc~E. dol`g5*)Y}FG~hەk7.lHd!6u[GWn{q " wwkCEXW,lz`R']^p Q:r=Sdh'}~.iNaBW܆rq~5k:,*g AHdZVWHCw1xNt髶mtM# s<>{Uy,²0.ؔwfds#\s`_O;*[/W^~UFz$P,oe@lЁwW*y .3s 0לTesR0qj~!]#B1y .^_-;YˣVlRG^q[Ǘ $NTPҜ`;fO" TIsu {#γO>87:yќ:HryeYKfy-r]tKL 4vѦ< ȓ{<(@#& 8aꮥW?m_ L͋U}9Zk"9›}NdUxI:it6Lyf!yH}&F7;!+M'~y1~}ބ^fz&(rSq,M)jQ~Zg]TTɔP}PxٓU(x@G+үԆy5]gi'ѓ0=DԛRJgOM H6F`[ |xLw:8Iؚ"áL% %y=La=@7=tOe+\f5RN_ѓdf|ǖQ4@.J^MQ'X$@=>Sw3=$܎U;0[mOF`&bt<?i;%=oLbǰ?N9 lX{94?G ( K<$ӻO;:ȕ:$fҕZ J"RDAǫAzU:zQ uDF*ؙ3ͽ0$oa($4TNTkXKDva4jK -y4؊P 5{Bɧ3t)0oJXۓ__Dس݆5xC8!xorE:fEs=ĆA|? ^P&\vYbuy4k>adwOXRڮZ)PWTӞ(XyOnD@Ecg֫SPg,ߟ4,b7FڟcxIo1sO;GGS` )-:S=Ij,Q/ lV H[P{7`A-Ȉ芤yԚ)j&/ZHZ7sL+CjLm.aT9>_z~-Jxa}պJ?ylX^#D/@0c ƻN/+n5@ Ezk'qڥWPmpXS/`@9cWiR !']]f"scdHiM;K`3y)J$ByxzYo)$x4*w)elfDɨ ;+Ã9!%Q~ A3r>Ã2<݁h`:YgGvҍZ`._RHE ])gEΪ =7]Xj A_x%U̽mMbp)_;€ >ۉJ^hmArzt_Nݯw-M^As٫޲C Keh|:T0Ĕm%R_GoY $Gsw S$8U>Y5x}a6I$e RFo%|xk}x2Z;{\C"YyRK* aMi2yZ)iD ^1= eA m( R~R$n{C˪گo*bSʢ †Rmΐ;":LN˛zO*lN^`_Y-c::* "NPYyJ~7rm2)}ÍgZpw$Vc3o˖Q㹰4Q񙸪c$0j%`[oz,3U<$f@ˑ$0Vl,LȔ r822y 2mI긅TYB*1^4PVu/%yB0 I0&fw e ڵYOj,I*kuRwr /k=w#0A#(X>Rl6 ݗ%]cXNV9ֈ5s[{Z*kdsړVZ9X0M nT3o~} z8Q ("p= ^j.TYzb&)=[eH$o/1SCk`j)юr*TTg֔B3#T$hfHPzP`GǺsHg_Um߯Jحp8溫UY od,L1+D_.iŸ 'MzS8Vo<2|2P?0FX۞cH%<"AˁX!6>nn\9ة}[vUA?|P8}E>z8v<>  z`iY##;D:8 @/sbhD*q澽A @85Q@o~1@#]&IPWxǝ?y(ͅ.'|, aK1|:?uyfd$jqwR0鿼SEE/z aˉ=H(9t S]dXȶR,ȘW.q\o ^;2D!;) F{*Lx< Axm\͂ [z(%#lץ#3:{]"A#="Q#'7fh[Z:*P5|iotgB}~BEQS^=9(? KĦ/D(]c#jf߇Ry)myeA;7[aZZKg}GA/ gsPā'LH]q.gcBmJ*x;~67@rWА0kotu 뢠4hn%Me{7$c1ԐhU P*3g䛗p`N¸KDf.ƾz.H&ok T"lV"6E),guW`9Eقw}okѺ'#}Ijaމバ!eǠd{ dU!K8©[k^9v @ Ɵ, x||hs=oohPuPWa^ݪ?wֶ_>y$YAɹŨJ(= XTx۫ 5Cg{$'>đy"ګ<RYtvss_43 x';웨QehkT&Lg%̴!(2PIs{#/^%kmae=%1eBfNy8|OkUV%ԲG|hmX.`۪{X 6iEE3ZZ̄=Z+CrBTFؗ /(z񸎱yy!/JWDbUWB[x[w ÖhξL^@u+~".?}coESǒOȝYCaQ',_@}*޻aAZ|9?3fh$*. k}Z)s9eĂZ'ĹTm+zfR5~3ҙpUZNV_ݩHU JaޅRaXKUP4hIpiMZ%rxuyhx.:_Mqa3 <6hQ8y9 AgE ijo)䜓%b dj̊k wb~ **} m2*&!<*&s}[\*dH.hI/um7ةL!ՉOeU@Q1 12f ࿶'CrjN7c*d5cb6 Uyɔnsu˘s6mn}M ;zB2=3n?j)O*DUjg4h h<\W=EcQ+.'x ?V1;lŕ^ll|qZؘP_w m^ pg.#)6ݵw:G!+-T.z=sy(^[\;M"hjFW"}a۬TN!<ӫVb%8qL #p =#<|sZtK۫)]c 3D=aϽ(Pgm1FEx5׷krUUQqL'PyEKv@ghY|c] @c  NKLeL1VΓQ H(ߊxEBk) 7, {ȫͦbq٤Mi9{k^lOk./ar)ʠ+aN&.m ~7,b+)h!f^'C,$n K *7yudHr{NL enҜvK:?ZמY堤sC53MO!xBFܤ]!kV[uLy~lTuu@ҨoXḦg,t%\iAp:JLP\5'|:"ڟ%r`<?h溄XE,gF:ƭ}ueT]e J|8e 8o(/GT3c=eh۱E}A4NK@eRϔ݈#Ór%AV䆵?P$C*gA'6 C(N7e p\s@f#Š4~ >gQXM;ӎr& w U8**=qŹ Pcd~7QPٜ||!"T-|Vg'}v|SJﰌƷCU3L~9FUrt_Mi߅5/#@60 a*6m^j0D]6[Iɟ fcC}ߵxykŬt8<,3$49$Vw~&Sg?fx6'6u.<|)<Ó=ٸ;t(M⚇G:D, I_ośUe j3MS%w+(}KHURhJ/%6?r * ҐEV[,C &Qi, ';-Gj:z{N9J[6m|B8D)]XfdEy<&j⸘:8׵r`j&EЧp6~JlU/ĩ#[y F%_^,QFB ~-N@][\}nno![5,itm',Y=nUtޗd6FnFC(>SU#@ ٽN#~{_q77W_c‚i7=]*NFqy'"4IuhaokM8:fUA5sAnH8 78PP?MxDӶWu~)Ut3Q5,aca c9#Pr6-&CkxeU7fR!k`>SHrU"h "EzɆ~++4D K䍬r'ý?22 н$1 Du}ܞC7,MXsvOr;n8+CNVq.c .wdr!.Zv̯ܶ[Ƶj7~d"la^ƨhP!JWmkKûOx' _ z󽞰u63 WJ0$͉qH3 殭 0Pus֧P(r~/1c)yaҠk&CGo'H PF@X]SMqf<.]gD%cD!:eToidg/^H(3>?Wh'[ 3+{IsZ*̆/YiK 4u9,jFJIr ΝdfThdE|BZP tI#<U$+D=ʹХq@-(sPSmtP&rI} ZSAK[fInV6c?ҪWƤԬ,`%_5yffk$#Q߱SF0*ETV _sHFP(Vy_:qslwU Ϗ9uLH^F׼"odyTOW ң43}Φ-"-ZKԹv0iCG8!ь8eJ&Y+06u BN YADu=P@ `W${gkI43,あgiӼc@?2t7R0abn:b-YϬuzj_u>0QDоv%Ė{b W`2 ug:z1,п8m%D{nyanO\Eq2QkWlD=h`4DW3> "OEO^M32+kji\W |ϫ|8Ð)iYTFFFƠlД_k6?Jjߖcdzڏyng@}%*eohx91b0\$2cb+ol# VQ /"|oaRO$ +V$ PIȄ,Y+STWB 0} les~(q>U` 15ѫ/ol2w3]ih9(u1T ,P-!%EG K- -EC~U/rn}@dir_u`=$-K~D e cp{.liODv5'n1{,TL78ʞd14,GPGvJv65bVl Cvb'w8I$._G<)!hy?W#+h\LLCba5fG<:.YᎠ9]Q)I1^j,s.lOV1GMm6]WoXc1$7qS$o2,?[Xo3 [u=ME--%J=am~&BJ 8Y+k3?6 -:"ap!gThug_jNkg ߍ3 ڣw/D.a@lY-(Y٨Ic3PFË/A#R+F"5Y8s[24,bqyDMٝXhXZ>I?~Xc{F^Gc襩BJ@bfiD{ߋ>$E%P%m#+hG?mn [=)Tdr ]ME%mi"4n AjfΤ%5eW'iW>:Hز: ^Ty4dI‰)w'kYƗҨO!>djQᥲJ,@zWUo?%<⩾=ٛ4/Ӗ8[!z*Ĉ&zz:=>(CCr$]R ŐXlgX-};']GWvh r{/Mv$*t< zKT:JXLS(/)Hlc!d\I=/!'oLi[-f.S=F5f CJgpt,7\q(:{4 g`QEm=vH+"RFBbIvby_F?1ؔ[?Ə7ܼ.E7Ĥ qN B>SvU CGp׃o@'"R[^G遷TkŊB*tP\r]?*%(# M*Ht=FgeVD`8tL+zxIv2Аs*nFD߇p'7sPWtP+Ώ˙GĎsTX v HGN=P|]C<չĿ U'W-IzxkI5`b$٧z#rˠ~&E ` }Aڮ.+fpE/STpFlY+YwhܴRW^ܴt G;OX t<ؼ%xmwBօ@ 5- '6$Ɖ~1uyP섾Eo6|nK-Gfc19<kUϧ,^0J~۱߭wk^ v5;Bh#lB'%JpXUb,1u~E[P;N4/9Hm0BF6aH0S<Kܲt93'.9r9IY]y7XN3WpHTlUjGe5Z)PwTA8#:lk11`ivʃF֑\62\\E&9\l:"TW}ǖ/}iy lxCOp]6WR v39څ 4eTgI_9N#^[刢=$O{ے6)DA1)hJʶy_+ V`~h kbq] YlZ,}=̈́ QT^͏Q/=MqBmI^j{r@Pͺ鑆 `6zs]OOw 2T<tَuPL|tZޅwAf@3LZܾ{L ('DHh)<'3*irG¦z޻Ay?E-I%4 _S *!ȃq] ){3WzLj{(V&I.NR60 >w9Vd==o4:0fAZ%md>mѦb75>/χyoCUTnd`0iYs/xrkEx[8RE9bgr<~=\KܰTn-UrtpLRb!LRŵ$'Ou ^_a5>wL%˃t͡2x69'=H|aGz7di^Tw6:R2"}iL]!aTRwQIddj㰭"ţ  ~ܒ"h%۾,aw3)QQ㚇H܎.6?#h!uky PBtc &~Rrb9.1ؕv&A5!"|cfs89AOJESMt¥I&Wx7I<4dPgDr߂IphZ]_hmc?.u驵U΁FFY0 GubL~K# Þ Ųjf~b|w>BMvF{*Tln$=_uiw?omM1Xw:Y Gy|1Icj3}NguB2}"P2ү#[@w܉D^$:N3=BkVƸÉ8YE 8Qi(g6,^1̑:7FI~؟?<5^.YmD4RE4ܡzH}tO]nl@ ~gFc{ .EJKfwÏ@je|Y}&?vZ,w5pz-sjlΈSI.V;yYn~>Ǥ('LO-0Chdj08 5=stxWzT@f Gy577쨰hBR"+k\C*sB: #j78_UQAV}sJ=kjā8O :3%Bjպ0AVoSM"YIH]JښKՕVl!Q%y,<.#\j`ş%nը= n^O!HcX8a6Q ,w7>Be[4{vof7d.L\*f1fqLp֕PE!+L2C0L[E--;XJ7~p3ԣ7m,Rs фG!I^:qr&ƍ꽯紊٩I)cu/󌰵<'D}1s=-*;w?Ɠ&dҾl "[BE(Rۙ| \2\j= 챂{i".#? U)syo SUG<ّ(HPC `<ºt<`uG/j5=mkOh&9S~<' K=жci9{`d D+>%֌4`UT޽bI]>$?rTITC!eyR[h/DF=Oj=E6AÃFj!xpFIWrOF u͞#Mezנ|>wJA5x$]e#jߗuF"A繖HMT:UNS gKv7Lo)Kӏm{f  o'ǼL\s)=JW֩]*t C?Vn s·M3t{9KNP.5#";9 x$k<wrAV(xNf$ ?o y|xdcgPK=? C{ S} ՊC5W T-_<`>RirEel?F9Jo"Dz9becpt|P"Tm@)m8 JB~?6q*8N+'6ЉJU6vÔp`zc\$T._hf Wk} s'42+[ܑ1k;euR6<"i!$c:c]qtY6**$/>hK+a2*AtQvGdCګŋ x)PҾ4P[{>A=vM¡cB$CuHX׳`f/ގGr"h)@+>Mj~hazj/^rMfFW4A)s|q: QyZȮBcQP7g0tRѝHN!8ph/n[!o`o?)q|͔܆oK #xJ<]b^GŵWt9 u+oLn0LWudӈEĭv-sЏnHTNٗD@LkVe"9ؓ}eiWSGo88>kNwms{F,uYO+HԒ?b N_ɬ^ yy$6ƇW6YŅ՚DSJ=&m硊4mCz~55׶̬m o;sXX`Ln|!fXwSf~ RL"N,gȻv AB;5 _g6V|aEHp{HbxljCbaE1~Dʥw7\Xö; [AL酙P@V%lJ=?Y[.ɥ16&O"0e@DĦ:Әq>!C:u}4Xrfѣn.~ sS}JZyEf:~Q=Oj%NysS%{#|@BF*rV#8})~Ӷ'!݂E#`̛\jDB+žֵY% DzH'Xf~As.~ _3?ƯAR=u9)<_j11$aN$q $q..^3wXUj1[`xVgh!)R,V_Z ԛ}R>QliKiBd 9Yh)<8RX/_;Ev;_LKPTyҺ@(az` EͫGҧ/Ӭ|Vv~r+- fStN/ԥːdfZa=y#nV x`4SSdkYHtb>9v{O>⠷'`-HCS"\jQƇ XޏKNKo}O ![)t]Ti;Y)KƧ:':zKg븐x"J R5|Dk#`f<\h~Nj!ԫ]ދh660ϒ̶(]0.FGfx`xCZ]XKw mQBHlJtOnK$VR3YԱmxvU}Ћ Ҹr"= ،Rs=Z,A2=e.CeUڿV/L{Z.d“nͬxڶb#>˜]jլTIe;[9V$1*nbV$nz>3C9ʁsMܭȱZA<5BmIf¼hQЪF3 "OXш,T$zP6fZU5?_*26>)ԒI”VX. AyBHo9%]C4M߸\Dj54QPLU)4ޘ1F^A%WypA_) ĈT}B.e9~DCeY !yF[*M -5mײ(+FYb-]ab~~.!(C_y 5g/@ȺuǯDc&!Lқ.HD4ƣ\ *RwEd5~6SisH8pi^ r$gɸpOʩŸ4٘Z`pȁ>BӝRe V;q(df$@jCW+JH횰s}y5(ojNtkUy(^Du?˟@~XvÌuv窫Qi.7BWv/4Zn"f"@&pcAlALIB°}yl/\z00!ZPgjS 8Zu<{7 YD^g]Y!_=a/ &;j[sh_6Ly<奍ylf*g^J=ݓUR}$!"f`x}9!Y2T K[yv4b)kq+sMnZ`~ڵ:v.Dad"QD,S{$vu.Π%4T@Du\?8̶G莵njfAyg4WFX>}|PƄɖ,M׃`"dB1vR/hl9YeeBװU=ӟBH׍x0ii2 ,<^tb0luT~xQnn\k W)7a9bAY7#ɺ\;վx&ɱ@_J'o S$J~c7% 0pqA6Mv% oncxntKեl -}zZcn{faX*Kۏ 5ΑF٧ݏ(߻FB]ߧA;_g 󗷇+ߧɏw&ߋKߏ͵M6 l77j'/3*?} %[*}>h'6:[N.[*+|?t'|>:_u`d^̜cpI.:{NO>z:4@ʳOq Q;|y$l v*vsݶ5z_,~?,rPTgU=?sfg[]T/a]C9# K'2m5[Ov'~gcKG“^MA;[BUilH)Z<6 ߇d[)"h k[͔Ƙ9/{15 y1wxT =Z{] qtl"ps/ҭ"2;ڣb13hzWwMQ=Zo#'3weA: _^,XjMa$P<e0$;>&|_pI]zu=P<8y;8f[ R:٩qkb솂^םjAig ۉ3ܷ#R|ZJ`BSsªݕpU"8h9+n ύP2t GL+=[j~TC _BuawzKb5̧7Ϟ|ҁ;0%҂,`Gwq6YFbm%Dߤ-NK9kbg{Kbn^| [1 Bu;T$|H@8gke/li6+b ʞwR!Ýjos2l|X@HYH5S{&6< 9 e249k0Þ9mM.Vh3gއGPe/KkGpd?_3O *Y,=4s{ܨEc˦nJ{ϕbk~M QүZ.9#uU20+_#7S-V!tf/ybsϻoF 1tȷcdn$ ŌHr-ovA'})[r'6),Fom9b~SPHlS+Su2-Ϋ똌(Pk^s n4 20,8#y1?*:^aP%uՈD`Ӫ[:IEᣇ z*i*P]|bj_FF YA=HwN݌҈=N49:㒶SMSE z0ڹh:+ 5G>N콅u?>Gq?xQQ=U4$uzsGK"֙ )idaO&Hdѩ{Bi:gqmM`קrYL &H&r%(m,ΙtuY;F$?2g\T?ihJ5UYoi_~HE۸P[$` ;ld1'B._myi*8u!88~ %b57 -RQJPduP=l5bujc1bԐ*VLBۆn(p?%*YF9e䨝 d8JjAԜsL}h{!Ȧs\PƐXɴLP4ɪb2(XX)zErs7Z^J29an޴J]3 u¿ l4LPK36̯OI`DD$&פ=HI*U/$<ޜԸDcwCiCko"6mcrLd@-uY  ;qpG6’P9\?˽o&1h) sɫH\x{?Z ɑ (=QLp@y܂ >IN.g>Pcط>F'-XK"YID\AF_LCZn e&;hP2-WSvp771rB1%Oejۓ/1b3l"g7̏=S;抳f/3O`f4MCm(vW3\a‡6b_s73iDS"+h))1+ ] @r4 vաM'яw :]֣XƟ` ӜcQIڰd{3#_?yir8{(VSx_/2#I9_Y7;@{ ݊ mFl~?{E1Za;~cD܂2ԉ5p A.9Ih/lhT$b^Y˷;g_+kOkw;݌C=a*o+Fd|`@6aKXWx8\wnQ#({Z}Zlp8҄qi@iFMA, OM:D9aȠZJd8hG/]hJp`DZU:arX#@w7X|;|ݠ ?S!]OcjƏzhxi%(2t]QUs!mՔ/(zp5YXWu[άV&v{G;fa.2S]\"(|'gc<P&kA| /O;&"PpVߣxexxTh<♞ԯ# še}T6ejcb~be/@[Zys=ÚFAr~:WoW+p.{̦l7vHM EГ: *_wnCwX 9Y+mkgDJQ ^Av|}|FImU5|!\CXz9`c`)"Bn7 Luk{xZ:)EpD⊁el>BAŷTT2qɥ&=xT6cP=J'Mlt9O{_E/=C'r,2l4H؝}jke뷹I k"/J!f=)gP?VU+u~FyƓyv)~\SH{//P}Nhe]#&IDTΗ:Ι*\)ee\Ġ|ocMl {ޯˏۛD>i'fO`d)T)I_n^{҉dR!mlr3J3->.7!I\Sؠʆ ߌp1utϤen wNRn#^xdw/RFݺxX*?&lʙUAYyjr(hmݭ&ZS0❾Vr8]= t=Vp&c2v6nmmv]m۶m{kmo][w{ӭkkf6tG|Mq" -eE78H )&tlU Z:MW'v ;ŎgKuv:C>V*uvJ7B:jdpxg=b2-ot"H>mă:E:>lHZi+XiG& f>|k3-/=(g^sU>ߵ! Q7{+{ױKhWP*>H|.V=` MB5ɻI3OS"q[@* nt|zeA7Ռ&G 4fE'*3}1`ʍtJ;L1<؛v;,yNcS0 jsƨlfSO鿕:(6g0:Fox:<Kk >GX7fQzMUC U)؛쎰f?+k:ˋa)m !ZFuss*Vh@}gExL,lK'i?f9_s4yR44+k!cX5k}fp?hy̋Z@[mi`ldt=IޖX]{ӽt1() x); sphE_ZRu}E;W⥕>A먿l?`LYEDY881i*Q?B m!j]QUa˝-e"*uPzpswI0RB&} a0 'ik}%;<| dr,LUBl[rxہ#FJD.< W5t獛-0p:Z%;U}/LuKzFB[p,GHgoOmGka?sVozn.M)'3KpC:7qKjJ3CZ>_«}4ӸS-Sf(=$K':0 *;FNhЋ^]zWҫFHڈ-'%SƵZ3 V0oY[e&ZVpOb[wwƒ5S4t8=܃S&epVǃ+qZ6ST,fb|zl;wmrV\õoix93jwÎAu] n{]gQscLȠK/f㒗A3WP%Zo Yp _`CbNn=#ZVWZYXDԮ>8 1a?)6uѽ#q~V계(t5ַNI/ɐAo܇% 3~mb }9#]ueWFطp?  BŚSM "{nO*2rbDǀ0qF&؎)]ucH` 걀ۓ+[<%[MOp{G'B ]Oz#&WPø#x?00ňmFYഫvCe=L)nR<8 ļ|hwqaLϸA`jD X񸔐|Lnv|m^׻xż<Ԃ]Ty-~'(~i+o%{~٪Rf݌koO41 m?S_*yk]dE<_]PwISaσ|-jk0HxXs> sP]եͣ[8 jVͭ([_nkJy8'O)}LzmLLt=e*!T/|!j5UK ґbW>1:w^ę_U'SAxNԳ'xA,ӘwHR9Ӽ}$[/"rCGW15&ۏ$9eᨌJǥvrgn1(-ldGDc4>V ld8pKCRzJgmk} aʊGJ/Cȹ5TIOfԄk2'\g[o"*}Lo$v>%`-p|,ǽHl%Rs h$%8d`4SM2ne}/GX"D෈Z#%5FRfw(Rls2h,DXLO C)u`} FҲ.IjNY{ۙj4$) +0:=(q*#H6%^jnz#zߞL֚d >b[K!}f7k ԄR+D]z~EcGcӦhaeu&j%] NyTWfO`IJa֘Uę=A2xP6-tK:='ȉ-DXm(g+m7rOKԈ_3,h|.hLf wVz0 X[B>R*Ŧ7 k/ѥv> |}W5JǮXwk'd#.&xi/D -߶4Q_tHj #hjfDS*q4☖q-8ufn6К#\L|݆3= l;֍]D-ߥW bUa,Ubҽ̏v$EvV'C_R" U_2H7>56 ԙ؊Mc:ч+oeAԭh& ,?Lgi}*6`CFDNklXU|S͔{=HBt{ZA]Fdzw,KF=MrAT1I-C1w}Qq·1Ēw^KFܥƮk! CG*b"+1f}5wJBqQD:\BEfgg'&^qѩ6ڲQQ#}f?m?t|)ς>PJW%?3Lw;Olo"C6MY)r &mNbRRfJ Xi{=xeg q]?Tk ;uy}7 ֜sj`#߰vuPx5*ӧuN.g>oe|r3 Bq`p9Hb4pp iۇSBs:09U#*_Qآe,6܁\qc?µ @FLV|rZS*q:(͟p5`&#.V]xO1{]#%*+ Pi,K]LYŽ{ف'h@酷 Ƶ |c.O`8.2b.GO^I{NuǗUw1\ٰi=%`Kx൹'йwl ]jҥVgk\0Zo^ ~]կZ49\1t6|rl%F')DK_`nlѢ2z %+ke8)5N+HʦKH  2żhbܜ_L3 ~eà)޲dh0  )nddr=&/JbGeKY#GEJ (N\,HAUr 1S A_`˨,_'( hZPtuᐮn:U(A+JGP5Z{)g?Q@R`W8*⤸òܨYNݠ.kWoyiq%O.iA4v9X2X3:iwiNU2O[c_@zgY% 0젩i4£ڼ# Ύ +p&jE@|B$").g9>zd"Es[C?Cfm:E}Rj~#'m\͖#J@7R.(rh% 1)`2iåy5rǥ2yJ&(s:+ x,pr Vɇ9 }0=h+\Eti(K-2g?R :q[v-'@%M T@s^Dك{ WTwuz@q|\e /坂#{9V gE(Dn,IBDn `+tO/JH Iٝ~".r@Ol.7->/PƃE{5{Ңy[u5T6yRڣxEB2P|a&H-V05 ^lT*e*D3SM*. !]Ll;}YM Suc`,7.|k9m&3[UHkR> JF4N-V'ǿb eL[׶R5g8 8f,PcWVPU 6ճ"{]H[(ߕ>8\I'?pZPHŏp?r ⬵ARq@.R)7 aa֖4,,mq8 ߟX,2o4@͸ 9o:[IH3@n#g{' \r|#siX9\ >UJ̀{T6F[p#d_,&&=e?t'xnˏw1䯠SR,!#9EX, 养읕WiI dj {hEv3h1<4|; magۮ'Qx8%3S6a+el +W1#z f LUX%rӷLD*̝2n;.UW1<&/Gw>*>AQpؽYzあ:v$]fdA a:h~n$Ǎ#GWF=T8d=*u @Ơ|ݣ.YKc0/As"سL *ʵyCډIޡ'ɜkyYh_A0uw@$FԲI5-_꓄q7jC>dXVK L)R>׊>>=#Qt bhr;_ah_RӁlSDQG &p_H[ @ <5}6O Ow4k[Ԯ9LՎEh|tnW1S8Rey] )=yf?g ΉoUȎi^a5y}')34$WUc6B?ƸdX! >ٚرk+*bmrp+if;-/_nL=?r D׿=.Q3|a;fL^8oʉZ#In>vGa!oڷ MɅ&u\`+7u~) atX)L#+z8v*Wz@Z#GU]X%Qps\ OXPwvQ9./Pb;!*E<$*)re>m3yTr?Uan}RW (_DA o.n61(0?ҨIײA8W*1x_u,E @37[; 4$h<<'xzюT%muUtL~zL7g!X hyzr!/$ieU¢G'xo`*;|$*kME bPaO9%~yEyQVgQAM|%4QcykI'js+N :&5+[o3a0JСU{qWz^CJe.@x=h]gl_<vW& J)DGqonHL3|0Ҙg&nA2~IqOn rxN E͋ FaD3M;twcHHV3COE`b\YaՖ$U G1R跋:ql!Y }5)H*c*LQ#xG%8R.Qs ;c4.]{_)$ӭQnlFOVm!j#t]3Lg p"WKKpOyBMt4b@jK6R͙(KjX9F,%|ڇ:f^(3ζM~V) h n3h2MeW@z`<@TtnjI!p6&B:XյNnm#~j)u(sw4{Č3`5i*,~*E~ V ~p<`'=겂BFr%A@es$d NNhwwXݺ6 dL?HJ2b/ɣ(>_v..kт>PgLtї工˒F[Cw%`^ Lo0&O~x L_ ͥ0ܙF=Ωjw[J\ X[KYUwqQ8%)@*?__r 'TZ['F9f ߔ/o-*,ƨV5wI2y`"˵d?An$jgb\~F\3Mq;_߻A3nS}bATb}W z ̂d(5'7%-9xwZ)bcf4 X"tmpJ">jfs½b׸75ڂP!|eI!Aw%OFăCzE9CӱWš g]BW*e ӠtHjDA%#/?濛cFF,6Dw ϿǮ nD[܃{[!E^=c{˿`>*qڎ7yBWF=bW7ސGX*_ly{, }>__y\}9:> ݚhFtSJ.V'3/B.р1Z5~8wJ1<<oǃ~Ќ4:oPM +c^du.lgƼGi3@<ɫEN0Iʍ4gB:>8W'߸ܺq|HG, Tp) `՗n[K4Ii=+XjN"EPvJ΃p ~!;&tr[t3YӴQ а8L'\mQVfOnxom|d3e,p`+*)P';XRY82(2}nUߐ3ٓBN56EYky3#ҋ>}\*U'x{d䮜|:6Ts0ؗ汆ACι6 FuKW '$ Ph:S̰7 ps ư%+vSE^#wQ h)N)p;zAYC/CIiGG }sV_{ьZ#>?Rz')l yvd2e ̳I Z N룺vfv7 ۄ|/7ȕ9yy".`\ql1't.`L1OW ڱ*df¥a[ vsTIsC~bҺpvo+VjP:{x}w_( (44;nrSC^ujYHbW9lH;ՈD*A0i%I{ 䃲R|;;' =A~|lD? !0Fڪ #"8}$ϳe_0pNiac7RWP;)Qcfۣ4DWi^5T2}!;B,qpAB!8P ӰWqĬ SO<y:mcs ܵEn-,_b,@jUX͒^<Ϙ"Q9 6Ta fG# f)#e_8~Ztѽ* tEm׍uU#cl}PUB;h'lm[2EXLZT,~,ϴ_:怛rK>$@@fdt+^D(O=`sTMQj\gť2gG>#_c幋O"&+bʁ36GEW""0G XBp]ADZ^婯}`K6s@ZVJ- Dg@L,DtEQ:LCi`s=ᶋi_x2A#!˄Ѽ.ϑ>N- -l?p6? iQ4~=OӾSTB dw4:Dj}aoK nD/񵀋[SGӌ~V[6ȨnOu'-F6 !lƧj0XpˣܱP&=đ3$<³ҼO^,V7qC!o=!wܤ#-KoX@FdgG"=ך]iƾqFߤBK§sB\sYWP^ٯEM)= ץƕ+A-z,%k]߮cb>I/F$vOؼRDޖ d&" 9c se=)?gxZ178Җtv0{ Lqn$I#FhnDp~V)|&%֬טQ&2C|Σ uNduj^g kw‑M567$PjGcf88m@[_s}h92|D,ׄsj4SYF+{"C6i1P9h ` b\OamۧB u>Ck3M+%իhĕŭ nV},gX9Ýa&+Z7eW-+E.$7F {}'vtVs"1:?WP;-Hpiz!Ζ(/\}`(W? T%̎p EvvQO P "*4oχy[/7X農})*GR8J $+A U"{x7DWZ$f.xݛM>[_=-RR=UNt/ᱸn-W: ቺLtB!Zn$Gpҿ78|<3=8D/o1d6 \kyY1~yᶵx=6=/=4K/iG7YgQu޻skh۝;Yz <ײ;#Wɗ,w'=OWD--q/}ˠxYvx"ub iG`*ot\峋R$z|SZ?8#9~Ge-iٯL:.15>,J;5->j3uM^{“92+gߖJGVøCvh 9c{2VUU oafz緢OE wEek?7!pE`/(a3ԆYV.* t qMVQWb^##@Y== Pifޢ/&]mj_5 ?X9}! L3Hrc low2)A;;쳕x f?ᦄFWo[4#{la|(h[΁{};JTMVMβanfmiȈ-~{\w%&pp/Ma2$D|sH[])S:|yl{/st{- OmxWT255p^.mDrՕd"[nb:3ow y݀c{?>WVz:yVx߇9t~>GG߶ Uc|13Nc)vrI z M/Uan>'ȅKl(f*GjaTyr><_elly.mA-ӋV(C=o&m,w?ǁVgo%YHa!az@8RMaw݅`z@5#54kzgEjh iLN/%ZT;eɔ+6'F|IfhuGef}w]t#Q3pR$WoaK$V YWmS̽֊`V1 ki|zȁ$z9+{jnҮcg`<XLj'H%{$s^i(ӰSd>Wo.wWe/L4$JWO͝2Vِ?Ǥ:=ĹgS35mP ɋ OVQƾfoR2 *i+TLyj6_I+׽b5ªA?'@l4ɰ9'?OryL^ų==>ТK?f;-=j:A_إO4݂Y{AGs԰6+<"TMGG@Т[}rlyk3A9/-"I{qrd%m:Ƹ%%,#3ʜB$q+M!ՙ?bP1eeN7߿GFH3kouOq}1 U~Z-G-E$#@f?i*lrͼȘ<<؊ޢg~]u JoC"uRgCz0fq)|]RzIi>2_| M#Af'zH싘3}pRp>Ս3N,}_-b`ZݸέZ23nŹwy9ے) V<$/s{0vĠ=p&/hf-ɋAopvxLș9F0ZЌuƙhK'aq~(D\o9% fY\( aJn)Mi,L'5M?Kx$* 9PF;\N{8$@@&bAœ4/Ɛ)ጵ3Pƥa8/Un&CX}텏i7Nd'B[2 OgmM;>z]zX;Rp ^ϯd6l-(6]/^ݹq<>N揤`C+H1kPI7dkrhR ~&pÿEf1wf# jxRbF3>ebKMgHY0\˷m ȼ>u`E0Ns]Q/p nXp1uLpzХ\(S刎ΦZk$HfNX6`?I]]5-e=w! %Zz8D5q2;u?J|;%mOċnFzɳ4%AMba ezy;%?YWBm]g71gȎܪzeGq!WپTTX\Sxita>۶m:6yڜSNۧ2Y[Asȫy5W|Q߯ 鿣0l8\G 5vH]/9&X\|mk^aXZ/jz6^"sŏ3QF:a\d@dm17 j_]UjqkG؜SLfOf>Ag)- f $Ʈ1֢OcK,ͪuܙ2<סX!x"0c ~I_^HVI;#$DI/㚯ڵ.BARsڼT>WX >5tegKc t6_[ZM\;}V @?UBo^a ,c_Nl mfZFDV]!ǣ9Cġx^;j[AW+,Rh9 Dž4*e~`9JZ4w)9\7.(m[tf|>:dZWAsB70@^$K$3kN3 [!?DUhqru0pb])I_?F%ˋ %pE :<-{\Z$i7ų?Gy>{"<#P'O zTG{z\4#lpS/~R*Knc iDfnM[>KM1$X[_pW)=)`T+/}-.u4$0]E;˙IRdY.@\b7NJ(zX\!4E. IjqXƅq͉qMz^1(R)דʬ_mRwfrb2Gn:7uX?W=mrF䇻u= dzpZ^rNǬJy@SKa+u^Us>k,ug-Q9*#g*t4/Kg]+C|NdڴS$(a\c%8{\ jhKj15'sKU=5Wdi]F%9rHAKM}Ȅ 2‘`Xz$IFsz$QK1!+"5xS9:(,ʨ82-c9llN&tb`S*ܺpCݗ{[6dkCxD+IVuyfQ$Z5*^բK9[8*Y5qF*CFRw5ӎv#Μ/ _‽BBg9;$得' 0bbʘm\rΑ͆xE3f.AjM:5T҈`WZ(\)7e $x558O@}Hd<ktI`iڝ}5;@l~bȴBS̥!ݕuk}=.AʵtX;!rǦ Նھ|JVi5>E_^ h%B#bS/ѣ3Ke]90gACL_Dacڮ LC[SRW_+7/z? ջ?OA{а݀}(u5͝[+ܜqróc]IMߟ~vg!LD,oc!rkN~eaт}\kJxUe:L1ً˒kVl'urJi6_Ϯ}JU,lc֧@?Tvz3 lV,hyAn~KGSH.A i OwN_It hrՕ 'K~OϮ0We]lOE60 ?O} 1rKWKiE+3hG$oK [-$oe Mr =w$]㺭9Ù&ĵV-bUE.3Һ vM*i#vFmdu7CuD7߄v#)*E2E1Q<-<7gvK` D@M99YAxAIC81OǞJ{փ'vJW&_ؒ!0JNHӵ^F[G+32>GP,hd‹tLc]:]8HuO~jBmnp ͸xa05'@FܷBBh6gyJFBsvz-c\7k<󯟓4}zh/"_"?+yxmr3aRcؘV%)Q?NyA^gJ.cKz͖5DMwaT#}cj&ڞ}^} >" >A*Q*jYj Հ Гؘ T&/ar|-kğ偅}f IvE -7C6lX-1YpDM6SM8[<ݤڿŷRf4>Ђ]+PIX,efb]Rfe/Z^\܎YgNQ|)U ֹ|"9C%谭t_8(%!d+59jp\ 訆˸;P)@ϓ ZE<\ȽX\s-K8 #m.[mZdw #O+i\mY%e~CҎyb_)6jŚWQM8,F D_k#%\l ߫8τ,5odʐd?E+{v:-{ Fn`ٽD~ɻB۳@?,GQl_g'7Ws& r\_B~v-^]/!QDǑ#kwYrGԤ!h+6׏lՂxZ6VCgfjbE&19e&mim3Y7n\|zBF$5}rڷt57HQQ͔`I@/s7d2`91m`d+ş^g8-2'D8{DYёGhڴ:r9t6V (1R LwK#*7~<Rp=^4dVYe,(tVx\{@3yA|ׄ(a}e /zqi{TW˟2 #pqH9qu}w6UFNE"{_)ϭuR;٬{co :*n`\:Q)e7柒ZH=kٗ9$loa>BʚBXpr)>{Tx^h<L;-r Q`f -UI8Mpv; T}BCS+!FB'W]BEw??=(OvM:/|ZSM?ָT3dL3IDdssh$Ϟضn >_3AëA>M)D@4tK[_r[WuEGu_ hgu:<]?| rk᳐KH`p7vEAGp5tU/? yJU3T̺}lQr yEZIJ Mͺ׻t2rvntQh%Ŏnd$:c,~&qE9+Qٹ/U-v|ދ0ڞ[gV}UɦW4.לЁx|K XKIC֑f͵&iFAjYb~hoApUƁl[Nc1?mU=e\>HH"/Ohht$_1{A'x` Bv!G+L}T@[7Nz@+~X;1)G J ~BO}_E}1S{ɐ jIw=&Ƴ|\H9O {|HQA[e׹˪pPڿZ^yh칐,:?뇫l.rhl>+KY_jj]5]]SI.2$IXPr5,,5&6mV'  Ew4FA8N#r]ar!w]RB7^6ϴ|g(9\P`.ϋVw6[v0!^S0W`^{6E=6f|x̓ɖģ]TftJg"Wtcgv 9!Ʒ6$|[tJ1mkuP_\NZ1NN1n^}iJ|7h(3SUN]K'r6{ `?XD\qMjK'Kk@%S4\,%=]8>b"1lԈ5=!Ϗ@'v`'|g/[ J]y;Œ"!#I%c qDTP/c˜@XhgZ՚`j[XFY <@䑞\rӍM쫄#i Ѓ Մ \rԬ`!<帓ɛf_OSщ+q!ȑ{)EG' %-(ˠ2kAԎd )n\1KHyWg_t_KŬf6{ؤ]jR /GfZa;k6*ü^uE1eA`gXѫ\PAC]e;?![noX]^m@zXܤJ/McB ,ܰ ϓ -|A&~*c 2/4Ci^\X譴VE ob' .˧S}T7? Q5}G Ȍ^nr:/*k25"G*7\Jڞ;A墸cܕ☝A Pd#TzQcx#L1Jz/k LכSCW^$ŵZ}F-r8kAl :dxzj#6p\'ޱ644^4R6ݝZK:'ͼ |΃C"7焞ؑx.NO9 % ً;¡>r>fH xZ1n$ݳe}KZu0fE&O>;$} oMa}vlId~aNbgӽMP1,9RĹĀ[x3{_ĵOrDP%]!nAC<"@̸Eoރ,ėдCޏkM!,nVnF۠i>ۏ,:{Q7F+ǰTmNƆybKeq}u?jP;U *|Սn}A`tRGf7Ag!8?5h9''MD>,Ѫ#-ej8(y"}2j|## @\:$q˸Q"WqC{GOL3QX\y-pö:M%ݰ@Ek$f2JqiiYVVdJ [3 ޫF,C62[*9v$ʆlgDtMm"TaOJS\6ञ_DlK]qe qFO3ң#+0n;kd XL,жi]WID`<|RNH.ZetVuG9s^`x.^OT +Kطu뿢j߬հeyTf5hPz1~ (D3AٽP^K n \RB{L(D|R~Vcv_bCot0V`ݑ yO$E($7oԥqU(ȳPDh.9R ı:C鲙pK4!T|5Dͭ 2D))QC7ˮƋ(0=5?7 A66}ü.A&Ђ[t@ ȩ)ĶGdHZDLxLA|xALC$ZZiǚOGw >*O3$wxY`JއcW댍.;v? :'rN)2VѰ/uZ +sø7Wt*,ǨV:N@_댨+w6tm( bRk}3rG?P`u\Cx!泙Z 73K :*W!t6-ם'tYMuh-w}tF#YphNy;^m|OpCEE>=ɲh'5+M Ar`Gbbnm787g[TV_QGzzF Ku0?(f4Ybv'S;4s"Vg^r7!"jBNo%W?8JDm"',]f <.R(׌얦JUƼ/TvzǓؽhanaL9SLfjkHcw:I!C Ab.8̺~Vη+dnq Qy03g5T%'# 4yNW,x ܙ5SH7m;cBɕM5G+\򇏜lxjT$PtyQ M|Rqos[[B.,\&hnxVRṮ2;1EЛr|I#0>TgUQ99#'IKjkA*:hD)=񧧥 sjgrǵ|!rܸϖ&ixHF= Ģ"topTʖb^SM5|e|;3V>(k I*OQ̷UbCye\eJӍtsnALd}s,Mn YzZfb ?`2o/=/6Tc6 0=[X3Ru-:5$FQTMHl@]u.zbv )`.I;Le(_~mvXƎ3r*yS޿xK53/{)U''гѶ J)[2`xJ^]`g0a K¬u_,K<l|{ɱ y#g!ʘR0#@0E\I]lo/ 0ٓMd7Oihwvl?s,i#2pwRU{dcj՘@>eXb<[#\];~jX z!, 꾓ƱN4#)>L7x@d{~ĺ=BKMNSǞ7в.}ѡiPӴNPe_-Ap.P[B5v4G8d-Xg՝#\J>1)g MBͧFn8[58t3 *D>& {GD4+lM?JboTgQ G{@Nat懆5bX(eY1,xeQ)ʦ3}d1XF`T44;j{+݅bk0 jZ|In7 #ȊH8T-a36+yuhP&߯ʇdU*FXM.!(Hi<1 ?t8?ԨsP0~yY6I9QlXJګHTxu2csq֭HӜJz߰*-% 4+#ܪG6%EVXݰDrl4K"< J w#E OB6$_SGn0%bdΆE-vIwJޕ}l  ѴȔ+<]XT D5 tmC_j)$Ǜ*XA&jӤ#pyHpgpӶG\cIg7aG z'FvtCgǢhr|#akEXas0~a M!|tZaǬIk[ĠW6#swj/ sԑblם+BD| ;݄Ӟm;]!zBhvdzԶ#YS%81Sɰ&Ajnv:P^!v\]H1v-~Uᓽޱ&ݐUO4Aҹ쌇-ji ӝNGmF6@Dɷ9 ;lj5 7`ߕNՂuLR𫋺^hj!( z--H$+cr@~[ʵ>/Mi`&TE\be S粓h֏֛MHA/\77$6TSWjm)iT/y@݅N [kI;潸6 z3(BCI0gS ;o73գ2j>(:*8tg4ư&$˙e$)=jؿS_;L5€6%CzzBFXS&/ e%gA`C $fK;TWf7#q#Npm`v鋸5pqJo-xumT7ܧ%(琽|2_,u}Q2k{(ˬU(rml%-74Gs_i`#mT_f'Ѕ yDOհMF#x z͡dz_4a .J=@_d,P݃ViO*Ah__YֿV{ݯEϏ$V'q3P*#  [Џȑր=xzhKWшkA6[.Jyh%ķzH`#9_ HKi.'K\ȫMJQl@rMzjU"N Deoq"}bfgoQ,T16G ro[Y+D䛃̾Y⢘FfZ 3 <M^ov_ >bDʞ Xi5B0,,acBӊ-@GˋX瀁MMN ݔO@˃nSK}^O0Z5UmA6+4U%s(DZ}+<syB# D&?ۏPWuW,*kLaTE$27"*|,SDS͉(\Aq<І6 ͶowW%68U3a;g]Q_ι4?(KBceqK .'?/GNʂbD%P6 }wtrdӻh+1nև4pzPJ3SGZU݊䙩pƇ[!j:`Z#S`oDBFX{&Bqn4M -}FD`b|WIԈ"Ņ0/6>W]Dh`xpƌ* ٦M瓀vM>?Id8ˢ?lM=*b²W`۸5@,D:H7@,/"L%rAFr>sPu~eefph] ͋P_{pwm=D4JC1לDثe%ݬqfV b@/' E8 0n !""RiOC:ѿ}8ȓ=/$ϿH)c}(u51\bV)cM1+}ߵ2#g^x  !].FydZSR&ڹ V'>57\L"tg1׹f2CS㣫q˽LXdCZCֵ]s=8-]"+{c,v6X9nJJʡC?뮅o])4ra>W%Ŋ*EBT `u&R/$*a@v سB@16rKf~15,@ЇiM0mGVB+<67Ⳕ™$(q`YqJJN_Aڝ{i\ |izr!0r3qNG;$rex)-v$3y VQ<_ί*qd&TZ/"h׶pR.LamwLm ÕWyy㚣)̧1rpU+"7n® ӖurEt.-;]kͷ,߻-.B .Ń?ϴr DsB3'Zۋ׌`E*'F %Ph\p^שּׁqn125uqN|MU:tR5W)gl(jR9xd.!ghfUeċvpLקd<}Jz.C(kװ-|ușu~ӃlR K)쳜2Fc\v3yJɇ`C)~Gr/+`iKJ6sjʶVD o+\f]&Q_$T2;`O$A Av)d!/K^ArAnvkTgtMn=+ۃɖ\;H;^:#G6gԖ?4*H]j7\ч 0O脩{_E)6QʡwT~sl0ޔɷmh!|׶,sE-(2P4r =I0h{o㛇K@~*뾺A> ; Fsxڗ^:XX,>YPg#NЃLTz8~-KkWgN#N )qTՑS9xؼd8|+S/9 / Rك#/WK"HP]qRTBJ'9.k a0f3 R' XniΈzrЙ@P^l78Kl qaxOFs֬ Zc;? PWn&n;/;%r"ca3jjJIqiRDYf0)1tDvCP |u&6~H/\t<*/ҔXLp3^Ł1s W/qXnx^;̳7{Cydr; `_4W Zu3*wO^lmX߱TԞJ:(E펶"ud^i6S''Es:h?1?jx5ռoRK9Dm3p2Vn؝i9LeBJ- |C 3p4@Do3<~)gfFM)Ϧ:=>Wa~7 ¹Y[wXru#z'}CʜJlFIzs$e~M1lg&@.z'VPAjVݾHB'Q}o3\^6ô WW}X Oа{q= &t[V9F|vBVqxmH,gbU0'{#;k|;?6EfEiWT_S416Y۸,P2\.l|S>s:`,%k"5xwrvDN2l>\8!dp 7HY!BH4K$?yPBF'<٣2<=M(ө @{E؊{Gcib3@vӓ>ӆ2ʟm瀎Z::Eyi iXB~ MF[qVPfV$ѰWf)ތt'SKm̸ Ai},dqߒ"d3;Ϻ 5|3xhSjy^V@%?n+f+.q N~.U_|2|hsMGH?M-U{{谌T>bLUh&Zҧ<{dVԁVq֢~Oiw]lv; \AhEO惺M4c4L!`&2'N &v축o@iߊBEv"hmbp2I׽r(ù쐰 6PκQcZ| ، |v`>0@EFȟNi`E%cVp/DήF#1Tj.{҂Ƕ<[UIۭkc1~{uAk?:XWɮV4 OY?r?(w|L렮"6 Yz҂\[ g#ym/p?yX@|ŻrC qmdj!]9`c^뮜4rbV@l(tw]pj^np |lmi\%&$XےJYeX XoyaRTI&Eiܧr*Tt8iMFF(4ot{X}1S@dq{B BCZ! [\inC!rŽXWږȎ?VxwB?70l4:ʰ &%ϧdRӻsH9 ~? _swM43Cj82O1reҋn{#hxGf:'?];GQ39%z?72`94}eD% hJUHXnψDH|dJ?\>La`E&9?B#ePǂFႨ'!@ jt!rp[51.5h)[SYsC&{Zc-ϳcvv)1JQG [m'ذ%ֱ_C޿?Peaqԣ!VRC\vr7xL;:=Z/Cu(?μs:/LF>/z/bRJ K04KA~[vG Eݞsq_[5$҂f?p'l~::ZFڼ<ʁed3Xa 0;% މBJd%.L3dġ?*@pu\6OW?@kX_r7fp>.354E 0 YMDs1KȆzGA =`d8UuZؑ=\IݨWR:ک{bvxFL=p]@8 DF׳-^z>:cMG=KAPĞMe*3uQ?f /^קs/7foIq Vcz7W=Ȏ%..%<4)AIИ0rjY7{4R R*NOB)B rNU>4l4 ~̏.>bQe9EU{֮)l"/#OViyTfDC?w-}n-/LA'IrQKMzN`ޱ Ř 6,@Ҵl` ~.ʝW]1;V,z{+QZYJoum~ =L/{!zxȇc&\8Q&$;2`ogwʲ\bK[ǔxRDf;lHyRf{#*⋮DLGF!iD{ȡ)sjCc` S[N|q ͜rXec? ,3&Dua= <5; |Iޝ#^CǂA H,˅_M62Y[՚npi[lɩ7>vF/WFG]QgY+4k!9cU|ׅ! Zq8YC.#pv9KLa#TP]!"M=azZg U)]%3͗e5q<z>C2Sx4E{ߕ }+` |itz`{/Z?>1EY<$#Ӫ+hacdьkz?QK;8pp- /sE=p})DVRK\,C;"v}_k`I4>jM䨡k3TІ//v$.ܻM}kcD:JTj SnKo_-ɾ|uaC>Nԝ~=KDxoH^ qnRa~/)Zp,zMyӞxi҈pc͔xeE00Rʄm>2Jcx 7BÛL|{Xb W/&Br) Xx=i1MJCEX&Zj_^. Ň܂:NgQ4ElƋR'.*:,Sy< ^c86LhN:fSt4r_[uwU [7FӳspMYw zqlW(2nR*vF"߂o)d-35K;_QMyUHW7E$%:D@) &r;-,bE?_rW#j,V' z;Kq@ 0WEQK˜0FGe2Mb(67tֆVGPqڥ&j]>˳"N]H”dҍ. O",HS֯JwRc i;Ta'i ;~`D3 |Wchj-D⡟w%qS!~SI^4Β-'p+U~('bL~K8Y-:]\Nd0PzPI_V:L;$#˼=DO ˼OGc4 j{8ۢt~aoՉ+yGE%߀X۰kv|X}$[~zk%޸5#g?/L8+1'7i FŹ2Wd+Ek  A=҇2iV T~GZIR*kֶFj>Э#G[_ 1 {\d%(/_p`\S!MvZ%M9ʡw#nb!Nx1F!|Uj D'Ytnn5A`aY94rؿ2^.KЍY$3-v?*z:Z v̫xPq8|h3(D$@5szh2RS5pp:g@!gD`tQ6B@>-`%S=IV} ,?dxL`1fI; ; ʫu|֠/Eo#{q}CQQɂ6G VP]zI߫zs+k:E^TJtG'ze+ kI3QYgIP.hhjB&ÇM88I5h:%{9 G5`E =KpOVd,:XP[zXe hdՌ%{+rlT$-roOZyznzd(a^ 4k6ac̉zzQ5>(%L"d)&ɲE9l c g-Icqد4^OZ9@zWg`-R/^F?/N{EMʛyćj"qE5,!9oz{~tY.rl9BESmf 'wQA6?,K>GE[hB4t_G "zpF/w&ЕpF$ﰢXGO̔W!]MJMdC5)JFJĩbɝS*kì/4:TV!|@?,]e#O]f)$7]t z\~2yZND-S@YLaIěVP FISLGn\Nt̽VQ7>#BOkXsĆGYEPR*|Zau`dE4VAg.iXC 6eO NBŭ-dV؛l qx`)fg)v<gL.zYI3؅"f 6Vk3~M"c]0 Hʺ\92tf^Tsg{[N*v'ZF:&BMl3Ɩ&4:}~N]WuܙX&QS6&R;|g:VK1ik2)eCrf;vGjzX3GXjGާM(nN%ȬYu,+"C\\Rw 9֣vf9V lIz{9i>cZh YθOىhͷD C״[?ģNM blI0  cf`YׄO0`Ją+Ze](B@لT9B @Ux0^ R=ŌF"Mt?$ AeC)f ė'NpH2/^)1c@} Z,dz VΧJFJ14"ɀS~>v!R 2'e!WRlW ݱ0³M Ԋ9ehY3eFҭfk͟hF92xW^=CC곚y!3%C%ܲ"kHQCj63k0`q 4C[*35 ,ZZUϮg;g Wt9\|V|48'TbXcviԐi"y({5M0zH({bwUc*<Q־62bvv xK*a윑t4@duhUT(F55a6dO+TW1óo-t{͈g7ޘOie#eZYnSzr8670Oi# +e:i:Bo˙iqԖXo ok [Qmf dJ꒹A˛IHybSy}]sFZBU cQlWNZX Hu\8iR9(k~DnW\~;3Cj=orhpƮNz`m‘rO 6G=̚/_)n?O_wϮo ۘ=!ΙD=e8t>.nY[zz{zw/maSL>`:{uw;+zYRYrhxzz;~{yP2c8x{{{"ls陘Cz}:zz~x;z~{zz[yz}:zxy{zx{~{zz#{z}z{zXt(z\8|vz[ j۩ymrQcUvŶl.s0`)+xRQx9{w{s!KF}WTSLPp궎{N1]aȱ-wy_reH2咐~gqTBЄ@!DS:y {%C=dcsN\:W"`C 96'K1#첵-?^Y(J&綉 Ybޏ^Sa^V;%u&otES3ᩓ@&y1:q ;K-WC7J&Fʿt;Py^' op)n@֝GgEǯVehx#\6; #%Vi6zO|dM|1R؝Ƚ+q\T:t It07zH)H`۴9=jO4n"ᨾ*}043n%.?W S!&?W =(ǣ7Fo {8 ܠߞEN7q>"{DZpJKJsE[_ImG֌["faqȪ&$a:9 f1wfim6{6ΨhVd-mKI]; 0F[DEv?mvXU`ra2ɦD?o%x2|P`ўchD?Ko/:N~},sN岟 ԋ-MebN("Qrґ*}KT}9zoD?S֠3A;As?>AQt#Ok<ȩ8AIM9K`rk< !y@e11HGiGrfd ')N=ڛNUOl1( ^db j9x2ÀL-y vCՎZ]{* Wt YOxRC#ytZ$^q+g\[m{`g#o:NPg>d(MIw˓bsy|$ UZKb5ѐSiKޑtdr@ku $x}$95,S1mSRi7nDOPj+#5y% @ܞ }[Gl36s.陹`L9a,D¬W@8x^W?,7e* Du[ҫO?rO-7/6)/~ꨑFGvL#PG,4}${}f^S-ڙK9 ץlY֓mz0GƋ3\+U?_ce*a[$ Ϲy#el? Tl3 ^VZ//+y4M)GDǂ?kք7b.Gck85&SN ^ 4pUy;k 񡂲+"x햝ki 4n@Z)ۥh==j#,Z&caw* >]bSRMiU{YkBd``^޷*0a :aU﹝ &1D&%EIv;~SYгى11/|5M,uٕy3pyq~˻?WI1 Tԕ ">G4BT#]vpXWbFc鶎o!V]LneƼa5jgfᄪi:~SB/xTėtDD #QUMMwBǝ ƶ2Jql>%6dzz'(P"}ݫ$P0=6rpꁼt׹*Ew񝌶W{U,**׭->"|ZEfz"{2ƙ- =Ў ҾLK'PY&|e+]Yq@yB5k'7ƽyr՝:%A$83pI99)SflW U93}v$lJZ}aĹ-o/6> ≠,+]:st)LN[ej:ulv[coAd}Ax_[ؾ=NbdOr;d>8bQ=>et]nlC$7R9>yHY IWeOD=7TBğh*h@3sSC[C]- 3c*9 9u_a/K',~fch"_ZxiS2|w,Ռ>pimG z aͥ ԍXw \5~緉pcu$laǑR h%O"8-ڭE5XΛӍ9%F,< ˙IA"7 ' !7|C06OQ`+*IuecMa4# x#hv"\mvXfĵ?߸4+ \HC4'EWifr6 3![sUzWt?aznx{\ej2Y[}"(gY(,a&UMC.LCA:Q>-Mt Zwנ)OcK {f@o,Nz1Dߐ{&8<>AE]ٹBqt ׿(\j%qdICÏ*yi =bq+ѽ`һP6GkE|qCZh50DL5磪q0ڀMAo5ufʏ8ą b i~ !aM܅‘©Qލd4b?Z9xcE&0wyM91jbE!!̵k~sݱ.ČfCiN8\룑~gh%,.%HqTc$(V.WtKHʽPIngCkxà"+;-_f MRiģ Z!܈mR٬nf}hM=" [;ȟ+׼vA Ws0þ;n{`ZY>c˓UbsTmcI;FH{ᛶ’)z,jVizgnʹqI@/nATb ѧ6u!P³2o%?tF`N=܌'f`U5d0N,rKT;ET/DWtj'y ? P5k%^.Y3sUb76_Eu7'ZFX#º]J7:vbLI6 #L"[kxrH%}P;gcQ׸lqQ Ğ۲3erѧa$$i/ce2jMxfDE7](ԊE%z'ѧUt8 TD1LRo sπJ̬oгJnD]$\(Eut/mDG,3j?3&-kWkGV_Zx(^X Ttƿ VےmNl!~1'k!HL4Κ=q|m``,<@%\{!ny<2W2o]% ׃ˑvԍv[*y*W[XB2Kn QiKf*y⪢LWn=aӨvU=F^)q=l. ͏y}JD],V"lq{.I6 E:u0Y&yOB,t#yt,ĩ9 ¾%)h-47y4jTn2}ۗ$B6 g3 @B_b)x 'ˤhŧP~ѢTkN{d&t y:t+d%v_68&kR7R_Y67Vă)+~i);>L .Er+auW}hPy@Ѩxp[85u_+;`UƵdr4|/KJR2;YdT:$T9uLzpvBޑs:>2$Eksvb*+Pz\uGks6?{ڍ3w?QAGF5{9s$5d4f 1d Re89䬃 a/J976ag!3a]6M!ǖI?0%_@Z"@#-N5.sGU|a"! E.Რ?nUțͼ!UO-G~ZVF=_+E1M1S>Ɩ6DFr'R? ޣ1RQ[F:$cjz"b26@֐)o+hs0,d9|&1u(LwThXڙԝ;5).(O*^|ɠsYwK5X$3[e`;@?|{xH-a "x=QƼğ㽔8r3S %=5dA?gz|CZΨ$8k=S2rmk$t_ps| 4#@X jrhYu)L߂))-jCԾ*^)ֱq*GY`%'Psy=yұyݶFMا*Vw av?/\_ ]UlvXF2$+`.ԙ~HY#WO{# 3GkbʼnǍW@390:y5@N]!$NJ/Ʀ^s UYA0&x^c<?3o)03_\a&|隚;q[1JS4ոi 0z~j(E̐Y :PrD?b e sNeLgDSɈh⻙dHIޱ}Gy0p&:W%S32h8W z7+޵&v5DiAG:\e?_aDṷ?V4ɺB$`NwЧK5W'u63Q0:{r]b,A $"B"M^hzsR邖OwMye|-i8m9Z fψ'_Yf]?+G #HS\Wu,-;bs >'scwTxS.!9 6XMKg}-{ 2/,)(;e4r[ũdQ}%7y^7uonUlz= d,P{Ʈ/.ôـ(s:d S&3G-]d_qmZsU/&׶Ȩ,H 7^TLN~j-b,U-Gbokqn4 O3J27;" 4^QWFO=b0lK|"l.loq2g8HPfazsz|zܬ5EVQޝۿ_ș~*Wj؝uXAO(6d;ztײځ{`Ҏ`t@<H]hW͚XFv xO17pwexM <=\9JPH 2=-/)̙údzli0Nm +p=?d'O_P!߀y˪2Ąpx _I󝪗qgW-t D`:E=Ry:L%>< ϴrWc=¸i[4kK{Bmx@Wn';f/Vgfb-#0F95+b98exN̩~)!}fX)ampǫ{8M~Hgq+>$d,@rHF[Ge[ `F ncǂRaGPUzȏJ88vxL  Icsj$$Xk궰 !+K3ITֻp - |'|ۑ@].QYi@*7IMBϢ񂬶7;MIܬ[^\OE>nG_tg3`TQ_R"_<;C 1ejY`OR)M\Ѣb<,aꨛȊcZ`O7Y3[,Pmlaoa"dYdpԹȾӳyEZo7"_=oB rlQ=6??zyr@Rc%\H]<0BA>ϟvOyN󽞌O=-g',m-l7т X̏ȁ$Ι.+Z#+ip1_5cOwݗܻ:9/<,7,5Y_NZ\ E>=_w4򌨣Z4[hJE]jrޣ+*Q#W7= Ԏskhߋ͆(Ilnq.Il.ȍb*! ύnR 噩Ht}w^KjfͽD׼^$F. t-il+ASufZF41K*:. f]%Fh/kXFPg9CM -2]:k`EFw qb|Ӭ?&e򭫹Aݬ-O۽f=fcVzbd|{(`Va2\8o%}Hݷ+İa:һ-\0ci z{=ZDn#%.O3Ds1_U͸}%7ysnOK.6r0-7?NS7!?fgX 9P57sFIfE!-6ߒrη]5U6lYxZk'$ "eӑ" ]) !0/m%- 17QCw.hla/@'VY־˟ƛε#61;("3 j~;JL}YrlrxՃF& MYJ]m?QbYUa0(524uuFi>+h}MnZ{-;$>45 A 򔔄uR7H_-; ' weOR JtQ~ ඏ D[CQLnmeҔ=SFD G qޖni_w٠<; x_V#u,2%@RPS!`XܫHuXa hVN&G4Qpq}c Iے8O7dzRF j7(۴h<8ZJO:s^*gE٥H& /4/pUcvzIP=M`~ w˦v{OAʍ5|_V:|]p5kT+W~TBtkE n]~оO7ܡtHA۰WXd6^9'GV'"r|ʼ]a[J~O}ꈨh>fzA/1_=futޗ *驖JSkv_7b󠽙|Z9".$,MzztbӜGL~n@5P.fx,Ńݮ!'=~a`?YfF=4)>RudYXF:@;'Ά?߭P ZKNtdX=m3bk` V1{,("|: ը>޽ufLbUYA~3MRtMp/!FSoZO>؉hq4 LBTzurqU$uաlaQJd7BMC|x#S0v&)\P% 8 ÒMFi@L~LP>~[;|eR:YJNf'|0z}aJY >Xc1a]a@ 855f<@y.$cUh2~VvkX^Z̷OJ$.yw8] #k CVF;+g[ bdžԠt˽3Zqxʕiҩ,6:HH8`l07bۏ؂g^O^P.vh ZA%g5Tռ?lu1%4]"Z5Cc=vhՔp'P]!9zY'xY)b1@]Ub􈜱ɂj)k{qT|܊9{Y_,om ijKʠ&"v,!>R5ŀ܄H(m*ZKSwAF_ۼ١}M,`ԹFڒ$xnM]-A]Jz_ђZ/H2y0A0+#pQrurK:_TLd j~ 9NR=jdPqgzR1zͳlllo+9@Sjv= \+V!).״4J72navNfi誸kiy (S~J:B׽~ eWA{x'T%;*@@pW6xv<0϶:cJÊ?ncb$ud0>v6=ΐEFF%Чi:ja74eвE%a!Í oc#>k@-(1KQJI'Hω?Мڕa&.R&+IV}Վ| ͎̅\|$+|%os̍S TUbQysI&],jy߄xj*v (=c/b=Ix arՙ\-N"g˻6"/5h\C0#jYrAP]\c$k84?*Cqq n)Z*Ǜ>ƙ,C{>jLѐuuV~f[ Y)ah:brc_YQ!(i.7_H7nٞF5O' ڎ) @|IJf5Bʵ6P&D<{~c4HQLdBfL,X2|sHVڄ1| dC{#; `$_&m}P~{| ?{WnX",U<5r\Vm#[~I!;Y,CG8BZJ ǜaIkh>"su^wD؉&fȮQNYDԐ$m0g2:E@GyU\uZK"6E/qiQpV]XZT8tٙ'\©yɨT(nqđ¨:y_i8xNՈK^ԛ\K׎qOy@m-~L8FNO+W|E?XXII,xtDVx#vqoFm>qyb<ݽs9YUT3A|EرȆ\Z:k-*080rMr :[MVb|FGr\N/=l"a 2Dm 㵨28S58+qU峕6Pڱ*`"$`/ fΚV!cW~#?uh'[6-<(TyyNyW<~X5/?$Fg9t !/ `91vT26_tA=S~RL7.;S8yG*?<iW[:hVi]ӊ5=E-l溨y. dex@k.CL| R-l,r^~߰|SOs B&Jkgγ5Cǹm3\R#.8e9S=wU~ R~5dm<s_[/͙[Vq{XTG=_V@^[mJ $3|*^pZ9c` P_ XH(u(=L(0`u.9Cnݱ֭t(;xmw|UǸ;;{?xM924X>s ;ȭ #M>Jr{TzDuv.:®DU.e0~< b~B-4P2X(ͺ^?'>Cgw4 ynrH:_oj13 .\#n zNܺM -llٯֹN\%O*lE%7L{Yc1>>x $ֽw7lK Ҽ#`gvg֦|ϵz@#x[FB^@((.am883 |):<,t p:P@~exӢG}G+;"_k4f8`.8t"O?{궅 W fXBՌ8)BgkY|8lh)muq;Ь:Բ- ĉ)Lݕ4{d%C&/ H{H#ͷo,P38*9/%Qo3C$K=:د!xX[ ̌lCٝ1}أX y!.QHƏ/PzmfyW03FӎL:H AdY1C7I{i]IxZA0kD /nF@m,عrڗ!P> p@ EaCsxC}oަ=㾟ozAO99I8Wnvp!pQpbm홏~#^G#S@])Hwϕ(8?˰80ֈbJf5 r8iV tao ܾUf8y4@,:4oxL[01`Tե%Fk~߾*,TԚO pdf7"쁫"#ܽZ,A9Ow WVB̛{Cf1ǁa^GJH,}=*QkɎbzX=`Q&63e1 3ZnGIM8ŁL(CWݏXZ8S <`bn%ȈEc}3Aڎ1G;6fr$ C 5g25y|2NDHXta^2GZVҚX[fqO$v<׸{9j j𯭘8]V0j~,8ʰ_1wHn+=x3C"2@3 lM7Եx1~u$dmxl=B^OYE!#1hs~H+5i^k)?7ܫLpx]cl\$ *NQ)\ NE fspC|_|X{ c8b6AQg85=ÏXp߹qÏ"F[pJ"zY^> |7!nޞ홂7wlC`_oe uE\wk6aCŲXԿAEAN&W? Im.^lEޞ?93}sVIk J(%Ad3#O: GQݜkGN E? Tlq? 5ď_3g3W'ȷhCKMfn&x٫Op8 2nψqF;OpeV=%0Eç/c0P$kJ{>UDgDrd#G+hK\ #Ya_O>gI+:81ewG\=I]-}IqN P PmF MM\<54'A}%N18S[e?hgeI)@(b5i4vו)Ν+Q ub.\BL0lW;',dZWc+nsҊaƊV9P-Y6TV49*Bx(=f瀏M{ޗk p_<|}\vk1I6T ܌Q|[=5S- !;%5nʛH1{*h<ݿӑpu$w%~>-x| ԙ"5(+/~ɫCH\v8ݿgk&@YN=ϘiAm:qfizO$kLt TjET%0D*#KT[ E'̈́}@93bz$QBtSiAbTyRG=B _Z=CEϨˈ$SX / ;91G,5k6s|0x?!ypi Rq `dv9T=\tܲbo, 2fы[ɨwGՏwG!Meh+4ޜ%=sOλQsRoB#$rr(x 9i9{l _E #1j`Qd2F܅fcG'[w;Og*_=[w6>"ƔâB{8#' zR'/|h/;;w5+dr#>QZ]R< A 8 t3'; \k70_*.Vw[cH00ѮCl:i4gzRv@|ΔIQ1SԺ7iG hzJxEY`BP"P[T"0͗4cP|jtHN` .X.̰/!{R[S2\DwVk"iĘyO{axu#5rLjyHWK[b˪f6I.>g mhkbyy޴Zu9˖y =mڮyc[kG Ov9\뱈3p~=LHnG_ۈ<'K4i^F.::coAHB!ELT?Py=LJ,l#}l!ʨq7y83X ĎW\EPUA+gϰ`Kvy$Q-~,g)Vor9y;8sK;ZU;a#D`2$+wSn斛ن) !G̝j'ÂAoU"f+v:}%!5ܺ5À{"M"C#sYzdo *:K=m7)y-]acX|Qim܊ab#U%nV^*O[1V768sv?Y}4瑆8^7jB;E`/ܮܷp㳃% H [M-*P2ҠN;>D4$ff0NZ*u:k Tn,U&|lZ5+WumDAyh_LWIb=ٗ>)5GD{ sfl bۼ˓Ͳ@;R>g ~\2O!m&eRgٷbc4y?1vh+ۨUwQt*>vX&^Z7x/ c%hHk3?F8]k z7@W4_=5}jo8LVjm^$+MPj2l T*{ l\EҼpLؾ9>D?bvct|z@z[xEr~~ =3L;g[({Ta%45B!_MQZC5?h0?w#[BCPJ"qAHo}௺g^etqV, ܗ֏_Ͽ~)tsL>9W=7\)lKL4.jP$ACcGmƒ(;vsKkqcNYHw-"ܥ}XX#ǽ{SgC傕Me5\&'Zy5n 3OlT]Bːl4jj-uqSEGaĕ Y0IQFg*RT܀DAa& n;z#vnB[:w~wز2nH!M䨾+$ 2}gkhPq^):$]vgmJNHEp_ϡ}~M]1,wmQBUvCPx$F1\hYj=AoCK.jES^ 2[Vrv =|\+c`Rzwa(,c{T~G=̹>>h #[ϒUMjG5>w# (̼<~Qu牥5IG㲃Lׅ~Ԍ:/o8A˶[L#͜06 ␕R , )RmZS jLHb&^)J4wmg~MYSqz?ڶ# 7d?wHu[ܸt>zydCRX1*0:j۲\^YmHԀf+~=3çđϟH d)rR6IC3z3@*T{nk&OƑ(dW7y 'l?f1W)\{*âY>JUg'D{~"{Et v\/pü1Ŭطj{%xL^49VJ  >5sr[~=>2%8}UrBUej]_KӭEw=b.a}5mC1a)ڗı ͵/)1ࠔF;i=Rw:a>| 8I"YcxT3Uz1HQFOEk5Q%e^GMTA%Yw59=$, o!0p?8$le¯ jmcIFDԐmrzƽr7+ځ+ODŽ\kscj8JF1B `qO2k4^}5GԝM8ܩ _‹} uh|:I- za6aՏ'RM~8ZhNAŰPA3΃z[&qW ",9)ݏL׳\.B&_BSG@U.`J]o*n;L/ lQPp gܴbJvA^q[n%nk V )Luz(!zw-%=\sROyր1tAwr߬TBBmʐN i1ScIl$1'3Sug3zX{]Ǒ&2*2lfEBVKs>Je^|OVRSW ![B鑒_|ΈЭ)hVLv&"rpD3dι_4Ϗ\g, ݱ2s"Q닝[y^pP8+1yD/ޞD_(XVeg~m wEΔu$C|~-I Jþn>"ao52 kvma&?5+>4}=K܎W#}{d)\|_~2=;9^U%w_)h؁`؄gqNE$"fzs &[lF @>'>VU/奱wA f.^˧簅*]a1d v*̈́x]xbx$AĄ'@ZhS=~[֐ s\0"eЄ152khdSΛO̰B]}T; a)Dk{|D֗cǿ-t:p[o(vQ(\RHZt=ݯfHDEWahןV`Qh#:".Ul(J?9{ \O#c}N1V$ɊWhyMMhq2x2x)VX2]hsRgNa/,pJ414$}]t<Ɲ"P~1OYh)B#[2_Y_~(AA ϒ!IuR6E%€}7XѫQqYX;Cd "Nͧo34yȱԀνKłS0 =>SB v 6ϲe~I[o*ƺtdXdXõXq(`֠"=` \൉ZU%=ch6"8TbH!#Y4v =뢼C8_;/";D2/!aC}wok, LREg垦jb";ݤ.{R:"UֱH+>  Q,TJlk| 9wH= og gO% M]X5 .?c O$Itc hOa2<>\P|x]9$ ?*y+WH"U.ǣ0%_`\Ι6*⯁;RHt|hޮ6"^q6t 3ڸSںQBg@ԡoq(ϪCJAU!cW .ӊEw\9Kz8. G~Y.@9),5QG8"oIzdX\TԼ,lTW @4Rz{} Ne-,y͛W?9Mو@flCmh  QVM${(K&kv=vMb@g-v= lVm `1Xb Su,K2r0|Q \SQm'EͿXQ)woY# EѭRx+]sPI`CN-1䲐W..41 P6? P9Bʛfh 9xtѢI3SUH"~ꊊqˊˊ̥[ bzޯ~ Ԃl{DUp>~F~ěPsUUs6{ό5sNGgksӯP2ʅ w\p.Nnjq:㦚Iaf5>y;x4>zjУ2[8Jr[h5>THX:rStl'/pl_^ǟֶߣב.LM\]붿_-?SSAq! Y{! CSPG9DG*î$g]|T|ƃ寀8>X!:UɼAM8x-Rqs$CWe'9oL:UUkXc )3?$!cYH}FHi+&M&Y!VPN*%n"ci |g㗃O[+j#6 OĿ@΢2NJ'ߐEnR}-iYY&! ώ͞@:68/.22*e?Z//M{}ƹb@YlKʘĺH,`Se$M*Qj- l-g^CTeˡ> B6w,GД6\N^WԐXt.6g3$ty(Dq}.[ Wl1W q@x5)By_`WUd鞜'U}E" 2 N N@]SMPLHTnulSD],j-;Ӡ$<)n;~W;d~܅ѰJcZZȈ7HHkଇ zJUŀY \8mۤ ks'YC#hLЀ%.+,cTenv3^,EZ89 Me^%zV7 DwJ$[r(M壿~* ;cFDZ,P$fqO_>->e !fwm u8mi$@pۭӯ:tԣ xD_Ml3jͪ>fDj0>@p91aL iN,Tm"*3D8?9oz/$j t IY!bg9LN@kjm^=mCH>/ygZLll3sEj0 UlgwPM=g9<Jxzj-x'zD|Ysh*Ԓ6pviž=]Ka,[jl֎%7o=y0g =x~L=rEo~G9o p#l$j‚q7|bcی =s&@u2@!eU͏mmCkҼ2VO~̊ |y/-Ԥ7>؞DN=%-ߕtps^MM+UD!t*LjrTf#K6`Tڴ=R> t0iݺ do"}FZou!L}W3ś+0?Ox R.Gh=ɡh~NB*sJ\h%nd:OvFc USXUS5v;pY<}n*r"V$3fM@~,MDN=GWh|GZClw2sҢ"c6j4a1Gp@`-fZ;s)|PoZf==?a|~k_ ?ԤBA/}*M#Q) ;Ӫe,S8e;ʅLwLpP S#w=NQ ɧQ@co4+&W j>`l6aq37A?3QYyRYx #E|-*Į1fxCH/!s IjNOV;R:s~R8>a6jy`hѭ.[a*?]o2Ai1$lgvؠ7c@ kx~6W+y?Re^)JC\Doh7PB T=3­OKssŖ bV1V= 3u~جXf+DAf~Bdo%+d̢ɞ(u:^羯Z) tr|CS~o.(mO dOE˷cMy7;Tc_T)S˄C[yByS筂}X\a:d1Qs vտQ$FQxe-j|:$/3;:^)6~>Ak@wa豨G:j*`GѾ65'rAkH4MLTM#f/ڊKMlݘ-rJٵ/`نɫ30W!]~(SŷZo^v`>{l_{B ,:)/l C?+[9j"\a,t W Gt@dZR-må|!akT3D9(.‘$I&alTܟ+@(&)c_+/YԾQƼ[\ĪM-EJV Gh$U&iQDVY!e.J#c7zFdx^/aqWehXa[ pAŸh⥜flg&H99 E}'eHe'/+-r8r:P̉\[s`Cwuy{R4L*=xBW%n'u5n,DTdVJ=Z J|Wi#4%'wFc1ʵn|8ćA ;3'eEIqGDdoD86 pzvY=M=f'/Ae T4mܸ)_@2arfb8"eRkpцk!bX$"IIMt3*9z,t 樢!pEc<Ԧ9¨|8B Wx5 S MKKF.ʏP$K,HN\ɨ:&3u77`ng'3rxBsUb lL]Fvd[nQTT?+YYS(Q L0?ly đ 938IuDR@\E!\tNoJ^+<۱i2ق0bNh %,/T-=ՕCh )!&Aߛφ~Of]!H2go2ΰ-L^.n63żߚX6|K:ʉI? `:R%$0܏tC bq 4׋<$7} }gI7PV/\Ųr!uًVR'uAqٳ0Qet)֔H{rrͨ1K|ړ@%2簥۴0g$M~!K-~NX4~$UyfuKEz-98lò&YuzK5ó8#<`b".x"&V,ZHy S}?'Q <r͋BBBE2]6||^:yݺR\e'\y͸Tjx"ubQ29t1VD9F:Y?cYk1#e&)hjOC N޷:ݣM[ּ.̩ZvU4LajUAo$ɹ-Ù1` %ޓ.Nq60sNFƽrDj>mNݽjEǠᘑq)ٶI:qV yk<>3zs{V>U/W>m!vzOl`LxЏ-oHYY.XsSg.,͡j nCjյg]M;*ɐ{eg["xvh=EqV)i\eCœqhvI"4 /U$Z񺀢x cu""1gXm?Qq.Ȋ)+?=^m=Xm\1kp`-5, ;b:7|?p42?XJ&kw%|>-eg(EV֪I++Ү N3Ur >LK} n@&ȭ߸}$S[F՛y[FF,'.;nob-B W]55xQ*_|b.Z~x ;T תEmU:@fh ucWL,P-R]@vÌ@{a4ErS+kAeO Vn㏫P_A- )nĺ^eahxcs[2|ۀU%:>{v[OpHz^^\NyOi쨕&6:֥N;AB_C|TH[I!\B^o"۝Ԅ5#g1*\ My]p_S{Sal6 Kap棤akPUi1x5=JU~%aq0 0Vzڣ`YBK/z[pPmKjSm=R5u|eՆswF-ah;̭T?vzJ3JZPv?OSUeb̓{n*2$&jԯY멩-7F+^3%)Rh\zZ/TYױyAsEe'xW278+tJg\`Kvєqxw`L#b9b<|Ͻ+ї8/ҽb)j!'0yO g:̢ZE~8Kw"5|?65"l?ыBkrcЕE}ULR>tH3hnɍ}/>RlUt$ZaI/,cA.l$t˰B'Up)s %`[%kZUN>;wQ QJkEϏ%3\y?Ēv~eXj\*exS4D4Jd75ua^|}~AIɧjOm3l}G3H dzYp1|t&XJ19{K($:ItaX\3GqF QcTi<kҸҍHB E$/<QX&u?X?HIc g<82̨4mHK0{K SlEGĩI02vp1~tvy9l4Tu;u$8p.uYjZ's\ȬDo/<]( -hhCp6v;}]7C5YiLjUx>| <0CfmR/̪.VɰhǫL|]B- ^<ɱ8V:޻r;m Ȟ:ٶtX 'zaibycǤ{j{;l1nTY.C,zMcLdJԅ8AݹqwB ' (\ ``13(Jxղۃhw4*LMo} B3 _^_K~d՘6MreBҤ%壯gz- f4uhe-K#J"ɺj؋f^VQ)@xIK?_'ZV_G&>ۊh-c"9 $!xZpi-P˹ _o7wt9TPWysӢ[vWGe'ct^bD37R/'>Xzs sQ&ksԔ2 r4xǻ#,1k vT-]i^5?$k}k6rIr|B:!EI"RS\9Xx65RcyUsemY>Y-01쨴q,]e\͖aLn{a25fǰ'L7m2=I$-wS(˓--*)OzHNv73ԂiNDU>cO+!|sakD8t4]:x#kL|{L*8a\/_qF[[U֐2/vq JJ!=m_Awҫv91`庯;b{UkE}~8{&"QT=KW_0]Ջvsd#`<9_MPևN4پ<P;-]=X8is?T 1-7j9ij160˸qIV3!l_yj~|g~PnxEk-4AF6V_cs-aY{Wdw:W'G9opK3Z  ,smnd,i|Pؕja7/Y-j @ :&:t %w<|b)/༲` }oc jԶ ZҤe\i;9ϙU> 2m-}K]Q^}_~E -k'I0ehQMd֎Mm^ˁjuumxWwhlTxdM׌7f/Lvb)/w +%/Q6 ;DmHutm{*%%-ZVQ|eTufgХ$a%Oʚf sQEw4f=?؎'^BG& OSSWZa[4v Clc7`dzL*d5gX3DOb0^^}[F(#X|/K."Tt0?OԥDC@ @|mOI&Dz */TKbS^m\ gw-N*CilqiD>O(VD '0-V䀝=*z'B;nIOlbؓ=s.,?XvZWbSbz5r>f1Zt_Zje9;;A m="<6j!ߩWPCJJ{ٌٓB%L("Sʃ=+j;o^Wk|::wa!ˌıv$|9gƛnRku2%qkE Ƣ1[$†hx\<wS뷮i6(ʒpmrqYq!WJێ'h"<Ϋ|<9ZM,[n奜$$̶6U %W#_Pߨj#1"B6%Ad7ޗX7͋j_% !]7W0nO0#CDcD^Ңnb~!IzŴ"bah`Ezī:to,͌w\,ӓG$VEM 'N_hTx`wb”R6}afn(4#&z*m ~sG7ξ}g2'ܦѰ`RnL5cØT%+e>\}iQn]qG( i@MV~;*D!īs $1%X&g?&ϴ <1Gq3BiGUk'_{T%N~qU'~e7 ϛ(l C&|xzuE+)Qf_SC]uq>&FcjN{l/ $b[o'KzwrOpKSIIJEJMy^}8[!t#ˢ`’X .=|G,!+iUs&*Y@2,rh$H!)5?茐6Ga9쌋saej_wd@,< a6*{lc:\4vyWܖܑM -|89u6􍭙 >ɧ8/4Oշp_] -qLB 1䦠'szۂWw7:>p?ڷ4q'h5Y(5◝ Ǽ=d1ƚM,݌ýFI\z*Yݭ.2L("$*1ulNq XT⶙|s$g{j4ۉ=T̻k"һ nA_ƙHvZ/YZjnGܠow0SA2n?ј0.Lj*Ǚ9ǴW Վ3ı삩 4%s ,_XP)Pzh'cIYvUb$,[Uk۞|tAjMӫURlasUȈ'op+O86牫RF[8E>^l.˚ԌjKj׫K=^K{N}PZ̞xK;To,1X OŎ>-ƫTp|tʃMgb~vMVy~4·S_J1jY{Zgum1^&R =x!ɢߌɼjf'2|H À[JI=]w$v"!eI1z0ENvÛedGQ_$yˋ)>>}IZV˩y,{-_T çFK-W`aQV8zkv]Bֆ˦jyHA8(J[S/x^6^є契^?7%qx2;ix{%a>Jku14qIZf^|$FM,!$_7)XWӉ]p u&X8#ooF1v?sg4Dal0FRK {bŴՉiD?`<(~Csr]{I {8IoZtƒNSиiFY|#!Voq>Lq_x%GKU>էZ><!ugz*6%{ ?!;9rfgb,((Wϲ5 oPjZ6@";;OqZ/kF߄J©u>m!ħ/ZXIqzZRp.o_}mM<cχV[50lKc'I$5x'6/0'&TL]v(8"Zɸr2:IF+F2IvCF2<10CMkd'&4D 45v&Wzy|XLsje 'G+F0wʃMX/wMXKYtbbrD0rX؄y%rX"Jauj-8.'ڤ"+YЧ64+?y*x~ cc 1縷ֺ:IBĴ5d9Ʀ}17; U!5 p|s Q ROFku_=9Va!IFd{1ܩCgI1.̽ p2tA>fʵT!~!K7n E#}[y+b{`őqxoV2Zl8tBЖ<cC N]17M2p[aO/-Nj9}}ЬN iqڌq2*dP{UŒqJsku>-M%OH4D4gv"~6-tW/^F^|e %.836OL*=)T&Ii>6&:OB ê^aj&LSɤ QEu$72E8T%L획 /eM#XWghDJ1Jrhe (#^/_ݜ~/=^7A#.cc;bzn\=ܟ{)}Qvpvf6 eFWS6F'R?:\zDZSk_n}(Y19Sgl9qaߕzmKv0ɭ啙3zvCYVu+N@*xj9ٜSaf# 4p9ݨ}QD+2<)nݿtxr{z~K/>.c zɦi )c!fQδv"TZ-F.!ma Ѽ|c5҄R. -'q)P!)Ň. Qԩx|Oү_ K^4 ;>P IY0{^WN i/ g@Kc zͼ^[;X¦7|krd}zjc6sN:3)L>AX6Jǵeļ>'m#-U>_d}(W 6kfx:M#w/Pu_R6^paI+\+j**^f}"_trko" |Z|wfS!_WSV<}g YEnīQg.:l. /Fҭ?üew46{n8ʌ9u\_|x`&ׂE[Av5a)c 1:­:[eH/Һi|ǭ܉oiGV]FWm2"e׌ L\Z{Dx6%?t!|eA:"bz߸^Ыe;4JNۏ:]"OIQpM}:A<,cfѬݘ_n>iS —: t4wPƋGfNc"`dnVneNcRեϯK^&}24Y%}lu)qeȿ4]ļ-k1yqdī wX#s00mH"vK"hp49Lf9Id?d Oc4mmD1Ɋadm֤XUۂ;jE v;Nk̶6765M.Rѿ_5g%evF^!w8 Lhk֬S|MSL#|n^6g$f*` Kk1rK@2LwB~%5_@gȈrW̹Ycȣ8R`m%m: '} jf/iˡ ?yH6vLYX>WGʔB{187i,V9EIkq˧3սbfBK1H3#,CzaXLVAD}Bϣq %b'N<,Q((/P=nyz\y;h~*D?X,(o"yn3(s\; .YvruP豜^]0E~|im$P] ܖa@[5lޯ{)uII)*.=Z_aǍVa`q] k+KaRԖÐ'?v0{RpMخ*C{vzh++}S40+;ϹXN?c6ooLLEЖE\𶡁=C:%jJYwY8tP BNp{guH2yslZ|TH۷B7*Y $$&/[}SA2>F)J9Ҩ ʳ|OdQiJͲ[$L(@Ճ(#49k4dq K%埕">oX+ HJK:1_*bJhѫO̔<36AtM4H1ko&!^dМ% 9mCl#8 wz6ӚKDtzd؄@[?}lnO0FH/waû4Hy1X=6It 3"+5h+ Dѝǔwus-}@ Nz!+Ҽi彫x422nƾʓLҪvs9^ѻ{GAOrջ/>K"^Fߪbs{_ce+ەH[㢱;~I1-poZ)~Ԯ쫳g&F`פ=;f+c\jw˺^ӳn⌘G"YK.OvFTlѝY5T9sSWTW|3Ax'd_mJΫoC<1t<~*v܀ ^K&v%E@lGPpx^xnW)fut\uA68aL6ʛvBF/XU7k_ <ֈG"45)0']DN+ RDNV4bGIR+natg>O魻t-]Jv;e_@>QfKے}^g fï=!P' V7pt uS单Q>9{_=Nz!%.Ek_[PBZD2-Uj#'1͢0}#=; ٶҹw*̟}!@xS&=J֋dJzDQ7) \V}d\cs,&snPfYa-AA, v5!>-!6v)|.w ٳ"I#j]ބ訰z^s;^O鹛&R xR@7!DVv\D"V%Gh7A%r)mS$ѤZsy_t[K(λS /ّ+(Ln_P;v/FJ%yrr觾8 vcewfnr> Mh!Q#wRje,~AE5`xk+`M49A"Җ=yW᭕C8Se[kֆDio#!\wb;&%qqOARrHPkp{h<mV *Sq^5̉Yto.+B \x XV#S1B鉉۱g3xIs8|Fg7~KF;Хi3˥upc %C]m+W3KQ:zZti3Ҋd w?-2|~\\Vן^',a4Vf+HW= 4/Rˢ ;ZoV\+J[]nҸXCиЩD[ > OFT>"'j=zM[=b!|}]K, F+i*tU[>Icp+7=ZPY5tHwBmV֊|QJX ̈e"Z?!S:[3vYB 4(_AU6K+5*\H̓+v0+oG k #2LHEw>JR;1Ă;/3\c̦lo`پ:z:qwt gILzmk1:͂{Fd"%G̡govqYNѽ;+]L/ei K=ϯxx;qaum - HeB ĹNgg*j!]N@wµ,v[4qw؟f=F|V_kKy^oBy(}vez?= +_>ZȶoG)ނёeJVpvyl- ;,X7ߋi.4˨ǁ(" wwފGȍ0|.{wA}͸{xs񑨗vqCsJ#g1-=_Hz PǀVԚ~xܶp1! K3?Љ-]8Q^[XX55S P :5b/l6I&k>yϘ 7eAD3pǷza*J./2IktI0ޑ՜u5 ٬C&K`S~q|A1DȮgJ%jtH} ,ܠĥceD4XΕmxkeȇXkZ9Zk<:.g2kAakl}7`wL'Lk}F_㈑p]pS gTiզ*\-wET93XՄݶW~X wDWpIS1z] YtAOˈC(V}nڵT7F R*추frnr)邇^ (xWZ&4 %3Y*U*yAwzyOK͗_J%[s9媎aH%&dMRs%T8ޭtEjyNYpP?0fA^j+Kl 7&j}ODTS ~KŴ7ѕ $ B=>ݢ+^7v#b9 >_^Ij}(pw#}.F, Q9/ k.گ=*uݻhmH~C{h)"r9 HX^ ":&*.&e݇h$Fݻ}fF`Tf{!@wFױbiG$c|5N7 l*AGBKZNbv_ Fl6w;r6߽9qۇ^I"ڱ׎cx]a [au|ZZ*HOh:Z@f RB*FCm݊~>&\Z3ø;.)jiyԏw^K6j&f*A]%&d'`1G|BJAbB~~O젡dnmת]qL%b6墠o?"%糚`Tx <݈IrEUG_zyiJ1uqWf6$DVOJY&:h_2p籹ݫW4_DM\ UIS=n١1$BZV!mI[=;el1"92* j j? o$ u-lE`xc~q>{1 ƮibL=7}Qr6;hw 7 ݫcB^ngɝ̋eX(/+I0p{NPvm|#E^OX?tj%15vP&)F2'1"8ߙMU6* C&iE5wF*@&ďkOY-?jr,FuPv/v,wE\KńجĚt Wn"]3znyFd:ݖ×l-乧/-!|j߾㬒,~iT`jua+[Gsy7T$A=h|1@noR4zVaar Zl)v)f1`ˏnr DiwWۧr0[gC{"n-6ƧtlyIprW?TH4 m0am|2 lNgˈzGWi9R>KF{\ɕHU_B,:,hy*g<6&_bv:}ZR,Lf UqOCӓ|:5$Ge3_ ^ٗIq[ZWi{3=bb="{nFQ>$Xf>΢h.G0|,Rc;dB%ʹ{qVk1n<;,-#C]gTrCڸx}:Yޱ2{f Gg۷5h xa=[l~V FE#دqpP6hb|'L※xGOoT{.Wf`kx(r~Ϣssp~WPegkCy,2L􄭜(NNîƢheSV V*[CK{ M}lhg`k`hmQ eC'{8ً)}*緯Z LYD`hGDso dge=C!F?+Z;DJXn'|j ߉eXvV?R?>sv3Tr#TXϣ bENz+s+[%k=n̎8#0'Y:\\ 0'j@s0Oe}sc*yz]0<* } A6x-!wvg#J??a3HƞG%7ǟR oxyVoZ#-`s|OkL*~E1Z? '9` S3-v?[?>[/Z_حoL _<j_حoL%?!'GHD?eܿJ3g"nHɐT'WKTd .Idl0rqHϴ-T6o/  Z, 6t410T ^;g9\s~qf=Ǚgs|_[5o,/_}|l\߄ 9\s>z39άtӵu߈};~#ož{BwbNN);riN qpOw9\sfz3Ϭg?V/ /_~`ܐ ϕ鬜 gu;YS 8J@A0 \\6rK2ן"g ;[9[2ϟ^0pfǟoed"g&.?ϿZ\?UQ._}矚o!gog;~Rbg׷A@)F氣kȡQ;L'.}[jL${}dfXcfoufw.([DǵnO%('aoYx̖{Fj3/x<=莭9=x\~[Gӟ U9N Bwv@^V@tA[/ީ^}JpFh?ރκ3»}/~1ZXg(ŀs6qNtӴ(V"S}GA*eDq z: GhQ|NHv>n+mD!?ȳ'b;{~STfTa-UgfPf-FB#C4m)5ޣ $~,5'5~^MvqKo/ܽ8LK6䵊zn%\{}.AGo72Ywh5ZVwB8!}5.YʲK}/(;A9KG@C^\:>57z ߅ ?de H63(.5q,ʕa\S,Sf-geS6N@۞_}Duϖ96.6PXB!փ[?ErlGRen&Ԗ5H[ۑҕ%RAz*mYV^X~; xҘ8Y{AXROukO=RhԠ@pҁ>~~' rK,?>hn6dG?Ⓔr3k?o@-hz.-!8\[>^vٲlp%|`};%[[xmGö|K~%lܠ낾:7è0Bh>Ec),7/ HhǢ,v` ߿w|IA#{;ACJպʅN{YFs~py7ye~w*r1/%h! s@ava]q=,c5F@HB獗ŘV8#!?IovVfdYK)DžΪv!qE#q~EzwҦd{q:` 0PVR-ð5d=(^cM:we`m*#;4'_84 Hb񮰃s5mE'Bf~Yl< F s89gUgl)w¥z)WЋu4tLIPk '͛{椴AfWc[;(Vߠ| 3sB:2Y;?ኄpD%V6FS.^M/~pQ vR+*jJ.y5\@ $/ .1c1ݽBAf T.\dnmh?T_54p YY.xdilVУ @tI\`Hj 8,a=X^͇Tk}zKG<؜bR%D«H27ng{DxX T\NEYQ8華ekѮ>}@&ĩ} ߁&$T8I!TJֺuWڮP4xl,D0et0z5:j,;ze蓧]s < E\?^YQ5r ;.yc֕L VōܒbtUu žۅ'!j13XHg\S y5Ӯq)2ߪd(-%y-,ծS{s%2+ "jbzqU9-|G+66?]0ۑMM乀Lˬ&+ 4>o#}u_'~ [>^|nZ]aȴz>d@|Cۚeܥm;02[辟Bh AhE=8,"ilE$z[0ϯVXSwO5]xɥH1}o`Os)X,t?t)W61l1mb!_${iEfv| ,LF{9iij/|GU~[wO+~~Qo8t_#sd\oV_9>,JƉD?~,::,,V>boqf7wܹe :Fw|2)y}b~W=+iS bſm GY_ O Ɇx,y@>d^]!6%A"#{Z7gP!Z墠pYfKudáVF{+oo_hkƦ8D)W>k6+6K",kV*GCba!BYsMKdDh/ ZT+~8koVbK tؑO|ӓJ?CC ,-.4KTP#~mH݋ar}>eY#N f__IA<+Uj McVEA.pdR#B_A_voZ>-D\Ҽ ј'$9 Q8~-CHkn #[H# %C5jAYҬ]HHog Z祁8M)D9}D Q׼(T7^ {$1 8~ jޝ'Ph͖R ƫtN [❊Sj%oNP4 j2 \11#hYR̳A߫,2p+y].\#t?Zg1]~|1Lۜ+<7 I { O""}f]Br|[9rSrcwfX5nX\[^0}ӧyWDߒ!a~14Ӯzj n&TK -_XihWv@^3&P#SHbB> `Vi > l]p}(qb(fac+uwK,P#W@rFh;ʁ6yZJ !C|hD7%ԯsw_ ~vW'Sxg}PژlE2F[#"!T,'G/O xb!{307(gL^뼥yocS-We:y_;'b ?gxY^r׹][ty{2jai$QisU1XBc׏b!'{#? X2C0xzLFvbh~0pqU18N>Ap&iYțNJ.Lgw㗀 sQ콃+d{u~|'pNz!,m^*Ʒ}N"4?WN`&N~NzRHJRIJQ>RH!jNZݝ{ػ}D/,vq~bS-yg>U;ρ':OoL~*3D9JVrp]ǽ:0 ,-B \PB TwLHx8muVGK.gګފ8pTVeiA3Ar^,;ks?'Gy?%ˤgU\krKΫ#k`6@Tkh]s5tտ9}]Es6klTk,E>ی݄GlO^S&_=Xb 3+d45c81T f}\_ǰ_?!Ӻ١}sq 7MX DOq~AD.d̷TVb,斕8S~Lx 8͒}^5:o5Ϗ=*ߜ&ȈcPA_,[dLqPpx]jՀYң%Bq}o@tu$e b̳ BX1eoyo.+'yd3Ei`ӟ!TdһĢted XerG7x>5}/9S%oҮa86#Ad %Qy}b&Ѐx\K;cEO,'y6+OXbBC?\m}F-~mYC!nϛ(1@kjcK@ΒV{͢qדw;xLtsqgSTnpw N '#0G<<Y$jܝaO~+]iKRFu{v7^%`rRU{;bi-N|D?<#c|S7p>"3䥋pL)'\c<:ij| Ƽb0xlAe<؅v1-4%5KÀ_lNJot?5Ny6 p}z{x~H?jVP T.*1%ygײt?]<9_M#މMs&Ү*j_2PRjkP˭$D|-?:0wP&r#Ȃ._qG{ Lwq V=nw3܂Rv=0}> JN b3A7bw@'X{)|u ,chx`ni;̣d5Suf2'uRy;2! 4yVY&vΎ>XglJ!/g[n6Ψ ؔeHʷ׻)dŸ1`uCbVG_;1P,IֽrXv[X̮N[Qp&&7w:Mֶ"UW88~וǝ$(i=wN md`~?HYkhM"Ԛ Nne>^acs^Io p|+ ߬LjX,"O㒮lχ@~ Mhd%gɸu;~Ѻ1 % W\.=vRz_x̵ץڸ/,|رkq{n"T|;>`b 8n نI u֑7hYyF|J푥*|2nNrL. ~?g ׉ Fw"Wu9![@8W(n6a7ϟa.gD7ޭnKVa>n6TnpjQB(__8U6ɥʥte8 _ IO`VO#ݟǹ.!v$A{Un{kd`@I_ &&@r XӪ(uU3v߼QD9qf4z&yɓN'NUez+Kb'm|CW<Vsܽൕ ి @vquizYd("VsFi[^Yt'c2XD̉ɉl.C.Ei%d0[,q.H i1 G} QKqy'm XUN'gh]4kRnPŦ_š.ߛLKFWo4VZ^&ngmdw;^j=ݢF22!ud:R7.P MN9@3^Bj F+.M:_Xya;oUjKEr?sD !cxtj B5 $<-Vΰ}``,Xt궐iȀ(PSS JQwo Rlj)2ǯ_lF3_ͫ|Tet@Շ!8+ݔnB}P OmwZ,?@ITє9ٱ8b3RVQZ[{ܞ#/gE f1o{N^gHgK暶] cr|Em"E>ͭ9 D t4G(N_Jzjq:aGS\/Xqv)E*TEIEm!YCQR~> ieCdډ*?_V?$@Re0]N {#sS W ޱEi fe3 Lh"{W*ks| RY r4UQp5ˏF!'> HhuͿmhSQapʼnD%L-l ϊ<*6AUZnJ jbAeg[-MK5?gkK*M);V~U}L+<,2*cR:{YhTE;6;1 z Pu8t]}ӋE|/߀&\ߺ9БNӐb׹E]|,xTڰz7ƢvPmV δl(Ո1HQ@CtvRjKm7nm ͪ<ވvTS9}⤈ohǿm4%Zզu(Vӛڈ͙ysR?7up!>Q;f jڥoK?GQҺ{!~{o;EKĪYRKsnMf.Ha˶24*c1t3$ =yFXů.@3٭oM8/M;Y )"ï/$Snݥzم̀\`:\Q~z4>NF.^ .{i󻖊̗%[>lӼFc6cC+BZdsX6{<퍆  6&ªS]g5Vtc.Ie6##a(X\` _ު++UELoUX<!jhf>;vV?zY)bUoê^}Qk^t΃=0,潮聫~>H;P'HU L}l#s~`}vR^0Xy݉pA_n^&)nڧZb):sz~6Ir2R~p;̵$'?enn= xsJ,nIPƈȭ =p]DQ%'A&@dhm٭v(R?G`g7ڒ1nʄS6.x3U+mZkz:RcgX.ӏIES ^gIs +co8d`"lnpQg3'FY2g^;lܦq.n=ra̰ :BmT%'>Rre×iI3Z[ Ǿ78VIP84՚*hl&Qξ} jeq ,,*Հ :A}D@uLVsP25gʹG:!OO#܋ʈ53Rr[ 3⼳S-GTBĴVr@E `9+:8[ؖ'{Ԏ]q/]Ei6r"Hw|ߕs2! xX,F0v}G(8M\*}%@~v-) '*C~aM<($elӮ\h0kr7կO5 pW*if3}9 hRo?#LB -V?V D就||jޟh@3>myv5iAizc)lӈ/&W"+$c:;wʫ9 8(mQAn(hj=]::6}@_s {/k=x(paSD_T?۩ܝ6؎[ (L:{*y95=bsOI4G@p\v?E[+Dcڽ=i>ɛPHzd1[w[Qލ[MKɦw Fʔpၕ8{ML ė'&9p+1CGOg `H*HB[Enq@`-_=쇞x1| q̢(Y9.XgV 7R $2pH3v)G%rWgUSlĪMuA#FHUO{o17͌nܻ@[SйuNRbĚE(]§FMnxykV;Gp6=?YejF _ y'<-"[_al*G\`t}eslZ]kwj8|RHrv)CƢPjSW͎SjȼPp@$" ||&6Gvcb'DNߓ NyFN-JHir3€l{/m?s;Bw~^Y[-p`eAt-|{C-} $%,m&:}yT4Io,eTJU'K`R<2m7#*vfr; ``g7ׅ"e#ĥn}0&.զ:g?u!?]{8iG&Y[TNZn28%P""BCJRڶRIm1R)fkchbjc҄И}qki~]]];}?Pgt/l_m1Re\?6X3=b8\Z Tس/6v&DEߒ~LBY.9Q)N]#E<FXRl_۟̈́zz)t {Ii>ۜ WMM#3 Hbp!y#jt"f;-tZy+9^??O6xPJy@b5@7u7jBe b-`͋/g'=o I!:TpsԤD$}c9K fkg T5PI|-5U=yz߷}_D< 7pe \Ct[&~prx{.MaH\V5ٻRfqR.Lی":ngqC'>8Teoy'su~'UZ 5Sf6ucY('=H%ͫ%^@X,^ai~a.Ƈ댌U+慍2 HOE[y`jʔQkq{y6zRj73z#3^^UTk)yMb`e СA)i+5 S;q ) sFF1jN_=S}DǙ 聕=I{cE@@EF+=^ZE ? e\ ,ntbPMz;&͛~=p8K*Phbs{< ۺq/R7~ug.BfrdpHHck4uC47( 5 "Y*_;ZK9eG==KGfxʇ]jO-_zȻt@Eu 5PЮ)1h7HNp=!T1ET1c)h!CUzxr=q f!R|u 2ũ $߀%hw]5MuY*k7m"}sDyDR(;펣WJH5X$s9<uZ@{x`HE`jSrg@hS d.NnAÎ5-̖5yhs%Qv1Kyǜ1g">P`fy;Xn`m1632;L@ar1ݔ=;d.2j8UHPk--&\&(,JRox69Qz+]6 ҂r^؍RYrsB RڰM^y5]zO"1i?~$6&-$8_j~g'nI$  @z{<{S,Ww|qY#$wn֡H'BPHPCw4BL'=c\f~ۚpo6#e3b&/kp `/^:#o1z<t%UVjd,O؝A6r=qPshyG`oLէU߳ДWUCmcV0&B+m4/-Ÿ,?)ӞߏܿgV } QG!dD"t4g(I:̪T'XP§~"Y0ȿD-( ~P,+.P( (:>"V]΄>g'62{ľ0VGtvm %ITͦp35,QNr'MX.f@k&G`swl)c ẋx,t+w (ic,%")a3; SHdR?bJ-{j(\g@ӅkBI=i74nf5E$ fQ eQ ii\ӻBJj1ɤP,<Pv$ί TgtƝP>sFՇeWˬ;jb77Jz&ռqnF5h&xqT*ܣ#e#+9  x==QC, f@^d>6kUth[ a5f$mH'#a׿@_@JhM!=3FLZ%5WZ Yտ Xʼn\-Js]c;RN UFP9kcl6C':)$KU;IN*Ҹ"nXZ3ܳ kU~DmA7?O` @I\0>˺YI(O؟q N {d&6>.#!E';ohTP_YgJ/`\ƴkfO?׿ikCt`B#2Iz޺tImLPk8ve嫞F+Kju\ZUJr M7MmO\;9]p*JB.O4j4 ;5#Ή99N86eǴWk_z;vBZL`sj8 37 $rThJIb:E3mE_ƒ6_l4Yyv֕6V䋝f;Ԇլ'ͯ|`;C@8̽vKj^V`> 8 do_.4"u벝"u0R4~d(~0]j<#.#e3A4b!|/OLfqkI׬&6 L@%:8/KHFڑGZ'ngFĠr(;'ǵf0nߟKW[Ѷi}Vf`) ;;ڌGa$qsB5|05/9ᵻ4Mז]/ɦ$AHjC'u|1z|-Wb ו9OΖ NdW?}~U7%%~'9)!$(K$nLž]526۽B. c2?y?D71)2qg{G԰^n &,Hҁ(0KI҆o ÿaK,]2Uz22XzZz)t[Ga}~7neb@ `/I r0ww:M@Nk?CB$kiN4Vr4DA-n-sӖ>P7龼%Gz|zu6o`c?|-_\-Ξ/஺tmdȏ.3pqYe FbRȱB> ZK֫:XLv1:lm]\8?NG# CLS>3%dn׆uJzհ]@b'h$W@Ghid(+2N(0w{B~,lKSۇ cC S =>iяH:NŰS8ȼ_Ovh药o3=84!=OZx)4 C ̓i#G3OU>*o}Z䐿S?^_8?$1Wv*+h*kIh(QNbI/wnK ?{׳-ZqH f=UxHȘ)Ok:٩oiz%U0E`XLRP]MĠo=9A{+ϪEw}}7z2k觼RQq솰W1#a K;ibҿi-0 ӡkԺќ^T L"5*:@LJs b.]Bⱉ6Aqk\u7kr6G⥩2͊܄hJ7ڛfpM3(%.${ҶbLxub !9q1տc-+?Z{-F6M6QJWNrN4: uK7=_צ4;@}Uhoۻd bEpSTuo )DOU'?LZ)KiU"xƒ?tNIAt iԃW!{QTCq{h/8 Uw\+z:88+ }|/qV }u6eMtBcc!:;%>;5\s1n ͵XAHunT2#c#!}{>u}dŎ50AP`f}4A)&!Ã\Bo) ٶٞ6dj+˿ HjLbFK1[w13/u%j} UmeQ)UN ("$k%SWnֵ=޵瀭X{X,Qo?mZxpd7JФcaOfsb}y=|C; 7!P8\j&^vܑfNα뷛$Q`gi!g_8MPEsZS)ޑٖu.PD\QUyjPcU~ͩI]Xcmn)@ЖD ~w,Ḑq'[:AW#UvWttW"ČsZv\TwǦVzJl͏6g Vc47D~7{ݍ0ԗZ'|g5.]k85iai*|\oGmd 6CUz_A]e q\je{=^ke0Vȷ^l h ︐v0}fVsAVPg],?%!Ifd2xuu g^M@a0'9 Qs&F̙> e>X%>G} &*~ʎr !vZ7!M-eHOm^^ɸGfAsE{қx_ b \&~Luw<7{e>&=,[-Psjo\і.rOr*->1o+~Si3OT\mNr 9W;v6>>hto)I 8eѰvf Mh%eX(xQXs0r\l]::gfPq%՝wGrb_$P$5nC$'a_wwƗZǶ"4'iK.--Xd ^~r~G@EPvGsٸ&.,nQÊ_B<~>U1TA\{mY.iavp)| Z wB}=nd2%mF:c5*|)}p`f˸Ow#OQ;õG"8bK 8l(u61jR3mlwˍ{GAortVRtGLpqzv~S1-`XNqN;./+A@ ОdCnBBb}p$qh㗎Ӎ~%kXKƍLcp @SF?k#~89+ YG;RF5)ٚ{ ҳzj.d_Nub:.(.5ph#%Y?a|S.!n\2r&7&ykonDMѕ2{T iNAvZ}ZCҳ'w~\w!8ua1֕BAEIGS?^s`"鄪̾ Ki@*s (SgDM2\nvATF.\IQaŅ~XX@)Cn[sHHy]GG[u(l ee ڼ86J\F-?lʢ"NޚBfާNo Qp۲n,0dţX=738!@`-߹jܙ 'W?xh"{{q99E9J'"ΉB[xPhCoQr+ Ei: 1B XxϪ-K&TSxsVHBJL1VUcKQ +ic!|@RGvI1pn(neJ~q&uٲޒ,:m~5oQ6Hďe38- 8@DhW|,8deΡ:U!$IncF4Vp,7o24-!QqvXt@y;@H*EBlKeVtq[C6]ܳ8鲒J(RTؙ6mZFm\*fKZD# Ma6 > Gy u.ݓQ:Gb>r6hR5OnjL >3P"@;~V/'ܳ+z25Q>zD-CΞ|Z}3V5"} 257/PpnÏ&͡0Er¾{>޸ֺѬ`dXUU*>M*j8[7]ǫ<|nM.*!w汃й,P `M? \H(Bike|'29sMx@o1MG,`莓}ž ;Z|>cl.|xL6<ߨlo,*_  ?aܞJ~wAէ~4(l-<6Q bl!`kEVIwc:N{8W9+oTL83/Ke"/57ǾC%qm J]+]{iw8$i0u܏׺]ujvun9Sh[ӮkH+|7d? g\׭y`>CO_̮/@/uwè$1|ϱX7aꊟt0ma˾Rȭd;r1Խ蠔<IcӪ@"@t-i |(L{!l ;`;֦<}C&eh/+LJn*)_?;Yqll~eFV\Ьc| 5m&%5#y"&AYTHO/&Upې_4fm$7UӤKe+_#o\j۷/Rj{wS# {~Sa$׶0}y F"X:e"]:l˫ӛaL;ԣ1!(Tl=*fhddz=r4\B4ph禌g\fUo<j̷T?]Vzŋx7&~a!`)cT.:ȟPXk6V+nzܝvj5/Bxu\f~l[4Vp˰I+-g+u ,k#U A-᠀FЊV:ݟ3+y4o"NMĴ}2M0S"?()ל9^ÇGN瀫U u?Og "r8,X>|/B3 jaT4ѩ *L:9v#!&ǐ-p> cPDίopi FcTt+bMu/0L:hOŴ<[NBף1)0S>ٛ?4<nfb=-)46PiKZ]d͡.X.g]eB kńs,^!;O0˧F/K<9 / &>G! Fk?B ِG:Y3 _ڎUtPs=O&;)hIπ%-C@Hlctl:Ui#zƔ1ޞs b+7E>qvT&m@; R1SjZC˔nJpխ7+,Z+RdqFQFƮ{П">T^v|+kH)G,&=q!hгyS/G˞8OW pyv9q (ΰѵ'cr0t "!ݗL9 gn& oq4dRqA_P} />ũ%K ^G3:ʆ~!P;v)5u\2^lGLF7qo@ՆtpH`0NL *me.W ɔQRU3GY3xqoA̡YWᆢ!_v^wWZ>pY9 nO?E~&Եsߴב%T?NrhN}&akJ" N Ҹ^W _R?5UVlAGENk1hKp2|7mZ ԢSGe 7 Uii5 uM~rlϮik֤tOa\͂?Dז+7wU Hٚ`;iٌCfEG.YolHAl`+ K[[aKTk[O+(g 7vc|$[d(@(r*[$4˫6#7Om{|G~L߯7ykC!T.1D"Hng@bг4m2R f}tfIJrh|f#NP?s9Oq5控?ZQe(4šRnJ ;TU%e`azkFeg2_ZWkR[Z|Z9A}^H`6_ iCXߖ>r!B45V_$|_P "Va4kfQhlotm"%쌭&xcxM]?}wg4֛׸n0{t6^cEtќ\"m;ު%\?HKvs\,O'e:naO:w> P:r]DR 74Vhh?w਻͟2Sc·P{ pMdz@Ik7jgjHV~HSRcRK?K\zwTqwQzmQ{J[SK+%T}Kku8Ccs | ߰"BKa\?}n((OWJ_ecA7R?th$Tk_>S߁8@bd+?,AĆw=,zϰV2sC.Ca1-E^lj%yhkS^% d%wIZ䤧"Qe}@L%Ka,iz7iְxʙB7^dY{_OŸ3ע*Hn"gSzmJ1vpgfڤ@RZ@8I<@]q[,K**}'-p÷nguǮbJ'_W L`c d^9ɍo%/QxRpJdm'V}(9B6~ǫjh8"3uՁ橀_5 SV{g6SMyFީIPg(W{F')z|Fc#5'QY-ulw(,&r\jّ z $R!~]"h~;۸d7ZT;R gct8 aiWP`6h!m8B[VmY#&"kHFWGtpvBT()(5r&]R.++V>wy|:ٞ6"5npSj 6E ;ݪl'6Y)_'*&GeO)I* W ٷpvC B,Pd(O<<^۸d'Z--UH,qf?縴yUg1.u[dK@ȠbgfvVј1* n&%_,eSa.pXP{/T"OOшlka?yd82Jzd$ݛjx3fwNGsMFx{M+N`Jn.LӪ=4;-}`Qv]I0"K wv@O3טאZ]ۇEKAi:kвv*GU ; I]+W7chdr)IsWJ#[ij&^!d" /)x[_Q[h0g:*JR Lg¨1} -?>=c*z ?Lܵ(f2û4QªbŦn":AK} c"lwf,A:PpDZ=5uFՇ$%޽m>ؿ10kŭkYT`DrG4Mh~*Po3R=B͹˹5&9`ʈ-uޏFUSJEKϧ9풸%2:vA*wj.9c\ K<9R;ˢО"9~95_3'yNtzEW E[Gھh&>pE90l՝>eEn|Э&AL]hf)_l2PM ps2$aS @d%7%FfvwdT0ArlwA+Msd"d{PE4%:O-C7a>.겔Z;}j w$5 fҦXLo([Ƃ.'~Q~1xnՎݥnOk-xJ\ob.άDv|XԱck+_"7Ӆ<Ҏ'H҄ݯ2X1XFe'!a3!--,f퐺B>h;֯ppJQqpWz\!7cDW6LflH d kP2 Do/Mjt([²oag*y& yI>Y=S)? l:}ӎz9$ak@00uܕBIdfzN-=-%1|HOΞ3"Dž['OZx^82ƇARZsT_5,V8hvqsWQכ5y5~с2i!1J#&=o}v>Yg3 6"gK=!: u0J{+42oWGCwS)5o~U5PI"h'yKÐ v5XNKz|.ӝŠLNMuT+HY^d˕RcS6Dȶ0 ?s@E$%X2Y OOZ]֥r;$3-_@/EGҵRcKx2n wWUΩ}r'&9S8j/Hjs] 5:bWۢ[j.%!cơnb.xP$e^#.|}CwQJ>դ+0@9m)O~Kp)ǮR(W8!O&&)\%T }ݨ^>;d6U:ibA K]>8r|QBNڂlV3a:^8im46# Գm^  g;Aބ=D* J2}ÙD1qȪ] PrUZP47U yc.~tI Hs%2=m9Wȑ0g&U0&u{iqaREYDVZqw2Pж)-~.U?9SR/6 U~XȏLgCUE/2gVt!55 j#|~oV$BhrXhs}2cѻ4IW<$|MjBG&č0 5 S:UƜ_F 7N 09F&uDeKlm*\Sgݴˌjv?VYi\d=/4R; 'm*0V˵CmZl?1܀J JD(SRQ[TZΝqPP /;XC3ddt 2nUFq㗕fgDml+F'a5Yωm :䌺l)t-)i].gfXTpz몭mҦ~tZ(C,ph: sWv*~+Q-CVv@^W\ШvtnM*r$|5w8FRO5>#vE{RdƭZmcfZFrHq9 ;#wjf&~_yx_RߊV2)SP\]CO*%+;#1l +Nuf!kX,u|/|y䶌(k4cs,=E}>!ߜ*fPNzB: !*navWUBjkJO)dlI}!pM9V^#cJl.~-2q#`ќȹ~HJ fe| @kM,FqNӏY_+.~0<ޅi#V80Ӝ<(D·wQ٠vwL-6}3,f]+&_<^IwIe QN  ahqOήrF[ZFQ#͔}bZݟV-[;i1 CBv4'dcl!>33>"(m >Hߡ0AC_Mݕ>\{2`'崹w&j^:+EM-ZM *8 (4pn\.` A^dgm.Mu$:ƯJƜJآ. `a(')܆4cQ[g R]g zE]P $D渱C*ϵV@4q ay+úwBmbLe?;ϴGnτơ$ytGul}|gpQI3 jpdZ˭,dKhG5A.Qfn(+x0QIϹ 7|[j^v宩nQy>>0@I N[7XBYi`CJI焇KmL٭.ӌ=$ԟ3@'Dz1t͡M2ir׳`1gsViUCO\k"J\rr_.b|>)Ρ!ѷEŅ+1%v7Oiz,cQI l_2L 0X0Oy<1f'|rjvcj_v/|TL[K6.;#_0`b=縳yhz-Z.MЉ ɡ(NLC[2fj~Rh7cTWO 2d~Aeq[o0Qf -l9YD84쟉Pءc;xTV ,YQW}/ցP5)x@>NMEwáa, LTv ,PI4Lb c缝{8m> QVWVV4^Ar /óƣ g>>w녗#>ςĩ [=)q D_ AGf4 X7#G]6A TdG.neSƫO^k1jqȬK$947>_;^(L< 8<cZVx#0禐>i񑞀 j TjEW}Y%ק5zv}xGg^',rҶ[xE_S=O,4ޯ̇MȢ#c-Z[-0ÖZ&|eAK뎜HDˣE:q]ij(.>|ǴE IpiQ= U(qĂ|{N}XYR뒗 x57 oAS֬GUiV&R| z8,Jd5j':j@0QRLAYYXI(6##!1!nN,% Ax$zFLÄvZHƊh vDW?6qgt\FG/fW+܃]6;dyrsAPMN:l䮲Zh[Ppe<@نkT@G>Nᩰ#o;Xpz}̿oapOx B5]lR蚧_gf#$+~9r)USsy^ˊW1Oea(639S83t-T["K5 ^G[!Q+$h=Oh2Ѣ< '؂Cbw]5 tiza0)ry5i}ejڻOHj8g&KNQ/nhJ*ڡ#K1]djķ !`hvBFw*0r~`aMC(hqin:+7(%Ux^6GTu͠24~{V3os$cݘ +ۗC&b L ewPC޹~G t^6*`$5<"ck Yz`S/v4j/;"Oz|WB5Muxۂm"%5X΍Im~A7 n J#6^9}+f'Z.ڝ^5)]$mhMkȼM} xPQsPN/JZӁ byE;>4+| ľAl_2 ],7WaεMTXB)Wc0 ࢗ ڽS*JxsEG^N`Q'ALM:F=>J @{f B9Fh-l0ofS~ΓUBc)WIA.{Z ;g-%va hbǖGC D"[WϮ_ElKi2` f^4君-&ﲣBJg3!u[ ==7핹ӹDɌ|_4X5v o^%{J|'gch %2⡏5(+T3* |!0r3fg|?6ӹCp].Co[ ίi j`k_M@8(>@˃"wM#)R? g)w[+%wY?}򦤩d qI(Sob}|~NjOܰyJ}JWBޕ" [[{!S9쑓Ctfm{{4,aWVɹR۴*,B_c7lGv:w LU.<¨֠{{2,sBR)dFi{ D}0,Ӆ$Qm +  _͢0h@)D%ٰZ GfC@?Z*:~e+h_sqi޷9sW f?}q6=h)^&g"rKNL͋(^d5Ή(&y1_ΑGHXa01<^N-::v9FF$,nxI?έmHtL-0\&N$w />!!SGE\g=gΏf:q Xq |ɠ$B^pLŏ]3.VN[0Qw w܇HZz^y]"Tsɳ3A{8-@G m.=z@`"or|C6nukh!oe+P(MtarO"*6)ǵe{nH2MRUDIJ)jƥYp`B13f3㒱=g}yE ؄ї'렇pu%tuVo)u -fw``2 H?Ayj YDg$a l6Nʼn'tlNe:УT=sGٛOJgE5UQKk0ww<7 z@9dm[<̲T%:wVyH>@l [D?ۧh]İxZ4}ש~ k%qYlɅj&4,)OÊ+vb"'F\ [$N_FI/毡+qS:TAy@x*\fŀp?#ÉX2evt b<[=…M}__u*@[3hGㅗo^:/޵.DH1Hhc&t!$4EY,_9Vth_: Š: ~^7 nfI [q0 f0Wsȱj Gij?ʧvOuS>b$Z_ ¢A`hF%\-ikH /Dr-\ˁ^Qt;]ݨ꽩r.];dٹmDl2'kk)|NU'T H$=}(c:Ag[NaU,<Ǩx jr&ʒ8$~ \)Mb k7^ :$Df=i*ZW%u@a%ǁ> p$FwXӇO (oE2w;ZcLoWϴk v.r#+#x Fᰕʨj6 B ""S;7 39WOUb~a(r`w?k_F-nX|k+R<޸4zR9BDzxI.gDIH[O[܅;tC49[sq-'h G,w!רuG̪=$-=b%*cIj95lKM(7! 0Z}s[#0TG"*mZ c2Âo#?& &Ec"EjلA nk3+0׳PT]-цAR` tAkH0kݭK)9)V3nlhMviuYlYmE@0Ysy?ԇ;^.ղ`s>z^8DhԬUu!{lLRRѫ*+߄֤>ypm{9tnB t~7͉vZ10]Sɴl}1@ʯؿC\Q&w·Lx\~9LYܭl.W[ =S(ϙ)n]qgeb5מZQ厖>?~>du'MnďNT(õ7: 4TlM8^_P{kW {j7kU\xnG{ Q=u@M:e9OUԟYO75&1`/w7d]n}r(]Ǘdx$Er7Da~-jJBp W{TuD@)`^|#Wއ1hk =gh'>Jt~-4TJL.ݘ\{vLwn CWms8YXtlܟV6LӨ.? {ƴf.Nr]/#Vاa. YalUis_`bG?G <ٿ!),%]DpSEB['sH#:#=647)999bVb"d]j!.J}{`"'*E xKf\67BApsSc24fЇwHk")ʅE XjNh/wf-;nGD@/ -~Bf\ӡh9*q&d},?nevz yYDZdr)w(RRϜ塚<;FzNに2LBHx[>2hdߌ?O`i(qTq\ix|Vj4gZMZ@7v@ `i'Y]4W \$M! KRd]zi$Qx~B5tӥQ>#`uEsig֤>K 9ݠ. ,^`q2p2d+'&6d^Yi_ݪz:cY¸I+G%(W8HpJ9mK݅O2`A,RGS o[QōEad䯔}1ӿ0 %S2PYĚl7 j _g7t+R#+> 1LBt+q+}>;pqnO aPcQ{pĨ2,h {fLpo Dyt:'ّ ϖG[-e:y8?M Vn< L/@9㵡(P4N[7.uvXh8gt,ɺSNu3C5Aׇ`!V m9mAFGI<6 p%o4Gr DĖ=Wna`= >h|A׭]:KYb\>{JvZ5 8-{(Cc;XuoA۹Qz27]?JqN%wolԏfi2j(9D轑Z/_rb%upzP[bnKxVO`W2@={ICnҏx{III+^<^Ur/\ 6;W:WnBr`˻+ U&ax/! },хhٔxR O .cwu{΃MTj@TY7vkIXRODєC"]>sTtdc^__E\3n=KoOn:ҧ ~clًԂ&+|#4oc7 cG4{EcLM]!SH<`0! ]-JOYy6w{:{ Nx) N%!q|mh'9at+8UB089x 79X0ZoMPyfe:9_*\p=ۭRع='{5kd˱I~?G87sMnmBbtUOT!a@q0~8⥎ C))UL.yqe^qzNx2W“߮m\  ]C."* McC&?H|?[;L˯MN.կ%l mPl`rHVA~Cn~6S 1lo A6.-׫:zDOhHGuOsV۵CIZ)rC6Y#VV尛 !Cdl21)* _1&21~d_z=|nb)߭_vVޘw]RBǨ.7P!j\W `3(iN"B76;m>b֓Xw,^BKGsϼHI # Q3gsޤĬYLv( /#joB78.VEvEۃTmO@F.oV֬F O,Sqܺs"m?bY0p2|E a)U[Z 'xDŶ7SA-e` 6`5@S]k]P 36d)E8.Y/@DqRą4#-?q]p!ah㉁,z@CWftGkaz;lgHR+Ηu" f=i͛LļVSkL_{2㛘yd|Bj%iV>Vd槟vyE-- [hd|G#QIɐPTcag 0k:əL6_0#[98tFWQ(7abj( iƽj nGuIܶrn :\hDDy zr 볁%v}0@Brւ02b],!]epa1E-7x }linHj 7F@h@>qJfÏn.@_#օ9U\^6`-ʹ|غXaѩ̓TaЈhn>Þ_fYkqsV\ScDžQ:(@∙ÄCOf#:a^JBNk42m򤾈%kϨ #Qa;CW޼קCx;䯿φ^dUȖ "V.۷]Ǖ]Mޔ=t3,Y7E_ ͻTKGw5SXpW8>ak~rqlikY =1}J&]"EEku`<a9ڽF|y$kX  ʰۭ4 `A/qeLYQڇ @JK(LZ'C TBÙҫɡdՇ4/հ=]Wne%ь[tG)O* Xπ68[yC馘Ys Kj\1@X%8 I⯻͎ţ ۨ>^FqQ68GyK|9n.Ƴy p!T4ȥd"矩FcXU'@q@ kPQ}LF2mll0NU5+@kM>_i]ojqoL^VJ gj XA:6`U0V+iiwQw%4$SɥcE1|CM3vO%}Z#Wݿ<9Nu;RJESqS()FC7ڿU@Qchj!Kւuc] S˘n+E37qa/"Gcq73ps2%|lA iB 7mPGnxt\+f__YmڙԂ[;?,uՌM!r5e7 U-{B\=vAsK׻ߺ9:K%m{7u {S*b$I[ᆹbstQ㬖2}&MmzSCG*.oٖ%A/ k_i *D+  \?b@^&WEC HJ_ %&vxS;nQ-:zơX8:Ye|z##1a j-:c[k-;#WM8l';S3 7zcNJ@LHB"r+A~իg63xQGB\jgr5ML0q6YXzOLyC Vƻo+Do½Ji ɟ>T!625XDwtbeKFVw3ezEH"DONd3o{8ƸS9aLU1R)vyr`:v A&nVO[ca oDBU9H FA9 yb)%4J#ӳŽȚ˿6[.(kio>Bx$$j$IòW:HQ_[T*{..K-Ob?x4 :7^vv۰ǗkR6,1N]7 p궳0NPO6 6iqC8|xT^-܏$+QhƾmrU걀E(s E|{LfZ:¦NSD zuټ=ڮ}yC&~ΨpzbZۥp5 ٌ Fp.zulkQrD@oɠy\TthkoA:q">).<)3A ^M>ƥCmѸVP?s/uG SJl:j?ǥ#FEvCᢡ- ~bNޓ_LB>G& b+pj&~c Y񊋾:z$&|O3D,F5)չδ\׎.)9!9i, 9H9S⎪,wAwQ`̫N[b6]K#~+O*̲df]"''&g?f9"O:/tL&gK%OkO}4%qT4nIٍXMGErj-[Uwfbq:>9nEb˙=Y0ek&s:oˮ%c1o]'PϾ {bsսJ#Yj (73Z?R @|.i|mg5NbB/a0AĴ9nrم#Mv箔qaxSKNt|# 2A@g%I #ZJ (*e*PC\?;< ~E@JYNۅZ7 {srU`ʘԝU>2(((2cohjruh/1C֫"Z;YKU5k"O Z:.7R}e*\/̳{ iUj,+m^!ͣ>&PVUZzQwkn\6]}N@, CTf锆dTЍ c Caf{Z|՞L]` b=*.isQYS.!'q5P֢MA¹'^9y^~ z#0*W(zɠ58^au f >- cTV3RݼUb_z%$ Ghp?HK=HoWU 4]ʩ^O1t`;Sbc|]@|V$m1#wܦ-xdi f?̊bJ6iɘ*oz {W]x잍Nb{A>Iy]h/tnһ6*N5.B_9HxpppIh/5}{Q*FKr 3n0Nq:b`B3NKra%!Mrnڒ %6[ "f2V 7 -oB+CēV>Us1ڎZzd۔ 9~,{| : {BA{&=z}ބGLlr8)^>Q9 ^CAS&z/4<2ˑ8ߡR^ox PS [OYܵ."hS]ULZ0@MR:b\qy.qSgU!g7/VM^_f7bŲe)}aڥ⣹fφmz\_AvbGO& / E8NP vG̭ ,K#@@8  ۽ƛ9p  4{+JG{'P=kHH]/LV~H1ag8G#)+l7Q0z=CAꬖ-{tL^jFvrnud1Ag^nTMIɦTR2CE@@ VF1D uGlry!E^%mu.HTaDlmV|-qv('iAsZn 4 iA57_tv0 @DC`ԁM bMR>UO?oڳt/oÂͥoq)>fNUpA yk#Ĕsro>3P)U97pHo2xb|6wEU3ngai=/~sWxi=) AUi2}{.n)ܙc5$\i?ُHO2:K{#ND&_ԊZ9%;҇uoX @3 u/r)ew)# B1vȌ7==+XDL`"F³1nk2B-lLanqWi}W 5 Nn!0eI*giֹqkR¹ig[ń{/$HӁWÃ0<4;u[HAqvcTt1lq_ +\wsFZދwiԝH}")ᐨY#0|]]Tz 豁@8Bo(%xث (2Ghُ1ӵXS ߧr'0BfA?ѢP5JWUSٽ\KIQUd!öLˠ\`(t<d߮f׌fQEyIҟ vd:dӃɤ4U' KH!K3Ħk0zmv?vL+Kd߽П:v2bmcn țI(I#}34*9LG\x~2q S 瀈%|v- ^O6{&9٩.˝D\! 9H޵x y&Q@c &#b* c%Я!~Hg,.hS,^fM(txyyuU&Y;X?sFN~ly Փ@É'{R /CA=qQv83䄟0b@ʓ/,bKo3"=}^656d#ԦxQ ˆH3#>c߯鋶\iL%R%=aaM$L-+;jm{#9mo~0m-Z=ۼWuv\ Xsһ/ qU.ΣpVi⽴{i64FEh4('*Oޭ!gQ"9ާ/Zq,Y۹?Nu8$0y1kY@#TO:-.Rp3k[]TtUҹȥxz'p!@X< vej_vI =C/۵*OP'a:0jcFT?`)60k`2k^\^}!K%\& ռ%)U8:cڔǘ~<¢πݥc{P_j 7(=Xzz))e?UWF-hR.q2h$fyja9F8{g1RÆ\+}5ejG< CQEpGUW(֯'Ȕ~\e۸ȨiTW ˄T*ƧB\_WZjK}f}:=,Dߟ 2>+to!Dll .|ڬN cpCje~XT<ihr];5IOo\L+ΕUL+nI8NrT*9GH%񶸸]Ŵ>33yc^k/(>$z#ͶbeK^;q)gsS~`[>w7C[6AMn\L 5i/~A H9 pTB.0jƽN3TF2Hnϸ>0.!i9#b|r. \|;jRmv C2 :ࢸ%>[48&h,$b4(EK0fQ% jb[Y[hL *Al/b,YΝa@rfg{[ Ҽ<#iScs<=ۄT7&_@0u tPncT, ~Qk>N4wWƽqnۆz$R8?2C#_ުaOp3cly>ONiU۱o"% ]Ą#ݔKlZ[yO͆yچIvoMGE:ٿ}Vk;ܺpܹ۶[\'ZgϚMhf۷h]yq7r\iT7GEg]gNrx20#Q7~Wń.f$z_yLKh<'H>ߵͰ_I+eW*К읺goT`X^m󘘭-teBF&jֿv~_i;gڅÞNHoC֋Ǝ繇`cb/yWcHH3 ) Jf)aJҩ̶yޞ5"*[cEy;iLkj^NssZ9BR[/s"rfuڙ8ut\asSF:~qSqj+;Y'{eսǵ]9}hG:e "[h5׽ F.ҪX9QM!nn_r2E,kų:3gyȒL1~uZ~I eTT-JZcF_ZWxE Cd2~6 w}7M%q1\#]Y%]p)EJ^3M_׵\Cad+k߸:-..)XT]`zk^Y&S|f"bqt\USNZ<BUdl3yBܔ 3o%wnMzg>nFݬ[7=d9fM-Se减y< -ѧ4oKǯ rf->5wT E>VF911 'ԐO=s7sJ ޶y?ΫCF9I^SZvshitps<zG9|WsJUVwx|3Mӊ5XֽӤy>lWo{VYFKy|K{T\yMRFCG҅k +p]eDd)ObW=PNeRy?{Rj-߽e<׼?5Myd!bkiE=N3Ji7V ɶT[g[Y ^35;c봨o:ɲ/mi$Y0Wϡ* Wi6DkLeۈaeK09e7RVgu֫ '#]8#-'qLZ?Sz vE|?MBҟ{7Sdްaub@6R$ޕ{jpHC#*LPvjv$ߧDqbWJ(Mq}u={Zv夙zv׌וdFcƛrP2Sy]E=i]:v͎ z/ig68;kOŶ'w&wcߘKw_K Oo~{ԥkOS=Fಶ=V[r*ɻĸe'{}+P/z~Xu/r// ɓ1B(~7g߷\Sn-BK.`c]"ܶC̷aU+;pUHW%~[GÛ[(;#wRn.&5m.YJ.&̙sR^R l:v>HY$2Oo"]l0uSeJsP+*[֯B|raWg/>@#2 O̹˦@%O)Ǥ3)c +e)cژgG_&NDY3y[ZWTfn\V\ L]`S?s-`o>)F๏6juUOߏ: 9 Jb4)8zhtTH `4'LQ9]AfEYGpltج@!zQ^oa11,ɴ?l|줘@ 9L+O($4aO_*&6aBhthdHhLmt R^ ]/tz1`ZL#0g] *+72D$e1q 8+f 0k~ơG:iFiF#@-ďj~tO-f(ЪB\%$'e4^ru Tt:q440Mq $FVzLmb4̈́| 2.n"mƏ0{~(Aٳ" }LȚd$ͨlB8mj kjYZVhSCu@@eAAUBBEC]NNAxNaѽQ .7.w-'w⨾u<֣A/=\%_6 cf47]T؍mo1+V8ÿ{xu\]obF+Љ]_r- klFLrbd&@%=0{P2@mGe(Ѧ@9Tfx'UQ,ufOpa[6΀9V)m(Ȍ;(ퟢ0 #W2d\vWB=P4,f]!\uB!2z= C9)^\ B)x 9I\dűڗ IRv)=K eL0m7V!=b$a$Ȩ ɐq:@dVyz==ˮDCWy˿oK*Yy\ëjr4܋;l{K} d?c^`: Z &5dѱ @X,(%س#@@\tSg ~ii ( ePa*0 0} ,!X0sK8gsiSa !oF0! ̪0 0 KR~+LC;7X)m*̻6'6dƴt .̟4e*iĚ6ʟ?"hy׹x9!?FEgR,%ZK);omȰ9z~{oX:),ȫ.fekZs 7jAALƕ5noW XsARu6vQYg` B5/_ kbp qXEeodl#Kpf F;# ){p˾]8 wZq ?׌ xZMd C*lPHp 3@'Bl- Ch#Y'Ծ}?C?7BuиCD1Sӷ `G z"33ej7 D]c .A~A'~_C `bQJJ_>Y]PuTy:UowjwPpv˯쎔aȸ $. (>p^@eet& ^\1x霽YuPTI8 5c;0z393I(N2)#AG2z q 8'#2j%+:16>bt WF8n.K,)EvU⸚T|AK|U"j{S+++v+fK4y5Cj!COq5c3y4a1"#k{d=.th=F'#.g^/C@]!ĸOnxN-Wrcg?H#ߋ۵^x- }äI+'wn;39 a ܨq&놜Tw%gƔjM@5@@Ypa 2;f #P^ptx .:/`+ج|Uy +N,nWx,:@Iؤ^h.!u^hugPFUnc"2GO W)Z'/}4x,"܂+ )Xuba/uiפKl|щOzNY~ۻدO_^S=.w>凞F< ~)$"dDdNI3JH9 BQd5Q-wwJ׻!=BF'alB^F6?sC9F/9 J4(Ny@HhH^CНGq@iPgp5JKq%=XA G$'p.xBx eD0u1쏓ڈM"x4:4Ge ^t`cxQ. eLMOJ \h!#Fz@ x<JǂGՓ^&Ȫ(T+h8(doaR=6ďD<\^.,o"~ɩ%d՘ʾp t`>1Y};~wR+ rׯE 8-,fl AXV#k"0R, )B5g)XV4 \7rk~׾UO'{駶ǿ870)'dtz'~ V~sCۖ|W֎\S{}K}}fɏoK O9ty9O;r{١((E΃RʨYB, Bm mZZhI-/Ygvtuڈ^tjI}jК傽IPG1sѦTv!]gޫYR^'!kIEN=\oy#GVg&"!{GV>\[wV!̓i(H'!: щ|}BV@xLK79z-48fPN5qNB_iWejaitj O:@]om%#l;_V,\BMƩMirXݚ?pCJBkե$uDdiŕM3=fRJq)^fA EV7#_PIp}(*L^i*QzZ1"#l7`rt!zGPI49oZM9?yO)_.>8O.Y^;.y+K/thŊ<8?-ѝs?P=|ny>_[:p?N=eYp6=WUyo<™E_ipEg|{Ǎ/{:;idoځk^G|o_ݝ: ~0չ^#|Lr31S%oO`1ЦR=RKQOHL'纪Nݼ^HAA.wLZn4w)N^KϝOnku]m4wkoX',rƪ."5%Q`W?T] E*p.NbĖ,e.Hu&bEJs|=7"3:<_㉅J,"K%`Fq|PΚRXu3] O>秞!wgGcL'RW}>/\'/"|m:KІY&ݪiHB:IZjO mz7N o2YnA'CCT}=sE*<|#;{#l᨟T@Uluզ:;:dNzN!j,mkȍbf:B:&':vv֙>^gzl66?^69[nlpH!۞ m'eڇE !&'MZ(% 誋ptwۚkLꏮ&ZuA4Z //_FnnQIPh-~sNrrz eOٻT7rNgQ[7n'&/qcWȾں|J Ghx(6sjvz<Αߢj*vuNNO RSScC~Z@ЗHOhSx~1>5>owwZ[ٱᑎc0> ܙUX2BE/T[_*i90.ӕ\V6S/e]~-D($ayѾjeS3/{ =79u`zlepFvHuhmnpzX4l{z/zd4p,>Ph5%2 ]f_(#Ǎre@5/q, _ `eNb PeͲ*dGͲ:I mqN'C}-3ir}̅ Y)Ȇh1 ـeD) [eUnRاy NG,ȆOsPI `ʴ xt&e }Jab plؠ] ^O ٰYVқ |.ՑsM8YVXXZ:\ sM d ! klLs'PHVC_ Su ) mማLP6$dSQyO8hc \p8rQ?'X&ądpQ|_'m` l )6YлKZ¼K:ِx^hg/|ZOKOd87 "${B> +N7iЧ wJX@V& @|2(Z+"%Ͳ%0iyUB"n2 +}%! ۊ l`wR{Dq ~@;ޗI x\$-o16> )}@} >a)Y8( } O&S+ %gb~eOY-kZG-ßiO%,`8E?śFz 32 j$[k]B-y%Ɠ_DY>"UvUXa|}8FB8> KZ`Ss& S v:62iċ\쁬01Qd.YZHڀ,ؖbqup SmEJʢ~`G} 9֚"%@[a 5EJRa9&SXig]0πGk%AVf%e`ؒY<Oq$}cBY}ie~V@ZeE;H*'i$fpπ-uC2.eE8M>"-}J/hINlq@YQ d ߔcdQ{W,#/O;JG[cd%x&,* cTb< ^}Eƒ+_eB1 D7L7šVL ga,-,}J8#Ϋ{^+BsUf%; by \7 dy8򧎃.Ȃ 1%R[A$˷Ibr=DA|j,2+KW*CcѧdsɃK+c?.AAq BlǯOG*;Ѡ;q7,D! PA$ecS+Q/yh UZ@V: ytrKB Ő!,S`ˬ XZ೩ #6{涍,m!eEddYȑdgfb@\:2^w|#'2@w~m# !`@4&{IԌI[}4I$>#X6g6[B96h,zDc 諧te ~& a`i!%nS9do ^[R}8s0)MZG\+{L}0EuϱAaE!]#\` -G:`0ѸS59^3n?+]u`:s&z1$~1m;"9aR^HMdS 0c['i{WC| ӵ?gAE-cpIrL!!:cAP?aE'.i tDcEC6?  ",B&CM΃&6ICm_m$?i$Bm" MaXcZfӜO׌A'tV'y qSgMqH\ xpDGbXFmA6 a*1:` hM|Ƞ/y`S{ӽhÀ-ԘMrR袥0ۺ-mGYhM>sa& A[zM8Mt:$Cb$~X4wжzIT̢t?r(Gm]łoXfWгkra#zfD 0)c3A ed֨,۞eDBt?iMm\b7WmgHtGT֌kS[Ͳ-:nێ*$gȞ#g?`6Xm ΏLkLE}PFd吜EvA6pHt G9 ƷiNЖڣ5:GGIxG첱H!O>2PeSXԯb)ÇئAll(#8^ؗ ^H>9=(4mKcOx=Cz8f͸4 * E<y4mzСHc6ə2E4eamOe=C}|. D$J0A,z&gP1bHr3$?$kkq$?PI1<\Er4u3VCr*yX:m%eְ%llzcZiY~C{ S,s@$m!9K ISurygLmG`ob#tޡ쏞[`>]]:i&8agk a6~׿E{h0g{F'G2G}Wd%@Qfl0`s-^$`:.|*r7.^^> c+Zlnu:D^mHJQƓm Af?'?/1W>t8dgs@٦$mgUM[$DK(^<<<>9x_mjg wtoh\ޯbيͼM6lv.>ܮY)/9Yy08#k<9_ժ **bfMx^NE@&p p'Yu%gHM3dsD00EE /n,KO{eI0⯹+zƇGb]P %W q T']\j)- =G{DZ>${O2ӝ-cBƖL9 o6gȀ]9_WDX_Dz-> w3ZK<Y|CV &]i_J[iS5oAL.yA`#Ky tB;D+H$(wT  E Dk1Jj Mg߯ku A.⦸Fq'V"ox,y]ۺ3ؖrǂr=׬W¾Cݥͫuk?,ݤW9/̻7C-%2}xeg.{}~`S|@/Y/(h" HoC[{ǐ'x FT|NHC|'"VP h[ㆆ.Cz1wQ<]vO2@6fl0ZeAW?o+_r+.eO1}VO-FM@8\2H抔oɗS!E.2WK7ZLG)n|^0n% 1$!KT ϴ>K2 9jf]͘~kDѵ]pxkH%|{9Q%"fHj3lvOL(*Kg ݙr3WaƂ೒Ar/ Iws4ϕ l4W.0 ضE ah ґ~O/~`j: ^٣J/UZio[;H4̵QmjYi})k"piIyn ,,R" \oFs4,]+?YCം,[2aƒ;[&B'ܻw}M֢T|*3Ԕװ4j %ˊje$p uB:x-OYy --[K|P4X[iHȾԣxˮc6)-)pꚾcHu;%Va"}!۠}j!7/ʞ _ (sOw 2mܪ(ҵ=AUQr_T>63Ahܾͭ1 ʍnfٵcMq(ÿ- -nB~bo^Y%0YwcN=߼_F䝇Mg%'NC[A$&sN67JL@2ߚ,s83 42ATƵ(:G5he{d(~j!83dO lY %sYŹ,Du(K*"7''ºl0 7W u]h 4 ɛӟNq:9<:9{w9`[U;{~rvzJPԲDh. Ѽ|Y|"Hᑏp/y!X ?_O.\\ =~a [=to^p%y0I-* yc`̸Ip`b;J(*&ZtDW`\qnt:_h\}1'YGD9j 5v,.n(8 V_7bAa@< ZR3pAmtY,=NnH{/n'sAI:klo[ : R&`W랺b`~]*rW&uݨ1n2D.1.֨^ܮx( fYFwR`N7Lx,39>@DJ~r lM0\9Zo@n׈I>rqt! Q*A8b4as~n?13vKD~yiq?/ܺ8;|-IWnkN z1*@NN>L|gShD83Pk!=i ?yksSAGR?niiLg`!ΐҞ٢9y>5==9ԅӉP*Ф%vIOj`7i9=vdv5t/1\7Pk7SK.r 1|6 Kut;nfc#}֢M$EH͹=c2,uc>:Bf$.@4XL(iLժ'~j?JxZJCr=uOYxJZt`I=h +g}`}uġ+ HX#1*(i%e<` (e?cA}S no뿟_ܷ7V[sF7K|֞ g1Y7E&R[ԽY-۽\Z^i_ߖD~įS7WpNg?#d}A݂дZP*\s\7w~n%*ZF<;cQ=4Djs:-K2j:<趾ɬ Wbۉ,ҴX&\0O^TG7"lkzkwdݼޡ#}"ywdQ /?ŠjJmGco91AڞKҜ{ w*:K`JpGK J+3"K"4M0xۮF]LYa ׁ7pMHUJ,8`gSt9u\LD/.wʴ k2RhJ` ֳ䓄YCтi#YWGf4/ƒi ^/!¤d\<\W_F5c]_h!Ǥs I᭐Sy L@j%)558/KA1?yarv͋A0E:ya-XzӻcŁ58 Du [ }28AcFFQ̎$Mf uaXGjKΏOtiY3t ڨ3$d`*6 u66AF`EyvSn Xd.&5z9KrT#Ev7z9(;:H*5.A׬Aqk0eYȰG>lm f)ã)MxyG-?{FvO8٭O_L}x*e" jИ(իܒ1"徵NN^lT󣋢8 l0`ixV{c5d ۣW a=)(> `s<·FJD.U.ŅxĪ?iLk㻴8|M<.% SOP) Q$ c AoɎedri!(ʫR: -)dYqD!" ]5J){"z|qe}7FC2a}}(47<]٢mvᵰ@-bE+We}Г  YGbGTB~˛bDcH^ڋ^iUj+mڗg/+;ǷXڈ3[2O+Ͻ3ޟu$ g<86K  Y4 ɭ HD[L~׳hq2ȉӧA sZPB5rzuC :8RGk}P$?e:<-INj ۆhOK~ef*}pW>OfI&OPʤ=j OokUB`OqTl2^ Dz7M>dJlt/ ֧h|]_ύcl= Q,x72# `{9,⒮"\? x`Wk8lGS-͎ a@?I}ִVD[*@.-J~_X_SU IZM]֠o7Psr MZTe9g\OݛΓLEEũJd8P= :&ybuDŽ)oP#CtX5XZ?  alG#?]*tkJe%#RYȪdIy4;Ǥ&i&NSQ%2O?]'&pTs`}=^,?5^)++.I;F3 S( sHw+MZCH^0M)zqi>]ҽ r/A,rY3{%f>92މ`x'ם&I7 ąt+q2IDpޥ[`6\6ΠO[TlX^Ӿ;Zکbd?̎KVt#(QlU>7!66͟~y+ knԬr^ēڨ:J*BNp5_?ϰ+yacW#/g=ɋ»0kk >>4xu͚71*Ya,zQ] xg- ߀3-uQR|3TUu-9NH~Qv] 5D{/i}.x mbx{^') }av_`kQ=#!a01\@;si{G i\]~Jg M`Q;Hg:uct`cK8J0^<(cOk sY?I`1NJg@K2;ہ@؉ gCrkjt\ɏʱ!Isc ܯ'WW+Blddk[DxնMt Pܴ1wIoB(_"p5^ xA MH$パ[k{ uh!y Їgɰ͢?|MX!h\Z:,Q%>([1&ZٕTJ hu9;0r+ .;ꋱr}>7Jy]յ{&DNBi G1r9\t [3yjd%$n2u@3ƱKOHPNP?MbDƬj96n;rraP}:BU"N|uKWU$/ޱTHra_@!r҈ЭB=I XkH7?lw Kj(tuhIIå"hRgZ=dujj.zڍO\| GN\HJ͐;sY8ק8 _>xBTS֒Ѳ*STW9b@#dH>A `89 Λ[RFW*#@Oo'@(Z3++Ul zonH}>)Ka ;ƙͦ[z!Kӝ&f WFl?l88هNK0< SsNqw^3KNSŁM,։J%akM}#&_rE},XiZ_Wq`a5`eg7M̟HY5AFf&I^Fg9uڰ-ʇ9oEŸh]w_apQWO6mdȆ)ɾu}Z , +555ZÂ]]oP>Iq*Kw3`j[)[@S2)Jhud H5F*-j?/Gv`_ݖxi09 vu|:G=;ő,:Lj UΈ=8H[-v.׏"Ic63xͽdť1[wZtE,X)D7MEd4-Ǣ!pE }d(kw7h"FD 5m b<^%bkQÅ-j@6Z&W\ihdz n:Z,#|hӈ'! [ËmHb|[UE׆9ӽմGBw#6;E8JQr_H0Wy_W/`X0|NW'AB6 KvƙMH:G4@Xd׌tݹN&+hzMFpI(7qս::RɄCm06'a%m4;`!0k@1F*.;ū%WX(DMU(>t. 吸rYjKgU*ZB")DPKX9H2>92h%ðR:->//+=ף/Y$H$`*f;n91ҿրi?'@1(m9+t<-җnk|ME0 ^C ~WU(WԀwD;Տzx,u(ўA,$fs: p+)YјPpSZm:`%I4B@6OF6@J>]6%ì_v1`vd;MZdMYp,7nxE,[EwˢI'dmS<%-_3GOLSf`b *|fΏvQikb omǯ$?]e D/8*! b(pzGhj(VP!rr{faiʈM||~(5̥!BWxGNP e>QbM2:YX=gY]4ߖnzj5\m!j/mkKd)(=~fnjR61%~BWs1.`l/I@$ ua)|*y4vhmʶQljmՒJꗷߐG)\ZKBLYev|Px UFDRct5} V{P~p MalR#hL̈́H榟ID~ĴY;\zbv+ЈW|NgQZ$Z7͉MmDxÖ%̝MR)jd8ʬ- b)}k; 5F6qOnc</.J 73φ7.^a_=$K¨^6 L񞿸6ac DLmu"#kk^7þ|Zf `žq/3Ȗ7HyU{p?m Eqdtf&Jq4(!}iF/ժH>xvm=IOT/N=GF#y?mn&P@܇ZwX Z謄xњzE;?P.`*Bh+aj5ZN Łk )> V_ǣiy]1촩\U;^Ũ2ԣ2_;%ދӕӴ[!NOkv1%10X '9EB(3ON6c'kw`V{?x%zfw-xtǤVDyt]sTF:+lFִ<1v)Q^I'h$]qU*_vU gC \Y (f/:RVa(5_߄gs_l-i?-"qeNҎp<6x4u}u݁L^v_ɇd)Za+ ݥ !P/AA!.b&E0]XlK+.PB/:|> FH} >5a+[Z_@)`ۙ uO}3PE0ePB*/7 zlhQ?B,q!(4u{!`s ߚYNiCU<_E{Jlb!rw Le׬HTϤ׆Q6/X[,V18x7T&fc3R*4N7^D0^sο=w–<E[`Y*j^!P%Byʙ 2=q}~SuF 9`-\ʥf?L<;C*`= ˂AdU׈4E&=aрb}>r1Oj=mH,ǜ;<㜳O8:%Y9i:gBd/Ȣ~1~XA/l溿Fsq H~?&@lIͨT͛ɇ|FB PK+/qؗ USQ(@Bx;UI:W,{d쟸avdy-<ς1 a&pן"1~D=EPoglj" P~+V [f/'lv[p@63K C~M_<#|D !? ]uwD~L[C`0@%v zeFn]!6|FІ֨>"Ga> m ЗVw-Ln`Z Tl6< a8?MmfEY^P9=2h=-Nrt[ōI#Ɂ@m|J#]I@? mǜ8?:4}H3Y:t响=,) 2G*n'BYE7 \`;'L!m80O qNy`ui͹>0Rban DjA|q \]30I@sj3x{Qp"!a,#OT{/0mojC ?ڨ e}'W:j]iwꨠxݹٿt?*pt ԑvߓaU"']ePɯQH-;IeK4Ufficb\l=]\;k+G^ ZW9/JHb˝ִlj#|Cf'Ū>v {Ƈ$gmQFp) ,$ůu4$djy$`h]SsN~dta{ $(LN^?5? ŏ NJeȽV)_E?v^AO2m8pך} ;留ncS/4HPmKE?%,\x1O|J ?@i﫨ߟ>5[>^rBz (s:##/zCk F64B}C'OqCD9e{G1=lakm?Mkq{mk@Nm&ۦCyc4^ ޒյk&gǣDy7\ A*^Nv7&{™_yܩs_xE`1YM,l^!' 82~#ǔVO_`6e:0=rN%!6gPT^l [RL"9.-*WF{NO"#rɔv.+k*4$IEeM3$pbd:{n~Ulͯ^ mfm)auY ۧi_9b]@˪l-rO~8x :nN\_q`Ea.6PZ)FfB#I׃DHox g/6KG9$ 5Rf҄qM?O3zI,XyHLozyI-PbwbVV>yPr6Ch#l/1O(TOMH^kY'>DF1,ӆ2ZOOϧ9Jf5Cs$bk?7dhP-ULgB Glr7JfPU2&F8yI_uӰ<k8z#C¬avٵ>hQ`Vo?M̍mȳ& 1gҍ-ߤ!:g8Ӻ]i"n (_QVOEX, ag>ՏM+zFSfX=F$c?F_ dٰ8T'uA}mz*'li3܁!5g~&zjs_DĂft%uF}ݥYn#|}T>+Uw+@Gڗ\{ׅtA}YQߓ4יbҭ4j_kojO\I6|LJv(=I /'q9 QUl?MC{E\6]S޶Wѓ iE1, nge>ceQj F#ӺN܉\NFٴCzvEx*m:69-m쏄%ޣ"t~Ox{Ay"L@ud:ߟѶ`wAc=+g[+%#j#{sO?vN6V%P ^ b#p> tNN_9'‡ }NxԮJ mX]: G'd=aU,S;GazLS ڂX>ֻ.T&qt.tfceE lJGJg%5"͂\AY;6VwUQcee ̖ܷ !#LKF ע]z4_FmFhz;{6; yEUGG e#"?>rx_mM[gW+f8!$5tT]g?i]i0dBWaju%r+5/-l~-Ԡ>6d8u}6 ҂[mw2i]uC"È^=nC͖nML򩡑h𰵈 O qeqTH!*F];RӉu nQjt7SKW Pf3@֯'(-MLS=CEb+"n61Dl4R{@..QgaOLު+!NY 篚#IZIXe2l#,Bte2m,s<@Z= ,M|RC@c~1òGv5@<㡐Cl\x$z%bxr@uS^woodvKP&lRky5$/D8F)ak!#Jŧr" ?#Oeӻioc2no=`%׏mgfgk ;;my٭l'mok'=&`?NgnECГbeqN?lfmkz~kL \\ vp}fd!:vŢWF<)h+*2>EfKȱl(dֻbP0c7Zʄa^k~ BtJCWU}WʅYd/Vҥ"8\*ʧ<0 |im'I\;mr#z!mAO 3Ǖ!TQ¡crZ@kj;e٧@7f.jme2n<߸JQp<c|yu̾qVP]xN<% ; ^44L:lS&[8w ~ ( 9~y 楾\hd nhիh =&mT`IwLBv[+d? Y0n<} ,”zbsǬC#UAÍ)¶-_MW[` ] .7UB,F%_XoD+i˨5"RaWIX8~>xжlm#ϥ:1ͧp!ޏa󮉂X2\']tnsg1-JA'qvpWʶcp۰]6=Xlⅵ/:QrƁQw 'TQOx# ebׅXXu7ȸ5F瑼ES;?ZzOŞ\b1a'ރq"zLڐv9p_ay0%x(h|MdGp$3n62GVcI1K )lqC P8ߍa#O6 noG?zۻ6ww~_Ϯ;/?礑?/7ky?K+7_úFn1l0uD BL3k_kAsQg! vG8TҤLy,Xbwln.P{u|Zd[&5FfZ$1"`Ծq %-P=`%2`c:xԇ%Nޅ-:~?P5  {G9sT~\Eo}y4%AN?ܯ=iǭ|ٝ@V_@S2aSC6/y`4׋~%ajnв64cCC W8v^!3L@2p6$ߒVzhY zM1d: Kl->֥:mY!GE۟ꫲd'kOywBMM/H.Nx,R+Ap\Jkw=מ$,6V2Ѣ>؅ZeIf0b~bF7hэ)PR?9hMәӱ\SZфRoq^]½+o^0w(DQi\ҵqmR _RyoV[-ș0ov=ݫH&f vˎQ`6;skq鵀^E=2E} vedo|ԩ RXp67`*gW9YIl3d4ܗ6&Í]^,#o9lM>GG3 ?xu}${ Q{ \:r #/fJ)Sx#-U$QrȿkicNηa<4F mq"U] ]=FV&4!6EC wʌ 7VL/.)<=kԚ"jgU^Y\9x=O`robXճfvLENQ$_qj]vq#_(kf])gFw$7S(6*'W黪4E]؀GJemRur=gQo:Z)6<k:DԨ(_9:Op(WgQ4 Ήs؀Zc)70/(00!y^)6bZUX=9Ūuory"$8?ŐAp8+:: Cyo8.T7yNg0F~OIΔH+j[5VU57\8.:0L|vӢUԿzcJc4JSj֫RDp#;+aZP<) Ms玱Sjj 4_Fe\;zϰx Su\X`\)!s/0 yXCZ K`%܅_]$Q#}+8ړFp‹';``ܫ6U?;qo#!=uHBjԛwl]Qp;ZΠ\q#:RFku؍Wf$Q;Q>*S 9*TIn 8Mr~T950S8#~T*)ܼ$y"N%@ꈘs^1DeG@< ^D\4jHD4ͳʩhԉ嬉X!~ djv } ;:TBJkW$pJyI%獌2CF&NOG%W7|y˲O Ԅ bB.dӳdy _cR*/۞+G:bx-5݃C$l/s5iV:8omS,yN-tݣtI,$,X4xawwfwGhG[O8x!YՀGCL/7ܓ7#d^nk-lcX-bA#"?!?0Ϙ70$uzw^ X^iӉ4 9;<+gPim,)oB)V-VF G<֣PQ>i7rg"5ޚQ/=W`l,%¸u㛏_5dߟʢԀ?$\(DeMցocoj'0Z$*_ ,!׈<vG^-@{j%pa&R!C`w݌.ٲ7ju 0gTcnMT,-NwOn{m߄$3rB5O#v"osaC$|g -@Mت⭆y a6>>a:x\#1cqQj N7Ynnnqnp^mcyvmEzVc·QUj4=~QjcQ2o*$b PGi9 G&il1GqLWPI5C^:(\_ r2tE) EcWrB5b#aڏ^1-X/C,i_hZоfhͩT,y6%4;."1''%ɺe(` a*ߘC8Xok;{BcZ?#:H8Jio7J⁕XD)ھısdJ~#PlI &ؠc0/xc<4Z![WVlCr;Z SOƤ%Cr鯄!gM  ;Rgdapz1 _nr^ zԆ,AnX;>}'a "ue'B*W``gpWb =Wv/zq}Tr]א&BE"[sf$lNcjooIJPSsq] Ol$ջ߁zC5. +\4BdFC*-I6/CdU2Xa)85>M?W&G&$^c]pt?:k|DDJGUS=`akWg8OwBc?ZQAu#@2yƤGG=E!IQMAxͲf-` 2[H7!јEG\Cʗ8^y+nqYK͑{6&X͛Ņ3 MҬ?:[ |noaЉ[(p M@oa[k:S97{B9PIM:0wW]Խ7`r挪"KQ5 yJq/UoQ8F:^6H !iz\IuWX[5FqDbka@4 8w. ݋/~ 4+X1uP9+X XĆ?*Uԇh^ 㘔lj*Z:X}*)J&OZCo-J-*3aR@(nJHCj6_nV8A|ҶfR'KU#  @3M8T:G.^ts!Vf|]uHto`6#$Pʩ-ڄokR捂FS*k3?GqrvHQ,:ΞVo^T(jI0 2Cma!nlph ^OiF `Ba5t.5C0Ug*9&wJUeQ6XBbm_ymlM%0^YKQY6aC2$tMru`p.qHX7o -ʏ袴VcZs9R$,L:+hbFbC~(fʕ$=ax¦u6|d8U1nG&nz8`ϓ2b.{!t4ڏMяg=݋P.UpYK:Viߜ3Mq{| y#vBۼ8-C퇹V]=])2 ,mP،$4g-8~#X/., (n"hQuecPd훣Uh~q u\wH#t|v 7C,8YEٛ5NS Ag0H4 dlhWG1/Xo¾Tt/I^(5inП7F_+P2eIWO!K*C ]Y;QT/H`&]ø|CaUYU$Q7BOVfnnfD~ 73YSsv(,mCyJN`ka,(<) y ĝݟ>܈*)GX~̦my-Ԥd8BEF8f[OjZR>N+́yI|mMC ^)&͇/hƏǰd)!l*aOlP#h'AEGtWnpɔҽܯdhf Lrk4C, .u>#;o.S5i+4<Kv;D4<&V[dQMD5Yj~ E5Y٥Q Q#VG6F#NV"pٟXBNv/0oHNJϖNÚm!_M 5_gdaHۂ5$sksJ[JN}p 0j\NޒM5Imw>g>^KNm-}6l!&M! .Dd߄R&Ēui5pa;tR' +d؀v6ԊdH1h,uR7{[D)lq4ڔ` 7o|;+$YLɶyW %_2yd.Dt(+֞/ZweTO캇TUDu{oV[ NhyIdJQy]"{itJ kMMsV78y7S#܈JU Ro/?;ȸs}ZbbzBuZY/IJ>\~l_>߀&6zS7\<ϑo2RFglj@VU C.Mq/FXs/azQ& 9H*B`r`NQDJT2ʧ쒭Q\= d?lWcѺP=.r͊5/_-VryX+MJưQeָ)E/ dQXwVT0}n~4+^[E\]GNF4U3aF$mHZr=,0f.![WOmd$;+IÁwc.2 s%fQ SvEU$=QGw~G9LF7B&wk$=%TJpI\j r&f 7)VP A$ާlO8I7. $-?${/.E/ 'م|cbS2g[K־e)/vRDRưgIRć&R2zIR8die}Xgaյr{5涇yj =^Z M4aB1Ny1シ50'XRkثltJ[: ѩOpjQ(cMD >CýDž3}]I{Jo87Ǝǽ!y-gRkth1~NDuJ0o/q3|:?-z-f/0Hu#"R/cNe #s&kIoJoM#!I }|9mLsQ I߯VL)? 8bCEXGmvo3VH(03Q(XY1NM.[гPB$tՀ* 7^-r5VL& =#LbQzvj&+vvRU: vozEԒQBjN1<#yKJ+./bwJ M,ɓB+zTj,ia[S4a;GafRäX&w4ܫŻ|TD8v |c%%t ߆E=x<٥>Mn@3X ,K:>Fw,君YPjRBrb#L)h|I@$rĖ ̊f6aKDrd_ /jIrx]/Q*Ÿ;SRx"n @:F Hfs g©†fP0'-_Qp<~}iūsO5" UJ"jP%0uﯥ\+aUv51$D$(`?Ba%hy)y0AM݆T֨P2@ ZukThDt֥YGFMJuҾ4Nltћ c{e{#5MP ˒iɢD1^EHnۘd|v?ޖdq2cNƎ?NgnECR;WV:#q08bŘݿk RTʍuF_Z`hzѭSNXlz:RBz4ڀbPhܿrEwkukq]4ZdT5lq*a6nwj;1pqxqt #0j=N[!F̅wߠwS#205y:y{3v5W?}{Xo8Ì:wHbG3bvG]ԎIަot3CmFH@bS6<Ιa=Xks9:=hoa0p-& {e^W}'1vۚ^))+Z?$JX-Ѥ˚v=(r˄"?}FƷpx]ږማC&X$>8B,}{{ GU6r .,׵$/5Gn/;pTNqw2E$2rS)b9xCޠD .鶧/]'e601%1 '+L!ְRG0B0fv IJI8MY~aLwjgJ43Y7Hx8_}6г(& AwT0_duGme1jOn'hˌcW 򝼆$?SkOM^`0mH XE3a$,B3wZ(ۙ(;Ieo3 Q\R'_ W|6YM.2c+Їְ:k z&JZE=$>v:1BoJ&2Lyi4Ooդvkrpr:QYSE'"`|Jz8s5X;&jwssS̓Bqq1Q@ *'#+]rjfww!VhAcm.A}g wJ )gLnїmkEDgV1sa )nt&还ZQ+hi瘎X5}ҶWWm7:#CtPr'%I8'=jm2F0GUaBeN?a_Ʉ lyvcJCCǨg]^%}pSCIlZ\䐩HLyp'q+/PdQWUԖ H(^[dV'+.o!dl Q0DcMӁ ?|@_=4M1y'xa|1 `Ï9 >yJcr,KCijDK7䅟KR? #dËkt P5:;3~7NkֹtIoik~Ν6tDĬS.&Q4t!$zš?m3|ҩf$YBf'.v\bp4aX UO0ŤfFes-DěQw2)4D!'F>7t4$PzoWTF }~UmD(T*ם)0 lCܭw/5"Y ׯTܘ#$غǽ&~ܨMc@~7!Jd*IomPv81%w[7jJd4l!Hb@B מt_Ka$z[&NKZFMy/WV=BygP-fWt>!Lr J3}FE\'z! J譁·pR&[%d<9‰K4E Dyd؉m"g ͊&$=1[w29w^xZL6 ,O˭! V6 }5'x}6A+O-NЪ)Ə &l_4^[$YS2n Fڙ̺R7Y&Z\GXv^LdV_,E-~*t;2^aGߖD-Tb.Ciב=_U%7_UU!8H }g;#:"ټiqNX drC kv@^T,,$%c)wӂjMfch{4 i~MIb^=-8nxIu fӮ߅݉(I5C2NN 1NZ GOڑ S%UIzچl]f3oP¥wM_OJn*%z]қqYxxQ*jBjܙ6ލG_&+wUAl$<M;tf.wNpAN ݋I?z~bs4Uo H-|4}c;N&=@N˔PJNqD<$_bSY[B㇆;_|eDpVw@FQ+qTr̀4#ˌfHF|q}کU*BI `P)aV毺AckHjNج S7Jd[kzӯHzi' QmҎx6yH;V t(>ݟLwl|wvF5Ψ2iͦwONz00|1!n}A+n쌾 ]&{6dI3-A('l'?׎xk8lroݫKZ)Lh;N(diEl,э#!iG<@oO*ݎK_bLtM{ %eP@B !ڎ30@; L5N7U 7%nO>S+Hm{{ ~fm=a4TvS [@&Voe@5p 4.Cy UH\BX FDt Da%)Y)ʡN&H 4k8 C╤y~4/t?tCř LKu 4>\XM CMDb(ˤ;`%DrX QR;3FLW;0 vWF8H; F_.ϋ}|D/$@$zū56 贌э+ۆt!w7SQUG}Wt<7rXp^ʥxSF~FgCV/4_x+bEQ3r#=U@T9L5)j+S@jZlaR>:iܐvt(vZ>8'gzz`^+J hѣN?|` ꥢn:EAQ%_N!_ {l) ]J k)"ˆ4aw|am좫:Պ"l[p r,ytԔ΄d4. h`?;/)S`B"_Rj6..w`/ֽ#yu*_=/Y#"[VEBw~D/y)~:v0l<]nـ /_4+/oG,0v<wi<>);q MZ(P*6ʞa<o%C?mЙAS.new_v۟w[kT;pWT?i]u_9qDԉ0E;Vi_7`Xo9Z[lЍWdW'&4zE#q˜`wm5BxsJĠ/}.)1R n ߀5uWNRhe4ytgpg4}ȧwt7C/! ؀-VjNGOЕJȤHٌrWn d;]|GW'M%Fi3pb'N*vS9q*AFCgfGIj݄sOQ9afDy64M'7WzKuD-9 PEvb:sDmvo7齡mR.AD]_6wSuCNۛ 9_/@?`/)qNd:L&1lMgIF{a6l9~@}$ S4n#DCgp \/ {TT9uM/v<vW..ZLtkL w#T[ &h ZcA&/LV` yx:]X`R$Wf$+86ӟMH+84'h&!CҤl4 BclC9 y/ +&ָ}JB䯳~%/[] 06^3ڤz-;P6Ʈ99Cay(ĊxfZBTn mCT0ZL`:إ8K؝qWm(=>ٶ@a,I7NZC- YNg?$XmAeݠu zu\lj@L'r8Z&AntN. Bvt,{Rw]TWGe'3r/@:u7#uP3`u8 -B#SF{ElcD(?F{>8D{!YVC(G$b2fۻ;لM!;Z-\w-C0"D|\frq7vK-wSP%Q\Sat6Nax|Kapcss |`VK8?䨓{XX&)CFe=3K:Ģ٥oׯU.mX@ijGX*~ȞN:f{vleovvwv2ݝ7{[o$9/ޏT71gLH/|,ސ(E 1t#ޠцJK{6zc g )x` i<~Xۏp?TM7g%-"]B- GkZtdf;(G$ ?:ߨ@'GgK>e)+6]l;aDG'$XVy[8~A#`.q,hc  QD8h#k.iF_00U3C6YKeۉ?!!'Dd5*}%SVm;33=In`4-hy-YaNr_-ƸbXDfk|2((}`ewZa{V΅.*T?םK/.uኃi: G${ 1tbEӄ\ Y{Z 9ՆǃƆܞq3Dˢ Jvu_7 zoa~_!Jm,WN6P/mK]q}LbŽjP[&#Ή>>U=_``{*{]MQH;q%RD*;AI!oU-TjHlB:hYWI; efpӄ°".n'We+oIdD>Wkr{x\P.\M4:1Oh/ \) tI,'f&CX# pqIqѦk\! ҺPҰ-Q$e0R? ; +#|duFR9w  y #\'q=JV`!o7Q/R,-ȃH봠+"_*e-'-PB* @hrDP3›klt FNz1rn!SOJ3b'^!v7IH;!QLvXEc y%E5(ՔIZ3i,i#|(9 캩(!"sOuq0N\j'ltC;(ZX@Zፐ{PwA NQ}ws``N{pfXѕXJ$Gl8Iwq 3Gѽ*T1o-nG(ƚg<ϝqty^}5c|gٖ\\@i!P〜(+u#IrW&4]&}86YRBD G!G@`3pm3K87d6R:r{/'_TЀ@ ?a =+-Y\mg)7gHCx&W4PɃ RrF}CK(9LL{%Uv VH%T}k(o098*N8oA?ǡF-D/֮O??sNi5xO@ .ƤC.=$)p + "wdGi$ $0bX9ž$3τT5gAlQQҐ gN@S&Ifæe.'eIՆS/kC,I `;>u4sO-AD6NAuOȾ*^"릯Ҩ'$GdC{i[F㚅®Ä.xǮ?,ҀUkg;o{+b=%_,4@˵sR) $Z;7?7Of{6YFQbѦب+q1mT%3e9駺?S{톮lQ>rN 0r ]4=( [ŀO7 ?9iYL[9VN 0+8.V\PL-VhaUEۡ%B]!ꍪ]`džCd.*<WѨ;`&w=]'Ye=0B( FcK34{xT.ƺZߛ)،{p\\fY=c>Gtm&uož?fRb {})`UGowSҊM<:Ƣ8G |pYB.E.qrH%s0ONuGbX oiUjǐZ69߱X,*H\)_ ̵(WUF4 , | v)`#`6.vz)74k+1N8ߩPeX{lUD"<;3;r_-sP𞄀iʐE(@,kr%|qFm gGH۪&"0 Qkzrvje/qx) ꞻ%`_?+6\,+x^7%]ڌ*65n̏zA~\\o.}!\K;%K%,!1 %2g' Mx2 DTZrknVn? Uks-.މ6ZD||_V6d#/ AqRy&o]ġd^+%,|$da.CtG~˕rT Ӗfb|^U1<׍&$ U(a%4H;ƺJ G`BXЩ}7 NK(z-ϫ!5y;+7Q3z Wp]qBtAͭ,z,G7bzdjxz֨ c'h~?aacvt=@<{AjeJ o-(3)?A(9@nS|gqM9:;9љe3!lҩY.9rmmRXsUcB&,1/ҋDE"Qz(H^$J/ҋDED)$Jy=?[YDULpfϳa*&IBڋ DM* @Y-J[YYxQj6Kf29?|W/qhbXK6e P ugd͔)$f_$fх󎠟βOM.O 3OOӦمr\u LϦȤQ*d8 ӈp<7εu$@>JG/ERs>Z #/'ܥ*2V,-XAC-RN<ά %cBr@jSMYO}BTxRSO/,x:|<KttlA@YSbOzh 6Js34Q( |.tVil:-"ҟ `B,Ǖ\:;"yCrF+,HqTȘ``4ToDV j?`$إ J2Xz^hTTƔyדШ@p QLƸ3)8o< yɽU &_$Eٶ ļRJ~6vvT?q(B8)0Ig0T?;~)Zbĥ;!58w@x ij|\3;`\Q^@̚3n7yYQ93"~BII }>l 2 )j\ ”M\V %Fеj3R<ܦ{^wnW{p|ҺW!~xrC I.=.\Fʡ,-_Pti9,|6)N ٤O9*o{aZ;1U5V n y{ U HP6ȒUG?6]h2~J<?n [ZͭDc3Rr6n-҉ ݓn>hVD?\Ǟ DÏ p©-PĔ1I.WxӴwl!y?$-Q0z¹Q$EV^e@T.~(׌ߧwN7Aj T=':4 ֓SMpG!z;E!n ÑiаfaS= tu%9^VЌih$qRꍺ*y2}Uʊd6"AdMA(Re'Q;DnTKAsՊcdCgfg1$_/[Id۲s6_e\90" .S\&׉nrHf)72G%$I /uXPc*N`wߒ4BD7oW6k Nヒ{"B0[ +'.p&H0]#8FYy^ƬV CߺgfxQ}dZ1zȯ&9dL[f&gHS~-oYzN[QV%Lt\E/jaCA F! &j䢪hٜbLS,᪉܇@eŨQd`G|=1W̹a|mo Шhg4B_Вg"4̰U`NC2a8tT>5@̖vjR'- uKoAFP4DV q3kqg/Jh.P)TT)(TOUB+rQ)K9P>Dk]óT GՂ'-䋛nӗ  ar9ackBzdRW(6\g sJ<rK䬩 tR,[A,T &-@XM ۊ7vEN֑Hl$,׳Zt3d_kdO`Nl_7-^کtȪp91n "*@^Abx̗c3q]]&P,gQp2ΥXP6"RKxľ#1Jbu5NB& I  0Q&G8k?=-Ҁ͂`yZ_zFPB(C˳J}˘$+U'u{~PBK]IxÈܽ@H?W0mm?娇S+1! Y>.?ِ(4/k5Dɨ`S^JPjI' 6hbyA/Q&:n f\*ܴA@-j r/C.l:`<6H;%AG^L;?3Iƒ.^" rpFϱuF|LHYxsx 7N8_vw/k:]GrCu]l H@~՝7~D)xe/q6|dס-3S]ΚF} T"S|Z:tG><;K򬒧eYأZRb~DdCfzQN4R`Sΰ`k]Pu(Ogi|j ~([bp*b7N }\~W>yTqO {16nH1{6%~Ed{r6M2v ! /VJ*Epib0{7hr0f砫qbZe2uBTe8xt@$vy/(\x10~﫞{R9<1l],sk1~<,kiS. )+),_٥(aw2%մT}QFzSUb4Ϭnv0|~4.ƒ>B8Zxx1Eɴ{\uqk Ka2'2:6ڿ8]\̊8P? HPP/qT墺]e\-ÊXm߹Bg:VX.r tsٳʴ]kl(7c| v&F{0M }XGY Y }Տ=Fo0D2'Bp)vZ%;iwb zE=O(pGoӸK _Y1CZƷv WB5o81WcbF&wo.ptit1pFsW '*8tl2p S)䯫[^4j/r~T5*Mʒz8|7`c/1x0Eb0K-DTn;$PAH4$wxmtxR/$BpGӪjܱ7qSE@42#ޞN[:!F<jݔR(fT7V!%@T#Ȩ,!p C-v! + ʚЁ1'D@șzwv\>}^{ѭ;䅚%T?E5!AӜG Erog=_ȼ̼\ !MuLF2'hFD[N_ܮ sT#Ѿoq `x9(,Ls~pcw2ap^w8 sf|Eȹn}%#2OGA (P\K #n/_NGHxzZ ' aK 5O]kax5  "feGAcsDsg慧yyWGhfe|YNMY*-'XBg"rodP.MS4;Enzd+!hp4x:Ni?;9ο[ k~ P~r{1*lݿxF۾vDUhg^3to+u]ܵ/'8^ _} L,5|kuYpq-&LhI"2GxU\_'9vŝza{MXC;tdॊe~oml㒫O+1vxkfcYΊjn￴cb eѫ!|fSOdļx .uN`;I1gܐׂ}=d_#_̅wV|OU%ƙNĞ/C:_>?&P39VP5n0:8q3`3!)rֽF%#In 4&10%Z5!f+3_LcC @$DaP΁8ɤE9è*`!\f41DlF#f$Pb "urKa!7Ӫ\GgܾգT*1Jv4P tݗu ]o!c,h{ eaٽȑOZ5@|k˽{KHya!>?-َu-#byf-,I@3g|ee(w[KƗgol8\=Ӟ (vw@=H+lbimS- $yXc:y$,4IWL*7VYXH7Xq,s!~‰8L,j)A1 TQDgw&5 NX:K>բ}.=YD&ď9&D`mT ap#Ysɬ4crAch? -Z祀gI~V ?ћEVN| #oƇ#Bzt#~hxv$HDVmȆCyT+VUx2 Pt¥ks&5\~yhqtqnhseG+ceGK裝(R;kp$RN[ҙWS2w^ܩ\G멼ft/dwx_T4 $D(_k˻w񵸼ƻ]@ט ,Al$&<5˞p-qgh[,fXf匏&#Et΢sPx&ř 3՘ѝ;Fa@V[̀4Eb.b:qáw(7bx5 CU߸۞5dM,\ۥVV|iVoUᲲz)Yow ; "3;t{ݺ踾Il5l ^]!7H =v)ժ-q&hH $$5Hi`Hf A$),_a*{sך`% `.'G 'kRk&2HJ&L98^tVD;l@'4,!2qM "Ev t$Ԇ';0 "?m_a䖷_3ۘ^h}p 3e}Ja6}E@G /clN!n Pl^`'5&/)6.yL0iZ Lg8*.&6?ٳFQacy^;Y/.)yxzݍc^7)V zaƗ w:<}LK_"ʝM XL,*t|įHa${ Gf[,Xəw B| ɜN(#;< {q+d: )W!:=C\ NHn2ZzWmOÿ}*nbaU\on%^\N,+F2W%yQ㎜Sp.vo_ރX!_bcᵗ/ÅWp[`=^  E5j X s# v`-úѷr\[i:s}U3%k0m>PA:IMW1sbZ* dΈ)q z&}:r 0q v4=0g&QXisx>*Mf,a&C¹Y 9: ἺNÑigdes^" @ y?#Iw, 3B"]?Y|y;+3᳍++8w4C `-d "L8CeDB0&'@j~?Ҽ +Bzxؒ>E=Apأ T /R)ދE"{H^x/R)ދE"{ ɼ8t 숟g/ fw=(NOQcO5 U% [.K6E6]x@9-p{hpC5- h{D0#1- `4b؃V X[)X]BbKV;-4$=A0b4?6hGcƞ(h =2c^Dr,=|龈teP*Ocz[%ilhU"ƞ0i,4覱GE6=QT؃ƞ&hؓD0-4ȥ壖4DJcKF)-^^(^H %Rztq=oW3=*9X\dqaXܡ.pMwi ~z¥ƝtTfWe,~IuJO5Pzs>WKsc-KfsM~8Gw8mM0 az}5Gns$t°ٷYȊ#`65ESCz&+ 8T(v$Cf'(`e$e9Mʊ߆^E s “{(G54x:ԁG [}h %4U[kӔ>0r-ƐH' uas$!30#.(!L K3k!j&2!z|܂X| pqXigʷbYÑ薯>G"nYP%`<"S:J^[T kd.ץ+apf@#2"jt8r(1n4 *"u,AWs1cR)J]Qݸ5H~R|ᑄ D@*WCҨ7wi@#%>+-7B/Iġ*NRP1c=eol*UYx~ +UQգ-UE=n5hʠV<7\5K/2^Y{c2d`cV_fjCZ bت*X͸,eikUif8jVk}NboӸq+kU=B !~Y-] G[;+!hOqB91gvbF{Nxw% #'h+$R&ƭ.tiu~MT\*et ~ԯ+^=r~ J[$s8|MsZ;}N(*m I$.OS@r-@?2ʲwG#xo𸷷=n?|Noe|5n`LIGΐz 8AVX NJmO#w~ rޝ/q:@hj_W0xt뤼N}J'hF6v3(`X;Hͼ̓2_ t~ښ`Јԙ^'dshaiH 8ގ0D5Rnƹw~ O y*CN+^׀̺Z7I7 hTm4Lk t\] F_;MK'ף٠uMu(R,&7×YϺ4;= k(->9wn5 -q#*ٜ^,_iCu (#!3/<%\ h 3I"{ E($9z#s.fByr#"Fc'' C$Y_o x'HFtoxJ8_;3NJ*X*^Snw;t-m_S;΁SUi3:td{l//ڗE ~{߈ &Kigd ŵ k@HXx1& 6:4|գo8b). kOl:ɨ8fw+g33P_vg_3HV(BOUӛM=Q fA.*J'x_#B$=<ņ!=3q\kwV|cb,qB?|!|w(o%V:ֿ:|9׸V(X+B_)ba _Ӹ3ʎoI܄ƴ2NV*ht{7"uJ3j4yՔ>+Rl.`xM$HC ∐~&DUC5GH\C~$fKVMaĞ:|{2^iU3n_R7!c/ykz[Qssܴ0\H[R:>ᗅApd9PA~m> 1(UnhʴV59sBfF?s+vǠcoie4:CXk* dwn%"nauwMm\MOxT';c4B0e0hAV^!fXh0$$̫)c.]nnO,Uܩ\G _5IZ*zh$+/dJD54b rBZh5 I@Ahkd$ ,V(ќuc<5ߒ.`.~'`=qIө>Lߍ, E3ϤةIq9Xjwlb{ PaW{s{"1@W8_'ToS$i^Kf d2NgAwmf;ׯ^@Guְ3@*6l@:. 6ݣMm5oz^GA{4xoi y"u/J}[j֝nͦ `Xb$ͻ_Xdv9kN(pBbR$_1@RKT_Gcn>o*8)}=n-3 ixd[ɹwrW*;"~5qb4a] CܿKQ;.Q@l34ЪŢV_r$>e #B)m%>-L '% &dQذ'NmQ?9_uTg\@G%fre@$"X `Mpf}V6RvX7q!|lOL !ݒYgAMvCW k!1v1od ގW*і17v,2oiԬ@~FdI#\(ȉ!!q//AH"\e<)}8 Iv.vp=\'x*ۃElHN<XtFEgT-Rs_I,: )zrߝ2ξ%s4~'*' ^,)3Nq4ЕT`3vo+8@kՁhܿlJNot3]hLnFWH20t:unMtP$[Zr1»#0;#θN`KV:v2~DVDId L[wZHwrBa.AB^3\3(D3}Tq " ^E%K@`:< VW:ߛ;NKlVDWXt[i:3X.Ă!}d䍴#y鴲S`+RъrF *!CY .*~WgptEq 6׎zF,U9x\W`s| ujYAڱ/#׫OА %ǡ}7 8N@|&?0x;+7;P\]q&uř xX(+ 'nywf[ґ٧Gf'pb{cE"y|^d>/2ϋE"y||@* HFy"ZN$={O^cO? RUKt[=KE]x5c+ݏ-r?~l|7]^?kJnen @\ei r\>?cpktxPe^2LfU?*cO?{أǞWA.cO?7Iǖ{?c[l /r9lVÏ%R* (d5mguccpFL9ďc.l[.Y32K[ZR MJS}ѧGzQPh4Vؗ fαϑ=O6o Ae]cs#2^z3EJovts3K!]./n @#\q~GoI:޻l&? "}c+%? wM)QcL]$(fGM[v 98RKE0o|yʅT.}4~`( $~ӆQI`=M+R|xr{{{sV͠4s[eMҙBI{xY  HuRDe$ 9lDwɚK\ .ɥ(N N* ùj1!2/[ɗ$mَ}َ9C_qn7=)@I.~׉.rWn/^!Y^}4_ABQZ~5xF)iQNmV+ uUi9Nt4pi+ᤁqH;,xG <:TIobYKD&kv$W;vQR53$/Ί֭}7D6`VN:b2K[VFq!_j6aT[l'h \Z+||tr^7Lgq@:91H*I?m7KiX?*~α|eқ@Zb((3E((#ƪѩ&Jj#2y39 qI`57!#$y1j0gGOsY-,: yD8V肘\83>؁cLp CFǹ8,@d 1j&0(֕ RWjt9=(>>A=c'$J`"84Wb( ?sqĸeXp#7C1Siqa|X Q =n(yc<_Lh/ J/ @Sk{ ry e- kF9(%V-P6QlIBp%&C`}aGDl9[U'&iT kfȞ8X~ЙJ@tãqi8=Ó 31V!z!4ISW1ZsArh)%VK9 g# QOA](B 9e.B  }~gz4[>gұ0<$ *?/z@Z~54r+U'u;SRۇHɗT&3h7 1gС&h:æ#L'8"Nl2jdYZLN tZ'_+5UK寏:3%,8Z:!]9V?һw߈o 5 8erJ?<xsmnf73~;/?Rz~<:kOe7FNWBMR?`sU޿:L.u|ss:kMZFJWֽѲ*&Vب.5OZһ@"+>~,P7 'yhvrvWElAMTg*[O!%4y)U-fl+4yυ-B%Gz7.r*93|/n}~- P2SJieѯ31Z9H*'9&Aaz֋ϐ=3`?ҷ*9~:AV0LS{$Wt=^<>{VH,>dx&sWC"yS6Vu$<#*Bh7~tXi FH+ IV6=~x ToH9f_BPOsu8'ϓ|ьKŒ|4K;K=RXddS9?d}JGM*eq8Jpf:ǑcFM mcx-R%wk[Y"| %lĶ8uAFq?ƀ"X BoFpf5PyJ*tTyα;|ָn @zH.rx6ѹa\CS0U@4/<̚ Mr0e11y$B6zCI&#~A* P?(R Jx2 1y|w?82&'%pNohGCv ?q547-m@{ 7y*#jk*4%?DQPfVfNM a3bJ@۠U!yxbu'>mFQ=f![!1^sn(=?[֍T2ͫ  n[G+G . 7МY:o: V߈i6ŏPOY&nωϞw+o!XK3~^%7k <5LvCg-0>di&._X$Ѽg-Ğ= 9c{,9geЫhz5u~\a}ߙ  }H T `W]<|<ӻ!}\iigپ'LJ?>i[_ܸ\V䙱1ԀFV,«IS֋²|$%\%YBXr@mz6ׄXh~G0-B:$|f0KX{VݩYnr9:V9iGp15XXP"yQ~.CO$g~mF(i(0?\?Z伩,~.45%陥kfQZQ?tk ըe wQAUwysiN[ZQQ2R=fo?D=+;)NjBX}{ҡ|>^~e5P2HDLX҅ON'>9lFMeu D&w1ԒN=mL ܔ: l1h3a/@ [AAvg{{l.AJ+7{hb.O $( PA؄-Oނ]8#T' YT>BgU+W,2_g>錼2OXbFUB_ fUd殙+@}Ej! I@ӤgAV,zӲ*Ѭ<,QېޚkV2UӰ sFjyԊynLB[Ψ1Ӥ  2.*0MaA Ӽ [N'^.%<4]H*D1^r:31* a)~(v )x$]=Z. /], A$~ghK] -w׏ 6ST7%څ9QPYl^% 6ɾƗr=Gx|,[A>GˑWYzNy*)#84w[gޥaOߕ5q~@n^}8%rw> ]lձX;)輷po3dw".=t܏l "rW@J֏OҚE[֠n A!y`Q@7Ũu3P_ B]8 ƫxyT[aתy/D.B_Sԉ|$M=6 wntM!s *F,=>>qj͵Q=͑M+ }n+ 0"_7m5Շwj oބn|=+F s. ĈEӻѻ94*QP#7%.549yr6\YfndU~p& j/("YUMfd yܬ9Gv<Pm>6W&³gBfyp/x9*`ڌt.ZZ3%f4JjWdry%;[^"q" 7ݸzc~, )J\@CYf9%zu\f؁፲z3*T$L݃ qbaųT2CPKE8 XZ@$ }Uf96r_d; Z,6iHt%^D:/+'>ag!/}H3a.wE txwտ??~g^eCQ*㟿ӎ=ߎ&6s-$YMMƘYjdz!WX h h ؔ1a c?⮦M IG~k`nX?w,Þ`NR#1'4uIc)ݔQ}QmB !K(Dv0 $خAr/He342 v祓(^=Qr?;iCUJ4 4 gҘĊg!>Ɉ9hrêM>)V|>_/%4HZ0!B{n' zH^$ը=zA6ςӂ2`Xę Ռ66يe]Pk(F`yNa }FzI᫴3<'~O3nv*z<!p\}Giy$WW2%=ʟ*<sRX?զya*QZuYb ;OR4J)֘cS"*DAvT[eZPˈs  Lc$d3ok8UqE8]ua5߼FL`dӜ1ڔa^{Aֶ/ʡFd""$+#9/$!l=l֠~sɤ3U$B|.pB}8Aq1d}(NЀQ{-ܞG48ryaAs!,`9>_僈Y$ ;EJF0loGnv!!V !JCPY܁M"fO΁F6/NkȑG%0XwWM<9;0|ي &&17 <9ͣw!+R +[7Rу%PEWlB7/bAL` D9ߨt`@T+Vrpy! 2O^+kQ?1^w, MTInM蔞1oJ(VX6V״&1 a՟pI*X6 ZN!{j:V>s}h=WuنQA5T=ʧczөuhPN(T4 km)w%];dA¢XY] ( |&A,۬[A|&Mti9o1t8CF5s !u/,>w._/‹1G3ȩ_,;.(c_lOy/Cu< ysg{ۢFT* Wuz*b^~aW^2i9)Vwn[Wti|< "DQ$j"=WPa)Oѓ\VDVvi0앢x0hw 2݃M1VVC/QfRyL:1BcAfT̙d#Jv[D4ppMAQ{YtyO"݄N5wк H$~q'놀 a`b &aŚtjp3X?7-{fMgEZ9W)t"5žT<z"2de\a+:C]DGmF˓LvrIdFٞ#},W1< \@'4u}VPl@YEK,8=@RmEfӊPwދ,@yf@tp.NȊb]'!?nAlq7M܌,UmzBoNΊM*WRi,UJ×cjpUՊЃ8|M"^>tqԖfDL&ͅ`bt9Y6΋M+EaTR<T 'xaW2a<`p0 cR ZP@kln~H;?q 3͘)Yeqjt 6&0?*~ Vr7C sξV$Ή+Eb\}My-{%G;0[90yI p@*"sŗY0ivAKwvxy\],ߺd 3,QQVL81.R2)gF朇|@~U''ɿ`wƃ&OûD#R_"< Q}D_A!"@i k7N?۷+ۋF/rA.Tu͓S0l<1vpH6eeau""W_! 7TeJisSJB(t!E1Vz̓DW.o$kHken.ElIL;Ckgsuxq =.4RhךÛ6.GY?@0Ȑ'B9M%^ӳ\<3uȥ\n$1֞ xd2x5U˿CjoYFyX,q;t77'&ft9,jj%_t4j2oA DLf[Fg. ;rO7TJ$u?1-Q^GuAʜx8S CcOC= mg|f!2Pr a䂬By`49{}}ДEDq t"Y޹ UbV9!S^(`u IN0Qlif{TyF |VZT*LG31[X6Zsl0:;}]^PBRq^ +Tp0"zج|77 ș*JPk aŋ VrkU3*Z}z/L Py\H YI{rhD>ZrpٌEUD$vye(MрlQ%(W YF5U)ZӰjr7@ܶh'JfQ!Y= ,_q~x@q 9"b1,Imcڧ"^o9OH>kZ 4f\bu:%*ʇUey}^7>,V ։zfs6]+܅3%r2-afli-zrxm#wʅFxW> {/W:9只|@(zS!Λiq((e]jt}40\B`jC/:4k!acV:4)_Q6p62ianq:?{HU--.*"2$:a7ݝ;IN=, =ݙHH3 c} *" <䵟 -|~|," wιnUݪ<{`7ӝT{D$K1߰& X6?F e6c󃝶@g̾]3K!N Zщ !l3Gus{5z1UHQg19MwCԅC6L9iS0Ѷ:X72CTYK:)Umn(љ5A({> #PRU|C 8'c,خ8~Uyzg,X!wW8| lpx3N!nAV26cOLLd ZO%Jfe_^i96ly9Eh@4rF=9Ʊaݥr0O?T"gwG"+=prKX9,ۓ\$ւ M,]}\tƈU%8-=F"sl l K+yL]bG:lGv4fN_$ca*sEPFr+MМ;ls #ʀ!ǝ^}*B:қ~ɞ4Y ,+E`A8FŔH%꾌"& L/N9Q ͝ 45"!>BVr4偺@Z 3Yta@ $c~O71K7)t$ IM7L쩮hAQ/|VjAPIZyօYu2Y,aЊB-""8PיV1dKKY`p<[rms/>y,LdVw8 5bȰF=.q]t! 8m4"3 _5vM?bƤ|S:%[Cͫ*%{"h4hV ^"n7JOK=@J 9΢)Wt@ }ueG2LG#嗇к\%0l0w فE!HoI a»?= rX' <2/0W|` Wɳ3qc/+iFɮ*BѪ"/R7 cr=S%-FH ZªOcIv$A9ix$f,M7VpzmSh͓t&b0X)6;Bnu,FR*Oأ([")<[` ~/͗CҀQElt15X-5e $;~NƳ%Tܲ]LM<m~ N~Iۢuϴ0<[5Ikbp\^Sƺɦ&4xFTQp>R>~g[!]% LHqc~700N. ;)0MֽEG_q3\ͧuZ>c7W[I SeK[-ԯO^rf˭rqS2TII"lABuFu!Y٩:ƒ)hq%9kztO͢FAjjV+X<<} TGgtdJ 4췑h*0FSuDj!ܶ=+wW:蘭;aIQVoq?Hl1C ֠{ $FQݰ6>\yX[Xz3m<)Ml`OhB !̈Җl0k~:UV()ʪ/$q@e:ay+Nϓj۷oYYE0樤 #? ?>Ck`98+YAGTwsv>0o.4Sy,QM!rwTU`h9!:P߹$Սdy6C7o [hj(dz 39'eC6|6eJaRvР kOdi*`tx+&9WKXS ~nGNȢر4"SPEڟh#PeP-+(N*1A7-_oUPz6p+UK pxb<J&D[c[$=$r"/Y+Ftr7^[8wXwE"iK#̨)9vBjyh2DsW-Ysi)R^d\azy~k|6~P̹Kcd\X s/4[(@,L P8@uG?zϐ`*&]a0||ƀnO '`huvO L;?'@zm=7ܨiJSww( bqXܱeaczZl\y8V }> L.hac!iM2x'K`Yړt.Dm3 mE*R `+]%nd!(@h ܾMӠ1 peVC"Bÿ1&UKG'xXx3oFo$㦇 G-%RG0p3!C=K*|,K_1Dk`7\< ^ ǐyrE5P@CHAz1 U*?|t 3qIw$rQ$lҘN[u|h?gՂ$M [ !mdQD%1=@ 237IFotZH)<Z cF<32E3!caxFT56~KX4s"%^r!Ete3PTl6`e3NjԁqXi^z0cd9i Ţǧ=)T.IcQB1%z]T |REUz*Ta#*j*UoB1,jT׼:'! }UIdb>JK\fpĻ ODD]|Z ;4j|tE'=p %oT])SQ kߢsE.71XS>DZ3EyQޚ55`tw:y9ͻ},]bT"PCԽZ19Xӧ1S9a Kq H{FX?xp8jPӅy.YU m-Hd*IH`y6)ͦDYMu85(!3(؊-f?x)!z,6l93ޥ]viΐ-^5َ1t8>c=0DNJldgi8ݴsZfco`7A<IH0ޢ3՝rWn~']`a9(u4LglN}aj"B$IV#{ LBX$"+!{*J*OUKbaO E0oX0oou\.._/= -sSsa@۩8_ΒTH j-vD/2fRT$czj}hۡdg%a3=6ALTn]45\8XWlGVvp3YmEqKA3-j0ȇ8$N!yq@ʋ R}8OjA򀵷. _J E4 {\F T}֯|7뗋+{6g gNN.=KXE΋|[W'٢$"S&"CiXQ{Zv|uJ6Eҫ1P1ItRH X|N(xXE3q>%WcĔ+3jds@(Ug@y, o6Nʑy^<ƃELcM4ƶ\qL&w&Sz DS!6sElq߃OUJ#;*q Z ssC3R1d[鍠zrK ]71o[Z.$bp #B6=!O1p*[-Yvf)nΰN#ȡJ5bXVN"nY,sw/JU@)`5(ţHl&Ȯ.*c\ ?,T ;JkKbIZbu&V7=$ўKhO)&0J9d $I drF# wul^!L%:?D*Mi(ayJ8q0-EqYԇ"o8EXkǠ8Ea! f=>CBBAt *1@*ɥyHuDLori7#:+͆bΈUbssA[{pXO#zs$]eq3*fj  $mj*eL*G #7ų?Ag&y{G1@Gi#աR7kSijb,,8@ơHDkRK10PVy;ykJ-^4<8Nxm&hJ֪0pߎɌGɡ.JjP5 V\;(t  xM `ھ 2ɴD!tAN4 N4N[[kx0LQ`@)f05i@׻ k 3;iUʰF-iv iz:<yv$jR4qwsf(9tu \`< *KV) )m\v,,ZuG貼] *ϓ%Ɔ/;zOXwu[%unJ \qfbͦD$Jǔ0Vk@[6ԅ-#N6&:5~K]n #xzS͸(RL]ʚmnyAOm1tbfVVYGZZR]L7`9BÀ>fg8 >떳5рOzqTL(XK=z>48Nؾ5\V[8\W\5iƌx)hySԽ7Au/7IO>3!7AN^6 7q{'E 2㏑;X9Bwrȹzڑ:,iېtoc+i nUe#7iǒV5Mj8A68?DQ5cȭnh2ŌY@DŽ[qq6vwt2GW^#(P g6gsVbK{]rr\./XoL=<0wlkkډ}#v <t+8RJFPSZMhtpSsd(1di=ߢY DiTTyP4휇yѹF,nFl?`.K>9z Wrh[8B.|[,c}[S7Jy (Z 21)TCOٖű}^9BCU1f'6Wt3r#.1OdJ$=ہ~3{՜Tu yb!܄mz1CSew<çΙQz\7ØF&B.=Kf105r59~Ϝ5wQ1?`ajykc H# ųÅ$9a-ɰYjm95*gjJTXf ګ׊Jbl"^9Sm`4&=>S)>3& 9ގњlzzm L^ FG"4bx{HQ |0W˦ӎ / SMbNv{G"]]Օ$wvZmCxa1ѵ6,RwW;i gJk/>^&P¦XdW1[nkI؟~ֽ9@t|Q*wz2%_w*P0 vj^xM$CH hAk@U}5AN7&/ ZG=90EPY(&phڃ_,)^Yc*?vQSOC>пz2 '#s&q n:U2+bM5B)M*%1.Ts;֓o1y",Ɵf VfNilm,>13Ns/Tʫuyl&#g^nEz. L>-\z,4]WdH ȘRZQE_?@oCn":(7DzYf"G@"(YStҖ-0ȝX{J~?*c;GLmD[f}st@>W0{`ren懍Rl>@FGaO>GJ,I4bq2#*^A Q ]P7Rc[4W` K|Ma b-9OcY3l's!<˩\I>b+fphJ<60#/-7Y~3UQvfoo~j,XDZ3Y:~V dXF;Ͳ#̍brz@Ǒ7_G_;]],Q%c0u~>9mvAzw(= =n<"2yrW8&X=` Afp}Ҡ~ОHTVooXO"+*THt,mȅnz>d4ZxvpZx.] 19\r|0(qצ9&v߹DKݎݶr7H;vv~RHF@ /+5`}>}U}8{7KۻDV-+z:)z146 V`<Wi jdS@ۄ? ٬QL5hC-Y/J\$5@_>$3%Q` PJcFR +İʕ8?5ۡa:@R ]oh]o8׀ vwu<4L׌nSF_{alcy9f]¶wWmN?#KxmӹDVi7ɬcy|O?K˭J-얙-+4g,חCZ# ?hXX ?pT^F՘kaU}AXE!>Xifܜgvҟk# UmCZя\w <2>l+ì21 vKؠ6i{Vٯ5χplbOM[Z9_ .7j&Fᚧ$Ιf}Vil,5FzS5ks֒8(K͚2X:0+vF_WeiF}u PQk4qcEi_}rZ}>ϛҗF).{K=QQf, Q57fW@[Ei`|)XZ,b6j@ӷ QHkd4+|-JE )>>7V٪V_غRAf,zmiR޷&K8,B֪r8 sE_ o*rX^`/J]j)Sk]s;K7 ͸thj.5 xoqXc+\ 2 j3`ְ"MT҇24DJsBZQYVSɵj8F:̔~ޕ̞#;*۶ .OOXmH0 [uqʸ |RC GO@Y PJO&W609D!(ߞLj˕Ё+*ynF/hiANIJL"-%)|X-X8QXWE/Jq#(*lihjNh)(nƠ`]eeq$ 5QQC-\[}},sC?N&Y噁j V#\1CsMX/t܁,'6k3=RJG BEkYp/)#JyLSPe&R؅9ftˌඹBmayNMS5*LSK6Tӓ%uZJ+d*+Q[EܖٺoR Zبr])1Q : [ D' j5L#~(Mt"%|NDlds>.泎XH=y2xc}2Ui0hdmaiܮfk&!t Ea0<p50mɱU\bXDn<ѫ3/w o!ޏtv 뙯JD֏ gnŴh*46G}ai狆It^Cc "mdێ*ʆ92|4}鸣<F䦽MJ%W)bVըOb`v$~اi6I ?-,SWrv"m}ެA2vʽqy곍ҮDb]j@)u#ٖp|EXӕXd B11&_E;ִxl T!>%`8nXP(+ J ”XL/}”H(w0UBa10j10U ԲHd@KȮjzyp( W/ ?b˴x2M&cшвxܥ\/LьnGjYFBI-VAN|i4ӢGͨEh". rŒF7acl*R#Lj 017.R#9` @2i0-}´h,UdD,,sY\5h ,5@\̀ G-3 6`̀!Pi HrqԤ># ǐ# ixn&n&55G,LR (X )$v5_%W@9[0]6I2ꁨJ,ѱ܊_`==\W%VĦdH;|T(ޢyOa4#iH|W|:ռ`a3{ou~ҽt/t/_Ϻ7t#dPԈ j{E.AKk"J}GZ`'h2sfX#XXнJI C𱏺e@dӽ1uF"rG{%X(ń"D$kbXcKBXrP5fy yF=J-7U5ӯ\%[҄1ߊM$1ըxC(,90{:S-lE*$E\%K 8V&H\dU5"p9 (CGבUnoԼ߾㉁H!¢au# ZteYyck bn{᪉ɣy!ߨ$-,aqTi$ I< 5o2䛨ui&ձ72f7"ds@D`b Z4j1 ,DL@̅5TsԈDȒ|EUID475 .c8GlHz ߨZ{{ɦP&Jս!%i^:(&tV}Ģ@$ޅt3&сhCP XJ]h'`x 6o6o6~~Kmu GG?'v?>F}n3;X-v=[*gGIH&ln:\[${!F6c~ ,7{jx@of8\i VK@Y^bǞ3+=K4g4 hLp'\xɏN/_Zi&@3FmKB}'&ZtiV)Z.0"5;^ Jj5_QKD7Ʋ*+ 3U v] 93pT]Z71HG2b #[4NxcJEO".#ŪS2ݑK)`d̤dV'[ΠhE3.KB OoxgY?*OKNP,{Z[۷/{q%ؽeFqe|hOkaP C{<-Xq<;smՊ.N+be2')5J qz5.46ȓsir6W)feBJ+D%7Tͧ'Ru4^jP!cƙ0 P2tg#:! 0etۏ)T QFJ&[Nj#Ɓ18}\&^h:}3c܎ۥ3WE"-f?8S9> =3ڨzB3.ıtgqGVl/t8 @~63}"NTZXh1{_ohJi%iS'*k1T9ޅ2S''bRBl'd Suoyן9LsJE꿶MGx1g/}֗٦꿎{kG~޿:oi~#~׼\sGz`3ԡ 7${>gwҦ߽5?^|o|ŵ=#O39?k]{] :l?z|烏}좭g]v~xӱ4vbrşxzl^veGm__+>}~/~|L<3:o|m_}5?}.}uOv8:_ʗ<. l>|}oؿ֣opm{n;_̮w~Ox쨽]|U7̾?_8;.}|6sٻǎ꨿ɻ޻>rq™\ݷQy7~sɅt^Ɵ?Y?y⑿]oW7ߟkom/犇=Gx+b?{>x)I/>_Oeo8uGts 'yͻW5kyu?9Smƭ%o鿸x[{?:C_ RS1y[{z/+* qp~*sqůsR`ݦ{>}e_db_>{?-_ՖWS_evOxտ_5~'9|̽x]'}uW-Ż7?b҉noz'ÇKl_+>|:M?O_>/yţ龫vً|_#ow?>O]6ry_>?C~S5~}ԎOhUMą9o?_}E+w^tѥrԩo<>~< ƾ=~cV^7g W+W}{u=rЦ;G3F'9oYo<"ÊǞV7OV,߇p\u>qYg_[/w=簯xK|o+ ?nuΝ~cw|ֈvC ЋN2_\>켕szem7}#ξ ow|ԇ|LJy:萷פ=ۧ>p>'JWܿ~^x1^6T{?7|Q;GxS_>2yCl+%cBP`7dEVx%3;CK X^?2pM̍́ z7*\3[O4TQH=e{,s)ݛMJ;򅋔Êuv : +5S ̸f&3KUrg;^JNnDM6e-TIS[9a+4v8_lƦSDd!{H ;:̓NtEǰ&58QDN"6s E, Dse*nаJ Jn\Ia:QH3 _Δɩ+iqO,Ӏm"$\D.ex+ّWEJk9d|դNH.rMI}V"*FÇY ő2R ?zYC6Dž=YƱUQ?)M Ħ!&Ok#j+R:"J4Sk?$)xtnSU?&cx^pdF9iwZ'W3H$Y["CRj-xX]@^^e;O:f2uOo/:5EXwUF*.(;8DH˃j}lk1%3,@&d4, MX"OGةnmi3yM @$:3laqIJXF?ye̢( ^䷡7wL҇OqqF:@r>#:n Uߎ @Qs;?cɂ=e6%ko0X,&۷}h½g∜)'ɏ)m8ec; :m}]A/`_ xs;__\";r܁YNj.QM"|/MطxB wj"8q{!yU3OیL6Lz>Ms7$;q2]B޼.nUN9/M˙G :IYXo&uѯy<\ǔvnLm5Y ІtrځOr?Bdo"VgOP0}>^,>v7 ޖqA'ߌJ@5e4t!W&9Dkud_XzznM%X͡z#l#s r;YqK}r8`iW'$1wZݬ؆C(1CM>p(HY.GS'P ђ\'ۢByp: 2۷kln~׺@ t}@e=u-\уu5<83l2W\nT9rPomZR-DрnQ$D-5DQ^%UToybB]%l,^g'Vb|ʋ ޜ¶ܪխp eϖſLcjj[;¯X:7b󇅎2k_)EFbb+Tt؂Q}!p,4d40i6 AN X]ږ8kC4->YaX1ۑlHNVb>y]z } oMhR?q"BG"E.gopDCVre/+\!wgLI%'Sy/i5|w$kbWM؎C05l9نT"Z%()F 1+B:)D(biwS|xIIz4ou9P4苒V %oF.[t?-CN?g1 tLUp`ߜ#OJ#oBȴ*R`_w`E~V *S#ʢ{noHwu|Ӑ0Jf%:tcL2l #p$(}]Pbx5慜vv2 33#]@cZYs'[X8s!EREYW \B~əB &{lQJzi33Nݧz+A)15ᐏnن50C0,{Q#M`a褻xenIɬ+ z+CwUirǔFdHOf&.kqM;:ՙ`Ac$–QBi'|*u䨻`%2{.[ʭl悍H}OJX# f-qLl[!3Qn=HQ2Y bf+  C\oU%O9PalAS{I}Bp~#Kc{{7{`xv곐6#li!A'Ȗ,'jiK#Kw>)%ѫ8Z q0׉IDDn_R*`)BFi ?=xn J )wl7jRK2V?z嶍i-k )B0<JɟoՄՈ`v7x}"4D $>Dz qYoUx(kE=?1$MPg`@gcQ _ <>Q 4;whσf/!vfrI rKEU5nuL:r=0Z) 28zCVFBU 4X AK柃1-3\-=,ggt3ֻxmL0~AT,p"Do{l5pp-mVۘobU%Rو|p 3I BqQ|t#9ck|K{ ^< fy 6xHvk"Dԩad kn%5tO[p^I q:dČRzJOX>hVkLFtU^T59,9R.MғdHf֩^( .Ɵa soJJ Isk0T yҮEIUD1,}jg !Uxuh4x$M:ap街jWPL2ڼC ȧ98%xu0''RL˜=lUv$p466)]:]k3>%a  eX6jqD!q ooAt5jt 9 U PWtd^K(f븣c!%8.nmܢ6dN:p,:.F~:mq ŝx9d7k^줲8Q8H,H bӄѶwΔenq>W=\SrGze_-hR}Tr8JC^xg8g="N};~N=Cz==2ְ]~A~-+7Ph/iYV:6U-2H+V?j2Ǘ`B1CO?OLߪK Z @cq1b)y 7N[7E {5Uң/SQJFUKn9NJ⾬{v=s*t9_V0]߯ ]@"s \gcHk#U҄C`w=:2 ٭3"{=zNnA} 4- IP3\Dc^>`CE'?M&Q0 ۇ>C'fFg76+axV*Gɱ;$hwgɍ٥ 5n 7.9ޥ8jY79W <a֬˥u[RUYSbU??gyb?)`='k׋_,<3\2Jg =ZoІUj.:o;Xp 1X5'҂o+?,98V|(3S@ĿSi>HM :Yc,mbp~4Z"EM$:,'DcѸ}էr7x5 q²rٔ+ncW/.{3{1Q/5J==Ty19?1uZt$j|2!lU0= :8p1C5)ӢgWBT[o0+'hVqIlݦXdwitPpU./v$F7B%m]{NhSX D}dHF)w~e>G2 ,re_*Ĺfa7x=-\jxv{bu^mԛP>ɓh1drglMp:I/!-BєWTRTAԳW ظkQzvA@bnO">ZF[ *֊ۄnݮcjE;qxٽu">ߋBGD1c yG3EˇNù#KwDJhobl3s'O@aPOu پ# 0Y"d=BA {"a\`K/_b(s=TB_\!7"`a:tb |Q[20!X"u6WjΟVQ0R%/ϔᆲ(#q9)W-Td~č 2>~ $B0݂-#_xlZכؠmsfg`Čߚ3(~/nj39y2 f\IP"- /"gs'+-=<=1Z*l8 |r ӳK;.3t=Ju3q;Ŋ]:٩[mb/rw"gwIɢydW}߯Xj'Ej716""4lU6' 56&v66!,P }+W䅰W qhBP6heh 29~00%0 H  ouXG(wxcC58!D 4b|wND y6Z_e|WׁȀպ]O$}GDfyEM?n b!)Ͱ T22PNHꔑGV7,0i!hsJra!9"= &Ei8~ka{P9n aEJxjܕb c{+;FR`i - eh$HvOa,t EguWK h̃RX#dp9SPЃ,&NXM~[\[B#wPhQ H85RՀP8 {<pɊB ǧ4.QNыPPƧ@\N}) _V DÜ+L[a *KaMb[au>ګD%٨±Վ;ˏ_ &#a)vήIDs  6 y6!JFޤi*pԧ?#ߓ#8ːf[ iSRKANQ9 ?Ŵ)Ěe&E7'N$N tyY.In=sYSw Rmxgy%(v*7N*o F%N-JהWt|0\R bՀVcN67껤:0)gf%`ŴO o w DP M FG6` %B K#m_aR TqoDILTʥ\'4;s+LŸ]0{aW Ez;--\W@5ƎB7nYW?AJi \Qg u1-w{ᓄe^׈} 9I" w"ԯ D ;v*AHu ߔm9 ֟.6K//D>ӺI.r]~>lwB@4!Í (4U(K"p%pT:|PΦCfAz?w\QhpSp1(DKx}Q=hrk+-рhq;](K' .opT]t7b`oԺ?~?:}=$qG4D8"Ø<1Ѱ1FPsx89>;$f?[7Ȕ7@G~6<qY6 ?eg@bf@&DdgA @WQ*wW :+ljqMOWvx@ >x>8!nG>x.<' !] wSOl<||qp|@C[5kl}x-8=.%axnOa 8pvv\5 |7w(6ɞhn3kɢ@l_D_ѓ8}%0VJzA2eW?pQ+]+RWM z5']a "!uCzID+L4Q]#tmD+/]<4f5$)C$?x$`,j/YF5ψ}iU;䢍H]$iHVJn-\6'ݛo ?t.ڸZw-u^Ե>nVzੂǠb*ÈN"=ʝB _M}[zռ`yՑ.w޼UQmP!P7.8mO~6Uf)M tڀU-gKb_bl^){(`{=*"_vutYvw/!/ CSA5QQqIĚ C(;1ôƪه_^-tn ]W!i +$%Z`+"@ӬeXfb}qXL=|r;:صpc~iig*14Ui!F-ӂD ͪM uj7cgn 1Fiڳ }k-y wZ`7Ěd8m :pk:̽kyu m pE[5aǨf/739CyKicwPx-ǭr|dRax_cc [1k{U1 Ryzu2ZA>RLjjN<|`ΜRRN!Mu;!,W%|ZUVUN!+[ xZumkGf_sn^@繷̢?מv*VZS։tR< 7n'%<& Y} v݉n",MHquh| lw\HșKi`.v- -(Rm[vht{l6[A$Bq/X{EV|%\d9HN}NE}6 rJgwY 4~i U GCxk JMr ٩׶ 4ן-WmSin ȺbM0G9;:95 NbApeR,fy% `pO$׹NKW:8Ioo`\0ma;4xN84(kp T N]mXFdԼEi/N:!ixp!2͜>i>W)\C" MۋUɛ|'L,lǝgj!&3[Y윢HQIϴ5|Kh] K~T[6SE~HT w QRb< 3W,s*TzvU!U֟8 ,k7 TPڢv31?Lٸ6:=3|J~[x\53In&MK-v#sPLm^KrAbC٥dCjF3wYrr0fM! 09pxb;iOk48jpι.8n-K.:n[w oK &bXƅyK @qߘY!Ω /›I.LKa"+*1>\ttrHCAe-q-MIBT:{ UM^$ތ=&/0cgu\ 2\%CGfb]ǜ2Q'T ?)Zk_VGlw*SX$yj҈07*k-b+g`P^Xf]b-cR Wp ëG3mG7fqG緑G`%\# KB +LVˊv,-v虮T& LmITv-'Þ3/e̝*jOɽv$}{YR/Ao-{* Γrx~gT} UP]8 p~xǟ@6X>ۈxM8<8iƒqeuҿI8 nxzA+'x{:q=A~<(Z/ewc37פX6ՙVQdosaʭYJbK|#8?v*.[Jlwg}۷-Bo8=ej. ;3[$i-q(]g$dݜ}9u=HhF{Gm9s$cny|Ե"M͗2~ϗžYU*l0ejsn?mD7eࡇWH 1<}|>X9A{[f#um!y;,o9(uK/0 '{Nb0 X?& )"d$P N1?Ra䡃TߥsȾۿ1z+F:qf@Id N%}7ʇg_cgDš({&WMu> uFg .595j9Ь"n[lR'K]⇄Q7uĔc}Ք r>?2gYT,FnQ]^]{؝ʟ^/߱qsiõC^o N0 \8x1^!߉p+@NoiJͅWQ An9oc FV㍆ӡKfY_m+z;w4H EͲ_#4l\d ]k_Gb k87ceQ(oK҇0еrAߞH L/PAECPA`,Lً& գʉ։/Rqt'+C=UH ӥpk%?6mK\u.@܏뜸 m\b1C\vQ|@˯H^,әWn_'˘- ʚq|OU[MiXH߬k,\ݕߠs9K!BbskRpFolo, 'd9/7㳑D'钗Ǎ?Y `)7oʺm0B3A~u#W9yrG6{pkvѪ7{6>;q//B}𻳳g{|wJˋk!=׳+{xGr >,YȋN{!-ub~N?IԿKYz&7>oN7՛k>Mt7>+<>L~~_Gwsʘ?ΣcR1.Kz6_#g_}/d 7os.19k.ޞ5[^۞|9v^? =9ɥ!w&X"g,[a:U"r_3qtN<5^M}&A!z"(PmrQC)wfC0sBƒ} x{.1D;OHH]دduו5B8Q)T jB+> o~1UDU/z$E EI >$U-o>P8 &E%6eVVb/JxR7yf"S#N^\[[1:xuvT/]k&Dx FT2vY,^Lgv>>"cc:Y??gop@ty FwP}I ȡp5x-kjq ;_r!z=F׋= .] SYf*݉tv3swZ o90(aDnu>RqHAlþbyxDჳ77aNL'ٝh~_r.+ZXXVUa [M99ѠufN*̪W7g:XK_v IݪS}Y#-S&bD-&lr;PA3WI[{S 1(a9UA,~Ml=5 #>2pfG +B/CȒ|p)ǽ|HJ }#  !%(|?Q?^D?R+QzGlJ"!{1Y2%rY9ʤfF'EIƬ_L̀J{Kt& iYLn1Y&[d?:\Y ݘ[XC|7+Cx"JM&p%͊ ƚlmb+NOAX7Ӯ$vBKtUTNwf F/};JȈMFS3fM|/vT38V@)|q~OxZѶd6z l`cSr XXl YEy#q&#!Hqw3qq.q{V5j!x5 "Dl 2AF匈ws,' S b{śN<WH>F-=&tg W;H=jRm{GzIwHB8PoF!o#++ְp.!ٿ\2:1,\yOC6U3J4}g冺k2,ݫnuo"]ZA3V ;ÀQ%u-Uj ,pQIdLcC0 q4m#yh(dNK%<s>"B8bZ ~r8Eppuރ\!g"c0Ƈ( GFrj ?;*t!fnwM[^c$PiM_sw0LD`\XFT8۾j1d&| Bnxt39;w.ވ ֡N5\9CpcΩ|{ӫN0 n$[Q4w0I:dQ+a#dyަ&+*}dvv LWlIOH{O0JET>xd6h'sMO']g:^nbDچ0a -Dk6^Zm|j5GK4XjV ")IDͯ9 *?ɞG!dsn.D@G 6"V-3xV.Uq-F -A)*HCQOB~qT`,HO~ MkY_#@Ze!4ՆJZ h7e7z9rʫ4Z)t([5 =3BdfZp|"mnV;%a2 zP J +ҎFl+4BK4 *i^U8.@!;Eƍ-ͥ!uܒ^d QY y3ܞFHYDM,<!Fh-QS*y0&7Mǧ^a+.Բ1R}0P%V! qCU(7s&R62ޗAgU M(>AlDL"ӐK nQ |"+l#nfqP\ܧVBK{Z=4ERPֶ[E ^oY, Se{+lLBm2iLoTHk*(泚k&zf^O%!^^wE"&| B g R;WrpvUBfɨ'$d4.\! ,Jֳɸfsr$ d!, ڜ= @d+&s|$Fc!Էq,%%^͠o(ȋh$>6sFA#]B0iB(f<\CR`T ZYsLSa$P튧 ތy?|o :K[n&4p5?8_Z wHo{Q6U-,֭i(erh(6v[iA}fmܢXRSVIMzChK08E'<aB`RN2ow +[X ٴGKQM0"NY&[sA,Yjغ4/.' 39$MR"u5@=,m5Y$@:dH }&2 &5n8'4GrI%:j3c8ݙ:V@eeؤn Е " I!B]u^ᮮ;%R-C9ߡUN/r(/@ +.>1 n !ikixK `^5M6h\${Tb Z0T 8aM[؏?]jEW؎nlzaAZ2#)7#U> KOH{kgmU [۠1Xi1i`#eLMǓCThQa9=RKIA =Ҧ:;/b5di;2}Oziv.PoUklZ&i3U=esFH!_VMNI+ԤZZIr ͒4*a:<-j1\PGFü.YYIpbv՞V=|T&T.QS9Dff bmV'|(U ^ o!*OܑPpۉHU Bݸ +K~ D)E2[Ȳ^:T`rmJ<#=~(54oD:%h1=a_)"TTs|iцDvED0Jp !k3`z8W &g=ymMQD惴t,t: ]tT shfdD,j/B2zRM dzÀ kLfܜ g\ޚY2')Ӹl;@뭮؟=1S8IWeȭtx4IDZBPXlFđ`bgɓp'H Q5tI2m%![PJTĹXs"iC-{ĥA`=2'׊;>҄bY|Uū' ^QD4<#nuC6)1 jTߤoul=ͯmGY^CBW&9yqkḚw#]AQXB̑c chta%$8KL29C` '2}E^E[ Uy#dÁs?x9T\qif1K$H+ 7^6XTܯ\cFW`Αg2ri&ihI1 נ8o5*[k9g~HE~f,4M0MWz;}%֯i)^n'Dbxf!4Ǝ)􄕂pAƇӉ>G ŁxI n gC-g`>B_)et7VOw3)`Y+(W ѝtXgRcې۴ 0p !xjTF ĸu5d[<+^M&D@aᛇdagGrșcP@J"{Y=#L$vmOvOЊno>,s(̙$+^\F(o0$i^2\Eh6\*ʰ!,9UmX9!  U/KA\#'7&"RTFI: ęauCԒ~<};Y~XdV³%@&pfs9)!OHBVN?Uhéj8r~Փ Ԛ6( /,QPE-ERު*R+û- T24(ZjU%ي}] hԡB=FX2/;Vu3{2ۀU V7*9HŻ0e XSUL_H \ab\Vmآtktl_! Wy1Վx;kx࢙ؗ&P<+$k\'x͛ZTϨŦZ*\f$p̛*;BNl Nch{!%nwjo^֗ڄpd$I&ehI1o[7 '¡jiw5֞ vMJs.k^ q;Qh;J9!@zr˅ߴw/ԾYN!un_/X8G+FFbyQB"LCrNWkjګ+3KMmև0'`$ta76 aVZa({9D9hX z .WQ.?*;fί9 TDdDO2_ꉾU2<'ֺu*|3._0IՆy.PՠԢ˦'UEO>~K4\V1 }Zqy,[UZ6u;Oo`YO";8Dd#8l8e5$@ABTS-ƴERgĬho洷 :x|^u&1mrGD%"^VA`JM 'UbĪELЂj LM cE`"K# ǖwYG\@a,L 1cD%ߙA# ߬aCA8Ѯ. %MU6.mKY8[0Q1dPܟf^0CὯ-S:JQ6?6t0X-QD@uLE}|aRYsܚ=hͦU߃ޭjxV88 2&cտqolhoWzr᜺d|7W Y! X6aw{8oA\Q^ .r" z@bP#wr2Hǃn^ /m^n 8߀xT`m<#gKp2\ /v`m;l}N Oh .x.虖ln#OY>nƵ=?H7ad6>y!>bL➖}  7py^[U@bj ó| fe־A u7ؙu^ khS_Kp~v5`-lt *Aesz{, &Jp[@r9Kg1r=ԙfr_Cy8u9kJP_R[va_.萭v=45ә5N<9ΎiMӾm)-[!;QOBGVKuHU鳩W7FL_wRl7^ՠ\蓷-C/F7:#]14y{ʛx[Mmc,˝u-Ymvஉ䓖Xm%nn@W{zW8;y37i.BO`NSݬY[L]F}7@pbm0ɑ]194G"3x%Q ]ȌLk6ZSA{[ϻ=HDR@eT:zܵ H~{\l(> ]t(gT=$Tz@+ btJZE#iuh hّ6{r\.R3)U8DmRnbvyc\Rw`&s6TbwYKsk)Ϋr;̈́+\Uҧ.dݝR|92a~8ǣg\6T}d!]NOe%u.UOMj]R}uRcuR[9&]VĎgwп-frTVgNr>SoǗ2H^k7|Ofj kHcP 6v-8>-U7,rD^Ii)r#Q UbYeے gzYSΏK %h&زՂ@ ucȊvՁ4m#Ug qk`{ ʐuPpi(9$E(U 9XE#XL [0 {0*3.bőlV$Ħ]+7F-lQSU/7퉨VPqgnLnŝ9A1Od9W0 A"QC;R68 =YK"v5 (b'O05@Oc!(RS9R>@̫@-umN3&B"9bcӳM~qx9%a_m D3/I^֐jfu߬2 3=jkV o؀I:I+n A]t#WK+vGUA{TD^Ӑ*ԞJ*kV:*A8-4p F4t}ZFS#z֦眪^:XqmV¼=;)tVUҽSJkꞎnR gKK*zPRTN,5nVj[={uWuVY;^ uz+>[@RM6j2t]Q^^,bXlO+;Us8mXά>4]nfՆNy{jvwu֮ӞڰTsW!ݺ@WE[nFj=89u>G ߮H9_XbyNȞvD9U _Pܶ91hב_^*JU}nV]N}>zWϽ| JznnZw%Ӈtf: n%ا@/n5-rLKiXMnڊN4GgLٳ_WKωކgM憖ÍӃZvחIͥ__OW9-u먝 tIen؎[IKvjW׊Wj9Jy0eϫC{vVi?ZY++Xې٢YKw$87&FjWg^%2yŖ@t`,OCOsSтQ]eR~ #C\Vja6'e|On&}e ssª?QN @e|oqQV@̏l^ Mem](jJ9q(;-Ljœ]%Ql! b1qq%q5fxx K h] &xՇtJqfdWƹfj0;Jܦi3sU4mp@A:} XGertjq\GkfbV QVp걈U*3еǾ˰,j>j} 7b_UX'A-Cz#4%;x x4 e' `~ƵeémPEm})Ρ fH܂h2H 4440eZwIkt%} u˥3ך '\DܮX%1Q5_ g6sЫӄq$i՜3r:#('1HX%g8Kv\g3%7d(5_ LͼEx_7LgFHLa-tSx׳ Xj':$W@,p"2I,T -&K#zeX&9Y̦4jfFē,)@c'cUT:4 -B^MNBN̜(yk9f`= aʹB >52lE@hʜͷ"ᲊru)Pr}BSʖƹJUԟrJT$S)FpFF.δqb 0?:@P3U@YQ "#pp\9amę~mvqϹSWzŰs u'~6,Ad E+D:ZvFZ0RL\Φ Eۗ81rI.%ˣ)/i?1TÃuj'wPg# =_o Uq;]$0-!~a0~_ͅrYxQQ@G߳Ͽ;wDQQ ߦW{ZoJD]3!|(᡹6,@ {5 Rem Pu 'uXCsZRg\ y1?Fx?jϥ8Bv GȵYuy~"sW}uJO;rv(ל? Rd:%;;:mޯ~LSfE€hPy/KD=cFN'E Y!-0iy-IWٸB E8&E;n޶3@[5?ߥ74l<S~5O[?Q{Z!#tzs5?,.mnܓhv "flI,a ۲L/F=3كO2#V]馨qIxu׭h>.f}>][q}ZlpwXȇKAZ>ޗi'_NT)zs`>|3 )œaM`1RE\Da)bd݇aWaTH7n%>}LݽYMnym zmAboJ$(L*eALMZ)~3OJ?m, [9A<>}VOSyI o=ށ؜4|}'Ii(=bb>6خ~c)RlDRa(>H7}Ǯm x B*?=G2ԯ-4jLVjgэhJ~/XJj1}"V zT\,\rSck#f[a(SJ#nA4W9Xpɝu7Sw;P!h #/p,uKsHmW]|<Йn5s/C{>n+|f 2$cu> oR]RGmSk&V1C~`}AoTV UͲC!bRjO%QS?R-eXX.٧ՐQ, o;wjbm,2UHr5lOqNMw=>=s?Oq(@VN@Am[~yK!CjA=e9u{Gt+me0#,Rw]%|&Q' TJNK|zWN9Z}3Z@#'yfRazdP7;  RO2˷S̶M7I¢M2:4.Eaˤl^$QFNvTž;|/^Cjϥp)B &}V Ifxa_'Oh~6B%,ٺ?ȹ n1|oވ>bimZ/pMɟei?(HN(U"גb1҈{ qնF6Tnĭ VbZ8Z44w%{i\4Fۦ #aWNU}{}vYc6AEHV}s5eEZ|"Z3 4s^⇴뉜ZQ<=[M + u^WGa~Z+0&Z8RMW c&a.5[Yq~݁jOq0b~qbr/n !ΪymW1Vy4-_ m˜ZSҘp068l!R/vIPBnɔ=@8+e{l-sszq?uQA%p ![qUC7v^4ם2$ީN2ޑW^k9":ĨMzASB842&Ug-8.׻FàԱI>3 7*GCbphЫZEvM34^1zR$xq&t0 U&ǡ8հ8A뛰i;.IƷekdmE>Q,*򈇖}eT0MNw<,gv"/m#*u14jJEc9px.h6w|zºwdmg"I/&kWe^^5ekdk&^gE笧b**ގ ~u]_Km&(ްxgޱjE#nsq0E~Uq~F04: USڏ=&Ug!p4.RITyc xg/H;|)bVuli]}ԣU'k}I 87ƽ(_?MC@// +G=v SvySJ Kᾁ.slj/lì|' &;|'GY~P5+ vԯ `)W92y%Q<ؼF/i L*# s 6װ')ވe.a}/o ,P2M 6TW{uJ(u(#av#>:_'+[WkEoA@vqWs;fћ[}LԽmj>%!r67Mqy0FPGT9 8tp{ u e|MATq Xغ1R4 ӥϹF/4DNu% MؖhGX0OG*?ΒTx3yJknVwXQ3> ɴ2Fiؿe-ڮ˞yXC>>ulb;C0 wJJcד-NJ~$`2ES{κH3jk:LQhJϳ jbI!Ye3s;xS?uEu^xt"qԝ10gJv`pln~0 $u7^xSefE?ԓ B(͒nX|D'" I~ƍ8zHشi\tMkeb ^_m R,7x^!tI@#y>9|'p95%oQ-y|Zm1:t53fKأ}!A"ѾOJv\]%҇U|a>.!@^j:lO8fN,>t;sz'}"c-6?ǯ^%TYT9:}jheFd0E&zז}^u2V9MuLxeԚuvU1 a#FnQ׭Jp^ soi2s}I?n3IL^m`YY)?(}yvZpAV, laR u}␧I!P:?t}}u»}۽ ~rcR\@RܣkvQSyX?`Wt<)7 :v+5zF?rpf>)'Mx߆z^dy( ޹8s;r񮹢A|%> ˥B'WO$0W(y^ }&4uNt꽏B@>A 9ᖺvh̩ I;2fp#Arv<| >=1ac'*yd1XH-`hHJ3^ O{PdB%H#^|̯y-5!tvL&;Cj;\'rё&fy5*i'LK!߅:3*F,8O}tb̰U<]yJKG}_ sf6ڤ'Y1$M/\r3\]@Zr."y|j0ᵕ_E&W:wU?c7;3qqƠx0;,X>˛HdM¶9rL=wc:5uSZ:Hfmkh!3^@Lj/dgHCDE !bb Z3O gί7(x<+Ǒ$qj5 _@aʰs2+̍FS5 xYC0~hF4̹X41^sf3÷ ϬK noFn{E|_=u{Q,toXjW]A=-@˦_~EQ]u^yIN678'}8#YN1ߣq,f ByL1w^ B('6Rc M Z>ʨ[Z?^vzsH&v%6$qtAEU]əЛܠ!Y&}a>6G{2P+hgU_<{ l]w=_CfpƳlmE~#zO6-^K Am5SibEVB/<(#|_^žyՉ?aOMEai܎ %D0iiq>/kAz%K0\yScC 2гa!P!tɨ:g8c^RC`IyCܥJ܎ py ~ȏ],0hg Z/웣~LypKڳ0ƺ2[ILM 5It(ג}ҿp4@ݨȁ v!c-VWs bR\-K{99]qFޔax^A+s7~ޓN٧wm(fƩd.埙䢔KT~ݞҪ>-5Ft9YQP >'XpU18/FZCɣLw&&!tzg1L|#bYʪuLpmLPž|d#6.N\,6&ף*H͠[h5ZoS\܅~ByWPr#M~x2>' $7=Fyw#犗@'R}G*;º)b^$QX̭Y_V%V:7P,^j(3tD12I$,I?b=MCҋikv+lJS<嬼&$.?F x2/7z qo*{|ǢTƘS~Fo>] 1m٫7jXbғi|`KslǨ-IYq% h>֦23xꎧ"5 TGoя[ktkL3Y̬ʎ5 y;d=Ig-VY/)i&𿛡ͱYMgz&>m.\ZIjjϚ@ɕ)O^ĕ1K#WWΐ8]Krv>/qIU9@P;D㵰sw$eQ^S.8tԸx$!^9#+iCyD8 4)S̆W5?=j^D"M/ 5O|AK+bq EdDː$6zuÏ갈p'hcDF,RX,2h 2pYVW<F4A OЅVZD"jK0ѶHJC`ZߴO,j=A8ixMzY.3r,41tgם_׶|NfHj ?* 4N!M;׋>QSI{EɹdX1Jl(q{8q^MKT[?s/HXPSh2-^ Я~A?T}b<{ \`\#/ l.rZl}fDx4(^m?+at^Lba;q,7N詾䴘9:3_c市fAt9!'\0z`+#ttꅂ,MDd8pD40\FqY|0X˜"aii D_92F2 fِ-Y>}laX-_ɩՏ;&4Q6"tHڦy~,.d6W"3 9z-dY YI @ݙ=ԟ2/a{׊j-VF7T 5ׁ9 'vpGj"i{! AS_XԈ%Ĕ_@[SovчY0o,wK{9S r  PT?rrqLK *H2 ũ_>.8ޱ%.ޢ PZ{0{U?NMXW ็ o^mժVx*>Kt|x 㓐MiԳB`I"Ė{lX3fc|ØEUFPxư] l3za\a%!ɡp7֘I|#J)bM]bPiM Q/(§ jcPXx“W7E]]0Y]r95E]LYy]mPgQ&_|AWj'  *"@YGj v^THnQ0ٱU!uv#S3Q"˜U QQM0υS#.Ձx9:Qr70O;dV̀eE҆}#S1y4#*R\ 50][w<@HWjTyE5+PT5Xdi`Yuh%=\Rdaܩ=!ˏ-$.!l.U?_A[L3K{ es[a=cRYԀ/-9fםRś49+GH,0X?BfV #Byp:] ]~7vzkKoK'2YbRB?6i΁ }a;>B|D\S[܄XP #~"WɿwUUί߉`/ɔ!ǮԵ!;fy$L"Z5%(|`GY Zj~-ݖ7@{?S9 .UncJ= h^BqGqAQG4fpNj0ų|9}I*5|RHHrebݓ}%q&KHFU Ѫ ^ӵr{ *+-O;3F%˽!݄l*>iUbd'+ģ i[g~eu̖m~.x$] [lB#~'-٧Һ\IqpwETq_?N P NA^2L-x4؇ܯf&'P0ZueҤEhP&"XJmB0 d 0Nz_@8,Lda/8~)*eot&SnxI6T|iN5iW 6H&fn椚x|WQ97m?>Hu{ҵBhK!a6)8"` S\е?{g XPju`I$(1Hxy! N?PfNaғa%(."@!GZpJC鴣o He@cQ=pHz|"jy<; X/ Jdɦ.. 1p]~!&̟SM$-nftv_󪜦&}kI &0Gf6q8Y{؛0;kGF?fLaDS2jh3 >-w g$G`eȽQl$χxg 8ƷD9/N ֭a^XM@lcp_!7q 4ےwŃ u^Фt)E>CMX=n.X<]]&q#!O]yS0IZ/m J!>g4;} \"^B޺Hn,k^h8ZRz TuSUd.n}K(^iSol>cpHLQ\9!!&<yd۴9@Q!a{\;+q5?4s?\FCyڳ4C޼uBn,CUm-5"-C[o\WZA;sa5:`}~#eRЅ Uu ,Rn\nyhBHpȥ`NO>br@ETf 4=YVgcOvh[[¹%\Pb ppF@CQxr$T % *ș+eE 09* s_hD-ѓ( @T|=8ᵷZ.Z,;ܘ/) OH,Wmu@CJ,Qρ5ɡqjaJqBgb`C{/*nOLH- `sC ?Ӊ_qgϊŤR y੐D;.3:EgN^[&NLU5P;/LBϯ^`cZډN K~6=RyoWLnYkap^ rI ~3 |6Y Zu2o4x_BaRK%$@L2p&*t@A^Xij} rn[>ˠ>cGwRQ-YL"8PKEmm,h`Xm:^1v+gAuhRq5Byo\HFyp+,e')4y=v@bJj''< "Aa7,`OsJs@2@bv}Ess1 5F|Sx}B{ߠOS:K`_!">g.}}Ÿx@Oy*+I̠'KSfRIB@I֕*o,"  dhZ /5Jc@1M%$94\Y0q?8H4I"e`|Sq t[PHYXz8 "#_ H!"_ xB tVPVԢJD)'f_1~yߝ,Ź*Ơkj(v_%!4'"GiV܇!TF(AgO_Y)%NGi9.5Cy3PٺZR^<&?]յ4'k.1ӈUEeD5fWRu8,sޏ{6 ʮ-M+L<;'Rgל"FqA9sc"-yW)ii?g= O/n +u'a7L)oaT| M¯AnϤ9wz|1J;(/15JKUnGA2(6?^^qDEEb/V6^_ ޡq;q*6G߬jy._w'.YI֎6omK*g{92?#a0P=5->Җ"c%T7%#{N|M@Mֻ,Uk!l()Y.2jReex5KM7uc=B ĂG2AMWv$ΓuJ:4۩UJM4!%ph{LA ܈V@ |VL`7 Ȏ rmAl@B|_[QDN?6O^XT+ӍZ?F/dUoO[qg@V^R1 (\n5 \U|3fq0jv!BmzF䴲.ӆ&5̍\w,m**cJ&*)1?3>F~`%W[sSIryՒ8QvSjҮjw})d}Fkb|b1 x Xc6 #ܙ$)oÁMu'Dܞ|+ճ?,Xѳ(X?b99MUfO:sq3k^|Xjur YߓN=yaSl:(j߇sN"Nki@yE}9 H?"o(K1ci E&=ywn^T3. $]WGD-rYtϴdk6GלB0a(&TwYSL .|(imu;]DnˬnRoʺT8R~`5̲C^1O ӻcgoxt[lIm]EEp1BTVTIJE眢'6dx=?1)s ;K3-&n4b vHb;N mĝGdW%ZBQO }/ 9G5a|dgZ hυ@IG.ZE6 ǿAvzWM ozA-:f.b$,Hۼ b,^iQ<k̞*e5(j[gP>d/vl"gΕ&h>;QXs |J͏3w&7ض^A [0$yXPsX}b"/s4!Цllde/*R'8gҪ~~=FndUI>l1|;X-f,[QTvV;V~:1\߾+t+?gIc g5>!ރ\ x71_O烗y%~^GBSWh[s_~fvGPʫw?tp>ޭjVV D;=>+QrSka$KbV[:<=AQZj,p-8;z/oY.? ǭl_܅toW\uNtЄ}$7_d5}eQ޸﫯{}g.-to?/!UT~yl%#ZULS.ed0ө>\1 ɚ3Req|`X\O]L]ZN0s> 'PeA/7W,OOsn#L5kj? 55PmU/,_focJbSۍ8XzUa91 9D&316DYwZBp 5e뀤T)#ux .$$}6DPjA6 J5-iwa[ 7F}7 @V P(x+R}B{yփ܊tN@q GĈ9 $$5P|~mwm٤-hTfEbǤ *Y4 Ŭ9ׅf)ѿnQ ~ŮvA' N,>ŭIE ֡y0sxd q\kX&ŏfE,bhN1ČqEeW f2iFHYue%֒ܡ9w~38^ovc,y\4;Nrtq((V4A^ ՎPS<ЃtrBQ>_(V dV<`+K2鶖/6FX%7–,I$X@RIIu`H l̙tn*ƨzpD|#X8ܱ[%-#xZ.dִbθXG [^7ġ<O8 ;ޭ4|3^1)N-i""_iw\䛫 {,-ūH~"}+Ԁq qZ׊U8Z$5 I[;heJ5,` !$9-tr1LCW+Z@[,=f'jFiMJR;ݬ9mw A#DO)|.)1 RہbS,^uL]KCŶ2(Z'o"&nSE#DT"WDb IŦQKi \DG8Ŧ"P*ib#%4D=ߤ/aۃaS&KD8lBD:CëD<$D{xn>">J[l`Z))Dd,[?]9[؝ZW 4EjΌI#< VjF΁HZD6peqހ&/05wejR#-⌆Zցxy>~@Vw1.p,z):H@=.EsGbBp1 =\55g&eࡁ?VVyc^4WikZӄ+#<2ָ" \(<$c[!ĶȬtRc #dbįfiNa<;ԌKEJ8Qq $|.q~AX8ȵ~_BJdiRG%vU:=9r;6ΰEu9jB"E #$E)|o@}{'2aMγ-ϭi33Ή8P>ӧG̺Aɝޡc_ڇ3?d H \}pvC/I 1Ȗi0d+vSn:oqFw}; GVbzTRܴ-[Rq/-HU ?&Fk.Ù-5|9YQlژAQNk,9vEOoĻ+n{H7f}b~b^CkɮWϮ-vw]qZKR|C{>eSZ"f 0H:I?o ]y֍P~8rї@^/G;cc>(+\P/>舟R2B/a&ӵj#Sqjs1k!G(pe:C܃6P0Ce|y,:F8N6F?R9LjvC<7Γ4|9no {*N;j~vd]ɖ߾i]92r1go(;p$mc-מIl /w[w2k]u/>(膴* qÅjzsN`2./>#^lp/V͢fx\ J&<*=$hbQ,rL\tc̴09WV7!w=$vƜpc}o=/4K`$9A퓡ơʠ8}LgH[Q8u™_ ;H|0µĦ-˦c y}23tcR%q1H> 8q{'`"7CrcՔRJRs-ƚԱTW";zؕuF#48(06*ev̺6o͞P I%.㭕3rLo}^s4\z-;,M6 ߮l"tT.o_]p! MG\fmJE/P;ddQXFAI@1⊤TCW8Еӝh.!\EiI!/gW;l>կ;er,&:>ܪU"R;0pBUd̶>YK`x;|4kN+x|(RqyKrE@Wzx>OO>۹7qmE53)Ĕ{N(Tuiw791 יaϣX H+qf8z(R]Nx=)z-֐'HY\}s=wt;[J1  ,Z`kG'4[ 4$bֹKW/ }GcCCJ8)]tV(k}-skT\g$5Qa8Dne5Zʎݥ6,׷zFܮD1H;q|?bFb۠O4kTͺ!k-b@*x%H2pʄ@#P0g%~}i3Gf)gQ"Av0 uUu͍ĖJWKG t yIKͪ`8qgzD_˜i~s-]" uyY2Tk)v'mz/H_Յ(RSÁ_gM6"yn,D#S~i @.Ȟta/LTۮQ2i<;R7ԨװtY)vX?G$A6 2{= ˣ@BX8o'+ UNu\`zf֭"B@@Ihǚ;1\=P[ⱪbe2cXFm/ C]^O~ʳ5_R-Lhjp캰TjZ@{\1cm V`PQA۬?8"T%:GlFɮ_\n9tY 1%PB#''t.NX!4sKgh&*Sl1D Jyc03n7iXоY|(1&;k5v/V)*|$PڳM#WꎥA2TSG0Ź ,Ynڪ00VrzsZ! 񤕕1)VXa[bjLA{뙼 ۬Q2>QbήaX Q]jl׍- r UUW AB0t3]"4KBS/(")5Iॕ_Ya3<9N{ 1!rhsV+1a#) &%3x}1{|0$~Dz?"}rG.7䦌W׷D ViklVmZ]lcfn0A^oۄhucfWT]{Z>n =Fd|涷KoD|=S&\gXBO^^d.~TN+#mͦ]h\ӦaF8ͫNYM/Sv+pVLu2̽'VW;O腔Ж}ˁxFEFLѐm9N3hQWnSz@3Ms.tma7v(% eԭLMY;2LO;/\īfbڑ]q҃2&mWnZm{d<̌.]zɺy<2Ry˒|(ԫ_(c`F|7P/&?/&a;͸k_yŻ:80RFFC4Ixg_^?]޳8zJuL^^]'o?3o;x}T:)u}4;Gx<P=w<;wEoD||~+F1MFbQGk3E<|a)'$NE>7mlsf7/ -˯()Ixa/=D߰ǹ4v{XyaYDGS:EzdKNC1:A|C:-JL8$r8C!k=1pM9OG;N7?>pK N1gzXKtӌ?=3N7[7'k>I"8r8yEf:}IJM9ulQC<%$k*^ !i cG$?'cװaбn'89eqlw J!p;vws zDP Hu: @?%8H$YΑ@[7FsXܚ=0>ZN➝} qt th0b0{1@zOv#ુq?O  ME Ee.~\f4<^ts2,YŀVÿvv!98þ9l6D JQvNS@5jTґ*]R藺 )ML\*@qpKV/A_yDH7=]> ck EQ章-{'5=aiVM+x!t9 soZʾU r^CTIv@m4DsdBz@;q '`9mO]QSJOO@/MtMR${LLRYr>:=[*үE0dȲQ!s5,U'dU(9ľ/U4dlG[HfJ~e:U=d9I8g@-B۲kTt Di 02Lpdy,/C/IS*.&XC.Fߓw{@^vpIDNֽ&zxmvZT:3e mAwh=lSEmx}hn)ȉe3[=bQS=f2Q/Ns-ӁޜXEԋCD% Ǹe8 7ὉluMk#e[O\rBK&m@|#TaȭD,\.$= +Xff=^;7EpG`\0IUrҧ!&a9&+2%mux&7z372yS2aWѐy?@ZohR"C׋AN~2lG 9i ܭFW㣅UlbE s6T`mZ| 1;P&6YxS&@Z WR`\3= SNaMsj&`'*b$esU\ӏvCA7~23xa!| V2~v^vu R']_}znA䊟ԉPVvcU`uu;JFz 2l!kA\O%҅)k.o!ۍd.USNLj[MIQ ׂƊ'[RMl>QReј7-u;'6<'X upG2Za?1 oTԂ55͜LX25_&fC+,*:jT9eC:NOy m^)Vpc8f׳\W>i>ͫsB˶{3N)\5a5ֺ=1pn\oDHWV2Ƿ0]  tR6\);y@ @)<"uZ$γE8 'Z6ˇy 9Cvd=pe`r'E VjoRPݕm9Įz+_{s TЍ?eFah`!pU~ƚKށ$$";v@uzp#;i$a9]ZWYIhA[K|#Ԕ4 BP+X5{ObL#`ynvǷ5`s^6ⷯTZJ{?m3c/ɞh,giX!9/32άa:r.y(Y/acAg[Xiab' @NnH B6 *&ZAJicЙ\giXQ6Y ,Aԫ3H7uìӻ ZteZ g4VM:7J3 E j:]}`l,o}EوͰ٣ r8&X Hɍ1 r\а`ɑXFT-'\3$-lBA d.roMʪM:RYq9f6~NWwRD2"(bA1&-QZVye4Wҏ: 'KUr7cZm-S@ޞf/FQl*;y8~ײ[0.]}ƾȃ~m/Ul׼P\lwx!c]|0KyȜbZ\:>T Gv뺻Y+p[5Z·RBIUywkx^&2JvkqR${GDV;9ak%ECVJ.k`caJfC[X́ZK1MJtbQM*͐>^V@E#˄5"CY JZցU,'l|^%!u?$I~&Tg,G\x{TDiz|➰}؝&qS'[g"^>7^{x~T5)j)]șńkf#|zf NQuA|&&7tcC3%Bu(Y Kku㰩 |Y3ϕ\)U^/^w)}Ȥ;C-f5/z}kS, Tiכ,\v 4RtN/7o'щfr+8o}kL AGXN,2ji\yIr^l$dGY(>ݦ 0xJ ;w QS`D>gf-λ&x!kjI6*DžS]^n$'WF1j>Hp-uECּ!ג&!)՛׆5b`J|D߽D:ٖ&=!g0~54?:G8 S f &|-r=8ZsK9R{gK+ݱ@Z{QY_u*iMܶ) 4?7-lf f-`,f; ٙu<,viFFZ`95VE Kxң/ۊ3(H?ɫZ3)O6Z&K}.)!{m:1t/5}8Cΰ(Ҽ/6+5R4/Ԑ8bI ͢mOջ^T.ޱ}RXy͂cj}nu2tzE6_!DSI9b[WSVyf>?ĀQ]Gඥ3[=>;R_5]Q{rdfoHhI\PgX6wnm#ݱ^г cPAl` i g`Z4Ap=*3d]֩A']e=zHȩ99:%% ; E@I޵aξ}j]存m _1c+|q*}]둻ժ@jH0pIR^D h|f%9Ŵ*P\eBeuV{CV i*ڌB4g-\[56nj+D{آ# \eb2S FP*]*4ZWۼ#k\|]=E 0v.v0p؉O uՉڜngbSHv{y#0 .RR?xN=VG*FMmB0e i5MBkwᲽI6^8m[pa]r9_eŬ-д±鱃Gdɚ2E}IS#^%(sH_hȉ3_,(sӑW] ڋj&oN◕2*eKlU@A`Zꕌi˽>E޹SW?_; "/A'R5ꎢMz{%~9F! h GrĽtzmP 60c.2*wGehtRjVK)BR"DNsrk} 6>N;:THxQ8X{Hp"g0<`q <ȇ N|Rl?P 9ѽ",_"&L%E/)\vQd_ϺƎlU#zc悃!x5[>O?p~K,+T3u 9o Io7ox )ݫ9\㞒h"ށqMg;7شD;YFs"CI2Xccrؼ_7,|,e'3Ξj|zY0,5N8S\kT '/D͘u!_YZgmbWF$l%a|qcieUҦP3o7`:2#XadG!2)9!!trcݝ5x5T#0ܩ9:&h@ ]6kS^-:O՗dn1vvm{-q@{[_4GBJh֢:xRuڳOBy-7Mns;ӚĖa|Dggn,:>b\~ V+϶Z6;` 6̫Ѯ'{tF09Yæ{!(j0-#m5 L弸40qVX>f.5Ĝq$e$n}H]5[l]vi-_ǘ phSҏ_u@YeG2gUt| ke6g>-4bH;+@Ŀ"?.oA' ԩ7^H<_߯㓙=?:%}z;{~mgFܚll[v`4/l}N )HYG7god,韫񿀣F+^He_PVInپv#1-Dm;_)r^F"ݯ&ɣ?#)ڛ9UjUǕ n4g<ࣂ )v6yԻBGjRd &gzڦp/r i JnrBGp߃[gԷlj4wvHPlbCnPpGV%I{GpRl5o*NjW=$HJ%@M~yͭ9e޹']՟N uu#n`7z;[e-k S edg8ixE)q,{亻(Қfq9 L潒 +$\ J*悹؞3n$Jk+ZВʈ7*,Q_ =zٽ(#{UM/ (dD֣qs@ȗ;Xa<:4'99`C $vx mmXmsl yN-_=RAe݌*OR)災dTfG!5ꓷNg)jW_'duE&V>O3WS3PHe(f8 3~_;7|0/hOwp]gK=YYd똲A2v~}bzLaUCL.3Z"NDr^t<@ov 3Rl٩+U8of`g}}w*˷;W,y~A~DʔNNgQsR%qtlۙ"` `$ʻ4n;\CƙU<=qV`H<`rtL f,اiw!Nw`@ Yv30ccu⺚=yZHx.4#DI+X}bXtL& =a7lDq } 1WfP5bao5:K^99,=롽͵+ Jį~~am%v$P:v~uf%sC( T^C01WZqȨX"٭c\p#qX_!Tqp)eS(?,xF)+BI+j Nj21?bҳUu:kx+;`ƓϰgDg=ԡWq E\ѕ \sJ';e/?ʯ i[6s+(3hp+JA;Wst}kQޕy)?I8] BC\{ݙiիllS8!Xveyr"=[l*RdƜG~w`s$ ,ZVkeTnTKSʱ 1㗔(Ņ\ଧv ab&GTW YzPev-tuM&ڥ9EZ|1ED5Q, 8E6i& NU\K˜X6;@Umi.NQL+jK|ӅDN}7r54l`9BpO{i@.XK pI~hɝ\t-4ؓ*(pݔӰ!#$ O9k@Nj1w#$=6 ?L m06W3@-v_@],Gx(cm?և(d5)x(*" n% AL鶠N=I?QZB_ۃW> AZt[Ӯ^+/ N6eȠKZ3j.9Mޠ*>v6#n.wgGeE?m`SUң:eJԕknkԍߨ ]7=-J8ȦM,cgVtzֵyN(u藀Ws<'Ff 4ʯ?Iwڂ^$}B>=GR&i7AZ>dNIz$rw_[Nmy 5i]% >W$6$ƿ9`>JMS6C6 u!;U V<8xB |V M`¥MTukg.}=4C`8Z`'k:=BŶ# uܖB @L9TמU+M=  ۬ΎZzv $D -uJxMy*.vPz)!YEǥ4ke:\Ԉ2RH!5~?ap }AURѹx`4D!Zz.!(S򌫔7z]1K=<z&ˆGr.cq|XԤۏUՍ%V;+!q3I ;#Sjtpi])v~VD ԼnZQ'}NJsvP[A.Dl^/Wq$n32u*zWE(EuB5 yX=0 @FjW0Sqn: j< 0@Ġ3OZצMd[a{ۓ6srC&lI]hKY;1L-zmɥN/wծ[BKEuI[X@&@^K%~uu C ,M@thBzĂҞs1#f)솾WW\8c v$ hW[a#~-. [$DƺOVcS+_n/NC7E2V7>}HJ9N)ػ g+QHLyc d /Rb~F;dtk )%l$ArСDc7tQv$+ðJ}I^H71#ܧ˩B+W?8B[ x(voKr{N 4Elڭ,ΜԎ $5dhݴ <2.{Y]ǵliE\5QpؒVJvג3Aq[aF(Jij]y  1IÎKILZ!l]@7FWloƷ[.쌢ޕ0cm #TwY-X(`K5 ˚b#L* i\) ILRaS3pkyY0c4c"~^o;:nK&^c!LQ#  Lß>9CW5ha b$W+tbQ5KlJ:jVw&)$:=:~&$P'or u,M:Gj21Ϳz'VδsYX4X%`Sjrhaq^%5;CvK^=aZ:<}r˖f`)>vU4?w(iLek^boW\;Σ>텝N7qU6ibvفo8q8hEV2jZ!+{MưҸZ#A&+Yhm[J ѽSmIDP `8+C 2vo~*|2].^'][4e8WJ dE ٓ<˯R6? 0ζs/) [蟵Kv*RΖ0+^̩Fʅ#1O6X넑rO<LJXA}Y3地U^4 /U|H1kK\J1[;]UO[>;؈0Y/Ts|l̑G *\C͛fv%ٮREz[?,j/Y<"xotץqmL2v>Gܴif;a}tj5QLaM:PѪ])?U**Fr|aNwOk`;1pͨ|R<h\4d7?),j6FHܴ^M8 kj6aWԇ%˪ qe-v=VfqGL"L߀fkUU5F[ ,7fpH)aeG2!ϾnycZC^#/h/7Tb%GZ!ct.'>t4g\J;@%>\ ˻Vb0"4zFpS% ȊM0@xJH)')Ȧv̔ ^pt\3Dogѣ@&&. 1e۩#ZyH#: 5K|dcCHQCp*C݋A#MQ|cW9E>zG1$؆%<-Z/y #ןԁV_|?ToU';%z;FZgq`=yTM|f1݈{՗ڳVۂv#!f2: u'B%&FlôY2Pc3-wp@ S~‘i%Ly#-8:OL#FeRWc8.iacbseg<(^]cZ>vOG&c(ˠDsJ8,e)\x~D)t 4 :HR-6Tkd ww +Ϝmq Fd2tv!aK:D6-M1'"֖USVE`UM=!⑵Ap =?o)v/fq{I?by2X:~iY;UĬ4D$Ls +ؽyl w hsIحҳ_yAݬ$[oUIIt~Ģ]5Jsl ]gIy~+B8Ke8*U2c!p[[$FR(IońuKsYE D@iˋE5`hжKHwnEH\**m1PG?X±līA@W 68+plzɨ4qӷ.+ 3; Ot"2 m8b#/Zw1<H$IWG̔w X!(dAFUg7I(-9[ vJ1ÐM(($֥fC)F5a)Ev: D5Uw1ϴpY !qKf?$8v 4@8{K$"\iy0k4QzT.& ы)7$"zd>9OJ /M]WWKXJ2QnٕFkzrjGf6C]:%xi}Zf&Wr 249-icƕd3]\leE.؁wj!,wIQXkeßh;2[aIYVk% Nƪ7wk4"{(^xH\0(}PK9 ;,\*ͬ1 (-Ahy{نɠ}X6Ž 8:ps0yC΅\xr%&ihM؃t`Ux&c^ ri-.rCo 0Jw):E`sk%50pRG_%v{!wVYK6'"5_!$<}! uYOrFZ`S4NA{5ou˛LT/Ċ%bdzkF_5K~ NFzE\e( {yJi')6 ?ū(FR|oC@:hJ/ehMڥO;Cf *cHl4vTDSJ77 .I-jq,NBieA{lR:PpAInL  &džf jITߝ _BIǴǚЋ҅DZ`}q5Mq´Tt@jnn7'T+aIL1! 3 `5eYc s;nr1YK,,]ಧsD2 Rfu1MEtIjMRUvx=绿bS2 E<3͡7)E26B~Lъ2%([~0G$F]45;نdg6tnG<-DwJs!,ۺlS ?WJqSX[γ% a [rUU2k)QcaG#B(zWʬKYģ\eaF]߽hs-+)fB3. 3jEa'^aWt嚾=l^dM@ f%#2i U{)›)&g!Ь)|iE41xa&dbz@@I0I ` rQA;V{QIm߉",'f/Z5yf;_0ҼС#M/p_)yVUQsڳ: EDb^ F& SɅɶPX8&j@ M}i2G2@bqSJER9!)cw<;x擄~G4{2M2lj剫8z0pBe:ᇩ.e"! aHNr-a1Ir~/0K:֧ Z&%_z\{n9 ^8*?p.4iJiћҍ`=>G{Ʀ\.6<+#F_wq r\:_M(⚽`k; W"oOe/`G6Q0- ,AWwژ-ڼ+N STe. n"*߶FFcWȲhlBPVڣ@.-g1o))JT~MU9vQ*<-(zIa;vk?UGk:oRݵW~鐪颻 5`*il.[MW#sX ,ͷ<6(Hǵ~%bhg[XDo=SH5p0|YTo57 YxƧ7NI&Ux֔c,+)fN]0hƋe7/;zҩŀ,6Er+mryh{ga m۶m۶m۶m۶m6W{7ػM`}XF~7'Yug(2WqkݓxAR{n>HdVS]E3658Raoǵ|.X&cǚ YcCMP8UC1k6v9}P/z, 06=;Eʡ3ʡH7E)kMmS "eM6#mؠGP6m?,8%m0 )er!a&v4p4㪄f^J87'ELຄE`U,,4j1np@&K2ۗt{A3s>ԛÔWN1.=ܷ=$`tK_M{aь<3|؆1(}^:1X@"sHL?{jvx\ sjl5nIau[ &NGxHYQB^E[HU؁yUbۼQqΜaƖ6dq؅ d{g"؏dEx33EvzvoqiNcx{y?.t -_fn6Ԋ?5[{ЈgyʋfIjLD/@a-h[__j“Rkˏ#L.{e~صSМp@ ٍ\TzF݄9S; ɞ{dXѣeɦ|WE/)]Ͳڥ4%@1}!NZʽ40j6FV!d3j"Eͤrԅ\.v!$:V$ z2w" >66[9"dLF-GAFRp_e( /yi5ZQ\if"CjAqɓ,Ly6${DDch!*"ҵ/ݩpU $F)1"=z]vbtdfvkAwDpX?`A8zGemצ9,ϥM]c[lV#7̐H{rjSqAg3e=t͗!:y mB\|ݚf,CaLl_6fJ';y*l > Jⷕ[F(u"rIp 2WWu7U5wj B8m.ꦦ3WoF ށ*~=\W}QNv;JC<^vX}EWo10.8HmwJqq=Dzկ70 p(y9Qo۱vГ||g@HIٰ{̶[=jar@Lw/ayLT3odn;=N|uw\Ic{X>!al&f xߛ!8Kٓ xEI<dɬēy#@ծ jSuH PSsDTRa!$ aM66aIx3%UsԈdWbvNt*/yGPA5dasѤ^~{c8|Ț..2B?5c =2,V _fX=4i2A="P&WoP/d Q e 4z&qS;AIQVr3As \ۥ&M.iK.*i.kNhM%M2BCLMxɺw7I4څGkӢ(|tv"w廕/n;PL IS6'8cNmqtqES/L6pv8{U-g߹P`IC"BsH+۪BDIz$w*x7C&`xV,50vu'\-Έ{:a0tXT66{?п^՗_$%]0jH$y.SKR<7BP@rޯ?Du*#kTY[J$kRZ)Yll4u?)UB,ǰy Fd"~r-3"suu48?jeuBN=VE@Tqӂ-7ɌZtؤ7`-15&Ӯ6\߱u >D:4\6_ԿҾb@2lm b*;Hi8ȘpPe@cͫns-\,":h.?"f$Dw`+啔YCʲTmn2e=~1nTx˯eT-<g[߰Ӭؒ ] /;xfѾwURcx5l( *XPbP- ^ 2v^*?1v ?XpkޏLMe [ڨN A8 H$V?8=}O߫I(@e-!%H$@e5Z}DOBؼo6%+B](#6=۸.*=8F1LB{bܓ4l<[h 8)j!Gig<tg'VwD!WX(N Z¢Y%<'@ )pX}-.[ MJ,#+ '-?xVh3H1PWOϯ0,Ex!Lؙ^2Qҥ+$=v^U6 (\mHr47/],|> ZD|.D/Ays sX'|44\S$U@XtB_ˬ MT]k5*ab#7CZ+`'d1yBtcJL Ю|Vʸ`<еڮ3}H( yud1i2qûbzVSͥWްrM)Mf H'FO+Ovy5A}fc-8ldG$up`nZ-Yw V{ZBKtՏ ]zc1JOs/Q96nn&RT&٨:tc:|pIu KL{Y>>êL3MY/͠a ިrPȥ~fW,Fef[FJ]d&I 2%'N7oi-FO楥?LiȗY&SϪ 0ۤ(=0P/^?fm{aiVRױ& }_W?! :f"MH"#19}f2u͒A7r*9[QGd3MeEX*BЛ[PCዡKG#= i3JzO jSͩo-.h*KT(еRDǘQAQ G"GT\ ƅp+ :P=Jaȗ2C 0'R tSeRaDxg n ~ic{֜$κLOK'pTl sNjzM;bAdnLhRP2dI/) _n4LN8nCK!ݜz^O26F?ŶG=T"0d6I2݂Ayʵ*QU5RJW42Z[bwjЛ?GuCpYv` xvtGlhF((y('b2PA]/(*$Zچ8?υ^|5{d(,:ǠI5&w |ΥAq%3\I'@9,Kn lyϨmZB LSzZel\)$khkɳ&-, tS*18>R3_1Э*Oѩ6+ӘԘ  iܔ$D1r( |])"?yiR3~s"8jsZ!$ِOb&%,JU#}Xկ `bk"H$W1>5j™A'o6C5f4pH4 ?X>5(gفw4 HH.ٯ ZAD~]06˃G%͗]_Y[l Xwr?5e$+wf*;Z#'3ăէQS,*MXu)`OG6(J΋`hD >!2\.gDk]!ܢ `eJY1d\D*2E0nҊH;ZcE(զ@Q8ldž sKS)Է] 7nt*hfK{:VB ŗ ޗ /bbbVk2";DX% (`W}ёjc u gXu@Mjdfɣ>|(:dYP%~"}^"'onģ2[Q%|C+2&M '$0VLP.~RcE#z_žҐ$cs84 e´yI+3SAguf8er}N8:ϓTZ%Y#Q; 'b5#Sfɧع{^u2A;Pz}H|]͒t cɿr+*{_]9M,F{m!,5Yo9v;Ə$r0[F-u3&l+OI"YZul`sոUJNaI^W^sڵ=.5#33$ @N٠HTadi&l;@/;5׻ٸw_jc1㩊۬x+5fv&O,a\ɑ+Fbs8?7d:"'󼈟O=9"7~+1:]i1y.*c{7<|!d3d( !Rnh#Jzo.~@C-W?;U?s9q\|Ҫ<jOUmfSa&I"Ss8~@#B9{1xoѢR KfU/p!e͘jW1@-ҾxhZE|0IK~vҳ$0+nޣIG>=$tgIؽYֺQT<, :u/72:[blgMJ>[O3}eCfĞ$K9*q;zW<G::g8(+u$卓V#\DN`Y̟Iy=/_Xeux>o'qӘ<^篼)]c3Cg^g_̖p:ՖQE.?? [FPZv,7$7߹} ip` -V6ϯUC7oY(xQ(O_CblI~S4s;hNB^{1mP84tՅ9=0 Jxopr<a{/:VޛbkvTnP+OhVD~1mIo'Upm(30 vm_oX"=%Q>t$Ԓדzq@>ϧ/&.\ njgifDZ V셑 oݴa׿9h˜eϒ:u ) g/U:<.E& u֮Vܑ~chEEs.z?ۊf?9&WQgtְC W"a@$s&HWP np\'C3aB$ⳅȥ|)py!ڧsΓQ]pdɞ/?0ąRq*NӠNTMfWIbL;ڀ͠qPɵ=x]IkT '1."D)?ʡ«畓(:<Y4Q3?$UK ]]t_KqL ` >CJѯPElr<ܓZhsdڍ/grS^B6su(\ҌICifHLlku'?: ԇqd$h/qátJٸ8:[Υ˛IM+:i%a.Ds(~P6?ϸrjs,5lc%4+:]=WV[(Zz! R0Q ]=p}Rh4&[:ODKaj 85 PO MEC Z v|-YWaŃcT(dH֜.fkdp ]zΞB$›7j\Vܐl%?Rx uvD' /uD `&P+r iS[x}oHnTT܁&%;d- RKV~4N2Œdce iʨVwҭaRƂ4`f)w}Ω_vpx+U9[C_~Aʘ]0{"7/@@c`GHoJJ'J-orPA7ϡ;r/E;ͨ<_$D4%L ~wGtaboC^'I:5F)Aapy>oI 0kxlaHyPןa8tC6y|HFdM,w 7QD:D>/ӆ '|DvrA.AY_\VuNا9?=xЧOD03cAw ?|N{ snÜ0Aƿ K? &_SVfftG#}SDڕإ OG$(e0NNN[fKzp"zM0<ňo[w 5RNfʧZ75cSY&+hH*Qϊp. ^ ur՟ej<Œ "$ZJsH*&KG_|a<1U^춶"U{l { v;em5.7М 'Y 6 !}) zGx_auu+ƙu-&{zȲY~,8{;e\^]SpY%gHxG`JvmFP}gXĨրZ䖓g:I^F|(ś6 IЇK#¦~ME < ռˣ"=8``\0L B\ k 0s"t0$_LA#WM0pd,r&ÅsU~ÔP&y" f)h P]md.}0(zQ<CWϦm ,"wES{Z U]_qqtV,0$]>I%Z묪nQ^AHjzWWGٷ59c8@jWUhWYW I7$ypLr kU ?MpMnH]lh8i較))vhWyoZ=Uk! Di|˫> 6e ʹ}`ˁ30|2Ce_dS$Og7,)m6Q Y=U8wB)z<H@/͚,k\ nEMM9_=uDrUk7$~l"B4Ov`~de(?# teL6{!6O.I@AkKvN\Ĩj>[nE2`<ԯif>Hʼn _ǔ=W7)b^k"K^Pxm㥏' Mmgz T.seP0 6E"Z!;$9d#zu `o%b_ۋ(=Wqӣ]'L/ Zˀo.~|x..7)9^[>$yƖ?Mht{Fm#Ye'x}n^qnCrHHmsVĴVP_l@U2P?m*$B-1uj 439: br3ik5eN/< xpa.Z%01|ؗos,TLA /DԜQX)9, mWʯV6 3 %xm0rLt+䑪P``܉⢀'[L9j{-S5nc_iR($K+M$i$y`7|fF>td htVK}eV.-FUFFQ!ds'Jr:JAKOR O òΨ>g1U"m^ e'06 ,vCAr:J0S%޽s5]O"%D5T+qJ$ĸ)za^m`+#3倰mB _G>С,]Ks0@ͬ5p`Rwm=['yXpH;ɫbW @loDV2mo,='Uew 몭HF]_JAoU ˏKMDTQQƺv|wT ׌hqk$9Enr%(ڶpXroߞrj`Q4!3>8~p ~B>@ <XƩk` sET˃ctahiAǫ&p?V󋀥|us]3.&UBٲ%њItr]*.S`ktсs?>-75Em=KaD_jD~0o&qetTz!R3,Df[bru΅7ꅺF,D g)3-)h)FV6m E!XvyU5QkuojrV.3]q4Nޭ<΋k^B8T4D)G{v],MglAJu^膉UH.{$|Wn m R7fųk[g7NOzsV*JNތ$<\›YhC<0pVF&kCmS>j'H/oA Vĥ()jA'boB=/F87:ؼ} %D ȵqih\^U4)=5u Q7M O$;g9಩UFAI!'&{aF2[aBV-Kt5)bGNfHa8aTWr.$e\nI#5?;9w˭0@;79+{hJJǒ6ʼeV|&{5zʸNjf?j{kէQհh,-ĬN#F0AF4H ]Z|N~׶8q7  .oo)ݝb['uc8hٔ":z:W䝥ӹEo{{B>5|JOR\I|#a]̌3&V#FW7w{"h孭upɧHde3(>iFpݎq/KchmSѣS,062ϑ|aL$^os#LJnysN7W2> ~e`?Tll*f9KZr,,K'^E;> u̳&K  ˕"IY(;\5"AJcBlYd%fJsvI"u^W;0H4Le3)t3Qtbc#O=@ ip `}=orOㆢtv+4[=NR3#>oGs^QY=+2GO+y?8Ê7oop[&q&Wo6cVIE0APD. !TM]i5WaoZlU/܌}<}wT/V^_כ/}SpSj~?M9ΨyPo?T2S r4d!0=]*jBxWIIp"78o, :6S&C 1e B M0(ZȑE&4P]pQd]l9P^ `*cB59g07CaS3ed`eY"},r7@g]oCЄpA3%{c*LYߝꁺCKF u+Lu `tVY8 T! 30c]S3_ '+%pƍ>#RxTWO|ռ\ ($P#Rڗwd@ʁ-X*ȻS-h\X18lrXf?avy +5''EЧu}3 -ܻx  P֜1[QRv*)B_2|5!4R@}}Euoϧ|"%S]JӤdlLI}OʳM{;*p!0̫ }]y5#!@6UK p)R15խ b&t؁Q s ;fDԇu- ,)K7Qy5F[\pcn9F\:PU{_;~ϿUmǿ ݏݟwwzo\=f+դ1(,gۋ-`5WF|˔H䪯mPsRXPuYaxvhEbw=d%70Bֳ;=BgX_1aTֈD&7Fp@Ŵ@3`;S<p|OVlmPZb}@e |<\a .ڹy5'N /&mm .L +.A%\u0bk4̡Θ:QY@잽= vZЏegÄdz;>qp.0Fфo5G^xo(Q+ǜ(ƴrrËNB!i%3Q bfUP?A;`MTV6̝ySу4CDq3;! /S:z6*,4tOf$*;?T2 b4&]eҜ;mi9=h"Yfѭ`־|~I}5ClܾR'swai Y rhPvCE2p9:K $ʾd.cu 1]n/+>1Oӛn4xqjUp ʚ9Àae#g8Epl s;`I.z`:C:@Zqj〚5̤A?g6%KyM/]LLg0MEd#HepГ*7%ʀfrk0nl\:Ⱥ}ep3])5at;'K&c'JC6(bK3ud0u,Edw,cHƨtIJOF('HL\Œ+2?cHKu&.t!.OԾ|5Y%HUl|JlA/!) aaǔêŖ$Y-飓D@,I/7E\MCZ&^*?ѐ?Ex|({w,-=-$V`~Jk,udO+ui 8/]Yn#pej#B@F8uP+/ Iǜ儦q*Y? _ԫ1E }!hN"H eQ84ɂ3 $Z ! 1#9t/6SOֶpW֨W^0WLS1/(Ru#vI@pIqTUN1T ɳ )9!UrtFf}7%f &jeg(hҾ(JL@5N5`iS: BדhMn2D+fZ|n-OŠT+e$О$TJɬY(զv쭚K[m` =f%t;J]>w}Mr::x]x#Dh RfI]EwZ8>Ey* ȟn 51I/`XN^n{Z`+bJVɎF\E,t@ 韉օWLDhK:*5npaY2Ko1/R Os,YK  QŌNȀe]44x%o>᠑ !ጫ{0Lꀌ-Xh+mYfkivOmHQ8ho ^BE䬇gl- j1lVĚ^mJVQa8٫z t+b"}Q0dS@v8LuJ&q2np=%Mbe`EƷ\ ʠ@OuNzQ-U)9.BXOQܡ&ܽ$xW6iI^ro  wFc NFJ{6дau"p-t~ub} mČ23im- Bɵg-=qE"qږ꯭b͇RthQku/z cks&ɽLxTڒi&tCR$qC(%~7أ%3 uɅqͫMmSu`(y}2|ǫdfT'`E҈$WA z;9څyh+ rfem/fW4_d2hDuϺ*Z՟ K} QE 6l1dZӢעSD]x/"E}'tXL^- _e! zSED OUtc(Te s! hl\+ iA"flayU2z&CrCan{l}sLߗ0> 7H$JzKIE "U~=Vk٩5s9]9 .Kk:IHМz;79†E?0wrJ-!BkbనEaz3c9И3]PG_ozm?FEݥ;X{>jBU]{{i9ߞn`Ώ."p_U$Ӌ爌(Gn.ONY ŗranj]0;E aLTՆާF6Kb+[׍4KJSRx|:y fAoqC'Bfn3o [ SC (Eq{@L{mԓ)hVYʖX;IO%!9D^4] RW\NWcp n[cֳL'_)g88xDJC* |5Ό{VC{WT=5nhDE-1v)M=@4I酞Tg̵p@'nB">ǖMgClKmݴ,5Dߋ(ի~k|I0I@ c\|9Y[_ƻ%A㵿 HPdDͪնHrn\T^&}izwxT#j|҆\,m<Œ#P0-ouS]jdiI#8}ʧKly2n@)Q}jk촏gL]s6=2}4wIN~#+{gȍAgooh>toprwyiӼ}iOU,JmgRK\\?yƺf%],,3;B礬PmEͮS`vc` a' u~ >qpGTc|UfKǪ,tas*M܅ydYh1sWO9|uWoBmY߫x<@]F߈9ϼHEïCJ S=XLgcYS N4:}P̝6Hɣ/GCm;n9c;43Ky­Q-E,J^/Y`n YLypͤCr-#;}$۔YˆN!&26ozN=ͮlϩݭU|گt:/&jL. (znA[gi-P5+U^t@Oo"Ǟ;x6&d*!e2Ve 5^ 7£t">p}ދhf3,di6E>٦-ZkLZ<: "T@kQAfH\y_x^$AF \R"$`!5r;U%S~#{x},.KlfdxF, kK b ҭήKl F02.GEݱM?\sVCCBum Y:QFmT _FED4,yYD';pUx;Dy_S_&mj/aZ00V_pOz18hq/r q:9H}q:? rk_^?n f}-_b0lB j`vLbL<ulo!ul+RC89p})g!ǀE.FA02(JcTGLL}q_JR6XEQ[˜HB';y XkD5˂T<;D~顠2zg_ԹPq0Ybΐ:14Q#|K3WIIO$pMz%!2gl;TTl`b*oZ+ӘvĘe] Xj.Fm1.:r;jCeEl2{bJAVa87&pԬ}} ;񦞝i֜;5/۽47㗾Gx!s UcrknwaÐ>m4]0h5#1a;-eie _0ȡDS8v A͆-AEnL/|_H app$ ֯;?=^>tߝ_{>NeEҬXUXDU%$J!VN$(^'~Izu#êϴ)c-CV\$3ٯk L$h5<@SP ;<2s;=VDSqAZcڈnU21Mo_"k\C5=% %btW=~Myϣ{u^X?<-1⭥ĬԘ)׸>O+({ h%1.K- "`DzKof5M&.2ː d[ zb .=ܳ.nv-w |ϖ~f;BgSd0[Y]^ 4_Od T+Ew(?ɋDC]mg )uܕ^W ^_4:ڵ'W_&k ô^)~ꓵ9^OE-1!JOߓn-ySlb:Ś 1lωDőGs]ߺߵXcݓ]d1[S쏄m;<2܀X'erlDMaCxpCmc&US@jL9&ZE,ab>}km c;sE2rkH^Yw/8h(ic^J}pWuC㞗N~V7KMW6˩s+rsܼN˭LK%3eC4l)aa <4{9 Kݹk[_8$`Yƿ"Ɠ0%6!9_5n'^f,?8ecj1G2 4.ѐvArۛZ#/OE9gXW9Im kW) tC^(}g{hu^{}O ͧ]l-ifq)Xfc0"55˗#X0c֋z ;85tPc) =@S-׎mb&i5X̢"K 1 ){Lx?UXv@J%%A%pqBM4h$ӶőA[b$,.F|l(rP^mhaĊ|A$ y٠g#a%-:b93s%Xft>Y-qlHcͦ9;&Ȗ ~ʨb^PDB)QB GERYA>xFJz{b1:NQA53{0gהR`@O#-W1X/8r5|]EQba~g)l ,$ <_ @rRZio ` @iGka F4BR`$`>qēroHDW<9,C@%)|yy{h=k7( *SK+?1=&fpY3&l}?I&k Dx Uj5qqq[Y]}ϯD).̭>Tž'n |,IZӎLejbY`M"9XGmDPQ0jΌ p]yj&]xԸ<, T\ j ϴ0\Lt2.6ˍUO&J8H'0p?QOGytԪ&K HdD J8'L6k`#)j`Ɖf"sN3FW+ )ثn6(p;(bcu`P'BʚrU*"IЀp7Dҹ'ŪB&Vie3 \fvHdeZޖV\Ҏ0,,qxtklQvbFtբ.}8 U^reOfgDph0z5 0]/] td j&q^ZW ffK;<X"$po0|)`+ABFV^֞2n`E[<NI5Lep}QG":#Y)H|+xj,//48pyqu@N?A b{&,% Q߱xi:Y(<66bNi32B={^J=&pЃQ6Ua8%t@ɬ/гXG=6n4CI°0 Gl@i=]R7f[F oJIUc%*^4Ug #١, q` SݥP]eT^;sKu%%}QFR_M5Q~*"|`p#U7M:cXҹޑ׶1׾LOt ʯa"iMDgu*~/ 0 W WQ:nD]Ï3N$}grl3vhq\¼`@57'mU n*1?Qyad@/WwX6&ɋ9(Wbp0R1^xf/H`o͠gT甠S :UlًM){zs[f; ɟK$ ߯^~+zp r~L6:H q#rЩT 3zAAcF쩕1x9Vc,IcT-Pҕ je4ʫ18"Pq(.%7|Vy)DD0 M  y´`~yi Y <o"ltGDgBXB@|$v |2b.ܢvyӍyM4dTV[*~:t0<wJ.#t߫WG]xJ[K/MzN3Ke&ۼDAҢr}|%CG=H~q9A`_ JS~VtM a#^냵IΞSd;HV{"5:$<6!iI#]C5 d^֭/ɸPmôuS eoְi[$ 객*IL߇'7 l͐hcطq bwQ@a¹0O)v4~64$a.mr+hWk(V6U$*NJVP!B赉An>|l-RL1n jl1rbE5h%A afGmR]hH(LC,ܦ ?#iMح=gy!^!i9~dž=Xf.hu=սU ? dY"N'!yWDZb\~rAH2?? iEk8d4.柋ڒ7N@SxFb ނP?6b 79s^,,f]tUɽQMrHНsΒmBԝV{<Hx"wr8O>xkgrP FZSOsc %r-!뮪nߒmvLGߢP֩?  FC+Mm$دQ{_$lBj+,z<X =Wc Y 5-ce&?dc?_YZxhfo xfyf֛RN(i_udg+rY—<!lt3M4-oȬAy?L,_3I,M-ilI8ȝVs?t1lgeU–?{v6ÔāDRGeO ֩pRq 4\sj:ps&>Rr.RчnGRJp" rv?א^I!Ǎ,PYqRTlSޝϿXɒ[OA`'16ӻbm+s1۠(ḵ Z_iݥ"7KYC&Щn;aa>ˍX)nR2,j!]Ł4&cHڣB7MQ8cQF$j ߉TSC-?NƗS%TFBE3WCl2EP)W k0w{uM?w"_ڹݸMPݜ}U&[&T T7~F* *}}.Buw2B W;3@"j,S.f*zFæjfP #ǘjB$ہ(̐,3^]߯q;Vh mDɩ6X_D|@}t#1:fߏ}(ᑋ)]h .$U"CdneMfB91B3++Q/rk)b zN^Z>?ΟF_-jpKnJ)mTmN^QZiNI2ĥ>#j1вwx'm"N`p%&!P$b4e`hH󫅞тb h5` '0\3EfqGc>C7(;!.ˊ 5'<-wNwn30Ow;M]6e\v/xٿ[ZAL_=5wI ?sv"\MEn>lKZ=Ojd x;cSĦ wgm][Ėj.U(W) !Ks)NshhŔJ(EQt%VNK+N/i9{J]N-pV-u#HG+hG~ U'+ m\mO4DYQ}?抝h.?H3V:"UXKSJ:EYu:fiTص QyM/иN>YLg U49`}{'L WÈNZ~yzw¤k?Lq΅=6NXhS9^TAHzݤJ!ܮ+n ݩk4tSìKUT썏psjd"řOJ~sz,xKU6MU)jIߍ">+z#SU &'ӾKL#-qO}yO-}drv^hf3-O@סt)lx@DuI=ieP!ڔ<,j/x;&8E rt&vΏV{nHެC!SCVaZF$I KٵaY#(;$ɺo*r!{2&Pw% oO޷GAr$qf&e  s>wXq9@Od4 8TGٖAjEM}y3Lłr3!@qƒ7ĸxōRY-*h<7<g$m(.QL?B`oyu:l0R>dӯ F'wALIr[Fc& *`68W tath wL@ˡ:], c/Dy5G@j;5tW?{ULƲ,Gou7spN H >gӦ''ӡ&'4 < (cĢ|IGm O[h͓å鷩CJ3X+Xb.3)y%.>Lz8Bt9Z(KiBcӟCx﯀,p3~p`-Vq=g=Ow?g޺8rnƜDYRh8mۅȵdA$H̘%@߸ vxyħcC.Zы k'3T˹aiƈ'iFJ /=H3IZqu+u"lL N7?FwxN5*7gε KJ  ᇰVwtXK@=#_KdP"%>,6P ?j'@ GZrԀ.Dũ ?(.Iab%V==O)+LWUU{{>b,7Q*𦲟h L: U6`SZȻ*E-A`:ZEg#Bڻ~ֱ,)tS?ڊf(~\H8d#T@ J|RhrrYe.on-/xTi[0C׿6u 4-EyB"^8 ֬32 F~'ƩgluN'J}Ek\DxX@kuc/1kj%[Xv>zt{AGV-N5 y1j| %cGP|/Tt7!T"; ^:~?^A/gg PF ZTs0t|w.-9# dFfc= %[QG6c?a1Z`a~6> ?8¤R2Sgj#fEx 8@j7dTnjzXM^ؚ yx:"-1Lְr;A:w#T-~he.4n;8ЉPӎD;?NhF ȀBIEbC/MiY6a}s0 [Qzf0pR erf6ና}:,O77O=WBW*dq(FR`$P b}GB`Z x-}z?6dH 8Uk#Cj8Lf1ƳcЍ3(Q z28 2TZ)4H0&gV+ b"t)ĆFmW#{DC'J[\p*ŠPw6( [YpTBTp$tJy{H$Z`'!#%(X)lɪH6<`Asuraie>`ƺ8$c<χ5#Sd8(NAnUtveL7Be8@tEyR n)fۑ+s$1mPzs{xe &PA__SN4ȥ$[)$%VPx{{5CA}rx!$X"! 7nH F&J$N`| 4!1?mJU(;&džu즯$׌'rK+ck ea6_3ﰅn~$Q(Яr5xb\Cgs97;N8ŢK|l= َ26ޖT:?'Bd17/;j,<\+Q!愃es# vjFra=:wwH1ڀл㴙e+FճØKN)ȵ Ӂi*tڥxG6hq'=z8GXiumAeA׋G{V,n%BƜ(Hf_Xp2=v;3 0Oj@*o@jr0p O{=٠Ig$F/a KXŬ&@BVj+SU*e r""Dޣm*Oaa [=ׂ5R`Dbp+pH8}I ]rzH", , Mh(d<b豏 Y>Y5H$a T(w9^ Vc䒢!BMƹf*p5_kZHɚm8}.\j% cBž76eK`OF5-w@BD:3(氼ٔ߻XT)'4gBĽ=! 9Մb v&kr!tN00ab. 1ldwn4G8Hg6kiс=ZeَLǨNxs<}$~ 穜'B?!1wؿK[8((1w7ׅ1VNjmq=na?JG}:)% ho9x7)E5L'frZB *VN(H 2ʐ2Raz Zk}9-gS5׈ / 7տvU[tyDD!٣Jðbr-ݤM [`Q5̉Eb1ܪ(wlQ˼,pSNɴ`sѳrp+8[D2+t)J9L +фyr̰^Vl9 –]eM:} nHCMn$Hƕ_UGFK)MJ .6sP^b%hXA)8@tX*qq 2]IL\I ޖF*&9KA򃡯rd9 N -\ .Q(&Y*u0ju} Y%2?%d E'H[8*"B;Pa6UiڷQRS;]b*o{H{{EgXM{,o](:(5躀5,B0˥QROmplIסZQۅ]袉d`#LD-BP8mg^i*DJ?Q@ٸ t 2ABGa{sz?p3 uM2XD-a> gzʶn2~*BgwEhC{c]5԰'1r;N͂:W+`.L9{6tʤlPA݅0 ' ) )|ɧ|&BςJ>n.oga2=UfrMQ}K RGTj5OSMKM)jK\-*Mpo\74 )y Y_-I T\gqf ׉2FCiCaLMZ}uN*< !r3j] Ptվ.uAsۃ~ ޾]cuUNx 9'zQe^1* b5dɊ(5M7ر.`a-B KfۚX;7[OQ`@k8}%&V*_r3%L"☻`@(I8V6eڬ#L7r WAiMw"Hw~u^<06[Qלx4^뉖d4Zg07x$\-BG}GЈ,b@jv:ࢁM`lvQ GrR8IAu3e;}nIpkatؼ_ ` an3RHʰMGs|\]!%Q>ژM^o89x>^o5J;tLaQZ\W3R9;++m[\*' A[uE떃 +'Q7ͽw#k֋c>?h`nG 3kNy8>T\ ; X99:R5>#9? $:ౢiGZsݍ7Dq-ExI4쁴mūG3qɟ1k>Oj&t+/1nڵShˑmcb QzhK& y wL_Z|O~[=kl:j2kȦ>44k6DwOIKok6/KN !੊9[.\bNؔ8@9yҬ5uKɬFjhPb1=PYW Ǖn΋lwUb/e `M>DU0rFTt0LpVfif k٩"?W3Suu>O1۬XIq{$6oRk#j Y ۓs8)%YsGBǔ:$6TjL}߫(w d,OKA(MOdLfxSbmU{)  Ú1-V?>7o䂖ɝ}[ OS8kh@jG,{᫵i7n3Dv5 ||]3oS@6Wg#ۋGCD}YH{'\ PE[:|ۘ> aK2ۜnthapdV ֮wHkj 7"Z!#6#cRw`]f[adc$ޏ=tsB<RX>wJ9'"#JZёHs("*zg3lo@6onQk#' TXs3IY.0Q/ tp&-~k{9Xx|>! (7w!=AQQ"z'@J~Oz|}+ދ\?'0wgj,F^fjԳ6?5]N/(zht!/w'IݏN]tDҩ鋥(V+y~b4#2 5ܙf6CXn22;616u$~0g(iEݻR]y7lʇ^;D S4'N=;:Xdүgubr(/1‫O?W:v9mV^ήsMTRcЄޅ|Vދ /?A3^??50s<*v$ G̨R-`* HV3,|ؿ^W*A1⤮IxE 1b!&|KEyMTj5S }Y穯*uӫ~/Ͻ9ȤۈV2 hxJЪhPiԉࡧ*TS=oѓֿ'x?jhT}E5t,~tƓz&ٞ+<,m,&EЖeTk`Nx8*yK;GEVh3|hA}{}>0lCH?ܪHs>k-=~b0'T8;Y̹PO< .k(= ]ǹdM| RV&!{#l/|y  ~mlcãy|QNvdmT=fJ-=h%  iƞ" -mxz]?Ѕ=y*Ph%Ǡmޛs_\$tJ700Anf#_e)IHޝ;nI汎 ,nGo3=(ǮAW)(jX+jm>QEՏKt/m l9Ce&t5_ٮP,1;|1F[% BUl2oS;PxݣoObθV)b]0?_?tx,MQY }cN`=a't̰6},sGz f඾)$3nY1AJRmΆo룔D%e r5˾kLev4 M>~K4!V_ ߅Q]]{tիC!;Wg vה'o cz)إ)r69@6|bٝ-bp4><stwXȩo;O:[p59J+cEbI\FnLCVgO:"&_jOp4G]FR{32.l~AZ LPIMPP # 6(>,l;p,dLN~d,00 ΆY(9?SwS!w # vgo'9*h7qT/7_в{oNf ݄j6 5J$JC*;IǺJs99M1Ǔ~tnR[YۀD]^ׯwDoQfx A G[D^ymzb Vz^! hjC!h#[RրHعǴsCGٴ ;˂B][&;4^76`W#Z@O%jPg׌ tIlְNiC܉H_3g j@C=;35"XV--p"JSsL6%_ amWkbT@_at) 'pdSwKM^R4)C;^H#hA`&:6f=v(+qVB&H(͹Եn Bh :;>7B^ mm4t-E{K2,J0;${zE::Y'C5g.H&+ڪr2&-Y)[B9@J6=C4ʏRxK6V~0m |@"HdK-=xO_G?Ow7+`e}GlWB e?'#]jH\HԸn*89?,м>pؽX9)_u;R7UzԤTuʕI:RSQ`"ds Nz08&2qE%R5uznuʅjt20A$q:J \oUِ{MJC8[Bm=^ULydT5G.hǻhѫo(ze><:o-~ Q׀Ȗ5O/>=Gݭ'θ>ŴL!bㆇfڑA2s~'F/m媸cEsm) /N[m͉[O0R9=sX/fKSRJyyu)]_m8C@7捍CQÄ\rz3<:lb)̳! 7u{']2 *ԿtО?*ň4yڎXRy`"JabtwjۃƱѯm#Pѳ% {wYWp9C[ޙwf߉Xsk1N$R&{ǺiF9rlWRw@fisURs_|vה< ҿaX Ɀdϵ$Zba`v-Pcٻ=)c 7܋CK:"'I~XU _ϕgTAݝ0/%# D],e&[7X:s@oJB!*~2t}]cAg)GgwxBdyk=fWQ=*E!V@:!]~/6Bc?ܐ,bDuFEMNњ4IClƇ" {cl#o4uWT pG~ |7?tr`&&smC^9zre$}sY,콹B]Z1[٧4d2Ŗu"fT#XF(QN?Sc77^qibo *xcTWE0k*Ta<位8W+*7Jkv麑/Jq2eo @-ӹ7.B;KJ>[5qdZrs@:X٥,m*-a=M ;TnȫτvkkET>7&޳IzT::DBRSV:kRlh# Xck\$XGacqj ϧ{B:<&X$HD]웨n_2.-rx`+} _= '83"ȐNП!y8$(>Ƞq>mBq,a(:~AaH]e.L9^of@9)f@=/ѭ b}. wÿj7/Q#8RչVn—3pY!pr/#iC.!XP)s܌eb 4J s`PxlGZVKA*Eitމ:ǹ+yRko;[.?1X@J4:ȷ&`ε>Ր^6\.Oc\ȦFjKܞtϯ ~Ȭ쩃"+B(]Mwд9'q%a+LB!J="c6ʓ v%Z>^M(,+vJ:2p)].N@F3j?Z ם{T:5 J«q}Xz;5?m,v%zO">47Wwd'RK\"pH=UbH*E "(@/Ĭ)u%ԓvqfE15tB@=KnF#H{#d^F!3xSN'}-NG0p(NrX%͵ 5;uhԊ5DIϬ#"Iu7fmq 0 3%5T2/Fn(e/Bd.D8{av/e&wjowv4nwzX40lkZ[Ro ˰<:w|'ЁH=52Y ndr|ǺXI3/6EEǻsg0tBj7Ata&uCSɈ]Dlmj&WbrwT8U=wX{y~諞ejŦA6;.f?LI 8p4aվ^!ﯿY@wkU.b/yD&Vv`(e(O4ԎҺO}ΛrB%Pv@>&.],] &=(CZ5ĭo Wabk/Fɯ$ zE6,7.u*f`!Gr[3E5bx@E׆¢p&v9>TWUL5 W@G}Šv(O5ꭥ :(V=L& #a|-Nˤt8=hCE1N5+X&T+}a|Urg_Djxq.;frcn~*M3w`Zcs@Ž DmAʢ@J٪HW7sɆk.?S q.KJfәKekt=YHmwhp';8bvق_Zhfvew?Raƽ62I mUH}X/zYNw O(f0eO}+oCPsŘ]D 7`\HZKMR]?6P¹-A&ӢmqK_cn@Qml"6M6$T˩L3m&}$Xkݼ0JVW[dHf:r;(2Tz:uɂ9|Љ(J4.KIUk}.J9n=׈r쒺>of̤NqmINt*;Gc~F_9$ w8{ֆ2̣/k^x;ndc~<*m!>e,6L>_{=7. Ro\`9)[P`V=5 M0 wNézTy\6S>K-p7)nZ{SudY=8 !I )tJM7" WMU x?*0s5*ճ+~cG6{:[}ΨۆJN{9-ޚruMxW>xQI uKɟ~8;X{i `[ (S'5-{lu)ߘ CVJYwt4p؟M|ljeDqiCe}! }'+g/9]Sq"Bv\ONTvlsmGNz;=߹ۼ~o||^vRxBCr[7RD.ߏ_WȨ_~q{AVu]`!OH=~$duk=p4D>`pkf-J&,)e ɜ讹pz0ՊP강V>ҔOp.I|*1{:Щ? j1wak2X6&K?ɢ3SU> $/%o$eT5묑5r0lpN)&W?u$ule%=sNGqygiC7քG6sΊNMtwoPHW٧ tU-؂w -(-7-wN:s]0HW-+zGt݆-80beXujwSU<Ezg.|.̐%·BL)B$ٮRŅEÖDXk d1Xxk C'1*d:ӡ2 𜰬кk,f}mLQUTɠUh-'Tj{kS[e"Jd(l0Mu)UBok̼Z\AS-%4Cc8Or.({ͬ&G f bo30@-͆Hu=l[2˷(aXYȨ4\Ѝ7B%9 FtQI.\!RXYMZaN@+nY77c1ZA}$N6Ǡ_t݈fKwIifl' %_ 11 [UwS~x4e>Xq? יDf!*R<|*PʙڔylU4vhx,Z(o ' y*؄[  ? L5_}i̪ԷYנr[FSIn'A<>ؠ|Q,Z%ބ\"e#с_R|/ {SG0'Ǯģjx/KFīL5S@cUBbUno@⪸uݛsw2S3_[R%(56-ËU[J eaYz@lݬZj'''c쨄;v?u\]<nc;\o2MvժrP'gDt/+fW*J^&~fy'{ȦsL$KeĨNAx~;%t4w*cQ =jbY7jZT^jcñkn7keL~ч,xg4@ȱ=w p0xUaTӛ1r6D{yyVnLLV.0Z32ձdV$a&꒻l[p5 }+ߑDQ;+/zEtBVNU4Q+\v'2ʞ֛d/Z`NW',}&ʱW.Xۃ"ga$箜5Pa|><-4ַhnfIҫMIFh0%^"#ud> vw;YO!6M8۾CZͶ=A*˨5y`gPt>?'z .jHhBkVXadQoVp2lg Wq7dsze!IjlyrŦň??MP=um ] M)Ys#ܰ0Rk` -*h'EtIg[R>nXRVЕO7l]<¿EW ƭ+C K FyLû-cA3uu^j1c}5oSUȢϳSN#i6h#"_>n7v[QkoÜՓˢf8X_[fY,:]. bw157-,a%rUN dësǎd~wܧ9]"j g5UHː wFm}~.c h3ʺ?z,Z=sǒ{ex|]zr?L,v"#cđ9M6l=Cԓ*$+L~Ď33QWvzByɨ%8x#b&|ĨM{|y}$|W7~Kn}@?H} R~~xwI_>9 ߇. ttOzf:k F Sƞ>p>8y(.V sl̀ >:zoB/y:/ߏՠ ޷QoP0W=+SgLp- M%wiBYg8:z\B\4|,M ʁk`." IҶ: "]7 *&:u`ZQlFr) 8PgCYF3Vl<Yn C*Iэ~w@ ^ꝈY(zT5\wZ[9o /B=PJ#=B$VB=bA{?|,(!FuL_@sˏ?BV\MV9jπ  uChRt2$bcH0_@I$;>kگ0pP7" 2ɣ)6nv^lG  ;W{?U_45:CjRN0qԩN|E3KY(0CI֧'<_8DH-.~}Jd^o/kXUrX!~6$D$_$CWKOզ5T&'Gy?\&|6o ^ZD2d }X?-U51#:3ՊKlN J{Jm}}05/:epCi#R&L "sgIccQRC4?^ M՟Xkέu&c^#P~F_fb=ѺKf6uC0K4 nPld|1h/99wF>>=RB(E5djbA`W"O*6 A dx Xrdn[U˛`RG`g/3ly ̒_xb!dsx<-AtKp>oZ"Px;BB1 Mi^y -2%Ŏujݺ[92R9~4包{n|D)cI8EVq7O^DF}8?<]0nsϺzȖ*SޕX17a /G kQunr7C&h߇EB`d[9.2oIlbSj^nrH] \H5,_i 5az3`/r]Ox8-M<5(T9,I [ 98~m`h!h6 .ݚKBT9 Z.:6o]" aÒg P599.3<$IJR|p/0E^Tl=뷝NE{LNbLzJbـdݡ J~hh[%ѼzȇIQ0ỷt3|'xQ=! KLv#A Zy(3 *G=lLS쏼wW?`??p??pamYs'O-P1ڭ_f:諚җXat9뾮T#ەC_t?$_"bԂ* (n_xc0hߋ=p#u :ك Ԧ@rl>c{hBpSt= s]A5G#sW'ԙ)3/4FPƐYQ|V4D|"g 4E><5(?,"YzY,4-q$?П<4>-$jR g7Dخ.ZȰC]6MD\ѱzEM{}?]w$[ۡ}gCS̘ *Ͷ^omq-r7&!% i}M-(_Du,VE[Wu4xBW_x}.Uħ)q:Pn桒7jCy8 ;2DRF5U͌e֞d즵UnKL/PE<AZb+xkGmA!*2")noڒo VŤ.ғ v.nϔ,- O! KXyn.Q;ez>8Cjv65ӏUr:KR,8z2^v cv7;/3=ظ9P ^=U[:TsC !u%iaCbkJ3xh%䝧=JCJ|*0G7G-dÍ[uvj=t`!>(T$^\wPJFK;XrV\UPw|q4yF0W׹YJM+\59\5@OH8M۸:ɮ:AE xyy & aLYczQRN_o. lS,]ϐRQ,4""},}3oNOHn޽z>v`3^,ʒo xdjpysɑ!2Ӆ3L֯1j ԴTR}Cd_ 7vd>\lA38"ń7j4Js! ΅/tyEkf ߲G/0'h@(&3؎® ni' AWL\#AE}> TE Ws8ǒSts]f?+CD`=il5Zr M4]$cs;!;D[GJkV5б g<#y&#Pc:Nߣ$D&tzL3MJ"Wp :uc j"Ґ#pruh^Ҏ[+`sd([pר}x"noA{8ifYr~.NҲIҴ#5` FF.ksvw:i;[@>8LҶ!|Sk.H5dFޭ1:;9#zR<=f=?*~&87 Ob0"PKZr,ƈ=:N]b3!BoTNKL Kh>aFmO,fJʒBm2V&Ga o* 'pe\|L|t-0RI4vZDݦ q[]j7ӎ>9o.¾& K nc "J@rx"IvA͒rroCY3q'4wG-yG0HCawmGx votDW^Ќv1s)%c\vc!Vxcu~x ˆBkp`HbC+Yگǿh|H,R;͡Gʔͮ1rCw<ٮD!Vlr.hNF/,[ /+& Cgf+xF/eJ<YمرCDK'#M&G;Fl !y,VH0Rt]-rjG.k;Ŋ6\:M܎jB/_OGuj=y3SwcrfhL\gsgUnl|c] UVk M"+.6#Y`)LsY <}OzuY;CfU3 >zl.bO2moKz6|-=q:\!Ѭغ]^BkSb߆DUTl}R:^os,q&}ωD~)VKn9@5ۚ]r5B%!Q8:1.zRgk~fk<b&~( E@D~b]867 j9W<3Q<YKw7r{-N>+dt›hKL_lj{xQoEw)Nrc;[:׊gjK₩ apZC D"^?83 Ƴad)"뮹HvӸ_ M2ppׯFm_r P~OUXaEGl1^_8Y0< *\8iؒbvQ,7h܇)ɢrrs&d0jꛀgWLKABXp)!`oʴi-9xU1Oy9{OJˀeAo)J55'!JeQF3 ߕck#Ŵk Xs,:%vz$% dB])ȜN f N[׌3kwES K֡DoN/jB$2UKeh$9>췵y"dD2K5"6Ii4u3*Tv+[* ?y =΍\Y5<]a#"F1jyg%#߾;9(|Y5-v/*D9nN}yBDFwBʎq0qUR7UCOZ6x@X V SpN_[|½n@yze=Ƅ a;PW}/L3(th`c{q~[m@?(jx}׋7D)=6A " '@9w0|X&'=C0DZm݂qZ[k$z, a y~x?׬p?ROJv|N=ZӪpYuO:(ARy-)+޵EuкF/2bޯO(?Y]uRSpeM!BFW@`'!`К= nw:hof:5YX;pD80ALR wWErDr|inA'+9!+G Ѥmr7 'd/ލ* EWމ+>+OiV4.2}+LcPr!q&3G|3M\HEMc~6YX|#W>dZ˝eF%OoB ކTR` ҡ9xԷפra`!x+<`8H$ȊN;Ҩc G7ݒbVY w0 `/:<G7^"Τ hޞf2;ҧEK V.o ɵՙwMQi-y]1Qem8e!'aņF AFwL7aǛxb[Ru+| ,)l*l_ѩ4c.pVp K DX-Cq%5Ң Meȫ@_{}%-#jՔ򟹨l/7}Ό% g P1 < mvex'QjsWgP-,ubwUb.̰A>u? ` N~܉z A@eXx/]L7ߍwжs53.4ؤt>}%Ϲ;) MGmX4;5@(w*Uf/49i,(zL];BxLK&o2 *uu.{:uEи!~~(gȾ*pk^EDk<(a3d/` xjYZt TkmmBWڨB͸kopV1/x? ~aO!&z"I_ߐ~V^6 ,Zm976Оr9; hᦈBR}YR~=Qv~yj;qryßƝt"Wksg.%\nD:*ax: }[!At> 5Hin $4w (l$$Ia0FfRAbA VgBsT;nJq8RV 93!yFie' g$7(@8?@3^.vQ3+a={FS>@EQn~ uz I@-B@,\5R wq@d9~zE 4dd`@S |PAN ZNe3)_U&24zk޶fE)< E/ЉDnD4;Ɗ>e\aA20V_߭\[56#7VQA'0}OT1@K# Tˣh!Tc A[n@z@ZIA69]곤o]YNkXna댊$Xy@05R^s52/Ͳ68.g_|7=02IvkeB2hQᩑ@ y1 Ede7 =uELHܑԷ hfʎj8@U->}Q +twSaՌl` L_8hhn­OӍ@jnHEaUXֈP01,$Τ(L+is,e| D[JKk4M^#!c-\cZ7R( ALN9_%g\I,%`8N+471YK3bqU_AXXB:؟toN?U`8Q_b̾RB7 3G QGmRXޔZ54d҇]/#tRHE:|*ְam:78X^?9坮'mL[6}C}!=rOP=tmJۘ&(-Hq\hQn;2^Hc7;"KDCv@o2+{bOO mR"PлXmo(]LlQA*tY#,iƼD@ 5(]B<ԅu pp⎑:s 5cm!mv_?Y)Ώ]*YV"&jUHvwiVt>';"L?'i)Jd)W&IiOҧ Y7 2)FUO+$,rY 'S+2;\1JMtVt+\&423]J ZjgMlF!H5:OMSC)M%`*JtA%{RQn [լA(M C9igTD{1f3T8 ݸnIR{àn;FWw5o?B>@jrȐ`jt5{ʚ4-0jt7&xPrLl)`Dٞ Y_F\ ['rDX?c] kfׇA7`&\"w sdƭ$8dz|Xۅ-n#yI2s̀Md'rV *ƨ>@Gym<Y;)^})Qb4_j $( cbXg3xe #n-J_#8-_k`+ gqĠ~&J`/|2 mg8~{q*d]F,y>|ϒAkL\~/\#mhiȷ-78%|Pmڧu'8yj"%֨UIFXOA*a þ~?!bC?& jr|bD&|k&jЧwJƪ {3|e{̺YΙRތ󇶫UϹ7HVЂHu˟`vKsՑuK̦sLYH0hWfO6 ǁ'pN"ݸ61Ipz%&d۳$"gm"si}fYer zX=N6NA73EcY5SDitBzLd8V[燧+Ѣjlq\֕N8F+vq,? S9javVh鸖8XPY2cTz2?Wš rNYRC4MmyT9 ճXd>djљ2as.LP#_Q}5,0]M'rHg$gϴ@YC1POƕO1.NAeBtUXMv3Kŝda7bPZm|EOAk|LJގ>SRS=¨RP㇫?Ьl񔕿O5G (#geQ8*vͩyκȪbOca&^ V~22^ HIOJuF )zm#7l_sK˝ܔSca8yƥ] 2~I:/ۭۨWvTYYIyۣ7n30ͺ1O_ T=iKd;e7;ɝ.=7eמ z r:*)TCQno˽/J`t_]VVR.FbεkԪixfiqs.Xuzk"yjש,P_=eM^V]”Ŧɵݾ.l7Qcd"?oXA I/bK`j9K= 7v7M^7fZũh{Sdoq|ߙxlz]򬬽xǓw12glhA-/3?pVcR-٤\dE\_/:''IB#^jex, NtHնȈk[G~]u%]gV7 eEQrv"-p~ϩ4栧X)FN6H+.zm%g =g0Qlcʪz!F+}k )<g:5(C~+@w6c[0R1 1L)ẍ:?r=Zx!zG.DZɕ"SL ^(=^W ߧx  >]AkqfhKJԭifM.BElFa1l[\ngAe$C[s55uhAtBUPA?ť( Y%g /2Pwig N Fj_yd" HI{1( u?бt2b# ϬF68ZpWwIʲl[n%@7w>.Qڪh6ȋf66S:x;1.҇&~5w_~=/Fy.c3Vvnj= ?|.ܖVp*~IJo29I2{V1I}RDhxJ_}9;Sp,6slw_pČ'+_6w}K>=o{u[%S9a9j].Uٱ*3>6V:ħe)p%SwT%RKq}- I}n*Zw\7|èq9[^[a bb;z(er,pʀ'UoMu k8O!`'ޏc6s_i3}z 酗n]"6 B^S'o]Ԋ,*='Vv3Nj[%*'/og* PhMa0}V <r'zȦ׍CCGL, JsxtO}XD ;qr4^{6jֲ4 );܉bf=̋.*WHWƹ9:gT GݽbXi)x@Mph ldQ$sNV_h6ɡ~XTڣ^i@ J{Ualx"@ ;DEi:fknT[&;tUjߡy0_ʟIc 6sꍃH"p,2@9`mhˏB K*,r&i4Ǎfrz%w DC(]m!ڋ>?\]B'm1Gok*e/ǘ ٪G+z? 7#!-j@/ݼQ+%o 6~g.h+zP 3 |)T1\OAbRxf?B\u:#S~jq?71X}h{9J].̿.㟸?KU{Gt`s0ZUЭn(MR̈́7BًMjG<"= |aѠ;!d^Y?fcTT`{5FM`tض F)'>G]BK<0rqGSY?2>6%$/\Ãp]@*J31QPYV>G*# d\<].0" X8 /ٸHfëD/U4`s49y2S$E6'*RJu439~EHWʬ>5t,?l㵉~8"c&Ox.>ƘްT,pr~X K)DD^aܒŔӀcqOi0KPKq̣A \}ޡP֯Ra]9gJE伆 B0atҹ"/}Ն#"&#fl=͢$i"c&"'\xQtg[p]s}85"SGHaW9^IIˑVViz>Zz'a-ҩ(CA/R)B;g&N(pwJBH˿FaE1#@) B9qJV7r$ Y?5UEpĒ] 3bzLZԒv":n=bE~DO1g6ԪF- f5,uS rgV^G&YEįJY%7 qvu$fR3@>L#w/PJLl}!v}&]P%5 @r 6M[6Yvn:hܽ:)t bmr 1ރ SLp0 ˌZ"5\Үs8-s?u(k= iє9eqDZ)FWwI`{}(d',VE ~xbcN<%~JPWVinǫ0#q0ba!L'bfG4ւi푌Ru%] = ,mh#C0VG~tBMM(0Rj*ba rhQ'ŚekW (J6H8 TGwWiVRqs3}|q*Z{ f GπJCത,D 7g9K= P@ejr# Opc")2 UYq (1Χ$/nu8 fkk=Ugv6;VǓQ5bY`r%# УFyjڲYȚ'iObWH|WkHc6l&i1Up*no.jU{]]T΍ yai%f&&o esmYԏNi큰5 xWDȈv|&k6f5)WNH᳽,igl4n 2;llI(D2D2PgM۩;3 n~uEejzq)9xE1.֡q8n)K̬Q^{l.[⌫"%' np{!'8sf{=N23Yst <Rx4˹c]1AJp[!)5}бNqN+CLpn$MN*2 Oe#Fb~SMAɍa"4b5J]#ArXx9xޚ4?#;͸ږhO?^'֙9dHB utMMEc\?=wT L %3ExǸJ*K96処3oi^T3j:65>9*c;Ӱ K#V@A - v0v$*Dn-$?Z!:t 1t\n '2 hC[)/nAـ'2 jal(fHȝ7͒$.XڸMa4-kB3?fx'E{a"x?\[t:흁D(k< '}@z*n$ri[{ucH\|-.L7Ufk 0%`[-`hm؇@% |WpJ rTM[NkQޔO #rP!". ]ŵ6v%}L<^X&Ś<3yx*~:z~_ڭ\T!:eQq!6WuMO[|<1L'rfT)cıCG%sBtR C$N`8fqf=uZ ̞Qi$vYsN4` E2̽6d9d}-0ؗnBZ~ef7~WPh<Ƞ|vP|%n? rMn~@5T *Lp8&#KW4H{D3NdV+=ǏE<4$N @.">@M9iLңWaȘ13|i»aʿb9ۯ#͔B|&X>t#j) luvT+E`8Zw+ s+ܨn`u9jȼA3q}$$+=Ab#A7!'IVͶ%y{F` =V@p+f ,Ԕ|TS\#Om>2tڝ׹""s5襝|;}+ՌdѤM뿟*͊Aڮի~5.}r6Zܗf OG|%:[ GR{#׮sok)z>pk731ϒ`OXłH硖uH)g#'PZ"@8p/qCAd6p|qXo px- Pj M; %yݖW%i묦{; TӺEؗ.bYNZvv:VzcW=ȽdK_n٧'ȣ1p~cnOsdpB>pT)N}*Ɗ<#׀Q Xz.?uY8%홋 nƥx iRT4t}3B|2nj_.},)*¿ӟsB\߅1݇h;-5rPĽ}&fL e Ά:q~F7d5)7nX2$6[ DBM@ѧ(Ɍf"≅HZjN%$%d ɧY |1G6no6?^)O sxsu}\V1JO՛zgTmb˚Ϯ^q: ip7j&4)ž`XJ?ƴ@w*hjvZ u?N3H_n(Hρ`Gmpf9ڎ`d  z%vc皠6]O./jmrv[Ǵ:v&}kVfp%D2S@yQC݅wp0s-/xgNl;^QgdAaվ"nV E3s`(i0,~& vL3w,pwPwݰ^a׊ÄE㑆쓒ި˦x[sܕ#QXk}%7 r" ];Ogza;p{'o5\6@K҈`aO:M5pY vĝe:ILIYU f4~_=g_rr.{jҐaa!` y V:CHP6:Y.$ֺ|.7wcwwΒqͻv'; g:l U~SN9vC4AUqhJ}pZ X # {Mnsť#tby_HT1W}Ept¥~#p֞Eޏq͆gM|ﲢ6+QC2r)|<6&z:ss-GFS׏%>W&K¿mU'yvM(¹jOWapM OҼg~:I+u6E֩xs ;$6"KHݺI(,A/Y%6@/9Ӧ$w|[D@`c]-7QɷuC:?[;nz D,DH(k&n{G&ƶdԘ)=C%T zJA4N~b Vk9;~$IH}?>T`ΰf.wVz;j1ƞjzJ[WΒ iz0keixS/#|uտ!dѳ}OJ,kv>%99 Lfod!, CpDPH6q6"D7Yq1"y{w $ϙ+M"Zvp2|.'w@_޿-_xZxpt5-[aeor2dž,Y%[rf&_{Z= n_d$\=%pn)ih~n9l.6Ջ/6^e秎ˍ av4RHM?O4$]ЬC#gG^^L/Deㅝ+mtd' Y*`L|y ȯpbnkc.fɊz^{Wa&Orm2NwDZD M|y4c  cڱmcwK fgBpzZV>~c 7 #61U}]qpI@b+~*>M@QO6FjIΟ,o3\t>A>I -y=}kROhe<5ڋNi6pH/>ZT0ﳲ`vV6<V $܀,>ld<9!G/ݩa B 2V]#(M4SؙZʖ*\MY(f}j-A}vnչЖHqsATͻ5_jJ`3|Å3MJA?=N/0EgH@Pˆe$TI$sE$MoH] Z?9ӫ_3^0CW9!R)$33@ӓgBTm6;$`uR wQix Tl:K|~&mnP c2Nt,LByNNFhU4MB{W nE\r Y~|Ǒ(92%d  +l(HYKzii.2Y8 W3p7|[7PM;!O֤0Rxk5 #p)k(kWE ?L(11稗0=>S`2TNٛ}͘FeU0?StGi.g5]vmL| sی\_yZ E`-4ݬ P={b8o& >Zjv02lT*" - $oۣ|,?⛞Y49Wj=k9lpS!H3if wECBaNgw "6im0:T޴7MJ7!4A6V:9]I@f^^KK0`SK+ 95}S"|{Ӥ.Jć Ԇ=bowD9V A, iBw@*LEy&\BeVr3os-B` h$8"Sp̍K`!<s<@׿`+:?]e|"wE{GI~ 9Ѻy mi!TME(iKPH}>!cZ~,x'*x)qaBUwT9yǤ&`P[n.$,J7zNv=7ձ\gfW)F~KJ#ò~*c@K}٥to __;n$ ddPB0`! j8wFڃ^VS܇O_|;7O^1U/UshnB@\IJ]s!Cٳ̆A0B!::P*GIǹ{ӿ\V=dEa*W+Iڱ[YhwŃPx7EG X2TC#e$؂,ƭ Dv >dxV J:@G 7V`",sXE4FcD`ɦ\.TVҠ0+X dd<&̋.dB. Hy/;ev8;#s`X["Q,B 9838g#dL M)"a(VW^V32 c]O(Oh >#@m ;GIY[t>xm6Xը;x"'w@;#'j?B2a6 ? ^^^_!]O*&pRN'~)F23T* (\zDp"4^*LWlTK-y;&"ߏ>/Z$26wN{!1>ur&v.j.NB ?u(o;nY2IVk[G‚y;\$3hMtb!UR^"v{T%Y3@T9arN\<ynaCQ#vgv}/z>~Pv;=<p IMĽ*`~8TtT'ur3W60cggxjihv^;\qsFALOW:f?jo'H2[2%&z at4^K^"k+ܟX|/0ͣ6F@eMO %Wg/>䬢T^`Jdc Vt?tbc[fS;P}(tj~a뒐p PV߭gj:(iS.~lK!?10tJWFuqlhYP >xô(bT;I?ef@vlm6Yh#yFF~>vݐ̭_w&8y>{O*w88 3/~p߭l+? E? ݈|w xviP7}eVQΖ^yy)T+ynl*`)oQ>]uVUHej @nb,ve?,t+Ƙo[ګǎ^8/H< Npi(f$^blHgN^]84ut0F.˪Td,kup)DF|MCj`;< R)$fѐ=z'P’̜;ps|ZXؘVZ 'h7IkG]Ӕ͵ԫXf{~ngILmnCRC`e:k C{07 N ER,vE6yqj4Ca8lfЭh+Z~|q,2HZ1+] w6ܙD<ؓ"S&+K(z~h]=fQk1ߕ}Ba z%4E'>eƟ<ű@oT-`$ ++wci(M@ PSJ˞IeL`6ϔ6-C]OMCƔv+L8jwi(`[LΩw'j{_$iԛs*1 QaC ̞> kx9|Z!uZ#(k*CZVqh`p c(nK]f)*~+ tȍ`3[W"=8N3Y<ƸQnBQZCy}brsDA"h\]MȨ?"SdNG1t=Ƒ4JP^"\yK08K0q RnD2l? ]ѧ[=I.sVy& RcI&+c;r*F!+RG.3WGbx3[G!-V`o$lW^'[z smhi2[}T>E:EZPѬUhJPya>[.}/n{J u\+V0/\i$WjB~X[[2 N,WXM.y`kq *W5~ ]pi nh+>ZpaNNFzdgSԕ_)| `^HS~3dL̫'ۧ]fYoA ҕ,uE'$6i]Wj-iFz˻+,~`5"]$c{H( TկҦ2|{=V;Z?6>ٓ=|CU?R2μ>GI4]t6"o亽 kL]eQڭC!f0]lPtK6 WGBu腥7 >Ry]q#в%?`>y+n*uί׵ @+bA JsBKɼ:"%ת#ӒP- +oخ UQ^͢H/q9aAQ>YKѼ5@I΢  m_`11)TĮ{PhDB * 9,7FO2.zz>z(Nu o1A08Mq˛z7;6dS.Wʽ,^[Bnl{u}3)Nf)r$9[}SzHzB~6pUHA=%Xu]C P}1tQf Be⒠QlwYRB^&oUkrxǡ6ҥ'LLzjUKjPggBimU,V2@Qi.:'6L)1uDPnϡ72#z(jJBxA+Tid_82ke+zZų(uM\ZW;̬ʄ j|ҞLέi[mcXxs:w!.1&@6#K% }P1D" (9H3q!#0:7 7k4AW(`gQ &d %~o 5!>F sWPD(%s#b&!2J|u6w%;=E<(Y֒%]^+QAߙ^O pR+4q;mD֯;M%TY^%)ڄגEZ*0}(uu%'o\^Y;SG6 ٧M,:==*h. EhŮMQ2n| r٩V=owX89‡&DtWԴ5obnjV\; hOVwVM+doU >NuݩPƬN@!n ݣadtɖN[noin~s'i^'w L Oy^\$ε -'M^0?98OƾkbZa{>_"e'>F ETe)!=d]ZJ]xe,$X:xxCs5> e5uoF>_ }NQ~1u'i wѾ~{хͬB3/.:,sRߦ='C^ c7^rڢÑ<{sLSɾUAhFx<I JY}Wqz[݅[u~=)R_ !^eRfODlK*Rq 0 웜L* EIɐ#(<8fFE/0mG}Ꭼ kvK4DWÕ#eU{V39 8w K8ǭ!"}z#ǭ,g<|UDMDXF0OҏOO JB }~6zIxj?̾iRCm=UWG3i w>\uyA)IaL)8g> vi M*% * k i(qjvߓ$Ƕ#?QKOd0!LB^f,v2ZlH}b*pSrDѕ[pO!=rXa@v]Coovfogؘىx؏!7WD: tUN_]U|3EA杅$La$x N%jyH%"SсwTϟ8#-ODž¼De IwRlf^^b^jG40w eka0wĚF߇:&!6B}ty pyqR|6i|n ~y `ic2x$Թ}K|:I;۵4C!4i P}55zf~y cf:14i@\Hs^'5ƒcY+L-d(ptw4~Q,P-6=unӯE݈!?u*<,`fZUcaB[X*Sю;9\j3N3uahZAaC.gFVWpa!CB<:"{zlk;V=1@p rŐ_\PsK+@IwJfȭL,WǤktgh c d :ʥαP״NA|E}`pj/0y :QnRҠ9 %X@lY_b@Kл֯ WJADZrT2h3`Q7&Z ^ =T˕q1Eց-SGy"23ߏU=XN@߃kyۑXtֱJ|j]u`ϮԚXx70TqY$t$IBaH}PK!FX ſ4hq]T/Y45K4Ѧ?4{:t?67Dџʯ{^z=9G(quuN%%G6W&λ%د5n %b VdD;a#荣)sW,V)6_J525mhFIҭ h[}wΝ>x]tقSU;ED͗~lQ}0 ޥa"ݚNO KLľOͷ^uԯ.lZmYjȟqwKUAaM$4 w E !F Ɲ )Cb p  wW)gHhXCo;bE?iTRu pOύ+\2s1H\DR̲,)tC՟y o`eE6[Lmo\Uj\RlE'~'fl\$/|D8I(/H*:4?   ^BMDzDLUS_<] ",Tp[בиϷ!S |٤8=cjl^Rb k|iU%%)e&:X7\34Ǩyp@NoZ,r&,3ȷ4l:1aS'n¬ˎ AW_e Qkoм{0FU!6ϗq,9B@0.]vCv/h 0u>Ժv%]`ا`b_x1bh%vwo{߮P=rU3pm>Vu(8r,H,_|o h1қ$h8򹅩VBy)])v)#YknVgpòw>F^JɌerH*PLR-h2fmav̪jHW>6+UtF-wsh|g"]TN$^<R(\c"JCM(8 ^}3|>F4kX;ω={[ SR!9rK^~K0nvoЋU ur2[:@ 2tn=CK55Ӄ6ٟ]6ef6F@MNI8[3 -C-hBFiME^%h:\i8ڟKkYU ;joE.pZ;a'%=?@T Q/db#T{$ X{>]՜|6kJ<ʚ{PGLB(޺4@]`31goqC&a]D܎HTgh]b:=Fg^Y_kF"pF(Ra'^#=諔o0`BQA0̖2T(>J\6f0Fa./J)8 , =Leܢڄ ]]#=%p6FA,1̮+R>7_%):V߁{9]nʭSY ƺ"s H6@#JvF„T]g09[V%Ex ~!omj~l?cK[#8Qb{Lܥl@g\@ϢFǶMK+%I%Fr@wg`6ORĔy+rHE+}+օq g6Lp \ITo4>gl6<T sYr;\U` .آpԢw @DeK# J ȲMLz\eQHAb,b.;ܕĔpE}'`s '4̝l:}ή`~[5]S?giRAw/%kAڍW::;>&<%ƀzF*Yl³FM6̎c>?a+q?nlcxSӺ#5+#̦awZv \cw6*L`MOu96)wo^n-^ɢ].:KNJG.kN# нn3UjG 8B]sCՋ / tx\QGW^fÉi@ә"Q;2Wu{Xf {ڥ:Ҷ87dF L_)B6 M/z['CO*]s'ɷ\ΐXz$/mZ6tp[tK)be~W>0WOo[^gyyU&gW3ׯit6[[\(|HM)vws1_Op{2=yVUvuu+ ]6Te`'-֬*}Oߏ-H2F>˔O©gjeC>;8={v2szFvaWcj)-gPD}1U|0fL^^ 5~wnw=g_**ńd_[#mYS:H#l{ɒr[3jk}cºTOraQ]\btԭu C b݁2\{;(~PE݁|\Z~(/UmAsA:HQ%&%WXŚ]ՀQ.Pg{d6յ>t P$:5c*Ha'Nqm !{Y] Kbr̋Vg17͘?$KN;>ݖ׸c O,©zEd^|摁TU"`n![g;) ]3 (-pk2tgP$(pƊb8Gɩ_ 3Jo]v!ԳwNk*K7LM:qJYsL6kkv{gHChzh~S3clDeؗ]|=c`oJQGR[y\`~m/]GčJROw%z/-'qc\s'0>MQ7QEݜ-IhL/|'/7bAq:ʭvɷbHG_)mPCsUɤ}[6L"Y2'+r:rB@] ,]"Us捡y*lֱ GqSX%U9S߾"%$Bf%.4Ɲ:whƲdW#gȶXRĉizAgY/WӚRqA⺔W%[w ʺO}ѷ m`Rt3mIg0/r+nԜ?M]l2=X8ҳe;솯 Y!QE4]#],ܛ(r ۘS>k)$JÖE^3{&bd}67W1]Swߌ^8DbS]?HڬnqFmjS"5ިu$ј.ցe0fh62Hh\5B-|ם!nK/s!Gɀ%[KM;$S$*5m0* {I .(I.:! XWSt,띷?ߔ;SlTL̒ϡ=Bڈ6J57 z|V< ^EgnG+Rf(}'R|[E.{%||}>tK⸇][*kO u-ηԔc!gOnc ?/rݹaWGA7`Ur|ǖlSw *yxJhnC ;_נAbW^|$ sx6ֵvJ~U/1?Y?ng`/ԭ`yu:n[sH$g۲ܽ\L4PK_tyrhH@was_L\,밹r y>]J-k`2^z~B/}N>g6d|}TbibIxKpx7ǻP9䫪 <9r|z1݂eS$WD7L wG qnO+nty;h|?tCxmVz\h3a:7M/,}u|a'.0K3K4$c|oC rdHPb>(SiMNяg3i{~ڬGgi.5LIp|j(-YEQGcCgHˇ2z*w$X[o?hIT:Zw7GPmrg*QPxA7OXb WFũ#q;h/{۶i޼~xYC֫]a访r_i2qQg1sG{jwsg;-X)TCElGH2Rgac:O*O퉁!ԧF NsCU@Xٿ|Nf:QmiGDPC_ Lҙ_ĦLxq$aL$3Դ~yo'cMS$|dE,@ A&湕v)r;9c1 p1GFY&jc2yXjE s6=d?B"z|84a.!L3b2?%k "E0X٩yG]d 7v謁:8qY$k'b#FGmhDŽ{щ ^oebs"\?qU{J-s`HRIqIQ͌MIx`q}`ד .;\Ù-⩛ҠĒ håp7:|-)n >F@O;Yp |c@J 5mp4sf j,fm``hs bP*i}9 3#͌df#9Ym jY{yn.^`E%$Axr-f#"̅d(u yTm&oѠU$gӬwE AnCK+҄RK-"sN5B< ;==O{QrV֢FI]_#Fuy,!_6_TK/h oY\aom:,H T,Pj)r c0 AIMak,8{ȮA~'>Qj^[ {[SGʷ楕 +{lx;[ {Ǵn Yuy_&0'OTbuD/m1P[jW5wwd^? [iF"}P>Q<2\DM buSN= +OÏJNd[zk"-صj'l7xyɛ#`mk]Ki kGHe4ba`{rq<-;|M4a2=5g&qZB˿Zf݊IDfZj!v:pege qYN'w' N|󏝫})D*&h!%5xkp`YB@,TB6i@a{QDRl8pa`dQEߠC4(| m@ ac0 a ~y4Jp2ιV>;Ag~o ;p"V o5}n*'OTqIA2xgN 4UnesAfKcLUӡx ȃ+0[I1zLIcZ=9g&%O8 D6#`% 23{6,‰=#>e"a.U@i&\Aܲ tk]ȥ/r \ҟ7$+RHȽZ kWc.=Nq ؃"!QKQD$7f%~#;gbcRX.)PVNtm rBh4/C b*h*MoqHNg@VutћK&Psjm{6p/ńL:Ohy#D5 6} W膒ȕPD[ 밑4\-+ ca΃nRdvQAK0}rfQP$ R@z+E%h7_"uY~tUwSg?OONJ=+ wV- Յ*R7e]1N&ڒN"XC>tF6jsɛyjk̯#jJJ G H("H DCKr::-/,wJNm;^Aׂ1p)4%bע- WT~H|D@&Wey: F1!|>̘M tEKT (b3i6V5􉢮ss;RU 8^cK4FohYKCC4?1]{,TK'BI+_QBcnD(Ӕ!2Pغq]/B@WPz`GE#Y"3Yi<}eHb &rjF+ N#Ơ*l4X}Wއ9wh+B:*a>@bϿ%ึC}׵q2D<{".|=&OPD(oZn-5=#AOE< y#G߻!|";AH8nq<i.y؈yz5G]e#c6ڏxjfJ`#2"ޤrJFK =paR׋Ct!=P%c9@iD@lJ+ǫD03EkgPu^ȤP%Z& D=}\4COJ\9.j8M=!VdEĉ3PeKȜ؇t]p빍"?nwJIGkoC+$4=J"=&-ocW o tſ^iB4X'c+]KEXU{g7h$^iҪxux-raQdt|ӿ(FQGp13KJ#\--=IR5(n%㸫 &bwpݜh|$GTQa_vZ՘2})^?%[qa pVoMs~ogmAPvtWPb5PU݁¤ ħd?$#nacD팖/]C꺗W=G=w 5}EㇴJV3 OPj8W\V[vj)xĒ^0A8&'CK)-}LI'LTzek]N%#'-Nge`fyvY zd9f{ͭ 9rvN7)c1DXJbsQa$J(B^$x;6]$8#:PBM:@wKD(*?8 ZEw|x*{{=?[qR~﹮1k56vJwz\?zN1g7BpMeiIV_NKr7h"H <T$[CuNSĚdvƪ1? F76)uWq[2 L2WsLJ=PO/ر@bV]d.a^uÄ6.dΧoױKBׄ$C$@Uz}f^50[s<*rv.wHT[W="1,21 I^ݵ+]+ȀU1U N [N6t68rSp$&&+vժ= YZ] T 40=GY04ϳ[k5V?(j ]sQ*w{O ѕ<.o篻^K˽Nxe$hKsӚwxKޫ .]<9 W]%tAĽ/i['šx=sLuwځ +X4 pϙY8G Xɔ'S;)CSîJ<\AUY@#'Nayǭ+sqd\G0?`#}hVJZg/ګ>e#U?Vz3t8["Q<-f~Q޷uܮ~0 ;' a6W4vuJZ. n-fܙ2hٔfa#j&''j)d>*-]gOVL1h^Lj}.@y߀0G>Pk…l/6U,)CTeU᫤KbrU#6&$Po/F3yLadqαd:3kx -n 2@1UYsn^zMp/}5JHceCnwjBd&TkWE(]NBEB}(ycw ε&{"e#S**όXN%,CWfI GuOn7Ny7<3XsvUO,.`A8?{e^vMx-! ]'hdnz+맯 n-`B15BWnYo@ /Ʋ{xGکB YSë0LqW=ڱ.>uf# ];P~5Zi)JIQ:s{Q;0%)vK<f.}"}:y2Z*V*t/#F(vYK2v oUV5nl#IF{g:[g5~y|CRRlȍYϮ2(r|Tz'۸l B^C%VW 9 јtj9> ?`[S( L%R!L $'HDWɨ-O9tl\\H}Vu}8?5Rv'w\nQkI]xSjU'"$2<$}P67GY]Y[ƇXZEID^9AuoZOݞsAK@^ƍ~Iw8[o*(e$+NZҿin MX%'/~ٟ%Au/=*JdL7 ewUorh^_^y_Qn^81'lӂjd# VTv.Bt$sWָ¨ Aq2nIjX:4Qrf+ń C$ob{tr/ij kk6wsSZA|^Ԟ Aj/EEl R~B,/%y \TU!?f;K ',X!iQJNHK= BH%bc`bZBMe0R;:Y.B\;_9K<]b pyƿؕ:9ِnUcj`7.ևzPήDZOĊ9SkPtZ{nFqAL YC1Zk[]K MPSQFOuhL R\l%!8󏆋%pW6+*&/qsl 0\ð:2367aG)[s+|g*nCCNZt N8QHĊa3;aӚp=b\-ZڔDi8@ c //!cȼw/0ӧT6;QZg& qG6 2"?itn7s8).YSEUSavڕ9TIQJ[SL gjMӵg>qQNWKuI،ͥq&l8<+:?wɐ҈JsekШnm+B+4#%X*utK啜nf rETZ\v\`Θ`E,b% 4URJV"TIWy-5%/ӦLaSҜ #PFwșS erfDŽoH.X-7y{XS߻%n1wwaS~{>R|y{}~?Zs|-Bx-)Hpnۧ9òbԢJfn]I 'Y-s(ߣx`* 0-b[, &+&R,m"Е+Ky`#v-qJҭHТ(cShi_qKƊ}+9<%mЦ,a\ HA:1 7JtS{sZ-Ӌ9d(*foTStIF*JRNMSC`T׌4ؓ\2/LC ύ㔲Y"b\M:jbk9L[=EQgRVIs4^>͞eyqj| aPpQaK;.|^/yKA3\ ц=5@A2@&e欄 F{LB÷K ãΙi5l"ns: 7X~rErLE E~Eim]IMj#ҳ=gqFwQ=,tlW?xw}:% jݶ˰~͓ MM%K5:?oH{A 1>Pnbk`Gu&iH|еJC3S-gN;9IQp<u=׍GƐLD |^Ʀ Ӵ܇ {Leh耼u$`cVnC$̲N+;5?ȣS˼IRi\^,h6kGb$V(&9BR6KyA>_$v[!0֯83i&9ƽ?("Kw#M??Q<<0 +lOBlH)Wlbhx%ZS8w fv'ׄ|eu6ܣU3 9C!#֬:ʨϋx,<0pXWܕmb+0gb3r}@ IFF.rkDqYme"X1Rwiiny.<_y)&20:wpqvV)Cg:L~;):_GIi;^cc {dcG~ۮS2Ӌ厮n(%u +R_RʎCsҵ -~iqU6{5A&{ (1 U?򽀽k`67lh{~!,I颖$FuΠr J&{oB8}fs\7eI3,Ƣ)狇ۆ}& uN $?4W&&05L3S{׭"CCtcR<ՂwFT~ѩ[ M^|bIƅKv.]ktӽ&&`atfFHĜEeAgӇ`IZq%uQQ|4Vޱּ{TCA!,԰VJ"hGK8;#}i׻P$-]0*yw@޾udZ~_ԩ33m T%$;mkM<6M[w4`|xM`;{ktT3ߨIQ 68WBYÛ^|T<%m(`N4p0AC'Gc5uaase{zy{;y j0)3.O\6P Pj$d])~=y9N]H=ʙk1Y9ѳz y 0#vW# -Ug2L@ ȦN(fMm4ONc5jmL78/ CIpYC{ckPu9F7+'S\dX UQ 569 ǫD' JՁw=Lf`z\Z: [&{ WDƮn)FOC;Wt$%S65{7=yvXI8 XT@ENN%x4MIkeZ"4-Lʡ<3Şp-\UV* ej*bKJi.=b k ~Tm.ݥC8μ]_ ccdcVbL5%&$Lq'U@xƑr/}®j _Xb^y i*t~(~#^NRʨ|=t}HEvHM +Hn 4,"9,ˊ"l/(+ b59o ~c$1 ֲݔXh -&"~B(NtV4fFo 唌HRoR,(jׂ/{9h=SpRbPܗ3Tϒ xCrH+ɦ[}V/M޼k\Z#!t;B`*ʋٲ&'B\ XG%?'mx"UOGPAOd r& V#{zk4O$ 1HA% 0?7S`bz($ؿ=G2jP>ki!cQ, PQjZ6p^p0!e(Eق>fcSϵP|8LC 4k ڇ@"Smdk {TQ whhpA`=KA{gw=-k60ӊyN ^|]VO86W(e61?Sbgh@n[m6^#g̜PjD-iEI s]v9*㸷q:39FO: 3d5 މj[{8ë0 IõI7C -)FA@PשKIFna^[m8aW ћZ!lU133KfϴSϸ!POzƘ bi}VBG;D ۖ۶m۶m۶m۶m۶m۶4mӸIc31 l/NZn8ot,))8|& Δ>\d[VǮo*/ir ɔkf>L($w$d>;)Vg)gDmk"&.Ǐ,w IKc) :V:C$5X9dطʼn]RRL_3C Htѳe~><ۧGt䐺2׋'! cErdٚ5n:5P}e92pSi*mrV &&b#BZ_N Ɗ4d !W}m*THa[8)FFAbꕿtks()OmE%Ƃ=-Y߬on3^?*VQp;>C SsXc3D>u]J!.E1ON\QsJ7(j: v1Q;Z0 ƙߩE0tg2U2uݒXEIӴfZ13~D@jv5I{ 2=BD1*_]c)~rޑ<3=s0p%SYjwjg۟H%K9WX Ȅ+3rTqZnu~e:WsϾ{ެdQhJH&ӓ$1<'To8|qsҬ=uݣseD8iYɅ,,d%tlk>V豇[&n\qu~bؖ0TPNS"S 4y[3|s&_9 5KV?#!~A=\v^3x %'|frgQ)& k"/}>u}ܬ 4y|lD^kN=XęOGʚ:\~п OlrRP*H:] %c2 YA(nj֍d,$CA޺e(}F|"Rt1TG ‰R|-'77(Z2_ msu*ԋ]mOSʲk /bs.V1O11uB!k|N afgE<+$rՂ+(WY.? pI1g-,+ݏRQs{NQ"og[XX7ъ0w^́0%G#.ċU z0i6:)Ի6v8SD풊V3 *Lbaж1H/XDJW!OfIE5eoE  @.X4/ D=//y=hn 눅wi"ofC/5h2Ǯ+*To% O 1042HZbkx5<~R3VZ6TBU..[Vʀu\A)+RءEH67 +l_K hS%䞉(oGS;\u8%XJ>Eo\d* /#|0ڿیq6uڝVg;0}zd6iTj+Pe[DsOq>Rўe {p _+7NݢK'fy~ ^%]삐َ62|^ Fzb}YMI#b epshU9fWykCuz2?9 IVW3 vr1)roDaCs(&퍡BMcٱ4藎*-g揊՚DXTôljKOm|,۴Ŝ-DpOܳ< ]6PvnRJUgܡwاglЏ]77 زMz[NR]XiG}W2W Na6WZr)Kj"8! =z鮖2kBNvݲ)(rf.\1Ss4U',q:>j#$iluy.d#4B=EC9$5:G|YUru~eҢ^Y^do2x~ś2+4a3@&[j4şt I2zSxl`ܽfMo^zWhS|zNJm9?A I[J?Y>x}Y~ȝQQٶZC&C5R(o_%s(؆J#X{Q;T]甜b26ll抋tD4~{ח6 .kcIRd{O]4ZڲތLsz+bJXЌ@GQz^+xm5U 0xx A}FG@֨jiF{ߟHՕOҞ5v.:[Ł2Dr%\9 4_(ElIƘL3mqM=ppaqzKFwߩKI5?oB gcX;! 0唃_W̃WYSA%Hrb h;5:RKJ&]lYC񝊼iYiRb%)9a^Y3"UE Q_1nl·ΉjHNX wIijPC}'ǗTWg{g}۪~ѥ]]h@ ;b8|2b >yn_+J' 4[ &8q0B}cvxW `kqm<ۖ$..nEyε!= vMbdۅP0XM ʵp6Uob>8d*d zeمFްV4 Ҍшb%aj/{Ix+!tfy" EklbErzpMcaJeWW{Ur;ȼP:eo_\i6ۨ4jnݴៜkE8%1dܵ*P֓&Ml9 9T>GV";RT7v^\[P1Ԛ"'r^s$dlFQ# _xP3EW+$4m;yJ)"O]W <3u֡cIƟl5<W:g7uyg/=qB ~=mccJE-}0MJB}j3Cz)4yo+NfAx囗u⪹ &)pTx6ۀk|[o~.Nө9"qϰ/V 6i붇\sū "%*E MEeo7{ۿČQ鸝ܯ,r^^Y!X,& qL!( !2z~4k`E1^ަ77qXÓNY2P WhIqd9{pힿjڲ_s'R e'HP_xs9C,uy:Jo&xj$P{.!>jPcwY5MX`ճ˗ µήcE C "I!g]cȉQ䄈7b$H6e_7,Akh&buE6zIq&>mp/}uܬ:.p >]%fe۶{ۀ?b. 5oZu[|XC9Wd엚zz&l+YhB")n«($7tqNS X1l( I9p 8RE|z1_BAMM# rpN&?IC56WGnXj7E%ķvde&C#猡 aF! /zX|C,M{@? tP:N7AҁѶM#֫r"`\;K0؇JL]+w L#hD]=)/_HJ{pU=h9p3I2')g1\xST/%oZf>0m7鮅誽}Dhk4xAV&&* ^jק>ȧ)Hʖ>#FQ.` l) 'c-ne} Z ăRWX`MV䞤I!-ܖ<" L05t@`Sm̒^{CY"` SO=D\_=Roz*SA.c#Q@ֱ yPa)piPP~`\xIGyܜk s;BSLuTpX Yך}; RXo31Gt?poUX䍿l+MtD |۟,OI|(v;1/)- ?z1ҜdC ) h I:kXB6 ax@ bM`Sze/T]?;q)wps6lAnaC1nHÐ|ØT 5I)$ooNFF1.H#L9nʹsdBĿ7!ǏKq,jf̓[Lept@ƗpST1g450{[ֶܨ.xBkoX,,抚X?^rwUw.XCڴG4ځ% gZ)(ʼnڿW ; 59bYWc=.P6 %J+ x"v]uN-&+.zދ>i; @ L#A] b{|Į;$olrbh{ &X%jDzʺ b=e佇t 2%){n $DHis $.y|x.OI}rnu9@Ͱ?H4rBNN(&PL5 Oq1r`F櫎 -N~ƨl5ѮƣNW]̔S4C"^\ur z+k |K{S@+IߧL %p#SŇ_y+'Mo\TJC>dFQ^4 R$.0݀(v:+&iD[&Nxl$ULƿZ!Ձеx$_^^m0 =f 57axlp΅Ovn3hLXj].J=< oAA[kcd=khT*N- y=s$D ʝ%d cq(diCK*!۲Fk @A:C[o&VsI*`NZ nf$ț[X$056fOF{Ty C*FG&lx=ELzzC">l:IR( >`O}-8vx@@&+I[|9%[E7a)핤sZw*Cw5h!CPq>B^ą)'G0`OOAA+(_ \-|?6M@jhȄʣ#B>m8)gL1.P7IGpfr 6׿m4(}FVF54Yk?qM(L`ßK3VwaSu&|L8x BpB)F*?FNWb}P_w΢`vwS]}ǨQO|q={>9ӮrZ"R8@jYAZdz7<ZJ10}%6*5OӐ>Jk9=kb(ira&VջPa0uO\:ZODo&%DÂEi:xwٍzuhG<Ñpd !fUx9VS4vG()7=<^Z `rd75cCJNi5 "!dWiع Wٖ@ào$A+У6tQ#~G ROE%xAHKC҂3q{MS`.DFI6~Es?;8}$eTT~RUlj$6@Rl>*:aWpe&$s x-Q1ȣpDJ耝9^āVn#|&uUv1_0pSo}fZ'N0rd#kwǹU *8L^/Iܠ{ٿE{#qAc#C{_#&jaa!O>l{ZLOb߲/e@ڮcIjXLox8/k8*ƪXJWN{U3NR^HYuF \.zoҷ]}Vnomzq7>]Tv9f^gsR{ 3 Β^Udl} k"߷zYdQt%*P\niT\-B@O\]{q8'sil+r$HtH|Y#3%ʇښlTYHv']}HQpLEaKFץԨn۽RM6G-G&[H^yK_/#=z>̹H2O u`McGhyaum눤܃qկrs0m@ZRCN>d[UXjb{l_ )ʱRU'޿Ҵ1NNj7Uþ֎ ) 2h1iZqbyy\ ':ɟ+phu7 ;uc%i d5vq*.B-%q^ 7" Ф,>h>lٔG#+g}hoή.eR֍6YnLc=|'Nc2IyO Cj?$}\?,(>Sp+8&9|0Oɘ/Cvҋ FeiߓYMrmݓ*9yѮY2tR֔p$M} Qwl2"O$$Amy_hCuOdr@ }w\~pBz5\mnEPr`}@̔y\wȤ˭pC=d\<l!TL+ekEf,0/~|AmnJe0 q mz %[E=jJ.;{&Tv=p@93 Jj#7ϧ|nl$w3ٔ$oxC@⠃@ ZyQiKhB!w H_ cEh$Qj}7Y$ꘐBv"yX h1 (&ڞj6aq ,7یW(553{7D5ErD .l;W퉂moޗ*`E(q&OQx_ |A*u$ܖcȣ~R T gD*.V̄y/S;5j !AfYGt M|lx+7,W0$RaHH۶<8¦eY:D0rv PE6+Ō\v~`Ѧ Nllk15}P.(G$%,:W-aEmpC<03圇;9jAeC;2 faҶv ~?ľO[kEኒk`MϿ?"Tf{kR^Wu-Cs-)j,V1n B i;]axzmV<)U5 I1" uāA@ =!VK3Od@&~ !1 ϋ`ۇѴDzFV#ߴd\RhcXn?m?2ѓ v}-Nq ,s-@XT] (AV5^!~ dJ@!"hwo='0="J.g7,~ԭ]`-[68٪Og£aU*i \`3.wN7 |2j=8o5,orda?fힱ$V7 ^ &mzu3-J6UұnR &C ͞ER3V_ƁXa7yD[^}sv4oR $IkfZZ H?$%,HV%2Wy=I7BC\`viT4B*&F6aKa+NU3 pC%'kL3 y;y+oX+lwlHn쯪g22ut mvBx&`$9x_bj?χluBD~R]) A;%b=!n5!xmOs©܎ `ðdC1ف){F JMLE>&9w [b\-/\@4ŸJwDM r$[>do'SȖ)lf^{&Jl飨/%VR ˌ~fI(WD+h o/珮'w7U1RU^=fK?8˥|r̚:@Iaە'LΨ LZu&Q#};U, mg>7sI^-piw>ٸ% 4d9b 0;tٞe]"i8`ʻhɴyϤ_0=6uu-e.]b_$C[|R(L/bS_0t5*!mZdW七5#x1gx4wchySbeL.{9\. ]">:Uɼ\Qfy ui&-{d(d,z @9?WYȊA(qrf:Ot*2|dq*v!q}n'kvg5 x]uqe!߬c|Caj ^F֪wfGC4 51m5Be_Jz7Fe g. 6D0C#v:Nh֡agA#~ݍ!;3r5T-J:bR (g <$I jhQ( @SᏐMړ=ʛArY=nDnٜͫf_jjrJ`8WT9,29yp QWDzzIiETW7OؚqhJ 4X (htHblP=d4J0+z{)o5NfH &;7c_lgs9a' h3) vbㆨZVh!GyMSHSVh^KM֐ܽ65k!66n>nmjQt

[,ˆyN3^5K h@kPo*@(%Oy7At7F_zx'+fV,:Swu^WisNՂ!}ȮHD턇6'4$Rr3IϕB/76CҪ'XTI [,eh>m11h<|D'e_b#wUl<9aPI_Ȱ4RM8oViJ*Fd{2qtmNޓM6V-P=V|Ǻ8s̸*^U><ÿn'7{6ћ9 V 18Ԯ덻,oRL<ֶSym#i]H>^n \휾]49t!3_a]3:Gwe NwsRcyv&7-DJ6DƞT]rLք޺L;SAEw{ԊC H@[`ÃV@G!~ytp (Vjeb̃E"V/X^)F2)m/r&|X6JqIl^Z%jeoHEdd)Foq$EmJ~ZX*wz|9/-ZibtVsZm\FKwE|9a鴯[A.o3nz֧gnT,NJBnC4>Xœ{RS+ᯨ+g J sy!!er'64ʛUI%r6"[#kZ2BkGS-۫!Ru` i³O= ] YxK_7lOHS;Hz`0-ޭ(# >Ȟ9ڮl҉ypXĴkZ*R) m ٍ`M- 5ɞ2u0r"^arȕ !qxK5hk @0d4/i>`{/@N$~gݧauoc)+5a}N=F6I{4hYKV))&UŪї}TM0wQr‰^r͕Tfu~I+ eXϾi鏻Zlq/%:" wXus^¯WSV:,NF}TLڪZV/7Y{##Ta{]}RGW;L|cO&LKI0ͩhѡM~X33QMt3;Y9lO1M _GD4}FSo 9Pڄ@g+P}^rE,?Ѱ7',Q&[Nũ}uswgWr s\8^Jы+*>9;'>(Q+jhhn d?{O#Uvשf&BVL!j+ i-k|}ۇGYMnS66$K̀0a|%al12Ӗ]s`(+.:cf@:(4p~chH8| l/{^95mc !Vfc(bij+/e[-kZx(ɧޔ0W;̳t4- ZHuS>Rh0lI^ HG#ڠ%.$h&y$H)" Lc{/He 7Ya;람q{*}d^tpT[Jpi@+& 6aށDtSsNSĴT@Szq&v zI};y03"]-8KGVΞ:RS gnQxa@d@6 Sg07FHm@Urvt!gКSh(~@HPQBN5^Rف"K 8%Qىvth#2Ŝtr 6; +\b (A Y34Sys-zy2auPf;O8N)axmO1ycZR!)Yү㟽Bd0x@hW0kx3 a)I1,kfRNQ)/x$"'D6~1}v%gSECʒU muep^5+ƅ~ؿevynyjA^rߛhT.5&5njGL&T=ʒh >}вI'ȟ)uBiQw:ZrjhUJbWU㼳b(6)=c2 !2W7KvoIu׊:AI Y'TK Z4PCSqzgg6IB#I "\X%p+b1jfIG5)MÞ7qq^B53.w@%Xa 0>ruU< rQ +&'ʹfHf G<Ózt6ؐ6ԔNVh*F ;75Xɥ6AxFs bF4`1x_Ԡ_Mn+{SMӵp9g3#M ͅJOP_fc8t5"%@"#eT63ˬnd6Ԁy5pP ?~rڗ蛚(jbӊX&+r;RGo#3}6p1hx=Qu9DtI "oBON8XoU`7 XHUJ.qw+7K):y(/w-0#. hTBT$\8ZOɑPW]Zld7ZG#@3)8DESGN~ajEޟ@jIē'JD_d3"XjbMg_5C Є銖iT]w[uvm5L#T]zd9g$/pJ8q(?dۼ"\hEQ\&P&$ tC sN>IA.cQRJ o_~liDzDAAW8 T`\OpO'R6tdCc BlsŽ/Hڥ)HzJ{uE\s Dqp0wj u?RJAUn7>v\mu܏@$4~`0Gـ-]E|Ty~pr(6VԩgP=o;{ƊVBNtm0]۽BŅib3X82q~g*7hATcAݔ\mUZO!P -JdxG(:[18X PLrrF'PM8D3>/u:k=hp^Q1=F9$ITf'yn~cncpEdwK5N(-u=TeOf@Uef˽q i.8"Kޭ6TNFPJE!qY?w05H3蠆j߇3s˞ Im `S r<(P<@XFoJTr7U0u2©w# ?{"heJq:Z 3Thxo oD%H'I3|ʜMDO*Qr|VW~ny\*Nu'|P`f!&Y tiDJqķOdDz9DJށN ,%'Bmh9glhcCً7m\"j'0?s:SH\ s'[q g`gX])Kb8d@_ˊZtȎ^-K|j4E+o=U@7>ʄEcølU6/ɶ7Bt9l|ڢTa8rJN@M>؄UkQ/V ,~FMlʂp$VWhh7´u'@GSڴݴVOkl*IƉů2jԠ?ؐ=%TbfOlT 4nuXs1bsE_VW[+}e<Ȅ.W/6m uM򏋀 S=jw0o;vvGP=+I~ 3NI/hin,)ۗV)?G6ՈVQmH%. +hǩbA tfGdGu^‘phʼn(i!&drx^ XOqxh#|LPU"CϚgS(2uVZLBulE޾`$#vo,ҘiDLc} VȸxiDCShP|PQ{B[ô[.E5ʘĸllOF3֍]T!SӞ]+&VDmokL9noB1 ݉0_ G22`iePDA L✨!KÃWLN- †JCݐjx6ls*=.ZB/v%n$ S58B9@q{3?Ñf8bG'Ê"fZ-% ]iZ7Lf9aC O ec{ TA{.JBu9:dn* E)UG.aG;j"`Çq7bv!ڛ?r  n@^TZ(F P$s'@nEk1<׸=r6g,|32do٫EQW-< c ᳠roV UK6Ғd7!zOIOpmʫ˄ڂ뤥B;8ӍȒڲ3_xKL@ x-G¤k&sOǶifQry ꐼ/ֲXK/0tl5,RHW0ej'u|;9K(AK@p\6m6PY̬ SQ6˜FU DµeP>aN0iΆUΥtn'dގL}*Y:KU5vzcne~^&tV$TɑBvstp+ҾRe-nV 9/KՠL3]E$F&mw5S_}i Zz5GPjL=[of î 7U 1P>KR Z2{Amt$L}ǽMNK1+`5 W[ѻPnkPTbՠ䬝^Aψ}]J,; )Y?z{HUPy@¶S]$9hW t^43PsIEuQ oz#`3Qg:5zWMVuHgZ`Q]^2K̒|j`HΙ*CUEHLOpeϰ># cN]j|ުy;?cogҝ5nw:۩b5)3~>k RqJy r52ˤ[M0l^l'+*I 5ѱz*X?Z9a//TBr+Vm<%oUmp4#`A5L&6 -P0[y[6C1q%vt%i;C1C,xSZZW5U։ 5AE"rH@#m|+XPԑ{h.Ec_Ud1#b5n^-櫙i {\W!iB}posMURco>\Λ曺ͷj/FKyߴN <#8[&li?2O+>>OVxeR. )Քz,okzV49f]ŒOx FuP fHDB){BoD44abR<5$ sBl9&V뮄;`^6uQ\ּ<5( u;\#ga) X?;oJG[<~c"#m y%Šį+늷R|+~jtϔrX&ir28`4x;òZl|e;:zȵÑhhs EdC<c{·3o!ݞ9ЩwVwsP Jc ;EuqlN4 x!JBͷ#+^C[,_Lx;.W/_FN] ^g]eV;@ܬf|ڷ4?ZHΌYVgu6s@IP!!1)z~~ZOdPkp[~~<Ai! ꥤIBv@@ȻX]W&'BC7-0cڊvgg#S &Y)1*h嶜;H7i (S. 5y]2=d:+.-`vabEQzm|tEàJTΚ/;:ئR`p18j\+"=,TՇSLv+[9YHAH$6ڋv>\aZP"_8Jl>խy=s=7N "܏n>JI]~3@0z]bO HHV)3 )4e(}ۻtS0gP +*" yn(!wƠjfFʃKUȻ߽۶un:JT*ERM"f> 鳤3g/l]|.,xSÙڤ KZQڝeC?%g\s)WC8EjcW?hdu@{gWqm7R{10&hnMw-_/?l6|{MڸICPg~ys .!qx#nJmhyA (W-=zb\k!Zg`nngRw-f/Zje~eŖ㴦Iu7Ѣ/0&OϼI;ifUv=xH¸y)dиY[#QnP b#d*_}xvj.! 9}^v?qZ +魕v{]pgiK ei2"@hH79zv%m+qp@S Ź#ƞkoY0:^rp(5ytDhurjNbk[Y,pFB3:˨.lq?wGWT}.w&"WHr7VB_E<-~5߫y~}D(O~u9H}YKNJO/zsAI r앤1ʘ{$~TAx> ["rwx/:zwG~>/,@Q$9W2'E8m[^EB\~?Zr&@1i fCu?&7!UG'e(4XoH4*D-Q)盧P'8BYl|kVHkE"FdX=) cmoY?( &T YeM5]滘%3a{@D4Q@!eTZ(L_g:od\k15IX/\&\bDA(}9zvQzɮy9bݒMoЮ<5s;&x-ț[B0B%7&ufA 9pPfL䫶@sjHxA-rJ~ܥ߃$Y sxxU B0\,߅ic)i=|8CkR|,y|\ DKs/nR.ímck 1U:)Q~K@Xt1#e"+#o.߳X&E_-?Ԭv7, TQ䜃㭘DqPq3UG\>OH=fdsrL %mӬ9&8_CCISoH[-ۊS>,2( 폤W*GN_.6ڞhĐWv`+U< Jm,L;t{T w9^HoΦy)Q!:М$B"J{kB>8!{T({)buz-RL: 8MFk Kk?dbq?kK_!.J+=Mue)rN4 (fpy 9NjR'틾f@]Yl1+{ۉخUjRL<=akCkg̽iNt/pB7hjrpUUu>b20W{ lu#wTgU—= N3-y,mlz#P!s 9 ՜FH+tD˕V9*dߔ]N66}@iK2&,u|Jk1#3Mz9f,札X֐s1:JMX `5yl6ޏo|'Ù '9>2 oaxFB4#bl" wY`ɕ ioưQųQ ~ ,b6= /' :,J5!?fK 妫O6= y> mof8A)Z󥜤d4{;4PX>x5d)=^6YG,#Ҿ'ZHkf2ӻ5t*gkO>qOxg JC'.T BŧލT!:C>h$ $|}~1Ykƙ#1Hp9r^N4EW! dE< bq&C@fb`*;- m ~`:wtOvAi,^G<Tm=5\q ;:wc|Bguo/8z뤯E}R4M\)_4ۮ䱈M<]c~cn0պ1;W&KOb]Bĕ\Ac+ ]nl/׎?N'؅N} xo˧.lSLJ)Z{oWǹ`shR 3rZ 4؝eECk!? _i0}~mqH |i9^e+;Z2t|}}1?Pk*bSrcKo䧧aLTQcDxFLV2ڣP%gxE8! ‹6qvD0W4qa٩.mnptS *)/T_`C7ƻ$#XӖxֆbMm6IIܵލ8m4˰_FKEgit)I'tFP1gRTʄTO~I$ l Nʄ1@^.b+5̼y޶Ӑ9)g`!NR }F>ݳf1LOoJDmfg^b̎6)/xZj̃16jSwJ-R]T9͆\7qa!C]qP|=},eܸڭvs 2 Qn%ĵfVg&x=_0Ǚ%̨աؿ5溜boh'1[npNu2G>X9n0 M;,IOxYdAwY;elw)*)2s}SѹxLpJs D<\Ƨiަu2ptfidS*Ytu c/]q8h@ !Eoז)(HbcݒQe(MlnZ2^RD%ʉ'8]ٵ4! /smRBP%ݮI*%)_Zvk7=agdNs|7v5| q2 $(Hܤس2~{oWexrg?z-|ANZo4l~1)?PSi k{%uƟs7rܓ(xU[~6)G7S- 1{&FI>xԓm|Sѽz _)iWP^ǻ+qƕuvqQ㢥wWCI A + ^ڮ69`-`w۟)BZp{ BAB1u=;:yIa(^|Iի4)z쇜xǻfv}M١h*?pV﹎p}޴;,JO+ 4;MK|_ᒿwtrR⮟w`܎ l"~.H(gjuOGQ[mX֮I;UOo2-ƽ_%m@Ĵ۪r]ٝl};G^ )W>U@렛[^7xw&xW!A u 27o.p?i4$渮hk %S=zӯUFݤ ;ObL}$"Ke@EvBgjlHwTOwUfCeoPvDoS~{}0n)[kx~MjTrXwѩ 3axlgl梄>gX}}$;HybsE \XDwQxb"j;42,Y it#;]m(r6;#q8ecQVl>anqs3I^s+ v;6GLW* 'ОY44`+]8j ׷ڭ2g.njQ @P#ؠ5Jl2wfTlԸ#3reh7ѯè5G:%dlMlƋR7\AQ-bsdvLrU@ R_=վň -~±dX+mJ 3kz/}tm",[J=Evʬq{.7X*؀l]FL&b=NeCLA_t'҉mJJavbAʀZUK`m.JE #tBÕ ⠡sKm~^;YDc.±ϖ,&._ }n+u&9K!a8G6*̭QskŝtM0?Jdw>)Y!p6QhTJL03-^gO^v:([[gOGJuX`ԩlF߃)\:-vB rզ5.l0g} TW] .7Jx->=./}Le(F`LAL|#Dr{Ⱦ3%Z Sgg&w5A^(w4#d9 '"3U_>Am(|_ǓjX~*g|6UʋҋE7R'aLzLX&gΠ]O![3Ky<ĦCh /*Cߺ!*r$64H`Kw||0fTT/cL<^IyJEkv2HDwr-8$VT%0[\ꎁUi;[^XŔ!1GEyK0VKMy|N]uuxY^Zk^O{][mI`~*AG) y,.3c+< C~GHq3o<ɛp.ܵ^rM:ʻe~}] '7WS2(=M$]l9@\euG)U%D?6.eRxndY¥fDV@Bp.,!(γ!42Қc`?0~:g\u(ᮎ^k↬a{C{g0v2DE TJĭ;=zAfʪJ7.X+o=n&U|?is`m]ū6壣.f q4 [ [W+Acd|խ^{o^+Kdt4 K,ѧ89 X}6ĮŪGU}mz{tFb}Fry,GZkLDy^"z)cP%9O$ԧ6!g ρֈX%-<kh`TDvnOEsq!E6$'S0#uԪ5c;{)y6ѝq-Yy .ہ9€bANr0݃"$gs>nW/Y@E#[t,m.>Cg %<20m#5l';٧7@zy-Ēc CM™KOv@sMC]]Tm6@: aH̀P,| GVwOOXk cBE׋-CgYZҠzJ/ZJ.[x~iȆ$XOWh|ށ)plt9zI$ҔT}vO ᖾ NO*2CM=M ԓEw1XӌO(B9ihWUB@Q$Ȩ RRpYt!B <8Z!%IvL)9i|?2C*ӚwWGjKAI+$FJ* o)kyᤃBܧufD}&q=B>3W(~dY"6nѹztQtz`ь6* lY*EghΎ=6O?bO/ۈ6| 8=-/~yuhXNgtƚ!VMTJTJέ"eƨ<@TM]%kt :#B#j:'7DFdjP2be۝+prM&׶FqArHww\m?D;:A/˹ܻu\ ~ZI^9TwʕgZ5zxyM҂@=;uS`zeǃv#8Hg PsGۍ^+v('0'LWɳP$ ;)E0C w>1]Ӏ@6+7yalԶ^!.'>,uJ8LiQTTQ45:'$%LjeH7yz;oi9N+Ό|L)[ATP]y;ad$>Br>V9F\bOnߘf\H6;u7\Z Ľ~ L\ȭDL|87cLd&YC3;5sy rI W{H#LnAcP#ʂv)$8`{LY?z_塢VK=Jp~H:?{+0R:'G)ٙ0])W{-cYVIh.3/cJߩI¯﹚֪%ֽd)-Z䛤G>ќQx.D ᄏ(!#wbK.0:pA,i+'32_ dT[H&'I[`+"]tW#{ {?Sy'>/M'lQ#?vkoĪ4 0&d 4@@o-{rTZkծ3C?s?ǷƐw~Nd`<1$ nDKq}2Ԕ^OG ;{'>s+dHEUk\FI؝}e7aT)^7^B߽>4QDv>KnDSv8=gEzpih(Xxi4s&b8xZԅ"otT# aXfS+f3Z(ĽPUxsg'TmhF} ҰaPPܛEZH1fAgbwNuo<U$!Enʹh&aѲ! h՗p:̂cRws=DNsjeX&>A|4x Zg6p7G! R!]>:{'Hc{ʥ i[ x:lĴSd^g5@PG6Tt{iQ l14ApSNqQvC,z&Oy"TS$Zsa_Eܱ'0oԴ4sQ.ŲIsўEfXj=[OXە~ΦT] L&kc!f-c!FmVӀEJu GPujLB@hk!&1tQiU l`4bC3ldQW\愊ebBK (iߖJL\9VϼG1ź:thOk$BT W2#s̎}ZaZP4ҰeAa&4tcE#s\f$@,p%NJ,?g6v7MN$6Si"M5@a۴F4S& 6>[d[%^ ZanL[dO<!z6%QT;㦶J*/6 g(*Z,mG`ia]{2mN2$f@ÏH4#^nZOx4 =Y\I`AhZQ IGf4v_&y}b+_mt-RɘdO)H^p&t]}>1&=U*`MSqe|>xB~@\vc9DKx XEo?hl/ERPO a%E@ȇBeUܣ'$}0*mE6*U)u^=^tcҗ4FY$M}7T4K$_R* NogFܰmUҬӨ1FtaBY^YtmMG @EPXTKK«(&'9D-ВŮ mm|nkVDsCv!}WPr[z@BC{LiFN.@ -ْ#\ςKN ]kxg@fXn֨U TQM8e;\].Y6vV5_{ +1R+=)uq}nwqV Xp3xmjF&NK1" F;S#; Nf ڭ``J-=Ly$L~F}hS9kmfM`FeZmٶKE~ ~hk(c=0e`$`%tx e._0 XSn&=gn=μgiL۝װ3T3Fs_MX G_֯Lx 3Ym[Q@bW4%/8|v=(~"g"siOp`3<3`d^~$ CR?wF^IX`a6k1mGSE83rN#F?;MDŽûKc}%WZ ?$DvqGReo)$k,**+  GTDjR9Z{ JYGcvC:B*c5^_~ӗG%%#0 '=Z'zLi.~,|AW q5)M`c9BJ8EW2<ח#SZTk3SyΤ̷(}Y0SDdE˝4:wX@d,'Q 1g22%(5Ĝ)c4Xs 1I4eKӫ SB sȜ7إ95#FO9w\'Vdc!4Vzshkj2Uش s-!5qvB8]9qF!!;n3l=Ҧ- gecB`Φ%X>`2x"+ØB90$i yK= @ Ä v%x 9̤7a_%!/MCD rPO5vi;2]0,ւDpd¸5f;h&N^j U87q1nu L)+Qќ 8@ZEƘ݄\jAG#tM UM?AҐS F܉t4j@tMnkΈrv|OR|B^m/`VC$ |c-jsӐ^='IK 8M|Dpte=Z:մ?+" ]z]r[/JKdb ău%\,No ұf|p@7Ml7vR2$ x!0O,N`ܱf|ʯYwr!SN π٥S7cEF?)#3~7* b qzA,Zb ԫK/=R'A5\n " RYph&= cnQQi}*SI{")3-~R8=dYJ-Q̕pi01I~Ӱ\λi C3-u5Г$q 03NY:W?{Y$ǹ(l_'I_}",p"K+ d}Vm'HIZ;)g\0_^q>)>Fz6`9}Չ95KOyuZ!WΥ#~cg՞ ܽ75l+"W7Z? gh^@֒DQw4L6moZE.mnEӗwjѱ?p9(&1*qGh&wS:q<LُSNŸpY$,09=ۏ=pdǑf*+oӵMπTԷ'8&p߯*$"4Ue]9 v9(\b{k 4[e?*к`W`,um!8oVmǣqvZ^6;]X^f=: N۸cԭ?W%Hɝn,%4ȧ?C 4 F|Qg) sa,ӭ9Ձ'JЩco{W_,ss_޾oPE_R@ԿΙbڟ 쉙Z7,Ⱦ80#ϱ\}35,P쀮K~/L U~^l+ln ӷDwxgcxpssR1\eA9C;:XTp{wɍat1 edk;^]64rݶMc;/T>:ȳ!7>~4A#Nq!/?:W|,I>ER0%b!v6$+O;7OX_2 ǙQ6;a(fr{rlmy))dV%ʮ_+z)\maJ.:󛠽w Z^y%"%=:xz.?z#.(|LG[چRT>+,K8_\nS%,yp[xC.g0f(?/ys^veZtGq{#y+N T,A.תի0)+!)<$63OO=0ҽт-r qI p>b&J$JY.@L.X\!2|h>x˯KC}-+!c"Q!87)/ၼnJoȊ K5Z9qJ[~jU9\| \t*T ]窃c9Flj[ɒ8ԪFqutA~:Vw0xM 0; }9<^O7l? i)nqDܟۧ%}j3!;uSi iy*jĘ8ݳ :A',ڃm! )>ı0+ZGl,n7qq=C!2S6p4 RFeVhˎhB¼L"WQTHK5,5A 8G ζnR=(צi$B<܅9,C0gCFK^>Eh28U:Lk5cdC;Ryv;Z4m{`9[Dun˳:Ʊո Syml-G^e)v`%f,-`@Rی$T|n/U1s& skz92!#P3KϓsȊpy4l'FpQ ny_1́DD9,&E!qe0~ ;Uf xކǢ|+Ȗ?=ņx z:rb~,Orنq;m֥X\u [2(V5Y=Y#@f$zIQ`]F Q-4ҠۯJ޲(Y0:v5*J{,>i&IzR(ak(LВ(L_jO߯ D s[c?GiZtمcRtsU&4z~X5_#5?sa|E/x ZSåI".v~\vəcXpPKJtDqH3m4 cϨm挴`ډAOա[n2w|1u 8;_2QA,%]68 ȶ>9]f4#,?㞍y̢r+îUD*#BE2 v++pV3i%Hy*;[#ŀE+ Lfsٿ\D_F#3IR|P%"XPmE@E/7;]2U.4VР02~Iu=ht}_(^@gPH wtKO!+O@ vVPw@×Ǡ+Po_5Lw%|NŲT>|-a9=:;ztchJIھd9> @,$߶3d (I˔QHu$HdNHBrJ wxirfr2wx?yIàB&3d(27jDy**&7"tARpHt鷾FZ:~߷59?ߧz=>Gz^ Sc;STe'7,-5X?2s24oo!"ցe ddF2^ xqS\fE=xR;^_>eJ3}!߮ g/A=IZ"עP˅.yߊ;%qA>Hp~hWT~D-b߯C޼aֽr$n͉O=VIC$*Ght/hxzq(xk͘ ln =З"=dݸEuEG!d7Z2$ }qJrbV⹝*wX [&2&bMJK%n@|&~J^Nǭ>̬< D$/:)C_e)TS`gҢbul"f>ɸbokە yXZ_n 1> 2tr0Zm@׽(Q{c1j{̖yS<߇a2yNd@brԜi<}-z]48W5lx67D€mxԠx?FW:0K٥jQp.'jHL$6x|\ ̓ۤZ.M%/"$0ʆOFXj*öb& *0Iچh#G ^όFU^Pj90~Ңa)4 L:2x4e4eTeV:3.SQXhkPJ*HY=d0Q [( FZ|ؔ~ĦfŮZʋ'6]~Ţ`(.(x,{3>jn_7Ia'=aVUxiio3ZpMjáX 捾}P 6m*&CtCj !VMSݕݑ2Иdgw,& d-=}K݉O`,w qX$'Q#33nmQ3SIrPUg|")oܶx>%6Ml01Z"hP zW~qn_4A_Z Z [w^cmfAƖg`I|Yv S*SS7Ȃq*'K&aGZ͓ 瞅3gGiYXɇYN^V+ S gcz'-ָQ$ eI)0P^s2V2 'CK*' {$= ɕ8KÖDue!%]GJ1"+׈e)-T9-4, "D6B2\@԰<lsXL"+:rAvN< ȵXj_h/@ЕZ,Jr1)* #PP= fab5.߽6ØA @ïV*ՊUݽL0B4b"!Jl7L`oj Ҕ N}HV?lcWSC%Kn{Hj уO@TPOe[(o2.eH*yXBDZE\L %!# Tsц%7EBjj>ֽ]|YfJEI6Xy]6©Si:0zDïS Uٚ)nVt1mnS0Ӹ0-F" N7uf'D&v_ۼ3*z.xW!-UrФ93ׁt Cmg{Y3"F-"˕\0pT +P is Cy3{v/NUF0j~{Ls~Si%7s+d;KSOT,a1k;1,*ֺ/BC?Ӛ-X8wr,r׳CNKW$t/=$ $C}UW5)iiaykwș;cIޗQ!K)pli ~" \SSS zeqM% XZq^7M'3cXGۉs5+ L2Z'3rC[;ƥGwgk@8M/" Sy\Xr8 c% VTtsQ(Qs( yd9KΟ̞g v^ʫ@`M«uz/I9f.,"FЀEOI?i0A9R5boSk&@8 A؂UR 98 >ު8 lE|dv1ZSPFd7?LT71,8Nea`_av0S*x69W˄6b&ʝ=]Eys}k?&#q\I%UDӌDx̓dQ+#FI&*xE\vrXP!GZgo犥/#5: \nNg: \gl`I'.u񮢶T4*dX#NV}Nnny.{+j寳ui4_{EOjoqCIjߵ)*˞VϦ8il|Ζ2#Ȟ4ɨոS-1&zZd8WcT0?o}"dX]BT") oO*|݊ }Gqw~׉\qv[ewi{Yƹ^Ԯ-cvѱbC=\bwNI;q5^uٛ?])z&-JSTH4!/c9>V+At$L8hrhd(9U塾|\˴QLF@SJN֛gǔG+.d'wf5#ac.y'\WC5L#3) egJOc6cpsao#@ddgKvo6LcL3K;8d77P Qs*0f816ұj8i_jkq3*de]AC -/Δ؉'&w1:g'yZJ[&It,b?)4(/DrPEߡ @k`PW폊v+lɑU/CHuQ*'Q/^ЗÄ$h>Y=(Ʊ|>aыl]lYlxB g3y~챰6,p7_l.7t$qjG,LLO?Ŝl$O DĴ‰9ֻLImq H')^J%V?NNNz7=O~x w}ݒcT ?[!ܚ;>>ގlg&ȝ_X^/^?b鱺6Tyҟ^.R=_=_PMV-TW@4@ rj낑5__Ѫ:\w'?yj_z!VI͏\?nM߭^$IطKKc/)_ݔ='. Ç 9_Z8Td-F%cTZ5QuuqeIλ1-MzSM ҈$F*ͭ˅]ȕ^{}q= 3ޝi"c$"b@yZ 75;)~[Î6b%< XduaiBH:ϱf0vE?,=$/lKO?`ucXhY|M MHp K]& \CF6Nɽ.o+n,E)? !}mfE-,oU?5@\Ӡ[&t. !.COS"dQɘ^`ݍ.j`LZj! :it `ۡ )ŵ&uF{>l ֳm&JY µLY+ugLX?W.+ɻSh)FDmO^Ē>1uk <78{BV as1C.fƴ\8N%z<+|#\˃p6yE$`fX  @CYM7%jFQ T5@}=J>CxV6PG"NIVh(vLֺB;?5̹>u' z86LhEY`fl/m q =A" nj|9n(Lo'|7u9Henl)N4_)ǬM7YKjA ' ޝFzgVq䇗epF0-[NL!7G8tA@ D {AP0T`Xmq TJ|kWH㗛znűV[pQNYYF͂YsCN95 QnhC&`c,%2 zx좭>JJY:N>Pfi-2 &`U/Ϊ>JȸQһZ0F?]2»BH*uU([JI-BJVeUF8ZTŁj#?CsS)@Qpo,yӍx Lɠ , b^,p0$ELx2(m»oJ)#*Q `PX؛ZST-ŻvB8KRwQiZ3-vh `0 #g,'0#a-ATe"_ (jMng|IH`a$2bcЎ DgzE!I)2v!zI>{LYy# GݬJF?U sBFsp+ݣ Bs0W]T|1EF`TʼnpmMOaMdWP: ӖRMWKȶ0iwY* ?{#1@uz/Sz3UpV{㕺UD$0v.-7u u9@߇LIQX+\[UOȓ_4b{C I;Z9LN2*\$ xK9?n."oIb KbU0Bu15ؘ 7qA]3cq &BO#D"s pм4L=Z gLdx܂WMM㠀ƽa;ڀ*Z,କ*pJ2?uzi(C'I(VsE٪P eVF@΄_? H!I"4SX¯H:!KS㉇8Tk١",eIFM94nOes4q+ qɛÊ Ɓh o! %q[CDpAŸfqpDÿA ߆˔.{|/\hG&H^5%;@x<2]+F&Z^ .YFEQd_H=Es&c{X SKSKT.jUuf9ybi BByc/@X6=9O- YFM~B <6hc"x΀:ws?{2iਵg\j6g e{ iq\_S7 5 @Ĥu|؏*}S܃ b-Ԃ<9yK$/:L]\/xsYF1r\o" Dwz2K g4C>=jʛ"~]jC@rd߇o^qڃr/w հ~/bߝ0z0qD7҈v/NF29oXcaGZCwL~wY2Z4 pl}5iv?nُNKкQrz˗ޞ|܅jZŘ2TAo靛r8oE|a3ٔ)\1ҹ^V>f]bx,'2uzx|οjRddv%Fz1*q`5 fC;rm|ϸ+K&o  !-dA"wZb,`#8oR"9?:~B{& rVq 4wfc5͹w' ( m8C+bTv5 on1dnEQ︰^ |Fyz=:οcYL9 7C/\l9u@Ot,U}F_Sʄ]/yA#ϙ̦Nka\úKfjx[an W辊I^xqn/@ <#|>Bx@|^ghjbbsz=T3bԷDŞ!N1ig"*WpwDK ,jgӭ*iԐbTƑ, !%k1=CUA4R{uP`) DkfKWN .?xQ>ʉ?{ze0{ K `dgN!rhBO! 6#zJHg%H2Ҫw-7TaZ=W|1s<8% u<\Fv_ݾ&lGJ0ɥaX0tNwZ9+8n}| lOZGC[>`IB'ZJiBmQ?;&JQ ). Bԝ!KI:"2Et ^JG jTD*wGz\!"nE1#D!9$yѹVMY@a zI5kyOe'87%MbT!Fs jț&]smUKࢋ XX[)ȝW|ޢ&olD/2nt$qr阉Y:T4P?[T#cA mA-[V#8 wmatJ6H/Ջ4J,NjJ!pK@꟝+(`x䃴B"H+Υ)PSt;XФ@y$^J"L+(;oDE1b"HxPsi[GғG8Y",qꌖx; yhDB¹cӉ4jR9r)6䖹*OK㓍Ζ$hE,m++|B׸ l#[FUXKFDr;r[\Ҫ淫WgBf*pF)ʚr!ci ̄DPlp&a/@R%gJ`czR]tB~jQUjD85<*a LW.18>Tlkf7V݋HSy@RjDrज़`IYpnt^5v!1ﯭi#+{|@<܄-^k3>2)2(%,Df >vҏuy[ʶxAD9ʂö rRHA{d1[] 24fULFv͊ VMgrKH,6C4Y›zSc$x,ÑLY@$C:a'`&.UC؈ϭpXRf WRado<^ yk"p;r~4DLħp̟ @;+m&qR >daI2Dy22Dָdd m9U}a:1pI ʒEl\{MZ荲Z~.b]>_0>EW:)y4.҆:5|R*PK!Pѽ 5HvGUbD)LJ{пzw4f?W 3$!Ҫx"-=~oA5#CBϑ-92 hQ奐iPsK<ԔdbV&9S#\=FiB-1v9(1 2l ^dʎ+=ӱ-sjV pZײ×q%t"8b^| L}fR2F(\;9 I%:sNDޞ6BX b:#Ir^)"O+ޡ.¿S{ͧs)GNg̠#]vz,l,u13e;SQ)(dϫ6ӋǶў~S=WgbF?XYzR(x?V O\֘AnV[Չ}NQCc&hgCx)DlcQyOBk1OJ⚡G& }lIvVC,ǠN~_Hl0u:F(Ryb>[8=F|{\!go/})2+r=`] _[s;plxJ}M.ڞr3YCGU_^'?ߘ#JQ?߽ >1ҹ>nx{K c*С2[rQrnϗ+WGswC}8#>=^dߋr~·bv6=O.>_o3}|%Gc%w9]_//\ɏ%3h鋳_H}L._^ r~<=>(u@"NnGリc nG1Mzi OT>t~t̴%U1*Q*4xua"+,+-F~ٹ[?p4j Pq9\fL>ywzy4WuZiS74S*rUL;]ЭXө)gݐ!uD&f sѪ?5ɗ&P yC hb.Mva]`<{>V7\7RķZxrP@okM/_r(Qa, pLzEJ8s,aa鹲3 }'p+I cagr'DLwu[k=bV,ZsƳpGBf * + ~ΊL:e?BY=<* ׁ߫uC(B|4*_foX6X<$$ۜD`\.?HL+d(fRd3s 72쥪p򠈢:Z'QQsD]" uB; Y H7YJLԯ<̊T,=j5{jGvӱ NMZ1g`(c.\^- LB~D1^03̝JuGR~/ǼGb!$q0*dVY)@]Ès&Gh{28h@|E1eJLK}]S9ڜDfJIZu?ѝHb(/J9ek w*Y5Ɯ>~wGrh ψvtꪬt%\qaɩ8Q(?#K2gOv厭〘PFWHv:ɪrMb?)A 688L"oI2FǗ, %jT累aԇ0҉,<]MzN*ۊwQ$Slș TP@n+e_kGϕE|};|iF"Ķ \p&K kN5;UHم;>\w.vP!Wm/|[X C82l|T)YjBh's,6%k/g#_ẫ,uKфLjvדKmŹpp~J^FvRI #Ď(ÎRq' ︟]j 5N3>PD.㒺;mA=U`tr3(LIY ZnǗU/M|4ˤCKQL H/-0=s{ ֤ Z fD/NEō^u4е[{epwek/enONxW7\749ohJ:/ӰY򇼠t}6ڗr-|uyk{kw|[( .K1K^?/c}/7.-=c>¹&Մ!yl/̺*O*;Ua-tyX#LMa%X +Iz H1^m[󳼆9l9Y{$5'fNBbZK.:RmFm4\"=&]k,TqNcH[9Sj8 [>+דvE]8Q]8Xam','rDl@>:ūo-ԻhaL[zh{ZmVEۧ3Rdtxs4SXGFW{lT=ܣzdiqp;[VSwFʈp^1, y)'5TZ"_M\V+0Ac 'LWHoLXfgCkThq]{}A%BeUZD#ҩΙ~*j ˂p|vQ|rɞ\qj*?Bi 6U-Wu}b V[@STe^tJ,Mf/2bhK쉜wL ^5hu䍨-p zDXގijzBiLk͇r* ணbp&Jr!MK 1 ѹѥqTsQM@D(*{ Ytł9| }i+^2Ԩwj k|DԞڕXQg2V]f7E^ny ϔsBǮTںn+O47`tYp.~Ϭs6/_NEU-% *iXxF Ga}Z0ıK+ڳ/8G @s2a U-<Ċ*P_|ޡ{C`Bҝ:|J/zD+KyTX KVWkOjiݺl}S РKgf q^[ R3/h⺰ 4P_unq6+|"| NysO¬}q5~Չ?_fP9E>=#|>D7IHlw S0Ig]ꍄ|* S9-/|t 0[kw[sIW>x|AQB9ΰk{&$XgL!sP'\:0qEh$qr52?‘Pzk3vuzqFC}\9hXDލ0:FeC/oާrfk-sf m0D=gč\s./_P6`Q7zvtov4dy37oW|xk\x1A&d5*Y ;oo~|4c>|VVeCtuVxfwo5 օM<N\W`8 618@d-Y y]B)&kbl@+` L')byd& fD(M.X_XD-ne9 IM۔m[axG"oݵHi2#=!֤Zu&Weo ]*zdYz#Tj|2{'&~үЄ*-kKU_T/5~XАJ5|ZԠ*U5:aVF9jg C!#bF{4FK3A_ YAƢ뒤CD426+?,Hx77:OJt( d&4496%/>׆ I6yDE7]VK'<>ԓx2LO9^OEz6ae 8x[X!!7Rnaݞ7$9ar@ 1\l ֖#I{ފOX7K1$MDεcdoksHkG, hni>#o=Ӆg,g^_Nxi`v+nPbvPaQ,9dpC(H!6aނ}AbDxNESqԔ?m~yc#HeHP#k*#dc"D+9-C%!ś\W |A" T5G(U>qQUg9(MSA[;lrj׿3oL?-VI{ ;v i^Gz~47X{i'iAFq*,|RնI+s2K*z*ivV6 Z׃Jh`^9}CH$2 =u1=-DBN@N`jiu10BGP]dz6Fg}Uwfx5`28 [+Ou\oS}@ը1 ?~|\vfA1Z4- K;&{*Rr+#kzA*nHcEZjd8+nu?ZcMr#]9isi)&cV[`EїWR)[S]έ{zd;[M?97L[1M>]/](߻,POaD Xdy9: db/Yh!+|0 *s W?g[kcbb>[Vzbr·F@2G=_C{ uB(Xang` w"T ?d)tpY` ['g6{%< U`= KY67{GldI7<-pa[4 P)F g+@ no4]W]P-E/ LUcee4/rE w^@VtUmr%~\ų3-I볁ٙ3;xaopM_W6Р]UCo/l ZLR 󭫾E$*LOaŁE-`&zƟi~|&s*|Y %O9RBd5C7Rx MeX1~'F V7 fT$PGEM-~YjT9 P@O=se$=cVjo^ZKb >_݁ɤ%v#͵]N ZғP36}Y x$I{  UݾBv-7uҬHS*RLK&Ğb§E<VZY18r.v{\ȹr&?y_MNaPE/\|vSw \XA)"u! 1]Z'Щf_|wJgʁ<ࡠ ü~,bv ߈q6)T)S<1H-|o05s )oD5ibm&Y" 02 pUUq,FꋓβV㳺LjNxX[k.R˰J by?%hA>/$|}F_[GLspp~5/I + o<5r(>)(Qj[r]woiNĉRRFрqv}~﹑&4l+@c8ɤD netB-܉.}n-\wП]E%$=Y!WǢ\F"Hq&4ԡVc5Q.Ľj6%% !$2Ζ(澸"E'_IstkkXߙ׭'mu&-*^ajck{(  Vc3օ.wxܓSz`.د!Zƕ-}x&kC VJS'XAPF\0Bdi+ {h+"3qf LG?ˎTy.bTtn\p۶`yL6_á?~ C Y٭CPPcub7!(v%gPuqH҈f#ǫm; &ӯ[{ O/rW.fejkY%rJ8 J9hD(g38Mo(; ' ^6$f##z6\!ۚGɳo'rzJmW-0AaCtk=5*Unnw*1d>v8q K"@zkL/%@p%YvrX$P/Mȇ"jfJD YWhy $^7&vm09\^'Ҹ6uE9ћ&F)&Y*AǬ`:teOdx: u8u]cr15Y ~mLLФCUjɓ(Պ  TSmAm*j}u^jv@&xK ʛW= ) ZǷּZyVڼ4!Sv`7TWR>ay|u XR0rEϯ7Svv|cTsVPވލD+ QNq$tihCƬj@TJXaׁ15y ho:Qs1<4rԯW(e)/h痼Mݬx7"Smhl*J>B56zZMQV `5–qeI\7XźLٖ&fw]F|8:la s5uݢP>lB^%B#Ň!6HȂW&zuE}=RmfYU4Iw.ќFE$NvR1+)-fgTy.}~uHMefu{aa1}1nݰ{Vi]G1yb<:N:in! ݚR9BrאC o0?ߤkpsck^ɝ'{c_ t 7|oFl;s\O^ 4N/B[|-e=OdhIX\{[C_e J{5[dXXbH #ڴ~1xEe-!LH;`?HgFVD(4qFO=ZU[06[ ,%tv=_RdMϪ%4b_fowڳ@ٽy|,dmb<8@sYR1c4p;=Tllu<¿ᇊcO3jX2d=Es0bgQf ]kXں3#yکOY;Hw+JPฟU8[ynRJw<:|xOR_xWoe(i=.hd{ّYՒ2p~cI&M fYΚscI ݴ)'$!x1ZW"~`< V-60wR0{X9~QԎ@^G'EQ`~Aۡ-7)LɺQ ^ /|QX1Eր5]e$9|jZqRU?@̯1&AHYp5!=KJT>tyX0T逧܎5d8c١(@(7h3n1Mbzp7ʱr,f p VJܤ5nJ $֓ 9 $βF|?qak-au>.WB@h{Le̐E[6+fbF|1,Guo\?r#(>:Y=FqShblׅ#NvAc"qUI5+L!j7&z4'8mF)Q bXA UHweK¹`_*T-!գ"„TR\,0ScW$pO]5  CX1 Yщ}Gp,ޫ@P-Pf J7 fR`6z4A):Ej,_@؃JQP:O.h֌Q\R37Y*/rBG# ĭof(äۦFmT A;oɬ@:rzͬxڪy1lI= D,3siu<ҟVi[VEf85ՙKM_G% #ѹ$ .ݾV=PXNs#ΆOB`_rο-ȀטZ_<DiDibp4'K kF] 5wrڴGΖQwcĽ4~eDM<:Ru]3/|'E0R c̉3X^+!8b)V,#"_Uٝ]I>&[q=f_:] 6Dy5v;`=[]0>Ywx _ L?2Żlx:˛.geUsqPKdUBc)+<`":phъtCddgϠ@ZG(d>&G!)GB:A`] LgDʈ%_\ LPAk߳t˖t)\YsJS"ǂE>n8^t37>t_6zKnf6(] q/ءam(@65ܦ>xhcF qȱW ߌchH'`4$ Z Z[ #bm(PcVEX5  PXOu-(^akSXgǟC}t|ĂЛ@2/BعyKqRpqEt?TǡU7٠~G u'965jVf6C=U=9 &gՂ1_̥A>\NU%0MsO:4LS0`iX'/U]x!R'*-8Q$BJv|Zh{${Qvᚾͫ zj _5bLS-3=D7l~PH=F8W\cv|h+ZA>b.KbIԵ.TZ@˃x!Y)gt>%ө&Uq{d 1 Q-Waa%O}V'0Ca$ҭSSaGSYTMjDuc?|e{F~73X5sߣm>M>|3wd@$`2cE 1ڧyrUQ9[i[d|ϑ. ,nEXgv 3P(Mbf2s y,QVC8C @#2r= :qR%%W,W\e]xV]HNwttp!qb 6},b-nH>GmN.gg`D〼on g.ϖJ(ji}{_9\/sۉd_+jIXUE=XWfb_5'{N\WFnYL}@L)ɲ}\ j=Mw jKtײg<% Wh7P2_|_^x>B{Bk^nC܈|Q)JO~e4i0:yl:7GB;1SqdlF8Ǫyyb&VHJP+jV+@**|~Lp !C? N1;$pO1.<2{6Rl)ud5 &0_Kp04"l (3 R>΄90m[5ܛrӍE>KgePK;S:_Xͺm_f1" %:$)U!XGPgpf2].  gKXt|KX| ܇dh<Ɯ!l+ˮwo*_ ?po{%-K*Db,F3B[<"fSJml5l%X8y?C0/&hՎ6Р \[x -8jbm=U~jMP"Kң.Y==]}LUu୏V%SĈ] y?zNS6fI2,<rC<! b}v&$ {{AlKy:K3BVx`3O6 vJkJwL_iDČD޻\,[ŻF,)=l2UfhQBq+7%6nxJpǎ -a8Jg7 ;Wcҟ*75ݰq+,ȑQlIl41TYy@/ܘ,UT[)7(&6ndKqmM -~=d)FCN9Ա״XJXm ;HHhQn:*Uh?x oIxp ]|87O@N 4-+KzvQ73ޠmw6/"C/'y;h=܆UMxBJڪnm^"uw"4[gSA 9кf ^R<>) '>=q*g9Rdbl .5exvAvkASn2޻nkЗDfƨai|Dw|A; (ٗP`~y# e-7&S'B'$9x)1.2x=)iW`gzê]kjgy@O;'3XcJtt~GDƃI2C="+Έ;! R;(I D jR U0';HGQ0/ ֽ@LCKxc>i-!;HR3sHt;KA"ț%iϩ8NSWo&:b FHS-I3EdZI=Bfr#٦ⴷ7 Mj{x)BF/ElH[')\rpؓ4j1Rax'd\7(bלܲW{=F C.,inl/ƢŤ¬քR%夾nYփhkq%/92Et9H9˶bT v)BXGp!:I:jҡf+[EgIKi"%U+17}ٔ9[͝b;IDP֫+ q.G1l ,تc;V }"2jTҹp]W.HI%ź#u>ĽS2W~l[)-]?x8Yx.TC1P#jj@-u?iUcbmEٙ+ۡʣA'ZfI%`ŀj"ElJJ 'e#/=7ru$P9xCsyy^t`ki~]v{$w}M;aȿ9+`HzOWz\5c1f69OV}tmon˫xioxOZǰ0v*'ƐcLqOWfXG$<;:=UV Nbu<[bi+bK&aᄈaHǻF[P,u2vn=!1݈FuDz+(:5ȸ0bhIeޣp{ϊc(`߳qoelZҠfO׾6fos{QcVY9C8' 9>Vфdwo^i?ų8 {T+d[BoI=>r#7ݭ`ﮈvkEk,!YEb`؄+{Iv [oȼWҨ-2*]4THKTzix%$v6S#_.cxUW-1dMݥηܛl<ɞwP~?exN nW aC֪bFAA%=#~ zWT /#֎36iV7KgMoZ#@g8C4_cw܊}?-RH,ESpG؃LyLLrx K$9kG!SZui])v "_fX%3(Hhŭ9nTx!dd3msm.Xa"LA%KVn%`v@zhfS6II1vYkϓ0<ꏟ>`e@˽[ҍ7 #ba~TEb2rMk@+_ 8@FmWfUpFP{]r'6^OP(6'tNn.̑9Z9>Y]~gSEXcE IjA{ xwĐwXn .B{܋,yV$tw$kaNx!y"te=8Kp- HHDh8$lYc#O_ӵ_ta je ZIb L#l,yqJSn[+lػE[Oi+THTGV҅H tXe%,FdD,&m!CTz9G4jIJp|y$1) G}ξ$hvkw;6CT9edI5X?bF\Ad' @fŹE66n@"|{m> Q)$r?e糾܇i筸zZa6)]$n Ϲe0nCO~ݟD.GjO(Gs>?0†'KKDњh )UGJI#37f,WBgq(!!ز{C,RBzI{zCk+ *8IiYE;6)EY2 v%w#izIJnDbK8$?<*E9FD~]*jLE[v*B*392Dz ;]7oGp9;%@2玈gOx\#uh-j$jt9r^&qP:XǎI XvtYFRV&AtmyTOfL<("sq Zֻ0)Klݩclqij% )l2Jg*">FXq% vB-EEϥ-d +&b83;}jsQx 3P0ϳ>Eqco2O''Cm=VLʸݍl)A+wu;a@ؐK7e؏ÉN+Z4m(Ƭ@W0ׇ#=@tԱ6xC5l&?׊.݉X(S؏6>ӄ`*!lùnIJK.؃fSaK܈,͒59J85^ҿs1҇]XQ_5j y݉sɎoӚ_2H}AϳAnxxS0e3SNu)'nuFG9՚mq{>eC(yegRK=a =jp5!bgx÷ iML MKo]&.%`|5rr!R"7ʄr07e900Z#uNςpߦ3+ Ί_(yB 246@<&˚Uֆk V!QFd1#){q XZV4 ښJ񊖞G+,LwgqFZPfo49^(pBI1R|01ca5֟9CΐI^A&*?$* Фܝ@&EåhåҜY8b`Wi(d_/ 7BKF +Hp Ve(Q4`YMU[ kKGE{|D=%n͘tC}fc(=#BEb1@ f"*17lbȱ1Wv):Oa>$.9[b2s#YXhy*~\\3\вJ%v2@V[-T0e+Q= fxOP~3)hVO3&H-F1|nNg˭<8Jfig?A>WDZQiim?zO+5χfN_p|`c 5T>zI2=)LD:Ҷ-U!?߄lÍ_|u vE8omQ ?:Zψ=\Q-3}EA\jrStd$$݂w lӿl,v5.#`$-WG: ,#&YZ8Aد$^rןѩ;R }oJ%Do"xz:/T;Ý]?*q\6*`cpCX?%\gw3qJdȗX=6Ĝھr9JOb=V^ 9!,BEӲ}m5~[T9 aXPVA2 FF|6-dJ A&h9) ]ʉ \tɽ՛P=hZBZ_rY[sl$|% 9i^Zev7lf Cłg{S"G/Ka]Q ;E3W/TՈ^OIs'  Xj [O^[h[Red=#k1fA@䑘@P0tBEAu"LsKxDNat^>".\a.p.vx>fDQ[("6+dB%nXo~_ܙe º\ΖU\5'weǑQ3"g@{!ǂ^feoNr7DEˆ.wDÁ%fkam>p._s:?NGɈ>e@Զ?HLJl'&IS)2ݜ{s%k,QZ/04 ?=Ӱ'7Ŝ5zGie@P,E[tGz՞BP<0 Xأ}QJ@ZZB\{ 莘86dJB!e +aFe.`I :AZMLFjթkl<5Pț>2>u SفwcO0 w͓H W&/>S4<|)GkQ!<؍&8Iݦv U1bIJqjP>X)mÁ- n{TF mũLv(JB4siX8f4 dr[ N?g&>Lcyg/\g{M lW[r=C1K_iMkwmp`X& Xֹb}9)qxDѴ]yf;&j9}5Vڃ?'ړb{_'nkۮY%ZL/{ѲqF~;Dm4 P6KiYqѐBתZKɰx&qP& ty$=MeX*|uˬFưல$EK̩Ozc_L\)K l'm`/[|yՑ'!_آkӜBSt竕 iE[BlIK5T`(!TS}m >%G8C+I/:i:xT@z,Tl*}2z0%;\=ޗ*댗bVNtW3ύ/76xU\T)yAB&Pt +Fݩ ssV2gr:)*ta3dZ0$D= zkq9~ּgĿ%"-hqo02.#eR榦ZVu6@P`e%Sg?)oּK%Xw>f#Ec.Z^٫F^oh}MQ=0A)[u+@`>(f҈.F<|˨c?ֺ(AhI8 !mu!O/s La+s{<%B+nk1`dL~`r$)UA^inLe+`}}vX݋gt#%@Um3j; ].,- yRi%Rwe(_)OK8Gޙځ.8iEge_!7Vg7/gGwra-5 2qN+w.k%JW  1Xh:h2\ ";mB&ExyڈInJ 7}:̗7{ԇi<\_'qV9aQu.塐g7>-ŠX&ű.IQ%o©E-8iܣۿ=TȨ[_܋{Jec~ ljtŃrBw1fui[߄_ lƼzbhZ)'论7u5!Z""j 22(ܻDLu=1mH$@]19C&'A n dݱ֠fluMӃ˱rik)lPlN}Kލ^ni`u7}sЇ]v+Bsܲ2i&8i)RAb>OZ(޴գUTpWq7YtP9m\NcHl䓌['psPMSoT#U )naͻr$x*Q*ee:"I`H})wyʧ &r G: c]jpgI<|!i`[iQB>p,#@/ -x`<jQDrNpH1Ҙ $*EX&:*>Negh>P^>b>T;"l4!y{q"iXWRWo.{u#k@ 'ǀ󟹖\]t!X&H8u&韔!u0&篴UH凌AيUOA?jEp嗟pdsVܤ6worLSNQڭcBtcHŵ :"s9..FsX\P$<(7{92試N&ѐЫS8`dw6><* ֬tPU?z_t@A3,>8?J*3kR|:JE/"uܺ;N_&E]>1EޥlXzR.Jg"ŃHxzC Qfd@voɈύMʍCJNu\<-sEL\ 2gqRofp$dP󨉂i p?k<$ۋ2̯po\b}Է}R 3:31s_ڇ1֌ ;uDQ,-[F7qb7rNa Xz3͒;HjW&oS?Zvi,D BE}{X8 F FeJA]؞џZ]:i)>wgVꆤҶ0KPwZ F{|HU"_`SF^1ƪE<J}tza.ˤ9}CQ4=aaiӆ/_k ,VJ^9T%[8{d uψhr~xЉr_>ZC5@ͯmi f2Pv:HS;NEr֫!%{.vKK `Pϯ$Ь!98 $ϋ-K<]KGb;.Fp휐{MuǕ,.zEFb^Nĝ;ђKY,߁ !yWv |Rֱ뛔gkX)xy>kR6Ftp;VC8/{.v7]/ +%?Hwg XXW?ÙHBS=vFC@$Z407B%uKHU^>TTEnK1}2pKЭ{?q~%No==5<^& |!1r16V%9Ǣϧ%GYsB_nJy;G0~}q+͏wX0*cׄ?cb9.9h(.yzݤDWNJ#TTFwU0IkJe1 ~ J_/RN+ dEYc-rTdAє?~,82qYLkZ`_U0IZ~ct]:ì1 b{)gS >"$F:h5/Kм S@8u؞-HKb]bt KsoY+Nu\_y|$o[=j?+GʹOF⦓x,Q:suꋴ`6ٱ@'@~`vC%hamP:G{@*?ZzRUkewp*(<{ 1PodIIǍ>qq1- ugº28WLB`(P9է[K] xx&v8:ܽ=[k~:rqc>]bA#ȠS)P('# &9]MOS"AjJn90ZvL?]Η'wiW#tz$wbRZxG(:\ԘԚ~;=^#.qNf{/'W=wL<)yE8gتHuI:wǓhffS6Pǡl{׳ߞ}0m͉؅d™ 2e6䉩-k𓃥фSj!^p&1_ocbۈn ܌>C G)bcuA-цa3tojlq0ɉx"<t`X~_(T'?@2A.BI:[A+Fjgh 0[kp&pTDP = lަ@!u0@N4@h$$"#%Z5#E) :?onB1S ~NY?i3uD !tA. >q’l5x7)@L%/?@` ;ع,! c& qi (۹r< Ijaja Wmh\61.T_OYvaJNC}PE1CQ?- Cq7+\K0/ܽpTfph^S={fxhZ ַT6VnlhsvCb:ve F蕈2<uux*C4B{d!(զ9iw7;&v`;X4 Q׾etqG,N\G|# 0.,zM2Sn&;dJYMƭ!&g#6]]͔h0@vg}OuC6n2G U'AhOx+LJ-8XJfޗ~m|! K?^(ΒTޟ<7B ߔ'oi"q;E7M%!dd%i+$+&2iV%6\CsFC*z)@ׂBrӉ%$['D㧹VD]I0;zZcL_Ěj NEū3˔3 cPM<-ۙxT;#G"Il4sQ\x)t^ArTb)21AB{|n;;ɺhHNSzK;v HAӶi7)ˊ4i +Y?rQ$$ϠRk-iX!KzFZUSyroF*. }y9e䟢fTLq  ЯqJl7*3]p(Kvy6#240}W]BKAU̞/Vԁ+"Ƽ{hfH#M 8bD-/RDKgXhdˏy JjIڝQS<Ћ4fg)[e%375',ޑ^Րqfsh`Q^iR:oLJz"'܃09S]ixCh(XT>vJҷ J]*jlcS/~u*iœO5Y/MHaUnvBT I5Sl!] *]N*VBl̑`aO)=_c  Da n8CVbA [ +egOA0Wk[[/BMkY˕pF 66YzHx8U^Rwsٜn᮳dH+QT2EoN8$#tȻY'*6j&,JxTwס,F‹?RVEYZjK;Jl߯tΑY>/8-^ IjtA&(/vi' ҭj4)UE jbYq==Mٱ1Mnf_g,NOܯ?u|mgRN45ظc)U &V7_K/ B^?I)up ]"b BP]M4?DQt:!P P#btJ6haJMJ; ҿXmd;/VCj`ʜ:(χ i,ZHE'ݳ yBnmJOVaX#sb9{ Ľ&Mu`5IT7E:GfG L;fdh0bIO8͒^t ?S'n 6'z~:cс| 1!d?Uuq!6h[RmG{! ݝ- V}~m6NK9ʮK%ۍ#r$ղei86t1u0(BR+& y G' ]mfRd xѸOHS'~/œ0^2xTKbcK*X8 K5I7FAwE[_P9 %Ѽt^,5n}Wd^%Pk-y^Z{}fnZeXXsLH-Hma\x@\>߿k> q|W:?G&]μk{{k;=]B:,>=}9[70zz?=<-igVgj ?T!AR4J(8|n|߂x~O-ߓDڏZ՜7oU]ٛU5%=TT](?c9|jUUq}CÞAYe(82Xk†Iyj텭΍Z@PuLa%c$ԬQ Ft;x6ː-%Vv׬S6cacb.vUcco9z7Ȇ[[6^Wv͌?_MٝGOڰЭ,佇svZw"%ٟb[? N i[-1um&h!݁Zi˗b=LFS2wv lbҎVI)Y7`Ď7P Fxz p|x$rͰAz823GY}y_G9=.╴Ɓ< S t&{6fW˲V㲱 >C=+ifkyT .++as=>Kwh!8N*5aRP(X7aeNB߹rVedPS0LIh1*4FRkӡ $؈0AXxPs.,8)PBaEyu,DG )ZsIrbK 06YhbH?p˔34F XqYyF $%uLDO@z#n~+QPg 7G'8%cݳIO^er Q& 7<\‘́Z;e֣C8 T E:%+3Ԩ[s iψцw;5q|ʜmL5UӺ_^a&V@m1s=U$_`$KCtLFl TS\=*95H!O6bC iMy, ]?'.f 4mpZ2$AkV$JB/&/ݜC:"E/MK4t т;RPynAqXϮU5;d)AW uktb@.ܣe))猖k[Fhtk霤 Tt_6Wquọ'},WF{wGՇa_?k0-y\l~HӛG[E }أZn2J0. LSG+~u0gj!O&ܚ9 ]RI;uX C|B瞛 ogU]l2[<_)(S3em3a895il>\Ivך{+eK.cyqtګ1g A͖*{C5~bݨ&dz7C̦(Hbff=1!l::%.yg")i_>&-9(vvw>h ޠWTy3Q:0b9ݓW\I fN>IN*J*ÓE6H)HYG 9RU&@LY~H.;րf8×u?<6Z/MW.)9.؃NH M竍o2KW8)k>pJ/R[9P t?;¿*#P/"HbSQԙ* IxT4pY}D_R;7|wFuO$%K ,J-ڑB+),^G6>KgxaT*^%a,:tl6MV+l >%xW%~)tE.J\X ˻o`T .wugU(s֛#䑙C#,VM\YL%d(tmEIaC8\z7@c sU&OrN[ާC4|k("2/Yl8Asf{jܞ?ܰq{ |sKU lO7y`j)V) )/%?. S!W*ӌJ۶JoTQH2$ToK26|q0񌐷}[rfY Q?|Oq3Vl*"ҏBdy+fGN5vnK$lG'0E#Y?Cd^^t$,vPjLey?ߨ \V\FUr@)_#_ B,Wb7,B Odd@~ OK`#i8#6Nl@t/K+k٘6rsxXEu5O*Wa,__#X矕B_S*@`e1lPdG;zrfVLOF3wV!T`Hkww?8}l5obm@@)JmsTbL~G.-^^!kH[O/П“ ߭jok4y}rw,e}P{o>_{ ?Ak߽y6G<XEנ&1oP: x?~oogD {6z2L{J޹'niy9܄!5Q6Nz =I)\pjLZg*FJ?AF{c~tܑEx@Vbf\j -VA\^ձ?AKf%@KǒMj/9>LUBz%76!VQ<Ϸ'ÇܥY;V囕n|G?@bX68f 'Tzt9Kt*ZXQ6!ЀK<Zx3ɴ0z8~p'C=+ֲ.|4 $]o1S~NR^EajV5ބFNdmܸPKa;dEʽkYPaL,'H›a1HOh|K $T*zYd44270kO^/vsF~Q>zu Mp2KxB%8e0ijzjPgS*&AyD18ID?Ba@!"sO|WE$sRtfC+(;]I&4<Ւl{(tOzB=T`K)Zm3Cϸ9"q2Q rhQt[o8ۃ-%sQ̥(ۧ \]>QU-|/b^TVQ^\P&Sؐ(kjHɇPi4SV1k*Wy\ؖQtb(9()hHHUܰ2ĵ-$nv-؊LM)7(5O \p&kjO7z2 6 D$՞֞Z ~᭸6?@@$,?YaZe(IRA"D D#1;<B lG u`x2NU4KRZ][ҞGi} (Lp[?/n NAKsj@[aƆ`4$G]eڰNձW]d8z}d_ dJ9f=ʟ3. M)dr%)G7y#n3VS?)uM4-k?*~yO}C%w0ÕcsMs5TA5<)8InoqŰgLUMz brփ`6^i'J,|)y6LFPXMy\W{ŀI/=4%)?AtwE}Bo>pP gZ=6vlBRmg[yv } Fiժ݈"߉vcͥE4C!(\_u 0r-$Wc}5Y{B@c9Գ$>Cdr| v3]fqJK$U9zfL'O?9[)9D 䋘#Rcg4fdO+-74IBz@ΉXcm] 9stB/H(d,`Zyd'g"v 7; `qDRΚ &^Zp `Lys0`t%߱JFщ)I 9IK!3{@]o q3z`19E3c/#rtYK !O<,W+3?)LZ:ULVu9$ѩg^Jv#eq>V,RU0}hXmׯNYR '!KEnNnzxw6q02uƏ7|7y D+45+5ftv^=˽cy}sޝ>f/DY{6O5}.**( y?1͟{Տ^i4g@cdipLy7&$ԍAĢeۊ"u;J/#vƒ$sЉ;@PjQ|#`${/0' *H i<*!RQP}g.;u4/wo> c$sa&!4MP \u,8BBHBw`T;RN ё,j ]A:b1吾:PJYOi JCtCE1+_}75!,÷mo@bjN?~dB}H'hhDꊊ t#\> hy%\܌Du{ib_^513 QH@O^ks]o)P˻YYb="/- :)GTi -nC(ڧcnwŜ!ۨmyf}FAM&1[/n4ńa/)ZtU\bWPa(m+AZy>S-R@BЬ ^t;N="a A}1e>-y`}\ǘ6D45 k\*2K'ś`I]=5d4q_geDrO(S\555W<>l׎ciR8d)8ĽYNaH# Dhp5] PdA',ѸSDN(Cvjp(S^YG&RZfs0@pa?rI\3Fijp|"3dhl>@d怴=o֋i5j}5wWu'X¡SzYnAttFfX2yrJ esvLĠ"X hQQ2c%%guHͼ)Ç㨮܍|똖ˆKdFcvՑC[ؕnm`b @ nBQbAGBqe&R^b_pE.xlI}.vg'ٴ4o1v%931%2!7; [D 1u(=7?' Y ya!ѻVVV:,+)6,rXh)Bnd:D X=?RS`d+8ilIEd?xp6I8^$96q9z-@3(.^0ԸZxT; fqflh7.1.bZ%ʩT9N>Em >yVa-Jν>sE9tl\ ?f[IjQ|nOH^ m6(ա׃'!;;Yynd%*K0"D!%T#_(L)*(!\]*y[y`%+`?yC,ǑU/Ҍ%m=%r \*}ibwOfP&* {a ^c:ho|7|^\a`#Z?SPxҿHoʣ@PmkT^ہe<$Lqkp! .%&☂{m巤=L[{V?Aҍ4.٪x6R1XxaZmf`b '%:??=5"5Maߌ#ڿ-o꾷u% lgؕ6kh'V6O ^GC$Qn`2Î{?jф՜@:#ew @Y3vQdۚA C÷@s{(c.n)=RPЖ>rļE a՜nݮf _F@!HDTYdPLa,AҨEGvd!|i:=̹~ol=tW DKLY QAi&,RCu=,Ps&B:w,=`> ,U^7`ȣxɵ[a|*5tXV̘[Kǜ.^PJ-|wB=T0 ǫh0[bjeeZڹar˸CnX&.׹i\z|^}UGN̢H|FWO{K?5 B<6 tԐ 7簎) @_&Ok\V^dw[y]'3Z'AvQY!ao8[dO>_L_cQ4;Auo׮m6}D\Jr3% R9x͛FK^+^~v [=jֲot&d(>RvmhCser!Kߍm̒Smjbk-!\YX@I_>Ǹ(P,$6gBnԠܜ:p:/Ь- h-,i^č/cMkJbsc&]-'r%+tUۤ٪q "e!!ee59ʬq|'L_:୚馷lIMZFV|⁃x-ZrEg)7?pי~HOW&x(RԇoNpA7ҠR)7;Wy<6!{n402ޫ^!4`#1ȳf\&KUKQQ9prʻrrk%; nwԃ@y(Chv:|UG6qu] vL enXַkM"phA9ysp}` <0TSKQ j#|e:N"3w& 9FBTMQe:Wګйl*&aTp)!+xռX r?%yÞpf*3-2%@,jAn\2!pDRUUޣY{G^3iG:‚$TF) 2^QX <.bx@$]=]Q5UohɎAVx[\:RntD2}+FCxϟ/,eF<5<"V雬05`ud}$1HW_I| p՗4AȘ:^nsᘛSѓxYn͟Zul/8ЩyV煤UYK#t' l d}ex/0󥿸{u)=kVrEV3::uJ5J*&=Œ#sS91H%+zrȤͭ^i[̄6W!9):}YG/֒k*8uWG=zam p煖Rpݺ;?X_2cȇ&"U3\ejP( Sf2 rtkvl9uCH)xƢb&2W K?*q?{j}2-5,uqR,a۪TFVo)Kb>IER:AYEhR/Ue`υئԩ=0GbIVWBqH\q1Fqog6/Sv!xV+(/cwwp?w/{dȎb38P ^?ާ+ pxa7/If %|?'[~GB5LR wh6gq8w"߉DT*W2 N .349Ofmm/juTEtߡo k̋vgDaR?lCiBuL*DF}¾. lUk CLTIu xF]-ě.)Y~LNsP:T֕k ?0m1ξ%(b̛ętiFri2Ecn*jW',U a|7 iOC,r8H*tK ng) ș8<0E B>X% TTD5ʟ"l']K:j .MH߹T|f_Vy1=x Hb11ɢS,I0oq^f8o{R^(FAmmG ]Ys!(38;3 ZaQ4! x~Z[\ͩ']d̈JlD =qn  6JrZ욕 :K"5γ $ա5ɖh_r2 5')6E^*-/ ¶9-kیLIpS W(Oeݼ4yJiR ESp&Te><+r>Vhe!2 Gگ%= @ewMGDݨVU V\uJ0I#E1qYb׋= Q ӑ|%{EyN)"a~h6`2H.( نW^w)Fh-.4׹7kX(d.Khd&j;)ԢHjԴﻎT+n-~]ңUST`9jFpbrDWH xU搑wVɉp* MOV&%^\& IœG3A6A%묂];L7yֵC1 (%CSĚߧS"qQ}AED`Hړ PuM5$iANQwnAN 1ymS=(܎|(ZHfm\["uY;ج8(j~P;e0Q=6{z24 >JOS:݉8|';x{OܩH0_z{# $Фذ nnxPN,i1uBסd=*y|mZfTlNsi{ GB\7*{{5f/إw_D0kp.8U|FYM\`<^ 7!;_L~,Zlh$A0l1wLQ(ުZR켞kB w2*s5gE -s[F!Xr@qy)rIgl{nf<5C-)Z֛hZW7 @ڠ9LjY jfGr5SPiLrE_ִ^I)}~Zqȼ.p !+ϝ3_p=՗R0R7ˍk[&K_rݼ=ֲ Bu:!5; ITs XpmO8r*gYj/ h 끻:JC/XnW*/GZ XNgA@LPYYX$F] 8-yʯ&NȼtԾ]:яCS]a1WM*N)2 D!7"ʢ! ն|DWCC2GXwԸ>pƻžF v  v X&^4GroFJv|O)zL+Ր挱k@ g21PP̨Vakw);qLjX~1AY.ٟycg`q(tv5VZ~l{eVou F X|1m^@D"[ MBY٨{U\>3̀bފi0o%gVǮT,< !XLLSEhtm6WՉ'`X%g&h7W;8oㅠbvl2Y$6Ɓ#I&?CcW+& Paw@aj؟WV9hZ jidɹ0g,Cx7l%D)Vu> Gkqfyn5QߟXޟ>mr[~{rPa+X&G2j qYgj#H¿JV,)$ .m@jG7Z_>>}owQ?wɺvpbպݚ=B_|=&q]b{#=kOM?\tu_]oa7|^?>D*_~6^e_l]}{ع } zo΄w~91z86xq4_>'K-= F@ebvgF*ֿ4`iѷ$C嘽p|ahp8*.*^ jmtJVʟ{X2$ȉoiNDB )ix ns90`ᐔF4-P 2WNy잕yC,O@ -([hW?Vv>Q˖vqW5=.me֚t)n+ I9lџ)5^5-4B{x WG#2p.5J;Uu1&R^xSqW^C+@8&x.TkQ>biK\]ؿ.$#IpxND3|qXPqJCYF9C9l}zz^eӝ,{~Ã詊,Yޜl+U\QW҃2ch5=-ƴ!ْp J+4k oA( 9VeRZQYEsğr,T\'Yk QQGN1Ne<Ki,lFNWv#{W# b؂Eț<9!h'?4'%'87SٵcD8FR<,DS qn`ľZqe&ԊX3E T1JԽ"@j 1]+O31CU :S3dcvrpI3gM~ 9OEc<"<-JӚ8.P9. n<$ cX^0RʨBUe_gC o{pI4Wd0HEJx'H@X@6gaLL QaNC@9WaTȒżhɃ2pyͲ2JG5 G?&M1"HzD4x &S p&.kGePa X hE 5 n'[JUg:۞) ]*(*hx ާZJG(;Uг^v\F1 W@+,KVʵk@ilSuIQm i)kƄѩ=b|.U,.Fgk=Lgl@΃:wSwƢF*y}%\P!NXCEd.6Ը* GfXWGr5ھT"`Ǹo"}mKz76.JrM/abbl&zAohmԂ#s-L! Һ~I̯5Qٙ*詛0D{1wJ.t fɜwˋw+ÆofAo/N' K0ts_~:rH\K$(D|@)sG'/ڨ)БhS_adncF-L@nA#lh"k y(-굎͍Q1{w"#Gf2C@uX½̱ikǥKBDPs4`Tf)ca؆x4s ֡!uZ^hDHd  Q-cޜ wSݧ!P=jŐ2嘟Jw XAQ8F!А-D|ux‡LP#JxqdluF b`{qu9#Zj3n)J#LrR?ot7*ݿEe< =GQF# ,p$ujT~cMTxK܅XmU;[EDEc/ #l "ZKU4¢]l+3hG ]ǟn!ܷ/lϪ+>VIb$9N< NBUBދxB\jE HGGdJ-w'n`p<SAg $+OyoA-(0Oj i_KC{]۴%?ȪA_;Kuby 2"ZXCo| "sQU/v?싛Ns44u?V-m"gYwHjWjXP?y{4@s8'{.=I9 S".{iJ<&?EZˇMze3i/HDj%6;1s/fև^g4@[ ߩPZ2GH(UKv!-0@!&p_v)4j/6+7)7۟ P6ʇ/y3syPj;;o7/lj>|[-7۟8Na7jpOvunx?=5ff[1;}Z?'Aym]zxv&ucK9.1+7aQC]Ŋ%BtvzuBӭoYc!ct,rx 7ԓz7╧v?kA3#.@FB$gYr6a -*RdY:s:IjS{cIK /~i8_^*G3BLu[l(_X7? XfTvWZ"r{.aZzJَߓ?aCbY#R+Z颽ݥdm9B:u:PW{ :LkZʹgݲ#ϬE"Wή&锯N|ZGp [uddvSqXHFXi&># @bjE]@ofL"-?wh $ #$< IG/ԀV ? a8#/GZk|vfV!;ɐ[aOK Ƒ)҉F2ήQ\Gth.@v0$ӷO'%l|E/p'Pdp\ \7/oˇ -6W16_7QV8sƮB\gF݌/FjAl?+T&y[ĹRa AzYwXV1ßyk uܫ',Qwk#(a>mrėV߻ʙ#*O,q7J̘?&`ң7hHMs.g!<_R4/aO\ on- M*SY5e2'~) {8e"JKw$1Gp8Pf+@)5~8k&lHfjJ9XWح!1jSndIBtglD'3p<z[MJHHk(lZ[)5D n'B~0TOHc~fF^m2 jNJFԡV/5v>-AڞU1#\dU}>-&AZ,7 f:xg4c;il.*W2ɩ'&N,r)op$$kk:'6}mʵk6N.O<V=XLJ Uʦ@dWŨDŽc: XhL1`-1~F=r__r}ضuVvS>rMmpz/,#Ψ jQ^\s59S.)qv$jq©80ۏsK̔rOp؛\a}s^0KRxzKJ9|i2e勃Q.mt4N'ARQH^I0Hz+odddf'iz%e3ifR?]ı3qxbI4G[T)$w(蘓GPu7fO#Uh40jW:9VQ8E+sJ}iR1+ >) J gplxj{smm]>v䢡O֯|wzbEͧA{׿xo [)L7y4O뾝Қ"&_jiLE^]:A=}};wls: X8Do|/GݼZ榍[ff%\˸m)6+Jߏ.yW =!-KRl^}p*RpO ٜԉ h`(doйz\c `. }24PFU[FnK b-O+agTP~N1ׯXe"=D I֗B~\s$)gi*9>qp!Mց/=Y䓣$-& +!$Se17U2`1CA ?FL:I߾y2`.%})YQm߲$k"?HQiœe1oVBUU$:T^:l-핤)fpC-mTc{ &!P׏(݀w!׌w9ei@jPB2HK1ÃY+yWT(%|pd;!#)A(K6Yrz,Hk#=fx/xtIG}:՞ $<XFU@ hޟ_q:Pv@b{Qe6.N>D\]b-g6}\xBH"8(&!rJ勁k37K)Ow- *\4 {@4žK)4 qtDR0%}.! E6q,bdE9f>౫ȿ%q@RD$u|T^rr' [^DTL!_3y-B"^Y|=;o_qD0B|~QG~bF)4ѩpE+ &טdBx Ň |yUbuFv>'s (ԑzAO֫}@9yS,y(hmwtz̶M9eutB>_#=<mvRzH^͚Frʫ tnEEd+~iˍ!gqs[T (Yx;pKys-֫G_ ,k.n׼7+ ij ј\35tԻu}^~˯yԬpʭ~>e(C-ac +Yڪ1 ų'vEtFZ$B( R #[aqnT>jfWks_:Sc>VI˺)DpQ w͌F'F"WTVSA+)2'14fd>mǡTa.:j\2FCB\gmU,t0Ɋx wW8Efjy[# b!5QGgYMggxu%ࡐJɕeI&W2L^mkƟfK?뽹p? yNB.fzW*ZO"cDN/ff?ŷDg"u6Xk?\h<nWR9/)(jw*'$d|ޟwx2bol4ɪ:;N[ M7Z=Tr72ҳ{& ځ#B͙ǃOq8@L^/ >.@I}:gAKqIylˉwzH4׳}qv{Ul9gI9Ӷ@&֕NǷgNV˝Ε'l2J{Ǘٵ'!^e%wwܰt{r0s[6OhEv%@큜 >G4_2.MLDM6%{s')7::ONiu8G<ۻΣëh^773m1pԩօd|GxU YdCCT׬lƘhmQnNr,T^3ނwm Oytd7s;GU"D}c4ٔ%5V?Nʡ"l!mE{Zo Xi,KD8*%1GrY2vM1wxM.Aه 8W[WKbYaa'l,C{OOјgWρQaaJgmDtBWZOşv!P} (0eLFW[AN <9-g v+)t?zX|q'cb (aB_d5k)E2012Pn(~Ɔ4!~a/M`(QԶ%1mS'IPkP!t 7t ,E7j6 [v9Ά% ]G,g7/#R$9#Ӄ Pj5irx4.?X =#+=q΁~5WM@+I#Z8a6Ca< *aV(`ּsbóS5* _ J8z[I%߯`ăN6d x|dlB´p< $-fgjhLЊOe'cO6Oh>?;v Ӳ6"0&$&ٕYnq0jr (!ჺyylPz7A"1d4Teeb3>atxZj^m>#@."j;Pܠ 2Q2KG0̾wX? ,@wq| V]`WCCOlѲVl`,5;\ 1AeO'/S[[]HU]é :—jmbYr@:/^bmvJai s&>;)'u ӆ2xLu/*mx}wFk$ߧ.\fsw(NmH!7{3Ms@|/J =8]IQӸ#CMJ` eӎAt#)t!pnIם{^%7EVP耢xWApxQ֫m&m_3x5"i{IC߷Ґ^R5$}9HKL,[kwbNe̛*"y' x8ѿSoby巭P# ڽi>uѹ[X_tYxt w)닍L98w>:J"O~i&L?wnϓ?PoBX K/ę0[1{@e~xHmr7lkDΤl$oNהsT-~=z&`Kѿʹ"mBd=G G&8,fszMi2dY %W~JidÌx+LiIdkm6*OЍ4Q.]ObezVkT:WS̓B{=⏞B] | ef(WDabF:HJl8#{1M zeRt5J 0$ܞ׼0VNgLM6)/28Ȃw`?[ף㱵&"l P[D!Y/[O+ (>ݞYmd;ɫM{鯽E|;qu72w 75Nܧի(GA'! _&$"< Bt˨xs[t]2`ò6Z~ʩ}Ȼ{t@VJOk]rOzwvvl̺4|h嫍"Vf/mXUD' lHP s~x ;{5jwrqyDY\0^Zab\,x$ jDEVPtL*f1G46;u ՠ"?L KK%dUj"g LuL3=c3K4HL<}4(9@ Ns]16lT@JXUrBЪƠ:7)oCEEK.NBLqr+aaZB3wǰUl$ĄtJ~ & gЦ{$٫!18}Q֩{(y L"{VoKbC<& GVfPc+ =񨴪dI,!i6s`lؼlL6hDGEMGi&;d)z2xI`JgXL>llXԉ?V P=u-lw]qڝ_/3hrTġ=]X77OVZ$O[J@`]iipFOEIp(Onf$ T3I :D!ݬI׽\e;v>Bmݨy!P?0V8!%:2a<./oofo&w៾]r79ߙnMwgo^ZssUEQEũ#U~NFI4{'S8؂&cw"d)ɋ7@~4heM3v;Rۧhz{RZ( l NHjZ߮?KkSyؚZ >$Nx{a~̹Lֲ",NʾIGG)l cmWizE=[rEcyɫ*pjzԶS䟺ݡgZ`sTO^I-6Gddn>(nQc91zEF`~C<4nH ?{Ժ~tu9|H)iQ4m%ꓡ\rR\/$~y Rٶ{*Φ?n5@l*:-]α'!ŰT)jC2V-ʦ3ZQnqj8jeVf׫:!|b (\to-XcL=:%%%@kzWagHҶXlo7n/& w QZwoO'lSP-_CkY%7\;d | uձ3UQ-bYf~G8w,cvl8ZkZpSbKۦw)єoux #Y&c~& EɇJ6~c $XڜǬU/rPt~'{oVM}_KOFӤJ8G=#thA*%u:j{v (}"T٣<-9Ww)B(Aj5i6Es`ŹV,둙N%LXt t]Sߺ-%WڪO3JIL%ՋbN7|ڠv'/߻#qo-IX ` f[V&6 C/*{0O`t=S ܗ'$ %UegfcoTXw>uاgkk]K6,݁SIaN,ɖvNlnmO׻snoge⮜SGԊ6O7sP-:׶Yi]W-y^Bvo;7e:}j\m>v(xX2([oz?o4Ž%φ-ܤ_ۯ}$\ GL;)߷?u1;8ݸXB=;|I:5=HhLX7Pom|ӺcurTl}])M tpzz-eR[HU fPUxD<`l)gd]MAIFe/(\& ^u+Be BdBhS~$;\EH%³3 8c7"h:rE?73=~BAggU(WCdxPA QC'kk4DʲU?;>&`b Т? 7*믮bI]󫬆G)Ww:aJYI(*yhފZÇ_7.7# \Γ+RI9# VlQ[a>K#\%qAOpM:=/hujJ}(z-E-0wU=<n}VOHb!ncL־SNgrY,wΆƙHh3M-IɈEOV?[''\Z `]ٹj3sc{.& ѳNSӋdW~逭E(_䳂Mi%r%g"%}5SG7?w2Nwh~Iά4i%'KXpXuk(#4sh1u(/16@v%y#|w1g2)l~|bCS(J0["5)@.a]H$F,2Ax0ʡݙ9$|71l6wP ,y*zVV2/MLl?lRE _!ar]|sO_&Hw#&;UC.6Ypl3e$];baI|= s?b#fH=3}Ml<8lXq"YS~@5g+ެ]]|{Tf| ֥m @ۢ>]|/)o:4kGx}D;O_/{h 6ju{m e_8 C"+2k]$w7?wd'S%B0.{*,wZ `h?i_>ϓS.V7\%tv(Mbg7- xY 9PIknoyArѭ|~qp kQgBshBe G>+l/Bwc}=O.< _G?L*ݪh o@~>G'4ܴdo)Ϭyfs"J g8P|q,xV*8#3?7޷BPQ s8؝8ŠN!>=%2_ԚFEh#ܕt cdCȎ .dڻ~}yɯ6k—%X!j$kmבwفV-=ydfh2of(L }<4wCGy k؅H uj{ϭx^k2CbsU :5ZQgK'k29쁥[j0e1oлh6}r i[E6B8e+D2ҝ5f̢*xSBӧX0Cs29N0$÷c'K5+U Lo s1c.WD[:D*DL*E?X*7#-Z.F\P6@?u| ͸5K(踡44tX dZF- 2 @x8Yjh5gP)5xTY_ Űϥrs^nIW<eP]"M$eʸ 4]OjmDR]TxOIM r _^(,U$|I_@mVTڱQ_L0 .΁]3vV涰yJRu2bkϳ*uxGAp)h+ ᯶$D7" P.Ȍ,dQ +K5R.:A!i_:N) :zLW"d-V1\׻Y,-GfC-$Y)CUz 9>uVE?S8'=Q= }ZrCJY_EIԙZXl\x>U?@ٹ ! {D@p^xTnX1tGy{>)L3yzG)C(^A*U?`WCJ1Ihy\Ųl>7%;T;b7ObQhEQ+Ht26ms41aQQX%0dlKd{͍\]G eEu,`xGJYJRR\ۦPnR4YG9ri5^n@A{u9藤59džCsBhqˈgϤh噀4UBƜE爅V] At# b.اOGAUOq<6`Du&@y(tZ;m;\OS3žϏr kɻsQ@^$%0yXw:+绷o]wٞn&ݏ ߹LS6Q W۲muoKeÏ]ۨ3M3x*-h U[6b>fE',+~/(bX8r*lKCġD0F2ރhӬ;X?hR<KƃgN]I=t r̔qDROJ[O%e8eAg5ZKq[k\ͥ^&0xR>{A7E?M|=*nc%~%uzXO ?Ļч$wGWʻse\>q n6kNRԳЗQ,ь=^jCQ Hcy(UwQ1O)PzM`]K̨5T=wPWLG塞6Da-?_2OCցk9 -E'3f=JͣARCvHo98'ђN^_@3$lD]ӓΤA>OZc0bH}a!Ѩ%b39E/BZ=7`MݝN70*b'knLiҌ 4 ́]ܐXf?Ide tesyLjZLK D: "C#hl#Oc=.,xEx4MX4C#nr iLy In~p&z5>O9MPpҜq 7sV˧9g-SJZ ؇(ZU"P9*!ޛm+jS*Ufൿr9H~]_N;Qpx`wzarf[#DaGJ.ɈC x>fTX X՞odh!I *O6Kį|P0V\54c<4U Y:+˶Хº>TW&0-y 5ἥD7N"$Z\J)GO\}2kLZXWV=hT#} ~Ƅi@LuX6t/VۤU)"5͍GJ-,9V |ԆYј<쀿"eX ` X“zlLtqRjfjxEH7ծu~CRnϑ9)t2!Iѹ\P-Q 9ޘ 7 vo M14xʗ #TUtj$ZK Z U )CW92*P* 2D(UG+eq?viQ#49ǥCʟ[]5t\`s ̒!ʟLL$et\DԶWCtlJ=Gi5%_a u`X6px٪rx"0aFeo]cō~ZYK{'|tz?STK.KT=h;%r`[O|y2Y; Ot\ٲ Ca@geVV_u#~y4yI's=tu{?/qpu?>f:4J?{HR_IW&B+SURBA|a'p.X}$w1|w{7 _Vx ?5l/7?;7J*_] z:)SYljד\j-?|oD׈XX&TpiĀپG?vkl_oCa `ĈK89+uxnpqw;ղ7xxoSurGwru\lK;_KC|Ƿ+xi#of1gf OP빺w+G#Cn}@PtB}ŠD9}Ibh̖ƹ,kB>_,nwk*݃ë^;Dǯ@Ʉ`p;ʼn(Q5Ffd0wCb\mֶfjF~#&$O kDV8O?nr& i& áeHEsjP"ș>%~ټ3f[@شټu "(f9R9+_kTɹ6jR3K^HL֧Rgvk|&l5 "mH6nPWyQ~ΨYYy\I\Z3FSюq  / թ8vM, ^SY}b\LM*ywG3&뙝fcWwvҨ:f8ɳ:59c G"5&+ݤg41-}9p.2BY)ySP 6F҆K+@)P{`#ab~%ek!G)MT8X2FskYKZk#LJsAD f2="5E/$427 B+\\Ai8LF4,LӢ-0T(5)އ~xTlyP3Evg$lD'p򕃩jEyív Q2yRr8֣ᗨөqb׫[T[kLވ>` g(G$ů^DׁԞ:yTݡ>.a&2gCԮYbΫP{eF] +bW0? Z`$e6;zO<cCPٲHR Ƃ7ĨX S}"dgŁ0_/%–'Gs#NiIEI/@fާ(?ƛU6P8"FBDNRcs1Zdٰ6 58Yetp@B,)ڪ$p7_[JOmej܈4 ^`h1VS8o_ƝX&@TEi%C^41Xm GiMA"e,0RH؎ Rl>ܔ:hڝ(+^Q:Wy{6ǘ&351&uعI*rdN?%LD=K’|tnu M#z0NMש x1/[ѱF[|E'&M\31E$ӑ 8 vP&?NlVs ۦn-\{b\Q? InjDTWm_B`eue]~O[ yq4#;!TςS>vQV#]lW=e7~Tڠh0uaI*Kµ [Az46z)J,L]iu|04gdF徕r|R W"^no0!Jrwg gmb@ܾ|&ֆƔ>U۩F[)*JjB r{%6pʭfc0;fm]ψ8N'5v>Jg1B[)?8".v.*H ‰Q- *Ͽy4]7h(y|xQMAtR-EWy;Ʃ׼ò5$qDvnLw~3gz'ѱ>T|H{2v&nn-Q5ga:L\/ťǎW0\fP\/+*̧-Ϻ5 xT bIuͨ]qH7^qpGڞ;ڠI}!c`z_k>`UֵHBԟO[vSYT盤Yn+Ӷq^c|~d{Α(LM]AG,Lp>`c0kc5:T$q2P[R0Uс؀Z1+u]G/?\ o^B0{\@hP("t+6W_nM6H`S7#R{2F3?}">CH)7&4kvLwbl"P4G AAP)LK+4?qn4 /X dX5Nn/U,p"zY1HΒn\I@^?KDn'q@]KC$~"nY7xQ8qÊG A^b d !-~',o^zPЩ/l;JG귋;2XWD*,>cw]~fIU>̲?P$Rr\A {ia#cL8&8@'Y+)URv.knjx0xΖ=ͳ21ɑ00aT{!jj1yp]l!%gȑtFoOD:#[dzɝc%#< Sm_0~Ӿ^QD@ Y/9Q;*Bdlt5 *#]K\0/=VCSV]if. TGȞqOu)Gľ8i,@-T̅c|7gQbQI82KetTsguzvV$(K}.<nT~!L#Y~rs;y'CU b>y;]z1,JD ?驺Ler,֏r 4~csj /Ӫ,!ǽñ;+^8asXsʇ]`#X. 1%+8 pY ߟ2~HQbk'Ã;å!=wLoK(;՞WCq-UfvO@pWGxśk#/ s|9N!7n/u)C[(q>Q'L& X̞EƳq~0>bt7&̂:G"ST)T%1%/ sNRbfYocNRFC S OIQ,c8^<=$Ue:i].mt:'V@ek}~];4ywnhJ8z-ةotda|pIq[fb\^=qe-TXC;M"p)A$'eR.p_ß#ldM'b }:@gNk\} lͫUg'wfiǛݢo(c8|npKw]%0CƠ0k;7^u^ |h%t +ީK7Ud3wahW^7`snb)v+M ETijdAFa9sDbY}U&v]aAPU&oHA91"KId@j.[QsB[[;D*0`Pa}B'f8O ug9pgrQ좚SmG~W',)Fq, >/j('QΚ;(體H,2I(O3x]~>*d,֩w+ }+xiP&KOW|QṄݲU9$Rn/sKk_3x$$aa"G :{_oH-[B|3MLl-w3՘ef?{^uVjEJQNJW5H jKn.ES:_"hΐ1'Z21axGb3~dbGxZӠA'ٚIZ{oZ2Sӆ'(QT͕f+>4!f8蹈&']4|y>0]+@ dpqK,f҆"cZ'ŌGgE_߾.^xO Lj6RXk4 Z.></0={|JV?W9uSvy ?FH?TpK2Iq۳_*̨K~ֶ|YVz~XpSNG3'w89;-75/q>lŐQ% z#Rה%)~}Sď 0`,( `(G&A ^Hm)SR&Hlf(6k FUV)/ >W~.:Me*f/{JNsLGi,/.a nt"Yp˯-*a!#j-UA3Ư-JiAM– Xi-Gt G.͹O3;00aޭdc_ZMt/zQ\xщ;r{fz{Ζ-Y<\Pn<%˗oEOoY[Ӵȷ#MfWHkNtTMd86i+\1`-㾗ee N/e:8?}ӄo&!whP^jG>HU L5OI:in=n[#p zuJ.O~1lL){.ݧ^ޠSEyTw';V௶Iުm-ay\Qt}~BW}w[?5D4ڿ5/`ʙb eo7uKJӡ]bWt cLL*eIXɓ@'YILHĈ^WG݆L{JB܎ύ\h#PWrLe0T~teY}CZ7_N^\Bsg5-)w.u簽g2ə^ե>e{HOJy}X_I7,*b-8\oH}Ɲ / J_C+8/K\9^XQ2͜6tکz2'_bcj9PaM-5i߅_\wQuX3;RymVH;Sa⇛*  ̐7<Ϙ$}Co!鏷=/9P20jbLpEul*;;ޕm}z9˖ H4RkzĴUb'ѫg7͋3oz4R`d*OB$ӧ>>5'#ٮV\%JB1%B58ZjX~iSMR5@so7 /ڝQF% ULi4 KbVQ|ߚ%/jn}R@Ϧy ӸNgwĄS~6C2V4_frJYdʻE)fv"$r{` eC7Ut^k}PN oozǺ@[ŠHJI7*]rih {lL}isډ75X1Zx Hְ4q=taإeqY «,RƗJhVxĩ3?)hl9g2޿]~Mja B^ #3g,K-9Of^ }EKlkAe|JJ4%/E&LKk}0*;\QM>=C*8EY7I5u[ 5ucM*ɣB&Mi/D:2\=R_ņS_'N@?QsaRb,/:}ci"TIf$F=I,=mLyp}$_[YIGM 'a=4j |?cA4!þ!wJAl'+T|A-LDyR G㑅!j1]cQ'jn*N8k/Fl3Ol4kVp p/ۘ(zXiwXJ)VDP!꟣r%9 (?'x}s!ZhgY4F]q1GcҸ )JWTOjDZfɺWTX N&E0yRS5js}tZyl9v*5HLE]r@7M䱴ht0?XA% ;Oȯmb6"!V7r]* UK<äzDMy/+575cƭJ1?\x]2?$Lgd'0Ts,Z ;@ӌJe nwԓen4D*KJTp \WQ|^v5${z%D3ѡ&٣@FCl*]XT^O Fr9 U]t^cWxośM:'*6fNc %2XԮPb㵺eЂ0=MH~+4!K}<npMVAхn2RdMB%J0_HrV=45Zn~VK P R ыZgӡߔU?>`&ZY \|F6:C홻-ۢ 9vcrN|SlѸGc9եNz}"F[ @xrlzBB d:\r -,!-鮯T8V ?fH}R_lE~('{)Ba=s(*4.[Y"vz Rb H=D d8 (_)-9}e*.穼H~EaSw\,T.ȏ"[cu_cơ)lᴐʋ[3!OE_ҥlѪq";S|TOntӳ}8U“pa~}YBL5ܶҟ4El[GGvCq(.$O3&oPxنE+ћ ӻ_{ޖS1NJ -?Es8(\I4EY|סwcM1?H!yQAr6fiu*V=A#0O9"fϪwS?:nkxZZ&zUoi_w2_Ӑv9^wĄom1sڷYȫ7>"~| i$Yul잧ga8|Ճ9 MbF&lx=յ[d eͲ]CݧQs罕ז(+ lbz3aЎ?Űv4x5KOҊ﷐  6ݓT5M-DRaug,i k;ҡT$ۓxڇz P{$(Av:+$Ed^B:PիmOՙ,*%vf2Gtm뚣;Kbs {+o6|`t2(zj 0<~q󑥪>.LmgtdRxVy~p*צ{zQ4ÂޒO~ղ#-g?T=:!N4"^zpv EWR;n˵KITRaCZNƄp)Y^a)m\@<ʼԘ/_#%IېMW'F 8vjDt0Z^fE3h;Wox^U3_+y0B֞+̀ף._r˴ۃ̄,%[ 9rbG2X8bʤ2LOg_tv.fJ['-H?R;ٵyG /<}V~ŵ|i%=O+z0ֳwƟh;4%e6gP5rgҰzEOnKN8D-p>RPD{$ ^?2)1_rm:U6$Oa^{;Y BcۆƇ P+>\cL,RŹR\•};~LԞgpo8 `cJ4#a*#/%1(s̵%7,.d3<>"drW񷹩bvjъ77?JOleb.xC?VrL#i{:x i1z\{&sQt8SV:e3:e% vb1ul=E!q^,8XgKsŋdLdOJh e4 {٣`ƅ#qsc).A_EUM&]q.s0Md';>žZD3k%3^Mbr%?xɗ$ײ7_YuV_ZgUt@ˍGbdy( ەO*O 0=xho}Ԩo_#y۬4 %:C|_ʩ]XuN91X9f=m4sbWulSݾeuMώ:顀=zu.=&molu(ǬŐj.75fC~vu:QIͽײf…-/`:PE{KL: RG9>n{#>őI7Cp-j?`!WYžO ~4@#ltBc#Y!ۣH_y$'06Mŋb1Kf;YD/̒\c`TqF[V뎩5—b3>(p(5*5?jORQrT@ztdvkr~`V2ewnEkN~y&ŋ>ǖboSYY.y]V1 =7x7"`php ukZy_l;Y n:gP{H {'k>W֪8H׍$?]]*zezIRR0t'dZԊQ_r}8_|dW} Ov8+A^x&mjafA9Ӷf=PmokXCu5q›$"·xW3wlNK#\9[ Zf m \ BG8f_iԋF5kqnkcdbjnԊ>֑$JrAO'M[?g;caQtŠR+f;2']$_@ t^],cu7۵ܐJl;vr~Tyxlbta`ӥoG&pAlH0wI%xc4:wi,v@^LNlZ}7MGg1z|z8`|zd7s,@“6&%R |WHzSWi3@lv.,*>3)@6^Gs#Hk޾<%y UF}˼Q YS&p}5o0h3 Zт WۢJ(3OMxyQhN[P"QF"H*\eI/ K)|C\ 壆ܧꟛ.XqN:0wlx,ˋIM/$'4TM$ڳS`'"FfN aN0zhQǜRzfTVj9ϙc; HlHwb }  7-.ޘ[hj։@W/H,vU5~i#ш]/nL*9\ϗd/=T`~rQN3{R,&/>+ 92Bva' i#S՘\CƂ?i]^|Lvg+KofYv2N.qlUġWzETs.RɃwjyXq=|哯w@JwW6qc7 cۚ^Q7ŞjQ}lӷo["o*+ge:Z) 3 D 7Lĺz @6 2+D}PFOYU@FW!r"_UuY)g(q%{ DEU.r7cIaU%$!~$CVI6JC,Ւ"^RHX)p:I[)b5""c"L1ESa\)"QGEKz,Q[%j5("Xc"~Wc&)j=-S4L1EojP!`"ף CJXa 6H}d 0l5Ba ـ)X)@ SLX)@ S`VM5Ba lUB` %-tЭ[1lm5ˆa ۀ-l]WA9Vlʵ Ĝ+ U 6`o5ҢHX CI S Zʭ&TvB+"׈"".jCpm׀&ʯUAKlİEo"*`"`ؖ\#.-b.Yn ⭐ B[%-z냯ka[-[(1l B!k0SVa] t[.klpr5@]6 V w .``M: 6 Ved5)XNؐ*+I2 U`Mj 6$gVa&M5Vej5Xؐ*[I5 U`M 6$m@dmIJ6 t65i( tC *lפo7 ONr 6 iI@m6PrMJ,]ݐ]Fe!r8ZyW`/WDxH+!I"WQ7B4&"_ 10W26B.C2`{ !2!Ĝ1h.'"BCaa) !!DR0cn5b lan `7`b"`a&`<`jCPx*&i a& abCd!vOYk){n'Nme#E@ׯ@YGI r=T֪0Cգhc1?  H!2l^ Y=Uk @+<"@+@+:C0Jx @IahU^. Tp_j(hlJ"kMMۏXU6m?Ϻ/K+$ERmjsQPdP6ܚ))*n `_핕ckgֿ!bs{ua  A,eQ6Gآ9lޅnޅn"a0aCn Qߐ͍q| bSme-ֿV\ԓS $CoGnr b(Cm i&p C7(1j}ͫFћ[޼ji0'VܼjȦ@s?i[gUM`ַjY]歃Mn$t_hx!dp@ѸjgUlYr[xm\>zoa7h77f8Uy@VoO?՛ OlA[y$@VoP?՛GOl>Z <?jUVoB~b7A"2ԠkBjĬn.8E+_;~9./۷Y@t*BHSa'sɨI8YcXNX*oퟓ5x#ܵ2[rU?KN᳧#&g^s,6~nӡP(*sJ 䲟Ў^OPfvP)DvK,khBa)ġb1ocɷ%PlW^{+g\f)b46932h}/ޭ[.fomi.Q*':6{!4N#em6Fٺ)}]ui[zJ4<$G8>Rt;D|Ms6)?{8:Z6]U[L9jIhW%`X 'w)#՘m.׶\3.+FwiBiNI-g#I }L 40ڋwCQ?rD.F9eu7i-hr"+8/*oBaT+Cvj^7Py2O])"ObMe4o|m&Pkp׌(CQ&ttV_o;^N)(>^/p3 c,ccE n>ssvv"eqʳ#\e^>^Xo*c<`3[kg ɸb5~]U0BJ\8@xZY;[^`DFee0Ly@"@ 76qCP83SR!HunYU_n.hE 0_/ ;ǏB`y!VCF&F0__׎#/Cddeq Z e<|ܼ  qqsafYlX%6)kXF7hG{Js/w9Ϸu%~~7F(?rg.HD%LIAPepj?/?č/SPUשuD DpZM1HQICEӍDg#;b}|G!е A;,*1Fj&~F/+5+jhhi), *iK1]K6Nm۶m;m۶mi+mv?ɽ3odae?L7Xp߰wW,0~Y,?Hy?cem?w߉Ǿ'n_8?aa313Y[`GBc`"{S?4޿Crb26_i=1>N7?'_7&e|uKm_˰w0EQYH^MK8?_/rjH%eDe~:24^/MdSwY|o!7fFvGs,b0|7 ]Иgy= 9?e?b+; iscadaˏߣ-A6}~ypb~?FWw?y)g4?8ضٴ_yfNhX4t.]/bŒ z;]Q0K5@5} X( JjSFo}Dh;0:_n^R"?Iiùb6z9ˊ1Ln!ww?͛)wwH¿WHV_,6$nxX ]O xc4""H{0M~Yd'-[TVֿF:S oPտW]_?S/@G\?GEMP@ @,!$(x? L0/5OWeacaOO0Wa ?Q24wg;Lmχ0g^P K/ady~nh?zȟ7?_D??vbBϝgQZod`.괸T.&V`lNg#}8gG?>y 8>[F#`h#!-8as1~{[7t 7?j(_MR YrWKP/ ?((үڤ?K~>cw8Bg_s??, ڝ=x S̉hR|fD$%QTA)TyU^Մ JYVMLvyIbU3m`+=5{s{<:kGK [`Ȋ# W˽a>gJ֤>'Gor<` `gnN.ReB6RPS"b  ̯C5271[6KJ$ehU1k6w)/!J$tXq+#儻D=bJ;O8g-9OI79M®Jb&4A IgUU̐)(P(xG` 0rDp~`i ;5 RY ކ wI R(3AQ "Lvm+S+7ϐΕ V6 #0KXi/*GZzQ;4,SlKߺk{ g{cd} ; K[fAj{wU~.T_3KV jU+zzK\*;Ydk le+UXAմ[k%$vU'ρ`X{u,ɽUz_r.ݓ'uZ]avDNnZ Ӷ}#,˛/*mz/-#etǂ2ʨs{Om5,_bXix|$<n)\1( b歶q9lI*qsèB"lmEIY~ܯYINz*I9śkhdr!&ہ!QAES~A%{BLj|UOz%gaO7ү Wj5ILp[`mc'6ڊ3DWkϷ03(=9iqsA$ hۻPnrȾfް/>i_@ju> Hmu(532MCg h2RQ~pl\>գ!`wzP-nq>[_Zj.;} jm5fЃuY dduBrvL q>7rjc Va\۾^΂VayZ#`<`WAVX,). ݿ6_6ːcۼ CRC}I=6~avVa)٭OgV:eR;Ϗ!71\KRSߡjm}4( )n<%!R ,s&oi7qנiP \Rds_6B %&bd@˱]f] ?x" IPd%9COt-v0I(&||׵.S$S3%Qzh@9ejȱyakx +%2Z.8ϳr{7(#j;L:uvѫ-W.^bzt9R8#hJކoA9乔ZGM seq .s*5)e뙣f%XAÑ!^xyF:aLf> [71Z@+@YSh`Z 8y\ uon\)igw߃bG.J c7`>–w(Y"qVe,jLi$%\I n{.;{94cL(I ],=n[ɞ@ 1Iޝ24u XPZubDꎣOɀ|Id 4Nzdr7Mֳ9L+fA$&DuD ĹtFWRRv̈́  VkN4 xc_.&!|4$&|iZ0gkQ#^ݍqa`Io!:Οlm8DÏ6#y|=A:&WO1ӹ'TBXӠWVܣh-eTƟMH7_M?L?t,X\o~ }gżBE2T+x2F> ~^Y头 d391֑]C'׭*915IROF'RMHRa`PtLfLdFf{!84IzGXX_ &=2̯k5]rt@eݬ Si(s4,Şn2<#iwݪ?aW~}NGo}u?~6fZ\6Fտ>;}?#/ @"vLoR _T)Ի?AiYYO͚vnvOL>~ ^-@\ 6Gې -Ȣf,im{=k1ڀ\"\H}/y'8c4뜗؋oOl/cl%dRӾ-ZC3gEI ]\]~q@`#{'3`+cJ-+,)Ɉ N{z=}jmU-Ғb!W@R0iPH2 qԮ-MM4Lq~Y#SG)x2F(3?Vuz*%|"+̉f9r#߉jv [q|s] i$S߽.P?K]SWU(Iͧ7V$ ڥOiݳ}8Ojoh"ȗ.xsa?>[cMNٕng;ݏQ9%fG٧Kb-&,9muQALI9ucy,rda. ̎K<a<p;TjF _9v PZ dHj*&B[٬A%K8pR6axU0jo5>v#||Rq M)c@لs:eCE:0=5l B72aM5 -%`k* sI̓00ݽzDlWʁŰӞ!qGRZ ZEVLnmp)HK/0(O/BuφQ-Ҙ蠸j.4oN~A1'%fn mmƽkÊBOA6OnAPZNhTZ g7IW(YiVOPs"3T *uQ|'51%ܞed"!C-щN:#ǃ.@=)'{]՛fc p%*rq@$jgփFct- ޱ >n%b+&:F|ZN{qB֛6o:6cOz6>h@)B }lLF.v1^BJGi>E*扔1N̉7IF!?%XG&rF-Jy{/&hm/ C=`4扊^&%Cb dEK)pZ+l2*{6=hpiβt0wİ3K{{Ul:pyϣas{ Y=LcH*K$ Cvm{{.hɺ_LvXMHenMSvW".(^K`?,uN?o\~]?i8Iǹ*?~_4k[]PE*d ׎yF' &jmL"MUj9Vo;f:KcKaJʙ=g_ӏaMm&o΃(m@/VGJT1m Iwu]=H[4jx~!g4Ϡ=\۫i;N#c̈ɰx*[T1KI3:/n.d"Ȯ OڿcRcSи=|Uw@:2S4HV;bKw0a[y'Z9%3 a^T;}>DILC^H&NVNm>ҹv=IGT-ruI^U2ׯY&؇ћ2WKjI5^d`P Lx Z/QDCi% a6ڮRV;1׶sTWE\n*3,\Ϭ^.֒x f/_fETT?Ħg?rk44"4b$4,O W͆11j<t++G&N8csޔ_g[`)w=L׎++ ,d Ibwe;9XB2Pm9VS7eѻȩtvGi"s=pT*$n[J|[ p!HOyBdViĈi Q"߈a?L^E_'|s>ײyb4LC蝹1lK.NEW>Dl ozKwJ:QES|7茈>(|KX-'w#k(C\"Qf7N1Or8Y+h6Y5~?D\uxZ'ci[fxcC[Yn=$ͼ7׈@xj>D)؏\c٘kOt`]"5}4jfJTvާ2*9*&$ G4`ZY'"=0*zSId%YM"!NA6Igi/f 'xr]_f p[#V,"{uLGΟb6'n߾z:c23lo[n[#1n5: 3~'[_ ~e'::!fϢp`1aR~pkGʦ:յ3X$="Ƕh"ˉZ< &clٺ1 -iD!7_[|C>=½tPT3/WJeaNJ$/bٳ[[~]/Xܽydo4 Ku3?vsPR2OL&rlT?("VV1:YzZiqFɕ1/u٭#Pyi0OD,du\w[2,3c:x=*e988 E=ҙj *bcD^vlͥ7ogF1}Z5ȟFYyڧ3`CI@:Ԓo96LZ(WӤn8Ρ8X@, PjsŘG8> /2F{3E=,ϟxsӤ;d,p#R^q|`:y@f^8)ptO[;Wm])u< v0R`5Y0N}׎ Ft#$AR8< 1&x[3:l\l[F;׻ M|9h;j9t, @@L2Hj2 j͟!%L^?$33rdǓŚ:i`.pg  lyOR),T-CQ{9lw>$Vϗ Hڸ)0 y~f`0jM&;uF,h`ZjyP.,97ŷB12NRa7ײYMK:ZQ0OVZJh4}fvu&ɋ+PMb8cPoVEGUee42scgp-j<'ݺ PHt̃uWH-|%_Ek |tL (ąwUn$D\Yd2ky[I "8/ O-hڰ!Ywz nCI,r 'l_){'7Z6/r9H/YC@vxJuJEhk$o\m^ UaogeLmIl yo  7CY6+.#~x6B~شlݲRdR%ۅy#b,U.9aUVYkfTcHHi.uiARWrɣy._MQt{CekFl7samwx݅,3}1X*`&$J@H(n@- %xJK :&w1ǝW7K+AOQ8(5q.N]VAt)St.H$ﴗHIU!#reQvRKSs[2s#PelB |,fۇ{`Ĥg=!rRj$QjcR$wDh , c}[hOy~jwp؋тU q*HcSdO ēZ!rmY:j1PPy>G1bJ'|chI<= &ghBOͰvH'/jr4-Z}\/P =VeɆV:Gi;fd6ur=K"A3 5;ߏo*ːa;ExM&a6.*Ue#b e lИ3Zמph'U8Ms%~eeyk\$< EMT0I_XРdGۘi?U0.J4|. 3Nzk\뫨9.hs+z<(=Xn2WBNH!$l)9W %LH\ DW ٫[!~iSd҈TGk@ɖv057k({Qb(C`6[ w9r0H:)^WE7VƬٖD2&Lu(!)PA ?e{5,B-w~W)95}s\莙^[ųÉ'/Mya3z4's[ِ#!5!=փNN FNZ|^e4*2R^gcX+(TSVSCAv7T C|ܘ>~B_j> 6><ߝ䡳`'bvQ :~fbET`0>71y1x.dcW7mr]ݲ%eok=ZeBR^x|qDaGWY$$(YdCC h<*Z̽5F ,_ѡL'aÃuS)TJEOѿ i*LN&K4M^uv }uS`^Uwv1"6}n<  2|;bm!8SI24aخvg3:@:8ڊ ȦYX{Ċ" /uM1Fj{&@lkὡPo|}+;&{f:5ߤ81*yW5K4.ާ:>b}n!)p~p%Wؽ* j}A$=Bkv6 ﰅs;~Fje'ŷ׹լ'7cq}q ]J4.RE=gv*OXM*;ĖLhBsԑ|LZ lL ʸ1eFꮊ/S^jf=Aܜg22 Y []3FB0윊Bq22oǁ^%0P(LU֓bno02hx K {WNLJNEʂ B  7V SF6!Rmcd1=p+ZP5 thN9PuᶒD J9G9G84>gy,41g18>G?W$i aըZ*lcǺseUdj7rΥ^.c999@J0=5R ] 5˝N5,ݷ5+U]'-_c =p癷Bz92;kcJ9 Dz]N>!앞}D^/ Ǥ uBCƒ3{)/BQgKJ_Cx8Bk?\ */BG$,P}s`cT(n4& nN "keŞ@mȁEA54KW[wMsND$Z]#f. ų{W$%#{'!ԒC]˹eĸ1 ,4с[99~4f.+3ڬtФ.Vio6y:;Jnz+̢=G|eֵhhŦV(M | ~R&UN|^Z;+X|d|TlxuN@u9I^8ĿdX̢3ΆA=%[㯘bc*OsxϽi1'hs'xS<1F/T[z%Hյ1xdʝ.'?q8[T k-k]4;c{E1ОXUy k U8aJ[-S4eNhJv,?A씲r)o UK"z:4 ؂veo%-]](dLnro>t w[lϱ2Eh4TO'WWQ$zOQ݈-Gq)>@5Atb#Pwk{ c+4u[nвIA3Maw֓FmԢ2RJLV?TE{+|Ҫjոu0[KrJqH 3d|6:Ҡ&:@fY>dbsKXMʘZ&Od06Ù.=ͪ%(uu-,'@yW6^o jD)nyS7)_%6EpOT+j98WMbSgC&_¤P[Jɢ-H)t5^d OF}؛$o]n}O;P+6Ƥl^yWpb= 0)ɍhμRYwg;7CO}ďTB2ⴘK^^7KP|Tf_a̞̣q=|Wך"| 6.-H}d:~c}1"p*_ա$ٳ25MRgT[Be=1’_8^YO暩W>F*uۙX,^ʁ2%ᓍb/r6wjrފ,<d7#@ՎǞ6G2e  5-9˃53ٹY\G+HI$L\pJr,9~jc맥HgG Ҽ ĩQP| eHġ'rɍŀs&*'d$Yl-)b,[k>ޚCM+Q!->KջIiHȬ DgHS&9_"TX\C6 Ssd!5;-޻";h"i)yf`Ӑ:)~29z*:ORP9Q?wq 1IAZ4:>;R-#< Jކ^"?]LDoʆ%l{XXqmO/l^g[GV!#rU ]e~`Io";u F =>NsX%%W_޽gUNGNZep9i;.(y>QA+}L ֬S`fT̥8RBa5uw}ΘKY .GjF §l\̪{N0֘q)_x hfcȤ lNQ{ ~w$WAȚwI7\\1/(ީ 'ͩbLN؛k!ʫmg"$Er#]!b}h6ĩ:^_ԃ4[xvMzKb\/V" `kC;cpI/Fk~bOc;!{}q,T.HSTA<'O<= @5( ,FvdS7S;eU3C3g'E`݁61]O$fT(Ƨr b=ԗ/0Ly\Qh!ZMҖ ."{#E!B{q5 [5DsD" -^&ߺTX^4<;C˴hmc8ns맕N$٫؉6C˘$ p*s1ȫMhȹ70ڳ5Vj0QK[V=-STeYL^Yȕ-nC;;MǶ/(Ԇ"23:Z=x8[}s`ٟ>up.ɃO8]dN!~VE\%!FrZ[{A8/L .5Gؾ~Hf& DѱYeS`)bD䊥7b. Z֖2=[Goymkh ݥ7 /vHئi%jSw*}rjrr~Be *hkrcvA2ĞE2]A'uQ-z[xc{zQΞbLxBC#Z,XiqV>͇S7d0` Ol Kb%bzG[/-]|wSxW:km e["`>0e -ΒaE%Pw I '_9v ѲRCHPXȦ5 r~mݗa9ͅI(FCT. x< mYYVwgH>DZWXwƖLPD#!iXn]Wt8dgf< }J}ƸC-E8a+U=a4ްs3ف_>Utv*i y04 KG92'kyykyk\Y*6ml_h᫱,WuhAr.XH].[?ypH]1OaI~ Ze]~k2f,Eq_UT7'c) =?j?;올ٽ2}-16"ꌯqt.=49qxxIޘ2t٤LlW Xi!}vvظ H31}#[f[Rv$Go81ENj5jg<2i\W s9htؓIaܐVT;;5%oI'X7u}-g[E&+WSGs[Qa;#+i&1nHӼrGXFYF{j%6I1*ᏅhCHekbP'/1"Ԥ) \PSTG8@bL>*Od@i 1a24aXmPw@ʨ].s̉sa!kKF @EGWa.jId}-55 To[(h&Brq3.;b*>*H7o-8 4|Hǭ$%x>$`s*<C2q_ xT?Ot_QcU-eœJv4#A-K۬k+J]ns߲"sVjn[RXWL &Zrr=x*fU,[>eZKL(O(%E۝u^{L+Lc邑A_c!%Em>\ӫRN`B:4LgHC'P.Rk24/kŜk߀FzKoAi˧ˮ|G|%oa(01l9fKwpyw֏Sg ?}MoDvQ!3ƥfbѠZm:? AE#.50)}0>冏Dw خf!9Yuf,쀋*{ಊ\ǘR(fX/O/BQQ"7CVvB+P. h`H]>mj)'BˎS0{"17d?kuU`/+"odME:vx;KxϤ 0tZ:]c6N~ۥOhP=Btk.LȬ0 iNj͌b-ŝ뻐pf 5|4됌Emz *>]8jB5/C&xD6ԙȗ-%eW޼&1OI!1@&IW&Q.^AiofFU @-awo^ $ͻ?L qSQQE5o41ԈK-?}Vs$g¤⭰qXap.uL2| DTBPrVBpNu'dEdM =5ʀ\|Q.`#_G=@n^ %`O}:*^僧x`K|su=` bτmǭzesMvvGbXu!xvd{P)h$QEUiGt\q #k3`ns5*eț5 Fyh-|,} ',攻kw_X^jk< tv3sUJ?t!S~匛4/h=i#_floV{rwy1Tؽ}*Wlqh>/D'`]pv~;Z/'`^8i!2m(E@nQ(dK]@ Zwj&J*Gcg'xd(>)DKVLŔnr[Ɂ3o,5"qli{ tG&;׈[0)&L-䆱S%7zg0@{ 8xV5va.(z\w=PZ&"/,Y3/4fǻs>w}ߪ^\E'kD& 81`u?&05aKԸrK%^yeMsT ^$K Y#I,Y;UVàջiA%Rj?8Kܡ5oҢ{G fVMVѹT~Hη"9'LٌkPHŻdwR)QwgyH|eM`fo >;3aʂaTyFHoyW̙$0T8.j]8v|ڗzVZ$XcdFci>d,nԋ/[#hū)w 𧻓ctR-'!]'.Ypgf$ $+qI@tv|kcȁ7UeAO^ zD1@.+ V3}s|#YC}%E7˜)/df7rr%,ŗ36fDJa%!3fL7LjT9IJV3rfœ3C9sd$f Knr=K1Że},q @h-OET'&sxAxK^tT6hb dITKx[+<0"qKﳉo6_k7=0o:7€to9ƨGΊ0 8_'{.U}N:#bAꥒFd7Ի@afoA\3@V,𱪝E6_ܙAvcgIO͗PN)P"^ȕ {!'DrpS'X0;&8*1v/BfGW4HJg|RVkR$"t8.&鯸$H׉*Z$ IDQYԙ&mAz@RToY{5V IbG9T,|}] US v1]A[Z [( 7R [@XÌ֦Z5dJ?y|t !dlr8gckƆ ˋ*B4#%9&ĩj/i[^Gy÷5vE;v3>K Lkcۆpٓ"O =OZ9=g[2ʁ Mdg< )4]~lXm"I>L5VW*晸j|̖g@I-9U brii0W(!.R)P֖j¡X4|5, T[OD|IYS ?2l|r v`rЎgP|m= }U]E{A~Uy^W$nv1CLf־VSE1xgF)42tQ\BOm"в ."pwQwpQezjR:X6!hNڄz;;9c=+1Eڅ'9:w 2B.GUz&cFY7M4`/MlVLά'B~PSL7z6?*×w̃cDt;&SStk$b'{ULfÃ7c:AI"WH9.| *sg .\PF0\ngBos5^E8zyI$7Ͼ$HVXr @a"`vx)Г˷+1 \cHr eJ֗#&,d#֠=N@)w+y*86DarH~[ճm/fSV/e/t1,%)zYSS3n̯. \ʙjLj.h;PwTZ$?s_3^gVm . gӹ M/lCs_Al<᧑4 ţvbŻ{\8> Cŗ7iͿ})qLiJyr,~eи݀Ct~QprX`MNO?6Hr~L'Fp%t1dkɹ2>/2xvpTpĥ:&RN\+)KyQ6m s!V4SqSr|*s;ݲ o_kN^rp%hz,[|^R0jGY'Cˉg)pe̷|h}XxaXLLDPbقD /J{,~c<`YfGhmQKe7tzI^ o QѹxV=ZKp:?<0. 73Džڞ@vH"1Ն&N-/>̅/@^IJOZߜ;QOȉ%Vf|>GsyΉT# mJ`P>C<5䱋& -)$l!XfgmW?~i۞>(aMGԔkow-Qs'5b̖FJѣ{c|0.կھe̫qӾ9Ucwix.z<@e~~I-/(z_K 꽞pHȚtIN؞dXB£K: lJ%&x-~-vvU]mN7xV_壁byuow/v}6nR[ GHKلI tst1"5F4EO e%&CG 8plPMB>nb֋HN?u}7t٭u? FŤxf7`RP3Kh:˘AfgPBȧT.DQ9%H4ϛ;}\>| Hi T]@7t)CG(VW@`CFs׋@s¿>4M2sk)%]UY{wLn zpV#Ac10etWJ9lDގxގ:;)YD`_?L$ v| e|\<[Ӵu:[:5@FZnvqŶb3ZgVs1쉄PjhhaA YNX(tQ1ކ`'f蝒`re)w|9 =pL{L1\/y%i%@8=Dds~Nۣ&Z sk9Mqq#F4Dv@ !^ۿv҈ײdҏc]Wd&e}ҥl1yxN= iD]c<ZuRO۽+S#ϖѡ V.C^vXV״+ TȠ}IEKW(,mA񛦲O,.e3HrE"g}'Șş0L3l\5bs!uodm^6XL-`,%.)<4S:21GٖA~%u'K9T4&IT#χvE1]PT] R\E؍j Ƚ^^-Rl3PXK(̢J=nˠck %V>@~Zh: AM؛.SӹW4Q9s7vxM/1na83ok nZ)Q,q "|eV^^v]7̦`QBצQW Jbg\,Vexr\1?Q!!ɈJ!!ȞXjBA},,W4a38Xc;X<ڦyc'euSd-AqoHE%a EYBD{oDO(]}DȁvB ,<^ߓ=L 1IMP]])PmF1cP|f. fMV;KR,0|֛ m(1<|Al+M-7\5c)LA3O{.ȳ.1Vׇea8b;F 4&\dGMź0!d>~|=} Tuz9";qt-7NW [;Z$csƶhhjrnhXS/FDϯN)a")?O7`4O"|{Al-͹*:tpuDo?C+^sQ#z}^]<&Txq"RxF^$=0jSIgOWy|ê}PB3&LZ t gTY^~"yȵ*_Q֥ss" e +$6 NzcRg::R1(t$ Wng;Ę3`%0'3q\a,}&Nz3ɜw | BaKPGR`v&5C/&@Gw;~-&/\*R~5ik~ 4kgOv^ΩBrU/)HlɟvWipƷh^7qoBhdņ"ַt˕;?np|ZSWkOPY\ }zR6P 8<NjN2%vQf͛ĘkEiIrʽ4¨I)V\ ;#&/ѣB)fxׄ^ Š !i-%&\5sB/|ܥ-J2DpTꈺ9f,пhe%Q72l.M?]GMdöң{Zʆ/>E XʜAxzO!ЅL$m.救KQ{DJVSVy&yGagĬkGحб!N+ـoۜ@@~ӫI:(oZ?Eh;٩Y1d|bDC5g8hTmhƃ@OaX޵lVS#+scv缂>\H\xKh28ɦbXN֗AB~LQ| ro2C'UtbNb@(%ed7;fJ͘+#Gg Kkg=pkgNKz=riO5\!G J[/ |t"w Ѳ9Lw$~DDČh~%k_»ڵ=\ ?ee_ H`d\{X^vEOx f$; 7la+2]@*w(_?}.Oly)ε ydp%Li2[hѼ:]57|=MA9xm\;ұj.s(ݚNM 9d?ǼYǩ,Yi·C=珤88ѳCb;Kڤ娦!_ժ:PX;OwfF>es7tLGɺ80E![<<( qQ&IjC W~kZ'~:_J=h#S@,Jk[̷q.Qԡ XN$29Pb5'R(9:|VnT,myLmI"S@ ꠣ6cA%Q< 4Bѕ`a8M@]!yho5)<"Fc Iq* r>(UqCM^,˄T wc7?p,Qv7Ƣ[l: E>f(|-;@hUG0<KU|05IrW`Z.9/|| ׽Z?|g)T:iR{ pgDMϣK#3n=?G߅9vt#@IQK wA@^~5lg4F&uχdeN^4Z$OM^W)3˲d&_8E-@AE14xC:b/n)5U&q.3 [ˈ7q ?Vi]qyϐ!>B/_PSxz9*)<M]ЬE9#G#){Wu$eA%C#a+8h hý Pz5L(SjQKo-`ܐwۆʀQSQ _wk^{N\:'nh<5_v(0yo"2o"er5$L?(:\-XFcpc8ɼkyx8c)ՌnRaP09){EZ>5&G ~,tvH_XKhd͉Jyaʑ AoV^#y]ZnN3yƳl/Nw<%0hlWMzےؑ!|'.* 8Tw;YœL l5~[tڎ Ւ\׀*5cJ"o{kY 3@'&nMZ&/ϵй{iphA42/ =շKFx+{Qpf1rbO`s޲ciDE* Nކ (8'<*Sʶ1X!kvujOiOڧ9Hӆ-YvřkKq6dJ4X2]stl*ϫXjt =z^̅N y~ZX2,t^ɑH,U}pت~Y I֭l@죵yU@mU๦0$xsKnGeFMEʶX≂Mg:MmL}TA3p_gqLJT݂s ܘ싖`eA3{yatz!L$懐TT-ɫ.yd3pE&x[SqDTlQ곇Wc"da5y=mN7na8;5᫐,q U#4uS3inTGYàM;w<4a !a.([A S"Oj/GHZHwڤM'YxD=>T|Kf[ɪ^!hXߝ9 Enس A>-/BXPӀf۾ٻ 9"W;e\ClTV$TZ}d~-*JJ<73 l(1AP~_u`@n^)c3SD`,W%Lώ~E0 Nk~o)b,$rKqiKA EwOQ08z>ؚ!ɭ","%P/ 9<*S,ze5ׂ1_I0v0'AYpu2Q@es:\IEg'7 Tb-"ɋ}(YgM[ʲ n֗:0*s{+b@D2w/B*7 6cĭq-49`zDߎf04O8sf)7G o*O v)&*gh<8 @pJϜ̆]-{+*`$%@4Y:9ST9r1 h?A:.[p=N\Jj]D;4G\JT*k{7h,?ϱ'l's45|זXGǡz#bBqLA#pS\;=4D0O3La]k v[mJۼk?Vhc)rwN&ca@cV+ E@A3Nol'Mz"A/+2Pߢ@b/S7[.T4JsVbsyz~¦[?lIY;g1[7Q+` c.(wΎjUdȷK\,uPy:OP4c@nFR ]@ކ A"n}-O}.wy:ٽO&M]dJPd&͞Ax.);f(AbTNl$JhCD%rN1:.2z"Ôz(eᇧiÊ15ӵ>x 6cD{R~ ΃c \T & 8{E3]ͤȧ/ &WU@ccee;Ǘ/#튿tv|/{ku"E_Wa%5ݏI&  Y{v&u}A4]̾dU#< =`}+GihkAn-y#/Ht=JoǦ=&9n COUqcTc^7Y(YGb־lv7УTY}586!!l8Zayr}D\7SSH\N4 Nn%1ZnɷH쁽9Y^sg>g@Q/-w [{M}E*CoA`h:YBC1'TNYZ^3,7NLo@GO̤lC)C F*e^$l|[Eln޾'/W].4&Fd5FfMbrLX\G6lNBsex;{h< 8 ,ha:B~q,(YɨuB /\+sX}IF]4p~iFƓ&* A~mʙdyU/}p U']I@O@ M;"5ҩ-bDjhL~gx  EgM̄t!ksyW][[1LS~2:`\;Œ[iDوIPl9.++&]^UJDW^1mҺ^࠲O=BCTh GLO@rT"h_.;o~,pE%.\5}L&8z>p{GE;ڒ#MoDͥa@:0KRJt027: I)'gz o5gaò?{Ʊce`~r?8?͇`cCN(Ә.*XIb`d|UKՅӄKYtCŨ }K6UCLk]pRh0GrAͳrfJ Z쟛zٳ@[4)M6+-dfѠq~S!dSqf nL'e4CH503-ٓv+ϭs4‚x+gơ6D'$Vg҆'-n)>S2s#QFdlza,}g cB_=gYBʈM w>IT ~STQ1_Y[`S~U٤OI[R]ܒǫ2n!C6Jp/ "fȆ4y=ВC%Uj$ic/$ddp܈iD ѴBŸr=Xޖ ~R76qGC,YBYQ9\Ye4 )A6 w_T9oPc{ oqM{9ҐdUȦΡ:֧Z!ir:-9]oY('V;t$3 {NhO.˘F3C6SW\7,*))%(6 JwHK#"%)%Hw"t#!-퍅l~gsͬYfZYWp&>UU<+πwGc|(£dSu

[ /dPβЕӨx(Z^y:Ս 縡O*^b16m"S0%g%{}. 7M3r=1K̴#*}D2I:s [ej4B&H1vgE􁀡Tr9~) _2*J ˙\hfA *;vB*%Μ~\k]#GWu~QۯglYs@=e/:-qޔsi36MXER޺wu뜈+_ m-DT}B)( sSh"E]OF ~pQ/h0pr cPS2]`u|`XDPU]8TI~z'vxfm=n۵c #;لq`P|Gs{^lU6C@ YڎxjʨB9`gWʣ*[UǏ+?jkfZ@H-V570g`~EْO@#o ?8Y8pC|X˭˜Dx0aHM"4-aIT@LaX$qU1!eח4h>]UE; - I;p1% gZ /(^[9.Q&|%*>7u*-3\V[?FjiB- knWܺJYY2C s%MRr\(*tlO- nLz`+/N({kDm!F}dF^Z>]BI*W$O6rM"V_@7`l"PFnDz#{PC`6c!ۜVLO6%ۅ;(FuԆ>z3'hlc'qͩ+Y+^}ӺaK4.~8QjnL*h^|R-n Q )5$ѡ0yb}(y|wlԒ Hk[4CU~Sdfg0ÄA{,Hg=N$!1`KIvteu9/,b+_X!~vuc@ucʱ'M8&7+i"9bn9Q~^mfyaѮLJKceDFj15kmp$z^mQn%_I 皴σL߿?kn;/O!6um +Yރ߆\COKÝ?~&xp$`2\UD.[[4$];ξє$@s 1{9A;I!-O^aH[܀C(k=`ނ. 5I>co=[Vʔ{ãcΣNixLw; KluwE|Y(d%4Xx-혅) ,O+=n:g@6-n*zԱڢrxQ (iK[y԰fU/cZ9WeMQeU6zR]vC/Mr/޷ 6㶊J<-C*,SHSs4SVoE:R}I+obSK&LqW;oZNafwSƦNnR %o+%5ؾ> xݏwW>uahWPfƐ^9׵in]"m{#\[+ORЏ|  ذT-HZI]?p%F'3"In|H1|oŊ a{[J3ctNxO1&J*'K.=vuG)Ӭ˼.ܝ( YcQMK]}] z 01nw˗ܚjn&Ī>3f9?!ADR%yz,0nccOMP@=Y}i.)Y'd2e}ezˤ{b DŽ2J͂XS1 cn,k_ÒRBJ,0 ]ݐsu'ݏJS"9@5q{ٟ€փzӢȀi|",eyNڵR@Ƒuf& &r@8_k-T:S%%@j$Vq1A(w,KrG O[͋_OtZ!O[:sݸ.-\{@[ ^mD 8KlTm T^Fӹ|uۜ HMjgn<`G9ݖrD߆"OJ#"U3Q\[eDB{ċYǑ,fFV;i0OEhMYKܾ<~ͲfPC .G pv"1Goq>ŒvΝZTWۮNNrww^.B7z_O<#8[0{ydeR3o/y)jUtKhpxNXz0vA&sR'PߊDrκӗy{i HQ!QYKB1 g8nkwNF/}/S]y1]]P|,̓z!#7^D|{}U}ַ X8rhJZ!CCKWdpp=}'@5 o1fRLL+}(hXs6Q&9;yT ZCOmsz=A`xG@J1Es]lM#sh7!|8P~nI"n{lHIDJG:aS}5?A{2l,P{ل$jZJ:1{a<1<3Lqcb?ݔD`y=U4>ڛ 7 i ±0РLD'oy{<]rEQ'VǵPȡVY[s p{i-d!b~z ,q)| &)eaǙc撰k :E$]@iѵ٥"̯^7e2z5ZK^M9I8,N #tDr:fP:3>F.xgQ,u_뀶WZdJ?vvg>h=}U%J괲bDٯ6)6'LF-&޸"r`2͗ϱJ2sY? 7|mbb0I qQrq?wd-[%!Ѻ-P沯L[sSHk0:;Ʈ'G alOߍai JRo&<:C1=5;-b(&^I0nTߥRjґeA{] CaBk]*tmKLEc &49r^)%=<෣}?u}h;?ҮODVFZIv<AhY{$XcQ-F "Ɏؽ|%afTm(|3"ƲUoro 9:9IZ8:K߇x|몹6d3cIy).&#ufei5 ֑Im"f_Gab}0VY]&4Fo7NدQ,Z & =VSLJ{)~4J7#ol''" {_x->L08IUrr&QgW'QPWLRu+ bȱe=y܊aCWA^ `bD:Y6PmqѪ_ ZޕQV{z5η2r_( /8w<.^/\(muzٻꥂ@R]E.AsQv`>UUT诞j1v<%܊rU$RzS9U!AAAj>2Nu뮯!|Jlhwb߯#Q]`ɮ KR?b&ebYefƻw`a gߕ67EfBekF\W}VlPtr5?^mû|Ň V򇽥" յI:-$ ʖ%|[ Ufa ;ifNi"،Ss6n^GX9PhO՝]~~QMÓTWRLpYo2oXXbVZA^KT{ٛ}*$%1|)/2#$KԄړec>x %>S3˃ OqZb>QRu2Ñ"$J@x d&ee}J"g?5O0}qo6(FWqC&*B.<:Y_4J u6ʫI^qNcte Om CIB.@ӣֺ<:Lo櫲iY8U"t`}9T%e&#pa&W[~vw܁܆hI(w1uY[?V^ս=I7LjוdQ& _nu*MywumR<^r+3" Qav߳̚SСF#ݬLb eiH[Ou-q!h'!,^.MԁOɼ?wݻ:B?b 5KdN_JƩIw>pQB:TByTPc*& M-ݩ|1VXג&<t c7 xUnSRB(X+& %֡Wӷ>^V2/ϯv,]Cz@s9:\bNb^j4;@6B_HQ [_?1֝W]/(^1ԋc|*8tAjJ7S5z\G6/r(&z:^u7Wz&">BQ* W :/Ŕl}PG Бem]dw)5xfJhEJ1DҪX0:„GWѶ`cFq-$J͚Gwp%wuع?`XAgպ%)m5͉Q]ޞ{Wxv` eJa D̑;.OKx*y'WGEԾ3u>\2;DP% bP%#d ^M\ ;T!+ 0^߻3FWkCUZOh_O8nyǩYoa'֯)dי~00/߈s^~ۼNJ-r[SƇĭ6lX*܅uh|yD!; V=2Y\-S%.Z`]J>mgǏډkQ=x?W^DzveNa!O|m"4Ȯ']ZX!$BO8~-(sȓ=hId/[vw%E&S"MX Ph, ~,!ȴn A?VS\AY#T)FD1GmؽYf1a }m\rW/1IʽAx/ltߨ谆tȳꬬjԙF hq>eD I|:Lej2Tuݟ1NcE£ʄxP$ _ MĎ hiӥt8DrU[kbfhr4Rԭ?ge::y[ 3Oy.D9'9V8GɞVƛ<3n<ÕTI>>"Am4!ZؓVOU w[#8P7Wl6ɠyb&<7t/0>C0+4[kWӜ) k#,df|`IgԀߞr`Ud(Fp:Ǥd1_jrFš>~R9bٚƳ9֪]]SO!W{Fr_D[Д({K+WX;ޓ.s"|VY{ֻk3DȁD"RuN +L۪]o fXۦ+dw[-͔m˩g-1ϰ熭R1!wL!/363 DZ.u@U;n|w$}x pLh˝v6 ͯjHam}`u ډw~^$AE J Pl Îb#k|krI]ZeEcjܘ$Qnd~m"\KnsOk+)sz>`*7hɎusK"PUQJiΎOqtK{5&թ[k21Cg( "1)ʩyF8v=nESID=0$ěByfܢΕwT,;8* }I_R.& ^*jQ(! 3 KovdoXޔB5#WuF#*nqܥSk)/MceЭ~տ-wμ= ,PԬAzr[]m% o |b-2ǮfvZWEB9zmK1%?bdhFL7Z7iƻ 跺%?{Ǽr X&::{L2TgdQhNnuV=*mw!/sn^Y?rt9y0/a?q4ۼɢ[B,hfMOТE23޾b-MxNuCĪ`\"bwNMM}ܫXX-j1dz:h'=/f6rq*Mk#5(܂wмwiScߐ}%=!=P@ܑ|uɔLxb52)!ĵм4^øt7oߎn-Ts\Ui bZ4*gHظn|x5O/?|)LTפt-X>u$9Arx[C:d1ɇyx=P{_e}հP-׍Jٖ.dlMs;{Qw}wj@v}F_"svTak舖RZ|SU9[!MI,+M63v6$B9R<ҟYζ|NVOza>閑xI0 As;v*h}TR} IYD 2jv6\Do -cӬlЯ}F˶m.5 Y[F{xwbxosx=fI9_s4TxSU};HٍN33-rVގ\b'As }_*bgH8&>S>LI=ֆU^Ebԟ'ڄ2ZA ~ZxgF"@4i4 pzV᪇?T{/Niww>1OK('j(,ۣ SFͽ$-25yٰH ,ich娰[)G5B I510kGl ;jD<&<3ds\C}θ.@,{Spgh+Qh1f椂aiL(fQ\/(A!u/ɑ?6j&V{ 1({!qfhbksNOcr>d<ɏl~Pdq}5W j]~w5g3PɟП)G])5믌L*e\Œ CF1F h5b'mB)4 ṖQ}v亓 6b,MmDžKzRlֺ S㚹2Bkw]2,ݣ#6YOzتjYoAg籕(( }Ou(^i]4=#*.j{9iMɁo-  i-T7PWmȳn 釲yB5O!kq1͹ȈrKZbSϧ8RG[\NC$Iv> &fe0k?/u6~o!*L֍{9fG@Uᚼk Sms6C|h)^LhV'L2j9|i椭ԗw݊gt!؀ca|NaYV#ZWz[&,K+ACݼ,H^ۉGgH=]xhn aULjnC}/M:nZK2sb+T.Sdic"!wlmpt6$W\7Tԋڇ, hv]vZjhױ9UK{87MBZfmr<;C\lB ?.I^K*5 $KCo6 `eXpфVͬ, ,?nݽDN{][S=?o|ӯAQ==Y bV2qT=GL0^C `׽4vd-4#䝴@-\U6W=M‰PwGF`~x\YAat;^[opLO۹oHc҅{(]!`˖'#*`FRaF8W\`5d:IYd޽޽=-+ss.Wc вsPW:3l|m=uN 4Cq2"W3Ðk:(qm!ϏsIZv=NJ*qXɮ9\Y@k M0Sɧ ^=iP.=.6(R֧J14Ta^g߀/7wIC;~ofڥvJ  O4deŷS_L˧A쾟bѓv8aLx"y.8&?9f'.<8^pyB}IڋLajj:bjw;BD+z8a 귌 9=|F%%%'G('jaȋUiT-9-V]I;x%F*KtŎ~lou'Hf *$MY$ ):5+w[64R(=쨛75'gc*?!Z'Rj2o+}RmՑEH]౒Nvq.^ӣ#b;J%NUa85-4eLL>؍ty,>nci=,>ac/wR sdJ6R*33pIR "?Eie^a*?NJ`˳'"Lh2tw9E0 DIU q[|f& {`1YYAapCWۢtA8-֞V+8/릳2-t _-YȤyܡpOн9aaN}6% a#Oi e'TTcWi0@L)_Tuz?e_㫊Ţ{fg),ežx^0YP6p-xn_O.Cg'<1Q%WHˡ9 ׵޳y"Hxȱ7PE,-ҝw QGnEwP;amV[k?vfQB :dҫ~޻_Ÿ~EsضX8HON*O/ yQdChxr+zf >E=yɏj&3:r?EmR20+ {[*1tT:[k(&-EO cY@EUd ~ba%T-2++3h(81w*L+ԪiOj8@^O='$]7$i":<}6pK[Y.3f_O~=z#wX6x_7'^:ήy†&3HA{26Z!2e.Y./ ; 8cN"ݱbٳ8 c^n3 GRVZ"՝/ PRr:J&F$ǘ2#ߪboAΡy $T,Y=FKFK`rk;1ZR!>b6Ζ k.~X\~o?3pC \+biSA{8 `i7d^IoTTn,@!XW|oÍ[8ae-Hf0C"uYxfc@rt}5O* X.H=vTس`O쫬y|feo!b0xB&+[񗆉n?'E22ܮ4Lhнw"QXZg^{Uv0*`^Aor\TJM_mƻ))c$SRX #,f@EW-ϴ|1RN]6SX7OJQCyM]xwh[lvneojϚnƦ'I}nVraQoռ *8OfpU5FeⲒgqOYمߑu+bk)\kTL2>Yd+0ms=LONe$03.D"U^\mFr{Y.]{ n+py>q)ķ#VyKs%]cqo*gIIޝE](C`ym<#s,=\J`l^"u W(CP3MX7i4!O:ƟaxHW0Ǽ;B*Ifkg[ )lR(Kjt-yM-s{-㱊1 t(Nz. ,cK(BwDchl2@&N`8ᮕ/nef~X5Xr9~JkD:bE1 q'+}R/Xzq7;c :ݸTp_6.{EOυO 5BeWջ'&a-Qcػ])YM½1Ų0/1ҹUm'Ïz? 14Uj$7V=:i/pG Gg_uuhQܧYvfWyMK_ خ&ڽ[T|'eYߩNTyK,_ xgRG}Cm"~S>QB1(I5 ̓^I|iMWja;|I,B8k|۵;Eɢ7 0G:{`CjHspe1l`f:swC6 3e8 Wp6f3KImzcrPJ #A*@OT\ yK3BT>d^$TkXd3ڪt9k:KE_ *Ɛ1F 'ECL_jR2T#,N#\*M1LX?@{;-MKd 㪏kC2-)BK`e#(Z#_ٺrP)^F-v~qKe#U ,k}%MY$R@[]UNCP6j*tk0>:E|yt$wb Fr4D'>~JJ3Eit,?~5kkre>N]f}P33x8a6+洋"O㲲ڨѰ>|"ݔp<,!a5nm}<e.[*tx{Xy dafHɻ l2־>X^xrq%M˹-S$F۠4O"VB [6nvQ[iZzyD톅1TW􇆳M[Tjo H'WKye>|Zm?<;ܸVCrPz@]PbN NߏΚ Uvo*)L$~~(|$/99(k4C7cځsorݰဦ2QCdm z;L-q_jt;DZ1s c/4yJ؈XD3MKύ#GZ^ pԁ; wݮl!>S^)G +v.){jBx]CZjя9sH=>U,3m010[J1ԥ/AAAA t&˻xWv ^)ÈCCz iRFgoemN(m@LŔPBHƑԔP\šP^ZN_\- R /]tPP'PٗO.޺03sKޝK;kWvwd0 `\= p ;LnLKܚU\vw{ `S)L͌+Hz\TU)/$Apv``+lw; -f"@;%5|l 9ac/.]||%eDeBvf?: 62^|/:ӧxz)>mW]t^|zvLˣ<ςտ\fuҫ4$6W0i#i&__b"!6ԚE%w4w7otn4zw_-cO7 (}{2sHA}AYFmA ZK}[?K1P)S CV8%bY $h4=sQikybRvm" jFS;EC'ʻ QV?>4/!tW5`lX?:$=FJ!%E73ȈIbƮA W.uRݘ &X`ׇd#q)+0Irl8۴h{""t{#*ߍT- VIT ĘwYL#Sğ$ )I&&'JH6rcJ&mdmYJ5),`$3)!.EG 3J& r"n#(Q˶+틶 繰s8l |)jt@%Hi*=t{V TLs Pzރ&,&7nv^vUv'!d7e" (j7ɶR ROhN|1𶥭鹟ؐ'"caxWOBpX)e$[LC]ؕѦuYv7,tDm55ހc0ntiʹ"FF2RH†ZN7u1A/*[l77UBY/G*ZM[.;Zr`%Csjuer!R3ֺbTVϬǖ Pt4!; 8dSdC_x<.vPVZջT9/7k(j>&c`Z8;k?YocY̬!7 Uv jcG^|HWBYY-T/K;\aW1ybQZˮn>Zi(KT-E 6fF@wG[5-͖^3%%w *>z^yގ5[,uvJRt;S.?ؚ4g$DtgG~{N.J)x+ WS /^$Ly(7!ܹt}*+gT<u(:kDlN!Ac34VmJ=EiwfWFL("N)qm4pDCϷkO?yjz&KU=Jf*.Fp` ־[_ 95KdGoH*BsinouT-S NV:sN"2zS?Kt%ItZRGHGp~j&ۊ'<}0ey99IzPo6F (kks,Wg`Z2!J;`h]:~VpaX:cf{?jBGǰOo^ځ cO[Zy0tfV'fI\ D&I֓$kֈk[ ҧTuoE: DuP?w Y/OڃDBiH:2cV ƧGy3>ઠZݛϷ[Z>b!vBP-h>qmHcZϹ/_L1פy{1L rWgHϢsћ`Qj//~Wm~.skMe=,06H&ttbRl }!kԫ@7"^*Jia-co=4غJ\7]:lv]$V>rt6Nvk4-^4-ݝ/"z#nGO-#-63V=©A.&r7 x`-}Oz~%]c7V1JĬb.5+(ecovXCEczeH@{4MٌS6-hiႆ'tJܖ7T׋l GS6~>P'zDj}+Y}/QC%GzN:EM):zZfslM<L6Qk ZK[ee>J$nڼ[:%l- FIDMe=/_+&*R>-piQ ^1$u|nÀݎ߄8g77Hy]{!c~ge 1=b0Bigv{:wCi㡨^ײ/QW`xKvDMHLo#jN%%~!iUwu |֪^ֳ;iQjxj\{·FtGd1PP M'bX v.<_˅޷$xru@'cb@nfg3@'I\pk!bUJLrm}/ˌWWNﲼf +>ڻ2W3^%D rڇp5Nm_I}]I^(.)<)BFw2 ąH087T7Giy]X0'MytL%*uNQSR@}D'10 IQg]ў00Rzpךzf]R=??ook![wH}-,-;+C<«A26En~m{!}U+6lXjbR|D\ H\-(ꊺum4vw,u`N"z~i<*}ä5|!/h;itt Z \^x?Om%'&$.н~ { .)m@JҪIMd%وW@I^+ga6v X7]N;t^[)W c*hQS1XgSJڔN{SF[.KS!L o2 t:iV1}¤Yiׇ uG`z]OU1_ޤ.MZ4};$&lH*#V˖~ʺ&{bݕG*zhwIv3/eUHreB^-|ZdUrP%X^,s8DG[2m_ڕ~ɗuF =cM:h ~9[hEOr[f9Dr/BM)Y,#Ec]^ϰMȻ pLqgd3[;!diPoJEzT#R߉kx~4+я/'o<]b*ivÎ%# &-/+WW|R`A>hkFm肂KX.ԑ|i_Zgj+F9S&b?e]QX̍`4pH>(&֕& x;V}ߴ_\iGIofoY潚!o $ڠcUΠM&V[P %svvUtoWBEMLy pMKhs\W ]C `6g o3AHYG杯VpбEڄHJZ]` Sx-A2 ch_,hqzf+:>bLObUBuZ ==4R14 >!JjE9҂#B6yJr=aZ7N5_Ȥ4R <| RwoIQjٱ\܏WkNαaul%.8T[hK#|)gL/hV1)ʤ*N))u~< 1᨟\.9襲=yȤ&4ө*׽ea6ȾNA|+ѤE0Jz5ahA)B^F_%" sN)dT$y*Σ;N8@$]}Woq@aҘ!^[n/W(Rny?>؛x3-en|>] F׿1yYs&b)$o+| g}7@#wv3jਸdLjKfAw~MMvN;&"H'R85 ͍{UsRXPxP:IllAi9Z8aTP4Dv:n @@G5"Uic;vZƹ,f3O/_luus ʹ^11X/2v;_^U+x̬01Hh.jJu ӵ N=y'fpv/5EvPyĒ|<27:rOI d}|>ס?ZX\abo$̳;iw},G&2*;oM4ՌhH\Rv <)/@ɄaX9ُ6tƕTVQ*W4o >PWgqHMeJN##-)\D( +j[_]m$c5qRaț^gѹY"`JqٯgsP8~t"KEpd~tOEs[/K~FiZXǿf.68_ME<5/T`x)`W =yfds[]O'"M`ib* "F#VFi -sN1!eѷ-tWÒ9s|{BM~Jai-}iX/eSƗ _ru +=uKV _/cWXܞx85{@M:mOQ#]{&A)W!e[ns4C3uhM2lq_UdS]3R!ںlGO#uR%XK!>* n%q~ȣ}әl' 遹x-sH/G>^1 t O]L *fnڄ0 #~nmtU4$<MMk;*BQtk/rB 6*DJXRkwlOscMڟ7ߢ!$\'eoo#A+@%d _l^#u" h^B޷ux=fcE! Qc J#$~ڝ7bG)(aYPܯ8rW6``.4\yz #56́y~j?e `%UkӘZ6&T-Fz"_ZdX ~;raZM"}"6e,iW]47!^Hk{8ϑ K32H~MӢ}NA3n۴;1|*ʦ5чd,.]P̍ONӑܭ\ARkHa\__߳}FP¹&tRݭ3qvT~D7_?Ʈ~=M3 ֝+(('m)u?̊j:$ŲL@ʪHG^2Z=l' 9VȿH =RQR\ҝwuoяE@-e87 kT~B5]|c<]p1Qsݲ7 +=httߡTlS>r4vMM7-/ Rf+DN =۴J|DA Wl>|0eJ׿lxÏT$'y&"zJk7 WoNp !lv" z&>f-ρe褪tzJLo;c풽+0&gM{0 \]Ƭf76u}-h+~7QnCLCQ/wShdc3͊=2\:Vַ""2䦂ǫK?ʎf'j@(]q'6-=dTg ppm5%vx"oаz]m?[fQJ[=U2>w}OK5 { sYÏF {@KՍ'c_ $>Zc{GS5ѻ/s$ *.Vp9|!t鈏,IaujgM7oNrةJ4.Sږ(zDx)j4#$*w"Q?T~HX`6>KH>jAM-;,IG0f 6嶇 {~;*7B'S0a)=FM_oa+Z' S,S|,*xM{N x_hϡFGޯ[(]'эzg.uJ}NÈxLY [G3[N:_p_ {.@e!H>*/VByҐڜeu1fڗPiaG][%KO'uoJfl9q~}+6+Sqo^QRv%]3;C\ʹCUѦMܚ 6//쯚"~;1>RQBm4OǪ&w5L.`>xZdy]E0x >- >vK/~l@;, 9"K z",Ea.DЏOG;ec/ UdXY߫F3Oe~V ^j{v|1i!i1s #!+s)76_o]Y:ݧu]^%I'd`a=6EM#ECT`fۘ$0ӰPus \u_#{Ch( ^[)%YHL߷L)_i1'Ò{3##f1ˇgVVcAD+1e+zXGyD]AUT#”SC*C}]O}Y ;FCJC cXBhܑCf~d;%L1s]G=e]';n?JE /O w a\Ii~,?ˣ'/fcPC? ˬ:W:M1g]CD2adЎ{8iVL7@b*qN`e&s tv20^WBQ]oɨa. ^X3RQJ2bO*N1#) JѢIX%Eۉru-O3?y^K> 4Tlh0 ?0YW7գ4l]QEָa] 8>w.2z@3Jl; dt].kU'`bEk¡5P+Ž&.WFbcU76OPL|N+K_2/TL\[.3QG2CQ~&I+j0i7-7^.aO!̾$O)K;/,[Dr~sYvdWb 4rGS^J`ݪƙl{,tdHؙ̙J>L%e#`1Cqg/:F+Uznw.-@EWp+Xx0kKI +yuߓyi"qq.1 ő=>}jxǴ=}E"OcC>TܳN"?}ƚG)1_stEcm~];Q#71=i|˜vf58HMlkxMFLq_ic{px8?i~8A`^{T:;W\F#i;|n2gIc;(}:oj12QóJ,S5y>kˆj(Ѭlj]bHѾu K=q[L=l5ؗUut9 ,̴Aĵ--AtU V=1OSLmajTܐNO@ԆW4^쌾ѷ8-mH1yMVdy(6 ?-1IyS>XqA2JANH``df@ACw<%H&T@zFmŸ'f@yN9*X؃Π†'AI\>ee˃%d zl!S@+jzC[z-f฀ awA !l1 LNLv`c!|NvA;/+v؀D;@<3Aqq@ywg3 bc( B~6zp <1!q;;+d B Y:@P]/lcW= m38bcaGY$v@!i vCrގ>33d@d@i̐b;`zn 4!e {/A8 0yv6ȶ4 靷٠a 4 `a@;^Ɂ030AA A:PAF? AkA}IblAr5|L<u/;ܙGcׁ= 0Bs lcӁ3; 2 R~W0=C0vH[)?FӃ  Q4bL#;;i bLLAʏ| L d^ Ai@b0=!AqAq!`ŧf| M`~z$у  2~9o~6Hz~y ,d85AvH , l@`jд2~|v2kv 7!: $3;\y bKXwaOI ;~ff!V !X @3|L}f而0@qm33+3gaf?A0s@Xـg77!>xA†u b7"0 sf?@a+ 3O@@EdCFtddB2gsS K:&z6z.595տV ˥oFF +0^,_bX/2OQ0ߟ=CM//(&-D((^ >IIBUE!)}#PVI^VFA$"40<|2*bR|BJ`||RBB   Ƀ)(ɋK ),--(rQgʃPJS* (\@P^PDPORI/e;Gi1>JiHbg%,&y I ""G4X bB `JX,!E>ry!1337i+zOlw\JB!pS%Pڭ SJ p‹/uCL)M+GB+G+G 5-HR&ӂVLPF gdpAc1iE!P+|@$WT*uP_0hҪ!'R/Ƿ „< r|  A`$hk%!J@lKPvAzQRC~s; j)>J>~JJ0%**Z= #4ߴo>!.{:³rs H~*4tbB!&v"|gRTT lw@]" ")$)|sy!E%y--pޜ3f9ERP&Gy1?.&-B(E?L ߴ_U7V^ 5X|b`^UeZQ~%iAR/!.>%1I1>yo̠G; cȟe@ߋϼYX~Pσ~FDFeOG:+ j:Ż2_sI1?b:a% __m (ȇЊ(pc v@M<;Eni SRWOo6}uR(9hi'}wF+ !+LM}#Ox~x4pIo',^~&Ɍ^D ܏g}3Bt@*'TU0r*;_"B_|vP?[O|u?e$$ t_(_w6i:Os$;S uJG'E`H  ✃<0xN$gٖ;lC[y>g^;mݙq/#y.EL #BEM/:o9AKL8}W)*0};e򻜩sѲf&rezyp[MAo™.lB|h&./HB?|]Q1QB1BA!ao  f@_{,'کCO`A#t@ E$AoXN10 gЉзYWa] 0 EHD^@%ɃF_RQRTY D)0&B=ټ?EYO~$U^7R2:@  5gSJEYAH ľ=:mDžd@cUX@;8e _+SIqPT%a֯O`!qZqYZ 8&Sr_13_ ?PwJ 99r6$΁]"LHBRo[z*Z!ߴ '|G<# _w?gR%~ Jyn&FBޖ@Bg] 7bA/:ߋO㾻ľ@4 ? 1QNOtJwꯪEHpA4\wqNDJLbu?ד푺<<~xwѹNE|Ads_y r4g% C ~N) q5t˝=UM> G3h2RS~J[6ƟNӀb 7OlkOXt_,JFȜFWFxEo'q> ; Czg@įwI2(XL*Ȃܪ0@6 I|{-@wF @X4/ݹ0pZǶ_\bN{ϔ?98S?w!`)GҊpF#-(uē;~P3f2-% rK)oƥ0W?R!A# $g߆w Z+V<4?5֞q K")AtP~$x~ H^g8O cxNr9a 4cx~!#K ʙC@IA?aRfa%~(i֛߃WA ihEkoG{q"p;xoX;(o lk AР͐~"џ p_=eՄ@\A_`e46X5O๯AM ~]N<> s 5twAѐ%:ig*2c9L>$y!&s;^>#=G"EgT_H:DuCtS'P:3Ÿme _y?}5dNǿY?7c`hGA83Z@k}boX7-g]'[/ZoQK.sr[z1g[S?iߚXO./-ׇN sIg΋/O_)-|sgÿxEMRZo;IP}|?#yA^"Fyt |c :N+' DnbV[yIfZ]@^>ܫ egFiUDfFFƖ FIGʍ~x [#3s4 j;}m^50k%2dkTQBv, fd3; ܳcC+%Ts>, ~ۊBv N#<lއ'm[1&^־gIՐJX]vQaU֥iY#Kg :kAg#w6w6rאzx[)z{R){8a~hyW}ϸ^+4Z^yP咁2}#fhvgԁ^+#UDXNdu~vVfk{ߐ+[ 5"*5_ AKy9cD{eYJ0G+H%wo.0F)rV/ї s P fP W-.m8_kxHɼ9@'ҢZ8̈́CC^ yh;hMc{&: F2'x '0N362Awje cX: 0&țz<|VVV! ۿ5Լèé*H998v̀܃z_G Rx뫡M?RT;PzݪoF~}ejȩ{rL;SL6~lЌ0 ޠΞ+?I2<r_i^6ZE=,&JF>/i4+OHhbZHBxn1Plb#PWo;dk0S8h6hs<gHb%bU$zy5:|Pk6xA%7C#GG$Р? deZw`?ew~9-хՀrgЃ%*癓# "BevIKb_7u7oޯ2LZx lkbM:4l %t/fQw##F N*`{xk>1ϖ 4jңN{Xoi]z|kiʵr- lJ>V.J4v`R)~AaNN #z $tT%@6Db/+pDФh54[;qK'9Puvm`γV;3E*"w{߁3zmiss0Qmݳ4hp)ՇW[K78Jֈ'%N@ v8)F l @۝(<1607KZ(h1A ̻1ZeG[ `KhJ>To8#:ϮJ-o.=afIQN.4 F] O F%q !#^|c A pdxa7Qb"r"H |iD)5ةƕw˱wG@Dq$y#)tz 8= M.E. >.7.I0. '.n}JQr9F/I\d ]jc^*P?(_jΓ;M./2Ŧtƞ)}:cIPT=Zre^vC KIqtQiO"/GŮӠڋi^ٚөKOYTaCD4p)š%Cf`J#X%}0/6#)DWB[NLƖwb4zn&@.@i"(I#^ 2\jPWIu5h ?ٝD0lԡ Dr Y Zy$5j~}l}^,-Z@(:t5wGQdEu$Vp ۉavCpbmU¨6?FZdcoEpNl :Ŏ/ht1ZKgELkmTT+Ɩd?^2Հ3Yj<ڧs(?óۗEK~Ul5 UW"yI}YŴ,(2*aZʛ#F쟄 0- Wtũ΃njږ.Fr h4iM]9d>h)6GNᲘ48bENjgn"ʦι{OKAڶ`H);\G,mz6^6v=)-4Vlhy$*Yv6 12` [Y O$WrrF{Q1YLZhGĔ*[F' a0T@W\9 КvJ6Lw0+ ]Bؠd|P0Xm ֲO~_O~_O~_O~_7ۛt(4!RXd0_gj4ܩ'yj5{I=_эɶioYnə)&Z0j'UݤT`B ⵣUh"7Fu,yOcPf`2!>l@{T~vg5n< /o1NC:`W;]umPkDC# $iu!\Th8{.2$'1"R:߯F=S&tR,/Œ<0;%40K;FwQG1]uYBb|"$YXK9Qtq m]c%F4Nz%v;Gk͐TllNhVNh0d4aX8V6_.a?͡+"_fINk/=lHn>423#ۊ%9P̌ ,.> KKaaC *{V5:%Ӕ+bs9OjN66^_UWGM{uf,ڨQFR+wUsܠ-yҰ 3cXPdb+J ?J15Fڭ|a1Zh!2M32Ã'CFdcTQs{3%l=\P(m#DVy%vVf@3hAU"-x4:_#^QVm1d}(RPWJQ*KޟF>8m#:Yhcay VOe8IPD}9Ck@BaJo;T~T0vV+'5%+Ӻ OX)d;C#6Z-}\bJpAcle2D}6O ;Uv^79, lUo{&.>:pxcW aU:xE;@N2-3]CI\$ @c%æYc f%#[B>>e\֙ _1%z u|f]5:x ;B,V UV=Ӝ$T^vAH-@ߨt/dz:5oZiwt,!OC;l?iKS>{u-Yn9Y@f=<{ Qp1ɲZ6Z(3culu6Hm$g=Zb=hXJ(g6: 8S)mw+߮)8koc^hn( J$AĎ9GWpҷL &|aKlاO{e6ngndHhwc' f„h\ Qc]G4gqBm_0ԙ3YD16~Xأ|ݰ` | %===)^$\3\ryM苑g?1U@Aɕɕɕ+Op46@ZΣ>=SuARF#ߧש%}ɊJ^؏iWo˨{{1OV6wbm@it  3O Us1 /p} }rzV*wo UQJh^Eu Zp^ڀ{2EriH LG(hFQzedF6 'g&:Rt p6$MZI˨%N_$856ķ! 5F͗42?0A!s6tN*9Wdn0=9R<+y#`Aڟ|6pm ܢjDHZ(]hu|p1g8Ah^u)U҈@q@5_ B;DT3?؍mɡ7VFmIF%AJ0=֝ܦx#mܢͩŎf@hpBv(oDB[  6vzP&Ԑ)`]16q/ZC]r$Va4jQ@15fAOl"ˀrm]ŶMZ8X=y HJB5YM+ge cxtHT"u+战Ǖ]e?~ TqVl i|+j֎7l]{>lEÆx\ɼn05.X2GnϴiML{6!gc1Ѻg=tsgj\M`,[{+#3A& Q +j' '%`vYS_!yN,My뇇_6]I18*1WNB ɸMdVzG10呶JTiȃ' ƬO;5W6_JT Q~q%bʲD GĔn0X#vTB0btFmIq|'f-CgKdm{\ 󤸘j"I17ܲH!aʈ|ЎDrܘX#>s>yy4piW8s>ыSL)5T,nlT:>J{E/bSR y_({KX fojCM+[Ȅ5Fۿ5b΀[k2O3LPVX67SI|/M9sfu6Z\dmz.TP@7oGW =Dp]FAtwcŅIl<{4Ĥ.C4J !xL>hyZ)1 pPtڕN rxDOw aw׀+{0#5a/-ɩNU%U#|Q8/jby]!tcc_g)L$ u39@^j| Sq jY~؟eq Y& >$e?y!tdQ#K~dY^"W]zjf3ۢn|;4I;EᡶW!XBv4ﶂư%$8ɩ=ӳSq6ᵗ`{ӻnؑ`($aLEO[E@: t!*nr"*Ω]Åz3:\Cg|u5K9 z=Y7&JH(Cdݠf!qxa br[Ĝ3[DD(N8؆Mݣ`&B kpI`T޲RNJ';[.f 9p"v"y4@:xkZ-̱굁UAT}H/+:هZ]irq=P]zfC qJidF٬Kp–"Y :gY!YV0xC13Գ O񔃩L_T=6;: z&9`D%:"hPU2rOIj 6 sbT :DUX8œSUT*ứAԩZӧEeM8`޻0l7d3N-EںmXTKWŖ[T92wF8MV(༮}J1~ R̫:Raa)ZJuOȳq-Oph>PRRg>(IP5LBCyܪ tuM9խrV;q\@뻰tȅ~b2􍨑GkQIxLG[OL$ok(oSσ=%X$Qӊ&95<[ktPƽƊ@Nk!H,a_"(B< F z^ܓC^a8 %/W9I)CWj:tXėp "=࿑yn5(qZvt Bii\jTʀ,z.\@oCژKu3'+s^!~͛7م6{Dw&؁ӫtH?H8km}ozost?Np,GvEʓ7:5zyc(X7x6HD#Y0YoPG$%+LLcakKdR8|HS}6mȫI hh1i~ 4pZ07}|pd|;_&]>a-l/_$R:|箹=ݠ֍ŊFJ= G4o v:iNJjE1{WN߳6K^ЪU[Rm88" `5P8X+ wTև 8(;2,n36qp#;$urL]gS[sN _xܜbj>fpp`Kz2{I.Kdv(#|Qk /JTB]/~`S `֬}eO+LxY~3,md=T,[ jGo]T5NKPq獲`EǦ3EprP;5[tfk;p$!=s_U|XNb\{矉S$ S3W;5@uuA{%.&k'yP \ 5,+x?kЯ35IQ |ܰA:1sBi^WqrMT+z_]JLnF~1_>_-AƎLjfYJ t_vG/x7lW *YtUL(k?d?Od"٦̫rUGy?lF 2ѣ>v} :3%~?e[Ii@r+q̞9DVjƚhBAYIzui ˱@}]r$dsjvgREw`2ru$gz%z kDB򟙍4Hk aLm25mFz44yX8h޴eKI'rkaPgZJUf/q`!Hl6ٽ|4Э9k񐬾IFuwtdPOS1H?#u<&Cƛ,"BƲG v] F_#o]em*gēYLap,\0 b#*aV}eU_ nШ`@a34ߩC}uUD9ֻ n1(˷i|S^9)cʻ83}U|U^:ObT3݅b# nzcSՏO*$5}I~M70I-pQ/j\vE);x;q U &5Jq:#уk@, g="bmQvc3'1N݁͒Y~voAv0sv~`,gJ)Zm~ߏ4FYv/lXLbmeV)Ic E0@`%DIײcϻ$? Y͈QM!J"H);~b$C>ɐ!Cːr y' ?HfˇGyHfL.}(GxȘbwI.c墲7*I"`@M} q\'cM)D!QMUy; AJy']?PbEFܯCjQRS9ZI'9iC9 y7/:IrMLH+?Bnq%2uF$ȸG\h{51)vk42غFGgij1>x4DX4V+)OÒ+;YiB~6/k ? C={L,ѷz @8#[7FFJ$DžXF5B_w ^dܠJ³Ûɝ|h'֋s+rҚ-f6==,`0=I>!, Ux}Xʺӊ &K>]DPtY![XE4&׾XրgO;2=L ߲O)%ⱎ{nNqm&ϝݾ.4[dXџ38@`lZ-^_d6?[BE7U\;(A9X4.$FP&ZCqAC8jA96-Qjs&1}7ș? LȜ*fJ*NZ #zWw1 prFr G^[`wXHS4|d ؑn݃[o?O{wFU6+CPЀ>'"( bP䀪^3Kw^xh4ѡłUbɬȊk.IK`̔"G(4ZlqQזKtY7fʖe% 2AR# scHmH/JM51#dk0=ƻ!zOa2;$wb%bf4x?-h٣ACTŝudJFXV70'"/; W/kZT%x^۵CJer@Nb>ཞ1h²9&:e lA,|#ҕ"ʲaQ #J()d4hJѱ5b)mV/~sA?~ 'A%;m8!Gg+5v%Pǰn4LS+UI$֐ۍP]RIq?٥3ta"~E>z.r.2y.lxœJ\ok`p!}]"N.RIlȏ%(awȳYD?9 )G(m㏙}ȭffez =QC25Dx!r 'Zzo"^aH s(U"u ]?tХf$dZCLg_΂fKJ%?eAowt W7 F"ų+ JzN.ui>  #E㮫8Īa[U*%T枏ԈSjkGDP e !{~ߗ|Zd62EGiBȇ"_ZܚWb`8j:,U ".ĖrbK}>Uݚ wJCjfB@%{3uȧjb^$(V4}&j waL,rA\F{&dX WQ6n؈56%lsX~56CzLglR {4x^H[UWmZ{@}\k^ BQi "⟩q<Hn-)2d_cEf8u4BU 2Ud&>lA< PW) 3I `7N+vdG yڡ(D0ɟ}^`@1;Q*B0hˏexcKx5Jr$@4șPu n%W&肻Rpa u=}~^TԄv}^ JɨzKsQ ǥȎ(e.j]85SB*JQhݣ1M6k&`Sbڶ;uAdZJ^{J gJe7wC78exW##녲F1pӔfe;f*< ),|hJ<""͔%U5$۵6 eg( >ᴰD|3EZy|oIBȋ޻Yf1ܮ0ohziqJO/Sr>~D06,R.p 6m8MD*Z/ TLYmAdyeUһ.OiG7uogfJ7X˿v.Of }hDssUWy:.-zldzz2==LOO'ӆ'o#c؝ i6 (Gp$ E?9Waۨ1V):O4RہP.. yQSܖEwΰäY~u]L]O'KZeJ_G ok2SG2olUHWǹaמ%dN+A 4"sQbxuPcidD_Vu/=n³ @$_b2Aa J-dB&7TY;t ㉞/;f:/G܉X>6J҆6vK1s2] `6P7Nr.zN7hAZi܏1E~ bqiѴ+Zob/{=i!ƨ6&\qRv8kQ3E!HxZQ"S[,Xtc}C0خ I\ Q{;D'"R\g# $#ht[f$\]гoܔ|5wPjpv)efj nF1=g}HCCP;ז! {fnuy1'p1Hp@W'6&LPa`{YʿngsCOSJS\ᬩr^\<[b:<mĬ)Y#9^UmP+Y@IwH5bM<iI)GR/M%+Z[^O.MC5l[,Du}14?T@t*x ?tQ(]b/?9ٻͽ;!MͣM`=k,z,2l,p#Ɂ߹0pT0(8N!(g'0t616YJ5 y$(n(?lLX_)u ?r%Ъ}v@< G*׷M_PSoOU}Q/{OH1?tHT9WBR0S T 4[IS4bYGTg=='Hh( kj6=ʫ`){N] (E5DdBe{ EPf+T \FG%@;%7ԣ82bT/k҈3 4`(`~Qו.U 5ku{9|f_ <,8y5FS3mM}a%0άThUJF}KF9m]TurPV; ^ӒVd!|}&F7V"}|}@.P}GJuKy$>hOS #tz.2fN\ YH96T]D4)$فH+ÙA.`nՅIiYTVok$,2~72FӞ}x'R[96k[Md\!h1VK;D\loXB"p'&VVjP iGb;Y`2n|E?Kj?&eOUxl^q)WECq)ya!Hҳ47r8B>xU/XچjM D)ɈYW7hN(U~\e;ZjQ)[Q׃BF$4Ѓv6$eF5գK7V"5ǝ6j#R(GMx<V8{+{) R QEp4${M׈cوk*iE[Kk!3)S@0mr'MEaO7@]ỨHW`f\ 53TGهb h}c~WIo4)μɗ{|-rdpUHlw3앫$n &(?1#uO7Q<jj1TZItcjaM7cNG e2ѭX$U@0uF1"lrVsA]"yh境vPR2g!<´I2c"YQu6:q΀R*c4qmt'vuKn/)@&kh:0Mt&!Fg/"6t̺j1*2 lC_։ܰd ,cBNKSӱ`)&/jŕPd6L' AxQלogqq6)˒cc8/ H`# '&A=r R NT޵FsۭkW:1tT :W]pƉ^eԠ`)vJ?f.|c +QJ W7x *OUcSN݅Ua:ZT[]̮ NR"Q4čuZ'Sؚظӯ /+SM_nĐ\ކ MMEn]=nI, O"M0>"gbNr zMF_(q +mQVU%Hupۘ}TfN͢k`( i)] ^[ѳ;w;n]h5zD@&rn)$S#㦃=CucYA5!.Wl+<[4xġbE@XHP悈Nm\H. e7t^RүNɁMvr"@ 2: {QFN1T?([;I`:n *I+P66؅b? zW:"_i r7VB:vL/\5<&t'_HVZg5Lc')_PipgpëZGṑWP4SCB:*jUj5puJo z@ޅٍj_gPB77"V™Bohѥ8 `rft~k쀎-ut~`A8cdԢN`#څ9Tw@p"NbW{UFmi6bC0Lpw.CkKvmMvF!~,T];@u"6%y'BWkz<u+` ^Àt(guDܩ|ʒ?Ę4egz>.> J9i6Mz}?>2ƛ=E"Nh𤎴$sui֭JRUk0 ƻ!OZ:qJZ) |S4W`,)[TA҅h824DŃ<#TԇZEOuZm:fafWX @󹞖Jx$SmkiiT kӣ6HRu-Y()W *tbeMʵGp_"vm7=8@q Mv][P"cac %B"ZR73:nDV~m u$%-(o^h0'  i3vE8ǡXU2z lgǼg?|-_(XZ$[Buތvn1ˤ2ڝ;YE5IdNVC0cUQ-ͥTx5ӎS7{YSaxRj:NE7Aˑz}zækMf#Cު{M. *xw>G*R$=nAŸ$# g5İOqy( mLޯV$\3րdf&4uijPC' 0;o| 򑏄s(L#vs(t[/oQ}r_F}{Ĕ{>K(k : 0+~RY89VoEkF-.ׄJB ~#jB8ZB*LۥSRrTK[:i2^wi5ƍ}bu t uaҥf 6AR^[/U1Q 0ظN?e{Kl %p6x3p߼godw^4RRHW\8 MXég㒄x,"d6Yn5Mi8/oKg:[9f,X1;|ԧgy,*99m<UNf;$#Qig4ڋ^ğ4AEqύox,;ݭas _o;7,rJ90f$e<œJ ^ zÞs ?TmJ|}C^aUՖR`{4l䈐dm}GZK k0QzU`CdBv+;>b9bEy^ cHlGQbCn S ,#t׌yE )Ce0zݳ)h'*vٴJ6]%Ciyes@.Ct׺m}*[\Z j A񮢂olOcbA2-s£\:iL5Ŋ f0f'eK`@NJqR̞jf8r9ly}a-+︺ N,Bw%ttt|Hwd#E^OQ18$Ki%K R1jC j3IINД",0C!i[g[^x JΫč~ʛמt 85FxTXFKwx|c18S@t?y]'^Vpk'~ uӰ1L?〚>QH9j)dmiK!l4H$|@4J<*7NnbSJ0L"ȸWlYhdeSB(C3ggu+wUTSv `=xgm<?VUʣ3(J~{Y%룀qHIz%Va)[CǠ)S!hcK]iRG7lm8QMz-,7M $c c e㗗MVgl6u2)J%N36bݪ'#sBB^D;^Sagyy9Q b8ox)yP~&mG~#O.Bnb3}ڲr7$ikVޭi 9U )'A?gm#iר߭Rj4%U({bH1o"6 hve e54+K+WG(':r4"thpzsT[ױ'ھmD(ѝ.Sw*&ÎoKz;_m` 2>x{U$TU4l {,"=C 4RSxaQ-A( UN墮c~6@b: 1/!~& Da3`A|!CrB tI'@T\`n 0'̟'W mHYDVJbqyQڣ< vbfwHc(6](Ҋl νxU % ZӈlX?^>'I{D'H{!D<%if0R=?HĻtG*Ѽ< q8 Xmm"=tO2ݓLw? O_3\ș\Tȃ" ]i"a (8| >'D%'Ht L+5m~Ń1A?{`~kzoy;+ SyȤa]ޣxvJ֮zr^qt f8lybdGjU/`diކGb: Do (R蛅b.k%i-LlIL"W"4BDLv9c09u=\"VT{I\3v'WΞRR ^|T˹!.~,! ]Wg6uonr<(rRi'yZ&eV|EMK *RũDI -2VVASO5`d98aa(Gqr@Wk-(E#ZxMv$u7)tzG$og"{0L?P;a듖$eW?4Zm+A+tε-ԣFN ]G8,1)ׇs1p^^û-}Fy(boTAH>S+ SBny66vl)߷Fj1/OP v_AK" Đ&hCkCh^PqZ]h:+#{//D/bPᓥy<fy:6aݡv-Lʸ%N-h<:~[Y|EuAXXǼe/ȴрQ91"@!ۙ0&Ih;aޱ^|~m8 ĀXJْ.f#) %1tw~&vyxu 'Ƃ#ȵ| —v,r[].}۠Q_Ky~w̮=[Ve(;y~qYӂ>jPJ# FnY6M~Δ^.~pWLwbXGf5) H=k͢Mܖ̅n }a N*X<ةM&sA1my5I٫ʯƓft/o!``*`-Kj#{-c k2CVuu+u+W;8-iq#7%D 8y)QYF%fv7.vJ3 m[ίm0i^ӰAb!k 4 te&77'K`qvRCh *h6vn:Fd,"MEǡSrSӜx6UC H1M(l.E_'H:[ɐ;?V lF*R,_A%IfŚ&5}8#;Κ "Om Ci ty|eO?XouQ#rj7̑?vI%D6.$7aLFYOeWi1){8UY#Cӗ yqB ݖ6IvAV5adC.}E.%`xX#!Gq{&+RvO)g6!j&򽧒;J ;GCkȆ#+TH;&*TJȱ:RDh z]e% KDf;TpzGE/+y⟼}X*zޟWS| [ 2ܺ&ˉ t g6]@t>sƋs>^N.4qj19GG;ˉs{=X9r Mz 4]:_&ryi}˗p1^.q\\ޝ V7;;٥q1ߜd.' 9?E9tVx'A3/TYAu2tj<^vvX>OKy:vJ8v8Zl9Η w`lf<_ד !uɗOŒwsOw,n38z:^|SXb#d]ș_|4ýQw7]S׼hzruD+H,؁8sf \L@G6o_>~/_'';+') gS~˼Z[N&7tl_o' -(,_qD^„P>~v\>0, p~ 89~ aluƫO'_ {0k?U"v듿ZN6~>jWӹ/t, \*G/7H >#Aӟwvr9S㟕2c#Tsjܨs{:pWډީ瓕^zGS"n-oL>_/wGвߑ+0$Db,s䜻os| O?!|D-K:u8~ɂ9Ie7zg jqi#pQ V7q ~ ҨVi[ s!ɾ0A/CKG#AG!Y̰e9s{+q0Q7^m߇AH1Ͼ oz%9=mf, Ml0rmTJiQMڝfm^7^DىroZ99o&N{7C~ i5gGәe-smmý16~GV~^Q?sMyO&2 ^#pϊy0l.;%yFNz{<Q mTp/RO)]{Xs8t)L%OdhGwFcG:oW; Hu^7{ gkm_Iwgݱ.N̝ioⰇ|W5ΆO0] Ԧ^ܔЎ~%xb86{q s3Cox˾>!Jޡ_m?;5}oCڠVnW:җe7i4'{TЈ?LިYunCl i$ Y2,Zi3ctU}F=@KďZ! vo7-; L&6s j,\hC"$QDO6ޚ)=WO6ܯ 2{1B>ڒ ң:t[h3x7'=IF:./Yhfy0h54H^(M:n w2qr;,ڎʹ՜`o4?[r[#5|yK>^qß/|Ǿhg|%;g~ "5Y(\dxs}/BG:}xtvgWz:6<~뾧}U|er7Npf(/824inrv]MD 6z!:%8I6S(YUw*M;Jd亩ZDu3${Dz'K.P/R :a^vZǡi@xn-3tPډ{Dhn !!yFAf_;No1,Ye3:^u dxeְKxA^+:o `;p Lf[_)U/hZHل"9/B i`%ASͱ|$SB|o$H7ٮZyx^5qS7eֺYd&%=+^97p~Kߧ-^Jc7޺܋oM;ՙ\/'_;lE\U,3c,~(!@ [ cx(nKϒkȗ<ä mf?l܏$9VO57pݟyaf4Lhup6'?I;Nzڇsԋh|;rݩC^VYVǮ3M]Pv嵓O MoOM@l&Kb36(_{YBg< ƛ{҉#s <. ܁BH iJ\6F'O,*&LU0 SgV1PQ(o1IcX74~['B! }=ALj',R'w,NR8n{'M p_xXg [G{AŋD~Œ⑹(>^o ^[{6 ahf {P"Ղ?ʀbXrzo 5}eT9~TNK'됌h"#}zdSп ߇>n~/^o>5CޡtM0=[8~?j wb!6Uw>ly d}'5`@ԯ Q 6ܧz,~lQxQ柦Lz;|O_ vwVov?8 Z<ҭef(˝|ߎpibr1lE8Ghu0BKf|t.'G̲;W٥3v.ˉ3]̿NoXx;fGs3MonpwvX$kGYpsӫojK|묾Jr'鼄* Rs.0N*Ca?*/t3aE~ mMDgV PR9 >vvk# YaW],TP`, *}Ƭ\7nZXj\a^Pu it11LOr:,ϖb9L3%ZYNf98ǂ߲4ǰf/j1ȺPa.l.5<.v. >+x䆭jJ8t2V+g,g|r>M/'̇ [|! lX ptn`iXOs؋˝3ܿV`0M.#9Y} _TPWQ'J=v5eYp2788@+m@7KC|؈lnkk_0u02R:gFGA(Z-WŹ4}$E<S9 b D v la5sU%*8ɒrWyc_ups8~{_M)i5Ε!"#w%"1&3I̮Fv덚mwῡmZ K2plf2Fu_3qKHp"Q ͰxK'E٢oqLƃw P[jao286hˠN!3H#1!.Om$a}eP Ố|YkK h;w&<0x#qqq+De&H֓S,}~4eoݡ "Р y3,pFk*oLW GWpܜA<];޽;_xbp.$pZt o2PfDB9>*͆~TV:._%U滽nM!T_4uT+"hX'& Bf!1lM

>gxV0^ gMO﫢lJ'> ?ig3 Pà鴍`_5k%yYJϺHJ<&S' %ӖZ%MTcrD6<&X8p8GÓ yp;(aL#vA%MSz(OQ5WyJԹm[);?rg?8t̒苖 9A2cTyJbl]_{:_ רgZ5PsڲNHv\ߝ3y 7n2%B6ׁ! Lu5}6Z)m6usO^{*أvMsAQ;/.&+Ġdp<(N^L&xf& 2lR_L =) Qd >?wD* ]Uvz״6 OyDʡ,0JEE&{)@Lkfom+&qE7 JIr;oH١.v (X\?+) n,j/ĦnS]UKkGcJd_DPUn wztCzGFT3H'iB.$Ğwz :A-9M.#;R;K`%{N\VS?tC %Z.$0Yva:PZeX+͋DPO3A͏zNʬZ:oq&vw\MnL^1n| VqrKek !Z^Xh5}Bˋ,(n+f'3|qD ౻J1 ETсJ8|A"Yev(8R{ | y5 YCͿk xra>UB6ݭ"d&n茷3-6Ic ЋEHGl#->H6|b!=6 ~ M`8 *F,sR`#0Jr#St*(%8F舺u4;{jC4}SCF 523á$¹D' =vPPN>ZA9+umKt!cW3tZXsX2ʎ9g1&-^ 㺘| ͠JzA@K;AN}7f6SfBȳ3l6GNBǫa-UVyBӯJh;Ӌ|9Z􉘅+8 Q)p6U"]8/ȋ쓏+LJŢWn ًc/JEsK1g_6ƾBc_8>?:,3TƎjsEc }%wvȼbY4y%}EJDž} 9%YPB_ 2\<,^ag1 [+~騰_D7F$(N5֊9-/Q6+yXch/v$J=︬7vX7V>.Fg_q Pc0Kܛ%X4ƾ(%AIJr5aec|5K@3^9#1$0 b 5 ۜQ)zʄpT9DJ;v,_v} :/E>Y9Y>O/bn‰TkFjYj܎gcuC鍥d-1%ٔW=ݔ^d{x/x^CA ξV)ڶ jUʬ18@?<}'N^KIgbJMv}9,&:(y>Kq8E{uT8* >ด4g ~q;:$J>6kQ({.3&Fw' pЇj8R1e5P:OcE~+\aqߛ:Bm*$ecΎs^p̷ c;phfxt ٥JWj7#!+8 {82$b\tXR|":zq{ʇeDޫȲ3\Mo(vv \3^gOc?^_L~w^^:At7 V$H{AxGf\%N.>`rW_2Nbv.! ̂0+;sUYcGdh8g7e.LNH؏^3]!0|5t_/'7%@e0%•}(<|!؟§+Jŧ/ӫ Fp&&vLR\^-?Ҽ9yw2 #hE(j 5="  83aQ4s\>\Wc)( s}F_de"*^ @K/dֵ?6ŮX |6j~{V/**q.n7 lic{W&Fl䢙8dӏvo%:޶='aQD'W׮su:wɧۃ}soYtޫOL^i,StTo͋-AG὞ζF1'9lW(S}5ℳ|Yܗ5i|w&er<~?2)qFj}U-nZQ4F`u6Deįz~Tg_%1e'oDQ_E5j)JN'+Y,ntz3%Ϋ!w#ww-[{eAm}\hǹe ts9 SlHrVuc`/`kk@Uhc)Xc6(BhbC҆5nYU|g[IWZ$ctkv |3GHܰg;,Xtc%ܜf=K&{qc_DѠ/RBƒϯ/uc[I-NDu)K`t0ᶾ3IG s+[Ḓ$vzBd5Naf`1-1"Vw{qloo /on04es꓋pʮS!]rrfAϯ(3;(`z},?Ju9 P*ϋ%*GY/V:h4w?.EV @ {&xnה 2Avj&7T/ézJd+"r67NvHI5;'pFIGʍ~xL7R[k,k9]lhUߨ횜"d Un/\%|ꍺReg}sγ-C['qdd׾Ǘx"3tir_/#=ZjPH$aOZ<>f_qGdMY`2 ׼ƇX[P_f_/k"i/9gWXNhdYZ}WӓnFЗ6WٜxfpobTG} `Co; xSg@ӬtH7l K^ok?[#P)>!‹eޔHO|?lP F6ЗQW}`T9A`Vm\qdTCw+߃u9רzx@uzڒ v0EINF*s8xRʿ[emX5[TZd<P39Rm:==|\)u{@5h G|n7~4pwNH;uojsoec`{>S뜋/L<._IaFN-B3/13t*#ZZ& `(@B<#0ڝQg*J>4xeq;@ 1d:ih:ډmޤ`WA.?MqVA/PGj=u f!$B%֠A#4ތ```j(*p;xY HDv5׆#4e>:H*.K9~Hxr{00ë~;T_ *v-H8XRFWi7E mdw~t{C_ vҨ+a+*tCt׺lˎ[ z q5 ]XJ1}cvn.ۈA-#DޘenDRpIjeh#ow&)ͺi h kPm-o XW<@] M*+VrZa4]9_ D%ȍ. }^|=Kz֓p0~>.ҨM-+BѷJJ_.M7}j"iM޶6Xgta]k*Ӣzo{#;WkU-;FjoBӞ7Ҡ#No!!gr0p&a} =v7eDҭ5vjٯh7aovfJ͝{ܦmQ\lps0f0x_}ˆCM䋼BEVs-4 CHsl LY֕1_%WYbKuS Q,K:ޏYjI5EER<";R#G$N A;Lq+b(Q>AU'thңiʆc:mnp=,H{*|p۹Z Td%y)*im> )\(UrN4eGWF1=+ݿ}}Ut&i+z/_K;lq՝Էwbž6D&lҦ J,}2sE?GsnωiY3s/Џ,b*]d7 |ldbgil%L6,kSmdS`SQ-{AW"+A%z wE3㯒 F+C`8H[[ snppPXܿpl۟7\ bOY %G) ###U8<@Ί?`+[`+1rVwl֓*AMNkqj_f(LKu/U KxM}}dOx]p`BG֒aJSI F{䆾K޽ TDP/;Jtp0;\#zM:D)3b?"f J$#.i~v߮-~ot~߉acq9iq4D 4R'7}DLJL 4>RQKJ#Zײ C`K*Tď[; ~y _dN5(@2M?\޴p2gj`2HӦ8L7ɢ X03zQm68hF-$Cdw6/|nu\r^0*_Z=%wĆb/h:gA\Lf~@r8 quldE-h=:#ac-+lMl7"ُbDC C^VG "CpQ4Y ^ tX  = sn-ׅm[DSBnTDVg>Nz7^MUd-,ιD.؅ #әE Nf>e&B> 㲮37 G Q-'p7J `7ZwJRFm<)HSW.+Ҍ;C(+| Viu5YcrդbNi3;}T'zjxEbc$ݙ8r{Pzl&̒.^ 6Ƴtݨ}\s,]K1o:fSzoYJpF%oDnsJ >PD`tZ薐"FHGܚ0yE/B8<_-7GX4ی<[r@DwXC@>_*'Mk($U4f.J壢TRE xǔ~LTI.{YxSv(ArVF5G}UUzIu2r&^e$Y+Ej> /Ƚ GUpS!Hz=QыyFv~7(iRCtXc7I=LsFD=BVV7o9G|nMhGy30:A*]f'؛ fO0ڭUIuޯ׊\G$Y=. WF=ms-%(^c;z q+/&RD1C58Q,˂b|y65)ZI~j<:Š!%?h\&~Jiim$U$\BZ{vKwo9*fE#,Bt DǺX!' SW;z-d8ʿw"kGM))\q64J,p.`1,)}FzMp"{:˛~CZi<ؔǸG0t+ttB/Lj(*fܭ$w%,hrM*1 qxu%*<,\6;̜"Jߑ6l3cieOńHp3{\ːv W4Aݥ[]dh,gǭŃ:Oˇ:;7?)yKNÙj_hʊ1$ݝsf+ᗲWqSe'bD 2C=` 6;lX,0̭imp_k0A-`AL.1!Iɍa,0=Xq Cunz&w _?ǔ( 8~T!d@g..4>vT8`LlsQSJ6-*^tb'jSyFLKb&MlR7NlPBAFjQb~6:Ewa-ﲼ^!굮Xݙ[/k/dbnu1K3Ү+`6}i\C4bn,U5]oT>oaX8x4VCyK{iv/p)FKnW<,iXrj्$/M[r6O/ rq7cUn?}? ~?yAiT?џq4L-?鿿Lgwt,|uG=[.泛SxgBOޑgIlYYK_~U[/r"o5}J%ޔ9V`V%F`9Δ J <)`ATpF]4:= OCŰy,ǦQ^&T QNaD c_2U3dpuʸSx0h!Y*6%--,vˢk&%',r:M-yIzzouB(XR^{&ʏ+R bt| nϢwh>la'rv}<tF3 a(f Pkm! ^Kf*V]ɔefD#5њ*-["/6jl~ 6AT r,'u(I H$Z dqeĒ7kKvt]JST1Dk*+k= _L9PƽaX=XEڋ 3?\W{$ sO ~ OThɜzY [)sF(.nv7҈neF 4CRp|sup4Gh"j$v_ǚ-Xe|`:y^Mu4dVT›i^p=8}Ђo~6jFxv †VooZ*-lKQ﫦Ŧԙ+^u:0=LDzgq2Z9;4DB<,Ԩ6]Lfc!u=~c6 M a_IU呑\D/(s)! QZ5, FҤyۖ̍ʡ=ǖo7'+d7B&HHRV"BN&x^oyH#ؕ}KnH9vO߰aL˄g2xJ6":BsCZ\.l!dOdff"e*۽V9VmuɆb=6k?hG%#zUL^մD#u-+@;QoՍAA~U{r(l # 3Â}5tVY]+.o{>Kl͗+䞹MrޝEC1kD uE#@פ#pI >u98\0$C /ƳK61YLnK3vĜͭ(3?ŘXn0] !y'遲v]坲-UIыXpuEZ׷ ]h3frWㅑau(  %a]L%f.Vh1! &\T]\/kl^&K3=`'L!$<Ԫ-xKl4@Ydr>`~7f%kP{Yf)ǭQyiV9rd"Oh?Lp⸍_Eq7pL 8n G._^7:r\K# _ʹt:=\Y^}=B[YO)L}cO ~B 3v )¢g!?105p`.KVx%^ȻH@ ą=}!amPm"#T **KCdj|vŧ#jaVaYڌhU9'"EuWCļF:ŃY/K٤X _E _<\_:[_:_K|r:w+gitsX)..%9pZ̓dth !oZ)IJ1H!8_#^fSmvޱH[h2.0[ !jtG$*v39WE6\Bfp+_hg+[$2:bCHw<8^yV INM`3ILωU΃eAQO.aQxq5 ~u|~a1^G/)das)9sÙ_jۅBD?P3F4t0A\$&L<-FHؠUs\T%ЌZVgDɩ D@(I.PyȪV\ϻa"vK9t(9e)lݶ_i"T+ErYph~0y,+.,\zk~`tQ(zsY+PA o{Y"@R>p-I3A\ŷ4*F2 D3{L9 15Nf]DgϤR֘&솏υUJ֛ ۿ0ԛ|MiIۑW$3ʦ1may #w̅r1^hZ_I6v E@-[|&^V)DM 2[+`9B}) ~R,òsnF;6XQU NU,Ub _NrWUE_<-gJot=cOPFSЅR4OI{EOgtԜ/V@0ؔ,wK4agNx!2du GrxCkg9tQ*Bt{K:O"~ݒ X-' * x*ࡀg+򜼅dw5z3y܎5佅Ks¹f9#0_y5Wxe{(Lr]Ö=dȏ,?{/ɯ9,_с |6'1:YV_ګ׍{#R^U|+"!J{@7_O7a[b 34ٰ|4IJ*E 5mʑBt0(Vp?R0j0$j`91,8aBrL/?C7H^/9lw#:AQ{},7YACRӿ _Ͽ]tpp#r^t'GHcOh h? LF4oo(M^nA7`>EAL/>x]p?2v2B~p1)/ wgM}y=| d ߜߗ|}8mKс4YLz8GɥCOlqvtt![ cl Ӡca2un4_+ٌ\M8<'4WsXRGrM4D)wga4lF -$ KЂ?^ \N`y_땋bc`t9kQ_>o!t]A O.isbIӿO.V!q5 N8b%P`|><18*j'@H.)6itV1Q$ tI9|Wmз.~쒓{Z}uiQ l  v0,#zzmVb{&_>82y.sRIW. nq1!!m+ϧx5/>^&w{ pM/{7=8>na,Ni2H3nvq^s|%?9~x#"^8z?~:5XwMPDZ!7b.v%Stl8 u k .69vDG\ղ8e$z+Ol]$# J!g.:J|_ Ht%N\{r]FN7u'i>D@ #-^@xJMW$o9|un/ arӕ, uIP3ǻ1xEsN4~6dF;l gBc2¾邹/'lvNSnE.cg[ 9ܙt ZT#+dH14sNf,g?"%M]n(1.*Zz2lYܙSN>ltz@6jDz"7n.V811I(#H-$RAkvaAܚRlr6!d|Q1OIdlэP:^t9]e؎k'mX􊂼F7@|DqR1ncهNYx b%lT@_`/\+x%J>͉Fӏ7c~-Rh>L;pT.|_Ad5V9VA\c+ yz v ,3YI`.ϡ:6C,#Ă@0X& ^!tzJ5ǒh;?p?֖78Yf#>rMHg7|OP"]ڠE4$p.~:֪F~آ3͊d\XbUoBThqs*mS^ey[:#nn&V}B &Rq'"BUE091gf6{ #5£ &JP"x;p2VY EjEV R:"r~}'p-N|?)yMOGVia+ANޑfgd/hA6xD*ʮHq @J`Cz5__\](˚F"bVc Zb3pv@0w0qjF'_abfzL' @]&+pGFyvfM]A}kQz'FStҦmP[O{9LvNzU8$&y5.i@)- I)| b$=/ U /]C,0GW#G|>_ךr L-5$!  ]C%k[~B]+@Ea\[.[ˆVY,n+s\?RG'p}إWy`Sf/%3ULi;2o~~\̀:GO7dD`g-Vf$'j2(@up'.'X B# ҫI;KƖ`߰)] ùK4zYHs5 ZaQ݂nX$T3bzU׎\W8 0+2Kk%Y*H5VnDl`cf^Nmn _/jݐ"|~,Ne:ϙ FOb\MQc3r{[ga+@Zte `bb /f̜oa:dw8_lE,Vv*JaHuL'ިAۢ0IR'&OksmCujA nop ^wKsYzGBhАȐ}h1 \|-',zq ob[0X%, ~gi^jLy14,#=cnY2ɬ?*#K{{^cv+x5հ*~j&fTk nHoX { k|JcmӿZ,W׷@~n̸LOzuw}m)/O>%x~\p9]Yy8Rǘ???oC4f:[EˊzO 0#lm(C(x*EX1^f>}6H3^a#_bW @*A^-V~hbof[7rz!9A̙L ' #I8[ᣳqH#Wt v)IĿ bRpNpiG Aɏrymc}+W 1v u6:+xv \? E7_!)B_;5+ B_Z^:)2D  \xfpb!Nw 5P 6 @TqC^d8Ǘco)$SY7o>LB0_Qt?;N/>%3l9i)+ @DSDL"I5?5kl'p^2QO VNrB5LيvLSF\N8'ǿt1%_J¸[u9aD;/r:[t81S7fTJ7)纻\gߑi> u?7$_$GsJct QNyZi>|Jnͪv Y&ŗqSl4Wӯ8OIr!>_x_S/L6_q1#_a<[ш_ KNPtKA ޷[,'awW &ރCBa$1%7R9yϷ.KgC%zD^<*qR5RMIurzm~uv8Xx*73Qdߎ)}5l$[]R:: ZnL͝9/Xo;Y(j.>S\hzsQZLnb&, %.-~R6xȢYfA{Pa4x_u>Pچ[$|ˉ%Eø5_QbE{-˄yʼxKu3r_Wcda[HdJO?\h/whvx3;gn. Q?9FҧIcԤ!453b&V&B6.Χ.h'X]i@BvY 8DU}25_Å,CYDH9cD J!Tpž vȴIDIA% iW:jY!ègM7,Æ5ń[RH\e'r~`mI@ a(j~*f+XcMDad ,6X@NY_# UB4cMZ6њ6bLAyszI"{ ր}s%gG~`zK{_SbDyi׻ -MIr-$D Z*KF-ӆr[ Jh ^$s CgyDG@b[(|W*6h+Agϸ#t"B?j#E _k/O $ \$-r A"H;-$ @i|ը;3^+3-)bԣ>z9 N#bqb`ɽ0ic"ډC/MldGU8/c L-&J'ђG_6ݛ!Zv@Mݡ^b}|brd稓e<jv.b-e^2 מn234ͫ*$ZN h6 u)&a٪ri!SѵLI- 2̩;DC4EP>\fc_[8ҭr%md X E'GKEdE~]U傉91N7)/8:٬Os+O~)?GiE0Ld` .n6r"Z4 omXSR'#ۄFUBXf ;AMt@R$ ͊d H_rp _1Lk'\#[\?==1ݯ&( ֻrsRL{;U0pW/+3[IXI{D syqU,x̚Zlxɾ&ios TU`4U͒Yvѵ<ѥ-4؎x^Q oڶ&оS۷6E֎)2m%4]F?3Kܼ3 `/(}Q`IDk~&"2 㞝N+c~LkD2&b.w`Ż'U06)?jI NY$B._9`L1[O(k\chPbE!ÅR sCw'ՓJ!2Q{֔*K_bC j^<Ke;z!H1=o:;CXsNG nZ4jf3 _"Vlv.>^u* "nb QRP$aCJ֐|H?p9qǍI7U`!&[а`NW/`xgAxۏ3Rbr3=m|2L$,}p0xH PdǨ8;t BLhIQ녝Tr'3閿fQӬuIki03媌v-c!AUwc?g1L5>]4;L=fas#I zl4W_S`&q9X$u;3 - J:*@}Q^SE2&s!V,:_6aERy<'Ju.(#" 7~XHro;ʯV4-n>O9SP k~L+Z&-3%t`jIDA.`\qqR+||qة.K\_5@ E ?T-uH=(:CwKɌdq4.f }1{$i^L@+Q3:2CO;$'>}Z1N&+co# 4<AY\6'+aԎ8#P= tC #`R(aCNFRPNxBR32L҉~:$o`"OqPI!{:R,"qhye>9MGybJke;in-rlk QCQN2Ag6l̊S*f4&I*BVK |br=HsBZu?Ŕ_$Aw,b}<5]ȊRJ|]{W*l?n%GEUlK!.{e~ؾͭ䋷|{/ΎL&>*@c+oEx  ÿh(DGFT"J=)^+mi^6쵄S%~Ѱy' )tIw'7"AtJ{Xt'muU*.UؘCӥqRIqoeQSnС>& $8û-8<Z)]08=ưefW S. yG#j+A¢c!bHa R0]?rYFzRD8eK;P1 J:y1/˙KF~6j=q'MwzmXj `(:؄IِıFM.KAr3[vC*EVTȊeUj"!">9z~  تGj2d#˄(`ߟH6ӎ dR9Izx '^4 + 5̩&lcM+tchB!:p3lκmV5)8I :0 6f -wݍT5% MU4T!XW̥T &)aY7j'pխȍ4_{~j%ₖGu P~\*XHk6)0A_ojٙ(;Nt;扞@myCO/¾#lQ,R$(j<-+r:"n=$?%#H"WgWxlL?]8ţ :?&C~$cHR$=Z6sSޜ6Xx%1ULlhq*׊:f^JڹtBiD\{;:Lfg26*uP1 {29$BtP$)E\F'Kq)T& n[k<|H$ -W4?υڦEKMi\>ܥR\wYm1"~Hl pͳ[ja^) l0 B|$nԕͿVC b6h 7!Zu[M` b\[U)>\Itb<<[c|x0M$O%7?N n?p=8FXFaWtv7 ]ӧPCN3> $[&l8MA5qMaǕ~|󾂖t|!D憡$@zw+Qts c4:#}i<)ݐ9^~aÂXY*b4(&JF=q> wb 'qUr\9ZUG%Z*AS4^iV~vNT_q,/AmDZ00Q$zOj*50Ұ28cA"ID0kcX㡧HRVĞ֣~VEoWD=jsc Lu57lg8L[Fm8&̀5sVoP QnKr~%2YZH\hW9P/GbF|o.P-xo@eV\.u[A؝ MY4QNǍ.8`?vOwy-O0; j)zT(UGQJr,$4D J@gk6옼h Ron0 > -*tN".$U=LdMha|<<JO$ݣf0K|KM0tJ^k=\(kI &ߠdԑ_=j-ej[Vy?L7%2aeW)@%m#VYm4"1ߜ ʴbZԉcCڭ7)Q)k $u 3)<GMW|0Es~/nT/n/NlPŊMŋŶKEC$7Ix+*>fb#9AV22\ڔb+VImD8GLVM൒dX^#L'J??bCB t PQa[ר1w1|m$ub! 8kju:AgF'2CxI&KT?3 ڷLaJTKɥ\ˌ_QWs/:Vp"wH2JQ_SKT-3-L:-!m<;ƻxJ(oLkIܲ9 orj+YDuTA7HKmˋT>иCt9U4Jfmͅ׀s3_ fݚ-EBk6΅k Dbf%׀jiZۍn):quJ[)a`1e&ҜʁS*H=˱d!D9#md Bh3L%LYX!QqwFU|vfCI3[5DŝveFW 2exB j+ PT+Q^'JVf$f\WebFG"cXV|;%\ E<ٔms5\ mj5zi4+y"7:zy\$q3ڈ4>F0TUxY'f5<<5Ľ:V *:%n+lEdצljgN_Lj0;VM^]d;f(H :FhkP.`CꪹZ?1HL bNUQ`5tJ9>63l$?<DnZU`q9UAG7wUlB:H]6&i$EW1mp9̖ fPӓT?'JK38lkgȋf!rr3{=+J)*,)h4@8^<&Q$.w)Ί{e&\M+l$J1ftWT9(d JFzRa$"CD6hU,äZ45)MV7?'>*!Pu@rHI]UY+##Lߞi['vXęA]LhA; LFѨ7-AsO Qؚκixt+xڅ ;GOk/^vr-Gℛ/ga"HAkqϘA›kk0Gqn8:cbބPX[m9a-ʹ[10\)_IϜ!LdSղ$I[oP:גV9+hf5/}}yX2r)^ je1SC]("/*o@` = uc ]9;O&f׬oE1 q Io$E$=|I&ZSI8 ,ƂVRdz^Z5~>MoUOVfxv*.1qy; ?{K#qJ7'zI/^_zыoEfAƿ5{ZU4H/c0G^aHmfw;_ ÔStM'`4\Y T*௒6)3(eJ&9Il/FSZFlkz>eV+>6d]vOd5=CӾC+u~Z݆%WLEWۆQ 4~4TSnMry9vWu+rEE!F6؜ae(Ay YIل݊mXёG[Bܲ(J nM-a ]X]g)u1$zƮ%bGkхɬ*@`-e2MR*K =pw[(/p0!;A;0MS 3PYވƎGJfqD95a+ye@5iѫ(-w|503%T!~ {-2մĈ:/URT0 aeZW*=ۦAKfEcMQM|7'"B2ѝ]ƭe@z !+^鱿rcBe$mmOO\uݭ#e`,%E^Wu>f͓QՋT"iL9BU$|_ҜO~;3r0*bۄ$CP(g ?3'j^8Ws;%XU"m.D / jxĴG1>`';rVFwGdڵEl`dzyw-; HY/<.8K$gY!.3oGul\rs 7>m5*JΟNG=)`VKAy8 `c:YUN51u7eT=^=_~zMA TniNAiH{:-Jׯ>[{,.?fYA{v1\KmxއJyj0d>\s?Ŧ5q`3OMiݕ6=YћR wO&ś,Rg.89@&?@^C .ZE9]J`7ݫ)Cmdoק*1si!0LAS0r]P.n8:BX/an4dp8&GZȎQTRs&H%nљ:!K;b[# 4XhPOU,lQ1֎]]_lįv2R"a简 Q GeQ-+'ZFQpE5.76Eu,(sDcB6kّ42S5盲x(ӾOAlHaJx^"] H xSpUB0a fXY;ړJ h Zyͳ x6t*aգuf@|w]  #Fz~[o8&kw|+=apW!>F&}5qV,B5xUv̤IW1$41{fob  v6N4nUJiD3 ۬WU[!nZK\ {k%D5N [k;3Jl)h &d09:)  DhpFj6| k qн^j "FIN j8p7A8ّ\^3Be@e ^cDam*"6@AFG>7( l1,P'# "4n 2:1.rLXv\{}U*/JG}/-cSlmCRyD5Eo] #$"zt?.9F"qE6:T q@X(sQ[EM +@*:!;8]F@ؒ?橓nu~՘rZF;P;թ0e@Api1:-uP`MKR16 T1'<$(#J,ܞ[@maQ7B,=@,FbE4z (T/3߀LUy]UPb1L{FvJlxyýWoyGLJwk7'oѓJW'y{^s 䇣Z|x<7w5O<)N=PZAx-7'I*?6!.4۬7AyRZ7W~xF菡cOoac`d7wmyQŌ\;WkTZ9b2okwNM\1IYDW}_o ^;>q9!55nGw,N[53Zm}$(}S}?D+&M48!AV+ۈh{ Pf6.eߋR(c5D2@S@5@D8@K߅v=\o Go*4,ҏF3ҍlOʛ/rj{vw uh<"0#Q㏊ivgNq(ܷi4V4h.๞0 qwsAUGa[u_pf%t#ՈXu>N~qOm*3eۅؓ<8h(OպJpSϼyu COns3{pW |ܻBM_U TXo}Gg/?"! k8E=۱,Bߔj_qQsڹ&)7/ÿg>me/ޏ%j,X:RUь(Fぱ$Sz~SeW=|y 1\+1Qvp0$$A.&1C2( (7s1fnql-u&CF똤 [#D9'?f蓻KP,E&fŘO`/yFQt@hayxS{? NqAG0e"EjtBz-YquA3Ed0.A8b6LT sw|1yL!Q$Y ve/:iSpQVIP!04JFe,KWFpG=n} ٳ,Q˕ן/۵?k ? ˋ"lÆwG|(Sk#Φt2GwwS/jֶ]] Ѽj׼H]uł1gPdrd1(g Ĉ&Zǿ;+Mk/rJK3d$'с|8!p,c ?Lmfw!g2)$G]X]IBoUA(Qpߟe֖o%~=#'T^kQ.`Y)'rˁLu=ݯZmy[}ÿEݠUؗ71Vs5l-C:@u<j-6sHJL+]bBZl1x?ZNG##z0 9!Mr}zRjpƻV#uopE4;ǣ4TVt2>y]Rm*qsaRTͮPKKL[/Oyl?SgW/ Sܑh/" ΋.@n˅˃qsp:yHS /th9C :9snQO^mzyAZpvpxMҤQӥW+Õ xxZ0<5&(vɩAo[LGF En3^D2Rv ^b{?%VJ香SU!(EŔ[t5 }lI?^>kW+U+zrU[8C  &U_ 5], %.px4lMF!%*13z]ALB"] vE]ÀP{q 6t0TuKn@1,>e4/VWfCit6vSr@i^&ʭ4]j1d {;ݳQ U2dIn ץԾ7Ⱦexm9N’ +xKzVX S^ZlKNwɄgo`;J4A|B[զ2޾&>p+ sKڄmze0eY4}پo.0_B8xFsw`<죴4w#š+lњga5h,130j(Aq߉k{rHc QF7,4TVF\)%ԏ =wR*8 v( RJ(ɚ]Dy^F }r =.)w 6SrjG+î<ÏLj,ЧuMΎk՝招 xC"`vKc# Tr HZ(xnJ4ʓÆ=%3 [6ZK6,Di%4,ܢ8AY8fSKtT-وԟRo"RAZHĒB F*_\eNrc 弹-gbMyK.?}"/H׫e) Xk~ƒLT-Vwղ~ߙ+o}_]ɺgԁ;C&0>1<:{I_mdWOA 7p7QT~kvE R 2wI\#?n -$68H|385{Β%;rؗQW2F뼇f;yلZa+ox`LUresg^qښ*b?EU߬ WA*2bЫGYQϏ& i} *uʒIfGG|^9$-JL],Ê7 Ձ+? /׍jMk~Qҫ! cA8ZZKf?F+XnO,ϵHUmV Ň1CkUx&WVkP@6h9*rOk=V`ߖtt?Z{b=AW?hrd`Q,E[8;ʊpElHsko}'7GxVxbIv| yFI@sC~93ƇL*u*?~ B] `"L::e(W7zmUfc%h k㸸{XyYr 97o?;v0^/^nC!K)}z9XobZ8L'#4pu)C>~GF9B5&]y\RMGktx\hnU׺}ܴ؂Gk_4P/8t$)!;8ދQhv>uQ]U;6Y$v}~y}R^rv3X+"ټ4tFy24Q-N2eңŎ!Q%Q[/v@@M$njsDISqÎD)lU0}Z^{\&lk㼈&(*Iw Zb$8#}"、!X~%@vY'AÎY!2hQPļVً|U}J?#& 9<J`x,(2̠!^FܫrKLzqt?zUH8@݅(9mm&:Qsw>ʡ :5&[bԩg#nO 0<hiYMw 1QiEӞyyd1Bgp 4!B2}1Fh;决Aј4 (\Гn>dX "=Džmju/8c>@#_ 1^Lj\{@]ʎَ#JmFU`VCRNa)^o@9k. +%>y` iã"X0 m0/Bw 7x<X&A^9Rߔf1TDHɃ1 )2p qAg-99Ek( 0PC2,dl` þN" fL6#Tg$aZ(q( Lw.H\ XjomLNG+_~gbYRW?*MMcj uOQG6_-wHewhRĸ?dByij\rAXC+5.)$&8&U5o"1ճ0q7ʢz9KI%&<+E1/x DHiaR""Xx\?y{e9l4j;/Z *W-!BAm Tƪa!IMSV#X:]; 2RiJ Zxoc`dQ]g!ݏ]aQ3HWB . {Id7]4BάRy^Y\7dم2tDv=M׸(}ޛFUVdL6,*ޯ\8s < j!D.QY!ԳmA9]w흎QE|Oc:hJ*ă @2a#o٘cw4wV`` ډEK۽X[~H{1$+_7qWqЏOd.t\콚>?<%S`:SDJ5|mM1 &ק]m w0 t[4?]V،,E2mE`]CnGW3xajC| _kۺ g_x^w8Ua{97+99wl)Z`}R٣r̎YyVz4U?ʌٵY՘8. bεl2H\9b/RЫW(6u fg^/ pʰ=o!K!ش^E(eI/ m8viVq`bJREq]m ? ޻  6Zuxݨ9<uc^{N^!c;:U oƯhۨU['^q4j3>ԊhnMmnXp|J$S>:jwö{hܨYjlYy;]Y9?}cU<8ܭ'=iPe e{o+-j=.՚zڥ?Ox!wt( ɡaWo"&ZS=U k{֠b"Q 7vklpptzo˥j :>^߫K]eƒ%)sUE,])R:Yڵm_ SPd=n fry_7]U(N"ӷ~G4ãq%jv\9R߽ES-X8t!qW<ۍ媔W^q[G"\So0h;&]CCHOQ .xEBZ2ASTfU +j^,fE 2uݺ856NCRF͌"s TDi.IZ ~^ G(Y= $SE'ʰB's~ AUXӭtGvf@ȫ)@=^y֋J[Pą3P笺EO*KmmŀqoiW-jQȎܛ tj"1- 8"NBdLʬiO"!ڜ? ?\WWZeeg*?9XuKk" (u['#K9q)b}p^EC69)I'gɆhM+"|TeQ#'/! qZU [zJx3%kbxW84 \%~W5ړv&UgVi0 0W]/ce˖T %Y>7r=1Ԛ6_-APil}͂ZWs]8=h.}8WѬi0Cð .q"O.5>tɥ}8/5|!`gEvcieH>eo4$F|& i|ޤvgVak4r9˺0(#r({՘=.!Ex'ȓJYd ?A9ӓ./lb޴=˾W!aClD^&pWZfE3B l" *оq1rt\Z`1-fʴI}kIre]v>,@'yyiVj2e`ں;~r7di^ŴE^Qӣǫ+)nxc 8|B1NH߹]rRR*b5լ˹{ Eb?B J U.12% X$*Yh^$AMБ^Y5BVKV 8%@A)d(|"R @ b-z}i,馋soR͕ݍADWi3>.r3>~q^59%D={ơ?kS:7䰇7=qBKQkJdNeIl6Z<4WJݱ\+yLq5PպMQ]}gmQ碎:.([4Vz9hjp~OX ۹0`RE[ެRӊ o0i=޺+5yl*cUZ$P؂ƐnZY{ォjlahPvk:}'%w }BH8WfDqXقZ'=lh#Ct`etL6>h{0(1.cٟ1XǭnM3~eŽk7i *.0V~m==>w LVZݣ$6iC::H~`H)zh5ڑ}1s HMYsRt$FjU9D{Iq)}'^R<V+\sV1wp8q+SmjI%9ɬv%LGI]pbgO]@[#C8g⊚jANET0nڀcTZsMv| w\;9=nSkTR؊\Ԩ! f&PzHGa6q_Lcak'.BĹz'-9'c7qgUe GYA{jV?#a=v֘̍(fX :tHט: N2:ל*ġL#t2V.~]VWZ0!|QcRsG9x0TE&çwh7`GE [| ]dXD*|ow)6]w_앸!l㸹> nZt{ jE\Ȣ ]XUlٕcUC[q|3g)'ӌb xe(#c!i&69U2 '_}ø:O/u-G&  `0ȊSGd".oѬ|N:6Ct&-WȒY,cF d5;^KrZ/pdr$Vi/^I~~dOo='{1K+P'fc߽c\q嘤'*}6pu, ٪IyH) d2J7)? F9T3*oExAvTG, ,Wsc1XW?JT}[b)Khzi\*.:I~>lBoHu,"^<[ z/zQY ? L@=qV`#q~9dGX[߸:fZf{EqnX2'"5+7QfjYrjW@K= %H3 R1 H+tK 1Ox zd)yq3"ƭٯ)in}Բ8g1=tgkߗa/ FD+!695-G :[a=.Ƭ։QVd".VSZOK= ,iͳ#wHZm7S%\mϤÂFF=!*\٭#ofܯ7,ōHs0Llo!6YFb3Zvq+5l163*04.:$6m}>-Ml* E4kOӑ߭ZQW= fƭo|ћq bm718g\jyi 3gz:s_8~0oly~k`[vħrWFτ*xBɟ s0#UDl1\F01ҦeeTs+wQ Ǖ֨bsxvŘUu4Nywpќư, Ӄ7qb;9|3[*ю4Q|qA9a\CTP`l-@n4-sy^9$`ǀ57=[NHnmM{>ZU'a\2yHso^oT?Hr߸Ϛ| gux<8tohj@ `Ds|gZ#uOW!E50~l7; =LǶɁ_/ܻP1ҕ9Smbڙf^=$V(8GֱR)͋%Q%-:D{6};]Z71eFm1MqfzZZ[7'4mYf\mzֶZkck]աD(HE/֙/HBZ#&*g]sޚ.S]+V^O/ZYR ھcK/#8|)p?1-#k2GҐUŪ1XY"%gC-IEH񍗶c=~oL%̾$c4߲Zhb9-X1`hX'^;,KF,X3(q2)o%ԺJ<$Mz9yz}, Z(bRDUz2fPŔ)B˸rQ4!J,)KWq&|(($kXaUiw,=h*fd }-TS$;31N^X,eDhȯE(2 emgm틽n`t~lKy 1bu-s]!NRtsG\6#~!MVY7qv9mYt;F?{LJY3D'EKYtM\Pjm1Iԓ>oIQn޸*O,3LOcziEH"Nۅ^Kd̲VʮO΁\{I;-NJcY&4c,ER 7EԲ.+F%Lh¯_-ojG{սZ!Ϋpk {FS8;VrۺD"c -`^Ά\LCfi(/.:7_HbdZd.wB)]`Of1S>ym ۻd@UyhOKjbνf#02c|)B#T=m}1Nٺg*1/|o!&zs B=u6΅?<7 (#wByM[D&aʕ.B 8!4Y{ LX@XRn%;%P ءt~&Bq!.Ogkz( +x(9;sg,1_yl, 1=+XK1 n! Tu/L``Se*W",''6k'{嚵=&sr+!D8y$Xöϼc\>o iZfI2 &A#evl皠5A͊ MN߃&pT$yPt4TLe:-?ZS#5aSҚ=QNH9Z44MOTdIJX7>ljeϲ&8PAh!g#Ͼ[[R;jx2Ku q&Ҳl'\lC< u/B\ pf&nh#q[;vN/fqЙzD S0ΛdeGGT멵h[śIz)CYb(]VLV?C&E}܍A"Va[Z[kaSlcK/ eW"Ino!i*MRID]Db%ע{=|hc_m RpPpok&TJR=FN<)|oXvٔp$6M[BŨWUR0z tT اt=[ɿjE?Pl&Ujr+2-d8ip'P$$?fsYπOnXn3cJh;\Eۨ4Cߤuhl:=`_[%isK_GR78e$cnѸ5 w1|o A?xH?ʌe ,7ll6Mᚎ>h(A<*&$TVuhnI;F H~YDCp6jw; QOܰy&`v ˼&1j(OB <%l ˲4K *5aE7 b8x=5JiTG`V=>X%Xj1qks_3-$G"*M9;|F=ՈC2\JL?Ӌ͟n ɯp5q27xn+;tU, \ɬz7iN ɮY`F+/8KL[e+MHd?-jAZ'LYkTv!{-^1ALD,o0J >ڄ=X^tx_*ltՇS=A a>[7L~Q(Uyܒzz3^Q~ۗ'n}Au:3LCMdSRA N$>1 ɬH Dd95MuH h ɭK\#pD$m ? 0D14ӺMtɕ08{NNL%UE>~x~1Q2hjإ@w>w8 ŸDM'agڿFj>D=>aږ:dd(̝U嵧CnH'i)mZhL|`eI2dh6}cZydP7+xזEൃ),͹?PJ4"^m nV@b}%9:=>:lՒ\NX`+VLF#ݴ<ӪTW<:ŀ$B" O"GXڇڎI % wc,19PH+Wƒ'HH[)rfeZR.-[J$節D*CcľVI{I+4 ʭ**xq"a )~T_]OvJhV7HmwZ¯%EIƸ439%48>3,rp|kq ݝ3@ʉCٓo D! 2B:%5<~4 Ô P,{97CZBA,9G8#-o;Id_7ǿpL_P8&\yzph+RG x T7rqn.H8Bj|lllML(a%sUP:*W+y222PlpD;l m*2`} #T ¡4_2A~<ju"u3 `Q4?Fw +^7?8Dg~ߢEXl5;o`H0yG,P&hJ{`zj_ sdSG3h"fU Kt0.tD֏hn4!^;4q@C`^2X16F1aȯ汭 cwD?wCN8m̡PweP ttfl 05R }LԎdqKy_OQŨ x6k ;Cp[9^Wm0+Q7#b\Iֶh'LGJ/?=V.qς˅g5]h5Y6(xŐsd* ,B~W~7̿c𽢹zmk)NV=>H4\ȸV& ضզ1;mrZ`Y?c4ȒT AD~EC{cKFr".XBMUAĐ_Nh6bwcW$cVK*[;5j{'xb KĨ5So‚ť*PZ Zppv]Au-;1yJǐ%]zIYM嚉n)P!!wW4YE?{o `_F5OHB}rx4㐭()q+G9u-iш `vpJolu.;5y;j@ܖ)***Ҏ1 \G)]l2,}δgV=VZx $#;k1ׂ}7*ha,),/ f߿k[sl sf\_JnرJMϾ:v{+b-5ۍUѕ[#WA-^_ZM&fRSUk߷v^ӬZL>` {ӻq zh,0L{kE[6ٸ幚drFVz8oIj;v?2R/x$`7C4quZX]C_N7H <üPLjϳ#qOL꯵3NXL[[ϋ|Vs]>7[KP YJkxw~9h'J#Z(Kӂ͂˂Je1j`vXXXX]cYcYcwMeM59q|Mkr\ckM596%:6' nꇸ *njtah8 f7OufQE,Q:#oJ)AC= k~^)M.x1WӪH_ALtDaOMi* z)KT;T2}ib4-7RL$DKvr7>/(_]JI &=CWl7m(i5ZYWY^5˫dzP^Z;q{-'^ZyӅV1f~iǿ$;< o~"%ThK*]:`-{)1%3\f٥dHqMso>9~k JhBbߦmFwY2e kbэw68VG,rb8Vȃ.%_;f%C` M~UYbkϖ)UAFd~j4}g̖c@lsx:iM%)hۭ̠@BVfȆh (AT"2B?YIZ'{]W\"2Ĩdώ(|'#p,b~nnX|n:yhu C@_9<wc7}LT:RѯEfjZ8&ws6Fj3^,N N)o2 e V7PyӉL6ʫ=l t/6\Xׅ?C| [w?fNk} 8dV%piTjԓ80U_##IvfE涎_s@ߠ!}S(>Ѭ .rҭMq21^=bFQY; >Њt6 ɝ]&)Z4"(@sߘ~&0![N/|LI3+)lu 'iA>((X;j5 ըYJ5(whKăr)r2섽Eo"&wVs(5]!X%Hu bm>.H+g 'іy#ĸۀ& wZEZ7`@&oϢpJ~!yϢ 4f -{FB[:+Ge1 |M C# 6MJQb*ܲOw7 awaea-m/JƅѰLZZheszgد(۠E~<./?.f\劲U~1d 'l*l\K3f0VYK_dʿj^h\Bik.p8xRZpe!5M[(Q3}$.k+&A߿ޒPMƣ(pt.n0 }zLLL1[L%F-4ݗsg]u 檊f y{ب~hyEs'r7,W1)ıcٷ3hM'd[NyW+ZGhu]W[Hb̴+VziDD sTTwW)YƧyJUʯãS+|)_Dn^ʦNC/'iYJJ6 Y01x@TqL,w&,el+#.6Q),ϲ6SSr"Wb)BH El5cJzkKb*$d52TNP Z#Iz1 t>D.a\5̹.gHo5yI|e1?ڥysI|yv((\a(>N'@לk7e_#Ay Z}{_5h\ Dβڴ1eF(YMe">o*VkMr3ҟ !5[SPG7ax<~T;Ogz[Np7+C(lEҚi'-CjINk36t|)r~љ6SgjkJxA9CZBd }TtT%fcu햨ćƼd\Q[upJ?ILnE}*z⭝ffgFA|^Ʝ!hpR) Bv=q@m'q"HLroy9_Z|8 #ǵ*"%@kP$V.Kcwm]78V PRsؒ~_~&\-ǖ\KzPhO ٤fZj;5H֮Hk8 ̊EeVz}5+D!{~ĺG&S=%u~ke|Z_K/x8cSJy>{ DB}Fx!i8 n.kP^2 oԩmf(CzV%ԊhK̡(vpkM'PG$"?{_wyP0unl/lX6ХrI^>|L;(m.hL65hhs -?rJ2ja'硐> ^m|xw #< 渭,YJV i;=^^$Z%{d, 7hn#iwĭ4J j16Up{>IO152ʝ| i@[t6l+Y9}dY!m~k^*5Cl/BXWI >\=X4  j \i8V<0"}WDƒZnn}XR5z{2%M됍 -B+kͥayTPũmwkqSݼgFYQh 7@%j媅7aK'm/s%ЌBsS-`n%AOc#h7FEn>llGpԑ-[@UV:F[=\5S3bݪ&c;?WҡONj;oQ"q]r;mPNǶY|N:-E_x㚊8yŃ~?5UDڳo7 n R]yoRrT${{vcr彯t/ {w {F!qWZoPYCb BEĬ! BNcdi`#`8$F bwJP3[(_<.+yB݂ lŃQ=+BJn- Qj^᮷ӨA1VZt݈Qk)J;a`z/2C8:[T]p'{`n~_k b=džҰzYX4x056zVZ=suy KH: ~N Oa3[#DI(nH~&F7B\j9/3;![|(σZx/_)O/_[7G6SE HfOlO$3rRw^3ȫ;?c1smrS*B#/WYG%^,d*+*F T ~e(#F!uZN#E<7qN_9X%"ZιUww&{=ՁV 4Ā<- eWD?)eLJXp ™ScDEIW҄\SQ.U˞O蓐 &RyR$N>N80_ؗ[gdG¯<x~H)x,[r[vP|zqv3\7(w@>P_ʋ ,LitЛQb|MbJ?{hpl0,2a6D"°lYUH1#.hEWzg=w<]vʚ@XP+5N+u\?~;;ks9YX=~)cDh+Mon{VF㫬tlhO+S_ BѾo7י)\x\/jӁw"`CR{J< >h<@UkNt, ``+7vz᝹Ity9Ŀh6F7C`r_n&*5V}Crv.UdV06'®m\^)Bs&D4G'gxZ^G!̳ιKM~8ޞ~6 hM@{g!H;OJS H `TNb m4D !< as|jt߇<7PL9"y}?K0sNsL>1酈V=zeE'XZh0%<%)ryg8޼Jpqx ,a &z,㵧"eV=Vyˠ!Uaj9< 5 |C%̫5|m "J.t.8%6JE%-ړxt$:eX:pwd1ޙ?!m`8T$IE \Pp)(t ߥO?y9ģ kB;v ZOzB/Dd:]17j_b|Љ: )'$hՐS`rrķAn)&(*TlO&œ$2jφ LzyMN1K5VfxfGs4gK z1Re`zcX8 o5 p*09$8Vgp:AJ՜zȹ+۩ힵNu1XJLlPn/X123'r0,[l5$~ 0o*߻*Kޢd59-]a' (컹#raB9ep1RRtQ!Z Y1=J=K%i.]k劺Vac?Y1Xk* /::x T25v~}/xQ/[p{=+)1tI&6C;;N4ϨQ{ p‘iN[/bAb&|j1&mD"QBa"j\p IxG"_\яpoQ?viu@݋;5URzZϟܒ ;NO QRƋ-Nr[۫Rb3oo31#|PhRoMqv89l1,nQG6o6oSfldĶkۖ3N3:)8$(*gY7EQwϹ?*"a36ۖtj~:'AT=WDc DQ#^&:Gd $3)V$n."`o ؞o&L?e98] u8IힶX=?]g)U`ȑ&~m죈 t4"x{vWkFWB Qޏ|Oͦat#ggq4 w~\Oɂ-yv.k ;TLLkYfZǀ3XKkqzFkoƺ[{6م%O}S?!\,Wzª^>I5p" ,GtEiD!&twJR|HJhlpɼ /Žd3bq7@ԁ]6CwhvZ&hLDڹ#PjV?:.J%W~W.xQ~r=_;߇aL҇Aq?db:w_ LF7hʫ(: bt2̦3d6ÐnJ?tHxr:o>}zssSj@Ƣ ρ6fT*'Oe+F_<  N[Dh*<"hv7Rq T@&;(^@}b \Ip7^t2Z-yF@94}X4s*~`"Wz9r^@I}=RB`2"_ԂR \xGpg} ^UКWbWFc vnoG/шW 7Mcx Gg8&:eCHlXGtH!P<?Zfc$.u7:#gl_Hj=FG֑W\g@V@v3< #Y`.7)3 \yO&1 reU:_X%?%?*⟿?ե?J#rWѴۥ3ߝg?6G(ʎ?\ܡ)qج+ H vXCr;I/>rhwp}Tks%+@&C=Z(0:Cy T|G1d`ؚ݊y?ʪΪVuhteimh2~-%XBr}^zäؽܻ>I{l˽d<^x-vOB6hx8;CHt4S<RL";L\/xdEdEC@N ZFMN3FA*Lˡ~15vGiYOm>^̢- cxڢ_ . sc˕PV!~l5d !FǁUT:"P"5x&F`~" mC;(c48ݒ qU&#A275;?$?sѫr^_<ٞN,tiASerOb^4TwD~Uo6>i [zP}XUhÎAOW{lzR~R\`lV-+½Qcdu >]ռYaSB'gO:LJ7CSDr8Y k#+ư ~6 O$8Gx ۜ Mr^&4`q_pOAout)/ODۏgc|wu{ Ȉ.Ok]61tq1Ѫ+ ŏ6>Y3z{,ⓎmAz_úůE\6kG!q C>rlb&vtUP14+|'>6ob/+rŧmeD\r(>iFc8!QHh;' 4_K"#8di=b))"EdY 2^ [X0[\!HY9߇9ɑ>2dɴ!;Sg0|}8( w #1s]S tQxS|$g7TvKRȖ2t#|4uixKԁ=LBnD_TărP c~8]WW<9] EoY QtRlI _]j%[Sunޖ bh^Kd%K,hʣ7LX1#SɌ9 &7zUpwj-qv94Cbn $)= Qx0ʰ;RNyRU4FΒY܃%?mTeTW ̫6B{g%D1*JS9xҼ4~Ef`7Wg&Lڈ.eɜuA[meYM /4}n_ok]y\و?[V~s_VD"[mMRqPޕݒw4%BU=%Ӆ /a>C Fס]W:d>Zql!T'фsc 6^s1Dqiw2+bz.gqj ѩ2N #K<%ƓdKPFN@Wr~"=(F7E_)Zin +bNZ-8CI5ԕ6'Ro. u?S߮dh )y:!JPF:H oPCi /9wLH]z VuH]ZNVJ"ÿc9 ԟanUb<8@x|sYhð1&Cex$SĿ7:/9K#0V+GK{Db酏jHq@sDcFuʘͣ @Z;U$΀S6J1{{J `r9 Yhy^GO%oo6LM&ic$s>ݿwiZ운LCx8j<js2rYU]T.Ir)ɫRjĩ& )01,Ҷ7#ݪ(bӀH!5-!#Rjs9ҫ? wB9-dp2<,qēYAMBLA IXYY76T6ʶ]Zy5*C-ͻ8r[I~9fI+`X>:;crY4gV>e4aio^*1 ƽJ 5g p_F.{R\N= FX+Cըu߄Î%5PQSm+`=7;Od0Pw1.`݇3'4]D|^dIЀN oKQݐ#OOR?V te-x,SWP7!h8rO0+8j'OB8h9ea!?'vNӕ>O'c[ A,8Q [eq Aa:=abF%.tU~Mo9F8J^zLehL)$KO8iqYwat tݯ΅?<anA@!Fa]#Rb/חV [k&IΚN)&͝9M.t+%R&7!0'##N1?(?};|m G11Hs1+Ed'9J=E`Gr>7cl7mf1`/i62f :YV"4G)Ա5tlj#=d^A߰vi۰8guӑA]swZτ\`ĆS$MN)n ԯ8X? 9`jz4}G4+NLZ[fPVi3ZuKO8!|'K!M;z)Rk(Q.a}^2mU{lwݤS@_4lԾu(jQ[!sldQ81$T>( vE|wV 8!eQq3eQ0@: -#"}5d-L4 g` /lahWiEtךV0 _!fuGM̊]"Wo2^ߴ#*эǥo,\ZqDD)t{vlvbYegQG#Ҕכ,vU4ږ~"0="9_St1ǍMJ)uNʪ+#Qn +cig֨XZѯF_hǨ+y4\Ғ=(Ga'1i2c_(Ű+;3a*h!2 -u-!&H}8D@ bhδ/|9Dvs!х[U^2 ?tsMԤ&ҫm=3#7jcfb*) KG_Nic=mT63X{=\Be PBR"'YDwADMhbK ]_w/.Ҿ4nPɄ=g_4Ww1Z~<~?2gR ,sAgx@XP1$2 lСGZTw)=ʦ*n,'r)j.5E M02wㄸ4Ϥg?(n*_mv3j@o2\8vW?l=wΣ^L?]4N|VIGj HciӨuxU [d zs"gf-=;Z (3:Up 6vq#dyլ37^m>J-KsI~k$+]NYlιc!RLdqmreCSfeӬĈE-h(?kAD5oxKGted2-%`i?%l Ԧi:T > n-$ع}gkިIi#nZe&Aj2 IbaoHz%H .)o!ڛL }Kt /36 zB;RXhyr,FD X3)Ȩ8rّd8)EُTX\pvb%UgȖ( NХxd%埒3R DH.n۠+kVj}VU.m{j*U>3*ZN-R,2D rǎwVX8NY8V;: L}߫_uRj1q^uIqe-[bA36x ssen1 L ^7@o.g bnXNLd A N9Fh|#9$|m^+ZћVOjSU猱Aڄ1‚͹Lɥȩƽ 4kaLBM8 S XjJDB׼B iawʳlv?Q 7!݋4W5hVEv\ZP?*gʚ |NmKTV4b&\˒2=R:cn[>ImSԘ٩xJ0Ew *8,nh8n&\g69-zX B syZ>Ovd&nS,PBV:vff!a˦)?kM7&OfmܶJNKѤ{}sNJgyS!k'0[vYOd'xDIF HFy)toDI!U!AXMCw@OъXP:Z>Lϭ?6m1չ%g"2+ ۮ׀#V{,^) E_ R }un'619Nr,jtbEi Հ]oj+ 6Rllq&K#VľGOOr5O0R*pK ,A6fLAY%2BšKuJ!siKcf=!$%Pg:-I0(v FDpEbjh"V+)5'$o[^p'۰B8aH.:ӿDԑoĉ04sGQ@M+PH#Th{]rÊ^Eu"4 yJUzm΁F܉P&5ݘ9nwF%G ز<O.C1mK#$5>Ï?d>/$^L8+,K$-,GB1BX;hV2Vqm{`n `WP,D~9SVg0X -N%A(3P= {@hjOapKP{U6'iWH@kT#tlco?)-L\ eSć*yP"=?GC`wyX(E?kl&P:v; @XHn0ZDIp8riCJvW[\MG+ p#;[q?"Jjdy؍TOwfX!wah"anXX$V.=At`4zZ={TsWM;V(,=tJ ™= L \>Hi1;.K #fx iNd-G齊ZV O7ll*zAm9Y|3{وWb.G5~e|m״*>iI96eJAQ5u4;!YYl 冞Cu6&q}2`KlWM2U*xSo8cşW勊bYs8$6vD3@^L@fe4 4>x;3wZ;'.bǦ7bH?( Hdi pO4*H  *~k ?*&Iؓ8q|AXz+KQ@D҈QxFg)oYdXԣ/d[jzʁmZ2|MӁaa#mɿdL,1sNw_R1f !l=+]iL5nA cQX>"94-LJ:/pkxCkؐ^='VlE8E2,i(jw2&iN[x>TF6ș`4& "_a͘1t!H ʜSqU3 5ЯHN[Yto0DbΘ5P֗;D3_T6~kkH^jE" ֠y|om]Yṣ Z I> O˜mK=[UEզ]"4 d';C͘:16Qv_]Tq酘?G3Ÿd?ݠNE PPin{gXO8Y'r"2o)#4H-ah4? 8&hlJCs 1RAΰٝ [Y~ʘѶ&i'+_J6>-Cj0W EqSYEApdDmREE%m@Xvkhb T6%,;-/reL+*2lKbf'}T0b- W딼&*~HhuCgL'޵o,XHSMaݨ?e8 ?a]!d Mc:hZQD)ܙI-kun=~S2플V V:!)%0ؐ[׎eċ֑7T")]hYLAFڜ()VK:Qpj&8f,~Kq'CoXtf/(E*@']OhAvM޵s3ݖW\]EǑŰa[ ,6B냸3슺:xavylQQ,ĖfBokei11nֽs+rqIk]Ur6=ia87乶 mѥs4=MdPo<ܱihrkЦrx?KlWmoYaN_XT-] g)q? ĺ+NTRE(BW4>YBRa/*ԩbv#p\* ]}c'_],HwʾMSp!?v[#0B/@T ѭ(`:,@pZZ:ap!})﷤4e+7po^| R K bjr56jok=Poa aiq& cEZgM5Bp\SzF1m|IhsY9Chau=vYirנX1#bQ;~Q'[63u̙YoȣJ/HPHsH-I2W 3x &'EƴZ۫ @1&Rǔ_i H,n [鳳e)9,H΍H4šp^8zYW{Ll+xucD VLqA_w}4g.{!}N^jZ LHOj(Gc$eMpإ gӉ5.+:(v3£*_p295Rwrr!RdU,]"@X;1M--S2%#b]F~hp9t"WrP܀>Zvıle8J`wӜZ*}u8_f%%QkĘ1\hҨj:>'G홮84HU_\xhebDadnlDw>N,fP!Z;mDԺrPcLmFӇɠKO`bu3iD*ӹ-wX1/tWm`j\S\i]xي:n""A cAsD"`P z O㲅"16Ql\s$p5rY7^YELOh"y8PN)F?M%QH:̿Zew&M$Qd$U}~EWƮ)o+hRMZ@0 RZX}iu f}iI3c 7 %6zgCI WnFҿjZEi Z( N'[PQm t]ܦB>؝x }YQUHPs} 3B<Ø_$X!"0)|<ۃҵ- x][U&Ҷi.U:R@zbF ou $ӠL~\D6(_4N¸9ŜS3’ Hg5E.M ԃ1+܋@ʢX=,h*5Q"Dat@gɪeM BdVv6!/=#huF9 Yʒ۾mK4pւSd+b2U&j1q=p6]n(ܵSsP+u;|#r#(o_;¹_-A*QEX kLRuδaJJGmQ&$.ؼeT!@nb⍍"<42mdh4yxY['AovSnDŽx^%dE iWDԔVcnԔD[-,_f:ǔ Y{s+ݹ ʝͲ3+#}FO0Aq6KÝ28ͨ=(\)NfC x$pMbts7ӂwMmyaI틛:'R]1,ӓzƮդ'*-wjhx|M{랱/(`:2v3} :XHy{6֨g[FKwbONJƂ,8=*4d0w6Q(L8DȲ۷sFiWY¸։q5ץ!R?%ӿp\JtHyyݎSWYYu؃K9nK` BQPT\(~O}TlG(KSCHWTҖ6i( d\ɸmKo ߔQR gʖLAklHŌɮMY9[J*T:,<Ψ")N87[f.99D)n. 7n8TUjIoܹૐz.'oYU/S^ꪗY qѐ)uq"b]qcH ] ,Gށi`e4N>\&z@W \P ߼|' SCxl\.2uOYZ)2ᐴPS|= `3jDt ~,*x HZ0 gZYRxL@Rq3y)*POAj䎱)-̓rqyQ àK#JsL*SxƄA7BFI|sqpyrM8 N@vqnRb`vExtDG+괥IpL6b^ 3o89}:,ޯ_'ȿR" ǚo m#TD$$_op}0Qe ЛieC.Z(zza&R\y4xY[XӆJS9 ߒEdUVVXmF]*__gVGZ+4[{~(À\BnBT[aE,B,'V (kʝ-jTa6ΞN ۡU{NYqU٣ڲ~%>w6ȼeOKyꜥs¾MͩZZv[n+F1fx7JWǨz!4 ӐEALHmI/~8<:9;<ީힵN:a*i{gdVTJo ³Zumm7V꟨zj& j~Ps[P3&2N;ӝZ%JGf+Ic]< <tB:-,{*ǽ޴'ޜŖsUvɿ_ݙ9[ƘWPҿ1un4 CP)1b zVir{m~ЀOӒyFGꧢ)uM 6t/8I>P14E)R^ԅcppFw:*:4AP|8@x#QK=p)&(HΛ`2iȮbrrC #O~m &$ Z)@+IL թQ0$e  Q@P.JҦiv[` %m6&%"  8*y((*\2T3=w-}o{ys8&AqV2:ɏYC-K2\sզIaF*sr)P|=*Ʌ+qWGZ45pQ˼`x5L*mߨ6i>G}?nk$_z4\)b|ZUtA\LK&# <"D |Rb7MBp:^0ۚ083MH@kMt{j@wHW`=ܖH<2!Y]\B,3fƥnm|a"B+<:3?LO# ĴmX `@ʇŌƁMcL GQ"qFD2= ¿{CįA [˅QU|r PhEYyVxWYXQT2$TRSzheNkg&X΢.+=;E"*9\F+b?i)Ȭ37xW }<D@8mPYY $O@v yr8%ͨc!% i'-~~v9r͵"Zqx$DzFQ*4fqC{ԎM^ve<HLjmMtۚ٨#gB/`ә,0ߑE~Z4fQ36|Ik-C@-oư3lϒPTgqS>f?5 #I9= j]B zl5j" G+E*Ěϛ?hڛ䰂1h&2+I35q->2w,EA CvGt~cx 3wXG K%;WKKgʞN\"#&)a/=J.b$@,WT|:T4]CI$ 9@Ø%Yd Xdl,h|&P@.S/HMV-hg =$PJ[N\Z'ȣ3 F8ݻxktŧIi`-<PHgW2m:DdVQʰж1 V覌9޴vdN`1,F%j;N`<,S уJ>1m*j{ c:``&*[-P>QiV031qbzFW0?ٚ& "ɧrj+"םV, "w-OP FyΖ%WT+$;GaWdĉE +SjrlX,c@WG6QבGhu|. 3rQyZb陜)fBg$妄 dK:N"d")+E_z%#d:{'UUK37Oli2R #EV  81M(EE3SRFPz"#0@ `!^;a i1D-hU z=-v:2E܏;AҀ!(A%!Ccɱ!Ta6$!L-GS/lR j"g$УP@Fn&NCcPA5E3RTEv8[S @]Mh2 "0*yCp;o3P␝i|tPĸ0qD"7e@/#f %$dXƆQ d*&EbN O%O ELS`ƈśUJuDZ}:Co#&@nic2r9N(tZ3bP tJ |iqcZͲrbTh10i2UpPMpG|b?z\P&kq4+M/O c)`KMBDr۸u!Ozdh^ -*Y !!e:+F@(] 01$""rRnO7 !MDB#}: ht5}j80Y$r$9 $>djɸ[̌9ZA*8 43$I. J,g#Yf^Fd2&.9L,*m0gL^B&z=m2"ZaQ_%e=46f0Ӗ";&J$ :u6w٬Ebn_zRvjW#h$ZֶP`(Aq @IM7wh䨴(GQі%f[ܠ\1YhK$P*9Q.`A>Sa/2M&PYa'>( Kys/:"ZdqV@=FCWY>SI<' PdqqE4@:bRim.ƎǞFPQ7q.eYAMkD;FDWt|g5: y+j/ L8.(0y%Β h>LcCo0ڰUl K,O.e_Wa Kt.jz1Y7`AȌ϶hb/F(u8$'D0p`ŐSq$ ئtP;N]CŜ@RIv\86tg_'AD=T"nPά9>+P!Y쐜-WTO̴,h R$U8:zɨLG;ѸHy |,3v Y&JPd),kAEbL܊L).Jwsvj܆2M(BD8ޚ1e]am%Gpg2b19 rOxN$qV$ Qۆl4NZ!KYXNM ILp ^zƾh pH2-,ƨ.r%BҖY8yw0\[h 3O&Ld#":Γ"vD S&ʈz-Ū%jo ,A{a5^4K[C˒e8Oi]Ri~y&9LkC%Q  dZuNZE`aC i >qd[NQ'H=Kc0)IVȁPS mKE=xd-r5%Yd|&heq)GE5tLY 2 jknsC8&7a(fpNj>zS/wLBt<]vy$P@f' cs6㨚+`LOdH. ]$,VR$JE $Usd52ji>wr#1w-H)u|E 7QXND g5ih9pcЊ.[\CRZiP:g"%OpG<AX.-4Sd·-WeOF;vԛqHGr`8Vg;*&$߾LKV}'Uv*acGۊqLŒ'gzVqi v&\6 k]^Q %4h ?ڢ>KyVNI9bF' g_9򐉪({r!A]ʔ5yME?'׬Dc0K ;W&2brHPy7>ϱlрPsrK yr[N?2G:['Q\׼,ȇQi HM{IbaX]]T'c>&ن qXq4D#탢ޠ8qEM$)cQ> 5Srٛw@CMU ʼY]IJ~DC){9fA"PҔ:Ue%,MI(I,Wa>+%6hCl`ͲQ-ň jBē`+(2(:2C~ww]d eF$6 A_?j(YaP}3"/J] 5?%.:+ L&h G¿aʥ-xQ-E JO;>ZwCkxd9=}y@brP֬iOEoL@/1agZRXFyH,WXid!}'a;=cܿX5c5 jf%? g>yOnđy:E d$I/kX =jtqwN/b 4IlVW-REis42ź=ZTohSx(hHKިXV>Hs)ꌩ14ur3Ցvz%%Ӧ w%+SFX'PьT({PL-3@)û# ͂8#MB+E:+dA}@ l o8EprX*eVE-Ue_T@6S_/ժD&e`k jꇨEjk5*aQ(r><)Q&SVΠn= T'vHK bvPX=FMT4ıQ'Z6f^PA\l|c4 E&AG!pVW$9!տ[.PLJΓɼPNٙv6ZNJZRIΟ@8'ڮ5 gt%hP&%g@` G&ˌl;:>*̆<`Hv&ޖrߨDvgQkW;᱃uQ'TI( Z2wb4 =r01`QGxWSCݣ7҂=5&r/S {C*mgo\+q|(vQ@&Tӎ' -;XNP/ ?ETs.J3 \%t2"DiYuDCQhء&5HHU, vˇmq4M2I48G M jIXfe|p /.+` NPA~_(Ȭm()42Wc};F,@a>rۀHXѨ ڤ|i(K@2wAE(>H@)e$u|#ib-Շ&ZedV=gʽ@P+ Hފ?Jų&0uD;wL q4 l1v{Vւc3#%|yO3N3|ˆFRFFN0"?8U`qC t̠ey2bJBÀ-Y FHrT;)k`C?ݢ#*d vAm,#+ԡ=֢Dp 0xE2MK8C"kmW|Cy;'zpZ#Ԩ&U 5R E Ɣ!N/. I[qVX.AȻ>&g!JԎqI✈AhɉĀ[:DC<tK1Bǯrǧ.MQCƧaAR`j *"wdi3]`]҆C,dy'L:ܩآQ2ɥ9dMD 3 챆~(J F}qŀc5$Y'lrf 0 20|s`#1EeX (qmKY`Qx=$HXv>Ӆ]֑^xp6 2 yH{6~\b9;5E9)64,ʗ&Z%"q*Bq6dF I+0 y \FՆI Kĸ3 f;%[ b Njk.  -ɋ7dkJkFBZ q!SHSJ8e5kYL  ꒟2H6f[e3H (6(Aâ5=x0*'~)Ct)ReʧJE)q. ֕ՖvSѓ$xRS.?=d`izHHqR2 p0? l50 b=Iʳ KijT}q1@2S,z!<?dʘ ^% Max@^9K,耉q(.GiāP;YN`ӗK鋥ԍ ZSBeӶKTHij!Ozұ1:¼JG#jh,ѡdu%Ɠu^r-@u$R \KX){0< x%ŬxѲ%(הһPJϡU<ʒ)}e{210 ,vptr<1O-HEkBDk H-$+SXG&ߑ\aVtC:{XWR/#^6Ii'eguJ`jRWef<[x`(ݏEG.<?ȍ'M;78S,jآRH>$~Ll>YƑ(2iye9.@cЙjZ.A$.KhIWC$aHe5QҟiR=UAց% @daQⶏ'1r %*('w@AyؔxY5f(ozZ\5a,[6ИbPKN8IuΠ7(ͣGZ h *@ Ky&è>Gڠb:t״#/`1j"''֨*sxdXnQ8@]6`'y6ư ގx=ΰ !dMEL uࡻ,lp#Q%QYT_zBR2nYȌhqb5#AxyD9DYgi1u:n6n^naҀerH8ieD9OTF4,:M!tIqDhRpZ\J"HI qA6'}A4`F\Lj'h kϾ ^7}7pV5M~Dq?zք4M0r. ?߿k'ZM&KR(XՅf&fH/aFN>-3 ɶd)a;fN S=j!D "kL#(b8P>քo\/ 9p:*$&ENćl4C/b|(-,(7IF P ={l5Sus?rUc憭ޅ`oX lB$޲gm _€lq1w .7R\M.T #K=+iz\JGcN3Q(L?W C:,J̈́-^@eM0O'{eFv ~JPaʭ: u:Q[evDBi 3|\NBy5:ulD# jѤ sW(iPʐ0N*1D\@c Cq;tb *Z_.,SWac;ݾP6 ͊HÍƊFUMzrB#Ź*KFԋNx:`ajb$cc‟&,h9Օz}"Ph@ly#,n'"]t:T@RI1b 2!(Ҧk@9nIh;\٠bψ$X+%"Hurn@˥C.j >k,KfhCN'M@w:bD""-AD{DX:%gQ(--,(2FrI\% zNa,W9Vsyh3P-nH0t#jCNL Yt-wsE!2. $guy!uhЅA#A:.H?D#2#bpCDEqSB|$C􍮚m=F<G"gf||`oKI-n4ʔcJA=GԸLSd_UG?TWhGc;AU#E$@tYX.LHiOoqbT.6j7NڨY-51oqМMxi%t:% GVoϿ՚:VOa%`ck;k B-2 LBOl*صjbF<>bjFdJ: cSSu%hlBB!mĪ'L:a Hl[=4ᕁ~[u"e PƋ'܁lqDQ"cx!V5◅Sb :#a%p h 7@5﭅O_#BVPQG`bN!DrHa{P#^gc.h7LW \O IqJ8)vЏ:&Lm>o84 ZDf(XTh@$pH"HM_] fplvA pwM$ddP^W1.,W((JJwQWP1*QY\1A(2' s/--/Jʄ‚PP]XSP/d% M+T>ik^>(e#ѓ̬‚ F!Cf eٕeBieYiIy.DT,.).(+C}CxbL~#3 qhex"F䢇YRaAfVa.M00V9Eb j c72?B]fgWCKhK+#qYX{\AyQ,+(++A=%T8Wl_G,ϕFY+|alBh84;?^G%GJ]7!t #_r,H$DL;:^̵%aK?c DB3T~xc9%7\ٰ55X!lL"  dTBĆ uz]PZBύB:uy\υ-@QVg!dvb5NԇÍCMnWC$dI O򻒊3^*D2;MZn\$Ն쯊9gzuX=-7D%Qz?^dpsDȁ'XkOɗj5A KS%,´R4p=f8t\ s u@kS`AnDtMq|b6pJba^?v!$4^}iC^4SDDNЇ#x钒-_jĸ=vX,%pX VB4)չ @AHߠB)sũ"첱 T WP:FW"6|=H0K(,ܪBVe ^#2Ds1H7a pc70K%5`I%?_:OcU  {k W5woi9FMRb`xag[BHgx,{<T"M`, FXMiqpCS| bIP֓|.&Ft a[zREsRCۯ hOHf#͐-$GЈ7H(]lZYhi8DtWfh<h}8X59^xCE z%~F/Z0PPVs@RD#xABP[cA].oI|Jw٠-PF] QĚ* 4?{k, vS &O^E3฼ AZ|:wanچ|WUGZ.E~y}22`J}DքHXx2q$XHjɈFc26?zW?Nͪ,f?q0օq$yL$H0:.$Io$% ()),Hk}WT?{ a_NJR?4׌_GT2\"odd!&XFP vEY%lW"`dF ll!jw8/^fxIX R1ѵ\\+M<ə9{f5\ ['"1ZD^c^EWy!=]ЋbqCn}UQyv2'諪j :FVh0@( }Ec 3 ZW"q񻂭U h[*~cCcȀ|I^UZ)mx}P }Ys-ϖQoSة G&0 !8vD 2ñ2DP i ol{@V18yЂcTc"ltC'Lhae< yhfh/ZM ܠ?Tx)pIdtyaLH3c xh!Su7ʩEn"|S d&q^q-8 [[N0ɗ-bԦ~Q!'Cu`Nnl9$EyqHM8l @jNvՀ.%!vKU%vhJ%ڐx0a wUV QHn84U*/YpqÊˉU QH,K#SBװ7`X[N<Djt<]ʳ92OcN!ZJ6ʅpPUVRxh]Nvď-Q% +r!S`C=2"!T0CR< zZLaHsWC5Pr_ۊp3Y/b2=/4t8kj3-{Caɩh0 뤘u:@XJ"a 9EؕF /3VㄍQQ 0bܹWh2, 5@E-&D!X4l.kEej/+h1ZYga6۶ `ҖSrT8ygyոƝ&^ z_q%[J)0v۩`mQf|{E^jYm&GJ,h{G]>/Z(ɎhC6DKG+>0dvF+8.;fA\ijV-&vC#N&*B 'w02l-hhɆ c8#3|>? B cQTCҷ Ę!eof0M5 }I]YU]IxS;[yʷnSθ~?;t!ƅ677mu/ ͮ77@E5_)Jk[S#[73/[[}Qՙ야7+Ew܁WVwWdݥ Ψ N3MRޡ⥼Onl#htYu Ks )'SNѥ- \7鹼'\М:$ae3N+& 0f )bjADDAN4sq'0 ,׺/ !;8p ?AԺ[6#}davA9=vGz.\16-Зwz^er5o-KY;KywttHIcmJ$w.'!LrA|_Ĕp׼eW<ī׾7ʋ_z#Ժ"rpR>G264ްb6rzg@ 0.=zkYs 2L4IdaNLz O1^~bO"ɱZhH-JqtlD \ O p_ QBa45Z(8 ztH,bX8K<[cJ \?`6JNsU"YI~6zp$ 'I2i"=-8<9#cHOu3hS,i͠x>&fWG6YɆHdMQ]a3aekW,*S BPؑo@) UjXYLNl A9G QTEҷh@Y!]!RI2Dzo{AB id(5f1o>6mdFIRI'mcP꜊yj1qdj'23>F F˙9V_`$D"4*bXt7&o B88Ï\qOBBz@ܕ! =G-9$NUbqlMD0U6m1&6&{)Е#-^><F(Yeif!GeZY4* &Zp`bd14yJT7;=c[nr֒디$!w jiҢ=*7F$$Jg98x D+vQ` dq+1qP ba!8peT0+CV+9>@n0Ms| u" ސ֗F:F:oD$*MUU{:_vN͢oJ nexN?F/%rzHLv(:~/G 53\t}C!*zY7>@ 02K|Ez Ya (8 Ǖ)+Atp75Q$xST̵5 LYD孓k8F4ɟa@p>R[l LưEƐׇVVeg >~*I9)2^aͨPK!^^By urO/0 v]:G&fV9e'cr3MP *PoAs)51Dwh.ʥ2")~HDHJ̄%9ր^9Yk>R*%G$_>IH킃2d,F.|BԉT6#t7bff I!n0`R#r6{ X!2,B"F =qHUsEl AАр?xbq "E|!nI4Zee m LzʆA @!]2[clmN9nY P  7=&薋(U&ߘHJd3X"ti8jƈ9B~Nf=]5]Q?!KXN- 5"p4>P(o'JʲQ8Yȣ1NƢGCe`n"eo0r CtazF[;qGGX|'Cs_xC%QFF%Hj/-@R Z/<ʃ Ka)-RHJЌF?@]2Oڄ X# ۲6!;nڐ lG SlF: Nz~$-Bxhi9V !e [B`MyBe6"xO ZSKRJ`YkD^nw}H`eCX!BLM*CԦT4yY&I,V=SdEYn(;pjw8-=.gdU{))NlYAR 'MA9,ԤҠ v#, ЊPT |ϙ;i˲:Sv4d#%˙lu8lss9<#ӚlLʳ[)))6tS ]-릓a"NkRׇȫ<ȊいIBŎXrjJRLq F(1>:ujԩN:#NY6RH-=O. .0³𬫻;bW^|9Z7R/>y﯍/c6vV츣3nƮ/>|C8f]eyQ,VS/cUt6uUþ:cW||~~FIf!q|/?t&NgO=G?M6 >Gb'P ot$J]W0%QIFo}:UNx-ݚh{@#K&㎚"NFUǑ[F9湓@Df4ץ\ "AtJppO зBF:E,gdy6IFgCHoB2},з)B**C.5bXDiOJB$KR%59)%XL~EzpsIRPx<O&mWejMHI63 鰋ߓʕ/ڑ6hkjfu2l%;`C/d5qmsrR`IYY9# CuGC3gC^7̭lJV6٪XX{ [XGfn{CߓfEsӎ#XyG͎ d!ٞ#m\ ~gsdJϡ(@4n'm;ςX.:0@lG "=ہX,Y0 ;7Vk+;okREIigv@B 0O(q(ܪ^^A9v9"/ zf8֑4H'!DM7)^Q)HAXӾ,Q"|:`ؒS)9ɸu?QW64 MjRp)ִcO36 mZxPRNn,ڛhXtC85Xdy3~{u!\կgb|p_:u煁/ZWMM)VLo7^&>YǮ<~,Ѵ/:lyJAGν{8^i}WY~1\L~MSʳKf\m:Z&S7Bw=F_{öCW2.+*sw.^,+8ޞqg-:cY_2u;_K>kaQ/{ĞulKrklw\{%0ۏL7v˼8wb8Mko>v;A_~3;?+8igG u]}}obDvz9s,ݒK={1{Zz,:<W~{x^ewoWo)b~lڱqSn_'ϳ]keg5輘:zσ7cʓ+7ϵ|u_u?\1-Wxk\qѵE/i}Y?z?gҌ}L{k'+{o_?_NZn|[VPrCw~>߈>)Sq#-kگ?ݼ}ƛ}}ĩXezo 3խP= ˶gNhu6cwޒSnۍIwLfuw:=?=Wń'j(=` wS^k&ʫ/7~=P7o\7E?.hevwONw=On|+-荫zg-}_^勮|_ X}9]8W^U3Mİ#og3omS+Yǖj]mZ/|Ӈ%5Occ6ao+ݚn8;znI/M:-\MySKGW~1?N1(tZul1K[>ٙw-Cҟu`kvdۓsXWW>YrGCơ6|}%ܵ/x-^jx7~*0o[ {n;jÒeM;ZF]q.1]v=uO06agslIK?pC]x g?wb/}[{?vgK;K_qb͕?vlu/]*ٝ7/uq_5%߿)ٿ;;1nc}e?{q EwwO|UYMKfs s(x> ykt~e?⾛ǎ_k~̈́v=\Жl󃉻 '(VOChe?=ys}v|yvGwʺu>3?~9n+la_NJ^Pĩ_}ֳ^pg;\OvǏRL68{y|艍^2Y{ESl%]_`vc_u3{%7on2Y=dkiC޺쁏JKK M;=[]~s;oi]]+s_޴{w憷;8g9+zy/tl^]q]m𣗤xώcN~i ?{^K}ɝS%\tM9g/lnOSr~I}X_zez0}cYܓ-Owi-j]kr p~8qvqd7ֽN}-gN!yi&tes|㎝_YvJɵW6=wQ6cܛ6yMҢ_Mt}ogO~鷯gUeX<5W~#Np{?%qs<捗[+_?mV 㣳']xeo;s՜ݥia qpGvw3 u5 G۷jb[k%_ߟE7+T:N}Ǘo3} bV8eʗ)~2wnz:r7OՔ̘ ^|twTꢡr=^nBq՜.Kp}zSp?7wEwܳdٔ?/+̩my|ξÿw׮YyQ^3g㷮_{'XY&nL4X.|iM]].|}fw/q)>v|N#'1{6sP`dWM1%c|^ %%sqռG]|{c7}kzzhK]2ǂUזM~'p(c5G+Ƈ\6aZW]8W^uqAG n8rp vmxQo-;R;>a̚~9w!n]=1g~˟Xns=rk|NHK*_O٧;{N\?i֊8G|K%guv7n{|/˹SeCv.ɩU3~>Wo8ˎn>o|m>xk⹃k~_੽l[ԏ= 崻V\k5Su/~ʟ>ٹ[obЮy;nY{բKf>80xtKM _~=R=2`}wߺ8 #Ƅގ9>3yBk\}جw]2+~ʚ.^1pg]<ҹN_s>O6MtѶڽvۑ=?WO|z9uOM[=5ϱژ>|-7\uO/V5@G;_k=tcک?.|/0I7=k7`;{[c#N b͛[a;__\_U}׼Oy[sO]9dO%}rc^}_!o9qm]qҥe;< wu9"n=o=Z*^Է˦W_S=/۫wyϼ;#>)ᗯ>yeq?Msݯ NKRfs~:>ê޲cbmiCv}'>iWzO|k/>헿i_La}M1Yf'pܼ1wB;l[_(eIEzGgu{&1" }yԥ%-k!߼?ańز捜#W/gr.8RPO93^pR:oάI5㝛Y`g+7-03x>iʉu?ӜNw蹟({.W[`g^QPE}cEeG;52`9~pqo̍y'_t~࡬8KX`Ij%&Sے>ydGlr{.qܽ[o&-_PwC𘡼 w>ڸ}gVM #&Mo׬Ⴙ7=;w=O4zg9ZCN}~ /V 1vr7n_xl-K_~`E]r֝Wdpm6=p]d[?ZtW,Ȝ? 9-sً3 +zk4K1iKOo/7#^|yv?g V5tC=mM}%xw_@Ǒ$mè-fZ`13hY̒%Y`,=;߼sTUU]DTfD<g-r3zS~'xYsg@%c.0쒏Fd#_X}f!fS!$6$K"/Rqt]9gڿ} Ւeexe`GF[U,琥ZfSia.%h]r 6E7)2b $Ts\;QѱlgV2P֗x?oI<<M|'kUpVtã,4/>L g`b{UVH;Ѝ,#2C焆߮f7y'VY+ -^{K !{H4;Iڃ^?c]TfjŚKPbվ{ ܾ2V]q#xZb6 81U[EqzB`t 9ô&uԪī I_C|B}-ՇҰWA\~ $(uoM-8ݴU1V=ڊ_DC%61Ќ;O6*3׺3h: N/!q8ZdHS@W{o|Tċ'A"s 6^02|I=ǑirpB OJZ+Lov&)f~K F(IhLZ7珞ʓfV{92A"Zm O0(Ygl!:[3CXiT qL`In,< 3<7;FUgQM|C"f2ʒT]m΋:w[0@'Qdn:n-u.K Ev%ura4Z"^V߳Kzx~ o )3節7N!)=6%$#UbWmBS#PnB<}}Ax e"4 J&D2R"Nn䳋XL}o hj )%vk8h:2}_ZB[F:>jvEIQ:o;9ʀQPhR>ڕ j[{ A' 3o$zE|;?]rhUBӄ9wuc2:W+nV.%=G LuHa}F})M5x D;0Lb7WF^!ЃH?oͩ#v6Q "9 tM¥?y߻^_Ԍ'ֱM!<$^T8^~;pwrpD8ܜ\R϶K܆\\`<5?dO.yf >Ǝ <5MqerJ1"{=a?Q,d,=s@7Q TMS;7@l[jM<3T2BpTVB)Հ;6n}K%2'GG? T| BAy\lܪ`nqߥ$ٖBySJoU s yPW4tZ.Bu_g[SK-YZ:XlWY|7w LP^xx>,i#iux7O!kT,+Q)sKm]F6AF%پC9'=%<װȶuOR]LL@t}qל$ ok`P`A ,S}>GkŏLIi4\u$]o( o@B1aCү8]N֪?y:'e2;*jneL{4#!Wg/'[+Et,oGXq2~kҷ7675{`w_5@IPgn2q~zZR}@`plJ)`8 f[ @`;`0;N}"[g,@`bpr8P;[ogZ~fؘu@1?6@`b41?y7dX~@AWR0hFR|q3LF͗xE\z/gTb F..4dZp _E, i"3O@h`i rtصkC&UFWB~Uq }mNRb=s2PFJܸ(7@d=&xt ,i0& Alu.ڥp佴8tz@k_آ= )ewNYNq:!x4#\#LJ5}VY(u8u?&&o24vb%dax{7J&~b,B?F~/|1.;7yCH%P$'7 ߤSM~J*@ aF9!'M$M&forh&mVog&vor&No&lnoA;'ze)u&V:S DH2%4ѷr4ۙ( ~\I'9ObZz񏰏*FF?kF&6&Fv?G?GV##~dC?݂~|?OH{n6.ocvo2GmKS5s}% PoH}/4 []QmM U^0.go 4ZDg*g|* p[ҝ%DĴ=AH8H>l08lGgW{]1qR [ۮpyw%>~!oh\pon;rQu\_XVry|ǦԌSW8^4<ݨrf#^ zw:q-ePFY7rC ~G~mAhTbh`o /.rq\RIuXBEt v Z`hƯ^i%,GhZ|F|'-F~a G0|t\-(Y 9 "\Fܗ"WܝK+Mqs12cs?hk 7HF D0Z_,֯K:.a&# eKI?IrK̼sp+-vA$֪d1/wW`@{l9\L1MEdr+NZ8!lB ڔ;>x M/'v6>__h]*& )-I#ưh 8F? [{P"PU{gCl/`ZAeOܪȏʛjuL{h+& O5j‹&Hj6Vdh*7=w]!?čֺL{WԺ%Na !pi8` y".sR.*@i˷s $[_4e5c Qu&YTӼ$WyvAwe"͙h*mR=s*vX"2K>"湅woZFp4ڡ&aN9+[ yR7z|1悶'jԇ3 6њN>g9*!2L=9 ?mWj3^9r5`Ւ[(BKŏJ˱luRzb+EJ_mӆ-0vS&=GJ 'hՇR>cT1G!2R%(̗i1Ĵ%CXc7/4 ?׋k-u[J:qsoGR.xT^_CC|4bEs7v1FPPH: TqoVdƊs'n3$%@i)cir;hl:I/C)alү!ÔdH wJ\8/-ȄM[ң)%w\ins( ؍I YM@Â6O j5Fo|/.{)|gwH>;z|#鷉k+sQqmD*;RY{-/2-E] 91$iPp9jѬ5S|pX\ظ,i ř-:?Qi6Jwh o-|ApIE<~Piw>lQI_t#_2VpjmYe֋ s͑jVH.)08ed/ !NmI1>VāэJ >AB-X`挚ڐeTtludCJ=#=#e)EZV[sWnWp*lmPG=˂#MyڈT6gS * 02y Nk9p1I$E ) '=Q˔vU]=銤UY?b74 iF젽G&ҙasK˒oa 5N  `pOXLYd&Pj㮝Ӧ|v/Z&Eϓe~E!QJ_63䅆7FTd)#hgm`0k1ty|pv s\ڿfCY& -=XMpR9 ۞Ò]C$NQйO1]JWqЁ`{v?1^Ss6W,95͹(PFRvk*\GƱ+S5P3DE&Sl:{Cwpy0d;xzL͠[ O:DXrQ315>RRF\j^!H`Q26p͆B6V }a܆Ap2|J`z\7_d_{yH^2A>5-Jݫ"d:L Iq(ERm􄟤Fz'o,]gćLm|u^2EX&XXr(٪*~:u Q#0Ե̬UZODd҆^^s44q# w'7u^Uih{7H2 >Re۰%w. uItBԯּGavd/a ??,:^_ssZ ꘞё/пU_l\S~E w/4KoN5Srpi{7i`΃1sK2&^pK*BmRThe&C[ CT2:|"zM^G2,zZN eJ`gj7`c! ksӬiE@q^F9iU$adQύgx7k> x  (z2M?=M9Z7Ϻwc+c7GgGcds}'z84+Z;:xC'5_9~kencx;lVoMFVY 9?+jT mE᷽-ksgGBFv_~b럕nQ/`v99dA'//Ût22_ kcdg``ey(ɂ7dCVN5Kr NMcmD  :TgӲ1y^u$4m2,8E JiLnLBptNQь\|ӈh 3qtWK֡{!z>GPzV-Aʨdht6>h>6MGO;SYS<_cBwdžْ-H:~ay Zi%K"e[Zs% gZZnBV+cWg|'BnVjl9{bOK p8VjHqӥ58Nh? 5xr(`hB^bX8 IT @ԓ͠;]˓,sz hJdA炌WfGW (f,i"Y /9NZN)lyM1п; ›;9չ(zr9loz\>q9x6H%YTȻ(9ܑl.g%:u*Kr^.4X,nJ,\Cv"32ӴGP"Ug A7MH;&tIfD'vy VJ }It5(\Dq .%tlu9NI2CoZQ&)Jd5+nW8E~:sؿ |BKFݔ:e<Q͏2[ގ<"{=T72LCQWڍg`4Xw[h%OԂDUtaz,R䀽J9"Pz{y}u AG1ȬWM*Bq H/fĢ'_5XLߣii[=K tlc~P:geק N/]&}Y)vΕp #A'+_&nz}F/R҉&(IM@5a,*[✌J,r HFj┧kcͧ',YCb{ w~(]~W-Gk$Q%?}Oӭ9Dc\JHCK,"ײZsw tn?AG*ڹ_IEbnyͿŭZܥPΓf:K|JYbZlU\IV~H2+mKyHN!3l[z\UO G=񬢔[B'׵YgUn9e@J& \y!V:mNϺX&\G=k[#zδuKJ3>Hha)u(1} [9 JP"m@: Ziozv!{wo;ӭwύ򢻯ř):RMSb2>ϔp>FAּg?>zPL#JTg &ZGʻ9APWB+R= O^#Nkո,axV{u۳9dF|x1!9nC4b2쥍k]]NuȆuqݼyg)ڴi[ENBZ *I\p/6.}# ~0rp@f{e8 ׹PW kS}sree&g73D0"/;]ԵG@"άO7_.iz3:2n`;-w(bl^ b~vLSЖVڀk(E V^ mL;jq'ߊwEt„ =AA'klrQٹCǤNA`5+bp`׹*XHqɫE-.{M5?o,-i#R]Pa)QaB)RgH( "|.Gjrΰ_饎&"jBԹ^Y\, #/g,^.*bE^&IUĥ޶1\ yauztkFԆB?NCM |#1h L2Jzy8<g.oQc0Ү .F#;l̾9 DF0lP#Y`S!& ѻOׅ)ǖ}0ءگo=~D^؞㠩 EWc-jΟ-@;~STgNJ"+VBQNJ5X/solʓt kYj17 ޸;._S*G摿l+ssn!d(Ǜƾ~t#wJZm`aE6$]YQ'jb}JV"=NPTY=93פ+HcI|jg-*6Sg޳5WJNu[e}#yJɈ?J8za$ՄF%50$~(o&.YW 08M.=Z k_NJ!Ŗ/#GNO;b1]iDHTmVY7U{@5p'9).*PwztF~n<\&*BcJsZ 6ߪk9e Z6Oжkĝk֕5`E))m'qq e}NV\ԝ,Pde򜭒zcl40JyHĩJ ( &YU4ej>%ӫ-M`9hFߝ`{_st:V{TGSr:$gN"i"q[|#CbA5)򾎪VkԠ) M9TfBU`,9 W9s'xVZ%^>FlߧN0mZ!CyfG R&v#~|>ys/ݓ_|Y]wws5aBWtԼ٢pxudM-Y41 TxidgbVqV;"Fl; =.;E#hfP7MHxӧޘ<ȼE->YxN#:<0!n&)Р }jw<7=Dï1~,`@7BQ2\o5vazJm —Oy N'-=/fHPM)x0R ׁߧK`G}cPkJA)pcm;YL+ήbZ,ͭ:~?]O7Y|* r.CrAtzq|B5G KU!|܂ϮW UDBk]c>1@nIbQg0BAىoE O_!j%mP Pߦ5t6ۯlA?4>I7}Rn(PE(ey~UceuQim`#ԮǸ{"$}t*iSF}N+ #v3D|%}\^KuFuO7u.Ε qVl}MtDV^Pr + :sǢL%՘R׻3/=7;U^[$4r9>z#;{ nλ[Malc7Tˑz" wm`SjYYy8wmP*xp!Ay!Y.;1n[%٣o3gǾOe:'JP <޽7xÇ;Gg7u/GLwKk+5~,ckgS/K<-a9E`հPٹ?j,DE|9 ۾t#PnoT4+chCs۾F=*#YY'A)ޖma]YO&8 '?QzXjre@q, <+S{rm4>SgG(Sd.Jᝅ5?W,'aVI tw ı/B?X yH;Fic!8eA>`Sڝ?]':?<ϋ|O ↝go dRM6T..}f#+ݮ5C^M?>Wٯcb><~{q`'aW}n햾3-v ĭXtb5NWAdFX(#eJL5auAV&CxgT=hp4O/+JL0.?€^b@H܌zb.HaY{#MSq Tj7/e?/r_ͫ\X?rͱHW+Z4%3/VY*ogjobjjnZx~u$}^k}ӝ4goFnE󮱮 k+*ղʞl.)̷=ZjT\nS(. PB5g0;A vE@M /F*g$J?tJBn7@ЦNKB z͙ImbZԴ{fOYKҠ`ZKDPHat 5kY+g-J*ס zUiW*KqTT)xY]-'Gw*73_~֓8oH˅d6wxKn:l߂5. IPY/0Ve{.Q1|YAw0.4{ձZK>*-f6GEl;?އ ]ErNX  WeKQdB1Mian~6V8gҘq5읜`靁H"l?y&-__=Wk4{'(<"bh=‰r}wZh'T,Qľj`6ܺ4Y3UΛ=ٲ]\eդǍ|_%xJd;&]2C3?3s%ߝ ?3ϸ9,,w?"Ls XTi B/(lο=?֍VAQgO  0ؙ"w2@^'0Qq&+|`$hx5)wX1;F2] VX˕8vc)"G9b wp mUZ_Ce]uC]`̥̙h99`gx;hˬDoeWM{'Kgi*Gܸ2ƒ]K=o0nB;Nu NL܉԰ļPD`20HFg"9>`Qx!ظϨD5jơ{>q/gy%_"a@M GɔH^,u `㷃p0@]CJI`^R9 (B۲Tm?v" }:@kч2E8$VٗS_B4#ϱtRb21S}]Sn;ᬜnEw2à>x'["P<)!o\}+V4%v/T}wo'1Ļ{ʐFE-t<ռERX. ѓ>j.|^\ B{L4?lINc <@YC4*ddߓyl{G/E,} 4?5";1Lj#qF=k!>Sk 52tg+T8h:Aih5hQi;0;~%5[Q gxu-#\"FS5F]#+>|u Iǂ 쏜~۴Pj|]3v[1ߦ1 dXx-[ǧH+,TW'-˶ Oy|իdd#1Oi9y~yGv]4$z+PѝQAl*/rpT)\fn ݪ_N>Z-_gj<aJf{2) tؽ g ~J-qT`iS^;ΦPҠNw >۷UaԆ~^0tl߂GX 8mzMfi "vA7h  $|w.|ku`ҽ.LeyWQ Jfp~8p%+ģS5v:p#λ(vѰ)igVBayTħ)䥑%Ł%9m-o}Nܮ`rPa1>lc#=r둳l} I`9)ԩ8|T2﷙2]Oo+}71iNeҖ7eQ^$O>ha֝cJ L|yPxpyumWYue8rP:X%cײO{>9n{]k;)!*d~^PVrqHK7db*۳ҪMuHzz*ѭV8o3w^ͧ>xVvBnd $&@ꛋ5} 3e ^%(#f+ݰC~/6#}ɉg{Z>?5A6#->џzb5f)Xe"99%^/ շ 6JףidS P@T/^+}m3SE*7E8(M;<§*zMio'ܖU3O2q?95deApd+~؜]|.Rm&VY(]=1;Ok#OlTS15{;u㔖/ 5.cj"IH+Dg 0 1Dz*_GݿE3:g?#FrFH 88_p_ƈB8qdgN?1`aYQ̬oaX:;(r0, B+O1Lz^ߎ^gֿ mgamf?Gkd뼷ox{?`oK~y ð~}GCWF|C;MYYy ڹM)DEN(`P߆P ~EY+; XY*<ÑPν. @ @@P ?@PU<`g W;~(pr/ LNO&qLzi'JNŽ -0"Lψ ɳq"L{}BO qrK J &'~" rt¿'zb18)(:7#0!YC΃}6p}0}zdLLRvmo(xXhwOY@\lttR >“ewBPȊ#GlԔ踔8|\&f{8詹yyϳNN9O(0{ippi_2HgOro ۟2ɿ<M,;216vOP9WLͷO!eL߄!eb~t9D"S |LC(Z/_ > C'&KΑ=:2EΡ2Yk'*9巰ev`<٨ ik.31NRQ(hS6ꉨؓuEvCG:fvv&L{b_Fn~f2Dx`o܍#e\'>WV|3"=\Iso~-Îg]LIJgRmƿ;Z:98͝llm~%o7^G*,L&ͩ"]JSG3LBGuV>z: sQMh(JVvfmP55p ׵"N9h0է]э<ׄ?5t]^>Dž 2,lwjLUnv74Ć;$l?g9Ygl8:U_"l1%n7>ޱYzQQGW/ %f~oVifpڞH]>-cQ 9p@Kl7=4 ̉_v0iJ^<ڈ_`Mkz}ob,!.WpPB ibH›8s[z 47kWp^f|5)&$iK(w)mArPG'BFp\>h:{+}ԢrquVAhJ;,]ݩR3>"rذOأc8ws&%Buh(6~[Mبu.S!5K!5ieJׂ:VwYڼ0 E]w/Pj,ƨ#yo#ǙgՉũQÌcG&LH 1;&@$bz;Zģ Eɱ,uc1Ǚ k0[g+&L=;wɎVuLyeɪq/v>rA|;:ށZ)IAh\: 5+8Dk"P֐RXw93+џbN:wTG#Cr)L4ɇ/w UnWG{09߹`czA{f'$ERToe*5|RA/i N0|_. 9L~ 5\U岡r̖z͢Rw࠺ըDxU7+RPR#])<ЮP 7F*%V3# Ms a#dܓs'G<燓W{B\:`P>*SO)LI-?\s:C6A6~Q̗T(@-$Zk鼀"x0[]}ED35KDb5p*=({=mv@qP44᫖BkDQ<.{-}/RR#6G-7ŶfE(;oqw0㛨Q_Zk9DToqFaŽno=^Nz& M0i2l碝Y&l)d]7ތPE|9/B}<@{ Z> p@_mҿ,ʰo<vl|ZrMBdTT*[ؒrtQ(88c zzczip x> w5Vֱv:{RY^t=AB̜|9`2rW{pJa0pc3;7\W+! ٴV,e&1[,m$&aƧ&dƦ<.6rXedMEED|TH&o5a~nDEK1Da\%llLu~Sq)U 뉑3)vU_ fG~QTYDؑLA?at([P GgT) ~{=EtJi,ެ+і h6MP5y$v!Džڌٷ!!(}q6=jnrƕ,`1PYcPopv2؏H]pg^<5p<^iMYG(Y,,zx{w>zl&)Z聖oP>[$8j/vo,<ȳ%/R^YˆUE/w)kr]I;:Iu)qqWE~ȅ]ZB==bh4(ԥKw4굕 uE$V_Y%uGh{.οe B/'!3rūϑ{T߶Mfb6gp#(@/S1VSwb+u={uMCqSEQ4HΤi  d<""U= ^*\@5:&_&1'08,c.;|6I-!Lg$vr!dބ+95UȒB-nÜGx pw<%cKϏ:VNvHL%<]ŷ"h g.s,Oʏ[pSn]Ch ^. "=\F;T0=]< ×ݕIJޜwPLUK:=8w6^՘ }K *uER='=&xPƟ!0-E`vSp6=]lp &|JfΕ.9ҥ+wch/dϼz>[~*1eu`!$4O*x%fOCh}`/{D?nc [y0H_!hzkۇ>d}l #ichdCЫJtlk2Ȳi]7*<6gE̓1YG`ӈTouU;͎_" _ꃿ:;:.|NY>;'9?}P e@mqRCb9le!zӅ1\fPj޻|;K(nY)[I kp,IM~7IC.q"Ε4< +k]W*mЌ#JB!|T&fE|A1CݎsyFDrf}nk'U+j$V-1Ǩo ! iR9& ϕoe"KjAj~.j$dvzwn>&̃K_ Q$:ѕʟ?(B+Fp3iGN4NaOj#b녯iBu(`TO=%Xz*s ܕ%}jB}aB@~hRZI`v_lKv)-Q䳶U {R#=L[+~ B)pgMX))ܐux /P8|!XZ'&C8>ڝ4g_L3 }XڪRRx6P 5"mXVEHw6;]m`@r '8oÚr-KcJ?l0vrE,>v)#HRmqE4#LLiJtjYt/~,vLiu:s-'&Rciyʵ-&\)oa,/΅̟Z;xRS+":]hIO`{)5\:K/7P5oyx~5 (&5OM&]V~d_l,# im/"=u nyt}Tܐj0*SwUy^tQct7w4.|>K_8?Y WZZJz~u;8*kW@|G JH-!VmKA_#ʏYRw %Ox2҆E|ttv6U *85He-_Vcߛ%'~/gL12[hü EH V޺WN"fƳ Zz'lҀ ?t[ɏ?pY=ot 9]XhRqLiGG﫞 (q) F%cij`Oj3)ϸʧrU)iV{"양[M,ѹp@wG9㸾٢!2wz4xEOj]V)|Ɛ8 l9$˜u˥ Eׯ[سFQjW[>Vq M{Y>-s ׻V#$?W=|EoFPsx:3뻪^u֩mgl{HQ&} w 9Sk`?G j- 3qu1B7@wJ"t{\#IL8:ynBtX%FJ%rfZ`7mK&{H-x\%0!hmP¤yչ c/[S#'їb#ey%ĩtj|@"T=)*xEA (Ed,|q%%AVU'0f /DP`^S7yâiHe31(y5Ӱ ͍[JEJSKJ|fTru{ flƹJ&F5D#у$I'tQ0f VF&]Iâ"SKZ t";3~[ǣO#EW2[ 2.J"`c٤ab&|gIń g:nwS=U{vӰWF\cH:嵅.(M6+p %ZLlN˘~Q>('^1UJWPvJ,b0+M譫VVF:"6 4_^ 6g2qSErg יiդܸZ2u5c::&͏6'du\|[$; mh/%'u>\W$ߞOr\KaLȦ;p րo얲v v_MGY?/ 'cM.Mw7CJ\E,%4^~ͯ ڭ?]|)*^"s~'as]a()9)e61Eex7R9'ws1(8Šj6<9QuY Iwb^kңCkP\,Qz^2L?VZjnEu5{Yԍy_"򅾹5Jik0q#I8,{?` lb;6dYGQ|5M+aw2V5,1xFYalp\m \\JdBFXs3$ڝtv|*g#CEY/ ܇fb1TirUpC̤{Ŝ-`7}\ErgH݊ Tkl6𳲤u%ZW#%b5 I:iKaT!ѩ#m1YM"#&%AcT'2ūM T qlGoܓnОƋM>p}D=!Nj`]#DVcݧ>867mݕ1rpb4wTW<^LVHs@H|݊#;&::2SKΩ\vw~g}g\oAO=lJIM#w֞7E0E_.d)+U>)ٽA+GsER7B%OXQ9L~`CݻwnѳIt&'JB[Y|eN綷,ż%-z}ڦlwF)R?{}"(В؂d`II+Z.nlI?_YM╙P+w|D ^~-S7ns6K(e6fUl,tcٳ3fTx&@9NLBW>gaJDP(%U}9k Yɽ؀Wdl0%C-GnvT3.4;y%8kp~agLy629_}!JCLj23H|0q!i&-}epYݥ `Hɹ0፱:ⲳuP8sME-#(rBI*as&db#v#`Ku8%(T9%bBէA&d)́*^T4qel}H(AY;,3kN~x-jG/y`@^e]ࡇLbta#Nʭ>k~mUtN½xk3Vc;ѯ|5w~mk+ [I[xt;R~pJ<];F^{(J <3 @CtX-*˴=;L%5%/#Ak!E߂N;{{>w+Tſ Nvj&K%X>an& bq32Nh$Pg`ID.+>cBD/^\0+/q^7ЪdDZ,x*χxP3ʌ"YO7Qv/nj>4KQ+wj}v EܞT4uρw+ýN 3yKIVG Hyk\{C]O^8(Unx-!'SyhN1nyV1g/.pQ<.bv7lFtVKMXNbR^wٰDV_ ,Lig@p&6jq[s#s#4UL,wͳ |Aa ~޾ea3Gx~=yeklgk]wA~F)3m߲YT+/ aQ3s}L`h :Dv@)@EDĵW"qϿdoK:oA=ZL}L,M7&S:XF;lsJ6+8)^sNZU̱> ĵJ<$G,c/9Z@ '}2a@M}; R/+_9%U40투+c; Aq¨Hhfh1ޮ{:: ."ςV pRԽ_\38̋3ǞN;36/3<}}w0FjIiz*?5 c}%2G-51y ʜ[ixTكI@$?i  Ypa?'e8=ΖiY{ ]~"@4f+Ż1Z[a!ǚlȷV(AW7TCmJ Q&SeӇbDŽί_ցד| 뇵^$4ւ"EfZA :ɉk*@;l PiZ[%8d;|xFReF[/luj|$ u)ޣ 4ɔr]PAf4[tv}G&%ڵ検-4WM;V=Mfdvo a-QS3+2ɾ`6Z@o^)5õކ.F8A' ? oG }B[#b&^?2R\s-,c_!`04eay&EXG ڧ5G~N쥞->kF+tv*,dV^V(J3^#8gV6S9fx4ps{1.Zk8S~AՍ#?T W`Gr*T^6%['vB]ūz!VT%~pcn~av?1nVi7i;tNVRa: Zfrqbx-PU8啮S#}_61D+Aeʱj h':i _GYA#_%Kk84+n;VwE9潫'RJژwEB|4D-*"(;6 p!bU(=om#Y*J9Jtxv}ӊdOO Ȏ:,X2A0dp0juVg';؏ *¦0g,%/pGn@wI-3F]-3uuhPpXJsȎ pgC\ZsP0_ҲKݭL @>&KI8}َ^<;&y08.bS$2zOcЎG :Gm/A)Q:%vd drL "a6OR̷icD0 4x{Pn*=M;!،,OV;644FPvI[̻xHyUw񌈗-+q.w[ Jr7$yk04ߟrx5(>U%}òPl9|-k\So_\XtCE9iClM죓^~=IX!7/t!{(h}2_d??0/*),0tԗTw2^-%M*m}-3$m.5+gm3f|JAPlXlz*-WIy]?tz@iO XJmڰ6ƵjO&QءvBgi†s]w ;FeNyt|"Gݜauz'AC^;9lVqtl쩩@/CoV}7K:g/{M6=+l_hܰt OeORp?Hx*+0U_E,|>p*fIi@` +adBASzh>:WK>l'ѹÝwl4;ut?<(2&.%97WVA4|y ǮBL|o K7Iq$KK=9>-;?Gp> .'dDZ~,5ʹf.B }\¸#5&RVhV<1Ja]Z$?[k CBz3|ň] %,b=8$͔ {J/>r**)zU kBW*tuot?>Nr71 +~MvW2(&5 yʌ>=>eXu6c7K7e*0?6S6ܛ!t{/N<{js ?# WM yCrwͬŒRGEȧ}ϼ71K)"dӱP HuCGx|ȧץk6 yDԁdvls:z`L;)3a+GJQݞEw<áOIH2bܴ\A]+1G a]fۈ}x_fGv,1~lIXҌ<ӿ W~[^cIG" #t"_Ǽk-[(g,KGp~$9BT@Ѳ.M3Şˋ]d gun~{>~ Eg jX^*bgs3[n8^\Z ) **I:]VaKF0p^RPC6(3yXl B89iQcfm[}G{Y"bY2 IüT* zo3&}kd \wqHHtxUnlg C UGYlT④Y? B O4qr7jH>'W <[ҤP3{Ks(62:>y A:7f"$آ~ #C|T M9A|t~)SpIߌlWa+1!kɴJN}OЅxU3(.1b3z'< *dyEҪW=WNl#(rCa7KHSn^gO9nMU(#!7L}hA%cZ3Fu>޺@&f=<Cu<hI_a3ih( (.(FoZ/?y{o4)%L=?wyє3\3,Fy⮑ T>e%zp Ɔ-քe$W⅌Jp[u%7BTẢZ &†p/μpٞ!s;=Q=9G;X(uoܣ씞 Z~@7 R0pr ![ݐ+g /xicEms'@<(Ƀ(mPW^=.X"j*ήwx( [&8DH) P*:-*~H)]Pݝ蓽y˨7tmVttФrujj_52M˝D׸FtmP"v#* ŐȚP8yhjK*9iqpQ2uG1!\F+Oz)8oj0ȇBwݚƝҍ҉++V'ϊV2;P)KG}//@AtnDh7!mD9>g(h0Ýn7 Pf\+AJ['fݦu%z,,IqW|Yޢ֙ )%h25k7?ߪk?YlbBLJ2mA͓+H#ʴ,^W$-`Qc1}~ff}K!yPbk@y6[GjCV:@Io/K:)A^S @"zj)!eI3e J˔90lyI`u2;Sm~@c\Ì4%r=%aw&F;=tҪ6}r/jT ?Bs)x!OʰSeT AXbO.'VR QE|(yE_B&S39ʤgSY=X %Mhf4([ꧮ|l|WY:g 4Q9}.,S4#/ };ą&zԖGR/+e+.yй;c 8  :l[]Wqұu"JO||@TK9 %';!Jo70{1u:bP {Un;yRdI :K\u֦hMnS/0uI.,b.9+K24tT,u~d)ӖT4y@1ŕdxmIEstd!Pg<2-QgZ؜NE}R*I-gW4w 3>jHN"RPUjf)u|#k.~D~u'(Vj7# :X<\wZp̰!|mHd(P&" 2/"S 4UX3r*i`YxʽuYý5AV4{i)5K5S^N]x29ܺT{J(9 2{f[ɞB)eqďRZΌئp瀭lDoiչs**}ʌ[^E[ݵ@ઘ(&@_؈D[\S-Q\#CIm5~`|&F>i:E09m~sЩ8]}luIfEF4ɫ07f^ч$M ̘6E|䤽:l)nv{.*,ڻj}\ ǫ$AQxĶtvѾ*wv*n3DV@4OJ։b W^Xe_L2W &r [ m,L l $D-l c23R5KRvf*434@j`ޥуUg>y]~߬}j]w۽L~G\嬵!OZ֙-Th4؉[XP|ltwq3;[|wZ߶jNmX|$ #gqA`[KQYc8&iIAVkgf-|,.ݲreŘ&A=l'k0coQdt_t#$%ӵ$˹=3:Fp{8 66wI~/N/vk7VZn-)o>:iNbҠ[(48TD?Oy| ~u 9L9"b8*,_F'iF? 6#+] uVC!蕤DS]2$>@1/I,Fo^5kxDȂ?{ˏ֜o'iXmrN`K{*rpS,ܚ)}G,`}oDiG%}w݈JmOy+vXT2J{e!Kq0%}{֛]liF`gX\!?flLÈ5z ұrj1@-c]m*!dž|z%"njsYMH#P𴪼\ aB~Ttto>_*UfV#R8[tD-Wx&@ QxzlҪr~Q/Pi;w-;~MAcOeLR8vUii1TަipؚhFj4.WNFiB])]^!{͞.k5h);t ۊybaUU NtFEY!9(E+b 0776*ҹoC4:;5rCܹ$j|<p{;JJvzUYwkT cŦbMtvEr|ĄHBIBώ}ѣH>< ܻzM: X2I".lhMnWTl1k8L;Lg_`)qyoͱCJH#HVZoRoT,Ȣd3CP.S6iH`?G<)@!hՖZ-)[_=Ƶ/hv!mE2`VLs0m6 1=<NP/[pj#EuiYSܯT%;rHA'x{:>L߿sZ\ `1K_roKo~~D}xJ F^f4VX*%*jNn5\_^iwyM P'w;M'>ԳV12oOhwyۄ|UBJRզ(kb2{_SѦ-nHE5 LOn:ױ| >9vCoe6}~6w6T4o_O_h ?gVT~5S,^9K2ge2U-6tݝN5:*a?-Zf+Qioғ%_)QiLu`??3pC3(Qc˜=mr5?+ Vݮ? C-sC-+S3X,?Ust`dM- *8ٹ88 f& ?G_sR??cǕ;?'?z+8Yh+ѫ;ҋ;+0qqqeFvy ϓԧjA >Q$h>GƮecRRx#`(OՍI rTf&Ss%诣m\xfs\lŅ|^_?x*PM,1~gQ$%ᵕGqĞ7]?es) FOa_u9rEbc?roҖmusc<6:tA4Y6huG)1Cvgm~S{{L%ӟUݳ B@y7Tc 'LՓ8| #uJJ_FFTLCX`j3P T `PrPٛ)Mp>{`Aכs:ӄt5y8hFLԗx( ɞ¨ *#1)6%;J`dÛLvU!C|!Q<!ʓV7')VF&ӵ7o}C՚.qLau}^ho4J6fVA»W&ܧ(Ն*tJ ,Z )k^ic_Hr~>")]_#wqG|츅e?.*DWJng&V~YRH1 g|OWYHk{ OB'0HiǴ+76gWI6GVO1u4Gb%$q (W}^;Wc TmȘ~'cdP]FP/Wb[WT#Q)P!S[dL?덼3v{F8{6FcsmkXiPNRkQ3{tʜ ][:;Qj}S5`<\Vg;$Ή_D,/oJ FH?KRؑ'(۶B9Z_~6Ya[ 2AE<֟^L:b(']yTtY~EK,`CӍCj%Јqq0*# '34X`[^;:oJv-#c}z*H+U%, r~s:&MQ̙3XA >(p,*|KNP*KSסnh=" fNjʄXLaefq J 1edf,hs!( h)X8Otz+h+A:YU0ҫ~Eނ^~oASvA&1Sj*":D :&uįy06c7UjY%9SrEZ,'IcѾXr xevX(З^-L(h*!|@ PZ8qX\4Iu@' 'jb2z-r#ИSf/_$o-ԐǚÇ%!>0i xf7 kjJ 4dC.!s>=i)2)+iIL9ApHDVt]% GPjzwH.Z}4 EO4+7j U\BoƔ,ҲdH&%9ubEzaK~/iT C!ڟA8ѕLm~ӫ+yXm 4IJ4MxV-u<5苪́^qdVLv@/l?$ܜu?P6-ʽ# 95Ƅ* ?j b,jzڶt*?)VP" jOBp벤zLe!:m M>YV/2NLw)J82UGhUoZ_`HO;jX+s)b( [ƙsjx+DI(H*v#=@RYԚlG]hƟ/l0e"qvlNmf 1eoduibhhv&2e{8 (vn B#׃IE ЕYNiJ-P)|,Z^:=qg7|,YD6s~PʄLis"R}#{{ei,A)5st2bi09WntfoknlUɤu-E#SFVS uSqռK 6% |rG"7Ӂz.t7}sk=-|i͐*D s[u"ȁֵUWj(PZИh3?=qŸKXOpԦkw,<(J!)(4sN!Ek'yGZ Z:Ylŋ'ۛM0/sӐ+3ln'#j$+^=WYǶ/d0H3ئ#_ܜ)%sI`87::GE ϵ!`RC mg=xCNE @zZ: E@O|.;kj2&lsnVsζo  G@L$H8FNoV;#n3f`<ӏ( Ui;y*)[tXCH銧Q\!nPϜm7ڏ PXdv8Oԃx,Nl#܅{'N`>_62>(Āض\ cE@͍>Χ?8!@h>]ETl/S95 Sa:P~#9ZI ] }\Gw8pfc:a)Jh A̘P1̗R* 1tP<Ѱ]Qo,@eN' R\dv Zu{ݧ?1!zziRs܂>J*̞Ԡ@hu>Ra9@?tHGrSHE,}=8bemB!G?ufa:PIlƣpn>2t>Dp6Bp#:f!;ͨ;2ԀT6hl53W|3ե bS=Gs5qҲ!k 2 WpƽO^M^W:ٺ4׈ĐWJx3={ XC") qj=BlW7xlmd.-],ZU[xJ{ot O?&! z5Xv-#V=M t ~[2F)B+vL L*]OG/(emgP#?ϾA9 GiRs͹&1+Ni(K 6΀FH'9$dKV;E+< 47տVqP(י g4,RqTRQfglygTc \=L@QBcD~تbUj7i9\OY%,l~6^)BoK+зuM31ND#5cXP^I~ֈ1)-7oXG1r:]fd&FLE;ҟ q^L|O:45~dٰul#7\p!"OY A|eߪQc`m|dRaT͹ XǼPR6A_M$ڨ/l* h6^.^.A u4mm:^fxYp4ɠM<|i ,'̧#p֤8箖_``7;R΀%COP*2Kt;G9)xqK1R'` -䘏E`9V86;3Ck=hIo"GZ5⤠=4bT$w#hqz2j T'O}m/ԁغ$^m5 & "*kvqc *LVl ;F~"m; 7߯ 8rb7OKz[!v{NEo){t/Dnl=΀Ïi/8 b )7h?n@W ǯlOy(KLOFϺb׮ @ ?jthՏЬzUD.GԌNƷNi:䜃*Oc؍$ DBy"1ҎKvRo8 \Q@s+JEibv%f,AQ-3vfQ;/0хIUOsi(zݿ[kӳK#IFѝ柀&?/V7Bw6oM$*(APoap*/ ƸL{ʺ5PpR+A`NKӬWY{Ŭ-ȳ]7v>j+(;vMϙ!]xљc4_>-;)@90YXLm?wnip4SO=ZV:Τ|&6i3Bq&SznFf]= $uP7& IYj١fݺDQoSzlR۶,4sqg*3895ߕjggn q(t'ϯ>ޥB>\Ҭ L[ IoH[urTY'h)a)c>ees0wg%(n f(' v$ &:`sJ(l.<MdK=VTS2Sە01 x1}_橁H~?Ӽ5DGx(zPC4o8,bwr{ڿ-ԂFiwb3T!p= 1&\^frD*eT\s3k}K?׾ܭ~/AȜ \אwZ;ŵEy_j!dzS/Y& WZc!w "c!NDuCUXuX</"+\G+&CzmPK£g=D-MR(ʤ}wHP=+@+7 .'hzdSeycwe I8 7q@Z)<oǭe|VyǗ^$W`yYpxHF,csn VRS)c5;ݓ+syVLTi,FZ@jnuʻTe"X/cSz@9;5:Grt<~ޣg6ADN\pn@#DLjk0 !)xjU%,f/>VǶfd{ \>}gaE0Q2 a X +X %fZtVXTjK YPY}e0szFLOPDw+b}z7w\+"]uq=g+7-ö6C?n_xd7=v01.,D8k}`8=j$םq ru)߱wo;F#qƘ)dG BKY!;b 7-eۛLXyGuѪ8F@;ࠦ971 0gZoCA3:¬7.>Ua2ZVvOa"쳍}JWbN8`í,ED6-1+Qf<YJ DyFU.ʤ98oD[v> Bq!ͤ3$.Y,'`SR$DP񥂗ML" ?Љ5 60qU@'N"| }O`]`@ɸUUzuP C5ȆyVPOXs[DMJXC“ḏL+@SP( bMA|s@/7k>:j~Ped+9@ O|ԯ h59n0g1ّyj{)T0t*oJ+!ӽ(O.kLǵ,>p5Bǣ'JKјS_F Nr$@1˄, <h᪠=3@y5 b @J@\$^g4{c yTNm1QR<xoC`h*ZIL]!ʈF}n#!UAx39 m!x\YjNe{HN)w&wqa[ {2eFgqZ$R0a<( GHǏzX7@?ԏ}i۰؂@PP ?3??mY1l=F?q3Gc=8^?=Gh%no^da=9^ISI}>J3tyGN@ ;QU}u7rv~VҶDֱhdU$qz祉f7I;}Q%Բ"dZF9]l-@M2-[S - 44l$M#d(fbiD vѫ؎t 9 Q|X/eYbZ@#jlnIAQBh 3g??!hJ= :u<7"D2d,dC]mVp>woj 'SQ%=Bo7&;*˶g9wI Oe𹨿|]{P K#=ͷŭ@ҋA=q5GJDeD5VNܦA|u0IʹiͧSu&oPu=KO k#߬Yx$8@"G#^tbVL:p@{DlMI#sҰdOG `0Vj"LRf| p/ `89q-Rqt@+.1{ e6"GZQEEŞ [ğ}P˟m\sǐ|9k$A~EA4c~+Fͭ-ҋN1\z4Ze-Å1n .8PzB\`h-du{'x-gd=#wgaO~Z}+' )3_}#m O`!qL-ieǟ ; \Lj0ܫ˩TKZXxws]C_|ԯB&~ep:ۿ5zwU릀Uӭ0C,d#5A{̪zD$14r2'Hqou,q5X;Ԋt5'SbnŔizR SV*R[/pmk:ls *{OrŮZmStk~W݃T 6xW3RvQ8L9f뻡ӧq/McAF1b\,g]W/*x.6KtRvfUbSw|$ `\X`qc{jZBۿ|Qe[+ }7lp=S,|>.bE[N{xm Kp-w:@"#\ZF!sYT^^E<ӅoxUjχ/߃SS`>+vՁuSd용(o8X'$kR[+m+GaSkV|L>ؘNJ4%7αA7Ǖ{+xkn>Hfgd@ 妜 g9OXi Cg5Ao/l6y+*j*[ߓJ6RVT2XP\-T}:$-jVpX`TC?1XoD3T+ ځ y59L㸧>s&6l0Uݦ [x"?pm#n> 5i/OsM5zDY8KK8oգʲ)O[7Fx5Lkx3GHZ"a氈tX)-f7zsS['Y*UU&p[F[F7S; kfh*PmU{r؃|NWJr 00X]5tJ Ʃ-Ws:L&зHؾI&,[p[: ,I]-[s+}ŘZBۖ"IR)ӆ* +~tz2}bkJsT8# i#r 2 l!yD8m}dx$d_\n_b]$JzXUy=}~3i;Ժ}8:Dx~HExdcLl$ҦI>\.7R.$/l4E*W`_ W]C{og Ҕb%gI\ZIO-yjٽfxsz[:[ۣwFYA(7S4G+_ >$΢_ j2@4A+3X~. xt9i/"1")nP IK>hs &IEvOt3ŏ$&楥S3n LhF ;ӳSdFޘA&ʺcVvw z[J tD,cO ʘJίJ7u tɦ83lLѬhI tHGl5䞡NݴohUbRoZlC@w{wяk['=tۤPDy1 t-";Mãȅ>&@˳c\Ngqnh$г zE)3+ω&YfG6doJt'XyYdч0]-S5{N~쟈5H[WU,¹N>>rK\.Y{ʫGH^vsHECBRRcx`HR;,Ш*^En2Nă)}u^Qo4׃N1C#_5/e]Ӱ;4L;fasgvO<{H,_ 3!cqR VW}Ykۊ8nw A_4XCslk p0S눠P|lAMhE4R3Jnqƿޒd}I\JSX^믊mxer=[.>~>/=jk]%>}O5gCoV>/*{RD5StUۯcg՛Ws]{ȶ +h]nlۨ%_ߥ]ضjj~}K M$*-bfڋlճzxO+!6zyQL泾/+9 tHm<%ZI*K\椴\⍅sw&n7 R֚p5܀i>yjuLLJ^杵WN3X'|cHGL w^֡U]ru.ȳ\ϙG%H*ILfi6,ODI64!Ɠr!Iu4Dp\$gTdm,FQ?iU'"i ͭ?>Nfm2{Ҁ p%dἑ\cQQw6_IFw$Ԟ|8wbJ/'(u= bG%'@~aـA,4!L/I"<xls C:⍗%2ڣo2enamx韁"bcuLEcL7ӀBo!'ڇoyuIbyg\c_$ N,At>ωwSLd 2zZn:?F*8(fN`hR^LÍ80\R~Heô>8@BHǥ]+= TkQMTQv-a[Q0tJ ط^kXf{\VPQ{((t dn?xm%fj7ZH]P/HĹ׌FTXW 8+A&4N ʄꕗf?Hޅۥ$ګqZ>|_i>>t * VoPKYRj3Jx/[eT!ZŸ$U)ZYoTQ"l| g5ֽHtϦFm0Og;Jx˹%TQ-{XU>:uE^TSCQVh~U}R=Ρ% *=c&ΐ;/tUZ fշ%p]!17f 1ޓ6ը+ȤEQוZ55o(i ̊iV]etDbs׬A[Q! fn3;&NT,(O64;6);@v'("dgͧT yl&3 2Zxe _%KEO^b6A-ieP%YgYP\P!W>v0wl >\!rXoKd+ ZA:sj@2^Ē%+*ޛc wJQfFD0l)9u(B) ]Dߑ#l|y9Ffx][;|,hbL5a?A$'6Tijpvh֛>lc]05NN`CWQƌ,8T|dQ7~BTbC&#'"Ʃ8IG_]=,$I:ai;U|dUJ.0i稼DԾ=f 6D7`c۹z ?sl(1p"׭.-K@8\A|]e/4@O{}Mspo?nW# UOVK9h"]ڋ$DP:r{e}8EXҎ:ތ(3ݒֿ̰l( ^uM^08zSR:UҎ/r_Eh L{!@P8*sy{@tVz8NNt}2PF 6\7N/9zIT{WrժPqc"ƫԸXš!Ou`r fb ؍PW'}ALp]iŢI֙P zPDҎekXFhS) ς0}.0oC:$bށ:"12y_R#!]An&*(/R: Q.!aCL=V :nqeF90M*ecbdf tՁ{tB(Ȇqhְ)+~#7V[*~O7 {%!͍8vՕg͖\QJT*d*aNI {Ԋ%jiôX`1<` 䙈oQK'y8${M̘0MA.][ /oZrۑW?qZ)Iu8S$gm^9nŃQ4U??Q?fѠgk![#| w7abȐAVr^/].FoFOͤ$,a]] YH4VF勭McgTEܽƞ7#,h:^ M#XPf!b5T5 #5GEegw-pڊ`9c]g50-# tv|Eڶ;w9 HugL܇Mjڋ$q)]Ju-Tj$MW| #YB27~GQAu<2AO`ZQ"KL@*XsLۮ_62N}k6LAt XB`D9cgd&d5$ZKƳ8>jGŤtn%5٠dY!9sL쌻3m6z,A5GL!hv;y|{PԲ =`SCf:)FQOJ!*^uWb{8 Q|[- j?lʅOrY-d;um=R΍Ww1L:8Y\YMgFBTkP+r&h!ÕY(AHp\+>7#K*Jϯؕ+YB@9|/Е&YJ0a,lxGyn zֱC=oH<V71_7Y@./utO[-7Ae~5P 5QSc:j~OnX\3CN2k Pf[I*`(D=x*lh!I סuZ% ix<1gɟp0L'g<=B{Gg)(L2\% 8vDpؼl=?'~" B"l!?#pC{ʲ1D9O/䂒.q37]rHzdH VٮT(|?ߜ\dvt-ru~³M蠮ꡈz4eVm86h]+w.DZX>V:^{?6] xa?(,@$4'̎Y^ VGxz&|V4Ꙉcrc=J5>kjJ;=ko`qbyXZO.4f.|ѢYz`7w;M Ym6&j($T{A5yUbRP|%QɂyֺqYWO iaf r7ض=;rô:7Nuv%> P˟Wshcaۤv;w%y<ѭL04Uhjm@آ2DŽՎN."HzUU#L3xf 3 2!WN`I;#} dpݣT4Zb@hd);NM6Rk`jj$]rܞ^,z)qbn57ʑ%s7χN?`]zđ!$*LmDOZȪ́="Ԛ NWoQ<_@p햇$2K~čQ%ԥRM #COvY]8  jq z*+C&c=?_Gw{kwˇ0 Wa#zP T6) *?BEgԠ>vě_&:".p W^bb!x~d VE` 獾1Kal`ҾHf8,Y/R<$eYs,)%#r_i`\P枵'8З*xʾ[c$4(Cr<פ?}QD6/^@~mxs*ZQGRVDɅ'dqg*VʥKVެHo;VgM5hG=n91Qm*:ʞۈ皡]K-. |a|U+Fp\rN╱,~0yI\[db*IE]7=ꛆ'{vg@YeOhJB?—pleaƖ¯ۧpD4V>aD¥!5 h&וvi5"l8uU(|*>7Pgȿ'":'aBj9l4?mfqdh BŦ G7j:R^>/M(E#izHb%]C1-o!{*@!NiS`sN ˱Hi\ۘǶ;FޘX R+]Ȣ0O:Nhh7(}%2&l`/yt}M%-1"FHae;Gd?R2;0\rĔI^2q6;p\A*uG? SC.Chzxd+l̓^ ;)ExuC|ww` J6`ެ? ;ʄT2';}e3UxQ$&fEJj#U2+𧛠]6 bFdkǕ&dTpkwiuw{hf쮞x1!+.þ&9pYcPqQ )," |cLQ DHuXZr0}*Bwcyu; PG½* w6 LTM;ց6*o*=9l)iXd-Bgc|uI+̸im}T^qV0<ʼWnм٨w!' 7NE ~֭deD=}ߙ|(]=zK;2N• r_Oqz7:.c4i?I4)3ڄP99&)+¢օ(Z #vf$@,IVQ񿿑Y8f#NAc5!)f>C}̹ءBq;>ЛKËA-ڂ[+$-zyٍtyΧj3^G\P'"=?9#GDQ\f  Lcnsg.>SDA <.ՊYgY˜w_>h\8~wTZ!j?+PTAvv/ܘaU~YLp=޶C]LUwpwq ;wnڽt՘|[ャe_WW"J~;9~*[|c;n9O'~~f  ?yL+!0m)i1 EwďAKx)T1Q$y9E ` , ATLİei),/9I1SZTq–|3fPh^ Y츕VL>~XFq׏.w\ /=e# B=a2eNY@e:77Ŏ)eV,2&FRۗ3p8TI@1v;cѝbdѢFsOڦ$+(Gl!pW(`є"`:IRW,!k, B+iz4Ya_qz5ƒLMvTn[+I-s,qIٳ~|4<تy>#*jݧZv26C&֧#RZ RUY'_ oE3נ֕ td:8*ȹy4>g)Z61 W<ˮ0,<^W+Y,_WMbP#7Yd<{)0fH=DȪ-ӆvE#:rrz : ոbhe 7E%|58Ե>*l:y0♥tkPe[ T$/|}M1: OP^ m!iwP7MѲ;0\4bEzuBl6\9=53q}s:>HTU kq6GU@!{ύǹ&輠U|3 ŤOXW6wGCEۛ'lWNa$>U$fHoGOal;an{7~#4_H̝2Q8XC 5co 7\m,ZeEx4ċ0@V{?WWoھ`Sug~Cm%BV61 ;Ԇd5^j*9*hdQ(>5LTTTs[jm/ɲ=셢B|:SoA嬛­_J?jGJ%vqgԖV5X@ժ[ˡJE ۂ8f[`r`Sύ z,8 eH/1Gɵt>EąݧCrAXp(Ny @δoZ"^1ޭkG3YʷI{Aڒ[m^A)Ji"uޛb=iV yUEݜD9S5;|.jS3vEg%縹ݝs%^drC pWtFѰryFn #gENRӖ(334A#,RHs%N9Y--ݧeVy dp#X5D#@g;0թFPToZ9X8'oP@TnAv؊tgq :O|ٱ=2 IIT." lG䓪M]:-mU3 Mv3 pdu$ o";LR8 34T`jNEc!ZWGA\Ҽ(B& ޟ4V-{_p[xk7qτwʟKpvf3/.ȶBdEǟi%\O\#7ț 0*¾Cg [Ð^ nfjR!Op̑ = 0*xpvtA᭕]Zz4yr$I'˖a2\C`y ZBKO!81oL*;m̂H2(EcfC#H->1 ?:Ի$M|y)oerW'k,@󇘉B@fᷓ OT* ަn˝Av301J1XxogBA,oӱC-Z6̒LIÁƘe8*YS);)[bZ[⛈E:X~ш/ё4DTj.i9@LjӕQcb&]xV0<`%ۮ;2!6 4/~,(!= K1URk햚t抅-t˂bؖoߡ*G@@`H5qezuA:nmld :Z'6v0HZTfRRQ$&{z#ڀ@.hA .>!ϯґzGIuSȕv+(OTބmGQ lHvծtaݥ˕HQnٛ4hM("ΑPNVGz-X丰:w$ZguiRWZUjox-#dd ϲhߩQJdlBi9 oިힾ){Z)[l-3;}V֝{k7 ߳+R6~dekÜ `. Q{BCԘ}oۡ[yzbSZ 읓<IàӧFB͵<.1K Y 5Kw,ƑZADIb?9Kc#{v.H9NVX ''M/)pP<Ɗ5#۝$H}tX?W3XzdWPk^uUd'7-/fRz>CE bٮ`ݻ]~y}xStmU¯A|aIcȺWa?0lK %/;0獅mQ@ԧ+؁͓N\7UliRw]ò`H5 0'n:ޏV*wiserQUuR|ʈlL͔Ԑz#WN0dԊ(="]}Uڻx]&F=QR硳6_$<^̠ poNPWbJ J U %mrnXCLZpW'VܓC1nҚO *n1|Va֮{|B5*_Ф,XuoR E2s8HD%ruyQ|d0pY 9]9+4;5kA!/ T haF?}Uʑ&Wm2^8 Q\hE, gOk곪sVQi9z殑PfgNE@rJ: [kbЗ7xj_/fhݴ$dqrj22MCi UƓP X0O4(A܁*b9)4Rw3r G5(tT Ʉ(\ë(Z%T<{̟P"ӑ,!? e=܊~zqFH o]bH(f!Y7%sz(@AG^(gϙ5φ*ޛj ]Y#牖rN %Y_ı̨5LL-OfuUZU֗SsMqP~U2[R ÷pcfRdgk(x;V&,D܌ndz~ʍ 5I}4[ [5\i +rbPew?kjBOkJLޢoVcZDiňrݝ``:7 2B}:N{EĀ`w5z;KjehlEyoI]Umb㛠!CM< 3qbڷZ>gJ&[oWϟsT?VޏCx+k &گy%X(rpMz"+֕vV˭"JyR@REE>xr ]fl>I2 :.@ &k(HS,!S|-Zllm-$uAVw?Bt+Y-K/ |8qFe <ǰ .27GR7 \/oĐVD]0m ')1ga8(𷞋짣C*a:V+ ;#q mu~N_*٘,U ø#/&n1“Q Hr PGI$((p+䱔>^: ]rAג%JRS@gZxqwUD wʍM~k<]s2%t.B*/V 7!@]n a x.qT)LB]ӌVd''Qعq>:YF;.u9ϒ! gyЊ mm@9\K^K&ulnc G}MO՗cW!عd+r%5}a*\(n1CAmc[z0hFWyc916 sIA Ƚx%3QmzTKۨ c6.JO،1x s{tfJtCvt#6㠇ƼhqSe./´OC?cNda>uIV+21s /mL㧞s\~rE b10 ~>Rg}aRg_{T#Q|Jn+{o+]S hm -G__|Ο2=04GlS( nq -w3cK PX)xۑP"<ZHBI[H' 2d<,VbFV)Mޔ fW K&E H6,ggeypF6{MdHي`lai7{Z%Zƹы $|]{l<:]({WdtVo_뢛QX,oEy$GuֿnF=;/^ºúh~Wr{piv_|E' űVR-UK˫[ST4w9 [K72[WsYolhv[b2QKvjKrc0&&+BKaKs*mu;/D\x>L4Ԑѽ9U~kgcv&*]QVi.$s;~ʡ!Q;NL74.Sz哽((Wt4Yį2[2[[zHW<xy+#ڂ0B)`pABV4Dɀw8ǂwBu,,%&,r>z޶Htth/GAEHZ@JCAqUk\JL(] (OLj06RxR_~]垡[/,bkX)/|s94Gs5_dn*I xmJSeV_UUj|CPBa;?0_o ӗDx:62 # ΐ3:-9\Xh,~()=_-H\EYJ(?z[ݪ.qFPe8y!>z4g" pvr,O]Q㛝fVd]ܰg/ uQA(8AcXٚDpb#GJ.%h|?'qzІ"]1 ߠϜ4CC˛ ]Pm;rbwpQ:IJv4 1w; ^}@L9yM74ܤ_1?ɓnlS Pҩ2<K?&8]CIR?8d#੤XDyYR~[KWfၧydlD'厫(@-`- K)͔Sma8#E sn&S |QL*nl&ӂ򦺀(kZ% O8ISG&\GЬoxk{cf=cf3+;Zz/?]z4f [EWN|@iFtv #"\wf#lɌܩ|"kbAu/D}ˆ7O;wQ}]?3Z"*ͬlUFjo`ߴ3tV777PumTOˇfw‰ q9Qv*WNelNk)QZǹ%;%h? YVo٘o]Q{e756EG +ΗPNr> 0K!dY첒\ާ=KϟGbUJZvBXJ\_Fyba[^! 9rTZT`?_׈U14G>Æ5wױ0g[Z3Zڭ0zZ*'Mh 7B& qE/L駳Jᰐ6`r6bw~]ڨQc}19l/jokW5*En$fat+LD%YR+ՙN|ZH$oOQ*ռAv?^kK.w GsSvJ76KK2%L26[rk !Rt08c|-Zoi!ߵ<AK=!}\% /peZmH+:J#Ikv>_Yr)J[Dž͗ Yfzx5V[(EQ5ehp퇁 ) Fy(!îd}yV-q<g'*,"&`KDxG|jQD3n lDJ"jV[Z[dEI1>bZF{bEmiXR_#ev_ψBQ,Wk.9>\21tLhjuQ'pҙ%-XzdCp'LN/e,io#FϯדB^ Ca=FhŃP5OJ>&7XL\&_Cӛ<\cx KwAX%{֩XhZ[SF:_}ؓ)aTK߸,%_1ԉ2H7ozZ$KYbc1m[V.,퓰@Hs{ѣԋJX[924Ȓ5&s~.7E1ئexY+o=ۡ4PrD+Jrq ed;7邋}MŎ+l0K#1PT<|֭x]7>=p $hI"ǥʹ ro,(>ؾ8(iS#te!9#(!}*/^~+6NYNۧ,3k6ě {!Ο &y;mn@jeԓU嚷vnW''O7)y>$gLlJ>M֗2G wfXQ(/IR'f9rG00uQ hPLIV 1EB6(Cu-UU Gr$!Ut@j r;lۡp<+Q[IG-I'S~|( u9:sWv5A"aH<=^2}c cZ԰ty0)S"4*=c&t! i\V.NA/|$%Tň58 V|g83u}a=*a(hp{Zz{ c0;qmϐIM*LN3uk D[{4(H̛6ё C-Yd~,ح  "^F#%o&+LQ{Ϩ-.h))^ c>?Q;ȰΒ䴽bیA&oWef!*"b_f88DEQԼSITGPv@ɢb&Bzi9U%EP,YWy9mJqbz|?yݓ5!!u^cGV͖G'ѓQqpWB&}EOH9ANZy+@B/2<ݕuuDE~!lEGV _h*ERpT ΀ ڑVȁGьս4Y4~Au> k$$ Q|XeN5/嗧%SkCJV>U`t/u53I>~'wVngpK%x|S Ӆ3#P(ԏuZGqxpG^5jJ[#~K8jcOJ[\ͽZ8VδA8c>,N,cUJB&9Wl/zjfWEla:69N>qs6 yaP*]к)+C֋_/3^rOGH͵RA=eT>2g?Q8=xi:<^=ZƉ9yF"3 5y;6?T=lzSN+h;<׽B2&֕G+fBnֈ큐ԍӄ ^h3K BT%HʳD@"[Ц^Z³4g "SP2 ITxd{]hh+yvWWz54Y='v@hS@!r'ݕ +?": Q%?Or԰?(H# 0?`ȱeMjWp\tiBT;VڿQz"}o8IZ`f+WZqT=NmNykCa(uȾ~ڋa}Ӹ.w,\T GUoaY [IƫC5~yV&nRF dX ^IAu6}X5Ci|^tIno/#uu ,Y]1hr{ vveg@:@5j- 2ͿLBqG 5- PI!iLtğD,ʝpGrNCr&T7NdIcLlC71AG70l҇_o^ 6dLXwJȥo|4-2%٢ݞ8V-tLRtƧU~p`` ʷP!J+dAvA\PE8.M2[¾73 u0G.jճ )5]ꓯ-1WT]dPR}/0ށѸOŰ;a䡅>w%6Np?mu<_>"9s٪@xO}tD)gDeɀs,Z+NaB3@ * '$z[O[ENt,}!m2"\H٨ݖ_$9YF1!N`7(~gOpWsZFexb\%}g ΠʎZ~R_GY1,lEA|z QE!O{cw+||I=#o>E.ODWzz>Gᘝ6FޛH$7/-'bT){^,# CXa̖۷ 2:H5GI}S:> @M)-[PuM*2V8Θ5GCs6 |VF?.eeazW(  6 quz]j:fUy4dAA=%EixRTSF0wOZB0)ky6XnQVdqez=6 6' V ,u5B*o{uEÀxhqt"DE(  ]~J( 4 BDn(nc o^I=1V70)QZ+(Wr';Ί~{jean%m|LF/͛hL V'4NQa#x氞=R6onA-D-:~;[Y};KFaqhXW4\\Q&~_ 3=oM3 \<㔏Gl>cw,Fz#Q3lX%2lQA`*l dH_2(%ݚh:=2 `f%MnHʐ懲Ґ|6,Q@(Z O^PC+~RHN [޺Ly&!ڝo ⎠SJ(:Hj0)ET:-#V_&JA#NFkO3 ؠ` j ݳ(R~'pq%8'ۼ>R 7>ZBU*~vaR6>ajo.~0W5c5x/ʭaP.kdH1ڻwx6.T"6xcu]w_VV$ysg|3˪.lVѝ,tfA5M wrR A{x$6Z$d[~yT_/V3"2ʜ4EIw5ކdC `*_L̻2ݦr>6l{p%To_N 8|9.ׄa24 ! S"+alRdHQ3 mC6K<e6S``ZmLۆA]vj3U$+ߣ6I05=ERKC(} ۨ8HkOw3wpb6[7*bQyPb^#S:s\Wi3.N\$.Fz.R(꽉5uM%kTqV`WyS9R'?*~u>r%"! V4KF"ObϗSA'$ՓSd/-Ƅe< -V؆ !{ۗkg}$flW]G@+ ˒vMό:(%(ll"M2iٻ.{/r+ȲP$cf2]Vol_ =13NPS )9&ieS@$ŭױLv9.s֊."(RY%9|3Ns3, 1yD1TU5.@p=0>.6rlp7{cA(I{M'iz7 ݰ& |eq-E{xP%QaMfRJ 5DzYi@_Cm?gG#}8Zؾ}^3vGxEnj"VB3N\iL`lCސ ~mɹ gGBAf +~sjP1y/۵{nk}&4)[?8o]8=VR#.~ԗa|+HҤ HsPEaQ Z||Is49HMJH%ϩOF yE^\Z6Qb(4DJIcuN*mqXm9&o#D.}a)BORrܱƓtYI*Bk o|#iKً_SNn#+`]Sco3 (F1^-"Ua $!g4T?3i0c<&*Gj)[p :ĀSohgC9]/C)mW.E*{/ع4|.T,t~~E< W[K~e‰~oqQu1ZliJ %]zGjdOSlo'v 8EPፍh)6!EaS/NZwmSE:k( IQO_+<ҙHd0Ĝ}rC,Ҙ) ƒꅞeLo]~̐jv#9FոrTH|tjjR7pxg;&~ q#.3ls8 $!@;Mpa)l$6)vb>h %Xϭc[:EV3^DPٖkw|Q\Ɖ`54yѽ*ɍO'7}ЅGv _j ]4fiF;b:slRV*nۤ^9x+.̩Έn iɹ骸 ݱi`s;}ߣè+D,C8$kw9PQ;:Ol)c0On}X<%wK_~ب^פ"7|g@[WiSopr(K>&O˳}N4rE}yY|sPlv9{qz@*)D$5nf1A\f1>&md9'5$;&OsDT񫌬au~܅ oѓ/*mnz+E*7IN׻Dy@_)O@`J#e.l)S7-jh"#zh+ahdmȑf'%rtn Am RC  ty59 =щ5a"t '\ % xm1>c Q$ vfEGxyp9@.nIjP.zXytqĖ?Կ0f|} Tw4E.>1Vd,{FJeIF<LNyxk6zХ.>/<`tUK$*T2@y-# i7ൾ"N xOMAὂ2w_>^Sxʍ+A& m=nB K#|8 "g璱Pa/9"đ׈E-*Y H;l-VU^ܱqڎ;Ӛ䈆9H7;}P[O} wΥ7C]Nջ(n8} TJ7VYݪ A4wFo=4Q8飓؜*p5v+cdE7eF|Ҭ}h ͐hªI. eO?gR&.dheJ(UI &,3b vHCѓGC`89x)4ޥ\#>nub0>mXN!L@9§.[RIbR]&^-S EPM؃1 ²WDE2C)p LoKxZGj2ck?KFXsj1tc.ix" PLD_mCDeqr֔ 0M2%BbH`Z)D!`:tdy'='xJR@8Kl$   X7B A `G7֔8j$Enվ%( S[#G>:;"Mb7a{m]{Pϋ>{Ò+t>9mQu꭛ntp纕/1Ta;3X~fZ 8Aƅ`}?fnE2 ʠ d -"?Py–d |[n-ѷmAf<t¸6 (G dٶ.M'+T[t@ڀG-4q[, >sMh,G>MԦIc&N|ᾮǥYb\y韐p+ӈV2>X[.!g:P'=9K~++~BD ?V_4$S-f ӄ0Hp7eb9>?uy9MK6]t'G+qE:y,nsܵ,H@F6t1=8qgx #Rhag6\ӗ`*[dUj589߯[ZLsbzYo?Rr1tH߀#QYҫY;;i020p̌[߹?R 8J//$)$-G-,koYEm?УG;la+hd0ﯴWr6Q%`gC_5|? 360I_~ih>d32|fvVz3 KXBzIgk #A[3_hQ2)M\ lMMLu MLK<mk'z' wz'W[ߴӛ~m-lM( _MWQRVR'n4e aGqu&RT1!(٭XB>3lDO^ : d=沗߁äBuػ;7QZ{4Jpf gA2XobksIM8@m-pQK+0;\p$ ;KXUd&{jklw@&Z%5Y>OD 4 ^Z.dPG,5IUOnsZ=im}K4%rzb9읾md" B":=K!ՌވE])Igqw7Gsņܕjd.=11 UE.s":>SӒm_b:_!xRpF.6Nc՗ PV "`y@x_i 1(lŚbK+9pE%AO~X0FW硗Ur56G*N;LM̈́ [ >TM6<3-rh5k}{IBC)i~qO1| 'pSZwu"WxodEșT 2lMƉ2{J/E3B>!C4jB8ahjMM>u;>̗\Ն.st*H+|-&gG{$1T bއXLӯn"EoX%EWthRS.}gʀ-GEMYߛ~Ktbw.qp@y0&+C]Rw`t2 + Q:Rk*&˝b$HҝNHc3[]B H?w1^+d9X쏟߮ķwjJP}V.q.&t5M>1YN%џ&?1B9h,-`KmZ#El؝kCb!c>Κx" .9mΆvU>ܽaX71 bCFVN>LL (DKJX??#O883d$`d`HȇQ#N.66vND"Bf#ۭ+G;c#IwV?BpgIctR7b8W 8Z9i"[S(V Fp.&+ztXB94QhF#DǘN[uǡOҰ ƮwVg9*M/urP*D2Rа^wѾo3 )R$UQkc+ްy1ڰwaH֥{U. W/D  Ol{?U獭~Xټ ]$_X9r̎\]Y -t؞o1{W;x<N +/3(dѰ&__hj_I'md@"&IVx=V=!Xs GI룃lX9ɢD/tsΌqdaRh4&~IlAd ~k@0~bw-qbz6+ W~ ` mN_t.# X~&cl`llvę–袭˜HUA^BDSVʈӘǝC;/%&\~cq%bceg`$" q46R[+^"sgg{.zz777:7f:;G3zFNNNz&z&&Z'[gwZ['߅]ߛ䏪Lřo<+"['ߌ3AHLɿ&|Fv"N&؇BnN&vZZ&fe&F.F.j&.?qICl#;Ge;;k>cW {' +JV:NVa;{"tVEc #kQ%;Sg'Miñ.ֿU=c#zk_eWq9~O>{[U<tvWoX[֌ȝڙđÍgOB*7ŀRF]-mlR3edD\~yWR˜Ք̀Ј݄݀ේi"Wࣁ\FC#fZVZS6#ZNcSZ##V6SK?N^!/%Q?JG_)C'?KE7q?ft)D~l&f&F߰599%ߠ/oYJ)/hSR1ʿ`$?@"MLaؘ? `ceef%0'3ȟfDcbg W_iL 1SO4V?12*?ј9[X e O4vֿeg`KڏbbKZ20;'_tp2)ïDcds8>_YBcs8XXYBccg /q2/ /dKdb}̬NQ8Bc /u/4X7N6'_ʈߤd`K>>_XD#L0rgcWڇBdb+4fƿ9BcOؙ`G45fi?"GW EJ**' ?[k;{gZ&:v:Fz'G#zk3'z'g;3;zkƌ+ ˯3Gdfb%H00|;"`$& `eoeGQ hx]T[󑘆@QXQ>7ORFQPblbdhboLgol+2v&?66o"bt,PCP~_WWXPY8Cl?h΅%jiPT!=\!6]LU&V\TTUsLVweޓu۹^}Nӗ^NOҥ]k\7j d[ןf~30,ewqyoj{3ו귻mц4?*A7o?t񇓂ao(+T0}zkKV7¸ K&[g雠p7j̔{p)B nvG=qHJ>]Gb{ݍ m{E|bO+e[ZdE#\Yͭ-bF؉' 7q( 9d74+^m˶.IwEԭFAnSi/QZIhlx@R|3aĕ&ז --٠  zjjuzO60+;HYMr)(7A,]WD(۸`/ ~ʞ8>000K"\JvowGHΑ5P #wN25Xöc/|@kVa-}#OC0ueȐQSWu)Q;qEпwDiUERPc~Ne{ 2>G8^kl)H `8,PW=U%zEM'1*!ܧ)Sm"#E[}(ϴ;\#J?@i2~g^ 7pWb1hz*zUZM߽i[ 4=՜)֜C+߳eyhxO-@tKڍ/PvRfjIj- |g>U 0)cj̎Hz^עBm Uӯ{ !DM%CQ{Z]XfƘJ*MhaM"dJcp9+~G,?*0)ۦy :IY^񩷂S=c?l-M  j؛(jGͻcʅHR+ $mL-V_b$ FIEJ*JSGu9wCy7}!8H\Ļ'g>=xKrď?<+edb}o !y5 bʲT(oOw [ ; RkMeK#@(]6%f @Y#7,&;Tq`VNg:A.Q0ƺOIn?2'R9mT2}FP|1= ,mvQsi7C9k`SȞ:l` .xH]qmT:mHOțɕ)T~9{Ѯ23=jeIK1(u'TG3pyLjBӟ{Jf<ݬ'*?A-:H b \Z#˩AG8u˳fL DeҏT9}$]s~!ܼwi9xe۹;^6Č5ܰ0p' [RE؞A\'!tWO{C%4#.%Sg}Qv@^]pmZ{-{\cV2E8W-:4ԝjpUKYtWIS[6̡Y#(*PV`bR:ؽƶKRWO~b0tHIۼ! |LQ__^.5ǡv30^097)CZwM<V"wT*G .%0 &Gφs,ev`.T"Crf^M*`?fQL0v̻w Of3i d0b g 0ΙWA~SQF!@P蘧f ^[]\*OMH )[!?22*a%E`:*|Ҩ!v$ O$x(um`j5|8 Co6IBB٤H[B-3IX!BТ:^3Njd IX59F52F0>q2#ht+I$pAʂɤy*ܦ8uR;m* >\X(ywGW1ub֔M?7wTCoϴ\Dz&7Tvq`AS=pL-^Xz'jv IDB[3rdWbFv=}UO7-VJ{ r^ xI~_D{p:!uUd'͠(l~z[[G~^շ'c1Cr-;ʋ{Z1d@TA @ ^`2;R qJN{ ! h , k.:׸J5G -Ɂмo9BRĨ-ٓ=pϠUjRB"߇̱ \ArY1>%lttGh *ark I] 󾋁!慽WU:QehetJR0tT>cN{ Jv;t4!褦"荑sf]`f2#!-+ Ɔ -%+NBmmWYV߇r֡M=k>]noMAFQaPn`!(t-.NxLP|\֎V;ξ/T.%Rlɳ} Ɓ&.,Ou$ixmJ4 V›1}CAZAU^1M"q57*G)Z$- 4dSE(i~2wa~Z2aQݸaMBT();2-,Ǟ3NMŒRqwEX$Z͍~ZqŒ2 M2;DT5GlmñZ^̓<ꠄצ=N0 pӻkѪʾETSPe&A;O u*m'W*+821q/}3iyWp%;K5?,*z6CKN IeF e{}],;JZZ *Ic.]*kՈM+|I /hqO!}cP7I+;=^07}E'ijHrkT(埽sM$xMxػNRLZ<|.iyk4'aHЛt+ dQŴ{ޣ([C_ n`HN/|'mx3uYFˣ{uvxkmY՛nX54&:NW"'̬k۟E{C5зbHXD3\{щ>Ql?fi2Ir5؏hJc08r;8ڄQ_N)S@к/ٺ.f}/ i4xTIstƤEt}W͕L89%+ɼ ~2l-E:?%^Zڹ/:Jq4bnzC tfё:M,N1+zcop}K h5-|v}K\èÇp"8D֊wqUDr6Qi "*A ؓ1X*)y EIڦ;R0QRAA,qGh>5`%GNS sW6f]=78 ,Rl {xp **®qbn(桵0j#si&X ܖŧu*Job 2mZ\~!s-YׁiED=u4V̥Evs`naXHO5X`.8Xň,(z! 5zm789?lXkb z䟉2O'`!È__m$TA>AEV۱ޥPE$e)\U;.ߘ.@ G}spׅmmP,:f C;gOtTQQ@XŇ<=8c<Aa.ll g&/b&ȆM]@;Tmz#Vcj;MlO\KHuǖi30?+򃙝\He*9O&t>N'/]]wק';/~~/a z>]O:Sa}. 3К­@L[ڄԩIUʗ?:zvBp2Gu|xGdBEZkbܳu+˛3+R"vł+IYZ\x䶋A]\?*huoD)8^tYo6e2QCmF+pFD=knAZ)=8LJ+YI劉f{<G^9/P W\e3AD6q$Zx/!LFfK“o5IQ?mrwWLyGq}xɲѺT/9#|ôݏ-$yށ鲶~qAWZP }? mOddL[+V{W͎9`"RV* TuZL zkKyͼʨpDV]qknqHפczW!;,p^=k`ؖeyշ{ؔ 6灁Զ˸+s_\%Ɓ:W;B綋{]ȓK:F eWA QK\-'eQ slǁ/QGF ׭`(zD߱͂{M^{9/O,sFY=E;}rd\S|?'! aM+$'\M^'-D3#ްNF~ yrlY>@Qa8B(GoCzUXޯ>Ei9SI2~eJ[r7( { ܡ63{ AJ1ɜ0`So0 , ;AacHe<*v5ؖݷW|JM6ZevGF>$B?;MH-Dn{)13{}HQ<'q('Hxw6zR&h ؏}_e|aS7"" VyO\0)w%CcS8T3(L:x6E۩|ۛ JthfXWO#TqXHL(,y F#('ܗ} GtE| ~0>C%m%{%(黖@(/Kxm )?r luA8쓣/Ij d!5ʠ8z8>YmV س3&Fz o䦕q54!:G [۠&ni=:(D-ܞ([nRMFhҀf-S.znF/;*EvQA ye?ݴMƁF-Oщgrmpv=ev|.bF윱j4= )ȥ͝^Ь5iZ1S ll2A̦ؑ8gxU7  㰗CUEp H@?QT-j-螐c駫Q= VRxUϩ"ȓ' 0ʼAԚ S~e/nt)?2iAն>`RؕQǕq lE^g\IQ?ă"I}#$dfRܣUΚ!;pmˆ{Hb~!"x2nR`c퉄bGEe!{C]fӗS# ȁjPtTpxy;5U^bQA-]XDk17Z;BO~ZR9JX ;ljѷXƠH?Xm!$ӲjiDj7R9jR"pdb[tkyi)DgG(W| S*QP)M)`@Jz$W2'>4%W]oSĐ!b)or%AvzDЌB"OȤ'8#.=ϒ|̘os>#پMctC/ht]7n EMJQo32ATEp 7@ZK)iPJB~c uY1-ck>|76VȆD(fjotPV(=>D[8 l=T-ϥH~K ط ڨ8>}(h&'zѠ$L"TqXUSm~m-ڗH %,|l?0!\$' ӑ fϏ)m+X(ϳ90.%V>ElJGJKfh|ycvtw2ݭ1"r #dB(/4t ݈$ECyم8}Ļx0,͵{)'swF` DiEL=$WY%@IsDȶAfI>Nn.#w\́L~wOP^q`G#kqs5{o2|eL)IƜveqhlxVOeK`Ip?7B2d"\ ٬w+>(|Єz#HEȘ ̶:d.O–r]>m즨 IR0JĹSqkx{ hr8+ WgèU`7Wf"|^oKNf4DR%E pc΍Ի3MTR@.V`9lwRP(\ޫ=a)B'vRuOIAC({jb$6NÚp C\MD!9XN&T-ɒ台rwb!z/ ~$=ζC%ê~l2|5A#* ̥Bq)[ p[i!Ē}x3_Iό]0D볫cN8C^?[ @`6Deam B89U۴abݵj_Jу'JU `1B/Y{\6ט|5 ʒZ5Y%=ɥ㭺xjʝ.jC~$ AaYH@)'Rǻ2z%!ůqAWde .Z {G^n4 J5b +7`LA;(g!Xts5\ y,SdJ%@up>F,1 z?0,2VN\$x>Lv>:D2 |W7LBLYeދ}-a Qn~w&lnJմי_c pÁ})qΜ([u\@:ޠzAUs1}!0}"XZaCc3,_ 쾠bsH]!1ܼ"8#) =0Y=I93r ']5XcU47^2;'鹅$yhmJ!Jb+'}Ⱦ QĬ2`!_!r&N&-`709CFwG+]!]g*4τ6&1kari *eO@>QFk"~,5(G=ٕyCDv[4Z) /k~g ܩnf{Aao| "5)6'VΈ>K D[XʜNevhEs$q6qpJI{bXmjC|}E0aR(ՂӋ(Ѩ#0!lEaIwqvuCV{Q"+VFkՇY-cۙ _PR}ϙ}7*-Yͤ^N*PaJ7mV.RFtZ׆1j슏5r"@g}^%v)[xy"[E񇓟#;_N)`RpiQ&>RYįLJ$0Kf许8Sο:SircAʇ}1KpLHy[:,ү\љ.@D%+ft:[& -Xf0P<}Ktj3ΘYO^оd0w.!@hʄJknQk#ku5ʒJuߡ/R_9!|Q/@MEO]*Q< X>RO5pa;9i!OV`gL7綪ufjcNrDdMXD"lB_To(3+~٨}Nʨ shb4`L>&Tuc{cW(sUh2wԳPy_BWSZ9/V<I/[)2*%sPBD&zMuHݽ`e374}s)zl'YKdQ*WXRqY\zN.A}t?}f?"mKj+l}MK1V Vqoa[=?LN |DNFo :tj-`) 6X=Sݗ;4}@s-q4H֬ x xPǚ}ڗEf.aJ5vb F2PEc#ht#kUpl<Ŵ]jB3@a!xLk4aۢΑ0&R`102Y~$䁫*Ī2-Q>fnLT!O8sS8H:~~JӉAx9sS>%Ί^v=s=@m_HW2(عخ?c$pGy؛C*.3v ͬVs m̽Uphv a :iK07x8[6b:B,Df&22Dq!P,Az Gk~H@%U7M/3“c\r͉ŝEwݻ/{5~n~<]R%{zrz~o`=~R"Vw5׫\K£5j~O;hG㋏vN Z$$lxoX&#Lp"31يf}Uڎ/|o?7jM9h`866kuA n45ե4nC K9Fjտl}ݳhjL+x`$0^ZpS::?Lt C˫O4Ov?d%.2v9V/',m8[y:i-YG|@P!a_1`:їSh̛L<\Ýe#g)xcQwH sS"A ywQyq TQ@ ^4 *GV8:'(V)|ˑT%-]X$B# xodh+Zg'?ÔGbKT/X KZ4+j;|$ᵍzheZVӉ,?P4 wn'qĠE֭y,nC '9O* q%QYsOӕY͠yn2k SQQto$iXlt֨_QŀxL?Ghycy85KEG~j4 M`OP |e^Xۨ~4'"o_G ^#F-;SA"'B?X/i5.w57NU5Eo$`6T@K+WWW ug2W౔S钮~z)Q( Iw7 ēzrrjJ[|Rvgw~>H؄I@Z`nǬ@P({ sΐGΤM1o) U>h6 /A,)`u+!3 }0iLt@Ɛ.dij#@CdxvLʾ3@H+K){V.Td^6F t8beA\>5-/^mV/e Oh4#T~c{3(0@{P˵NJz9AFDS.f@]\w5T[}E޵"f'cT͏"O%9m;z$*|̰ѺJȼͶIMSV|þ w)j3e{ l8Q=)O8^fdgX-bg;Z0.X& kw\skP- K6Vb4Vl'%_\:8#=5ddUʂ 4e8ۈroԲC@HmY:UD xE EܕE6o7ÊCƭo߹'N"ϘHW./g}w;N3C*6-CpN8c/ۄm1Agꔗat{Ò$-K` UsRa,1r85> Il+x1P4"0y;3Z*ˍұ| q=_Y:apS4"'}phvyN&<{Xm.'YT$# 1o}; a%pe) z$aPdGc7NI\BERSzaDE@_ʴ @X0 jdq/lHCA/v ?GÚ;w]d);J+wԆ{y?n'f/W@H׉%r@4&?mn!QV/;z|X=Tw^X !qim?Zml,|qFhabC^ !oÂpt, ~*$eX6'Ji3jHz}!OĀVE&`N5!!hPrd.SO$<x <_F ΁ڥu"Cȝdё35c[1azIZS3|Ly9 'Cuy FMD%䮎fLDt;}[ֻ2| v ȯ R9( EBߔ܀,B:zP=a9`ǟ̈>pDK%/Dd'+y$q-l01Rg7!k'0FZYTxi=D|W&i WxJ-V;X֒8TT<%K+?ZkY@$ `ltK4iu`Zho̥G_“zXgLTJ_EVJ1{(.|k 3>lxvk0>\0aXk| $O "Q4MSSi7 4 QX.`*x97՟;դbjʼnfS6Of8gokf'DAwo`[Yr ٠גኝޱdY?&hRF>7~(d>.5ӂHYsbfV-hV˴e}1ADڶm۶m{m۶m۶m۶>}q&wRʵ+cJ>b7Η@cxD5}(jGQƖM¾NS)P} ,گ w[3j$?Fr:PT0{Ȭ(߽K^gՃ-G[๻_~k靓Rm]Gmxg-r/=75? 4I7Er]-2 w{D~_l˜-=klhVNWQ-U6vCS h&)dۮjqk5[+0挀t֑kj0 3 <6Ylkupuk]gd TEq;Z><\쪆RQa4Z7ʹe>oNBBb6M:. hN"'f> #cCi7"#f;{6.- "*97z v SbmtvQ)Qaz#0u#EAng`^`NΦխ1Ĺ Gay<*@g~ViĄ<~_Aa`Yv@{J)PWȳ5doe^||$^I`{5@9xSYZl/4*A\2[Hy RۍFuL6jUNq"\JM{{=ݳSv6Ct4C1-t74t vst䘞z]НH)hE8doY8/+T !&nJ:YEt:TĜQP2J: IPŊEsf>^|s|HXl:Fw%I*n4'FC7C΂fcY p'O: KHlN|>Sc=d8"}RCє\WK:FfN5D/HKHbik˳bb=׃oe&Yj л5lI@p#AgX/k2qwR))z[$pŸ) uV?ݢ=Ծ*{w>=eN_g/ yP篧2HkVsd$#=` isΔu=G ,BRqU>/,C~ 79 Y6a<V5A:[hS 7JzBJZFpH݄Ak>`r@d O[;-f&_+ˣ,^5`R{Fc-n3m-t}>O痯*,;EYP۰*<]0+?߼`?53j w(N~)V͈$>UFd JN50 bl|+yN@ћDl[e!T}G*UȖGl8uԵq[_z(1j0SW*"-;Z8_DjwGW)zSeܢ\JVmIұ֬V[@ 4jTVxMsF8-4x2&Ŗ鬌7dbq41;~Ak,Aj3o]YFv[ 1!2hR s8ـuݰoiC^,\'5+$1!smeWtҰ^~[w)L=>!^Wѩ(/gS3Vr}TCӉg%/oǠ9[=B^7rp5WuZކ-̥J$Xl(1.ats fӿD}qu1!t$Ag4!:oR_I,je2e8̦_%Wo;pc:5MH;4eu+򭷎\QmўpWH$1,IJ*ԮrOu7>u˼v%_-?+ U`Ȥ2ōĕ[S"AOGWgCo.$z.yQ3 ,fp#LDkrhP9~&5-w7庿Q=7a|\UtI-1<|xdlQo(qMeVh[.nbR"}'igf8b-]~QV Odߥِ#}1<5sx΁_eN33{Xx.ܿ:`'Sc7.f -AHE>JWT<6JkA:uݗL䘬DJVɆ{,QaRą݅_ոLF/pw/kSg6Jw܀BpL#]B̨qnݡ%&b4y,߄\x˕~mX$ІsͪޮҸp,2W<>rc;m$^XJ'z|P|zNVې7.D)iSզHgp^".9}l㯘4] ,*%~ d]%x! 1TFL͎c!,be9Zr1<7F꫁3d4#Aӗ-# \dZeyMgm]Nsä;Gܒݬ}Nlnv]KD7->'=^R{^wDYGyQpgo~,ban/'i5Y+y\a4m){C@T+Ff`qi[X;1$1EGǦh[ufsRJzYճIs5Ou \c&V.&$ҍc93w־NT'P91]ѕ*uk.]y%^Y@P :_`8 u1ߏj.Ĭcˆ]r Rج!juǢa#Ÿ*o]#S Ǿ J KQ5 ;h'3.^.*NS=Gg{y݁>LX(Vֽ!^Š`]kl-o{:fg (D]!3]iybQeqf&`8 ѲUSRԣ3r=W'uBXzt[<8 %N%|DEP,wL% 鵩Zǻ>rbQ~epCah-"5Bb6mo4l 宬T}z}kaP#M'f-8w,(U7@Y,b?~eĠ 5̼SQr: })I N 8G>C ;=~H#LI73ڲ!xEgJ\! MncUUmML O)!i`W2;]&gp:DD朆^ ܶcvz G/gQN>,91U|z1A g |H|?CaRPИc!_1ٹ*~GGj'1.DtO޿X3?|¢ AeD t/k4N5V{q u֨q1J*JX>  ⨸{"q`TEY0Mto,%?Ys9@/&'Ys~)e3/B?:bMZJ-1Cs eNCM( c#;\O^w9U唼H/s1{GK/Eo? JAC'L`Dcî.ؑ l$)v@6ǺH80DZoap!@_nLf$&^k9=:PQ7. nZ;{*h пrWrٳD-`J Ȧ\cNUԅnfT 츒7(d@9MϷtؐYj֚T8H!0sCr<.PKaiAE\@gwR84^&T-I3X|jɼ3Cw٢^/>O U,ƥϥ4O^ځid蛭otkoVh_ I?qd@h5ơtG2%X{&@+o,a2ΕY`{AR #?>Q8[ؓśHѴڮUM,1= &~ݾ )8J 'z_1虪eh^_z=j+.ff ) ˇL^:ضi  $k2ψ>KYBf$S${ZW9&Q*|!YB+5RL ܒ?T&[7FOsFS7Y0=f1e_`yuZhF$Uq)gɏ7Ws,d5RtD HHR%^6Ip^^J%)tԢgֳ4l&7먿t0A?–S*ŋ&wB.X7ONL)X,;?-4HhmVPU&HO]& %0 ~ZZ=DOtu($ )f.c`K}i ai{29y{M+gEm (!Td^Y\RPk.7MG~:H>lnoGU+>ZT{8w3\r@Jq DGRފZ7c0YHVŀR{׊7ufL4kKB`[es|Rx,7/]^ZR{2dAwh"buJO:pFYDE+YqǷFC #؀n2bg[yaaDLLƓ/E=L.{pɝ /xo!fZ@}/몺5=lt@! D%'P-j UǛM+զykِ<dN)A~?;wN7^`gf<볓 X]g&nPzP'O*t;:bz6lW0R:8]S)3vFKxq-f<`ie]'eD/Hdil=59DGș(-4O{n Y|tM1ɣ7=/5bJ\Zt*SP>4I;4^6\sT6Y.]!I+C=$k,p^U_g* .A,#k\ {X ؗƤԗBdӪ < K Άt譴Ɨ">ẀƠ"4AHtjY~i^?MlE_ ߛ mNadn6DlwOcb A!#wmhc|#p 5ݰoü]a_0`tYik`:#ϸB(\Ůډ\S[WmxM4>.L=++I])__#;n4w(ۮy/kdbm;9a'eyTK[$y", L`GO×*RIl$4Oz: 3Jqa.5m`XӘޚcx4L>t\}% fm8 `zJ\-`gq#!t8) wz4!\,UcvzEޢ^W lV Ae&<5Ǎis7 W[Ff(&m֏*>{BBD+sxzm~(-H۪DEExU}() 9x^Md7S +a@ ]̻I]Q4މnSkXlm?缙JP~@t;xHw^!awM {u,6kf3DRdQT Q7˖`qEn[S"S+?dGC# hW&1x|ˉ؏4J?$'kV']}+-ؑ?bbZWZH.0IF4Nna*Dwaڄ (AY[/v[Mi-{inHHì{C݅9 FhtW@sl-il$l]dҺ!Ur|S"J?l 3~7o xWG+>N=LAe/+&4! \@Wa%؟#ih:Zo[nצQSy~!-zGZش!0RY|ʠ{-*-4 ~,ddGen'Û*AW@&JhmLɻ'r/K~ cE eLPTЗ5$R4i ROq) hޡ&bGwoޡ9M녦Ɗ!0E<Tx7 }@57o;M KI &o49 I @dlMrDZ֌͢$S,{}fN}yIaන|͸KZ 5Xi1p`o!Vlwh]T"Z`u!ڄ8>{Z=À8㏑j%߮Y6/^|A3dWaw&c]v9i wO!R#A8[zXLpsUZSɈ@>>&m.E(ז ۝Sqcj .//o޷!t{jv>$=rCSKGClx*mL}m! <}kV8#竦I9f ZlշsrBtȕ]^nGivv1QP&&Kݻ*RC܂oTB#hg(N0júUO^ϣ#MRmqRWÑnZ=ʦ/TutM"?ʁYVsF;a^GEvPI)3ǟhigPA)StPU qV Nq48ʢtJmHWYZx3 G ܤ픂p7_6S *b!bL~c%ݓǃDIWSGMσlL^Oq5L8 eSY/L*"sx _kذf.?S48 hOO,1+P,HeL!!/2pM !Hf! }`_u$i6P{=$ ljf]lkOj R֥T~EnAW=D:O9Kc=놓S1ylIVWO~CF$}Sbw54[P>& Aqo`C_0cTCNw%Xճoѱ]:6B-:xfDD DC*L)bWG)*V | 0U]JWDh7cD(zi|/3J@c7 /o8 Va"\8>,P٣W7 1=W@NKaXEv'YtwaCkn@i um)oS:\)3-p+Il1 N$WL!'\mMzY+nd3o ߤ\wc:6p'A:x':}UW'B,05s^^em`y Ůf#5G1]m q$5DB P%ckdtJ!s Y5"K%a ))@} 56PM fh `阇U.B J\X?Or0db,&’8Ѝkrd>UB>7]w#gL)tXA߬1y1eBȳq~:>OoheɯN>lc;'m6fsaU.!A)qhW>$0Z&]%``q*X(3%0| ;H}/οMʦWjݩy1өSR}s88[[q'+1s(o۶y&O)0ߎF 𒈁 Hg7㮺:~uT9#K ބ/9CYɹo7: <'*xˣ: 0 =b|8䦱z95EwXLMdB[0?gV?R]=6agLr#ҍAC=oX+sT[(hؠe'kFp}3~$$5@ӸQ'me.%MGPB_tZL=^% 0|*F%tR{d s֪fe̩˗őOl<65JAh9&bI˭{EGа7cUBw"0QkHoyi_IGf<&x&$]Y!#H(3=MwWBSVlAsq3;JiuxM =hFWjAYoE-(RmH0s9$3֝~xe7wލ)d}:U4!z `E3z8ahf[yY)}e 3 o3/W8kGıfnm'“+'lwnO;0{n/CvѤYY&&t }ۉ4V]]u| caZzymrHAr$SP&"#`vm{bGgrk5揽1(b_Ew 4:xO_.ƑFފL wV[CLIC{L\:z>djDIpjqCCߞV}6cs{Q(4D IZ-ǬX1~+G^TC^!O9`M*Y ^]@``Dit v2=iI]b4/i:Q#q#F\ Ym"Nxs7s$Q Jv4ʇGKcr k'$S3E&ٍDg\8Cj{˕̬jaCr{0Aq`ywP`zA7`_ocUaE9ԾY]*A5:v@Ax&ctfr9+4a,mX*2& ZXLb h |Xޜ!f+9=S.&OةWlEJ9Y i NoyHvh6 ސ5r̚ 5Z3u6=q7c {Sn!WՍxU)G}lezMHLɖsS@d)H QjX_05 p'UxZ6C,r}I]/SEG+_5Hʫwo5Rvjp`)ЂW)o[ }Z%ӓi .~QowA :l;߭7t~݂7\,dwM[ѯZT D?umm{5{olKf{9{_@QV]s Ok|N-n; < v[A*8e !F`exЀ?w'{ߏ*v@N1%7\uF]2c=0ĕ5v*Oko˛JB"9)1#\ٝ1,  ApI6/z)6) "y(%F6 LS F6gY!|cVQ72J޳EIZ|{,Tt K:lJVu$JAN7R .8^Pr11Ǘ#Eo- xT#} zTwaX4t >LN OXKZs*򻔏ݢ_^ L<92`d ?Md(}Z /%jT4xҁ5. $V;7._P¤6a<{JD .z G&8 89vܥ9 D7>2p*ȡ7JaLzF95hktq,4xj:[]yR dX]d?J3ENƂ C/%@-ۛj Mmm Eڅ=ˁ+H'@f:"@V>m_:AhL<F >HHT"m~6ge|B έ%P}Bb&{wv63'^v3[Hԭ&~ Uv>D,u`SY5`DX^ .68K*d]R 15DOyC+#iS#Hy+5^QjH(Iy{e{K'(PѦZg iSl<p Sl'P 70E']-%+WVr 5Nzyrt$Ц_،(oj`d=AkG 4@ 9vEk_vX{џ~E}a{5\P1SsQx!!i^ZZfo舃~&\k$L:R54x?ipu HW(6.`_}8`"}3X7FZYMAzdT/UJu֎G$j"1ZC>25鐲h{5J?2𫠽<xp}p35-`JL t%M5'{XN tXF^V2-P4V W7riq3ɗ-DGyb n?h(vI<Õ,(\OXIt u% ޞ-p$2 TjVbqnDz,6%P2>a#Ֆ&RNfCjYTaI?[,h4$e:rMOVf78`W͛'_B8P{CPJjJnԨcFQe^+#5~4 vNYG&}H S~jV@x'Vy(ѱwkI$5rX;foec2t d!7 U8u˧QʠОPFeS[lR!Rc$aL.:ܮX3;e!tܚW}m.ǀm xz+:j!oO} ԜlzP\A={) @m':%rdw|V#^i4\:u*f_eLW,Ŋp+ ;#zfc~Y"T4? ^[> ; T+#ǐ&U/n-Q"(οNҗT"J7xE.q;|3jbgҽ ܒ HqGzu(=/Q;} \(%c,> }*Y6BNC OI8|b/yČ y"hr)& w }9 vo fQ Ե//E<*ԦKiY|"s6 {ۓC*ІU{%m,VK#)Jx"R.y>Nh )>FH:x|suFnV?1f3~9zgw};ĝxMhT*[3}Fhx!V2#f![܎(R%B뭼 Q'RCw;se7[a˓Gز=7RNi?]OP5yML۬B5ٰ0BnWO6=(UO+RGDrOt'_@%gvٷSQzqz# q!)gQ6 B\FPѳ0Hux~48pR=6[uaO|6ҷj{" i? l7Wo7-2&Yai `m'1٧Pݒ}u2 @Tx/錋 f..*^3}76i{ҡ9:47);4oVχ]n>G>sgD m pH>npA J:Ub:vk(MK^o0;%Ȯ]A Ϡ9Υ)mމ3zDͬ\h]FL ܤՒӺ19 Jm >$E&S+ry'm"!6 jțP٧__]+^HR#-hjw&A?綐`NJ 2d B4#+Z0z ]@{WM@b8(+;RzaD$X*+Z,G O$Y#-L)`,{-q dۗ|pPe+ctv+uqx٠e#ɮˉy5$Pv [B% I' nQE[A1G AKцeFR>jH"oqيU$ |4=Q`)c;1H5g.fWkB1{GP`Z_0Z !zw [#*';]C@,B gF\N=T)5oڻ:Ǖ/_/a )J ۢ߇RUEK]Y$ L鍡eAf#[vE$TDF%vgN(#0Ԗ.aMD @W~\V"i[QRc>7G,s첎ƿ`YH5nO'x+q$=0,/ Yx)__ݨwMi߀U4 ̮O2Lubs}k;zPq>ܯq@os"#Jf*z\5, %~2Zw+AMfp#Uas<4}K<*,MbA eZHI ~r7h$|~/OGwۣ8{~Q> >=bbJ`v2/nqǹ9QqdEUc'_q)*Q?O^%o2 ~4<ʼn 0KE]ln(k$s[v>u hgOJ=*SAhCvVnbSv-"դwh(7|QEPٙiyQCUh-iy@&ՋȜ<6Tq<%Ʒ].d%?.n,Iq!ũk z\ 2%wR6ږqH|n$Q5u L'8Dx0>e;ҹ3ps#"~b첨Fֈ PjAxa\(AC0OMq 5T6+ty(^%%xW(A{Jw&4'=%.y1ӝ<ַ {5;'Եr7j&G[ ,K$lI=lD0ۉ/[sQmFOG25[7fG%A>zl<ȘW/;:Α40SyRMq*<-Gfՙ7  ~Y,}=Vpa聯(.v{-@ɸ+ǫA=~TMb3]9$#S&NN`_?`SPd ȓ(%7yd9z;k_W'1<;0cBr| |fl8$gsNUK#9*rMMl־C˹wWNzqPT ԲDSv KlV~_w)(pP ny󔕇F3ecb 6}DI#cJԯ2 E)&Ȯ?:_YsMit/I)"&+˫uňEpB%6g p qHni<+h*׺q4 4ENE+?3*EO ykp8i(ņ۩ B¥dz-e!jt@kg&˜(^1Œhs(S?0%Z>VqoPIR-ڹF ($H='CvA"Mltu09-'*l4l5.~F%,*unktx.Oug^ʰd&b̥RL5b?,rԋ~Jvlǔ__SℏНKup)X87ܪ'i?M]GC/!~6.*]\(b_*V^_6zOz wf53@89F5td揑a G ہpЋٮ7Gm G>/(۵Uq'ӿf'oaŋ^2`#Y!Ha\O+akHC^5ˣ#ߒYf`oVW_Z5=l~6<@:N(PU@gJQl^/QzEJrܱa~f&oOOjr}4I%.ʏ|eYO7Yt[}i_=E}by{#H'hYv;xלrܥ:욲v3ygɨ 73hr5JFhDW:هGNY~ v/ѲsInОՌ4C& 1gVLRdPKSk& 8aQb2hsg{#1TPv`+ X^bEx^[u>YɦUO1MweP+F۞+jO\`[k21ژljT=BXI!Д$ lG^Wb8f3ʼ&!:{JTe*6c[@9#8a2 %mQ_n)߶PǢ xAΕ !AJK3^jYh>eI)&m1EuoZe_Huz+/,iHF MۗJyS۟ p" Jb ᫿M>+ CA`;2C?xKXh'߆K%M |E?> ,Muq7 k6O)1.3/m7p>Q?KAFl{>PZ8*Y> Io@XUY~; AavE:]?hUЌD$+DB ;D0 Hz. 5bAߴ iěMuB_/ka}9 +|,f?kesxy=Xj_:@}5*8KPhFٌ?CXhm O u-RtAXuC˭Q˛e9"z.0N]*uc dtG󇦕d&iaS$7h8#Uaڀ0|aE,2VmڅE>܁G^2bLE[zde R!&DՏĖ0\M?,1mk!4>`3jgR-&B'%9.ڹ4']E&jk:ՐT9F ^i\WYiXdwyDҖdY2L==7R@6m<ÌI.I/QƎNKwu0IaK&Q/v*p5$\ yj&gJف&<&%"ȷRJ kP<#m\ǁk{j7דIcA*s= JK )Q C` !F͓==To"D-[8X@#(hԛ"cXgoOMˊ&ٓx(OVܧ'!Ċh.ɯ\w0KEۂDkar#hr EԒ,QD -z$<ρ3wCߌm7C5[2;I<1pH /ȸf[̯dTAjg(הރ1tRUWtChtN?[Fj8ʰ4ԀE5t^Q"`%< 6h倒J y^~@Y-4*`~PW >>XAǚ7riٷ+L6=/2^! (VU̔kߤ8RL{H65VDI'E%OY-}P a?@+-0=֦"ގ_ ȹҡA$\Dc|N/.as1CW'k SB]NqX ҈+YLuA4}'(ӥbPO_Be YۢG1QhgI~[Krm0.5. RxHp;&A0fNazw012-| o"轰q ޕ z,,_.7Jˮ4kz(^OY͆#EJKoͬ1Nev=LNAhtz\maF/,'tη tC;–HJyjnj y_mI,X>4ϏꮊYvBYSnL"m"GእȷoM&(pM hoXT6 Kf+fP"CSRQl;UYK⿪ "7ІMJ47uIWÏ.yL9.{F9UwȏHo1#;mB$ȝXT _c~ 5oN'xARZ[q< ҿХ5Tb  u(x(R)zƍ]]vJ"o0 jRRM5GkudZXnX=’-y1!8g9 $/ /]dHlZmn*u%tt\pVR->>8eȥ`}Ufȫs%Afh.iMڥi#F- ܙ1)$$kE3R56fk$ WbE-+<$C'Ӫ 31NV&ND!Kڭ?HF%I- J8duGsD|x+ש\2Ms\7&$^kDd |`TYWW ̡%z]ew9tBDNj_أT뛰![`dThDx27mGXkUc =zoQ1c'#φ!2 փ`:]q}:3[^V#2{uJܐ;3RڼK%H }3.<ݗ\勽))[U:"z0K W‘ ồ[3ݞoIĆ_8viZHg;ws`,gX;mv9@Aťx~>I/WNoR.Qn27YhQnϊ!Yz!EAA\.;hCGDg'SKZ"..xl9B祏[QI_ĕm7YQQX/Ɠa`F#lcg-#b][SI9rnJP$K2A FAPXj4U@/\\>4q,p˖Y jt f!dΟG69]o eC5ݠlimSmWQs,Z!Y| ߎ*ՏxIإC8c$صS:SV ]8GޏgjZ wa;fk6^owtA 3$BFƌҤ:RbtiM$t=KURmdac⦶y\`vey=.{-m"UfNE9?gϞpheRdUY+&\F!:>xv4e_ͱCkpfyre-ă[Lh, 3 IM~6ή0'I]z}}}8{?vqt þ0<}}z<'zߧNgC/ Ӿвcxo$4cPUlFԿLYcR֓:zߋi0&}C)G6a@PWߟ7yaJKkB'wkf,Zg\R cʒ}cWȒ QɵeI~02e5Bt~?~Ŵ'l{4eݟG*(* Z<%˽6:dA_r%Ojmѧ5S"y`FtS@߮lP=8oZmD |It%/E?M&5aج<5ﲷLZe/E.e4 ш.ANtcכi@]aC1B;RGTF"'|>D\?0hv^*'Ψ$]LڢaHQխGIL3f2S@3pgFmU51EQu?4:)PB`)M%"p?UN=^A6񉿂ӺI^04Ka넪A*<"qOF oQ ZEց 8+%[|Վqc<@BtM5;_N!a〫"nL xG cnnٽKg'  /RC)c mU3yCGגaԮi1†$_G %6Ҏ~[Vn;݁fBM3m"zlH >Kb g0",q.yt~q/5/8&aO$ofhb HCC 2O =uJ *È:ϥϠ)k U1BږC)5ݘ 9ZȔqyXP)LX Q<%D#iʢu^MoɿpOdZִul?7r5p%AVu {V~F, ]ѓgLᵼS;(z$#!dD;lCffMy>Lڍ\Nv8Rr' z\$z-δj`U/TĮb$4!^j_!o"~ s!7"`eNR橓G9mhO+`zm25SliXçGKd5G1{ڒd?"&'_LH; /y\ƴCצВ{ݑe.~&l0LhT̡GL^(MwCAӕ!.z%d*/"@ !%יD"8G\a^h@dEtB3E/(d̓(֤~TgKF2_ y3' %.=BLdeU|1`=e/:<h xM+RϹ.c P(Tj& 'l+H/BQjY1X8T,JK輤DTAbh!@&iCI0W QꝮ+,镕x|zCdy; A9k0Br&=S*p˱SR^k5x߽9AR7Zm9N6'}o’ B8=9p3@Ӟ"IQ*nqZz6g-;Dh u-u Gާ4|HHM蓽bF&\0IuO]T6O38H Y-ء>>~Z^ܭ/ ,^0TĢC~q{P3y yn5zj9W\C *2nRVE,fP#[J7fstΌ # #țȎc퀸ڬP:Rdאh4>= z.u4~F]w0ؚ87=ž:v~o4(_\34AUSUn2v:~ؘTi 3yLFR}Rt:6?[(1?q5*o0>1֓6;}|K;W5n"΄h_1.@;fc%|{f92)7<.H,+z,6Isdu*Ni͐K DA5)//ADxH(? }3%=Q9C%.\iXSb7X4JDŠ"U Z?Py9柣ztb1̞0%3]Y2&" ,YJR+ 2WʹhrC*>ZܰS+Z35sc,v HA~[%` !Ƒ>l*vcktC)&: +D |C$-.Ua٤9w hj^ל< %ȷNR)$VCr7 L,RꠙLՄvQXӲ / eh2_g+8[U \ RWg;`_,B%OcwĘQͽᯨ)hH]SabJ|6=qTѷir7~k!q@}N b&1ѴYLk,W UO@hxʤ9s!ZF4 ܺyȂޑqd14y}|'9 XqKC_] k ͍ɱb񜰘FND9L c̠ڛf1%xջ[? Mx$0[_6[]Zp7uQ2J<įl!MvHqs 2 끳SӒHD^q$Q\'ßqR7䒕U-溭h~IgqLC \pMVIBf4cDі DqN;q]ap.1.ZeW+ԕE6^ֆYHtR)3W%M$.5dI{Gΰ=iV-@kPۤvYs:nS^9M"MwfZf<0!\C8NU3B=[ NLx-Ė[QSo  uÐ,]-h~D4;m}xzs\\=$i`p'Jg*'ɮFGB2ϖ1ƈ?~ohӚuI7WG":K)$ZYU.EzI !cFpnGhI7Pm a ׇdJ紕#"*|Eq1)2 Hwc|GԂ&p5O>4/k*C2)B7XvC؛[/,l[ /f/QIrm4Vg;)^FbC1lUwӋ;puH/)p^njURçKƙ{alp9LF3Y|gqE:S!MCο"PϊP~I8+`f<~l[COÿX}0l<*9}?}k9a{~}8KCdtd98rWr`D4DO(k0 \ Q;s^yK?g~`67wVNb:!?R IgE-X]zc\Y/Dѯ֎rD^AB6RjT!|/+Յ6Z1I[FlVwGf9U:So:t 3brþq%V+[0 i2v,1ݻO4rrϩQBiu$e5ذ%Ȣ= ^),u^H)A)`s+;>BO& H%u8R4Dd@Ƀ7?*# H`d*x : HՅَMa#y25["qsF\xIXs}Gˊop7 Zs3c%ji֗*-0GQbܟ{r!ّc^P< ?3WD0xvI9#R'@`Y?/qF8i.w|Ӫ .,/8[ Q4@"=!e~$c؞]~_VK`$,Ql sW2MUd\0x1* [ Wl>N^B*hiϸ܅i3 i|٤?o7xs38O}q`LѮL^(8nf͈ӤN^ O֏4Z\}Ւyj}AK3> aT zYݮ/zݬ`^ {Rz;isFnk绵B1*V)M|0GTIƺ:b8xI'3?s)͗.|%yyi9fSE6M/3@/Ę.ڶ\؝-6 &RYqBM˙h#avˣnG!tn|7JеeV&_Pek0\ğQk5/8%`?gl#8MuKRd!/IXy&xeHPx=Re4?\N "n@f/å-6y %&ޟ%pۏݘ$Oj%)kBq$l%-.#:E:Ml|1gB]*y9^_H$xuGY:uٞ-K 398X@ (zO62o]o1ScG>'|2,}rZa.\9 o DS؛AmEPg |-;-MÆ|~Cu4a)J)B| Zw瞢ERSN!VuU+b#hy:|fۭ!^Q;*k:E6͙c`lι:AR2kzbg񑤠8#Aɷ܌,>8$\rARҕ3 Xa3A?3 wby%֖.+@]#IT!Wow:f-1:E(v||4k9q|u_@08}1ϲ>E)`gy=3f`ߠ[^WDF>vV\rGKh8yB# 8A}Yj@o7;)ich*op۷"ÍD6 Ytʔ*rOz33?]Ԫu5v"դbf.Wos.<*^+xMde H50JhFX,{ڇqe5_c[OAeZ >f)%~F4D݅Ae]jjъu]$rPH)n3$juHػ<`t&'Pڞ2($em2#ܢ/2BS?z&sMxw_BRR-;Y$[= i=8/+ee(c$+B?"m0Vb9fǍ ̶!8ݝC7^ĺtxGX͸5{`qcZeڶ$_=wCH1)VF&-ڊ=aNhEzWa/]t=Ӵ!rʒ@8p{3ъ 2A.|v]Ն^->: 8n#йb]H+AMARofB Kh l[l}e1Ϯw/S|]KM\@[skw-W|jscM)p7X;A䡅,Hw9ԏ=umA"7MBF NËO_f*jzzS ;qu)4NlsFWZhP4I uKc* nAz-RzL@<$nY ĊF$hX|d-8/d>,+u2"iXj%k~t/zUKn)/ QsӣˇE>('_٧Eu[mNlvPϨ IGe}BOk\_Z2Cm3E vQ2F-1 8F8aljP|Ԧ!?F ,h2R 0A W~ (P`4uCZIi6,gG 'vqf|_`P,܂!Jk {v}5zbjQ]I"Rr.vAo`:/lwp*d#J-B1rbpvFK}; Bmo1&bX*qW4q-Y]=ڏ=B6lY6 tww0M9%@n- ӌTa#҉L)S>䡀MeQ !ߦq;~̡9u/>b/]R|յd@חʹ<#=RgEW(U_~t#ce;fh:efU~19xF<huizEI:S1/\]%esQuoSRM>fgz#wfIܹÆA޽Z B&*˹Nj#XF~`.F>[Hgr:] ҟ{M|)3Oy[jv坿ݫkƟ`kX J>P &YrH$\5 7!|"m̍+hعVx:jC˝#4C-9`K=j5߿lDߝ  }ɢpR$D Tl"6LY`DӲW=lC)*əv:=0C3J)!SU9= z,ƙ}cvњvVrِ u}eSdsQ6:;Oa tbI2;q/s#Z2&S-Se4:+`;]gߠi+9P+pOS2r[x[P]]kzOzH̖ Ӷg HZ+/;e T'ͧvDZܞ>1r&uD2;e^|7rr NgEw35kE;窎e͐4Tgb:F2Ày\;%i㋕E\^_8fSۍw;x/3:3 hh AVQq^U'8҇_'bM؉ulP-sj屿)n%3 LiaINep!.ȝֈk]^\{9ϺZ7[0g5 -,~L }o1[{xoOk}%']<;ұFșUtF^ԁ/hi*OpcB/ڡ/Rx5P{MjQzgwEx2QeW7bbnu,Czrd}3X/rxձ"t󙛷_/"{KRAl:L²Քw-u?b]/xk@QojuեLU_^[ȚZhx]em/iNr1Z1/ E^\51JU1:@ְHPq {Chu/ZM{sP $/htttN>\Zf Lʮ)8}Ai<&Qh1At}cK"Y1uѓǣԏ +>u发Vp ~:ĬdL0( 畭  @UC+(} uOgiWVc}YaU`ਝyjKT Yg~GBQ`{ǩH) wclO8M`:mK,rCIDuՃZc&7.\@w*&BMب=Ax (B07m]mZo뼵j"lPL@wsryP1׈1 6+l=$SU@ď lD]y9[}ޗE@x@V&)ިƮtQ͟0GEWLoMCPX" V~ʅH索QAR gCX]gtolQ!kfm}WO3_ax0n g iͭIUs):IM@n}\'l^%B< :'?V !Z'AjmA3A u=[sx{xl_%́6 i01:ѥ^0AjJ!KFԼ,.b{4cFN܃yrM$;0[q„}Ҟ5C+W*ƮtDfDžiD"1Fsq#R4o(}?vqA~šte/ EԄNmi4paQHF(S@GAiSbMd7%mлBjň*tN &~mG{%ó\yXmDfu8yf- e(,'BPu.7߷TdZ&Z"-~iGН^?hC?JQלLAj.;@>d9u3PEzt [_h6U?KґtST&k\:֊-}]A~,0L'*?U!S`Z"J]=@``NOF'MK:ašX&Փفh#Q0μ4Qz07=16jȚ#V s ̀¯u"z#'@gHM}m a߉!(ҝ&#Ab S'#ԽhÕ-wo+gIZ[To7#H׬ ;iI؄7-- L ;ϸ W%vT&qW9:p;Ua&F7:s+$q;tN}*j1,%N$ {_X(V纎 )oHL¡1gg\78ܢRw#$P|Ri|WtB&k=ȵ]$S `&igQC8 w72뀾/Umi-Dʍa`w׎j#|ïsoERU1/->M ˘Nʅ4PeA]3Tacf)JCYwz! y$xIPY>;lN(G=vqx 1]L.uڀš m{a$:4xό[jvaB_[i2xGz)uT O UIO]$ve@JN$pE]7 3mg*9RT K%?uj{HV].snvcQެQe0CQߙBT> A;.c?ƊвḲJh."`TI 1a^T~ܥdj ?5;$ # ,HMỈ2=/KV5v̪dh.;8TnAYӘ6UJV$CEhrrj#AA6bn^!.r䉐*+&y/ L~Y` 7 YceF=6`tϫh?U#T;%uT,^]~-Wax`&ăML/-^\`IFkc0^䌄3;'rI* )Tn>1f(Z $AK!А; r;K^&<6@öyb؊-eQqA&X d,!SO+ؙT=^.X7L˫NrzC|- cWβmO4>ٍ\:$JfǺ&[ L$佬d0Vi!:~%5fe_280];te& VO٥(Ƃ@ PaZbJb"ávHAHx> %=ƎQ/gh(KX:@AlMMELn ](b3yvhDdLBMﴁpX:Hun$ui5Ҍmr)w.*7$GI;בcQfI a,8bӀpSP!7-k"5ej(hˋz_) /$0Pzd!jHwm8;Y^N[j\h^BչM?qf; 6Lfq+ |a؊2pO7MW]RgByv*j?bf9Oo'F W>u[C#q?P:m0G1339`ᰘn!|fz#/NFymR8`k&?ýu%=wv Ǖ&׍G  A6Ρ#!Bԁ|OGE< /~U%NlOVCXYΛ!L&~^MPJ4g5X $0FL%[ 1rR+?}pN$c!k+]nAegtu95uTO= \~&_ Ji[Q$(IXBYmKy⺞&B(뭼!t چ#2EF"CxW8D N^Lc2l[d܊xfenu8uFCanW~|sTI9X^pΩ .6B'qaЌa~+V~X: Fy3DJNb M-/t/R3L;^0L"h4vQ{-R]{ TLҴbظRbS5By8-Otuhu@o?UqX ѳgPO ,縬+Bo舾w00h 疲mMzs: 9ZtpSS3mO꼩Yl{ؕ2>$6ui#bR%tKSHnyNn.mU'{}D+蜭G`qŬ{'!Ck5R h9mmj4[0$'zB(CbxWhȭ"qΙ|#^s"Xѽ*<87' g x=A'b$쀴>1L]dt 1'ޙ[Wa"0*a FQyXR'MY %r-gI# 4{mbŞuĊGucR0R&+&LO`2Fb0dzY{e ruMMlX2}v%vS@,K gыs4ɴALqr[cIs3g{ Ld6+oJg `&kWm7NyuqLj[|P1`[Ce]n0O/A8+"AEnYnOX P ; C]a<L"ksfRQ/)Ž\]n^XOq~ @3wlA8Mr夿'L0p#z$mwUVnݰNټ{/FӔpE\YD By 6b;5@J4!?4C-wHVJ}wB'ՌQQŹ#3 @]' V؁{W):czwK.-B}t͘ڑl0ȍ` ,}Tp|᰼J&w'ʍ6Se#q)hԝ,/3Uߩ۴ZeV7DO ejs|VWl ra>*-x0܁573tM&9fpZVb~Z%G9OYuG[^fj%P-$czNE@fi9IHu}{9ڒ\ 2KPea&l@JF8Ae\rlS< K۹G]aqVr7ib4S[`lA"^K[N]$&:׻|W-61P0BDzR{r^҈tr<^;=bp BJhhsDZ0,o Z^g'$V7C`*I ^5+0# s8 `ݎQmNUEH!_xҎΕ xd)`+t4\|N'47;%BilOp6: ,vJC.R@SD-{@ƌLolz?!pU m@ 0b[syivau0av\[|).h _ԛAsK4qT>]J V8#h0'"C)ژqAo8^r5(8izآ38L#@n8ok(GJ^!#!wwe`PMB,3$yȋ5M}b'u֏ΈH0J<--DuK8 ﮃvGsUIUE)@!'z(DX$El&@m=R VRcmm$ީWfԷ[k1烠@+AU-6LYVUL/Y ^ v5!/ո+6Qf|* d?bnp@`|6Ps J[&NhUx CHHH/$4USq9Z7tN~w:UHg%zU{GJC)[QuL+ .9 \AL$MV5( $gcVkssk!x#n\W7uXS]-6~ ZKZ *͛Fes1nXԤVd`Aca?ݬ&b!U$yr2ᤦrD[E^J:[{jSh5 \ibJS*=:2-}쾀ITMкG,dt1.|W{O-75%-_GD O*‘EGcNG3Lf?ޔrv p bʌ]M}Z!@Y.GL068"$J D13x<ٸ\o&.Ji"2K2V>"U4$%G'\ q0xp JE-s/=\+AvJ)dO"%9W8.Bۂyh :qWb]Z0BS>5sGZ揾r|/]$kPLLx/HB(v =bJKI7fnN[{sl5POwTL>YhsPQfu(M1,6 H?f .u)03EE*:?O%:C~׏tq5ۇK&\4@sFh.]1JĄčGpst]B\!Ɖ(=+r2Off|<(v!FXf(tZ}ԢU5} =À)m-9$R9;I5ei 7~7^7 B,+Gm#ѕ "} w#YکfZrtvnܙ> &P2|6u=P+ !ݒm(QozrpfxMD?A=̰VX n|;d쐂sJ{+b(Z;#>F r/qwv6NIu0**Dag >_;4 V1BLlћ*MlC>ZsU7=ZxGNSx ToO>Yܟ; p,okyo8ʨZ6HRBi)NЫD&T|L25Vӡ[8qZX:M1Gl}sXD/@Cלt'wP3,Kh)LSP{Qn '@vy(LC70q]=Br `z}yF=bB0 KI}1Mlj\mx@nH`SVx:Z_'JOW!9bڲa*F4QdPa% sh1g1ybMu,ׯ@F5>:T{r2ƈT ИC'vM^'jFXG/iku>aষI+*HҮ5΍Ubo X EUuN4.c܆)/9UZͦ2FΨ1 V8g~Zewת"XaϠ0eeDQ ZdI8]H>x;c* @;xL6o?\Y\ty)b^ k3=d"瑾1qR.1jrVuT9Ͷ. 'MDe}Z$eFpQiK˭3*Nɲz{7*zxyLM4XR§i𾌽wSXBI70m@ڟk Q@`R\,Gh|i(  fջVp\=<1<1f\l>.0C_0ʃ]Sݟe%D]:ҶK;]&sGj0\\&K \QL" =2#آB؅/ QB Ў{&9t8W8o9BuKhy1i{ O'aqKrO)ِ?)6^@5I/0s ېp֤g[1¼źo{2bՎ&G2+歾 i>T}"Ď[%4cʤr8? G0ߑi51O!N213O!v$>Ԯ3h|Ax;'Uvo/YcF&عd]Ngrexkv25?m[8}vjkJ#k!q*l8(LPݥ fsBL6a,Gޕd O]`x&QW=U^qcֲYOHt"1XY<ԼO1/^;bp%OIUp( KiӒgXU߭NK_YgЎоg Y;sꆒԺp^hXΈȒb &7?p.M~TEn\'6:i t&H< ZM)lZos񰒓grEΗS_uf?mvY8m60;)ŏVR}T܆PLL[k @x/*,&ޥ:ZG:FW0V(1Q iB8,A^jh8Ķae R>(RD=.JWwR!==q ף' g Y0 #"+L5Ql ˰X-L1~㘪lqȡ|D PPQI3$]jqdy,ĈpY+<[H@`Ck@QDn4}c"!<Ƞ[X8{+g]$)\tt J} loLpei Tj U }`ǡqb]893|Kx.HNV-GI[xVQ7^j6s17 &C5lf c]!ص/u>B!&8O*P\bL[ [0|LQL$%bpM>zq*W6~ O/eoc|E:m5ڂVkD2|c MFLi Yh82% Z}˱DPwR bCQ4)džf`v42H j1yݺ\i)zM>[U+(uigegvu3=Oȝ< '"l#miAPfXGn8T! k۰VXk^="K,uA{s/~Y!QhLe!(oݯ-l$S U s~3E.ESPrzʱz raE+>p4MH4Tl64}n |c4U&ʗuw49 mkKGQ޸7n1;dAQ )h=Ji5=~Ǜץ@r]d{_QmHyjVx̕sfH^G!`WݰzC@ BY3q+#K2 ) '̼-fG8+VQI.LXJJA4^[zUe툽+JF.ǴZV]]x}v uA^[k=̒ngףx)͕eäڂ?F+_L˿ XE@؜zDP 8]>t-\c "儢4Wɣ0 r?RYwmy\` h0b=jȯ,wYW0;\ GE;_LWIZ;]w~QO4-L\@2c]ΐ-q~m<┈NdTH9us} ٔ{k wJ b-&R72v@A3uX9+JjECك~Q:hCk1Fe(cHsiz L~fUy݃VYdEb  k%9b4*]N 8SJ"-naph)XQ @.f d}ۯ( hSP]ZO$7}aasv(WwQv8œX.se~LoC}* 6Zo&>\a_~E8dt}_>yq'3t$\DD9#\H]k'S0nS]n8m}l-,3jgQם(z&B -`^u]8^_(K hxo"!{D3W S-S{QPp͇tLů""@(](kC3nd92I, H0oGT6=jՓ z}-͗of]}I,:VWpJc(p"f=5;ӭ6@+ ?,BbTnNz+(ݥFcBz-Be׋ 11csrY{bNb"A|X-E"׾AU=|AӇ]홁"@a ўL7 VچC5+K߳?L}))!v G>,IwPX39u ' $XpQ=t["N՘ݭDdJȐxa3G8)]+v1?"yCMt?(_/i' Fo" cA=Ly& O dV5e)D{_YZ}ܒ)ku4u$i[}*9K o9rbXq+ 1mMț`l4;+=|Vfx.!xjlZe*\AqJ2cv6dp'J<'8~!؈B!~ga~L3Z8)0dAQ)"nP~^3߈ap"qKQ!#eы[,9=3[Y^Ǝ;ʿ_.؈|#mӓ +yh0KBϐ6cdKIt&XƱSoV:KJ8XCtoAo-Ri{L5%182ggg(6Y$!=?-{f]&08>.y}#־i@yX%oQ@j'w?@~ssn vZ"y=!В+Qb.@Fq&y3[/ӊkh`Xz)gK"U0.ǓH/"[.QM6<~G/P\%W Be zjBojAv/כYYuFI9=6,pi05чΌ jɳ3hc٘Y\&̮Áa9mzC\ƎFVS~*3#Jhfcpp4Ea8ueYtѷQn2}J u,GajYbnh&|ZV0e1<ob:9s>m>GCÍFdzm=ECt"DwMu+db.ri"%VN\U gJ`pXs u?ӟt(-e8;ۼ~-ȆbIjkjjkZ'I1 #pfHcS:x>`Ȣ%AYƕVu<#Y/OD˧hCdfM6:8ӝS0 mRhjЎ4AO>I 'y\I=!g~acd6YBE¶ebƯl:~}=c O=bK+)Zu.]kl@J:UxhNZ]hp?_]fs)i!CR-ꦼR+ơw9!rPߨs/AYM N(G?<܂9jAsp>'k|GSR5q''e y,xk27*|swWz rm]yLi+W`i4‹Jd$Ҵ#ZBft"mNk1czj)s7@:b/Ϲ;ּlg:y&Da#=?x`&b׬~|mqNgڠU\r+^NnM;2 PxJǰ{'M%=$Nq%]Ih]KD{¼Gcw[ADOBc9YP.MjQN,p;I2svӕ10PbW.4]3ʱj}Ա޺ q4}DT)@=vfFdo|TDR*ZFlܠ#:Y' 3=;Z Ȝ7{fw^X|ر<[ r0h^DYC Wy45`ݗ/BhJ/|<>s;3J|LTJWa-䣫׸~rݪV|8bvuc v)jf3Y^R U*.v8=r+3 Jrt@)Ir}w*|/ 9lǴ0Sl1􏣖cFس*syh˹%]6·+G-f5sȮ!pYwс ^!A^9Q=/ +ፎ-Ӛ  5v$ٺ{4!"ti GDY=\M@!T/u)P ;s /;KJHdL^@@+qJq4:2/Q9Щ,uU c/k#O"¤|\[MJ, 4Z"G#aM 9p=@QvVyLt(, ?G)8;i*2~gya[F r1sr=u1r e ?|[;-y O̅օ~q6==D'qϔswlM\U] `y`_5lrE(l4&penz4ݗٱDZy*QUp %]6N̄ga' xGPqEت2V{QRd1JVKϋJ=#ujsl{Xv.XMpI^Ea}}q(x7d=}7i~w-P[-ʮ ÛͫcK4:o:ʝIC z԰ú.y]I=6-)<C-B݈zO;2F B᠙r>ȩ,nFvy T[Kʃ%V`t'(Č*Tńg&)UV3ҭX+1pIc/6@5iw|<ՙCTn#sH?s@/_7@Kkh)t tWqZuWfۥ' iL }X>r\jMY/3M}}+j#-?P 賢~{N΁hJ/g3}D~n}Q +=1yp\nL}n1: Mo1zp:K4VtDݑ:EjuDh.Ic}1nܰ:4 iY6Z+(DybۏV꣱+TiIqJNƥZ٪ 7Wf>[= u!kr{/ݑU+n83%HJD߯oEHRkRIB\s2Li[9À 0qh0@ۨ 7E *( u WYT Ogp@du f7R$]>Nߍ rݷ]<&`> Q>eyu{pi4 4O&DX6x(=Pj*]͞.h~C5-[i մ'NlZiZuWLj%8&H{ /H(AϵVZ(}=UXศ XV*{qaWfoh*HW賗 #)ڀ;+rqZpxqOY@g71'X?"u8i&Ъة6!"̖)0q;ͦ2\M\vxEGsur&_`~dwTtgŝ6q7v_e={6ifߍX G:(ـ"GJfA;Vf|[tUa{~!__SHeZ]m1]7߱#R&<8gΠ_ 羟/q^Ad(o#72 @[.ט*㧾fI y{pV?5/#H11+&[33;36EGgF[$rƎrB"xo *:vuU9oCElߦaK[Po6[mf<TN'#_ gH!(~/(eL X21J!˟)db#2!_` 6X2Ē ,b2SG)_`GLYa+)1e_u_d ,Y%#,٘~/(#l,XB!;ݟ)WRNK!?@e Ő/@d#f~F,P?ood~Lhyve7 "}WW2_j!eac dJLYMKE6w nR?Knso}J?Y]5u#/rjs.ROOjzN@*=RaçG'CJf!OCǙfވk/J>ew:(rxܤ6y=!"J]_8>0A:٤ *ś2VeM$K(OXՋӖ_kiI|r1Sԑ/xUYQVNXWī@{e^:0}2[U7 JG]~&?8V_zfy8?𶀷K,Xz c{sKk}G3(zVZc;'sg}hM]  wZ}{{[{sS37; bf16w4qw0?8U07tthl޺\ ooM{mJz:Z}կ/P^I@_ Ba,GOdd~(%߶֟#~? 1~myhBO;fYS?cag|;hY\+˛fea?7e{sԿleem?gv χ:l8G^Yϕ[QI:D_x /by'oHq /had~ey3X{3(~#*mVH2#ݿ*O1=?V{~Ա>ӛ_o2'~ = ~,=\/W@od2#3gzbgO`qG6ɽ40Y@(cDXQXBJI3}=7'W(7MnO~ϯ_HBbR?#poA_Ş!(Vk4&:LOgQF/BoA@xÉI:1A;VP{7h1VQܐm*x PoD m7hhihEihihihi ~ ӚКҚe`NkIkEkMkCkK֞ց֑։֕:1; C0mJTssUT^4_ dg< cZM@:BxtO$29e <͜ܫ-hF3Q44!3[dAD*4˞$.GG0zZ$G3_vARF.by3g&[6K@5Iu )qkKFܞLS)s Qhb61*|IJб>B! ρj#'}~$dZLPD6h͐ȧq;w\ 烓,#^ `I9hW*p\mJ|a"p T GGFR0 d: = Z*Ȩ"TzYEX A՘" -a1@TØy8~u\߾M^Yhހ`4nn>}Rq@T/$(5 esKCip3 IK <+eNSw+B0w'h1jMϬFChɨapnlܩJѰ_Z|k;q&PCA:U };Hm %k-04Da3F1FF2:Ͽ^%fe'k$Pajg[Of CG2Ӝ|C Ti5g)qʷINƠ i,jKXg(}[oEkZDt)=dvST"2wkQf}MlN,iw?3N1q]1l/_-3A"lcL(Z4UFS|k ,P@~VCDqc c`j/ V .DJ^P>H2=/IdSi8xc Ԁbr-1ї:Ojﶝ&ڌ#u-}g8ynlPe !S`z;q[p*)~zSRd(ħ,LV63(b;٩ײӇf\">N-%MpzsoԌBǷcղ ݦyDM1|vff}ׯr0Ét^!wuuGWZ#gRsEfHZ-fՍ"âۻo2ŝ_*)OVLSuN=}E8.,&K(X@ٹ#?zBL^A<:Dx4-}BlY#Pl1w?a)D,aqv ?g:jKD.dFȿ[sȝB(\"[0 (\\`JkMY3ًwӇf^a摩+w. \; -߿fApyGOD*# ygBя}VY JSѨ 4Tipf bX< ȣdޙDs̒e8GD!4qdR,\-|$00"5-?\nHjj9%hNݱ=dړ#@&g\HRoΥ'Š$p^:䨵@s { a(OqÆYbj])R5|i 54^ncՙIPp_甕mc[OS\+=/ƆVUVN*\F9QzN?[Hs3ߞ½7HKIJ{0m!O)j.tPQ l ,]0rI=,˪>h$!OS[p[9?(VhЎj*OU&z-2Vΰ5e-tne{VY>M(IDzUEm5$C6γ%tf+Z[[')Wӆ- 8u 54:2Eӯ}tު:XPL9p26R"ϕv >]TMdU笏iT$y š rie0:V [艝{g쒹Ẃ!X,kN5IPm@f̘d:Ьkbi䔿02MN;7`,w P@ʆEec-JE6iHi$}v# rxDg[td4uMuU[r`M5ɰ!32\\.Ws54l+, fmVbfaz@`oV'!tPMm[O0 P-ʦwxkwe|%0!ue0 R5gLUMq"4zJ u7gcf mub 2*$npwas*{Rrf.:U@k W^gc/߬OӍ}=L|9 F`ݘdϗY~%=mA ,9MDqmWv_i9n K6&7BW]t4#X,.zx}s{$:Q3o*!Tnʎy^vB'^"rCAcɞ`>Ui Z8&S6+-0AhZj%m|A*$QrbpY66"V<]c&CRqIҸ#: qFF̠E[Ǐv1bF|AkUVq˔8L`}Xbr· r}Ѡdm*>cpې\v+-J|G1ȆEl$#`7joQhr-P*ds."2[ x %x1W5:{-Y]xbGU&ㄊI4inIX~GK;L CN 8:ƚ`ELW܅Y! t# [\|,q?v55SRUCnV2 ns2Ieyzy<UT%' SO: ҉2]H/@7i_;Qb[e@f)d!:.8g|sIZ+UP _e06kq\7QN3 `%mYz]9QSg90 C{mC"SNeQa]?WB+lX}&;@NX8$[J˛=/}/3LV/_HTD$Ɗ&|X',fN^֒FpZvjFO3pqTxsQ`0ɘ.b*V'0+ ˻3uF1JS|'&c9!JW2 .„k*c c&㽾$[$@ XR_kN&kʈqg?=ї ǥ}d&RRR1 P] p}@ޒYk[3H5r˪B Ձ1,{{NLVYCV=n,r;מ((~fC(,6~^ykoh5B/le#C#[989־"N_ fC{-(>5q W-c,}K3oe3D^yB|;G JQ?'3Q}$?2W|دŭ٫\N%IBBٳr;{J. QWK>u AZqۚ ^M3r5x,"6MYo}EݢS)c>epitfJsD^69qʼn'isPloxWxA֍(QOp+ a/؂>r'AY"waB[i9B.(2VTljn$(I;`'&t]*t>ee,]q䈦5RݟhsI諑6=Qj-qdW$}r\=" }":-ƓG*/vp7=2)rhg (wl?VMDG| cr,sA f [ N [J&ĐMAOzQovJ 9~:g]AqÉ߻K-`j@ZE5EYp^ݻg#K*/>SjG%]k&Φ9&D&re:SZT`fkY߰zO4V f6!&N_U(&WDhliģ)y?s@ez6xh}Zޑ_jUN|^f%ʛ2nr٭B]iߖ޺p!O;^9 t 7[|O:UQ]pVwQ\$Bw%<|}z[[^Xkc9։O `ZICӒLReLzLmf2?iY :j8|$5|ƈI Pܥt$fRqmqyMQ7`R^y23_*;K7F_x^\wF ֑ߵV79/-,"T`{2b^s>dX?+d2Qwi7٬逫0bQ]iZ)zn U"iʶ(=tS$PiAs g-;/"}wbkF-&K5)D[=OUjOKGHP*JPnCljMJQL ޽I[ V%֛1GHh,i '0$6?[*SƓcS*^aoM-M]{;@ tP4)" LB;{( "*V+"vIBBw˽&'{vggggggfwgzܺ7J?4$ř8jl-|}d3|Ci1!Ky毺Q~G%c&}V/rbqKm/+So)kysQ*qm=v̉O\\zZ)3/9l?FTb^x8K_9sqB}2|B|8|W7sz,_cn:_7?+Zwk}m9{˱LffV|hLx_~p0!'Ʊͫ'P<06=jcgbᇥ3]ƥH7ɛKs豒O ްUmj $я)K3~37Tuڢc "\vMm}uv <ٔ<8.s횰2="WqSq g%tѾ?fTLYh+ӭGhj~TpVжğc[V\}>Giџ|Hp߱[fsBD5/Z.s51Ɨ'[W <&esQz/veAcK:-zcQӧ8Yh7*F{vTC^x]T!nfw%OpxҼ-3py'GF=\xņ\g0ÍCts瞻Ãj2 Ǣ4ur]R5=ROHr7+{Go:mF3sݙ7bt{HyioGU̚qï׷uNoz˥.U%1߼~wtTn*_=;8G,XF@3!z7U-t7^,_DtCgkw736W߼=2C ˷Gd$ IqrKj'>Eo. YYyiΏ_@t6L!qg] .p xhK#ۣ)&D+ٍN {idEfEEs"-S_ti-%r9D3r0ff GćXQ碇<䋏}s2?&* <+`y@MxJq";w''ɉ@QbתG242w&m}Ø1#sp}c չ9/xZT Sm,щQ9;kF{8{qfOf$\]|gԀb7͕O_P2X֢jZޓyHdmiqʯ݆n'>bocMW2{?YQc0/}&X/,I\RvvQޯ# _7ի LLXX[wd֌kܪ_k']f7GS߈8q GjK]X2umO}ilw,( .͔aslb&d|MoO[W# _8-mQ g-Wsn۸g-e~ܝn{Fs0Yw0ؽ >x73noۙlc%z$>p+U/Lmcݭna_ AW%nvem4rJ|jy?r,n?G>;7~ >3gV]̶I>|z5= 7Z>$"nqhoG‚t+fًⳙ/>++>t: cFĽxpX6tZՉ쾶 D}kEkKinشuU7+?AUNsm0Ľpn=tUj>~ٲ>?-s\[űtgns#G&{/d_ZZ_$Z?d,*3>G+ck>3HU4{ YC(24Z%fTtqs.>p\mM41oQ=a9.kAK/ڲ*÷uޑӑ'/?7jŞkc.m>d`[ՌTO6fxg{'*X:ox+O'q & ̈́w~bDU4G]>̇K.vipGӬ(zAlio1+r~1eiv̞ ]vި-lluiġkm]xa83E9k?^5 8aã =vP\\ܦnۨ*a?7?O{$>"k%Wʉc BLXt`SzKEkLPcvZ*MV}b?㭍̥S5L:Q/)[-yVOue}ZsrŵtW-<ɛg߄v:`#gF𽋇/kukyH+-rn*<{ՕwO^ r!O[ΉoWt%u=#¥eޮ~z=ߡ'')Gl~^ܖ,8t"AvsV#ZNhnNY^?kxɅ'?F-e\]߅?Svoyz}AXszn ȶ-Xn#jM)w\:BܠςwTXGszg;V}yߡGޕ (ɱtcU\*sX?|{<=8`m^g :[f-93w,'L[M{itѷI_[֜3۷)gɈ4ԩԊ|'2鳋Ҳ|I&2}Ί՜4B2$ɢ:_4x9SG?elVSkpLHf&9ԬwoDk'1=nSz mMV<a[DgUn].;5FH30|U] wiL[̾`䤠U_C[8ΟԘ- J#-g-qwzŔK -uRu37Msw!T, jUΥ# Jߏ_tлpzk=m&rЏʶx֟KZrM't=;Ztsx#6d5{cvV%n?q}꘦/φK9qoҲ+uBfx96yحtWNu{~FUb7C9*Ǭ{̃q㑽/n*ޑa@ZכKvxޘ~w`z%/Džte}q7K}ڴyޞϗ]Vk]=׻z>r#z2}xJM>ݴqWmu7b۵Pϗ ;lĥz4g9h,lẟfݼpLZgZڌ{-N?! 89zKLHJQϊL_ݷOY} ,#KPMɿqf.z~ġ]Փ'e?Ӊ-C78Ǯ߯}x,釹usu^-.{zdtkW?.vg%sg7}n QkzmY:6)Y>Ćv ݴVW^an1:p+q]S qub0[=}|q}KeUV*~zUSl:,pY(H4.E/̢;eMr8A.o*aj+9M5IdFپnq9vxW7Fq䅄wux=/l>^Wrv-ޘ׎Mgs0nt5zey`'6pf6{} ?B#I>jS.ޙ|g07Iqfvs_}5}`Aބ+枟0ە+K_{2N@d+'' |PwM~I;fM;=tsvծKV_y:2uSg U5vXkko}5>X5p~M6,y0lǦ׫\./fAᵤÝD1Wjޟo~āܡ'58wwu;\xsJ_ܪMtۉ{w7vآ7 =|-;sQӺV-nTeKZ˞T1.*!6Ɉ!s7-Xio6ܜ &zxdp R]j2ŪP6WbǠY\ӲIW6pwW yU^zxUƻ󙡧 -|ljzpz>?'VOkNKZ3q^4#aC?S?R-?}qW?]ЖYuۜF/\8+v8Ãrj&:Ay=w!Y/xf"Ğtd}b=Dqtw '<=RmJ*>4˰*S)u̩u|eắQe5cIOnEIǓȗg>Ι8pCZ3.c[Z7P/Y$\;_.a/+BjjdΌ%xd6sաkFVO9R1Vi: ?Yf;{`au¹񽋶F Y]Vܿ}atf=; e]]N2Ü^KD\2HPJաjͱ+չ6Q_PO<ف-)a;k]t~j% S n7|I7[}sy]R9iD+֔ܜkBK!nӫ~\߷\;_X/}Ah K^ӣaNO޽m )g v?Y%L5\*>J},5;q9_G/"' :Pu&)٭^~βd1;y̬wq;_}yܤ4v@5=im(ؼS &n%Z5!R$ۖKOM[r~8_xAG=4<9fQپ{诳ɏpt}9CުM{nVySȼp˩'s[p-QQ=8; 4hXքLvQC7s5sw7^/۩ies]6eӯ9?o}[9^=Fz|̺j&-1OL ^f z`Wm_iny@iMIVSw ?}wEϽ|G3׭|J_fz4p/eՊsy, _~IAq^ռoIhSv-5W F?b.Ҽ$1Csodsw]Y7'sof{ɝ|K1k7l%y߈e*-{0^1Ʈ0uaSw5Vµ3ZV^߈vmX7.1Ow_+cySkx{lϤjСsƌr<5•>ϼ]-8K-39b{}A~t}uY|kT5.FGֶ0up5+nmփ/y A]t= jG1 nLcޭx;{T/vT,BëAEW=gCO<녻ߟ72;?q߳OUwҥmg[Nk/=TFL^t?T"k·v>0Gu_5ـ{`eߦnL(L.ڳifnv|}מQn1ۛv-J\<tҜ$=b,mnO{n!v5^Ӯzvlj~2# poR}8׌+ECWchJ{xdye{| _Xu?9ihQKgzÏ}R+i妡?v4`ڰqSFv>_U~d^'s\U ~K:dӬ}e195o^CzoTk՚Zd8wɨYjW[-ێBYoz2vv0}ao,ë8ݚ]5ό<6zyo;5ۆrﮞ;>ZŅO9B6x Hc>;YrG]K3]mݹe3ͅ=w~v[53Rz 6=p{~)UZyL鵓>Y~E&O8Xam:.ZҒoNm٪Oby=wn\er跀 aE铳L韵Vѫ9fzx`_vGK|V<3Ͻˊ_Uk^E nS]SD+$]֓XZްwZg_TOx9}ў/ <9=Cx{~}7W:gS;g {Lv2)G2 ٰ#l>Pr5M%n-Z~ŽK^أfAe] KӉ)>7-i0u50>y]1%/ڛS77,*98}]ŏ2?i&8_vƫI.nq 5.NZ:3"R癝}跻k@ѺdBojvC^}c70qZ~drc4IwgmN%&zEe;2Si5eg$Slo  7/}gnrݫjųG~xUpGf7[uո˦tutv\Tע`i ݓ7 ׻]\w8EБcK37H>zFjط_*)5)StI)x;˜^Wïovړk~nL6:7Y/Ltu!f;/ ^{`<:eSwo.c0!ң}oq8/~:1jׅv2&Os:X5uyҋl⹸xy\?𚣟m1(G(Sbϱz:>Լo(}\8A9'aכU#/>$AGcRi^Y˧kL,N*nؤ~ܞwa&j{O =~z˴x% %M7ko߮w2CG-~&sڲYX̫3y6|o.=߽d~],̙ȘJeeۊ) 3T $fgĨI*&ۣ{wV,pW.\FH֠=Q 并Л6]ӷ[򂯚y'O޹0{z>O [0Ғ?b:9[s~ ]k]+}xYKOxwq{UR5p?LؒyFёkzp˧~ؘQxouEsd*'o߾v z7.,9Z#u8[AƁl]hYzϞN+}$xrA,xǗ<]Կ=?hcD.5tRϩq" nW9LrՆ6Sz"۟C,6fmӀ~7z]u=(ݖJBa\y1;AbBKkms.svrHz/`5 x<9v~v70zN9{TОx#*F=ٷp5f&bh\[V\og )wҺcYQ6;攕Yh-4R|xoqӁd>;ۼxr탲O~kX߲5NZpP|{J&l;]73yuBޛ!V/sQ[p54ܟ47hZozK =ЬMyyz#a؉,*Zp{慹j9,]Tܫ.xv]\ud"1)|H}Y'ֽ0$^UDzp&R>?άd!VYiGO ڸ7tuC.tAl%1?Z/xri8qɏZӟVwB057L7zwNmXIpԳjM<-K˕gc.ϥ( 5z94d 6+1 4)켣+6u5|"{Ͽ6#hzʄu5-oاwa6_?^r:\gz&mƲ$hXg0US&hPj0j߳98{ԚݓF7^Ջ'~w9+wګ-H}g?=p"y_3h;ImICH7S s݊r;zZeެ,;dhיyGmaQ;l}sߋ?BC&GAK{>-яb~HgmQhlQOO3WY{jk%'9[Z=i/?b]^Hջjo՘^p=xSeZ<^6oo 5'FYxm|;觾 KߞyBk@2ySW^ lZz]G7h7]7v'PnЃK:UGA]o3 *G<ف4Y`[3M?]Zv,~j o#_b3,;1߾|uԇu7迩U{Ժ>CGȤdڧK;VƥbŁ 4;O\UN(yC usW yޙj9eq֭} f^~-%$B~Q[A*[m}*CNђFcŶ&+*SJe- ։_Fjj'\2&Zd֭,׹g\0̵|m,GK\0~߿;?sίӟ^9;J= 9ɾw?=:ۣ)֑q;5~ O13w9۷YӗGwS[\Ylږqj7FѫW\GS%523+H9_v/t؎y]nQ{3[h\̷P=9Nt5@q1ޠR֙3^4 }1wSs>xvuzg|z< ۹Q&VcخaY;v~sGt$(wu$^ 2("d`/i4ֲzMxzq"VsF8lOkn4ܩ@WΫ*_yt^SJΘԝwz]aztT>c/d=PEMk(5tc%ofZ/9G|05;sc) [NmˆQq%$ֻ}ާg.JޣHсuu+C2ss /Mzku}8\<!K4XtnTȁ7  = ڿvS*Yqa85x{ⴢǻ<|c˕o3G5:p:sQ'7,Nȳ²im(, 5@A3wd+ fAgFGƆHv!{.nv8zn}XxCqB6RC#=3h;C12M彸oӽ 5 G&͢J\VcSVWfd[O:YjfB7M'U 2ƿN{чO%3FrFG{|Lbyg' LC]鋘E:p3>kOJL}z-`A&~r&dGnCwƹ.tIudWwϟ]nNbʻ >%uz223aV2[ei~8~ֲYO\[7FUi5,~֪c{S\rsz 5w((o8@O1;1jN<6Y6ب)ҰYn3\׆5!~y^Q7u GT>Gnws^E钋>oj`⽮lKx]͔5c_Y,ܷxQϹp]]W56wr *8S75iƱk{j|Y}eY%76%m=tw W?Y4;+ݹwTjb}ߔ8⦝5c)~x?+#uפ>V ߗP N,<2}UMAd¢#ϕh&͵sN1Sg[Ѕ? J#,0Hb/3&L^zBˀihxqR[CeZO9r1sy۳`h+fZ<`6g]goeD~Z|WŞ~޿{LYN7..]8MҰ\O˞F"GVۿ{]8Ft9RPk: /&/e_LolʿhdX]b."uIdL}Ynݷ[yXװ_N*>/}y޿EΫ ;؜^ITt;y宵EK]S4}>\gw#juJR_]0(eV۶>󸼍3@KerIJww~G6+ lqzKD3Fզ 1Sq_O: [Oιy{l%™aSF,*9?bcڊg'X>q3&kmqXO>ũ]lĽiҩԏMw^ե[W9s [KGHl)Isrpqqvv;DEݷP^Ϸ~=𩭳c[uP>{׍'+O& -qf[g|z)[N*~Eu|EB7wYG5οs+6.i\oxw7oBu(T 7kU5'7xO s6-7o2@$I3 QbN=^9ku㋷ZqhBϢN}fHԘS?`ҏWl]XnD*NM|`Z{Ď|kO}ƒQz7 Rull%&7):)TAӚ}CF&QL>9޲O[~SO]Js/ck=AלoMzؐ{\]DL% ~ӾCM2{O]J|\q_ Zol8-r"7rۺn|&i&2Tڼ}=sf5}TA?0}ɑo#֎Csا~l oͺJk-kI7rx.ſAeMwAw?W5:4;֭Q-|k6_^ʽ+(}I_w> }`uަa{8[Z o𦧶Tx'W}{H_pwc>Q8?68rˬszkcsM  KKvA=̪V9?B)B2 H><|pCN0lC2̔]`% 8_dE[YӨF9ȊsB#-cǩwwͭwL/Wx\P*ݨ܊ʛs8܃3. =}8=_Y'~>9~ꢭMBF0fդ t eg]91b},hL >gO@Ry=wƏkw+O@e9TM_v{S4 w[.e=|ԣPŒMcs9᫋ |fɨh;/3q{q1mS=X>M֙9&g4ǡaǺra,Zikesc\wy7IJGi-u[6͂|#q5sk=?֎eeiT٥~|iq޳渦BnGlFƯLèr+;ato<^|ꠛ?9sFw+_f}%mx? _]wk&O(mޡE'66-sɞ5L\wzZc/x_ ҷvi#Lfaye{^~/_zuQK{ 1:lqy|}[2+yݽ=_3}'kk˸:a’dբ~FQ68l(U6}[~t7ֿ?޶mTHG]hcaëQ//,tg5ۇZ{w9.;),&B q왥"kPuZ=m bYkO =YՕ!>j/G|sw!Κ6+{^^S]K#Q탸 仏 4[HN'/ZZ?6]ce+~Z;ifRzX[>KR"dɼ/BTtUtG?qmiYcjmY4BkUK^I 3:UK>kٯLelo=winS Ɲ鷎i}&h〢POX0!~n x|\-hOy'|A6ml%OՆOt64uhB^!+eZU;4lQ'l['˥JxeuOnoÍ߮z̢A\[>}_Ats* -^VFj"lc~[-UX5r&l6EBj~=çY\~ !ĪEUˏu?s1enS[7SxRY8eh^6'asg'社6~`mծORN6K.4Sr_VNhQ{:3pXE8Iʾ~x*4Ϫ2B}?k0Jܭ =߬U2H쓣3fR/[NK^7U7W[~b7>_y/`T!GSj53܏o;}EbTӅDO K}aߝlcPs(/6Rv*Е +,StKc϶O9z~*6QrWvkxSo+VC?wx:VteLјj X}BYOŅư\Dp$kߒlN!?ܶ"5P7?̪YEoppԷnCNբw,{lmw*cLt+JsaCu}&lp#okE=2ŏ쉣\79:o=}bNzoߓ=w%/*ۺ:y]+=MK'F ;uW6o}$<.Ni<59}Lӻ^ΛcЖܚyz6M͌,Lnz5q%> : ).eZakto8fpMovxJmkSHT%Eƅľ~Ȩ-2JFح0$Uٕ,Z&±{ƴqnjoy6.)|^ez|4ut.34 9n۩u9q9G;r]nNZX9ic5N|˷ƶԍcث:}3yѼ ˊ6.iWd=Nb`WH3ֽ-}~ژ#.g/ kvz3?iZ|v9iHmOӌNʜxc]wؾC"ʗWt$uC*7g?AܗZoyiֳ_˖5ܒYoW(;Lv?k jѪ'VlG:$m<]WgVg_G{Sޛ}ZhwB< 7^xY3䪨>6Eduy.IoRxR>1z~\JӯXj࿺ o6xK/* H2t n \Ip׼F[g̎8 #^wܲYǾZۑ{]PMi7mաc>wm cd ʫ/]_0ޠ/eFk9!T~B{ixvڪƜ1nUIK<-n&-x:KƖƯ@u_M 59 gnn5ws ]2fʤOzoΓWȔ8֍ wF^yV*M$xw W 5nmp_Ua+zfNS^yxENTwWfȼ;}j}}wwO` %㷜[ӉyO~6$M\o2;DP׋WSq,O:WKLys ȹ9:rھez5_nzXͬu*)b}T2~}iA|*sYnV|{i#vN.NmP[lr䵁I?/U}7f p𬗏]a^G|3ԣsǃ&fE3F2ymwAX捜W/Z}LM sF>V2;,ϦAז_0ft"#1՚5W/w$pc ))J2t"\Z|[Ls׃}zXZI-%By ohP<=o._}y9Ϲ/lXX/77wٳO_O_n[뻆2~kSyASnfvgkhދy [}m!?֮.vkxr;{~z5+e_aQua4og6yhIIWWP{DO7m:x8yZ+'oMK`˜0SkKޣiPv4d8ҵ/Jn~{mtcqן>au2Al ΎrHeHNS#zo o?:]nVB7iPMF E+9ꗶl`,\`5['c{+dF:9|Fhm}ٛ 60 N ^]`J{rƵ[JM\n<ƨUmgSn{!} ]ߛD OOMj2iRkI=wwVF)_nlhAz=q)RΪs)Y5m`56se;Rxp&}_Y/we|Ϗ_GU8[GN|ېC$>r/N~)4h['{,Z&Qx oZt%Lx!`ȭUejYY]C2eLYs5Yinr8Yr<6V_{FzJf=e 9}{jE*U?iS6L)}u0Ct[T.2ySiv[wc͸KqS/d;/Klmhʠ=KzYmx=~g-~C"jj}Nr+̩<-xLN=9o >lإİ]W)SՎu% {ke7&VҷIn]L [6^7G?/N8>|OΎxnYXSԼn#Ɔf6YG1`Ny_\pLihkN8!QHt I 1fXR,CgECQ/BajZ;i &QQ1 E&L xd"d8!b#41J H80 tH!;Nbꄋ&dr\\)NTccc2Fш Q|I9_DBq"\2D!K+g0#7+X#f갃il#Chd RC"T206dKkP*E$O&nB;&#dػ9!1"3t9@oux5O&674qB4:=LR ]iQ[7{ӄ\.fZm[5ForZ=#އ%RPh`LEGUF![/\1cdc<.„1ulN(+'176"R$v,?+ XC H(?MԉLdi눉u #hZWG""$c}b-N@ >bn! C*c 9' t% 9 bOGB,͐aQƆFi 1}a`. of@O3ԧPڗ50 Bq1Q G1266RGgd@3TgoԞ.FT# ])M߈֞P| CZQ b SGgĠPll`>>ՠ>ҧ() ~{x+OS}])V߾ߨFFiED?H:UtRXAFi@c)^PNSI:UV}{iF4e M__ 4c2cBA@_^#4:à}tGXVF4eZ2hJ3R?c% )Tܿr; ;kt2 +Q$<}I,7ۏ#R> dR@BF{%oߗt#eb@ҕJi F{)C0!)C_  eЌ+:2SۡF442W:4Pߌd}#To43 (_3hJs(Xy^5)Xylf<C)<'Z)Xi8 Y\GLM@ ! bu"m3k#v6`ұgXadMӵ54s,UT#jD4!0DD2&"Ă0Y,BBxd07 .TUh4@.HѺ .HGa_7Ű9Y +I檪D0 #kʥAώ&ɥ|9 (c[Y!~(7 +At98wO+A<,EH`&N 诘`&a pb$c" - qNˑ@vB$>,J'(mi XU>-px]< ГO]2]C OD>ࢅPf('3! Zl/Lo:_xB E 9! ER^I_:"}5H"v(ɨݎ혁%$P6?^9OB[}TdC@4l#HAi H 9>a!$$ k<h_QL*DAc ߐy آg*g7%B/'#ELG5 \nN(0Ǥ¹bDä(D,[+^̍@hrX!e30Y @9@LXASt2,٠OX7p H$Pj$٤ǎJ I <8,aH8H%`5bG5MQ`.PA <(- ]a)LDDI>F)`W>G'tDIH@NkLV?Xfvuuww/T:O10g_ysoC,wE:/0q!zsXg#SH3-Ina\$#B@v6\CQ! b{AAHc.?LN9H3EkcD. #s[$("'jJh%lh 9`88m!G$rC )+k`q$"4FZ$ Q" ͊+ 'tp$`bKKqx< FچԢ *7.^ -$ :F+$Ck x a%C̡GF4bY ? ["VfA$yzZTj?S*\t+$P@}d͹83Pz{TK}zx>]冭* ' {_ܟ`q*U?0y ۹U7'yDRj@;ʿGkWfbE?- _@#stD(sc+B(8uA\ze9:H7T#HAr LG*lK6/qrr]hC|@@2ȇ2V:hau 0 d_װ: >QhbH8zzxY[zx7Z8UiD J$,a*0v$V t qXl @UU4RKE``ԉI(eXh#D(P+%NȊqXɌ'^eI<@@FIWx`Ac:tAH"`s1Q.d"p" W+aj(*fqz` ǰ@&:"5r1uDW&L!AZ2qONH8IƂs {FP4@fcڛG$ry\(`kvJ 1C"& َ; 0&kˡfjr Jx)IbI 5-)F e`lcBx\6Qr5@6KB[$Nу"&dtTH@9b#1* 3dF=#Aآ6JT}&@ܖtu t. Y  D W U$ 4pVו*Ĉ=G(Wrt4'|{ɜGjiǂE*V$_hrB珜p,ȴ#1!'vn< פē8B1(dP!&Bi 9v"zd9$Iva,LqS{N?Αz(sq[gC&)N π mI#8|tGXP.v:k/ǿS@t:b^30v^.r h.3,±B" Hpn&@7bZ% 7ǏtkDϕnDrxOt׾vO3I@cdR?#\O.N0$r)41K'cP?`#T\W:O)vm3IV܂;x*>A`Qt61e f|C-"t,nD&٬NdR8~ہ{G'ɿj|"ȶVlQG8Eھ]26k6El h6R%T,/-I$h T$}9DOnF21BCzJIj"#m^g灩ʮڳLV0QBЉm~6 g!zH0>逹:CeL""po {8  Ka)$0UTp &0:\.]==8$cqBDRX!4 z۝NA Hm8HWwvP,;?G,uN~ XT o܎vYhФ@:6wt EOcB!/D1Qش@I(p@ġd7'>x@6^Kށπi(Kȝ ;bZS0 6{Q%ߴ?iDQ=&8巍~K]O&è@8Z_T@V@InNk-aaF\F`b,>u m0&(G q!wjE&H8DT +t)ȱf|Ea1y0 Dh Ո0Y2`cw`*@D`> nG㥃n5J*!+_&-h+Mc4hDn{DE"t۶g P։&0 C Hx{A?Y"!Yv =% ,3oh3JkL@S1 {)t/ *dQAӗdwre2Jx-Biw(Z[Q#”@vϒ_r0:wfB@ZN&bOU|^ZGJD:fpCC!1PlY~1H_a(#0&)#N  ̔yYP$]G]=$.IG5CZH:Qu*KSQB.` 4Tz T au3 fM$E6D48(na""7 $?B Y[Q0 W #HvEeV .MYڭs{(%ÐKD%VBMo=Z K80r twoW?%ToW)U/!xCJIgKtʳ(pbg\6(\6(F(vP;Ć16?16$U`a{!wmd `spNfj5'ӖͤvjE=l\T /qsui 6f uw#3(P#²pٿnW8%(E͂-R)/x7K֞8 A#8>;a XЖ O4Ê8 ]G\Gb CQe+͎z(8*N|4/s%.EZ1QIj˃aHYx}܏!0+I\;jG _q>pQᢨ %uH+>*E ._- =>m>6c(USq,3I4*:2q" (  >u@ "f1 -B57D!]~P(b`/|Ga/:~f*L!oh? RO}GU(ujK|ڄx:Hg0 A}2R?6 譣q?ipaD9w=Xo vMۚ0I!`B~08*/zK2BoYE-*3J49zRd4\a3&- 9FÊ(-u,3[XFa*ZL[,K,PA'#?@bN~K2P TLS َ,*xl4{$&ihL[+nF(Y#-lOS3"hI@|XDy`%/ɭ7G sɊ3quwZg~0}r+m4n{A"]R#fFUZPd9)Dr[h [쑇SJ$\S޺ 1av沀ԧtb#4!t(eLO@H 3(~"?Jn8N̿>#'G0:_(ޢR f KAAǖqjA4b?` >eB+e~KڕߕMRpRF9W<ߟntR/??oKxB_LeH~$j|FQ; 8 9&o"V/m A 4,3Hዀ~%S A1=X!  $ @a .AZ=~`?XKXd¹XPZ~.Ne‘ąsC]/]l&Dh9T΅e6jgI[dx᏷mM4:ɬ+mv5E0>mOPRQt!QH23C (XeŚ9QRd6NF#]f,Ը }ݞQNjI6Y@xhfb-^(1"vqru tt t2;  ȎhؐGdHU>mg F֐,88ۚ < c@>I`Fm2d6$;׃Y'*G[ {;Z>2ݾm4B82C5Ǖx <n$-F#IK,r=$H!c:?=L. L,?w 6\/?CGJR ?S:*D3!' K[@bT$\#-"rB~ cNn!'a?7V>嗞K\>ovWF;Bȵ|haH,!=/`ItJ`X"ܝ"wuJ;& ac/^]T]t =]~Ja)PB"hMCXzk<"i%8N0K$Ih0-Q%b2Jʄ!ʪ9/EEDD{Vc.qAQX-о iYlӰXlIeS0BhtmaЕzz^rќ tD "TyXS}ՆBK;X/}dPa&$& mCT_eÐrFS +cA P9 U8Rk%ZqF ILOR<.#^>2&c1)Lx0v! @<\cF@1:2!t 2O bb8tIwJqQY^Nu6 sH|Md Aӆ9`8hP^q&Hp@ّFY+f zBU6M%'mdou[meGXS(XO0@1%w ccDIVoI# ®gHd7,ńdX)z b1Ɏ$8*<ЖM0M$KV03v l4hSp֐ :NjQ`cI C`2 Z1!C@T/,j/]NIdqeY (FZKrćGL- (͙lc nki`k̚l+}n:mtO:J.8i6A-,./(4k^bv xUڮt AP[$m$ڳSD :";0 @_D&WU҅083`C|QXQQ 448Fr|aTN;I7' s %l䁏~C|Ч0ɓBq|?:,-4bs_t&K\x((@zT@#GǑυ׳1eu@:gf © _ :%1|̏}X*OK043Lf eBiG@Y#:Vdef ny3 7FAVd(cym J 4_ r;k==S{0/1%hDr1[::8ҥmy`o0pxH8P0agY@Q{A~0Aq oR it/qExIx֥2c=DEDbN4?@*91:)P @ hQFKDB%k3lP( F_|; נ#dknjɪrRWB-i`ӬJl%L>6`cJEr*ˋrŁAm"U c_d,7d ݈IB$l-ʢf)ϣ2.B~P`Wsf[WTP:A`tPX⇩uJ[Jt 6(;$=GD`JI[Z6|E4BW4Â0f˜}% ^ncw@>up, DFP:c޶UqZǒ3?d{kD2('! eb4pFn_l\,`Dc뚨 p80 Fj<(Q%Np0F o&kAo|%Hvˠ<0QV,iAWNr>2}`(-A* 愰d*Lls=LJPZ=\L"[REYiIm_}Bv?[ ߿T t%ΊɝNg!R*=p`6/  .vJ&SL *G% L!\x+bࢸ|$ ToQ?w$v߽t~hh+ @'Kgk-[YZ;I9n$g&"[H&X/v5`PڕN.Wms+D*A+HmMLOWU0]UuS3݄)4<4`vv1~FJ q]T%̌U*CV}7CVk+F~PKIE`R@ƻPUzJezb Zr qPaeKtzc<)>DYPxTy2^.mL{ޅy:ZGY̶ Y0:ƳdIɝR!p]tG Aڒj. F .,Xy"*#tFYh+Ha 2!fD$^'s;bN(2>*AMD6E 1|t|{I`&)t rK^DSZE &nmD:#C[',ȐFb1"W_3ɏP &Ajcc$t .@;\dW`=I&KưUF0С }tDR"uS`ltD7? ^eOjJ`UL Ju9I2\6l.KjI`'vP$QK:R8;GuoPmeDph cx|(B(\ЃoLo?90WȦw?;1LKKOѳPK yNrP6ѧza?fjN2i.SPA[Jl&G'8Jg' R])LHUݮZE1s%߯/0 _ A: uOW{@ I?Ks0h^Sċ9`\jZk#JDH:tqh!};#j?҅cؾc 9:CXte-*.63@Rs KM,~CB1b9K0EB@۶X {V+g,T0IK*w0* cr/]`xl4 . ,d0=#[ছ0*ׁh|MB( `)TI?C Kfw"! GBlbI"`u9Q*D O@X1\WV5F+# 1&UE d Jc 1р۱URWz΄@_b6ǣIY7fu= P=]#j3susDxlbqmL0R&I `d'(1 -bs0PڥJ-VlqˋxRD6t0Ca7JUܑTlM a2* "TbɿhN4Syό&6dFX0SP* (I^MY{)ZvؒwBO1Q_HGQv:ܣx` $ϯ*9HJ]*^/;+|JIQ(xM]a4z$D׿c݇a!xk+_oH1h7 4f[֮.vJF,TP+ Y9|h`\B'<h*Zb'`x %:nFI@-gD&(/E^WT.P'HN I"H}"1 mH1= D@,xj-?aEmoq;)DrP6*Z!CIw``@xD=K6[q2^!, Jp0 T*m?):FRqqrHfv 7WP_u% =tdM\9ρG٧!nƾ̱uy?nX!yƴ7M9#,Ȉ''H?;9йB4 ]'cS`exAJn(D = ^Gt 8ҿ?%0wg`t*-iY[#@`~1P6[ǮulAKf?01E#K =)#1vVa{ڞ᝹ujR @ CB-|9A? j8!Z2d+ED? !Lp&Q0 -!a+ H=N){hA!(M;(F`.P * eʕ#+Q +ZH_YdZ_+3^ӃNhޑ~<>NH_ZվVxII0@ p$LF1?> r6c9Y󾧱^MF^RA~9^RS[(`4Iw8) K$DHt v:(KÜ {3T PhTΓy{E夊Pn"ie3 ri +vcp i߸C7 3iiMki+9ʉ$\ui0vwnܒVڼBra˄Oc0)⨔c4|0y7؊I1 9#}p[]E L)j -զ3Eϐ><΢qm͘?Nwia I_/E {^LԓƠ#K)rC&RA ="$h)Җ, [i{㸔ۙ$R{UkO%d4?9E f\"Q< i+O,Xm+\62MWI35}4FޭUl2ˈY܁.XXBL6?n[;#-FQ]S<2@Oxܽ `S<9/Oڴ!V:D{.FBhhɀBU!a$J'SrVpa2,ņqQoumwuT 栽2fQ ||!d<p8' Fh4{\{(/>aDm4GX50;~i?\KY6!@t>Su䈡?IR;55ʹEOaKǹ."\^n$J?wSϨ|%jL/|OB[}JU/I'H'iM~uC>BՆ_,ql"V&IwR/b{X\AqmEC6,>yWȯI7R(G m|ړۂK4 9v9.:wJuE/rq`@ RJ 2K.q:B&o%6-6ɧg9 rY^ɐܳv>#MB&d#]㐘P6ݱ0>+0ʜDy;Q 7 f`I AE{D8D \z@'۹cdAbڝα8s|cg؜4>z;Z>8{>xEEn8~aOꗕϗl{|'C]!e\ S#eauJ%K|GnP&i0&[ P0a<}%vV|&a\i.3oSlHwm4N<_$!E*B<ҵ *ૐ՛⛇{~> ?uA7莆 Y/Mr-{X ?>@ `埇?"wB#1+hx:y|ZI|Sl?~^-VN"^Tk ^aaϫ7ۍ;pIT0N1(Tw\:S/̃JZ\To:=WKb2mdU(7ZOGg5"o~ׂighp|S A݁B /nfi nOH|$Y!!e>ۦ=?WaR siQ"f;bK!K1W5w L-jǖ6Ph J?0H4^sNYx2FIVKoJ(]?!{Ybp7xQ`hڣ%FO]wӼ-}Fueit% ܊`mV\DZkPfClyiL"xYǚq<+ǧW'$0/hۊT ANAq@˷uKU|ij4hE:GcZWVzpgsZ6E,K{{7 uA\ a02ǂT{;p3=ۍw |ܽA@p$w Zڟ%,w/ozO#@( _i_뮠n9!?Y_>{߆ " F; b c{zY %>S4- @g-uze ͉Xf>W,@w&|S.!-tФ&b4]:4Aki pSDxM^o)+DxkjJe'N>7ӝkn[io*ء$kZ>h=@5NVSOi GZ|Ld)Zd`"RbpX ,(7RC^~On0 0 umn;݊wD?߰bY-xn܍u3Ǟ'i~搁\qc!/ANMez-" &nOMܸO5%$FwI֔uxJ2&8%OP;?R%?1 zb#ÄL MX6h1 CĽ۬*;q1qF42%w2 nc533D,6˲Jd~t` Q:Q)!/5@eBdTo 3Oo-$NV|:$ ;:0,t>&2H@R˕TE܁F;A Ie~Y&>rs(zrH>HNz=p\2+ iȟE( ~l}|Ըԅ84 gR!PYƣuiIa&넡DM; I!WpX pq w҂X+dTp<{XpY= cgD]LF*+^374+>pJ*iz|(Ѷ ~e8yi [eY#{m zGpӲ#(ZL4)4=U5^DjUOӖ6//JM:5#)2`HneAAgh.=5 Nd@-hM*2rv$5,-;JJ6D-ZjsO'+R@b:R[vM09'<'.Lhk0V81G"8EB(cwأil̪ujX4j*X_-umYK5%gH\јX5"Z Ir )sx΁%)m``Ci*3Ʉg-:0}ĠD.7UH b+Yؤ&^xtr1ٌ)Z5DBIdMF RhƲ9xTl;h7`- Qt(dlש$7Vħ2ZکU2veܥ%:il<-`'AҴ(8:B'[GC# %!>[x]NG>OGm яӁ9'α^$ݚ {U"ݢZ8K ۰$oٲ _nS/p8tī["9{Xn8c-|\QjBŷjͥV,Fs\K;zM\+l"B/VF/ZO4qRG["7|hfL[1{3 HNJ Q,]FAzA8fO*µjR]]6W+75kH2EY)Mիv$x^(zQJ*ȓ٫  D .!AVpΐ\0BM%EEm +Ͼqfn\@^hʻ9FSgxX-.hvx8c;- \ayK^C ocI[7_B +d1@wt3zqUEL[سXZI%`?nFh@d3?k%yǑ.7jwӛr)S ;ۃKRpCfY̓4j+9pL(7sGӇsv^-*|}^=I/x[&R@,>10Ґ4nTĊXj΢t&QaggΖv|kZ~6|:_x$,>7@:/){JbPJ;pkeޡ=1t_{/_Y%uVsT;.Hp{!PDzԛ;^aXpɱ!88mcSc5"ťz746?ba_s h??8?lTC9:σ6ZBΩk^7LqGsd>6<ˡsXoEL sbZz??ow u 2+ZNfU×5zX7jˡQP.͸{1 5DsٍkAǃ{lŢխM5Aloz2=>L=/> J1ʛ΂Gr6^$_ydyer jﵾ?@GeCC_bͮ+w>W~P׃\Bh|l 帞/{ ^Xa'݋툤s?ly=AMSk >$haβ~u88'/b盿\w;~G$vofSN[ّplClG੿#vvn&cʹ9L+-2ܿݣD2N=&2%U0e/DB#KnT16xոNwM-Ϩq(jH"୆ (ķP*+Kdt[;D+2wXo;[5|/KXȒv3 6=G;ثgߪ\+OﶠSylL>Xkй \4nw ,CQY Ak8>Cjvb %4@sd#~-Ơ=3c ܏|_a=KbW׹ x'PX7 uA\~%C㘀0BA~7 x;hvG^1C<՟U}?yBX7kPtk#[7>ywnmC,\~ !1  OmƤK ݄|M(zi1[2:KBYa3? SzI;'7V= "pOFdBxpA7Z`I5 6p@_ L58d$;gR=Fsz(tknz-v,>))( jNeZo5/Bv8Ud9Ŀp9JF@M +|{`JQJ18D) .RXKB861Kۏ4-lq@Am_L oeI&dOr}&J[ yd5oZzM%p_*G_5c/HQ%!0kJ24}H c>F5R[QO EŌst/O4|Al-mc T Ў>-I/"\E|gҲcyT @BxحPiYh5xAƍ)}҈MGi$#,.U+bZ5o)&EVqaGd~"ϼ27 #g"G"B?=(0J_QoG5'S^iyGe@s3hi #ӫݚY?6W1e4  -.ܸ!sc:vzg\5a zb6tLPi27f/T,+; r .&x KAT;µ?Ucឃ7溊=4*\حulc c>xCL`uW)0&*?rMOމh,? lz#޻) ^7A)QI[#B $095JCE;͇T-H9!(8e2nt[juw7Tk)]亀ny0Š>Y * O:NOScULY0+WM^|k$'F]:1~YdF#ħ]s1^Lq&I~d1.@J?ǟ^gr{xײ_Ky|{YQ0L|:hC-ݽX7{әd3%@ þ8k~ٙbxL_a՝L9 mBl:k}_npzK"47Z^qUy-wThBs3't]:DtG$ѿEldUp#+raTM<E:fmYݐ%Q;}scEIDlk{+-~._=DmXUʯrh_ZyU.N˥(WONʕ7d_Yʽ<:ei{oIU|kZ._VPnQ\bU\\U/0 ,oCru**YOCOOtJ<>Z~R=GNM*aIW<>-xV|SPP6D"bI@esVJb\C⼮C H]qN@JIwRZɴT\cs@4^^E-#-3TnPLD8L|Rv[1C֕:`sP_+KJI=ФDqp n w !SMD;HV%kvxK I">*Q%IiKr3T8E +QK7"EW ٳ.Eil (eTVߕCL9BFũ=o0~ rLnGdR;ޓ{ ?boئ 0uPoqe=[3tYԬhtzA90"GHQ;I2ëiա4}jPU:3IQ "%Zu읬 D]d#?^9M*uip/Rwg@bP;~ؖJQR,wQLw Y*SEU{ZȾQtxO9qxp˩Va]jKX~PNe[д%EКHwfU{v-|-j=E$'D}w}2ݜkPu{N& Ӗ{5! 1]FRz_3eesRH显Y&He<{(O6!B<t*ZͻVZk\=xđJ 5giWL+m$$$ڠ*4 Z8EdBIe^*NU,/`QEgw>\|qܝ/8Mm0n!] `0 ow-Vn _1hdrsWcB _=/9RR@[$f=hύ^96 a ~デ_2Uv䨺V&W6q.op ѥ@ב͛y"9ޅgJj9N .G?gsu#6+UBu(?6mR w Ϲ"5{L 4~>jj c8H.NxAj2"7DTt`ɋ b4PssBeqDjP3gTc3OplnR_*.8lx/✩ bKKRꑥ ka`Jz,*#ccvH={𯪊R- (gN+ohph+h>FS,~ ?AahFyF\i62GbY"BQ~rUd}q@kM_o S\(K1 `˥2]t{[iJO__x=~wʥv?Vx+ U/ӹTk;WNopR*X7RMG7!$Z![9d:W/o\,=2GO۫ öZ3urk.MT;vz3g/QT KR l3 Li" yV9Yq:S87%Pmӹ5KtMt*:L'Rtd:ULgD*RYMti@[Yg쥳HPy'lGJXu 8S$?os z_H1GkPey+se1~ω{?)?9q x؏5͎HbCH*Ƭ lG|pCO/DX*?1埆 >"”- -'VT8[>57$wt85@r01 `_] :{p6q)t2l(e)t (@gGg`1X`1pp 1pp ZQ:Ehx\ _GlOy~?"o1F߾wDM:88kyEx2p7x' (\K[_*ϊZ K=<|yto^,WO%B^:a->kD/>oWu:$z]U͸;"^Dd?\R9?ߓVk߮O_ǿ RWhL<u5 }u58Pߋ./`fV:䇔 2/Й/DGשn* mKyu/JR iTc%5b =q Z|hae|" MvᤢRF9~PSHCKs-V9=<QK˭Ɍ$}+LJC@Nя[Wo6Q^&]`NUɇ>)6G%Γ< p->bq;D>h#5VQL&F{*mGzvӚ "Jҭ JH.䣍hqaHD_PҮK/_5 h@:uQpg04G'H:r1ܴ+.P C`ލt#H* gױdM?ȓ=!.!XOIF!Y}Ǒ{F%q])Ƭ8t*$LNA4~Ȁ bE-\hK+VeTl5~OR0drT@LyU3]y2=v\ho)rxH8)4Y YXnef8;LܹwY; Y; ط{;sNu;9q; ɶUL{Ya qp@x(s dd-_le"$c;)~5cЦ/Ct/$/σ/^7ꂸZk ~9]/K~|!Wse򯇺 )h`z؂u`GTnJq/ (W}z‡HB`w3XWƊnA 7c#chiz%Xwci"X7nPbߨ/ N E4SȷrQ|K۵?uA.3&LXqc  Xn},{ 69xd탠te pEB?BЭX7lP'D~ lY;_h}po<_ήyPYC] Bk@ϛnc`!L8X]F%?o j rse@(?Eq/ϭm`3XԿ;2A. * * File: init_nloptr.c * Author: Jelmer Ypma * Date: 3 October 2017 * * This file registers C functions to be used from R. * * 03/10/2017: Included registering of C functions to be used by external R packages. * 01/10/2017: Initial version. */ #include #include #include // for NULL #include #include "nloptr.h" #include static const R_CallMethodDef CallEntries[] = { {"NLoptR_Optimize", (DL_FUNC) &NLoptR_Optimize, 1}, {NULL, NULL, 0} }; void R_init_nloptr(DllInfo *info) { // Register C functions that can be used by external packages // linking to internal NLopt code from C. R_RegisterCCallable("nloptr", "nlopt_algorithm_name", (DL_FUNC) &nlopt_algorithm_name); R_RegisterCCallable("nloptr", "nlopt_srand", (DL_FUNC) &nlopt_srand); R_RegisterCCallable("nloptr", "nlopt_srand_time", (DL_FUNC) &nlopt_srand_time); R_RegisterCCallable("nloptr", "nlopt_version", (DL_FUNC) &nlopt_version); R_RegisterCCallable("nloptr", "nlopt_create", (DL_FUNC) &nlopt_create); R_RegisterCCallable("nloptr", "nlopt_destroy", (DL_FUNC) &nlopt_destroy); R_RegisterCCallable("nloptr", "nlopt_copy", (DL_FUNC) &nlopt_copy); R_RegisterCCallable("nloptr", "nlopt_optimize", (DL_FUNC) &nlopt_optimize); R_RegisterCCallable("nloptr", "nlopt_set_min_objective", (DL_FUNC) &nlopt_set_min_objective); R_RegisterCCallable("nloptr", "nlopt_set_max_objective", (DL_FUNC) &nlopt_set_max_objective); R_RegisterCCallable("nloptr", "nlopt_set_precond_min_objective", (DL_FUNC) &nlopt_set_precond_min_objective); R_RegisterCCallable("nloptr", "nlopt_set_precond_max_objective", (DL_FUNC) &nlopt_set_precond_max_objective); R_RegisterCCallable("nloptr", "nlopt_get_algorithm", (DL_FUNC) &nlopt_get_algorithm); R_RegisterCCallable("nloptr", "nlopt_get_dimension", (DL_FUNC) &nlopt_get_dimension); R_RegisterCCallable("nloptr", "nlopt_set_lower_bounds", (DL_FUNC) &nlopt_set_lower_bounds); R_RegisterCCallable("nloptr", "nlopt_set_lower_bounds1", (DL_FUNC) &nlopt_set_lower_bounds1); R_RegisterCCallable("nloptr", "nlopt_get_lower_bounds", (DL_FUNC) &nlopt_get_lower_bounds); R_RegisterCCallable("nloptr", "nlopt_set_upper_bounds", (DL_FUNC) &nlopt_set_upper_bounds); R_RegisterCCallable("nloptr", "nlopt_set_upper_bounds1", (DL_FUNC) &nlopt_set_upper_bounds1); R_RegisterCCallable("nloptr", "nlopt_get_upper_bounds", (DL_FUNC) &nlopt_get_upper_bounds); R_RegisterCCallable("nloptr", "nlopt_remove_inequality_constraints", (DL_FUNC) &nlopt_remove_inequality_constraints); R_RegisterCCallable("nloptr", "nlopt_add_inequality_constraint", (DL_FUNC) &nlopt_add_inequality_constraint); R_RegisterCCallable("nloptr", "nlopt_add_precond_inequality_constraint", (DL_FUNC) &nlopt_add_precond_inequality_constraint); R_RegisterCCallable("nloptr", "nlopt_add_inequality_mconstraint", (DL_FUNC) &nlopt_add_inequality_mconstraint); R_RegisterCCallable("nloptr", "nlopt_remove_equality_constraints", (DL_FUNC) &nlopt_remove_equality_constraints); R_RegisterCCallable("nloptr", "nlopt_add_equality_constraint", (DL_FUNC) &nlopt_add_equality_constraint); R_RegisterCCallable("nloptr", "nlopt_add_precond_equality_constraint", (DL_FUNC) &nlopt_add_precond_equality_constraint); R_RegisterCCallable("nloptr", "nlopt_add_equality_mconstraint", (DL_FUNC) &nlopt_add_equality_mconstraint); R_RegisterCCallable("nloptr", "nlopt_set_stopval", (DL_FUNC) &nlopt_set_stopval); R_RegisterCCallable("nloptr", "nlopt_get_stopval", (DL_FUNC) &nlopt_get_stopval); R_RegisterCCallable("nloptr", "nlopt_set_ftol_rel", (DL_FUNC) &nlopt_set_ftol_rel); R_RegisterCCallable("nloptr", "nlopt_get_ftol_rel", (DL_FUNC) &nlopt_get_ftol_rel); R_RegisterCCallable("nloptr", "nlopt_set_ftol_abs", (DL_FUNC) &nlopt_set_ftol_abs); R_RegisterCCallable("nloptr", "nlopt_get_ftol_abs", (DL_FUNC) &nlopt_get_ftol_abs); R_RegisterCCallable("nloptr", "nlopt_set_xtol_rel", (DL_FUNC) &nlopt_set_xtol_rel); R_RegisterCCallable("nloptr", "nlopt_get_xtol_rel", (DL_FUNC) &nlopt_get_xtol_rel); R_RegisterCCallable("nloptr", "nlopt_set_xtol_abs1", (DL_FUNC) &nlopt_set_xtol_abs1); R_RegisterCCallable("nloptr", "nlopt_set_xtol_abs", (DL_FUNC) &nlopt_set_xtol_abs); R_RegisterCCallable("nloptr", "nlopt_get_xtol_abs", (DL_FUNC) &nlopt_get_xtol_abs); R_RegisterCCallable("nloptr", "nlopt_set_maxeval", (DL_FUNC) &nlopt_set_maxeval); R_RegisterCCallable("nloptr", "nlopt_get_maxeval", (DL_FUNC) &nlopt_get_maxeval); R_RegisterCCallable("nloptr", "nlopt_set_maxtime", (DL_FUNC) &nlopt_set_maxtime); R_RegisterCCallable("nloptr", "nlopt_get_maxtime", (DL_FUNC) &nlopt_get_maxtime); R_RegisterCCallable("nloptr", "nlopt_force_stop", (DL_FUNC) &nlopt_force_stop); R_RegisterCCallable("nloptr", "nlopt_set_force_stop", (DL_FUNC) &nlopt_set_force_stop); R_RegisterCCallable("nloptr", "nlopt_get_force_stop", (DL_FUNC) &nlopt_get_force_stop); R_RegisterCCallable("nloptr", "nlopt_set_local_optimizer", (DL_FUNC) &nlopt_set_local_optimizer); R_RegisterCCallable("nloptr", "nlopt_set_population", (DL_FUNC) &nlopt_set_population); R_RegisterCCallable("nloptr", "nlopt_get_population", (DL_FUNC) &nlopt_get_population); R_RegisterCCallable("nloptr", "nlopt_set_vector_storage", (DL_FUNC) &nlopt_set_vector_storage); R_RegisterCCallable("nloptr", "nlopt_get_vector_storage", (DL_FUNC) &nlopt_get_vector_storage); R_RegisterCCallable("nloptr", "nlopt_set_default_initial_step", (DL_FUNC) &nlopt_set_default_initial_step); R_RegisterCCallable("nloptr", "nlopt_set_initial_step", (DL_FUNC) &nlopt_set_initial_step); R_RegisterCCallable("nloptr", "nlopt_set_initial_step1", (DL_FUNC) &nlopt_set_initial_step1); R_RegisterCCallable("nloptr", "nlopt_get_initial_step", (DL_FUNC) &nlopt_get_initial_step); // Register routines to improve lookup from R using .Call interface. R_registerRoutines(info, NULL, CallEntries, NULL, NULL); R_useDynamicSymbols(info, FALSE); R_forceSymbols(info, TRUE); } nloptr/src/Makevars.ucrt0000644000176200001440000000010214636244620015027 0ustar liggesusersPKG_CPPFLAGS = -I$(R_TOOLS_SOFT)/include/nlopt PKG_LIBS = -lnlopt nloptr/src/dummy.cpp0000644000176200001440000000000014636244620014213 0ustar liggesusersnloptr/src/Makevars.in0000644000176200001440000000015714636244620014472 0ustar liggesusersPKG_CPPFLAGS = -I../inst/include @NLOPT_CPPFLAGS@ PKG_LIBS = $(LAPACK_LIBS) $(BLAS_LIBS) $(FLIBS) @NLOPT_LIBS@ nloptr/src/scripts/0000755000176200001440000000000014636244620014055 5ustar liggesusersnloptr/src/scripts/nlopt_cleanup.sh0000644000176200001440000000011414636244620017250 0ustar liggesusers#!/bin/sh cp nlopt/include/* ../inst/include/ rm -fr nlopt-src nlopt-build nloptr/src/scripts/cmake_config.sh0000755000176200001440000000230014636244620017014 0ustar liggesusers#### CMAKE CONFIGURATION #### if test -z "$CMAKE_BIN"; then # Look for a cmake3 binary in the current path CMAKE_BIN=`which cmake3 2>/dev/null` fi if test -z "$CMAKE_BIN"; then # Look for a cmake binary in the current path CMAKE_BIN=`which cmake 2>/dev/null` fi if test -z "$CMAKE_BIN"; then # Check for a MacOS specific path CMAKE_BIN=`which /Applications/CMake.app/Contents/bin/cmake 2>/dev/null` fi if test -z "$CMAKE_BIN"; then echo "" echo "------------------ CMAKE NOT FOUND --------------------" echo "" echo "CMake was not found on the PATH. Please install CMake:" echo "" echo " - sudo yum install cmake (Fedora/CentOS; inside a terminal)" echo " - sudo apt install cmake (Debian/Ubuntu; inside a terminal)." echo " - sudo pacman -S cmake (Arch Linux; inside a terminal)." echo " - brew install --cask cmake (MacOS; inside a terminal with Homebrew)" echo " - sudo port install cmake (MacOS; inside a terminal with MacPorts)" echo "" echo "Alternatively install CMake from: " echo "" echo "-------------------------------------------------------" echo "" exit 1 fi echo set CMAKE_BIN=$CMAKE_BIN nloptr/src/scripts/r_config.sh0000755000176200001440000000231514212123436016172 0ustar liggesusers#### R CONFIGURATION #### R_ARCH_BIN=$1 CC=`"${R_HOME}/bin${R_ARCH_BIN}/R" CMD config CC` echo set CC=$CC export CC CPPFLAGS=`"${R_HOME}/bin${R_ARCH_BIN}/R" CMD config CPPFLAGS` CFLAGS=`"${R_HOME}/bin${R_ARCH_BIN}/R" CMD config CFLAGS` CPICFLAGS=`"${R_HOME}/bin${R_ARCH_BIN}/R" CMD config CPICFLAGS` CFLAGS="$CPPFLAGS $CPICFLAGS $CFLAGS" echo set CFLAGS=$CFLAGS export CFLAGS CXX=`"${R_HOME}/bin${R_ARCH_BIN}/R" CMD config CXX11` echo set CXX=$CXX export CXX CXXSTD=`"${R_HOME}/bin${R_ARCH_BIN}/R" CMD config CXX11STD` CXXFLAGS=`"${R_HOME}/bin${R_ARCH_BIN}/R" CMD config CXX11FLAGS` CXXPICFLAGS=`"${R_HOME}/bin${R_ARCH_BIN}/R" CMD config CXX11PICFLAGS` CXXFLAGS="$CXXSTD $CPPFLAGS $CXXPICFLAGS $CXXFLAGS" echo set CXXFLAGS=$CXXFLAGS export CXXFLAGS LDFLAGS=`"${R_HOME}/bin${R_ARCH_BIN}/R" CMD config LDFLAGS` echo set LDFLAGS=$LDFLAGS export LDFLAGS if test -z "$CXX"; then echo >&2 "Could not detect C++ compiler with R CMD config." fi ${R_HOME}/bin${R_ARCH_BIN}/Rscript --vanilla -e 'getRversion() > "4.0.0"' | grep TRUE > /dev/null if [ $? -eq 0 ]; then AR=`"${R_HOME}/bin${R_ARCH_BIN}/R" CMD config AR` AR=`which $AR` RANLIB=`"${R_HOME}/bin${R_ARCH_BIN}/R" CMD config RANLIB` RANLIB=`which $RANLIB` fi nloptr/src/scripts/nlopt_download.sh0000644000176200001440000000021614172206364017431 0ustar liggesusers#! /bin/sh RSCRIPT_BIN=$1 # Uncompress NLOPT source ${RSCRIPT_BIN} -e "utils::untar(tarfile = 'nlopt-src.tar.gz')" mv nlopt-2.7.1 nlopt-src nloptr/src/nloptr.h0000644000176200001440000000021314636244620014051 0ustar liggesusers#ifndef __NLOPTR_H__ #define __NLOPTR_H__ #include #include SEXP NLoptR_Optimize(SEXP args); #endif /*__NLOPTR_H__*/ nloptr/src/nloptr.c0000644000176200001440000010542714636244620014061 0ustar liggesusers/* * Copyright (C) 2010 Jelmer Ypma. All Rights Reserved. * This code is published under the L-GPL. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published * by the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program. If not, see . * * File: nloptr.cpp * Author: Jelmer Ypma * Date: 9 June 2010 * * This file defines the main function NLoptR_Minimize, which * provides an interface to NLopt from R. * * The function takes an R object containing objective function, * constraints, options, etc. as argument, solve the problem * using NLopt and return the results. * * Financial support of the UK Economic and Social Research Council * through a grant (RES-589-28-0001) to the ESRC Centre for Microdata * Methods and Practice (CeMMAP) is gratefully acknowledged. * * 13/01/2011: added print_level option * 24/07/2011: added checks on return value when setting equality constraints etc. * 05/11/2013: Moved declaration of ineq_constr_data and eq_constr_data outside if-statement to solve segfault on Ubuntu. */ // TODO: add minimize/maximize option (objective = "maximize") // nlopt_result nlopt_set_min_objective(nlopt_opt opt, nlopt_func f, void* f_data); // nlopt_result nlopt_set_max_objective(nlopt_opt opt, nlopt_func f, void* f_data); #include #include #include // Rdefines.h is somewhat more higher level then Rinternal.h, and is preferred if the code might be shared with S at any stage. // #include /* * Extracts element with name 'str' from R object 'list' * and returns that element. */ SEXP getListElement (SEXP list, char *str) { SEXP elmt = R_NilValue, names = getAttrib(list, R_NamesSymbol); int i; for (i = 0; i < length(list); i++) { if(strcmp(CHAR(STRING_ELT(names, i)), str) == 0) { elmt = VECTOR_ELT(list, i); break; } } return elmt; } // convert string to nlopt_algorithm nlopt_algorithm getAlgorithmCode( const char *algorithm_str ) { nlopt_algorithm algorithm; if ( strcmp( algorithm_str, "NLOPT_GN_DIRECT" ) == 0 ) { algorithm = NLOPT_GN_DIRECT; } else if ( strcmp( algorithm_str, "NLOPT_GN_DIRECT_L" ) == 0 ) { algorithm = NLOPT_GN_DIRECT_L; } else if ( strcmp( algorithm_str, "NLOPT_GN_DIRECT_L_RAND" ) == 0 ) { algorithm = NLOPT_GN_DIRECT_L_RAND; } else if ( strcmp( algorithm_str, "NLOPT_GN_DIRECT_NOSCAL" ) == 0 ) { algorithm = NLOPT_GN_DIRECT_NOSCAL; } else if ( strcmp( algorithm_str, "NLOPT_GN_DIRECT_L_NOSCAL" ) == 0 ) { algorithm = NLOPT_GN_DIRECT_L_NOSCAL; } else if ( strcmp( algorithm_str, "NLOPT_GN_DIRECT_L_RAND_NOSCAL" ) == 0 ) { algorithm = NLOPT_GN_DIRECT_L_RAND_NOSCAL; } else if ( strcmp( algorithm_str, "NLOPT_GN_ORIG_DIRECT" ) == 0 ) { algorithm = NLOPT_GN_ORIG_DIRECT; } else if ( strcmp( algorithm_str, "NLOPT_GN_ORIG_DIRECT_L" ) == 0 ) { algorithm = NLOPT_GN_ORIG_DIRECT_L; } else if ( strcmp( algorithm_str, "NLOPT_GD_STOGO" ) == 0 ) { algorithm = NLOPT_GD_STOGO; } else if ( strcmp( algorithm_str, "NLOPT_GD_STOGO_RAND" ) == 0 ) { algorithm = NLOPT_GD_STOGO_RAND; } else if ( strcmp( algorithm_str, "NLOPT_LD_SLSQP" ) == 0 ) { algorithm = NLOPT_LD_SLSQP; } else if ( strcmp( algorithm_str, "NLOPT_LD_LBFGS_NOCEDAL" ) == 0 ) { algorithm = NLOPT_LD_LBFGS_NOCEDAL; } else if ( strcmp( algorithm_str, "NLOPT_LD_LBFGS" ) == 0 ) { algorithm = NLOPT_LD_LBFGS; } else if ( strcmp( algorithm_str, "NLOPT_LN_PRAXIS" ) == 0 ) { algorithm = NLOPT_LN_PRAXIS; } else if ( strcmp( algorithm_str, "NLOPT_LD_VAR1" ) == 0 ) { algorithm = NLOPT_LD_VAR1; } else if ( strcmp( algorithm_str, "NLOPT_LD_VAR2" ) == 0 ) { algorithm = NLOPT_LD_VAR2; } else if ( strcmp( algorithm_str, "NLOPT_LD_TNEWTON" ) == 0 ) { algorithm = NLOPT_LD_TNEWTON; } else if ( strcmp( algorithm_str, "NLOPT_LD_TNEWTON_RESTART" ) == 0 ) { algorithm = NLOPT_LD_TNEWTON_RESTART; } else if ( strcmp( algorithm_str, "NLOPT_LD_TNEWTON_PRECOND" ) == 0 ) { algorithm = NLOPT_LD_TNEWTON_PRECOND; } else if ( strcmp( algorithm_str, "NLOPT_LD_TNEWTON_PRECOND_RESTART" ) == 0 ) { algorithm = NLOPT_LD_TNEWTON_PRECOND_RESTART; } else if ( strcmp( algorithm_str, "NLOPT_GN_CRS2_LM" ) == 0 ) { algorithm = NLOPT_GN_CRS2_LM; } else if ( strcmp( algorithm_str, "NLOPT_GN_MLSL" ) == 0 ) { algorithm = NLOPT_GN_MLSL; } else if ( strcmp( algorithm_str, "NLOPT_GD_MLSL" ) == 0 ) { algorithm = NLOPT_GD_MLSL; } else if ( strcmp( algorithm_str, "NLOPT_GN_MLSL_LDS" ) == 0 ) { algorithm = NLOPT_GN_MLSL_LDS; } else if ( strcmp( algorithm_str, "NLOPT_GD_MLSL_LDS" ) == 0 ) { algorithm = NLOPT_GD_MLSL_LDS; } else if ( strcmp( algorithm_str, "NLOPT_LD_MMA" ) == 0 ) { algorithm = NLOPT_LD_MMA; } else if ( strcmp( algorithm_str, "NLOPT_LD_CCSAQ" ) == 0 ) { algorithm = NLOPT_LD_CCSAQ; } else if ( strcmp( algorithm_str, "NLOPT_LN_COBYLA" ) == 0 ) { algorithm = NLOPT_LN_COBYLA; } else if ( strcmp( algorithm_str, "NLOPT_LN_NEWUOA" ) == 0 ) { algorithm = NLOPT_LN_NEWUOA; } else if ( strcmp( algorithm_str, "NLOPT_LN_NEWUOA_BOUND" ) == 0 ) { algorithm = NLOPT_LN_NEWUOA_BOUND; } else if ( strcmp( algorithm_str, "NLOPT_LN_NELDERMEAD" ) == 0 ) { algorithm = NLOPT_LN_NELDERMEAD; } else if ( strcmp( algorithm_str, "NLOPT_LN_SBPLX" ) == 0 ) { algorithm = NLOPT_LN_SBPLX; } else if ( strcmp( algorithm_str, "NLOPT_LN_AUGLAG" ) == 0 ) { algorithm = NLOPT_LN_AUGLAG; } else if ( strcmp( algorithm_str, "NLOPT_LD_AUGLAG" ) == 0 ) { algorithm = NLOPT_LD_AUGLAG; } else if ( strcmp( algorithm_str, "NLOPT_LN_AUGLAG_EQ" ) == 0 ) { algorithm = NLOPT_LN_AUGLAG_EQ; } else if ( strcmp( algorithm_str, "NLOPT_LD_AUGLAG_EQ" ) == 0 ) { algorithm = NLOPT_LD_AUGLAG_EQ; } else if ( strcmp( algorithm_str, "NLOPT_LN_BOBYQA" ) == 0 ) { algorithm = NLOPT_LN_BOBYQA; } else if ( strcmp( algorithm_str, "NLOPT_GN_ISRES" ) == 0 ) { algorithm = NLOPT_GN_ISRES; } else if ( strcmp( algorithm_str, "NLOPT_GN_ESCH" ) == 0 ) { algorithm = NLOPT_GN_ESCH; } else { // unknown algorithm code Rprintf("Error: unknown algorithm %s.\n", algorithm_str); algorithm = NLOPT_NUM_ALGORITHMS; // Not an algorithm, so this should result in a runtime error. } return algorithm; } /* * Define structure that contains data to pass to the objective function */ typedef struct { SEXP R_eval_f; SEXP R_environment; int num_iterations; int print_level; } func_objective_data; /* * Define function that calls user-defined objective function in R */ double func_objective(unsigned n, const double *x, double *grad, void *data) { // return the value (and the gradient) of the objective function // Check for user interruption from R R_CheckUserInterrupt(); // declare counter unsigned i; func_objective_data *d = (func_objective_data *) data; // increase number of function evaluations d->num_iterations++; // print status if ( d->print_level >= 1 ) { Rprintf( "iteration: %d\n", d->num_iterations ); } // print values of x if ( d->print_level >= 3 ) { if ( n == 1 ) { Rprintf( "\tx = %f\n", x[ 0 ] ); } else { Rprintf( "\tx = (%f", x[ 0 ] ); for (i=1;iR_eval_f,rargs)); PROTECT(result = eval(Rcall,d->R_environment)); // recode the return value from SEXP to double double obj_value; if ( isNumeric( result ) ) { // objective value is only element of result obj_value = REAL(result)[0]; } else { // objective value should be parsed from the list of return values SEXP R_obj_value; PROTECT( R_obj_value = getListElement( result, "objective" ) ); // recode the return value from SEXP to double obj_value = REAL( R_obj_value )[0]; UNPROTECT( 1 ); } // print objective value if ( d->print_level >= 1 ) { Rprintf( "\tf(x) = %f\n", obj_value ); } // gradient if (grad) { // result needs to be a list in this case SEXP R_gradient; PROTECT( R_gradient = getListElement( result, "gradient" ) ); // recode the return value from SEXP to double for (i=0;iR_eval_g, rargs_x ) ); PROTECT( result = eval( Rcall, d->R_environment ) ); // get the value of the constraint from the result if ( isNumeric( result ) ) { // constraint values are the only element of result // recode the return value from SEXP to double*, by looping over constraints for (i=0;iprint_level >= 2 ) { if ( m == 1 ) { Rprintf( "\tg(x) = %f\n", constraints[ 0 ] ); } else { Rprintf( "\tg(x) = (%f", constraints[ 0 ] ); for (i=1;iR_eval_g, rargs_x ) ); PROTECT( result = eval( Rcall, d->R_environment ) ); // get the value of the constraint from the result if ( isNumeric( result ) ) { // constraint values are the only element of result // recode the return value from SEXP to double*, by looping over constraints for (i=0;iprint_level >= 2 ) { if ( m == 1 ) { Rprintf( "\th(x) = %f\n", constraints[ 0 ] ); } else { Rprintf( "\th(x) = (%f", constraints[ 0 ] ); for (i=1;i= stopval for maximizing PROTECT( R_opts_stopval = getListElement( R_options, "stopval" ) ); double stopval = REAL( R_opts_stopval )[0]; res = nlopt_set_stopval(opts, stopval); if ( res == NLOPT_INVALID_ARGS ) { *flag_encountered_error = 1; Rprintf("Error: nlopt_set_stopval returned NLOPT_INVALID_ARGS.\n"); } SEXP R_opts_ftol_rel; PROTECT( R_opts_ftol_rel = getListElement( R_options, "ftol_rel" ) ); double ftol_rel = REAL( R_opts_ftol_rel )[0]; res = nlopt_set_ftol_rel(opts, ftol_rel); if ( res == NLOPT_INVALID_ARGS ) { *flag_encountered_error = 1; Rprintf("Error: nlopt_set_ftol_rel returned NLOPT_INVALID_ARGS.\n"); } SEXP R_opts_ftol_abs; PROTECT( R_opts_ftol_abs = getListElement( R_options, "ftol_abs" ) ); double ftol_abs = REAL( R_opts_ftol_abs )[0]; res = nlopt_set_ftol_abs(opts, ftol_abs); if ( res == NLOPT_INVALID_ARGS ) { *flag_encountered_error = 1; Rprintf("Error: nlopt_set_ftol_abs returned NLOPT_INVALID_ARGS.\n"); } SEXP R_opts_xtol_rel; PROTECT( R_opts_xtol_rel = getListElement( R_options, "xtol_rel" ) ); double xtol_rel = REAL( R_opts_xtol_rel )[0]; res = nlopt_set_xtol_rel(opts, xtol_rel); if ( res == NLOPT_INVALID_ARGS ) { *flag_encountered_error = 1; Rprintf("Error: nlopt_set_xtol_rel returned NLOPT_INVALID_ARGS.\n"); } SEXP R_opts_xtol_abs; PROTECT( R_opts_xtol_abs = getListElement( R_options, "xtol_abs" ) ); double xtol_abs[ num_controls ]; int i; for (i=0;i 0. // by default a random seed is generated from system time. if ( ranseed > 0 ) { nlopt_srand(ranseed); } UNPROTECT( 12 ); return opts; } SEXP convertStatusToMessage( nlopt_result status ) { // convert message to an R object SEXP R_status_message; PROTECT(R_status_message = allocVector(STRSXP, 1)); switch ( status ) { // Successful termination (positive return values): // (= +1) case NLOPT_SUCCESS: SET_STRING_ELT(R_status_message, 0, mkChar("NLOPT_SUCCESS: Generic success return value.")); break; // (= +2) case NLOPT_STOPVAL_REACHED: SET_STRING_ELT(R_status_message, 0, mkChar("NLOPT_STOPVAL_REACHED: Optimization stopped because stopval (above) was reached.")); break; // (= +3) case NLOPT_FTOL_REACHED: SET_STRING_ELT(R_status_message, 0, mkChar("NLOPT_FTOL_REACHED: Optimization stopped because ftol_rel or ftol_abs (above) was reached.")); break; // (= +4) case NLOPT_XTOL_REACHED: SET_STRING_ELT(R_status_message, 0, mkChar("NLOPT_XTOL_REACHED: Optimization stopped because xtol_rel or xtol_abs (above) was reached.")); break; // (= +5) case NLOPT_MAXEVAL_REACHED: SET_STRING_ELT(R_status_message, 0, mkChar("NLOPT_MAXEVAL_REACHED: Optimization stopped because maxeval (above) was reached.")); break; // (= +6) case NLOPT_MAXTIME_REACHED: SET_STRING_ELT(R_status_message, 0, mkChar("NLOPT_MAXTIME_REACHED: Optimization stopped because maxtime (above) was reached.")); break; // Error codes (negative return values): // (= -1) case NLOPT_FAILURE: SET_STRING_ELT(R_status_message, 0, mkChar("NLOPT_FAILURE: Generic failure code.")); break; // (= -2) case NLOPT_INVALID_ARGS: SET_STRING_ELT(R_status_message, 0, mkChar("NLOPT_INVALID_ARGS: Invalid arguments (e.g. lower bounds are bigger than upper bounds, an unknown algorithm was specified, etcetera).")); break; // (= -3) case NLOPT_OUT_OF_MEMORY: SET_STRING_ELT(R_status_message, 0, mkChar("NLOPT_OUT_OF_MEMORY: Ran out of memory.")); break; // (= -4) case NLOPT_ROUNDOFF_LIMITED: SET_STRING_ELT(R_status_message, 0, mkChar("NLOPT_ROUNDOFF_LIMITED: Roundoff errors led to a breakdown of the optimization algorithm. In this case, the returned minimum may still be useful. (e.g. this error occurs in NEWUOA if one tries to achieve a tolerance too close to machine precision.)")); break; case NLOPT_FORCED_STOP: SET_STRING_ELT(R_status_message, 0, mkChar("Halted because of a forced termination: the user called nlopt_force_stop(opt) on the optimization's nlopt_opt object opt from the user's objective function.")); default: SET_STRING_ELT(R_status_message, 0, mkChar("Return status not recognized.")); } UNPROTECT( 1 ); return R_status_message; } // // Constrained minimization // SEXP NLoptR_Optimize( SEXP args ) { // declare counter unsigned i; // declare nlopt_result, to capture error codes from setting options nlopt_result res; int flag_encountered_error = 0; // get initial values SEXP R_init_values; PROTECT( R_init_values = getListElement( args, "x0" ) ); // number of control variables unsigned num_controls = length( R_init_values ); // set initial values of the controls double x0[ num_controls ]; for (i=0;i 0 ) { // get tolerances from R_options double tol_constraints_ineq[ num_constraints_ineq ]; SEXP R_tol_constraints_ineq; PROTECT( R_tol_constraints_ineq = getListElement( R_options, "tol_constraints_ineq" ) ); for (i=0;i 0 ) { // get tolerances from R_options double tol_constraints_eq[ num_constraints_eq ]; SEXP R_tol_constraints_eq; PROTECT( R_tol_constraints_eq = getListElement( R_options, "tol_constraints_eq" ) ); for (i=0;i= 0. This version allows for the equations to be consistent with the main `nloptr` function, which requires <= 0. In a future release, the default behavior will switch to assuming the calibration is <= 0, and eventually, the >= 0 behavior will be removed. It also includes a large number of safety and efficiency changes, and an expansion of the unit tests to 100% coverage for all files but one. The major changes include: * Reversed the direction of the inequality equations `hin` and `hinjac` in the wrapper functions which use them, bringing them into compliance with the main `nloptr` call. This addresses [Issue #148](https://github.com/astamm/nloptr/issues/148); * Cleaned the Hock-Schittkowski problem no. 100, Hartmann 6-dimensional, and Powell exponential examples. This addresses [Issue #152](https://github.com/astamm/nloptr/issues/152) and [Issue #156](https://github.com/astamm/nloptr/issues/156); * Updated roxygen version; * Updated maintainer email; * Deal with NA returns from `parallel::detectCores()` (contributed by @jeroen in PR #150); * Setup rhub v2 checks; * Update cmake installation instructions on Mac with brew (#146); * Allow use of equality constraints with COBYLA (#135); * Replaced the unit testing framework of `testthat` with `tinytest` (See [Issue #136](https://github.com/astamm/nloptr/issues/136)); * Brought coverage of `is.nloptr` to 100%. The only file not completely covered by unit tests is `nloptr.c`. The uncovered calls are error messages which get trapped by tests in R before the call gets to C; * Linted package for code correctness and consistency; * Updated vignette, DESCRIPTION, and NEWS; * Updated package website to use bootstrap 5; * Expanded unit tests: coverage now over 97% with no file below 90%; * Removed forcing `C++11`; * Added safety checks to C code; * Added many safety and efficiency enhancements to R code; * Most R code style made self-consistent; * Updated documentation and messages for accuracy and mathematical formatting * Updated Github actions; * Some bugfixes (e.g. in `isres` or the warning in `nl.grad`). Please see the commit logs for more detailed descriptions of the changes. # nloptr 2.0.3 * Improved compatibility on RHEL/CentOS by first searching for a `cmake3` binary on the `PATH` ([#104](https://github.com/astamm/nloptr/issues/104)). * Improved backward compatibility with older versions of `cmake` ([#119](https://github.com/astamm/nloptr/issues/119)). # nloptr 2.0.2 This is a patch version in which: * I link to the `nlopt` library via `nlopt/lib/libnlopt.a` instead of `-Lnlopt/lib -lnlopt` when building `nlopt` from included sources to avoid potential mess where `-lnlopt` could look for the `nlopt` library in other places and possibly link with an existing too old system build of `nlopt`. Additionally, we contacted [Simon Urbanek](https://github.com/s-u/) for updating the `nlopt` recipe for macOS users so that it does now match the latest `v2.7.1`, which should avoid `nlopt` to be built on the fly on CRAN machines. # nloptr 2.0.1 This is a release mainly for increasing direct compatibility with most user cases. In details, here is the list of changes that have been made: * Update `SystemRequirements` description to make it clearer which minimal versions of `cmake` (`>= 3.15.0`) and `nlopt` (`>= 2.7.0`) are required ([#100](https://github.com/astamm/nloptr/issues/100), [@HenrikBengtsson](https://github.com/HenrikBengtsson)). * End configuration sooner and louder if `cmake` is missing when needed with clearer message ([#103](https://github.com/astamm/nloptr/issues/103), [@eddelbuettel](https://github.com/eddelbuettel)). * Ensure system-wide installation of `cmake` in the list of suggestions to install it when missing. * Update GHA scripts to latest versions. * Configure git to always use LF line endings for configure.ac file. * Add CI for R-devel on Windows with Rtools42. * Fix for compatibility with versions of R anterior to `4.0` ([#111](https://github.com/astamm/nloptr/issues/111)). * Look for a `cmake3` binary in the current path before `cmake` for increasing compatibility with most RHEL/CentOS users ([#104](https://github.com/astamm/nloptr/issues/104), [@bhogan-mitre](https://github.com/bhogan-mitre), [@HenrikBengtsson](https://github.com/HenrikBengtsson)). # nloptr 2.0.0 ## Major changes * Use [CMake](https://cmake.org) to build `nlopt` from included sources on macOS and on Linux if no system build of NLopt (>= 2.7.0) is found. * Update included sources of NLopt to latest version (2.7.1). * Put back the ability on Linux platforms to re-use an existing external build of NLopt instead of building from the included sources (contributed by [Dirk Eddelbuettel](https://github.com/eddelbuettel), [#88](https://github.com/astamm/nloptr/issues/88)). * Now builds using NLopt from `rwinlib` on Windows current release (contributed by [Jeroen Ooms](https://github.com/jeroen), [#92](https://github.com/astamm/nloptr/issues/92)), or NLopt from `Rtools42` on Windows devel (contributed by [Tomas Kalibera](https://github.com/kalibera)). ## Minor changes * Added a `NEWS.md` file to track changes to the package. * Use markdown in Roxygen documentation. * Added a logo and a proper [**nloptr** website](https://astamm.github.io/nloptr/). * Added coverage. * Switch from Travis to Github Actions for CI. * Use Catch for unit testing C/C++ code. * Now tracking code coverage. * Update NLopt-related URLs following migration of [NLopt website](https://nlopt.readthedocs.io/en/latest/). * Fixed bug to avoid linking issues when using the C API via `#include ` in several source files. * Fix precision issue in test example `hs071` ([#81](https://github.com/astamm/nloptr/issues/81), [@Tom-python0121](https://github.com/Tom-python0121)). * Made NLopt algorithm `NLOPT_GN_ESCH` available from R interface (contributed by [Xiongtao Dai](https://github.com/xdaiISU)). # nloptr 1.2.2 (29 February 2020) * Replaced deprecated functions from [**testthat**](https://testthat.r-lib.org) framework in unit tests (contributed by [Avraham Adler](https://github.com/aadler)). ## 26 February 2020: * Fixed warnings (as requested by CRAN): R CMD config variables 'CPP' and 'CXXCPP' are deprecated. ## 20 October 2018: * Exposed CCSAQ algorithm in R interface (contributed by [Julien Chiquet](https://github.com/jchiquet)). # nloptr 1.2.1 (03 October 2018) * Build process was changed to solve issues on several OS (many thanks to the CRAN maintainers). # nloptr 1.2.0 (30 September 2018) ## 21 April 2018: * Changed installation procedure. NLopt source code is now part of nloptr package and not downloaded separately during configure in Unix systems in case NLopt library cannot be found. * Registered NLopt C functions to be used by external R package and included C API. * Documentation is generated using roxygen. ## 25 September 2017: * Fixed a bug in auglag. BOBYQA is now allowed as local solver (thanks to [Léo Belzile](https://github.com/lbelzile)). # nloptr 1.1.0 (22 August 2016) * Fixed a bug that sometimes caused segmentation faults due to an uninitialized vector of tolerances for the inequality and/or equality constraints (thanks to Florian Schwendinger). # nloptr 1.0.9 (22 March 2015) * When the problem fails with error status 6 (`NLOPT_MAXTIME_REACHED`) and `maxtime` was not set to a positive number in the options, then nloptr tries a couple more times to solve the problem. This is a new approach that should solve the bug that NLopt sometimes exits a problem stating the maximum available time has been reached, even when no limit on the time has been set. * Changed warning to message in order to show that for consistency with the rest of the package the inequality sign in the functions `auglag`, `cobyla`, `isres`, `mma`, and `slsqp` will be switched from >= to <= in a future nloptr version. # nloptr 1.0.8 (22 February 2015) * Changed description in DESCRIPTION such that it does not start with the package name (as requested by CRAN). # nloptr 1.0.7 (14 February 2015) * Changed title field in DESCRIPTION to title case (as requested by CRAN). * Added `donttest` around example in `mma` documentation. # nloptr 1.0.6 (8 February 2015) * Updated description to better reflect installation procedure on Linux when NLopt is pre-installed (as requested by CRAN). # nloptr 1.0.5 (28 January 2015) * Added non-exported functions CFlags and LdFlags to be used in packages that want to link to the NLopt C library. * For consistency with the rest of the package the inequality sign in the functions `auglag`, `cobyla`, `isres`, `mma`, and `slsqp` will be switched from >= to <= in the next nloptr version. The current version of nloptr shows a warning when using these functions with inequality constraints. This warning can be turned off with `options('nloptr.show.inequality.warning' = FALSE)`. # nloptr 1.0.4 (02 August 2014) * Increased version number to re-submit package to CRAN with CRLF line endings removed from `configure` and `configure.ac`. # nloptr 1.0.3 (25 July 2014) * Changed NLOPT_VERSION to 2.4.2 for Linux. * Changed `nloptr.default.options` from a `data.frame` to a function returning the `data.frame`. # nloptr 1.0.2 (25 July 2014) * Added configure script which tests for a system NLopt library via pkg-config and uses it if it is sufficiently recent (ie 2.4.*), and otherwise configure downloads, patches and builds the NLopt sources just how src/Makevars used to (thanks to [Dirk Eddelbuettel](https://github.com/eddelbuettel)). # nloptr 1.0.1 (05 May 2014) * All unit tests are now enabled and use the package testthat. Install the package with argument INSTALL_opt = "--install-tests" supplied to `install.packages` to install the tests. The tests can be run after installation with test_package('nloptr'). The testthat package needs to be installed and loaded to be able to run the tests. * Changed default value for maxtime option from 0.0 to -1.0. In some cases nloptr returned `NLOPT_MAXTIME_REACHED` without running any iterations with the default setting. This change solves this. * Replaced cat by message or warning. Messages can be suppressed by `suppressMessages`. # nloptr 1.0.0 (27 January 2014) * Merged wrappers from the **nloptwrap** package. # nloptr 0.9.6 (19 November 2013) * Added a line in `Makevars` to replace some code in NLopt to fix compilation on Solaris as requested by Brian Ripley. # nloptr 0.9.5 (12 November 2013) * Updated references from NLopt version 2.3 to NLopt version 2.4 in installation instructions in `INSTALL.windows`. * Added a line in `Makevars` that replaces some code related to type-casting in `NLopt-2.4/isres/isres.c`. * Changed encoding of `src/nloptr.c` from CP1252 to UTF-8. # nloptr 0.9.4 (09 November 2013) * Updated NLopt to version 2.4. * Changed tests to use unit testing package testthat (these are currently disabled). * Fixed a segfault that started to occur on the latest version of Ubuntu. * Slightly changed the build process (Removed `-lstdc++` from linker statement. A file `dummy.cpp` (with C++ extension) is added to the source directory to ensure linking with C++. Thanks to Brian Ripley for bringing this up.) # nloptr 0.9.3 (31 July 2013) * Split lines longer than 100 characters in `check.derivatives` examples in two lines to comply with new package rules. * Moved vignettes from `inst/doc` to `vignettes` to comply with new package rules. * Removed dependency on `apacite` in vignette as an update of `apacite` on CRAN resulted in errors. # nloptr 0.9.2 (11 July 2013) * Made changes in bibtex file of documentation. * Removed `CFLAGS`, `CXXFLAGS` from `Makevars`. # nloptr 0.9.0 * Introduced new `print_level = 3`. Shows values of controls (16 April 2012 on R-Forge). * Changed `Makevars` and `Makevars.win` to link to version 2.3 of NLopt compiled with `--with-cxx` option. This makes the StoGo algorithm available. (31 April 2013 on R-Forge). # nloptr 0.8.9 (18 November 2011) * Changed CRLF and CR line endings in `src/Makevars` to LF line endings to remove a warning from R CMD check. * Adopted some changes proposed by Brian Ripley to `src/Makevars.win` in order for nloptr to work with his new toolchain. # nloptr 0.8.8 (28 September 2011) * Updated `src/Makevars` to compile on Solaris. # nloptr 0.8.7 (24 September 2011) * Updated `src/Makevars` to compile on Solaris. # nloptr 0.8.6 (19 September 2011) * Updated `src/Makevars` to compile on Solaris. # nloptr 0.8.5 (03 September 2011) * Updated `src/Makevars` to compile a working binary for MacOS. # nloptr 0.8.4 (12 August 2011) * added new options: - data/nloptr.default.options.R: new file with a description of all options, mostly taken from the NLopt website (for internal use). - R/nloptr.print.options.R: function to show the description for a specific (set of) option(s). E.g. `nloptr.print.options(option="maxeval")`. `nloptr.print.options()` shows a description of all options if called without arguments. - added option to print a description of all options and their values (`print_options_doc` = TRUE/FALSE). - added option population to set the population of stochastic/global solvers (`population` = 1000). - added option ranseed which sets the random seed for stochastic solvers (`ranseed` = 3141). A value of 0 uses a random seed generated by system time. - option check_derivatives is no longer listed as a termination condition. - documented the option to set the tolerance of (in)equality constraints (`tol_constraints_eq`, `tol_constraints_ineq`). * `tests/banana_global.R`: new test file that uses the algorithms (CRS, ISRES, MLSL) and options `ranseed` and `population`. * `src/nloptr.c`: capture error codes from setting options. * `R/nloptr.print.R`: output gives 'optimal value of controls' when status = -4 (some error code), this is changed to 'current value of controls'. nloptr/configure.ac0000644000176200001440000000524114241407045014061 0ustar liggesusers## -*- mode: autoconf; autoconf-indentation: 4; -*- ## ## nloptr configure.ac ## ## nloptr -- R interface to NLopt ## ## Copyright (C) 2014-2022 Dirk Eddelbuettel ## ## This file is licensed under the GPL-2 or later just like most of my ## Open Source code, and is granted an exemption (should it be needed) ## for inclusion into nloptr # require at least autoconf 2.61 AC_PREREQ([2.69]) AC_INIT([nloptr],[2.0.0]) ## Set R_HOME, respecting an environment variable if set : ${R_HOME=$(R RHOME)} if test -z "${R_HOME}"; then AC_MSG_ERROR([Could not determine R_HOME.]) fi CXX=`"${R_HOME}/bin/R" CMD config CXX` if test -z "${CXX}"; then AC_MSG_ERROR([No C++ compiler available]) fi CXXFLAGS=`"${R_HOME}/bin/R" CMD config CXXFLAGS` CPPFLAGS=`"${R_HOME}/bin/R" CMD config CPPFLAGS` CXX11FLAGS=`"${R_HOME}/bin/R" CMD config CXX11FLAGS` AC_LANG(C++) AC_REQUIRE_CPP AC_PROG_CXX ## Default to build from source need_to_build="yes" ## But: Can we use pkg-config? AC_PATH_PROG(have_pkg_config, pkg-config, no) ## If yes, also check for whether pkg-config knows nlopt if test x"${have_pkg_config}" != x"no"; then AC_MSG_CHECKING([if pkg-config knows NLopt]) if pkg-config --exists nlopt; then AC_MSG_RESULT([yes]) ## Since nlopt has been found, test for minimal version requirement AC_MSG_CHECKING([for pkg-config checking NLopt version]) if pkg-config --atleast-version=2.7.0 nlopt; then AC_MSG_RESULT([>= 2.7.0]) nlopt_include=$(pkg-config --cflags nlopt) nlopt_libs=$(pkg-config --libs nlopt) AC_SUBST([NLOPT_INCLUDE], "${nlopt_include}") AC_SUBST([NLOPT_LIBS], "${nlopt_libs}") need_to_build="no" else AC_MSG_RESULT([insufficient: NLopt 2.7.0 or later is preferred.]) fi else AC_MSG_RESULT([no]) fi fi ## So do we need to build if test x"${need_to_build}" != x"no"; then AC_PATH_PROG(have_cmake, cmake, no) if test x"${have_cmake}" == x"no"; then . src/scripts/cmake_config.sh if test -z "${CMAKE_BIN}"; then ## also error to end configure here AC_MSG_ERROR([Could not find 'cmake'.]) fi fi ## 'uname -m' on M1 give x86_64 which is ... not helping machine=`"${R_HOME}/bin/Rscript" -e 'cat(Sys.info()[["machine"]])'` AC_MSG_RESULT([using NLopt via local cmake build on ${machine} ]) tools/cmake_call.sh ## cmake_call.sh installs into nlopt/lib, headers are copied nlopt_include="" nlopt_libs="nlopt/lib/libnlopt.a" fi ## Now use all the values AC_SUBST([NLOPT_CPPFLAGS],["$nlopt_include"]) AC_SUBST([NLOPT_LIBS],["$nlopt_libs"]) AC_CONFIG_FILES([src/Makevars]) AC_OUTPUT nloptr/inst/0000755000176200001440000000000014636312376012560 5ustar liggesusersnloptr/inst/include/0000755000176200001440000000000014172206364014175 5ustar liggesusersnloptr/inst/include/nlopt.f0000644000176200001440000000752514636312373015514 0ustar liggesusers integer NLOPT_GN_DIRECT parameter (NLOPT_GN_DIRECT=0) integer NLOPT_GN_DIRECT_L parameter (NLOPT_GN_DIRECT_L=1) integer NLOPT_GN_DIRECT_L_RAND parameter (NLOPT_GN_DIRECT_L_RAND=2) integer NLOPT_GN_DIRECT_NOSCAL parameter (NLOPT_GN_DIRECT_NOSCAL=3) integer NLOPT_GN_DIRECT_L_NOSCAL parameter (NLOPT_GN_DIRECT_L_NOSCAL=4) integer NLOPT_GN_DIRECT_L_RAND_NOSCAL parameter (NLOPT_GN_DIRECT_L_RAND_NOSCAL=5) integer NLOPT_GN_ORIG_DIRECT parameter (NLOPT_GN_ORIG_DIRECT=6) integer NLOPT_GN_ORIG_DIRECT_L parameter (NLOPT_GN_ORIG_DIRECT_L=7) integer NLOPT_GD_STOGO parameter (NLOPT_GD_STOGO=8) integer NLOPT_GD_STOGO_RAND parameter (NLOPT_GD_STOGO_RAND=9) integer NLOPT_LD_LBFGS_NOCEDAL parameter (NLOPT_LD_LBFGS_NOCEDAL=10) integer NLOPT_LD_LBFGS parameter (NLOPT_LD_LBFGS=11) integer NLOPT_LN_PRAXIS parameter (NLOPT_LN_PRAXIS=12) integer NLOPT_LD_VAR1 parameter (NLOPT_LD_VAR1=13) integer NLOPT_LD_VAR2 parameter (NLOPT_LD_VAR2=14) integer NLOPT_LD_TNEWTON parameter (NLOPT_LD_TNEWTON=15) integer NLOPT_LD_TNEWTON_RESTART parameter (NLOPT_LD_TNEWTON_RESTART=16) integer NLOPT_LD_TNEWTON_PRECOND parameter (NLOPT_LD_TNEWTON_PRECOND=17) integer NLOPT_LD_TNEWTON_PRECOND_RESTART parameter (NLOPT_LD_TNEWTON_PRECOND_RESTART=18) integer NLOPT_GN_CRS2_LM parameter (NLOPT_GN_CRS2_LM=19) integer NLOPT_GN_MLSL parameter (NLOPT_GN_MLSL=20) integer NLOPT_GD_MLSL parameter (NLOPT_GD_MLSL=21) integer NLOPT_GN_MLSL_LDS parameter (NLOPT_GN_MLSL_LDS=22) integer NLOPT_GD_MLSL_LDS parameter (NLOPT_GD_MLSL_LDS=23) integer NLOPT_LD_MMA parameter (NLOPT_LD_MMA=24) integer NLOPT_LN_COBYLA parameter (NLOPT_LN_COBYLA=25) integer NLOPT_LN_NEWUOA parameter (NLOPT_LN_NEWUOA=26) integer NLOPT_LN_NEWUOA_BOUND parameter (NLOPT_LN_NEWUOA_BOUND=27) integer NLOPT_LN_NELDERMEAD parameter (NLOPT_LN_NELDERMEAD=28) integer NLOPT_LN_SBPLX parameter (NLOPT_LN_SBPLX=29) integer NLOPT_LN_AUGLAG parameter (NLOPT_LN_AUGLAG=30) integer NLOPT_LD_AUGLAG parameter (NLOPT_LD_AUGLAG=31) integer NLOPT_LN_AUGLAG_EQ parameter (NLOPT_LN_AUGLAG_EQ=32) integer NLOPT_LD_AUGLAG_EQ parameter (NLOPT_LD_AUGLAG_EQ=33) integer NLOPT_LN_BOBYQA parameter (NLOPT_LN_BOBYQA=34) integer NLOPT_GN_ISRES parameter (NLOPT_GN_ISRES=35) integer NLOPT_AUGLAG parameter (NLOPT_AUGLAG=36) integer NLOPT_AUGLAG_EQ parameter (NLOPT_AUGLAG_EQ=37) integer NLOPT_G_MLSL parameter (NLOPT_G_MLSL=38) integer NLOPT_G_MLSL_LDS parameter (NLOPT_G_MLSL_LDS=39) integer NLOPT_LD_SLSQP parameter (NLOPT_LD_SLSQP=40) integer NLOPT_LD_CCSAQ parameter (NLOPT_LD_CCSAQ=41) integer NLOPT_GN_ESCH parameter (NLOPT_GN_ESCH=42) integer NLOPT_GN_AGS parameter (NLOPT_GN_AGS=43) integer NLOPT_FAILURE parameter (NLOPT_FAILURE=-1) integer NLOPT_INVALID_ARGS parameter (NLOPT_INVALID_ARGS=-2) integer NLOPT_OUT_OF_MEMORY parameter (NLOPT_OUT_OF_MEMORY=-3) integer NLOPT_ROUNDOFF_LIMITED parameter (NLOPT_ROUNDOFF_LIMITED=-4) integer NLOPT_FORCED_STOP parameter (NLOPT_FORCED_STOP=-5) integer NLOPT_SUCCESS parameter (NLOPT_SUCCESS=1) integer NLOPT_STOPVAL_REACHED parameter (NLOPT_STOPVAL_REACHED=2) integer NLOPT_FTOL_REACHED parameter (NLOPT_FTOL_REACHED=3) integer NLOPT_XTOL_REACHED parameter (NLOPT_XTOL_REACHED=4) integer NLOPT_MAXEVAL_REACHED parameter (NLOPT_MAXEVAL_REACHED=5) integer NLOPT_MAXTIME_REACHED parameter (NLOPT_MAXTIME_REACHED=6) nloptr/inst/include/nlopt.h0000644000176200001440000003671314636312373015517 0ustar liggesusers/* Copyright (c) 2007-2014 Massachusetts Institute of Technology * * 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 NLOPT_H #define NLOPT_H #include /* for ptrdiff_t and size_t */ /* Change 0 to 1 to use stdcall convention under Win32 */ #if 0 && (defined(_WIN32) || defined(__WIN32__)) # if defined(__GNUC__) # define NLOPT_STDCALL __attribute__((stdcall)) # elif defined(_MSC_VER) || defined(_ICC) || defined(_STDCALL_SUPPORTED) # define NLOPT_STDCALL __stdcall # else # define NLOPT_STDCALL # endif #else # define NLOPT_STDCALL #endif /* for Windows compilers, you should add a line #define NLOPT_DLL when using NLopt from a DLL, in order to do the proper Windows importing nonsense. */ #if defined(NLOPT_DLL) && (defined(_WIN32) || defined(__WIN32__)) && !defined(__LCC__) /* annoying Windows syntax for calling functions in a DLL */ # if defined(NLOPT_DLL_EXPORT) # define NLOPT_EXTERN(T) extern __declspec(dllexport) T NLOPT_STDCALL # else # define NLOPT_EXTERN(T) extern __declspec(dllimport) T NLOPT_STDCALL # endif #else # define NLOPT_EXTERN(T) extern T NLOPT_STDCALL #endif #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ typedef double (*nlopt_func) (unsigned n, const double *x, double *gradient, /* NULL if not needed */ void *func_data); typedef void (*nlopt_mfunc) (unsigned m, double *result, unsigned n, const double *x, double *gradient, /* NULL if not needed */ void *func_data); /* A preconditioner, which preconditions v at x to return vpre. (The meaning of "preconditioning" is algorithm-dependent.) */ typedef void (*nlopt_precond) (unsigned n, const double *x, const double *v, double *vpre, void *data); typedef enum { /* Naming conventions: NLOPT_{G/L}{D/N}_* = global/local derivative/no-derivative optimization, respectively *_RAND algorithms involve some randomization. *_NOSCAL algorithms are *not* scaled to a unit hypercube (i.e. they are sensitive to the units of x) */ NLOPT_GN_DIRECT = 0, NLOPT_GN_DIRECT_L, NLOPT_GN_DIRECT_L_RAND, NLOPT_GN_DIRECT_NOSCAL, NLOPT_GN_DIRECT_L_NOSCAL, NLOPT_GN_DIRECT_L_RAND_NOSCAL, NLOPT_GN_ORIG_DIRECT, NLOPT_GN_ORIG_DIRECT_L, NLOPT_GD_STOGO, NLOPT_GD_STOGO_RAND, NLOPT_LD_LBFGS_NOCEDAL, NLOPT_LD_LBFGS, NLOPT_LN_PRAXIS, NLOPT_LD_VAR1, NLOPT_LD_VAR2, NLOPT_LD_TNEWTON, NLOPT_LD_TNEWTON_RESTART, NLOPT_LD_TNEWTON_PRECOND, NLOPT_LD_TNEWTON_PRECOND_RESTART, NLOPT_GN_CRS2_LM, NLOPT_GN_MLSL, NLOPT_GD_MLSL, NLOPT_GN_MLSL_LDS, NLOPT_GD_MLSL_LDS, NLOPT_LD_MMA, NLOPT_LN_COBYLA, NLOPT_LN_NEWUOA, NLOPT_LN_NEWUOA_BOUND, NLOPT_LN_NELDERMEAD, NLOPT_LN_SBPLX, NLOPT_LN_AUGLAG, NLOPT_LD_AUGLAG, NLOPT_LN_AUGLAG_EQ, NLOPT_LD_AUGLAG_EQ, NLOPT_LN_BOBYQA, NLOPT_GN_ISRES, /* new variants that require local_optimizer to be set, not with older constants for backwards compatibility */ NLOPT_AUGLAG, NLOPT_AUGLAG_EQ, NLOPT_G_MLSL, NLOPT_G_MLSL_LDS, NLOPT_LD_SLSQP, NLOPT_LD_CCSAQ, NLOPT_GN_ESCH, NLOPT_GN_AGS, NLOPT_NUM_ALGORITHMS /* not an algorithm, just the number of them */ } nlopt_algorithm; NLOPT_EXTERN(const char *) nlopt_algorithm_name(nlopt_algorithm a); /* nlopt_algorithm enum <-> string conversion */ NLOPT_EXTERN(const char *) nlopt_algorithm_to_string(nlopt_algorithm algorithm); NLOPT_EXTERN(nlopt_algorithm) nlopt_algorithm_from_string(const char *name); typedef enum { NLOPT_FAILURE = -1, /* generic failure code */ NLOPT_INVALID_ARGS = -2, NLOPT_OUT_OF_MEMORY = -3, NLOPT_ROUNDOFF_LIMITED = -4, NLOPT_FORCED_STOP = -5, NLOPT_NUM_FAILURES = -6, /* not a result, just the number of possible failures */ NLOPT_SUCCESS = 1, /* generic success code */ NLOPT_STOPVAL_REACHED = 2, NLOPT_FTOL_REACHED = 3, NLOPT_XTOL_REACHED = 4, NLOPT_MAXEVAL_REACHED = 5, NLOPT_MAXTIME_REACHED = 6, NLOPT_NUM_RESULTS /* not a result, just the number of possible successes */ } nlopt_result; /* nlopt_result enum <-> string conversion */ NLOPT_EXTERN(const char *) nlopt_result_to_string(nlopt_result algorithm); NLOPT_EXTERN(nlopt_result) nlopt_result_from_string(const char *name); #define NLOPT_MINF_MAX_REACHED NLOPT_STOPVAL_REACHED NLOPT_EXTERN(void) nlopt_srand(unsigned long seed); NLOPT_EXTERN(void) nlopt_srand_time(void); NLOPT_EXTERN(void) nlopt_version(int *major, int *minor, int *bugfix); /*************************** OBJECT-ORIENTED API **************************/ /* The style here is that we create an nlopt_opt "object" (an opaque pointer), then set various optimization parameters, and then execute the algorithm. In this way, we can add more and more optimization parameters (including algorithm-specific ones) without breaking backwards compatibility, having functions with zillions of parameters, or relying non-reentrantly on global variables.*/ struct nlopt_opt_s; /* opaque structure, defined internally */ typedef struct nlopt_opt_s *nlopt_opt; /* the only immutable parameters of an optimization are the algorithm and the dimension n of the problem, since changing either of these could have side-effects on lots of other parameters */ NLOPT_EXTERN(nlopt_opt) nlopt_create(nlopt_algorithm algorithm, unsigned n); NLOPT_EXTERN(void) nlopt_destroy(nlopt_opt opt); NLOPT_EXTERN(nlopt_opt) nlopt_copy(const nlopt_opt opt); NLOPT_EXTERN(nlopt_result) nlopt_optimize(nlopt_opt opt, double *x, double *opt_f); NLOPT_EXTERN(nlopt_result) nlopt_set_min_objective(nlopt_opt opt, nlopt_func f, void *f_data); NLOPT_EXTERN(nlopt_result) nlopt_set_max_objective(nlopt_opt opt, nlopt_func f, void *f_data); NLOPT_EXTERN(nlopt_result) nlopt_set_precond_min_objective(nlopt_opt opt, nlopt_func f, nlopt_precond pre, void *f_data); NLOPT_EXTERN(nlopt_result) nlopt_set_precond_max_objective(nlopt_opt opt, nlopt_func f, nlopt_precond pre, void *f_data); NLOPT_EXTERN(nlopt_algorithm) nlopt_get_algorithm(const nlopt_opt opt); NLOPT_EXTERN(unsigned) nlopt_get_dimension(const nlopt_opt opt); NLOPT_EXTERN(const char *) nlopt_get_errmsg(nlopt_opt opt); /* generic algorithm parameters: */ NLOPT_EXTERN(nlopt_result) nlopt_set_param(nlopt_opt opt, const char *name, double val); NLOPT_EXTERN(double) nlopt_get_param(const nlopt_opt opt, const char *name, double defaultval); NLOPT_EXTERN(int) nlopt_has_param(const nlopt_opt opt, const char *name); NLOPT_EXTERN(unsigned) nlopt_num_params(const nlopt_opt opt); NLOPT_EXTERN(const char *) nlopt_nth_param(const nlopt_opt opt, unsigned n); /* constraints: */ NLOPT_EXTERN(nlopt_result) nlopt_set_lower_bounds(nlopt_opt opt, const double *lb); NLOPT_EXTERN(nlopt_result) nlopt_set_lower_bounds1(nlopt_opt opt, double lb); NLOPT_EXTERN(nlopt_result) nlopt_set_lower_bound(nlopt_opt opt, int i, double lb); NLOPT_EXTERN(nlopt_result) nlopt_get_lower_bounds(const nlopt_opt opt, double *lb); NLOPT_EXTERN(nlopt_result) nlopt_set_upper_bounds(nlopt_opt opt, const double *ub); NLOPT_EXTERN(nlopt_result) nlopt_set_upper_bounds1(nlopt_opt opt, double ub); NLOPT_EXTERN(nlopt_result) nlopt_set_upper_bound(nlopt_opt opt, int i, double ub); NLOPT_EXTERN(nlopt_result) nlopt_get_upper_bounds(const nlopt_opt opt, double *ub); NLOPT_EXTERN(nlopt_result) nlopt_remove_inequality_constraints(nlopt_opt opt); NLOPT_EXTERN(nlopt_result) nlopt_add_inequality_constraint(nlopt_opt opt, nlopt_func fc, void *fc_data, double tol); NLOPT_EXTERN(nlopt_result) nlopt_add_precond_inequality_constraint(nlopt_opt opt, nlopt_func fc, nlopt_precond pre, void *fc_data, double tol); NLOPT_EXTERN(nlopt_result) nlopt_add_inequality_mconstraint(nlopt_opt opt, unsigned m, nlopt_mfunc fc, void *fc_data, const double *tol); NLOPT_EXTERN(nlopt_result) nlopt_remove_equality_constraints(nlopt_opt opt); NLOPT_EXTERN(nlopt_result) nlopt_add_equality_constraint(nlopt_opt opt, nlopt_func h, void *h_data, double tol); NLOPT_EXTERN(nlopt_result) nlopt_add_precond_equality_constraint(nlopt_opt opt, nlopt_func h, nlopt_precond pre, void *h_data, double tol); NLOPT_EXTERN(nlopt_result) nlopt_add_equality_mconstraint(nlopt_opt opt, unsigned m, nlopt_mfunc h, void *h_data, const double *tol); /* stopping criteria: */ NLOPT_EXTERN(nlopt_result) nlopt_set_stopval(nlopt_opt opt, double stopval); NLOPT_EXTERN(double) nlopt_get_stopval(const nlopt_opt opt); NLOPT_EXTERN(nlopt_result) nlopt_set_ftol_rel(nlopt_opt opt, double tol); NLOPT_EXTERN(double) nlopt_get_ftol_rel(const nlopt_opt opt); NLOPT_EXTERN(nlopt_result) nlopt_set_ftol_abs(nlopt_opt opt, double tol); NLOPT_EXTERN(double) nlopt_get_ftol_abs(const nlopt_opt opt); NLOPT_EXTERN(nlopt_result) nlopt_set_xtol_rel(nlopt_opt opt, double tol); NLOPT_EXTERN(double) nlopt_get_xtol_rel(const nlopt_opt opt); NLOPT_EXTERN(nlopt_result) nlopt_set_xtol_abs1(nlopt_opt opt, double tol); NLOPT_EXTERN(nlopt_result) nlopt_set_xtol_abs(nlopt_opt opt, const double *tol); NLOPT_EXTERN(nlopt_result) nlopt_get_xtol_abs(const nlopt_opt opt, double *tol); NLOPT_EXTERN(nlopt_result) nlopt_set_x_weights1(nlopt_opt opt, double w); NLOPT_EXTERN(nlopt_result) nlopt_set_x_weights(nlopt_opt opt, const double *w); NLOPT_EXTERN(nlopt_result) nlopt_get_x_weights(const nlopt_opt opt, double *w); NLOPT_EXTERN(nlopt_result) nlopt_set_maxeval(nlopt_opt opt, int maxeval); NLOPT_EXTERN(int) nlopt_get_maxeval(const nlopt_opt opt); NLOPT_EXTERN(int) nlopt_get_numevals(const nlopt_opt opt); NLOPT_EXTERN(nlopt_result) nlopt_set_maxtime(nlopt_opt opt, double maxtime); NLOPT_EXTERN(double) nlopt_get_maxtime(const nlopt_opt opt); NLOPT_EXTERN(nlopt_result) nlopt_force_stop(nlopt_opt opt); NLOPT_EXTERN(nlopt_result) nlopt_set_force_stop(nlopt_opt opt, int val); NLOPT_EXTERN(int) nlopt_get_force_stop(const nlopt_opt opt); /* more algorithm-specific parameters */ NLOPT_EXTERN(nlopt_result) nlopt_set_local_optimizer(nlopt_opt opt, const nlopt_opt local_opt); NLOPT_EXTERN(nlopt_result) nlopt_set_population(nlopt_opt opt, unsigned pop); NLOPT_EXTERN(unsigned) nlopt_get_population(const nlopt_opt opt); NLOPT_EXTERN(nlopt_result) nlopt_set_vector_storage(nlopt_opt opt, unsigned dim); NLOPT_EXTERN(unsigned) nlopt_get_vector_storage(const nlopt_opt opt); NLOPT_EXTERN(nlopt_result) nlopt_set_default_initial_step(nlopt_opt opt, const double *x); NLOPT_EXTERN(nlopt_result) nlopt_set_initial_step(nlopt_opt opt, const double *dx); NLOPT_EXTERN(nlopt_result) nlopt_set_initial_step1(nlopt_opt opt, double dx); NLOPT_EXTERN(nlopt_result) nlopt_get_initial_step(const nlopt_opt opt, const double *x, double *dx); /* the following are functions mainly designed to be used internally by the Fortran and SWIG wrappers, allow us to tel nlopt_destroy and nlopt_copy to do something to the f_data pointers (e.g. free or duplicate them, respectively) */ typedef void *(*nlopt_munge) (void *p); NLOPT_EXTERN(void) nlopt_set_munge(nlopt_opt opt, nlopt_munge munge_on_destroy, nlopt_munge munge_on_copy); typedef void *(*nlopt_munge2) (void *p, void *data); NLOPT_EXTERN(void) nlopt_munge_data(nlopt_opt opt, nlopt_munge2 munge, void *data); /*************************** DEPRECATED API **************************/ /* The new "object-oriented" API is preferred, since it allows us to gracefully add new features and algorithm-specific options in a re-entrant way, and we can automatically assume reasonable defaults for unspecified parameters. */ /* Where possible (e.g. for gcc >= 3.1), enable a compiler warning for code that uses a deprecated function */ #if defined(__GNUC__) && (__GNUC__ > 3 || (__GNUC__==3 && __GNUC_MINOR__ > 0)) # define NLOPT_DEPRECATED __attribute__((deprecated)) #else # define NLOPT_DEPRECATED #endif typedef double (*nlopt_func_old) (int n, const double *x, double *gradient, /* NULL if not needed */ void *func_data); NLOPT_EXTERN(nlopt_result) nlopt_minimize(nlopt_algorithm algorithm, int n, nlopt_func_old f, void *f_data, const double *lb, const double *ub, /* bounds */ double *x, /* in: initial guess, out: minimizer */ double *minf, /* out: minimum */ double minf_max, double ftol_rel, double ftol_abs, double xtol_rel, const double *xtol_abs, int maxeval, double maxtime) NLOPT_DEPRECATED; NLOPT_EXTERN(nlopt_result) nlopt_minimize_constrained(nlopt_algorithm algorithm, int n, nlopt_func_old f, void *f_data, int m, nlopt_func_old fc, void *fc_data, ptrdiff_t fc_datum_size, const double *lb, const double *ub, /* bounds */ double *x, /* in: initial guess, out: minimizer */ double *minf, /* out: minimum */ double minf_max, double ftol_rel, double ftol_abs, double xtol_rel, const double *xtol_abs, int maxeval, double maxtime) NLOPT_DEPRECATED; NLOPT_EXTERN(nlopt_result) nlopt_minimize_econstrained(nlopt_algorithm algorithm, int n, nlopt_func_old f, void *f_data, int m, nlopt_func_old fc, void *fc_data, ptrdiff_t fc_datum_size, int p, nlopt_func_old h, void *h_data, ptrdiff_t h_datum_size, const double *lb, const double *ub, /* bounds */ double *x, /* in: initial guess, out: minimizer */ double *minf, /* out: minimum */ double minf_max, double ftol_rel, double ftol_abs, double xtol_rel, const double *xtol_abs, double htol_rel, double htol_abs, int maxeval, double maxtime) NLOPT_DEPRECATED; NLOPT_EXTERN(void) nlopt_get_local_search_algorithm(nlopt_algorithm * deriv, nlopt_algorithm * nonderiv, int *maxeval) NLOPT_DEPRECATED; NLOPT_EXTERN(void) nlopt_set_local_search_algorithm(nlopt_algorithm deriv, nlopt_algorithm nonderiv, int maxeval) NLOPT_DEPRECATED; NLOPT_EXTERN(int) nlopt_get_stochastic_population(void) NLOPT_DEPRECATED; NLOPT_EXTERN(void) nlopt_set_stochastic_population(int pop) NLOPT_DEPRECATED; /*********************************************************************/ #ifdef __cplusplus } /* extern "C" */ #endif /* __cplusplus */ #endif nloptr/inst/include/nlopt.hpp0000644000176200001440000005362714636312373016062 0ustar liggesusers/* Copyright (c) 2007-2011 Massachusetts Institute of Technology * * 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. */ // C++ style wrapper around NLopt API // nlopt.hpp is AUTOMATICALLY GENERATED from nlopt-in.hpp - edit the latter! #ifndef NLOPT_HPP #define NLOPT_HPP #include #include #include #include #include #include #include // convenience overloading for below (not in nlopt:: since has nlopt_ prefix) inline nlopt_result nlopt_get_initial_step(const nlopt_opt opt, double *dx) { return nlopt_get_initial_step(opt, (const double *) NULL, dx); } namespace nlopt { ////////////////////////////////////////////////////////////////////// // nlopt::* namespace versions of the C enumerated types // AUTOMATICALLY GENERATED, DO NOT EDIT // GEN_ENUMS_HERE enum algorithm { GN_DIRECT = 0, GN_DIRECT_L, GN_DIRECT_L_RAND, GN_DIRECT_NOSCAL, GN_DIRECT_L_NOSCAL, GN_DIRECT_L_RAND_NOSCAL, GN_ORIG_DIRECT, GN_ORIG_DIRECT_L, GD_STOGO, GD_STOGO_RAND, LD_LBFGS_NOCEDAL, LD_LBFGS, LN_PRAXIS, LD_VAR1, LD_VAR2, LD_TNEWTON, LD_TNEWTON_RESTART, LD_TNEWTON_PRECOND, LD_TNEWTON_PRECOND_RESTART, GN_CRS2_LM, GN_MLSL, GD_MLSL, GN_MLSL_LDS, GD_MLSL_LDS, LD_MMA, LN_COBYLA, LN_NEWUOA, LN_NEWUOA_BOUND, LN_NELDERMEAD, LN_SBPLX, LN_AUGLAG, LD_AUGLAG, LN_AUGLAG_EQ, LD_AUGLAG_EQ, LN_BOBYQA, GN_ISRES, AUGLAG, AUGLAG_EQ, G_MLSL, G_MLSL_LDS, LD_SLSQP, LD_CCSAQ, GN_ESCH, GN_AGS, NUM_ALGORITHMS /* not an algorithm, just the number of them */ }; enum result { FAILURE = -1, /* generic failure code */ INVALID_ARGS = -2, OUT_OF_MEMORY = -3, ROUNDOFF_LIMITED = -4, FORCED_STOP = -5, NUM_FAILURES = -6, /* not a result, just the number of possible failures */ SUCCESS = 1, /* generic success code */ STOPVAL_REACHED = 2, FTOL_REACHED = 3, XTOL_REACHED = 4, MAXEVAL_REACHED = 5, MAXTIME_REACHED = 6, NUM_RESULTS /* not a result, just the number of possible successes */ }; ////////////////////////////////////////////////////////////////////// typedef nlopt_func func; // nlopt::func synoynm typedef nlopt_mfunc mfunc; // nlopt::mfunc synoynm // alternative to nlopt_func that takes std::vector // ... unfortunately requires a data copy typedef double (*vfunc)(const std::vector &x, std::vector &grad, void *data); ////////////////////////////////////////////////////////////////////// // NLopt-specific exceptions (corresponding to error codes): class roundoff_limited : public std::runtime_error { public: roundoff_limited() : std::runtime_error("nlopt roundoff-limited") {} }; class forced_stop : public std::runtime_error { public: forced_stop() : std::runtime_error("nlopt forced stop") {} }; ////////////////////////////////////////////////////////////////////// class opt { private: nlopt_opt o; void mythrow(nlopt_result ret) const { switch (ret) { case NLOPT_FAILURE: throw std::runtime_error(get_errmsg() ? get_errmsg() : "nlopt failure"); case NLOPT_OUT_OF_MEMORY: throw std::bad_alloc(); case NLOPT_INVALID_ARGS: throw std::invalid_argument(get_errmsg() ? get_errmsg() : "nlopt invalid argument"); case NLOPT_ROUNDOFF_LIMITED: throw roundoff_limited(); case NLOPT_FORCED_STOP: throw forced_stop(); default: break; } } typedef struct { opt *o; mfunc mf; func f; void *f_data; vfunc vf; nlopt_munge munge_destroy, munge_copy; // non-NULL for SWIG wrappers } myfunc_data; // free/destroy f_data in nlopt_destroy and nlopt_copy, respectively static void *free_myfunc_data(void *p) { myfunc_data *d = (myfunc_data *) p; if (d) { if (d->f_data && d->munge_destroy) d->munge_destroy(d->f_data); delete d; } return NULL; } static void *dup_myfunc_data(void *p) { myfunc_data *d = (myfunc_data *) p; if (d) { void *f_data; if (d->f_data && d->munge_copy) { f_data = d->munge_copy(d->f_data); if (!f_data) return NULL; } else f_data = d->f_data; myfunc_data *dnew = new myfunc_data; if (dnew) { *dnew = *d; dnew->f_data = f_data; } return (void*) dnew; } else return NULL; } // nlopt_func wrapper that catches exceptions static double myfunc(unsigned n, const double *x, double *grad, void *d_) { myfunc_data *d = reinterpret_cast(d_); try { return d->f(n, x, grad, d->f_data); } catch (std::bad_alloc&) { d->o->forced_stop_reason = NLOPT_OUT_OF_MEMORY; } catch (std::invalid_argument&) { d->o->forced_stop_reason = NLOPT_INVALID_ARGS; } catch (roundoff_limited&) { d->o->forced_stop_reason = NLOPT_ROUNDOFF_LIMITED; } catch (forced_stop&) { d->o->forced_stop_reason = NLOPT_FORCED_STOP; } catch (...) { d->o->forced_stop_reason = NLOPT_FAILURE; } d->o->force_stop(); // stop gracefully, opt::optimize will re-throw return HUGE_VAL; } // nlopt_mfunc wrapper that catches exceptions static void mymfunc(unsigned m, double *result, unsigned n, const double *x, double *grad, void *d_) { myfunc_data *d = reinterpret_cast(d_); try { d->mf(m, result, n, x, grad, d->f_data); return; } catch (std::bad_alloc&) { d->o->forced_stop_reason = NLOPT_OUT_OF_MEMORY; } catch (std::invalid_argument&) { d->o->forced_stop_reason = NLOPT_INVALID_ARGS; } catch (roundoff_limited&) { d->o->forced_stop_reason = NLOPT_ROUNDOFF_LIMITED; } catch (forced_stop&) { d->o->forced_stop_reason = NLOPT_FORCED_STOP; } catch (...) { d->o->forced_stop_reason = NLOPT_FAILURE; } d->o->force_stop(); // stop gracefully, opt::optimize will re-throw for (unsigned i = 0; i < m; ++i) result[i] = HUGE_VAL; } std::vector xtmp, gradtmp, gradtmp0; // scratch for myvfunc // nlopt_func wrapper, using std::vector static double myvfunc(unsigned n, const double *x, double *grad, void *d_){ myfunc_data *d = reinterpret_cast(d_); try { std::vector &xv = d->o->xtmp; if (n) std::memcpy(&xv[0], x, n * sizeof(double)); double val=d->vf(xv, grad ? d->o->gradtmp : d->o->gradtmp0, d->f_data); if (grad && n) { std::vector &gradv = d->o->gradtmp; std::memcpy(grad, &gradv[0], n * sizeof(double)); } return val; } catch (std::bad_alloc&) { d->o->forced_stop_reason = NLOPT_OUT_OF_MEMORY; } catch (std::invalid_argument&) { d->o->forced_stop_reason = NLOPT_INVALID_ARGS; } catch (roundoff_limited&) { d->o->forced_stop_reason = NLOPT_ROUNDOFF_LIMITED; } catch (forced_stop&) { d->o->forced_stop_reason = NLOPT_FORCED_STOP; } catch (...) { d->o->forced_stop_reason = NLOPT_FAILURE; } d->o->force_stop(); // stop gracefully, opt::optimize will re-throw return HUGE_VAL; } void alloc_tmp() { if (xtmp.size() != nlopt_get_dimension(o)) { xtmp = std::vector(nlopt_get_dimension(o)); gradtmp = std::vector(nlopt_get_dimension(o)); } } result last_result; double last_optf; nlopt_result forced_stop_reason; public: // Constructors etc. opt() : o(NULL), xtmp(0), gradtmp(0), gradtmp0(0), last_result(nlopt::FAILURE), last_optf(HUGE_VAL), forced_stop_reason(NLOPT_FORCED_STOP) {} ~opt() { nlopt_destroy(o); } opt(algorithm a, unsigned n) : o(nlopt_create(nlopt_algorithm(a), n)), xtmp(0), gradtmp(0), gradtmp0(0), last_result(nlopt::FAILURE), last_optf(HUGE_VAL), forced_stop_reason(NLOPT_FORCED_STOP) { if (!o) throw std::bad_alloc(); nlopt_set_munge(o, free_myfunc_data, dup_myfunc_data); } opt(const char * algo_str, unsigned n) : o(NULL), xtmp(0), gradtmp(0), gradtmp0(0), last_result(nlopt::FAILURE), last_optf(HUGE_VAL), forced_stop_reason(NLOPT_FORCED_STOP) { const nlopt_algorithm a = nlopt_algorithm_from_string(algo_str); if (a < 0) throw std::invalid_argument("wrong algorithm string"); o = nlopt_create(a, n); if (!o) throw std::bad_alloc(); nlopt_set_munge(o, free_myfunc_data, dup_myfunc_data); } opt(const opt& f) : o(nlopt_copy(f.o)), xtmp(f.xtmp), gradtmp(f.gradtmp), gradtmp0(0), last_result(f.last_result), last_optf(f.last_optf), forced_stop_reason(f.forced_stop_reason) { if (f.o && !o) throw std::bad_alloc(); } opt& operator=(opt const& f) { if (this == &f) return *this; // self-assignment nlopt_destroy(o); o = nlopt_copy(f.o); if (f.o && !o) throw std::bad_alloc(); xtmp = f.xtmp; gradtmp = f.gradtmp; last_result = f.last_result; last_optf = f.last_optf; forced_stop_reason = f.forced_stop_reason; return *this; } // Do the optimization: result optimize(std::vector &x, double &opt_f) { if (o && nlopt_get_dimension(o) != x.size()) throw std::invalid_argument("dimension mismatch"); forced_stop_reason = NLOPT_FORCED_STOP; nlopt_result ret = nlopt_optimize(o, x.empty() ? NULL : &x[0], &opt_f); last_result = result(ret); last_optf = opt_f; if (ret == NLOPT_FORCED_STOP) mythrow(forced_stop_reason); mythrow(ret); return last_result; } // variant mainly useful for SWIG wrappers: std::vector optimize(const std::vector &x0) { std::vector x(x0); last_result = optimize(x, last_optf); return x; } result last_optimize_result() const { return last_result; } double last_optimum_value() const { return last_optf; } // accessors: algorithm get_algorithm() const { if (!o) throw std::runtime_error("uninitialized nlopt::opt"); return algorithm(nlopt_get_algorithm(o)); } const char *get_algorithm_name() const { if (!o) throw std::runtime_error("uninitialized nlopt::opt"); return nlopt_algorithm_name(nlopt_get_algorithm(o)); } unsigned get_dimension() const { if (!o) throw std::runtime_error("uninitialized nlopt::opt"); return nlopt_get_dimension(o); } // Set the objective function void set_min_objective(func f, void *f_data) { myfunc_data *d = new myfunc_data; if (!d) throw std::bad_alloc(); d->o = this; d->f = f; d->f_data = f_data; d->mf = NULL; d->vf = NULL; d->munge_destroy = d->munge_copy = NULL; mythrow(nlopt_set_min_objective(o, myfunc, d)); // d freed via o } void set_min_objective(vfunc vf, void *f_data) { myfunc_data *d = new myfunc_data; if (!d) throw std::bad_alloc(); d->o = this; d->f = NULL; d->f_data = f_data; d->mf = NULL; d->vf = vf; d->munge_destroy = d->munge_copy = NULL; mythrow(nlopt_set_min_objective(o, myvfunc, d)); // d freed via o alloc_tmp(); } void set_max_objective(func f, void *f_data) { myfunc_data *d = new myfunc_data; if (!d) throw std::bad_alloc(); d->o = this; d->f = f; d->f_data = f_data; d->mf = NULL; d->vf = NULL; d->munge_destroy = d->munge_copy = NULL; mythrow(nlopt_set_max_objective(o, myfunc, d)); // d freed via o } void set_max_objective(vfunc vf, void *f_data) { myfunc_data *d = new myfunc_data; if (!d) throw std::bad_alloc(); d->o = this; d->f = NULL; d->f_data = f_data; d->mf = NULL; d->vf = vf; d->munge_destroy = d->munge_copy = NULL; mythrow(nlopt_set_max_objective(o, myvfunc, d)); // d freed via o alloc_tmp(); } // for internal use in SWIG wrappers -- variant that // takes ownership of f_data, with munging for destroy/copy void set_min_objective(func f, void *f_data, nlopt_munge md, nlopt_munge mc) { myfunc_data *d = new myfunc_data; if (!d) throw std::bad_alloc(); d->o = this; d->f = f; d->f_data = f_data; d->mf = NULL; d->vf = NULL; d->munge_destroy = md; d->munge_copy = mc; mythrow(nlopt_set_min_objective(o, myfunc, d)); // d freed via o } void set_max_objective(func f, void *f_data, nlopt_munge md, nlopt_munge mc) { myfunc_data *d = new myfunc_data; if (!d) throw std::bad_alloc(); d->o = this; d->f = f; d->f_data = f_data; d->mf = NULL; d->vf = NULL; d->munge_destroy = md; d->munge_copy = mc; mythrow(nlopt_set_max_objective(o, myfunc, d)); // d freed via o } // Nonlinear constraints: void remove_inequality_constraints() { nlopt_result ret = nlopt_remove_inequality_constraints(o); mythrow(ret); } void add_inequality_constraint(func f, void *f_data, double tol=0) { myfunc_data *d = new myfunc_data; if (!d) throw std::bad_alloc(); d->o = this; d->f = f; d->f_data = f_data; d->mf = NULL; d->vf = NULL; d->munge_destroy = d->munge_copy = NULL; mythrow(nlopt_add_inequality_constraint(o, myfunc, d, tol)); } void add_inequality_constraint(vfunc vf, void *f_data, double tol=0) { myfunc_data *d = new myfunc_data; if (!d) throw std::bad_alloc(); d->o = this; d->f = NULL; d->f_data = f_data; d->mf = NULL; d->vf = vf; d->munge_destroy = d->munge_copy = NULL; mythrow(nlopt_add_inequality_constraint(o, myvfunc, d, tol)); alloc_tmp(); } void add_inequality_mconstraint(mfunc mf, void *f_data, const std::vector &tol) { myfunc_data *d = new myfunc_data; if (!d) throw std::bad_alloc(); d->o = this; d->mf = mf; d->f_data = f_data; d->f = NULL; d->vf = NULL; d->munge_destroy = d->munge_copy = NULL; mythrow(nlopt_add_inequality_mconstraint(o, tol.size(), mymfunc, d, tol.empty() ? NULL : &tol[0])); } void remove_equality_constraints() { nlopt_result ret = nlopt_remove_equality_constraints(o); mythrow(ret); } void add_equality_constraint(func f, void *f_data, double tol=0) { myfunc_data *d = new myfunc_data; if (!d) throw std::bad_alloc(); d->o = this; d->f = f; d->f_data = f_data; d->mf = NULL; d->vf = NULL; d->munge_destroy = d->munge_copy = NULL; mythrow(nlopt_add_equality_constraint(o, myfunc, d, tol)); } void add_equality_constraint(vfunc vf, void *f_data, double tol=0) { myfunc_data *d = new myfunc_data; if (!d) throw std::bad_alloc(); d->o = this; d->f = NULL; d->f_data = f_data; d->mf = NULL; d->vf = vf; d->munge_destroy = d->munge_copy = NULL; mythrow(nlopt_add_equality_constraint(o, myvfunc, d, tol)); alloc_tmp(); } void add_equality_mconstraint(mfunc mf, void *f_data, const std::vector &tol) { myfunc_data *d = new myfunc_data; if (!d) throw std::bad_alloc(); d->o = this; d->mf = mf; d->f_data = f_data; d->f = NULL; d->vf = NULL; d->munge_destroy = d->munge_copy = NULL; mythrow(nlopt_add_equality_mconstraint(o, tol.size(), mymfunc, d, tol.empty() ? NULL : &tol[0])); } // For internal use in SWIG wrappers (see also above) void add_inequality_constraint(func f, void *f_data, nlopt_munge md, nlopt_munge mc, double tol=0) { myfunc_data *d = new myfunc_data; if (!d) throw std::bad_alloc(); d->o = this; d->f = f; d->f_data = f_data; d->mf = NULL; d->vf = NULL; d->munge_destroy = md; d->munge_copy = mc; mythrow(nlopt_add_inequality_constraint(o, myfunc, d, tol)); } void add_equality_constraint(func f, void *f_data, nlopt_munge md, nlopt_munge mc, double tol=0) { myfunc_data *d = new myfunc_data; if (!d) throw std::bad_alloc(); d->o = this; d->f = f; d->f_data = f_data; d->mf = NULL; d->vf = NULL; d->munge_destroy = md; d->munge_copy = mc; mythrow(nlopt_add_equality_constraint(o, myfunc, d, tol)); } void add_inequality_mconstraint(mfunc mf, void *f_data, nlopt_munge md, nlopt_munge mc, const std::vector &tol) { myfunc_data *d = new myfunc_data; if (!d) throw std::bad_alloc(); d->o = this; d->mf = mf; d->f_data = f_data; d->f = NULL; d->vf = NULL; d->munge_destroy = md; d->munge_copy = mc; mythrow(nlopt_add_inequality_mconstraint(o, tol.size(), mymfunc, d, tol.empty() ? NULL : &tol[0])); } void add_equality_mconstraint(mfunc mf, void *f_data, nlopt_munge md, nlopt_munge mc, const std::vector &tol) { myfunc_data *d = new myfunc_data; if (!d) throw std::bad_alloc(); d->o = this; d->mf = mf; d->f_data = f_data; d->f = NULL; d->vf = NULL; d->munge_destroy = md; d->munge_copy = mc; mythrow(nlopt_add_equality_mconstraint(o, tol.size(), mymfunc, d, tol.empty() ? NULL : &tol[0])); } void set_param(const char *name, double val) { mythrow(nlopt_set_param(o, name, val)); } double get_param(const char *name, double defaultval) const { return nlopt_get_param(o, name, defaultval); } bool has_param(const char *name) const { return bool(nlopt_has_param(o, name)); } const char *nth_param(unsigned n) const { return nlopt_nth_param(o, n); } unsigned num_params() const { return nlopt_num_params(o); } #define NLOPT_GETSET_VEC(name) \ void set_##name(double val) { \ mythrow(nlopt_set_##name##1(o, val)); \ } \ void get_##name(std::vector &v) const { \ if (o && nlopt_get_dimension(o) != v.size()) \ throw std::invalid_argument("dimension mismatch"); \ mythrow(nlopt_get_##name(o, v.empty() ? NULL : &v[0])); \ } \ std::vector get_##name() const { \ if (!o) throw std::runtime_error("uninitialized nlopt::opt"); \ std::vector v(nlopt_get_dimension(o)); \ get_##name(v); \ return v; \ } \ void set_##name(const std::vector &v) { \ if (o && nlopt_get_dimension(o) != v.size()) \ throw std::invalid_argument("dimension mismatch"); \ mythrow(nlopt_set_##name(o, v.empty() ? NULL : &v[0])); \ } NLOPT_GETSET_VEC(lower_bounds) NLOPT_GETSET_VEC(upper_bounds) // stopping criteria: #define NLOPT_GETSET(T, name) \ T get_##name() const { \ if (!o) throw std::runtime_error("uninitialized nlopt::opt"); \ return nlopt_get_##name(o); \ } \ void set_##name(T name) { \ mythrow(nlopt_set_##name(o, name)); \ } NLOPT_GETSET(double, stopval) NLOPT_GETSET(double, ftol_rel) NLOPT_GETSET(double, ftol_abs) NLOPT_GETSET(double, xtol_rel) NLOPT_GETSET_VEC(xtol_abs) NLOPT_GETSET_VEC(x_weights) NLOPT_GETSET(int, maxeval) int get_numevals() const { if (!o) throw std::runtime_error("uninitialized nlopt::opt"); return nlopt_get_numevals(o); } NLOPT_GETSET(double, maxtime) NLOPT_GETSET(int, force_stop) void force_stop() { set_force_stop(1); } const char *get_errmsg() const { if (!o) throw std::runtime_error("uninitialized nlopt::opt"); return nlopt_get_errmsg(o); } // algorithm-specific parameters: void set_local_optimizer(const opt &lo) { nlopt_result ret = nlopt_set_local_optimizer(o, lo.o); mythrow(ret); } NLOPT_GETSET(unsigned, population) NLOPT_GETSET(unsigned, vector_storage) NLOPT_GETSET_VEC(initial_step) void set_default_initial_step(const std::vector &x) { nlopt_result ret = nlopt_set_default_initial_step(o, x.empty() ? NULL : &x[0]); mythrow(ret); } void get_initial_step(const std::vector &x, std::vector &dx) const { if (o && (nlopt_get_dimension(o) != x.size() || nlopt_get_dimension(o) != dx.size())) throw std::invalid_argument("dimension mismatch"); nlopt_result ret = nlopt_get_initial_step(o, x.empty() ? NULL : &x[0], dx.empty() ? NULL : &dx[0]); mythrow(ret); } std::vector get_initial_step_(const std::vector &x) const { if (!o) throw std::runtime_error("uninitialized nlopt::opt"); std::vector v(nlopt_get_dimension(o)); get_initial_step(x, v); return v; } }; #undef NLOPT_GETSET #undef NLOPT_GETSET_VEC ////////////////////////////////////////////////////////////////////// inline void srand(unsigned long seed) { nlopt_srand(seed); } inline void srand_time() { nlopt_srand_time(); } inline void version(int &major, int &minor, int &bugfix) { nlopt_version(&major, &minor, &bugfix); } inline int version_major() { int major, minor, bugfix; nlopt_version(&major, &minor, &bugfix); return major; } inline int version_minor() { int major, minor, bugfix; nlopt_version(&major, &minor, &bugfix); return minor; } inline int version_bugfix() { int major, minor, bugfix; nlopt_version(&major, &minor, &bugfix); return bugfix; } inline const char *algorithm_name(algorithm a) { return nlopt_algorithm_name(nlopt_algorithm(a)); } ////////////////////////////////////////////////////////////////////// } // namespace nlopt #endif /* NLOPT_HPP */ nloptr/inst/include/nloptrAPI.h0000644000176200001440000004365114172206364016227 0ustar liggesusers/* * Copyright (C) 2017 Jelmer Ypma. All Rights Reserved. * This code is published under the L-GPL. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published * by the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program. If not, see . * * File: nloptrAPI.h * Author: Jelmer Ypma * Date: 3 October 2017 * * This file provides an API for calling internal NLopt code from C within * R packages. The C functions that are registered in init_nloptr.c can be * accessed by external R packages. * * 03/10/2017: Initial version exposing nlopt_version. */ #ifndef __NLOPTRAPI_H__ #define __NLOPTRAPI_H__ #include #include #include #include /* * C functions can be exposed using the following template: * * RET_TYPE FUNCNAME(ARGTYPE_1 ARGNAME 1, ARGTYPE_2 ARGNAME_2) * { * static RET_TYPE(*fun)(ARGTYPE_1, ARGTYPE_2) = NULL; * if (fun == NULL) fun = (RET_TYPE(*)(ARGTYPE_1, ARGTYPE_2)) R_GetCCallable("nloptr","FUNCNAME"); * return fun(ARGNAME_1, ARGNAME_2); * } * */ inline NLOPT_EXTERN(const char *) nlopt_algorithm_name(nlopt_algorithm a) { static const char *(*fun)(nlopt_algorithm) = NULL; if (fun == NULL) fun = (const char *(*)(nlopt_algorithm)) R_GetCCallable("nloptr","nlopt_algorithm_name"); return fun(a); } inline NLOPT_EXTERN(void) nlopt_srand(unsigned long seed) { static void(*fun)(unsigned long) = NULL; if (fun == NULL) fun = (void(*)(unsigned long)) R_GetCCallable("nloptr","nlopt_srand"); return fun(seed); } inline NLOPT_EXTERN(void) nlopt_srand_time(void) { static void(*fun)(void) = NULL; if (fun == NULL) fun = (void(*)(void)) R_GetCCallable("nloptr","nlopt_srand_time"); return fun(); } inline NLOPT_EXTERN(void) nlopt_version(int *major, int *minor, int *bugfix) { static void(*fun)(int *, int *, int *) = NULL; if (fun == NULL) fun = (void(*)(int *, int *, int *)) R_GetCCallable("nloptr","nlopt_version"); return fun(major, minor, bugfix); } inline NLOPT_EXTERN(nlopt_opt) nlopt_create(nlopt_algorithm algorithm, unsigned n) { static nlopt_opt(*fun)(nlopt_algorithm, unsigned) = NULL; if (fun == NULL) fun = (nlopt_opt(*)(nlopt_algorithm, unsigned)) R_GetCCallable("nloptr","nlopt_create"); return fun(algorithm, n); } inline NLOPT_EXTERN(void) nlopt_destroy(nlopt_opt opt) { static void(*fun)(nlopt_opt) = NULL; if (fun == NULL) fun = (void(*)(nlopt_opt)) R_GetCCallable("nloptr","nlopt_destroy"); return fun(opt); } inline NLOPT_EXTERN(nlopt_opt) nlopt_copy(const nlopt_opt opt) { static nlopt_opt(*fun)(const nlopt_opt) = NULL; if (fun == NULL) fun = (nlopt_opt(*)(const nlopt_opt)) R_GetCCallable("nloptr","nlopt_copy"); return fun(opt); } inline NLOPT_EXTERN(nlopt_result) nlopt_optimize(nlopt_opt opt, double *x, double *opt_f) { static nlopt_result(*fun)(nlopt_opt, double *, double *) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, double *, double *)) R_GetCCallable("nloptr","nlopt_optimize"); return fun(opt, x, opt_f); } inline NLOPT_EXTERN(nlopt_result) nlopt_set_min_objective(nlopt_opt opt, nlopt_func f, void *f_data) { static nlopt_result(*fun)(nlopt_opt, nlopt_func, void *) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, nlopt_func, void *)) R_GetCCallable("nloptr","nlopt_set_min_objective"); return fun(opt, f, f_data); } inline NLOPT_EXTERN(nlopt_result) nlopt_set_max_objective(nlopt_opt opt, nlopt_func f, void *f_data) { static nlopt_result(*fun)(nlopt_opt, nlopt_func, void *) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, nlopt_func, void *)) R_GetCCallable("nloptr","nlopt_set_max_objective"); return fun(opt, f, f_data); } inline NLOPT_EXTERN(nlopt_result) nlopt_set_precond_min_objective(nlopt_opt opt, nlopt_func f, nlopt_precond pre, void *f_data) { static nlopt_result(*fun)(nlopt_opt, nlopt_func, nlopt_precond, void *) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, nlopt_func, nlopt_precond, void *)) R_GetCCallable("nloptr","nlopt_set_precond_min_objective"); return fun(opt, f, pre, f_data); } inline NLOPT_EXTERN(nlopt_result) nlopt_set_precond_max_objective(nlopt_opt opt, nlopt_func f, nlopt_precond pre, void *f_data) { static nlopt_result(*fun)(nlopt_opt, nlopt_func, nlopt_precond, void *) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, nlopt_func, nlopt_precond, void *)) R_GetCCallable("nloptr","nlopt_set_precond_max_objective"); return fun(opt, f, pre, f_data); } inline NLOPT_EXTERN(nlopt_algorithm) nlopt_get_algorithm(const nlopt_opt opt) { static nlopt_algorithm(*fun)(const nlopt_opt) = NULL; if (fun == NULL) fun = (nlopt_algorithm(*)(const nlopt_opt)) R_GetCCallable("nloptr","nlopt_get_algorithm"); return fun(opt); } inline NLOPT_EXTERN(unsigned) nlopt_get_dimension(const nlopt_opt opt) { static unsigned(*fun)(const nlopt_opt) = NULL; if (fun == NULL) fun = (unsigned(*)(const nlopt_opt)) R_GetCCallable("nloptr","nlopt_get_dimension"); return fun(opt); } /* constraints: */ inline NLOPT_EXTERN(nlopt_result) nlopt_set_lower_bounds(nlopt_opt opt, const double *lb) { static nlopt_result(*fun)(nlopt_opt, const double *) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, const double *)) R_GetCCallable("nloptr","nlopt_set_lower_bounds"); return fun(opt, lb); } inline NLOPT_EXTERN(nlopt_result) nlopt_set_lower_bounds1(nlopt_opt opt, double lb) { static nlopt_result(*fun)(nlopt_opt, double) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, double)) R_GetCCallable("nloptr","nlopt_set_lower_bounds1"); return fun(opt, lb); } inline NLOPT_EXTERN(nlopt_result) nlopt_get_lower_bounds(const nlopt_opt opt, double *lb) { static nlopt_result(*fun)(const nlopt_opt, double *) = NULL; if (fun == NULL) fun = (nlopt_result(*)(const nlopt_opt, double *)) R_GetCCallable("nloptr","nlopt_get_lower_bounds"); return fun(opt, lb); } inline NLOPT_EXTERN(nlopt_result) nlopt_set_upper_bounds(nlopt_opt opt, const double *ub) { static nlopt_result(*fun)(nlopt_opt, const double *) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, const double *)) R_GetCCallable("nloptr","nlopt_set_upper_bounds"); return fun(opt, ub); } inline NLOPT_EXTERN(nlopt_result) nlopt_set_upper_bounds1(nlopt_opt opt, double ub) { static nlopt_result(*fun)(nlopt_opt, double) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, double)) R_GetCCallable("nloptr","nlopt_set_upper_bounds1"); return fun(opt, ub); } inline NLOPT_EXTERN(nlopt_result) nlopt_get_upper_bounds(const nlopt_opt opt, double *ub) { static nlopt_result(*fun)(const nlopt_opt, double *) = NULL; if (fun == NULL) fun = (nlopt_result(*)(const nlopt_opt, double *)) R_GetCCallable("nloptr","nlopt_get_upper_bounds"); return fun(opt, ub); } inline NLOPT_EXTERN(nlopt_result) nlopt_remove_inequality_constraints(nlopt_opt opt) { static nlopt_result(*fun)(nlopt_opt) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt)) R_GetCCallable("nloptr","nlopt_remove_inequality_constraints"); return fun(opt); } inline NLOPT_EXTERN(nlopt_result) nlopt_add_inequality_constraint(nlopt_opt opt, nlopt_func fc, void *fc_data, double tol) { static nlopt_result(*fun)(nlopt_opt, nlopt_func, void *, double) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, nlopt_func, void *, double)) R_GetCCallable("nloptr","nlopt_add_inequality_constraint"); return fun(opt, fc, fc_data, tol); } inline NLOPT_EXTERN(nlopt_result) nlopt_add_precond_inequality_constraint( nlopt_opt opt, nlopt_func fc, nlopt_precond pre, void *fc_data, double tol) { static nlopt_result(*fun)(nlopt_opt, nlopt_func, nlopt_precond, void *, double) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, nlopt_func, nlopt_precond, void *, double)) R_GetCCallable("nloptr","nlopt_add_precond_inequality_constraint"); return fun(opt, fc, pre, fc_data, tol); } inline NLOPT_EXTERN(nlopt_result) nlopt_add_inequality_mconstraint(nlopt_opt opt, unsigned m, nlopt_mfunc fc, void *fc_data, const double *tol) { static nlopt_result(*fun)(nlopt_opt, unsigned, nlopt_mfunc, void *, const double *) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, unsigned, nlopt_mfunc, void *, const double *)) R_GetCCallable("nloptr","nlopt_add_inequality_mconstraint"); return fun(opt, m, fc, fc_data, tol); } inline NLOPT_EXTERN(nlopt_result) nlopt_remove_equality_constraints(nlopt_opt opt) { static nlopt_result(*fun)(nlopt_opt) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt)) R_GetCCallable("nloptr","nlopt_remove_equality_constraints"); return fun(opt); } inline NLOPT_EXTERN(nlopt_result) nlopt_add_equality_constraint(nlopt_opt opt, nlopt_func h, void *h_data, double tol) { static nlopt_result(*fun)(nlopt_opt, nlopt_func, void *, double) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, nlopt_func, void *, double)) R_GetCCallable("nloptr","nlopt_add_equality_constraint"); return fun(opt, h, h_data, tol); } inline NLOPT_EXTERN(nlopt_result) nlopt_add_precond_equality_constraint( nlopt_opt opt, nlopt_func h, nlopt_precond pre, void *h_data, double tol) { static nlopt_result(*fun)(nlopt_opt, nlopt_func, nlopt_precond, void *, double) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, nlopt_func, nlopt_precond, void *, double)) R_GetCCallable("nloptr","nlopt_add_precond_equality_constraint"); return fun(opt, h, pre, h_data, tol); } inline NLOPT_EXTERN(nlopt_result) nlopt_add_equality_mconstraint(nlopt_opt opt, unsigned m, nlopt_mfunc h, void *h_data, const double *tol) { static nlopt_result(*fun)(nlopt_opt, unsigned, nlopt_mfunc, void *, const double *) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, unsigned, nlopt_mfunc, void *, const double *)) R_GetCCallable("nloptr","nlopt_add_equality_mconstraint"); return fun(opt, m, h, h_data, tol); } /* stopping criteria: */ inline NLOPT_EXTERN(nlopt_result) nlopt_set_stopval(nlopt_opt opt, double stopval) { static nlopt_result(*fun)(nlopt_opt, double) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, double)) R_GetCCallable("nloptr","nlopt_set_stopval"); return fun(opt, stopval); } inline NLOPT_EXTERN(double) nlopt_get_stopval(const nlopt_opt opt) { static double(*fun)(const nlopt_opt) = NULL; if (fun == NULL) fun = (double(*)(const nlopt_opt)) R_GetCCallable("nloptr","nlopt_get_stopval"); return fun(opt); } inline NLOPT_EXTERN(nlopt_result) nlopt_set_ftol_rel(nlopt_opt opt, double tol) { static nlopt_result(*fun)(nlopt_opt, double) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, double)) R_GetCCallable("nloptr","nlopt_set_ftol_rel"); return fun(opt, tol); } inline NLOPT_EXTERN(double) nlopt_get_ftol_rel(const nlopt_opt opt) { static double(*fun)(const nlopt_opt) = NULL; if (fun == NULL) fun = (double(*)(const nlopt_opt)) R_GetCCallable("nloptr","nlopt_get_ftol_rel"); return fun(opt); } inline NLOPT_EXTERN(nlopt_result) nlopt_set_ftol_abs(nlopt_opt opt, double tol) { static nlopt_result(*fun)(nlopt_opt, double) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, double)) R_GetCCallable("nloptr","nlopt_set_ftol_abs"); return fun(opt, tol); } inline NLOPT_EXTERN(double) nlopt_get_ftol_abs(const nlopt_opt opt) { static double(*fun)(const nlopt_opt) = NULL; if (fun == NULL) fun = (double(*)(const nlopt_opt)) R_GetCCallable("nloptr","nlopt_get_ftol_abs"); return fun(opt); } inline NLOPT_EXTERN(nlopt_result) nlopt_set_xtol_rel(nlopt_opt opt, double tol) { static nlopt_result(*fun)(nlopt_opt, double) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, double)) R_GetCCallable("nloptr","nlopt_set_xtol_rel"); return fun(opt, tol); } inline NLOPT_EXTERN(double) nlopt_get_xtol_rel(const nlopt_opt opt) { static double(*fun)(const nlopt_opt) = NULL; if (fun == NULL) fun = (double(*)(const nlopt_opt)) R_GetCCallable("nloptr","nlopt_get_xtol_rel"); return fun(opt); } inline NLOPT_EXTERN(nlopt_result) nlopt_set_xtol_abs1(nlopt_opt opt, double tol) { static nlopt_result(*fun)(nlopt_opt, double) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, double)) R_GetCCallable("nloptr","nlopt_set_xtol_abs1"); return fun(opt, tol); } inline NLOPT_EXTERN(nlopt_result) nlopt_set_xtol_abs(nlopt_opt opt, const double *tol) { static nlopt_result(*fun)(nlopt_opt, const double *) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, const double *)) R_GetCCallable("nloptr","nlopt_set_xtol_abs"); return fun(opt, tol); } inline NLOPT_EXTERN(nlopt_result) nlopt_get_xtol_abs(const nlopt_opt opt, double *tol) { static nlopt_result(*fun)(nlopt_opt, double *) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, double *)) R_GetCCallable("nloptr","nlopt_get_xtol_abs"); return fun(opt, tol); } inline NLOPT_EXTERN(nlopt_result) nlopt_set_maxeval(nlopt_opt opt, int maxeval) { static nlopt_result(*fun)(nlopt_opt, int) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, int)) R_GetCCallable("nloptr","nlopt_set_maxeval"); return fun(opt, maxeval); } inline NLOPT_EXTERN(int) nlopt_get_maxeval(const nlopt_opt opt) { static int(*fun)(const nlopt_opt) = NULL; if (fun == NULL) fun = (int(*)(const nlopt_opt)) R_GetCCallable("nloptr","nlopt_get_maxeval"); return fun(opt); } inline NLOPT_EXTERN(nlopt_result) nlopt_set_maxtime(nlopt_opt opt, double maxtime) { static nlopt_result(*fun)(nlopt_opt, double) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, double)) R_GetCCallable("nloptr","nlopt_set_maxtime"); return fun(opt, maxtime); } inline NLOPT_EXTERN(double) nlopt_get_maxtime(const nlopt_opt opt) { static double(*fun)(nlopt_opt) = NULL; if (fun == NULL) fun = (double(*)(nlopt_opt)) R_GetCCallable("nloptr","nlopt_get_maxtime"); return fun(opt); } inline NLOPT_EXTERN(nlopt_result) nlopt_force_stop(nlopt_opt opt) { static nlopt_result(*fun)(nlopt_opt) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt)) R_GetCCallable("nloptr","nlopt_force_stop"); return fun(opt); } inline NLOPT_EXTERN(nlopt_result) nlopt_set_force_stop(nlopt_opt opt, int val) { static nlopt_result(*fun)(nlopt_opt, int) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, int)) R_GetCCallable("nloptr","nlopt_set_force_stop"); return fun(opt, val); } inline NLOPT_EXTERN(int) nlopt_get_force_stop(const nlopt_opt opt) { static int(*fun)(const nlopt_opt) = NULL; if (fun == NULL) fun = (int(*)(const nlopt_opt)) R_GetCCallable("nloptr","nlopt_get_force_stop"); return fun(opt); } /* more algorithm-specific parameters */ inline NLOPT_EXTERN(nlopt_result) nlopt_set_local_optimizer(nlopt_opt opt, const nlopt_opt local_opt) { static nlopt_result(*fun)(nlopt_opt, const nlopt_opt) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, const nlopt_opt)) R_GetCCallable("nloptr","nlopt_set_local_optimizer"); return fun(opt, local_opt); } inline NLOPT_EXTERN(nlopt_result) nlopt_set_population(nlopt_opt opt, unsigned pop) { static nlopt_result(*fun)(nlopt_opt, unsigned) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, unsigned)) R_GetCCallable("nloptr","nlopt_set_population"); return fun(opt, pop); } inline NLOPT_EXTERN(unsigned) nlopt_get_population(const nlopt_opt opt) { static unsigned(*fun)(const nlopt_opt) = NULL; if (fun == NULL) fun = (unsigned(*)(const nlopt_opt)) R_GetCCallable("nloptr","nlopt_get_population"); return fun(opt); } inline NLOPT_EXTERN(nlopt_result) nlopt_set_vector_storage(nlopt_opt opt, unsigned dim) { static nlopt_result(*fun)(nlopt_opt, unsigned) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, unsigned)) R_GetCCallable("nloptr","nlopt_set_vector_storage"); return fun(opt, dim); } inline NLOPT_EXTERN(unsigned) nlopt_get_vector_storage(const nlopt_opt opt) { static unsigned(*fun)(const nlopt_opt) = NULL; if (fun == NULL) fun = (unsigned(*)(const nlopt_opt)) R_GetCCallable("nloptr","nlopt_get_vector_storage"); return fun(opt); } inline NLOPT_EXTERN(nlopt_result) nlopt_set_default_initial_step(nlopt_opt opt, const double *x) { static nlopt_result(*fun)(nlopt_opt, const double *) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, const double *)) R_GetCCallable("nloptr","nlopt_set_default_initial_step"); return fun(opt, x); } inline NLOPT_EXTERN(nlopt_result) nlopt_set_initial_step(nlopt_opt opt, const double *dx) { static nlopt_result(*fun)(nlopt_opt, const double *) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, const double *)) R_GetCCallable("nloptr","nlopt_set_initial_step"); return fun(opt, dx); } inline NLOPT_EXTERN(nlopt_result) nlopt_set_initial_step1(nlopt_opt opt, double dx) { static nlopt_result(*fun)(nlopt_opt, double) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, double)) R_GetCCallable("nloptr","nlopt_set_initial_step1"); return fun(opt, dx); } inline NLOPT_EXTERN(nlopt_result) nlopt_get_initial_step(const nlopt_opt opt, const double *x, double *dx) { static nlopt_result(*fun)(const nlopt_opt, const double *, double *) = NULL; if (fun == NULL) fun = (nlopt_result(*)(const nlopt_opt, const double *, double *)) R_GetCCallable("nloptr","nlopt_get_initial_step"); return fun(opt, x, dx); } #endif /* __NLOPTRAPI_H__ */ nloptr/inst/CITATION0000644000176200001440000000150414636244620013711 0ustar liggesusersbibentry(bibtype = "Manual", header = paste("If you use NLopt in work that leads to a publication,", "we would appreciate it if you would kindly cite NLopt", "in your manuscript. Please cite both the NLopt library", "and the authors of the specific algorithm(s) that you", "employed in your work. Cite NLopt as:"), author = person(given = "Steven G.", family = "Johnson"), title = "The NLopt nonlinear-optimization package", year = "2008", url = "https://github.com/stevengj/nlopt", footer = paste("The authors and appropriate citations for the specific", "optimization algorithms in NLopt are listed in the", "NLopt Algorithms page.") ) nloptr/inst/doc/0000755000176200001440000000000014636312375013324 5ustar liggesusersnloptr/inst/doc/nloptr.html0000644000176200001440000016304214636312375015536 0ustar liggesusers nloptr

nloptr

Jelmer Ypma, Aymeric Stamm, and Avraham Adler

2024-06-24

This document is an introduction to nloptr: an R interface to NLopt. NLopt is a free/open-source library for nonlinear optimization, started by Steven G. Johnson, providing a common interface for a number of different free optimization routines available online as well as original implementations of various other algorithms. The NLopt library is available under the GNU Lesser General Public License (LGPL), and the copyrights are owned by a variety of authors. This package should be considered in beta and comments about any aspect of the package are welcome. This document is an R vignette prepared with the aid of knitr (Xie 2014, 2015, 2016). Financial support of the UK Economic and Social Research Council through a grant (RES-589-28-0001) to the ESRC Centre for Microdata Methods and Practice (CeMMAP) is gratefully acknowledged.

Introduction

NLopt addresses general nonlinear optimization problems of the form: \[ \begin{aligned} &\min_{x \in R^n} f(x) \\ s.t.& g(x) \leq 0 \\ & h(x) = 0 \\ & x_L \leq x \leq x_U \end{aligned} \]

where \(f(\cdot)\) is the objective function and \(x\) represents the \(n\) optimization parameters. This problem may optionally be subject to the bound constraints (also called box constraints), \(x_L\) and \(x_U\). For partially or totally unconstrained problems the bounds can take values \(-\infty\) or \(\infty\). One may also optionally have \(m\) nonlinear inequality constraints—sometimes called a nonlinear programming problem—which may be specified in \(g(\cdot)\), and equality constraints which may be specified in \(h(\cdot)\). Note that not all of the algorithms in NLopt can handle constraints.

This vignette describes how to formulate minimization problems to be solved with the R interface to NLopt. If you want to use the C interface directly or are interested in the Matlab interface, there are other sources of documentation available. Some of the information here has been taken from the NLopt website, where more details are available. All credit for implementing the C code for the different algorithms available in NLopt should go to the respective authors. Also, please see the website for information on how to cite NLopt and the algorithms you use.

Installation

This package is on CRAN and can be installed from within R using

install.packages("nloptr")

or

install.packages("nloptr", type = "source")

to install the package from source. You should now be able to load the R interface to NLopt and read the help.

library("nloptr")
?nloptr

The most recent experimental source version of nloptr can be installed from Github using the remotes package:

# install.packages("remotes")
remotes::install_github("astamm/nloptr")

Minimizing the Rosenbrock Banana function

As a first example we will solve an unconstrained minimization problem. The function we look at is the Rosenbrock Banana function: \[ f(x) = 100 \left(x_2-x_1^2\right)^2 + \left(1-x_1\right)^2, \]

which is also used as an example in the documentation for the standard R optimizer optim. The gradient of the objective function is given by: \[ \nabla f(x) = \left(\begin{array}[1]{c} -400 \cdot x_1 \cdot (x_2 - x_1^2) - 2 \cdot (1 - x_1) \\ 200 \cdot (x_2 - x_1^2) \end{array} \right). \]

Not all of the algorithms in NLopt need gradients to be supplied by the user. We will show examples with and without supplying the gradient. After loading the library.

library(nloptr)

We start by specifying the objective function and its gradient:

## Rosenbrock Banana function
eval_f <- function(x) {
  100 * (x[2] - x[1] * x[1]) ^ 2 + (1 - x[1]) ^ 2
}

## Gradient of Rosenbrock Banana function
eval_grad_f <- function(x) {
  c(-400 * x[1] * (x[2] - x[1] * x[1]) - 2 * (1 - x[1]),
    200 * (x[2] - x[1] * x[1]))
}

We define initial values

# initial values
x0 <- c(-1.2, 1)

and then minimize the function using the nloptr command. This command runs some checks on the supplied inputs and returns an object with the exit code of the solver, the optimal value of the objective function and the solution. Before we can minimize the function we need to specify which algorithm we want to use

opts <- list("algorithm" = "NLOPT_LD_LBFGS",
             "xtol_rel" = 1.0e-8)

Here we use the L-BFGS algorithm (Nocedal 1980; Liu and Nocedal 1989). The characters LD in the algorithm show that this algorithm looks for local minima (L) using a derivative-based (D) algorithm. Other algorithms look for global (G) minima, or they don’t need derivatives (N). We also specified the termination criterium in terms of the relative x-tolerance. Other termination criteria are available (see Appendix \ref{sec:descoptions} for a full list of options). We then solve the minimization problem using

# solve Rosenbrock Banana function
res <- nloptr(x0 = x0,
              eval_f = eval_f,
              eval_grad_f = eval_grad_f,
              opts = opts)

We can see the results by printing the resulting object.

print(res)
## 
## Call:
## 
## nloptr(x0 = x0, eval_f = eval_f, eval_grad_f = eval_grad_f, opts = opts)
## 
## 
## 
## Minimization using NLopt version 2.7.1 
## 
## NLopt solver status: 1 ( NLOPT_SUCCESS: Generic success 
## return value. )
## 
## Number of Iterations....: 56 
## Termination conditions:  xtol_rel: 1e-08 
## Number of inequality constraints:  0 
## Number of equality constraints:    0 
## Optimal value of objective function:  5.6213401034694e-23 
## Optimal value of controls: 1 1

Sometimes the objective function and its gradient contain common terms. To economize on calculations, we can return the objective and its gradient in a list. For the Rosenbrock Banana function we have for instance:

## Rosenbrock Banana function and gradient in one function
eval_f_list <- function(x) {
  common_term <- x[2] - x[1] * x[1]
  list("objective" = 100 * common_term ^ 2 + (1 - x[1]) ^ 2,
       "gradient"  = c(-400 * x[1] * common_term - 2 * (1 - x[1]),
                       200 * common_term))
}

which we minimize using

res <- nloptr(x0 = x0,
              eval_f = eval_f_list,
              opts = opts)
print(res)
## 
## Call:
## nloptr(x0 = x0, eval_f = eval_f_list, opts = opts)
## 
## 
## Minimization using NLopt version 2.7.1 
## 
## NLopt solver status: 1 ( NLOPT_SUCCESS: Generic success 
## return value. )
## 
## Number of Iterations....: 56 
## Termination conditions:  xtol_rel: 1e-08 
## Number of inequality constraints:  0 
## Number of equality constraints:    0 
## Optimal value of objective function:  5.6213401034694e-23 
## Optimal value of controls: 1 1

This gives the same results as before.

Minimization with inequality constraints

This section shows how to minimize a function subject to inequality constraints. This example is the same as the one used in the tutorial on the NLopt website. The problem we want to solve is:

\[ \begin{aligned} &\min_{x \in R^n} \sqrt{x_2} \\ s.t.& x_2 \geq 0 \\ & x_2 \geq (a_1 x_1 + b_1)^3 \\ & x_2 \geq (a_2 x_1 + b_2)^3, \end{aligned} \]

where \(a_1 = 2\), \(b_1 = 0\), \(a_2 = -1\), and \(b_2 = 1\). In order to solve this problem, we first have to re-formulate the constraints to be of the form \(g(x) \leq 0\). Note that the first constraint is a bound on \(x_2\), which we will add later. The other two constraints can be re-written as:

\[ \begin{aligned} (a_1 x_1 + b_1)^3 - x_2 &\leq 0 \\ (a_2 x_1 + b_2)^3 - x_2 &\leq 0 \end{aligned} \]

First, define R functions to calculate the objective function and its gradient:

# objective function
eval_f0 <- function(x, a, b) {
  sqrt(x[2])
}

# gradient of objective function
eval_grad_f0 <- function(x, a, b) {
  c(0, 0.5 / sqrt(x[2]))
}

If needed, these can of course be calculated in the same function as before. Then define the two constraints and the Jacobian of the constraints:

# constraint function
eval_g0 <- function(x, a, b) {
  (a * x[1] + b) ^ 3 - x[2]
}

# Jacobian of constraint
eval_jac_g0 <- function(x, a, b) {
  rbind(c(3 * a[1] * (a[1] * x[1] + b[1]) ^ 2, -1.0),
        c(3 * a[2] * (a[2] * x[1] + b[2]) ^ 2, -1.0))
}

Note that all of the functions above depend on additional parameters, a and b. We have to supply specific values for these when we invoke the optimization command. The constraint function eval_g0 returns a vector with in this case the same length as the vectors a and b. The function calculating the Jacobian of the constraint should return a matrix where the number of rows equal the number of constraints (in this case two). The number of columns should equal the number of control variables (two in this case as well).

After defining values for the parameters

# define parameters
a <- c(2, -1)
b <- c(0, 1)

we can minimize the function subject to the constraints with the following command:

# Solve using NLOPT_LD_MMA with gradient information supplied in separate
# function
res0 <- nloptr(x0 = c(1.234, 5.678),
               eval_f = eval_f0,
               eval_grad_f = eval_grad_f0,
               lb = c(-Inf, 0),
               ub = c(Inf, Inf),
               eval_g_ineq = eval_g0,
               eval_jac_g_ineq = eval_jac_g0,
               opts = list("algorithm" = "NLOPT_LD_MMA",
                           "xtol_rel" = 1.0e-8,
                           "print_level" = 2,
                           "check_derivatives" = TRUE,
                           "check_derivatives_print" = "all"),
               a = a,
               b = b)
## Checking gradients of objective function.
## Derivative checker results: 0 error(s) detected.
## 
##   eval_grad_f[1] = 0.000000e+00 ~ 0.000000e+00   [0.000000e+00]
##   eval_grad_f[2] = 2.098323e-01 ~ 2.098323e-01   [1.422937e-09]
## Checking gradients of inequality constraints.
## Derivative checker results: 0 error(s) detected.
## 
##   eval_jac_g_ineq[1, 1] =  3.654614e+01 ~  3.654614e+01   [1.667794e-08]
##   eval_jac_g_ineq[2, 1] = -1.642680e-01 ~ -1.642680e-01   [2.103453e-07]
##   eval_jac_g_ineq[1, 2] = -1.000000e+00 ~ -1.000000e+00   [0.000000e+00]
##   eval_jac_g_ineq[2, 2] = -1.000000e+00 ~ -1.000000e+00   [0.000000e+00]
## iteration: 1
##  f(x) = 2.382855
##  g(x) = (9.354647, -5.690813)
## iteration: 2
##  f(x) = 2.356135
##  g(x) = (-0.122988, -5.549587)
## iteration: 3
##  f(x) = 2.245864
##  g(x) = (-0.531886, -5.038655)
## iteration: 4
##  f(x) = 2.019102
##  g(x) = (-3.225103, -3.931195)
## iteration: 5
##  f(x) = 1.740934
##  g(x) = (-2.676263, -2.761136)
## iteration: 6
##  f(x) = 1.404206
##  g(x) = (-1.674056, -1.676216)
## iteration: 7
##  f(x) = 1.022295
##  g(x) = (-0.748790, -0.748792)
## iteration: 8
##  f(x) = 0.685203
##  g(x) = (-0.173206, -0.173207)
## iteration: 9
##  f(x) = 0.552985
##  g(x) = (-0.009496, -0.009496)
## iteration: 10
##  f(x) = 0.544354
##  g(x) = (-0.000025, -0.000025)
## iteration: 11
##  f(x) = 0.544331
##  g(x) = (0.000000, 0.000000)
## iteration: 12
##  f(x) = 0.544331
##  g(x) = (0.000000, 0.000000)
## iteration: 13
##  f(x) = 0.544331
##  g(x) = (0.000000, 0.000000)
## iteration: 14
##  f(x) = 0.544331
##  g(x) = (0.000000, 0.000000)
## iteration: 15
##  f(x) = 0.544331
##  g(x) = (0.000000, 0.000000)
## iteration: 16
##  f(x) = 0.544331
##  g(x) = (0.000000, 0.000000)
## iteration: 17
##  f(x) = 0.544331
##  g(x) = (0.000000, 0.000000)
## iteration: 18
##  f(x) = 0.544331
##  g(x) = (0.000000, 0.000000)
print(res0)
## 
## Call:
## 
## nloptr(x0 = c(1.234, 5.678), eval_f = eval_f0, eval_grad_f = eval_grad_f0, 
##     lb = c(-Inf, 0), ub = c(Inf, Inf), eval_g_ineq = eval_g0, 
##     eval_jac_g_ineq = eval_jac_g0, opts = list(algorithm = "NLOPT_LD_MMA", 
##         xtol_rel = 1e-08, print_level = 2, check_derivatives = TRUE, 
##         check_derivatives_print = "all"), a = a, b = b)
## 
## 
## Minimization using NLopt version 2.7.1 
## 
## NLopt solver status: 4 ( NLOPT_XTOL_REACHED: Optimization 
## stopped because xtol_rel or xtol_abs (above) was reached. 
## )
## 
## Number of Iterations....: 18 
## Termination conditions:  xtol_rel: 1e-08 
## Number of inequality constraints:  2 
## Number of equality constraints:    0 
## Optimal value of objective function:  0.544331047591509 
## Optimal value of controls: 0.3333333 0.2962963

Here we supplied lower bounds for \(x_2\) in lb. There are no upper bounds for both control variables, so we supply Inf values. If we don’t supply lower or upper bounds, plus or minus infinity is chosen by default. The inequality constraints and its Jacobian are defined using eval_g_ineq and eval_jac_g_ineq. Not all algorithms can handle inequality constraints, so we have to specify one that does, NLOPT_LD_MMA (Svanberg 2002).

We also specify the option print_level to obtain output during the optimization process. For the available print_level values, see ?nloptr. Setting the check_derivatives option to TRUE, compares the gradients supplied by the user with a finite difference approximation in the initial point (x0). When this check is run, the option check_derivatives_print can be used to print all values of the derivative checker (all (default)), only those values that result in an error (errors) or no output (none), in which case only the number of errors is shown. The tolerance that determines if a difference between the analytic gradient and the finite difference approximation results in an error can be set using the option check_derivatives_tol (default = 1e-04). The first column shows the value of the analytic gradient, the second column shows the value of the finite difference approximation, and the third column shows the relative error. Stars are added at the front of a line if the relative error is larger than the specified tolerance.

Finally, we add all the parameters that have to be passed on to the objective and constraint functions, a and b.

We can also use a different algorithm to solve the same minimization problem. The only thing we have to change is the algorithm that we want to use, in this case NLOPT_LN_COBYLA, which is an algorithm that doesn’t need gradient information (Powell 1994, 1998).

# Solve using NLOPT_LN_COBYLA without gradient information
res1 <- nloptr(x0 = c(1.234, 5.678),
               eval_f = eval_f0,
               lb = c(-Inf, 0),
               ub = c(Inf, Inf),
               eval_g_ineq = eval_g0,
               opts = list("algorithm" = "NLOPT_LN_COBYLA",
                           "xtol_rel" = 1.0e-8),
               a = a,
               b = b)
print(res1)
## 
## Call:
## 
## nloptr(x0 = c(1.234, 5.678), eval_f = eval_f0, lb = c(-Inf, 0), 
##     ub = c(Inf, Inf), eval_g_ineq = eval_g0, opts = list(algorithm = "NLOPT_LN_COBYLA", 
##         xtol_rel = 1e-08), a = a, b = b)
## 
## 
## Minimization using NLopt version 2.7.1 
## 
## NLopt solver status: 4 ( NLOPT_XTOL_REACHED: Optimization 
## stopped because xtol_rel or xtol_abs (above) was reached. 
## )
## 
## Number of Iterations....: 50 
## Termination conditions:  xtol_rel: 1e-08 
## Number of inequality constraints:  2 
## Number of equality constraints:    0 
## Optimal value of objective function:  0.544331053951819 
## Optimal value of controls: 0.3333333 0.2962963

Derivative checker

The derivative checker can be called when supplying a minimization problem to nloptr, using the options check_derivatives, check_derivatives_tol and check_derivatives_print, but it can also be used separately. For example, define the function g, with vector outcome, and its gradient g_grad:

g <- function(x, a) {
  c(x[1] - a[1],
    x[2] - a[2],
    (x[1] - a[1]) ^ 2,
    (x[2] - a[2]) ^ 2,
    (x[1] - a[1]) ^ 3,
    (x[2] - a[2]) ^ 3)
}

g_grad <- function(x, a) {
  rbind(
    c(1, 0),
    c(0, 1),
    c(2 * (x[1] - a[1]), 0),
    c(2 * (x[1] - a[1]), 2 * (x[2] - a[2])),
    c(3 * (x[1] - a[2]) ^ 2, 0),
    c(0, 3 * (x[2] - a[2]) ^ 2)
  )
}

a is some vector containing data. The gradient contains some errors in this case. By calling the function check.derivatives we can check the user-supplied analytic gradients with a finite difference approximation at a point .x.

res <- check.derivatives(
  .x = c(1, 2),
  func = g,
  func_grad = g_grad,
  check_derivatives_print = "all",
  a = c(0.3, 0.8)
)
## Derivative checker results: 2 error(s) detected.
## 
##   grad_f[1, 1] = 1.00e+00 ~ 1.00e+00   [0.000000e+00]
##   grad_f[2, 1] = 0.00e+00 ~ 0.00e+00   [0.000000e+00]
##   grad_f[3, 1] = 1.40e+00 ~ 1.40e+00   [9.579318e-09]
## * grad_f[4, 1] = 1.40e+00 ~ 0.00e+00   [1.400000e+00]
## * grad_f[5, 1] = 1.20e-01 ~ 1.47e+00   [9.183673e-01]
##   grad_f[6, 1] = 0.00e+00 ~ 0.00e+00   [0.000000e+00]
##   grad_f[1, 2] = 0.00e+00 ~ 0.00e+00   [0.000000e+00]
##   grad_f[2, 2] = 1.00e+00 ~ 1.00e+00   [0.000000e+00]
##   grad_f[3, 2] = 0.00e+00 ~ 0.00e+00   [0.000000e+00]
##   grad_f[4, 2] = 2.40e+00 ~ 2.40e+00   [1.179675e-08]
##   grad_f[5, 2] = 0.00e+00 ~ 0.00e+00   [0.000000e+00]
##   grad_f[6, 2] = 4.32e+00 ~ 4.32e+00   [2.593906e-08]

The errors are shown on screen, where the option check_derivatives_print determines the amount of output you see. The value of the analytic gradient and the value of the finite difference approximation at the supplied point is returned in a list.

res
## $analytic
##      [,1] [,2]
## [1,] 1.00 0.00
## [2,] 0.00 1.00
## [3,] 1.40 0.00
## [4,] 1.40 2.40
## [5,] 0.12 0.00
## [6,] 0.00 4.32
## 
## $finite_difference
##      [,1] [,2]
## [1,] 1.00 0.00
## [2,] 0.00 1.00
## [3,] 1.40 0.00
## [4,] 0.00 2.40
## [5,] 1.47 0.00
## [6,] 0.00 4.32
## 
## $relative_error
##              [,1]         [,2]
## [1,] 0.000000e+00 0.000000e+00
## [2,] 0.000000e+00 0.000000e+00
## [3,] 9.579318e-09 0.000000e+00
## [4,] 1.400000e+00 1.179675e-08
## [5,] 9.183673e-01 0.000000e+00
## [6,] 0.000000e+00 2.593906e-08
## 
## $flag_derivative_warning
##       [,1]  [,2]
## [1,] FALSE FALSE
## [2,] FALSE FALSE
## [3,] FALSE FALSE
## [4,]  TRUE FALSE
## [5,]  TRUE FALSE
## [6,] FALSE FALSE

Note that not all errors will be picked up by the derivative checker. For instance, if we run the check with a = c(.5, .5), one of the errors is not flagged as an error.

Notes

The .R scripts in the tests directory contain more examples. For instance, hs071.R and systemofeq.R show how to solve problems with equality constraints. See the NLopt website for more details. Please let us know if there are any of features implemented in NLopt which should be implemented in nloptr.

Sometimes the optimization procedure terminates with a message maxtime was reached without evaluating the objective function. Submitting the same problem again usually solves this problem.

Description of options

nloptr::nloptr.print.options()
## algorithm
##  possible values: NLOPT_GN_DIRECT, NLOPT_GN_DIRECT_L,
##           NLOPT_GN_DIRECT_L_RAND, NLOPT_GN_DIRECT_NOSCAL,
##           NLOPT_GN_DIRECT_L_NOSCAL,
##           NLOPT_GN_DIRECT_L_RAND_NOSCAL,
##           NLOPT_GN_ORIG_DIRECT, NLOPT_GN_ORIG_DIRECT_L,
##           NLOPT_GD_STOGO, NLOPT_GD_STOGO_RAND,
##           NLOPT_LD_SLSQP, NLOPT_LD_LBFGS_NOCEDAL,
##           NLOPT_LD_LBFGS, NLOPT_LN_PRAXIS, NLOPT_LD_VAR1,
##           NLOPT_LD_VAR2, NLOPT_LD_TNEWTON,
##           NLOPT_LD_TNEWTON_RESTART,
##           NLOPT_LD_TNEWTON_PRECOND,
##           NLOPT_LD_TNEWTON_PRECOND_RESTART,
##           NLOPT_GN_CRS2_LM, NLOPT_GN_MLSL, NLOPT_GD_MLSL,
##           NLOPT_GN_MLSL_LDS, NLOPT_GD_MLSL_LDS,
##           NLOPT_LD_MMA, NLOPT_LD_CCSAQ, NLOPT_LN_COBYLA,
##           NLOPT_LN_NEWUOA, NLOPT_LN_NEWUOA_BOUND,
##           NLOPT_LN_NELDERMEAD, NLOPT_LN_SBPLX,
##           NLOPT_LN_AUGLAG, NLOPT_LD_AUGLAG,
##           NLOPT_LN_AUGLAG_EQ, NLOPT_LD_AUGLAG_EQ,
##           NLOPT_LN_BOBYQA, NLOPT_GN_ISRES
##  default value:   none
## 
##  This option is required. Check the NLopt website for a description of
##  the algorithms.
## 
## stopval
##  possible values: -Inf <= stopval <= Inf
##  default value:   -Inf
## 
##  Stop minimization when an objective value <= stopval is found.
##  Setting stopval to -Inf disables this stopping criterion (default).
## 
## ftol_rel
##  possible values: ftol_rel > 0
##  default value:   0.0
## 
##  Stop when an optimization step (or an estimate of the optimum)
##  changes the objective function value by less than ftol_rel multiplied
##  by the absolute value of the function value. If there is any chance
##  that your optimum function value is close to zero, you might want to
##  set an absolute tolerance with ftol_abs as well. Criterion is
##  disabled if ftol_rel is non-positive (default).
## 
## ftol_abs
##  possible values: ftol_abs > 0
##  default value:   0.0
## 
##  Stop when an optimization step (or an estimate of the optimum)
##  changes the function value by less than ftol_abs. Criterion is
##  disabled if ftol_abs is non-positive (default).
## 
## xtol_rel
##  possible values: xtol_rel > 0
##  default value:   1.0e-04
## 
##  Stop when an optimization step (or an estimate of the optimum)
##  changes every parameter by less than xtol_rel multiplied by the
##  absolute value of the parameter. If there is any chance that an
##  optimal parameter is close to zero, you might want to set an absolute
##  tolerance with xtol_abs as well. Criterion is disabled if xtol_rel is
##  non-positive.
## 
## xtol_abs
##  possible values: xtol_abs > 0
##  default value:   rep(0.0, length(x0))
## 
##  xtol_abs is a vector of length n (the number of elements in x) giving
##  the tolerances: stop when an optimization step (or an estimate of the
##  optimum) changes every parameter x[i] by less than xtol_abs[i].
##  Criterion is disabled if all elements of xtol_abs are non-positive
##  (default).
## 
## maxeval
##  possible values: maxeval is a positive integer
##  default value:   100
## 
##  Stop when the number of function evaluations exceeds maxeval. This is
##  not a strict maximum: the number of function evaluations may exceed
##  maxeval slightly, depending upon the algorithm. Criterion is disabled
##  if maxeval is non-positive.
## 
## maxtime
##  possible values: maxtime > 0
##  default value:   -1.0
## 
##  Stop when the optimization time (in seconds) exceeds maxtime. This is
##  not a strict maximum: the time may exceed maxtime slightly, depending
##  upon the algorithm and on how slow your function evaluation is.
##  Criterion is disabled if maxtime is non-positive (default).
## 
## tol_constraints_ineq
##  possible values: tol_constraints_ineq > 0.0
##  default value:   rep(1e-8, num_constraints_ineq)
## 
##  The parameter tol_constraints_ineq is a vector of tolerances. Each
##  tolerance corresponds to one of the inequality constraints. The
##  tolerance is used for the purpose of stopping criteria only: a point
##  x is considered feasible for judging whether to stop the optimization
##  if eval_g_ineq(x) <= tol. A tolerance of zero means that NLopt will
##  try not to consider any x to be converged unless eval_g_ineq(x) is
##  strictly non-positive; generally, at least a small positive tolerance
##  is advisable to reduce sensitivity to rounding errors. By default the
##  tolerances for all inequality constraints are set to 1e-8.
## 
## tol_constraints_eq
##  possible values: tol_constraints_eq > 0.0
##  default value:   rep(1e-8, num_constraints_eq)
## 
##  The parameter tol_constraints_eq is a vector of tolerances. Each
##  tolerance corresponds to one of the equality constraints. The
##  tolerance is used for the purpose of stopping criteria only: a point
##  x is considered feasible for judging whether to stop the optimization
##  if abs(eval_g_ineq(x)) <= tol. For equality constraints, a small
##  positive tolerance is strongly advised in order to allow NLopt to
##  converge even if the equality constraint is slightly nonzero. By
##  default the tolerances for all quality constraints are set to 1e-8.
## 
## print_level
##  possible values: 0, 1, 2, or 3
##  default value:   0
## 
##  The option print_level controls how much output is shown during the
##  optimization process. Possible values: 0 (default): no output; 1:
##  show iteration number and value of objective function; 2: 1 + show
##  value of (in)equalities; 3: 2 + show value of controls.
## 
## check_derivatives
##  possible values: TRUE or FALSE
##  default value:   FALSE
## 
##  The option check_derivatives can be activated to compare the
##  user-supplied analytic gradients with finite difference
##  approximations.
## 
## check_derivatives_tol
##  possible values: check_derivatives_tol > 0.0
##  default value:   1e-04
## 
##  The option check_derivatives_tol determines when a difference between
##  an analytic gradient and its finite difference approximation is
##  flagged as an error.
## 
## check_derivatives_print
##  possible values: 'none', 'all', 'errors',
##  default value:   all
## 
##  The option check_derivatives_print controls the output of the
##  derivative checker (if check_derivatives == TRUE). All comparisons
##  are shown ('all'), only those comparisions that resulted in an error
##  ('error'), or only the number of errors is shown ('none').
## 
## print_options_doc
##  possible values: TRUE or FALSE
##  default value:   FALSE
## 
##  If TRUE, a description of all options and their current and default
##  values is printed to the screen.
## 
## population
##  possible values: population is a positive integer
##  default value:   0
## 
##  Several of the stochastic search algorithms (e.g., CRS, MLSL, and
##  ISRES) start by generating some initial population of random points
##  x. By default, this initial population size is chosen heuristically
##  in some algorithm-specific way, but the initial population can by
##  changed by setting a positive integer value for population. A
##  population of zero implies that the heuristic default will be used.
## 
## vector_storage
##  possible values: vector_storage is a positive integer
##  default value:   20
## 
##  Number of gradients to remember from previous optimization steps.
## 
## ranseed
##  possible values: ranseed is a positive integer
##  default value:   0
## 
##  For stochastic optimization algorithms, pseudorandom numbers are
##  generated. Set the random seed using ranseed if you want to use a
##  'deterministic' sequence of pseudorandom numbers, i.e. the same
##  sequence from run to run. If ranseed is 0 (default), the seed for the
##  random numbers is generated from the system time, so that you will
##  get a different sequence of pseudorandom numbers each time you run
##  your program.

References

Johnson, Steven G. n.d. “The NLopt Nonlinear-Optimization Package.” https://nlopt.readthedocs.io/en/latest/.
Liu, D. C., and J. Nocedal. 1989. “On the Limited Memory BFGS Method for Large Scale Optimization.” Math. Programming 45: 503–28.
Nocedal, J. 1980. “Updating Quasi-Newton Matrices with Limited Storage.” Math. Comput. 35: 773–82.
Powell, M. J. D. 1994. “A Direct Search Optimization Method That Models the Objective and Constraint Functions by Linear Interpolation.” In Advances in Optimization and Numerical Analysis, edited by S. Gomez and J.-P. Hennart, 51–67. Kluwer Academic, Dordrecht.
———. 1998. “Direct Search Algorithms for Optimization Calculations.” Acta Numerica 7: 287–336.
Svanberg, Krister. 2002. “A Class of Globally Convergent Optimization Methods Based on Conservative Convex Separable Approximations.” SIAM J. Optim. 12 (2): 555–73.
Xie, Yihui. 2014. “Knitr: A Comprehensive Tool for Reproducible Research in R.” In Implementing Reproducible Computational Research, edited by Victoria Stodden, Friedrich Leisch, and Roger D. Peng. Chapman; Hall/CRC. https://www.routledge.com/Implementing-Reproducible-Research/Stodden-Leisch-Peng/p/book/9781466561595.
———. 2015. Dynamic Documents with R and Knitr. 2nd ed. Boca Raton, Florida: Chapman; Hall/CRC. https://yihui.org/knitr/.
———. 2016. Knitr: A General-Purpose Package for Dynamic Report Generation in r. https://yihui.org/knitr/.
nloptr/inst/doc/nloptr.Rmd0000644000176200001440000003406314636244620015311 0ustar liggesusers--- title: "nloptr" author: "Jelmer Ypma, Aymeric Stamm, and Avraham Adler" date: "`r Sys.Date()`" output: rmarkdown::html_vignette bibliography: reflist.bib nocite: | @NLopt:website vignette: > %\VignetteIndexEntry{nloptr} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r setSweaveOptions,echo=FALSE} # have an (invisible) initialization noweb chunk # to remove the default continuation prompt ">" options(continue = " ") options(width = 60) # eliminate margin space above plots options(SweaveHooks = list(fig = function() par(mar = c(5.1, 4.1, 1.1, 2.1)))) ``` This document is an introduction to `nloptr`: an R interface to NLopt. [NLopt](https://nlopt.readthedocs.io/en/latest/) is a free/open-source library for nonlinear optimization, started by Steven G. Johnson, providing a common interface for a number of different free optimization routines available online as well as original implementations of various other algorithms. The NLopt library is available under the GNU Lesser General Public License (LGPL), and the copyrights are owned by a variety of authors. This package should be considered in beta and comments about any aspect of the package are welcome. This document is an R vignette prepared with the aid of `knitr` [@Xie:2014; @Xie:2015; @Xie:2016]. Financial support of the UK Economic and Social Research Council through a grant (RES-589-28-0001) to the ESRC Centre for Microdata Methods and Practice (CeMMAP) is gratefully acknowledged. ## Introduction NLopt addresses general nonlinear optimization problems of the form: $$ \begin{aligned} &\min_{x \in R^n} f(x) \\ s.t.& g(x) \leq 0 \\ & h(x) = 0 \\ & x_L \leq x \leq x_U \end{aligned} $$ where $f(\cdot)$ is the objective function and $x$ represents the $n$ optimization parameters. This problem may optionally be subject to the bound constraints (also called box constraints), $x_L$ and $x_U$. For partially or totally unconstrained problems the bounds can take values $-\infty$ or $\infty$. One may also optionally have $m$ nonlinear inequality constraints---sometimes called a nonlinear programming problem---which may be specified in $g(\cdot)$, and equality constraints which may be specified in $h(\cdot)$. Note that not all of the algorithms in NLopt can handle constraints. This vignette describes how to formulate minimization problems to be solved with the R interface to NLopt. If you want to use the C interface directly or are interested in the Matlab interface, there are other sources of documentation available. Some of the information here has been taken from the NLopt website, where more details are available. All credit for implementing the C code for the different algorithms available in NLopt should go to the respective authors. Also, please see the [website](https://nlopt.readthedocs.io/en/latest/Citing_NLopt/) for information on how to cite NLopt and the algorithms you use. ## Installation This package is on CRAN and can be installed from within R using ```{r installNLopt, eval=FALSE} install.packages("nloptr") ``` or ```{r installNLoptSource, eval=FALSE} install.packages("nloptr", type = "source") ``` to install the package from source. You should now be able to load the R interface to NLopt and read the help. ```{r testNLoptInstallation, eval=FALSE} library("nloptr") ?nloptr ``` The most recent experimental *source* version of `nloptr` can be installed from Github using the `remotes` package: ```{r installNLoptGithub, eval=FALSE} # install.packages("remotes") remotes::install_github("astamm/nloptr") ``` ## Minimizing the Rosenbrock Banana function As a first example we will solve an unconstrained minimization problem. The function we look at is the Rosenbrock Banana function: $$ f(x) = 100 \left(x_2-x_1^2\right)^2 + \left(1-x_1\right)^2, $$ which is also used as an example in the documentation for the standard R optimizer `optim`. The gradient of the objective function is given by: $$ \nabla f(x) = \left(\begin{array}[1]{c} -400 \cdot x_1 \cdot (x_2 - x_1^2) - 2 \cdot (1 - x_1) \\ 200 \cdot (x_2 - x_1^2) \end{array} \right). $$ Not all of the algorithms in NLopt need gradients to be supplied by the user. We will show examples with and without supplying the gradient. After loading the library. ```{r loadLibrary} library(nloptr) ``` We start by specifying the objective function and its gradient: ```{r defineRosenbrockBanana} ## Rosenbrock Banana function eval_f <- function(x) { 100 * (x[2] - x[1] * x[1]) ^ 2 + (1 - x[1]) ^ 2 } ## Gradient of Rosenbrock Banana function eval_grad_f <- function(x) { c(-400 * x[1] * (x[2] - x[1] * x[1]) - 2 * (1 - x[1]), 200 * (x[2] - x[1] * x[1])) } ``` We define initial values ```{r setRosenbrockBananaInitialValues} # initial values x0 <- c(-1.2, 1) ``` and then minimize the function using the `nloptr` command. This command runs some checks on the supplied inputs and returns an object with the exit code of the solver, the optimal value of the objective function and the solution. Before we can minimize the function we need to specify which algorithm we want to use ```{r setRosenbrockBananaOptions} opts <- list("algorithm" = "NLOPT_LD_LBFGS", "xtol_rel" = 1.0e-8) ``` Here we use the L-BFGS algorithm [@Nocedal:1980; @LiuNocedal:1989]. The characters `LD` in the algorithm show that this algorithm looks for local minima (`L`) using a derivative-based (`D`) algorithm. Other algorithms look for global (`G`) minima, or they don't need derivatives (`N`). We also specified the termination criterium in terms of the relative x-tolerance. Other termination criteria are available (see Appendix `\ref{sec:descoptions}` for a full list of options). We then solve the minimization problem using ```{r solveRosenbrockBanana} # solve Rosenbrock Banana function res <- nloptr(x0 = x0, eval_f = eval_f, eval_grad_f = eval_grad_f, opts = opts) ``` We can see the results by printing the resulting object. ```{r printRosenbrockBanana} print(res) ``` Sometimes the objective function and its gradient contain common terms. To economize on calculations, we can return the objective and its gradient in a list. For the Rosenbrock Banana function we have for instance: ```{r defineRosenbrockBananaList} ## Rosenbrock Banana function and gradient in one function eval_f_list <- function(x) { common_term <- x[2] - x[1] * x[1] list("objective" = 100 * common_term ^ 2 + (1 - x[1]) ^ 2, "gradient" = c(-400 * x[1] * common_term - 2 * (1 - x[1]), 200 * common_term)) } ``` which we minimize using ```{r solveRosenbrockBananaList} res <- nloptr(x0 = x0, eval_f = eval_f_list, opts = opts) print(res) ``` This gives the same results as before. ## Minimization with inequality constraints This section shows how to minimize a function subject to inequality constraints. This example is the same as the one used in the tutorial on the NLopt website. The problem we want to solve is: $$ \begin{aligned} &\min_{x \in R^n} \sqrt{x_2} \\ s.t.& x_2 \geq 0 \\ & x_2 \geq (a_1 x_1 + b_1)^3 \\ & x_2 \geq (a_2 x_1 + b_2)^3, \end{aligned} $$ where $a_1 = 2$, $b_1 = 0$, $a_2 = -1$, and $b_2 = 1$. In order to solve this problem, we first have to re-formulate the constraints to be of the form $g(x) \leq 0$. Note that the first constraint is a bound on $x_2$, which we will add later. The other two constraints can be re-written as: $$ \begin{aligned} (a_1 x_1 + b_1)^3 - x_2 &\leq 0 \\ (a_2 x_1 + b_2)^3 - x_2 &\leq 0 \end{aligned} $$ First, define R functions to calculate the objective function and its gradient: ```{r defineTutorialObjective} # objective function eval_f0 <- function(x, a, b) { sqrt(x[2]) } # gradient of objective function eval_grad_f0 <- function(x, a, b) { c(0, 0.5 / sqrt(x[2])) } ``` If needed, these can of course be calculated in the same function as before. Then define the two constraints and the Jacobian of the constraints: ```{r defineTutorialConstraints} # constraint function eval_g0 <- function(x, a, b) { (a * x[1] + b) ^ 3 - x[2] } # Jacobian of constraint eval_jac_g0 <- function(x, a, b) { rbind(c(3 * a[1] * (a[1] * x[1] + b[1]) ^ 2, -1.0), c(3 * a[2] * (a[2] * x[1] + b[2]) ^ 2, -1.0)) } ``` Note that all of the functions above depend on additional parameters, `a` and `b`. We have to supply specific values for these when we invoke the optimization command. The constraint function `eval_g0` returns a vector with in this case the same length as the vectors `a` and `b`. The function calculating the Jacobian of the constraint should return a matrix where the number of rows equal the number of constraints (in this case two). The number of columns should equal the number of control variables (two in this case as well). After defining values for the parameters ```{r defineTutorialParameters} # define parameters a <- c(2, -1) b <- c(0, 1) ``` we can minimize the function subject to the constraints with the following command: ```{r solveTutorialWithGradient} # Solve using NLOPT_LD_MMA with gradient information supplied in separate # function res0 <- nloptr(x0 = c(1.234, 5.678), eval_f = eval_f0, eval_grad_f = eval_grad_f0, lb = c(-Inf, 0), ub = c(Inf, Inf), eval_g_ineq = eval_g0, eval_jac_g_ineq = eval_jac_g0, opts = list("algorithm" = "NLOPT_LD_MMA", "xtol_rel" = 1.0e-8, "print_level" = 2, "check_derivatives" = TRUE, "check_derivatives_print" = "all"), a = a, b = b) print(res0) ``` Here we supplied lower bounds for $x_2$ in `lb`. There are no upper bounds for both control variables, so we supply `Inf` values. If we don't supply lower or upper bounds, plus or minus infinity is chosen by default. The inequality constraints and its Jacobian are defined using `eval_g_ineq` and `eval_jac_g_ineq`. Not all algorithms can handle inequality constraints, so we have to specify one that does, `NLOPT_LD_MMA` [@Svanberg:2002]. We also specify the option `print_level` to obtain output during the optimization process. For the available `print_level` values, see `?nloptr`. Setting the `check_derivatives` option to `TRUE`, compares the gradients supplied by the user with a finite difference approximation in the initial point (`x0`). When this check is run, the option `check_derivatives_print` can be used to print all values of the derivative checker (`all` (default)), only those values that result in an error (`errors`) or no output (`none`), in which case only the number of errors is shown. The tolerance that determines if a difference between the analytic gradient and the finite difference approximation results in an error can be set using the option `check_derivatives_tol` (default = 1e-04). The first column shows the value of the analytic gradient, the second column shows the value of the finite difference approximation, and the third column shows the relative error. Stars are added at the front of a line if the relative error is larger than the specified tolerance. Finally, we add all the parameters that have to be passed on to the objective and constraint functions, `a` and `b`. We can also use a different algorithm to solve the same minimization problem. The only thing we have to change is the algorithm that we want to use, in this case `NLOPT_LN_COBYLA`, which is an algorithm that doesn't need gradient information [@Powell:1994; @Powell:1998]. ```{r solveTutorialWithoutGradient} # Solve using NLOPT_LN_COBYLA without gradient information res1 <- nloptr(x0 = c(1.234, 5.678), eval_f = eval_f0, lb = c(-Inf, 0), ub = c(Inf, Inf), eval_g_ineq = eval_g0, opts = list("algorithm" = "NLOPT_LN_COBYLA", "xtol_rel" = 1.0e-8), a = a, b = b) print(res1) ``` ## Derivative checker The derivative checker can be called when supplying a minimization problem to `nloptr`, using the options `check_derivatives`, `check_derivatives_tol` and `check_derivatives_print`, but it can also be used separately. For example, define the function `g`, with vector outcome, and its gradient `g_grad`: ```{r derivativeCheckerDefineFunctions} g <- function(x, a) { c(x[1] - a[1], x[2] - a[2], (x[1] - a[1]) ^ 2, (x[2] - a[2]) ^ 2, (x[1] - a[1]) ^ 3, (x[2] - a[2]) ^ 3) } g_grad <- function(x, a) { rbind( c(1, 0), c(0, 1), c(2 * (x[1] - a[1]), 0), c(2 * (x[1] - a[1]), 2 * (x[2] - a[2])), c(3 * (x[1] - a[2]) ^ 2, 0), c(0, 3 * (x[2] - a[2]) ^ 2) ) } ``` `a` is some vector containing data. The gradient contains some errors in this case. By calling the function `check.derivatives` we can check the user-supplied analytic gradients with a finite difference approximation at a point `.x`. ```{r derivativeCheckerPrint} res <- check.derivatives( .x = c(1, 2), func = g, func_grad = g_grad, check_derivatives_print = "all", a = c(0.3, 0.8) ) ``` The errors are shown on screen, where the option `check_derivatives_print` determines the amount of output you see. The value of the analytic gradient and the value of the finite difference approximation at the supplied point is returned in a list. ```{r derivativeCheckerResult} res ``` Note that not all errors will be picked up by the derivative checker. For instance, if we run the check with `a = c(.5, .5)`, one of the errors is not flagged as an error. ## Notes The `.R` scripts in the `tests` directory contain more examples. For instance, `hs071.R` and `systemofeq.R` show how to solve problems with equality constraints. See the [NLopt website](https://nlopt.readthedocs.io/en/latest/NLopt_Algorithms/#augmented-lagrangian-algorithm) for more details. Please let us know if there are any of features implemented in NLopt which should be implemented in `nloptr`. Sometimes the optimization procedure terminates with a message `maxtime was reached` without evaluating the objective function. Submitting the same problem again usually solves this problem. ## Description of options ```{r printAllOptions} nloptr::nloptr.print.options() ``` ## References nloptr/inst/doc/nloptr.R0000644000176200001440000001133214636312375014765 0ustar liggesusers## ----setSweaveOptions,echo=FALSE-------------------------- # have an (invisible) initialization noweb chunk # to remove the default continuation prompt ">" options(continue = " ") options(width = 60) # eliminate margin space above plots options(SweaveHooks = list(fig = function() par(mar = c(5.1, 4.1, 1.1, 2.1)))) ## ----installNLopt, eval=FALSE----------------------------- # install.packages("nloptr") ## ----installNLoptSource, eval=FALSE----------------------- # install.packages("nloptr", type = "source") ## ----testNLoptInstallation, eval=FALSE-------------------- # library("nloptr") # ?nloptr ## ----installNLoptGithub, eval=FALSE----------------------- # # install.packages("remotes") # remotes::install_github("astamm/nloptr") ## ----loadLibrary------------------------------------------ library(nloptr) ## ----defineRosenbrockBanana------------------------------- ## Rosenbrock Banana function eval_f <- function(x) { 100 * (x[2] - x[1] * x[1]) ^ 2 + (1 - x[1]) ^ 2 } ## Gradient of Rosenbrock Banana function eval_grad_f <- function(x) { c(-400 * x[1] * (x[2] - x[1] * x[1]) - 2 * (1 - x[1]), 200 * (x[2] - x[1] * x[1])) } ## ----setRosenbrockBananaInitialValues--------------------- # initial values x0 <- c(-1.2, 1) ## ----setRosenbrockBananaOptions--------------------------- opts <- list("algorithm" = "NLOPT_LD_LBFGS", "xtol_rel" = 1.0e-8) ## ----solveRosenbrockBanana-------------------------------- # solve Rosenbrock Banana function res <- nloptr(x0 = x0, eval_f = eval_f, eval_grad_f = eval_grad_f, opts = opts) ## ----printRosenbrockBanana-------------------------------- print(res) ## ----defineRosenbrockBananaList--------------------------- ## Rosenbrock Banana function and gradient in one function eval_f_list <- function(x) { common_term <- x[2] - x[1] * x[1] list("objective" = 100 * common_term ^ 2 + (1 - x[1]) ^ 2, "gradient" = c(-400 * x[1] * common_term - 2 * (1 - x[1]), 200 * common_term)) } ## ----solveRosenbrockBananaList---------------------------- res <- nloptr(x0 = x0, eval_f = eval_f_list, opts = opts) print(res) ## ----defineTutorialObjective------------------------------ # objective function eval_f0 <- function(x, a, b) { sqrt(x[2]) } # gradient of objective function eval_grad_f0 <- function(x, a, b) { c(0, 0.5 / sqrt(x[2])) } ## ----defineTutorialConstraints---------------------------- # constraint function eval_g0 <- function(x, a, b) { (a * x[1] + b) ^ 3 - x[2] } # Jacobian of constraint eval_jac_g0 <- function(x, a, b) { rbind(c(3 * a[1] * (a[1] * x[1] + b[1]) ^ 2, -1.0), c(3 * a[2] * (a[2] * x[1] + b[2]) ^ 2, -1.0)) } ## ----defineTutorialParameters----------------------------- # define parameters a <- c(2, -1) b <- c(0, 1) ## ----solveTutorialWithGradient---------------------------- # Solve using NLOPT_LD_MMA with gradient information supplied in separate # function res0 <- nloptr(x0 = c(1.234, 5.678), eval_f = eval_f0, eval_grad_f = eval_grad_f0, lb = c(-Inf, 0), ub = c(Inf, Inf), eval_g_ineq = eval_g0, eval_jac_g_ineq = eval_jac_g0, opts = list("algorithm" = "NLOPT_LD_MMA", "xtol_rel" = 1.0e-8, "print_level" = 2, "check_derivatives" = TRUE, "check_derivatives_print" = "all"), a = a, b = b) print(res0) ## ----solveTutorialWithoutGradient------------------------- # Solve using NLOPT_LN_COBYLA without gradient information res1 <- nloptr(x0 = c(1.234, 5.678), eval_f = eval_f0, lb = c(-Inf, 0), ub = c(Inf, Inf), eval_g_ineq = eval_g0, opts = list("algorithm" = "NLOPT_LN_COBYLA", "xtol_rel" = 1.0e-8), a = a, b = b) print(res1) ## ----derivativeCheckerDefineFunctions--------------------- g <- function(x, a) { c(x[1] - a[1], x[2] - a[2], (x[1] - a[1]) ^ 2, (x[2] - a[2]) ^ 2, (x[1] - a[1]) ^ 3, (x[2] - a[2]) ^ 3) } g_grad <- function(x, a) { rbind( c(1, 0), c(0, 1), c(2 * (x[1] - a[1]), 0), c(2 * (x[1] - a[1]), 2 * (x[2] - a[2])), c(3 * (x[1] - a[2]) ^ 2, 0), c(0, 3 * (x[2] - a[2]) ^ 2) ) } ## ----derivativeCheckerPrint------------------------------- res <- check.derivatives( .x = c(1, 2), func = g, func_grad = g_grad, check_derivatives_print = "all", a = c(0.3, 0.8) ) ## ----derivativeCheckerResult------------------------------ res ## ----printAllOptions-------------------------------------- nloptr::nloptr.print.options() nloptr/inst/tinytest/0000755000176200001440000000000014636312316014435 5ustar liggesusersnloptr/inst/tinytest/test-wrapper-auglag.R0000644000176200001440000002013414636244620020455 0ustar liggesusers# Copyright (C) 2023 Avraham Adler. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: test-wrapper-auglag # Author: Avraham Adler # Date: 6 February 2023 # # Test wrapper calls to auglag algorithm # # Changelog: # 2023-08-23: Change _output to _stdout # library(nloptr) depMess <- paste("The old behavior for hin >= 0 has been deprecated. Please", "restate the inequality to be <=0. The ability to use the old", "behavior will be removed in a future release.") # Taken from example x0 <- c(1, 1) fn <- function(x) (x[1L] - 2) ^ 2 + (x[2L] - 1) ^ 2 hin <- function(x) 0.25 * x[1L] ^ 2 + x[2L] ^ 2 - 1 # hin <= 0 heq <- function(x) x[1L] - 2 * x[2L] + 1 # heq = 0 gr <- function(x) nl.grad(x, fn) hinjac <- function(x) nl.jacobian(x, hin) heqjac <- function(x) nl.jacobian(x, heq) hin2 <- function(x) -hin(x) # Needed to test old behavior hinjac2 <- function(x) nl.jacobian(x, hin2) # Needed to test old behavior # Test silence on proper behavior expect_silent(auglag(x0, fn)) expect_silent(auglag(x0, fn, hin = hin, deprecatedBehavior = FALSE)) # Test errors expect_error(auglag(x0, fn, ineq2local = TRUE), "Inequalities to local solver: feature not yet implemented.") expect_error(auglag(x0, fn, localsolver = "NLOPT_LN_NELDERMEAD"), "Only local solvers allowed: BOBYQA, COBYLA, LBFGS, MMA, SLSQP.") # Test printout if nl.info passed. The word "Call:" should be in output if # passed and not if not passed. expect_stdout(auglag(x0, fn, nl.info = TRUE), "Call:", fixed = TRUE) # Test COBYLA version augTest <- auglag(x0, fn, hin = hin, heq = heq, deprecatedBehavior = FALSE) augControl <- nloptr(x0 = x0, eval_f = fn, eval_g_ineq = hin, eval_g_eq = heq, opts = list(algorithm = "NLOPT_LN_AUGLAG", xtol_rel = 1e-6, maxeval = 1000L, local_opts = list( algorithm = "NLOPT_LN_COBYLA", xtol_rel = 1e-6 ))) expect_identical(augTest$par, augControl$solution) expect_identical(augTest$value, augControl$objective) expect_identical(augTest$global_solver, augControl$options$algorithm) expect_identical(augTest$local_solver, augControl$local_options$algorithm) expect_identical(augTest$convergence, augControl$status) expect_identical(augTest$message, augControl$message) # Test BOBYQA version augTest <- auglag(x0, fn, hin = hin, heq = heq, localsolver = "BOBYQA", deprecatedBehavior = FALSE) augControl <- nloptr(x0 = x0, eval_f = fn, eval_g_ineq = hin, eval_g_eq = heq, opts = list(algorithm = "NLOPT_LN_AUGLAG", xtol_rel = 1e-6, maxeval = 1000L, local_opts = list( algorithm = "NLOPT_LN_BOBYQA", xtol_rel = 1e-6 ))) expect_identical(augTest$par, augControl$solution) expect_identical(augTest$value, augControl$objective) expect_identical(augTest$global_solver, augControl$options$algorithm) expect_identical(augTest$local_solver, augControl$local_options$algorithm) expect_identical(augTest$convergence, augControl$status) expect_identical(augTest$message, augControl$message) # Test SLSQP version # No passed hin/heq Jacobian augTest <- auglag(x0, fn, hin = hin, heq = heq, localsolver = "SLSQP", deprecatedBehavior = FALSE) augControl <- nloptr(x0 = x0, eval_f = fn, eval_grad_f = gr, eval_g_ineq = hin, eval_jac_g_ineq = hinjac, eval_g_eq = heq, eval_jac_g_eq = heqjac, opts = list(algorithm = "NLOPT_LD_AUGLAG", xtol_rel = 1e-6, maxeval = 1000L, local_opts = list(algorithm = "NLOPT_LD_SLSQP", eval_grad_f = gr, xtol_rel = 1e-6))) expect_identical(augTest$par, augControl$solution) expect_identical(augTest$value, augControl$objective) expect_identical(augTest$global_solver, augControl$options$algorithm) expect_identical(augTest$local_solver, augControl$local_options$algorithm) expect_identical(augTest$convergence, augControl$status) expect_identical(augTest$message, augControl$message) # Passed hin/heq Jacobian augTest <- auglag(x0, fn, hin = hin, heq = heq, hinjac = hinjac, heqjac = heqjac, localsolver = "SLSQP", deprecatedBehavior = FALSE) expect_identical(augTest$par, augControl$solution) expect_identical(augTest$value, augControl$objective) expect_identical(augTest$global_solver, augControl$options$algorithm) expect_identical(augTest$local_solver, augControl$local_options$algorithm) expect_identical(augTest$convergence, augControl$status) expect_identical(augTest$message, augControl$message) # Test LBFGS version augTest <- auglag(x0, fn, hin = hin, heq = heq, localsolver = "LBFGS", deprecatedBehavior = FALSE) augControl <- nloptr(x0 = x0, eval_f = fn, eval_grad_f = gr, eval_g_ineq = hin, eval_jac_g_ineq = hinjac, eval_g_eq = heq, eval_jac_g_eq = heqjac, opts = list(algorithm = "NLOPT_LD_AUGLAG", xtol_rel = 1e-6, maxeval = 1000L, local_opts = list(algorithm = "NLOPT_LD_LBFGS", eval_grad_f = gr, xtol_rel = 1e-6))) expect_identical(augTest$par, augControl$solution) expect_identical(augTest$value, augControl$objective) expect_identical(augTest$global_solver, augControl$options$algorithm) expect_identical(augTest$local_solver, augControl$local_options$algorithm) expect_identical(augTest$convergence, augControl$status) expect_identical(augTest$message, augControl$message) # Test MMA version augTest <- auglag(x0, fn, hin = hin, heq = heq, localsolver = "MMA", deprecatedBehavior = FALSE) augControl <- nloptr(x0 = x0, eval_f = fn, eval_grad_f = gr, eval_g_ineq = hin, eval_jac_g_ineq = hinjac, eval_g_eq = heq, eval_jac_g_eq = heqjac, opts = list(algorithm = "NLOPT_LD_AUGLAG", xtol_rel = 1e-6, maxeval = 1000L, local_opts = list(algorithm = "NLOPT_LD_MMA", eval_grad_f = gr, xtol_rel = 1e-6))) expect_identical(augTest$par, augControl$solution) expect_identical(augTest$value, augControl$objective) expect_identical(augTest$global_solver, augControl$options$algorithm) expect_identical(augTest$local_solver, augControl$local_options$algorithm) expect_identical(augTest$convergence, augControl$status) expect_identical(augTest$message, augControl$message) # Test deprecated message expect_warning(auglag(x0, fn, hin = hin2), depMess) # Test old behavior still works augTest <- suppressWarnings(auglag(x0, fn, hin = hin2, hinjac = hinjac2, heq = heq, localsolver = "MMA")) expect_identical(augTest$par, augControl$solution) expect_identical(augTest$value, augControl$objective) expect_identical(augTest$global_solver, augControl$options$algorithm) expect_identical(augTest$local_solver, augControl$local_options$algorithm) expect_identical(augTest$convergence, augControl$status) expect_identical(augTest$message, augControl$message) nloptr/inst/tinytest/test-nloptions.R0000644000176200001440000000235014636244620017564 0ustar liggesusers# Copyright (C) 2023 Avraham Adler. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: test-nloptions # Author: Avraham Adler # Date: 6 February 2023 # # Test code in "nloptions" function that is not tested elsewhere. # # Changelog: # library(nloptr) opts <- list( stopval = -Inf, # stop minimization at this value xtol_rel = 1e-6, # stop on small optimization step maxeval = 1000, # stop on this many function evaluations ftol_rel = 0.0, # stop on change times function value ftol_abs = 0.0, # stop on small change of function value check_derivatives = FALSE, algorithm = NULL # will be filled by each single function ) opts2 <- opts names(opts2) <- "" expect_identical(nl.opts(NULL), opts) expect_error(nl.opts("C"), "Argument `optlist` must be a named list.", fixed = TRUE) expect_error(nl.opts(opts2), "Argument `optlist` must be a named list.", fixed = TRUE) opts2 <- opts opts2$algorithm <- "NLOPT_LN_NELDERMEAD" expect_warning(nl.opts(opts2), "Option `algorithm` cannot be set here. It will be overwritten.", fixed = TRUE) expect_null(suppressWarnings(nl.opts(opts2)$algorithm)) nloptr/inst/tinytest/test-options-maxtime.R0000644000176200001440000000212614636244620020675 0ustar liggesusers# Copyright (C) 2015 Jelmer Ypma. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: test-options-maxtime.R # Author: Jelmer Ypma # Date: 22 March 2015 # # Maintenance assumed by Avraham Adler (AA) on 2023-02-10 # # Check whether the solver stop when maxtime # (set in the options) is reached. # CHANGELOG: # 2019-12-12: Corrected warnings and using updated testtthat framework (AA) # 2023-02-07: Remove wrapping tests in "test_that" to reduce duplication. (AA) library(nloptr) # Test that solver stops when maxtime is reached. # Objective function with sleep added such that maxtime will be reached when # solving the optimization problem. # eval_f <- function(x) { Sys.sleep(0.1) x ^ 2 } eval_grad_f <- function(x) 2 * x # Initial values. x0 <- 5 # Define optimizer options. opts <- list("algorithm" = "NLOPT_LD_LBFGS", "maxtime" = 0.05, "xtol_rel" = 1e-4) # Solve problem. res <- nloptr( x0 = x0, eval_f = eval_f, eval_grad_f = eval_grad_f, opts = opts ) # Check results. expect_identical(res$status, 6L) nloptr/inst/tinytest/test-hs023.R0000644000176200001440000000456414636244620016407 0ustar liggesusers# Copyright (C) 2010 Jelmer Ypma. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: test-hs023.R # Author: Jelmer Ypma # Date: 16 August 2010 # # Maintenance assumed by Avraham Adler (AA) on 2023-02-10 # # Example problem, number 23 from the Hock-Schittkowsky test suite.. # # \min_{x} x1^2 + x2^2 # s.t. # x1 + x2 >= 1 # x1^2 + x2^2 >= 1 # 9*x1^2 + x2^2 >= 9 # x1^2 - x2 >= 0 # x2^2 - x1 >= 0 # # with bounds on the variables # -50 <= x1, x2 <= 50 # # we re-write the inequalities as # 1 - x1 - x2 <= 0 # 1 - x1^2 - x2^2 <= 0 # 9 - 9*x1^2 - x2^2 <= 0 # x2 - x1^2 <= 0 # x1 - x2^2 <= 0 # # the initial value is # x0 = (3, 1) # # Optimal solution = (1, 1) # # CHANGELOG: # 2014-05-05: Changed example to use unit testing framework testthat. # 2019-12-12: Corrected warnings and using updated testtthat framework (AA) # 2023-02-07: Remove wrapping tests in "test_that" to reduce duplication. (AA) # library(nloptr) # f(x) = x1^2 + x2^2 eval_f <- function(x) { list("objective" = x[1] ^ 2 + x[2] ^ 2, "gradient" = c(2 * x[1], 2 * x[2])) } # Inequality constraints. eval_g_ineq <- function(x) { constr <- c(1 - x[1] - x[2], 1 - x[1] ^ 2 - x[2] ^ 2, 9 - 9 * x[1] ^ 2 - x[2] ^ 2, x[2] - x[1] ^ 2, x[1] - x[2] ^ 2) grad <- rbind(c(-1, -1), c(-2 * x[1], -2 * x[2]), c(-18 * x[1], -2 * x[2]), c(-2 * x[1], 1), c(1, -2 * x[2])) list("constraints" = constr, "jacobian" = grad) } # Initial values. x0 <- c(3, 1) # Lower and upper bounds of control. lb <- c(-50, -50) ub <- c(50, 50) # Optimal solution. solution.opt <- c(1, 1) # Solve with MMA. opts <- list("algorithm" = "NLOPT_LD_MMA", "xtol_rel" = 1.0e-6, "tol_constraints_ineq" = rep(1.0e-6, 5), "print_level" = 0) res <- nloptr( x0 = x0, eval_f = eval_f, lb = lb, ub = ub, eval_g_ineq = eval_g_ineq, opts = opts ) # Run some checks on the optimal solution. expect_equal(res$solution, solution.opt, tolerance = 1e-6) expect_true(all(res$solution >= lb)) expect_true(all(res$solution <= ub)) # Check whether constraints are violated (up to specified tolerance). expect_true( all(eval_g_ineq(res$solution)$constr <= res$options$tol_constraints_ineq) ) nloptr/inst/tinytest/test-parameters.R0000644000176200001440000000310114636244620017675 0ustar liggesusers# Copyright (C) 2010 Jelmer Ypma. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: test-parameters.R # Author: Jelmer Ypma # Date: 17 August 2010 # # Maintenance assumed by Avraham Adler (AA) on 2023-02-10 # # Example shows how we can have an objective function # depend on parameters or data. The objective function # is a simple polynomial. # # CHANGELOG: # 2014-05-05: Changed example to use unit testing framework testthat. # 2019-12-12: Corrected warnings and using updated testtthat framework (AA) # 2023-02-07: Remove wrapping tests in "test_that" to reduce duplication. (AA) # library(nloptr) # Test simple polyonmial where parameters are supplied as additional data. # Objective function and gradient in terms of parameters. eval_f <- function(x, params) { params[1] * x ^ 2 + params[2] * x + params[3] } eval_grad_f <- function(x, params) { 2 * params[1] * x + params[2] } # Define parameters that we want to use. params <- c(1, 2, 3) # Define initial value of the optimization problem. x0 <- 0 # Solve using nloptr adding params as an additional parameter res <- nloptr( x0 = x0, eval_f = eval_f, eval_grad_f = eval_grad_f, opts = list("algorithm" = "NLOPT_LD_MMA", "xtol_rel" = 1e-6), params = params ) # Solve using algebra # Minimize f(x) = ax^2 + bx + c. # Optimal value for control is -b/(2a). expect_equal(res$solution, -params[2] / (2 * params[1]), tolerance = 1e-7) # With value of the objective function f(-b/(2a)). expect_equivalent(res$objective, eval_f(-params[2] / (2 * params[1]), params)) nloptr/inst/tinytest/test-print.nloptr.R0000644000176200001440000000272514636244620020216 0ustar liggesusers# Copyright (C) 2023 Avraham Adler. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: test-print.nloptr # Author: Avraham Adler # Date: 9 February 2023 # # Test code in print.nloptr function that is not tested elsewhere. # # Changelog: # 2023-08-23: Convert _output to _stdout for tinytest # library(nloptr) options(digits=7) x0 <- c(3, 3) fn <- function(x) (x[1] - 1) ^ 2 + (x[2] - 1) ^ 2 # Successful convergence (very loose tolerance so converges < 100) fit <- nloptr(x0, fn, opts = list(algorithm = "NLOPT_LN_NELDERMEAD", xtol_rel = 1e-2)) expect_stdout(print(fit), "Optimal value of controls: 1.004579 1.003978", fixed = TRUE) expect_stdout(print(fit, 1), "Optimal value of user-defined subset of controls: 1.004579", fixed = TRUE) expect_stdout(print(fit, 2), "Optimal value of user-defined subset of controls: 1.003978", fixed = TRUE) # Unsuccessful convergence (hit maxeval in this case) fit <- nloptr(x0, fn, opts = list(algorithm = "NLOPT_LN_NELDERMEAD", xtol_rel = 1e-8)) expect_stdout(print(fit), "Current value of controls: 0.9999994 1.000001", fixed = TRUE) expect_stdout(print(fit, 1), "Current value of user-defined subset of controls: 0.9999994", fixed = TRUE) expect_stdout(print(fit, 2), "Current value of user-defined subset of controls: 1.000001", fixed = TRUE) nloptr/inst/tinytest/test-wrapper-global.R0000644000176200001440000002122314636312316020453 0ustar liggesusers# Copyright (C) 2023 Avraham Adler. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: test-wrapper-global # Author: Avraham Adler # Date: 6 February 2023 # # Test wrapper calls to StoGo, ISRES, and CRS algorithms. As many of these # algorithms have issues, this test suite may not be completed. # # Changelog: # 2023-08-23: Change _output to _stdout # library(nloptr) depMess <- paste("The old behavior for hin >= 0 has been deprecated. Please", "restate the inequality to be <=0. The ability to use the old", "behavior will be removed in a future release.") ## Functions for the algorithms rbf <- function(x) {(1 - x[1]) ^ 2 + 100 * (x[2] - x[1] ^ 2) ^ 2} ## Analytic gradient gr <- function(x) {c(-2 * (1 - x[1]) - 400 * x[1] * (x[2] - x[1] ^ 2), 200 * (x[2] - x[1] ^ 2))} hin <- function(x) 0.25 * x[1L] ^ 2 + x[2L] ^ 2 - 1 # hin <= 0 heq <- function(x) x[1L] - 2 * x[2L] + 1 # heq = 0 hinjac <- function(x) nl.jacobian(x, hin) heqjac <- function(x) nl.jacobian(x, heq) hin2 <- function(x) -hin(x) # Needed to test old behavior hinjac2 <- function(x) nl.jacobian(x, hin2) # Needed to test old behavior # Take these outside the function since they are unchanging; just pass them! a <- c(1.0, 1.2, 3.0, 3.2) A <- matrix(c(10, 0.05, 3, 17, 3, 10, 3.5, 8, 17, 17, 1.7, 0.05, 3.5, 0.1, 10, 10, 1.7, 8, 17, 0.1, 8, 14, 8, 14), nrow = 4) B <- matrix(c(.1312, .2329, .2348, .4047, .1696, .4135, .1451, .8828, .5569, .8307, .3522, .8732, .0124, .3736, .2883, .5743, .8283, .1004, .3047, .1091, .5886, .9991, .6650, .0381), nrow = 4) hartmann6 <- function(x, a, A, B) { fun <- 0 for (i in 1:4) { fun <- fun - a[i] * exp(-sum(A[i, ] * (x - B[i, ]) ^ 2)) } fun } x0 <- c(-1.2, 1) lb <- c(-3, -3) ub <- c(3, 3) ## StoGo # Test printout if nl.info passed. The word "Call:" should be in output if # passed and not if not passed. expect_stdout(stogo(x0, rbf, lower = lb, upper = ub, nl.info = TRUE), "Call:", fixed = TRUE) expect_silent(stogo(x0, rbf, lower = lb, upper = ub)) # No passed gradient; Randomized: FALSE stogoTest <- stogo(x0, rbf, lower = lb, upper = ub) stogoControl <- nloptr(x0 = x0, eval_f = rbf, eval_grad_f = function(x) nl.grad(x, rbf), lb = lb, ub = ub, opts = list(algorithm = "NLOPT_GD_STOGO", xtol_rel = 1e-6, maxeval = 10000L)) expect_identical(stogoTest$par, stogoControl$solution) expect_identical(stogoTest$value, stogoControl$objective) expect_identical(stogoTest$iter, stogoControl$iterations) expect_identical(stogoTest$convergence, stogoControl$status) expect_identical(stogoTest$message, stogoControl$message) # Passed gradient; Randomized: FALSE stogoTest <- stogo(x0, rbf, gr, lb, ub) stogoControl <- nloptr(x0 = x0, eval_f = rbf, eval_grad_f = gr, lb = lb, ub = ub, opts = list(algorithm = "NLOPT_GD_STOGO", xtol_rel = 1e-6, maxeval = 10000L)) expect_identical(stogoTest$par, stogoControl$solution) expect_identical(stogoTest$value, stogoControl$objective) expect_identical(stogoTest$iter, stogoControl$iterations) expect_identical(stogoTest$convergence, stogoControl$status) expect_identical(stogoTest$message, stogoControl$message) # Passed gradient; Randomized: TRUE stogoTest <- stogo(x0, rbf, gr, lb, ub, randomized = TRUE) stogoControl <- nloptr(x0 = x0, eval_f = rbf, eval_grad_f = gr, lb = lb, ub = ub, opts = list(algorithm = "NLOPT_GD_STOGO_RAND", xtol_rel = 1e-6, maxeval = 10000L)) expect_identical(stogoTest$par, stogoControl$solution) expect_identical(stogoTest$value, stogoControl$objective) expect_identical(stogoTest$iter, stogoControl$iterations) expect_identical(stogoTest$convergence, stogoControl$status) expect_identical(stogoTest$message, stogoControl$message) ## ISRES # Test printout if nl.info passed. The word "Call:" should be in output if # passed and not if not passed. expect_stdout(isres(x0, rbf, lb, ub, nl.info = TRUE), "Call:", fixed = TRUE) expect_silent(isres(x0, rbf, lb, ub)) # As ISRES is stochastic, more iterations and a much looser tolerance is needed. # Also, iteration count will almost surely not be equal. # No passed hin or heq isresTest <- isres(x0, rbf, lb, ub, maxeval = 2e4L) isresControl <- nloptr(x0 = x0, eval_f = rbf, lb = lb, ub = ub, opts = list(algorithm = "NLOPT_GN_ISRES", maxeval = 2e4L, xtol_rel = 1e-6, population = 60)) expect_equal(isresTest$par, isresControl$solution, tolerance = 1e-4) expect_equal(isresTest$value, isresControl$objective, tolerance = 1e-4) expect_identical(stogoTest$convergence, stogoControl$status) expect_identical(stogoTest$message, stogoControl$message) # Passing heq # Need a ridiculously loose tolerance on ISRES now. # (AA: 2023-02-06) isresTest <- isres(x0, rbf, lb, ub, heq = heq, maxeval = 2e4L) isresControl <- nloptr(x0 = x0, eval_f = rbf, eval_g_eq = heq, lb = lb, ub = ub, opts = list(algorithm = "NLOPT_GN_ISRES", maxeval = 2e4L, xtol_rel = 1e-6, population = 60)) expect_identical(stogoTest$convergence, stogoControl$status) expect_identical(stogoTest$message, stogoControl$message) # Passing hin isresControl <- nloptr(x0 = x0, eval_f = rbf, eval_g_ineq = hin, lb = lb, ub = ub, opts = list(algorithm = "NLOPT_GN_ISRES", maxeval = 2e4L, xtol_rel = 1e-6, population = 60)) expect_silent(isres(x0, rbf, lb, ub, hin = hin, maxeval = 2e4L, deprecatedBehavior = FALSE)) isresTest <- isres(x0, rbf, lb, ub, hin = hin, maxeval = 2e4L, deprecatedBehavior = FALSE) expect_equal(isresTest$par, isresControl$solution, tolerance = 1e-4) expect_equal(isresTest$value, isresControl$objective, tolerance = 1e-4) expect_identical(stogoTest$convergence, stogoControl$status) expect_identical(stogoTest$message, stogoControl$message) # Test deprecated message expect_warning(isres(x0, rbf, lower = lb, upper = ub, hin = hin2, maxeval = 2e4L), depMess) # Test deprecated behavior isresTest <- suppressWarnings(isres(x0, rbf, lb, ub, hin = hin2, maxeval = 2e4L)) expect_equal(isresTest$par, isresControl$solution, tolerance = 1e-4) expect_equal(isresTest$value, isresControl$objective, tolerance = 1e-3) expect_identical(stogoTest$convergence, stogoControl$status) expect_identical(stogoTest$message, stogoControl$message) ## CRS2LM # Test printout if nl.info passed. The word "Call:" should be in output if # passed and not if not passed. x0 <- lb <- rep(0, 6L) ub <- rep(1, 6L) expect_stdout(crs2lm(x0 = x0, hartmann6, lower = lb, upper = ub, nl.info = TRUE, a = a, A = A, B = B), "Call:", fixed = TRUE) expect_silent(crs2lm(x0 = x0, hartmann6, lower = lb, upper = ub, a = a, A = A, B = B)) crs2lmTest <- crs2lm(x0 = x0, hartmann6, lower = lb, upper = ub, ranseed = 43L, xtol_rel = 1e-8, maxeval = 100L, a = a, A = A, B = B) crs2lmControl <- nloptr(x0 = x0, eval_f = hartmann6, lb = lb, ub = ub, a = a, A = A, B = B, opts = list(algorithm = "NLOPT_GN_CRS2_LM", xtol_rel = 1e-8, maxeval = 100L, ranseed = 43L, population = 70)) expect_identical(crs2lmTest$par, crs2lmControl$solution) expect_identical(crs2lmTest$value, crs2lmControl$objective) expect_identical(crs2lmTest$iter, crs2lmControl$iterations) expect_identical(crs2lmTest$convergence, crs2lmControl$status) expect_identical(crs2lmTest$message, crs2lmControl$message) nloptr/inst/tinytest/test-wrapper-mma.R0000644000176200001440000001076014636244620017773 0ustar liggesusers# Copyright (C) 2023 Avraham Adler. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: test-wrapper-mma # Author: Avraham Adler # Date: 6 February 2023 # # Test wrapper calls to MMA algorithm # # CHANGELOG # # 2023-08-23: Change _output to _stdout # 2024-06-04: Switched desired direction of the hin/hinjac inequalities, leaving # the old behavior as the default for now. Also cleaned up the HS100 # example. (Avraham Adler) library(nloptr) depMess <- paste("The old behavior for hin >= 0 has been deprecated. Please", "restate the inequality to be <=0. The ability to use the old", "behavior will be removed in a future release.") # Taken from example x0.hs100 <- c(1, 2, 0, 4, 0, 1, 1) fn.hs100 <- function(x) {(x[1] - 10) ^ 2 + 5 * (x[2] - 12) ^ 2 + x[3] ^ 4 + 3 * (x[4] - 11) ^ 2 + 10 * x[5] ^ 6 + 7 * x[6] ^ 2 + x[7] ^ 4 - 4 * x[6] * x[7] - 10 * x[6] - 8 * x[7]} hin.hs100 <- function(x) {c( 2 * x[1] ^ 2 + 3 * x[2] ^ 4 + x[3] + 4 * x[4] ^ 2 + 5 * x[5] - 127, 7 * x[1] + 3 * x[2] + 10 * x[3] ^ 2 + x[4] - x[5] - 282, 23 * x[1] + x[2] ^ 2 + 6 * x[6] ^ 2 - 8 * x[7] - 196, 4 * x[1] ^ 2 + x[2] ^ 2 - 3 * x[1] * x[2] + 2 * x[3] ^ 2 + 5 * x[6] - 11 * x[7]) } gr.hs100 <- function(x) { c( 2 * x[1] - 20, 10 * x[2] - 120, 4 * x[3] ^ 3, 6 * x[4] - 66, 60 * x[5] ^ 5, 14 * x[6] - 4 * x[7] - 10, 4 * x[7] ^ 3 - 4 * x[6] - 8) } hinjac.hs100 <- function(x) { matrix(c(4 * x[1], 12 * x[2] ^ 3, 1, 8 * x[4], 5, 0, 0, 7, 3, 20 * x[3], 1, -1, 0, 0, 23, 2 * x[2], 0, 0, 0, 12 * x[6], -8, 8 * x[1] - 3 * x[2], 2 * x[2] - 3 * x[1], 4 * x[3], 0, 0, 5, -11), nrow = 4, byrow = TRUE) } hin2.hs100 <- function(x) -hin.hs100(x) # Needed to test old behavior hinjac2.hs100 <- function(x) -hinjac.hs100(x) # Needed to test old behavior ctl <- list(xtol_rel = 1e-8) # Test printout if nl.info passed. The word "Call:" should be in output if # passed and not if not passed. expect_stdout(suppressMessages(mma(x0.hs100, fn.hs100, nl.info = TRUE)), "Call:", fixed = TRUE) # Expect unconstrained call to work expect_silent(mma(x0.hs100, fn.hs100)) # Test MMA algorithm with inequality but passing neither gradient nor Jacobian. # As everyone is on Windows64, timing should be less of an issue. mmaTest <- mma(x0.hs100, fn.hs100, hin = hin.hs100, control = ctl, deprecatedBehavior = FALSE) mmaControl <- nloptr(x0 = x0.hs100, eval_f = fn.hs100, eval_grad_f = function(x) nl.grad(x, fn.hs100), eval_g_ineq = hin.hs100, eval_jac_g_ineq = function(x) nl.jacobian(x, hin.hs100), opts = list(algorithm = "NLOPT_LD_MMA", xtol_rel = 1e-8, maxeval = 1000L)) expect_identical(mmaTest$par, mmaControl$solution) expect_identical(mmaTest$value, mmaControl$objective) expect_identical(mmaTest$iter, mmaControl$iterations) expect_identical(mmaTest$convergence, mmaControl$status) expect_identical(mmaTest$message, mmaControl$message) # Test MMA algorithm passing both gradient and Jacobian. Now correct. # (AA: 2024-06-04) mmaControl <- nloptr(x0 = x0.hs100, eval_f = fn.hs100, eval_grad_f = gr.hs100, eval_g_ineq = hin.hs100, eval_jac_g_ineq = hinjac.hs100, opts = list(algorithm = "NLOPT_LD_MMA", xtol_rel = 1e-8, maxeval = 1000L)) mmaTest <- mma(x0.hs100, fn.hs100, gr = gr.hs100, hin = hin.hs100, hinjac = hinjac.hs100, control = ctl, deprecatedBehavior = FALSE) expect_identical(mmaTest$par, mmaControl$solution) expect_identical(mmaTest$value, mmaControl$objective) expect_identical(mmaTest$iter, mmaControl$iterations) expect_identical(mmaTest$convergence, mmaControl$status) expect_identical(mmaTest$message, mmaControl$message) # Test deprecated message expect_warning(mma(x0.hs100, fn.hs100, hin = hin.hs100), depMess) # Test deprecated behavior mmaTest <- suppressWarnings(mma(x0.hs100, fn.hs100, gr = gr.hs100, hin = hin2.hs100, hinjac = hinjac2.hs100, control = ctl)) expect_identical(mmaTest$par, mmaControl$solution) expect_identical(mmaTest$value, mmaControl$objective) expect_identical(mmaTest$iter, mmaControl$iterations) expect_identical(mmaTest$convergence, mmaControl$status) expect_identical(mmaTest$message, mmaControl$message) nloptr/inst/tinytest/test-nloptr.R0000644000176200001440000002355114636244620017063 0ustar liggesusers# Copyright (C) 2023 Avraham Adler. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: test-nloptr # Author: Avraham Adler # Date: 7 February 2023 # # Test code in nloptr.R and nloptr.c which is not tested elsewhere. # # Changelog: # 2023-08-23: Converted snapshots to testing portions of outputs and messages. # # It is possible for NLOPT to go slightly beyond maxtime or maxeval, especially # for the global algorithms, which is why the stopping criterion has a # weird-looking test. See # https://nlopt.readthedocs.io/en/latest/NLopt_Reference/#stopping-criteria library(nloptr) options(digits=7) tol <- sqrt(.Machine$double.eps) ########################## Tests for nloptr.R ################################## ctlNM <- list(algorithm = "NLOPT_LN_NELDERMEAD", xtol_rel = 1e-8, check_derivatives = TRUE) ctlSQP <- list(algorithm = "NLOPT_LD_SLSQP", xtol_rel = 1e-8, check_derivatives = TRUE) # internal function to check the arguments of the functions expect_error(nloptr(3, "Zed"), "must be a function", fixed = TRUE) fn <- function(x, b = NULL, c = NULL) x expect_error(nloptr(3, fn, c = "Q"), "but this has not been passed to the 'nloptr' function", fixed = TRUE) expect_error(nloptr(3, fn, b = "X", c = "Y", d = "Q"), "passed to (...) in 'nloptr' but this is not required in the", fixed = TRUE) expect_warning(nloptr(3, fn, b = 3, c = 4, opts = ctlNM), "Skipping derivative checker because algorithm", fixed = TRUE) ########################## Tests for nloptr.c ################################## ctl <- list(xtol_rel = 1e-8, maxeval = 1000L) fn <- function(x) x ^ 2 - 4 * x + 4 lb <- 0 ub <- 6 optSol <- 2 optVal <- 0 ## NLOPT_GN_DIRECT_L_NOSCAL alg <- list(algorithm = "NLOPT_GN_DIRECT_L_NOSCAL") testRun <- nloptr(5, fn, lb = lb, ub = ub, opts = c(alg, ctl)) expect_equal(testRun$solution, optSol, tolerance = tol) expect_equal(testRun$objective, optVal, tolerance = tol) expect_true(testRun$iterations <= ctl$maxeval + 5) expect_true(testRun$status > 0) ## NLOPT_GN_DIRECT_L_RAND_NOSCAL alg <- list(algorithm = "NLOPT_GN_DIRECT_L_RAND_NOSCAL") testRun <- nloptr(5, fn, lb = lb, ub = ub, opts = c(alg, ctl)) expect_equal(testRun$solution, optSol, tolerance = tol) expect_equal(testRun$objective, optVal, tolerance = tol) expect_true(testRun$iterations <= ctl$maxeval + 5) expect_true(testRun$status > 0) ## NLOPT_LN_PRAXIS alg <- list(algorithm = "NLOPT_LN_PRAXIS") testRun <- nloptr(5, fn, lb = lb, ub = ub, opts = c(alg, ctl)) expect_equal(testRun$solution, optSol, tolerance = tol) expect_equal(testRun$objective, optVal, tolerance = tol) expect_true(testRun$iterations <= ctl$maxeval + 5) expect_true(testRun$status > 0) ## NLOPT_GN_MLSL alg <- list(algorithm = "NLOPT_GN_MLSL") lopts <- list(local_opts = list(algorithm = "NLOPT_LN_COBYLA", xtol_rel = 1e-8)) testRun <- nloptr(5, fn, lb = lb, ub = ub, opts = c(alg, ctl, lopts)) expect_equal(testRun$solution, optSol, tolerance = tol) expect_equal(testRun$objective, optVal, tolerance = tol) expect_true(testRun$iterations <= ctl$maxeval + 5) expect_true(testRun$status > 0) ## NLOPT_GN_MLSL_LDS alg <- list(algorithm = "NLOPT_GN_MLSL_LDS") lopts <- list(local_opts = list(algorithm = "NLOPT_LN_COBYLA", xtol_rel = 1e-8)) testRun <- nloptr(5, fn, lb = lb, ub = ub, opts = c(alg, ctl, lopts)) expect_equal(testRun$solution, optSol, tolerance = tol) expect_equal(testRun$objective, optVal, tolerance = tol) expect_true(testRun$iterations <= ctl$maxeval + 5) expect_true(testRun$status > 0) ## NLOPT_LN_AUGLAG_EQ x0 <- c(-2, 2, 2, -1, -1) fn1 <- function(x) exp(x[1] * x[2] * x[3] * x[4] * x[5]) eqn1 <- function(x) { c(x[1] * x[1] + x[2] * x[2] + x[3] * x[3] + x[4] * x[4] + x[5] * x[5], x[2] * x[3] - 5 * x[4] * x[5], x[1] * x[1] * x[1] + x[2] * x[2] * x[2]) } optSol <- rep(0, 5) optVal <- 1 testRun <- nloptr(x0, fn1, eval_g_eq = eqn1, opts = list(algorithm = "NLOPT_LN_AUGLAG_EQ", xtol_rel = 1e-6, maxeval = 10000L, local_opts = list(algorithm = "NLOPT_LN_COBYLA", xtol_rel = 1e-6))) expect_equal(testRun$solution, optSol, tolerance = tol) expect_equal(testRun$objective, optVal, tolerance = tol) expect_true(testRun$iterations <= 10005L) expect_true(testRun$status > 0) ## NLOPT_LD_AUGLAG_EQ gr1 <- function(x) { c(x[2] * x[3] * x[4] * x[5], x[1] * x[3] * x[4] * x[5], x[1] * x[2] * x[4] * x[5], x[1] * x[2] * x[3] * x[5], x[1] * x[2] * x[3] * x[4]) * exp(prod(x)) } heqjac <- function(x) nl.jacobian(x0, eqn1) testRun <- nloptr(x0, fn1, gr1, eval_g_eq = eqn1, eval_jac_g_eq = heqjac, opts = list(algorithm = "NLOPT_LD_AUGLAG_EQ", xtol_rel = 1e-6, maxeval = 10000L, local_opts = list(algorithm = "NLOPT_LN_COBYLA", xtol_rel = 1e-6))) expect_equal(testRun$solution, optSol, tolerance = tol) expect_equal(testRun$objective, optVal, tolerance = tol) expect_true(testRun$iterations <= 10005L) expect_true(testRun$status > 0) ## NLOPT_LN_NEWUOA_BOUND fn <- function(x) x[1L] ^ 4 + x[2L] ^ 2 - 5 * x[1L] * x[2L] + 5 gr <- function(x) c(4 * x[1L] ^ 3 - 5 * x[2L], 2 * x[2L] - 5 * x[1L]) lb <- c(0, 0) ub <- c(5, 5) # https://www.wolframalpha.com/input?i=minimum+of+x+%5E+4+%2B+y+%5E+2+-+5+*+x+*+y++%2B+5+ # nolint optSol <- c(5 / (2 * sqrt(2)), 25 / (4 * sqrt(2))) optVal <- -305 / 64 alg <- list(algorithm = "NLOPT_LN_NEWUOA_BOUND") testRun <- nloptr(c(1, 1), fn, lb = lb, ub = ub, opts = c(alg, ctl)) expect_equal(testRun$solution, optSol, tolerance = 1e-5) expect_equal(testRun$objective, optVal, tolerance = tol) expect_true(testRun$iterations <= ctl$maxeval + 5) expect_true(testRun$status > 0) ## NLOPT_GN_ESCH alg <- list(algorithm = "NLOPT_GN_ESCH") ctl <- list(xtol_rel = 1e-8, maxeval = 50000L) testRun <- nloptr(c(1, 1), fn, lb = lb, ub = ub, opts = c(alg, ctl)) expect_equal(testRun$solution, optSol, tolerance = 1e-2) expect_equal(testRun$objective, optVal, tolerance = 1e-2) expect_true(testRun$iterations <= ctl$maxeval + 5) expect_true(testRun$status > 0) ## NLOPT_LD_LBFGS_NOCEDAL # NLOPT_LD_LBFGS_NOCEDAL as this algorithm has not been included as of NLOPT # 2.7.1 per https://github.com/stevengj/nlopt/issues/40 so the expected outcome # is NLOPT_INVALID_ARGS. Perhaps we should ring-fence it for now? # (AA: 2023-02-08) alg <- list(algorithm = "NLOPT_LD_LBFGS_NOCEDAL") testRun <- nloptr(c(1, 1), fn, gr, lb = lb, ub = ub, opts = c(alg, ctl)) minus2mess <- paste("NLOPT_INVALID_ARGS: Invalid arguments (e.g. lower bounds", "are bigger than upper bounds, an unknown algorithm was", "specified, etcetera).") expect_identical(testRun$status, -2L) expect_identical(testRun$message, minus2mess) ## case NLOPT_FAILURE fnl <- function(x) { list("objective" = (x[1] - 1) ^ 2 + (x[2] - 1) ^ 2, "gradient" = c(4 * (x[1] - 1), 3 - (x[2] - 1))) } x0 <- c(3, 3) testRun <- nloptr(x0, fnl, opts = list(algorithm = "NLOPT_LD_LBFGS", xtol_rel = 1e-8)) expect_identical(testRun$status, -1L) expect_identical(testRun$message, "NLOPT_FAILURE: Generic failure code.") # Tinytest has no snapshot functionality. Instead, this will test the output # and message against portions of the expected, instead of the totality. ## MULTIVARIATE FUNCTION x0 <- c(2, 2) ub <- c(5, 5) lb <- c(-1, -1) fn <- function(x) (x[1L] - 1) ^ 2 + (x[2L] - 1) ^ 2 + 1 gr <- function(x) c(2 * (x[1L] - 1), 2 * (x[2L] - 1)) hin <- function(x) c(1.44 - x[1L] ^ 2, 2.197 - x[2L] ^ 3) hinjac <- function(x) matrix(c(-2 * x[1L], 0, 0, -3 * x[2L] ^ 2), 2L, 2L) heq <- function(x) c(x[1L] * x[2L] - 2.55, x[1L] - x[2L] - 0.2) heqjac <- function(x) matrix(c(x[2L], 1, x[1L], -1), 2L) optSol <- c(1.7, 1.5) optVal <- 1.74 expect_stdout( suppressMessages( nloptr(x0, fn, gr, lb, ub, hin, hinjac, heq, heqjac, opts = list(algorithm = "NLOPT_LD_SLSQP", xtol_rel = 1e-8, print_level = 3, check_derivatives = TRUE)) ), "g(x) = (-1.450000, -1.178000)", fixed = TRUE ) # Wrap in capture.output to prevent wall of text on screen when running. This is # to test the message; expect_stdout tests the output. expect_message( capture.output( nloptr(x0, fn, gr, lb, ub, hin, hinjac, heq, heqjac, opts = list(algorithm = "NLOPT_LD_SLSQP", xtol_rel = 1e-8, print_level = 3, check_derivatives = TRUE)), type = "output" ), "eval_jac_g_ineq[1, 1] = -4.0e+00 ~ -4.0e+00 [7.450581e-09]", fixed = TRUE ) ## UNIVARIATE FUNCTION x0 <- 5 fn <- function(x) x ^ 2 - 4 * x + 4 gr <- function(x) 2 * x - 4 hin <- function(x) 5.29 - x ^ 2 hinjac <- function(x) -2 * x heq <- function(x) 10 * x - 27 heqjac <- function(x) 10 lb <- 0 ub <- 6 optSol <- 2.7 optVal <- 0.49 ## UNIVARIATE expect_stdout( suppressMessages( nloptr(x0, fn, gr, lb, ub, hin, hinjac, heq, heqjac, opts = list(algorithm = "NLOPT_LD_SLSQP", xtol_rel = 1e-8, print_level = 3, check_derivatives = TRUE)) ), "g(x) = -2.000000", fixed = TRUE ) expect_message( capture.output( nloptr(x0, fn, gr, lb, ub, hin, hinjac, heq, heqjac, opts = list(algorithm = "NLOPT_LD_SLSQP", xtol_rel = 1e-8, print_level = 3, check_derivatives = TRUE)), type = "output" ), "eval_jac_g_ineq[1] = -1e+01 ~ -1e+01 [9.536743e-09]", fixed = TRUE ) # Test NLOPT_ROUNDOFF_LIMITED expect_true( grepl("Roundoff errors led to a breakdown", nloptr(x0, fn, gr, opts = list(algorithm = "NLOPT_LD_SLSQP", xtol_rel = -Inf))$message, fixed = TRUE) ) # Test triggering stopval expect_true( grepl("Optimization stopped because stopval", nloptr(c(4, 4), fn, opts = list(algorithm = "NLOPT_LN_SBPLX", stopval = 20))$message, fixed = TRUE) ) nloptr/inst/tinytest/test-example.R0000644000176200001440000000701314636244620017173 0ustar liggesusers# Copyright (C) 2010-14 Jelmer Ypma. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: test-example.R # Author: Jelmer Ypma # Date: 10 June 2010 # # Maintenance assumed by Avraham Adler (AA) on 2023-02-10 # # Example showing how to solve the problem from the NLopt tutorial. # # min sqrt(x2) # s.t. x2 >= 0 # x2 >= (a1*x1 + b1)^3 # x2 >= (a2*x1 + b2)^3 # where # a1 = 2, b1 = 0, a2 = -1, b2 = 1 # # re-formulate constraints to be of form g(x) <= 0 # (a1*x1 + b1)^3 - x2 <= 0 # (a2*x1 + b2)^3 - x2 <= 0 # # Optimal solution: (1/3, 8/27) # # CHANGELOG: # 2014-05-03: Changed example to use unit testing framework testthat. # 2019-12-12: Corrected warnings and using updated testtthat framework (AA) # 2023-02-07: Remove wrapping tests in "test_that" to reduce duplication. (AA) library(nloptr) tol <- sqrt(.Machine$double.eps) # objective function eval_f0 <- function(x, a, b) sqrt(x[2]) # constraint function eval_g0 <- function(x, a, b) (a * x[1] + b) ^ 3 - x[2] # gradient of objective function eval_grad_f0 <- function(x, a, b) c(0, 0.5 / sqrt(x[2])) # jacobian of constraint eval_jac_g0 <- function(x, a, b) { rbind(c(3 * a[1] * (a[1] * x[1] + b[1]) ^ 2, -1), c(3 * a[2] * (a[2] * x[1] + b[2]) ^ 2, -1)) } # Functions with gradients in objective and constraint function. This can be # useful if the same calculations are needed for the function value and the # gradient. eval_f1 <- function(x, a, b) { list("objective" = sqrt(x[2]), "gradient" = c(0, 0.5 / sqrt(x[2]))) } eval_g1 <- function(x, a, b) { list("constraints" = (a * x[1] + b) ^ 3 - x[2], "jacobian" = rbind(c(3 * a[1] * (a[1] * x[1] + b[1]) ^ 2, -1), c(3 * a[2] * (a[2] * x[1] + b[2]) ^ 2, -1))) } # Define parameters. a <- c(2, -1) b <- c(0, 1) # Define optimal solution. solution.opt <- c(1 / 3, 8 / 27) # Test NLopt tutorial example with NLOPT_LD_MMA with gradient information. Solve # using NLOPT_LD_MMA with gradient information supplied in separate function. res0 <- nloptr( x0 = c(1.234, 5.678), eval_f = eval_f0, eval_grad_f = eval_grad_f0, lb = c(-Inf, 0), ub = c(Inf, Inf), eval_g_ineq = eval_g0, eval_jac_g_ineq = eval_jac_g0, opts = list("xtol_rel" = 1e-4, "algorithm" = "NLOPT_LD_MMA"), a = a, b = b ) expect_equal(res0$solution, solution.opt, tolerance = tol) # Test NLopt tutorial example with NLOPT_LN_COBYLA with gradient information. # Solve using NLOPT_LN_COBYLA without gradient information A tighter convergence # tolerance is used here (1e-6), to ensure that the final solution is equal to # the optimal solution (within some tolerance). res1 <- nloptr( x0 = c(1.234, 5.678), eval_f = eval_f0, lb = c(-Inf, 0), ub = c(Inf, Inf), eval_g_ineq = eval_g0, opts = list("xtol_rel" = 1e-6, "algorithm" = "NLOPT_LN_COBYLA"), a = a, b = b ) expect_equal(res1$solution, solution.opt, tolerance = tol) # Test NLopt tutorial example with NLOPT_LN_COBYLA with gradient information # using combined function. # Solve using NLOPT_LD_MMA with gradient information in objective function res2 <- nloptr( x0 = c(1.234, 5.678), eval_f = eval_f1, lb = c(-Inf, 0), ub = c(Inf, Inf), eval_g_ineq = eval_g1, opts = list("xtol_rel" = 1e-4, "algorithm" = "NLOPT_LD_MMA"), a = a, b = b ) expect_equal(res2$solution, solution.opt, tolerance = tol) nloptr/inst/tinytest/test-wrapper-direct.R0000644000176200001440000001432614636244620020475 0ustar liggesusers# Copyright (C) 2023 Avraham Adler. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: test-wrapper-direct # Author: Avraham Adler # Date: 6 February 2023 # # Test wrapper calls to DIRECT algorithms # # Changelog: # 2023-08-23: Change _output to _stdout # library(nloptr) # DirectL is not identical when calling randomized = TRUE. May be an issue with # the randomization at the C level. For now, need to pass this tolerance for it # to work. # (AA: 2026-02-06) tol <- 1e-6 ## Functions for DIRECT and DIRECT_L hartmann6 <- function(x) { a <- c(1, 1.2, 3, 3.2) A <- matrix(c(10, 0.05, 3, 17, 3, 10, 3.5, 8, 17, 17, 1.7, 0.05, 3.5, 0.1, 10, 10, 1.7, 8, 17, 0.1, 8, 14, 8, 14), nrow = 4L, ncol = 6L) B <- matrix(c(0.1312, 0.2329, 0.2348, 0.4047, 0.1696, 0.4135, 0.1451, 0.8828, 0.5569, 0.8307, 0.3522, 0.8732, 0.0124, 0.3736, 0.2883, 0.5743, 0.8283, 0.1004, 0.3047, 0.1091, 0.5886, 0.9991, 0.6650, 0.0381), nrow = 4L, ncol = 6L) fun <- 0 for (i in 1:4) { fun <- fun - a[i] * exp(-sum(A[i, ] * (x - B[i, ]) ^ 2)) } fun } lb <- rep(0, 6L) ub <- rep(1, 6L) x0 <- rep(0.5, 6L) ctl <- list(xtol_rel = 1e-8, maxeval = 1000L) # Test printout if nl.info passed. The word "Call:" should be in output if # passed and not if not passed. expect_stdout(direct(hartmann6, lb, ub, nl.info = TRUE), "Call:", fixed = TRUE) expect_stdout(directL(hartmann6, lb, ub, nl.info = TRUE), "Call:", fixed = TRUE) expect_silent(direct(hartmann6, lb, ub)) expect_silent(directL(hartmann6, lb, ub)) # Test DIRECT algorithm Scaled: TRUE Original: FALSE directTest <- direct(hartmann6, lb, ub, control = ctl) directControl <- nloptr(x0 = x0, eval_f = hartmann6, lb = lb, ub = ub, opts = list(algorithm = "NLOPT_GN_DIRECT", xtol_rel = 1e-8, maxeval = 1000L)) expect_identical(directTest$par, directControl$solution) expect_identical(directTest$value, directControl$objective) expect_identical(directTest$iter, directControl$iterations) expect_identical(directTest$convergence, directControl$status) expect_identical(directTest$message, directControl$message) # Test DIRECT algorithm Scaled: FALSE Original: FALSE directTest <- direct(hartmann6, lb, ub, scaled = FALSE, control = ctl) directControl <- nloptr(x0 = x0, eval_f = hartmann6, lb = lb, ub = ub, opts = list(algorithm = "NLOPT_GN_DIRECT_NOSCAL", xtol_rel = 1e-8, maxeval = 1000L)) expect_identical(directTest$par, directControl$solution) expect_identical(directTest$value, directControl$objective) expect_identical(directTest$iter, directControl$iterations) expect_identical(directTest$convergence, directControl$status) expect_identical(directTest$message, directControl$message) # Test DIRECT algorithm Original: TRUE directTest <- direct(hartmann6, lb, ub, scaled = FALSE, original = TRUE, control = ctl) directControl <- nloptr(x0 = x0, eval_f = hartmann6, lb = lb, ub = ub, opts = list(algorithm = "NLOPT_GN_ORIG_DIRECT", xtol_rel = 1e-8, maxeval = 1000L)) expect_identical(directTest$par, directControl$solution) expect_identical(directTest$value, directControl$objective) expect_identical(directTest$iter, directControl$iterations) expect_identical(directTest$convergence, directControl$status) expect_identical(directTest$message, directControl$message) # Test DIRECTL algorithm Randomized: FALSE Original: FALSE directLTest <- directL(hartmann6, lb, ub, control = ctl) directLControl <- nloptr(x0 = x0, eval_f = hartmann6, lb = lb, ub = ub, opts = list(algorithm = "NLOPT_GN_DIRECT_L", xtol_rel = 1e-8, maxeval = 1000L)) expect_identical(directLTest$par, directLControl$solution) expect_identical(directLTest$value, directLControl$objective) expect_identical(directLTest$iter, directLControl$iterations) expect_identical(directLTest$convergence, directLControl$status) expect_identical(directLTest$message, directLControl$message) # Test DIRECTL algorithm Original: TRUE ctl <- list(xtol_rel = 1e-8, maxeval = 10000L) directLTest <- directL(hartmann6, lb, ub, randomized = TRUE, original = TRUE, control = ctl) directLControl <- nloptr(x0 = x0, eval_f = hartmann6, lb = lb, ub = ub, opts = list(algorithm = "NLOPT_GN_ORIG_DIRECT_L", xtol_rel = 1e-8, maxeval = 10000L)) expect_identical(directLTest$par, directLControl$solution) expect_identical(directLTest$value, directLControl$objective) expect_identical(directLTest$iter, directLControl$iterations) expect_identical(directLTest$convergence, directLControl$status) expect_identical(directLTest$message, directLControl$message) # Test DIRECTL algorithm Randomized: TRUE Original: FALSE ctl <- list(xtol_rel = 1e-8, maxeval = 50000L) directLTest <- directL(hartmann6, lb, ub, randomized = TRUE, control = ctl) directLControl <- nloptr(x0 = x0, eval_f = hartmann6, lb = lb, ub = ub, opts = list(algorithm = "NLOPT_GN_DIRECT_L_RAND", xtol_rel = 1e-8, maxeval = 50000L)) # May have something to do with the randomization. Setting seeds before the # calls does not help with check_identical # (AA: 2023-02-06) expect_equal(directLTest$par, directLControl$solution, tolerance = tol) expect_equal(directLTest$value, directLControl$objective, tolerance = tol) expect_identical(directLTest$iter, directLControl$iterations) expect_identical(directLTest$convergence, directLControl$status) expect_identical(directLTest$message, directLControl$message) nloptr/inst/tinytest/test-wrapper-lbgfs.R0000644000176200001440000000453414636244620020320 0ustar liggesusers# Copyright (C) 2023 Avraham Adler. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: test-wrapper-lbgfs # Author: Avraham Adler # Date: 6 February 2023 # # Test wrapper calls to LBGFS # # Changelog: # 2023-08-23: Change _output to _stdout # library(nloptr) ## Functions for the algorithms flb <- function(x) { p <- length(x) sum(c(1, rep(4, p - 1)) * (x - c(1, x[-p]) ^ 2) ^ 2) } x0 <- rep(3, 25L) lb <- rep(2, 25L) ub <- rep(4, 25L) ctl <- list(xtol_rel = 1e-8) # Test printout if nl.info passed. The word "Call:" should be in output if # passed and not if not passed. expect_stdout(lbfgs(x0, flb, nl.info = TRUE), "Call:", fixed = TRUE) expect_silent(lbfgs(x0, flb)) # No passed gradient lbfgsTest <- lbfgs(x0, flb, lower = lb, upper = ub, control = ctl) lbfgsControl <- nloptr(x0 = x0, eval_f = flb, eval_grad_f = function(x) nl.grad(x, flb), lb = lb, ub = ub, opts = list(algorithm = "NLOPT_LD_LBFGS", xtol_rel = 1e-8, maxeval = 1000L)) expect_identical(lbfgsTest$par, lbfgsControl$solution) expect_identical(lbfgsTest$value, lbfgsControl$objective) expect_identical(lbfgsTest$iter, lbfgsControl$iterations) expect_identical(lbfgsTest$convergence, lbfgsControl$status) expect_identical(lbfgsTest$message, lbfgsControl$message) # Passed gradient fr <- function(x) {100 * (x[2L] - x[1L] ^ 2) ^ 2 + (1 - x[1L]) ^ 2} gr <- function(x) { .expr2 <- x[2L] - x[1L] ^ 2 .expr5 <- 1 - x[1L] c(-(2 * .expr5 + 100 * (2 * (2 * x[1L] * .expr2))), 100 * (2 * .expr2)) } lbfgsTest <- lbfgs(c(-1.2, 2), fr, gr, lower = c(-3, -3), upper = c(3, 3), control = ctl) lbfgsControl <- nloptr(x0 = c(-1.2, 2), eval_f = fr, eval_grad_f = gr, lb = c(-3, -3), ub = c(3, 3), opts = list(algorithm = "NLOPT_LD_LBFGS", xtol_rel = 1e-8, maxeval = 1000L)) expect_identical(lbfgsTest$par, lbfgsControl$solution) expect_identical(lbfgsTest$value, lbfgsControl$objective) expect_identical(lbfgsTest$iter, lbfgsControl$iterations) expect_identical(lbfgsTest$convergence, lbfgsControl$status) expect_identical(lbfgsTest$message, lbfgsControl$message) nloptr/inst/tinytest/test-wrapper-varmetric.R0000644000176200001440000000560514636244620021217 0ustar liggesusers# Copyright (C) 2023 Avraham Adler. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: test-wrapper-varmetric # Author: Avraham Adler # Date: 6 February 2023 # # Test wrapper calls to Shifted limited-memory variable-metric algorithm. # # Changelog: # 2023-08-23: Change _output to _stdout # library(nloptr) ## Functions for the algorithms flb <- function(x) { p <- length(x) sum(c(1, rep(4, p - 1)) * (x - c(1, x[-p]) ^ 2) ^ 2) } x0 <- rep(3, 25L) lb <- rep(2, 25L) ub <- rep(4, 25L) ctl <- list(xtol_rel = 1e-8) # Test printout if nl.info passed. The word "Call:" should be in output if # passed and not if not passed. expect_stdout(varmetric(x0, flb, nl.info = TRUE), "Call:", fixed = TRUE) expect_silent(varmetric(x0, flb)) # No passed gradient; Rank 1 varTest <- varmetric(x0, flb, lower = lb, upper = ub, control = ctl, rank2 = FALSE) varControl <- nloptr(x0 = x0, eval_f = flb, eval_grad_f = function(x) nl.grad(x, flb), lb = lb, ub = ub, opts = list(algorithm = "NLOPT_LD_VAR1", xtol_rel = 1e-8, maxeval = 1000L)) expect_identical(varTest$par, varControl$solution) expect_identical(varTest$value, varControl$objective) expect_identical(varTest$iter, varControl$iterations) expect_identical(varTest$convergence, varControl$status) expect_identical(varTest$message, varControl$message) # No passed gradient; Rank 2 varTest <- varmetric(x0, flb, lower = lb, upper = ub, control = ctl) varControl <- nloptr(x0 = x0, eval_f = flb, eval_grad_f = function(x) nl.grad(x, flb), lb = lb, ub = ub, opts = list(algorithm = "NLOPT_LD_VAR2", xtol_rel = 1e-8, maxeval = 1000L)) expect_identical(varTest$par, varControl$solution) expect_identical(varTest$value, varControl$objective) expect_identical(varTest$iter, varControl$iterations) expect_identical(varTest$convergence, varControl$status) expect_identical(varTest$message, varControl$message) # Passed gradient fr <- function(x) {100 * (x[2L] - x[1L] ^ 2) ^ 2 + (1 - x[1L]) ^ 2} gr <- function(x) { .expr2 <- x[2L] - x[1L] ^ 2 .expr5 <- 1 - x[1L] c(-(2 * .expr5 + 100 * (2 * (2 * x[1L] * .expr2))), 100 * (2 * .expr2)) } varTest <- varmetric(c(-1.2, 2), fr, gr, control = ctl) varControl <- nloptr(x0 = c(-1.2, 2), eval_f = fr, eval_grad_f = gr, opts = list(algorithm = "NLOPT_LD_VAR2", xtol_rel = 1e-8, maxeval = 1000L)) expect_identical(varTest$par, varControl$solution) expect_identical(varTest$value, varControl$objective) expect_identical(varTest$iter, varControl$iterations) expect_identical(varTest$convergence, varControl$status) expect_identical(varTest$message, varControl$message) nloptr/inst/tinytest/test-systemofeq.R0000644000176200001440000000526014636244620017741 0ustar liggesusers# Copyright (C) 2010 Jelmer Ypma. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: test-systemofeq.R # Author: Jelmer Ypma # Date: 20 June 2010 # # Maintenance assumed by Avraham Adler (AA) on 2023-02-10 # # Example showing how to solve a system of equations. # # min 1 # s.t. x^2 + x - 1 = 0 # # Optimal solution for x: -1.61803398875 # # CHANGELOG: # 2011-06-16: added NLOPT_LD_SLSQP # 2014-05-05: Changed example to use unit testing framework testthat. # 2019-12-12: Corrected warnings and using updated testtthat framework (AA) # 2023-02-07: Remove wrapping tests in "test_that" to reduce duplication. (AA) library(nloptr) tol <- sqrt(.Machine$double.eps) # Test Solve system of equations using NLOPT_LD_MMA with local optimizer # NLOPT_LD_MMA. # Objective function. eval_f0 <- function(x, params) 1 # Gradient of objective function. eval_grad_f0 <- function(x, params) 0 # Equality constraint function. eval_g0_eq <- function(x, params) params[1] * x ^ 2 + params[2] * x + params[3] # Jacobian of constraint. eval_jac_g0_eq <- function(x, params) 2 * params[1] * x + params[2] # Define vector with addiitonal data. params <- c(1, 1, -1) # Define optimal solution. solution.opt <- -1.61803398875 local_opts <- list("algorithm" = "NLOPT_LD_MMA", "xtol_rel" = 1.0e-6) opts <- list("algorithm" = "NLOPT_LD_AUGLAG", "xtol_rel" = 1.0e-6, "local_opts" = local_opts) res <- nloptr(x0 = -5, eval_f = eval_f0, eval_grad_f = eval_grad_f0, eval_g_eq = eval_g0_eq, eval_jac_g_eq = eval_jac_g0_eq, opts = opts, params = params) # Run some checks on the optimal solution. expect_equal(res$solution, solution.opt, tolerance = tol) # Check whether constraints are violated (up to specified tolerance). expect_equal(eval_g0_eq(res$solution, params = params), 0, tolerance = res$options$tol_constraints_eq) # Test Solve system of equations using NLOPT_LD_SLSQP. # Solve using NLOPT_LD_SLSQP. opts <- list("algorithm" = "NLOPT_LD_SLSQP", "xtol_rel" = 1.0e-6) res <- nloptr(x0 = -5, eval_f = eval_f0, eval_grad_f = eval_grad_f0, eval_g_eq = eval_g0_eq, eval_jac_g_eq = eval_jac_g0_eq, opts = opts, params = params) # Run some checks on the optimal solution. expect_equal(res$solution, solution.opt, tolerance = tol) # Check whether constraints are violated (up to specified tolerance). expect_equal(eval_g0_eq(res$solution, params = params), 0, tolerance = res$options$tol_constraints_eq) nloptr/inst/tinytest/test-derivative-checker.R0000644000176200001440000000565214636244620021313 0ustar liggesusers# Copyright (C) 201 Jelmer Ypma. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: test-derivative-checker.R # Author: Jelmer Ypma # Date: 24 July 2010 # # Maintenance assumed by Avraham Adler (AA) on 2023-02-10 # # Example showing results of the derivative checker and finite-difference # # Changelog: # 2013-10-27: Changed example to use unit testing framework testthat. # 2019-12-12: Corrected warnings and using updated testtthat framework (AA) # 2023-02-10: Remove wrapping tests in "test_that" to reduce duplication. # and add explicit accuracy checks for nloptr:::finite.diff.R (AA) # 2023-08-23: Prefix finite.diff with nloptr::: as part of move to tinytest # library(nloptr) # Test derivative checker. tol <- 1e-7 # Define objective function. f <- function(x, a) sum((x - a) ^ 2) # Define gradient function without errors. f_grad <- function(x, a) 2 * (x - a) # Generated a using: # > set.seed(3141) # > a <- runif(10) # > dump("a", file = "") a <- c(0.75499595934525132, 0.9649918619543314, 0.041430773446336389, 0.42781219445168972, 0.65170943737030029, 0.83836922678165138, 0.77428539283573627, 0.53199269832111895, 0.76871572202071548, 0.7851746492087841) # Test nloptr:::finite.diff on multivariate scalar function expect_equal(nloptr:::finite.diff(f, 1:10, a = a), f_grad(1:10, a = a), tolerance = tol) expect_equal(nloptr:::finite.diff(f, 1:10, a = a), nl.grad(1:10, f, a = a), tolerance = tol) # Test nloptr:::finite.diff on multivariate Jacobian of vector function x0 <- 1:3 fn1 <- function(x) { c(3 * x[1L] ^ 2 * x[2L] * log(x[3L]), x[3] ^ 3 - 2 * x[1L] * x[2L]) } jac1 <- function(x) { matrix(c(6 * x[1L] * x[2L] * log(x[3L]), 3 * x[1L] ^ 2 * log(x[3L]), 3 * x[1L] ^ 2 * x[2L] / x[3L], -2 * x[2L], -2 * x[1L], 3 * x[3L] ^ 2), nrow = 2L, byrow = TRUE) } expect_equal(nloptr:::finite.diff(fn1, x0), jac1(x0), tolerance = tol) res <- suppressMessages( check.derivatives( .x = 1:10, func = f, func_grad = f_grad, check_derivatives_print = "none", a = a ) ) expect_identical(sum(res$flag_derivative_warning), 0L) # Define gradient function with 1 error. f_grad <- function(x, a) 2 * (x - a) + c(0, 0.1, rep(0, 8L)) res <- suppressMessages( check.derivatives( .x = 1:10, func = f, func_grad = f_grad, check_derivatives_print = "none", a = a ) ) expect_identical(sum(res$flag_derivative_warning), 1L) # Define objective function. g <- function(x, a) c(sum(x - a), sum((x - a) ^ 2)) # Define gradient function with 2 errors. g_grad <- function(x, a) { rbind(rep(1, length(x)) + c(0, 0.01, rep(0, 8L)), 2 * (x - a) + c(0, 0.1, rep(0, 8L))) } res <- suppressMessages( check.derivatives( .x = 1:10, func = g, func_grad = g_grad, check_derivatives_print = "none", a = a ) ) expect_identical(sum(res$flag_derivative_warning), 2L) nloptr/inst/tinytest/test-gradients.R0000644000176200001440000000326714636244620017527 0ustar liggesusers# Copyright (C) 2023 Avraham Adler. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: test-gradients # Author: Avraham Adler # Date: 6 February 2023 # # Test code in nl.grad and nl.jacobian functions that is not tested elsewhere. # # Changelog: # library(nloptr) tol <- sqrt(.Machine$double.eps) fn1 <- function(x) sum(x ^ 2) fn2 <- function(x) c(3, 5) expect_error(nl.grad("C", fn1), "Argument 'x0' must be a numeric value.", fixed = TRUE) expect_error(nl.grad(2, fn2), "Function 'f' must be a scalar function (return a single value).", fixed = TRUE) expect_error(nl.jacobian("C", fn1), "Argument 'x' must be a non-empty numeric vector.", fixed = TRUE) expect_error(nl.jacobian(NULL, fn1), "Argument 'x' must be a non-empty numeric vector.", fixed = TRUE) # Test accuracy of multivariate gradient of scalar function x0 <- c(-2, 2, 2, -1, -1) fnE <- function(x) exp(x[1] * x[2] * x[3] * x[4] * x[5]) grE <- function(x) { c(x[2] * x[3] * x[4] * x[5], x[1] * x[3] * x[4] * x[5], x[1] * x[2] * x[4] * x[5], x[1] * x[2] * x[3] * x[5], x[1] * x[2] * x[3] * x[4]) * exp(prod(x)) } expect_equal(nl.grad(x0, fnE), grE(x0), tolerance = tol) # Test accuracy of multivariate Jacobian of vector function x0 <- 1:3 fn1 <- function(x) { c(3 * x[1L] ^ 2 * x[2L] * log(x[3L]), x[3] ^ 3 - 2 * x[1L] * x[2L]) } jac1 <- function(x) { matrix(c(6 * x[1L] * x[2L] * log(x[3L]), 3 * x[1L] ^ 2 * log(x[3L]), 3 * x[1L] ^ 2 * x[2L] / x[3L], -2 * x[2L], -2 * x[1L], 3 * x[3L] ^ 2), nrow = 2L, byrow = TRUE) } expect_equal(nl.jacobian(x0, fn1), jac1(x0), tolerance = tol) nloptr/inst/tinytest/test-wrapper-slsqp.R0000644000176200001440000001430614636244620020363 0ustar liggesusers# Copyright (C) 2023 Avraham Adler. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: test-wrapper-slsqp # Author: Avraham Adler # Date: 6 February 2023 # # Test wrapper calls for the Sequential Quadratic Programming algorithm. # # Changelog: # 2023-08-23: Change _output to _stdout # library(nloptr) tol <- sqrt(.Machine$double.eps) depMess <- paste("The old behavior for hin >= 0 has been deprecated. Please", "restate the inequality to be <=0. The ability to use the old", "behavior will be removed in a future release.") # Taken from example x0.hs100 <- c(1, 2, 0, 4, 0, 1, 1) fn.hs100 <- function(x) {(x[1] - 10) ^ 2 + 5 * (x[2] - 12) ^ 2 + x[3] ^ 4 + 3 * (x[4] - 11) ^ 2 + 10 * x[5] ^ 6 + 7 * x[6] ^ 2 + x[7] ^ 4 - 4 * x[6] * x[7] - 10 * x[6] - 8 * x[7]} hin.hs100 <- function(x) {c( 2 * x[1] ^ 2 + 3 * x[2] ^ 4 + x[3] + 4 * x[4] ^ 2 + 5 * x[5] - 127, 7 * x[1] + 3 * x[2] + 10 * x[3] ^ 2 + x[4] - x[5] - 282, 23 * x[1] + x[2] ^ 2 + 6 * x[6] ^ 2 - 8 * x[7] - 196, 4 * x[1] ^ 2 + x[2] ^ 2 - 3 * x[1] * x[2] + 2 * x[3] ^ 2 + 5 * x[6] - 11 * x[7]) } gr.hs100 <- function(x) { c( 2 * x[1] - 20, 10 * x[2] - 120, 4 * x[3] ^ 3, 6 * x[4] - 66, 60 * x[5] ^ 5, 14 * x[6] - 4 * x[7] - 10, 4 * x[7] ^ 3 - 4 * x[6] - 8) } hinjac.hs100 <- function(x) { matrix(c(4 * x[1], 12 * x[2] ^ 3, 1, 8 * x[4], 5, 0, 0, 7, 3, 20 * x[3], 1, -1, 0, 0, 23, 2 * x[2], 0, 0, 0, 12 * x[6], -8, 8 * x[1] - 3 * x[2], 2 * x[2] - 3 * x[1], 4 * x[3], 0, 0, 5, -11), nrow = 4, byrow = TRUE) } hin2.hs100 <- function(x) -hin.hs100(x) # Needed to test old behavior hinjac2.hs100 <- function(x) -hinjac.hs100(x) # Needed to test old behavior gr.hs100.computed <- function(x) nl.grad(x, fn.hs100) hinjac.hs100.computed <- function(x) nl.jacobian(x, hin.hs100) hinjac2.hs100.computed <- function(x) nl.jacobian(x, hin2.hs100) # Test printout if nl.info passed. The word "Call:" should be in output if # passed and not if not passed. expect_stdout(slsqp(x0.hs100, fn = fn.hs100, nl.info = TRUE), "Call:", fixed = TRUE) expect_silent(slsqp(x0.hs100, fn = fn.hs100)) # No passed gradient or Inequality Jacobians slsqpTest <- slsqp(x0.hs100, fn.hs100, hin = hin.hs100, deprecatedBehavior = FALSE) slsqpControl <- nloptr(x0 = x0.hs100, eval_f = fn.hs100, eval_grad_f = gr.hs100.computed, eval_g_ineq = hin.hs100, eval_jac_g_ineq = hinjac.hs100.computed, opts = list(algorithm = "NLOPT_LD_SLSQP", xtol_rel = 1e-6, maxeval = 1000L)) expect_identical(slsqpTest$par, slsqpControl$solution) expect_identical(slsqpTest$value, slsqpControl$objective) expect_identical(slsqpTest$iter, slsqpControl$iterations) expect_identical(slsqpTest$convergence, slsqpControl$status) expect_identical(slsqpTest$message, slsqpControl$message) # Passed gradient or Inequality Jacobians slsqpTest <- slsqp(x0.hs100, fn = fn.hs100, gr = gr.hs100, hin = hin.hs100, hinjac = hinjac.hs100, deprecatedBehavior = FALSE) # Going to be reused below in new behavior test. slsqpControlhinjac <- nloptr(x0 = x0.hs100, eval_f = fn.hs100, eval_grad_f = gr.hs100, eval_g_ineq = hin.hs100, eval_jac_g_ineq = hinjac.hs100, opts = list(algorithm = "NLOPT_LD_SLSQP", xtol_rel = 1e-6, maxeval = 1000L)) expect_identical(slsqpTest$par, slsqpControlhinjac$solution) expect_identical(slsqpTest$value, slsqpControlhinjac$objective) expect_identical(slsqpTest$iter, slsqpControlhinjac$iterations) expect_identical(slsqpTest$convergence, slsqpControlhinjac$status) expect_identical(slsqpTest$message, slsqpControlhinjac$message) # Not passing equality Jacobian slsqpTest <- slsqp(x0.hs100, fn = fn.hs100, heq = hin.hs100, deprecatedBehavior = FALSE) slsqpControl <- nloptr(x0 = x0.hs100, eval_f = fn.hs100, eval_grad_f = gr.hs100.computed, eval_g_eq = hin.hs100, eval_jac_g_eq = hinjac.hs100.computed, opts = list(algorithm = "NLOPT_LD_SLSQP", xtol_rel = 1e-6, maxeval = 1000L)) expect_equal(slsqpTest$par, slsqpControl$solution, tolerance = tol) expect_equal(slsqpTest$value, slsqpControl$objective, tolerance = tol) expect_identical(slsqpTest$iter, slsqpControl$iterations) expect_identical(slsqpTest$convergence, slsqpControl$status) expect_identical(slsqpTest$message, slsqpControl$message) # Passing equality Jacobian slsqpTest <- slsqp(x0.hs100, fn = fn.hs100, gr = gr.hs100, heq = hin.hs100, heqjac = hinjac.hs100, deprecatedBehavior = FALSE) slsqpControl <- nloptr(x0 = x0.hs100, eval_f = fn.hs100, eval_grad_f = gr.hs100, eval_g_eq = hin.hs100, eval_jac_g_eq = hinjac.hs100, opts = list(algorithm = "NLOPT_LD_SLSQP", xtol_rel = 1e-6, maxeval = 1000L)) expect_identical(slsqpTest$par, slsqpControl$solution) expect_identical(slsqpTest$value, slsqpControl$objective) expect_identical(slsqpTest$iter, slsqpControl$iterations) expect_identical(slsqpTest$convergence, slsqpControl$status) expect_identical(slsqpTest$message, slsqpControl$message) # Test deprecated message expect_warning(slsqp(x0.hs100, fn = fn.hs100, hin = hin2.hs100), depMess) # Test deprecated behavior Adjust tests above when old behavior made defunct. slsqpTest <- suppressWarnings(slsqp(x0.hs100, fn = fn.hs100, gr = gr.hs100, hin = hin2.hs100, hinjac = hinjac2.hs100)) expect_identical(slsqpTest$par, slsqpControlhinjac$solution) expect_identical(slsqpTest$value, slsqpControlhinjac$objective) expect_identical(slsqpTest$iter, slsqpControlhinjac$iterations) expect_identical(slsqpTest$convergence, slsqpControlhinjac$status) expect_identical(slsqpTest$message, slsqpControlhinjac$message) nloptr/inst/tinytest/test-check.derivatives.R0000644000176200001440000000267214636244620021147 0ustar liggesusers# Copyright (C) 2023 Avraham Adler. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: test-check.derivatives # Author: Avraham Adler # Date: 6 February 2023 # # Test code in "check.derivatives" function that is not tested elsewhere. # # Changelog: # library(nloptr) options(digits=7) f <- function(x, a) {sum((x - a) ^ 2)} f_grad <- function(x, a) {2 * (x - a)} expect_warning(suppressMessages(check.derivatives(.x = 1:10, func = f, func_grad = f_grad, check_derivatives_print = "z", a = runif(10L))), "for check_derivatives_print is unknown; use 'all'", fixed = TRUE) expect_message(check.derivatives(.x = 1:10, func = f, func_grad = f_grad, check_derivatives_print = "all", a = 1:10), "] = 0e+00 ~ 1.490116e-08 [", fixed = TRUE) expect_message(check.derivatives(.x = 1:10, func = f, func_grad = f_grad, check_derivatives_print = "all", a = 1:10), "Derivative checker results: 10 error(s) detected.", fixed = TRUE) expect_message(check.derivatives(.x = 1:10, func = f, func_grad = f_grad, check_derivatives_print = "errors", a = 1:10), "] = 0e+00 ~ 2.980232e-08 [1e+00]", fixed = TRUE) nloptr/inst/tinytest/test-wrapper-nm.R0000644000176200001440000000366614636244620017642 0ustar liggesusers# Copyright (C) 2023 Avraham Adler. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: test-wrapper-nm # Author: Avraham Adler # Date: 6 February 2023 # # Test wrapper calls for Nelder-Mead and Subplex algorithms. # # Changelog: # 2023-08-23: Change _output to _stdout # library(nloptr) ## Functions for the algorithms fphv <- function(x) { 100 * (x[3L] - 10 * atan2(x[2L], x[1L]) / (2 * pi)) ^ 2 + (sqrt(x[1L] ^ 2 + x[2L] ^ 2) - 1) ^ 2 + x[3L] ^ 2 } x0 <- c(-1, 0.5, 0.5) ## Nelder-Mead # Test printout if nl.info passed. The word "Call:" should be in output if # passed and not if not passed. expect_stdout(neldermead(x0, fphv, nl.info = TRUE), "Call:", fixed = TRUE) expect_silent(neldermead(x0, fphv)) nmTest <- neldermead(x0, fphv) nmControl <- nloptr(x0 = x0, eval_f = fphv, opts = list(algorithm = "NLOPT_LN_NELDERMEAD", xtol_rel = 1e-6, maxeval = 1000L)) expect_identical(nmTest$par, nmControl$solution) expect_identical(nmTest$value, nmControl$objective) expect_identical(nmTest$iter, nmControl$iterations) expect_identical(nmTest$convergence, nmControl$status) expect_identical(nmTest$message, nmControl$message) ## Subplex # Test printout if nl.info passed. The word "Call:" should be in output if # passed and not if not passed. expect_stdout(sbplx(x0, fphv, nl.info = TRUE), "Call:", fixed = TRUE) expect_silent(sbplx(x0, fphv)) sbplTest <- sbplx(x0, fphv) sbplControl <- nloptr(x0 = x0, eval_f = fphv, opts = list(algorithm = "NLOPT_LN_SBPLX", xtol_rel = 1e-6, maxeval = 1000L)) expect_identical(sbplTest$par, sbplControl$solution) expect_identical(sbplTest$value, sbplControl$objective) expect_identical(sbplTest$iter, sbplControl$iterations) expect_identical(sbplTest$convergence, sbplControl$status) expect_identical(sbplTest$message, sbplControl$message) nloptr/inst/tinytest/test-is.nloptr.R0000644000176200001440000002215614636244620017475 0ustar liggesusers# Copyright (C) 2023 Avraham Adler. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: test-is.nloptr # Author: Avraham Adler # Date: 6 February 2023 # # Test code in "is.nloptr" function that is not tested elsewhere. # # Changelog: # library(nloptr) ctlNM <- list(algorithm = "NLOPT_LN_NELDERMEAD", xtol_rel = 1e-8) ctlLB <- list(algorithm = "NLOPT_LD_LBFGS", xtol_rel = 1e-8) # Check whether the object exists and is a list expect_false(is.nloptr(NULL)) expect_false(is.nloptr(3)) # Check whether the needed wrapper functions are supplied # This seems to ALWAYS be preempted by .checkfunargs in nloptr itself (AA) fphv <- function(x) { 100 * (x[3L] - 10 * atan2(x[2L], x[1L]) / (2 * pi)) ^ 2 + (sqrt(x[1L] ^ 2 + x[2L] ^ 2) - 1) ^ 2 + x[3L] ^ 2 } # Check whether bounds are defined for all controls expect_error(nloptr(x0 = c(-1.2, 1.5, NA), eval_f = fphv, opts = ctlNM), "x0 contains NA", fixed = TRUE) expect_error(nloptr(x0 = c(-1.2, 1.5, 3), eval_f = fphv, lb = c(-2, -2), opts = ctlNM), "length(lb) != length(x0)", fixed = TRUE) expect_error(nloptr(x0 = c(-1.2, 1.5, 3), eval_f = fphv, ub = c(-2, -2), opts = ctlNM), "length(ub) != length(x0)", fixed = TRUE) # Check whether the initial value is within the bounds expect_error(nloptr(x0 = c(-1.2, 1.5, 3), eval_f = fphv, lb = c(-1, -1, -1), opts = ctlNM), "at least one element in x0 < lb", fixed = TRUE) expect_error(nloptr(x0 = c(-1.2, 1.5, 3), eval_f = fphv, ub = c(2, 2, 2), opts = ctlNM), "at least one element in x0 > ub", fixed = TRUE) # check if an existing algorithm was supplied expect_error(nloptr(x0 = c(-1.2, 1.5, 3), eval_f = fphv, opts = list(algorithm = "NLOPT_LN_NEDERMEAD", xtol_rel = 1e-8)), "Incorrect algorithm supplied. Use one of the", fixed = TRUE) # Check that we don't have NA's if we evaluate the objective function in x0. f0 <- function(x) 3 * x ^ 1.5 - 2 * x ^ 0.5 expect_error(suppressWarnings(nloptr(x0 = -1, eval_f = f0, opts = ctlNM)), "objective in x0 returns NA", fixed = TRUE) f0 <- function(x) 3 * x ^ 4 - 12 * x ^ 3 g0 <- function(x) 4 * sqrt(x) # Yes it's not the gradient. This is a unit test!! expect_error(suppressWarnings(nloptr(x0 = -1, f0, g0, opts = ctlLB)), "objective in x0 returns NA", fixed = TRUE) g0 <- function(x) c(4, 2) # Yes it's not the gradient. This is a unit test!! expect_error(suppressWarnings(nloptr(x0 = -1, f0, g0, opts = ctlLB)), "wrong number of elements in gradient of objective", fixed = TRUE) # check whether algorithm needs a derivative g0 <- function(x) 12 * x ^ 3 - 36 * x ^ 2 # Actual gradient ## Just checking... expect_silent(nloptr(x0 = -1, f0, g0, opts = ctlLB)) expect_warning(nloptr(x0 = -1, f0, g0, opts = ctlNM), "a gradient was supplied for the objective function", fixed = TRUE) expect_error(nloptr(x0 = -1, f0, opts = ctlLB), "A gradient for the objective function is needed", fixed = TRUE) # Malformed objects solely intended to trigger tests: ## eval_f test expect_error(is.nloptr(list(eval_f = "Hello")), "eval_f is not a function") ## eval_g_ineq test expect_error(is.nloptr(list(eval_f = fphv, eval_g_ineq = "GoodBye")), "eval_g_ineq is not a function") ## eval_g_eq test expect_error(is.nloptr(list(eval_f = fphv, eval_g_eq = 27)), "eval_g_eq is not a function") ## MULTIVARIATE FUNCTION WITH CONSTRAINTS x0 <- c(2, 2) ub <- c(5, 5) lb <- c(-1, -1) fn <- function(x) (x[1L] - 1) ^ 2 + (x[2L] - 1) ^ 2 + 1 gr <- function(x) c(2 * (x[1L] - 1), 2 * (x[2L] - 1)) fnl <- function(x) list("objective" = fn(x), "gradient" = gr(x)) fnlNA <- function(x) list("objective" = NA_real_, "gradient" = gr(x)) hin <- function(x) c(1.44 - x[1L] ^ 2, 2.197 - x[2L] ^ 3) hinjac <- function(x) matrix(c(-2 * x[1L], 0, 0, -3 * x[2L] ^ 2), 2L, 2L) hinl <- function(x) list("constraints" = hin(x), "jacobian" = hinjac(x)) hinlNA <- function(x) { list("constraints" = hin(NA_real_), "jacobian" = hinjac(x)) } heq <- function(x) c(x[1L] * x[2L] - 2.55, x[1L] - x[2L] - 0.2) heqjac <- function(x) matrix(c(x[2L], 1, x[1L], -1), 2L) heql <- function(x) list("constraints" = heq(x), "jacobian" = heqjac(x)) heqlNA <- function(x) { list("constraints" = heq(NA_real_), "jacobian" = heqjac(x)) } optSol <- c(1.7, 1.5) optVal <- 1.74 # Test simple error messages first; roughly in their order in is.nloptr.R Many # of these are testing the list versions of their functional parents. A list # version is when a function and its gradient are returned in the same call. expect_error(nloptr(x0, fnlNA, opts = list(algorithm = "NLOPT_LN_COBYLA", xtol_rel = 1e-8)), "objective in x0 returns NA", fixed = TRUE) hinE <- function(x) c(4, NA_real_) expect_error(nloptr(x0, fn, eval_g_ineq = hinE, opts = list(algorithm = "NLOPT_LN_COBYLA", xtol_rel = 1e-8)), "inequality constraints in x0 returns NA", fixed = TRUE) expect_error(nloptr(x0, fnl, eval_g_ineq = hinlNA, opts = list(algorithm = "NLOPT_LD_SLSQP", xtol_rel = 1e-8)), "inequality constraints in x0 returns NA", fixed = TRUE) hinjacE <- function(x) c(-2 * x[1L], NA_real_) expect_error(nloptr(x0, fn, gr, eval_g_ineq = hin, eval_jac_g_ineq = hinjacE, opts = list(algorithm = "NLOPT_LD_SLSQP", xtol_rel = 1e-8)), "jacobian of inequality constraints in x0 returns NA", fixed = TRUE) hinjacE <- function(x) c(-2 * x[1L], -3 * x[2L] ^ 2) expect_error(nloptr(x0, fn, gr, eval_g_ineq = hin, eval_jac_g_ineq = hinjacE, opts = list(algorithm = "NLOPT_LD_SLSQP", xtol_rel = 1e-8)), "wrong number of elements in jacobian of inequality", fixed = TRUE) expect_warning(nloptr(x0, fn, eval_g_ineq = hin, eval_jac_g_ineq = hinjac, opts = list(algorithm = "NLOPT_LN_COBYLA", xtol_rel = 1e-8)), "gradient was supplied for the inequality constraints", fixed = TRUE) expect_error(nloptr(x0, fn, gr, eval_g_ineq = hin, opts = list(algorithm = "NLOPT_LD_SLSQP", xtol_rel = 1e-8)), "gradient for the inequality constraints is needed", fixed = TRUE) heqE <- function(x) c(x[1L] * x[2L] - 2.55, NA_real_) expect_error(nloptr(x0, fn, eval_g_eq = heqE, opts = list(algorithm = "NLOPT_LN_COBYLA", xtol_rel = 1e-8)), "equality constraints in x0 returns NA", fixed = TRUE) expect_error(nloptr(x0, fn, eval_g_eq = heqlNA, opts = list(algorithm = "NLOPT_LN_COBYLA", xtol_rel = 1e-8)), "equality constraints in x0 returns NA", fixed = TRUE) heqjacE <- function(x) c(-2 * x[1L], NA_real_) expect_error(nloptr(x0, fn, gr, eval_g_eq = heq, eval_jac_g_eq = heqjacE, opts = list(algorithm = "NLOPT_LD_SLSQP", xtol_rel = 1e-8)), "jacobian of equality constraints in x0 returns NA", fixed = TRUE) heqjacE <- function(x) c(-2 * x[1L], -3 * x[2L] ^ 2) expect_error(nloptr(x0, fn, gr, eval_g_eq = heq, eval_jac_g_eq = heqjacE, opts = list(algorithm = "NLOPT_LD_SLSQP", xtol_rel = 1e-8)), "wrong number of elements in jacobian of equality", fixed = TRUE) expect_warning(nloptr(x0, fn, eval_g_eq = heq, eval_jac_g_eq = heqjac, opts = list(algorithm = "NLOPT_GN_ISRES", xtol_rel = 1e-8)), "gradient was supplied for the equality constraints", fixed = TRUE) expect_error(nloptr(x0, fn, gr, eval_g_eq = heq, opts = list(algorithm = "NLOPT_LD_SLSQP", xtol_rel = 1e-8)), "gradient for the equality constraints is needed", fixed = TRUE) expect_error(nloptr(x0, fn, gr, eval_g_eq = heq, eval_jac_g_eq = heqjac, opts = list(algorithm = "NLOPT_LD_LBFGS", xtol_rel = 1e-8)), "If you want to use equality constraints, then you should use one", fixed = TRUE) expect_error(nloptr(x0, fn, gr, eval_g_eq = heq, eval_jac_g_eq = heqjac, opts = list(algorithm = "NLOPT_LD_AUGLAG", xtol_rel = 1e-8)), "needs a local optimizer; specify an algorithm and termination", fixed = TRUE) expect_error(nloptr(x0, fn, gr, eval_g_ineq = hin, eval_jac_g_ineq = hinjac, opts = list(algorithm = "NLOPT_LD_SLSQP", xtol_rel = 1e-8, tol_constraints_ineq = rep(0.1, 3L))), "The vector tol_constraints_ineq in the options list", fixed = TRUE) expect_error(nloptr(x0, fn, gr, eval_g_eq = heq, eval_jac_g_eq = heqjac, opts = list(algorithm = "NLOPT_LD_SLSQP", xtol_rel = 1e-8, tol_constraints_eq = rep(0.1, 3L))), "The vector tol_constraints_eq in the options list", fixed = TRUE) nloptr/inst/tinytest/test-nloptr.print.options.R0000644000176200001440000000160614636244620021705 0ustar liggesusers# Copyright (C) 2023 Avraham Adler. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: test-nloptr.print.options # Author: Avraham Adler # Date: 7 February 2023 # # Test code in "nloptr.print.options" function that is not tested elsewhere. # # Changelog: # 2023-08-23: tinytest has no "snapshot" equivalent so removed that test. # Converted the others to tinytest format. # library(nloptr) expect_stdout(nloptr.print.options(opts.show = "check_derivatives"), "user-supplied analytic gradients with finite difference", fixed = TRUE) expect_stdout(nloptr(3, function(x) x ^ 2 + 1, opts = list(algorithm = "NLOPT_LN_NELDERMEAD", xtol_rel = 1e-8, print_options_doc = TRUE)), "user-supplied analytic gradients with finite difference", fixed = TRUE) nloptr/inst/tinytest/test-wrapper-tnewton.R0000644000176200001440000001043614636244620020717 0ustar liggesusers# Copyright (C) 2023 Avraham Adler. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: test-wrapper-tnewton # Author: Avraham Adler # Date: 6 February 2023 # # Test wrapper calls to Preconditioned Truncated Newton algorithms. # # Changelog: # 2023-08-23: Change _output to _stdout # library(nloptr) ## Functions for the algorithms flb <- function(x) { p <- length(x) sum(c(1, rep(4, p - 1)) * (x - c(1, x[-p]) ^ 2) ^ 2) } x0 <- rep(3, 25L) lb <- rep(2, 25L) ub <- rep(4, 25L) ctl <- list(xtol_rel = 1e-8) # Test printout if nl.info passed. The word "Call:" should be in output if # passed and not if not passed. expect_stdout(tnewton(x0, flb, nl.info = TRUE), "Call:", fixed = TRUE) expect_silent(tnewton(x0, flb)) # No passed gradient; Restart; Precond tnTest <- tnewton(x0, flb, lower = lb, upper = ub, control = ctl) tnControl <- nloptr(x0 = x0, eval_f = flb, eval_grad_f = function(x) nl.grad(x, flb), lb = lb, ub = ub, opts = list(algorithm = "NLOPT_LD_TNEWTON_PRECOND_RESTART", xtol_rel = 1e-8, maxeval = 1000L)) expect_identical(tnTest$par, tnControl$solution) expect_identical(tnTest$value, tnControl$objective) expect_identical(tnTest$iter, tnControl$iterations) expect_identical(tnTest$convergence, tnControl$status) expect_identical(tnTest$message, tnControl$message) # No passed gradient: Restart; No Precond tnTest <- tnewton(x0, flb, lower = lb, upper = ub, control = ctl, precond = FALSE) tnControl <- nloptr(x0 = x0, eval_f = flb, eval_grad_f = function(x) nl.grad(x, flb), lb = lb, ub = ub, opts = list(algorithm = "NLOPT_LD_TNEWTON_RESTART", xtol_rel = 1e-8, maxeval = 1000L)) expect_identical(tnTest$par, tnControl$solution) expect_identical(tnTest$value, tnControl$objective) expect_identical(tnTest$iter, tnControl$iterations) expect_identical(tnTest$convergence, tnControl$status) expect_identical(tnTest$message, tnControl$message) # No passed gradient: No Restart; Precond tnTest <- tnewton(x0, flb, lower = lb, upper = ub, control = ctl, restart = FALSE) tnControl <- nloptr(x0 = x0, eval_f = flb, eval_grad_f = function(x) nl.grad(x, flb), lb = lb, ub = ub, opts = list(algorithm = "NLOPT_LD_TNEWTON_PRECOND", xtol_rel = 1e-8, maxeval = 1000L)) expect_identical(tnTest$par, tnControl$solution) expect_identical(tnTest$value, tnControl$objective) expect_identical(tnTest$iter, tnControl$iterations) expect_identical(tnTest$convergence, tnControl$status) expect_identical(tnTest$message, tnControl$message) # No passed gradient: No Restart; No Precond tnTest <- tnewton(x0, flb, lower = lb, upper = ub, control = ctl, restart = FALSE, precond = FALSE) tnControl <- nloptr(x0 = x0, eval_f = flb, eval_grad_f = function(x) nl.grad(x, flb), lb = lb, ub = ub, opts = list(algorithm = "NLOPT_LD_TNEWTON", xtol_rel = 1e-8, maxeval = 1000L)) expect_identical(tnTest$par, tnControl$solution) expect_identical(tnTest$value, tnControl$objective) expect_identical(tnTest$iter, tnControl$iterations) expect_identical(tnTest$convergence, tnControl$status) expect_identical(tnTest$message, tnControl$message) # Passed gradient fr <- function(x) {100 * (x[2L] - x[1L] ^ 2) ^ 2 + (1 - x[1L]) ^ 2} gr <- function(x) { .expr2 <- x[2L] - x[1L] ^ 2 .expr5 <- 1 - x[1L] c(-(2 * .expr5 + 100 * (2 * (2 * x[1L] * .expr2))), 100 * (2 * .expr2)) } tnTest <- tnewton(c(-1.2, 2), fr, gr, control = ctl) tnControl <- nloptr(x0 = c(-1.2, 2), eval_f = fr, eval_grad_f = gr, opts = list(algorithm = "NLOPT_LD_TNEWTON_PRECOND_RESTART", xtol_rel = 1e-8, maxeval = 1000L)) expect_identical(tnTest$par, tnControl$solution) expect_identical(tnTest$value, tnControl$objective) expect_identical(tnTest$iter, tnControl$iterations) expect_identical(tnTest$convergence, tnControl$status) expect_identical(tnTest$message, tnControl$message) nloptr/inst/tinytest/test-simple.R0000644000176200001440000000467714636244620017046 0ustar liggesusers# Copyright (C) 2010 Jelmer Ypma. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: test-simple.R # Author: Jelmer Ypma # Date: 20 June 2010 # # Maintenance assumed by Avraham Adler (AA) on 2023-02-10 # # Example showing how to solve a simple constrained problem. # # min x^2 # s.t. x >= 5 # # re-formulate constraint to be of form g(x) <= 0 # 5 - x <= 0 # we could use a bound constraint as well here # # CHANGELOG: # 2014-05-05: Changed example to use unit testing framework testthat. # 2019-12-12: Corrected warnings and using updated testtthat framework (AA) # 2023-02-07: Remove wrapping tests in "test_that" to reduce duplication. (AA) # library(nloptr) tol <- sqrt(.Machine$double.eps) # Test simple constrained optimization problem with gradient information. # Objective function eval_f <- function(x) x ^ 2 # Gradient of objective function. eval_grad_f <- function(x) 2 * x # Inequality constraint function. eval_g_ineq <- function(x) 5 - x # Jacobian of constraint. eval_jac_g_ineq <- function(x) -1 # Optimal solution. solution.opt <- 5 # Solve using NLOPT_LD_MMA with gradient information supplied in separate # function. res <- nloptr(x0 = 1, eval_f = eval_f, eval_grad_f = eval_grad_f, eval_g_ineq = eval_g_ineq, eval_jac_g_ineq = eval_jac_g_ineq, opts = list("algorithm" = "NLOPT_LD_MMA", "xtol_rel" = 1e-4)) # Run some checks on the optimal solution. expect_equal(res$solution, solution.opt, tolerance = tol) # Check whether constraints are violated (up to specified tolerance). expect_true(eval_g_ineq(res$solution) <= res$options$tol_constraints_ineq) # Test simple constrained optimization problem without gradient information. # Solve using NLOPT_LN_COBYLA without gradient information res <- nloptr(x0 = 1, eval_f = eval_f, eval_g_ineq = eval_g_ineq, opts = list("algorithm" = "NLOPT_LN_COBYLA", "xtol_rel" = 1e-6, "tol_constraints_ineq" = 1e-6)) # Run some checks on the optimal solution. expect_equal(res$solution, solution.opt, tolerance = 1e-6) # Check whether constraints are violated (up to specified tolerance). expect_true(eval_g_ineq(res$solution) <= res$options$tol_constraints_ineq) nloptr/inst/tinytest/test-wrapper-mlsl.R0000644000176200001440000000672314636244620020174 0ustar liggesusers# Copyright (C) 2023 Avraham Adler. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: test-wrapper-mlsl # Author: Avraham Adler # Date: 6 February 2023 # # Test wrapper calls MLSL algorithm. # # Changelog: # 2023-08-23: Change _stdout to _stdout and _lte to _true # library(nloptr) tol <- 8e-8 ## Functions for the algorithms hartmann6 <- function(x) { a <- c(1, 1.2, 3, 3.2) A <- matrix(c(10, 0.05, 3, 17, 3, 10, 3.5, 8, 17, 17, 1.7, 0.05, 3.5, 0.1, 10, 10, 1.7, 8, 17, 0.1, 8, 14, 8, 14), nrow = 4L, ncol = 6L) B <- matrix(c(0.1312, 0.2329, 0.2348, 0.4047, 0.1696, 0.4135, 0.1451, 0.8828, 0.5569, 0.8307, 0.3522, 0.8732, 0.0124, 0.3736, 0.2883, 0.5743, 0.8283, 0.1004, 0.3047, 0.1091, 0.5886, 0.9991, 0.6650, 0.0381), nrow = 4L, ncol = 6L) fun <- 0 for (i in 1:4) { fun <- fun - a[i] * exp(-sum(A[i, ] * (x - B[i, ]) ^ 2)) } fun } hart.gr <- function(x) nl.grad(x, hartmann6) x0 <- lb <- rep(0, 6L) ub <- rep(1, 6L) ctl <- list(xtol_rel = 1e-8, maxeval = 750L) lopt <- list(algorithm = "NLOPT_LD_LBFGS", xtol_rel = 1e-4) # Test printout if nl.info passed. The word "Call:" should be in output if # passed and not if not passed. expect_stdout(mlsl(x0 = x0, hartmann6, lower = lb, upper = ub, nl.info = TRUE), "Call:", fixed = TRUE) expect_silent(mlsl(x0 = x0, hartmann6, lower = lb, upper = ub)) # Test Warning expect_warning(mlsl(x0, hartmann6, hart.gr, lb, ub, local.method = "MMA"), "Only gradient-based LBFGS available as local met", fixed = TRUE) # No passed gradient: Low discrepancy mlslTest <- mlsl(x0, hartmann6, lower = lb, upper = ub, control = ctl) mlslControl <- nloptr(x0 = x0, eval_f = hartmann6, eval_grad_f = hart.gr, lb = lb, ub = ub, opts = list(algorithm = "NLOPT_GD_MLSL_LDS", xtol_rel = 1e-8, maxeval = 750L, local_opts = lopt)) expect_identical(mlslTest$par, mlslControl$solution) expect_identical(mlslTest$value, mlslControl$objective) expect_identical(mlslTest$iter, mlslControl$iterations) expect_identical(mlslTest$convergence, mlslControl$status) expect_identical(mlslTest$message, mlslControl$message) # Passed gradient: No low discrepancy mlslTest <- mlsl(x0, hartmann6, hart.gr, lb, ub, low.discrepancy = FALSE, control = ctl) mlslControl <- nloptr(x0 = x0, eval_f = hartmann6, eval_grad_f = hart.gr, lb = lb, ub = ub, opts = list(algorithm = "NLOPT_GD_MLSL", xtol_rel = 1e-8, maxeval = 750L, local_opts = lopt)) expect_equal(mlslTest$par, mlslControl$solution, tolerance = tol) expect_equal(mlslTest$value, mlslControl$objective, tolerance = tol) # See https://nlopt.readthedocs.io/en/latest/NLopt_Reference/#stopping-criteria # "This is not a strict maximum: the number of function evaluations may exceed # maxeval slightly, depending upon the algorithm." expect_true(abs(mlslTest$iter - mlslControl$iterations) <= 10L) expect_identical(mlslTest$convergence, mlslControl$status) expect_identical(mlslTest$message, mlslControl$message) nloptr/inst/tinytest/test-wrapper-ccsaq.R0000644000176200001440000001226614636244620020316 0ustar liggesusers# Copyright (C) 2023 Avraham Adler. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: test-wrapper-ccsaq # Author: Avraham Adler # Date: 6 February 2023 # # Test wrapper calls to ccsaq algorithm # # Changelog: # 2023-08-23: Change _output to _stdout # library(nloptr) depMess <- paste("The old behavior for hin >= 0 has been deprecated. Please", "restate the inequality to be <=0. The ability to use the old", "behavior will be removed in a future release.") # Taken from example x0.hs100 <- c(1, 2, 0, 4, 0, 1, 1) fn.hs100 <- function(x) {(x[1] - 10) ^ 2 + 5 * (x[2] - 12) ^ 2 + x[3] ^ 4 + 3 * (x[4] - 11) ^ 2 + 10 * x[5] ^ 6 + 7 * x[6] ^ 2 + x[7] ^ 4 - 4 * x[6] * x[7] - 10 * x[6] - 8 * x[7]} hin.hs100 <- function(x) {c( 2 * x[1] ^ 2 + 3 * x[2] ^ 4 + x[3] + 4 * x[4] ^ 2 + 5 * x[5] - 127, 7 * x[1] + 3 * x[2] + 10 * x[3] ^ 2 + x[4] - x[5] - 282, 23 * x[1] + x[2] ^ 2 + 6 * x[6] ^ 2 - 8 * x[7] - 196, 4 * x[1] ^ 2 + x[2] ^ 2 - 3 * x[1] * x[2] + 2 * x[3] ^ 2 + 5 * x[6] - 11 * x[7]) } gr.hs100 <- function(x) { c( 2 * x[1] - 20, 10 * x[2] - 120, 4 * x[3] ^ 3, 6 * x[4] - 66, 60 * x[5] ^ 5, 14 * x[6] - 4 * x[7] - 10, 4 * x[7] ^ 3 - 4 * x[6] - 8) } hinjac.hs100 <- function(x) { matrix(c(4 * x[1], 12 * x[2] ^ 3, 1, 8 * x[4], 5, 0, 0, 7, 3, 20 * x[3], 1, -1, 0, 0, 23, 2 * x[2], 0, 0, 0, 12 * x[6], -8, 8 * x[1] - 3 * x[2], 2 * x[2] - 3 * x[1], 4 * x[3], 0, 0, 5, -11), nrow = 4, byrow = TRUE) } # In older version, the HS100 was not properly copied, so the gradients caused # an issue. This has since been corrected, but leaving the calls in to test the # gradient/Jacobian creation routines. gr.hs100.computed <- function(x) nl.grad(x, fn.hs100) hin2.hs100 <- function(x) -hin.hs100(x) # Needed to test old behavior hinjac2.hs100 <- function(x) -hinjac.hs100(x) # Needed to test old behavior hinjac.hs100.computed <- function(x) nl.jacobian(x, hin.hs100) # See example hinjac2.hs100.computed <- function(x) nl.jacobian(x, hin2.hs100) # See example ctl <- list(xtol_rel = 1e-8, maxeval = 1000L) # Test normal silent running expect_silent(ccsaq(x0.hs100, fn.hs100)) # Provides incorrect answer expect_silent(ccsaq(x0.hs100, fn.hs100, hin = hin.hs100, hinjac = hinjac.hs100, deprecatedBehavior = FALSE)) # Test printout if nl.info passed. The word "Call:" should be in output if # passed and not if not passed. expect_stdout(ccsaq(x0.hs100, fn.hs100, nl.info = TRUE, deprecatedBehavior = FALSE), "Call:", fixed = TRUE) # Control for CCSAQ HS100 ## Exact ccsaqControlE <- nloptr( x0 = x0.hs100, eval_f = fn.hs100, eval_grad_f = gr.hs100, eval_g_ineq = hin.hs100, eval_jac_g_ineq = hinjac.hs100, opts = list(algorithm = "NLOPT_LD_CCSAQ", xtol_rel = 1e-8, maxeval = 1000L) ) ## Computed ccsaqControlC <- nloptr( x0 = x0.hs100, eval_f = fn.hs100, eval_grad_f = gr.hs100.computed, eval_g_ineq = hin.hs100, eval_jac_g_ineq = hinjac.hs100.computed, opts = list(algorithm = "NLOPT_LD_CCSAQ", xtol_rel = 1e-8, maxeval = 1000L) ) # Test no passed gradient or Jacobian (so algorithm computes). ccsaqTest <- ccsaq(x0.hs100, fn.hs100, hin = hin.hs100, control = ctl, deprecatedBehavior = FALSE) expect_identical(ccsaqTest$par, ccsaqControlC$solution) expect_identical(ccsaqTest$value, ccsaqControlC$objective) expect_identical(ccsaqTest$iter, ccsaqControlC$iterations) expect_identical(ccsaqTest$convergence, ccsaqControlC$status) expect_identical(ccsaqTest$message, ccsaqControlC$message) # Test passed gradient and Jacobian ## Exact ccsaqTest <- ccsaq(x0.hs100, fn.hs100, gr = gr.hs100, hin = hin.hs100, hinjac = hinjac.hs100, control = ctl, deprecatedBehavior = FALSE) expect_identical(ccsaqTest$par, ccsaqControlE$solution) expect_identical(ccsaqTest$value, ccsaqControlE$objective) expect_identical(ccsaqTest$iter, ccsaqControlE$iterations) expect_identical(ccsaqTest$convergence, ccsaqControlE$status) expect_identical(ccsaqTest$message, ccsaqControlE$message) ## Computed ccsaqTest <- ccsaq(x0.hs100, fn.hs100, gr = gr.hs100.computed, hin = hin.hs100, hinjac = hinjac.hs100.computed, control = ctl, deprecatedBehavior = FALSE) expect_identical(ccsaqTest$par, ccsaqControlC$solution) expect_identical(ccsaqTest$value, ccsaqControlC$objective) expect_identical(ccsaqTest$iter, ccsaqControlC$iterations) expect_identical(ccsaqTest$convergence, ccsaqControlC$status) expect_identical(ccsaqTest$message, ccsaqControlC$message) # Test deprecated behavior message expect_warning(ccsaq(x0.hs100, fn.hs100, hin = hin2.hs100), depMess) # Test deprecated behavior ccsaqTest <- suppressWarnings(ccsaq(x0.hs100, fn.hs100, gr = gr.hs100, hin = hin2.hs100, hinjac = hinjac2.hs100, control = ctl)) expect_identical(ccsaqTest$par, ccsaqControlE$solution) expect_identical(ccsaqTest$value, ccsaqControlE$objective) expect_identical(ccsaqTest$iter, ccsaqControlE$iterations) expect_identical(ccsaqTest$convergence, ccsaqControlE$status) expect_identical(ccsaqTest$message, ccsaqControlE$message) nloptr/inst/tinytest/test-hs071.R0000644000176200001440000000564414636244620016412 0ustar liggesusers# Copyright (C) 2010 Jelmer Ypma. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: test-hs071.R # Author: Jelmer Ypma # Date: 10 June 2010 # # Maintenance assumed by Avraham Adler (AA) on 2023-02-10 # # Example problem, number 71 from the Hock-Schittkowsky test suite. # # \min_{x} x1*x4*(x1 + x2 + x3) + x3 # s.t. # x1*x2*x3*x4 >= 25 # x1^2 + x2^2 + x3^2 + x4^2 = 40 # 1 <= x1,x2,x3,x4 <= 5 # # we re-write the inequality as # 25 - x1*x2*x3*x4 <= 0 # # and the equality as # x1^2 + x2^2 + x3^2 + x4^2 - 40 = 0 # # x0 = (1,5,5,1) # # Optimal solution = (1.00000000, 4.74299963, 3.82114998, 1.37940829) # # CHANGELOG: # 2014-05-05: Changed example to use unit testing framework testthat. # 2019-12-12: Corrected warnings and using updated testtthat framework (AA) # 2023-02-07: Remove wrapping tests in "test_that" to reduce duplication. (AA) # library(nloptr) # f(x) = x1*x4*(x1 + x2 + x3) + x3 eval_f <- function(x) { list("objective" = x[1] * x[4] * (x[1] + x[2] + x[3]) + x[3], "gradient" = c(x[1] * x[4] + x[4] * (x[1] + x[2] + x[3]), x[1] * x[4], x[1] * x[4] + 1, x[1] * (x[1] + x[2] + x[3]))) } # Inequality constraints. eval_g_ineq <- function(x) { constr <- c(25 - x[1] * x[2] * x[3] * x[4]) grad <- c(-x[2] * x[3] * x[4], -x[1] * x[3] * x[4], -x[1] * x[2] * x[4], -x[1] * x[2] * x[3]) list("constraints" = constr, "jacobian" = grad) } # Equality constraints. eval_g_eq <- function(x) { constr <- c(x[1] ^ 2 + x[2] ^ 2 + x[3] ^ 2 + x[4] ^ 2 - 40) grad <- c(2.0 * x[1], 2.0 * x[2], 2.0 * x[3], 2.0 * x[4]) list("constraints" = constr, "jacobian" = grad) } # Initial values. x0 <- c(1, 5, 5, 1) # Lower and upper bounds of control. lb <- c(1, 1, 1, 1) ub <- c(5, 5, 5, 5) # Optimal solution. solution.opt <- c(1.00000000, 4.74299963, 3.82114998, 1.37940829) # Set optimization options. local_opts <- list("algorithm" = "NLOPT_LD_MMA", "xtol_rel" = 1.0e-7) opts <- list("algorithm" = "NLOPT_LD_AUGLAG", "xtol_rel" = 1.0e-7, "maxeval" = 1000, "local_opts" = local_opts, "print_level" = 0) # Do optimization. res <- nloptr(x0 = x0, eval_f = eval_f, lb = lb, ub = ub, eval_g_ineq = eval_g_ineq, eval_g_eq = eval_g_eq, opts = opts) # Run some checks on the optimal solution. expect_equal(res$solution, solution.opt, tolerance = 1e-5) expect_true(all(res$solution >= lb)) expect_true(all(res$solution <= ub)) # Check whether constraints are violated (up to specified tolerance). expect_true( eval_g_ineq(res$solution)$constr <= res$options$tol_constraints_ineq ) expect_equal(eval_g_eq(res$solution)$constr, 0, tolerance = res$options$tol_constraints_eq) nloptr/inst/tinytest/test-banana.R0000644000176200001440000000416714636244620016767 0ustar liggesusers# Copyright (C) 2010 Jelmer Ypma. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: test-banana.R # Author: Jelmer Ypma # Date: 10 June 2010 # # Maintenance assumed by Avraham Adler (AA) on 2023-02-10 # # # Example showing how to solve the Rosenbrock Banana function. # # Changelog: # 2013-10-27: Changed example to use unit testing framework testthat. # 2019-12-12: Corrected warnings and using updated testtthat framework (AA) # 2023-02-07: Remove wrapping tests in "test_that" to reduce duplication. (AA) library(nloptr) tol <- sqrt(.Machine$double.eps) # Test Rosenbrock Banana optimization with objective and gradient in separate # functions. # initial values x0 <- c(-1.2, 1) opts <- list("algorithm" = "NLOPT_LD_LBFGS", "xtol_rel" = 1.0e-8, "print_level" = 0) ## Rosenbrock Banana function and gradient in separate functions eval_f <- function(x) { 100 * (x[2] - x[1] * x[1]) ^ 2 + (1 - x[1]) ^ 2 } eval_grad_f <- function(x) { c(-400 * x[1] * (x[2] - x[1] * x[1]) - 2 * (1 - x[1]), 200 * (x[2] - x[1] * x[1])) } # Solve Rosenbrock Banana function. res <- nloptr(x0 = x0, eval_f = eval_f, eval_grad_f = eval_grad_f, opts = opts) # Check results. expect_equal(res$objective, 0, tolerance = tol) expect_equal(res$solution, c(1, 1), tolerance = tol) # Test Rosenbrock Banana optimization with objective and gradient in the same # function. # Rosenbrock Banana function and gradient in one function. This can be used to # economize on calculations eval_f_list <- function(x) { list("objective" = 100 * (x[2] - x[1] * x[1]) ^ 2 + (1 - x[1]) ^ 2, "gradient" = c(-400 * x[1] * (x[2] - x[1] * x[1]) - 2 * (1 - x[1]), 200 * (x[2] - x[1] * x[1]))) } # Solve Rosenbrock Banana function. using an objective function that returns a # list with the objective value and its gradient res <- nloptr(x0 = x0, eval_f = eval_f_list, opts = opts) # Check results. expect_equal(res$objective, 0, tolerance = tol) expect_equal(res$solution, c(1, 1), tolerance = tol) nloptr/inst/tinytest/test-nloptr.add.default.options.R0000644000176200001440000000101614636244620022717 0ustar liggesusers# Copyright (C) 2023 Avraham Adler. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: test-nloptr.add.default.options # Author: Avraham Adler # Date: 8 February 2023 # # Test code in nloptr.add.default.options function that is not tested elsewhere. # # Changelog: # library(nloptr) fn <- function(x) x ^ 2 - 4 * x + 4 expect_warning(nloptr(3, fn, opts = list(algorithm = "NLOPT_LN_NELDERMEAD")), "No termination criterion specified, using default", fixed = TRUE) nloptr/inst/tinytest/test-wrapper-cobyla.R0000644000176200001440000001064314636244620020472 0ustar liggesusers# Copyright (C) 2023 Avraham Adler. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: test-wrapper-cobyla # Author: Avraham Adler # Date: 6 February 2023 # # Test wrapper calls to cobyla, bobyqa, and newuoa algorithms # # CHANGELOG # # 2023-08-23: Change _output to _stdout # 2024-06-04: Switched desired direction of the hin/hinjac inequalities, leaving # the old behavior as the default for now. Also cleaned up the HS100 # example (Avraham Adler). # library(nloptr) depMess <- paste("The old behavior for hin >= 0 has been deprecated. Please", "restate the inequality to be <=0. The ability to use the old", "behavior will be removed in a future release.") ## Functions for COBYLA, BOBYQA, and NEWUOA x0.hs100 <- c(1, 2, 0, 4, 0, 1, 1) fn.hs100 <- function(x) {(x[1] - 10) ^ 2 + 5 * (x[2] - 12) ^ 2 + x[3] ^ 4 + 3 * (x[4] - 11) ^ 2 + 10 * x[5] ^ 6 + 7 * x[6] ^ 2 + x[7] ^ 4 - 4 * x[6] * x[7] - 10 * x[6] - 8 * x[7]} hin.hs100 <- function(x) {c( 2 * x[1] ^ 2 + 3 * x[2] ^ 4 + x[3] + 4 * x[4] ^ 2 + 5 * x[5] - 127, 7 * x[1] + 3 * x[2] + 10 * x[3] ^ 2 + x[4] - x[5] - 282, 23 * x[1] + x[2] ^ 2 + 6 * x[6] ^ 2 - 8 * x[7] - 196, 4 * x[1] ^ 2 + x[2] ^ 2 - 3 * x[1] * x[2] + 2 * x[3] ^ 2 + 5 * x[6] - 11 * x[7]) } hin2.hs100 <- function(x) -hin.hs100(x) # Needed to test old behavior rbf <- function(x) {(1 - x[1]) ^ 2 + 100 * (x[2] - x[1] ^ 2) ^ 2} ctl <- list(xtol_rel = 1e-8) # Test printout if nl.info passed. The word "Call:" should be in output if # passed and not if not passed. expect_stdout(cobyla(x0.hs100, fn.hs100, nl.info = TRUE, deprecatedBehavior = FALSE), "Call:", fixed = TRUE) expect_stdout(bobyqa(x0.hs100, fn.hs100, nl.info = TRUE), "Call:", fixed = TRUE) expect_stdout(newuoa(x0.hs100, fn.hs100, nl.info = TRUE), "Call:", fixed = TRUE) expect_silent(cobyla(x0.hs100, fn.hs100, deprecatedBehavior = FALSE)) expect_silent(bobyqa(x0.hs100, fn.hs100)) expect_silent(newuoa(x0.hs100, fn.hs100)) # Test COBYLA algorithm cobylaTest <- cobyla(x0.hs100, fn.hs100, hin = hin.hs100, control = ctl, deprecatedBehavior = FALSE) cobylaControl <- nloptr(x0 = x0.hs100, eval_f = fn.hs100, eval_g_ineq = hin.hs100, opts = list(algorithm = "NLOPT_LN_COBYLA", xtol_rel = 1e-8, maxeval = 1000L)) expect_identical(cobylaTest$par, cobylaControl$solution) expect_identical(cobylaTest$value, cobylaControl$objective) expect_identical(cobylaTest$iter, cobylaControl$iterations) expect_identical(cobylaTest$convergence, cobylaControl$status) expect_identical(cobylaTest$message, cobylaControl$message) # Test deprecated message expect_warning(cobyla(x0.hs100, fn.hs100, hin = hin2.hs100), depMess) # Test deprecated behavior cobylaTest <- suppressWarnings(cobyla(x0.hs100, fn.hs100, hin = hin2.hs100, control = ctl)) expect_identical(cobylaTest$par, cobylaControl$solution) expect_identical(cobylaTest$value, cobylaControl$objective) expect_identical(cobylaTest$iter, cobylaControl$iterations) expect_identical(cobylaTest$convergence, cobylaControl$status) expect_identical(cobylaTest$message, cobylaControl$message) # Test BOBYQA algorithm bobyqaTest <- bobyqa(c(0, 0), rbf, lower = c(0, 0), upper = c(0.5, 0.5)) bobyqaControl <- nloptr(x0 = c(0, 0), eval_f = rbf, lb = c(0, 0), ub = c(0.5, 0.5), opts = list(algorithm = "NLOPT_LN_BOBYQA", xtol_rel = 1e-6, maxeval = 1000L)) expect_identical(bobyqaTest$par, bobyqaControl$solution) expect_identical(bobyqaTest$value, bobyqaControl$objective) expect_identical(bobyqaTest$iter, bobyqaControl$iterations) expect_identical(bobyqaTest$convergence, bobyqaControl$status) expect_identical(bobyqaTest$message, bobyqaControl$message) # Test NEWUOA algorithm newuoaTest <- newuoa(c(1, 2), rbf) newuoaControl <- nloptr(x0 = c(1, 2), eval_f = rbf, opts = list(algorithm = "NLOPT_LN_NEWUOA", xtol_rel = 1e-6, maxeval = 1000L)) expect_identical(newuoaTest$par, newuoaControl$solution) expect_identical(newuoaTest$value, newuoaControl$objective) expect_identical(newuoaTest$iter, newuoaControl$iterations) expect_identical(newuoaTest$convergence, newuoaControl$status) expect_identical(newuoaTest$message, newuoaControl$message) nloptr/inst/tinytest/test-banana-global.R0000644000176200001440000001044514636244620020221 0ustar liggesusers# Copyright (C) 2011 Jelmer Ypma. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: test-banana-global.R # Author: Jelmer Ypma # Date: 8 August 2011 # # Maintenance assumed by Avraham Adler (AA) on 2023-02-10 # # Example showing how to solve the Rosenbrock Banana function # using a global optimization algorithm. # # Changelog: # 2013-10-27: Changed example to use unit testing framework testthat. # 2019-12-12: Corrected warnings and using updated testtthat framework (AA) # 2023-02-07: Remove wrapping tests in "test_that" to reduce duplication. (AA) library(nloptr) tol <- sqrt(.Machine$double.eps) # Test Rosenbrock Banana optimization with global optimizer NLOPT_GD_MLSL. ## Rosenbrock Banana objective function eval_f <- function(x) 100 * (x[2] - x[1] * x[1]) ^ 2 + (1 - x[1]) ^ 2 eval_grad_f <- function(x) { c(-400 * x[1] * (x[2] - x[1] * x[1]) - 2 * (1 - x[1]), 200 * (x[2] - x[1] * x[1])) } # initial values x0 <- c(-1.2, 1) # lower and upper bounds lb <- c(-3, -3) ub <- c(3, 3) # Define optimizer options. local_opts <- list("algorithm" = "NLOPT_LD_LBFGS", "xtol_rel" = 1e-4) opts <- list("algorithm" = "NLOPT_GD_MLSL", "maxeval" = 10000, "population" = 4, "local_opts" = local_opts) # Solve Rosenbrock Banana function. res <- nloptr(x0 = x0, lb = lb, ub = ub, eval_f = eval_f, eval_grad_f = eval_grad_f, opts = opts) # Check results. expect_equal(res$objective, 0, tolerance = tol) expect_equal(res$solution, c(1, 1), tolerance = tol) # Test Rosenbrock Banana optimization with global optimizer NLOPT_GN_ISRES. # Define optimizer options. # For unit testing we want to set the random seed for repeatability. opts <- list("algorithm" = "NLOPT_GN_ISRES", "maxeval" = 10000, "population" = 100, "ranseed" = 2718) # Solve Rosenbrock Banana function. res <- nloptr(x0 = x0, lb = lb, ub = ub, eval_f = eval_f, opts = opts) # Check results. expect_equal(res$objective, 0, tolerance = 1e-4) expect_equal(res$solution, c(1, 1), tolerance = 1e-2) # Test Rosenbrock Banana optimization with global optimizer NLOPT_GN_CRS2_LM # with random seed defined # Define optimizer options. # For unit testing we want to set the random seed for replicability. opts <- list("algorithm" = "NLOPT_GN_CRS2_LM", "maxeval" = 10000, "population" = 100, "ranseed" = 2718) # Solve Rosenbrock Banana function. res1 <- nloptr(x0 = x0, lb = lb, ub = ub, eval_f = eval_f, opts = opts) # Define optimizer options. # This optimization uses a different seed for the random number generator and # gives a different result opts <- list("algorithm" = "NLOPT_GN_CRS2_LM", "maxeval" = 10000, "population" = 100, "ranseed" = 3141) # Solve Rosenbrock Banana function. res2 <- nloptr(x0 = x0, lb = lb, ub = ub, eval_f = eval_f, opts = opts) # Define optimizer options. # This optimization uses the same seed for the random number generator and gives # the same results as res2 opts <- list("algorithm" = "NLOPT_GN_CRS2_LM", "maxeval" = 10000, "population" = 100, "ranseed" = 3141) # Solve Rosenbrock Banana function. res3 <- nloptr(x0 = x0, lb = lb, ub = ub, eval_f = eval_f, opts = opts) # Check results. expect_equal(res1$objective, 0, tolerance = 1e-4) expect_equal(res1$solution, c(1, 1), tolerance = 1e-2) expect_equal(res2$objective, 0, tolerance = 1e-4) expect_equal(res2$solution, c(1, 1), tolerance = 1e-2) expect_equal(res3$objective, 0, tolerance = 1e-4) expect_equal(res3$solution, c(1, 1), tolerance = 1e-2) # Expect that the results are different for res1 and res2. expect_false(res1$objective == res2$objective) expect_false(all(res1$solution == res2$solution)) # Expect that the results are identical for res2 and res3. expect_identical(res2$objective, res3$objective) expect_identical(res2$solution, res3$solution) nloptr/tools/0000755000176200001440000000000014636244620012737 5ustar liggesusersnloptr/tools/winlibs.R0000644000176200001440000000047714172206364014537 0ustar liggesusers# Build against mingw-w64 build of nlopt if(!file.exists("../windows/nlopt-2.7.1/include/nlopt.hpp")){ download.file("https://github.com/rwinlib/nlopt/archive/v2.7.1.zip", "lib.zip", quiet = TRUE) dir.create("../windows", showWarnings = FALSE) unzip("lib.zip", exdir = "../windows") unlink("lib.zip") } nloptr/tools/cmake_call.sh0000755000176200001440000000205614636244620015354 0ustar liggesusers#! /bin/sh : ${R_HOME=$(R RHOME)} RSCRIPT_BIN=${R_HOME}/bin/Rscript NCORES=`${RSCRIPT_BIN} -e "cat(min(2, parallel::detectCores(logical = FALSE), na.rm=TRUE))"` cd src #### CMAKE CONFIGURATION #### . ./scripts/cmake_config.sh # Compile NLOpt from source sh ./scripts/nlopt_download.sh ${RSCRIPT_BIN} dot() { file=$1; shift; . "$file"; } dot ./scripts/r_config.sh "" ${RSCRIPT_BIN} --vanilla -e 'getRversion() > "4.0.0"' | grep TRUE > /dev/null if [ $? -eq 0 ]; then CMAKE_ADD_AR="-D CMAKE_AR=${AR}" CMAKE_ADD_RANLIB="-D CMAKE_RANLIB=${RANLIB}" else CMAKE_ADD_AR="" CMAKE_ADD_RANLIB="" fi mkdir nlopt-build mkdir nlopt cd nlopt-build ${CMAKE_BIN} \ -D BUILD_SHARED_LIBS=OFF \ -D CMAKE_BUILD_TYPE=Release \ -D CMAKE_INSTALL_PREFIX=../nlopt \ -D NLOPT_CXX=ON \ -D NLOPT_GUILE=OFF \ -D NLOPT_MATLAB=OFF \ -D NLOPT_OCTAVE=OFF \ -D NLOPT_PYTHON=OFF \ -D NLOPT_SWIG=OFF \ -D NLOPT_TESTS=OFF \ ${CMAKE_ADD_AR} ${CMAKE_ADD_RANLIB} ../nlopt-src make -j${NCORES} make install cd .. mv nlopt/lib* nlopt/lib # Cleanup sh ./scripts/nlopt_cleanup.sh nloptr/README.md0000644000176200001440000001130114636244620013052 0ustar liggesusers # [**nloptr**](https://astamm.github.io/nloptr/) [![R-CMD-check](https://github.com/astamm/nloptr/workflows/R-CMD-check/badge.svg)](https://github.com/astamm/nloptr/actions) [![test-coverage](https://github.com/astamm/nloptr/workflows/test-coverage/badge.svg)](https://github.com/astamm/nloptr/actions) [![Codecov test coverage](https://codecov.io/gh/astamm/nloptr/branch/master/graph/badge.svg)](https://app.codecov.io/gh/astamm/nloptr?branch=master) [![pkgdown](https://github.com/astamm/nloptr/workflows/pkgdown/badge.svg)](https://github.com/astamm/nloptr/actions) [![CRAN status](https://www.r-pkg.org/badges/version/nloptr)](https://CRAN.R-project.org/package=nloptr) [**nloptr**](https://astamm.github.io/nloptr/) is an R interface to [NLopt](https://nlopt.readthedocs.io/en/latest/), a free/open-source library for nonlinear optimization started by Steven G. Johnson, providing a common interface for a number of different free optimization routines available online as well as original implementations of various other algorithms. It can be used to solve general nonlinear programming problems with nonlinear constraints and lower and upper bounds for the controls, such as $$ \min_{x \in \mathbb{R}^n} \quad f(x), $$ s.t. $g(x) \le 0$, $h(x) = 0$ and $\ell \le x \le u$. The [NLopt](https://nlopt.readthedocs.io/en/latest/) library is available under the GNU Lesser General Public License (LGPL), and the copyrights are owned by a variety of authors. See the [website](https://nlopt.readthedocs.io/en/latest/Citing_NLopt/) for information on how to cite NLopt and the algorithms you use. ## Installation ### Windows On Windows, either the latest version `2.7.1` of [NLopt](https://nlopt.readthedocs.io/en/latest/) from [rwinlib](https://github.com/rwinlib/nlopt) (windows-release) or the `v2.7.1` build from the `rtools42` toolchain (windows2022-devel) is used. So there is nothing else to be done. ### Linux and macOS On Unix-like platforms, we use `pkg-config` to find a suitable system build of [NLopt](https://nlopt.readthedocs.io/en/latest/) (i.e. with version `>= 2.7.0`). - If it is found it is used. - Otherwise, [NLopt](https://nlopt.readthedocs.io/en/latest/) 2.7.1 is built from included sources using [CMake](https://cmake.org). In this case, a binary of [CMake](https://cmake.org) stored in environment variable `CMAKE_BIN` is searched on the `PATH` and, alternatively, on a macOS-specific location. If that variable cannot be set, install will abort suggesting ways of installing [CMake](https://cmake.org). The minimal version requirement on `cmake` is `>= 3.15.0`. ### Installing [CMake](https://cmake.org) (macOS and Linux only) Minimal version requirement for `cmake` is `3.2.0`. You can install [CMake](https://cmake.org) by following [CMake installation instructions](https://cmake.org/resources/). The important thing is that you add the [CMake](https://cmake.org) binary to your `PATH`: - On macOS, you can install [CMake](https://cmake.org) and then run it. In the menu bar, there is an item *How to Install For Command Line Use* which you can click on to have proper instructions on how to update your `PATH`. Note that the location of the [CMake](https://cmake.org) binary is always `/Applications/CMake.app/Contents/bin/cmake`. Hence, [**nloptr**](https://astamm.github.io/nloptr/) knows where to find it even if you do not update your `PATH`. - On Linux, it will be automatically added unless you specifically change the default installation directory before building [CMake](https://cmake.org). Alternatively, you can set an environment variable `CMAKE_BIN` pointing to a [CMake](https://cmake.org) binary of your liking on your computer for [**nloptr**](https://astamm.github.io/nloptr/) to use. ### Installing [**nloptr**](https://astamm.github.io/nloptr/) You can install [**nloptr**](https://astamm.github.io/nloptr/) from CRAN using: install.packages("nloptr") Alternatively, you can install the development version from GitHub: # install.packages("remotes") remotes::install_github("astamm/nloptr") ## Acknowledgments I would like to express my sincere gratitude to [Dirk Eddelbuettel](https://github.com/eddelbuettel), [Jeroen Ooms](https://github.com/jeroen), [Tomas Kalibera](https://github.com/kalibera), Uwe Ligges and [Jelmer Ypma](https://github.com/jyypma) for their contributions and the very instructive discussions about the pros and cons of various build strategies in R packages. ## Reference Steven G. Johnson, The NLopt nonlinear-optimization package, nloptr/build/0000755000176200001440000000000014636312375012701 5ustar liggesusersnloptr/build/vignette.rds0000644000176200001440000000030214636312375015233 0ustar liggesusersb```b`aad`b2 1# '/() MAaȠrCgIq*  :ּb4.y) 3G;<E T [fN*ސ89 d Bw(,/׃ @?{49'ݣ\)%ziE@ wG-nloptr/configure0000755000176200001440000037437614636312376013536 0ustar liggesusers#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.71 for nloptr 2.0.0. # # # Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation, # Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh as_nop=: if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else $as_nop case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi # Reset variables that may have inherited troublesome values from # the environment. # IFS needs to be set, to space, tab, and newline, in precisely that order. # (If _AS_PATH_WALK were called with IFS unset, it would have the # side effect of setting IFS to empty, thus disabling word splitting.) # Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl IFS=" "" $as_nl" PS1='$ ' PS2='> ' PS4='+ ' # Ensure predictable behavior from utilities with locale-dependent output. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # We cannot yet rely on "unset" to work, but we need these variables # to be unset--not just set to an empty or harmless value--now, to # avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct # also avoids known problems related to "unset" and subshell syntax # in other old shells (e.g. bash 2.01 and pdksh 5.2.14). for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH do eval test \${$as_var+y} \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done # Ensure that fds 0, 1, and 2 are open. if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="as_nop=: if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else \$as_nop case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ) then : else \$as_nop exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 blah=\$(echo \$(echo blah)) test x\"\$blah\" = xblah || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1" if (eval "$as_required") 2>/dev/null then : as_have_required=yes else $as_nop as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null then : else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null then : CONFIG_SHELL=$as_shell as_have_required=yes if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null then : break 2 fi fi done;; esac as_found=false done IFS=$as_save_IFS if $as_found then : else $as_nop if { test -f "$SHELL" || test -f "$SHELL.exe"; } && as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null then : CONFIG_SHELL=$SHELL as_have_required=yes fi fi if test "x$CONFIG_SHELL" != x then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno then : printf "%s\n" "$0: This script requires a shell more modern than all" printf "%s\n" "$0: the shells that I found on your system." if test ${ZSH_VERSION+y} ; then printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." else printf "%s\n" "$0: Please tell bug-autoconf@gnu.org about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_nop # --------- # Do nothing but, unlike ":", preserve the value of $?. as_fn_nop () { return $? } as_nop=as_fn_nop # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null then : eval 'as_fn_append () { eval $1+=\$2 }' else $as_nop as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null then : eval 'as_fn_arith () { as_val=$(( $* )) }' else $as_nop as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_nop # --------- # Do nothing but, unlike ":", preserve the value of $?. as_fn_nop () { return $? } as_nop=as_fn_nop # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } # Determine whether it's possible to make 'echo' print without a newline. # These variables are no longer used directly by Autoconf, but are AC_SUBSTed # for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac # For backward compatibility with old third-party macros, we provide # the shell variables $as_echo and $as_echo_n. New code should use # AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. as_echo='printf %s\n' as_echo_n='printf %s' rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='nloptr' PACKAGE_TARNAME='nloptr' PACKAGE_VERSION='2.0.0' PACKAGE_STRING='nloptr 2.0.0' PACKAGE_BUGREPORT='' PACKAGE_URL='' ac_subst_vars='LTLIBOBJS LIBOBJS NLOPT_CPPFLAGS have_cmake NLOPT_LIBS NLOPT_INCLUDE have_pkg_config CXXCPP OBJEXT EXEEXT ac_ct_CXX CPPFLAGS LDFLAGS CXXFLAGS CXX target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir runstatedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking ' ac_precious_vars='build_alias host_alias target_alias CXX CXXFLAGS LDFLAGS LIBS CPPFLAGS CCC CXXCPP' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -runstatedir | --runstatedir | --runstatedi | --runstated \ | --runstate | --runstat | --runsta | --runst | --runs \ | --run | --ru | --r) ac_prev=runstatedir ;; -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ | --run=* | --ru=* | --r=*) runstatedir=$ac_optarg ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures nloptr 2.0.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/nloptr] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of nloptr 2.0.0:";; esac cat <<\_ACEOF Some influential environment variables: CXX C++ compiler command CXXFLAGS C++ compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CXXCPP C++ preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to the package provider. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for configure.gnu first; this name is used for a wrapper for # Metaconfig's "Configure" on case-insensitive file systems. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF nloptr configure 2.0.0 generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_cxx_try_compile LINENO # ---------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest.beam if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext then : ac_retval=0 else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_compile # ac_fn_cxx_try_cpp LINENO # ------------------------ # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err } then : ac_retval=0 else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_cpp ac_configure_args_raw= for ac_arg do case $ac_arg in *\'*) ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append ac_configure_args_raw " '$ac_arg'" done case $ac_configure_args_raw in *$as_nl*) ac_safe_unquote= ;; *) ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab. ac_unsafe_a="$ac_unsafe_z#~" ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; esac cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by nloptr $as_me 2.0.0, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac printf "%s\n" "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Sanitize IFS. IFS=" "" $as_nl" # Save into config.log some information that might help in debugging. { echo printf "%s\n" "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo printf "%s\n" "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then printf "%s\n" "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then printf "%s\n" "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && printf "%s\n" "$as_me: caught signal $ac_signal" printf "%s\n" "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h printf "%s\n" "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. if test -n "$CONFIG_SITE"; then ac_site_files="$CONFIG_SITE" elif test "x$prefix" != xNONE; then ac_site_files="$prefix/share/config.site $prefix/etc/config.site" else ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi for ac_site_file in $ac_site_files do case $ac_site_file in #( */*) : ;; #( *) : ac_site_file=./$ac_site_file ;; esac if test -f "$ac_site_file" && test -r "$ac_site_file"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 printf "%s\n" "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 printf "%s\n" "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Test code for whether the C++ compiler supports C++98 (global declarations) ac_cxx_conftest_cxx98_globals=' // Does the compiler advertise C++98 conformance? #if !defined __cplusplus || __cplusplus < 199711L # error "Compiler does not advertise C++98 conformance" #endif // These inclusions are to reject old compilers that // lack the unsuffixed header files. #include #include // and are *not* freestanding headers in C++98. extern void assert (int); namespace std { extern int strcmp (const char *, const char *); } // Namespaces, exceptions, and templates were all added after "C++ 2.0". using std::exception; using std::strcmp; namespace { void test_exception_syntax() { try { throw "test"; } catch (const char *s) { // Extra parentheses suppress a warning when building autoconf itself, // due to lint rules shared with more typical C programs. assert (!(strcmp) (s, "test")); } } template struct test_template { T const val; explicit test_template(T t) : val(t) {} template T add(U u) { return static_cast(u) + val; } }; } // anonymous namespace ' # Test code for whether the C++ compiler supports C++98 (body of main) ac_cxx_conftest_cxx98_main=' assert (argc); assert (! argv[0]); { test_exception_syntax (); test_template tt (2.0); assert (tt.add (4) == 6.0); assert (true && !false); } ' # Test code for whether the C++ compiler supports C++11 (global declarations) ac_cxx_conftest_cxx11_globals=' // Does the compiler advertise C++ 2011 conformance? #if !defined __cplusplus || __cplusplus < 201103L # error "Compiler does not advertise C++11 conformance" #endif namespace cxx11test { constexpr int get_val() { return 20; } struct testinit { int i; double d; }; class delegate { public: delegate(int n) : n(n) {} delegate(): delegate(2354) {} virtual int getval() { return this->n; }; protected: int n; }; class overridden : public delegate { public: overridden(int n): delegate(n) {} virtual int getval() override final { return this->n * 2; } }; class nocopy { public: nocopy(int i): i(i) {} nocopy() = default; nocopy(const nocopy&) = delete; nocopy & operator=(const nocopy&) = delete; private: int i; }; // for testing lambda expressions template Ret eval(Fn f, Ret v) { return f(v); } // for testing variadic templates and trailing return types template auto sum(V first) -> V { return first; } template auto sum(V first, Args... rest) -> V { return first + sum(rest...); } } ' # Test code for whether the C++ compiler supports C++11 (body of main) ac_cxx_conftest_cxx11_main=' { // Test auto and decltype auto a1 = 6538; auto a2 = 48573953.4; auto a3 = "String literal"; int total = 0; for (auto i = a3; *i; ++i) { total += *i; } decltype(a2) a4 = 34895.034; } { // Test constexpr short sa[cxx11test::get_val()] = { 0 }; } { // Test initializer lists cxx11test::testinit il = { 4323, 435234.23544 }; } { // Test range-based for int array[] = {9, 7, 13, 15, 4, 18, 12, 10, 5, 3, 14, 19, 17, 8, 6, 20, 16, 2, 11, 1}; for (auto &x : array) { x += 23; } } { // Test lambda expressions using cxx11test::eval; assert (eval ([](int x) { return x*2; }, 21) == 42); double d = 2.0; assert (eval ([&](double x) { return d += x; }, 3.0) == 5.0); assert (d == 5.0); assert (eval ([=](double x) mutable { return d += x; }, 4.0) == 9.0); assert (d == 5.0); } { // Test use of variadic templates using cxx11test::sum; auto a = sum(1); auto b = sum(1, 2); auto c = sum(1.0, 2.0, 3.0); } { // Test constructor delegation cxx11test::delegate d1; cxx11test::delegate d2(); cxx11test::delegate d3(45); } { // Test override and final cxx11test::overridden o1(55464); } { // Test nullptr char *c = nullptr; } { // Test template brackets test_template<::test_template> v(test_template(12)); } { // Unicode literals char const *utf8 = u8"UTF-8 string \u2500"; char16_t const *utf16 = u"UTF-8 string \u2500"; char32_t const *utf32 = U"UTF-32 string \u2500"; } ' # Test code for whether the C compiler supports C++11 (complete). ac_cxx_conftest_cxx11_program="${ac_cxx_conftest_cxx98_globals} ${ac_cxx_conftest_cxx11_globals} int main (int argc, char **argv) { int ok = 0; ${ac_cxx_conftest_cxx98_main} ${ac_cxx_conftest_cxx11_main} return ok; } " # Test code for whether the C compiler supports C++98 (complete). ac_cxx_conftest_cxx98_program="${ac_cxx_conftest_cxx98_globals} int main (int argc, char **argv) { int ok = 0; ${ac_cxx_conftest_cxx98_main} return ok; } " # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 printf "%s\n" "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 printf "%s\n" "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 printf "%s\n" "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 printf "%s\n" "$as_me: former value: \`$ac_old_val'" >&2;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 printf "%s\n" "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ## Set R_HOME, respecting an environment variable if set : ${R_HOME=$(R RHOME)} if test -z "${R_HOME}"; then as_fn_error $? "Could not determine R_HOME." "$LINENO" 5 fi CXX=`"${R_HOME}/bin/R" CMD config CXX` if test -z "${CXX}"; then as_fn_error $? "No C++ compiler available" "$LINENO" 5 fi CXXFLAGS=`"${R_HOME}/bin/R" CMD config CXXFLAGS` CPPFLAGS=`"${R_HOME}/bin/R" CMD config CPPFLAGS` CXX11FLAGS=`"${R_HOME}/bin/R" CMD config CXX11FLAGS` ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC clang++ do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CXX+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 printf "%s\n" "$CXX" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC clang++ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CXX+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 printf "%s\n" "$ac_ct_CXX" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler works" >&5 printf %s "checking whether the C++ compiler works... " >&6; } ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else $as_nop ac_file='' fi if test -z "$ac_file" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C++ compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C++ compiler default output file name" >&5 printf %s "checking for C++ compiler default output file name... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 printf "%s\n" "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 printf %s "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else $as_nop { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 printf "%s\n" "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 printf %s "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot run C++ compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 printf "%s\n" "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 printf %s "checking for suffix of object files... " >&6; } if test ${ac_cv_objext+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 printf "%s\n" "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C++" >&5 printf %s "checking whether the compiler supports GNU C++... " >&6; } if test ${ac_cv_cxx_compiler_gnu+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : ac_compiler_gnu=yes else $as_nop ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 printf "%s\n" "$ac_cv_cxx_compiler_gnu" >&6; } ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+y} ac_save_CXXFLAGS=$CXXFLAGS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 printf %s "checking whether $CXX accepts -g... " >&6; } if test ${ac_cv_prog_cxx_g+y} then : printf %s "(cached) " >&6 else $as_nop ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : ac_cv_prog_cxx_g=yes else $as_nop CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : else $as_nop ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : ac_cv_prog_cxx_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 printf "%s\n" "$ac_cv_prog_cxx_g" >&6; } if test $ac_test_CXXFLAGS; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_prog_cxx_stdcxx=no if test x$ac_prog_cxx_stdcxx = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++11 features" >&5 printf %s "checking for $CXX option to enable C++11 features... " >&6; } if test ${ac_cv_prog_cxx_11+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cxx_11=no ac_save_CXX=$CXX cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_cxx_conftest_cxx11_program _ACEOF for ac_arg in '' -std=gnu++11 -std=gnu++0x -std=c++11 -std=c++0x -qlanglvl=extended0x -AA do CXX="$ac_save_CXX $ac_arg" if ac_fn_cxx_try_compile "$LINENO" then : ac_cv_prog_cxx_cxx11=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cxx_cxx11" != "xno" && break done rm -f conftest.$ac_ext CXX=$ac_save_CXX fi if test "x$ac_cv_prog_cxx_cxx11" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cxx_cxx11" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx11" >&5 printf "%s\n" "$ac_cv_prog_cxx_cxx11" >&6; } CXX="$CXX $ac_cv_prog_cxx_cxx11" fi ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx11 ac_prog_cxx_stdcxx=cxx11 fi fi if test x$ac_prog_cxx_stdcxx = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++98 features" >&5 printf %s "checking for $CXX option to enable C++98 features... " >&6; } if test ${ac_cv_prog_cxx_98+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cxx_98=no ac_save_CXX=$CXX cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_cxx_conftest_cxx98_program _ACEOF for ac_arg in '' -std=gnu++98 -std=c++98 -qlanglvl=extended -AA do CXX="$ac_save_CXX $ac_arg" if ac_fn_cxx_try_compile "$LINENO" then : ac_cv_prog_cxx_cxx98=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cxx_cxx98" != "xno" && break done rm -f conftest.$ac_ext CXX=$ac_save_CXX fi if test "x$ac_cv_prog_cxx_cxx98" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cxx_cxx98" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx98" >&5 printf "%s\n" "$ac_cv_prog_cxx_cxx98" >&6; } CXX="$CXX $ac_cv_prog_cxx_cxx98" fi ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx98 ac_prog_cxx_stdcxx=cxx98 fi fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 printf %s "checking how to run the C++ preprocessor... " >&6; } if test -z "$CXXCPP"; then if test ${ac_cv_prog_CXXCPP+y} then : printf %s "(cached) " >&6 else $as_nop # Double quotes because $CXX needs to be expanded for CXXCPP in "$CXX -E" cpp /lib/cpp do ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO" then : else $as_nop # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO" then : # Broken: success on invalid input. continue else $as_nop # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok then : break fi done ac_cv_prog_CXXCPP=$CXXCPP fi CXXCPP=$ac_cv_prog_CXXCPP else ac_cv_prog_CXXCPP=$CXXCPP fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 printf "%s\n" "$CXXCPP" >&6; } ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO" then : else $as_nop # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO" then : # Broken: success on invalid input. continue else $as_nop # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok then : else $as_nop { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC clang++ do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CXX+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 printf "%s\n" "$CXX" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC clang++ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CXX+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 printf "%s\n" "$ac_ct_CXX" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C++" >&5 printf %s "checking whether the compiler supports GNU C++... " >&6; } if test ${ac_cv_cxx_compiler_gnu+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : ac_compiler_gnu=yes else $as_nop ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 printf "%s\n" "$ac_cv_cxx_compiler_gnu" >&6; } ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+y} ac_save_CXXFLAGS=$CXXFLAGS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 printf %s "checking whether $CXX accepts -g... " >&6; } if test ${ac_cv_prog_cxx_g+y} then : printf %s "(cached) " >&6 else $as_nop ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : ac_cv_prog_cxx_g=yes else $as_nop CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : else $as_nop ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : ac_cv_prog_cxx_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 printf "%s\n" "$ac_cv_prog_cxx_g" >&6; } if test $ac_test_CXXFLAGS; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_prog_cxx_stdcxx=no if test x$ac_prog_cxx_stdcxx = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++11 features" >&5 printf %s "checking for $CXX option to enable C++11 features... " >&6; } if test ${ac_cv_prog_cxx_11+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cxx_11=no ac_save_CXX=$CXX cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_cxx_conftest_cxx11_program _ACEOF for ac_arg in '' -std=gnu++11 -std=gnu++0x -std=c++11 -std=c++0x -qlanglvl=extended0x -AA do CXX="$ac_save_CXX $ac_arg" if ac_fn_cxx_try_compile "$LINENO" then : ac_cv_prog_cxx_cxx11=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cxx_cxx11" != "xno" && break done rm -f conftest.$ac_ext CXX=$ac_save_CXX fi if test "x$ac_cv_prog_cxx_cxx11" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cxx_cxx11" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx11" >&5 printf "%s\n" "$ac_cv_prog_cxx_cxx11" >&6; } CXX="$CXX $ac_cv_prog_cxx_cxx11" fi ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx11 ac_prog_cxx_stdcxx=cxx11 fi fi if test x$ac_prog_cxx_stdcxx = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++98 features" >&5 printf %s "checking for $CXX option to enable C++98 features... " >&6; } if test ${ac_cv_prog_cxx_98+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cxx_98=no ac_save_CXX=$CXX cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_cxx_conftest_cxx98_program _ACEOF for ac_arg in '' -std=gnu++98 -std=c++98 -qlanglvl=extended -AA do CXX="$ac_save_CXX $ac_arg" if ac_fn_cxx_try_compile "$LINENO" then : ac_cv_prog_cxx_cxx98=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cxx_cxx98" != "xno" && break done rm -f conftest.$ac_ext CXX=$ac_save_CXX fi if test "x$ac_cv_prog_cxx_cxx98" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cxx_cxx98" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx98" >&5 printf "%s\n" "$ac_cv_prog_cxx_cxx98" >&6; } CXX="$CXX $ac_cv_prog_cxx_cxx98" fi ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx98 ac_prog_cxx_stdcxx=cxx98 fi fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ## Default to build from source need_to_build="yes" ## But: Can we use pkg-config? # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_have_pkg_config+y} then : printf %s "(cached) " >&6 else $as_nop case $have_pkg_config in [\\/]* | ?:[\\/]*) ac_cv_path_have_pkg_config="$have_pkg_config" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_have_pkg_config="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_have_pkg_config" && ac_cv_path_have_pkg_config="no" ;; esac fi have_pkg_config=$ac_cv_path_have_pkg_config if test -n "$have_pkg_config"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $have_pkg_config" >&5 printf "%s\n" "$have_pkg_config" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi ## If yes, also check for whether pkg-config knows nlopt if test x"${have_pkg_config}" != x"no"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if pkg-config knows NLopt" >&5 printf %s "checking if pkg-config knows NLopt... " >&6; } if pkg-config --exists nlopt; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ## Since nlopt has been found, test for minimal version requirement { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pkg-config checking NLopt version" >&5 printf %s "checking for pkg-config checking NLopt version... " >&6; } if pkg-config --atleast-version=2.7.0 nlopt; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: >= 2.7.0" >&5 printf "%s\n" ">= 2.7.0" >&6; } nlopt_include=$(pkg-config --cflags nlopt) nlopt_libs=$(pkg-config --libs nlopt) NLOPT_INCLUDE="${nlopt_include}" NLOPT_LIBS="${nlopt_libs}" need_to_build="no" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: insufficient: NLopt 2.7.0 or later is preferred." >&5 printf "%s\n" "insufficient: NLopt 2.7.0 or later is preferred." >&6; } fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi ## So do we need to build if test x"${need_to_build}" != x"no"; then # Extract the first word of "cmake", so it can be a program name with args. set dummy cmake; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_have_cmake+y} then : printf %s "(cached) " >&6 else $as_nop case $have_cmake in [\\/]* | ?:[\\/]*) ac_cv_path_have_cmake="$have_cmake" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_have_cmake="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_have_cmake" && ac_cv_path_have_cmake="no" ;; esac fi have_cmake=$ac_cv_path_have_cmake if test -n "$have_cmake"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $have_cmake" >&5 printf "%s\n" "$have_cmake" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test x"${have_cmake}" == x"no"; then . src/scripts/cmake_config.sh if test -z "${CMAKE_BIN}"; then ## also error to end configure here as_fn_error $? "Could not find 'cmake'." "$LINENO" 5 fi fi ## 'uname -m' on M1 give x86_64 which is ... not helping machine=`"${R_HOME}/bin/Rscript" -e 'cat(Sys.info()["machine"])'` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: using NLopt via local cmake build on ${machine} " >&5 printf "%s\n" "using NLopt via local cmake build on ${machine} " >&6; } tools/cmake_call.sh ## cmake_call.sh installs into nlopt/lib, headers are copied nlopt_include="" nlopt_libs="nlopt/lib/libnlopt.a" fi ## Now use all the values NLOPT_CPPFLAGS="$nlopt_include" NLOPT_LIBS="$nlopt_libs" ac_config_files="$ac_config_files src/Makevars" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 printf "%s\n" "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' # Transform confdefs.h into DEFS. # Protect against shell expansion while executing Makefile rules. # Protect against Makefile macro expansion. # # If the first sed substitution is executed (which looks for macros that # take arguments), then branch to the quote section. Otherwise, # look for a macro that doesn't take arguments. ac_script=' :mline /\\$/{ N s,\\\n,, b mline } t clear :clear s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g t quote s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g t quote b any :quote s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g s/\[/\\&/g s/\]/\\&/g s/\$/$$/g H :any ${ g s/^\n// s/\n/ /g p } ' DEFS=`sed -n "$ac_script" confdefs.h` ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh as_nop=: if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else $as_nop case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi # Reset variables that may have inherited troublesome values from # the environment. # IFS needs to be set, to space, tab, and newline, in precisely that order. # (If _AS_PATH_WALK were called with IFS unset, it would have the # side effect of setting IFS to empty, thus disabling word splitting.) # Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl IFS=" "" $as_nl" PS1='$ ' PS2='> ' PS4='+ ' # Ensure predictable behavior from utilities with locale-dependent output. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # We cannot yet rely on "unset" to work, but we need these variables # to be unset--not just set to an empty or harmless value--now, to # avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct # also avoids known problems related to "unset" and subshell syntax # in other old shells (e.g. bash 2.01 and pdksh 5.2.14). for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH do eval test \${$as_var+y} \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done # Ensure that fds 0, 1, and 2 are open. if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null then : eval 'as_fn_append () { eval $1+=\$2 }' else $as_nop as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null then : eval 'as_fn_arith () { as_val=$(( $* )) }' else $as_nop as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # Determine whether it's possible to make 'echo' print without a newline. # These variables are no longer used directly by Autoconf, but are AC_SUBSTed # for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac # For backward compatibility with old third-party macros, we provide # the shell variables $as_echo and $as_echo_n. New code should use # AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. as_echo='printf %s\n' as_echo_n='printf %s' rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by nloptr $as_me 2.0.0, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE Configuration files: $config_files Report bugs to the package provider." _ACEOF ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ nloptr config.status 2.0.0 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" Copyright (C) 2021 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) printf "%s\n" "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) printf "%s\n" "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --he | --h | --help | --hel | -h ) printf "%s\n" "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX printf "%s\n" "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "src/Makevars") CONFIG_FILES="$CONFIG_FILES src/Makevars" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" eval set X " :F $CONFIG_FILES " shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 printf "%s\n" "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`printf "%s\n" "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi nloptr/man/0000755000176200001440000000000014636244620012352 5ustar liggesusersnloptr/man/neldermead.Rd0000644000176200001440000000503114636244620014740 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/nm.R \name{neldermead} \alias{neldermead} \title{Nelder-Mead Simplex} \usage{ neldermead( x0, fn, lower = NULL, upper = NULL, nl.info = FALSE, control = list(), ... ) } \arguments{ \item{x0}{starting point for searching the optimum.} \item{fn}{objective function that is to be minimized.} \item{lower, upper}{lower and upper bound constraints.} \item{nl.info}{logical; shall the original NLopt info been shown.} \item{control}{list of options, see \code{nl.opts} for help.} \item{...}{additional arguments passed to the function.} } \value{ List with components: \item{par}{the optimal solution found so far.} \item{value}{the function value corresponding to \code{par}.} \item{iter}{number of (outer) iterations, see \code{maxeval}.} \item{convergence}{integer code indicating successful completion (> 0) or a possible error number (< 0).} \item{message}{character string produced by NLopt and giving additional information.} } \description{ An implementation of almost the original Nelder-Mead simplex algorithm. } \details{ Provides explicit support for bound constraints, using essentially the method proposed in Box. Whenever a new point would lie outside the bound constraints the point is moved back exactly onto the constraint. } \note{ The author of NLopt would tend to recommend the Subplex method instead. } \examples{ # Fletcher and Powell's helic valley fphv <- function(x) 100*(x[3] - 10*atan2(x[2], x[1])/(2*pi))^2 + (sqrt(x[1]^2 + x[2]^2) - 1)^2 +x[3]^2 x0 <- c(-1, 0, 0) neldermead(x0, fphv) # 1 0 0 # Powell's Singular Function (PSF) psf <- function(x) (x[1] + 10*x[2])^2 + 5*(x[3] - x[4])^2 + (x[2] - 2*x[3])^4 + 10*(x[1] - x[4])^4 x0 <- c(3, -1, 0, 1) neldermead(x0, psf) # 0 0 0 0, needs maximum number of function calls \dontrun{ # Bounded version of Nelder-Mead rosenbrock <- function(x) { ## Rosenbrock Banana function 100 * (x[2] - x[1]^2)^2 + (1 - x[1])^2 + 100 * (x[3] - x[2]^2)^2 + (1 - x[2])^2 } lower <- c(-Inf, 0, 0) upper <- c( Inf, 0.5, 1) x0 <- c(0, 0.1, 0.1) S <- neldermead(c(0, 0.1, 0.1), rosenbrock, lower, upper, nl.info = TRUE) # $xmin = c(0.7085595, 0.5000000, 0.2500000) # $fmin = 0.3353605} } \references{ J. A. Nelder and R. Mead, ``A simplex method for function minimization,'' The Computer Journal 7, p. 308-313 (1965). M. J. Box, ``A new method of constrained optimization and a comparison with other methods,'' Computer J. 8 (1), 42-52 (1965). } \seealso{ \code{dfoptim::nmk} } \author{ Hans W. Borchers } nloptr/man/nloptr.get.default.options.Rd0000644000176200001440000000245014145700341020043 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/nloptr.get.default.options.R \name{nloptr.get.default.options} \alias{nloptr.get.default.options} \title{Return a data.frame with all the options that can be supplied to nloptr.} \usage{ nloptr.get.default.options() } \value{ The return value contains a \code{data.frame} with the following elements \item{name}{name of the option} \item{type}{type (numeric, logical, integer, character)} \item{possible_values}{string explaining the values the option can take} \item{default}{default value of the option (as a string)} \item{is_termination_condition}{is this option part of the termination conditions?} \item{description}{description of the option (taken from NLopt website if it's an option that is passed on to NLopt).} } \description{ This function returns a data.frame with all the options that can be supplied to \code{\link[nloptr:nloptr]{nloptr}}. The data.frame contains the default values of the options and an explanation. A user-friendly way to show these options is by using the function \code{\link[nloptr:nloptr.print.options]{nloptr.print.options}}. } \seealso{ \code{\link[nloptr:nloptr]{nloptr}} \code{\link[nloptr:nloptr.print.options]{nloptr.print.options}} } \author{ Jelmer Ypma } \keyword{interface} \keyword{optimize} nloptr/man/mlsl.Rd0000644000176200001440000000757714636244620013630 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/mlsl.R \name{mlsl} \alias{mlsl} \title{Multi-level Single-linkage} \usage{ mlsl( x0, fn, gr = NULL, lower, upper, local.method = "LBFGS", low.discrepancy = TRUE, nl.info = FALSE, control = list(), ... ) } \arguments{ \item{x0}{initial point for searching the optimum.} \item{fn}{objective function that is to be minimized.} \item{gr}{gradient of function \code{fn}; will be calculated numerically if not specified.} \item{lower, upper}{lower and upper bound constraints.} \item{local.method}{only \code{BFGS} for the moment.} \item{low.discrepancy}{logical; shall a low discrepancy variation be used.} \item{nl.info}{logical; shall the original \acronym{NLopt} info be shown.} \item{control}{list of options, see \code{nl.opts} for help.} \item{...}{additional arguments passed to the function.} } \value{ List with components: \item{par}{the optimal solution found so far.} \item{value}{the function value corresponding to \code{par}.} \item{iter}{number of (outer) iterations, see \code{maxeval}.} \item{convergence}{integer code indicating successful completion (> 0) or a possible error number (< 0).} \item{message}{character string produced by \acronym{NLopt} and giving additional information.} } \description{ The \dQuote{Multi-Level Single-Linkage} (\acronym{MLSL}) algorithm for global optimization searches by a sequence of local optimizations from random starting points. A modification of \acronym{MLSL} is included using a low-discrepancy sequence (\acronym{LDS}) instead of pseudorandom numbers. } \details{ \acronym{MLSL} is a \sQuote{multistart} algorithm: it works by doing a sequence of local optimizations---using some other local optimization algorithm---from random or low-discrepancy starting points. MLSL is distinguished, however, by a `clustering' heuristic that helps it to avoid repeated searches of the same local optima and also has some theoretical guarantees of finding all local optima in a finite number of local minimizations. The local-search portion of \acronym{MLSL} can use any of the other algorithms in \acronym{NLopt}, and, in particular, can use either gradient-based or derivative-free algorithms. For this wrapper only gradient-based \acronym{LBFGS} is available as local method. } \note{ If you don't set a stopping tolerance for your local-optimization algorithm, \acronym{MLSL} defaults to \code{ftol_rel = 1e-15} and \code{xtol_rel = 1e-7} for the local searches. } \examples{ ## Minimize the Hartmann 6-Dimensional function ## See https://www.sfu.ca/~ssurjano/hart6.html a <- c(1.0, 1.2, 3.0, 3.2) A <- matrix(c(10, 0.05, 3, 17, 3, 10, 3.5, 8, 17, 17, 1.7, 0.05, 3.5, 0.1, 10, 10, 1.7, 8, 17, 0.1, 8, 14, 8, 14), nrow = 4) B <- matrix(c(.1312, .2329, .2348, .4047, .1696, .4135, .1451, .8828, .5569, .8307, .3522, .8732, .0124, .3736, .2883, .5743, .8283, .1004, .3047, .1091, .5886, .9991, .6650, .0381), nrow = 4) hartmann6 <- function(x, a, A, B) { fun <- 0 for (i in 1:4) { fun <- fun - a[i] * exp(-sum(A[i, ] * (x - B[i, ]) ^ 2)) } fun } ## The function has a global minimum of -3.32237 at ## (0.20169, 0.150011, 0.476874, 0.275332, 0.311652, 0.6573) S <- mlsl(x0 = rep(0, 6), hartmann6, lower = rep(0, 6), upper = rep(1, 6), nl.info = TRUE, control = list(xtol_rel = 1e-8, maxeval = 1000), a = a, A = A, B = B) } \references{ A. H. G. Rinnooy Kan and G. T. Timmer, \dQuote{Stochastic global optimization methods} Mathematical Programming, vol. 39, p. 27-78 (1987). Sergei Kucherenko and Yury Sytsko, \dQuote{Application of deterministic low-discrepancy sequences in global optimization}, Computational Optimization and Applications, vol. 30, p. 297-318 (2005). } \seealso{ \code{\link{direct}} } \author{ Hans W. Borchers } nloptr/man/slsqp.Rd0000644000176200001440000000751714636244620014015 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/slsqp.R \name{slsqp} \alias{slsqp} \title{Sequential Quadratic Programming (SQP)} \usage{ slsqp( x0, fn, gr = NULL, lower = NULL, upper = NULL, hin = NULL, hinjac = NULL, heq = NULL, heqjac = NULL, nl.info = FALSE, control = list(), deprecatedBehavior = TRUE, ... ) } \arguments{ \item{x0}{starting point for searching the optimum.} \item{fn}{objective function that is to be minimized.} \item{gr}{gradient of function \code{fn}; will be calculated numerically if not specified.} \item{lower, upper}{lower and upper bound constraints.} \item{hin}{function defining the inequality constraints, that is \code{hin <= 0} for all components. This is new behavior in line with the rest of the \code{nloptr} arguments. To use the old behavior, please set \code{deprecatedBehavior} to \code{TRUE}.} \item{hinjac}{Jacobian of function \code{hin}; will be calculated numerically if not specified.} \item{heq}{function defining the equality constraints, that is \code{heq = 0} for all components.} \item{heqjac}{Jacobian of function \code{heq}; will be calculated numerically if not specified.} \item{nl.info}{logical; shall the original NLopt info been shown.} \item{control}{list of options, see \code{nl.opts} for help.} \item{deprecatedBehavior}{logical; if \code{TRUE} (default for now), the old behavior of the Jacobian function is used, where the equality is \eqn{\ge 0} instead of \eqn{\le 0}. This will be reversed in a future release and eventually removed.} \item{...}{additional arguments passed to the function.} } \value{ List with components: \item{par}{the optimal solution found so far.} \item{value}{the function value corresponding to \code{par}.} \item{iter}{number of (outer) iterations, see \code{maxeval}.} \item{convergence}{integer code indicating successful completion (> 1) or a possible error number (< 0).} \item{message}{character string produced by NLopt and giving additional information.} } \description{ Sequential (least-squares) quadratic programming (SQP) algorithm for nonlinearly constrained, gradient-based optimization, supporting both equality and inequality constraints. } \details{ The algorithm optimizes successive second-order (quadratic/least-squares) approximations of the objective function (via BFGS updates), with first-order (affine) approximations of the constraints. } \note{ See more infos at \url{https://nlopt.readthedocs.io/en/latest/NLopt_Algorithms/}. } \examples{ ## Solve the Hock-Schittkowski problem no. 100 with analytic gradients ## See https://apmonitor.com/wiki/uploads/Apps/hs100.apm x0.hs100 <- c(1, 2, 0, 4, 0, 1, 1) fn.hs100 <- function(x) {(x[1] - 10) ^ 2 + 5 * (x[2] - 12) ^ 2 + x[3] ^ 4 + 3 * (x[4] - 11) ^ 2 + 10 * x[5] ^ 6 + 7 * x[6] ^ 2 + x[7] ^ 4 - 4 * x[6] * x[7] - 10 * x[6] - 8 * x[7]} hin.hs100 <- function(x) {c( 2 * x[1] ^ 2 + 3 * x[2] ^ 4 + x[3] + 4 * x[4] ^ 2 + 5 * x[5] - 127, 7 * x[1] + 3 * x[2] + 10 * x[3] ^ 2 + x[4] - x[5] - 282, 23 * x[1] + x[2] ^ 2 + 6 * x[6] ^ 2 - 8 * x[7] - 196, 4 * x[1] ^ 2 + x[2] ^ 2 - 3 * x[1] * x[2] + 2 * x[3] ^ 2 + 5 * x[6] - 11 * x[7]) } S <- slsqp(x0.hs100, fn = fn.hs100, # no gradients and jacobians provided hin = hin.hs100, nl.info = TRUE, control = list(xtol_rel = 1e-8, check_derivatives = TRUE), deprecatedBehavior = FALSE) ## The optimum value of the objective function should be 680.6300573 ## A suitable parameter vector is roughly ## (2.330, 1.9514, -0.4775, 4.3657, -0.6245, 1.0381, 1.5942) S } \references{ Dieter Kraft, ``A software package for sequential quadratic programming'', Technical Report DFVLR-FB 88-28, Institut fuer Dynamik der Flugsysteme, Oberpfaffenhofen, July 1988. } \seealso{ \code{alabama::auglag}, \code{Rsolnp::solnp}, \code{Rdonlp2::donlp2} } \author{ Hans W. Borchers } nloptr/man/nloptr.Rd0000644000176200001440000002253714636244620014170 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/nloptr.R \name{nloptr} \alias{nloptr} \title{R interface to NLopt} \usage{ nloptr( x0, eval_f, eval_grad_f = NULL, lb = NULL, ub = NULL, eval_g_ineq = NULL, eval_jac_g_ineq = NULL, eval_g_eq = NULL, eval_jac_g_eq = NULL, opts = list(), ... ) } \arguments{ \item{x0}{vector with starting values for the optimization.} \item{eval_f}{function that returns the value of the objective function. It can also return gradient information at the same time in a list with elements "objective" and "gradient" (see below for an example).} \item{eval_grad_f}{function that returns the value of the gradient of the objective function. Not all of the algorithms require a gradient.} \item{lb}{vector with lower bounds of the controls (use \code{-Inf} for controls without lower bound), by default there are no lower bounds for any of the controls.} \item{ub}{vector with upper bounds of the controls (use \code{Inf} for controls without upper bound), by default there are no upper bounds for any of the controls.} \item{eval_g_ineq}{function to evaluate (non-)linear inequality constraints that should hold in the solution. It can also return gradient information at the same time in a list with elements "constraints" and "jacobian" (see below for an example).} \item{eval_jac_g_ineq}{function to evaluate the Jacobian of the (non-)linear inequality constraints that should hold in the solution.} \item{eval_g_eq}{function to evaluate (non-)linear equality constraints that should hold in the solution. It can also return gradient information at the same time in a list with elements "constraints" and "jacobian" (see below for an example).} \item{eval_jac_g_eq}{function to evaluate the Jacobian of the (non-)linear equality constraints that should hold in the solution.} \item{opts}{list with options. The option "\code{algorithm}" is required. Check the \href{https://nlopt.readthedocs.io/en/latest/NLopt_Algorithms/}{NLopt website} for a full list of available algorithms. Other options control the termination conditions (\code{minf_max, ftol_rel, ftol_abs, xtol_rel,} \code{xtol_abs, maxeval, maxtime}). Default is \code{xtol_rel} = 1e-4. More information \href{https://nlopt.readthedocs.io/en/latest/NLopt_Introduction/#termination-conditions}{here}. #nolint A full description of all options is shown by the function \code{nloptr.print.options()}. Some algorithms with equality constraints require the option \code{local_opts}, which contains a list with an algorithm and a termination condition for the local algorithm. See \code{?`nloptr-package`} for an example. The option \code{print_level} controls how much output is shown during the optimization process. Possible values: \tabular{ll}{0 (default) \tab no output \cr 1 \tab show iteration number and value of objective function \cr 2 \tab 1 + show value of (in)equalities \cr 3 \tab 2 + show value of controls} The option \code{check_derivatives} (default = \code{FALSE}) can be used to run to compare the analytic gradients with finite difference approximations. The option \code{check_derivatives_print} (\code{'all'} (default), \code{'errors'}, \code{'none'}) controls the output of the derivative checker, if it is run, showing all comparisons, only those that resulted in an error, or none. The option \code{check_derivatives_tol} (default = 1e-04), determines when a difference between an analytic gradient and its finite difference approximation is flagged as an error.} \item{...}{arguments that will be passed to the user-defined objective and constraints functions.} } \value{ The return value contains a list with the inputs, and additional elements \item{call}{the call that was made to solve} \item{status}{integer value with the status of the optimization (0 is success)} \item{message}{more informative message with the status of the optimization} \item{iterations}{number of iterations that were executed} \item{objective}{value if the objective function in the solution} \item{solution}{optimal value of the controls} \item{version}{version of NLopt that was used} } \description{ nloptr is an R interface to NLopt, a free/open-source library for nonlinear optimization started by Steven G. Johnson, providing a common interface for a number of different free optimization routines available online as well as original implementations of various other algorithms. The NLopt library is available under the GNU Lesser General Public License (LGPL), and the copyrights are owned by a variety of authors. Most of the information here has been taken from \href{https://nlopt.readthedocs.io/en/latest/}{the NLopt website}, where more details are available. } \details{ NLopt addresses general nonlinear optimization problems of the form: \deqn{\min f(x)\quad x\in R^n}{min f(x) x in R^n} \deqn{\textrm{s.t. }\\ g(x) \leq 0\\ h(x) = 0\\ lb \leq x \leq ub}{ s.t. g(x) <= 0 h(x) = 0 lb <= x <= ub} where \eqn{f(x)} is the objective function to be minimized and \eqn{x} represents the \eqn{n} optimization parameters. This problem may optionally be subject to the bound constraints (also called box constraints), \eqn{lb} and \eqn{ub}. For partially or totally unconstrained problems the bounds can take \code{-Inf} or \code{Inf}. One may also optionally have \eqn{m} nonlinear inequality constraints (sometimes called a nonlinear programming problem), which can be specified in \eqn{g(x)}, and equality constraints that can be specified in \eqn{h(x)}. Note that not all of the algorithms in NLopt can handle constraints. } \note{ See \code{?`nloptr-package`} for an extended example. } \examples{ library('nloptr') ## Rosenbrock Banana function and gradient in separate functions eval_f <- function(x) { return(100 * (x[2] - x[1] * x[1])^2 + (1 - x[1])^2) } eval_grad_f <- function(x) { return(c(-400 * x[1] * (x[2] - x[1] * x[1]) - 2 * (1 - x[1]), 200 * (x[2] - x[1] * x[1]))) } # initial values x0 <- c(-1.2, 1) opts <- list("algorithm"="NLOPT_LD_LBFGS", "xtol_rel"=1.0e-8) # solve Rosenbrock Banana function res <- nloptr(x0=x0, eval_f=eval_f, eval_grad_f=eval_grad_f, opts=opts) print(res) ## Rosenbrock Banana function and gradient in one function # this can be used to economize on calculations eval_f_list <- function(x) { return( list( "objective" = 100 * (x[2] - x[1] * x[1]) ^ 2 + (1 - x[1]) ^ 2, "gradient" = c(-400 * x[1] * (x[2] - x[1] * x[1]) - 2 * (1 - x[1]), 200 * (x[2] - x[1] * x[1])))) } # solve Rosenbrock Banana function using an objective function that # returns a list with the objective value and its gradient res <- nloptr(x0=x0, eval_f=eval_f_list, opts=opts) print(res) # Example showing how to solve the problem from the NLopt tutorial. # # min sqrt(x2) # s.t. x2 >= 0 # x2 >= (a1*x1 + b1)^3 # x2 >= (a2*x1 + b2)^3 # where # a1 = 2, b1 = 0, a2 = -1, b2 = 1 # # re-formulate constraints to be of form g(x) <= 0 # (a1*x1 + b1)^3 - x2 <= 0 # (a2*x1 + b2)^3 - x2 <= 0 library('nloptr') # objective function eval_f0 <- function(x, a, b) { return(sqrt(x[2])) } # constraint function eval_g0 <- function(x, a, b) { return((a*x[1] + b)^3 - x[2]) } # gradient of objective function eval_grad_f0 <- function(x, a, b) { return(c(0, .5/sqrt(x[2]))) } # Jacobian of constraint eval_jac_g0 <- function(x, a, b) { return(rbind(c(3*a[1]*(a[1]*x[1] + b[1])^2, -1.0), c(3*a[2]*(a[2]*x[1] + b[2])^2, -1.0))) } # functions with gradients in objective and constraint function # this can be useful if the same calculations are needed for # the function value and the gradient eval_f1 <- function(x, a, b) { return(list("objective"=sqrt(x[2]), "gradient"=c(0,.5/sqrt(x[2])))) } eval_g1 <- function(x, a, b) { return(list("constraints"=(a*x[1] + b)^3 - x[2], "jacobian"=rbind(c(3*a[1]*(a[1]*x[1] + b[1])^2, -1.0), c(3*a[2]*(a[2]*x[1] + b[2])^2, -1.0)))) } # define parameters a <- c(2,-1) b <- c(0, 1) # Solve using NLOPT_LD_MMA with gradient information supplied in separate # function. res0 <- nloptr(x0=c(1.234,5.678), eval_f=eval_f0, eval_grad_f=eval_grad_f0, lb = c(-Inf,0), ub = c(Inf,Inf), eval_g_ineq = eval_g0, eval_jac_g_ineq = eval_jac_g0, opts = list("algorithm"="NLOPT_LD_MMA"), a = a, b = b) print(res0) # Solve using NLOPT_LN_COBYLA without gradient information res1 <- nloptr(x0=c(1.234,5.678), eval_f=eval_f0, lb = c(-Inf, 0), ub = c(Inf, Inf), eval_g_ineq = eval_g0, opts = list("algorithm" = "NLOPT_LN_COBYLA"), a = a, b = b) print(res1) # Solve using NLOPT_LD_MMA with gradient information in objective function res2 <- nloptr(x0=c(1.234, 5.678), eval_f=eval_f1, lb = c(-Inf, 0), ub = c(Inf, Inf), eval_g_ineq = eval_g1, opts = list("algorithm"="NLOPT_LD_MMA", "check_derivatives" = TRUE), a = a, b = b) print(res2) } \references{ Steven G. Johnson, The NLopt nonlinear-optimization package, \url{https://github.com/stevengj/nlopt} } \seealso{ \code{\link[nloptr:nloptr.print.options]{nloptr.print.options}} \code{\link[nloptr:check.derivatives]{check.derivatives}} \code{\link{optim}} \code{\link{nlm}} \code{\link{nlminb}} \code{Rsolnp::Rsolnp} \code{Rsolnp::solnp} } \author{ Steven G. Johnson and others (C code) \cr Jelmer Ypma (R interface) } \keyword{interface} \keyword{optimize} nloptr/man/auglag.Rd0000644000176200001440000001367614636244620014116 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/auglag.R \name{auglag} \alias{auglag} \title{Augmented Lagrangian Algorithm} \usage{ auglag( x0, fn, gr = NULL, lower = NULL, upper = NULL, hin = NULL, hinjac = NULL, heq = NULL, heqjac = NULL, localsolver = "COBYLA", localtol = 1e-06, ineq2local = FALSE, nl.info = FALSE, control = list(), deprecatedBehavior = TRUE, ... ) } \arguments{ \item{x0}{starting point for searching the optimum.} \item{fn}{objective function that is to be minimized.} \item{gr}{gradient of the objective function; will be provided provided is \code{NULL} and the solver requires derivatives.} \item{lower, upper}{lower and upper bound constraints.} \item{hin, hinjac}{defines the inequality constraints, \code{hin(x) >= 0}} \item{heq, heqjac}{defines the equality constraints, \code{heq(x) = 0}.} \item{localsolver}{available local solvers: COBYLA, LBFGS, MMA, or SLSQP.} \item{localtol}{tolerance applied in the selected local solver.} \item{ineq2local}{logical; shall the inequality constraints be treated by the local solver?; not possible at the moment.} \item{nl.info}{logical; shall the original NLopt info been shown.} \item{control}{list of options, see \code{nl.opts} for help.} \item{deprecatedBehavior}{logical; if \code{TRUE} (default for now), the old behavior of the Jacobian function is used, where the equality is \eqn{\ge 0} instead of \eqn{\le 0}. This will be reversed in a future release and eventually removed.} \item{...}{additional arguments passed to the function.} } \value{ List with components: \item{par}{the optimal solution found so far.} \item{value}{the function value corresponding to \code{par}.} \item{iter}{number of (outer) iterations, see \code{maxeval}.} \item{global_solver}{the global NLOPT solver used.} \item{local_solver}{the local NLOPT solver used, LBFGS or COBYLA.} \item{convergence}{integer code indicating successful completion (> 0) or a possible error number (< 0).} \item{message}{character string produced by NLopt and giving additional information.} } \description{ The Augmented Lagrangian method adds additional terms to the unconstrained objective function, designed to emulate a Lagrangian multiplier. } \details{ This method combines the objective function and the nonlinear inequality/equality constraints (if any) in to a single function: essentially, the objective plus a `penalty' for any violated constraints. This modified objective function is then passed to another optimization algorithm with no nonlinear constraints. If the constraints are violated by the solution of this sub-problem, then the size of the penalties is increased and the process is repeated; eventually, the process must converge to the desired solution (if it exists). Since all of the actual optimization is performed in this subsidiary optimizer, the subsidiary algorithm that you specify determines whether the optimization is gradient-based or derivative-free. The local solvers available at the moment are \verb{COBYLA'' (for the derivative-free approach) and }LBFGS'', \verb{MMA'', or }SLSQP'' (for smooth functions). The tolerance for the local solver has to be provided. There is a variant that only uses penalty functions for equality constraints while inequality constraints are passed through to the subsidiary algorithm to be handled directly; in this case, the subsidiary algorithm must handle inequality constraints. (At the moment, this variant has been turned off because of problems with the NLOPT library.) } \note{ Birgin and Martinez provide their own free implementation of the method as part of the TANGO project; other implementations can be found in semi-free packages like LANCELOT. } \examples{ x0 <- c(1, 1) fn <- function(x) (x[1] - 2) ^ 2 + (x[2] - 1) ^ 2 hin <- function(x) 0.25 * x[1]^2 + x[2] ^ 2 - 1 # hin <= 0 heq <- function(x) x[1] - 2 * x[2] + 1 # heq = 0 gr <- function(x) nl.grad(x, fn) hinjac <- function(x) nl.jacobian(x, hin) heqjac <- function(x) nl.jacobian(x, heq) # with COBYLA auglag(x0, fn, gr = NULL, hin = hin, heq = heq, deprecatedBehavior = FALSE) # $par: 0.8228761 0.9114382 # $value: 1.393464 # $iter: 1001 auglag(x0, fn, gr = NULL, hin = hin, heq = heq, localsolver = "SLSQP", deprecatedBehavior = FALSE) # $par: 0.8228757 0.9114378 # $value: 1.393465 # $iter 184 ## Example from the alabama::auglag help page ## Parameters should be roughly (0, 0, 1) with an objective value of 1. fn <- function(x) (x[1] + 3 * x[2] + x[3]) ^ 2 + 4 * (x[1] - x[2]) ^ 2 heq <- function(x) x[1] + x[2] + x[3] - 1 # hin restated from alabama example to be <= 0. hin <- function(x) c(-6 * x[2] - 4 * x[3] + x[1] ^ 3 + 3, -x[1], -x[2], -x[3]) set.seed(12) auglag(runif(3), fn, hin = hin, heq = heq, localsolver= "lbfgs", deprecatedBehavior = FALSE) # $par: 4.861756e-08 4.732373e-08 9.999999e-01 # $value: 1 # $iter: 145 ## Powell problem from the Rsolnp::solnp help page ## Parameters should be roughly (-1.7171, 1.5957, 1.8272, -0.7636, -0.7636) ## with an objective value of 0.0539498478. x0 <- c(-2, 2, 2, -1, -1) fn1 <- function(x) exp(x[1] * x[2] * x[3] * x[4] * x[5]) eqn1 <-function(x) c(x[1] * x[1] + x[2] * x[2] + x[3] * x[3] + x[4] * x[4] + x[5] * x[5] - 10, x[2] * x[3] - 5 * x[4] * x[5], x[1] * x[1] * x[1] + x[2] * x[2] * x[2] + 1) auglag(x0, fn1, heq = eqn1, localsolver = "mma", deprecatedBehavior = FALSE) # $par: -1.7173645 1.5959655 1.8268352 -0.7636185 -0.7636185 # $value: 0.05394987 # $iter: 916 } \references{ Andrew R. Conn, Nicholas I. M. Gould, and Philippe L. Toint, ``A globally convergent augmented Lagrangian algorithm for optimization with general constraints and simple bounds,'' SIAM J. Numer. Anal. vol. 28, no. 2, p. 545-572 (1991). E. G. Birgin and J. M. Martinez, ``Improving ultimate convergence of an augmented Lagrangian method," Optimization Methods and Software vol. 23, no. 2, p. 177-195 (2008). } \seealso{ \code{alabama::auglag}, \code{Rsolnp::solnp} } \author{ Hans W. Borchers } nloptr/man/varmetric.Rd0000644000176200001440000000427514636244620014645 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/varmetric.R \name{varmetric} \alias{varmetric} \title{Shifted Limited-memory Variable-metric} \usage{ varmetric( x0, fn, gr = NULL, rank2 = TRUE, lower = NULL, upper = NULL, nl.info = FALSE, control = list(), ... ) } \arguments{ \item{x0}{initial point for searching the optimum.} \item{fn}{objective function to be minimized.} \item{gr}{gradient of function \code{fn}; will be calculated numerically if not specified.} \item{rank2}{logical; if true uses a rank-2 update method, else rank-1.} \item{lower, upper}{lower and upper bound constraints.} \item{nl.info}{logical; shall the original NLopt info been shown.} \item{control}{list of control parameters, see \code{nl.opts} for help.} \item{...}{further arguments to be passed to the function.} } \value{ List with components: \item{par}{the optimal solution found so far.} \item{value}{the function value corresponding to \code{par}.} \item{iter}{number of (outer) iterations, see \code{maxeval}.} \item{convergence}{integer code indicating successful completion (> 0) or a possible error number (< 0).} \item{message}{character string produced by NLopt and giving additional information.} } \description{ Shifted limited-memory variable-metric algorithm. } \details{ Variable-metric methods are a variant of the quasi-Newton methods, especially adapted to large-scale unconstrained (or bound constrained) minimization. } \note{ Based on L. Luksan's Fortran implementation of a shifted limited-memory variable-metric algorithm. } \examples{ flb <- function(x) { p <- length(x) sum(c(1, rep(4, p-1)) * (x - c(1, x[-p])^2)^2) } # 25-dimensional box constrained: par[24] is *not* at the boundary S <- varmetric(rep(3, 25), flb, lower=rep(2, 25), upper=rep(4, 25), nl.info = TRUE, control = list(xtol_rel=1e-8)) ## Optimal value of objective function: 368.105912874334 ## Optimal value of controls: 2 ... 2 2.109093 4 } \references{ J. Vlcek and L. Luksan, ``Shifted limited-memory variable metric methods for large-scale unconstrained minimization,'' J. Computational Appl. Math. 186, p. 365-390 (2006). } \seealso{ \code{\link{lbfgs}} } \author{ Hans W. Borchers } nloptr/man/check.derivatives.Rd0000644000176200001440000000455314636244620016251 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/check.derivatives.R \name{check.derivatives} \alias{check.derivatives} \title{Check analytic gradients of a function using finite difference approximations} \usage{ check.derivatives( .x, func, func_grad, check_derivatives_tol = 1e-04, check_derivatives_print = "all", func_grad_name = "grad_f", ... ) } \arguments{ \item{.x}{point at which the comparison is done.} \item{func}{function to be evaluated.} \item{func_grad}{function calculating the analytic gradients.} \item{check_derivatives_tol}{option determining when differences between the analytic gradient and its finite difference approximation are flagged as an error.} \item{check_derivatives_print}{option related to the amount of output. 'all' means that all comparisons are shown, 'errors' only shows comparisons that are flagged as an error, and 'none' shows the number of errors only.} \item{func_grad_name}{option to change the name of the gradient function that shows up in the output.} \item{...}{further arguments passed to the functions func and func_grad.} } \value{ The return value contains a list with the analytic gradient, its finite difference approximation, the relative errors, and vector comparing the relative errors to the tolerance. } \description{ This function compares the analytic gradients of a function with a finite difference approximation and prints the results of these checks. } \examples{ library('nloptr') # example with correct gradient f <- function(x, a) sum((x - a) ^ 2) f_grad <- function(x, a) 2 * (x - a) check.derivatives(.x = 1:10, func = f, func_grad = f_grad, check_derivatives_print = 'none', a = runif(10)) # example with incorrect gradient f_grad <- function(x, a) 2 * (x - a) + c(0, 0.1, rep(0, 8)) check.derivatives(.x = 1:10, func = f, func_grad = f_grad, check_derivatives_print = 'errors', a = runif(10)) # example with incorrect gradient of vector-valued function g <- function(x, a) c(sum(x - a), sum((x - a) ^ 2)) g_grad <- function(x, a) { rbind(rep(1, length(x)) + c(0, 0.01, rep(0, 8)), 2 * (x - a) + c(0, 0.1, rep(0, 8))) } check.derivatives(.x = 1:10, func = g, func_grad = g_grad, check_derivatives_print = 'all', a = runif(10)) } \seealso{ \code{\link[nloptr:nloptr]{nloptr}} } \author{ Jelmer Ypma } \keyword{interface} \keyword{optimize} nloptr/man/nloptr-package.Rd0000644000176200001440000001160214636244620015550 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/nloptr-package.R \docType{package} \name{nloptr-package} \alias{nloptr-package} \title{R interface to NLopt} \description{ nloptr is an R interface to NLopt, a free/open-source library for nonlinear optimization started by Steven G. Johnson, providing a common interface for a number of different free optimization routines available online as well as original implementations of various other algorithms. The NLopt library is available under the GNU Lesser General Public License (LGPL), and the copyrights are owned by a variety of authors. Most of the information here has been taken from \href{https://nlopt.readthedocs.io/en/latest/}{the NLopt website}, where more details are available. } \details{ NLopt addresses general nonlinear optimization problems of the form: \deqn{\min f(x)\quad x\in R^n}{min f(x) x in R^n} \deqn{\textrm{s.t. }\\ g(x) \leq 0\\ h(x) = 0\\ lb \leq x \leq ub}{ s.t. g(x) <= 0 h(x) = 0 lb <= x <= ub} where \eqn{f(x)} is the objective function to be minimized and \eqn{x} represents the \eqn{n} optimization parameters. This problem may optionally be subject to the bound constraints (also called box constraints), \eqn{lb} and \eqn{ub}. For partially or totally unconstrained problems the bounds can take \code{-Inf} or \code{Inf}. One may also optionally have \eqn{m} nonlinear inequality constraints (sometimes called a nonlinear programming problem), which can be specified in \eqn{g(x)}, and equality constraints that can be specified in \eqn{h(x)}. Note that not all of the algorithms in NLopt can handle constraints. An optimization problem can be solved with the general \code{nloptr} interface, or using one of the wrapper functions for the separate algorithms; \code{auglag}, \code{bobyqa}, \code{ccsaq}, \code{cobyla}, \code{crs2lm}, \code{direct}, \code{directL}, \code{isres}, \code{lbfgs}, \code{mlsl}, \code{mma}, \code{neldermead}, \code{newuoa}, \code{sbplx}, \code{slsqp}, \code{stogo}, \code{tnewton}, \code{varmetric}. \tabular{ll}{Package: \tab nloptr\cr Type: \tab Package\cr Version: \tab 2.0.3\cr Date: \tab 2022-05-26\cr License: \tab L-GPL >= 3\cr} } \note{ See ?nloptr for more examples. } \examples{ # Example problem, number 71 from the Hock-Schittkowsky test suite. # # \min_{x} x1 * x4 * (x1 + x2 + x3) + x3 # s.t. # x1 * x2 * x3 * x4 >= 25 # x1 ^ 2 + x2 ^ 2 + x3 ^ 2 + x4 ^ 2 = 40 # 1 <= x1, x2, x3, x4 <= 5 # # we re-write the inequality as # 25 - x1 * x2 * x3 * x4 <= 0 # # and the equality as # x1 ^ 2 + x2 ^ 2 + x3 ^ 2 + x4 ^ 2 - 40 = 0 # # x0 = (1, 5, 5, 1) # # optimal solution = (1.000000, 4.742999, 3.821151, 1.379408) library('nloptr') # # f(x) = x1 * x4 * (x1 + x2 + x3) + x3 # eval_f <- function(x) { list("objective" = x[1] * x[4] * (x[1] + x[2] + x[3]) + x[3], "gradient" = c(x[1] * x[4] + x[4] * (x[1] + x[2] + x[3]), x[1] * x[4], x[1] * x[4] + 1.0, x[1] * (x[1] + x[2] + x[3]))) } # constraint functions # inequalities eval_g_ineq <- function(x) { constr <- c(25 - x[1] * x[2] * x[3] * x[4]) grad <- c(-x[2] * x[3] * x[4], -x[1] * x[3] * x[4], -x[1] * x[2] * x[4], -x[1] * x[2] * x[3] ) list("constraints" = constr, "jacobian" = grad) } # equalities eval_g_eq <- function(x) { constr <- c(x[1] ^ 2 + x[2] ^ 2 + x[3] ^ 2 + x[4] ^ 2 - 40) grad <- c(2.0 * x[1], 2.0 * x[2], 2.0 * x[3], 2.0 * x[4]) list("constraints" = constr, "jacobian" = grad) } # initial values x0 <- c(1, 5, 5, 1) # lower and upper bounds of control lb <- c(1, 1, 1, 1) ub <- c(5, 5, 5, 5) local_opts <- list("algorithm" = "NLOPT_LD_MMA", "xtol_rel" = 1.0e-7) opts <- list("algorithm" = "NLOPT_LD_AUGLAG", "xtol_rel" = 1.0e-7, "maxeval" = 1000, "local_opts" = local_opts) res <- nloptr(x0 = x0, eval_f = eval_f, lb = lb, ub = ub, eval_g_ineq = eval_g_ineq, eval_g_eq = eval_g_eq, opts = opts) print(res) } \references{ Steven G. Johnson, The NLopt nonlinear-optimization package, \url{https://nlopt.readthedocs.io/en/latest/} } \seealso{ \code{\link{optim}} \code{\link{nlm}} \code{\link{nlminb}} \code{Rsolnp::Rsolnp} \code{Rsolnp::solnp} \code{\link{nloptr}} \code{\link{auglag}} \code{\link{bobyqa}} \code{\link{ccsaq}} \code{\link{cobyla}} \code{\link{crs2lm}} \code{\link{direct}} \code{\link{directL}} \code{\link{isres}} \code{\link{lbfgs}} \code{\link{mlsl}} \code{\link{mma}} \code{\link{neldermead}} \code{\link{newuoa}} \code{\link{sbplx}} \code{\link{slsqp}} \code{\link{stogo}} \code{\link{tnewton}} \code{\link{varmetric}} } \author{ Steven G. Johnson and others (C code) \cr Jelmer Ypma (R interface) \cr Hans W. Borchers (wrappers) } \keyword{interface} \keyword{internal} \keyword{optimize} nloptr/man/tnewton.Rd0000644000176200001440000000452214636244620014342 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/tnewton.R \name{tnewton} \alias{tnewton} \title{Preconditioned Truncated Newton} \usage{ tnewton( x0, fn, gr = NULL, lower = NULL, upper = NULL, precond = TRUE, restart = TRUE, nl.info = FALSE, control = list(), ... ) } \arguments{ \item{x0}{starting point for searching the optimum.} \item{fn}{objective function that is to be minimized.} \item{gr}{gradient of function \code{fn}; will be calculated numerically if not specified.} \item{lower, upper}{lower and upper bound constraints.} \item{precond}{logical; preset L-BFGS with steepest descent.} \item{restart}{logical; restarting L-BFGS with steepest descent.} \item{nl.info}{logical; shall the original NLopt info been shown.} \item{control}{list of options, see \code{nl.opts} for help.} \item{...}{additional arguments passed to the function.} } \value{ List with components: \item{par}{the optimal solution found so far.} \item{value}{the function value corresponding to \code{par}.} \item{iter}{number of (outer) iterations, see \code{maxeval}.} \item{convergence}{integer code indicating successful completion (> 1) or a possible error number (< 0).} \item{message}{character string produced by NLopt and giving additional information.} } \description{ Truncated Newton methods, also called Newton-iterative methods, solve an approximating Newton system using a conjugate-gradient approach and are related to limited-memory BFGS. } \details{ Truncated Newton methods are based on approximating the objective with a quadratic function and applying an iterative scheme such as the linear conjugate-gradient algorithm. } \note{ Less reliable than Newton's method, but can handle very large problems. } \examples{ flb <- function(x) { p <- length(x) sum(c(1, rep(4, p - 1)) * (x - c(1, x[-p]) ^ 2) ^ 2) } # 25-dimensional box constrained: par[24] is *not* at boundary S <- tnewton(rep(3, 25L), flb, lower = rep(2, 25L), upper = rep(4, 25L), nl.info = TRUE, control = list(xtol_rel = 1e-8)) ## Optimal value of objective function: 368.105912874334 ## Optimal value of controls: 2 ... 2 2.109093 4 } \references{ R. S. Dembo and T. Steihaug, ``Truncated Newton algorithms for large-scale optimization,'' Math. Programming 26, p. 190-212 (1982). } \seealso{ \code{\link{lbfgs}} } \author{ Hans W. Borchers } nloptr/man/isres.Rd0000644000176200001440000000650514636244620013774 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/global.R \name{isres} \alias{isres} \title{Improved Stochastic Ranking Evolution Strategy} \usage{ isres( x0, fn, lower, upper, hin = NULL, heq = NULL, maxeval = 10000, pop.size = 20 * (length(x0) + 1), xtol_rel = 1e-06, nl.info = FALSE, deprecatedBehavior = TRUE, ... ) } \arguments{ \item{x0}{initial point for searching the optimum.} \item{fn}{objective function that is to be minimized.} \item{lower, upper}{lower and upper bound constraints.} \item{hin}{function defining the inequality constraints, that is \code{hin <= 0} for all components.} \item{heq}{function defining the equality constraints, that is \code{heq = 0} for all components.} \item{maxeval}{maximum number of function evaluations.} \item{pop.size}{population size.} \item{xtol_rel}{stopping criterion for relative change reached.} \item{nl.info}{logical; shall the original \acronym{NLopt} info be shown.} \item{deprecatedBehavior}{logical; if \code{TRUE} (default for now), the old behavior of the Jacobian function is used, where the equality is \eqn{\ge 0} instead of \eqn{\le 0}. This will be reversed in a future release and eventually removed.} \item{...}{additional arguments passed to the function.} } \value{ List with components: \item{par}{the optimal solution found so far.} \item{value}{the function value corresponding to \code{par}.} \item{iter}{number of (outer) iterations, see \code{maxeval}.} \item{convergence}{integer code indicating successful completion (> 0) or a possible error number (< 0).} \item{message}{character string produced by NLopt and giving additional information.} } \description{ The Improved Stochastic Ranking Evolution Strategy (\acronym{ISRES}) is an algorithm for nonlinearly constrained global optimization, or at least semi-global, although it has heuristics to escape local optima. } \details{ The evolution strategy is based on a combination of a mutation rule---with a log-normal step-size update and exponential smoothing---and differential variation---a Nelder-Mead-like update rule). The fitness ranking is simply via the objective function for problems without nonlinear constraints, but when nonlinear constraints are included the stochastic ranking proposed by Runarsson and Yao is employed. This method supports arbitrary nonlinear inequality and equality constraints in addition to the bounds constraints. } \note{ The initial population size for CRS defaults to \eqn{20x(n+1)} in \eqn{n} dimensions, but this can be changed. The initial population must be at least \eqn{n+1}. } \examples{ ## Rosenbrock Banana objective function rbf <- function(x) {(1 - x[1]) ^ 2 + 100 * (x[2] - x[1] ^ 2) ^ 2} x0 <- c(-1.2, 1) lb <- c(-3, -3) ub <- c(3, 3) ## The function as written above has a minimum of 0 at (1, 1) isres(x0 = x0, fn = rbf, lower = lb, upper = ub) ## Now subject to the inequality that x[1] + x[2] <= 1.5 hin <- function(x) {x[1] + x[2] - 1.5} S <- isres(x0 = x0, fn = rbf, hin = hin, lower = lb, upper = ub, maxeval = 2e5L, deprecatedBehavior = FALSE) S sum(S$par) } \references{ Thomas Philip Runarsson and Xin Yao, ``Search biases in constrained evolutionary optimization,'' IEEE Trans. on Systems, Man, and Cybernetics Part C: Applications and Reviews, vol. 35 (no. 2), pp. 233-243 (2005). } \author{ Hans W. Borchers } nloptr/man/sbplx.Rd0000644000176200001440000000422014636244620013767 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/nm.R \name{sbplx} \alias{sbplx} \title{Subplex Algorithm} \usage{ sbplx( x0, fn, lower = NULL, upper = NULL, nl.info = FALSE, control = list(), ... ) } \arguments{ \item{x0}{starting point for searching the optimum.} \item{fn}{objective function that is to be minimized.} \item{lower, upper}{lower and upper bound constraints.} \item{nl.info}{logical; shall the original NLopt info been shown.} \item{control}{list of options, see \code{nl.opts} for help.} \item{...}{additional arguments passed to the function.} } \value{ List with components: \item{par}{the optimal solution found so far.} \item{value}{the function value corresponding to \code{par}.} \item{iter}{number of (outer) iterations, see \code{maxeval}.} \item{convergence}{integer code indicating successful completion (> 0) or a possible error number (< 0).} \item{message}{character string produced by NLopt and giving additional information.} } \description{ Subplex is a variant of Nelder-Mead that uses Nelder-Mead on a sequence of subspaces. } \details{ SUBPLEX is claimed to be much more efficient and robust than the original Nelder-Mead while retaining the latter's facility with discontinuous objectives. This implementation has explicit support for bound constraints via the method in the Box paper as described on the \code{neldermead} help page. } \note{ It is the request of Tom Rowan that reimplementations of his algorithm shall not use the name `subplex'. } \examples{ # Fletcher and Powell's helic valley fphv <- function(x) 100*(x[3] - 10*atan2(x[2], x[1])/(2*pi))^2 + (sqrt(x[1]^2 + x[2]^2) - 1)^2 +x[3]^2 x0 <- c(-1, 0, 0) sbplx(x0, fphv) # 1 0 0 # Powell's Singular Function (PSF) psf <- function(x) (x[1] + 10*x[2])^2 + 5*(x[3] - x[4])^2 + (x[2] - 2*x[3])^4 + 10*(x[1] - x[4])^4 x0 <- c(3, -1, 0, 1) sbplx(x0, psf, control = list(maxeval = Inf, ftol_rel = 1e-6)) # 0 0 0 0 (?) } \references{ T. Rowan, ``Functional Stability Analysis of Numerical Algorithms'', Ph.D. thesis, Department of Computer Sciences, University of Texas at Austin, 1990. } \seealso{ \code{subplex::subplex} } nloptr/man/is.nloptr.Rd0000644000176200001440000000105614145700341014563 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/is.nloptr.R \name{is.nloptr} \alias{is.nloptr} \title{R interface to NLopt} \usage{ is.nloptr(x) } \arguments{ \item{x}{object to be tested.} } \value{ Logical. Return TRUE if all tests were passed, otherwise return FALSE or exit with Error. } \description{ is.nloptr preforms checks to see if a fully specified problem is supplied to nloptr. Mostly for internal use. } \seealso{ \code{\link[nloptr:nloptr]{nloptr}} } \author{ Jelmer Ypma } \keyword{interface} \keyword{optimize} nloptr/man/lbfgs.Rd0000644000176200001440000000470114636244620013740 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/lbfgs.R \name{lbfgs} \alias{lbfgs} \title{Low-storage BFGS} \usage{ lbfgs( x0, fn, gr = NULL, lower = NULL, upper = NULL, nl.info = FALSE, control = list(), ... ) } \arguments{ \item{x0}{initial point for searching the optimum.} \item{fn}{objective function to be minimized.} \item{gr}{gradient of function \code{fn}; will be calculated numerically if not specified.} \item{lower, upper}{lower and upper bound constraints.} \item{nl.info}{logical; shall the original NLopt info been shown.} \item{control}{list of control parameters, see \code{nl.opts} for help.} \item{...}{further arguments to be passed to the function.} } \value{ List with components: \item{par}{the optimal solution found so far.} \item{value}{the function value corresponding to \code{par}.} \item{iter}{number of (outer) iterations, see \code{maxeval}.} \item{convergence}{integer code indicating successful completion (> 0) or a possible error number (< 0).} \item{message}{character string produced by NLopt and giving additional information.} } \description{ Low-storage version of the Broyden-Fletcher-Goldfarb-Shanno (BFGS) method. } \details{ The low-storage (or limited-memory) algorithm is a member of the class of quasi-Newton optimization methods. It is well suited for optimization problems with a large number of variables. One parameter of this algorithm is the number \code{m} of gradients to remember from previous optimization steps. NLopt sets \code{m} to a heuristic value by default. It can be changed by the NLopt function \code{set_vector_storage}. } \note{ Based on a Fortran implementation of the low-storage BFGS algorithm written by L. Luksan, and posted under the GNU LGPL license. } \examples{ flb <- function(x) { p <- length(x) sum(c(1, rep(4, p-1)) * (x - c(1, x[-p])^2)^2) } # 25-dimensional box constrained: par[24] is *not* at the boundary S <- lbfgs(rep(3, 25), flb, lower=rep(2, 25), upper=rep(4, 25), nl.info = TRUE, control = list(xtol_rel=1e-8)) ## Optimal value of objective function: 368.105912874334 ## Optimal value of controls: 2 ... 2 2.109093 4 } \references{ J. Nocedal, ``Updating quasi-Newton matrices with limited storage,'' Math. Comput. 35, 773-782 (1980). D. C. Liu and J. Nocedal, ``On the limited memory BFGS method for large scale optimization,'' Math. Programming 45, p. 503-528 (1989). } \seealso{ \code{\link{optim}} } \author{ Hans W. Borchers } nloptr/man/crs2lm.Rd0000644000176200001440000000630714636244620014051 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/global.R \name{crs2lm} \alias{crs2lm} \title{Controlled Random Search} \usage{ crs2lm( x0, fn, lower, upper, maxeval = 10000, pop.size = 10 * (length(x0) + 1), ranseed = NULL, xtol_rel = 1e-06, nl.info = FALSE, ... ) } \arguments{ \item{x0}{initial point for searching the optimum.} \item{fn}{objective function that is to be minimized.} \item{lower, upper}{lower and upper bound constraints.} \item{maxeval}{maximum number of function evaluations.} \item{pop.size}{population size.} \item{ranseed}{prescribe seed for random number generator.} \item{xtol_rel}{stopping criterion for relative change reached.} \item{nl.info}{logical; shall the original \acronym{NLopt} info be shown.} \item{...}{additional arguments passed to the function.} } \value{ List with components: \item{par}{the optimal solution found so far.} \item{value}{the function value corresponding to \code{par}.} \item{iter}{number of (outer) iterations, see \code{maxeval}.} \item{convergence}{integer code indicating successful completion (> 0) or a possible error number (< 0).} \item{message}{character string produced by \acronym{NLopt} and giving additional information.} } \description{ The Controlled Random Search (\acronym{CRS}) algorithm (and in particular, the \acronym{CRS2} variant) with the `local mutation' modification. } \details{ The \acronym{CRS} algorithms are sometimes compared to genetic algorithms, in that they start with a random population of points, and randomly evolve these points by heuristic rules. In this case, the evolution somewhat resembles a randomized Nelder-Mead algorithm. The published results for \acronym{CRS} seem to be largely empirical. } \note{ The initial population size for CRS defaults to \eqn{10x(n+1)} in \eqn{n} dimensions, but this can be changed. The initial population must be at least \eqn{n+1}. } \examples{ ## Minimize the Hartmann 6-Dimensional function ## See https://www.sfu.ca/~ssurjano/hart6.html a <- c(1.0, 1.2, 3.0, 3.2) A <- matrix(c(10, 0.05, 3, 17, 3, 10, 3.5, 8, 17, 17, 1.7, 0.05, 3.5, 0.1, 10, 10, 1.7, 8, 17, 0.1, 8, 14, 8, 14), nrow = 4) B <- matrix(c(.1312, .2329, .2348, .4047, .1696, .4135, .1451, .8828, .5569, .8307, .3522, .8732, .0124, .3736, .2883, .5743, .8283, .1004, .3047, .1091, .5886, .9991, .6650, .0381), nrow = 4) hartmann6 <- function(x, a, A, B) { fun <- 0 for (i in 1:4) { fun <- fun - a[i] * exp(-sum(A[i, ] * (x - B[i, ]) ^ 2)) } fun } ## The function has a global minimum of -3.32237 at ## (0.20169, 0.150011, 0.476874, 0.275332, 0.311652, 0.6573) S <- crs2lm(x0 = rep(0, 6), hartmann6, lower = rep(0, 6), upper = rep(1, 6), ranseed = 10L, nl.info = TRUE, xtol_rel=1e-8, maxeval = 10000, a = a, A = A, B = B) S } \references{ W. L. Price, ``Global optimization by controlled random search,'' J. Optim. Theory Appl. 40 (3), p. 333-348 (1983). P. Kaelo and M. M. Ali, ``Some variants of the controlled random search algorithm for global optimization,'' J. Optim. Theory Appl. 130 (2), 253-264 (2006). } nloptr/man/nloptr.print.options.Rd0000644000176200001440000000231314636244620017003 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/nloptr.print.options.R \name{nloptr.print.options} \alias{nloptr.print.options} \title{Print description of nloptr options} \usage{ nloptr.print.options(opts.show = NULL, opts.user = NULL) } \arguments{ \item{opts.show}{list or vector with names of options. A description will be shown for the options in this list. By default, a description of all options is shown.} \item{opts.user}{object containing user supplied options. This argument is optional. It is used when \code{nloptr.print.options} is called from \code{nloptr}. In that case options are listed if \code{print_options_doc} is set to \code{TRUE} when passing a minimization problem to \code{nloptr}.} } \description{ This function prints a list of all the options that can be set when solving a minimization problem using \code{nloptr}. } \examples{ library('nloptr') nloptr.print.options() nloptr.print.options(opts.show = c("algorithm", "check_derivatives")) opts <- list("algorithm"="NLOPT_LD_LBFGS", "xtol_rel"=1.0e-8) nloptr.print.options(opts.user = opts) } \seealso{ \code{\link[nloptr:nloptr]{nloptr}} } \author{ Jelmer Ypma } \keyword{interface} \keyword{optimize} nloptr/man/nl.opts.Rd0000644000176200001440000000206214145700341014226 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/nloptions.R \name{nl.opts} \alias{nl.opts} \title{Setting NL Options} \usage{ nl.opts(optlist = NULL) } \arguments{ \item{optlist}{list of options, see below.} } \value{ returns a list with default and changed options. } \description{ Sets and changes the NLOPT options. } \details{ The following options can be set (here with default values): \code{stopval = -Inf, # stop minimization at this value}\cr \code{xtol_rel = 1e-6, # stop on small optimization step}\cr \code{maxeval = 1000, # stop on this many function evaluations}\cr \code{ftol_rel = 0.0, # stop on change times function value}\cr \code{ftol_abs = 0.0, # stop on small change of function value}\cr \code{check_derivatives = FALSE} } \note{ There are more options that can be set for solvers in NLOPT. These cannot be set through their wrapper functions. To see the full list of options and algorithms, type \code{nloptr.print.options()}. } \examples{ nl.opts(list(xtol_rel = 1e-8, maxeval = 2000)) } \author{ Hans W. Borchers } nloptr/man/direct.Rd0000644000176200001440000001002114636244620014105 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/direct.R \name{direct} \alias{direct} \alias{directL} \title{DIviding RECTangles Algorithm for Global Optimization} \usage{ direct( fn, lower, upper, scaled = TRUE, original = FALSE, nl.info = FALSE, control = list(), ... ) directL( fn, lower, upper, randomized = FALSE, original = FALSE, nl.info = FALSE, control = list(), ... ) } \arguments{ \item{fn}{objective function that is to be minimized.} \item{lower, upper}{lower and upper bound constraints.} \item{scaled}{logical; shall the hypercube be scaled before starting.} \item{original}{logical; whether to use the original implementation by Gablonsky -- the performance is mostly similar.} \item{nl.info}{logical; shall the original NLopt info been shown.} \item{control}{list of options, see \code{nl.opts} for help.} \item{...}{additional arguments passed to the function.} \item{randomized}{logical; shall some randomization be used to decide which dimension to halve next in the case of near-ties.} } \value{ List with components: \item{par}{the optimal solution found so far.} \item{value}{the function value corresponding to \code{par}.} \item{iter}{number of (outer) iterations, see \code{maxeval}.} \item{convergence}{integer code indicating successful completion (> 0) or a possible error number (< 0).} \item{message}{character string produced by NLopt and giving additional information.} } \description{ DIRECT is a deterministic search algorithm based on systematic division of the search domain into smaller and smaller hyperrectangles. The DIRECT_L makes the algorithm more biased towards local search (more efficient for functions without too many minima). } \details{ The DIRECT and DIRECT-L algorithms start by rescaling the bound constraints to a hypercube, which gives all dimensions equal weight in the search procedure. If your dimensions do not have equal weight, e.g. if you have a ``long and skinny'' search space and your function varies at about the same speed in all directions, it may be better to use unscaled variant of the DIRECT algorithm. The algorithms only handle finite bound constraints which must be provided. The original versions may include some support for arbitrary nonlinear inequality, but this has not been tested. The original versions do not have randomized or unscaled variants, so these options will be disregarded for these versions. } \note{ The DIRECT_L algorithm should be tried first. } \examples{ ### Minimize the Hartmann6 function hartmann6 <- function(x) { a <- c(1.0, 1.2, 3.0, 3.2) A <- matrix(c(10.0, 0.05, 3.0, 17.0, 3.0, 10.0, 3.5, 8.0, 17.0, 17.0, 1.7, 0.05, 3.5, 0.1, 10.0, 10.0, 1.7, 8.0, 17.0, 0.1, 8.0, 14.0, 8.0, 14.0), nrow=4, ncol=6) B <- matrix(c(.1312,.2329,.2348,.4047, .1696,.4135,.1451,.8828, .5569,.8307,.3522,.8732, .0124,.3736,.2883,.5743, .8283,.1004,.3047,.1091, .5886,.9991,.6650,.0381), nrow=4, ncol=6) fun <- 0 for (i in 1:4) { fun <- fun - a[i] * exp(-sum(A[i,] * (x - B[i,]) ^ 2)) } fun } S <- directL(hartmann6, rep(0, 6), rep(1, 6), nl.info = TRUE, control = list(xtol_rel = 1e-8, maxeval = 1000)) ## Number of Iterations....: 1000 ## Termination conditions: stopval: -Inf ## xtol_rel: 1e-08, maxeval: 1000, ftol_rel: 0, ftol_abs: 0 ## Number of inequality constraints: 0 ## Number of equality constraints: 0 ## Current value of objective function: -3.32236800687327 ## Current value of controls: ## 0.2016884 0.1500025 0.4768667 0.2753391 0.311648 0.6572931 } \references{ D. R. Jones, C. D. Perttunen, and B. E. Stuckmann, ``Lipschitzian optimization without the Lipschitz constant,'' J. Optimization Theory and Applications, vol. 79, p. 157 (1993). J. M. Gablonsky and C. T. Kelley, ``A locally-biased form of the DIRECT algorithm," J. Global Optimization, vol. 21 (1), p. 27-37 (2001). } \seealso{ The \code{dfoptim} package will provide a pure R version of this algorithm. } \author{ Hans W. Borchers } nloptr/man/figures/0000755000176200001440000000000014152116306014006 5ustar liggesusersnloptr/man/figures/logo.png0000644000176200001440000005346714152116306015473 0ustar liggesusersPNG  IHDRX?iCCPicc8U]hU>+$΃Ԧ5lRфem,lAݝi&3i)>A['!j-P(G 3k~s ,[%,-:t} }-+*&¿ gPG݅ج8"eŲ]A b ;l õWϙ2_E,(ۈ#Zsێ<5)"E6N#ӽEkۃO0}*rUt.iei #]r >cU{t7+ԙg߃xuWB_-%=^ t0uvW9 %/VBW'_tMۓP\>@y0`D i|[` hh)Tj0B#ЪhU# ~yhu fp#1I/I"0! 'Sdd:J5ǖ"sdy#R7wAgdJ7kʕn^:}nWFVst$gj-tԝr_װ_7Z ~V54V }o[G=Nd>-UlaY5V}xg[?k&>srq߀].r_r_qsGjy4k iQܟBZ-<(d=dKO a/zv7]ǰod}sn?TF'|3Nn#I?"mzv~K=گsl<b|_|4>?pߋQrib 2* (Ѧh{28oIyes8';Z9h6g>xRx'b8ՃWOϫ[xn%|^z}%x  cHRMz&u0`:pQ<bKGDtIME (488qQIDATxwxކM! %bÊxc9c{ب"M^CzH}?&-IHM+%3<_1(cTN ng(44: d!p @ P4PнVolarиZ;AlRvKH,n-G~Y"&?h(SoX3={Ƨ@Zd },,|Ev(KmIVIE+ޜddH˗K7,{zTV[\d2i$+R|=d駟޽@N%d2NpCA׀{.-tT |N}Wj8#^Fdmya ٢!L%{.ר!={975Nc#RddN[c2D~n#렓Pt Ҳe\HO/F4M5y1Pu7( .\)12͛iT[7) 3A@ׂ,["yjTzM1_˲=*RFy-~ ¿vQ1%H>(mݚ?G6mƍ3]%k6l5=E F0|-#-t[24),%d =ύ gǓpvsgiʔn~e8/LO/N @C,|Ȳ :kIK/ͯ,rsRݺyn;MɚrX@,Jms+WƎ֯/ %3SZFR%B> /hQdskB+' $͙#9ki nNzd-ZX\wz.lR۶g_Y#&F#U+f+ΙeZX\vA 1}bݾxkKO?-Y[U:&Y5(YFI^p[ͯqmMR/B 7Zm­zӋ$#Kɺ5iӤ^-:1#qނK9ȞFn-CÐZ&LN_v8~\z-Y3q*fX+XŒ~FͬEKv[7F7 StҥKE&ty-=e %䋂l^l=ᅲ|Z_|$$&vM"7h4fE,!Y#t4^t5^y<7NM2"K̛cժҖ-<ןp8+UU'AoZRO.WA'<}Ұa҂eͯ*"l;@bE,ds03ѯ4ϵۥN/43Ybct[\5e -"6|݀EA@g`<0sW~}Nu-.`$sؿc$m` Y^2r'k*jV#G}At4nEap8`zx=6 ^F^KpOl~Ҁٖ_Y$%`ѷi=p`-ޅmїd VL7?ڴ>D:}ׯEq#}t^@3AW3,B.c]G@QQ0f qԭ F)[#=0y29j0x8K$JQku jjVCCvmX-x X8Y&~ڲr wfpMpШ5ϵ۷"kS8L>ErY˗ ArN[&22௿uJj6fOZ-P`p3qF.sgSBnEi&1\z]X4 qCxHA+`ظ9T&slaQT> _~ |bnAy 'l>z<p0fjԽBf`e6o߇ᅦUad~d2FJ>jp9vז.wnnYX7h̟o L爷1%}!bp+-dA0~< bfXX4qq0}:L֙=s0fqH,s[:,3Mnj,L?=V* y5ہ;:jFD¸qЪ5ϵ/0=V || \Lg.Àv {޽\bW Bs ̛gΏ-t՜JL'1܊A;;P_x lp饦cBE );sZS ]K\-{?-p0(Vs[^t VO`snGz LZ } Dd$͛in,s)))L65kR^=ի͚$[ K~ñcff&MqZ;jV%Pb~)Pݴp89u~))PZqc,,C^+:Z6[>ƒm(R%  \P U"'mdf+.߯<lo;!_/+UuXU۶ UBWdVMBC5f<-WN+۷O3<;wQuY$'K?,9ۢaH.a:Կz@覦2m4mURZjQB r\ZZϿ ӴP:u7ꫯo戗Y%4 '5u*lj͘zV%;Ė-[TV-;TzײeZh5k,{Oũs TΝoh:v옯Ev4{c+iSh?Rp\e+V'0+CΝ9r˱۶mcԩEҎds`dȑ|W~Te05nY>=r}Ì38sLUҲel6ڷonwjoذB pʕܹӥogر\r%~T)~f̘RޢE sݛ.]]h ,(t[Gy9)6mʣ>Jv툲gZ'8&gN\zڵkӷo_pbb"sq)_>׿3ZX~+\eԭ[m.n":t۱vZ,YRޥK¢[ٳy۴iC޽ѣs)߰asνv8qթSk׏?dž \;wqL]ʝN'WvYiii̙3e?f͚4h׏?l2-[R^fM0~`ʕnǮ]5kKyӦM 2Y~)M6 [֭ː!CWn]ZjR~ ֭[Wvp)rkk/ٸqKyin';UTa̘1nC̛7ty0pKyZ y.RZhRyf|cƍ.-[{~L׬Yvz]7[nq)?rSL$vRޫW/j׮da_ СC.M4+(Zj i֭..rJ/_R^zu,, pRR[ڵkiᎎ;reY*wN.]JLLLHzda uXxKyǎ Bʕݮ\9sƫm.={m۶~LsU^{k׮ԪU˥|ٲenlV5kִ'-pzz:su>YfZnM]ʷl¯+Vw\eaaan/{nfΜRޤIBzt ڵkݚV9rm۶faQcbb8y^pF}Aߜ :m3f,f?~m\vmIÝNgB .$555WYdd$ڵ+k֬vˊ+r\őfy5ޘ3gǏ/pdaQ\ǎc.uԡ|Er/ܭüyrh߿IÆ ΣE뮻1b'Nd.,, ĉnz]d߿?}q)_l %%ٳgiذ8\`t= /^wM޽3f 3f !!a - pW_}+h:@@@@j rt:-֭[ҥK]o>O癙2}tnz|` آXYX9s0a-Z}Ըq"wٳ'aaa$''*IJJСCF >y }mR~}( goUY&+Wv ުU+A\z.{eɒ%nC֯_߭WSNV\XѣG駟MfaQL͛7g„ ,[ѣGgoլ^m4PF >066z~F幍o> V 6t¢(idrETT=z`Ŋlڴ 2qD)WMZKhm۶eyfddx>mۖ Z\LMhŐzIϞ=3f Gq0hтA1q<놆e~Hs:6 ݞ=+zQR =23Ȅdp:!( 8n7Š%cpp0 /pY8;;ҵkWuvsJ*y.~Y'vb۶m:uǏsiN:ӧIII!330MQZ5hԨ 4QFT\-E'%]t 6jU7*- $%p:7ޝGG(_nСn3?o߾DDDx\`m۶uh-?^zAʕ_>zbСtСH(2Æmj=؃ 9RL:B P矐GO}|-,[A:v-^D?hueذa^xL-wO^#$$E ߠ#bbbXj&MbȐ!<jժ؆؅pj9ca߰| tn ;B8t傡~-_#Of/1{Ҿ}{BBB\%?;wdǎ.塡 j]k{Y ñ*h[4ߗý7@T!˕/_Ν;{p^F$ǏwYdddBZ?v;JPPHNNȑ#^ŋcY0O 0ʝdUW]W_5kp"ֆn@ 9eQ& 88]\\%BxU"# FŊ>|8?#ۇ0k,jԨQ$1,.n`;11B[;wN 440=p)::׏Op+LRRR:"LDP:?Ŝ*pհh,^Uؼysk"}0 H9Jk <|:QpHks`wB Vk4M`gcB(skz‡k׮}dqq)S3g灁?{_(K}_d p>7G&waڳgOv)SN|)ȑ#|7x㍌;m, >{1}o}0)̚[ì?ᦡ mFff!@6m%z˂ Xx1 .d۶mhUZzUNJ *W4Z6Kᇙofxbʵmo~3e֭c?7nܸXY/ǎ駟f˖-н{wqSzv*a@E8Z'7t'܇ʕC,*T`uYfw}֩S7xSrUWymY*5 j]G_Wvga|͌~WbEOdddL 2 ɰ|C:vj׮]l &<<'xmʍ7kǑ7ʜ%Rwgٳgە@"dQzw믿+v\t B<|o62GӦM۷onj9o٥<99W^y%=EE)@m_nFFFz͛dqq#>'O=o߾ 2w}ÇY_2h N0Liii,_Ϝ7kTFu:?6l`{zjyLj#8yoˢ p6e߾} \ 6-\rlْ2h իG\\餧{`Ϟ=̚5uQBBCC ޕ.T#==ŋzON'[l} N,:=/###;v,+ .W^m۶NLL䧟~믧[n{,_cxҏngرcǎE"Kmd!!!TZ.]0`:vH9ze9IOO'!!3c V\ƍjժ1Q ,, 0o<-@Ϟ=/{^V1-zhDGGӧOOŊ  33HJJb˖-,Z3gra$a٨T*޽{INN 0@TT6 l۶-[ҴiB{F5h\v-Z9soCx뭷}NNgw!{= !8O7(Nz <3j(NʼyXz5qqq+|Uá\KNM[Ќ9]xnErE|^K l{C{zCkSOѻw|ϕK'v*wߛaF) $'[$)"n `IaѣСk`= Na^ ` ͭ;JQQQQa!;VQv!UniǽG,*޽od̬̀` 0B 4$#pAb"J/?` 8wa&׭)K6c &nBY`m`r#dfqͬy=8__aIn֍Y a.vMp m`"3mQ _(:8 qfplf+")hC1\T}n]l:ݺU@/s9[ P9؈9 0J_-烮m`jXzw) avc'>6oCQIUаFu@P>jPO.os3cdSo8x vuaxZ 6LL?wM~ի:Apt6ܣcm/]q~178z$١9$<7F.]0 *]lTr]}b9oZ:l ikz6[PtnmEТ!SI`&3 5/-p Z?as@h Bhl?aC~Zs% AP0܆+a@܃m7|+4 c/ Ol6605ŁRRp~1[p~:vJm֊p 2== Z{qھ׏̲d51Ԯ 1$uPỹBr <;8.:0 hϭx}%',|y\VlNŜ䜈m ƢBz-Тw2o'q^[`4k1Sa ,.//7'_LEY]r+1P)nM[q+q:مtN7h!_|£#ZHrs@nW>yK;ݟpi]'9{51ƌvpiKlu֥#9:{8ۛ %p> obTYjq8`t37A"^L9_~\<}n,[㦞Dif?y -X(3=xQ"_>ofala{~lѩ[ZY`}=WB^|-<0h.:+WMC[o[@8ڮMsJH[h& ̽)ĨW0F'71')}9GO2?>{^wtK[,{`9rR..ȇ4K<15ʅ`{i#hPG0v6o7} vC6=ߝZCz ;bbЯ)c܄QQu=Fq跙hҒ|)?é=|19^m쁨He̐Aж%Xy 28kh 1B~0z\'셧Ҭt/ybPz{;_B;jqc [٦y;uY?EgzWbl^,blc؃s_h/iKIjSpD3-]a;>-X ^>j&ͱw'.Rc = .=:y̘mztF6-!ol 8+7Y>8r}݈ fh7{9i#>\"t8$&qn-04$>pt8'~͋1܌1u#iPkVMZ__?~JD8<<<Cﵞ;¾?;'!)pI5r-4ʕh{55)g1}v|9O=bJ`6\ +"_8cwAXZ`:1[uSô+xΖ vPX`\R*FS>%829Zn?:]Zzd!۲b{e&=K|8 P׋wayp)]yس3V.lQ5k/8+ձc(>bbk$e+(޹r>'̄dHL J(9>76} Νj{_eLeݙ7 Hh9sU#usm(輎S'4w&fZYԚĴa;?Ś_m͵ _> J8~Xۭ%`SZu䮐 lwv}PhpEC7zwg,viԾrB˖!s,ќ8Xڣ uP\2n` QnpD[P_1~6 sܘX0$ lт](o 9ĨmL԰Fr[ E4Pzb{I/P\٭n8\ :|y0Gꅝ3~(k*/N1|vb\w t-dOFH9eL}N"ţ ;3aq+WPFFڰtwӐ0W,3 k~[quaƪ5ͷp::SxUZw];sěvbTq%K4 {$ΛnCoOJ}6n~ckyIH2c]?\l,ߟuLCP=g1=ھ YAu&^}؞7FїSq6ھ%w03FV/$OLuo-ya Lw:^̄ӠC4-'%% ~oW;Pb¹핔dt(h\1cE)j-ΩSѤYF9^0qmE^[9W#*Ays 1QKjz];o\Bd Z}q :%byp.\ b1] -p:-Z/EIqTg{^a k1ʕ|Bg'{2GŌ6.Թ"!L9f^oذ\BDCOвQn3L#(z[z8otd [xa'9)Dg0S4ǃr\Q8%%$FN?*A! +ֹS23`Yp ҽ yxόap" 2hNuk;/1ZV׏6K @?s^S F tZ;JKͽ~Mݻs٧[_u>2v;M` M:1 ߕK'4+_LQbg51ȃв982q9GRlň(>c`pˈ5t>%yCst4?opX7F?E!KXCF :a\3Oo[./-ޗI 3,Ls`Du *V0;ўX0혓'!<<˗7+dDFVEܫgN ܄͚s~{@bOB`@O3eV' 0ݙ[`D%,`ø vBz-a1zFdغ7B9}D׶f ̔EC801F_c%<ԮmDEX@_@zy~v,;G3o zIr1v(_$_l KVS%ŏe C*Wcl .)Rgߙϵ옕6,̭Y|vWHH/ս%nM"`5(X fb_ аȆgqp/nAF [hr^͉~n-C| )?"ѽl$֬l/ Ĉ0nm }aa*x.3G|> GV`l?=/^4=_?hVcf Uw_ ))Kh0>v~;ԭso~[Gc,.iန3^iM~`UHg| L Gg\^O!6׷taf{`Ÿ//tcRƹ$teJLB>Bon>[1^Ebba0xUUZ;uzfYb"22ht+tǎܹv-T QQڢd F`tR)w\"g:w3g@F:5o܌־-F5x 9 }ce,8@j*̙=}Gĕ/ϗw+5jzu֭YOǏ`RNr9mY0r9?6'OZл3;ԭՋK?6F0hqޗt}4VMLϾm[;4p8`zx=6 3 RW"o7o_ΚU%& o_"w'xZ_njyhnQ%'Ӊ׭0}} 'AJ*.LLbGa$sؿcUG@+CCy72_'q,BѵZVc^f:uLdQ$H}&9QJIukJK}*q)%Jni&Mڷ7Eg;˕c5j(f:)KBaij*M]Y~ P HÇK!}ޗ&MuKJekqH[vyiWRL[7KKyaDPފP3IGE2}kѣѤnXQkl69<]Z5l_?Ob$_IKVҘǤ^3.Q+ҷ3|Z8ƍҸqR*^lǐ]jOg  l6q啪S /WӦKǎnf)}p.HuKGiޟ古 _aWF< WHFժ fl"S_x|ݺ}O z^JJ+&El&=_hٴSzEi-^锶o~X*3v~  *]r0>矛'J5SG꨷qtҩS~ԥdO^o)?E{KxI8]OH~kOA:G'NHo-5ontaiUPnTxHxa?¸{ Y"#m`< 9(HJ_?]*-ZKb\m-=4G)Տ^XKҜ%(5!ڜN 9Y6MK n0U#~ iHw¢5re-ە*VƌVa҃/HNK3Js< ߒҬϜI3nxPZ{&H4J_,p4#CZ\&B=az3 @MU-rEZy37?d{Ϋ]tY6m3_L#'`6q R˟`qP[}b[к%SROvh4 %j) >/Ç=ߢa0nM噙d8qdsO5;7v>bc}8ҶR[r7HMf.2f. KWzgtDteoVO>HjU|ۤI\gbbFv;tCx/Z_80we`]g`"3L4 W4SzBc?aQ)5NX20J燋i?d:ׯYc:ۻ{$wm6~ۉKM-E TEE^gUm[ZU.4T1BZК)iӮ ;6#SZV?4wi{o3#C=  WC3o/%Uڶ[ZN[sk软\篤IKCxw@Gkv?w!RRv-9IIr:ݷK`h;6-{K3p: 皽{ЭԮm>|:t00`7$n+, `H_heF)H [©SlLyfc}z:d, |߂,M3Q@ݭ[ n;s6{1|Ed,l))Pg\hlL@oF; U@P0lвڳJ;z kj27} M~#źuwիkr^n_.ifQt8RSJZVk+:L3Kbbeyusvz|yU-Wm 7={GUHZ۽--eY8Ҕ9f2*^Hexc}ݬ "=]ZX:),kTSvVS=XՎS,Y6 pf;0 :믧ҥ\{0wJCZԚ5[̈ XBqp@ƨXM*N'  S= HqDl},W[r 87G}`|!5wn-m6hΜY\< Sn1XLhy+LGn   u-J3ǧ"o K@\GπOJ,J  +Vn]Z7v%KfbtRxd7 {i]*?5<\9X5?.kHff>33:j&x1G]W=A-o/MhFƷ(>-}Ԧ,=@9oҏ u} ˕3#*fQ:9sF5K0tE!R_#@!!9O*}-CfntRJyz Z3YсU(k]w7{ˡCf(>3Cx@FG ,.{E P#k~vkWMS; ">^<̈<0yPݬ/Eeﳶ<-^{Y?-.-X ff"ĬR-d0ueLO/Dda6k~ if̗^44kKel!WRŨ]͛+}pkR&^+Vp/:D֖B 60Ќo-/IIwIݻ^{:5Ͻ Po/9m ҍ7Jm-%Ғ%ҨQ@)YkAp-VnaokՒoi/8fW*\o`Kkl!耷qVf909yR0Ajk描gY` "dϏۀ>yz̈3f|HJO<}H\-FD׬ݑ)\)zEg@3,Zau%ݠ ܾuJ=gF3ػWzivE-RҤIҧJmix,5\(f;dyt[2D7&*͞mf/4 2(A!a?mq8iӦmpHKcǚ&0T.[l!WQ#W#G|-! l OȞ7:%uN-nҔ)R^t *k'p-e^¤#Lm1-M3cdhW&utdaau,ӿmGKᐶl<2AK@#1]8kQV2,ysw'|-Q;&旇N#HKl̖L=--Mn II?H=zz+E"m7̈o0Ǩ i2 y? gQv8&tУbTSҞ=%ktJvI?.ըdO_s(EJYf[xq[ J9xSR_t"X'֖Ź޸h b'U$uvm̏33Un/ 3U, [ȕAcAe֫'=tw>?ωByK%x-,r(‹bH4tbj4wtզrϵ(n1=ΏUƏ734t8 {5]7E2E=?`qc3ѣK/I x9+ˁEqmymc@Ks,af9Ol)yR@er(YaQx2 or$yd[Q,7? #{9K= z'3k?v[',eC(yd%tEXtdate:create2021-11-29T20:40:30+00:00N%tEXtdate:modify2021-11-29T20:40:30+00:00/E=tEXticc:copyrightCopyright 2007 Apple Inc., all rights reserved.f)#tEXticc:descriptionGeneric RGB Profile8IENDB`nloptr/man/stogo.Rd0000644000176200001440000000422714636244620014001 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/global.R \name{stogo} \alias{stogo} \title{Stochastic Global Optimization} \usage{ stogo( x0, fn, gr = NULL, lower = NULL, upper = NULL, maxeval = 10000, xtol_rel = 1e-06, randomized = FALSE, nl.info = FALSE, ... ) } \arguments{ \item{x0}{initial point for searching the optimum.} \item{fn}{objective function that is to be minimized.} \item{gr}{optional gradient of the objective function.} \item{lower, upper}{lower and upper bound constraints.} \item{maxeval}{maximum number of function evaluations.} \item{xtol_rel}{stopping criterion for relative change reached.} \item{randomized}{logical; shall a randomizing variant be used?} \item{nl.info}{logical; shall the original \acronym{NLopt} info be shown.} \item{...}{additional arguments passed to the function.} } \value{ List with components: \item{par}{the optimal solution found so far.} \item{value}{the function value corresponding to \code{par}.} \item{iter}{number of (outer) iterations, see \code{maxeval}.} \item{convergence}{integer code indicating successful completion (> 0) or a possible error number (< 0).} \item{message}{character string produced by \acronym{NLopt} and giving additional information.} } \description{ \acronym{StoGO} is a global optimization algorithm that works by systematically dividing the search space---which must be bound-constrained---into smaller hyper-rectangles via a branch-and-bound technique, and searching them using a gradient-based local-search algorithm (a \acronym{BFGS} variant), optionally including some randomness. } \note{ Only bounds-constrained problems are supported by this algorithm. } \examples{ ## Rosenbrock Banana objective function rbf <- function(x) {(1 - x[1]) ^ 2 + 100 * (x[2] - x[1] ^ 2) ^ 2} x0 <- c(-1.2, 1) lb <- c(-3, -3) ub <- c(3, 3) ## The function as written above has a minimum of 0 at (1, 1) stogo(x0 = x0, fn = rbf, lower = lb, upper = ub) } \references{ S. Zertchaninov and K. Madsen, ``A C++ Programme for Global Optimization,'' IMM-REP-1998-04, Department of Mathematical Modelling, Technical University of Denmark. } \author{ Hans W. Borchers } nloptr/man/cobyla.Rd0000644000176200001440000000700114636244620014110 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/cobyla.R \name{cobyla} \alias{cobyla} \title{Constrained Optimization by Linear Approximations} \usage{ cobyla( x0, fn, lower = NULL, upper = NULL, hin = NULL, nl.info = FALSE, control = list(), deprecatedBehavior = TRUE, ... ) } \arguments{ \item{x0}{starting point for searching the optimum.} \item{fn}{objective function that is to be minimized.} \item{lower, upper}{lower and upper bound constraints.} \item{hin}{function defining the inequality constraints, that is \code{hin>=0} for all components.} \item{nl.info}{logical; shall the original \acronym{NLopt} info be shown.} \item{control}{list of options, see \code{nl.opts} for help.} \item{deprecatedBehavior}{logical; if \code{TRUE} (default for now), the old behavior of the Jacobian function is used, where the equality is \eqn{\ge 0} instead of \eqn{\le 0}. This will be reversed in a future release and eventually removed.} \item{...}{additional arguments passed to the function.} } \value{ List with components: \item{par}{the optimal solution found so far.} \item{value}{the function value corresponding to \code{par}.} \item{iter}{number of (outer) iterations, see \code{maxeval}.} \item{convergence}{integer code indicating successful completion (> 0) or a possible error number (< 0).} \item{message}{character string produced by NLopt and giving additional information.} } \description{ \acronym{COBYLA} is an algorithm for derivative-free optimization with nonlinear inequality and equality constraints (but see below). } \details{ It constructs successive linear approximations of the objective function and constraints via a simplex of \eqn{n+1} points (in \eqn{n} dimensions), and optimizes these approximations in a trust region at each step. \acronym{COBYLA} supports equality constraints by transforming them into two inequality constraints. This functionality has not been added to the wrapper. To use \acronym{COBYLA} with equality constraints, please use the full \code{nloptr} invocation. } \note{ The original code, written in Fortran by Powell, was converted in C for the \acronym{SciPy} project. } \examples{ ## Solve the Hock-Schittkowski problem no. 100 with analytic gradients ## See https://apmonitor.com/wiki/uploads/Apps/hs100.apm x0.hs100 <- c(1, 2, 0, 4, 0, 1, 1) fn.hs100 <- function(x) {(x[1] - 10) ^ 2 + 5 * (x[2] - 12) ^ 2 + x[3] ^ 4 + 3 * (x[4] - 11) ^ 2 + 10 * x[5] ^ 6 + 7 * x[6] ^ 2 + x[7] ^ 4 - 4 * x[6] * x[7] - 10 * x[6] - 8 * x[7]} hin.hs100 <- function(x) {c( 2 * x[1] ^ 2 + 3 * x[2] ^ 4 + x[3] + 4 * x[4] ^ 2 + 5 * x[5] - 127, 7 * x[1] + 3 * x[2] + 10 * x[3] ^ 2 + x[4] - x[5] - 282, 23 * x[1] + x[2] ^ 2 + 6 * x[6] ^ 2 - 8 * x[7] - 196, 4 * x[1] ^ 2 + x[2] ^ 2 - 3 * x[1] * x[2] + 2 * x[3] ^ 2 + 5 * x[6] - 11 * x[7]) } S <- cobyla(x0.hs100, fn.hs100, hin = hin.hs100, nl.info = TRUE, control = list(xtol_rel = 1e-8, maxeval = 2000), deprecatedBehavior = FALSE) ## The optimum value of the objective function should be 680.6300573 ## A suitable parameter vector is roughly ## (2.330, 1.9514, -0.4775, 4.3657, -0.6245, 1.0381, 1.5942) S } \references{ M. J. D. Powell, ``A direct search optimization method that models the objective and constraint functions by linear interpolation,'' in Advances in Optimization and Numerical Analysis, eds. S. Gomez and J.-P. Hennart (Kluwer Academic: Dordrecht, 1994), p. 51-67. } \seealso{ \code{\link{bobyqa}}, \code{\link{newuoa}} } \author{ Hans W. Borchers } nloptr/man/nl.grad.Rd0000644000176200001440000000217714636244620014175 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/gradients.R \name{nl.grad} \alias{nl.grad} \alias{nl.jacobian} \title{Numerical Gradients and Jacobians} \usage{ nl.grad(x0, fn, heps = .Machine$double.eps^(1/3), ...) } \arguments{ \item{x0}{point as a vector where the gradient is to be calculated.} \item{fn}{scalar function of one or several variables.} \item{heps}{step size to be used.} \item{\dots}{additional arguments passed to the function.} } \value{ \code{grad} returns the gradient as a vector; \code{jacobian} returns the Jacobian as a matrix of usual dimensions. } \description{ Provides numerical gradients and Jacobians. } \details{ Both functions apply the ``central difference formula'' with step size as recommended in the literature. } \examples{ fn1 <- function(x) sum(x ^ 2) nl.grad(seq(0, 1, by = 0.2), fn1) ## [1] 0.0 0.4 0.8 1.2 1.6 2.0 nl.grad(rep(1, 5), fn1) ## [1] 2 2 2 2 2 fn2 <- function(x) c(sin(x), cos(x)) x <- (0:1) * 2 * pi nl.jacobian(x, fn2) ## [,1] [,2] ## [1,] 1 0 ## [2,] 0 1 ## [3,] 0 0 ## [4,] 0 0 } \author{ Hans W. Borchers } nloptr/man/mma.Rd0000644000176200001440000001023614636244620013415 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/mma.R \name{mma} \alias{mma} \title{Method of Moving Asymptotes} \usage{ mma( x0, fn, gr = NULL, lower = NULL, upper = NULL, hin = NULL, hinjac = NULL, nl.info = FALSE, control = list(), deprecatedBehavior = TRUE, ... ) } \arguments{ \item{x0}{starting point for searching the optimum.} \item{fn}{objective function that is to be minimized.} \item{gr}{gradient of function \code{fn}; will be calculated numerically if not specified.} \item{lower, upper}{lower and upper bound constraints.} \item{hin}{function defining the inequality constraints, that is \code{hin <= 0} for all components.} \item{hinjac}{Jacobian of function \code{hin}; will be calculated numerically if not specified.} \item{nl.info}{logical; shall the original NLopt info been shown.} \item{control}{list of options, see \code{nl.opts} for help.} \item{deprecatedBehavior}{logical; if \code{TRUE} (default for now), the old behavior of the Jacobian function is used, where the equality is \eqn{\ge 0} instead of \eqn{\le 0}. This will be reversed in a future release and eventually removed.} \item{...}{additional arguments passed to the function.} } \value{ List with components: \item{par}{the optimal solution found so far.} \item{value}{the function value corresponding to \code{par}.} \item{iter}{number of (outer) iterations, see \code{maxeval}.} \item{convergence}{integer code indicating successful completion (> 1) or a possible error number (< 0).} \item{message}{character string produced by NLopt and giving additional information.} } \description{ Globally-convergent method-of-moving-asymptotes (\acronym{MMA}) algorithm for gradient-based local optimization, including nonlinear inequality constraints (but not equality constraints). } \details{ This is an improved \acronym{CCSA} ("conservative convex separable approximation") variant of the original \acronym{MMA} algorithm published by Svanberg in 1987, which has become popular for topology optimization. } \note{ \dQuote{Globally convergent} does not mean that this algorithm converges to the global optimum; rather, it means that the algorithm is guaranteed to converge to some local minimum from any feasible starting point. } \examples{ # Solve the Hock-Schittkowski problem no. 100 with analytic gradients # See https://apmonitor.com/wiki/uploads/Apps/hs100.apm x0.hs100 <- c(1, 2, 0, 4, 0, 1, 1) fn.hs100 <- function(x) {(x[1] - 10) ^ 2 + 5 * (x[2] - 12) ^ 2 + x[3] ^ 4 + 3 * (x[4] - 11) ^ 2 + 10 * x[5] ^ 6 + 7 * x[6] ^ 2 + x[7] ^ 4 - 4 * x[6] * x[7] - 10 * x[6] - 8 * x[7]} hin.hs100 <- function(x) {c( 2 * x[1] ^ 2 + 3 * x[2] ^ 4 + x[3] + 4 * x[4] ^ 2 + 5 * x[5] - 127, 7 * x[1] + 3 * x[2] + 10 * x[3] ^ 2 + x[4] - x[5] - 282, 23 * x[1] + x[2] ^ 2 + 6 * x[6] ^ 2 - 8 * x[7] - 196, 4 * x[1] ^ 2 + x[2] ^ 2 - 3 * x[1] * x[2] + 2 * x[3] ^ 2 + 5 * x[6] - 11 * x[7]) } gr.hs100 <- function(x) { c( 2 * x[1] - 20, 10 * x[2] - 120, 4 * x[3] ^ 3, 6 * x[4] - 66, 60 * x[5] ^ 5, 14 * x[6] - 4 * x[7] - 10, 4 * x[7] ^ 3 - 4 * x[6] - 8) } hinjac.hs100 <- function(x) { matrix(c(4 * x[1], 12 * x[2] ^ 3, 1, 8 * x[4], 5, 0, 0, 7, 3, 20 * x[3], 1, -1, 0, 0, 23, 2 * x[2], 0, 0, 0, 12 * x[6], -8, 8 * x[1] - 3 * x[2], 2 * x[2] - 3 * x[1], 4 * x[3], 0, 0, 5, -11), nrow = 4, byrow = TRUE) } # The optimum value of the objective function should be 680.6300573 # A suitable parameter vector is roughly # (2.330, 1.9514, -0.4775, 4.3657, -0.6245, 1.0381, 1.5942) # Using analytic Jacobian S <- mma(x0.hs100, fn.hs100, gr = gr.hs100, hin = hin.hs100, hinjac = hinjac.hs100, nl.info = TRUE, control = list(xtol_rel = 1e-8), deprecatedBehavior = FALSE) # Using computed Jacobian S <- mma(x0.hs100, fn.hs100, hin = hin.hs100, nl.info = TRUE, control = list(xtol_rel = 1e-8), deprecatedBehavior = FALSE) } \references{ Krister Svanberg, \dQuote{A class of globally convergent optimization methods based on conservative convex separable approximations}, SIAM J. Optim. 12 (2), p. 555-573 (2002). } \seealso{ \code{\link{slsqp}} } \author{ Hans W. Borchers } nloptr/man/ccsaq.Rd0000644000176200001440000001003614636244620013733 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/ccsaq.R \name{ccsaq} \alias{ccsaq} \title{Conservative Convex Separable Approximation with Affine Approximation plus Quadratic Penalty} \usage{ ccsaq( x0, fn, gr = NULL, lower = NULL, upper = NULL, hin = NULL, hinjac = NULL, nl.info = FALSE, control = list(), deprecatedBehavior = TRUE, ... ) } \arguments{ \item{x0}{starting point for searching the optimum.} \item{fn}{objective function that is to be minimized.} \item{gr}{gradient of function \code{fn}; will be calculated numerically if not specified.} \item{lower, upper}{lower and upper bound constraints.} \item{hin}{function defining the inequality constraints, that is \code{hin>=0} for all components.} \item{hinjac}{Jacobian of function \code{hin}; will be calculated numerically if not specified.} \item{nl.info}{logical; shall the original NLopt info been shown.} \item{control}{list of options, see \code{nl.opts} for help.} \item{deprecatedBehavior}{logical; if \code{TRUE} (default for now), the old behavior of the Jacobian function is used, where the equality is \eqn{\ge 0} instead of \eqn{\le 0}. This will be reversed in a future release and eventually removed.} \item{...}{additional arguments passed to the function.} } \value{ List with components: \item{par}{the optimal solution found so far.} \item{value}{the function value corresponding to \code{par}.} \item{iter}{number of (outer) iterations, see \code{maxeval}.} \item{convergence}{integer code indicating successful completion (> 1) or a possible error number (< 0).} \item{message}{character string produced by NLopt and giving additional information.} } \description{ This is a variant of CCSA ("conservative convex separable approximation") which, instead of constructing local MMA approximations, constructs simple quadratic approximations (or rather, affine approximations plus a quadratic penalty term to stay conservative) } \note{ ``Globally convergent'' does not mean that this algorithm converges to the global optimum; it means that it is guaranteed to converge to some local minimum from any feasible starting point. } \examples{ ## Solve the Hock-Schittkowski problem no. 100 with analytic gradients ## See https://apmonitor.com/wiki/uploads/Apps/hs100.apm x0.hs100 <- c(1, 2, 0, 4, 0, 1, 1) fn.hs100 <- function(x) {(x[1] - 10) ^ 2 + 5 * (x[2] - 12) ^ 2 + x[3] ^ 4 + 3 * (x[4] - 11) ^ 2 + 10 * x[5] ^ 6 + 7 * x[6] ^ 2 + x[7] ^ 4 - 4 * x[6] * x[7] - 10 * x[6] - 8 * x[7]} hin.hs100 <- function(x) {c( 2 * x[1] ^ 2 + 3 * x[2] ^ 4 + x[3] + 4 * x[4] ^ 2 + 5 * x[5] - 127, 7 * x[1] + 3 * x[2] + 10 * x[3] ^ 2 + x[4] - x[5] - 282, 23 * x[1] + x[2] ^ 2 + 6 * x[6] ^ 2 - 8 * x[7] - 196, 4 * x[1] ^ 2 + x[2] ^ 2 - 3 * x[1] * x[2] + 2 * x[3] ^ 2 + 5 * x[6] - 11 * x[7]) } gr.hs100 <- function(x) { c( 2 * x[1] - 20, 10 * x[2] - 120, 4 * x[3] ^ 3, 6 * x[4] - 66, 60 * x[5] ^ 5, 14 * x[6] - 4 * x[7] - 10, 4 * x[7] ^ 3 - 4 * x[6] - 8) } hinjac.hs100 <- function(x) { matrix(c(4 * x[1], 12 * x[2] ^ 3, 1, 8 * x[4], 5, 0, 0, 7, 3, 20 * x[3], 1, -1, 0, 0, 23, 2 * x[2], 0, 0, 0, 12 * x[6], -8, 8 * x[1] - 3 * x[2], 2 * x[2] - 3 * x[1], 4 * x[3], 0, 0, 5, -11), nrow = 4, byrow = TRUE) } ## The optimum value of the objective function should be 680.6300573 ## A suitable parameter vector is roughly ## (2.330, 1.9514, -0.4775, 4.3657, -0.6245, 1.0381, 1.5942) # Results with exact Jacobian S <- ccsaq(x0.hs100, fn.hs100, gr = gr.hs100, hin = hin.hs100, hinjac = hinjac.hs100, nl.info = TRUE, control = list(xtol_rel = 1e-8), deprecatedBehavior = FALSE) # Results without Jacobian S <- ccsaq(x0.hs100, fn.hs100, hin = hin.hs100, nl.info = TRUE, control = list(xtol_rel = 1e-8), deprecatedBehavior = FALSE) } \references{ Krister Svanberg, ``A class of globally convergent optimization methods based on conservative convex separable approximations,'' SIAM J. Optim. 12 (2), p. 555-573 (2002). } \seealso{ \code{\link{mma}} } nloptr/man/newuoa.Rd0000644000176200001440000000372014636244620014141 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/cobyla.R \name{newuoa} \alias{newuoa} \title{New Unconstrained Optimization with quadratic Approximation} \usage{ newuoa(x0, fn, nl.info = FALSE, control = list(), ...) } \arguments{ \item{x0}{starting point for searching the optimum.} \item{fn}{objective function that is to be minimized.} \item{nl.info}{logical; shall the original \acronym{NLopt} info be shown.} \item{control}{list of options, see \code{nl.opts} for help.} \item{...}{additional arguments passed to the function.} } \value{ List with components: \item{par}{the optimal solution found so far.} \item{value}{the function value corresponding to \code{par}.} \item{iter}{number of (outer) iterations, see \code{maxeval}.} \item{convergence}{integer code indicating successful completion (> 0) or a possible error number (< 0).} \item{message}{character string produced by NLopt and giving additional information.} } \description{ \acronym{NEWUOA} solves quadratic subproblems in a spherical trust region via a truncated conjugate-gradient algorithm. For bound-constrained problems, \acronym{BOBYQA} should be used instead, as Powell developed it as an enhancement thereof for bound constraints. } \details{ This is an algorithm derived from the \acronym{NEWUOA} Fortran subroutine of Powell, converted to C and modified for the \acronym{NLopt} stopping criteria. } \note{ \acronym{NEWUOA} may be largely superseded by \acronym{BOBYQA}. } \examples{ ## Rosenbrock Banana function rbf <- function(x) {(1 - x[1]) ^ 2 + 100 * (x[2] - x[1] ^ 2) ^ 2} S <- newuoa(c(1, 2), rbf) ## The function as written above has a minimum of 0 at (1, 1) S } \references{ M. J. D. Powell. ``The BOBYQA algorithm for bound constrained optimization without derivatives,'' Department of Applied Mathematics and Theoretical Physics, Cambridge England, technical reportNA2009/06 (2009). } \seealso{ \code{\link{bobyqa}}, \code{\link{cobyla}} } \author{ Hans W. Borchers } nloptr/man/bobyqa.Rd0000644000176200001440000000423414636244620014121 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/cobyla.R \name{bobyqa} \alias{bobyqa} \title{Bound Optimization by Quadratic Approximation} \usage{ bobyqa( x0, fn, lower = NULL, upper = NULL, nl.info = FALSE, control = list(), ... ) } \arguments{ \item{x0}{starting point for searching the optimum.} \item{fn}{objective function that is to be minimized.} \item{lower, upper}{lower and upper bound constraints.} \item{nl.info}{logical; shall the original \acronym{NLopt} info be shown.} \item{control}{list of options, see \code{nl.opts} for help.} \item{...}{additional arguments passed to the function.} } \value{ List with components: \item{par}{the optimal solution found so far.} \item{value}{the function value corresponding to \code{par}.} \item{iter}{number of (outer) iterations, see \code{maxeval}.} \item{convergence}{integer code indicating successful completion (> 0) or a possible error number (< 0).} \item{message}{character string produced by \acronym{NLopt} and giving additional information.} } \description{ \acronym{BOBYQA} performs derivative-free bound-constrained optimization using an iteratively constructed quadratic approximation for the objective function. } \details{ This is an algorithm derived from the \acronym{BOBYQA} Fortran subroutine of Powell, converted to C and modified for the \acronym{NLopt} stopping criteria. } \note{ Because \acronym{BOBYQA} constructs a quadratic approximation of the objective, it may perform poorly for objective functions that are not twice-differentiable. } \examples{ ## Rosenbrock Banana function rbf <- function(x) {(1 - x[1]) ^ 2 + 100 * (x[2] - x[1] ^ 2) ^ 2} ## The function as written above has a minimum of 0 at (1, 1) S <- bobyqa(c(0, 0), rbf) S ## Rosenbrock Banana function with both parameters constrained to [0, 0.5] S <- bobyqa(c(0, 0), rbf, lower = c(0, 0), upper = c(0.5, 0.5)) S } \references{ M. J. D. Powell. ``The BOBYQA algorithm for bound constrained optimization without derivatives,'' Department of Applied Mathematics and Theoretical Physics, Cambridge England, technical reportNA2009/06 (2009). } \seealso{ \code{\link{cobyla}}, \code{\link{newuoa}} } nloptr/man/print.nloptr.Rd0000644000176200001440000000172114636244620015313 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/print.nloptr.R \name{print.nloptr} \alias{print.nloptr} \title{Print results after running nloptr} \usage{ \method{print}{nloptr}(x, show.controls = TRUE, ...) } \arguments{ \item{x}{object containing result from minimization.} \item{show.controls}{Logical or vector with indices. Should we show the value of the control variables in the solution? If \code{show.controls} is a vector with indices, it is used to select which control variables should be shown. This can be useful if the model contains a set of parameters of interest and a set of nuisance parameters that are not of immediate interest.} \item{...}{further arguments passed to or from other methods.} } \description{ This function prints the nloptr object that holds the results from a minimization using \code{nloptr}. } \seealso{ \code{\link[nloptr:nloptr]{nloptr}} } \author{ Jelmer Ypma } \keyword{interface} \keyword{optimize} nloptr/DESCRIPTION0000644000176200001440000000612214636512442013306 0ustar liggesusersPackage: nloptr Type: Package Title: R Interface to NLopt Version: 2.1.1 Authors@R: c(person("Jelmer", "Ypma", role = "aut", email = "uctpjyy@ucl.ac.uk"), person(c("Steven", "G."), "Johnson", role = "aut", comment = "author of the NLopt C library"), person("Aymeric", "Stamm", role = c("ctb", "cre"), email = "aymeric.stamm@cnrs.fr", comment = c(ORCID = "0000-0002-8725-3654")), person(c("Hans", "W."), "Borchers", role = "ctb", email = "hwborchers@googlemail.com"), person("Dirk", "Eddelbuettel", role = "ctb", email = "edd@debian.org"), person("Brian", "Ripley", role = "ctb", comment = "build process on multiple OS"), person("Kurt", "Hornik", role = "ctb", comment = "build process on multiple OS"), person("Julien", "Chiquet", role = "ctb"), person("Avraham", "Adler", role = "ctb", email = "Avraham.Adler@gmail.com", comment = c(ORCID = "0000-0002-3039-0703")), person("Xiongtao", "Dai", role = "ctb"), person("Jeroen", "Ooms", role = "ctb", email = "jeroen@berkeley.edu")) Description: Solve optimization problems using an R interface to NLopt. NLopt is a free/open-source library for nonlinear optimization, providing a common interface for a number of different free optimization routines available online as well as original implementations of various other algorithms. See for more information on the available algorithms. Building from included sources requires 'CMake'. On Linux and 'macOS', if a suitable system build of NLopt (2.7.0 or later) is found, it is used; otherwise, it is built from included sources via 'CMake'. On Windows, NLopt is obtained through 'rwinlib' for 'R <= 4.1.x' or grabbed from the appropriate toolchain for 'R >= 4.2.0'. License: LGPL (>= 3) SystemRequirements: cmake (>= 3.2.0) which is used only on Linux or macOS systems when no system build of nlopt (>= 2.7.0) can be found. Biarch: true Encoding: UTF-8 RoxygenNote: 7.3.1 Suggests: knitr, rmarkdown, covr, tinytest VignetteBuilder: knitr URL: https://github.com/astamm/nloptr, https://astamm.github.io/nloptr/ BugReports: https://github.com/astamm/nloptr/issues NeedsCompilation: yes Packaged: 2024-06-24 15:47:10 UTC; stamm-a Author: Jelmer Ypma [aut], Steven G. Johnson [aut] (author of the NLopt C library), Aymeric Stamm [ctb, cre] (), Hans W. Borchers [ctb], Dirk Eddelbuettel [ctb], Brian Ripley [ctb] (build process on multiple OS), Kurt Hornik [ctb] (build process on multiple OS), Julien Chiquet [ctb], Avraham Adler [ctb] (), Xiongtao Dai [ctb], Jeroen Ooms [ctb] Maintainer: Aymeric Stamm Repository: CRAN Date/Publication: 2024-06-25 10:00:02 UTC