From d4eca76ec1b24cf4d176cfa4419af89339573940 Mon Sep 17 00:00:00 2001 From: LHBO <92097196+LHBO@users.noreply.github.com> Date: Mon, 11 Dec 2023 14:37:52 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20NorskReg?= =?UTF-8?q?nesentral/shapr@579724ba9aac9d0aa12f127b53bbf0f7d4a99eb3=20?= =?UTF-8?q?=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- articles/understanding_shapr.html | 405 ++++++++++++++++-- .../figure-html/unnamed-chunk-12-1.png | Bin 34022 -> 46006 bytes .../figure-html/unnamed-chunk-12-2.png | Bin 0 -> 61418 bytes .../figure-html/unnamed-chunk-12-3.png | Bin 0 -> 60494 bytes .../figure-html/unnamed-chunk-13-1.png | Bin 85795 -> 43927 bytes .../figure-html/unnamed-chunk-14-1.png | Bin 0 -> 43149 bytes .../figure-html/unnamed-chunk-20-1.png | Bin 0 -> 49718 bytes .../figure-html/unnamed-chunk-22-1.png | Bin 0 -> 35168 bytes .../figure-html/unnamed-chunk-23-1.png | Bin 0 -> 51660 bytes .../figure-html/unnamed-chunk-23-2.png | Bin 0 -> 51660 bytes index.html | 2 +- pkgdown.yml | 2 +- reference/compute_MSEv_eval_crit.html | 169 ++++++++ reference/compute_shapley_new.html | 2 +- reference/explain.html | 13 +- reference/explain_forecast.html | 7 +- reference/finalize_explanation.html | 5 +- reference/get_data_specs.html | 2 +- reference/index.html | 4 + reference/plot_MSEv_eval_crit-1.png | Bin 0 -> 49788 bytes reference/plot_MSEv_eval_crit.html | 338 +++++++++++++++ reference/setup.html | 10 +- sitemap.xml | 6 + 23 files changed, 926 insertions(+), 39 deletions(-) create mode 100644 articles/understanding_shapr_files/figure-html/unnamed-chunk-12-2.png create mode 100644 articles/understanding_shapr_files/figure-html/unnamed-chunk-12-3.png create mode 100644 articles/understanding_shapr_files/figure-html/unnamed-chunk-14-1.png create mode 100644 articles/understanding_shapr_files/figure-html/unnamed-chunk-20-1.png create mode 100644 articles/understanding_shapr_files/figure-html/unnamed-chunk-22-1.png create mode 100644 articles/understanding_shapr_files/figure-html/unnamed-chunk-23-1.png create mode 100644 articles/understanding_shapr_files/figure-html/unnamed-chunk-23-2.png create mode 100644 reference/compute_MSEv_eval_crit.html create mode 100644 reference/plot_MSEv_eval_crit-1.png create mode 100644 reference/plot_MSEv_eval_crit.html diff --git a/articles/understanding_shapr.html b/articles/understanding_shapr.html index 1586c8068..8de800c0c 100644 --- a/articles/understanding_shapr.html +++ b/articles/understanding_shapr.html @@ -82,7 +82,8 @@
shapr
: Explaining individual
machine learning predictions with Shapley valuesvignettes/understanding_shapr.Rmd
@@ -415,7 +416,7 @@ We can use the \(\operatorname{MSE}_{v}\) criterion proposed +by Frye et al. (2021), and later used by, +e.g., Olsen et al. (2022) and Olsen et al. (2023), to evaluate and rank the +approaches/methods. The \(\operatorname{MSE}_{v}\) is given by
+\[\begin{align} + \label{eq:MSE_v} + \operatorname{MSE}_{v} = \operatorname{MSE}_{v}(\text{method } +\texttt{q}) + = + \frac{1}{N_\mathcal{S}} \sum_{\mathcal{S} \in +\mathcal{P}^*(\mathcal{M})} \frac{1}{N_\text{explain}} + \sum_{i=1}^{N_\text{explain}} \left( f(\boldsymbol{x}^{[i]}) - +{\hat{v}}_{\texttt{q}}(\mathcal{S}, \boldsymbol{x}^{[i]})\right)^2\!, +\end{align}\] +where \({\hat{v}}_{\texttt{q}}\) is +the estimated contribution function using method \(\texttt{q}\) and \(N_\mathcal{S} = |\mathcal{P}^*(\mathcal{M})| = +2^M-2\), i.e., we have removed the empty (\(\mathcal{S} = \emptyset\)) and the grand +combinations (\(\mathcal{S} = +\mathcal{M}\)) as they are method independent. Meaning that these +two combinations do not influence the ranking of the methods as the +methods are not used to compute the contribution function for them.
+The motivation behind the \(\operatorname{MSE}_{v}\) criterion is that +\(\mathbb{E}_\mathcal{S}\mathbb{E}_{\boldsymbol{x}} +(v_{\texttt{true}}(\mathcal{S},\boldsymbol{x}) - +\hat{v}_{\texttt{q}}(\mathcal{S}, \boldsymbol{x}))^2\) can be +decomposed as
+\[\begin{align} + \label{eq:expectation_decomposition} + \begin{split} + \mathbb{E}_\mathcal{S}\mathbb{E}_{\boldsymbol{x}} +(v_{\texttt{true}}(\mathcal{S}, \boldsymbol{x})- +\hat{v}_{\texttt{q}}(\mathcal{S}, \boldsymbol{x}))^2 + &= + \mathbb{E}_\mathcal{S}\mathbb{E}_{\boldsymbol{x}} (f(\boldsymbol{x}) +- \hat{v}_{\texttt{q}}(\mathcal{S}, \boldsymbol{x}))^2 \\ + &\phantom{\,\,\,\,\,\,\,}- +\mathbb{E}_\mathcal{S}\mathbb{E}_{\boldsymbol{x}} +(f(\boldsymbol{x})-v_{\texttt{true}}(\mathcal{S}, \boldsymbol{x}))^2, + \end{split} +\end{align}\] +see Appendix A in Covert, Lundberg, and Lee +(2020). The first term on the right-hand side of the equation +above can be estimated by \(\operatorname{MSE}_{v}\), while the second +term is a fixed (unknown) constant not influenced by the approach . +Thus, a low value of \(\operatorname{MSE}_{v}\) indicates that the +estimated contribution function \(\hat{v}_{\texttt{q}}\) is closer to the +true counterpart \(v_{\texttt{true}}\) +than a high value.
+In shapr
, we allow for weighting the combinations in the
+\(\operatorname{MSE}_{v}\) evaluation
+criterion either uniformly or by using the corresponding Shapley kernel
+weights (or the sampling frequencies when sampling of combinations is
+used). This is determined by the logical parameter
+MSEv_uniform_comb_weights
in the explain()
+function, and the default is to do uniform weighting, that is,
+MSEv_uniform_comb_weights = TRUE
.
An advantage of the \(\operatorname{MSE}_{v}\) criterion is that +\(v_\texttt{true}\) is not involved. +Thus, we can apply it as an evaluation criterion to real-world data sets +where the true Shapley values are unknown.
+First, we can only use the \(\operatorname{MSE}_{v}\) criterion to rank +the methods and not assess their closeness to the optimum since the +minimum value of the \(\operatorname{MSE}_{v}\) criterion is +unknown. Second, the criterion evaluates the contribution functions and +not the Shapley values.
+Note that Olsen et al. (2023) observed +a relatively linear relationship between the \(\operatorname{MSE}_{v}\) criterion and the +mean absolute error \((\operatorname{MAE})\) between the true and +estimated Shapley values in extensive simulation studies where the true +Shapley values were known. That is, a method that achieves a low \(\operatorname{MSE}_{v}\) score also tends +to obtain a low \(\operatorname{MAE}\) +score, and vice versa.
+The \(\operatorname{MSE}_{v}\)
+criterion can be written as \(\operatorname{MSE}_{v} =
+\frac{1}{N_\text{explain}}\sum_{i=1}^{N_\text{explain}}
+\operatorname{MSE}_{v,\text{explain }i}\). We can therefore use
+the central limit theorem to compute an approximate confidence interval
+for the \(\operatorname{MSE}_{v}\)
+criterion. We have that \(\operatorname{MSE}_{v} \pm
+t_{\alpha/2}\frac{\operatorname{SD}(\operatorname{MSE}_{v})}{\sqrt{N_\text{explain}}}\)
+is a \((1-\alpha/2)\%\) approximate
+confidence interval for the evaluation criterion, where \(t_{\alpha/2}\) is the \(\alpha/2\) percentile of the \(T_{N_\text{explain}-1}\) distribution. Note
+that \(N_\text{explain}\) should be
+large (rule of thumb is at least \(30\)) for the central limit theorem to be
+valid. The quantities \(\operatorname{MSE}_{v}\) and \(\frac{\operatorname{SD}(\operatorname{MSE}_{v})}{\sqrt{N_\text{explain}}}\)
+are returned by the explain()
function in the
+MSEv
list of data tables. We can also compute similar
+approximate confidence interval for \(\operatorname{MSE}_{v}\) criterion for each
+combination/coalition when only averaging over the observations.
+However, it does not make sense in the other direction, i.e., when only
+averaging over the combinations for each observation, as each
+combination is a different prediction tasks.
Start by explaining the predictions by using different methods and +combining them into lists.
+
+# We use more explicands here for more stable confidence intervals
+ind_x_explain <- 1:25
+x_train <- data[-ind_x_explain, ..x_var]
+y_train <- data[-ind_x_explain, get(y_var)]
+x_explain <- data[ind_x_explain, ..x_var]
+
+# Fitting a basic xgboost model to the training data
+model <- xgboost::xgboost(
+ data = as.matrix(x_train),
+ label = y_train,
+ nround = 20,
+ verbose = FALSE
+)
+
+# Specifying the phi_0, i.e. the expected prediction without any features
+p0 <- mean(y_train)
+
+# Independence approach
+explanation_independence <- explain(
+ model = model,
+ x_explain = x_explain,
+ x_train = x_train,
+ approach = "independence",
+ prediction_zero = p0,
+ n_samples = 1e2,
+ n_batches = 5,
+ MSEv_uniform_comb_weights = TRUE
+)
+
+# Empirical approach
+explanation_empirical <- explain(
+ model = model,
+ x_explain = x_explain,
+ x_train = x_train,
+ approach = "empirical",
+ prediction_zero = p0,
+ n_samples = 1e2,
+ n_batches = 5,
+ MSEv_uniform_comb_weights = TRUE
+)
+
+# Gaussian 1e1 approach
+explanation_gaussian_1e1 <- explain(
+ model = model,
+ x_explain = x_explain,
+ x_train = x_train,
+ approach = "gaussian",
+ prediction_zero = p0,
+ n_samples = 1e1,
+ n_batches = 5,
+ MSEv_uniform_comb_weights = TRUE
+)
+
+# Gaussian 1e2 approach
+explanation_gaussian_1e2 <- explain(
+ model = model,
+ x_explain = x_explain,
+ x_train = x_train,
+ approach = "gaussian",
+ prediction_zero = p0,
+ n_samples = 1e2,
+ n_batches = 5,
+ MSEv_uniform_comb_weights = TRUE
+)
+
+# Combined approach
+explanation_combined <- explain(
+ model = model,
+ x_explain = x_explain,
+ x_train = x_train,
+ approach = c("gaussian", "empirical", "independence"),
+ prediction_zero = p0,
+ n_samples = 1e2,
+ n_batches = 5,
+ MSEv_uniform_comb_weights = TRUE
+)
+
+# Create a list of explanations with names
+explanation_list_named <- list(
+ "Ind." = explanation_independence,
+ "Emp." = explanation_empirical,
+ "Gaus. 1e1" = explanation_gaussian_1e1,
+ "Gaus. 1e2" = explanation_gaussian_1e2,
+ "Combined" = explanation_combined
+)
We can then compare the different approaches by creating plots of the +\(\operatorname{MSE}_{v}\) evaluation +criterion.
+
+# Create the MSEv plots with approximate 95% confidence intervals
+MSEv_plots <- plot_MSEv_eval_crit(explanation_list_named,
+ plot_type = c("overall", "comb", "explicand"),
+ CI_level = 0.95
+)
+
+# 5 plots are made
+names(MSEv_plots)
+#> [1] "MSEv_explicand_bar" "MSEv_explicand_line_point"
+#> [3] "MSEv_combination_bar" "MSEv_combination_line_point"
+#> [5] "MSEv_bar"
The main plot if interest is the MSEv_bar
, which
+displays the \(\operatorname{MSE}_{v}\)
+evaluation criterion for each method averaged over both the
+combinations/coalitions and test observations/explicands. However, we
+can also look at the other plots where we have only averaged over the
+observations or the combinations (both as bar and line plots).
+# The main plot of the overall MSEv averaged over both the combinations and observations
+MSEv_plots$MSEv_bar
+
+# The MSEv averaged over only the explicands for each combinations
+MSEv_plots$MSEv_combination_bar
+
+# The MSEv averaged over only the combinations for each observation/explicand
+MSEv_plots$MSEv_explicand_bar
+
+# To see which coalition S each of the `id_combination` corresponds to,
+# i.e., which features that are conditions on.
+explanation_list_named[[1]]$MSEv$MSEv_combination[, c("id_combination", "features")]
+#> id_combination features
+#> 1: 2 1
+#> 2: 3 2
+#> 3: 4 3
+#> 4: 5 4
+#> 5: 6 1,2
+#> 6: 7 1,3
+#> 7: 8 1,4
+#> 8: 9 2,3
+#> 9: 10 2,4
+#> 10: 11 3,4
+#> 11: 12 1,2,3
+#> 12: 13 1,2,4
+#> 13: 14 1,3,4
+#> 14: 15 2,3,4
We can specify the index_x_explain
and
+id_combination
parameters in
+plot_MSEv_eval_crit()
to only plot certain test
+observations and combinations, respectively.
+# We can specify which test observations or combinations to plot
+plot_MSEv_eval_crit(explanation_list_named,
+ plot_type = "explicand",
+ index_x_explain = c(1, 3:4, 6),
+ CI_level = 0.95
+)$MSEv_explicand_bar
+plot_MSEv_eval_crit(explanation_list_named,
+ plot_type = "comb",
+ id_combination = c(3, 4, 9, 13:15),
+ CI_level = 0.95
+)$MSEv_combination_bar
+#> NULL
We can also alter the plots design-wise as we do in the code +below.
+
+bar_text_n_decimals <- 1
+CI_level <- 0.95
+MSEv_plot <- plot_MSEv_eval_crit(explanation_list_named, CI_level = CI_level)$MSEv_bar
+MSEv_plot +
+ ggplot2::scale_x_discrete(limits = rev(levels(MSEv_plot$data$Method))) +
+ ggplot2::coord_flip() +
+ ggplot2::scale_fill_brewer(palette = "Paired") +
+ ggplot2::theme_minimal() + # This must be set before other theme calls
+ ggplot2::theme(
+ plot.title = ggplot2::element_text(size = 10),
+ legend.position = "bottom"
+ ) +
+ ggplot2::geom_text(
+ ggplot2::aes(label = sprintf(
+ paste("%.", sprintf("%d", bar_text_n_decimals), "f", sep = ""),
+ round(MSEv, bar_text_n_decimals)
+ )),
+ vjust = -0.35, # This number might need altering for different plots sizes
+ hjust = 1.1, # This number might need altering for different plots sizes
+ color = "black",
+ position = ggplot2::position_dodge(0.9),
+ size = 4
+ )
explain
When using explain
, the default behavior is to use all
@@ -726,11 +1028,11 @@
group_lags = TRUE
.
-+# Simulate time series data with AR(1)-structure. set.seed(1) data_ts <- data.frame(Y = arima.sim(list(order = c(1, 0, 0), ar = .5), n = 500)) -data_ts <- data.table::as.data.table(data_ts) +data_ts <- data.table::as.data.table(data_ts) # Fit an ARIMA(2, 0, 0) model. arima_model <- arima(data_ts, order = c(2, 0, 0)) @@ -778,8 +1080,8 @@
Explaining a fore
model_ar_temp
. This model is then used to make a forecast of the temperature of the day that comes after the last day in the data, this forecast starts from index 153. --data <- data.table::as.data.table(airquality) +
+data <- data.table::as.data.table(airquality) model_ar_temp <- ar(data$Temp, order = 2) @@ -812,7 +1114,7 @@
Explaining a fore separately. Grouping lags may be more interesting to do in a model with multiple variables, as it is then possible to explain each variable separately. -
+explanation <- explain_forecast( model = model_ar_temp, y = data[, "Temp"], @@ -844,8 +1146,8 @@
Explaining a fore points, the model is just fit on the 151 first observations, leaving two observations of
Wind
to be used as exogenous values during the prediction phase. --data <- data.table::as.data.table(airquality) +
+data <- data.table::as.data.table(airquality) data_fit <- data[seq_len(151), ] @@ -868,7 +1170,7 @@
Explaining a fore possible for
shapr
to not only explain the effect of the first lag of the exogenous variable, but also the contemporary effect during the forecasting period. -+explanation <- explain_forecast( model = model_ar_temp, y = data_fit[, "Temp"], @@ -928,7 +1230,7 @@
Combined approach and
"gaussian"
when conditioning on respectively 1, 2 and 3 features. -+-# Use the combined approach explanation_combined <- explain( model = model, @@ -940,11 +1242,11 @@
Combined approach# Plot the resulting explanations for observations 1 and 6, excluding # the no-covariate effect plot(explanation_combined, bar_plot_phi0 = FALSE, index_x_explain = c(1, 6))
+
As a second example using
-"ctree"
to conditin on 1 and 2 features, and"empirical"
when conditioning on 3 features:+# Use the combined approach explanation_combined <- explain( model = model, @@ -963,7 +1265,7 @@
Explain groups of features) for intuition and real world examples. Explaining prediction in terms of groups of features is very easy using
shapr
: -+-# Define the feature groups group_list <- list( A = c("Temp", "Month"), @@ -981,16 +1283,36 @@
Explain groups of features) # Prints the group-wise explanations explanation_group -#> none A B -#> 1: 43.09 -29.25 16.0731 -#> 2: 43.09 -15.17 -7.8373 -#> 3: 43.09 -13.07 -10.8778 -#> 4: 43.09 -17.47 0.6653 -#> 5: 43.09 -28.27 3.5289 -#> 6: 43.09 -20.59 -3.3793 +#> none A B +#> 1: 47.27 -29.588 13.1628 +#> 2: 47.27 -11.834 -15.7011 +#> 3: 47.27 -15.976 -17.5729 +#> 4: 47.27 -25.067 -5.1374 +#> 5: 47.27 -35.848 20.2892 +#> 6: 47.27 -27.257 -8.4830 +#> 7: 47.27 -14.960 -21.3995 +#> 8: 47.27 -18.325 7.3791 +#> 9: 47.27 -23.012 9.6591 +#> 10: 47.27 -16.189 -5.6100 +#> 11: 47.27 -25.607 -10.1334 +#> 12: 47.27 -25.065 -5.1394 +#> 13: 47.27 -25.841 -0.7281 +#> 14: 47.27 -21.518 -13.3293 +#> 15: 47.27 -21.248 -1.3199 +#> 16: 47.27 -13.676 -16.9497 +#> 17: 47.27 -13.899 -14.8890 +#> 18: 47.27 -12.276 -8.2472 +#> 19: 47.27 -13.768 -13.5242 +#> 20: 47.27 -24.866 -10.8744 +#> 21: 47.27 -14.486 -22.7674 +#> 22: 47.27 -4.122 -14.2893 +#> 23: 47.27 -11.218 22.4682 +#> 24: 47.27 -33.002 14.2114 +#> 25: 47.27 -16.251 -8.6796 +#> none A B # Plots the group-wise explanations plot(explanation_group, bar_plot_phi0 = TRUE, index_x_explain = c(1, 6))
+
Explain custom models @@ -1044,7 +1366,7 @@
Explain custom modelsget_model_specs function. We do this for the
gbm
model class from thegbm
package, fitted to the same airquality data set as used above. -+-library(gbm) #> Loaded gbm 2.1.8.1 @@ -1100,8 +1422,8 @@
Explain custom models # Plot results plot(explanation_custom, index_x_explain = c(1, 6))
-
@@ -1163,7 +1485,7 @@++
-#### Minimal version of the three required model functions #### @@ -1129,7 +1451,7 @@
Explain custom models # Plot results plot(explanation_custom_minimal, index_x_explain = c(1, 6))
+
Batch computation
+explanation_batch <- explain( model = model, x_explain = x_explain, @@ -1197,7 +1519,7 @@
equals some positive integer multiplied by the number of workers. Below is a basic example of a parallelization with two workers. -Parallelized computationn_batches
+library(future) future::plan(multisession, workers = 2) @@ -1246,7 +1568,7 @@
vignette. A full code example of usingProgress updatesprogressr
progressr
withshapr
is shown below: -++library(progressr) progressr::handlers(global = TRUE) # If no progression handler is specified, the txtprogressbar is used @@ -1311,6 +1633,17 @@
References +Covert, Ian, Scott M Lundberg, and Su-In Lee. 2020. “Understanding +Global Feature Contributions with Additive Importance Measures.” +Advances in Neural Information Processing Systems 33: 17212–23. +
+Frye, Christopher, Damien de Mijolla, Tom Begley, Laurence Cowton, Megan +Stanley, and Ilya Feige. 2021. “Shapley Explainability on the Data +Manifold.” In International Conference on Learning +Representations. +Hothorn, Torsten, Kurt Hornik, and Achim Zeileis. 2006. “Unbiased Recursive Partitioning: A Conditional Inference Framework.” @@ -1334,6 +1667,18 @@+References +Olsen, Lars Henry Berge, Ingrid Kristine Glad, Martin Jullum, and +Kjersti Aas. 2022. “Using Shapley Values and Variational +Autoencoders to Explain Predictive Models with Dependent Mixed +Features.” Journal of Machine Learning Research 23 +(213): 1–51. +
+———. 2023. “A Comparative Study of Methods for Estimating +Conditional Shapley Values and When to Use Them.” arXiv +Preprint arXiv:2305.09536. +Redelmeier, Annabelle, Martin Jullum, and Kjersti Aas. 2020. “Explaining Predictive Models with Mixed Features Using Shapley diff --git a/articles/understanding_shapr_files/figure-html/unnamed-chunk-12-1.png b/articles/understanding_shapr_files/figure-html/unnamed-chunk-12-1.png index d2ae3cc9dae6002871f0e4642c90ef24c7fc3a7c..bfa327d0e94477a7a5a347bd57a29ec85e6351a9 100644 GIT binary patch literal 46006 zcmc$`1yoh-`z^W=yAV;a00Tv(1VI!eR1g6PNofV?k`|n6Myz<7fVIo+Ey3x^q?0oJ68|O8iIW(L1h1A{`=$2ws%E z8#vN#W3fwaWp-TBdS>m5uSc9WhMwC Y_#44p~7{g&k5azL4z}^ddbR3Hf^D<*^-K8wLw1=>qF47zU4t$Z-$8Q}3TTU*Dc( z+#XwCIoyyHXPonl?aJ@_B9V4HY^!GZ` L6ev4FBAydJhqNh4 z>;Amlk+#uk&7YUfifaYP{=EFmv?k=wE0V?@GO52W+1&njFMEG4hwYT^vE#>2v9Vou zqh@_>WqMGdwt?C?b7{%WAXx0$H7~Z~EkX}IEldq+E_Vz!B)D0bl9bQMB@Oy6QM9gk z8ESI>s$ffG)l3uXo|)=7U24*d&2+tjWvfxvIy ->u8tEjd}p-Fs=mHFO3s%z zQNlR=GjHrk(CplJw^FV}OkbH_7^gvlZmAFRsS_up5|lD5hGL?IM$#(fTQiL;J8b#~ z+srHFY9qyat$b;pvKrZ!bUmh4JCQ=m`M7b|ySV#hxPJ3#Z#i*g^^j91TKc8V+`aJT z^-}qk&70F5R~?Kx3si?2lNzl%?W2+k7DV%`$1-b}6jKGMRV}VR_UWFSpPFt|H~8>i zol^46` L=LbLfR`VaXQYy*DE}`?KA0VKAz+*G$eLW5?mBA Da)}A)o E Ek8!a4Y<^L9uu>`)SNtXChfCzz*(c3Nb!KFz5o+Z zPakIG$VAmVd0iWlRPFN8WTk$`JDaZ@`}XZC`TDi0E=I=N-#?aG?e4`-PboYGB%>z+ z!*)I*5A{&~Zs1hOx5(6$&SN!F)sUcE>g9Or)?1c>ISt-l@5v+9^Ix}g-^=zf_tA1( zQh_Vh5NUf@d(wrXz01pEjtZ4;c*V9ktf}8Nx uVwh19^+X{VWQ(wdo|UHK+qd2zP1d;Dwv ?6#etv#RY1;1E6@f97N3TR1x93tahsnjsvln>{a_ZMbJ2&z)T=Qf9(y~3@c6zga zVsdg-?s6PA-N;c@byD=8Mnrp7siIC$#E(x;hjaSh)Ye3ZWf(NF^!D|&c+NiBL^U-K z=AksEoM{;2!M}0?--cP4n71pbtZeMazc)SKA8b$;eO>hG)nu(^=foSMzFtww&h 8xxHpg78Ake!AXy(zq%4*6036tQk{{ z=^bm0C`3Oo|6+^9BMjBWyi&V2%83mlx;Qf`(_Q3#xuSd8meXe9wg`j7#wXhjM6ziX zJqqm4>U5~x!usxJeqpbV^3<5)YToDUH!QwlA|fLCRU!BHbLfUlR`5t(ezMi&uKfdd zDnuhGTH-M$RasvW!&l^fKqtR&G_#dMt7O-gFJIP$BQnV13+uB@HKzw_i(jUa1jM_o z@}|E(q!?;YHmTQ(3X<=-=UW (dpF<8}o4&w`v_1N3%*QDtzeOX?V_t#_d>{3|_ra>*C_#tw317f0-<~~gh zjn5m0moa41Sfsui9oCQntJC#l-0AoW>b~okA`I7$G^ZuZ+Su4A<=bYw`a-_rm|(0% z6Wz+M4G~dMV%(+&?6Q^R-Z-w<7%arbCA#YFGiXfAh(vU#NKht`Lar=gLwLP>c`M&> zzSq|#m4_sI%W>`#otKY~cK)o%C$i7m*MzW@jam(xI4%az4>qbh)?>sUMDjW;WowuF z9}^j>jq=!iZd>u{;4k6l2V(^EG;1q@c!=G*?ch17s5iE;o}Qkvg%0+XLv pp(|iU+MxdDh+WE~g9m zYDv?o)iOE}RAeKemCNe=Z|)g4O}C|LxzXMmVZ#gwGX&eEVz@1EvEj%7 +4}t+cSmQ!L(Qc~zX^c#CC}GfgY=>-IeB;c8*J`gPPQ zA^3QGlDazihV6A?togSy0&uTni>l$8am^XaOQWq>k{-M>H@;4Amp@-l%dPKrZTKM- zs5^U1r-hqg$U-ZC&pwxvSGVd=kXgye>rCQb7LN!8UNGLXXOI5ONOSIZ(SiDS#WNA% z;R9u7D(gnGIuq#}ms0BNkOe}Cr=a1sAo3A0Nvft_cKh>K8$W)Ywr<_J1+4R_e*RTO zJcXR7sH;+jenfScu)*@eG-WTPUg76KzDG30nXZ|1)gxgd6~>yul~KK=zQY~^j YiaN1y 7xlOsXA2Yt$Z|436+80|jib`1v4e9rZ^kLbv7wwtmIb?Znx 7u=7Y$kek&hMTrI$&}`kKPZd@LVb%5r>&OOOo%+8rLE~I2ln5^^V^aEsqlR zpq2N>-}nbREPUh8s|l~WAfKqBS8m-OWUUnJIR1s2%m%}LMJ4f0s{>*{q ($*tw z#$Rmm)y^2VWxuc~`trr^ym{a2wzf8>N_#%_ukS`X9E$b=36xPuUZ7;>&uTToUR3Ry z@OiAdsACyd+?(*}WpY@%b#8)rsD#3!Rd!!y rg`o13-goxPgQ=tlH}8iNKi;p zi!n-&F^Xe*nRQZ2@7@TvntaxB?OvUk>Jmdb4;r35$>NtY4!9rSI=fat^Qs=1l;$%% zB-NL ecuemyS^OG3ZfcTR>^jf9d8_r z3Z|VPb*cA#d&LmYl3^h1WrFnntZ{goVngcPvHaN*m9a?4U^RU;jCiC(5Vw48c>tHN z>=T_}`v!lV&(4$=Yvm$xHT$h5`!R{%KRi5IF^P+Aze_jtef0CpnWEQ7{(^y>;Uce& zu$U+| Ug)wc=wP`Q@KosLBD73|R|<>?s*M0$v>#XOD@Aq3p%%%F5ihp=&$)ljiyY zu*Tzdi4`rIE*FMtmo8oUJe?a|sNz4dR$#O(Y2+uBZ1}RXHeGp)k=^(A_nn80s!J0| z(NxQO7+PmztFoL0$IV+1AvTB)(~-o*#Lh@w7=M)W>*E&j(UuHxB_;p!WA7%*qOXUQ zEzM6}UU5;Pw4&qcbX>J(RK0ZRf#t|4 MFXmEL-{AQyl5s zuPints`4- u|_nkRDGGWgb ztXCKPlCzS6e@RL|H&)(yq{CQfsZ~`ZQnUEEc5jLIaR!FsIXgaLJdhb_raJp>_FC#M z+D}yrla=xlGpL|$zgw!qq;R>xVx%eMS}*e!hMCGCS&vfXr=_v)Mhj$&f@CanLzha` zeMq|FuP%EOYZ4FI)zu~1ZtbcTcE#Owpv3oTQ!{l;e7CkQi)tCLVf 86k=ow zPma^m-(b+!)6?riDRz3p_JgO@k{a*kt4$&gcn!RIlBblLp2}g|)>Ib6!*!E}%dqKY z;=73wCyT6hE9EM?QYuo0d7;@*ll+^RqyF|Bnt{zlvmN)6yd$kfTlx~RI@p1k&LSsb zjueZ_^Y6|2e{rJ@C|sFN(*D_&Lur(BCveUvDE29l)nX19XMa#K#)7!a(#lWT|I_>R zYhCPU{b3;r2^y~Dtc#d7(Suaa51!W;YDh4M@Vj7RR`o7WU)eo{i=;oBbI-Dc-`!N3 zSi X4d zQ)nU=0MIW(qN5&9FjyHr8Z a@57zdq^ih7L4}MjIn_#oev&7a8hQiz;b-i>o6GMyQXBK zStnRXwhvEy_%=iFYV7-!<;AC}Sy!3W-Zj|)Q{EcRM}#|ff4-Q1<+?ui>W?!!si;1w z)#qD{DlyuBda_N7Sy(Qf$I66DQzG4EWwk=hae4aU@T10IPGZ)hFaM~UVZ=h89;#2P z0i>+jh5VXMbICi4DX@h Lzfyem|DNB4tW5n`b+Z7 z(;Kcv57eXj+pNxfTSq-S^?87Go2hWsS$d*0w9;?OPC0KeAQdx+l|I;6Sm-@N0EwLE zUrK9oEe*`EU_%Chn8ux^J|uQ9n~>@f`5sXfpVcgBbP!DQ(0+ENbq)zRxh7sYi$zyW z;!anVrN#ld#|1*+dzh7WCAZz_kJZ}b)M9_ldLr8oiKT*jn29lA^_LA+sKr=E`$8h( zkk&%?hs4bKy^Cu?Bm(mke37*JXR3A6Jy4Z4uy5G9S4!Xi ?A PtnPoB*FJ@UD5HiCusI?!#?>;4=}5aV z!e4q#L`1~nZMwV0oYuxsOBfYm+bDMe@I9rGVP<7z{oY{4Gn68;7{yi}MXPXy=4{a$ zQnad3&?}=$Li4`)Os#srgJg>`)pFc`WoJu$St+tVnqoEdecZyj^@e=5lj=FE8KG0% z+0953$rtZ;b=x~EPd6T}T{L-!vh49S<)zQ;ZQqhA`?u)I&^pZhkgoM+Ani}!6AZ^3 z25xcUw%K|| $*UD}GxpR4QaHWoF;76J72F|D$OZ`{ox;+vGpFP`3bMB6S zCx>>~-W-)gv)(bYoVp}+extVR>-@`8uMkdR8I#^gBjQCws-t>UO4p?vr)rLUxbKYi zjavJKscL{-9fK9ju`D F2DW9d*(kkFqW;1DO6^EeOglbu!76F2)uhl! zoZ`UQYs6CGsU+}}c+!oOOTfI_{8m;L#}ts=zjBoOb8floxHLDO+?%Y7s-Z4aXp2Y< zFi-5#(voy7@7(u?4O2jhG#rH>*Yd%GH7pJ%6&BQ4)MxzM g7SLQ_6$KjfjkVQg-I#Nf8ge1>Ghs-^Z^2PveW_BJwGU5;GH1TOO74 ztoGEudv^il0ak(-Kw7;JwQ9JR*RC8DmSe|`4We9bM9v`y4duyeLELgY)<2nMCq_ry zWQ$BEiCVU+yZdtFU~^g&r)rk5swEcq?FH0@O0^p(Xt&O{_m8 zjoWU#W#_SPGi*tZ>9C(w{X+tjFed3D8a3#+?O~P%Ksw4|p5EGUGmy`kf&nY5r;TsF z`wZLR!xs_!JuO1%GHoXNoW>Ab62QHP>?Et&-xcb{k}C0$;o9q)_A51FtctY&4?)bO z`VH}ZS5UrV#IIs$*M4}oA;V%&8f4ZbW9ysV!|i!l>}Sq=>T8abW89}%GIh%2bk;i` z7FB)mPP@tS%>K?ONxIfaCW_S%%R-0cBX7n$9GAj4^Yv;YlLtrDI 6BTeoWL$}5am8q#dLyd)1Jx7D zlD{6B>Mt^@7qt1$td?Jnk@%n1lb5HbbXS^nhYf@7i^^WJ!CqhW?dQhtPL^|(=G*Zs z9+B(KZce^+*?_1AZY^4WaU}OBrn1^6{fnR1br=j4r~UW$WT4BgaHyY?m^wUiA@h6; z`;h8d1DiK{Mzdf {iFecRmfx)uTANb($MEtYvzL1L#Ek14Iy2@Scus|n91RnMco5R{O*LU~i z+>`6%KSm^t43CxK=R$6K*4bqlHnSV}lXSOH($OXHjJ=cbOt&1CA8ksxOwb`9=EA9X z2uh7capoICaQx5qJOhN=l9G~|dIfbOdw_u>3k+}Xeov2OD>`xX=qKCNyw2r{87 <1%x9w^B2Y4 zo9@m73!LDrtgDmVcHnH8?dp%GbUyw+W1`-qM$+B=em_Jj-qo`B=cx9xO>>Ro>9rDW z(Fb3q7fKlNYhDu&K36mG#%%GQ#aq?f &(IfSByrReuoQDW8*|_>z{_xjY^ bh8p7Oo!U?xkrM9g3o7o zT#2(E>B!IH9CcK D`b078qimeA{5fL4gG$5}1)`{3 zu%Dma^25E<)H>}BQYvx@0Df6rmdrI37TN4b042&D;o;%VHA126s1M{l;x65zbEPp- z)ymxD9dnnIj$}kx-iS)oU}15rkhL+Di0Jj*k*|uIuV(pzOllGy&3*N$!qPle^82Hb zSOd@e)@%eD?z_K2I#4!Fk9G1Nk_z_rj!;mu5#qI-lEPR{Vd*zzszf;|^JHF^8&F=0 zLMDzyHCGp-=PA*aGuLk2=^fMIEr+r=VQ^$*#Ee4qx?gem+}zww>yK@ByWM+Z>8g#D z#k%W&+?%imX9?hjxRg9pNz^Ht4;qK-1J9e&2W5BrVKbT$^dyp`FFh~dlI=)Jar_ud z-bkt_6Xx(QnH>k=<>O#9%t?7e$j;yTmJvngTm{KN` zxbf~{<*_`=;Yg4m2u-ToRwJ+9sU_L*slVSrx#D=~kr{R$BQLLNjf>+i@O?Xf<*&}M zK}#^NBG&}$mN3lf8s0ZJ%JYL;RKkcqszmuE`?(ayA~W8^L=8*jJ%#?Qt23igu0v7u zaib?05eZWq+L+2yG>eaj>O9+|OCHxkw?|@TQ=nAPu#&X2=lX5?!*k60OS;E(p(tVh zyfM!Hu^wEy2sc|rkGFza3^?1wkEL-eg+>@@uj3FeFv@8~?+rncHN-1Yjmuf~$}O=t zO{|zIV2n3W9bdau{ICdk^hRV6rM`Eu8m&X0G0x5W5hcySjCuAJdF{DFv2pRU7yxgJ zF6)yE-8aECtQ9cW>07GR-ryS)lz_@p-jl;(ph|R%V^?8#0aH*=?AKnib js7tH!SGd`4mN31`#(I@``2s6YU9!f1` zk%3%CzFvDa3roy-!U{LCy0Vxs3jr>c)9Bfzy)ttE#oPQPe~&bmZ|UwkagyP!HmfVk zw FiwBdLx^OZwwpSB2}kCzTHVpO^qMS z&dxU5wyde6PT$}W5Ydd%L~zj6<5pjf(R}ZZ+rjTQrARln8D|lyp2PBj9< ^p}x))-TQXcy(#=_{@qnmT(&< zLU5troq91{Fz~^g) Czzs&PDmpcmli2X?*mdJ ?22vW`lN$wbpckc1h4%eaiG`0%=gOc7@`>iQjAA zu8qlk^_9ovc|w^OoSL!_F4`8qF=}zG(1; GOj=Qh6EQ+tfLikr9Gi&;i~{RxR*Trc&vJ|(L;}aUVuV} z_oNg|>+=CU4XXfd%UI5!7caig6`DW~+Yd(T0<8xhz G;obu|Kxb z@wNG{AUct+cqhg#kypM{d#pSqD=;Y7{j+C|$tw3}?r{7dz%^$m`SaC~UK$=Ni={n& z6BDb&OrEVmk=OjBBbOvGwQ)g6)yYMocHjx(IbI$dh*N4e)z6#Xzz-C(!-^O5)b!V* z9*@c!V@9n g41k`OuHu3M$usYPB{~yYzNz>+NB>5u)xef9&>t&1>&3*IZI%qh%&ylRm#jP9jF4 z!oQ-dEM7`YVs>^!cK5=bn$^T5rp*qKQBeknLC1=+EJUrWGFKqvD32{CNikA@_2dhd z#7yK^9_w==Bewt^WQ2u4%!euE=e5@W>iEhXrUh~tMj4Ap!lS{`^+-U5bP-evR@7g- z0ey6kU(1Kas8u&!B&Dw>i~yFKmQWoqPCc52#GwFkOu}!y`J40R+5$T!p7Z>S_F@xv zO|+olcd)B+Oi;i3W1UFNLkhkdeM^-n6P$vwK`*wX=}4XzRkA^RH5Ok*o~0}|hk-yb zYwJOjjD%G3S+kkI0X4MQaw R5V4T7yzYq3#c{PLMS!={SfQSH{EmYqHy(v4crei!Wm$GYx9 z_QznhE5O@20{kVbdih#f2x~qb0Uz)Lr*G2)Ua(2E+>)?s&Z#=~<2SzhGNZzlu?B#w zwgYdU9@$*e*Vi}H?ZKbfp)hrJxny9hIRY>m`a@lqFoi)=7PsY)E_jP$Mfz4H$dL6} zCY?^>$5v;u3gu2nVp6FXB+?T#3{jGS4ABY-<1%QtW|BYc<2?hBih{@PRbgyXW{dq# zwV)ZvZ+`Y1{-a?QT@5RTFF(04HkRGJ-Jr#`&;4TAUC>+Z^hduD#K7(flZl>hw
@6-`3GNfb#ws8$s=&5`PVOEC2yOaqyVm=g)$#{QUM=*(;#{{V_d0 zZx?CWU3A5>8EUi3n7O&Rd+X>~&oYocB^l4aeXNfU#$T+?74w%tVHF1o^JW46xrD9S zhjN;WeErtbv>s7)OJFQ+^=5##bS^a|gsDk;2vZkp2}Vv-AxeTK4gch1wmuEzhJmsO zJHirYCI9NX<{a~=Z `|^GBjY;ZsFNDFsmlIIUa^mg `o|J?Oqrx1Ex S@k(pWQ zxAJm#-T4pardzq|3xv~5UV=5uwHVasm4l3kc}q0wSGbK^)*h&Os}0no4Pmtp6#*uQsYjSpvBMClL>90|%-t2_^>JPR@+A%A16q-z)bU(xx z6LAnqevO>|gb0^|9aAdX0SiXJ!wnQIO4^XD2pJ6FlQO9m{JTEtQmPpz@M#L7)z zWYRiiA{WCWVa$aMwtnm09i|=7PAKlu#nz5}o|&At>uWJcazB?;Oy_u^3mRwpqK;my zK5t??N!O;;o}rbH&ckVKdS32aehO$6(pt2-JF%lO@O;{};o3Bv%8=#zsi|qKJ4d^< zwblvHLCn}$XrJ7OIm&y%U{JjkyrChZ e@M8fsn)xZXId3(9^7)u3la zH(3g0aq&SlY9K%Dx{G(+UC0HLzA+pGFNi%_S75)mxmRW%*02~2Rek^D J;O7{fWO?>l~N}X_XbE|b+nWW1=ST}5O zp<)>7TwTe6j#~0Au!i=v4`AMD=ezW=qQo8sFK53rUYrZ~|1r`YVy6YRs`41s&YhRG zZ|V9xW1gd8JDiZU=FP&svUtU`k_#k<@Kc(r&oXRP !(QK+8NkSUy6%;@2M^|0}*@yB7njpx;$IBnqj zBQwU_*6Qv_DIc5( +8o7oGWOR<^|;@%QlXp0awOEDS3Gx`WTbW0 }ic>8v z9m;eRof!+OHl$mgWU|#&pj ~PZYnDlH!Sal9eWI!|jBB?Z z` W-=X#$~pLIW5`8vdlVxr_zu36In8A_LaIx=88dV$X$im^XkKw0R))GfYm@1p z?K~s*lTx?t=eX*)P#a8`Vaol^2*dPP3vP+9)nW0)A`|R~7K&)TXEgK*)F@Sm9N@2C z5=JkA@WGAA*xKeIA0U$|28k1GB;bMsLl2cxrm?Va@wI1P9X^n zC+7XE0dNUL0jdvSNmN{14oRaP)Z{j-6%fT+_8#nT-1_!rV3UJ!mNGmwuZ;`lwey!I zO66@{y?SN&<1uwCOi9GO!7cWE;FEq}2ft -&`>Sp4o#kO|L%IduFUNiGpuV073e 3$i$NgnhFY_d zU}w;BFI4b8Z)0elyBxjUG6BhM0f^2Ld}2AOs$lyWKR65C0@o7Enm#TErYIhJw56jm z>DkJgpjgq)k1Wud>ma;M0|yv@Sc6f=`>at*I7sDkedX2+gDBWv)CnL 9K}xJ0Aa z)VwBKgg~V9G2pyxSC?l$@dbo|GWLf&oLIPGE5cAj-VT=q#$t!Xo7j%b7Rz_>#*0z6 zSNZmr&!l`!zV&GhEnfq`s6mU?wHHwzNNoCu%fxd*c+pzcBwS$7kgs@Lm~f^=03Fz~ zL%@9!oY=rn98q@CEyTz~UCANb%>vD;X5Ws<-?RiTMY)_qA-mrAzOcLbw`0C1z-J@5 z)_{`kg^RULMpDERq{5REzT08Oo19 1Ept SiB?oh%uPd&RCk+r08HlK*H=4;>xV>kpZrB4ojb(OuTB_r zp*n_}6wF_NU$Yw9r+3 zf5n>p|B>VSe{orPyYwwiu0U3Du=%9B-8Z|Fqk<6OO%D-?VD57Sozh@L?lsGy7b*6j z^DxsR=|D<4$+sfN#mL2_03N91*qXpsFJ6QIxr;~xf1^ aAzAH=>_voYx zI}CeK(;E{Qqw#?8gBX-n-yc?ay;hUzXNh&SopAI^X{w@XT7dgBRP~t|VMqaAMK!8H zJf 6E$ew-Cm$l%k}kB6eDiX@ZD+X-P{5Xi|h90n1_^XHpqw6L>EXD;ALoNfpb z?FMx>P$~x=o$oL$rm;l~I3@z-Fc Ppo(MQG1*e<_+H1;U`?myrZfFB#?G{Z`+ zW5>Rf5T^a-%t!HZ#ty#na)IAn4AEpz4^HO8om9 ANa_|Ib(^ z{%&v3cY@_$=)o42WZurQvTKCT+%x=4#ktGyTx8kr6Zhvx;g!TlnD6-ec0exup06)6 z`+1C7IA9Bw_nc}hT#-XDkw03B+l}7%zuugjGkfO1j}F7b=*4ygai=E0q+lP15kLgr z!obl4l^kh!^&1F-H|(XdM7fTcxx^B6Wb$wCMfB_a`(P;0?fUF;iiydK-X^~zM2`yz z1Vk?(0t6d1C0{&n*08EA$D9*^5&NQ _m#bD941mY zCou0Z1_m@I#Gn$j1s2&&O&ztHQU1i4GqnwH{{Q}I3M*PCz##c1{?VhgL= ?&p#4E#~bl6S4fg;8|WpZf3p+w04crr?9ELj6am?f9mr*8(6BfU*;* zAuQhd{$MplJPCl++V{6}QO%JJy!m^oQEymYC_?|8K?7p}HNk2zbed>Wx=V36sjtnKPv zwHAH(;)Q^{@U_XYN~un=kcDVUvMRs|y>Fh!a#43#)`&0&ad@DkgdX#_PQ05geQMsW zVbQfr*`G)oK!eQFd6=XpD%)c>_?CVdbKd`W;rWezIP|Vw4XHR9Iltjin=#ik4d)dV z6_u}(=VXl#99x7)QZ5=Rd+vG^hk S28 z!o Wya0lhAQ7hV3BkOLq*K?+HV8DvD;^ceh5cXDPQk*=Y@~@z)uz|mGu&}` zSRD-_IYaev3?d7#Pd|8Gor4Y+5oy4ZHGD~5-$m%5f23**(As#N%=P@a4L$B`7az6> z#Gfv@QCnwSN3WLT%kA;Hud|>w>SFxl*r!E1z9CrcsW|&O43Zj^yLvkn85iQOqLhJC z?1ae0;!f1+-t>b|(KX-q@Amu8Qq@@5Tm}2+hUK5g|J8(*8^SB-2gdI_=t6*eIq->s zzYefpy=!nhCntwcVCV-43f)NU@2JnjuqinCL=Mb6zNz_84SsL49F+y|UH~pkyLaun z>bd>kxeyRhG0DkNgfkp25yPN=H^58Wfa|%z@K;lCsTj0nn*zkkyTl0wa2iA|{>-bK z`Oj{ANYdR)pe}=?{7Ax9z$hONJ@}~w;!q6ak|D55Um3C$ZvVTl-3npkAyGkA{_s#z zomB-?v8Wa28iW<=)Fk^U_Wwkim}<@cw2T@3H{kMrwq@);vHbt1%kHKdMQnD8{XwCu z*7)ILn=bXy 59+7F4mS<1e^cJ-qv3pxfu?Nhy|G2`mID>JtV^YlUeF{B~t0< z_1$U5C!Yyx S$jLSea#IvClqy z-uAJ}VaNFH+Sifms#(yF$aepC`<;H^ba9)K&u(gb!IOi&oH@POV#-a4nbA}_p{i?1 zB#rfs_lVoU&;MITpI|)}57eM&;HlB(G=`QhCtvZ|FPs3w-l$?Op6>SG(7*0LS#s=g z`4`Cp8A$)meW*$lTx=+4xO;9Wa+!1(GV7qWx>b8XvuFG+{@lJcZM#F|dJdpgnCh;z z7ytGkhWMY@oVh#ycgIoRJtz*MWy9e^2de}}4*zXUlqwI8h!F9FhOu*| M4kzfj-R%`GjmySsbdeTOB{2&d`68!5@ZEUT!f7^|FR?81Tix_$$l-64_v z(ERuoN79@pD{;Tz8RChZ2+NK;6va9;g%Cwo?vE!2EIzEG_Ij-Y0suT)3?lWkA}p$F zX6QurpV59+ Mq8YbhA*-l4ww9B|v@GTl{qrGqgB=5bLVWl>r?Z f>|Y7 zY85UBM6zfU`}&Y#_p{%2mf#)?Pqx{snQk|4mJi1iQSO7Ww*aYXfKC| e^%{tC=z(^#<@T4q2}y`PM@M1won!6(roCf}VtBEy#YRnR0^w2< 9Sbp*yYFagNS!#G>HL>?Xid*z#zsVM$+b`anRPof0j zStmMz%qz}E)!D#ATJ)SI4$N3ESupa9E(j&1>^pB)P*e^fVmH9T^T6jVGJT`ky#x>{ z-A JSvfG{OiTEtc;;~@F7f`qN zShZSPe>q_C?(I`r+Y sCD=ajT)zH& z_;>?+5D)rNw9EIaI?VUNPO>G3Nsw-K 9i2RZHx>HQ4l8G+G`LS)FxU zrM~WfMVRs+7=?K~aR<<(VKqP> 7TivrmHn@ZyRTol@&pE)lOiQ$Wp&`=Ma%NcdP|(X z_d{w*1cFCvjm-sGqvlj0Fbe4fgq zaal7@K238$GYEcSO(+my|+Q9&O8!Avy=) z%-T&y$BNY6({p?I2Zdu*sE`{$w29Ol^|&B?gl?7bQmL(_u7*Y^(aeRFFdY6$!n3qj z+RpA>1)&!*bU-l8`}_|4QwS%oPQ^hueI)?OU$l *$_JjkW5C3*!3vgPY#u6ifW+-Ys5r!v9_uy|i z_RUtw?i_pru&%$LUq*N1*7=abS*;1Hv#Tq?;Z)rZX!#x9we_<8g!`uMWK^K^kTon_ z=?|WR3nc68#l}IWgl9O^0)6=XBKm%q 89BT{1!CzzTKM=& zBJo`- A0{(q3CUIq4+1jhZ);*N>vqi=+;7@N`(vlO|C3H7>bb}w3i zUO|OB0Zehj6r%md$XU9}9H^W9jnQ(;xeVIzY1yZ}VJLZhBVIeN`FClykbzAD$X8@z zM=e|Qq7-Y>w98WyR93P|cw$6e9dEG6eoBQdN=3<+Xn8hzUmrp=l5(m}Nk!izY)^rK zffKu^y`BFp!L0*Owcam+74^|u!B!#ClIIlRZ H)K$0XMAvZS!81enJ%5MCvI3 z=^LUqR=Dag?6ZoZa-E$odY^dpR$%b126-b^{;7Xb53%>G*FlM+f8oInau7u1#$rkE zyZKGNhB274Jwchvot9S#c|#udmgyW+tf;#S7Ju^aPS?paJoH_H-?P%+0nPrfAH8Mw zjkxgUZr3J*TqJ3<`np;Q#j{;OL05wwNuuvqL>i4vPblcrjsz3tu3DnGUc2n|TX23N z+$k#uxQvNjea2n%S9}5|W5ChHnaGlkyl*|Du!d 2At3i1KJz;u&9KZxm30MPC+%lQk#5FILBPFN4t2ob*E=@s}~ w~r35S^NizoO&xASJDW6 za%yU7bMF~ATz3W|rs9uq@VQk)mmzo(xB49iqeckwPqyxp9-75d1lvuxEX EuE4(h%)S{H?C@o*_rS|%e zhs-vrX@?cXQo9Vl#T5li2BPhlsy2&{VLFE`x7UTzF;*eEQK|Q-q_e0ucuK-`TI0fS zmD+uS^H6`!E6MG5hq#=YiaNIc8Mgn+2XT!5J0iqt0bH16r~T}CYGaE^eGf@r*6A z-w}~{5NBQ_^Wso~Z+}C%hA6@|;f@>C@G3?9NE8{)=l|AyY{#%r5VSM So#k(NRk?(9ZCJGYTmmgTvO dTn4g-0Pi5(J-q*Gz3#}ia@uZgX9P_abfZr zp@$Ic;ZCZD9_8L($bQ%L3W;@Sv#>;6KZuB1k4}kr=;<#?6A7Z{{VmH)M?%*RPB=0U zg+Avs_l-^xe(XX}ZkfmD5oqC4Q6e@DVc^?;*6_xWa T=o;B4SbeeR zWY&jM6+LVa3U 1JMOV>NYw)6-Wc1Sa1r*OJGkC z?0LN}uDby-nNrGJ%l O&&t)QJg!0p47;Oeq>cRxP0ju1(a0KgikL5)L`_NMEbs(X5Bw7E;qkg z+^N@M5yqSzVyJXcP* w~YMOq&zdkzHJ;Wl~!6__+AQ;zM=v43U%NMz4GtC&vf6U&8owKKRj&7Ows` z1P$>1obTuTAwSOrNx*+9ct)qftKFD52xa#kD`SQxfNBw U0LivlOt9lLggJ8yJLDt%A4cEg4|+6`;h{yMXbBunWlOFAWDm6zW%OO)6E z&e4!+6q))R-X}L3db+NX&kFZH_1XUP({w(UQ9C+D9&V?-FfgM6qEM7(gWSV!x4SAS zeRtuDT}ZoDSWcg=O0M*9BE``!u1g}fJ9g-hz=scOLspKT{?(RLwX{_|W4E~Lnmc;g z;cKem5_3f%qrb8^yO9@Wb{N+p2+ublt}VLVR4?AH<~I~Fu*o%dcx}5 !IRkXr8UPhCT3qkQ5;_MY+o4CIdMIpUoUzgAt9tD zI=+z<4}u2QA+Ma&xno<~5QH@bX0U2BCpr1FmX3~Z3vEX;G-B-J{$ci#2q?)gxBjx+ z=M @KwW<5RznqZxM&&E6Gee*VtnN{WE;BQxZW`O}mVaQw-%<-WOxXyj_t%xkZx z
A2<5k?XN z01ecOZj2;%7nhgx!2V_3`-9MU{gNK)X?ByTNlPx(fdj+iD(JLeye9Nzt~+&;oVZ*P zU48NVkNsm}tAeD>j{SGeZCzaYzP#PB--3I7wuWMPJnbR>(U7j)d-jxQr^yYauG{`J ztfpA-OKuOj)VJjpI&h|5Uo>9U>(`_7vV;olm8}iT>=_RBe1F596^0{6F2SgA`ki_} zdE_dLrJfZ}`h R0`Y+~=)^XO~eup$8_4u>3xL^k^Wn)tIqi1_lxDZ?|iJ@HiY->=YK^q%!#U zXcNRBS!7cbfyx>xCM|!|q7Vy+IKE#rszF3s!plH3iKV2ZY^I gMq3*1IrIRX^75^UEV5{*Pe)~n6TQ=CT*giXe1bys;VlD;;_)rDI9~P zhwmn;mA=Yg^$|Nm!+0<%! sIE8b#Qc;p#hbxe9E@k`;jiT1@YYg+R&U*|m;ug@?qD~O(e_T7ZIQB}_GaQN( zAxy9blrO+-x0{BBSp=_#s@^_C4}$^ndkI4&`R=He%HR4U%mCBVAocTj;rX-{sR5(d z!<}h6tuImoqle0m{&|8d08-u@y|Vz@<@W )J*M|K57g9DojHj18r(nsqdDjO)I3eClO60#jIM9?5Mo+XoK-7_SnS@2I z4%Lcsv)0=Olz$b2@198dtjCT02dVSZ5X%={Q#CM@mAwv2VHdt8(qQph1 z*ZeI`RM?UG-vaK7qYstf{K~Y`z*9~W>l|whh;`P|<@Ak^q`z2z)CRxobEqKQGi`5p z?}-|<=9uf850c30fAH`jr&-Tc_k-tCKj*-Wtc!(a+)7BSh?uzo^}o2v{@yJ~%7~5p z_sM&)X<=k$v}fjXUG+Z{%(iI?`}CBZUQB#FL|=8XHe UwQoZ zP46quhZ&U4eBFyQCM)vq(hf{c`@EeL{(b4v>rX#^S#A>WzVdh3eed7AMRM?KHLIQK z6~DUtB?-Us9|bJrcMku(_h05V^MwYb4HuCoul*eGicCJeMrw{?&&xj#iIM!@do;$X z#&se3Y`y&_4^3t#l}7I=%gO04IC HdFB+@VPwIOnW&4%*2y1EhW)HhRP zTW$#0Jbv ^txPooq|SHck&I{8+u`6y;S@6pL+agE_dtF zhxs2$H*UP9V7$+;HsqHzOf*mI9bT886|uU!u;$dIn>Rx~etfWXuyo&Tnfvk71v`FG zzWOFR$WO-|v=l|Ub8=jfqy&0^I9LRR!iN^+oQ-p_&rVh9XAJdxd*yvrO-kaqv-kHg zaNDoRhMpop_AYoN0U**TkXs{?CW( NPl1$NiIvoTj>+7ooaMw*aqo@}Ry1s!;bon0Dc z;OjVJXSgLko{1N3148@x_~}zU;th@&NV#S|)}E(;@-!I7g!>ya0XAcV8OIl}Uw z({SBgpbo-0TkmyJ24{V-h!9E=j#xQIr|@T;I>m ol<15Dq}9#x(cdIR_#(3cyCp6Rl(lOy`!vh`SJMMQRZH&DtW~Cv*iLD*3EK zHh^=q-hTahmFQu^Sx>~_f5bV51a?A2NSryCB>F$P`x2;}*S6oM2s>ohlBqI0(Lk9> zDr5*xhUQU&DN#h@L$kffR>*!TNhm3mQZ#B%Z6t~!>d_oYnxoQO=XW*icdvE6@4VkR z>pSbLb*y*2>wT$b`2X+!eP7pax<;xocTvg}!ClEAZ}8(2>wrU$j>z-Mm20T>wrx8H zQc{O+{P?59z@bwl`U1G2+EO3ZojZ5t0VzLt=nx4{gWLv74(-8pgK+cMqa-ruRi3Vy z$|{5;O6p5uR(87qgR<%*0gS+=qyg}RS_R Eu`#B?rjw0OIY+x%Gy`0S_R#cdH(4p7*&g{yeCea7=@ckj|T3+ zhAU@tYvLKcZND=5wRClL&v!JQl0PgLC}npE)u_!f+`zZRO9DIhmJZFWJb7er6}M(; zX6*Y-x&m^}m%2+=tWAG&*Q0B)wtelu`YNrokeb{1X@P>hJ7&z7AyPo8dLv}5#8$tE zqb7X8Q1-Dm04jG#=`+AHb#rexGZMP_O5gE}Hcc2tqMA<31BRE{6qn~ryKUQ}s=duz zPDKlM+}d23WnK0DK7CVKyS8nX;}KU^fu|t?m)EL5c%!pEXO@VFNr2d2<6?Q=V)5i1 ziDz-7vik3$Kq4hbrr2E?g $V_6|=O;Q;dT4V)rTNvXux(=hy-5u5BhUf~7E=Bgpv+BF`BFV~brn7r zGg5bFg2nl5eW_CzMdcuSW6_j1baGAgKt&u*H0(s>o9b}Z4K^p$1O( n$2ja?_{S37LV8C!V&e);EY<0kHegT2vanqC*vM67p zOtA{B`*FFzMyq4m0%L_!_mhz7x9|1L<^!dnTA5%OPxN=$2Q?rHO9cB$5WAnrG^LRO z2A9J021=)!d(8tfP-I0_pnUpbrywX;>uOwqZaJ^sj^JRcg7DDLm-yef@nOY60C9-Y z#>&uxrW17ennXmv)pXLy@V=gmm &Q#-*o!ixTgzh&|#if*v+PVdU2sS*NgcH8eD~ z7me&^42DO|?9-$F_|JMO@1b#Z-e(-B#Bs 16y>hwvT(TRPdAyPrX{$X z(&kR)j(n2{hwCdRoX&~L+ze*JZbJsnSS6En$ROj^Kzm_`h(k)4^%8c2kKO*q7uLUi z4~M;9KX3ney*0`pe_9>OVTexVE>N)BiQDSOB*}k)Qv0RGa+r`GfZzOv74F9*cL5|M zo%fg{7s6s0_rUvmH>+Gw940(?r+$aWFSU7!x@2tSWe`uc8;B>WFo{PS#H|5MB&cY< zI)KauX}oW7Sotz$x#n0TH>&TA`804l>Gr;9$yrw1*kx*SH+rmJs62Iv#hl7v;Zm?o zvy6OXi_`3$)Jv;bX;y#4@L%}>ki<)m=NlHOk@vHw<*nP2aKTxcr%ykQN%?wXW*s=C z7RPj#K8KUJ-@hS_uM|;=#C{=ILQ+w2AJzl#f%CvGJ&UR%2S8YNz_=lfe*wk#PMBSO z2fCVoH(&WJCl5XBdd^Bb(>K5`yrlV?wQ-+Y{M6QD*UR%t*Ev_8ml=6rBko}lsNIzR z1Qc8{i2=2VMAeqiiSPlH;U7?V3fd!JpV %)enw{s_n8Hx69h; F|+KYL0YjxS-d ze3q&G{Fu`-UzGgVfi}6d5GDEA$wf?=I@Mmd;Pq=?CM-;4HCD~IeLhTF&R7EPMjJzX zY)f}lDj {M$!r#maE=suPOs}Om-p0|)!=^JXh zIZRRIY-EvzUxgL>{H@9ad-Ggh2}nO|oMNzF5ZRZL ~|cio_#im|FuL^z^>H0a&Y~34p*2I9ni! z9^EGAcTGj@C%uO5wr|~a;n}C&%D|)+*p)XUamLOm1{SoiD~HzZP``TIPi~(2#=rjh zOH*v{Nmh2$>w*=&!aU;r#^}Zl1c~zS=w4Kw m41;8++p1@B z$4|KJaxA|pwBEbvr|qU~ @WQ)kYkhH;;%d;jU4hILl0=lv zmBB8?2?b^A)FicOlWAc|R(pRI7hiXGpxhpSa#jWSFTt{%_e1!;e$Bl;bYX&IKCFgc z4tv}&9satv-oI+jYC8#UINH&V$7i2OS+G(44)%t)c-yJ GL!U=+R`|c^ zrI(!^Ne3`G`rG2s#okzXU`ym0891ILys{T#or4@|fDcjJns_rN3+;()^e9H?i38;J z1c3$OQALJL-Ke!G(rblrsy2S780QK0!OvZ6@%hcjdZQCxbwQWi4r?9Ju7hVftK6X^ zSlb`9826kEa-{qs2NP9XLg~%rhgYWzG7739B6mXdFe0(1cm{ohiqoH)$RL)d9Zok& z2VwOj`S%SBY)n=BLgNs?zam6JdIQ1+Xs2>Ewh2QVo+jdTWMLS@L$8Kw5LsMfvK)m_ zF%ZJUniP#o8N!j`{YGgH52!DuFs;|~*HSiyVccO#j=2lZStNRwIQ``cuKkaf?zusJ z92gWS4&Nhb 2}e z5TU5jD&8SH$d 4*v^_Ry!1g}O4Nzr@Jym1FsaN~+@tY&>@!Thz{(kU*$rHoOp}{od<3GSj zTaSov`?CB`r^K1eZ5-8dN7FBeH+_qJjdIE{aN)_v^#Ie6sfZO}0E>$cNd{3^k{NiO z{Hb6Fz+L~U(+Z&adDysF7vvTLV7MOlQy0HZ2^``I3Z>lIGuc-eYn7CY+>l>C;3`*h ze)dfEy1oQ#Huz}Qt}QnRfjC4`N@^E2D-9%s;?jj{n)^78Lf_SzKT%*EL&?txg-8B$ z5f|P1TAa)WbIAXQvilf5A%e`}P(_-CRGe>dPAY3gX(_f^4Br5y$^)PbAHM@9MVHeU z=5L~jUfp!O7p@o@_hP)AmvF&IMM3u#iXtf-gF6Hr3-Gxi|D)L(xGrl?x9um@;dVRA zKLB%B06H+~obl_gcOeUcvqR5fWQDr#Dnk6mG8VM7?T+j&fHKEmT_oWbHUjhxdr?QA z0gpo60ZKu`TV%rr1n)0FG7gNd2xTD}7d=10_`KuBnI#&cXV~}z*aKP{k4v==K$9KA z>cY#vr}`5l1nM7soX^F-@l9TP_~mqf1`X)h2@#6TTOkxHx0&h->e|j xoJRkRvP)4iE eS?(gli37QoHrE*ECERVJGLr96e}!EcxQT z<=1BBNN4uj2xA$)uA!JMPAGCJj1WRCWDo{X8VUqx_v#U`BpX`b`4BZaj#AP$0y43R zrEEtmfO~`=0Vnq}y0dCZ3SZ@MIZAK=;-PTnM<^vSZh%Ritj*|sqVXJ2IS0!FnKNh2 zpKtm6Aw&JnO-b#&`Fqh_pO9ZrC(@oeFURD1<8ZO)&aYvY)` fhbH0C`so1@EIS)B>+#m0G`)lnXpOCKXpt zM1%y~2ZY2$t~e_1j$TNS?iMzzzVRvcw6?Y{1#IC(u{{{0Oz{PzL@Sl<166{=(2&zO zC8fV`6oTWB%a8?Jq4V_R_w{xzf)%S<^Rf9uR~k#LEx{vi-uMmE7Pcp@8<)N)5t33+ zFhs;}JWz~qnT+l&c*A0{jkdL&qA3EfEO}h6y^KQ}#iGsZCn!zt|G^E9(>eO391jUf z1WBwWQ|IsJ;Wl1g-*iO}{k5B)vAp2O@)c|ZdgN~>w?i^- dZ^Ua5r9-eD)ln5mAMNE1OaF=5!;Ru_AJV>v_`m$z% zK>gG6lfBNrYRMomn5f=9SHIPDazMC{_j`fv2Yk{5*!ZnlKJroSN8r@F4;3jV-)gD0 z2{zF`nUq xp3}W1fVQRQ6fDhj^#ZL zX~yt#m8)$0wWi|Kvyy@F=z3aeR3&x8##4?31rMaMTVp_ zSb-kY&|sSj*%D_HXs z9il1mGsYD{Q0A>$!FBlvt!}dJ2QSHL;btmfrAB3Vy#vU?GB>~1Ylz*K$$~xZ9nK~f zqdnP?ZyCrDenN*&NJz*B{2adLZjO jOqx>_FQMy zqqgPZc#I{Ds;tw8Pp1gVjJfpzc{x`O(x8D+POZ>%);KDGu)Y1s1P7^#jNs)-FQwb+sCXy&K2^v-t89e5|M=rA79fpaiJPo6awT)WQ1S#$zq^?@ z)o);`3>1@}zLz3xrk+In4$)}&$=OAxKSmkd+ZI^=KD<$MsQW_MAng&@2eFg*y^N={ zI?^hCpguFC0zhHM^Iz3YN5`Xmgjmq-(IJGqC4PUKO|bQYI)e}XOyFKyW_xAZJCAA; zJQLARMMDdFkBEThDedrI7QVHX@>#S-x!EC&sMpSK@3x}ub;Kwm<4@+eb5s*UOwouO z%f 0}>BZ>4bxk2Gji>V<>l*C;q<@C^VdCcPPqU?*HAk$+t ze9e`SSG|RFN>3}F`EqH_GV@apxdUH<)(6KHo19cuxf=S;o3-Q0&ZRzU>o%C`X}R>* zdrTAj)i!XEi*cImy|^axDfN>hCaIaY#&7??S{WMKw|YxQ?Jx0*TzCXOwOrrw#zObh zr^$I)j}+9e#7@cVnYQwhM6N{p&O?>0X5h=4t#eMf)z~Tc`S{$u)stiY{)$0{bolPV znE4@5zukR#u6kX1uU;F{DeU*;O`SaXJ?MBfnps7O;)}9Jp*r_ qc;W~jQmkPGj}E>Ye+SBi=@mz`g-3sBzdYa* z6rFb)M*o8G%zEr`aQ`Q*sxnH0GX4u}?b(d68E#=|a?I^JO8eh)&3su8FFyWd@H~4I zF%w-AuzPjjZhoI^ZWu#n<|vozE{fg`{eX4&sp~1ma*RX)s}*TzblOr3CfB8J0E#`@aXsdC&8=>F5R7tDsIcxtx_k_ z8D3$9FL-mMu>SL__s8~G%Rgxy7jYDAv&Vqq{?!3f>L*5s6QB8{>dld_JXx7@du%gg zcS>Fz7K7mjBs;qd8U7-?Zzc1wx<9%Hhet1%?Zq#3Vr{T9-XiSkbb8UAMN 5P znMVh{gPRahuYDEAlUQ-{3x(8Ypil$|e|V>9{=z{1!?L3s?6ZwkdAappHu1Ud`i1AH zpn0MpaL!k%^JT=B?WoLARn7)TvHI|Yqk{pzPS75w9Ss^0gCFqGz+){MU 8-i|%ivXKU{7wVP6{J-(t3KIUT!mhchz?3~fm$6l HdCn`uCiSe;-AIVJU+B|ZXvSJ|}QUgBhTV&|Grv?>-B}^WaK{8>QNHoeQ z8q2hK^NZ-aMmq56EF
W&5)O*agdTZuy zd@n0Y85t0b)KcS0cH&^tBWdex_|5nq)NY|iAUl2CjyT=w?T_|`ceF%%)+;VLJFIYs z*b7loBmbr$aH?po_Gae??p~Vx{CNcWHR?_=nI;B7-lo0{S`eW_%w*$|iI2rEx@PIp z?O;|Vt(5@wp;*&}{e5_D6UDkwW @;GIZpz>%j%xfo5m5>KNKb@Gtk?OGVIwFA&M+#k@OZTtE zO*u|4Yek#iBIXC~aJ{%P7eIR`K!jZ!64~gOQgsfj#8bE|(~YJXgi&vaM+PjZ^F;@_ zzy}{(an1sN1P^qv29>^;94}cQpawH>tQRvoazs)=A@yd#OZoq0Yxyap*B+F04n58v z3{8etmqOL2#$n-;GR-DqvM{2>)6?_Eeai9qf7U;459q5v3BZiRb@2S-kBEpLdFRH$ zD5}}iDb|OWi=?iBa)?HxQB^`M>*|16bLU1 a&e3&@--#1!&9)}0Auw>sCKu0lv z?NEd8fv!d4h{r+)3uVgu*mP8>Yw==OnKaFkoFu5+jbhc%%8*k9a!x$uv9AZd*40t} z%n2p@IV4wR&ELe{Eg+-2G$WHQ3O#stW{``}2y2ahb$IFh*@J|xFj*)tJvt3$z+AZk z5-mKt5^FyU+&Bp2*O!SBH+r`Vlq& GT&z z;{CdzXS8!_Mr}s^D=I!Q9Pt$2JxCM*=|Ge5u+*vJ8?2cNH}tnX!vjY1 5kh&5H5j6Sdqkg5lbN9p0_`kx^R`wh;5yhp! z^Lz|yO4^}1kgp`ZFl$rDj-iNA++4l@^erm({Cbt-XZ|m=J| ozq4miGmB7#(iCdF-5SQ$)9<18S9dt73OVIv}AXEJsku zb|`W01MrHue3dC7C6#v~t(|?W%Wj{Gqhl{$&NNVxz!|7(ae?lUg6qK-gGWs9a$fo( z4YCs^3uUVeTeR*%5Rx*6t v98H3vzmWwMBWIFlQ)So zG=O#yzl!XWS2f+lJu`8Zs(}DSr`)k?*Dfvak!JBF }ql}>fCPEw7-%%uFWtV !+uR@o{5RcBL`}QFhfF&1*B95oNLalFL`ml zJFARo8r`e#{m39fmJ#TqsRAHP4=*n-ZJYwa3g5`Nif@~E;MoKkce||*1~U?%k_ia} zB?SOLJ44efae{ZsI~+Y4;ecTrpuCLG{e+=FrJfc2&mOY%0qiSJ3PchT5vHKd0S#`4 zUKfgmdz9Kn@W+xRTd`MpWbCbLEjL-4mzYqa0uTYF#6Ml(dG-`K! +7E=Q}b~8meySPH24A~ z7jPm)+pxfl2lL$g- qKY`({6lMpHCUBR~SWe#vb8+l&k*@UBZ7XL;Xkd!QWxe zGg7yT8~dmq%XxF2B%%!y`cip=<;TvlO+vF4%1-%iFQ{Df{2vOABcp1OZpE}OFTdN* zF#C1-qI>0k#Tw1zi2&V$Qa1tdiBQuS0PRqRN{dzkOs);THG_h`Bev_>H#~A02vVXv zcg2>+TT#ehH3$}uD9x2Q3v$Bx_4d#wdip}%%=4$cVAgv7ZH!bTbRw{3NYc9e(Dm}YI074wC1^&a#f(?-$ zK);utPDNn2A_W;x1|;DG1UMqba2aIHMQwj`z}67vQeqW0*l>DAKq>3#>+1)U5+ntb z3_`jnI5}e>T1RnF^kAPJAwea_hv_k#LtD$n$le!XGu*FTz{T1j>H^#eCBwyb6k`;d zDaN8Xm $kj1Rx#l!t~unezd2T9Uct2#?`}LeyRS@b8bdmC>*nyDT#jxR40j zG8P*U^B9VBk5OeDWB<)v2Zg$S$d3`mz>zu3s3OU }V&~Rg{z;RrHhI|bY5#%m z{H(I|>{)?}K^E0HL?O?edwi#9&tDF;?L5;q9YHJF=RA?Yo}|2i{6wME`wKSN-4r!c zSRladBFY*%1Da$}W=qd`_QCHTi;rH(QZA9CMie{#;jF63Q7c{!zx$jy`jJBdj0{NW zraEO#9IvnPd79ho>C^Y4BenQCATWe?lN_j b7w!@GUHA0qQ>97~ z(;2+Bw%JNcy3=r1UK-?1X^P9u+jLA>RykY2r8nWX-!J#Dv+BP%?C(y7K 66SiUS$W>1?3l9Imi|~{X0xoSGp9X#Q-cn>`Hrf0O&>k zEsa(- vzE4_P|y-=e>=U~jEgh+@FRUP zhVw_fK24Tq{1ZautKTb3Qr=~aqA2(9>SM5 qlc+fGB|J72Gfrb%cr>m)n<8 zT6#RmCb^RjonGLZukB)Ar7y}VBNF*8klm_Imv>%+fK%%+vfQh&n|2A ^S~%9*4rRxnvI$gR9WyB^@;QPhh>_W~`CfMyx_qT5jIX+Wf;TJcxK z*gN^-suZU@Eg-u$#K1BR8^HjelkLR_!aF!vEr8T!h{qSwc)|?nJF2NntFx#u-^H2b zNq5_qok&hOAv!`B(yTIKsC^L}hZ@jVBCBK6o0t^_#Gv8i@KEdk^VB?LRyp@7>p!1(=c-i!tpBL&GegnV2e6B|rSOXmgGah?As|CNmVnx7PA2mSge zjMMOsrrSahMl_UQB*3MX0_HBt+(qse2E|8A@qayb>S_xES$>Zk7fF^Q#(3rxUBIJ> zT@N=vtEn3%;5$SN0p%rO07f#BW<}u^W-7mhS;&(w?7u4XF8w+t^nMh=as-qNR!jS$ zT-XC1L+y5aj|k`uXQefs!6QH%3NgR9o(G#D+{Iw<2Y^XtE8Ye!jd6KI5dd()ciM7s z6;jse`6a>Z6^uO90RdKo12q!ax84PrtBq%_88sZKgSd=CaSWOjP iYkkZ_E`1!VOIEKtq{;+ _%YvVq0`f$9ymDRj*#Y zL^4agnwz9vAGqJgyxHj6X>7VC7i)FNzGg4hbcBT@dPNTZjxHy0hJSE36Ncsh_+xs!vr za|SVW)YlFB*~sLK$^hQP2qbpL1hdg?##q|^N0`Im5ex(0_|5fITQQvq9hu1^Ym^ o#+CyZ0-Hb#bavTtk# DND6XD$!XiqM- zzkBy?-l~J=m?Vw1FUz^U>X7OJlBpnUhe-xSd`htxVwsusxU?dTfzUSa@~UpP#UO^O zc0ZFkaX@%CZ#V;xtU?6GK^jwVvJ+~kzoCq^A5Nr&)Wu=_9n7J>XVEDUa`*181j~}R zu(GnRE+e=gYEV~ll5(UU|Khz&Wxk+al7Kl35@NTElM8PFfK1t70 WG*3$ujhmY^QXzTAcitGK0{g&%#g~<{f #Y4-$GuA9rzly#n{Z$ z6M?A89=WOgWn=cY6ub%=TFXIGC$@;N&Y2 Xt5%T)c3xWP WJ#g-7i=B1eB+n)_uA8%J_EQt+vCDyL_C2a%3IqXvE&<0c5j@u`pQ)!X9iS5M`An zNT{4Qt8qTpZ$XsT+-l1Y5ue`Avr4I*%__vPqnaMuUY7 Ny^F zkhi3os`RM9FWx^5Gglv=5qz96yq=EXAS1Kmo#uj|O|jSuRXHtBx=c>`86U^)9Ma_A zbf*^iKt4=}O(YjDei|-|&UtHLZO}W?QG~dFP?fB=k#BAhr~srUzJ7g5lZqqHShvNi zNztpvKdxjIl9(6(e*?I?YfuW 8Q!}n)3rJDjFAikl|Bf3 zIzym(mBgV#`yvXV+QCYKvB9`Ype-(}RoqnfCa~@X-yo#R9cQLOheg#5Qv#viu)3rG zy) E;H=inOI t*UlTeJQYXJ zo9PdyJbR1W5&NG_22U_8jMCB(T(1B)o!lx!U?(CRjW`B8t1=HyqN<>B2kV`3^NIV# z-%v6>W!V8@*Y=at>Hm>I%Ao<+cS-bxGh)`vnIYJPNupasp}$u4SV{OuB+zn1$~dAc zWN C=tWq^NlcC&KDoil4%EaSW1fLauNo=vcMh758}d=~Q>x zB;U%gUH%YA=vd`UuFTwV!1T3Dat%+I_4j~xHs?I9rQC{c(tfb7s(7*>PsaPfYi?4~ zG4Xn(7D;uY3V}h*en|||?#8LfjR6hK>4nAa6$cD`tU6Wqxy$s+Nvp*N)}0Pp(O0^# zg!{csl-GYo^Huv$cCV8)>bgC%cV$0bhW6ka5ZbsPPTakDgVN#pi%m|wj97~7f}XTl z$}`zxj*XS8#=3RJy}$eWtc0 AA~TpN_s}#&z#KQAA99Vr?x*l{K2L>ZA$Q#zyD6%<3NO}pX8wQ zxQMr7pNseUfjNVqRNr17|I5fr{` {k&H>GS9PQiRif_gOhU1FxyFZ5w`% zSABeHHF(%gc2v<)i7KfRJQ>4*8-MJNO{kreB(WpK X1I7LCXmClQ5fdtlW!B!c-CS#+|`j6MUA zGu(UMqAQXGb`I{58;73A5}9ZazXeb;gO =uYsFL_S1<@~}#V?))wj zk!>mE4Wq9nIUheHkLI0OkM6Bq{=E|_2{9H}TFK EJ`>1Z#8XN
x9eunLU$qoEsE4*6Z`~k#4g`hJtJ$%v$oPYMaE-*YU7~R z )zs=paRLS z$uX%R$G{)!&+lNwZ<|}|Xe?!%Auv(>%yjo&W%akUqEWUB)Y(7Uhq{FHy}~|U+P44L zNBwJe+ #s{#G#M9e zrywa_XXqzOJ12^6Oy2K6)Pte{HYWAzX+iEK=gyx`@nBQ<(~qT$;1IMEsY>M>>8dtP zKtO$+r@CQ&qXWZl98bhFs )94F`AH)phnYz458mhV&r%Bn|RdZZoXfwgVKVe3u!TEhaF)X zBk