datawizard/0000755000176200001440000000000014174271374012416 5ustar liggesusersdatawizard/NAMESPACE0000644000176200001440000000746314174263303013640 0ustar liggesusers# Generated by roxygen2: do not edit by hand S3method(as.double,parameters_kurtosis) S3method(as.double,parameters_skewness) S3method(as.double,parameters_smoothness) S3method(as.numeric,parameters_kurtosis) S3method(as.numeric,parameters_skewness) S3method(as.numeric,parameters_smoothness) S3method(center,character) S3method(center,data.frame) S3method(center,factor) S3method(center,grouped_df) S3method(center,logical) S3method(center,numeric) S3method(convert_data_to_numeric,character) S3method(convert_data_to_numeric,data.frame) S3method(convert_data_to_numeric,double) S3method(convert_data_to_numeric,factor) S3method(convert_data_to_numeric,logical) S3method(convert_data_to_numeric,numeric) S3method(data_extract,data.frame) S3method(data_rescale,data.frame) S3method(data_rescale,factor) S3method(data_rescale,grouped_df) S3method(data_rescale,numeric) S3method(describe_distribution,character) S3method(describe_distribution,data.frame) S3method(describe_distribution,factor) S3method(describe_distribution,grouped_df) S3method(describe_distribution,numeric) S3method(kurtosis,data.frame) S3method(kurtosis,default) S3method(kurtosis,matrix) S3method(kurtosis,numeric) S3method(normalize,data.frame) S3method(normalize,factor) S3method(normalize,grouped_df) S3method(normalize,matrix) S3method(normalize,numeric) S3method(plot,visualisation_recipe) S3method(print,parameters_distribution) S3method(print,parameters_kurtosis) S3method(print,parameters_skewness) S3method(print,visualisation_recipe) S3method(ranktransform,data.frame) S3method(ranktransform,factor) S3method(ranktransform,grouped_df) S3method(ranktransform,numeric) S3method(skewness,data.frame) S3method(skewness,default) S3method(skewness,matrix) S3method(skewness,numeric) S3method(smoothness,data.frame) S3method(smoothness,default) S3method(smoothness,numeric) S3method(standardize,AsIs) S3method(standardize,Date) S3method(standardize,character) S3method(standardize,data.frame) S3method(standardize,double) S3method(standardize,factor) S3method(standardize,grouped_df) S3method(standardize,integer) S3method(standardize,logical) S3method(standardize,matrix) S3method(standardize,numeric) S3method(summary,parameters_kurtosis) S3method(summary,parameters_skewness) S3method(unstandardize,array) S3method(unstandardize,character) S3method(unstandardize,data.frame) S3method(unstandardize,factor) S3method(unstandardize,grouped_df) S3method(unstandardize,matrix) S3method(unstandardize,numeric) S3method(winsorize,character) S3method(winsorize,data.frame) S3method(winsorize,factor) S3method(winsorize,logical) S3method(winsorize,numeric) export(adjust) export(center) export(centre) export(change_scale) export(compact_character) export(compact_list) export(convert_data_to_numeric) export(data_addprefix) export(data_addsuffix) export(data_adjust) export(data_extract) export(data_findcols) export(data_match) export(data_partition) export(data_relocate) export(data_remove) export(data_rename) export(data_rename_rows) export(data_reorder) export(data_rescale) export(data_restoretype) export(data_to_long) export(data_to_numeric) export(data_to_wide) export(data_transpose) export(degroup) export(demean) export(describe_distribution) export(detrend) export(extract) export(format_text) export(is_empty_object) export(kurtosis) export(normalize) export(ranktransform) export(rescale_weights) export(reshape_ci) export(reshape_longer) export(reshape_wider) export(skewness) export(smoothness) export(standardise) export(standardize) export(text_concatenate) export(text_fullstop) export(text_lastchar) export(text_paste) export(text_remove) export(text_wrap) export(to_numeric) export(unstandardise) export(unstandardize) export(visualisation_recipe) export(winsorize) datawizard/README.md0000644000176200001440000002743614173025777013714 0ustar liggesusers # `datawizard`: Easy Data Wrangling [![publication](https://img.shields.io/badge/Cite-Unpublished-yellow)](https://github.com/easystats/datawizard/blob/master/inst/CITATION) [![downloads](http://cranlogs.r-pkg.org/badges/datawizard)](https://cran.r-project.org/package=datawizard) [![total](https://cranlogs.r-pkg.org/badges/grand-total/datawizard)](https://cranlogs.r-pkg.org/) [![status](https://tinyverse.netlify.com/badge/datawizard)](https://CRAN.R-project.org/package=datawizard) ***Hockety pockety wockety wack, prepare this data forth and back*** :sparkles: `datawizard` is a lightweight package to easily manipulate, clean, transform, and prepare your data for analysis. # Installation | Type | Source | Command | |-------------|------------|------------------------------------------------------------------------------| | Release | CRAN | `install.packages("datawizard")` | | Development | r-universe | `install.packages("datawizard", repos = "https://easystats.r-universe.dev")` | | Development | GitHub | `remotes::install_github("easystats/datawizard")` | # Citation To cite the package, run the following command: ``` r citation("datawizard") To cite datawizard in publications use: Makowski, Lüdecke, Patil, Ben-Shachar, & Wiernik (2021). datawizard: Easy Data Wrangling. CRAN. Available from https://easystats.github.io/datawizard/ A BibTeX entry for LaTeX users is @Article{, title = {datawizard: Easy Data Wrangling}, author = {Dominique Makowski and Daniel Lüdecke and Indrajeet Patil and Mattan S. Ben-Shachar and Brenton M. Wiernik}, journal = {CRAN}, year = {2021}, note = {R package}, url = {https://easystats.github.io/datawizard/}, } ``` # Features ## Data wrangling ### Select and filter The package provides helpers to select columns or filter rows meeting certain conditions: ``` r matching_rows <- data_match(mtcars, data.frame(vs = 0, am = 1)) mtcars[matching_rows, ] #> mpg cyl disp hp drat wt qsec vs am gear carb #> Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4 #> Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4 #> Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2 #> Ford Pantera L 15.8 8 351.0 264 4.22 3.170 14.50 0 1 5 4 #> Ferrari Dino 19.7 6 145.0 175 3.62 2.770 15.50 0 1 5 6 #> Maserati Bora 15.0 8 301.0 335 3.54 3.570 14.60 0 1 5 8 ``` Or do other manipulations: ``` r head(data_addprefix(iris, "NEW_")) #> NEW_Sepal.Length NEW_Sepal.Width NEW_Petal.Length NEW_Petal.Width NEW_Species #> 1 5.1 3.5 1.4 0.2 setosa #> 2 4.9 3.0 1.4 0.2 setosa #> 3 4.7 3.2 1.3 0.2 setosa #> 4 4.6 3.1 1.5 0.2 setosa #> 5 5.0 3.6 1.4 0.2 setosa #> 6 5.4 3.9 1.7 0.4 setosa ``` ### Transform The packages also contains multiple functions to help transform data. For example, to standardize (*z*-score) data: ``` r # before summary(swiss) #> Fertility Agriculture Examination Education #> Min. :35.00 Min. : 1.20 Min. : 3.00 Min. : 1.00 #> 1st Qu.:64.70 1st Qu.:35.90 1st Qu.:12.00 1st Qu.: 6.00 #> Median :70.40 Median :54.10 Median :16.00 Median : 8.00 #> Mean :70.14 Mean :50.66 Mean :16.49 Mean :10.98 #> 3rd Qu.:78.45 3rd Qu.:67.65 3rd Qu.:22.00 3rd Qu.:12.00 #> Max. :92.50 Max. :89.70 Max. :37.00 Max. :53.00 #> Catholic Infant.Mortality #> Min. : 2.150 Min. :10.80 #> 1st Qu.: 5.195 1st Qu.:18.15 #> Median : 15.140 Median :20.00 #> Mean : 41.144 Mean :19.94 #> 3rd Qu.: 93.125 3rd Qu.:21.70 #> Max. :100.000 Max. :26.60 # after summary(standardize(swiss)) #> Fertility Agriculture Examination Education #> Min. :-2.81327 Min. :-2.1778 Min. :-1.69084 Min. :-1.0378 #> 1st Qu.:-0.43569 1st Qu.:-0.6499 1st Qu.:-0.56273 1st Qu.:-0.5178 #> Median : 0.02061 Median : 0.1515 Median :-0.06134 Median :-0.3098 #> Mean : 0.00000 Mean : 0.0000 Mean : 0.00000 Mean : 0.0000 #> 3rd Qu.: 0.66504 3rd Qu.: 0.7481 3rd Qu.: 0.69074 3rd Qu.: 0.1062 #> Max. : 1.78978 Max. : 1.7190 Max. : 2.57094 Max. : 4.3702 #> Catholic Infant.Mortality #> Min. :-0.9350 Min. :-3.13886 #> 1st Qu.:-0.8620 1st Qu.:-0.61543 #> Median :-0.6235 Median : 0.01972 #> Mean : 0.0000 Mean : 0.00000 #> 3rd Qu.: 1.2464 3rd Qu.: 0.60337 #> Max. : 1.4113 Max. : 2.28566 ``` To winsorize data: ``` r # before anscombe #> x1 x2 x3 x4 y1 y2 y3 y4 #> 1 10 10 10 8 8.04 9.14 7.46 6.58 #> 2 8 8 8 8 6.95 8.14 6.77 5.76 #> 3 13 13 13 8 7.58 8.74 12.74 7.71 #> 4 9 9 9 8 8.81 8.77 7.11 8.84 #> 5 11 11 11 8 8.33 9.26 7.81 8.47 #> 6 14 14 14 8 9.96 8.10 8.84 7.04 #> 7 6 6 6 8 7.24 6.13 6.08 5.25 #> 8 4 4 4 19 4.26 3.10 5.39 12.50 #> 9 12 12 12 8 10.84 9.13 8.15 5.56 #> 10 7 7 7 8 4.82 7.26 6.42 7.91 #> 11 5 5 5 8 5.68 4.74 5.73 6.89 # after winsorize(anscombe) #> x1 x2 x3 x4 y1 y2 y3 y4 #> [1,] 10 10 10 8 8.04 9.13 7.46 6.58 #> [2,] 8 8 8 8 6.95 8.14 6.77 5.76 #> [3,] 12 12 12 8 7.58 8.74 8.15 7.71 #> [4,] 9 9 9 8 8.81 8.77 7.11 8.47 #> [5,] 11 11 11 8 8.33 9.13 7.81 8.47 #> [6,] 12 12 12 8 8.81 8.10 8.15 7.04 #> [7,] 6 6 6 8 7.24 6.13 6.08 5.76 #> [8,] 6 6 6 8 5.68 6.13 6.08 8.47 #> [9,] 12 12 12 8 8.81 9.13 8.15 5.76 #> [10,] 7 7 7 8 5.68 7.26 6.42 7.91 #> [11,] 6 6 6 8 5.68 6.13 6.08 6.89 ``` To grand-mean center data ``` r center(anscombe) #> x1 x2 x3 x4 y1 y2 y3 y4 #> 1 1 1 1 -1 0.53909091 1.6390909 -0.04 -0.9209091 #> 2 -1 -1 -1 -1 -0.55090909 0.6390909 -0.73 -1.7409091 #> 3 4 4 4 -1 0.07909091 1.2390909 5.24 0.2090909 #> 4 0 0 0 -1 1.30909091 1.2690909 -0.39 1.3390909 #> 5 2 2 2 -1 0.82909091 1.7590909 0.31 0.9690909 #> 6 5 5 5 -1 2.45909091 0.5990909 1.34 -0.4609091 #> 7 -3 -3 -3 -1 -0.26090909 -1.3709091 -1.42 -2.2509091 #> 8 -5 -5 -5 10 -3.24090909 -4.4009091 -2.11 4.9990909 #> 9 3 3 3 -1 3.33909091 1.6290909 0.65 -1.9409091 #> 10 -2 -2 -2 -1 -2.68090909 -0.2409091 -1.08 0.4090909 #> 11 -4 -4 -4 -1 -1.82090909 -2.7609091 -1.77 -0.6109091 ``` To rank-transform data: ``` r # before head(trees) #> Girth Height Volume #> 1 8.3 70 10.3 #> 2 8.6 65 10.3 #> 3 8.8 63 10.2 #> 4 10.5 72 16.4 #> 5 10.7 81 18.8 #> 6 10.8 83 19.7 # after head(ranktransform(trees)) #> Girth Height Volume #> 1 1 6.0 2.5 #> 2 2 3.0 2.5 #> 3 3 1.0 1.0 #> 4 4 8.5 5.0 #> 5 5 25.5 7.0 #> 6 6 28.0 9.0 ``` To rescale a numeric variable to a new range: ``` r change_scale(c(0, 1, 5, -5, -2)) #> [1] 50 60 100 0 30 ``` ### Reshape A common data wrangling task is to reshape data. Either to go from wide/Cartesian to long/tidy format ``` r library(datawizard) wide_data <- data.frame(replicate(5, rnorm(10))) data_to_long(wide_data) #> Name Value #> 1 X1 -0.08281164 #> 2 X2 -1.12490028 #> 3 X3 -0.70632036 #> 4 X4 -0.70278946 #> 5 X5 0.07633326 #> 6 X1 1.93468099 #> 7 X2 -0.87430362 #> 8 X3 0.96687656 #> 9 X4 0.29986416 #> 10 X5 -0.23035595 #> 11 X1 -2.05128979 #> 12 X2 0.04386162 #> 13 X3 -0.71016648 #> 14 X4 1.14946968 #> 15 X5 0.31746484 #> 16 X1 0.27773897 #> 17 X2 -0.58397514 #> 18 X3 -0.05917365 #> 19 X4 -0.30164149 #> 20 X5 -1.59268440 #> 21 X1 -1.52596060 #> 22 X2 -0.82329858 #> 23 X3 -0.23094342 #> 24 X4 -0.54733935 #> 25 X5 -0.18194062 #> 26 X1 -0.26916362 #> 27 X2 0.11059280 #> 28 X3 0.69200045 #> 29 X4 -0.38540415 #> 30 X5 1.75614174 #> 31 X1 1.23305388 #> 32 X2 0.36472778 #> 33 X3 1.35682290 #> 34 X4 0.27637203 #> 35 X5 0.11394932 #> 36 X1 0.63360774 #> 37 X2 0.05370100 #> 38 X3 1.78872284 #> 39 X4 0.15186081 #> 40 X5 -0.29216508 #> 41 X1 0.35271746 #> 42 X2 1.36867235 #> 43 X3 0.41071582 #> 44 X4 -0.43138079 #> 45 X5 1.75409316 #> 46 X1 -0.56048248 #> 47 X2 -0.38045724 #> 48 X3 -2.18785470 #> 49 X4 -1.87050006 #> 50 X5 1.80958455 ``` or the other way ``` r long_data <- data_to_long(wide_data, rows_to = "Row_ID") # Save row number data_to_wide(long_data, colnames_from = "Name", values_from = "Value", rows_from = "Row_ID" ) #> Row_ID Value_X1 Value_X2 Value_X3 Value_X4 Value_X5 #> 1 1 -0.08281164 -1.12490028 -0.70632036 -0.7027895 0.07633326 #> 2 2 1.93468099 -0.87430362 0.96687656 0.2998642 -0.23035595 #> 3 3 -2.05128979 0.04386162 -0.71016648 1.1494697 0.31746484 #> 4 4 0.27773897 -0.58397514 -0.05917365 -0.3016415 -1.59268440 #> 5 5 -1.52596060 -0.82329858 -0.23094342 -0.5473394 -0.18194062 #> 6 6 -0.26916362 0.11059280 0.69200045 -0.3854041 1.75614174 #> 7 7 1.23305388 0.36472778 1.35682290 0.2763720 0.11394932 #> 8 8 0.63360774 0.05370100 1.78872284 0.1518608 -0.29216508 #> 9 9 0.35271746 1.36867235 0.41071582 -0.4313808 1.75409316 #> 10 10 -0.56048248 -0.38045724 -2.18785470 -1.8705001 1.80958455 ``` ## Data proprties `datawizard` provides a way to provide comprehensive descriptive summary for all variables in a dataframe: ``` r data(iris) describe_distribution(iris) #> Variable | Mean | SD | IQR | Min | Max | Skewness | Kurtosis | n | n_Missing #> ------------------------------------------------------------------------------------- #> Sepal.Length | 5.8 | 0.83 | 1.30 | 4.3 | 7.9 | 0.31 | -0.55 | 150 | 0 #> Sepal.Width | 3.1 | 0.44 | 0.52 | 2.0 | 4.4 | 0.32 | 0.23 | 150 | 0 #> Petal.Length | 3.8 | 1.77 | 3.52 | 1.0 | 6.9 | -0.27 | -1.40 | 150 | 0 #> Petal.Width | 1.2 | 0.76 | 1.50 | 0.1 | 2.5 | -0.10 | -1.34 | 150 | 0 ``` Or even just a variable ``` r describe_distribution(mtcars$wt) #> Mean | SD | IQR | Min | Max | Skewness | Kurtosis | n | n_Missing #> -------------------------------------------------------------------- #> 3.2 | 0.98 | 1.2 | 1.5 | 5.4 | 0.47 | 0.42 | 32 | 0 ``` There are also some additional data properties that can be computed using this package. ``` r x <- (-10:10)^3 + rnorm(21, 0, 100) smoothness(x, method = "diff") #> [1] 1.821163 #> attr(,"class") #> [1] "parameters_smoothness" "numeric" ``` # Contributing and Support In case you want to file an issue or contribute in another way to the package, please follow [this guide](https://easystats.github.io/datawizard/CONTRIBUTING.html). For questions about the functionality, you may either contact us via email or also file an issue. # Code of Conduct Please note that this project is released with a [Contributor Code of Conduct](https://easystats.github.io/datawizard/CODE_OF_CONDUCT.html). By participating in this project you agree to abide by its terms. datawizard/data/0000755000176200001440000000000014113652110013307 5ustar liggesusersdatawizard/data/nhanes_sample.RData0000644000176200001440000006554014113652110017053 0ustar liggesusers| N1nDi6Wݦ?2 JBXdJ$p{C#CY;϶;W9gkֳ>oPqN~{\{~IK=Eu&\tn NtyJ9y_31TC7gXz[ǻWqdz<|䷤F.נ[,_~/R}/ z]qYKC?P ׁxO){rQ~K5Gn2^~UCazZ-z?`?|~Bo[w9Em6rubI0<ܘ 2^Zx5puNx܆|gK$.Ecѡrx<Kwy̯ a?Izq\r6eq5OB(6֟k~?C4F_i> =}"8cr2I\9|N]W@n#ɿ|TŻۉ%`W}=S_-)9$]d}jD~z 棆ϔ~:zf8.0`xy8*y=Fc0a?g/g~qO#gwx}y?z1\y Or|]}xʰ7!:gʻIW~yks'{8AzlϿ1ahqx2+ǃ}#\_;,q+P?@>JG"pCyw?%pu%8j?ڏqg9qǺӏMJk[=C;"j(Ojzh9TxCR'@1|4<^W4{@S{~9n0iZϼWޜvF\A_+F.;;/b~O_Xg=A?h{眷@\ß/qc<>7y=䲝a]1/w=0/a]αxn,yO#xxߙ! \f?~ 84-/dؿKs|rZ䦸ʺcӸ}5w{ W'iXpźps 猷_ 0NF=tnΆ6ggvґ_Fs^Sw{x>hc\%-=J(G᧛Ż,`a U:"N=g?x\l76=6=>v=ΟsX{ qW+sܒ-ox@<ҰJT%z,mS9!cbǓJy kG=b(8cr7ܯ5~"OeO%bݎu!w}>I<l=浲"Itzvks:w?S_yWa܅x{;x+WS=C~29}p=7<^ߌ~F[Ge; a|PPċr \byxߡz̻XXwF9hDWX+}?J=ǼyxfZXGKzy+~$= 09|W|*\=^'\ܬ~/l XK=lG,3d_ܰSڿg 䈥+/G;My\ Đ<K9Է>| :՟q7y?+-;Z!u{>r^{bqckKR9- ]Do3#GIvn'QA#g?Ĝ[|uOڍ!9ն`q"?]ܢ!7S,{ o'Y4b}/U#yH_DS=8@vxgg pǺ/܂ǣ9[.zQ&}Bw7<=I}ʧhsW>'X1~؍ux<Wy#|4p Y60~\R;,/OKЛ1 ^/ƾFvw?'^orq'eo3hr:w(?%G? 7y[qHwc})k\wpcoy ÷+px'<9'r!/Cs+pa=cq//g#=ɌuS;c_,ݯ'lNw3x~hϡ{˹2k>ܡ+Hگuz~?V\ms!ݑ ;ခ?ߐeCq܄vh?A!2pP~Q|vn3o떓qBxgyr#Nxq)V_XH[~gabf%YOC)la^w/q^7 04/|v/?GɳMu!\Ju9~VkJYK_spنd/Ƌ{?׋LJu9'YG˼]_,N7ցdD#}NDn>b]Un?GN!ngdWF2_XW_.ޣ_v^({^@'/c\hC8c9G=l'o$}|Wt7/xHy]u|_'&EGvyomC+z:zwNYNWkr܍_uw9}-ȅuzH(}^= zb~x.5sc~{/\)1n <1_^o!-N3: 0_K78wc/8 /_Ẉ~/? _ /7IO%\:rm䟘3'{0ǺH>=ޜ.B~{+<31#98<zq$rD/.ǺKK~_ǽyݥ]/S\,׽"ŗF>o>`!'!#(#ց}w`ǐq=D}/GGy{x.x7XW_`^0أiugv->oNǼ!ܴd CS)O@@Nkb.R9ށ^Wf#/"-|K~CnY7GHz=)3fyi]7x0N zg_Cq{NEy.%O|pva/#v$r]_ߊyoSD QBN M$n@\5s v(x%g a}L']s~y {ؗ'%vE5#']Cp3NHS3y;y౾ Or縗s L#~Ƽ4> !6W3 7>;~(zi<碏:A 1< '36q~;>Ob3@䏍 0>[Ox$zy#q$d^8Iq)&3~(|~lq8Oqbxv%IyPQ/qϒab%@Sx v~+$Sփ p\ۮ9o#wטk<۫؉;eP)x8_>g3 '#nd{";0h~% zo %N#?y~Xo"/8).¯Q>Qݝ_2g('8Hq2ޡ]ȇy ޝSgz7Yi\=J_璟pGop_G1c;8yB=+<8?s~?$ oROUۯx?s￰ߕ<{~y|wyNsN⒜sir=oY<2~p:h䛘ǐxoW`!m,yCbB9s6丂TI&1Mƥz7՜hqKg>,yU7M#'ԃSܗ ܿO~fؕA>%όýo#~1$Lqw9!~ڭw%#>ǂ~0gsSFSۈ$C94s?Ǔ܎/S E ^u8܆RɸWpy(qP^ф낗y0<;n0HwG$/b=rۓ'hGA~O Ei zIZ̳Z/ʂ7kxUC+rλisa^[ĵ/ ޟCX_\Q^1%wr|9a>QPc#!<¿Kނ c^0.[x~NDvpBxC'q( #އ^oOx ~??楘?G·ʇ8h̋8zAOf}|y})>7O_(y72w]j1OcQ=Ey!BHY!K?B-Xځܘ3q(w{ |-dW~C;^~پ0O~!/١'ijxƹe{|90XYwaK*qCSE=_${8~RF<qgkX>漟ÐuMv!F\oweK8ۧ:7| >iOSb|Mɱ-yo$ zqr 5W|73_AWK<迶3琞q~ e\S$b<`0~惔?>ļXWSOb$&'y2rQ>֍FUKq^?Y;b7dv>_ug*U/ ُ%}#l^^7hH5Տvm/9gP={֮m ;zH;R9'^ï\~˅oѲhCڏ6Da]E 1[;~C-ǯE?z%?h;_mװ~zaσ)ψo}.u j'^lm ~۾\h7Ho?Hs^ϽGA [Rbk?kX_dڿWyrGk> +O"'l}ut]Ou׫[;ђ#z~8rx-v%wî{-m{s~y{_zn#h[~yX9lmAۯWAj翚hDp47Z-Tx>5Z8b_ }o_YVծ^G˟y ڋDKo%W<]D{"m/R;'}]?h)װo+mG\OnFD\P_xm۟#ny緝e_G?~ED 碍A劶 ھMhWP+W4t}"9~ׯ^䈖z|V_ַokV5R+/G~ {U.,^-Wpuﰫ|~j'\x|ȫU,m:bԮGDWclm9wuٮU=տoq_ܫ/}3ëm=匱9w9k㵮Aݱ顇(<_ gSw7/fgk? ?1k1zя^9wq9]S..^rg~1VymZo%-+:/OCn|~1n" /_\ ̯Y΀ӫ?_=~w^:t>CgKOzȫjR/pO)KCu1ܾ ,g{}ss܁COb,#ƿVXWPzmz? =1^xQ/w|\?x<<_үsο^M߂ԫ=r[ȏn7$n{g/ڳq&^8e+8.}qu?1Ά^rx_m3{^}y籑M{>'ߡ,A]|s?~΃G;ηC^{s/۫_OA]\v<-zc,,Cr'SO{3<ۯ~Xe}W/ɟ,O6y#czXϜoϋXg>݊?aO]rN8+{+ۏz~u񝿋9w=O\~~|Peބ ;Ay("NO{{/m8XyP<? <=ŧy'bk?^xz+rE#p^(xz鉫1ܾKm_}|oӠ8%'y}Gy _h^}y_{}ذ~W7=[9N}Qq9~>z{_:ފ⭧?ݠvծ_KyOu꥟</П=3Ke}3v'p˧^z7 <߸ڳӎ- OqDKqr9ƽM~On/~Tw{Vz~=^qO{HտO9Emɞvj;r=߁yꥥg9^{{}"=6m߯{q~8dC w=q;wW[?\ۯ5)<~{+^㷵cvVޯ\~v_9^ *_¶㷞_yv~m;k"+lF~oa嶕\yP>,gA Z>*m} >h9za0ROFZW{6y䌴M>[hgvտ\ڳq95ZxWHvt-V~_G#m?:-֎+'kx%_P}Ͻۿ~v +_6yr?r~\#Z>l{~*w? ܯk}G[B *yXі3,/zخa'h}h!'qa~x>وʣ>3Sl?STb7$㚢^P;l,798ycA;=ڗyv/?=l7uNd>[1nNQ?lKٿz+ab'#yl~r2|qTy~x|3hfRte~Pxˇa$'0멱4^w)»IN+?x -7P=Y^c|D9ï+/>u9ϋ_IN[|~/1ur=m''C+xޱf9}?VO=Y#0n G/<j5< H"zteoT3ļqqO&}܌#qO`u2?Ty?ϛ՟[ysX^l> <ϠW?}88/n 8.9os^丁yW[q,<rz1Ogb>#+g~vf6^ʸɸo˳2Yy=x^v/'98̣ W~$?0{8<zzo?hGxw}KysާF>^-< 臾~|12~27䴭-zz<r_{qu4rDz9ӆ+F\Jm8q0)>23uWCH.n0/~liΧԷpqy|x_o? --?o?\-8e?f=o.|omy3ϣz8eKhmzwӽ3xO ' =nxnm[ly8Tֿ wm^zlqך~.scMr|<~~9`!o{\6 s#+yct}"ΟpyWOxןΰ?/8/vqNƁr}o'{Wo=WB`<u>G9>ڵW:ȿ6r0$(-nCTc_Lss?Gb?iaIy>ؾ8wطg\9/'=߳K=}ebі}{-~7c??(#޵Cmh|OqгxwO8Obx-O~8}B?6m;Wm3EXn 5޶k;gƼTzFލ㸄A/{s87CQ|~9q}gq<$#@X =yu?kSQ=, [|h;/9>c{B`1=mFE}ǧv9b2PyY7zmvc<`}5?ն/lqM/xFr3{1_5Yyq^填-.χ>9wy[2O|~n=Fr8lqCyVqy-<mzd|۳a<.G-?$;ڷb} ~ٿAQy\S_9O`y[~߶Gnlō_5!.grqT]84}x m889mTދ>9bl1T.Eپlq?7mж?f;OS3c\clAѽqe;1v8di8rR{4noovöc; ~S[l_~WXڡ g;Gl<od'd><7vlo'8q8X. O< kG^Eml1?xwܞro{9Q .oOP0^~OW#?۾Kak[G\ ^qﭿ7Bqo<7-ʖ'0ΙXby58e:+?A98Ɵטwh߆6ghc:}?ewjS$33W 8i|v'lQ[\~y`=.<=[sX_ gbsS =la|XlvΕmxy {;Al7S9+~B>K==ylǩ Ì$<'9?R[v>'} yُ0NN4n汆|T͈a;/f|W_=9z3~ m4Y۾2 #<5pq?g;ud^˸<4[}k36{GjxYm?iCy>l*G @0_L}|0'bxu^3S^L|m|Tv>ϖװOG{F^a\f8>Pto>&xvkݖOm#lW]s9O'?wXj߯xt2Ï +ݤQ\q.vԼТvߗx,O6V|ڨn_%?9 j=+_*8^gTq;ٯSK![T:F2i?zuy]-_暙{U2u_MRs~Uv麴lK%We C=┘ۋ?+)\^jߍnV]5«w6T){9Ub+&'_Gf6;WWMO zUͿZߥ nnkdlT1፼jՎ}Xw٨2[Vs2j Z~rJAZ+> O=kc7՚/Tso}{s}V*ek'lhix7ui~d^}pMȶ^UꏾN$[eM潤nWn޴սԂzn6=Xf\<`Λx8c՞O㵚ltyJkUj>lxTm(XԞ Q:k"uN?]w ۫uʹ:w3K*tz'OYLxCSRI[J/Kh<^wU|ʸUQ:s$u}-9ZZz'gp뵩/S[ 8j]KOdsuP.+VھqSN~~5V{7<%jώkZ7wE?;7 {~CfWg*rʾ^[eUپTZ+5ۙx[QᵢOi6ԑMW+{j[wyf)X'3]p 8o/,F=/w|aJH=02jn˶̨Һ)QF KZ+ S%{*˯[ƻʃû9ThUG'm7VLR7>_|Uj=MxpZЗ]r-岲۹ieV >ꤹEm,ym;7w-SUmXnD+Vo˫}{7ׇTQ#==?WK}-cny=+vvB9 z81"Iۨw4e*—J >/hsZ2&cJJt-SQny/[BMy=mC|Reߤ溦X '.~WM5kTfZIU74('4wZ_N^Ԧi_|N?ia'j^ezN jێ/xOO[H[ܱF 77v|ȳe65R> -{2ǿSw!uUCKVxe_ޠJʪe*k #.';楗#5sMR[S[ҕ)/Tor`ԗk/JR=Īy}(s~&n]%^|7 M~?:]{Ί:*YKmbwv_/'WvU?/}a?qgxȪ_s\~0MJ|.N/x_gȱc#&mܸIg!YpfݷkΏn~mINT}f狫]ûP)߹ƽ%R/-.v >u=O;'4X߱^TʥU:[j3ԑ.{&mϫ.}O{:&6ʌ6;0>ěyՒgxYqW,U{ȇ<9^7rB}OO۝Sh kGmjF5--i /ц눟ݸל y5ҟo{2wqEiǘ.iꏙuXLplw7???K^.r;lHK7!<~{7j9Z, 듾]c7<]|52Pc x'$?0$hZVPۦy:ӖÏ ?9Gi;u߈Q!/ |]eu.gCo/C/o߮hw_? E';ϿA*~_ _Z瞿@ை3Gkڌ_~q$ }~ߋ_Tjy'^A>䇀/+?]È{?~ʁic%w.0*{;!>Q)6ncrf;.7u%NhqK$ͳvjgfkzE3؛ H۠7T;ze~=+F܁}&S]G n=5}C%o)DՈ{`tRs1.pjZ}gӅ7"_}œc.U{^uKW3jkSȾΛ'^2J>pvM/wpwW|ĝ*;Mm/׾JO'i8{:CQ؏c{~|j^s^d ]+-wMQQJt}";7'>!x,#?Q/_t*y/*"+##]?oD<|/B??smǴL䡗{baV?SUW]U̜ԃW_1es/#~|YҌ +I~xxmOBfȕٮ"׶46c⟠߂z'%~|f5\:݆ f|s%Es'qx kvu? @v݊GY-}g/O ̗?*qB~OO>yJ^n=6=g@|s<{Wyw #=tvce˞}`f]'dx[M~zqa57&9Nr`]WY$_#]!_}cʩ~™)(rʘ&/ynx~875hpKg/q~y& /^#=maNF?ȏCOwayMv-;75Ѫ3n.<s ^>yd~?4޺w 5U~8o~t7Cw W!MXj]YQA z< 8 ~ak/Z,=^ FK7oϽYOK9j4OmYEOYԃy@-)v}wg!9<|2+?^I2^{bĒy#|Y'v!weS9 C_G=(@dz<$'Fӈ3n~D·$`m՚l1Ŀ?o^)TN˖<|r@!p> =zZ$V/<9wJӯ\K~3eߡN<ĭ?zG >)u~s teF;X޾mg;S/K+x p/B棫yP`Lj ¹@/yHcB`-3-/#>`r 0SIs4F{~.塝/ZډG]cs:g<᷻ʽqYr/'w:c '@.}<wෑ7Z?~˸a=%㥟ʾư ݲ7|9Apj#3E:55>~ 'A|srhnokvvV_y,в?ԑK3V'„OSe!iz[i9?y;v&g{ckq%s]1Pq˶<!a8\~qV)V9x͌wN98Ļ8zq۾XQ~>W|e?6~筲OF^ 7>om |XC[@ >Oyw_cQ_A.!r\:#KhPy/C =no>ΥO|,j䳱/?ZIگu'}ㆯo@hOJIVxyJ]7K>9q[O;WRBg%CX#ӏ_ib9ѩ~`IGZ1>wCz_C@˯RS?dJ<~ ? }cu8x%⒬E87j]uK!O_΢?o}o"P_8sވǐ<`59Y_ ?9y0Tگ vA]g<$6l&x¥*eg6y\1[gCr>|}(+|\C_-&شf#c^֢wZ%ͻ!< )w|ny sX_?VTCu9:TZ\QS%VyCY-:gt3\z~g? ^?J | sǁ'nPa\}cb59<=ʳGoz6t\Y-kF!O51K;۬9|ÔW=3_zY 7}ďr>Jw-ic?{NW:M3*,(sjJܗ2OC~-ݥͅG]r?%Gy8g<!灵Foui+^ȕ!8Fp|w/K9*ONeO ͻvҳ`g+| 9;~$SXs9|\yV !op`'T/\eJjmnzξS'gү:yi*śgSqW~GDYժN\LJ>"žGgx?;N][pCkWWA^3ثݲ.aev_yl %6?rNL+A |?y]Xʹ7'y=x"xDR/>ڮԃ_ﴑo3ċxׯ׋G$qϲ}kސQ93Aݓ><kuGO^VO.y-O}yQii7MXO~5M7b7{[#>K~M*qN3Nl]$NohE%ڌXH<".949~SuWZ[H\"(Z|? =Xe#xwIv6s-^,usϠ7{a1ƝJQgXg_Ca n8D[wo(~O7ȃ<TI\vܬӷ//-Yt%ռ1wI-ᰟ-yǶ^KԚQ8ďاiy_ 7omM'np=sz_a儧/ >Pg?O4xxO ƾp>ee}S#o>'K"_A<$lһnBijqrG5ǧ/Fy5qӸ w,Yޜw{wqNv@< :w;C{'C~q~=]r;3|w8wwC^k#A@Υ)#~_#O$/j\y 齜||EoEk>wo}5"@r7uU ꇏ_[_8w {A!o~7 Oe _okv?ĩI@r K{g⽏h#u/^};km@ QJ+]k?;|n뾧;3A\ _b]qSƥg>aoXK>jaC"9'!Zkye% ΀C؉官.4'(['sOf=n1ʹĭQWQRN0= Λ!@}K|ǀ+W츳NSGI ?c_k]I W(YؿնOurgMuw/A!Kϥ}r.Ց?N;0@| żh~sOԗz -3x~B</h8e7n_  ;@^y4MFK\%q<m=zwx!Nx{KGA.y[h'Aq1y^ȃsXߍ ,%qDx{||M<"+3?\<6qJ͉'5|%(wg>&/9qscO5CLj2+q_~;hzK Y7|kesʹ`'Ǐ5/qA7ӯٍIķ' ]+ݞ2C#~d1^~?Lc <kR{{|O}{%>˗*yc}0/@^ma{;^ٗ¹l?mFr$_h( }~x~oxʠ 49ϋh ߡ㜄Gȏ}Ǎ |)r~8 ۳a@˟rm}fߚ[0l((1tVmmf&]oHtU#B<߾\|~^kh.$:bXg1`j^8 ϳmc4}aΗA`B(+Rj&VYv9uF+w#fk+ۻdB NR(꫖Iouls:pb:;fm/fD,3(?C"pJ Pb_ӈi X]\g.~^B<{@uS7ǜw$Mb}iDϏP?ye)lf7r\W*)6^0NoBWBQE26\[5+5 fD"ϯ̕c>]ZwqdVZfB?c(#XRz!?;RՌO!>،ҿwM7ٍ`]YKil.+}x1EQEgy$J9JASDW7 |){@w0,opUAfaأYu$Cn Z8 oc0̙ܥ\\qɊ즰Dw&hϯOQEQYl.gיN'z9),tBkRʹ0=O}D [Lp|~ 8hQ؍,@1 |="Ͼ=x[ NtU^XJ( |Z˕kl\(M7jw!`$,=ñ^X"tCEQ̸ ˸xUQ}wK\dh2< k }{6֥}kWq++&;׷(b-(v8 ?u_²/ SW%ˌVcM3!E_b%!Rݲi|r&t. ыV.`(꿝,h br QhG#!-rEǟv$@[J(ꛕ =bR--uٸJ'x=TH6c`B[XOsOn߫t}YHQE}fԭIꦸf'wO- "݅Mk^M$nڧ{`qhkۢ(+zd;o퀌3g=Pu@deB_@ָr1\FQ_;: +A]<C}q Bs+  ?@)> V+hu,\.|"oMi3Ct@y`(ېii.: o|қ:Lb!~CDٛ۳ŲB(U'y~|ECQtSҴu2rLN/R#SFkv sU$r6]NGQE}x;@֋- do2a"aH <*ͷm Bl5B0tSEfBW'%Ɲ>9 b Бǀ02np2~"౭e5̓^JY` (間1G>eϽuMsmhi1I^\Lbc%;Y2gʄEQE}ݴaFզ5>v/f鈱"9)ts/QY?dٵL:EQ#t@ lg3BļpQk0% B RJ{ٚ9pL_φ@є>0!^b@R#8H .:> o6nr ^EQ 6/*xgjKùj>б1/P*'uvATl^\>* B(d: 7Te~Tݨ^j~3r}Nfِի؉?=BXkm"0~\%7ﶋJ/EQE ))؝F{?pzm #my/;'t~EM$9:EQ%,s(; c$TTtgn6y=_RDŽNEQBBGdt yG#(e%ĚIy !|(R$4 Wz0k) )) l J(ٯÌQEQ(aܫ޵zS}`_͟0|c(nN Cg4+:EQ%@X e= oFbNgZҷ Z\?f`x_3.q[v>…NGQE};u {@5#[4FT_hY8^_8N̚ 4: ~O0Z uyH}I'}73E 1m%cva"t:a֕b m4eYl&):EQ1@Aɑ@)]xJ3A,B_"@r:rtƺ&DmoJQR߳ ϷA&;%2.B7@\; `,E8@L?f1u4] eՒ"&?_)hTBw}+XKP(F/Pioeoг`yOÀQTP)b-a!wP0Y(sۉLxVTb_!FW|~6c>c|u)c̖nx"Ǭ[w` 'а}U&poaEa(l_U r㋱f_ekE6 (\Je>|yWʚZ4%lK:z7h{q¦(>5ie{r3Vl*3u5upߝ2]JK@dCQ_Rߛ"cG@[ 3q S18k{d9@%)"SxߕDd_;U;DVzEM۬Ͷ8(P:4#naR~{+DX@v0cdh  ZMJװb[v bH&BQE#iOu?/X]#uד  ]f X_.xk(7 aq/7kecqSl 0:rvj}5+Pt?y 94f떺 \Ҷʬ_TW smsґA7C}L)EQԷD[T ܩ@~ξjG\&6iv()/ǯZīn_~W E<YKCQBG( ݄p)h.la;Ыg@Lň@L6hHF!< Nd3w*϶8riތu/ L {[Ϩm\"_ w\uf=+RSn5fO6L"_YL5,d( =♖^Vڴ;rV Gimkvc6QEQ_U=e*dngȎ.ksV70FԷ0FV q $,E㆞sn񰧃ÜLSnPy(GC? 9/nhB!4a&MYMfwnK2:Fd;럨nܮ;վcN^-kjU(T~̼+hz{?gxMD 01K -‹^8oܟnb #W%؁#ɺK+]ny \xL  5k Mu^"gp|PlsArV|1,`i{[/ia,EQN{i~u ifu,$X Y00>=E?_lϸerƅbjeƝ$E284=V6&l*!F3[܉N4nҌ4!T`:*w6$/{$a4Uݼ?srqazV*X;MC7I"]X.D~XygqȌI<EQi_tH[0д~ @gqU]`m6CG2+abχW~38!BG@v) pmWjiCpCQR5QՃAJ!8>Wu`4dA@")6ORoq]ޒ<ь=MUM#1x<6Q',/fZ:?{֕іx/Eenz-;)1a!/za|ǀ~9.ts3'p L(ǖJWO&eU);9J/XW'w'uP&H Wax)𭴮1y- 7L Ymxx$D;f (ꇔYEZjwcMJ7IWB$2.F˟sWnRr%][Co|Zڮ֖ '{ر#>R?N4^5g(REx4_oEo0!\r`ǼS6uڣb縲^ t.x<y=L9Ygb-X6 =zM<!0t/ 2 L} iC.Kt&>YP `cn_,nJ}qw>TiURY|B?5lc>ϬwK[w}|,tt@3q/Ɯ1 ǰt,q 4 ,wPM0ob3]؆\dY(~ 9GoXRyM?5P>W@ẟ{uwډ=CiJj. &hٸ : v7Dx#2 bCݓq:\<6fAn I"+JAc:I vvuJ|SF'*6*8aZqwed_}+5> ^jbI/qJO=e$=W(TKzٖ^R.Bg<6{*a/`*}W9+&}Ue6a ^_co1(i|c/~mZ;@&|$O2쁔J`=Z:We$`԰BWB MhgbdpPL$눎/W:u zvV˓xQE}i3VhSΜY J"Z[Kυ߈08mYѮbElWdgterBm2[os (UpO6E5u<:}X.zz_noqT\i;nO?rqe b9=4N .=DDlO EQL{81xɱO\SL⚈C!e[wdt@VnKF=GLۗ/.h'@Wod.#ZgjqPkǴsjˮ Nl,y>4   ;>0'&Grs6zvbNCskPfԑ5;p)O+,[Y{`/2k{G ~kfs[O(QcT6J?}ek9m I1N@!z_Ҟ]8Ds˸sIfziolL2{X4K~\K)6ܜ%?7tdN=ߤ|bNqN Āw76&):Jդ ' za>1UOL,IP_/Lӑm$BR!}eڊjR7v*N]C+r㙖5;/"G< R#j\Wq9GO+(wI ~e 'k}8pyV \.6iu xk'tKK8`@eT+[.XTr!'BD耐G[C~QU!8lN7&F1MQZʼn "Jvn~wr 7x+չgtӂUƞҗ8# V, $^3 c]6;*zڹvAJmDk#"p~O-_Oϫ& 2.(ʴ 9`'w~k.'KPccc,t.J )*tOv":k8.Q' |TG0 %XRkK76mZl3O0-tOEQ_vq&FfN7v\E]C̓|7&+@ o%Upi@ʡGe>ռ߁=U)q_7[\r -VA7)8FRh6BP֭dO͇yv7pdsCv/兮(K"ya@A @Ɗ+Z6@xvKmc\C G T+7P pu /(\(IWˊEMWNU誨R_o W?ArT)3!67' 35MdA{$m .'P]G_-X޸]A-qNb5Bl]^w:t7-ߋ%jn%|<\",l{t0_O,m$Y+b@O]"EQg-Xl;\:좸;XgǹNݕ؃ C0"Bb,xIÝYfb}MR@psϬ)O=z>Ɗ8 h"cTr-c*N~qH\P.;lpB* )b_uԕ}C-|\ B3g34xmA~v%Un(3 'Iǁ̾d / CAͦA7=Df dm~yInߗPI!e*P@.C]P<9O/ԇ\7 s%2b 沲':Z?ϫtyHZ+RKFX_bq2bP0`ӵ3qk^Cnj͚9-W"=Wچ;'<ה4A$,ˠCP\?DǏX SEYʟZ3n蕵5m YV@>v tSM`B$<ʪ)['[t9 *γW}sh=QE5Jw^.)m{Tw PHج0 ]"EQԿ05ыuNi.vn\V@ٚuV9qf"tO_/~=TV f%G"1!*jyϹ5dը8a#tOEQ3mވ/+em=yPj񑦺 Y$@ {D8@[]67yޣ벓IYFcY Bw&PۂYnnh{ xZ c]WGCz5.y1G@z9m΀Mފ]Bs0iqG3[R+\_=o7/}X0Pl3@bӴe-lOkw<3"dnI/#<\Gt5$(>J#dV~- l7Jđ,ǦZNt`0UgE²b`10y2b@< ]"EQ?ו/?/lWK%"lm~q0:Sb?Ÿl 47"ً`pX3 78c9 i{MrZ*tMEQ}S5<9e~Og鳵"9[@Y⟾7j'W7LoE$ao̝U,BoH9-l( {Ԕג.JCY(3hH?5U$\Spy뚿(;'j.tK I{uѧVW-ǥՅtfa}K5|d n6!w2ĠR}!ڌN݇ҽˌaw!E ,3Yq%ՈP)]_]6k󫈌GD!` eJg5?2v&{sȼ\rEHd0o9jز\ @l60sU2vfl$Z)QdЯ,z[ug[;r,P7~߽.?,QoB& ӷ:02kzdeG0:Jo:ee)wHQQ(una4}ݾ R5Lx7ૈ F$(/[h`^)t[-Pt΋jkW[Oj_a6Ⱦ2r1Hs5ơ)l{DnJ(1zf2-h ivQ\VqvJTc(`\_θIdNLS!z+^V;R)V]/^M>,61`$@tJc Aٛmzސd/G{'k6^s]HLbەIw?X;̢_".N;~{Y}cujމ"@ Gh;2npKTy`Н}Nfov_aSK}_Л)n'T*MfzgyJuhP]YJ\ 2P|]@ gZI5?}*tU?v_hy%| P\$U]?LV[oR mg{.-bnd@%  \@=OoDfvhwJw3bܡ@*`X`L叭ZXCŒnYn?ƅXZ%HF_&\Y75f)Zu}1 -[^poRM)Q7SK]v)c"nwn>ST-6Vd/".qg\Z+Tv݈N(TƇi~]@GrH~d@]< XuT.3 ,9 ]6 .tK׋R$#Ywde>J?%innnT9XJ"(0$]ӗ;{8"CuWjs)eJqPAX0gKdAiy]hgDq*{@Ŝ7 5 D s\s56Q-ZB-0b*{ͣ3FYݸ@Kqv`R0tG=QYh165W ilwt* @wp%(6ABDQ׮?=*~IU54'HrhC|‡Fcr3{N )Q"V1NZFM/˭mw1汄U8]`?8WrQ/\_9BWFQU8j y`Tn0|/p_;6e` k ބK6F #X^zps…F.#Ng@]BWE}]耐vɾs.2q&%i(ei7G73vX( Z^BN/5j{o 8>ݪ&LS8{ tQ)^ ոL3ۖG?NkRvځO#WՓK(:ϲBm@Z@/AI%k1zy> o d) Xpb%R%$}g\qjn6+r0(X 9Fn.ksWyyQ*tOԟEҜq '_'|38%K6ZM֣MP{;17u-V/}]~nQE  +ĎVe嶔$\JV<{:B|3)A49_U5{t$*HKQ5^Dۆ Z!>ߺ)eC)ꐇ@a_ {>9]VtD๹o[`Nۣn*H ifiǰRt\Qt /rQc[ʆyFl2+pjUW>֯9 RBW(hWpqCʴs竝3j )`uḫ[,oQ2*%*㭖~8`y!c[[ORȬWsԀ9./T/26'E Ѝ?0Ṻp, bpk6&<-t[_CV3+9WV u[ns&fW:RBIsM7V1eU{9e4ksTP= q8C If/nY ]M+ڬl 'v D#OԟW6,LE)M2(UGe7;%VĖ;Dq%h%i r} {|caqdpuṢRw>yvCnוa9;m&L,`f*f/u?ngп/hsoנlFH܈W`?pym`ؾnm!tM!E ilO}ڨ+ٯ;EZ #T9"o{rCqHADN:L@sʣo;嬚*,?>6Oցl+ArM~DB' ]XH?3Pxd @z) S77kx#%63 3n4`Q <zN\;.$|2?: 1C 3'bOvgOu4a^xbZ`ȿN3ץkNy!Y.Ё "BKDC1|O8oe^a-6O.z1\~GtZ l6 &&ӥ7ba2ޗk*'1ߌ (8Oylv'jsxԓJM=UE"j,oނSf旬s(]SM 0m*x!Ly\[vSaJ渋eBwF}oqɰ*Ƚ:W~㵪[>YPl_1lxrDCmjr_xCT>gC+@t KaVnG+pm_NF] U$0a$^wג2~2E䡾: .n&%AI]`Lze.޼. oAA>`MDNhboНX .]$&3a73_fIG<ƄkƨCٰ0j8Nxa?hWV!nI{Tbz9\gf5VKF4EM0홊~{@wNQFY7p◖.& :]idؔUg)'{ Z =k4]9Ǿ}@RBeQ_Bf$j_TOF3®*4n9u,b৺,W8u~.arˢ(u0fP ܌:wr~rn%(@haLF?͒%_6[Ե[VˢG3s%gT/9l 6xBJ 7͌GmH\g[7`x(` 9=zzdlӺ%nNF…]n lir6pAy~CqG`mՀ/&0[\-9(* pR)o_^6i`dG7B/}t0Sc#AUa|Pr5e{_iٚvd"0]%%,  [<(^[ldwjkk)~sq|0  ?nʮ">3hE {H*3ݙE63ڥ\k >L'K 4PcE;c hdD #K>&yw}l41Dž#Ne.]9tkᖣgfABDQUR{6{K^Tzo^H;KyK~yT!h X: 5"O z4|45g#=s͘*t[E RO Fy>;_$(\(JXz>%oj~6j7`zKGD:0׸(.qp03{ noFr/,qlp\ 7x )O,s`BpAs2"sg\iigȒ/r! L6)a\AcTE#7t: 86y\3ì0juH` >:˶0SQSC+97n `.< .~,}|垕YSoMWk+ ȆlB$9EsnTcN(H9[nIˊv}D=e u^K5EgETugWM-^,5x07B&?I"KzqgdEzF~mQ߈||Rd/4ݏTm&T(jfav\ʒU/:b"423 g@VLO<kЦS_[]zdƴxhĽ{0#\Q}?ۀÍѹsE%o/)鈢ƒO`TBGS.!b, /Dl(h d6$7I[vElb[U S\^}&h!\dZΨ K7We~B)=!k.P] 渇BwF}e<2mv/T cY+ċVӛX Eci4 ޯ-Y@W`Mq[K4*"z?~P 7d0g dAmIJekl~ga0QxN7*oÆ,P @[gJ/[y։Qev)-V,qiH0m+~EexD62VRWe*/2[Mv ֦x7Ifv ² HB/>W5&)BHQߏʐ"9YK/`5ᯉBao\T24v:~2&[f,mC "Y֯3Lk&@KoN~;"RkSvcUysa-z5#XPr(1d̊vXs}AX`+N8SU5߷7[x6*]E{)t[zHǴs@qqA `YscJBD}ߤ[.ᏺGl~U 'ӌX\= {V-Q~yd,FC]0Kh?98Q/}KߧmieV&¨>I>h_ΖfצG4nn؛p+v&!%Rߑ Ph8gSS2AhUg{XqB&LBB90ZX/RT *w-콃BHQߞ7O'.ʭ$3W]^3}9Zw #")*3PF1_] >rHDzb>yKfbT~JB.'XΗ'[Gbu"|(PFÜKSDO> b񭍗9BwF}JQ=I tfW{4}^(v# 6elyNCkTKέdЕQԷ&-uam ?BsE<:8%}XY%dg,v/>Y1 Q nˍ8UqnO¯F cޯQ*(t\kXOfm/Q`MdA;wY\ּQXʛӷ~רpUfa| TT%& ),Vd%2Lqks1sGUԍpX\K}%+-O` ˮnt'wF"aoc"k!18R[{g\kZ|𫪅`XD ˽]…\53 Gۄ9Ng-_N{pBq)iauzu[kk.`1i-tOm^bg/j3_oO }^-{;i@/F{tJnW&dc=ĻWEU֒p P,fJ0U>Y6Ql.79BWFQ E{ f~4)Vey!x:o8Vf=[,cj0EKv8G oep82`wr`5.,tKE_X}Ni" ߼Iً@íB~Fmf|`(GU?5[ѷuĹj= S :E(b$i ܥR `Ũ@ʑLh%{pۙofx2Jo:>)bNm5>τG>f] Y'FOTΰh)tUxőgmaaC1%+U)I7Lu>|@ cD)ӮXHU$f7=8xؠqރ`2 d!)SV}U?8C%&E@ !p]sCfMBUJHa7$tg/d732L~nߵ-_b{,Lb& ykuEz+'8lT\g<-Ao.@ە4ѤȃAS"f'fY R-`l*wm$`q[@CbŬ>a8y0PxzeM!!ǭr[_??20Lcٸ" 8vN Q%ʍ5w35X<]05 ]"Ec'AMJ.1f^u~~YJkTiɶĭ0$T&Urwy38kc@, 4R?㚏}V I+w7 4D4f hE-g}㑪 9J{|&[AQS"v;*clIn27Pqf>6H16u3]e!EV_ =ݽUZ]()X@*K.dxPv8 ,I[v(#w:ln{p4Ls8]k zTQv6'*]ّVQT @aS<@VSrI.MO$n*y-CW{!@tZ#\fۙ\-\ HTp 6P91e BՄcsp,vjz~*0ʘ EƤ^@7tĕH{\]덆-8$ra(Ovb ]"E40BFӅ)88P&͍iև9F>mi!I3 uTc M=n1 Dla_>W7f10X솈ĥ ]"EVIEnm kgLw7fAU41O5\m<3R@">2ܢ6e||UC!-F0rd&8{)-'rJuYkx#"znC/K*@FđL]{Mq+sFNQ%E%L~|O暃^4ɗZA)ac 1g‚3\#݂Kn}وdL& ]E}I@Vsu*عZ-`NY)cNib-K)pvH6WNG|c[ԅ-= lH 6AA=`|@&s]W# .Wp]ЅB VohLƼe::;' Rߘ SQ W ט0$-wxwb;Ut%f]Rsol@)O+|ڴúU!N"EAά[ |-(ѕɝF.?۫oQ"6̝#IvnՌ2GdT E̸3rhx w:M~s?λ>2gBDQvqD+:WoY7So ՚/=rZe۩fmLǹlSD(߂^vC\嚅՚u9˪M#Cm@jXIkSAd$ͬH<|L$#9@FnnCS5¯@"_ۦ/snL}-0nwƌbpy$k.W6y=S%tK? : 4== 01Xph-0 &Kahd ` :iWZ?|WhNs3o5jD3&[oiqbF"#<z A P?IE GװM~3u«VUYkcʜr\0i@FGzS3IvRƦIVSX^SFsH)l&'ŨzFtPNgv/&l>Z&|B-ފjeds +'OGkl@W&k;C^=}Z62H@Rd%NROIJ"jURwL"НQiI0؎ZZ6|ᙍO{eD@2hZПk4|^H+"uF +/F&J7_|˓ɲ3jk)pm[/I0h#z0%-U,־|tñŽ:tnert@h"}'!1mɍpm74_μMӧ6E{ŶzfUV)dN+|ln$9hHK`CN;Vajk'ɱ"f"!/n}:&*b+PpP @ŒAQJ>G.4v5}( ƀfC5oe߫ (*  4! ~YA誾Ot@٩wf?!_ M+.)W74/`FC|-fR'AOr+wm YP!1PL̐Y%EQ_aN ˎA~k"2ë;+,ӯ[eE ` H>3#v1oKgUsWs p[*rV5Qj]ޱYn풕vq|yqmPssQU݅YYZ7'zj6my'-+GIꠄqWXR&vmwנ3$tO?+5;Ik ÷Տ]^k^$Z@X \HIrq% Yqo{0ކvjO E!SPV:Au7!:, ,ET#X&&fD]\5vHVsjg}H(!j ;x ;g=`?T&FVMc7R6{(Zjl3S >3&YkK Ъ wv}2 ]%#"/p# GyMOK c^~qx -39餾ߥLt&x@OQ#'++68 X&?I9fbwdY`-|1X貨a(cb{ClSE`4KHթOH{ubp6E}^3wNVaO/TN"PY^j ʩQUdޞδ6 ]E(<%N8G:$ *1뺶 <. zUQԷ@Ϥ  $7 u|hnsa¿Db[ <5 yAFl ìn]v` F|]E oM,޽SU gg b}FQl{B}~O_׼n77bw.Ղlfu-]w}  (`ue7$`3HXkky_ <$V#.Q:vgZG-#xG+YACH'e>HT*tUǴNU$Cү Jm~U;̑eŪ; E Rp ]%E}S Hb± IBאZh1ɉ%VcO[I"=GiSW_lT įOHwVr{aKҽ+UK[]|֊̷,PsxsO嫽kNkF0$L(D6ɶ1M]:JY)b򈏰E{q Ir|d.\^^螨Y\$rnM~z2rE!)3Erc.GrVr7P@srJrCNffK!o`Vcc)YAUzf>2 r}Xn@:^_"\pvDG/?Gz)OOR|ʸ}q&x= I!=O/f柯^O N.fX;2o֤1/ )o#@{7#0cքr ~X԰cK',d?N+46eŮq .\!ِYDۦOVvp ա&K{ipUR2W~,w:JZV8, =VN<7GGuo~]Z-x x;P 0^vƈucHr݆|6'@ 1W6QR~JݞR!Pԏ#`{^wIwiEKˇ2 e7|ˍ:;pdY8gl3QC+d[q] kŠJ  (`}c@׻]Qb Q鍀1G/,x` Jұ}f `3L{Do^,Cn׮':S,䢠&aLeCAk`DB B!*pQ'ӯ44^{ja|3\d9DLlC g_fۜKh,ff=9 H_gU0X=}ÏCỤ[u{p uq=bTshLT Ihr/[+c> #~GQa%z]$[e)3+W1[m{AC9P貨oсT^[7D;G`:$f4Iʑ C鸮夜НQԏb D9_g;|:rWłHx"[[݀}ffLC+a?m5(Y{H;6P  ^@.G `]I|C6Y(G=Fc5Z\jx.P  ɀ-Z||eZp x1 *d!ƍu®VbBVp?4Jw(ⵯG Y)X(E}1e+ #5dUq-5>EWlȵ՚X7y־tXkv:S? >t}8s~)}g֧ήZ73.%v`y'x$|MrOBE}x@=~I*9I: L8l2v(;Ycg@J71]SUo1ud]}-Pcy`>iOd7'I`MtZ>yzDցj+y^nm]%` ) .~x* "H q'[AG:Nx^5|h5,ـL! hb$FT{nQ2|\x3`"Q%RB*3Z5#y,I@ LJ5cڝH(9cNs:O^h_\0HMeF`&|5<1߳ڒ;fo&`e#z X1CaBႻp@Q_W0p'˥np9杓;6loxvA|YIMmHًŲ MiWoIUDǷ@39-j^'tԗc!ynwlzoUB@ A&S׈ d-1V'{pC5Î#dw+Qx2̵tmܸܪ9rM ]i ձ&Y cǵϗ蘨sYjP+ʃ9ue?-K2;b(E}kҰ)6-9_,}碫1l&T(Kt;sEК5zHSZ[3gLg ]k!@kjyr`3zn%sG̽v(p#r,,S`I݄nI?PT䍉:eˁrf/&ƼppD?,ni'fi Džne^i\*_:6f7 ?,HQ #844#Kxv0׃i`|_78;-Q6jꊗ!SRx=\)@'0r>H(J1KL`RpYd8>~g >ڦ/& uT.fO߄[_KQDETy'oBfVͭ#.g1;VY(SK&/S gCc ?U!`XvRp?@Pϵm$5ktSvz jTTr9V)5,lNdh*ޢ^ĐN/̴JoV:29`?q`~=VDZև0nyU'HEG ]"OoX&酃^]#oeRK@Co1Nrj75Ms#P(-;`1$d1W1`&21lώKGԖֹj6^υn<|@l.mtk2$wN@Q=Ls0e50xw+BO~|&9,gj3 |`$00 "-lHwcvg4^PY&՜w[\S+rpTqA<\ ²2$na> ]/Ýr/ UX`П/tԟ*Zắj&|u}`98ȶLHՂ:E EQB"fW[NWUJ@|Py,^s>CJp<2@Ͻ'( zGLx`4nEI _'JH9ο1C._-i$FikEQ_P 0O fדu8dPPLy!#iĕ0rq7ךښKIE+9]2fV-⢙!j퀍 -Q%,5rVyG}[-Ʉ(7)tK]nyC q5х7V^OPe@_m:WrzU1*fU\0OiFLft9 (E}Ġlg qFkRtтkD&L2'sY` ˾\йMn>U8)-zvz[0(\dښiY;tm <^-1^9qL37PxT_"Z`<nc|"pyD-8(dF0=8Cv->J[ŌQpd"2Fd2k-m۪iodLRy-a/ 6Rܾ Qf}aoݸM];H>iPzv5$˓9٬PB`@M/tKE} 偶Q/~F(#Kœ̛5y\? NnE]#)5k8'8zQb@| 0e[Y,DُBWlEB㴜ϪLN5Mun2-h@ABwHQW S1戴qanvS72:Uyjo}l~8/Z`e_Hx~8[GeytjR۸aEɇaᗔ,Ɨ~u@v `wwwwwwwwwa(*AIw.TpϻyqyRׂV/rJs_[+Z\֋ pcf2n<1?T5!&Xx8wanbzu3 huC[ouʛzP^ՊMEdhJӛ &lr}/<1}:'d3Nmo|EqF&`!jL=ߓ5HvSC3TZYu9[P9Vsp9u}\a S`0 1<1<~.)k.(Bз0\p,~?ibdz/ k̜{>БN{P- (H(-.y>ewEv ]^\㪺.Փ >@ ƿ @*`A7 -ڢ($˹ k}^:./}G*?$](4n҃}c} tx:n43 zjamvY}r{Dchg|$=z X7$BhKJ 2PQ]lv\8uI>l< >FPv5`K'YRZ\{~4uQ] _h ;,]yǜׇrr¢M% daQ~*Hm$lӶN Ll9P $,vIDAT#|v*1lكW4i<@pt ( ǖE@Nr1?})9t q`0}f– i.6m0y2m`tlx$,}@X9#@QO%B;C'G?'S@auFf(G/|QxtΑ:ʼ6x5Fz1.!A2; 2o LԣSɞ)Dk[q&j܈Pc֐lJseohP+fmk1 mւul$+ ܕ׈yf{ŐUjAkn 1Mz9M f Vj4jx^}4rZilX<`C#f;9jYQ),B8BP/9*Rxۡ2\(}H H@@ڸyò缈e|Y%a똨1H",m_븯{n):-FtҮ`vӁ5qژ S2Tf2Om tޟ Z.c:t ƿ~ }p@H@K\W[ e\}?@(Ux@]x+ZinML-WCA\- rqH\"{Gٹ-4S/+ WӺI!f7𧧁N"\*2ДF%q*׍ޟ棭1zJ܏8Ÿz}r~YV DZ v`^i'k\OޚN'~4%kך]/x48 5ҫTLF[#en YHqAX/D T8QbaVf?Xlx}Qi/3GV^<S$5٨Y_ n-d{Nt  =g;({Hf8i>}plt#w*^iQl7 .w ]dj(J/\]7͚^4+ir8m 9o@'CĊ՚hJ۵-'<5߉W Ó*t{R?du8ùiWE?.*vh?@tSxlGAt$LRY'=a> 4D Bz^13M{©\lX Pde{k0,0xp6J9StS%T! 5DS[a2aEDO$S^aـ^F[h_凰?ȃz%YݰC)@&&maF8;h:!֜>7״* eHwD|153`Wf- E v9)T͍m3no[- _ygQX4AS*\1u(e:>HM2I^=vҽ{y2^J%`A,񈘬54~'੼#b(h~p!g&lgfk0 դ ˝M쟆- ^,G 4Á;.\ӹb0?L9̻z - SuSh@H)nBf|S^%1{6xXg[S1+z@LA:Ihg5\2h|PEK_|A[ O/OK1 U.@z D #ݗN %&7<ޭ{82ۦOڂP(Qz؇= s Q_>Zg v51؁`z<`idY( BԢ> }9gdR?%yCƑ^4hǨ?"& ތ_ ʞWPɹxmmg`2/0>}Iu+Q9Zs^2kh2`E䇹z,WCIl}-S`=$N\*UԧݧZtGހTX@vj%֓+eX LNz`0ՋnӘUU yTWJx,7FfCXU/{8^w^!no>Q*a+P:wc`86v;e:vQ +̦l@_TP:D|˗5Z6ڇ3=4A+bb ssg&Wj%@l۳@~`hJN3;x ށ ]^\N5.^=BZav+9Ƙ_ZDHP9+0{tI׷xNy0(cz/ԒT?#uǔ pA2; 2 O!hO{m0V9{#49dֵxR8rT|H0t`l5L;#ʤ]?i^Ick]VbC/x`~DrLz_[`Tl8zwI'J ҚOk,Hp7kk9L Nb?yv9> Qt:#J^j$Ek$IW_Pld N ];╿ə{h:g k My~W:UIgj**|rgu8%zu\rF÷Z&T.< P1Q8@Gٚ'o`w)>e?v`0*W+aـэR_ChcڀEKp}@T@•3/chkR|\y6NU(Xh"@:#ݏ?~)P,?ɯ",`"=e:3 Te R6t2`^)92, ~ieИ*|.@5ΰْ=2%Xl[ԾrBcqr&*eX\_HE&RwItY>Nc}_O:^z><1 ?}7W;4X*0["=8x8/V.NFOj e޼,z{8Bw ޓe8\'-cEAYB䯎=<1 ?-/ wX3Ts 7J^{)bחs*pF+ ֜cmug]UB݆;r!uN/6v"KJ>GU%j܆tĐ8Tցbk,i6MYOךy Q.uQ2zK9#{]imC@/%4%ܖtDfbw~ M: @[Xd>DŽ7sd}sn"GaN Xl!쩆Pm]mb벉j/B5! x' Ze n'?5B1,42=6rWT+ Dw&{6À[RilX︿m <x Mg6bC}pe 08Mk{> 0ɜ ƌpBY׼r.!9)Tݺ bɵՐ]AL[ orOEݽm\3g܍P9;C.z21 Fp@21 gUV yɚd;3ZS32X8hދNv%丳6z ç>^v gv4GmᖙAr4f jΒ%bȭ+߸sJzs`9`}5ȅ*Pd;[ыlX< oFDTGi¤!)4G8iJ/!NiustD[ǜ]+J-DU=9ΔVj*'d,d.': Uh Zr,4:qPXZx $27>u҃'6u-) CLbF0@T~X V[a\֒YRYF]Il XqKI[Wl~=^{X݆:Ǵ΢W,aDq8%%8GG@g(n 6O -I9TZ$WJ#*|w.3P橌4}}U n3}2;ۅ^?Xw h@0)!fne'sNVCU7O9 ^l(WxbxY lj/7Ms0_)~F Ƈf&@SEOp]\DUdՆSI-|b;mĮ8 @ZC {B2u1W>gk.NO㣀ҡ;b/~)Vݗ(|z9.OV"7ن$N[Ԁ/i1^( J).V1/{|OlgK/ae0J ,ИM&W%Mv w[6|#H2VU@O`Vnۅ`ȁbeXis XգKk5 _=r,'|`iIl.wKdk,AvY|UoVk䦏qN&`0 GaJsg͚;NY418,hdT˓^z9ʡfVx<"J}V.RX%hMm,'*Ogts\u^1q~28MLۉLW_0]󽛣xG/uhJu89ه ؉3Òi鲮eʣ+)--2{R^3Ic͍78(sBeEjD㽦sOAv%$P$H5ЏչU[3ZeYӾB4Oh$IE"Lc):..֔u-X%I)|UT/C/@O?$t`pm&i{_Y`o`O G ͬM*wIqMqc0A/DKguUeTjddlu|.iEoW~EKf'f~66nﻆqW>Wf}*lġO[4bpho0a~Uh2p\xB۵dȊ =C7[&B‰p~!0=<Q|\qRu6: _6H=mT @=n=[G@ vlҶ*5mmX>?o' 8JS{52Ffx9X#a> x,ެ hMOl@d@Py>/`}j@IM.M. jb71h@P4X1O}4erma%5}L",8zL#e|/ 4hrJпګHpϩJPP o AFr W CZsbU^@(س#=6v|^ɢps/M̗ ge{ȣ8 =U+woU~B #XT,{nAUT8`mb!D6O۶O L.M+-V! 5ezXimVHJ Tԧl1 '@GտAMs\ձ3B+9BُnQJfӮF~m'ro:D/.ED&؄kqjoHn':? ^ێ:J k[)Vۭ>6g11Pٴ )$w~"ͻ~q+g`9T?rYbzYKMI3ݤ?Iwvjvq؏O1 |zsPb{̒D6 Hf$M_*b|?<ͥßԈ/PQ/NqF+{t>'dhB;GfVk$af5|7V"&H^C y$#@4  OMN\< c >B xg©<`ufNA/C{4bЭ@k}&bDsx҃OẀ^ŭT/Z5V%qʝQe3"?6 jlrԿMNII!ՁɕD.ѓ3t4QlBBw!He( 'I"SgTb(rZ ;]` Ah1D[$ ZF"xЁV@ %X: @2eBTidЧ&qI?R=jm18U{ѝg- į:jsǕk K ~`K@c_TYHOUh@mԘkKʕ?<6Yuk{U%MX< /%I]d?b&k,:Z-ZuTqBcMG;=Yy!̚3_sՊ5Kz]t!۵xv2[ws!tNjJgS QMe۰wA}xvmvCȘZ=;L͹gK1EݥbD{œ WWޱGOMT5cuۧr,N۷xxk {el-, p&A3:RyY/GŬ9SpeޅPuTesrYq [ 9V,̸ArY,B-xErA+^G= iBZIJ)B7du6}@$ ͫCtҗ~߆OvZ1\ ܌H@~zYRK6.k ӭ|E`T@k?@Xɇ6Y,.3(Ε_u6,&̿2T^F+ak uMsA5G:@hIr00ooVʛv@lqYbҎzϯ[WZjJÑic7j',/`}<1rUM=NVkHS=+)ݙ=]Fk;?ӑ#í=}m#m3)bOh˂t)B4 5Re0eA=גd]0+/a| _O?d/ 5x掞ᝀ P$Y؞xG{>B `fM W6*[\ \k`0"\m( sl^)uчM]nׇ33ak9XiHlEAk'㯞!_8c3<@n@kb)T9Sҡ?1y}W^RY绑6dy+~Gkms<&.|4㗕gIH'?w)iiΕM,"ȓ5߬w]FHrX5`o 3uv,kKg<*I{S.10E}JMQ4&@BĴјv盭jlHCuc^Nd RT#أUEnEGƟFeg_[Xݚ;'^TbCYvOY(2̛ѧ8]AAiͲ?x_ p><ҊNu޵αav2ZOr[9y<0l) kSv2&[^o"ǖgHzcSޛV,YA-[v} nxF}FuuXɑ4އ#d٩YU\+tg;r t+N-[M9hRtD4 Ӭp9t̤+S2 S dh #H#PW=9|M״5'rK*N׸½S`;~I=}X .R+ s!zPB~: Ё1ra[ r?<7*OT\!)x, /׷EpkMA2 D&d43U$Yۡd U;zt = qEHTE2>%s}ne*_ #L~|`]}q^㓽;h״qsv o O<]ڗz};pBmG .i:ƯyqajTI؂@#oDChS~SڹtXxTvkgׇ\1E)-PTp"~D c;l.Z0?4Xb C!k]w߾^ǟtPRQrTJse"E̛ɑ,w,R b)a 4FM]%JN-o_|ş-fJ m :0|=Yè``՞) !{#'~qc$Si]En^Vy7R{E쑟{ppVu G @`(&bfA%a񆰎>3QŸ+Nj]C٣}ʃYܓ|) '6>o-7lo3e0Fס_A#<"Y>&kb4:lPB&(ZF]% ƲAucX:xi/a@rk-*DQ1@\YIu ;OMxrC,ǔ %kkuk:?OOcR? r+kJ$Q/ÈpOLy?;rh~ @E?%o>C r"v\N Rɰҹl=ubaczuõi޴}'\tdcb/? tqا+Yg5;}rrą35ݏ`bmv|껑}q ǒ?$D"fXbfQg&ݕl?~hY*DN#ڏ 7}l(_hg) J6Oy18ޱno`Eۀ-w:1.h:6`Hj1pwG{dY t?0 ֕~o@\AݘǞQAßuەVlzMe)Ik".|ghX$Pa2).MӦ7Nеָ #pT@ 56һ񖶥S@- 7x #X+-D t#r.^ _*rO`m94} gA@Mt }D_@R:(P@ʆ5sOmSp~ !@?Ǡ=&nM_ubފkS`c0 ]4pČdGjE3-J>[ ϼ;݀jWv'@/>ݜhoVj&c,y;]4p% JDY ='g"gbN⼦#cּu4V8jFNb"h@"f ضm٥٠ͫk1cC:Y1V%N$ Qu% ^hpE?C7 -> OaXᝩֹMF9϶;ʍN K#5mӇܨlר56%?k]T[N&:?ª1psN`C@Z! 5`0+Z؊4pQ.0Zvf(@qk+&@t&15q,O<o;1֯4̡Po oښlA8 6/`0FvB !!(/b?tAO:N]Yf;+wk =@i~D d[VhcN\5=Zi:8`sP 2ojb Xs'b:,I}cBk'y^i͞FIP`0@cv:F-fa@MGh t\U/CdܠGu5˗q؝1uLwԻ~ ,DڠF13R'ݮ6t8-}1zN6GjKs1%""ΨIψ-^']uW>8E$/OD?LbM̰GSB2W$Vm%3[ȴaM!]o@abX]6^ DfOPSغ0@íV@V/[g#ph"@2`4H^qʋ&dRJw^Wg8ű@ ])P= alz7z:7wp+%u/p- Ѱ\`7T]kn3ԞgzM8dy G@r ~@?@P{#@ľޟIk `玞j>V3@'q*г} 蠙6[s=h@<[lFcFn(6h|j% fl P@bTSl@#2a=GՍXL\lwh7[u- v-Fނ}&qȯ%u9g3 !9ހ Z:r{+M^rח* \ȧwyˡ"/>w4_r yUI~FXms!h{62?]2-qEE@Bd@ret&pGktn\KcY @$xC2>DAF>;@cu•DWfN$g*}!D`@Nc|YvWu{c]TnWQ:"ZC !҃ȽDcjF2`0?Z2a-wfIkhy[':ѰI6D7ҬXScuB\/~@ep#+b#}.`0?6@B(V);J|k廓B=_! HeuWe,wOncAyγۗ*3Z'4bnO?Ҧ_WMciD儏 6i:F׈%m4}S/vE B>?NqiSߔ#V-_&y:5ݷ`yvf&lAqh7bo2xpYV,|ý$"NZHIMp8+wI kZ>}BN9?^Pkݳ#&@î\ Ac`5#}#o _tlo0G@6K=8rwGZNZ"_v;rF}..cJT؉ %ǫ"M?[sB>{ fy~4n35P)-\A# [t`]NbV={^5ئF=zXXK40 &R|RL ;O[\=[h 5jX"࠷yᯀ3ULU-#:luW6P'b4dj<FL `2S.,Lvf&MX5kf{>YkaYd3Q? /Zn\ g}1yFD1rxfˈI30;^6zyq3) uS8<:`(\g'wn ?2h>$xGV::p_yS0wH*pz}\H]p]0=AFmx o %e#B,맏?t(^>,3('I GA" " t69n5y=% -B,<='PY@\ 9XBV}-i2)x u"zM`0 6YMrKHݳT8:tp}`S~8yn.N!8Ii#g١߫N^~;|>[UT/斖53F8YCnxHGPg:u:Xaʛ±]=<Hc^U~cºطřFT,L+^X:,?Щ8@*=^yXKmh={cbsqҵ;>;`ܤAuf=X1yky$ǜ R*m.rFqzR.Ut}.eMXnI'f~l,(="~S#":. ޛ@B/geH@=wdžlL{Pn/*-SN0ovv?JyPw% sG5R莹%]QI+y??_.^=t0ʯ=B zMVm 9 Oq `no^W]:Pu\:MX/T}= d}k3o/Ս%}_VBv1~l [۰0(h{/<9[;Tr/@ojp+}XN08@½o8x>]pҷMM`e9usRB,|[KnKÃ*{*(:San% ٩`a -waCFЖ~C(s1 ?@#!W x%}iE>g-|$L5V ԥ yq0Nn2 ߄%E%#rǨ~;5Nc۔PM۪X3c[G#A8:΢W/ؓ5,SZV0 !%fWuj#y u;W|uQ˓G6ɋԨeȋK*U7T%:Qf!-b.YJfW.zs_r>`z w#5ZmPݞSMZڙ:bGp{Бl^k:O;YWaGstW'z&?$@̩|tŻag8cg59 y_kXۋ;ش:-`0aݦ_U Gh 箴৫FZ׵V& bDU y XQX&0q_0@?o_x -3Z 0Z-lNp]O[hf{Z LAC^H ٛ0KwUir=@x(~ l(&COIcbmiWΜ>+?z~iW80n 2 =_:L%s+X`u&^x;KHDSR->`g6 UzDx8(UQB8MZ6Q{wY ib?.qH`0H\8 Sh36v~M^H^@ "R:j:gJ[GʸUۿ|RMFqg\|OJg3(\nާ65/>5Gvk Bne4=bW-NmmIu'?Cw7?v|Q@ݧCu F!u$pOȡ:_y'pKde9G$V]sɃ$d0n`Fp.\7^8~eOl<-7ip2Pc  ԝT˞h-"y:h6@_:o46tvx14<^K2FixO9#t=0S(&v _'-p#-X}RaD @VSEt<8GP~(`x &Q`;<j>(UR_O ̊Pƃ\E"Pq<|g r_?3O#1`!`t ]Lۺtd@nRRJCc}|5+rM)1FiYpm-ق2!p`s72z+Ob<:+RNzӞ] ۲Pft~/piƯ\dՕMЉ'9J_h %T%M $8pz,`Frf&h3ܺD k|bBsE"ы@b ̱$`0  DkX!8D&`5:k@@i`0*VlЖZY]Wm9Pf=m\֑¯ dR QQ1m}m*=,uFތeE!.sW{ߝ`]nj-PѸVB,'Y7&(F8 7䑅H 4ϱi 'i㲎V_Q-'Л蘨lm^JBT}:$D6&hp[F}gu^;/+ְ7/oͶ7EڛO'Uu)U7ڢYN~=יl75Տ(![]O/7<} 179V.Qϯ(4&#@~,̈Gq/KT>6lרl5(o?;ۀSmr$ѩ ,W{ 0wI'~(Kc#N*"x[| ]8 :7=)q`L_wC<U7 0Z7ŋߌm[~e5ЩZ/JkVqrWT/\ `Br`/piFs+uC~vfa#!PpˆëenŅu/?4+=NlUSB}zXRȱ/d `3KKfv<gZ cNPo>2s+̧PY}JM)P5`Zv$# AU*@pR$RQvQRhSri~$#e_A5='vRT=2C[Pu!@GXMO#P~55(xү|>hNVhj#"Gh_9SJEPjځJh/j#i[:'Q (5n|Pw$,R(}K}JMv.X@_mBx$BE&IT*eHTimZQНnHwud#jݬ?9}8GESv|nt=G)ʫբކw:)LR))]jNM@7:fa3}OY^Zc!? R#ЩݕjFGW:&1" 0 !8%~RYyrBUdp4W&-=^%Љ v7t1cFҬ +\$֘O"Zc*PGdkdi M;~6,UYig]ú)쎭8s1]MSi}X4y:{T﹒̫3@i\gʼI]t_%s/o5K2+b.bUz91^^ ,u]:>g#֠ɎY^y?K,7?h˟|mݎN*"4\,-/J_|';2U+|Uxhhur"pi&yC`qSvkHkEV0,^%O`hQ5엟g/:]\\ؑ $(2IwJ$@Eo=Aqx 6śm./.{%v'4yJLgC.wV.Q_t9lEI>f`S]d;-ՕzNsJqSt+*+T417Š 00,OU$$m}C>Dgh3'LB^-rƳ%|Vr }ΥKe3A%SJn+.uRC6\]jԅ|O,UvNezi_ MkhtYդ/sM;;^tEtbwdҮ=ҷ*ҭe JEc ^QuN"w=9X{<3a 奱ʆϨKIU)(G*RJt%Æt%0quKSSV`wߚAvj.Zštc=<{HuCv-NIy&3ϼ j?pj^㣝uy[=csp;U>TWYqnjXF\6.iu˛!(H(tu:g3k<}SP֋,{z1 DB Ǩeqq޲g>K9rϛ}RJahfIB k9m-{x.cnvhfZbM{ W:,^ͮԓQwK:h~4-{kzjgWy/m7qh2ݞBOIkZxd݌]zǞ',Ln&tԌ<#C7kbK 6c7[5[pϲC nޏDu jm>[jYIG][zjp4;;PdSbZ:O#W TW,uTg9Wڗ)7N~7Uo /5dXW^CN+wg"kzStlw$[bӢ?tKX4\pUSW*&=/{O)m碖89z*ӨvY5Įu{O4u 1z^`i#ֱ~<%~u"gY}Myge{@F|vCaS3}Z^SIY(w47e@7`P]y[U׀ˁo(1p]>~|q!6pÇ@%n~{Tds@uS~(m ,9+Љp\pF~m{P D|M_U/>W5} 0t@FsI"~^Fu? {fN:a Y/|K'cΥ)nE_jP9'skѰrsAk(~k¾Rbƭ9D jX2BJW'*e+8tfqQ(;vuy8XFMO:lQggxf%㩛#z)a%8Zz7?,GSnUG0[ƺtMuYp]N\g"'qW5԰wɎ55lHԼӧfx4ulPԛ^t~e+ȼ}?bэ>iu+&,4y[C[agcUd~wgx6B'&OӺqA3>-/=SA.͍ 떯FĽ[z\u:'ޡoMǫ>tBkmfS-}' $l[>:H4z& ~|{v|x˦u k)>~ru 㟀F6ucl-yV 坮o\Q [>pk%m=ڶcc_d`g"X^ئ)k|.3>L+-yİwd#v/(r|褺Ζ5;:~MXtB}DʛU ew7Yo!5gr.*II?H:urwq(T`Ϳx==q9e]Ga[a̰8Gf¼|0|Pe02(51/x[ʙ_{YhEh|S`n@X/YVT_;E2(u#CSӀ$.UwQd9\p_.ҍF{~P{R;{m _z5vm~ۤK:`^p:D~o.)>-4E1TL~h|A. u0nCUb@}op>}Cm"zlwϐ>ts@qGHE*v̹l5}vc=&j)ˈV;9Ndͣ[,z|qGE{ʳR*]^O)1oАoŴrߺF좬j`!؆e~z%`_8y|L݊WN~iQXG@f,ek-brs=^׌u@$a!t*v-1)0^`ww烈y Q~W2[jYAx(8/]; \W{}jբZ!ǀ%%>]0E= eSuOQyfmڮoZ_[G ewO"z9tn~_R(f|skn0̩+ouqq8|aUx:!qMfcTʟVI}e,vźd̀w/=ޞy2YPEKW.]"H)E:eu]XE̶kk:r t(.Gl֨ZeO3k?nI%ʖG:G̏,*/Ubh$ U:+)8$ۏ[švm޸a6f.y:~GLB]^ωUxLD1zBwA fZuLՒgt‡3߽X*PRV0!x`aE#Av[a<޳UvUg&]El;ҎD ߼"zT=A@?)SJY7Uz@yT䲨nמʘQ&{@s*SBMȉ *ꐩj?WyK [Jgob=a!Tcש#s{嘌XI8gyQTQy}t߯lAiPÎ|N&" ޯv{k-c;Hn'؋9P%L5BpC[n\wvE7n>ϜApdZVPkACAM_5rɦ7ySKC_>MLw W ns ;fb9SNT3G)\2;eoo.ZxS}B暄I.1Btko v ;klu˒cevj̬'++9 ٫#drSi`gem$ O?))""j5gCNlfMNEJX)ڌs5Tl]lf~)_5!vPG4(P;V, i u:z ˇ\wXIe=E^lt%=洵tngfa=* CL Zjah!8퓮K|*h3y4p>jl-W,DO@ &ZnKGRWNК`l g6`3}SccU]1CXHG23~1f|U-B^5 9B.Qe$ܕEWֿNdo@N&]Uf8`nf?tA*S>'op'с\Z?k6z˿ 89Ups9sekh^rlj)6~uR;~ܮa5[TźsjtgNퟦ+o4-XsmiDXf`(CiP8Ev2uUSTl%lZ ,C϶[^c,p_CM9}MAzd9[Ty*ٯH@o=Wq^u_ x 6oK-rt^Y$`߯ [X$*MR XhukEDqx{Нpr\LMDe@Unz&Lr^imhк]e)sHY| G?zSb:pL5UO|r=êȡ~]ujBBd!U#p *x/D~o5KK%kpy]9 wָdlF&3XX 7 d:_ߑf#q1>.Z8:lb^q&}+gz(ai /* (D#:ymA!75rd%*琌P񿹟(> {3{7ů$b镽j"#.Jءw*b|w(ad%O~eںͻ=Vu}5!ba8k t.js${,:)qLĜ b]HWЛ *T΄ܡ䐠l;[.tȶc%z`ΧGD3 oSjf,RzZ/9Wgr66ʨCy`d9]t0e~[-;RÎ1YNvǿb-# ]hBnЇm'+- 0΂LJn6; 1 /P"|}b1t{; Zhn3H+SXʑ,@@ZZ*ҔO9cI<Ƌ/h(@~ps~bonfN޷PO-Yy>Z$P,,8ԶцUo"sBKx)m~7z*uHXFU@ p@ac^[Ek/Xj$P /aЂb |ܞ6<@"(O3 BELZ ngE.w3 $^ vy]!=7&& fbE9ʗJt}}MIKwN4R8N_%8{ߖ{IFIwVyed=7ʲpKUDW Q:Z65cM^>6hw>շoy B7uh{^eAʥ,↑8jõ:-}~jYx8aGkPԫB 3B8L~c"Heu_½{qr{6osEt$?2 Fղm9ѴA MuDs܍FQQM_Ϥ: xRs\Q5D^YH9h AsJ|>G}VImWPs^>ܺpR2Ґ㯮wQlj-۔X>7ϮHGq^ 8V'Uz:b--=񎩷a'OYRGo~QW-zPɚֳj2 lj9}osۄL I`Plק{مB4NM3^Ȼ%K _8( }siR5E玞PB4rm~[ڟf HFɾȝ\GM7*8fgw%^a^U]N~|~ 0p+;W빿!mP^V% YP +?;ѸPo/;Ur*Հ61OV)>a?[HALkgM"#ԏ9tx\W]٦eb+Ziwqژd3SXk%G\Om;V^Qy*-{:קicA$˚"BUu:S$gl/LBgD+S;'>A!-P)mعg˽(]6*@+V#5. qJ|*?:i_6i8욡HRГuId\k u.E~B8u/*I):%[$P@^z;Xq:ً%/ 7˭'TP%jF,#Egk?|*Ҋd4[bUg$vVFF`+ѾYuZqONT:>jڳ >*s4Ű:~n;; oV,")'"B K @4}UR(;$8ϳ}.GQO&]+v<_e# BX[C^}5+h)Z9xyz$pAcZZG6Nr- mp4K ~ o4˲sd7(g/^ ȡZH Hs&\f D) nЇ0C؆stp10 K$@ ϐ,iɍlM'?yϯ Ȼق%kZ!e86oNy rKTL9!~lqG-FSA5o/m}"nR¸r5]cbuګ$TB>]ߠ7cny<^:4WrO->xf_GIpxwmfUĦa3$qm4Ӱ1$Nxb"ܤnSG5KErح*K%zCבYE(u¸䢋7'?:xDx?# N-&mjAj6`7CjaYA٧p󜟸؞Ӻ}%ҐϷ~y]9o/>*@?^bHzaeW=$--4GkM`zVv ]K5`A0:]`ޟuyu9xXJZsEeBin{FqZnG~z\%FG5264cOQdn3Ӎn??'@(bX=iG}Jf4(2*{* *")_}kk-\yI Qr5"aYUZ/T>YIDATӃ\fthPѩ+$XRPzuMbp`̅ YE9C aJ4KȹW;T@k=3> ceykGb]J)0)L>y pM9(ӆQ8-u &ZlqJtX᮸B )ο;ѹQc_3 %I\m]s13꽶-F=޵fM{fs(oӽ<~O-Xx,DF2[U\3D6EMޱlEmdǫo2F-~o=(ufca"_ azgO-*Y'QztN )+Fdv݌uLl[80@ͬR5Ir) 伈vB"r6F&+tʾTr0XEQ_:\zRa "U'ȫ_vN.0˵gM Bܰ^h%qiת%/ #{sLI)> ‰! ~u2ӭ W~9ȃLWa?ybtZG>R$w-PR4Vދ⯲K,͑Vbjm|0=RBFBgUAC_GZ7 ry{O9#4X“B{m$zw :}Vdɳ-EEIB_&jTos6jm1kV\!GvfR_nV*vI2soSKӢMm뎰Ec0c'OI .ᷨJ76OF N&PxKpɦPy6.P0|$ʛҼ ,s/U[k|H+>qmڒ+XXkFֆնYpv\]hiJ\?Z es^̽y2vb}O%hf=fv ϔgvF0l"4 =װ .roi%һ؀L3,"jYmӣVH @?txgxg6=^8eNQFR~p3h3: ߥ8Y[J]mE8D&9LI 9[JiZ}woykWʑS#Mqg.3/>rͺunqX ݗ{|U`r/əiqROsMO hMd \Z$NcE_{$1h?7V4xPIULʩו(I2D7BO3LpewֆHZqrϥsFgb.ߒYɮ3r]i_XqSNkuy62Iaf}&G;y1/?Ä sR˸_~ !<Ŷm~w켇K9P̓ne5Pa i$1cs!^aɤhAS#L!lFkD5 Fnf-:e*-Ma\tA(m~I2l6Lw(K+}l1RBi(Ԃ)i$C&&M[Wvl/BABQ:ʹv 6g̬{J_tDk Yx;D#D3[o{:+bn>͸Lq&M;6'8.xIɥ=ѩ~*#Gxʛt8l@[ܢrŅ^ ~i;2'ʃF:6*3uҩvS׻ ɹ$*Q2?YD>}cN6j.S$KJ̔m~KVs>&HSK)Alm $BlC qcrTB>+i<9_V ^,=uGSfũF km-pkT3f#$nB ߅s= sI|16?a#hQ5c2hSCz}1aR_XϺ<}Y554Mosnyt6`*6fF1ujӸ} 2j6R=֑Hiܮ›! 9:hL3y-\!8V-կŸĻ\lA/l! dhuʚ/9X`8o͎@5OKꆕD4#l~_=VRuJ-Y& wg>Züaz}o\8)~ M2j5C2rZٵ\8 ڣ)\?' Ւ<"WBdJ2wƄxuQ:[FQq/I^=z:$bl5q2aҿ`Q`Vzk_{N6:J 2dJаQSg/ݑs4osS.Nb'V*hK7no)y7x}ZK=?w ".+TT<3t˕/E@,Dd9@ w!U?HV4 Z4K.oM~=w#mINLuz;"y)Rq%/sGL G3K$#@X"3Q+736Ԕz*C)1 h ;.nB })Z\֨BpJ;+~a_J},kMT<4K88? l{~tץǺ3Eɜ0)T8cz${s.Rv*NX#x՟S`,,6jKeu*V- 0Ut OPJ]aFT P"p 2Xe(Ў_wSeh=1xDZhN\jܫmZ04Q@0e¡Č0d~p[&-} l5Dè-~y< "Qx .tah]rG{E[:M/F:w>k1zpc@AZl'(+βš[#jZ Yw*%]`+ ZgHN0Hn_d<;`P_R駤 m!bע=.>hښ;Qo>moz5+:${ Ĥ;iNyB^([1w1݋cՑi)A>=q-hOhFESi~O?TM ]2h|L+ ֛}ahpDD^'ퟏL5* jjpvklg[Lk\US1N#m~lQ>Z9-YeyH.Z5f hl4'fb&$bgZWnJ:d&a &'$0/]һAmC%ІB"|dFỵG%| lS~OEDW)[-&]z:{2 }:~uW=.ErJ.Hd[ {{4P}4k^e=G06oO|ut>E_n{g`z~=ySxo"B6;dkI.cazz>kJ;VƔ?Ayc?C_<&Eؤ~Q)_jI7ҫ4ڴ'%;~fͽ p&{?ܒ^|# 7A8HNG{s:oۖ4 (׌bGڳXck9c:W|JkI붠nC Վ֊ۖ EJ"^]<‹$"v8R,7kȸ> 69e3_ސUN2⅛ٖZ6JTO)[-/M;uh]՜y.md 1ͣwAt) fr %F0~;n4\JKas{|,l}Ԡwvn[b+¥\ *{grisyP2FBxVT $x]bT?ґ8^s›>LWHufOo_>țY?bǰ|" : A,ȏ{Fs"=J?N? GZorA[Sk 7HKHRro.T 6psp] N3ۦ7('k/zbDuR$S{@,S sʥ *+=U){E'Q߱wv$l_nK&ؔZ4'>rQ@fx4(Qy4x4#`W 8[ [-fil?XzTE_r)[GϦ:C0 O ˖zZ‘>WP*Kui])ZK*4D>@*Ξ2=WS¶:,Köcg1OHޚe %M<=[(dEDQ2Os8>t7B!I*eG%'.)N%tPAOHou]5ߊD :p*/1m0wʼJt;uxIqo Zҡt5F@P3d@wV& :dwR*Ѳ< p ӎ!uFĐ?\=?i[{bHa`ĻC/w<9fՒSc-?pl\umI6Eۇv;Ёr2ۜ;vD+:cmhs)\P }|SK=66Z(c,ɈY$40E}[8ml79H1J&R;37嬖z,B;HHQPW@=SSqօ6'-ƚ H_H@2Pk_{DBIӥx6aGզup,{l;VǏ3Y]$Xhv*~64o1l,  %488)$ebDLM5noJā 8Na';(=0tbkqul~7;h\Ռ'[%;i\C4PkB9( w:f&Buhm ʟ#^78BP>cw\oY;7m;YGƸL%[66;Se M`%L7ƀoHs0N`.eޟ! OΛmaZ~%"aeYOP4֯_; NhLh/X?Xqk9ߕ$ӫ O&,>(yYnfۿ q B̬+nK䶴q>׏;_; f>Ί U^l>aB]9CWqkFjuMߛԼmU[@1OIaPjg?eX5\%+큂[勉lf?+޻fdIU7iIՅg ݖ5>[aR=qyGB50Y7 ԥ `ե&5U'E5d҃8iCP٥ЩP^@h :y/_^i|<$'>h&~+/^,IS*lWl@:;H:81'LbޣjX>.Qy':5fhv0鿤D8 9YS$3\<`(_,n(]v<ږ.᏷iBjNCRlإ6ڜ PN#&D`&\DJQCˡj)LG&$A}֒qO&yf>"Q1kB^"RQS:wYosJ-hҪ +eTpiǺD݈ñ i -P4MZlc UZJ7Q539 O 59OȾWX0r{0FF >A=t\jf֒C 8t p@o4㏷ȔwW.p'rx᩶:ӁN@ju3_H][?O@ȣ_~}0`-%Rp=}D3Q7.Ro b~-isq[,I !3-͊2,O[ToO0{pJ!setkNF9jףǩ珊l_&X˝9l)BѦZD:"uawHN4E(`[3l,h?.PWU ܣĪjrDSG&=\+YQmcmuVnxx6ۚb#~)*o*VJ=|6icK-9W5Rh(C6}$7~|+c؎_x{b-m`+-J*N5Cn~s_-?f[j\;"p/iTܠUm{/KeUߐ^%S"ĸ&tu ۱Rev)o(ةuM+~< ChER ~(D|:%11yMz;[XvEVo`"$R>H, @e-5l2E9K~oq>cx*rՠ@MQ2(x.-|Zw![j6]4,iB?/#<}kX@xEAC_Ho7 `uIR汩Z+@+ґryT|Q1$P!t^@!R W1p=/E\C"jc"lQ@ JՓ{8GC39yf>A/T1& 2MgV TP 0JҮ\:8iaꛒ4 x2}E QV*٠`5Vu* 0XNv0pC)d q9u ӥ.7:(yLjB/sfeF@ZB9j7p.h S3r5HVOL}Sw{M^84N p>%+ā$kiPYB=&#ס0R+4K HUIbVvCOGX(ձ$ZFyÍp 0`#$|)g͏ .!|b E.MEZ]5- jYioS R: h4G djKU}yḾ2^'e2,*Zz8 seU6RΣ! ‹r9$)dh@].6*Eku4k)yLCbEQX?g^ Z/o4s!LnRy'Zh |L՟TQ^`#6a}!&u.L(NZ\M. 0D\GHFPk64yHH0zF`u2[!q.Z[rBǥ5,+% v"C'~TJQPQű/SU `b>t \up()Ơ+n[=(BUϟ45z᠅=5^kp_mΕ֩JoC >ֆe[?z к\BCm \Gxe|e;fpfxK+LHWPzص'ҕ*Ɗ% =WHM˷bӯu= ~.Q94br@1˒-VmٱH-۔PD,X*_膾tױ^(_Oo)OvQ>79Xd| &vJ>螼"}(VbFz>L|sGӷPTm<,Xm* ED o{Vu?^7Fg֯N?]ܢ*}J-"}Vs*dRwlf3ښmUH#@ج쫀 >., , *2oB3d+2 3I?I[@ _n"k`)$끤q]?-ďGv|v#AqG*ؙ{s/(NB<_o)r xg5ʦQ/9 } MZi*aif 5,ZPЇ. KjA@*[,Ou|%Kx$`?ݵM3XWWL&d2zai$VfM9!L{yX.RжSK=Nt,/7K*'SC;NI"AdFOu7$ 2n'er5-$ @94/VLPKXT%!M)xa 8;Icj{k#H Bb8EЇ6<*>? R5 u˽,"?Ƞp>hڕM@zd9O,orWO8)@;47o #$ BLs?1a#pfq6oԹ{[5m(~Y5Ʃ~̹_hb@*ҔNl2J@_`1FܱN[M|\,Y!^p1%čnx7O{t ~ا-i݄zyB xWQ)M87{alJ~/g"y1R؋)TK+~y{KtK$YY&P&n ' Ghr~B"&GOkDc؉V*E"cBW;L<%h]5SWP%Rx!HXx!OG'(8LuI4]g{;C.4ݲ_qțUQP$*GOoEuUIirA::> a住.[|W̱/xylɅnݎ6O\'wh(@3yAڠ :!:ԭ/SoQ1+TlIpvhjd-n{r/zwǯW[EܮPavhcim:l/:.IJW,PCd|fh ML%:6Ü3#mHfW?f͍6Xqk|VV\X2jyGg&'V  *WDM QJ w*EȊ[{9؋rc 1orU$뀮 l+0XV?(*JҢ@Ĝ >ۦ^,$ `YfKx@FU;?; k4gp8wLWS zER"8lqRt r?<_F,AkCtQNNd[/rA.pȱ3Ѡ䑳%dEGv9qG8eqnY" (R`z_dd=w}pg]st1m31oUZ0](fs<1}`ߢodML8{ī dr].9_15-x!h#חɽK&xqa 2,z'Pq5T \yI`E1G:hhѦ);]PO7߾k!~HŲѲ9 sZe^N'_/hU\]F,C*ۙl;fX9 0^a8?qQv%>HBڱ.:AЛ4vyG*C/;?`[4ݏY'ʮN6À?N-4e5Uf+}MՂƽo1bgCd_}%)ɯVܚNfFg+φfj^q;9NyM#+ÿ'vkrJ%VL#sUF {dn@ʪBN?I"IJ:ƨ5GPmXE/}:m*ma>Z /քEudC$r*TbrL(2&sT%뉶0-en2#b#xX=WѨb>@"J(n"%U&ؑ1 .s#qҪ 9y(M?`P"P#u_BdKY46g Et]t }Hu9 آ#ic@LTVmCy$>.:VyϠ1(n633iC&p^Bx$^1ΠBXAꐥfE& TFp\UC-u톜d>">>V~%^-y33cZb|ʙWD#od7ealD݋D@gz﷕C ~0aX*&|5>h?11 ՞3iEκNq͝,մNՀ rTNKeͷ /JTpl(A ,{ը@ qO :_.(7W\dk^emR-SIGҕԁ>!R"%kn@ JQeCz3,yy;<` Ź׏y!oUЬ8ͦpyyC E!92܁@*Be9nz3u;n>?#=A_ `_|3ebeUw4hS.Y8)dv p÷Źi%׌/;w#άi (3PF[=3S5obbe>Hzn~= 7PCB㨂<3m|U]J`!bdVL^NO޼л_K߰2 =vE6UZ ZU)<fmJ6l<4=P3O&@yԄT@A_2hG mRPBYb$`Ij}x}8o1fR!_!C3{NG0ƊtcB6` l Rus3Q9L$ x@d#REDiM0@hr{rOTTeбIEE/8mM!;<_oF`IajQC6>lX;(\S4ߎ7g<;-uCWC)[K}V?>YhXZX]5m{FRd#wڏA 쩾+a`EB^A5==Yvphphm/8u}3c@1#zWĸzq߾1K¾B[ /J\Pfҭ<@q##q  IXk 󼗦9Kn]~;jƉsR슷P 61ncrGwZm5k3U]*~[چ:8_8pumh_z;ov~,׻+Y &)* ~d6dw/؃PH)Q:HJq'EDjfًv"%(nV͛ě9[=Z]Ϻwc=O!HwqV"p_j\ʴ{2}tDjPߔB$uhp;03?%]LmտpܴQ*BO:~a_jP륳`nJX(T+Z]r.i}ʪv򊽧c^ɂُe{\qki2ك ]CȺ5仕[>0u+j|ghޗیl.рž}"ck\#p= `1o5-]) l Fv,E` 3`(mʆ_n!ʅ&Nvw!}e?Kʼ$nJ5C?н@_f [0gL7,f+ϺV ӯkR Վ= " ĒW$Oيt8M \4M6imeh/HGd4iEY\Vݨ;Ne3tbʴ-%Axf{$S`oO\j4mYӦUGrC4t*&4#3I?F ]9d1f~nPD"O*srxy4 53$pwWxES4JM>D#'ںW sw^Wq0f:WN:݄+y79OP@g譴%̠.jMܠz_W$_Y\^P2g2riꯜZL?"Z pF|oM{4QVyX!n8^;s֒ E6֏T\bĒ=ƆR38Z6,L0 FЃJj~>`l2Sr]e'"yځgR.D p!]>^*)bLCƫjկ |7 [X{Ͳ%*ԟ`Cٌ=!H$=yJUGGC' 0ڗw^<][-<*%Xc&v\ HCПSlo+Pe5Jy͞b~v_'Y&N]g}ppVe}uH7,Ww5>u5atS?*=|;p:|GU$(tlv&?њz]j}w$9)rgU /};>`cDz{zo_ m\ S6kjPNSSڟRG K~0;?GG:+;Gmk ]Ų QvPv]dHw>$[S^I\TM{DN-0)2=۩)^t$}X4|̎TF& qcx$ƾuzg,mq'5Gr&9+N))\t}X^Ia_vOK=V(J(n_|.dy_}&d#e^gV{ּ^ȻR*~0Tc+hrp=!wTrL,xDyS&Dȴ5%Y+hl0fɳgNȂ@V@!B!Q[q"G9U- Np4[eȍP]W͈7Yk?@pVnhv6t"asԐUa2OU` P%cAJԒAv:OH&ך9I}&cmօ|˂625j|8Gdֵ-V>\J 1gp1bU^DoW d؈#$ XLC *[E!8d GH r['jJ?QLmqqn[D ̄jId\uEfoCjw8_sJI[*C>mAĺ)-(ٷ,nGJS,f$Qx(LOJe?N⃄(i9ſ]uЙXFb" ~ jO ß>e)KQ08g$*}5|1#O1e[v-;+!7THR$߰(ľH.O af~mD@9jO~W] B6vcMyβ f2%q|sѱMr.dFТuI*Ue!ק7ʪgcA>{ی`yՊh=,,BT模#x/#{f$4ϐE\npNۿ>+[]Z޶‰;>_w4 UZ+!0a*N*!XCyt02i#oeC V@WK#5!Qf)sROORmhgo i7 p6П:9BWd*p_ طwg>[o?]s{'`ՓEn]sNf4 V{`"RzV'<{"f+H(1;>kƀ',/1ᓁsEKD]!n/Nn mb %7ڔ"(Vki` ~hpU罬U>ג7 te{XBZ~?>I]0g|o0^8+dP@m`I=gY+3ko_mÙ`ii@݁^/'`,H{"]wMϊ* ZnQu?[#E.KUx4Rl+Ul\WA(9FnIcjt25/%DARH:ㅓ8Oֳq֒A0\:%%,Rlt<DJH)oFt.XڴL4##,:kN6i&AfΊ} 2Ծ[)dP2H7͊55z9Dʯ dH#g›G{Ѣh(NGእ5Vw\|jXRUWSXkuE0/; RC686$A7-SL4`&'SKɠsr{d ,*XPSiAWdQ~cQyG40!{Css.d+MGaaR‡mh7}[xL}4CCsq"mU\y֌i%vh| Yݸ.:&#T*֘1%TB2ůtQ`58x :Gŗkܾi+UQINr]i# TJp 7YyvXm]p]h^~!sD &<5F[3N)CpKr4g|^≢ %BZ*X WTEM*ힶo2>H^gҝ5/u}b;Q`5<;h6\S+Q} @(~".bG3җHTL陞0_Y txZii>7|\g>0|^%lFSlIUJ\^{fPy*/>KjVϔ ѿ5!{fUش]5>c:0#ѿj|`IydpV=[pWȢK?<gw 'Quܷ1XӛC+VG5w y`fppSpoox34t!,ϟڲ;ً,pzԇ@n1;)0yeOXhieZ@; >eW{;d5kh\]s]S:5_#+'AG-تkz ŭ @F&˥R䍒,F+Tg2᏿e!֍2alS˺< },Xce̐& G7_7@S_0@fAtF$ffDŀLUɖzZ5~ `t}K-߾@M Ÿ T9Oy>\g+i1!;K0} R/m푞pc-I>H!N> MRM:-hܐԆt blD`BlWi$/pwWflKv+qmQ^xpV:=``q[͠o;β~ו^4d@ 1$PҵtB ܑ֛fdڲ@c82Ǧn7o}ҊJٚQe XĤiKMkLt(@1dP*x Gzj(Cq/b.l@|BF"%|,xřbHwha2=nn(PJU8ΜDvڼ7ċ1Et](K@Qz +!8ǹy _IM5쩟=I&|9\;7s𻧉E2P7E6R G"RP\:02 1?&*dzY%PZ-ٹ$g"1H3mqbicmxPL}:Ի$Lt!)HʏJP?2=ue~)Mkӯem+ eN7q*Ӻ[Twj^k/}gD&!'28J2hpn- 5ZPZ/ZHVMQSt yG|u)H;J91o1R=H\:6?4pV~:/sivKd1ceidz:Ysm 5T9<1oIۗj\\ y60C@uuH9j\NnN06UkPNcEI{W>Y}eNŭ[rh@`[7W)ӗܖP ]0A\xt H)qm ļͷzmXï5 sP)E}?&}H*ͅrA&+5yG/-LL h]䛀]^AOg=~hQA3鄡oW$kvs҃V[[,{-Z,D3jyf>dӛ_(&nX9p) |,ͼ2Ůʆ :KզIҘhls{݃1mٷ=JAAi[xD1G@1V 6]-uՙ}YMESL0DBL/'>'OCFx4;G7>t /np<ͩ|Z+LMldJQO0D*`y aHsCl^Ikip6m`439I@ǔhv4La QYYհ{Nh{\#8xyI9ft0ps n2f7a.Ve Ct G(,z#,DE:g "gm^k2,:xb; &KpBn6}XlXig3;,XPX9$~抲)Ըrv!yYr3X-6{LHFm8@ȄsٌKvVC75Uu1ϝα }q9[L-}bO>Pl0r(@1= &඙ [:#7ƒd#ع6`0|Rȳ Z \"s!BCS896"C8rWnf|Ayv4R3p K&*rn5|p~;:)WDOpGVMG7˓n7cm(cLb=n>0t G檭CZ0{&2*E64oͿ: I`~'u1K6oi_ٿkH{tW?&\J:>WDnNJ$eU؆+} hhtU/5T&~Bw/QMuRC O,=mI/n6.@@˱fZ* &=sl[z+ą0eO0wlhPv(> 0K-Ч }{  =`ghuJlcbEXUnߤ;j|%wmߨe~zk$rs) yPxW7/OB,p׸{?%ӯ}:P^iw\Z\ Lذ.0Zl"U+E%l^8a!($=uT~WFs"g a-`x); X:5:Ԭ;j@nQ\e|z)hg?;E@Gj''H4rv$&0̥N[>MLa 8<p-::8;$  jbw~txW][aiEJq-#|Gg.Ǝ&@s!r$- ̮wWnB@mFAPD%*گӯ/NR%`N#40CtaӫϛonTUZ_Fhxt_p0tA@2Y32|(w*f;n֙G깥R˥|07Xi=e'f--T?.KVPXy ^NH;۪Y5iO:;8 0 O7'qg2E{ Yȁ:BEG.8`XK+^1ƵF}hkc\FwCC;jȢE6FYr$<<2uĂcmNoN Q UlIa{{7Orޭ[\Z!$3> \,/yȃ1 ?2 :Iaf 3+* @! !J('s|b$={br; YZ_Qx*A⥢mS4?d?.s8Ȓ5Lk;G>SH7F|dj:iaz!h=mo 2Kv?Yi:pF]2Hk0J3Yfr֠F8^=l4yG}‚rBELHuʈ?.U+L.PS5s`A]wmfafJKS I=~{zJص? /,wT7c]{HUY&VPbJ8suR,æG&8N"풼<=D(/^G:{|` +9jZfU;ՌFIuN}𤇕 HAJ>$BɞfcAn7$`jJ.C6jPf@3Ƴ^U=`vY_p4 da4riզ.Uq{X]fo^ןZ$zl$=8 h^teP9P(̇T!%kq UeJ{J;l˼ixnk.JIeXW|C7=?ĢNT=v>Y{hQf?3tc7jdҘLuCjPAwxkF߫=kv}57}U&Sͺ[4V쬡JFd#|. x`S+Y9 q2 ѽP דYT޲0ǷEAuV#`. ~QGksAQ1] %&@Ԑ@zL `7~n8jJ ͌" vTKfdw#큭Ā6`7@`.DmH(e@qnZ|{Upw& -2(-[ Jw+n8FG/} }};.s7*ӹׁ6@XH| K*.`GYQJ_WXا[= `PhpL?й.l;HVt HNKKwaWg~a卥y[T6>z;| p !#Z? k g^ j] 4`0+ۿ?!;/`)zfw??4XJMgR*Yx[bアOf$=vfЃom#z+q>\aS A?=Pzh8-s"4Z9Q9RcctOeiUaj7T '?~/POOw2I y0s o<8[{ A6Mø.ןۇ.WA.yUgfkW{9VyKn` 9xxuݴUu HdIkӸO:nw/lƨz Lp sD}D=7\B(ixdFsC-_<]wҟ-]jn:v6a~Ytg=(9!ɑQ efTQWIG~.좮vJVewD4nf3!gr-5OpcLIA긌(6 |[)jPBV.n8!W!|Al%8[4QIz$mLdticv`zXګxU5D6\w]FAݴ p597'e]emdQ's_he3QR.fN8KR*=Ԍ6gKrx"Kn5]@~0CPKjZv-~,yYZfh#r^w`W?OhnnNEJ^ʊR*Scz0cI\A7y crkhsbrbijw4T{&nmY+ݨ\?~i3bY^p씬,;k&b]:&jF6*ݹ9%dd]J%A赜9CJ?6@ǟ|(Lnī|c;M.j76t o33ZA̦MjyGQ[J{tPLWaTfTI$^Dxՠ>Fbq@ s,Bchb7 %b~8d/xŠ# s i4B=7*Vdž֧mٿJ?4$UNRaFY+Ee!Y'%Ϋu5w5+i?Op's܋IkW7{E'{=-%"YP֙N? YV .`hͥ'X\=fwI׊qJ1WmbRI,/mhAmhAp19Lpb 1 kxO)x\:81ƈƃ/I?:.$w q'$LGrw{@rtS2tUƳ 7;xU_30gYGS/XQiro&aڗܽ>BrbIe"m'܇Vd(}@oDZX++35Ol=ȴ#Q8kx Ic.Br~Z_e$臥:Hҗp ,)6#w3@aŸ 86/زvN& JTHO,VAg u V P`;%Zm\!Nw&)!ʎl}vhzv` >"[s_>˹+&PmP>\>_i|S[9&Nv,2GL%wzG=]2ӛVT[TEt qmZI pG ~ פoj66J%||,phSb!91P%0ӵ=f}xg/ĤߢuR]3ye*2Թ2&/;kRK[РiXgZ ZM$MH9lL|}$0VFK kd0C( X&FSEbIDATg'.\oƚ^ōqg͕;uI WaE^ӗ&7'ĂF*3diJ/EHDJX ݓ_p@ kEYFZ5 x^uc]?D^VyB~G'h@=4 ڃq+w8S B [*c<9jzЉ~: y-qXڽCegl,3jޱoɐKSWHkKҗ?=$?6R}'C9FjSO/p8%A? b-o9gt34spYmo@4Yk/o [c + ~ .HH&>~pP@_ڝ% \nbU5 o 3T Jn1r֏m:`HR  `gc5ÌnԸj{:)U6zr 5Lvj[ƃ`|d,p&`bꊾ3)=aԃ LWLd!ĤABkŝ9}5e5 ;4/vzV}̯m`tȾd"jf8se㤉 ?+w^ o3onke<ԦH[.Wݦh3d:~ M m~,nZ?y֫ed 纇l@tUg"P??Aj?n<\T9:LUY>Vݧ}W8Y uh,D݊#Կ[v.ٮ?0L5)„f):ՔPO'Y1 - gtӝ6yuOhad7-V%gRÒ&9_|z,ECk9yX/ *>h¥왹4iΟ: BѼn77H= 5f&Π'?NǛ=_V,"}GIq:/Ql^Y 3+DJw/O@Yn{" Wd5V:Ʈ^XMF騋M,ƿΪbWe[ Qub/;ɩ䦯J2{>O߯J`ϱeW}u OEvmYS3zZ3#nd]<:ߘzizcu설Էg]}mL|H=e^L %{A:C(vn5I zs3Y㌂,ܸ#Azf*y}$ y@&WFtI fqd݌-ywcP5>rۤasKIGlį,4WfYET)վ?M^@^mfeߓh$O/E/YiyeBm>=vhb_h疭5ni7:ڢkG3YNÛu{mJO$:> )V܍N< ӑY0UPo.9] ޴xv A 6?xYt8>=~R?ظxT /8|s{ޗ\@ @ST=Pק9oL|o:-;jߊ%K1ŝ|iaW3.Q}5gN2,9յ9|<:!d)KxUX_ES>箿C:%T0)ǙC|ޡYDg^fd.l7?is0 2]D+ l=>ytzuk6L*3&2ʿ F} phĨtp%nR;iE֗6GJt`')҇(!>҆,AW8"L!kSl̕uߺuY~u"uRRjwɩ.ƪ(}M2A?xµO !r/gV$FfOl~!dGId[G]_1"K(|P:n$7CNTn?Ԭ9sԭeNe}ա9]sŚqfy,s!dl9t6'CsIW& rmtiKiCͬucsIT&!;Y85zad}BXӬ78C,X*(S>{.Jd` &pGΞ 9]ЛY϶~׻ϯQˊZ^Ԅu wΏg֣3Vd}?/`#fk).H Bۊ-$§g[mXˆE/ #4 8Ni!뚏B;kxjz^w.Mvj1|MkL<*K2뚋}TxޜZa5?..QZufkK{B9?[>}if{M8(c]VBNcH`#STS-x6!pQ/>\J @>d^>uT꽵 <F%矪 <Z{_4*T Q3G^~hmJ{|?S BCf3 qpt) 2adlg58#9׺e薈T0C5"A;\aL} v*VxW_!bݣqq}P^j;lK kU_|rA #d>Y4oh"GQ5WZHWL/Q[;Rwy7PLS-20 6ed7Y OM^pδ}N (^mN5F7[^ Kz_ȼ̖SП]- R2Uavn8Sm>NZA̖A3IZAHhDx6z{fوl"V; .` Ĝ_&%Λ.! 3c Jrˍhy~,v$[7IE,v1%GnMwJwㄺZIG6 `:зI ^7]Vso!GSV>Cէ[5Y?֔(8hw /U$-г ; c\Of0'pΈ~A4lFW1$=PtMj˞`_[G^Tu'L[}SC43$Mǿq!YP=(h }2:AQ0֐t{زJ_-aHRO`Lf4CQ0bYv_FP uߜy2M+jl},;17KDtr*qVAt LXG~/Z"<-"K!vf߲՝5I8C~+FIH)»+G\v֭,6GØGO/R:[Zle9ѬEz*dL3EaXY^kiz6)̡7&;* }.ga$fRY[sRmVmTpwr8_@ؕ c=5崓6V?͆&뵵amvt{H;\cgszm1]~#[WGjwxѱ{^uXr;+K/?چΑOb=2Q{p7][1B ;0xbZ4!: ˀk!E>7O(p8s ~DSln^,N@_=Vוq 9,V`#%uB—sf=#DwЛ8}"%VXmHA K ̐~as`wM,/iUz4(fu Q{6` 3a>?oRJܰq&R* HER.{ :#<2 @96Magk{j)4F_ HZ.ƃGc*`*`!#Q5i-َp7su=#ͱD&8IH[uNp,!P1fY/@5bgȨ3M\0]cFQY6lU&VhFf0` [4Wqa/e "Iq)um 0f/},` cAMyUy0RQӐ=?W{NPiAb=tzL<ўa"q:%]`c42 >Li9*ryյQԀcipUr7H@E \ 3>'42噷Lzz_ Vҿg '-e+PByT L1L!FeY U[N{b͗P9t -F>`O gjbC\M_ZA׍݊D#SF`2|SQ\q[B e%YC&/lDPm̬(LT2{Glc V6( O,)j#g) `!F.D}25).f |sc[/,mrF`$K?S=Oוo hw*CsCMNxEz?GOCBqB>Cc|Q{?/-G BWcUyrهY(.NxR\VWs86֕mvMr.}̎O[wxىcXMݟPdjnhW v>>bAhG ?(4@mؐd֬ί 5Q 3\Fo&؋u|ي?sv7<PGߔ Sߖ8>(ҟtW):HƸiF ~*]T'~ lie~lq.ѐL8_P]k]xh Z=ߗ:X&ͤ!ŗOvMз0ırv"P@(tU} "i~=a"&<>'kG(P UaE&'Q ڀ ;[p])"8ˆ ':EYLy&pֿCj0}uD: :- o%؁U.Az"Pf9 ]\ݼ%S!h-wuiOi}LGD"I7__8蹓zG'Ɓ.,ou/֖E"msTW @z+)Bi&ǀ0Z}PJ[v̫ZdXg-i ϮSU7:ևaѯQ7?79ί#bJޮJ|wǶuFU'^\ŵ5;x+O=laQN89['AZ 2L% i'[v .5Yo%Ib Z!v5K{xSj%Q⍒ 3W٧X4 -SOWT 3xYFNoH;\i&m)"m^[: `@T?/nO̤r͊>oM$͌ߤ8g/K~qǧagP:> 4}%;* b=3vUQSn@v;|w;6)K;<%G؂ : HLy-E,+/ ox;iXhAA(CSj' KِU)a/`9ɵ{^_^Sgc5Ȫ;%Π_V"F=n2bY kօDJME@r=d%Ȁ\UGxv  +fv_p)χ3_8~qҨNI!+K_:͵OjXr ,k`+ Y!cHhj6tc˳@_3^\D[Ǽq+]cUfU͌O2݆L%U: _aЄ,.q"" 1l6iCAfd _QAQԑv6Y.I*>,`8pJnLQ&c7ִtB˥zjUr36!)tQZ/VALo: uc~kklZ^H(PڳtVƋjGVrQ{DG) ) r:ޯ4MXMVoan5'wa%ӿ }yT4HPIWnڐ76YlV3) `Kb"X[\1M˸=D )ur lj|f#k5LEmAfENlҕ'LWv O;N9%%ർ`ǫ|`Û{i˼F+7ѧ6=ko.pX/Rvus}' Cwᱲm!2c̘-@=zq B?:V3(z- / V84iŽ tg !{6m=ӚdZ3%׺0 Hz!7~jtº80mW]~u4Cwpi>11xwxEJ26^!&-_n[9ƔN+ւ7Gf|9EpJ{$/j,xw. siGO*zFՏ$9)zߺ铘塚\.=)G$5c[|~EB2# _z65yuwOE!Iz7ゎsmev?vbR9#PE:#5WMM))o}gʡEfⳢ_:tZǬ@Ā \u.$nj/@Ej 'S F@ReI"%:jhX|8r۝YjZ+Q{Ni ZtKjYUҞ p Bߟ obEFW(4ɤ⺎^I[wqTKul%/o Ft3:(8kv9Wl%Wkk2Ug3Dy$k]C ߕ,7H]5A""W9JS%x.0S[Ƌ=ZtG8p:wC.Jy:Jm\o1}m~5 FS%kF+ֻ88Q}6bogz߶yTUi]SI}.5Q<2>'w~\uҊjX]}8Wqf.2fE媋^^Ё/_;WlQ̅M_z3;|ա lTнBkT]S[e, +~>PUIpZ|/**#G*!Gii. aQ[r8ίC?`yTLO[ h5њOoVW#*tVOR}C<[+bk[A%4*9ld@V sn@jnj'PiZCS{hq!ܨK{EUV|6 Hf4r{DB!o%⣺>#=ڽ^9JW,FF!EHYM~'jHa+a$g6֬'N-!&m$[%7&iܥ7 Ѓ\d-[Yԟ7EsV"*]S,ҋX[^W滽s<O%jTEy?$K0>\aY:ǼМjApa 7G͂TSdh):d%KLL HGf() qٔ~ ,z-me77^q}F2:s ;L]Dљ?X-6T{Y)[F<)Etd~Zڧ9p~=ݓڧ(z-EnѬ &N.kռ\z)lYDVEѳ7G\ rPr5>-(z/q9_Ӌ'oϼLTMԍ5_]Ei!OeDdYt5ʻ]X ?IGR}-8( pW$M`Iq| (1DY=\vk]#p8bmՄ1?kZ@Wn 02NZ3`Du]$/lY7fn sgpyErqK;k]<,jV۸(@B_%&^cUY!{EyD5S HE9$v0+&j0Dc%1N;eՀWzH$@P>jL; Q`D|s~ 3~5tq{UK^ɗ%uNN3>)=(sKz0PC PB=RA ͎2"%UE4=5ָ11}fT ;Ņ"~ho(gԸI`Jy\aRܿMH.޳S&YE<;Uݵ֟.ԖEx]?j^~Mbϩ5v:|VhPsM6uM5[WٻsыxP=gPWUJd*z҆j+.q.3)9Nemy$᳥o'o|ֲ;s뱖o+fztcvߌYS!*ߺzI㓉lې-ӝc ?jkJuuFsU#ҞN3+$W&gxtcOH7M =\=`sϙFUuMz:vXcjuj,`ԭg\G bX7&3y vLS*' 2tM5 .lTY3?قJ$`8hbDIC\y4V-v".%aZk -\DMۦLj I2 $=\ 0E"Rk"{Hbo.0CP'nd&KvC؉u(҆חߵSaEn{™E+E6B#Gذ-jֿAo+HUbI<.s::|g_i{;h>dmOҞ?S}LOaT皭4oī#1#;:ݼʩF귉ט~C,z]$mc`6 (Qi0s7TۼL=`cgydݒVP~?™axtܽc}Lg˞ˊdRU]qYws#Yž< 'LX3egi]55>adX̸WdD1&+Kf}a2|zeWL_DX*Jy]$?SjF,_tD gαjDC"KP~H={pݱZiUW`a%30iC`n;8E`۝%'۶1@֐@h{(͓tֽy}ޅgVcx)~՗M:ek׹tLA;Q/[#7 xtҞN M|ǯ\UB ;׮Ć}Q",T0+\Wm{ǿkSS=.AgAb?3]t2aDm)(7 \ Ā`a ch+l+-tvFwκf^EUW,7N/0)\?X41N˹CQXOߦ $63LANM\}<_$띧{2|x! F+]'Dy0Q+#V0/Z4UQϨeY @@|*NNz:dT%\|N=@"|:"C @rt⹚R]T7|d+o.v%8 3D~q8rL@[L?u 5Gرq3>xUyM&Ic8_w]XSϨM*9 L42r(;Y7zP}tqn5ِG?zUwlul`neլr@We;U Rg\h:PvH9k،.d}]S|r=K%Ż˻gUPO`YсWߘ;p&sʆ*o}geYv:S XTGgmȁ))cazb?c¶e!K͎hWA%IUcs9e5nlc6Z$ JP T %=0τ

ٮhӼ\q*+ G0wI^]aimGJIUb W !ze3A{iAvk]u*lY8MS"7e8H/g ߛر4)(T>TpinX0r@s&!d05i]l L5_qLX% ĝ&d_8{v8^-KGџ7PgCBjyyc7o Dz?k!^)M;kuuOtZuPp[uP0~SɱF[/qs8GGW Y\&6b>HL*ZCu?m2j$ e`cV^n 2VEpٰ-{fRpEqHc/Md3Dn.'Eꗇ=JfwAۯ[bUCB嚃96h*yT(Ŝ_էh so%@j_SX!|&=o0/Q~IU@ph^!tװv--pPQ7fc-_XyЎ=B17S 'eo}&O?rma2#zSv8]e9VR|H +ijJqbֽގ&4n@c9f<ˎsS$D%>_d 1&zbGI%9:ŽvO&qCqGƏQڔO[CaKCF3&Ccz o:>`:]jgttG@ 2۩*d|KN4`4sPO'K I*͠`۰GjTb ]NJ LOxۅּ){j)Ii?ov,DbV5ذYHzR5DfftOp4S$0T|I&! Z-LhI'bU67\Ѐ?J ;HRgq O1 yL%zYc# 1O E$Cc:^F>t$-.iGׂj1^@b0r!fd; 13P L||TR-л]pQ(*k~#ܟ?M/Ɯ>6oI~B=RJגQ T_-g) \6Uzٶ6'i~Y/KVp#I02|0.unEObۏ_HA(3,93xLQNYxiC3nV'Gk-ߏw,pk_Z>-sd6`h˸QtNXp&HvLp45bvРAP_P%`aTb,¸C'זY ߾{\#Ӟp眕gc_%NQ ZXnqo_ g_ Fܱ([*N\b,h"O_3OOZ,\lxv9%+'P0 `OUzm qS>gMjU/B\^ |Zm؆mۂ->?z7%zXVd@)q0-}ȕ789)_f%Ȯ~6mbР_ "r}H'6 DU6?aa-m|y|9Ko۪R_2hru9 nQuC6YJR[6]]2(_0hWVrLDi8t,neڿթKpvz'~D1-aOj'є<+fq'хw5S&Xl,`3G݊rv;@ŴLdw&E4q`7ҁ&g RhG'`j-2BmF@#"G$մFEn(#&G̍MyMŴ/q!򗕁\%R]W_2G|^UՍL BOI"%ۼ3,Mőη.I:_uj'2 NJzIhJ*K_ƒ29.0 FE8r|Vv VOݣXW;Őe 1%ބᔢ8/ya oaóRK[[#G6r'VbmY)csϳsqBʳXէ4'^.b0o)\5T&.<]e0sHdRҟ5cF{yv <ϹѸ%hة|]\|73pg ˽)O.V&WTC;z(RWe0x#w n#h2loieaJu3Wש0>ǡїTsγƟyQ/#l*Y,2q:; pGQR@.[M=MߐbVXRH[61#{Fo2B+Ynw/3貵x&h)T/PjTMi#Gt5c~?֦G`oXƉ{sOL_ʫgahr#j^gOK{nPۖ~|V?]YWMng]c=ټC;|2)i=vO罞t$NW'59UNq4K6>pIiZTRg|s= VQ*ʳ/}a\:'꺪uyz]9%Hʛ6`㘭ek޿`9QL{Sw6m2λQJ:q@7^`ڔNNFWo޼)ӇO>y~lУ5֤R7[gA," h@g9i =ʒŴSdM_ W #lQRX^5O\=vqg4.A)yZ@ 4G ) Q/>:WեiQ8UMkt}!IP|I+_iϧgǰյ5͘Ymt5lSn6s䅸*1 f񮳳3 3dz+l,4LӦj6PzIV;`˶)c4|]fnءl5Lj5 Tx&WaF>Kf@:_K?et$j'tI1AA(B'8wlI>Rd%KM!zH6Zmmjբ~L NrsWsCuPF"{Ԩ,?MXQ>^yƼPj";[F+GwDBGZ;F HUbEG O(C%u"2?"C2fwQ{&?L՜4XXv-DljF޽'w8yؤ9r/V zvεɗ^zk㣶j`ZR#J{~cfbť7_>>6&xNBƇ-3'z-**=?aA%7Z30>-/6JK (w}J@0Xt!f:+ $6/Wvp~g% T 5nGQ!IP2jqgeQmfj>__MG0PƘxxu&ƨ 2srv.$H:,y)m(Hc]TNdtj=$c},Ԭ4*:畔"proyٓSE)^g\“{Qxl'בj֫{e5VS5r=۵MWbx#IڸQW}h!z[^/DGo"Il+ g _bXk{Nn-[7\8:j\#، ^#V R^x]z <m艋lK{e-LCiJW3.{gT\-؏c^:jѠkL6ҍ: H߰g6/^'^/ ߩ?nX+r8@ {r.ݚgBGПbj[6~Y̝^8|sCLmF7l b9<$p˶W㒒|E,ubk(8ߠ=:q6u{W;M)Tl"3^&/\GH,?aMr& RvQ27H1$ VW4==): ΩZOE)-S e*XPP3YG&~1-z"'dZQHю} ߫d9i*M _Gtui4_M2nU %sowxZ!2qf^Ve].cA:*4b'ߞ_Iw0/PIMLYW. A ` kAjXẺ3E (Xw:6ᕓMnw5Q'{O4AsNc[ړxrT*;Gަ;ηlB!h2j]&d kMmynTs';Ke-^D0}`%.xEu02I^HQEATυW(>VBըȞgcNy9 Fv5'v<-S8EX`Om+ӌT2r̻G+^J߅fJO;׷nVh="Y\&Oh}F~BYvzs3Hu[Ui脝*e$wiwJF:2;!i:]897Te7GlZ 5(/o@g%~Ꞛƙ9& [{'W~KYC~& oPNLVFZ*+wOv~amcNR,LR?)q'4{TUYOJ(HQID=hcw>*GJNLEc4Hm~.=$iLʸ雳L1  `JMGܰ2;񘊎Ū w\/VI;[dYi)۞_h#~[};nl$unP~D`Wh7^CfJ2KWY.LM^Uofw3kT>,$U @r&.l3[ ` [ ]L?'z$C[ߕw3/nVy4BГgfoL\;Z8K rp>FAZ9J뒞ztiq~js2\G Xm,8CO@DƏЭ[i}E]=k$Kp/U?G@|Z2€K&H `oLF3Wohj2$jZ5M\+v!T_ U'Xxsf/ʶǫFj/p(9sȀcWݒ|X257/_n)9? 䔤븇dm]$V1sjq>S8J7,P!ltߕW CE X0`=r1ЁIDE[Pr[ł`A4c`%,WUח3?ۮ8' [2Tb|l\ۚOz8[M$OZAО?78a3o7fh& tP}3z|(\᎓k`t*b W^$6Jk`rLB0%1:9 %#sg)|?,d{ƚ9.eVͶ`F+qXh X J$`̼`hi;HZ䲷EbehpY^PxwnN>kņw$!2QN)n ¤GČj"+(;/ 'ܨF$x:ƱX&41n'N= 4~@v# 鋮>F>!g יYKEFe|I]rUNS0R{-.*\h!QB tÈ/'P߅_b}}6@Rimؙ(!Q.qc1nB '`5NSH(p~`(yҩxSX V >*B 9*X) c`~iJH9Q{(E|o7 [Cmx+{x*LFS%gm gV͚1S5b;;uE&87髛X1}P1FL ֭9BT)N\AHXBF/Xne~3w.q GM(q &xGmFl."zU_5N хDA ࿓EbܒwDڡpCa@ZN8<̻feMFi rc ~& =I&_=:hiUjv8 ˆ_ߢz[N.:kn/tޟ{ x^~eslC^ZL4 TKz@ fW.6#6W.n]c5Z-? RHXFe7׭Yn*"un;<8oDe۷u V#e?ʟk ;S -{}.՝ҕatG tHZx'LW(ɞE;Jo˶s  (G6rAQxl`AR{BEB[IM}4C.m+IcEނAT!bؗO]bCCƜf[P}jf+Jx~Y:0W6@d`h*A0Dx3s7cS E r:32K 3ؙ)x^..+ЋwrxV @0v|9)S='+襛/z?&աm5 .W"@j9,S:29 Om&lmiUn#g:D3G]QE&S`92 <ʘDyrsCQf6IJj~;мBעN`Uy?!e%xidFgp G6Si{<p7/.WB*[][Syz~~r8p8 Njycx & cڵd`9/"66S%Irv5Lk6*uQZ_XVkkMC/PJ"20k<x^"Fo ü\:rOeʻWs2T!V=`>4'f1åFHH{A2rt 22n#@:;<c"Qp~EL=J8~lκY8:: 8P̜F-'V20o[UZ@'/9(* xq[eFjހf\?tCoax]6jn7RݹԤQΊ_N^ToߵjM}nvfVW!Z%<;p`2@b;+yPc'ÈUn.I?^JL߫2 "HITď=4)0iȀ \d zj s\N]$\nognSj,[ʎe%T[Qȿw5i'Ħ U(YaŔ )l}) U:se "Хp8pIyKH+4=ln\Џ/Ak+o:MX;FWQwɪW?g(lv!{z̽OeAw?މ㩇,TW J~!xQec4Avl}xj7p jМ9t033C~<IC.xһM[;S7ʩ=[Q/x=̬AIgULI5?>ipAJnCَ|WHR4Q,_3vN 56mz hT7`oO]7  dKt 7*M d n귮\֭iL3x[}^o.#*=~4w ߁hUs;Bd|r6yF [eDUb}v;'6Kr~#&Ofnu++F]c4twǣGNCWzoXxDM&w8|H A Z(?JBz~u*Bkw֨mhJS3 +'6eN3|.oj+*@ yՆƩO |OpACLYncOƻ1TajaT\@0~6X(ReH)A{A:1 gu<ܜ4{ҽ9ow31rLƢp`4eOZ4Q=m!iD.b\y GВߙd@m ۸*=|ǿ* ^S/VDsDeq'K][612_E6+)Z5lj'RՃ|^a'e,p Ӈ-9p8_uF9u -> cC6bA律hBԨ>}1^US~|\%^G$FK+^,Mt]j0vNjnϻ<.>= `oVB-X8BkHiע0KS܍*Ownr{24tB6pxo# «MVy56aܦͦoŏ?t*]k p6دWԘ vn¸!'UdK[gҊN͑z^񊍉pm%I%iie-=noMY+qvVS|D*c*[c1=s/XH GW8,"dqs,D5pak W[@:Lֹ=OsfaLͷ7lL0K晣;Ҟ--|l ַʌ> aSiˆ&`x*CjkΨh(TEa#ax24V]|[eƨ/x/eK=F~_Â~Wvvfؽ)+hjkN# د:ϟ)}(^Bf~Pr{x!d.`%)+`q@އn,V `L29k>akiul9Şk G3D\C'-$LnkH|$VZ1NNVsðLDKd[k.lhr'7BWZ'Jv`Z>rnकe[^p4&]a{}O7l,\ua ZlfG4}$tJR14"NX8Hƿޣ բpE#2JNcJ6 bߣ|E&T.q,mE:J&o/JY_]ʾ°G[[]̤C׮։`+#[!+ѮZZyfU|+nnG%,9`#(dB1 Mu&:]pP>Chf>*CPC^5%?S̷_CvZǜtf͹`Ɍ*9Vr)p~r#C #{2~v>ݥy. COVTкs'Gm'woڮ^f'kVOyocb['Z>"+bs5lya^v5Q29?oL,j'Ս2/!L\+@ex+su\D6E|MF(0ܴVw&kd"%1d9HHb(S|FtC<^ΚTS*w*);γkwǡ{-gL+r3=&AK TwO5g~{e]܏yorq1HK< k@^SҞ?xzWzQT*x)2Cb1KT#ok S]_5T-4˓Oߝf[mƟW*о pe ϩrg%Ba1:54 ̃7E:e w+M?'R [=sZlE;ɾu*bv$UF$!!˨hH-ߋ׉--KF*KMu]Aw&,KufrKSBGnkkyrTqf$!,.֠ e8Lnn{V6yB8 Jv6F3IZL3-%>Uzk}>#3 -O{rbFܐH 1nW2!tBW } "7`` >Q0I\:]zA0S[+﵊f(SVFr )%5K/LYHۨoG GI,g7@z@[Z#!Wyjjk̈́GMM^md^%WD8ye-u&/`pI`hHDA]dٺY o4~ʥ)Q  2:Pv +YGj˛ckϐ@JY-LvWUS^ SIg+X@޹9j9&RӷgQ>MQ>zÑ%u5Z_oźe5Mm꿨JAF&4-u0w6t^txߤ0'< ߠ:Ӈ֙/**.*vECg q2p3F\/&.g1k2t1^ k$wH힑=PsVX^VISM\LיZbn'wroU=m,fmA&>A횀~jketTʶ}zfmp_h<l`YW^_x|yC#\F6[;AǤk'f~2>P|9j0=1t1-R+J}M"fPYfL}]DNuDmXZen; _ fF7em|sETZ4vJeFQ4BA~Y+эtB-237ׅ*SG > 48 3W>=oUVnhawMtu^dه ;n\ZUy ZyzVݫ6`56%8VԶ:Y0lhV0^ GdcbwV pBޱ2^oԃw )>q]uOaO:JI&wݫS0cx\PF%5\rn^AoI핎f3v`(z򤌬2 )I~Nj Y6\'ȧfh- kBe^FɰHG;LH rF2eG;:98Xӝ<" <EګwsRe:lYbb*qJX Zp)pL"-kF)K`]`h4B/ӡ OTGogQği<&nOBIWҜV7~PW(tq*WCw7o|hţ-mýROu| ,ws~ _ElCVIК[A~c#ѷh]I:b62\Et/iOƓ@ OZ xP&bMB>˧g ɿ|r1hՎ-_YI__yeCӂSY16YN mV/zEȋ0,e*AMٯrj1u]jl&\RxtrdVD{ D?C{^س=ˈ-gr,<Ԫ^;|=Yg:vծUk<)ɧN/6'5=p a%7\{^I2ylZe\fZecycḍxb 8LE:pCbߔ8 [3KTRFY̆ɰ?pvpDy7υM]뜡qX[ wuÛZ~I&0W75Fcw51@_u)jWo Ņda^~!_$_$_DKҴqb M()-o4d;w]R wpֵ@{j n r6(WJx%vR$#/f@𼻀^02i:-Vk3z9ޣ^ [JXr3V pZ:̙XH}@nZYf箜bVC_itP\ Țc %kÍ8xZV'Gu|yRRњSN %bGd;s3ves2hKGKK3k Ғ%YF\9|GXh܇5a<^b_d CF"eә#H@1Mִ?CpL >ۄ Kg 2uBCK}|rͻ@`,WE B z'qyl6} C/QXZ(ΌַU\e k0$3ufIv'eն*w4{lq0NxVCO]EAsj F( EbҞҐM \i8esTM8݆$ wu.%2n\/hyz}0c(S-* %n֌;Εu]OJڕ*~$0H );tnH+h _qE)~f%ہ $A&:Xqdl К![ʜxw kLf|kCxC,~PIf3AS ?ͩ)-R[MhD|0}˾DA*틽AA*, "ЉFi"84BoĮIݞ;H2)cZETԒ.X!rҊ8bDɚ *dy?×B1MߡߋWQsF~XGOꁂɯn:C0?!@ޅ̅IԹe2zqyyWcs}? G#ߖ-j,m8k3_cfYMfU԰le|ꆫE] 'Ov^6_JSTm110c\a x;6R/@8T`1wQZQ]ޖ=aVM]S:dk +-4΋0FY!Xf3mݬ^O(1W q,"ziLM-%p,6%.Nd[)S4\օ1H 9KI]`!@:7"M9˘ }bX=-$F(33۬Mc)7Yot4@pW<H #i]/+SmZbm] mAx VO+L7h(іbe.3ŤxXV j j` ' 7VJ'6@gή$G9=Ud%O {y=¡~27y7P*]9UQv9t<,d~\O Z, b( @P` (4\Hw6UDn`~-fB-3bF)7cmӢfZn\ǚ=aCZ@XWmQaJXFqX +opiq)׳v6y;qPWTqj5ϞoU@fh㩍+`5Т feM/rpJNG4ojdy5ts2`tYGxU8gFiiiQ(c1~pXi?=*}/"2rώD}T5FYJˍ-XJVI{R6f}tnWj^ɒW"q9s+r-h>V O؁P!~%* "djD-#*~/cq5/\3kSF-}뼛YF%_hibӡk׊GNQoiv~skEfR1t784o yw |h$-+熅I__DT >r`냝[nx" p4"Pg${edl=^N52t4&mcGgt<v2BMxR̾g>7PA"Ԁ3ё8DeG2{(䅒|Q8XG8ˆq+$y.]2_fcڈy؞:KК]aU<&fl8@[ ITV$MMZڳ*u~*їBiײ}~\ _dneKaZP-[ܼb-3:|2RGtYn&7+t.&0nCS k xjvz–RO'fKݑ, F-YX)9'(d\ Wfu >?WZ@'=uBU (Fc bA``d/a_Pc\6_܄ERy x`]ul5BA! 7{Kݟd@Eba[@G%tmiBn?ˋ OC.BC&&nC#ιn'C"mYI9ԉZKHQiF[9[rmmuA'+/oQintֵG#N6\mUp{4|uT$@⃵BUx40RxƷ *8;|r>wj4FL@B)@븭m@58Pn>GmBFQr.V1A)+߯\eڡ[RgU.AJX%ze.\Lrݽvڅ} /li8q!sdFbYm,-;l?Y#•}3ˁ[2E5Y8 y[_w ^?)ă5._? @廇zZ,r@>]ZE7.mxHLi?: GRwvqpVmT]H> Gch,2 6LKF K4i]$HOITNf|k1kEn  (*4`zbW.}4h =Go ɖS8|b޸p6K:ʊFkNʈ/q"CikR&t,wL.t 9@H#.5 %:u$/'&Uټἅ8yaWYLm#+fIV梙rSaFӑIOYL}/]@a:Lj~,8G~:+p{ǍG]{@bJ b ÃԤ=ģz|/@ F8Ž8\ dž쑎Zx?7F,r 0寝 8tqfpf{8,oN9i8pEI oNaT3!^E?a=gzծgmMc> M z8]Av4ey3XL0e:Mpj D\H~,8&zUj^x6]ÙwV^[nވ>qa DVJ/gE_ aYLFvVt,AUb^ڰmQ+&k} '\?2,N=>c ottߖ uNIW)me96K:/N v{&|!\1lsNor,}Y &g}4ZǂfWHj?݋\:k@R2 _KT}u+FV!&STYY^ <P{7@мr~EdCY[>3u gLA^w\̠F:*Jp *=\htZZwQoh5B ҽ;?"+Hx6`FOA|FE5|(7^R&؃/'NK㹊>X;\ "~ 0c,+NF8AROX 7Q %WP"R9muZZ7I[A*(:穗ƼhqYi[櫰C oZJ1D=m?q DbP]ߟbZBeU[&J&#v`+)y lw T l>yl]X[z2r~'%ŒS# W(:Ĉ: nHw2I4^pgi$_(![tkv #F˕ ,q( 7@j5+hW1ysdoLl>.XN.a2ѡH@ axprКnf 0i6aƗۙg &5݄XXs8 kE/>w^q/Kkil0,7sm׏<Y pbm89ZP1޼2,XtXe`?Xvvh/7?rt1C DGLG񹴖Ow[53^e[?@m *c)jޢjDmC@v6 Ndmz)9i4jG-䢘E#-%TA~D1Bij&,e:kzod7>Ë䓏(j+ B5i2 9`E 92=xiw sNƬjO1SDocq ۜ/rEsY:fgd4|$>0 cDf(Mr%02H 3Q%C0``DdxE%C˨U/ ^ x RC{4Z17wZA1MO2E؀[$Z`˟ 44۝J[$OHe|q96mL=BQ_7/g)qezss5U6w}͸9 4mfqx,>0)٧8X]nL,;J[*-{܁kuڔEC֓[$Uȉ)- ] b爿 ɸ9@6@}6`!U l|?qr0~ 6QM:zмFb\.]^X{[Ak%g=q+Yfx.K-sd2I@<)zd㵽mO4|ƎmM','4F!>x8R*槽͐e=8gM {%tOޜvycڞu'|j5,Ϧ+h|DʶK9ZIGW{G$m.G|e b ?\ұky,RvMXaUwn2n}ͻmrVbo.,\en1' (=އϘuz}˿/ڦ, :]6-h[RW  p:b<o)AG1b>?et2 $W%cpAq lCJҰE6<`[}J/~FrgúMe ۵CFmyGkyhG#n7X0@i>utI5Hf-a7O˼G*2f ~R%?3|G$YIZZAݰ^KL78b5'm\'=8TC_Vobbcm>iUtm+rg-Fa;nP4'fZ>~^֞TµQ-O͓ .ϰK 8^LZJ/) k{4noO=7Tj8{{dGw޻ 5;9[6oͿ24~\5P{ƶOl{m J7G2sC/UVxL6`yn+3{p-ؽ$_ހ=?{ml;4ܩOPT%/iuꃌ47<̹ISjo; ӄBޯ Ѹ_e}Z$ׯиowZJӥ$wJ:?q9מJgo, ̋ev0]>zguzZՎEVױz֒L-ޤ?#b?#^d_ct$h4@SЛ'̄cZXP6:,v~?1 @ ɍwsViU'|0r pⱣdvHҔt Uv|mdNC4P mpA%l ĵ5P-ټ c4eHh9eBKǍ!^o ㌫k?bs ’eKcQwIVT(lgʽ"_2<f6;UU]{a2t(`py+jYGFsL:0j{ VZH<*uǏyvj'_8q^<yl_HcOg,w^-yilg柏]@e|oI%!%8 `LYw\3^8`QM9wFsYktZJyss4|]|z]|3"i#kJ .i3ngu~8\9\hrev6%t:PIG|VUW6C c'#:6TbrJkzCRvlnx}1 %n|Í:̧z2+4+߯FAմ]m2HJI(~*\Q$Q˔yKzZd }PG?A\YMzX\IĻ-2 T[Y~s*aP>轭fۉ˳S^|n~/$Y`kd`@6@BIIǐI"k]io[/ޱ߯|L9Y1H*?pڹCZIId'=N BE"0I?lAAnB"(nd&@ri"[3\7q>c^0rcZU]{Jވd<>3HEuY[T|S5A;^]"D}}rhX*vY#il<f-=b;(!F|lswj2RsHG߆yXhPxDai1OZI>W% i-㷋1<+-X.m{ivy5[wEM2{ !Z @p$vod:_Y!* I䂢,DP!HqLqN']PϰUx $pctDI&jb\ Tg0= C-ާ}ȐZC!jBQm]Ҧ,\h|ޥްУw?<e<nRl#/6ږt/}'M?$Ǽ$-VoԚTI*Q@uQBl8這r`[Q@u\ۅx;/lXյiܤ+"J2O hmkSЭzqL>ӢW?{\.{$150h6kGS?qO+bϛ/ζ˨3ڲ UVh_9a3 $Bw^c+]ʼnuEOuc' {6<&NڨNs__3mmT 3bzIw_bVczSl>6hbS*r*TQ^YRyD ttmqGCKtP1ol<֜:,lEd[ƙ!:\ ;f3C9̡݄+E;rje?Vd DÝ;>@펝s˖e= BOs"giaͥދuL=5"0x[X(praz<@wH>^x d&~IG}CJr׍85$^٣ˏh½n7gv"DrޗɺQ0j#q݀lIw?A@75/$aag) `ȍ@vTn@ܱ@$h1; ȴ59LL ¿9d`'hHB p_@|B7,Mܓ?ڣphyN+jgiw8k1z AaP"@(> dhLD3d@%lT:/TW~tT,bj: DH"j\&;aIޤeVb t3o:,BNc "*(+#^b Mxs1ijBY5h4;MbV{Fr 3,bMMYqj$xYwXlF|1#;[|_ᙴ9g˾llb94/.2:KtC('a%Vv!5%@!L2}*TX/fgE-Ri5 P  `.4hQ#vgidjVbR v@B` GOHѽP*,͙[^n^M::eMV=:L"^R,XMPvՒcs,iZJ D㽜[ù\&q؀2M˘1ETE n> #m=T5f|O CԻ ؇-[I>J4n4}3H{|& h@4h@ڿJǵ}k%8gIILS0BU3 =O635k[X[xbpt 7oi/zn,&>K^>oW||r5%ɷnchC2 OJ: BcґT|-?en2{{ztؚ[Yy6qMus;~n}fa Ʋ MTPBN$يd+^UPO1Gvt澜91[R3.dGM Ji$sC}ѩ cb܎yBAL.EDØi)4- +x}tt.6:[:j[@flkZuH0M?9SaLLαҗ2Xe>N1+$pƶ3~q?'k惜yq2"V:!AlJ'Kl8 tDLEi7:ll%eG]XXn>'Gov >zw{irj;ѭmGLH}ԡqM UdN%VMS 1OPIwCZ ~1Ey.T6M_IGjb?1lw|rǥyˌ)fNJy]עC -Pbb:ӶK_-IړÍIqm,Z9juϞ:++\] i9/ r_UM ?;`-ۗ_7qh@kUq IϋRc E(_+3`X)^4 $`Av5c|H D;{"ŸGf"IJ;ŝb;q &1^" HE E 'f i!(D!idG_DFApq fT.ZcV 0zVz * TYtO'08ce!onj2/a z]Zִ@Z{QMU# LƝͲR]9XڛĬc3 !XL.9,_}2.* wㅘ~@Q/Ƞh!sHe0"Vӽ,$~RэmnVKV'Eu Ky陜W}q[خj/AY6lЕi wuArB}̭WSNX67ձṞJKX , AwEt.Ž gGyt؍0(#hM<p˰mSp|_*hd}tIۖZHwd9‡ZXDg G!tQPD0'i!Ct#Q<-iA`Y]f|9ҠXuطx ߻gBDma H Cil.d=-ʮ-3a,jϏAFOʭE),euNQXPh$w v~ARlJ"]؂ D!E!v.4pKYB`'G&8584,F(Qԇ4ֵ})OmM -3|`TX=00дu㴷ӓwV hvÁ^PnẶc4JKX. W,qȲ[C4!0r~=P'{`rR^2667vtEf (E~&xA3YH./N_ V8s :Km|Z޲Y;7xKK;s_6+X92}>EV˖3 %/1)H??n; 209T55nsS|Z~"x}ūA| 9h8;ڗ{uw4GSlHۿV8q]~F}+txc ?ؗtϔ3oƃT^zW_;[eO2 k)\J< 99Ӓg @z P z$}ދmmĂE2:d Ē7aC=<@_~e]3.V@nIGdb'ZnqkϋH;T@/[ xsа?%Ah(70J'@q Рl,3ߞŘ*d#mUR(ۏ##1|,rEQnT7㷊*[~cqXA&ϋ\g8DF-8qxQ<+`$gj]V>%D_&KtLtVvɚz'iEfwZ:OYew<n\'>'I*@u`p'7]BVX: Γҙ P6ΖS^v9p"VJվt EKo=enSxy Y5wh<tSޅ>pi+*H\K p"ϱ,qXlX/\t#Š `x JHl{iL>bϏֿ /C)| ,!Q߉q]&XD׈>PDT\%RX-wt Pw֭"c6r^~3'Qe(9C!Kp^׵)a`3@KB򭹡[øRk6#4Ջ]Ab3a݉Fp?2ASR.˗ 'X RK˟̵ʟi *_k͇]A."9HM~?L"]Z햧ʥΠA|6Fl&lהYQ/e fJKQiyr:GY]tz|CN{HhT:8rIz'hWgp>?:V|պzM ֪]0@OT/W Vv灱hlr6OG{7Cu{҂vc/9$tkX `ph1cI S%jښ560DZ6t.C [Gv#5,\GX?1/~)(_XH?nȆtDOK; v'yL;\IebG*_䚟Ux|Mş,ɷLB] 0$PӽlV du,r S\.Dr?&Ng+01H"j@zҳ($10z !lX1qV.o~ǘR&@9WL3֭_8 cxHTFa/tqȀ֕e/li f4-%PgA@l }m~%zΛ4~:'tC{sN7gw5 e>@EvfY9o)A!+m[h`i/kt#A2dc^pPy(Q0;=JGa!hC,+>p@l кbyD7=(b#f$ B<';SX&Sˌdf*f9QOmS"6B`j 5P_<IG I>aHAHgAVXv6' #Kerob2I4-l4* UHƊN>F  #`aF}22W^WV7]53?.e] Mqjr+:ZiK5#_(y]@ه57:]Jk!贙;ywޜpq훸࣎Fr%d[(br~ O=:e{Pe?nf rl@>mOб:ˬUʐnLJO2lPg]KK+ϹrF1lMU!Y%'𭩳ƚ Ϸ;sПiH?Ϝ)'MȊN'DMr&&&&&v9Q b&L8aWJ2XJkyHodĜ~20vjP]N ̼s!!3~@kXhpȆAUT]@?:4 =Pi@DB3Mߕn .^x0\^x ~^3VTu^L B_eJ~{*9=X3O늎/dp8#M'4IAoN&"x`XX׫n)e  4 ƂJvurʍ~wtĀ?@6(ӍץڧEc<$>]Ưf'&z,wh&|I!3JX#DA }4>~^A&hoT!PniBDtP0 GC G:S[i(%ƧQ,n4VC:[Ȁ=xBWݦ\_ A$@Q ] ͇FNGo$,ip:Q+FұN؏%rPg3ym65^9Ut|_q4@4Џt&6# A5T=!+%Izzjf5UUSt?iFi%tb 4h&DwHbÝҏcwU[Ba_N-Z@a=VE+-O'Y?;r2%WOٛ.=U30qCҶYGpǒnXHto|L oԁ[of8,-PU% 1UZL=Id6n$Z>VVH]%4lUj!GB:h>1cLE7eaDSA&0O(DKj` :D t,.DO,#Rڹ`Vb'ZLі> 9 MؑޤFf )ߵ[ǣfח/G<Tq t(o|`qӥ&Zt<_W?O>Z2UB{cάirپZH'RdA /Vu\0p,ϠFgA/>"nMkn c[KM)n\n8% 7;{oW㊃:>ѿ~6$ikZt䧪kc}}{}uk`jQU*ο#5i%rް9U 6ܕsjŐ%LqqGrt V4-|yXv!L1]q0vj3ݏGe6w~pW^M/JK&? [71 <+p6kvSqI`n`q"W}мb3~f |Ag (pP14~qO-i3VE3xH鞻 |[LZ! yZΌ>n:j#t=ߞ#88CḸ,+2Xl"ifeLWIf#T/;q֙ AAF=m!΢sXFbxFqC#Hc8+vE*_A\m=%aMqj$x'LG-ߦ,]F[*[U9E;r/ ZZeu!zuh T{#'EkC:ĉ΢(3R.!}d\)` >ݰh<0D҅ Yhw2CnlT+qa@1OڎZ]G, GCQmByx,T  H ]HyS6Tεw63d;<ӝ X*h+x˜`WCeJv|%mk*D,s(}GC]!;H+k :I1=>VB٧J ma) E3El+Nu6Aw4V)ҏʹ oX}ki-@9J!T`[Q; 6e*^Іuܔ BU@Jrh; =^I1UӍmd3vEx7BB X0d>!F4`3Dg|#X)Z4nc%ߥiڍBa0,_&N[smգeʙR$Nw&IȚ/;Ȟ]kʟʴ~O})&Mȧ EoJzXm3: /%cN=S3B+v:STKQďI6N_>zA'8y_/%3IP[ۛlT-ϐv%7Tbs^Ѱo'D>i `{ӷH¼咊'dhսnnן]j#ۭH ߨOguT[-g+ڔ$=Oܱ]xYҽmq$rx]GN=&ԋ$O?u#9&&& jݣF7mrǴsƪ,_6;1 *i$*Nunlym*!iӖzhC},o /kr`.>`u9ZED%/,,3*>.*d0So[Ȓ r ͕t<׷ FGeuuN`Sj/Rd5m+[Pvd G<v)³^=D+@0V7dN,YcQ8h[akxYE&x}@k+&;}=7 tEKJ<9Ѭ8@{ C ^OұU Ím?[__WRH|,v b~!)A4A-؃$QRd M(F< Z%4#bt18 pTc61}?HlC,aFSH`XSs+7߰S u@3 KurHg O;>PEhA ytrO!G-67v~Ԋ=ڵ{Aq݂{P{ Vw! '%Iɓ'kȖ)#e? C*\!_F*HMVZ 9UD+ZK/>RXi|Sa)M+VH7!axM3E0o6t'6PWA}>>RSmc`$V|DN\X!k3 "fɇ1"_= \縼dfn yl!b ͡ f=ڔa3)ŋA20n0A㲤Ƀ E<j;ЃC1n* B. 2H)')JuU,O_J*<Z3!%if9?_2J)LT0ϧUHg5^ha;j`=$BFa4PKuYw\N:+k, eݤ7# |Oq'[:ӥGL4ѣ=)˱r{fcd闳&HvxdSh}d  &%D\?ޘi]p_1~c'H r꧵>z5t!斻Q+^צ%v2q]Zf7137R'@~Pвµi= d3Ak1 3MK"nfv84?(|NH#TeJ%|E&<׉ANt6qoqi=W|_yF4?ɷ83a^En9 >{HFs?~aIhL@u:XgT>Y[!ig}h_ QYҸt#$TP7s֍3󏩢a_ʩc5 HscNA4\_>111AA'@ n¨薒9_uE7"v[H /AXpVP:2Y)ͬQI2֧MvFIbOR]~Y*v4xH.٢ChUuɒ\sw2ҚbFvF$ ;q_.fc,ūùe'Ih8`7;;Ri1Y@j S[a\-=tź2H@|_aPǡAmҕxDBiUzT{R6Hb!mۛ+++$|Dʸ_sI13.~16Df6l"̚qA],>cޓ*"Cv)vJa<`(ٜu 36&rgF'FؽsL Z+Jz֔氲n({H7%/iC@_E #}FSUx yUVvdH+J*LV\s ovr<6xО^G2I XIhbǨ2B!u{vp;y|~upxm}@k>js{W=vM'XQ?d+̜V%C9-rd#E ;'mt.\{ }86C4z>|.Q|N#Yz"5=kMZ00 |*xR_E[Os:&Gȼ%Ɗ_9TZDJWqsJ4?ضe3а⸢<>K1GT*XTdKf=D*ښ'OpbRN(@: iGfgug_‘0HC$(h{)Ӈ>U.Mf(wZ2:;nD|tMFK^ ؋BL2/," iB2h z[D 䜰ݭ.OO3!W'0,#A1Q]e'Iu<帊~'tBMFA$` :x-odk-NV-r7٭EvFsS_m_k3 "igf=@H  www[g}fϽw{nBخ$;S]Ui]=rX-%k$ϭR~k6ܠӄvvw'a$mx „ tA+v2MR<i?ьGc*+VE3֒-mZ}O.SW?87Ŗrr&<'i}rA-TrrzE_#G#5:_.X };'O\gb(o)LWT8RH#:mP_k鰰MZ"``9/ك~3*#Ƞ䂥BZK_j LZp.kX`8 d-$0sa Uv<ī73! w{(W!LoaAh 6b^lsFGLr΃G/TˏnZ/>-!ٵՇ5GR &w0OPE'zJꐷHP>}'4XQ][lLq &"D 2]]_MU?SAV+[BH&򳥽{ P EP3(`$"R„6ɀ24@֧?N'ߠ4.*_tplM*F/KYl=@KPР9Iʐ^p˧jK~Q(6pwf.x&ȓ@&ׁ-2kh//rN!wס@%<O+<%=y7L7[i-y3 {cpHDiqWoeri,:8 ]Tb^?7e)KӖt>I5yEG2k!%tx$}(BВ`PdU^.3;΅'CSPvz{iKz&5: f1(Kn…xt=#wIL\x -v4,Z/ Bupbk ֑;|G#pc @*O+s4G0n3MeO& Q҂.SƢ+0GW#)r%Ǡ0o@i,z#l:0]'I)Z ^ - C EN ɒr7|BRg6rXODs0&T<#Ul92ItECsgNd ʭelIK(m 0 l|/[>h<%U1_KVQ|^ 3.v$Z㒨' emRXc/qG>@u~k`i2r:pS|d謼⼜EJ!VĚ|{yQ"$o\6f>ɂuTǦ!؊8 w  #<@q/cCC5vnu(N餭|Af%("NՐ39t#<ᱍ2I9b%emis}u>j8)k% ΈA`\5>YRwz vX3Ҭ#6G(" ˂A[Nb:]1tR&#irnGjNU%6oaonqkD^E&0?).n= 4k66Ɲ\ygQZnlW`] i8N3%.Ywd>;C`JœѶ*mNsrԢ.'M/:6~¦{G{W˕TRY60m(+{ػpw?~2{}/* }B`!,'G $–tp⤠҄\"В~էH`HG~>$q*&\J; "f#8#OjTOP +4 \c|V+mi| I}^$PkF'ms+ݚ0a? a':ChV~MRqM<"{G;u:KDWsI_ymKX놨:hz1$jLiigb$~@b[]sZjHL1֐*g]b${2s4>) hw%ayTFn#h2Lk4 EqNH.&+M2XUI8԰A%PP|), 0u!CW^;=%Ҍ*KhW54 6l\8(CVKJ~Y4wUӷK+LLW3z%w V*r><=Er8_p@K`A0JfS*/{1x[ .xw5۱y.m )I"cjaۂsQ _d}OʾOaBn`^@uKB)RH쉞4BC/*;3$VXգB ~ϊsMK0 v=.6W(;sbw?r fd'֊X!X᫱NevdM<}NtjR7AMJ9Bi=P"! ȡIa5CX:R%6a 줻%IGmfu&Oz÷ yzMҰhAc ZF ]|քአisd#PLcrP]߱zO%8杋#Fߞ=tìԄyGdӏorM0lSgom`uOnE\8_΃7GE/oT@Ief]Ah'L\Yzk.%ovɴr'3x8[NmuXMcGWe@j+澠?Ortjq3.KeKGM6M¯i=U6T,yq|-65Ø[ %U|!R̀`0b„Kχ}u>2;.LVEQw%?\q(ަ ]'<y# 02P]-1v޷|}&SP8dSj}ea_)4\ ל9{F.S ЮVK(ƝRSkDt'+yC㶀|Ъ&wa ڀ1"DP Z`E$s'U$P$ׇ$C q Ā 5h(F7΃NID*ҰZtmNdx#JdyA癷|*\vFkn:p{ lJ6W-c1;ߓg2kdKb:5˙s_F ; N/ )qj+eJ"}*}eD2=xpm#M"5fmWJ 7jʛzqX)n iϻy(#R)KaQ?4ED)_jXN4Sp0'9ԯư;oKy8ZƖ_V{bY^DLvU/niZAB}^G3-cC.M0Q0i-qjk?[)x߯Mtn\(Dίx\Ez2lw*tj[hW*]~| -]?.@Ny}˥1 ew~yz. \$elcEUŎe(Qt~tWnL,{mDEI//xN.L҃#e`il^FV@ގFbxTjl9O2h U iK?y-FTUߓr%vB>L%JglgI[cRFm.i* fA, X#lF!TZclډ4e)d8na(č*[: "̠gI.V 6;SwvS\H #a}@!`O |Aq[&/dYt5TJ`1.l6B {#b*;.']w4](  @)zџ?M-J,F4UpT`Bwk5Q:δ,=M|. 8 p J( GЏ D(IlWYpa/&l =O] 8<W\HwL-t̡J}-& @cSvd j CP=P@QDkDǁU2)1k{٘uV) XITCCjbanZ%%"|#B ?*MQU&49ŔUW+`. bk:HP q PiG'(yq3u - Ӓa+QwN@ǹ$3=I*69[͎]׊ͱ#af+c yޤшȐg@> -H+ep$i߭>vf=lC}POX+"I?)ViTNp=$6ۊ0&w )=}WCeTשG ]0PS zƸR<]JfbClDw(Wbwt*3&5Lhm}>WF)j}s iU&Vf_z˘v^\q,_]>*QgwY<u$Y/v[q5qKO3RX,E˹3. д6lzXwip X ŀ*INbEܷΑ£x`dV2=9m^I8Dh =<5}j+_D ⶧M碮[W5j|V`u:`,>^ *-pje{pSЄ)@X)V-Tsn'\ۑyGP2 AAjj*F)I$IFhȧY瀽+7 A@VshINЌ# 1|tϠ/7 a|J@ pynW.cN<b} Rd>Q!ni@ r80D(NEX_B#6hLrkLw8 'NBVjJOfӨq+;IJ*EH66cJR[FiJVcm041[(^\#9d6ǚ/NoL30@~K^h:p;#;e<=Eq:Wi38ʴ$X# >ƭizɳW& xvS#y/$9$YHu(I| ~)XH@!B|zK5r <>2cv {/:oruˤ%5L~8b qW"EEg-v6:Z&3\v;zOPtES<<ñ? &LQv f\ >Z3F5_.]!c`S>ݸ ,;55zi;tg@v?s灷ڟBe dg'WղN{)3j a>`b%*7ﶪttxrŮOINHH]L᧎jme112ÓR@rSЄ)@xpd #E/>cY҅m#tT3@UaF0椏d-'eo nIZ.2i/>U 2eeccG G؁ xrCU&rd $5iٟة>1C#;EX.pr<O\6Vq t\ū!"zL=lcA#ad5sIepX!X4GOF:\hCQ Xk~#6Iq屐XADh*C ,L̀'2Cä"V Pm݊n#ASIbhU[G _{0hDFBbR(otP¡< :_" n6yc[CԣR^(DsGp>qi;RBܪr~&5]tXNխ%UU`/'EᏡHnj/-\x-ʹ0BmMCf8D c!\!E'0BO4}, =m59`ft"dD a/5Z۫ڢ\(3EV!adBܥNFTebڦfؽѼjkxTN j KH:4,R-<3a׸tvj2o6tf/RbjD b^&L@Ƴ̜W k*un[SWN_`C_F^č&Dն{˳OHKTWԽo|kcC[16Q\W1)d„=~ Wh?Ŵ'2z?C\bE@X{xkOǽYG؏4`/9 4-%- ڡlơW Ucj^ xp!7s Σ~%@olܒo_X{p-mzi0}[ۥ8#!xi 4$`M7SDZ'a3VK;Kf!zAG4Ğiv&k?ke%a%Y,GPn^VJ҆f[I!/t; @Ҙ&ȻK~@SzQxH3spE(Jh 14E4FdS ;8!>UB7H9yf%}sFXr L4 {\Htpeki-4c}ՌHbKܤpJ#$JJL 6.,ᰈ1ưZ\B %h>@~M?&JuKc!uķR r&Њ%DFh|ZhGap7`2#ܑkIs\%Ri̽`  3mw^o&Oţr8MͶ{ cwIFc' ? T)8'$bɢ*k0q}ÓsjГNC կv;ȧdtd1AJKe>!%h@`:EL۬SӞ?ezjj+]x})[`We~=9q>a_8+Zk\L;C cxRiKDt<ǽL0l9{uLqUĢnG缝ohi 4OKg_p;iH*VdJ;7_3&u+& K>G<-z,Tu7nV[o'YLN; j-a^JR:jqãk1ZƎ-CWe4`E`RR;#G0|,pNʧLKSk8̪|3ղRծ*d(lHMWt/"d!!@k 隒o?<ֿZV wpDzTV{ (aUC@k'Snm8稪Y؂b\& ;NBVuRzƎWG|Da%TK0jjwO5=IBx6zjl^G~veԸX7=4<)C+o%ճ`F[Aﱖ0 oxh/֪mN=nי.D( +&L0[8,]^}"}giuW6\rn:>UΙ;{FiO\zleh~|/A3jGTxU8/}+ vdZ]mDo:hLZG]T7饪E7#T+7oشq~ܹD[M]0)HN%\Ny !s4\IƸvhuZ6P2Sp .{!Ogbd/Ǹ-ĦTI {f{ %4E@``F.AOwoqMC7fn$FGKAJߒ7d?YL̵@ (XPCAӕ?F %z⁎A k'ޔy0G7k_,ѓ ~L?"zfG 8%$ C}PHd`a@W!@@QH"  ~!COtk,tag7aj؆4ye(ORc=LJЇʍ-M<϶~"NfZ$XgpoN*@ߑӌ:B'H藯( ypF2 6pύЙdξV 1/.n_ w$ރaPqR7"5NA|%a{ǧĞIj,d8(6A !`zk}t BPfn}qen1g $ͮ@ćACl w*̰Â֧`G(ЅzC+p #a" [^r:r,z BY pY(Fmx?j)Jx}g] O%q%{?BsښN$4,T $V5qi|t\U3\vH" KQ ~)/ɰnj@ zRhP,Ke=.%L,y_\b-qYI^PY1,--vW+Kw| 3ha2$A~-&~ nU&wLzQ󻷇24A\Y֙0aķ!iI%*[K(7066$˿fe|$w+d @ZО0a„?3  J*%5LuvӚ|9Otϵou Wu]s۹W5uk䘤d{lwwj:l{^ w=υV%nmyw%o@fw^cs};ߥn"iڄH0y2WWw?l-=ؚ64pI'ٛ @6R?Ly8*=R( |,Z=`*hO(xL? "(r i2TE f!tۼWrBMp74s9'XPd0,P BH!3'qBW9_ "CDy!TAa3p 2 !!Z[I(}ŏDOWFhlQ*FFaL A36be[bimd&UŽ\RyKߠ0K$i J2Gh"XG7_ xQf(6TԔYٶUqX0̯ø沚d1dQ2k7#tA_^[3 dv^&P=O:9?f+P !e޴>w8굳q]r-K;3+`;@ ER|8xFBg`*̈ӖL}Kil w%$Mc J~&qŭj!j0phE#"dy:˝N#[9Z5eAJh=9N겹3;}+F>8R?W8Cɼb{*|bqU8cp)(hh?b;CdZrəKCC^ xoxcσ+@sX6ơ&=VɲwpL BYyge;>6Coeltڗ(=Loѧz%RVyLIU%%n$ [;[B/@}>jE,A+=ڒW&ClɈS@Oj9|B--ns=X;&TFd˹g%kNxGxVGl0&Ř2j> 0@D>A?p r4',[Ӄ_jh=3-&MG,XDF 7śLvd 1Ph Y=lJ )DAzKONGhzɣZ1zI[ -a}6EOqQb iYbfPMXj,KdWw % }#Әi_4186V3s:?`tU_sgV#}>92mӋzvy`7^!kȄImry Q ^nڧevZ]yBrP[ú xxq@#f|5!w@K*t!V{FʗMkv_B)#r?:Cǿc' LESO;][2"o+eTUFc"v .axxiȋ<pH{j3ӳ?%ZZ;q#FUiO}bNFL=$NHĀEq)# 3;_Bd7`# P!7JHD6TȅR Gw8)3$dW҅D2U_b(XO&_O2[ ɜdFB <ď=?b⻡hm/9 lp\Np kK[$k}N:τ;PhV|oMpgxLuVS=e=}C~뗯߭/߽fZ $NuHos{?Z{,8H,*pgfϿ5Vt|#h퀄zgLn>8f.6ےQ=/bL^yU3n,v!fjx<)/IB&-w9U-'r4[/:u&L0[(˓[u~Ej&ϘCt7{wl„ ?.`OW=4V¹`cgI彁6vnAA{ &|D6Nh{]: > pz `{C_!''}+ɡ]15@M>P=m1 >CD{4"rҗT$aEkz|I{yrlY͒=+mi)9yFwB$]$j83g"3%",lP o`t=|`iQ2S3W(%\7,r.m20.!F $]>).Ba2(& DY#ؚM +w#u-]q^Qi݄qm"9}n!ɀTnF_}(JF/ǐ-c5bN]wYgxE.7yfRFVoSYNɨIl"F_Ķkd(un{zUfWvCkW7C>fsP5 f4}I/zMf*AF]!5wT/ 瓮XYR_ ) #^ _/E.CHjߎrDhx_$` sT~tef 'Uq̏!#ou}0Ӣ~yR/(^Ā VZ.u6_eM;\Þ1B A gIדrఓk+XbO1I-fvCkՓM`?wT:؅K(m$ vkC+aI?!|h_Q߾ySɩ@u:`؋3hx|v_"MuhjhPn萚59 S""%_ P[/YL #lȵ2?{j@4_e阏j[M9-당Xo. Y jN A+iisI?F,D:K (el]{K񜰿k@8$e ΑO@;G jZfHW@lUE#ƽ\vTG{% $e--&Yb}0qzIߦ.=r'G yv%j-u&L0eԕlnWMڄxl!wϷֲX6w^Tk6a„$&8LtB?v5І@i5-hoi&H`W/v{=ٗW#EKk c g `@^}"$2.x'pfƄF X1oEI=J,uTuRe;++HJvp!Lu`7bHҔaI9v(":nLZ_ E3*cPj|i.j ֧ۤiaP|}=[뗈`/1R;SX-03< )6c]6U } 6JR^e#Sgkj2rzpD0[ⶪ8GCrϗᵼOsҔ}Ž;:{J{H'd+벇q ?0ÃH0&ORJ~UBuGv. K&aZa Qx&&EsIV6_<r=Yd k,P#syNりEUC!,j]1]2{t("! t]9y K(2D:`¸֊F‚-PMPV{dK3AܨY;&bXDa sB?^e9mvlcc.hGfwʍ1*kucH2>X,*aEvKA5 0Cj:t72kGu43+KHt˴nyF n?dtA|el<}^&2ɏFGBOFNޙ:<-&qƺ1ޱU{m4-=]*ꑴ*\ L/9d⟈)@-|!b!(=iGI Ҳ}bR/E d/Gn`Tȇ iN`Ɣc2Lo?b [ko՜& dpB `.^-LXQp?͵gIc(j@E`Vv jxe, 7 H`Z"!/8@E~8%D0ǁ kUS:4V؎vJxX\7h:63Ny岋Ig٦ҭHWFKC gl\^e-V?}ko"'<]#F+ nz*BOB9A]JA 2J Bݳ)C(CӻKsxiɪ~?%V HwH Ǘ/69S0rMJ o O+y D#,Py/I)rGs{S6 Bst`%׬ R[(Y6PM;#p x\KTrh>y-CÓ,T^c fxג݌i6|y+!FtmJG @ kf Y4.dS :ci/77/83tVC]_M#_Ilb &a%Vp?]--םػwP|؜ܨ5o8{,&z%_- Oɶ;Pr2i @I6zc7C{'T ʶ'^=_;d9=*O5 9Z.r.p;@ͫKSmx|g _ͽ"՜^UtrF "_77i_Z%ejy#k.-ƿ8 ŋu-%+p23zIϓ'<5oBt^l![88ϸfff llǏukSGn쵾%{G]y~0/\7ϯb„  rtC 3c6(qe~Uyk]K&L[2@=/cV=i@kS/wIolI?0U^ 4U_@/|k)/Сrqk0X 71H{+dx/{Ξ&'~=ڃ=Ұ> ,/x?S7 }k)@ [$[!6*gJbl[ g# T20Pp.l &trWUCQl“c^CՁYڨ8DJϒ\-+V0FPuIv~Dt b _4pB*4S/aCѣ#ٵ,5ĉ3AFWot Uj%~1\n) ҧi쌫&xS)9"q2ߥ_ ЭXt9N oh;At%F.c?U}VU?%u%"7sL%Jџ{>|/ЉJ.Ġ#x$ӎd0ӜtE$5-I.Medr^&pn(ЃB1{"hjOVJ3AZ.2]boؗϫ[R|)Aao$L$=Of9(.6TXZ؊Ȑ-N? iY}Rx.5f7y$ 9ߔ t(^w% r5S$)peG`VPgHu>\ǎ$w(wZo.};2݀*d cZwÖt4'#IѦGB85hoĂ  $`w9\.OJ[-3P\ОZ%Jhуc>dzzSSӻn?9vd  d'~ВSOq,3QZWL;Of„1:f+ol3+:B?(F( 444,u@AڟSu)L0a߆T൪r ݚ|?NOZ' ~s+P57 :B8HqUScf٭E¥XӟDxP,ƃ;Q6',١N'lgq?挋&7I2 yDl`+Y;a"V,%M_p<1#}Peg#I9ѡ4 o&(mHh-i!þX( tfB fx_¤pEԗ7 Z bg}(gS9Ļ@P!1*ZW /(`&P-O tі뇅a KZYt lklT]e Xh U)768nȓY V,㘼ƑCcd.&}9"SwN2I%HB=o6hvohGEJX.ęFzv #i2kk{}fWVOKQj.%cRo2-6@ ALc }RϠU~O Һ9HY9G_1HS>D\[g'((̓t6taT݌DAhF(; Q_vMVK ]]tbdM(DCjBo2TEK&"zNHarU)yh HYavdX}PtR DtvsŖMNu <8GAL^l 9/N QVӭP͒߫kJ*iF6q [yx2 +h!5`y+W8a˩-25N\A;O@zH1C搠:!Mgo]vUm'ȇ(+q;RRҫjyoi dî}ޑ%wT|ؽg4+\ֶ4m/ZVeUp|jŜo]H;0N#<cD|GHKx_}+`xUL1,BIPb1HwbXW-G_H+,mvJkϋ ( ;-:SMI~镃!}bs7U7=˟W|<{&>G!S2!:AQj,8oԏ>C_$ù][+oFm &er6#fTOFHV-+>#:iÄ́ &URUOU55"#վ~v{ք`.Ou9s̴glm5: iIf,`x.~M'k 9/9mј;~Z7VX_uz> 2YZ=V5w z 2G!DZ\-+gAbIoEp%0)d( O*۬˶w9njqlۂaa2mG:cOPszvh 佔eu:^vqa jU 󘒈Kpq1 ѝ ndccztB R >bpgJl[)2\/V~̃D$M쵽QP]B B9Y?gȁa.b$.Z]/I.2%R>Y2YxO_C ^YJ֭)*gK\N?x9b~Oӳ.  2hQIrĘ`)}XkAqcJB\دt6}W4~ԿiYaT+Ać0@d=}vtkSfV9”5fs8/,CqlB.t kh6]=RT,ni.NZïi)[=rnfb'-N 5ݫ7ӮM^6w:*aupwtcVeA&.(0} =8z"BPrYh@&$9`gr&ղf0\ORQ! {tSyXLh%pB|}lz!KHj,YEId50cڑ0 >` @ )(U>IIEm3=(#P!vDaI+ k**CBu=FrqWF'k`P L#KL2s }̞*5LwOdVX>V9cci>$.C¡vG:aj-KVLRf 08Ky7ePhX*q6C2OrvZJ=w+ Ul㬥7=uQoҧ_y|>歁 Uw/J^'jCGƐ9yʭv3[5O[+|vZ|1TgU~*lJRow˫/<** pr59!Alٞ}||~~hȇ`Wh1ݳ+);׷T0a߈]w2Xdf^!́_'i9Vig8[:O?j4a„ BisMq;dn >T~*i ߺC zclW'>mW]3̯އFmpVѺ8pmێdA PnG9%KQ~ȍEF/,ܮXo„&LŸ/(B%a:iUbߒiήăO"2ʁzP4H8.g̜azvΔ`9`<{( 4% ًa(rfSd; U: AQ=n} KఉCMG0HGHpDP4K%.?u {TF:z \qtFbYD" s%abdq (X(F^2Ds"Ezi!Ya+ƔH}/H3aQri!-؉)iֿy!1eOJ3ù3듄X!1_g)kco e+q&?wlϽ˅>:AK@ gt2nL߇@Qp2h yjEvzUb8 AΐT ڃGxB0u2M r3Q/<' Ȃ+:B jL1!2y uI'U921-H(q>``s4Zrԍsvo\}IcX, Aq&zaS*1Cc,Ƴ "K46C W?80d<ʪ\:y(kSszv7nwȅ&`[eW֘[1Ӯmˍu_񛀽{_j_66W:+Qʝͼa^x;|fHIgE+:v`i\mfYyh}檡2]g#䋳g? ῖ+YՏ-,t! |{ qGK9(8BnPQL?ހtԳ[͐3okV\k& }`Af/otsӈKJ{ koIrt Ο\[NETXp!zQʓQv b]~{K2oyX֣lk<3dg{C9dϼU̶XB)KʒwU~Wy7'9c0L0a ګyug{}yhkn<_gHwf„ v]*=SxW@k+u[r&x[g"K,|IGwz;q'!1XTp}cj q0唏ǎo7TնP:;`<{ǚ n@8`LA=aRsrb4g~Ez4I,.l%6 9L@z R.`.x7p"[fy_WWcLF0#HK0/8Ҏ=͉:z2ZwHÎ1M5%zPF1Hks)鄌Y3Љ= -l3[ZECLS!O0\x"ҹN=,]_;XRp( b8^&?{(,i"i[DteMaRp-@qDlBX~Ou ꛳SyM,x/Ph4%kς"F1#KIRuK˼Q۲ 7J(_8O?LwK)dh|+N IG "Kq~J-CPJڋ٘$lFQ2i>[:g(kWi\Dz:[vtCZt-1skňNyוg_]| o;\RK]i'ON՚ s2,/YjdSڼm뽌 L'Uai0 TK>)S$2y[ m q:2ݳ׾ɏD tH!,;AS}s*P(*@ɯ+}o8R*.7JezI{}ˆ,*P Df$"gjuZl̽\ATC'am?emy;AjnH\M59G0+Z&^EZ{l rlDW|^m:D1-][;Uմc) c˜,aw&nH!ҵJѪ+D5-5A>x87~G S ~xWKڤLܭ. &H˹VSM<& vQt&cؠq:!$ΦѺG֑o6N)t|@U'^s6\Qkg0KçyLj]Ce jyT fw:u:l;mwXW*GÎ<]3Sj&}5p.\x=*tG ~NXp6އ &L0a஢/eg?'K5._χa1M0aoAz@nN:lܟNkK٣?xHdnl#L(r= \ `?Nc=Mǝ2U]ߔE䘠+A 5M"lMXA7Sr8'mda|>6ۂ*a\Ā_ @T'҉i %efg(D:#XF8j2USd3l*ok٫KEp`@ OHu*bUg{[+A0_=-" `z;BTuRVa'VS& OIqfU״o}0s. S6 kDgծ+ӅG_FChOEgV^>B^4KVe\+UsrRQnޡty>BvUQ\ |dzLÍ|9F%;%N7zit=P#|io=c^ـ>Bap޷~6? JG]ާ~Ph}bMZsm]OR~M0a„ eQޛFe_e|TAɄ &L?r5 I> 5׏sm¹ҥ%nDk6~;;zUC~$<ξ((l3'ϴ 8j8B )MSp(ղ+٬,Qʘ~yH2bJǬں@ᇂְ5׉e{{J2GaΑB 9L֠'iKn^ٲSr O0L +!E%x"}̧Toih3f5-HC VFN3PnHLHE0؛H{dT^ҽZ-. 9yN $` 'C0ETb$Wx;]'mau! [TZR  , p#QgJec KU^k,Hu[R7!TQbSu[ ,e((Kb$PzO9wLjAȸc$S1_ػ( ouhlbCpwwwwwwwwwXݝ'@HB=]] w+3kNUOO>SU"( Y.W{y|ۋO3̛<;c;E*n[hH^Jt GWQstp-"a[~_`JBےDEM'U_]dջƱ7rjzؤ3˒ƅM7d&>mFUdBȆS[:أUuP̓5ڠ0fe%9m}&пs@ JGQ 8eN+n`0 k}9DiiN{vm2$]&`Y(? CA?o'JVdjjJɯ-Œ+C#^kґiGXFȇ<d B/4/Ve/Rz$~T3 ^pf شv~7꥓3HXjqKPx6#ۧ/zW}虞#;2v5 и+YXx)D"H$Wm=[.O6rZ;W0npȽD"H~t p~b8U| :m)^@޻dm_@= 0왼r]tic^}/DqN3 xr X/lYj[[ʁي}}Qgʃ T]tۧ<Y̞^t8~gVuX''Zg~ˀw z%ߢ_v l cz3EI!y{KE'y>E>ԑAB) LBT8rWoiCjc|g,N(1vnYCBܼrѲ27yw!P OsI} mv-ZUL~Xxʵ؃DTK9>H:_>9nDWSS \AQ'3S( H#H ClvpǣR]OTd|1|{uQF> 'sv撙+e)fbYy`hi̒nUUĬy8~9RDO9wf+T*+ܶ #[̫lKGG ۞=laOe[('+d/+2-7ӧ_zf% Lu^^cGe"lesZ_(suc{T裢,=x&q11#Ϝy\v>RhիYNkkpBk?GEO34,2,YSxZfIq'gv`! ?ϗ:h#d`“4\ηN'Xlnj0 2$" H ˆO3>-fE~+ n w4&=\Tx磽%a?t7/osDTVrkw13w9Pܓi{aCjEᬰXߴ+ώt|~ҙsEhh<& 0 `@( %H&nGQ;]"2uCM:mԅ4jP*-eș? ԵZ$7WrZr͞,ƃH$Rj([M{a73ߵ;$6c-5hҡ$H$XI3PvR? |\PoxsH9t=-%prjG1&p(w;P; _}oOz9[]^xa s ?E WQ& i)/٘yXk!*ƌЬ̾_{u` :Ys z%߮lUҍm0WX>]6}؀2olT^WeZ@>Ucd˫!D*W/)%}f2%dߗ,3U)R\+-][X!YPC/ E@a$5 c tϹ t3S_B ~F d RE{¤=Јݐ710wA+A31.0Ѯy"?'ʮ_=fC&•f"vpDxw[_HW*ۭz`RyFm|r"RB2'1A>jeުBl[ٺ[-5l f2,D*6ny)ڼ#TBܚN6HO9r/f7i]TRt|wyәoj7:_xG?"N˺6B+ᄰq8xM` {3u=Vs\bCJs6 V6!\`FR@J۲=[-:)# !G"Nhc`t}`xsCzPp]aD?XP0=N'͹ hѣ ꫷]W\zFW+`x-Y Α?aIq;H@f%$C|og 3' L6z^.!(u}Z3QWo2wfxힾVVݰ {GK}#W ƣ됍5ɧr+C{l:ܯJ\?$D"Sti\kV!NF0-ŭ n~`F>D *I$4hv^{Y5@m]<R(&b nzW@p y~{P;0VX=v* X h9us@~Y]C[y|_~6`j[ 8ZZ_{8>'DϏ 'qNu g])m恰/F :ugVO7cM2^+21 o~w ]A؛a (J_@M56B "a&9E:2,>//)HAA\,v$O'쳬{`iM7뤉ѓ$u>̉8YO g|7  cJ3)hGbH"VIDATGeCQMSK€t‚F}YЦ1>E jʬd1|PQVO)cEriwCDcMϘE*W1n`vdh7JLʡc%:]#3ǍBc#>~ ('V3Wa, /͕g-nw,}ea`F*ҡf6씕!Nf9bDv|(%L"^$WtXNY{BaA#@sdq![mO~w ;D# 6%}IΎvNMw ї_D#hhR.ۡe}Nn&K0>ĺp?`5E=o~M}JE͌~ݏzfvzWPڀ s^ {6raCkXi[F`CBwʬSaNui*0OZED8mA*a#R2\.!3w|>̧sWL !CSnyll2P1Yl6pP4C$lu븽x` s}R͇Pa2913x9~ 몏@竦ѝt~Iy::%5 ywNz H[RvMjI@@멀r pv wva+ڤ,:,)Hk Q<}5#??Zz\<.R>(GP "J2Ц5YMs֢|G @㠆,sI:l=7/aEf?N/{ <ӐP8ysM#eGy2߈g*'ُ :1JY_K!IӴ^CEaKG,!y!/xXgM{wqP@g(LeF%7_p/ZԷ"ȁT x%5Kh<7 2g%3]N Oen6I7-טt2Kb/qPg)C=4$r"'_% Hl!CIef^,۰6dC\ɦӔ T%F~C1ՃιMnRʽ%tlSLu#̓h8b?i`s[|l'<&jbyo;8B\,yŊ7Ymf6E#,F6u)Rߥ gozfy_u!i8$k"`qyŒ~8wPӳb/P-jnr.B/ŗ#?wZE:bxԌԅQ8[Do"P0PJ& I2a4kߔ)? B TQ% 0M5p87T?v*j SZ8|^$x?ғ8y|˗%+Z 2'דzFV&k[nD~2ui_$@ő,Ygi2Ua/Ο̛0*#wRijP6W{ ' OTw_3=vV>zȝr5dӕ*u5Jg(׿452nx*Bl Z&j 9@F#ҷ&7@pL!b<*˾zx-yAWY@LbzUE.gȌ47AV@j]aþde :uD"H$_R9n f oZ05wY wH$ɟP1eG2@Wo^1!`<@b&nm:UW Jr@"1MEKM/\ޜ xK; Ai2+lE#&\!'%U##&{{Sy0[=M?* HG[ vѴR6ƒf ؟ +(aANk& Fa _XtS"p;6d.` ={琁ǘ%2NJ˼n\Bo_, h8`:/gV{ o }=bp007 9Ҙ-d8Imm -Ri!`]6FαXv闥˞+Ҝ{5WpER$l30!ďaK 5O[v|Nz\qmw﵄죬*҇3LrHdK;}UưUr 0E F(@sFP?p ci=dq uwGN[{s۸m[3zO쯽}#1Fn3Gj)=J$  'z2e] vI9H寴@˨/YOn^q]wdtSCK~9ƈ*0#G5eqJWHlIL(H8?wME1FB" 6N0P3?OJFsA@""$?0۵Uc#١P4 "~8(tX -&YF: cN|| ;撉@sR7/tV* هQY?28\\nD;Ȇ M|Q%&Y?QLRb1zy~qU9`HE֧^b7X~d(6iWaKÿ|rRȣ*\[%o$ձā!\.4Ih `ftΒ?$O=,Jd ~NЏx0/OեRuDu  :o]w}9B,%/I$7-}lWK(!L;d'HED"H~Xo[eW{ :GE >3UU} rW{p@|ڤϧ`J-ht2bpr1@@@Kptb@K]ej ZF G03/3f#h6W% j P\pOd%a5T㆐Gv4rHBIa QdFI=N5wyPʤ0 qGEnΟZ( ˯ll"ٖ9Ж3! s Q" !qM= J Jt_?@ }$;o}}/ATƷSD f&Xf_NZ\qER1Ut?D;!'iLOB&//A{="~XjIkTS@EfL'15zv\`*nV=tLJ7^ٺp兛g{ը꾝M{f#:`u2!tMXh(_H%O q&.vI4t= ,kZyhF\DQ'4uv^乄nӘ>َd}B`A d"-Fm[;KK܏xQD|!\gu_RK[t8A&HPod WX"Y`8µ%fh1c`GѓUߒ4X=MrY4RAP EΑk^o\Vʻk\Nv~C#)`|ZTB %||CV_WCͯ.U*`d]mR@lқs~"6b'cۋ9Es _E-.9gO`AofD䶿2u:B(~ڨU[TmQ9TS I$zYjp)INP.ԈRRiP"HmF@_~M#%?m6v `2FNZqc;ۺf"R^!+(K'|ɤIyi9rsl| -b+}@ nCh[Iw)n=YSB_uC"9"'JnY.feX<(%Q7VH+h[]ԏsNإj0\S:F70B5xK_t)")OM0!9Ȕf;Zv=t!n [D3.3KdU8o wfG>Ď%ΐuRݣ'.6 fsCJw,Q\5G>Sh[H=| ~ @EJ:\`ي{,د46!ޢϪU-^?z BNb%ei&pƴS7ڝc4u_D}NV:ZbYN k.t $7j`%{n3 Y_"v`syQֲͫAbnB ՏqfFY:8tRЅ8dtLQR&k&r{oyW>30am5cU6D@}8!"J^:9v,")Zw\Ȓv%7c3oNWb˨m\h'nV4撀俣n:tpn[_HեvUu v:q -0Iq8SI"Lt.߮D"amS-{ bkp#J5@4t$Deφ ] ea1_+icۧEd kP~ *i:[yU_3(p-|4}Gv]}39so)|➋G#LsC@okp-[ Jf1z< G 0k8wQ a &w29M?'0\?<?({s t#@"5'ra +Y e&㰳ގKbC K2>$6HP_4Ontff6LN`8̴Ch,%rfxp̠hc g?CTW" 'FԦ9Z|v-z2ox.loצXŜx!15o؋ÐA%e`$=I-\g""K QRQMWuv'wAۥBܞw /p2+qUys ١ F˵?^wikq|Yd20.RT&[E2#7H;2&}KHOOs%Sb-33%7|(it=fX2WmwWiW9=)~2b"QOWqA0X"D:#R@M-9s_ť^9ѯc #S xc'Fwf)WU=tb2s˳GΜ/uT&2va;IQv_,t$x6}4.$3kI'( Or8Y%66kdH6@kA/wXt`{Ʌ*oOP"@ɿ;-vը͚ voHQ݆a[&LV$5$LJu{FZǏ" tv&^\@1 aWg d4%Q52?ʹTZ x˻B $k\,MB宱z)t7^J?޾[`qd!3GNA"H #K 1o?Y[4z@*J$I[bWƂ[sb6@M>Kͭ5Ju ?}뙚16`wؤ<0&"1pfMpg;n~R* pB3 O1վ+5)7xcȶWMKP+9ˠGFI(k/?5ۻN#$_яLM#]9@WSiFtqi ?o l&SsVdMnMpge. ?"6xoDWEWJrT:Jl?l XheMuO{%Vl,˜cN9j[PH$㾑2R%Di'HqqS$H$ <~6:p^h"K ^R|mw\,>rhJ;w}@6l~h`Q^w5I 4)W[|K_dyMoC˯W%5Sd Zi1ΣӴu0*[4A+We>=5U,˅z,Ho.{+$p*v j\~tߪvBtm>ټy%|*F?4eDǠ|Z+Ķfs[`0d+O,|vDŽR}.P'|DmHM{xWVwgf:Ž] nR9rXb۩9cc)g&{)MM Mv9 #ӸX oet/[(W>z9Q< ?,QџR#`_5 ģ|yv\Σ׽bω?ƈ QaB"dcE\5d>'fuAYl WEʃ].(4w<1JB9x0 =*kfnb5B\Bb80_eP *y$.eVsԣ,CūQ%X9DN;\p$V`R9͝):v)Y.u CdM_y}Ql"n_ } :#D"H~.$\m t#N8:ѤwAI"HyMǚ ΀ A=ݚn+/bttvkNT&Fip cί-ZOjVmd z$$%!dפU:YK\=( Gp=6f֣B+l/7XC&~T,KAfO*D@u082 F+V//]ȣ$Iܡk8(ny{R$3޸&u* stUSLOy|, I{?%*X_q2of4Aӈ81s\{Dm'Ć(PW.OH,%QX,bF]kpO7{E6/~>yB)G7%gyW1j}[~uKut)]е|{G l|*Ü ydVSU+Â&Tq(SgQG}תsu:6xՁǎrW(VY3L^l=D*X%=BGdpiޙvh}ޚ]Qs! kfkZEIsjk412ثK؞Х-cfV~"*)jpKodUW+3[u'q1O{A~E#p82)M 3:bSQ.d 3VfMt%X-ϩAc"(I`H=JY ,J1nϿ} Y *p7D*[0yē[UV1({3@KZΰ K0ΖS;G tO4P Z0 %QKR0e8a}W2Fy`W2CrݬVX3}w4;޻a*z : bJ &M,٫Y͊q\ֵH$׹_cfpQV#XZTнH$ oT)y";]vtQ woVTS ]Rn_ O\䎿Ĝt/7T th7h)J37SHbP2) \WT-%5"'A3N.G[Vd.10HjrL/U֎$&"G?nd {X[L J.k8tXY)eHCQ ^Ϣ)X%%Xȣz#( olw#3DQ) "ڎNfB Άag-^-3,@jϔYV4m#Xȳ kqGhT(׹tb!H Z:oRPqlr.\Ub ,i>K  'Nl1)ZIҲb{.KsxUy~kٔ];ĪkTu4"Y4~63w"'kDl)1>%_w6ώ?ŜMwq7\!e%DE#&ǘ%`,υ) 5kXYJ}8sw eYch\qRI젰a'>Y5$_K`8 N 4`K@pU-M|;|I7bnsi7xpTpuL$ڴM;yɈ"1$1P>]hzCVkٷǡDe?G_8,g@"d0Ͷ;Oђ5'O|{xI9G3$aRE3zͅHgpV};zDA*_LN<>gD=W* [Yl5`jP/zH6"UZRrI*aHǩHq!DΓX*7'T02iDw .9G{Ϩ?ǰGIl"1EHy6ϭc >8mU=m `ɟ|di$I-p7DV̏MMo=}~b8½s[H?+كrU|ƶoptly?bzتD"H$?Ŕ/]ҕ7璋~k9NA37I+I$ɿwVN D!_zö7ydhSʺt%dq  XfS@? _ )ZHw'+,WL=CқM{adf@&'-{6@_۞E{F qLK=EI&py @ATi T!QBI1DX6TX2on(w|p);` YԀr‰Φctw>hu@ym:!RiKA/jŠ-{W[QaW\iSjlLzM&k6}*[o:ُRb āabu91Pw?콕4)#'Ooax`@tκX:chX%ew3C۝?1{if=7j۷gpRTZ*Ⱦ`W'Kibox]xPh`_MYl/#[RJℌ{!xL4P``@MBId-voxⰁ}z!cNAa#xd#wb.haI=(MZtWFLdk/U4(Kq)YmtxL=5%42pSW,|)8z~2'ݘ^jާC&. tw,gJb}VyQX98ƒ9ޝܲesڨ+G|фGItswKAz}QC/C KG<kb/K';/ʎ[K 󢧒#gwGE}Aj,v.CaoBC :Cޢ,m;G!φ~z$8HU߽VqcTlXZV*L%D"L7~M8c'D":=x=hl]tXA<nP7W_ROBC^x{ Ly(x ઼S(awu Mz>~м mr{ {>{RJ>9k߃dɲUm] ،볖H-Y3&][~m$`.;看ښtVmtڹ xUpMDKv_da'6GNJ$:zz#?vwNK^pt e Jd2YI-ADupϒu؀`2e9|DvSM&0n14&%5Sٸct:BitZIs %8mH e lu^s>1An{>: 6\e2 {-LQ2wG_ξ;ƘKҵ8b~F8d I\C1N .>p.#m xjCq=ຕNfJCgkd4ycMH /]MmHI:^DAFc[C 'TG9Su`1<>8T<A7NІ,|SB s\L0 PNnSBVlf.E ڣ0,av H+-׃:2H+Y)\tvTD+z_P<8R;Zf/፲4srI*.~d3hI2tL(I25&:tȥV0@ed y*5ͮ6!gJynr@F?t SʼnL=ђ73:亖`(1UKEη,V9c^^;Қy {z5\of#lɔ5a`Ch/:>TR%v,Uڨq}d2 5׮EsMgbhC 0W@rf1ktrv x{F%DόEIѼU_]yچ]z5$CIW۪mmmVru׆vEpƙwW.ot7=3;vmH$7܃ qўV7(H$-d@Z/<]Q{JDI/Og S]?C?3)Ly]Ia&EV5jF11}I&9yayx_ !`a"HO)2`@p QKuQ> b☎?,@XrpF[rM1SyFO/̓&v"J$ =ĒIk~"Z.'p6;J*c|(m,Ș=%7L9񉺁!3USu yd''P! 4{t C2Uގ:q9x;"1xaȐBSJ.@1D,vd00&_#ڑfSRi'G8 85gSk q Y ؑP#\ȇ\00P7 NXGbZ=DsFOrt:bzYMؤCYzUPp6AN3`X (BÓD2J1 MV<&v2wKW2uGF.շ7֊V2b{w6C Q!g옎,ӷ6^lB4^xmG$-~p#q CTrIJDq9L3=-O7 mIӅt=#9M+h8i*>Bk<=X>jaلс،+xI[4%]` !ιfpO*O!ϖ'VNv,w OmrLZf;LՉi4HA# )H0ArȰ"2sB^l5}Ь>u [iAP|* ~ 4EGs[r@PXȦ:'[(vJԬDEz$ 3fl lb @OO-i+*{֏̣!)ByvAI XP kLP"7eК {C 4Znln^4xMy'Tg*iHs]M8֭y_l@;2}٘| al}\yo)r:ǴE鯳&RZ7 q3oy`6Iպ,w4F[!ch{ Qz \y2mMρ~{WJ~ܴe{/Cnii?iL-k7x԰ s6Gi;ˏ2m}-̵^^;.lГ/:y[s.H$䟏5zنB'x(H$: }- G}w8#~z<`J~Ⱦ̗D?x0m>S_ھ뿥,Z+6TʭJ*#o_TPDO)*V"SQlW ȰǁdgF 2RVkON_ưE|fxm8 chWLMGaƍ&03thx*_\pe_yCgLM~k3-9ȼ-TJ۵PU?ic[rIhNuVQ9G< 6-Cy~0q*費)X?f>֜+)eVqk1Zj%}=?@X̽\wJ;L)I8t%Ee66kiz{K~8_dkAyL!7%1k~G>B?hzݡ` L5=]{ܓSa2IP #r@P#Q{Et7PJ#LL!1fKAK 00#0O-դ-)Mh GwFsA7Z l-:6Ѐ w26o85$O60?}Cy'UkZ̮uLpEz|ᗪ)Ì5i iQCMuHb唠yvW4}/V炧gPW t=}[0_$+.;Fd&?B ?;}bU-h Ͻ> 4Ű~`jGg%Bdj# ?rk8,bd ̶&Th.0kTCGCkE6X6Sp胩5dCM1|Lul*ڿϕ62ߥ#SS %wد1}r\/+c7&c*ђXӕ[G'7й[V$Y[E[Zܲ^)ߐ~ *^S90`+A (9cPq\J89Pp;DD }AbQ“#^4;YLʰڱUw1l30UKە>9S&_D8 \w/Y|ft]=B w֫SN:NNND";dhNG"H]8O]iW?H6Oڼ4@p'/n)WK\=d`1к$zާP53Єkصp[2fze@k8B 4blw:{\ D2@FGeE&H%?@Xv1ӸbR@4Qgё8ȟb|ZK?V_(ngQ[0P-wӴ61C4DEob f}OsME2ʢ\ %TT6GǼ`YQYH|Ve#I6Ġ?{ב vKB|^AqlPX# gIܟtLH }ߨU>(E4` e{aA>7-v3f\[]; -Ta‰ O %;&SzU"$fp @E-/Wb=M3#sEg\ b!u38Vkk9nzbicO?-6x&vMx+nL+ I_`jg$̟C c\2]v6]]"mʆp#|fE"+Uo;(R|*(^-[s9΢K2m溓D (D3zC1>C^t)$YpBI 2Z!:t}x"2-XsJ"*.*'3?ֺnmОx} ?h-TJ;Dp|k֢*q|I8e:*^-2}lRHVRWkVw)ԦRe"6d\kLYqʼnF}MC^V=DΈlxgMK5<5).ׅ_+g6G<]2zEF7~+C1csӧ'^>y罟 #[x3fͤh%D"H$jAxR歰+>=2svE扬-^2$i5nÔib_l֎^n<p:@W@2/|J O~X- mSNF\ϐV<_qwcp?I$O!BRT N\=YvcH< GA 2􆥬;KYC: s?16Hj놊:3 vW2wA0`8P8V6瑾[Y$̢QPb4ȅ +14HS5 ,iO?CyćLn"7h"gXi<@<E2bxAri-yF\BV{jM ju /i0}I['ɨ.Njig|alwtbBԃe3< ARtDIsUs0vw v& - hNUB ͦfQzjw;ɏ7]m.g&VZ\"B 5\5\ =OMدjGa&[N,\\)XYSU ᘆH5Ϩ@w*n Ɛӧ_>- cLI[?fUׄucnzvv)]sc}nA<9Ǘ]aQlsYTiwR?>tAg"9K@zZu]m &^rrGf<2#gQO,0>Sk.'| eȌ?% )G+*1@Aϻ!qxr_!' wiMq}ԕYOfp##y`bG2(:ׂ3p^y/HiP6 ,6NTC`QcT-F;cH1֐tNMo KligO,2Ti.t-򴫹9$7ՇD!rJ$nL%P2_K=b,>d[;b[VsG-1OP}U.2a VZôZ}=,&-$hޗSSf|Nf;љgo|j-&H5>ZܭγbHK/:LXtΊruK>aQ@7Qo3d*%0Bc?ssWBVhVEw;?D8o3aGJsڽNRNlj_f wXAaK\IsR5_N&թn*<><V{uc8܄  0nT[;nϜ}u]U]~sf9,39_\pǦ&SDIf҂Ĝ(a^2/鲆":ݍ$<4mTIn~q$$6@ `"+`8jS[ʹM:eQ#H ^ #52}Ml%o2:ӏ:U>EɢK7+&4>H# > b %PnZCN+]uid/= 32DA@NG2JvI&>^Kg!oN[V MklfΗ4n۩^+9?Ǭa ЦH"v~0- O>3FPT lN<#/ahnG%~,O+h@Yۙ"źzܲ w1ϫ%&LB3\]s(6-Yw!1{+ Ps{\rE.](J%.}4*\ ܎H$ f11r1bP$=./?Zʭ{!)"m5`̲W{ @r$S>ub0%d`Rо`@2Nܯ vo:ѽFgqOG ַϴ@|݅E"Np_v]^ ݑ?{o]Ov9P9ai@sFKz4@.IcFB%ob޽Ƹ2噻$ H3=șD2~T"6=0? "Y j_¬ՠE1͉ )Co1=h YA t5ZLQ=AUJ#By@(5|xȧ1V E\?ME!2 $/$.=B~ S' w .l H nwvL0u bGć9N3stkz:řEW`BIJ&W Q+ݯʯX\reC~mau厒 FL+bݏX܀Z@F&BI.߷_#5`̟ef)o3H!%.W7gWh=~~f2P0F O| Gu0޻rzT3,%lvNlBr8(~Q:@G9ނ6a紲~ۜvq<4kH/ ]byL=CTT~KdKI?ڛ RJKPi8Fj&GMgPD1mL@o{x#bFdlJJ&x5cQ^BO,d HAM:% ~l`c`N_V)͠XȬ9*iИ!]˻BJZCzi(s䬾$kH88nǞJlVt`oNf2r%"HTA_?"a؁S|^֝L8向 R03gE:~ ױ<7->3yG-&^K ڛP':b)6&s|"5OUs8"{Vq0ad*ӆ̩ܺkF.rRs k9yu¬ZXhH((݅88ǒG QoX^{ڌ,%i&VDf9%ۘ8gq]~l׀p҈) t!QhhI9$J%3)jA[9k>+mr),my5{k`D"f`P ۴^Ё퟽r*x̐Cpr : rwu@ zK.1Ue01BO?3=a#&Uͪ3Cr9,!cn2g]êF7fӂ,?}5$Ԑ6h X215ߐU9-+qeՄQܬWH܎J#[KXIve^J|u܎bG쥚'yjfԛlxfY=9=ҹ2z&Run+Dg1AlN땻T=[$u8fyn(D"0e@u)}l9p~2@p9Fz[3!_rvI@V^%F%˴\7;w Of II0ќ;5 BMZ<*c!Rl!5Q ((!0#ľ5,ېc ],yMwcܱcEROMa^rQ>č 0 rc* 5Hj'): 7H?Vu;N1!H/gu6 FZ"'ImO%_aG0D巙<0>|GciiJvsld1y0 @;11UcWUr*eyUhj'78ͱo:g+2 @4jiq%Qb,&V#kzHD nxe"fr:MSmyV˱Y*?_AnO ~aJSה Y7r cQܫڭd* m&s7@ 0$Tp(sl#=8usqgH /hAA>#Y`n[Ijޓ+tHF#yIxD)Wbć.A7PmYNts ]aM/4:EРGeMvitHy:_37ܧ͈JhH ?}Ƶd$@A(!&+0@/mjNڿ @ťr*RVBnM${OGL\TWnP.f[@A_dE q#[%]v<\-+ \Ru>Y%5 ur;ʂ}8{;=[N[{N^A{J܎Q$>M2Eu_jPnE׌8jQrp\mƲj'9BH$D?T3@[+q s}J/\?~^M8g-Pfx du l  ݾl %4g#{%Ҟh^Hi+`0NcBH5-g?=87n䈔Ҋ2s&)Edh 3(a4"*obgƃtUZ4HJ> fdYKӓ7UKƼ539G$;t>7k&iؒΗאe-]d;Z8%n`F!-7J }dg8@^ )8 `D* E`uQ=-A'ħ4ѝ7pXU#s .2Rm4YUtXfǕ͢nd׫~VaS=GiSCciz-Ў3gђ#)ke F٪z)w|Դn&|uWv:ٱ4]ؐ6#0^D {mMu3 *-7YCtZ3뱧m8I x4&l /7׽Mw\bjU|؀rd0-jic)sJ'"eϪc%IZHLCt,]ϟ`gU-/S5lpxؚ#TG2Mc"DN[a;$0"!{z>'@JҍT"X <0 44ُw|"qEGg8-5%@ R 0Lq"E.*0 &c@ k\aLzSFX*.S1}sruiMg~pǞzYMUa1D?ba*orUmG8L+tĴ6t>{؊g]v{PrJhZWQ#D"ѿPR5@sJ 0U+xoY^b]]x]oO xsُ܃ƨ/}fƹogog ҧmcg| \X7׽0uG!` al>Ƀfoq][Vw ;.߿a=T"Ƽ" 1hX2ﯯwسeyȄnZA/ߎMJ IcLʓֵk놤WEdSTN Ce>Ē(D 2ٿ|BҨ+#8bB xHaѩDG @G7?ɸ'4YG$ ̳1.2r: kJ![(Gr mˏZMbПM6~b|)Z|'s;o,@ZKN b@铸jۑWR ~2`j$2)x%8H<  t28ln{ۣJJj գ ^g $碹׷ĜcF3. 9~nkB &D/E~ j, PkҷYźjVQ-Id0}E]*ytwt.&Vzd. ȄB?ZP@ 2gHAH۱&++oCEڍKP-tP|?pz ߞ:b (Z d|vgk$!ϩH/$q1[Jl rl0@XK{/z7k+BޕK¼6[);U .QGT0C&=d"2>z} ̊OOneal Զ)$iTf˴|6N]4UEk$fӈ.L&>H 4WRp[ll;/I ~pLi9c:/R"0f΃ģLVpVqX>o qPF!(d7)XQZd" %s-ݎ44ʙXuUZiiۊv 09I H5o!^`.o LS냃H桰 aҝ$A'؀8R̢P9Jq(YYhΚ*™I):ަ7?{Ed+/=dILA:FI @ ̌tjJ["R`gڭہ509pxؾv;`͑z@\ d0~f )G8v'hHAg #+&ׅ^B1z&?uPezcOHCazM#]V3q a$֬ .D`hFkto;ѻ 'y1}yc$ClFa:fZ7ڳ-]kVX*t.D&s$$ȇh4e7 H[I-zi&֐9.`b,KeB`y :~+ox%"w5/]"~ is. fFGb3>) -$T(A i59+]ǷƧdT -{6;W822Jiě,sdN XD:ZaMa^ dq)k&[\1@&h>9iI|_N+Xe™%`fƨc1cq[`?H }QRK6MH$Ә88W} ~adL[k'N9Bwc]\aae}e%aٵ Rj}h:c 0$]m-_NJs{1*0{r3!Y|:XbkqcwLXYa/&/Q Zn)YcRm}_u/21,gW ަJEM׉a#H$~oAm!Vsֻ.}2@ޛG$D+_Ѵh@Ӏ\* T%=?6<& @~~KPϪY;Mm}|N|fGA{زs{ 9WVAYs\]Қ h(&wʈ2vɸ`Cn,ӂq!YB A};fTXkMӷt'HK0MEdYnS4a1p&|x)2E{%9` LOcd;Ni( OLW>緲!ELCJïf+ +ޱ%QfE:gqHZ%zK6T:>;u(C0^ȲISDE%\d| }D5@uR!K,tb蔖^´kzae%dGid:uLBwS p%攄GvJ!?!$aԟ骸Z/k2xBh *3) X!D]qȉ${!877`M=D lt$%&æ SEM1lؠ gzdט g_LFۛ9ЊpS̴TU\ա܎sd{>6;;Q{̀S:m`gcW,Z8PeW>8q!}IQ/mXqfelSv$cMnt_r'E?8XW`ES9c+9 QqГᤱއHtLuuN D1rQ4af)%>Ϻ}gpab8AI())*R,2p2È8L<ЉDo(7*1,,5݌X4:bC2#ޘ lO Ey4a:BxP#`CЙȂ _4WP'-ћ>4HzlDG *|,ǰ.}~ oxTu1`k23 2ѼMqP~!הSW,솜Pb1`h9=P< KV^#V|lSҙ43%RP@#p%y6W4w]zKv2Fkf%^o t?0{-7CBՁ:.]eQ/kBX8Mx=7ݰNCT]Pw6]=6"|wFu$ΛVwu}7b~iqCݔeFԱV2C "H$x-:7;Z?ۓ[H7ۼ6fカ.l9m|e`lH*n杘}}, \Or/O=>*~Js T󙍳fT+:H {n١Hv\F9^X$M܎W$D_*noc͖pwTD"H$٩7])S2dO!O+ۺƥjϋuMLKzkM.bbZ]YoZTt`#O~!41zIYZ_T˴ ]t'^"xt!ScTNa4b@3H3 #Q1uLa H`:+HP A{|0dzXg@O q2K1 7$#g XXO899`G[x7sS gbL`H.b:JըFhorz4ruQ&bsRwQaFLY{mW~LVJƑ-Hm1< }Bnufj"8Nưt<:"]1C.tE+ DžlJQJUDat6.-:0uLL\Gy6pQ3 23$q#<&QJ <$a͔#7PAGa!PBz ` W b1)k7@g:D 츴$ҟ@%~}x ^sib3eV:Lj*֓8Z'T1c@i5Vd=rk?cWwTmtYW$@vM!Z/.敶wdrsqĬĬC!?M/^6xTpwj۸w5A k;u 䫳 "uvwc3p=3(4[܎C$Dg0?j aPJ@Tnen甞+&tMj6N\8q,>Jpncp;jHh1a0g4ybjnwڛ\B7d m9mN5k~?ߜ @ E`Xjjz+fF$'~aa OqqCRC>;q!)vց1D(s(d;ېb^2"wcTAG0 әd*m /OįpkchB˧ J^!e&3a⚤So!-rilqV ?n|da^;@Wa/I*G*lb^ oI:kØVh@*fF&ۏ# CH*7/ԎS%E ÿRqf>H Ial0"m3А+f2#Ty4DϗMy B(ȼbl s( Ӌ\Cj;P 0~ و9+/+ VXH0 y6L0QcJ#!}.xsp>C|)R[ ڠMnOA<9욳 +<܎H$ke74gPgu2{aH^R6XvbJit66] JhQ~+uk b{ X0mh,:P+^,LX \>WwG>ԝ#_(c+FVޡsmȮUuNUҸz&\VxZ~CSmSAEY]+&i~ƾpޅW {^5 9>\bTJhQ#c]fQ85n'0ш"Q6'5ybưMc0cE/ʃ$4Sr~d< `ZA)Nvf7)J 648e&|A8zOđGdem (f+2 z))J 54]vuܻ#!aH4U]omg)?S띥/a!.o\k{0Tt o` `󏈛a/D ̡Gm69M}FXyu%(P!<@` #@}hI%ąÙD.nt%LNZ\$h1'3ՁBǗ(0aR&qU#KP E΂E&^#;" M Hߎ!Xai2#/*"nč33hcؑA*ae?,`9CB#v~ɒM[eg Sʦ1.*&CQEƐ'<$<8o8e#uuּ(4ZE %6H @aYsۑ'P qtg{mT9}j9?N(ݩ-TU*b{"ևۚm|}~p(1+,{Qo諿۳%+^M5Ԡ# }C߄^#c3PrUv:yʕ:wjn_s)>UF}Z`o!ZԠH$DeNVk=w?Su*#$95G0 }rE5=v]"ná ~vs}pmߓa\8h]Чw@iDd!U[ ~`&SqdƘM\;>kB"֧$4Gt@~OC37'% Z> &?< y[X`?yA䇚 e. ̨p p&*ž="-1ݑo*iAwH%Ob".HP @f1aN_4Ke .[0g1nDY`&raTR`X9{})Ը֒HGJ\'rhΖ`˓okUZ+[(*'c%Cv)pkZn4_ADy;JI'\bm| ӑ'Sۊ`CЌܑנ-q0Cӹ7ƫAvSqf` xQӦLY#iiv4Ӵ]k=npfw诡Ad:MK 1tTdN@Q!\ 34HMY[!33 ` 0 gKALp&Y:Mԋ\UCb%Xr%L6 FD׌}D[pY(-ދq X')&z fmL)z`:>`z< ؈ %;dp:2PnE.İ6, 7̎ROA-ƿ)_J.t,m,جsTrArR<DA\1R2 `-$RƌmZd$_w1-ByKCp_>ȸ=CߞO%6$Ъ˃ngh5c> %y}wn#ku(?zek]^ $d Y۳%RNfNfNf={?}a|YwcU &zlys\t5 1H"Z4h[Lfĥ[.x%kAM%{\zz#UT o 3KC`a5f+o"gkG /2-b_b,t̂ @]d89-EֳȄ9W#<1X(d2)@NqI7x3裀'Дa{\2-ِ&|+Skߎsq;NI\Зhq',2tgY.Ӷ*8_M=;&QMr ]Ӆ<&IJ 1%skH ^\Lx aBuƃ<%6vyMY@I*ϋmyG ՙO xBR位 if7h3.ZEB? ;`+)k(/I=I!}bj 8.5lsں ӅI:|UjP^&y%sdtPÆ6&=q+%p(jMKKʆX<7}"2]f9y V^E6 zBuA 6NYEi P`g8 ha ui٬0nL:@1;Q'`W|)L -B %;/ƒ:) _T2ǬNv*OɓX`SGPcuryVOVB<&n ]K|֩;D_[kMy<FfLjLTz",Xv/^ؽr;=ЋAHs+?מ\HLKֹH$9TG+o^|Ĭ{6m;gf,yw[-qNPA@!Trău}?hsڧl Ld[DE}02P sP7Wi8s `DL p>ÂDN{85d*^9iݳknil ꁂ yyk5`<&cⱏO j)ciF"F,՘bfT<`spo)(@!jĂd fcHMplEHZJ;4lO,TXFz3\e>wpRve_[zCsaHpng+j:`Gvq;wHXtx{g; aZdZzMf+X˺BsY3Q Ή G\RGԓSD =$XP8t4*, 呀B^U1\{k` -@}n5?1*HKsH-ބZwGPF\ #X.I'Џ$\`T0?)B7ܾ9T2=\F *FB gwycلeor(H̠1HYs`bE@a=vҝާi~W6 cH^m8ޑ 4.f$c/=tc MѴ2) @|ƆtFBӄ =-n%%"3`5 @ |$_HJۤh82?;n X%6Ĉl ;CaEnLA;+ 6Z%yT  M ̸Dꇝ.ʺK=W m%O3F&߶P v{CoJaY'U͇T׌) H$Dβ#1\cHH$,bT(Uex|FkW.R>+N+dPvP @G'{1`OQC^; 0c4\Ҕ|Ew b=Zho8A ˞,tWDjb! 玭\uY힡=*l&4Y|ylᯬ` %H d Y2*PD"&?[`A @`@t>mTؐ'%+T$ɰEZI r-zZf[ =On KB@8@`W8-=-ӫZUnx*;7kw:ѩç;`+,~xa.Bo'ԕѝs荎,9,%>1ɺrg}>dFμBr,(2!Rӕ T(QTFKd]ƵDױ~, B\H2T~yX _uŬꌭ0Bx=1 R9IٖΞ)FiIЗ!긗e,}u+k].=+^uALfў5;TmHk|EىDB8)m-@ $𮳁96#Gh&Ihʰn4vK8]t$3qdc- xa: A 9@ikXLJ%3NjC0QL9m?b̘)-k ͚lJ}XocJGM`!l! hkNm#dd@;+ ᴛKRPD~^\ {+VPHn͏cS"/Ec~Z4"QD s] FR^QMEs{nD"H$j-l(D"H5 Mԟx1`ק(n ős5/})Y~(npA҉"o5 tYSmzKhʬ'v.KTo4*{LDs .^* HȂ>Gv/ 7!S]3@D`Μi`H矄;4F' PD(xB;V-BԄA dAя=Y : NA@<%Ft;?QȃWDGŽ.!2جǻxQy].{'u5NɿCKg5y&[4!_T|a;bY4 OI; p"M0 'iմ5&ULqSUzR(v[)1yYT۞)XCJN5ϛE?&>JliG:Q>v)$oe Z:L؈gBpʶ&4i'W9`H_U-L[2Q yu:eVH 1a[̃:77+ܽx-}=cfe LVe{=y>=+}mo>1ax Yw TRX`Z*4ӔnTcקrH$D6`hnG!D?UG@ֶNgwvYl>˜r,}[5 weN̍)䓙*t;-NG1aDz ]F ie '-`@ ÛF%$si`qPUL IM"xȷ&m%N(ɶ첥`梐tQNA< b٥̃k F9N*=}zrTUyo@]dnIRJfߘxa8vgx.+恑捦&vc/yq6tz$[d>@@A 0HNIƪ%V82]/kZ hLE)P0(CPʕN<Զ:uh:@Kڳ~og}- 8 ^2xszz3maCze~ k`9iJQ '<>2(p1fFۄQ)V3_|R hZ =)-k.{EVА~sy#3fOn.(fasuH$DߗEsr/CYģ2=&H$5s; |*SJ 2KO R..6Xxͯ 4E /r;Ƕ&p/)wڤ~w]UOh{^_~f+{|WXYUOs]"oEa-Nv^-(}(=6Z?p"E}5H.T褯J_&dyܡnT@?:`wS>DkLOj-sއ#d03sݛ122Ae[ظGcy3LP72BIZD3]}$tYW E0Uz\sٚVt\t!G# {-Gr䫖Y0k&vwWaߙWf#&<ՌHsn)[$u"  *rҮufiI4Z`;8J9D^JmLa͉\Te?5Y0MABwz!0iet 3ɬ1wڵUQDNwO~MLj )`M:3;\`nXuBԃ D uH{=v(y0]KҖ*EζÕg5).w|NBVoI R4Fa[3Ce: rhnh'x#! X40C 9Ć9˦Q p{w3ANZ.b%sO՗6+=>J/Mc}u缴ZA#1ïoI=9mI&'THl{Acf!rlt )`' I[kzM3Aht0M"JoDmSU0'"<,hA wt  г. qCɢ*/15o{f5S w||k|^|N@{FK}]s{>r?\@^ҥ{ZXʻH;0?o-/D"۳<Շ )C TgD"Q.0BɁ:2|dmqf<5Y*@Fi( b~է!@[F% +]Fyx]E }ӷP]X,|}y-P.}ujp)4u'uWug^I'Rw%TTm1f50z3uleQMr}7^SI0sboUY?t;ǀn`w"}51A ! R|thtJ#~z:PBꍝxt(?y6@M <35ВE5Rl,p]FZ2;l eHж4BMӡF`um`+:3 [3BBHv-MP*vppi0[1x ,UUkw1؈ƵN/{\.cN[ܜ\䔌sQL)Ű=C<=:nqx:ՔOa;O*ekr L@l Mi$q~ubw' A XTaQnkdg62v64) 01٦%I5喋#.\%c܏-#ӂz}$QLaR8JD=1x<N 8Sy!J/T$!K#iGweR C Dzά$չ2=ơ=&O>f`u؎?zrѐ7X0wz;c1r;^0~EgW,{90@~,TVu;o/7<{`&K> &K@xfh T 4aQpEhp%x۾J@[]W}4ɿ<g ]D" [QʛdT (Y0BBb [ Sb$ȫh` $π$ 5撑sBO8g|U*Blh"""0},_#9㉕gA1ZrqݭLkj]9 .Wa9)ړ%̃b 4 z-ue-\u ، |[ne{NmpI˸bw|9-Z`SUSW88Ĩ"DZp [h0m&[:/y2ՒF19fkv[eNH̬~Od|ZRT*-( VIJLa5<0KiB0<`T5}@vԎ0Z֮= ket kKVZ9mNL}y pC".NsDL{n9kJQe4 *ƣ= hW1Wο՗6 (  <3XsyE )$$9,d'&&G*P+Lt/G~c7)Ѵ3n3ԮrJ%m-Gshڊjѫ[Dv.*a[A )aGH"t˜MxD/ɸ=fAlݼwq+(J0a~2͔PN]Pސe2pv0dzhfg-<6բiOzT1f.ˋq`⠣J`&@tzS5y?`ƖR^"Mn>kpStNمxMN%!R!@Ueu`w2jgM`^)D"?yͯF<{ntT%@H$sny{7oo@ևe6(.-|kS&:6n.PVg}czޟy$Qg>ϰʴlEmp(٦,P+|aaa8c8qs^E[KQ`|)CRtQ!;pt_X h-?~-N. I | zYʌYׯV}4Z:~u@~ ~TZPp<q <ѽB<Nt݌= Boԧ.哝np3mz1~8pxJX ABD5ԒYx |涶]5xMZV FM z nm:sEAy$0'U&h3]:(C`Qd6OAEX ۗPh<§ʍ~,;Z@i;5w7cUTh69ut9Lnab,&)aԎWYtmcYOG׭Y3004M4<`+E# =0@%}ٺ7MrwI}fyn2 5m WR1 mYNrٖ2bQ5($}o& i)L3"!P6 3K{!Y`;{TUҁA+3(iP Gmpy>y=(X!Zb% py?q첨YA%'LfֵQ5xq91>h p -KWn }; 9;:0EAW8Œ#Ѝ2EcrMM+$U|r_-ގJ+/3&C%]sU˒fz4G˫v*m[ѼQq/!n.%* %Rp|)A5p6tujX7_r|;sB,@['3UjV;\(x/Qj}Jb/'ˁ'$ nޛ9;9,he:I8M!p)Q\o*o cZ }v͏S 3y/5(#1C(%-N@6 @c0Wߟ?-7X)eaNO&-a.=E']%H->x0GQ)&sΣn"O\?aٵrMwq ʵvy4z5v\`W:rsy\%0KWδY*j=rVtD9{{I; s?;2.h_H`0+4hn׬kp_f.e]$2wc+X؂>:~YknLl0;p8Űa-+j[LIa-OP8(io,)l7I),Q2èoi2>uہ @ =+ūHCK`a.d'х'offy#mg#pEo|whDqlsFHlG(ɹʇXx" EF<[GtuL:Mh=>NHȜD*i0=w3~aˋC Maa4⍀b(;.ӗgz2WH F]*Bw:7TwpWʂlA'@g~6@,4%IP;s qgPr 4E‿:Jc,"4`c= Kt$ZT{M$ eS$)Uļ,{(APA=hiqB!IJ!&H@MXh}OֆO**YB]<@%`^b/QɀB1PCɨʹ]''S o{PW H"]sH%N`XC,) չމ3 (.5(`a_pm~YFФ<6+̗sHo bh@0u&)]Y=Iz&0 ú0W{t|q5du FP%֒ʌ ;ѡr^ۄL^YxLV x^v q`m Fߕ=k'.M+TPfk4 Qay 2+{ɔӟFOx&ĬOyB3o'ǖSVhW˰iVzf5ܭ]eDXj!=_u@O%A%) $1MF-*Ѝll'\#nzOs"2x@hҋE4PK|P:efF1EmGڠaKHs^\dtY,˕rzVfyNϬR)~?;-W->R z}"  _QJ r1eO:yתVu1*l%݆[>39Þ`ܞ _Ai4΢;"DΉX `1¾ *STTD"(ʢN7N :8%ZIv xF"'D?/}_:poO]Gu,Xls_Țqk6*ShZӷ|36757X+]}êe6tlTf/ZoP};`u8Q4gA͙'OLʟA^x0k)Sp ci\~)|) `R@*._g=Ϩp Δ0qԖ7 =h?@wK }uOs~! xY`=V"^E _=sd k(!\F!;h?蓽zq:L D3%e (09t% "/-p.J~fy$kbP EI w: +lHC]c9!Hr*;CHJ d=_.2IB;6d^:'A }s̯ؗ^/dG^%_?>]Mɮ.X!U5@"_&f&f<ʋ"rtx>U}m4)w_Ҭ!wkL{rIbLx ҃:y/;1B>joU)|Hd;wZ2W LaRgKWTطM1Ͱ; Ze^9e2&t(t?Ct4Q/q$I_CzX34}x3m=:Nq&7 !쑴2mz{g7}&W5l`$Uџ@+(J ))rU5M~]X&i-?WMгk:zGǷegeښR;rONGjc0L+ =32MڴlX/1 d~_@*(_XDn(ݵfNڎ6.'}˘}2am4db,MC/Tb6]QL_kB6ͼ"%5yEF3Ikr88FHLi͍Yzq:qۖg5327oHo(mD"U- ڑ3_1!S1-$倩wNKhL nU9uivc|pjRԌP x@(}Fg4(=Qaz WqP9;O`'ᵮOtXCf!TCE;1#ˌ ਊL ƈEZ[&+zny5 h&XIXĭMoZP4RN0vx\X$9;lonL$~^ʀp]BG_S_' HAPc,ãȚ6;Q   <  $vw5$fNשS=TUbgMjO0dpNSsGZPʿ`k$h3Ŝ+gK 8y;Hr.7Y^ZpqIKu66Di;7

>-* ih#&rcBrt!'W9vyUS bV1+EC(ST"/D*]Cco*sRFl 5Ӑ#JNs UtȘ,:URJkQמd ;y~6 V#x Iޏ.^&OF&~1$#\IW#1=j$ץ=N{Z@ѷvƹ̱O_T2qߚu%[HGq1Q Vl3䘖(Oޟwpе7m6|cmiqz=}Ճ'^{ڸ[޺DqO' =n*2XswP+u u1XEԙҷA\WKV [?졘t":VԚDg!KVYIK"KHZtf"?^c T egV[bmPseu 'Cc==|'ZڣꩊVer>e?eEeEer)_s%v4\)-%J;SN9| %]́~ss OTMe` w}8?q UIoP߳gj*h6?|΃۷hiӱM2k{c.b5|Hi!}v|U!_ݶo >2g`Rd8lQz"v>b. qH{g϶=@*K֮=O /D4(O\z1: ]vfDžۦUΪnq@ߨSgN6md>uQm |i,+SA#D.A\,7Z nB@u,FRLWSwꍮDGAzsgi`bB &dbp73k5H  &ˮZ|ZO`o$(H ajB<ګCE~pIC  u6d!lt ;=h{Q +fh3BxBͅj^kmU|SS ١AAeƞLhTل@\ V~*+vdYm֘ϛ_pCg+~uD );ԋ[|xoq\(hWԄbF-vr3NϾbY\EM8C@^CGTQZ[~;BTԉthZl00 P 'iH mt)L^8PKn. fW֚](BsԀ Qƌ!DTNdZO/X&< g:wK<M^t!gtV;%z:ۆxIix(0Sp?,<{/a1 #~3ގLĽAދO.+4 d&LXo7M;ք̔gT} oʎZh@u-.~aov1wGKH|gblm؜&]+zm1gzOD}5ދ_alKtUzGώ P[`O?> 1$ 'WdɈPE>-얅H] Z/[,XT]^%ӥoe>qfh%T؈o(kQmц'7Y[ӇYpYw^5/GaoU2p7.bbmևg眧./msI3{*| PܥihVHC|Y/o(ZWV7G nt*]Gsԋ|1>Ly8J}GK-@2kJbP]zJ[y=Cҧ&"  wrb Tt3}bս:(JG_6)$J| =CG67ًZ鬝[Dy(R7?;q I򍻷nSgU]6_]}~^pѺۋR&1-꠶ԀYxtsϗQڿ0SG#gHE Y-D-a[$voF 6̨OI::6PeǓhlX-͚v:+iWSs̨L戉 r8gDzU kԹfݜ%rY >`I 7`e ) pj}8P7`P m qE)7M2xf+y#T$ypD"]dp̗LkvN I⎺n,ًğb#f;/Յ/O#Og ̧c7@qR8b HmV ;b|IgZ/d3:Dw~HQL?w!"UgM^qy S# i,ym'ߜTIdlnbpڶoģkUe~JU)>' ٺ/0K?fF)>_ !eh@\a5vB@RlC1ߎ6!¼?w (;H'͠Lr&nʭ{J달gc\]jU&e{6Isn4X`P+7UH}[Q<兇$3z[ ǂ/Vvevպ%p@L&г.iJierbX%VAWՁ?J2VxeK9S 3Oӧ_++r_ܫ p]? vF{Z])ڝd/ - 8RH*\56n9QITfu:c11jffBQuʉbż{7.nܒw Ël G*t>4Y%TBߏ3 5nt[j^-+¦L)30 JEG-\lµZ$|O?F庬q}- , iYf42^71GCo)!ߛ}z׈{]"{Ȼ8o}eEywtxs3I>$v֬sӯ\}ޭ7/.mx]C7n| PB3%OpO•̿bGsiﮓ8="y.V+Ϩ0]}n+bx7LSEBx9UW=`4+xZIb.OYDۄL 3q~T5q3,o0‹ , nK|ŪLs&H4bA~ kr<{KEFPmT!(vpuNg'ytSuEmAPViY 78Jivxgņ)iuى)-K;sg}i͆ Nj'0j'_;>u ( 57Wt06 *JCP4}k'RmHrMIJWHVx")P#~v%GlI4T7^i ]l=k'z˷%UmR@#aڢZa{ osbp7*e<}w苫I8F3N% (l,} 3ƣ]R8廣y(y~&z>:7?f d LUIMz; 6G_b8h O{5z65&,cOt`)9ȅ |عqʒ=]L5ya\]|Yf+%Mvإ{F]z-hmi94[T4(h5Dgc6R 0Gi#X* U*goxD];%onxo cDL=\_z߽r}mKe̕޷1j"z [s?SH`ݮ9P|mjwP~kzrY.PyfH~O1Fn&a;-P/`Q. p4p);n͘jd(;@~q b?@Ƕޑ")}Wn<>s6mʬ2ѓ5-CN }^pݵASL[{^R@꯷3ڦ͵ZĠe5PJHP@6J+&Ǝi6duM-H?ps7C9`FY[|s>'>ğ,I4N:@(ErṷCsIQx[1 K2d~*tOf#v~}Io!!@@?@mU5U`MKmCF x4ӛ,=r؃` O3rU#lB`f=F5[ED\UioӮCH!)C }:OFILAEg#a ߭(`:WI4=Pf_wF!{BgOX,3+wNov}g6_c/I:{Tв^ k]i_irԛGVSw.n~J}F־.No/&Τ,k)߇N 2g-7D,:)љs|]eվ>rQ @޳M @]p]7 qz_ @B@@PchZ_,Pd 8d= z@?qz8toP1L$ZL~۟ݬ[2VT:F/`PJmR8S)^SZaW,CFٮ@ 3wM?"O/г _ .Fu/!V@I_[LLbP-j"z=ǀ&iׂI@=@KvTQVR Q 1~-hbS ?s `U. Kf~Y+vvO_Ǘ4.S&fVcaQ~ҀLO=]!S?w.j%`?6R[]7vPV#%2Ot}uzt1mPB: +nJZ&8g[;pJ D]+P 裎nٜ򣬥y Ad,P{&T̄UHé00W@=CQC8rC*|oj#GVF}¡&Z~!Pp AWc^snFwDsȻ, }ML3OU=ݖ]/|ؕPWٴOn|CQhf6ɾ=-w6p ~ͧj+&Mž3i&QuGAL{E(Od2 tMa֒55) ^5j &RK*,p{^H3Bk&I٣4l|20%3ctGQ݆rlBĔ߱ɀܠ)p@Q3Ú^JxCf)t*"ˮW5*2yeTԐ̧\ W5\y MA?uCL٧ zn!Łz\N_V4 b KvIpٴdw[G"/-ZvCڥUIx703 p-G<kJ}[ptrw.rnu\flJq_n:rEMn5{D))LsoP+-&1GՇ ;R՛\]YkrHVhfzrCQJNAwYX ogZ P\I3Pr-EoU^f1@lPhj.?@ @`W 0otu?h1Q' $].P[S6k>Qy|qnտw%476TX/>  ?0]A 9vh8 ѕ?Ы?N 2; `,ZҷK\s;Ҭʀ{~shAOF JL F@MoCKr,a2Y0ܲDgN%R ާ7O,6v-=c,m`_ دwӹ\QW; w_f3Pk⡶턝8&y@CX,rir0|o¶iO3=lymIH\d)Rdgn4u[7ݙ%\$yA˧_ܣסЫA ?>vQ6TDfNGYگy^pchB;/LGۿg' m+X q9|-5lWx?PsҬ r$4H# қsN\n tضcm رRkH9&:}Vz @E_%Pٚ t54^o^4\-Rob׾JZ\{L~Q2` |T1`K=s>Pe`iقKlE&h4$6*w#;p[wL7~9{2?Qɟ:L湴^6}[N/+(,mϵ0E{H#nΙk;nWTvXM |6>KJROwN6X4Y4K4^񣅈qﲣ1g7 ,kzoya9P71rfn 4XAPqM|[Wj ƶQϺU?EtNZ}DŃR|)q%x9;), xhqR7uom⁢\*yF5iuE.'Gv&um)x{mG#x"wM,JR':+KLxM{ci "0a!̔e%nb⑅Xk]daҽǺ¾l6gA觎jb*G$Q hh?Z 2+0`T+0]~j-:% H{UfX OVP=BmaYu]7k2yK_8D0 -@4 *uf(> q4M? <` Th/bd)@v3ړ3Bx+jc\8j؀%iO 1 Ʃ.JQE_ q XQK @RP# 2N.o%_2u o }`+./R +sZpܳǼB؆.`22 4Uc .fS}Ncfq{Eeo@igHÓZҳQ֮^jڇ ^`=xO+M؇J4-']^w]LבJ.jkf׷{5W 5֝?iQy`*\vcFuxH6QK-i®N?_Idކ)珡 P7t i%qT]Cxa퐂 <>vܷZ1i XŲ8erk@sPu3HVv_2Pvqo F6o m e4ᜭCAlZUp WpN>PEL{Şsf7 g*(JtYmH/Xo 8L/ժ\'-2-@:Q `[o1?7Cë7̝]:_rɄfS-jcoa0U:TzfMN{LZt{/@KT-i \ Q 'k{<`6@/^ Yb)8` bvΉQ'Ѹ689:!pjeL̽] q=,v~R'hGW}JNj2Qf%(My_)? $꒦p *ၮ Τ쫪@+\(^t6#QAת}5ICiT%kE+Y#I&ΝkGѫ{*sVΉ,`R .$,s7!G3D )/^$:bIrI@lZ2R@/e Ozh3.Bj·&_:~dӃԇ/|{nrރkA "HhJxLƗ\/rnofz$ILqO%@Ŕv@|c(@!@>N(2ixXJ˟Y{Jt_wA (lK}S=Rs\1TY~H=^_vrdx] _ph6֥&%?>8.GBuA3àU:_8lCmcEuk3|ӥIK>Yw,k m?{,DZ$f}|.+)W``zˀ&GO2QgM8c8CȧYS֔ U*gU,: @rt Vo$|cZ ,esض-=#C]5ʟڪx-O?SgO#2c`OJ@OK|M^z "\]&jÌmbܞ/ˮb|NԒ~qztrGmW uЁR=8b"@'L#P O"@mLd̍U3_n4^>LDAnDr3ev8:mf;| |s>oYMn i͚TR{_pv$dQ5f YOKƂi=dfKq=ےAwIOZ֯ ӶEUW$KŨ޹n;E-DJG;C7P~ dc@amw7誰:q׀E;+OG]qr YcN @>^Uwhp}K@_U@``T׻plt ÷p@ml7)F# ~`0=v\E" 3*V/:tv: *`)fb֭Ǫ)U ?oݯO=a^xC~Y3}^7XsU3MD}DqׁCOYXV/ ,T[ SY,n#fM<15LL5oFJ0mükFf@ ߁S蓒:Yp]Ddbp|2gS+کZ@l) !uߋ/czvzE_M@=*НTBSiSx!%`P y k)7'! j|[9ΑSJŋ^qB79(`@C S4U.*'ed֝<ͨZlD]7bn'$@n;iABRpS_!ĉnT*+slaW߮JtU;LP|}`eGu\7A ]Zu]a˔' `u۟?{v@B0`7(@RQ V]^J v9,@0pD.3Z,#7i4ig$3a KQ؈ݸG-hCDk^q5o52zqyҐ:Mc=uCh[ڏͱ-,d&!uN8UčT=8&r*yG2y@7r|mi|/%2>]vG<큡K ?ҏ=/5_749`=DW=b \ yzfqPDM V3_75˲~qtumas+{þg _( RglhtC1^٧"8 $ڐKOCHm뵝=:wtLLY;yBlS-Jm;R>͜+*P<T1k &:GhSϽztY*c4CW5ʻb*W$SA9Z W4| SaJZ*GhMxW98†Jj{uP*oFljF@!Z}7`(P,Kvk쿱-Pc囷IP{$y6O΂*9U;4;~;af[]wnjοNy^9D&V?4Rt]/KKɁ>e Fa(  l13i/Ӫ߮Z]lG8d⩋&lWի{ϧMˁC=@þ/E?/_-PRy s:]X)\ U(t!N08tBތiճƂg\ ϛԾFck3Vd$ՠ6IvԖ[AWKPEڶ^ɕ8euBY'8zlnpKu( 牳dK݁+mG&|o%*`@0Ug`nA1cg-R\քt=CU$^ j ʊbҖyHP?#KaeEƿ ޗPPy$h̴b6ðc:` %M@BZ]̠^;[vzlݒkGlܧۀrd~J9b1䄢YN# -د~rVw0\!޸ƕ!TX{BuD~_t,=t<0:L^g/ оV)53gE7:M}~}LV&6ӋjW :wR18 Ӟ,q . `vprƌN-t} AkH8B=@2G5+t0v3V: e_oop >Ee'ﵹhYDk}u13L*d~ŶHWMpnav?{B[' ie0^=O|xH4qq@E8'Ouk3 sS@)OXO&,mt-0er%?&pe"`T_.  [xx`@f~ЁKOjzFwP>!JEY8/:EX#NоA` 7%U ^Elz'!G'is(UvQ6`\pzORh'=:a{zJGcjDO0ȖifRH5-*YD(]׽cf~2i(܆*)y ) >F!KGd3tDZ-Q|m9^X׉U^EF/UpTwhTkwu ƛ lEQҕ}@Їt"vT$můtO q)YsT)߀Dt tjJO$°Z"^lb|pFZݑpB:D! %3j4^eU$c&𱍁$WZvlk6uF]~}HƋVg\W <((?Ƽ8nw3 ML+z&ely0: 6jr52[ߨw F.1+>R{/Gyp5 5es+N51WX^I+8 ',J(*SS3mޒ\NZ CH-o/ Z@UT%]z;L Q^2r$q% + N«' nlߦKԅfF|^tF@"byՒ0@}֤V6~*ɫDxRUk$0i\DNN=Q;7?'#oIhFqXW~71ZFB>u,hݟ-,jԘsj|1F#`9e gh%VNuj:tgd+e㏅N_elRTD[04j] YĸYrUKm#IY3x5@GPMQ{'w4({Af!2N£$Ijtc?H אאנ4)c\HG#+Z_& K&/62n8 Ȗ((@%o?'y jl@g?'WnM}:qg/֝jWϭw;6<O\p8;PZ+̏__U0 ]T$]߁dƆ'WUDi>{ 5Un ~v'In܇qQ _ g|bAh\F:=KSmAEu:ͮ~!rN!WМ,T_'<(uiy{`)͞a3L 9oIݨ _b &nv_m涇Di!"a7h =B"p6Qop ,v,=h'9Jsxݘ/[_tQ{ʹ-a('Iyy3 )_el3:K[|4 k,G'=6+R.K&8d6blx 5i5*Yv3h!Bm8 nc) ;{Ij["&! P, o޴qftw~y1kfNs=( +?[~^dvNԘQuzNEz9 ܗ덶n"|.]8 P0c9b]a>0/a.uW7 {jͽkYU∗_.q)\$72p_4nϼTå"fb9nFF:B|~:Ǡj:ޗƢ̓庍\gC粹q)pfh[eߥ)| iS:gkWzzl|ۢ%"-^q<2`[qnm2q G!A5 ¬u-!?eR9yG]]d84d,ܒEWJRd-aYCu3hoo%bjf.Ȫ)7|͛0:[< .\l௒[>캑\ukPֺkNO7tBinɩ#c/Rr}#Vڮ}\.ɓ1ch@48Opw^$[CZQ*ͩ]aC0JVor)/PLU鸶mjAaͶzҌ9Ő@rJ=zq9给=9.@YNOT36ٴFJם91votҁcsiG& ϐo:UY1=o? uetKN%_ aMV].mIa![!AQEE-k^\&k,v\8NЌL{Y;~>id'pzěP ߳F8n ~;ag [ Lʾph;{M4_a-RgTr+a^P¡7~5Nnrv\e[oPN.KT8K22,wH_K* 8YFv׳-jnlj)@Z/mFXC |'di=RP=.3  &0F.I"qd!W{fҫ'v]e-G b琢zKͷh2Mڤ{z+_ɺjwFu>@}FjCk@U.1 ICTH{[d2Ҧ94#W:ʲnh=$fsYZ L;kMCIϝ}[?t,BsF J6bڤI>&X˃;t?W<]6g&/ʷla$Yh/Dգ:C7)bHCA _ǵP ^5dyrr\٤ټMWt еFp[Ը@Z[f0UzlŜz($0sȇ CYebs=Ow9C"VY{yeQ9ߊ M}vt>pzK%OBCRkju۠0DXtFNؖ&X/Ml_Gm (iI{cjR-UyVMc'lZuT%~4Fk)HD W)+hhLiNŢAdߞGob0i,1Y9$L sNxiJӣZa@^d`V̑@Z! 7RR VI]7:fLt&8u<Q+Jn7|})sjN{g Lpot˜ĩXΟ^haѬKn;> rW1[x5x{Zm\ I:bhm<_w;>V`3z1Ьʀq@lIvܟlL>k4PiRO0tl.f 16N!`d9׮njW2KXfK),j1T0_u@%yF;GTW'{{ZAgfW𙖜UԮP#' [Ȑ/K F\آX#kQPŤ"T`~rjJo{9&m{ Az (:zGβn%=H*Ѓ\[_=Z'paJx``,`^ +HI5UNU@_.,VVQ?bO:hڰ>?^ayk7-}c8[D˽A_^ hΆv5F|Td.wBM7p't2XK,{fJeU3jnWP8n7EI& gd1Mv$`_t4g1ѶgRdLrKi?M#}?Ŀ9[|L63ש7O3pLl7|1-eN:J23U?E&&k5gSG򁪏FSL`J* .f"YW/9y 0~oeT敕q;_U}ihl.JOVڪ\&r\ECB~99~jfW#D7/i4f2wA@)-1đyg8\w9ٶэVZS[4H>9y3׼θ5%wlЫZ$HC2>L|EЀ5mGb$ 6\3>_\T'G|$_5H}W%9cZd$ y|bO:qdbF kg`']()j[F͇&۴O>Guw^p:"̍fhqRBsqFFcH,P M {6v+<4XB7hbK-3ەh­cÎa> aes|*v78>ӄaOwѿ. Q<Ҵxyr~MOJviԲ^ǑyO08w7} ; w+ hDZY}W5kه'ZsxWZ5S113ZczWC.8pkC:;(:%$A1Ҿ@࿑1@+a@g[t܆x"[y2t P[q,P1ov9TXo I:Ai@Z'@sja iڤի`O4h~ncsː4yLA橴6`5>c~A9TN +fG!;]uy7Axs vJ/}y@~f}DU $8?۪}h &]iSAߜ'xfڍY+-13"Mިȭ*Ni"v64#TȹR[ڄvI@ePxVP9n^Q} yC7Jo|#BlJND-L9؉ŰD. A-TT(*vMZ: 1SYXZJl O>on䌪֚_S] 1ƒ,BÜD]D Y.%{D`rp) $R!` ^JqI})NUײkƽNq7>cDeEyۼNŁv"bEDFV#>zytc'{gE&n]x>{лx%@_Br @jAi ( f]ĒEnvrT/uڇZ -'ǧ*'hbs09i|Ĵ&K.WڝwSdxH*{+<'(-(L[0 tT%1NH7w9'IRo6!Ng[<_y؆?Cw8`1{SlG`X9޸"__>ߩ7 oqҬ-i kqSO쒜b()-H%ױ}QJJk?:A]Rbw25"!qH $zP7!ObˆV'X 8ThO6پh9 FC5?j?Z[w:|󴻦Z%^m  J}PކȄSHGN#%;Ȋ>$>X;S(JҰCkH鯔AdkxCvC\"r‹..61my0%,mJ ЄTzٞ7uo *H) }Ś*=ywr̿ʆÝ7>U2 ˳S2DH3Q!m?0Xv.d 0i?=a! 1H )5 `2{@|(7Im*_['zH V 흻ӠY^??Tu⥮HJ~LBb ˠ~pA_JDXh_rٸt6iE&؜(<>:V/(4?ӻ%4پ~Mh SQ#HS v.׆,.؇.lƍb.C>AoS\myl{F:dKVD0|xV5zuS`vȸ[P}^ҡzMX H!LcBXQF(0O^ZRR%A3Ppc ,{WϮ,?\uHAMb-W sDsů5$<#H}bGDd;3js2svdSŋGrGP?J=12!(Xz ɤKGBcus``Ŝ`:-:oMeT: @|΂IkPN|ɞ{YLI}Um+Uq9E{1p}=A (iMGؾΖ a&'mUpos/Eg1EE.镲 ̲v}t. \xH9o :Y-+K{m#Hw_Z: Plć}%SeTJV:1~#6SמN5K K՝&\* M!6erU $vh҂6!>slROav}Mz_k Яv`iL$h+XyǯY5V; xvxo( IwwX5}'~ 87-UA".kZ$$**@.uƝçK@WTJp}SX_ F.߽͂ ]GJ @m7BRP't+SbxsTMA%+2' 2]vGDB^NfĊ-7 nZ9=OԮvS}|Z7YXGƠ r4kTћC̿)ؕ1;WB~ 1ug`](+S~T jU@2OrSK[P-%46^tk͌Ƨ[|߲2dum)meDċ躑!ۈ 610\חm<>]?_2jlL4Ct]/*L .y<0#, é ]0FZ5 H+0y|l ƴhz D?KM,j:bw3Jl}$mR  VXz9h^`;+[݌5{y6wu2[5,AQ%$54>=mܠ88EsA"愙ddwY٢6Q2em0SXT&6 /Kh/i{ZSng$qaS 0`3f JhWi'l,*zN`Sci eđRh?\!Qg&[bcfY=E.Z~'e;a00JF0\T0}+A+Lj֩5P9MvhגXf^O]>\yh83-ѡKͼ\x 9}k^PC[y!Udv8d" {fM gX ;̰YL0f 2.xexZ$bHU$Y@qEz!@qUr i G0S1 dNxYM+nVE1E~yq,ɻKwؤ>9:G9cZg_AJ *UGەnl87chZhC̴-Z/7r0;kj8ϒLdt F C$|v/+3l STѬq2c\zj!Y? U=tw©KԦB:]miopvbV+!?-fk{wwHF0 (D#ͷ)qI!jo`TGIasd0!ũؐ>OXtjj<:Ȃ5-M-\~N\i2"!@꫽V:/!/; ^<2^&Xt:-`ె[o.dfu̷˜-(@ތjo4(RbUȉ_t{#u77YkW_ SiF|sStm:Lu.dw ֚NQDjUy#%غݬgZf+tLWӓ%@vZ 0# IKp d~N(8gnG@kY]W Od*do*Xnz< bAYMqJ F^vY&k_PwSh -" Hp%?4חu5W-mʦ9Bmt@@XN9aA]R'Ġۂ U^zI}Dc @j %اB0t6 [{߹{q뚻rNȺ=1sB%AI'tiBh!~bK:ZBڨKq׎wՙH'z_Y ]4c94 -Ic@Xm9_rkF\K<8h_հIAڎoZ*)>L[blVڝ!ݼǏE*'1C)?6wy5KwټD/.ڑ; K{vA,GYh3M!7*uX 6tdJL>^ytwVba:?$%(fڞ-tZ.4]t񤺍.c;Z9%=?:p qc5 >: ʉ@@0_ lSsMɍ34ȯ ڶxܨ 4T(&B|oԷ6 ۱iU==}N`KWq@KP_^w}6Sm5p7bz9r1n:X}|3XGJnƘE@jͫ xM.H/Z)屳Ose]5FNyp3f7#II'c'pbUN\,d¹z2Y%$c3ܾҧ{P,LEP۪nYǍ,miix۱$9LffHIl/\ܚRi@z*7GecdT^l EQ޺KI-RFO8UX0"VFq\lRO#؍,[̲(gУ]m%v&aa9E:s2WZ,7P&B7a`idr|$%ᆦDJQ8)y :Q @18@DY $6svSoY8XD4}iF%p3KxsF?np>"CecG8^y5>`k^qCx¯:5B.{2ǑVʻlTCG˶2)@(΂R^9q{rEiZSOf=t(u4nt ~EԎZ8$=#!Oҙ Sb1\C`\̏zxo˙:( $YZFCQ+ð{3)ճlcs*{r$ Bi!T,JVYuRdr\*eaǂ@v*a?? w eITRG+AS$s|'Å#SqT+Uxj?1" h҈Ty_;glfw)?v+IX4k )5K*5/L|EWlIVv3_Ǭ.Sǣq(f6MW\Nﱣ6(TC~mR`bTVD? d i PH~wS~gi+3ަK? e@tE+VC>1F'c%2[Qʣ$\E"R!y|/'ifp.}+$DA@ `L^HNJ4S]#[lhEͤ\\k=J%3 P 0$hF d}DJ6yOJ+Vpt)H#8@n_E }la2AS[dW1QV ,5Vb*o>`B# e| ^UUdb:ʦ"xE)N: eX7ƐC)?YxeZ]l_6FΊN_[n y,BD c1u}hT`3gV1gP/HVCj8sK·YGjkhRFoU3e/D595Ծ37.=aN=xvhƂ)*FXhy4D-<<$l c?P Z7?sa)&EZW4lr[sl*@~Y%G%,ce`6-5?iu̲,~1`Yky^fs9QM&66m$y7xV0@("0Ȃ4F(Ά@iLsK_|t50uCO|HEl+}|/qhg4;ebL+qXlOlƕvʝgt>Mt @XUp^*a'RA*'cr=.,6̱a5=]iMDS,]CT.ҷ}`} 2!K~eҩ}ca-SjHJ\L&9<BJߊkA 9h<1NyK%J֋և8~yxJl)+&62waIf!:>C`H4oԺk'w%L⇙F`Sa3?$rS ~4O݄hOQ 7,-@4pP)x1e81t5-J23iKv^ 4TvurTi,ͅ",GT)pKrt}:V,n}t}%}&۞z ~} 7[YNU $mvu"ŶT6))yL^.ig+Β}oJm^fBKIM>pvT&wAutwE( 7o/nZaf*MW@cMc\F]xu=qWmвc^]\M#.w>brBuj5^B;$_btmi@/C^i-.]0^5*X <"^\e3;W춻\M5`ÚE|b0.t.}=)@ $ç3q;wȋZfL{Aq0x2|hQEG|={; xާ+HpoLz(n j\TIryLp0NHr7VM^TW: S ӊҋD.V~G}կKŢNfߩ* DH0FĮW9nZء#,HO*d7ɨIV%~x^Z8х.Ub[eGϵ& zG)/"xQ;erz%YW-#m㝯-cTLvs\5 sw=%_(||SX;8BkY a=>iqR׹tw0 H!Y3ZT(x,nWxr*y*gCD1?'dFWs:zi{,K:Xt}Ct?u}m0mw394;Y$ DK"|D #y>+DX fM svIp0-ģ2}T2#j'%)VH_ CM "Y`VDg4%ӠC#(~J`AMߢ=1Ɍ\vFc$8tUnYTBYDVh2HP f)ұ==om@O)Ŭ>r>˴)[N[iݢ{.^SSO1iLfkB^]}rToSu]1oYZ2;*lP%JZbl4ekAsAi&ƋcZ:R絻fƭSwGv%[gqD쩒k,j--}I Z QBI{`:.A/b {4Cwɠwռ5 `%@h\H1d$/J⬅]rX0lXsPeǶK̞#Wͼ=QzZ]G#rù2KL &g cY*x+Ӂx~pZ#Fdw(a'0 jnQy0UO wx4Ls~l>4v6{5V`Dt |5 `YN[V7OW/ŧ"fwi$«k;vL m큙@fEO65ܧKJ&muGd7 %V lwQ{Q#"bų`T=p$l'0p_B S>ѐ|zDto9vk?g6+8 +M#Mi ȉbdn?2O00/΂ߏpF+acXvg3+K?v+ξ٫(h`U~d(a3X?s)ZyZ6U#81Qz](:}rSkI(;;2r&ѽ*;3ֶb!6o\3JǓBF_rw )בi+6G%oE(ޥ|nt4+C?eR,ƱpN F56Gݐ?žNvFFu;O*O5R{vL\ߧFpUჴFVN{ lx5{ hXHQ‡3A ox;ðtG\dn92#ps` $Q` 8p_ ToҺ&P{3r# sc +I6y(;j+ 8ץ'歜.,B-\ЗLŧ8˿ϝߵ/Eֻh}ZymԒWnz@; vh,Z- `W `KOU i7ODX.@ZW:΀{!fVB_59¢ΰI@e!#' լxlRx%ZcsŧV~mI_cnKuH8aT  {:.wڼ'ױҲT1!ǁY7gSD8e7LX~R-x}bCnF{xt Z!t(7x[dG=aIC8"Pn-m#%ܤg"8 Z !OtZڠ槳nOd*FFhH&e,YyI9Iҍc?H!#x?![:$J. W0<3}PSCn-an[B{IxAOVk$-.J1q@NFtRdz.==`qhLې Qs̨l{\$j.IO:`K\-/x4r͘Ec&o=Gmq%ר.Tbr] m߼7†>&YapS,Hu@%X̄Hx!qw7wCì_S>`S g⛋7]oZiAk0>uіW(H?C'(#I$1w )PQ&3k\A^+>0$`(1 Qqs4"]]9.9}tƘ~3o$X0iU?P_fXPMC ( ?Kb'cr+ɺ$ dC $\B9|"b<1$AAA5̙[\ ؁8 v`Cצ2}!xFPY+I/lg͹VuKkckd=+A&?)YE{jsv>8+ې_ ϠE(ƆDnȮ2էPlP]CfuMQJ#Ξ[7˕l6_+l | Esmui-d:j"& J v3pц%R18xr+u}W C>۫m L)~UWdۻ,+t$Wxx]sʝ'@;E7N ԟ2 ů$Z4ٮ"UfQ7%2(Xb%P.gBYa5.2c$L~b o:H-t 1o{w+`=HioEPTnIge&죦⪽!mYvNP$mhk(!}YUPN\aWϴ )]d>nݥgkl)iu&ew7}N;Nbqlg*^ON^}Rȧ]DلJF,7T($CJfiWZt$q5722) +H. өJZ-fE۝);%OeY >z@mZ->bfM6N? x,u٣߆E_]G _ȍ7#U5iF69$U 0"ݜcKħC KUb"T$p-6.'Q>睁W־5~d/EQ[2R%L=3rGēkDĥ/O~ CޏW7b(KdKR+O!@Bm3n\}̎a^g=mkUPOQkVW+Q|Imr-'/e^ 3=˯<&N1-VDF #ИT4DT0dF 3 zaOdb bwgr}%L(t"5(O9I:Ng1%p7I}0xeh4Ll! a%r9EN%Lu)t/IE8IO'{" 4|NU_hĂ%@BjA/?Q-pB0E Hj0Z!Џjb Uj//;HɲpDS4`zL[]$y>s 7z!ch.?tmķ0X0kXRK5+ɒ5a?LwtvWΕFW؎w$vS ~A,*HF >!1"J¯? 4P@*_)-x: 8MҎ-5( GVW0౻a \7{M.Sm Em}/ϝ@+_ m 7 g/hk_g2ORbOZ=3nCYA.)EC;+! 1ͳT׈\*{L45\3:}TL4EuݽD;j|o I tX:Q92n_xëU8xe<H_?D㎇AH1bY[f*<>&/<9+Ý&]ȠUʓmw:y#Z]9 D_DNcbooyh#gYǽ,* ݊U[ iƴN cb }\rƀnB9pnp-Fq jw[ͨ+5s$ђmFCzD@4W|^sU ۣF@R2 f}H¶ߎVYX@]> o?I b8B%;b~1X>` yc*0zxb Mcq#]ZE}Nǀq@nmk h@WA"..w fsL[!0;U@#GV%d')Z*UCTlCjͫWU_Ïڐ'ʩy/Rڽ+3բu!)il֥mnP6Mo d$صn.@ZG@4ྤ T}7+7~\S]9 Sߣ)((ͥtKN|tc!&clj2\pfBW%t2Xy LA#Pp t>n!+ǖ\%iU#400{Fn2F^lKYf$r |-䜃Dl֫&Id*d0 TFYq_}OL$ZOҧz8"AЁӑn `L;Y,@H&A2ޗWrΐdHIL,I+:obB{囄I z7BnFW)~Dtc(ui6Տ?ƫ#ž V[7\!_i5j@" #W R᡺3.D=7JfT%Z5.Qqr׼E{ B<6O st"{\5LdMA2䀧a WH'Q6@k0\ѥDBQ 6~G 9"<~I*g0KI0@`'Q 'TBeģDV g*[3F2Gd9G5tNՋC"ŝӏe/U$? ԖzNγ Ӗ\qAhCk#QPv8PAD5DIOʷͨgZEKYo^)%L`VP@bCAt"Ґ} ]Խ1n&/=|[TkQ7Lt 5s)ml_X!*kN6^l#=x4r`]i,m{fs6v3~|3zrBRrNׄQEwS/hoY{(rnH]ͩ/!i|ϣ5LqFloyp.a৤%b!-G%3@n/5߿=IƎ6UH,Wvs|]yl:gd]F7ٕ:|*[qp,8S%>ږ~[o7,pQujk%I|")*C{4tVva,b Q0CxTPAԄ2iy\@1clziũO{D͜~QR8Ò*SJ&\2Md@̻$)O NRsE0ϣɡ\ *O.[G2"| \~b`̟=}T Nbǃ:AUjj B.<H 97~(S=<)4v@X>iJ@=A+O?(5UTIDAT@h\Px |h .X1H }.$@E @ڠV*-PQܺP*V Vͷ~uJ|,L=s1(CO\T˟b]C"Ɏ#vTf`yaB6b,/=xm"/<<_zt->6~9vl)>"4,_~P=cO~5W$R`|9d25cwR 6h&oW(e]jAu]κó<&Ŵy8uC"zi{,m'uȳ0"-iUV3h*JdZXjяL2S :Mŷی#֪So<$?7 e0rB 0f:Lip_7 '#I8* X@o1J:d<`:&"9(nYIVBvq6eڕ}>dbԼb:jξ:)k8) `-"S,ot]jImKWm2Zqp-Fzޢ$c+p @VA2NrWJ[^YNP7cGDh|@״YDrK_{JH]*,tH"l1.Q6ZKloiŊ.h+סx "@SO{AVIkdgXBg'`i"$Ҽz?8% h_D5x_^/XK"H+8GI`M={e4҄gBO:r'q`h_"o H/Ymr TEw`O@-Qw ylT.8 Oz2Hb3n:4iiNj@9 |{2=NCCme{]h0XsNm_D)[Xnfür'IxaNHtECooi^*7D?V33t[3Vb%5g=2Zgݸ}BE]jWuz[F Ox i]q_L ?wE2NdwS.{ƣu!N? fp,ml7=5_19m:W<πMSFa L{j˪\GDWsu@CƏ4S $Wc(m:P##aZ:+'\9'7/o]V5% .eT,%O=Z;0omnsGznóy1S''О]` ba`> G6#_D2ui4G˝~Tc;l0C=.k9_SsB ֪UYt1a&߇-Lj@iL66+CvblP p(KJH`$4O&3QUu1CMkk<(2pwLpXi_>i4[XeDzv>2.~igjޜ'oAG<_`@@t,+mN=cLtRAK$ ,d֓@ p tKIRf&Bq.L0Lfa@9(o{e7>9YFl$xn"fؑ {ʷS5MW.!a|HǪ֮|d+`~2eZp73bDi1{Dr7[-:gY ^y!; 1m{I.^{rHϱwK鮒4SԎOn04Ӣ?oC&oTE&OD4+D2Huw5u4!frG8,d8@@9(W0@ Hcb0Syl{[k 6K >vS ~o щN).-zib]|y {^8r{鬙.ߴnnM;H]vwwHj 0ha*-YWZ6Դzk 9Z_<6*'+@C8^neOsc&VXԘR:}&$q7}?F5WJtLeKs TgdBN^ iM'qUA0JATTҨ0 kO2/'wR 0/PVI 55 ۰tŘfQ9# '?$d:X;Ohg=X€JLm_Bq|jdF.*l륭;n\ڸ ';7 ݂>B0(%1TXPQ}y~*Z}RITnx!E pϸ%r5M\2疑tzu܉e+U\avr)M4Hoy @}F8۟I%7HTD?{D|?@ &I_VAfc0z˜pO uFc wn?PZTEYmz_O ۞m_>hP<~6jg7\{Usmضqp6&XB?#AOBD5} _2S_'LQg1u~`K)p$ W y8kL)!+.\LJ(*;X?&GCfyXD͔OVx<|4miip\VwJ$5;JƑY^9əˢgJ[X)WZdZiޥ{J:um7z:M"J,+=:Z;{;֓-Kf**&i8Ia;@.?@`U{3Q@+i&sɗ}3Ξ}Iej״~j^E&V%S%9!-Kmi(0v!qōsn 8[QXBx6{bMYo-4# k_-" Q5 0ߥHsוկ⃣Wŏԟ/Tz4m;" !Qo)i xFDWKHXmoz'|Cj0b$:̑5۟x ᘃLV0:Ll( &H[Ev#^62јr.gZ33ϭ:t1Fhl+tt^nj_d ݀o+rax#=^9ƣWyhnœHB{,Ԅrٽ7wk _4D]OaKCQW5^~l5g/U7I+0,XRCz00I}I)s('\䋈:\$;ҽ.;5b-2s=8x]0a[bd + L@q03XBDqs:YFmw!kS:U-a>HBѨ"S`/I*>ቺ0u4^^>:T6&aRɔYEKEiGzrԖK'JmA]}܌Ok41j~b_X]aE8D`Ͱhf~Q E E JQqNSE8-Э@Ѫ=A3P?c`5 In M7jlhc-^TB8[Gf 2x i(|!wh\m ໥ \6;C+iݰ)U8TWnc ~X0osЪh!#EնgbO@TԢ'%_xf&C!Z48\>QgۣFGD~|6X[D]}O<X*~.oEr,74D4(|߇[hJp - 1LFbh=ǐ~I̙C= O#"v!Ba +4T7 ax0 ?>9Kރ%KKlꗽ:>tnjP 1H 12zJ;۞{%tVxJAI/l 9Ba - 苪( ``+BePԋVőƞoKu7ne :ZhCk_`yĒtIzKnl>MW][)>&asK؆Dpޓ4ݍ߫lJjw&"d4e)0!ӷVc73۞e|XmNƴVFlQ;͢&+5|zw\u׀].W?ɪ KU/U|Wk2ӢM \SQxP!??7̄~%[MH B(RFn (_&YMe-Ї@`(0NQ4#zm ɸr_D,y$Y(E:@4|ad]  `@}WkBIw~ndh*'4whpz/nˆz/72MK`_1<jxSFCԣTk]fn័"wGlR$&]i4rjiH)|PK|:06r)̀[AKdd$`?9 %}^vŴ}?vL }q@XeG_$ A)[+oǂ]6Zr2zAnt+~]>.,qY{n@ĴCQ iva\gr0m' *w> p]]|`ǿ] y< N `|[ r`f֘[m.WP!rDmJv=w$a1~~_UŸ{t;Pd|@^x+!;i 'Ob"e^V%WFsg bƿ{ŗLh&VHi㊸ EN%ڻyäŲNMUGbxDZ =,=fNZrk#|!$9z7NG5Jw/cuH媉!"[ m;|%]7_3!r'IZn܌}CA6svzd&L[Oiijg}ԉw0^ 麎(/\WmYm:YQ=v tj7Rߥ@$оMD8DkGzEـ`UmDmDWJF/W n/@GK<_SO?90.Cҋ af( KA^ $` OȺjԦfnh{qu0>o)(|@6JR!&zeޫQбMŗ}oG ` t /?x<MMM)l>_mȮ?]+sOD/i.&{CRzɵԜԤ)(weVQ(Y5y؜9HFה0\[%Cڹ2 9PhއQ+cVn}Kg @Nf6 }J&6xF'HOBD3G ѷ?P}%6wTBڶYqGx wo!\’l5.7v쵍WyBR:Ϥ$Xg@2jr*XF `5@%p$l`_]`բNO i0 q<0~GLM!pXlU4^9L7&uْXlZ1<ʦT?ZyҼ=u!`(<+Ψ𲯽D*RWb̼5ɔ3xoB5Y9o+}x3g:G_tD{/Z(eiD`3([u05kd UPЯoflB0ӊզ 9x-_Ѣvh9n ݽ|,-`nnQfbpGnCo?ncz`碊+7ɛzYCF>7-age?Xf +'洓9r>ͶIڪfUީE+dgZF{6kqw{/v8u˯}W(7[U0%: Qg1|HQ\#},jװ|!յ3@/. DX@e&  WZXڠI&~8tܯVάE-NiRjȕcKk-_6:bNxߚhhL>\8蹞lӷK wGf._ 6ojT]Ucoc>-}Tzbzؕ^m*J1O_iNnD(ȋ:ēs>uR3OCK/s7$o8^&QAW̼T֋l4KЈ'KvzX0=Q˃Q(@Jw0sXe^wC#Yor%U`6ba.nx4>h6k)PWZ3`hu]tCs҇NYWL[ҮgKۣX,nj'Lw9gǹ|U,/ex@x+K1\#i Y,j}M^"'),y sMO2U񘄱Żb4vѩDb}l*bi>{lchc63ix4cͦ}PF-ЙO{I̸VHAhgp0 xe T^`! 5XlCƻOw+k|`yӢ)f5jh}ⲕڢy#W6T6hj>_X[jck*c]&w JHEb^׷T_1nKHEIĠcɰXҋQFR Cea6׉p9\~H'  P XC -a'c1&#=p!rTcd,*'Zn?E`A &Sip?VZ#$7aoη0Bta!_D脲X(kԚ6 2f̜khH5~ P-]~6~0+}nI^2}Gk/מg}2Z02ۜ/y';Vo4sz+S/~Xrf@l-v#؍muj7 ߻/(Kl3~Uc{#4/}M|T>D_mzܮS[f[.}G՜)TW  sPZI*tۘ,Isc(u:N3)Yg1[e23S{k:f |]H0L;tbNU gvWu/'x@9+I< >x sL雞m@:}/|Eqwi|*ѢܺVNۊ]U$mS~?]x@Qº;e'Жm4,d2QU#=I0L2Qm[8EVuP[f3  p=3,pD,4N0YX? 5(-ia+ Н't@<}_Z@ҖuW/rj[C ]f/طRH,GЩ^`W'ڰ8`r1Mb6LcXn3|R55150?b:şKշ6/ɱ`RGnMMO9qsUC[%0v"e bN0Mۑ_9d y*dJa8pGpM8)"H+|R |eo!O5h E8*>Jq$Idw Ӗ^pHWW-\;ue 95b V2^ey0QC7۰Gcũϗ[9LjFٓU?T~ 1AY(_zm.kSoYo`϶{EWmO%bDtJrB`޾N ϿWŐe4`4Clwtv/0u&UJYU@0 ~t<|EH:v22hpub3x|{w+=@-@u4vJ=/Hr6Ͻ>]JpXR1go_5MGѱ} _uuy䨴gǠбU1u2uUߚ1H=T `3`!+5O7oL:=)H[p`c5|/ t YI9R?ދgP HruDgO:> KߠoLn:Xi`T %,L3ui8Fr$E/L  va fX϶w_y[@Lg{@fBPMS=@ަǫir5U5Å޺$>5Sky:LZ7SijNmćdkkh5Y₟֊xE3~l\=M'.&,0Sjyy&*A:ƈYo\*\k#zZ,;Kaf+UfN]Y>(Y)dIJ1R9q%/3@<@1 @f^%E d?J^o}@muuַlU|:7kQt5{ ԭb[=e+ =ҜLbO+ W"AhVPDIj//_:^sU4=J 5hK(P%46(鞽°_ƫhA%1(l141^BJsV.˛hr yPA _AgҋV9ifqEժv֭2W}x@3u6K@_Fu,H³vtQN}(C mHvKț:z[Ve̚hs5+vxu y ] ܨOn|Sm; s'ߺRƜKc[K5OCW0ʂu[7HL{ӓihvԩIP>Y"h&ayg8|؛8}ჲpk Ի+YHE;zBwAemB-v'h'v \X}Z8PgT>0pهxįϿ2 r ^~vkkke3 JdbR67#w%zQp\ G]x心V+Lw'uX6VAP쒘Ŷu5ݼWa^9@,E 8c <@qG?`sc @NmW#hk?l߷0?oбI29ǝ×;RͻYeE|$/_(eAYlXݾPuugc&z}nb\;Lov!huu?$j]?J+K=]k3v%@De /&gT9]Æ`[#1M 3q'/ym}xAL.0\;O|]V@M 8L]-@TrǔǺ3bT̜Qp]z{k' hh ~H93:M5C9T3oudO+*C&ع5s$5~:CzT[+%v*߆hәpǴphKg.yN0SEt6 liƶ;r *J=c .;f\p?AWFFiKa(f0 D=$mOզu&}C6Q ziăc#N+CR]1 Qxć+zn$[I DTNtH F$AmG #3aBCG@*?▯A:OE8Bv»>.%cÔgaFM}Vuzx)rM"N@}zgQ7tU4HkuSC$*g^/]fr3TSh X#,P"XB^&Q'KZf: YRsb,ۈ!uQ H !#IDƺ49C[~wrtnWκ|)SE t5A}Nb0_\4LznM0&8{;,V`!۩ANӋ9 #wt 8%7Ɇѳd94xq.07%;4Z^`ýgrr8'Yp Hԡ:'*ٮ 7u ]ɗLZn ?'q֎fـ/A6}VO-C~omƢ-/pg[hb-vmOPzB6\ U#-Y&нDe`ikj&xj& 9^@Tx̻:x;FLrk\ĭ%-r_[-fse+` (/*/4*l ͢ͅ|NN0' &de9ݨux1 9Y @`QOx<80;Z [$[3 V `xpx\@ʋv?%av(z'|_m@$@Bc8azTX{xvY+,89iY-8m۴LDBE*,2&X#iDnc+We="~'c:.cɆ"9T:{m'!j-p! Vm+:5U{_`/N?n"#+L}R+{~bds̙*Ff!0[uu-_,Â"T )T9) ,1ְ?>B` R! $E2$LBܿ.B~ hUrd9&ʫ[Su֯BUPD3%$~ݬl';NR3*i,]'FE i~k{au2+U(? [w_J۱]y]B}1(}KpTC{9MٺS#9rS5mM/i-ФFaMw.yBS_^Mh o1{XGhy`SOObiHYâ͟ g1Kv+ .$G6TísО~,,})"| T'; 2غ*5Spo4>n`#CH`[H=l<0f$ ^C B;XlOՍH`d>$L<0`Vk3Rt{Wzf|%xJ)uۤ%JAnlյH!թPǷBMvO{r}Xi4CG]LWffGωk(i}ޞ6/|K.vң3?gW-0dQF ++Lgی36_+VU˿Bp:pH+\ iWt1/c7n=Deɯoj0@H1FK8H hxA^Jf%Y hHG6$^G "XBzFc "nƝn!,LEcJf2^>[,Tv2yWXT Ȓ369.-C( ;O .l5`0tOnT8wLafHq2I[6|z=a͢"zp@wuzF9)=z:Ɩ#b)Hr^lY \<k7Phc{8`( XF&ak[bo_*& ,GYh`/Gmr펇9EDxL;ݣ@[%\jV ƒw6`nCl$0kr">=e6Qxxk'ZX|iJtv~!+}]1o4uK nJH F RtAԺ;`m6 vL*CGlmolPڴ-D˺P+|qÝb AE6ˏ"SdaBl}zk܂ Pd7>GתBϾhoQݟ/m_O^'`0֙w|*wm,Wo/50e*O.^sK,n}yB0uqB$$ۛfl+=^n4(xeᠬq0l.Et*!p%H2`xFp?#&4$Ev;^ t%:A t FmGa'*J'X& ?,q3~XOmZO& jC >?qh+HL7N(c8Y=~!ִ'dNz7+^Xl wDF5Dw+_ x\43b?? ^Y=͕G~eۮHh :F^sε^9pPܓrzU_.ޮ!1Λ52,ަk~A5QCwn8D]v!Zƴ1M/6}csk>zȅI7-ᑭ@Sga4F|io6&%7!wNjgJu-cZ}j|Uc-Q/HIn / L7x;njcnϝi*sZQ؍2Ж_\oW3V ^?Čۡm7r ">Ew9SWPcCts͓SA|uh8]K Eᬖ:Uׇ{YÄ Pާϯj?G?v+ 'VUf+>D3kJ#R4̸QE]>`X`&盀>Y0no_J(UUj'} G(|YꙒCɬ p{,\ȳμ(;Zl&\v=J3{lA:XuNWn_30Ao1ƥoQ-'I$Y?|7y,@ΚD\u.?lj4ԺcׅLbRx^<1r>`}urP@뢉=Y7$?r;M?nbg\ "K}ڻ!@ x ݝAw]BB]ڻaw]3Ht9swR~Xg9ePgѩ oGR!\rxlhG93Qˁmaq0@-{|tR{ݫs~T+/+zD01[]vԺӣe4Q$P_fs,%=@}B Jq3>Gmj&FǗsc[kiT: Ϟ ,@\ x53wbjJI3mt=O|#♢0wgt*<5G9 s19.sE.6|?c{KGԆ 2HMr1PWp LDur7jc # Oq~Dt+CH iw_M;xJkǏ][)ƧM&I:  @&pMV{<[5uA|N8ϰշj]Ŗ}E{<+s.`cQ fG 7]cC}?J׆&YW.ƔII}N\Pۡif:=h?PHu `9Hf5)dz1W,aӘMYK(O[q!e֐F*Z=5~Jؖ`nx1mj5[H1 5-. ݆h@Cҙ3Y0EDQR**=8l{)iDו$xJ3M6#[EJUhS.50T|??+)gJk;e@Zg&. @h%YT#@a>ӵa9a# ] "no,XҘP&>țpc:`T oV ^et{3}ధ-y)m (@9 PL#Jy M$8dĽ ׋I/fǽh'j/]*DUKRgPWr$$6x}GY7a`І׭O(3~ И50G1@anpQ/ј|BϾzOayOOMRU/>Yƣjw׊9usZ(Zu'=xRVFDC04  $( OI֦zq?%[.4|A>ۑ8V~"5FU,_i}$##p)>j@]cIʴ|M5#t =ka1J6h W( "8Y rPϦ +Q0Sr--OoRZֶG^U?%Ub 8W.!%\|0U2riezvC2U宍D_XmоB=iQj7Jv—ZoݵoV_pDVq>wv~2̧+sxMw&C =G#5?4G9Nǣ*3s[̘)u(u,a^/ b|MHdy[Toϋ>?;N jYTVV;| nHIIsQdjDZڊZ|dmL'í23߆?s%dCgϥŶ0ӄS}ROZ[pCv-ff q="_$=xy\ sU:? EyE'^|gB IVC{"Z5Cn~-pӧSsȚb%kK0S0YWedF7NGa@_cv>89xH'ޛ?P?h6 ޗ~}ӨM6օ@ %a^2V^ UPǜ~zkQuH>`~O# [)}۞='߸ժˇ'EoYȸԪWzm[7$<OV/XU8=BW-}4~S[ !PR$Y?;7@t._E0Hʺjb7;s ޵ݕ,4\oݩm\uLUkrE;b@!!& Q``?HeƼ㟞+VD'mX|HF[m<ڷZ]yjNrXz}3+kl{ߴVJ~~8Y+ 4U2q!uFv M rMgxHR*#u],{`7چL$@X^D4Ƙsto&<`y {N>2}ʸ9g1/ql WYB`Z9S6.<5v2M1 0nFXxOz6ʣ)vu xRn}Z??eE<`2P sI5ueТr1EsmS,D! (pQlA(=1:sJo?+ WN5 Rh3]l߿wx/ϊB"5h;&3f#.U}1K<2ߎ{%fq:0Xq\}hxYKF7[oAJ.j~3q*%L8=i+pc6f+L&;HX^ ٸ SIkr@Zp9(XJ."穎٣(ub~K*j¯LSTWS i.( T5ISFr?iz wYrSUVGUf]N5FDh#̔m#ÙC\ ʞ:76+ +<6 YH,+լȺ<=r%֣o@ J_O1-TmyrOџ0B?{vFr}㚈ks+mtODžC1u8Y#˔}{=Ym5!s_3w%``_ fjH7k]w>yg͎;؉0߯s46=;Ij'k/oz| 5y`\@ҫtny w@QgT=֫`WN/Ymu=XjwSv^u8t>̏Ш:g=WgOϵ']7vϟ!542ku~t"mP!o7Ng‹@]֍sm[d*Whxr7'v& on8 l+aӌ&R9jAV+y ̎xFa@1=0`;Yi/Qp&l]2Īllu;Xvk7vo[<-~"wz>d(fbL@fc TA['ycL:8~hhT/ {jR2>j35GxoQP9z(c![4FٓXI 홻905M,,wJUYƦfd-3g:iQLr$Aߒ X!%5T+oiž !HjXjWLv3ZU+7&s.EMTRQ!ugiw=ڦg*mjI<O|J^{^rj GY..:|JӘ+3NiYcQ7}~u+^h$kЪ7g f̔0@iT^N|BzEL'[2F+nkoI8}CCg>B[tSEwۻPz8EENя~}@kd*&8ģL%}'ߞڿVx(|d>vq9,=뽆';{wpV3Z5Zg,Lۀ}a%_#eك'':b&qqntm@n <ׄj_,ʽuȫSՉzM#._W}B{GGN ?z{C^o.+gvHtB( ߟwހh~9(^>US*v $`',j҇<8H|\s0SJ2RMEvFy>=#˧X0G-0ȵUËwy-8lxU%#eV64 xFxP|Ndz;؆j?Uj_Ԫk4\ --O|vn|wgOjc,X@90ZZcGi>wS\h dZ>keTFJyō_9Ԅ#7vq$6ՌP ~;{Kn@^[ꈃ{2IP`t'Juco9۷E9'M8eur- ; L)hJrveviv^,+_vTr#0PA"oPYwg}Y4Oۭ֚ujLo>:{\ OP{1䥏jWuZe - Lj4pHWO֡ͣ1?e&3 e ,aRƖObC$"Y˳6kw,D,@#Aqҙb`2\f> 5] =C:(ԀDrQ (KЋ*Ӈ]z붐]5mydQ+2L  dߔrji2|LjY߹$=֡3|d֯jV q=a)? AX`]S؆[L?|kVw+`Lǽ8Hx ~_،3|f:r#RX PZ[a=;]q0{6Dӳ(TVw=&$T-(dA,r X>Tl6< ;1RC"e`_ HM<${֏p}د7/J꜐ @Cx$&;N֧t,߉׃nd*GgBSJխ\$+9v;KV7!$;:f ӍbƆ39\qy"7t.ڥ{P>X̅"@>mB2cfƧW }Gd}\BKk7*_QrXwf?ȳ[ hK Zd5` }czcNjmxuN8c祱Fݴ?>W[$WU`3W-?,L_TeV{F,m}Vvs~NF@9t/g'tSrӆj*p9DeT TBzv+8,m {@%k./4;9.535U% >\ 8s g&9__#ȄѰ!36;I{p0;x,iiyxÂLcy6"KTntogH ^ X]?4߄ڰ."z +َtٜS;El 7 {tSϴ:uL35tBJp{{dLj ZDCj4}hSMѳ-Co7i C%,XW/ؑQcՏ¾\29Dzvr&Q㹾#K@(8x>70J>K,)RRb؂id}QE~i&"aoVTS. %nvH{`MmR姟]V=cFie 1Q:ee:JNǍTz2nkunk?oa+#;xSҶaDe?;ikyMKUNhߺZ(mc7DQCfܵ[WQ;%8![8V"90h z@|:W*a2w 84#vX V[4okY(?GW/P 7qSjY r [ 9n)P?vۡ_xV9؛${ ؋Vf χ@P=BQ;N~< I?t@d3/ťo ;j |RZ䯅*Z}7ؼyZ9EWpVPVARwysԚRWgP<[9~ ?>|wC@9T~TiTp ~q# _+$~Wʓφ QE2 qc2c-g~6"车$*S$IjJtL(i}A(uz$+W"OY%!8HG,=$2Z:d||=U}O%QqMmqZ# 0d'9媢}-[6#Ch'OhLfh]]X2W \IFǵ(IbW^o9|8efi~1 b6,_<(~hڛ0Hc :UІո5Sx}oKjg1}𙽉[VW+tlRϢJOwFL_ S_Hۺ\5mdAN1n2{X:+\}Fc@{?vnnw0~h ,-Z2 S#qKݻe#IҮt'58}# 6+HNx1iec7X>]‡4x".M`ydE61o{?t1B!mOJhp8^x1l*kELޚɆFadT' gbl+}h/?h徱%G#kqn{gcKuUrs@݋ yWUw;aet[/{tT=G8UVFp( kLv 3Ɗ@+OV#;ԗ˱JҖ,v  [Emv߉qul Ǚ ק"-fP[Gφ5=OP|DwO+=`d o:D5MPow< IׯeW)Yn+l-{JQeD4c{ʭܮ9cF]+nC d\ }xzi= @o ߢ7V ưPr~P=ԅ@SX$,A'5ѕnLQyoVx2&Ƥg){>:t!0HǏ-fn@X(22ctudf"qI^9acѸ@7Q6 Fp0AF(#'{&u}Ufdj iЛtGj]^Q$.G4h?|Cd>rAξIv!h wFh3t#ٟs Ɨ|s 0na5fr|>-buLO9d`` ;H,ދZ5:'t9 ( ߣ c*D KaOְ EA ‘*Ԓ#IlasO7ppk o.@O(dAlziy#.e?>,sT{u4 12~aը<gR@a*q;pOQ7ԕI oAO4S;uK%S 2f̔< {⮶ Wn{VNIGlxwfkP `fqu@P.. jȈ-ăR6-G^LT)( (ɜ&\I\x+`[/hIɣ @Hc#`gѰ"ZEgO<ё$.Ɔ46TË<}Öe Q E8zHjE߫UhtКB/ܹ\/W zo<p=_B?X 0֎V Y7O3_8=gawHK&DO`[@ku66~a%RiD|`$~C!9 Ŀ~@`Qa`rk6@>TC  VnU X* zoOȑ!3c31g6uR6h"8j|]B\ 4(d9jK|=--sOݻS)cYh)[t؝FIGzKX\$^y*z)Or{9q`IDAT6wk)q䰭ƺC>]ܐO1lYqtuH'E2P@6 (0$0h@?ؽ,i11ћDAnF/L3i4W7)`oimYT.5\[Q׌#;}R+C*~˹mŪLrӓV}eiѡPz0GMtk]/htk~YaE٢,^9 `qj+ [ҹ~NmuS;ޅuLN4KO4cu>Q)zK>C`Gmơɶ$:27imث3)ڪqT@K;B I jm] q𲝜vj`[T2HkťijO醴~@Q;LhQ?ĵ.M%f-\\ݾK7Y$\)}=yFNrTbvm&Gy dOB FKob)׌)U6\h[?AzI(9ē0G1 /1?&)~>jx <= _k5FR@.3Gvó%e$P;v9z_g?@j!C@v@.k6m+U 8~/گnj{2xC jex3 %T [}Yr?P޿Xҿ7foD&Pv]Z01qIÏlGD%h!gR@H \ ֘"7E >MDW>RAL[53{ :O0 kH)BJx'< 2S,}30~1WC#a3Z^[:3y, PSd~? /V c$8jc)Lۄ[cc 쀻5Q9[q|!4d&6'jFčTֲF͊B5˸EXgm }ܵuQU3OBoe7#Fk!%0I?7δЛRE q-!Q eui!ɰ-b$jxA\IQŰ'EduEWJgbELc]3RB$"E4|P|D~_Pw`3Eʍo1LHBf8Px(ְ!Rjf57p_{ '\:Q:`9rX ,:]#:M9P}}zF( $NF-l[~VyvɂB1P Snۮʚ^zDD?^L|kM[+u'N,'LO/}s޻հ\^BM[L3YiEb6Wտ Tij`vhcGӚfD|P(9CB{ߦ5|s+0|@L9( p?;j+಩ɬJyhS\BW }% 23^|7cK5JANZ^RFЕA _}z 9*BףniE/he?*25t&Ȣ451DŽ{c1&|z ΒcPBq㜙}B!DKQ}&+|l&ږqz>s`t6mdF4k@8XDBFupzg’[C%r%5mǽ0`V-V HC~kp.AS8]uS~*j *}a;z;\Ao { bsf/b+6 6[&֊&ǍPJ<=aRt,hguJrвteUL!K΋;x8\?;2uIFN Z d[ˏ>ɐ>cH*q v!{NufHvSٱ:Q_ }fH>3u+q qc. ° 3ܣ>z<9 d#>B!r &J09P@ӜuUֵ:c qRMSN74W6i0 G*m\%CΦ|US??VE+& 8 $t&vmvY=h7&p\OSK5)SaɿLS\ BZt N<#Z9?ڼ{ VMjۯNz Pd{RS=,ͱA?j!Tp//;5B̾1_sJqP?y3UN~Dw\EPz6N.wϢv #'CdWڰmozh2 No3fΨ=A*"Z]Q`E]&4% pFKGP~$,r3UN{j$cVMF6 D H5:@q(Ҫ'1ap_ sjvOe@~=@ˆ@ރ`t-h-># i߾XX<u` YIcjlJ x'g{ZG]jCњ 9QIw4 E¹3!p-*jPTfD2^EjbXQ.@8?nCLV˅#tԾ檂~U_UgJInsc#k*q 5}={v.YaO<{Mpev jz̘)}$~O@na/^vՋ!}@UZ-eԼ!K?ai6wDa}'pr) IMŷ%.@x8yCwJyeU“6oʱ;VYԧR8񧍯F2xB6L0:@Ffqp ,!#cj%Nd fڠ.I &FHG3 #Cؚ42B>sqdOHƑdf50jgHoL%6xH8A6>9dtְn+8h(J֣<{P|3 İCtr؁9p')Oz@ E Ƞϡ)GNALE|נ7L,"i5$0P@ =1DUFP!2( Rh%P.AR#,&| 㙣O8ltñ:z~Fܸҝ-H@qz[I߻,,#^*HL :XT -UidPz̔b Z!n'ͪ?| Y2)P6e,^ջjrRgep]8̠uCXݶd A0=f|Shg ‡ϪKd:JS&<Xl\m/ 8=@XS;bygRGVjn7+hrq ;Xaw@`I!@ʧ,HpcQ`6$/фK?u0gsnFȨU<)n &i7r[_Q惎?M3f-'&in- 6=ߡ]3GYC(U* K.E澈zWJi'\b-v+ nJ?$֓6JBtʳϺe%Xk$Kk-V}Ӷ g2]M`?g+1 6zL8=U<1$h=#`)\ \,EuBz^CW=ށxߦT. 4M [cyy=lq~dpԦM<ӽt#2PCU0۵)xqo8t*PKH!C!0J.!buleAxy$؀L<./7xɕE.gCg;gQ'vɸ h!_=()4MiٞN'躿r@'A<6c6hV޼C{ꁊLPz̔&ֻq{pX}5cL`e|gG4ns; lLbMC~ ;R;n <-3f'C [n-6vG&ѕv9Vh7kiۢ'3-_Ɨуwxpn{i*JG^DUƦd31J+3%JHp^EH#r( k =`˜ ˍh6_R% J3iCD cM{{QC!Cy=!U=t7P*M f~˵r[+'}]Tv&G wվqo45\6 0δʧ=[N*Pfu{۟lRlL].OW8]_$TT.LSl8I^e[/^gHΡ"O;p,Qp4i@] 5Gӡآ :~O z J% a6!}*.H9*Ku?/P <@L›a8dW/ P1 ` ,wm0+1nE[xԤ-*h8UpQhTAa 4ukO?8 ^Β0ĉ(T7l64{ߡPs:2f//Wu"N=̹<L?eC 9(PnOlOl1cK+Z Xⶰlә=1tL3ߊf}$Mh6R%+ISBEp͐}|L2[y']gS #rQR!(#`ALd) 8txNx ( KzRt4A䔽ۼ(0- NLQ"-!=7+D!y&gt钞y¤HSUڕ\;qnAs"֣5(=VCI`7]!T1+K7Y:]g("yj̅^f0iB˙=Bne²G[ f #S.Ej4`[Xf~< ac}Qᙣj]4Z}pTl@3F ՁiiW5|~Nu%Z{Ey\4%3?3UkcW+Dg /Ldߏc%33CVax~UknGPVi"/wi;b&M*)PzYYn-+ylG{'C.`~,T҆ 3iG;1dc{kW?:_9åx%?_^6)(-M d'T}*1P{mUEMwc翹hN mP81xlMUDFf`P:[H a i@7%8"RTri P4E,f*-wI.uڼ-g^5=ƍ@f8&MƝh_@ C9vL]20 QT]ʅzyO{`.)_*JLDqbO Պ~qs*zA[S=͵?"*HCd@jwÁ!HE#H%֍k4)屢WeZ42zb 7FoӥԸi{䆋FSoC euv];'ZeW ̟YYM/ k7'4CZwp6sw[e$]0[64 /W=ǂ1W %܊:e9I3b1DSw(zrM? ۇUT@un|4r|oj0VuՅc\uG|bjMN2s(rm\ RbpTv\ę| aD `fv)4tK$A3%l!GАl'xyv7e_. 68Sk@)8{_9>їB<@z@q||I -8@ߢ5q]c6d]eM/Cc >Ӆ- pTPzHD[S8;"z07)jm3sڍS Lj'4I+budgt3ga\^qL((!+%H&:u=&'5Mg.P؜,h濃@Adl9  /+t) 9 !\a겤#*:c7F)/On8Y?O(UnvlAayJ̜ۋ%lZxsJU~Ġ_ qޝ穬 ސ 2Hz2qwo쒫ؔ6,[-t_Uu/リ/gf1  ~A3`mlsncz^ؔoB4#ֿ-1m~2@§(>sؼx873A3f hSD0e59Pnp76nX ȯUMY }&-Xħ ̟`δXEV! Kpfį 7>0 }^WwLLKhQ>/d&Rf# >M|'cLؕ32A#Nr:i_Q鸡[T5JT_koh\zI l\/Uڿ8@Pb-K4J2M@g Z|-SS(=bKTXԡᑋ69{#\ZR5u rpzY=ze$@V8]8=D!o}pNZ]s^*Kf eM(*8Θ ̮ljZ@G%V`cna8UV(;|ꑦҺ5:X1 ~F EpdI/)lgixI gzD7h#@ dL6pH/݀ 6>1@BYEE]G/%fm 3f'i#L;ja}c=2v8n#;}HX{o6`vFNS dG45@IE0=fhd2h]?/e`W1"+M LVS^`,jT6}L*i~,4>b:x:4sr@V۽b;= mTʌU5bf/_l3To)B,2"%5ީ-cj΢5.6J')R5/#z]5/GRRUb ZnHr>Oo>&RX>s&t -x)AX٬z.qöbł%enNl:ٰY7V -l]Ԁ-ށ16}MNtbIQ#Oh\שnc,?s{\x$yz1s\N2?re3O kX\ez\9``a1wԘ~οEkt)OXQʃuؽiwIa#%h%Z=p @5 £:+ם(+lBY W u}Fԥ 3=.$a3t%0"b0E;RǾ˖ﻓ:D0pPr3f~;g3;x!,E̥A32DLsޫ:a(h]C Dſlrō QE%TL+/uX-dZN' L)B[X`r/[RT⋪ޖ.p/M d%T5 ;;q5WKeb@LGPX2xjG݌ Xոx m1 ђl֨?2F`@RCcan\z8(xmel43NڻmҬ˫R;kd}B_zie-(-7Aف%bw ƌ_3pe4k|2m- G ly= (t}2̧:_x/P$èkǩZ<J6qTgRQ36:3EU̻\JB.9/R mUT[{>h32Y4Z[ߪKڿW97Sx"yz,]cDcpDKlkgO3dV) ¿&>zmI/xG]0>C;T`P .1݊ \nL^GO3[YVTI̫hexʬtˉY:+R1S:Mxd¹qb>9cvϡxmc 3s67$5̵;cfl:Uɗ 3}jM)BffgJKhG?2> SgTw=%,T:~O܆.Pv a00(tzG6 ѻNho|E(? %3@ћ~Ϸ-s37cK9}jT־3@.\@Jr|aHQNʬ3֯ǪRnw4h.p|,*oH\B/UVsT m(tj ضk(se`f2'̾Rnj+[o_mi r[T= jجQm_z9/Y»32X/đc;k,%Vb*:YqV滊V$W=6e脏ª2cTBsOioMQ%9}+%9:B|HJk>Pjt l xXUX7xLʹeH<.+v )Ca.?*9ua9HHXE7=vDэ ̬Hx@VboP)r/rL +ɉnk{3V  0B#!OZuҰ'd3Ye8k_}\Z nniℲJ(ܘS=7Z|g$#calN T):fY/:n-=Ⱥgd[mf/ "WNa9Ʒ\kt%~)] @$K-3;7I7%UE\ O?"4-":_闤N/ɛG׼ C3 zgcktlmWd@P4@Urn֫k=CJCwPJ: v.7ie*J3(\Y٠WZ-EM{"L#ʪO4,7✈ ZR3عH5Ɍ.9#qSov^l: 'i1pPOa 2\ 4ks`ӺIm>jwVz>xig%VX`c6;/ߟW7qsVzF7$on9<{~.@:Px <;tDAEoem]_jB] ~I, 2e~z"wݭ|4!23[0~ Ď3,J3|gwNl]Pݫ&}gBYU A>m`.Bf֢|%S荟>|6p3ꎖ)8U]pXAJu'&+%M0~+d,0UocLC^D=&NF*}; }l53 R?tDs -@v@&u71A @BG_4&N\/3nHx"ʙFY44-"ouaBˮ='~õTsܬW6}S:g?g z?0oȓI ئ/JፗXRpNu3Aǽ?>^~[CTH1 &%t#T:`]$nۋ+YنJ<*2a$ .!)6:~ 믝p7;7=+Wj(|r.w^U6Ň_c̟XL++u#1)(}Om;U륰jd`Ra"&gocpfJ|i;V*]l[C1:wbK#aHrr8omHkM=hRm~ǛHG)s4 &$F.dJӚ o͸C(tɌ?3t /d.ȫ,`ʺ~2`HMxLT lO*<-ǻ[ԖJ՞.4_Ǯ*($?pIvwzr1Jt7yɂ-"+!-M}_"j(`QwSu4lwL2Se̟ "dASd|,8dC)(Z vSR2_zFqNvӁ-#:BU\SV(J~| T~0yǕ : *%hpӏbF3I-fqjahsߗCGR̕/R$(ß/=%xjfd^f9断zsveozTqe=<"a_ !b,yժeqe3ETqd`1k:Gy@ύ/wރC BYe7~~iχl ?w1}=pё'c4=_Rjt{~`$X) VX`zۣ˸2]’>;F.W?mpk&Lw v^kmY*dpRͪT%mӚ=jiQ{%OXR<8G@rX ]ֿ xT? UYMicwF>^\Z@ϙJ@´(W8+?@m @E*@ XNs:w˫?œ]3:1KVT 7(~}BLId<Ù7~3(B:ذatZ6%X7{ă_zDJ<,T{8Å/ 'k=]5ۥlgo gM Ż% ⴻpzoz'eue|I7ݍx.,4@wt7$iCv'd&ӧ 5'[4`.;+oրIhhgn{ֿ[ d};ޢ[yp>R7ԕH#]HFU;?5sbaoRNI[2f7g2t.@J X =w$Z\~!Dw k3]F0,+2XF0FSgJU tS8) @%wQ:17f[~۰IՌb@W8ܜru5>(S `~ )4v(Ŧs[P "v!~sEb(xl"Ai(;E"~nFyUJӈFk0lT<5Sy<6 :zW]do (Zr)Y (W 6F&4DrrpǼsFt̸(9钺ʟRp+4=,}Jot^ u!SκIO˫,Udl'ƩQc ?>zmg n< c "a%oci>"y5Veo1@g V}F&+:6 {Hi݁v="JFy f{`ٞLc6K?Žnԡj+$PiF'H@MlkVm8ÙtX@*kZ<$Պ*}U n@y @gᏏ>[C_4KV 0r|wJՍ# CuBA/\G Z -/h 1ҹ@)mKl(@n-)nvٯF7+P}*XgL<[~goP-hT<,Kf[^+k$Y,BUb, C1:9i /y[?Ojdn +"N"452c4FRr.[Ik%nhmS3賅fE۞VtN0P>Zt % ?hv02;8nStoΨ:WE@#@C&hK>Cw1@MQg3J[bcZáw- U[9@{T]N!*tf6Zo, XHIר%σnΩ7G\43ШM􊏇&^w)gsl`&ەij0^Q[qBqъ43+X[kWUN+*W3Q fxg.Mz&H\h%x,2i}701P=spCM.ff[ƘNa'5BV[j/ʳyoAe-}U9C톅YI]xLU+]T@:Ra ex+gX4y2 S)sՖél"."j ӷ M MZv߾y#+jdȒA9hk1SPWA'!\ovI-aJ2/y}KDIʟz'b}+e't??m"yy tD@ha˕,&X^,F20I_/rVr;S[|!HUo`#յ0YEhCT5h0*.7l i d0&[ZEk V}'ng]wxLU aN@K[&n2@!p@vwJ 5#c6h$e/3垒5ilu YHVuHz07|&I^~3&JxN* X!zX+j¹«TPv"ٛ1U/ԙ1qW_' 7DcQ5 aXߊM֕;=}9Ij9xda MҰXr¡(( eW\w4Ӣ:P"V#L(OnE]<DgDLC$o|sBVEfP)sU 弳`!^$:s vlX8ÆVVLѺ"bPwP6 Oښ 8B1*dhBD6okh!V/{7Q=.v w!S\HSn{Ѥvz)wqC&*87'PSR?uPI/*d*?5ӛkL5{rZY.T<, h}ls۶F_tI2%/ZdN=_^iTz6ij w~l|,p{OJd5e 8^%5}qMu{:{b~JG0#)&wvvefI٠ 3;8wYi@WOEN I==KgȗP]!)+[XwM-~zhWw];Vt(xghj y|Qks8ysJ`f3SwP88t} Fe-gYwκxYCmkGjw4] dri8b7`P$oYS睭_5S플#ۄEޞ]|GK|p„Y!7c#k}3'h#ܪ"%KL규oS+ 3v[E8m٠:]^?pҕ{-q )6hCOG\?W/fe_w\;њ6Q%m;q2DDGln3.V&][+'˞MRZp7 ?߇7ե4Q/d2É.Tܭ^T=T)r0Pns7S[ Gt@!RGչS3*Td~X,s4f ̣ÀN6@}pGy:QIBIatK=[CS)#DizR-"Ci)ViD17pZ+澃/AHq_ie:*.lii2Ս..+ĕ; \NU=i]T2VAbH޴eFQbU(*"\{>,y{m2яs/ОyLC%o=YwU& Lqo㴍xKan@Q=["<"*2nsb%4IuߞYȂZ-DŽ} Kq':7(5U{ʋo?ь# @3s @׎\lN5h0fl~V -ǀdfyU ɭ e>-~r%1@gG&BDM4F@PeXUַn_EJ Yk #*5v{J@ We8M١%]\Qpya8ՙxV9u&Xo6HuLlS49KI<6T| tNDd+=e :4"cBǡnGR]m9>_DJW22\;΂3oTt. Ÿ Wq FUd~X,ֿV5H3>HtP|@2(@nI> "5tRjxCo/ 5NRP M|u${Ç]Ooq3 .'&P^q>: L <煲 $/t]qk7W3i_gd\_n}{Vדk?|1 ,iU,^kmzR]J.far4ުz~m):tP}p@LzZ,"-_CB}DD_f:^X I"Tő Fz@=2% Wcv }aM A,PL`IMRbke7YbXF1o;[$&Tmuk:NPn*4NڟoRb_3zRyř?&a"Q[# 㨐[ߒm{]M7vWT-ߩi AVW5vЃg\W OE! Cz.~ds/N.;o*+:UKdoZ+Y&b4` /Bޔ3Sы 1QBl&kE~7eѳq10S `|)sWJ /: ӝxXYN4(@.G& 􎈎?zqѽEnG hQRN>%+tObWIV#TX>eg9Od &KϒD=D.) B.m~CLzEm6F%C/ :YKZ~KyB< ״r0׹@%Gwiap4s~985!ƪCܬϫf[5ݲJ3z*[ O4lgA8N_/ F*W~z?=:Jb8ThH6fUxxzVq[zܱM^qwl=GmRON<APh[b%/33uwPJܨ6chW1b{5Ux눧)YeMK4,挿VYHKm~L@R#[4mHх'8+J温kTq>﵂Ok=(lؑ(zD /ُ,ZGFGdXE쁜9@|CMaCUX'@;0@5\|]㵱З\]3y*ͰGrn5xMVRrTVC5n-M=&J.w&+m4P#cUNPqDKq xO&T C{[z#Еf_1^>c&pc*rrbXP~SY8hmY x=?qmt\~́GMyh-4}h`^S;-8f86Vz[?XYpZ. C - 95x$P[>?u#q ( PC@ՠ53j߫(RflV]cI*LW J|pratMqi{6n6tzX%j/QE}{UK oq%N!F ]9qg^tد?eA+?zI=܃Z?ث__&ul>Q[oϛ5>mX3i17)$wѰSל=^F,p0̞ v~2lIU*Z]zLOwLd4UBp%t;4r+S?.6| 0w#X""v(?2ǹ܊@!'3JM. @oѢ W}- (Y2)aYEwcvƆuxHX,tJfq'kNG<0F=%q%9{(~ÔW&K6/Dp@$irG^N{ӧNRLxڇӋ?]Ĕt߭0EQ+C-}EMG%cu8*2}u0+>RFrd~/u'ċўJY,뛍%+neԸrOjJT87;/>u\2dOB 3T+GMz\|pUV_TgLg"x͏3gFsXe-~:fUq8nd?onKsΐ 5i݃ @rt<,Jʓ,UI>}v[⇀jut+N)J L|ݭ9!o}zyHQta-jUK\h΂~mUګmIpj2p.n-9 ˁ.A&_ O0I1_ poZf.B֯I 97ŁvN4.{{ЙOo{ p嶃T> !Q墛!byf5U_mk~R"{E_"8N7{ -cp+T#ZrEFR[K.0e~Յ'urdV2pV| M۵j,\W4𧭏ӥO,zd双2{zm[̮u[u=*֧B׳zLIE  t[,)CG ~trLS9:KNnqa2{X~Iӊ|I"oݡ{Rq2F3؂]!.Q^yȥp&S`@Rƶ9%cک"bXf/z.[9wSb"3t͘:31r7wG t,~A񄦗Z]ŧl)N8)ra@pڀjTQ}ZYglYA}\'|jЪQhUamY#> L>驴9̚xX,i&ʌ^[W}5 =Secs .Ԫ{i)*5[H[n^nɒLЀ޻f{k"vS` __n(eMJRS*$D ÂO%wa(-.>)DZF NmX2\/[l k<0Bk#zv6WIZ^:w'Ȃ dYw=+*b؁_wWGFYk #7di%U2Ff*?c 2{eAFlPō99._0 2Bd =U-{$jܡpk@,֤xHo ,Dze @A'P Q8!0b |h@zcbXCt+:v DTLJe0DeBK?К#5U r,j6~Pr+4=TOdc4 D^IDATqw ``^ua.;Ö]?vaH?)?.kݧF<3 bS:1X|)x:>wCHXo^Q4p ycӗ=пV_D9=l H;.c:4"B8z#Ԛ%Pz}-c._wΐȣ&]d sB@ dqq%4G#.9w˕1nB҆L}]li..SN/&܄T8D[DbFF4j(W` 3Y.I(h;eIit ;+7I %'wՂ1O. j@_ ԛ*n{E6L0ڂdX,VV,[^;9BqeN*J9pZ͕LdA~uTM ӛ'L.LGbU4fXLLGK?5 y4bxzdg|fZG>tG< -$H%!{ _i}\rңA6CXӝ4Sኡp.qn%6yX. +lD5b9CZ.7jWj9DoG,RMawp*H{WAYtƫ3x˶-7^bng.(QNJclx8_ΥP.«zG7_e[ ToL'ls)@]QڑES;}Xg^YdӶ:W6`=QF\h @o0W p8Mő3әcX`ȸrP&~ kx @%Lw+$[7m,bvlUWf9GF^E3aQuہnw!Z%PGJ|}*YT.x 蹪`b'o֚ח/ h7r+Fx?;CǤ|~[qVihe_;?j"7HZlp&IeR$+.QulIx(cʳ:uH Tm[eo?I sEvYy\w$':l.;"M;޽yHNd}K3]|lpv+ p ZշRy_t%nzFXE(@ (}Wyg>dY¼e.?;`m\u,SeFWyvM #uVY +E=n:B=X'Q8M|%hGe4_--oq$wx1t:ӹU°vEWSk^.ޣ%ǿ~*VnQ9O\ubzK=ÈD.C]_v^+xY$JآUg||}=~ЛbӨLۂ5&Vkb'[ ~}#^#}O''wbOHX;F%1bT2s֫pV?ӌaq`KչDs,tx0շ"z4ըVu!QhAjs/=cx$Dwd \i`{_}y9eN_+=kdv<(sG}ۭ?Umm*jS?YnS67u_ݵA~Fy.M2)ޟ|gǔ-wy&Od^mXUO,y㹮Wxxݓ>mG|x0bMǰ8OsM=M}A~A :E>Č`ןeVRb3aleU;ċo]Io' 9xۈefS%4=)?mץzF[ us_ծ`~~&]^F)H[jAۻ@L įfT;b '* =Su =ZRq qLjVM:[>byu&ekؒ!:;N3w8#ɽD6^M<ϕ}80٨-VK="QR?$0- o2adΩMt5̭B@ >߰^<3S_3oiXuX| 0 y cO Nu>yc'fU/z(дNűRN4:y+<}O`@hEmz+)G>yU f]ҁosa^Kx*_tj[O4Sٻ0q+#HLrg?)HoQ cD>=+ +_@x7ڷ&[á~D͆/m՟:a&pU$i'J7Z4ɰ%ei)C? iyd [Ӊ717kc:Os0G #_zwtYׇEJnVm%2 ")-\CI(x5`ޠe%-X,뗠K&$>n~T}E1>x8\ ,@MIgFUk,St@{Zjcf$DžxE<Ncsp$#Q"H*yN0>Q y X?D +\$\0: x:~S;d}d=m|* Fqrɿ<ͩF>Vwjh;`i`=1D+JցOݠQ@Ádb,r>=me,_TS-ޭ{zW~p}sp .S5歊IҠ ŭl+`4Ht!zq%K)^'bE`GbX6D#Q5[IHDB8f,E qDm:[+2z&VwWS(ilg$j]I/9D(Cnū07 QX Bk,h1R ]۱"СpɽYjz z @{ =[T4{ݵd֏w#87suKv̟#8[ݨOIH):gO&L_6ʶ~.in"6`Ic3#a.H3>8;ܖ?3ox[J} VZ7pUI+:PЗ7@/;b qc3]yuqhfeɕ =S{ pأn[V7r"sf`%84Rh~Աޝ'jГhg ].p\9a-W{[ Q%kGvpUOṪO&\a֏V lT>mJiQCZ pاou֩QlL[Dl[guEEn_z 3ܵ%$]-lg~zԮ篷߲FB=|11ﵢ^a;&r{Xp zkzw9K[{&\$~zWX5cVWNu:X۟N̜B{+]d흶MV#ןڰSל=wlWݺzoY"Ө}Z UB Hsk!Y-Q}U.0piO'd Yx5x\C J|HU堼JMq?lŽN ӌm}lΦzyyR[t+V>߾-a/>LG&]dU'I坿4_Gn ];[gCibgˠIzsd I C"'{#sO 8k-ve|C-lB]FU O+H(3 BFB :@/7_MbX8j:I jcN}t:+Dy.+M8UDyMuj^@.Nxb3T3G~G"]Kퟵ`^.F<2* řlS~JzǥH+ADLT<,;kHWtr;^8gVş#)c,3!0@B. eeU3{+`2o8=`,,ֿ(=5֢X[z_{[=nl C>_y v A" Рi, l9neAW.Ϡ@$Aa|}XmAC[ܕ:(@L?U{PEa98JqÆ} MTI!θ.}pq@?W5riN~=-[t Egտ-ɕT-]Wup}J4SΣѲCIpal6gI?Dyg ewtӏCT<ϔa'D/oǷKuN÷+RՕf*/ rMt|uiT, >]#]ϬAMz%4GwuZ}3,i]|~O_uOݼ<п!Wپc-a 5Μzʹgl+YJpV KA#Zu֫+R<܏xY{I%FNHD]Q\C)W?]@Z[NS?ŶʊENnNca]SvMZ\mvIq/ߨ {ɺԙrX>M[CkC4bX>=I l`P*] wN/&O6<1Qb^:Q#=JZ}w QGؤx֏s[f;KcK,a ,Ӈ .7ORvփQhFv2b>[angm v(A,R49\.b\^6iykh珫CdN&g/ܦfsg) Rh-tK }/LPwÎbOm6tp:1Ȋm[Du/уuӷ_Dӄ)@Nz7h ..3kZ k5_Z?U&t3+1LiP׎tdhâ7Y_~ʖf'_mΑAS3?TNo{ xiKHnXLnkk\z{/Y"7FP^$:.}IhQWV@) \ ?"Лld;n0Ⱦ;8ٹIENޙ6A~)?C ug?ah,3v8Qe@=>#Y?43*w&(ws]01+?Y0c$.p`(03H8l5u?ߨ MVp@ _"AB %<Ɉdҷo<&iJ;^d@8-9COkrK- 8얈UY#O|wv݉NfT|N?$a^dlVe,o'gv~{ݪgu*Yioz:HcZuLhś&FEPݮ\_4XG\'teuqwL h٣kWy^p3Ic ҭv;pQ5}039(篿c>8|H{2x x4#Z^[Lya[X+)7K2-;23S޷Vm~uN[bLאY|#х{N(O9=t]W-5H @H.WV_((r:L!!].YLNLbX{Pz-Pu'U3Q@pHw h}s1x+̒634Yh^*Dw>FKqkZ~z D1B)|>[xp&EJ^u醵gY,<bݼiOo 4[RH>'{TdazS> j^1h7'P.w8<pnt. |U9ka~ml*kc:ȡ 9ፀF7vہi;f Аfj&SQf{䵋JՀoh#={い V/8}\A}F-Cur oӧIn/)۫x2o}}3爠s$VZ99Ɵޞ:䛞[px5W̴D4[Oh孵5 Ib]`lF/zhݲqPk4H+= .5uާǤ*ImBo}DOb'ѩ{u>ShL,u"oL򲺊~AP]>m^h:{K%ȭ27QT ex$S<oqm\Wjmt&2d]wRⳓ;4] W<p-:@!8=q7Ǟu\dzZ@Y+gS1Cb}%#G< lR454 >>߾Yx; ?^)*U4WUa24DAD$a7Q52'~H}Fo^m[`lOZ5HQw42Tb|ѳkxę'sX,X%LK>m\gՕҋ7EV"݅5 C!WO&ִbI[EsojR xz0YY_| @bapF&A[3٤eUyjeq2/*>`m&΄i/9uiz%@QVY*-שs R{rL77s";VK7S5sʙ3o%;q؃e5bNY4h=9V0*VQrog80˲u2{ZqWdN{GoUxc8vn5.6޿̰3#l2;Q)(Ej F{gygةyD~"L Dv[{I/XAYk"S.KQdkAWyf/(슥99$i̹:E3gEmW*xeO^FJi[ Bйu phQ|ȭ~u6lV;)m@bN<-8b (2 W*wAbgdA,Zz9](t) >Iu:^{,^Dnγ.ZQ%Q1ku uֿ(-h,k;tDfU$Φ^%5k b~l]vХ両%'/VydFߤ@TpG zA(;o\W'{`Z ྲྀb:q, [ d ~,8y1bَv']+UiTHCڅ"b{JB2MU4wxMz-zjsL)yA +f9}} 67qjMW2$@13Dz|9&h ˫~% :H}>fN}HrbXr$j:UߎX @𻁀7~@^"X(4WhA-ok{Kk_}$`HbLmnO+e1sƩP bXeljNG/mī&"fg?K=M(CWd?#b:JnL/&0GFƵa >mҴ΢D +`"C[p7{'z;M4rer-6ͭj5_Џ{FțnWo(w(cb}~=e }[iak%$,>|7u9m)[֧ p+MH @\`t4ztC uaBϩ|,9|2w{`^Hh ( CH{ol镹m?5b{bX,F5%s,EN+[]Z,m]6X d~qG:v⤳׋)?ŊAP'c:KXt$AU +'JNkrJ~^z\ş?KWS BCj)ETye.[;,ݣ~)w(ƣ }hQF+ݞ?].c2e Wy`TjU;#8t%V UU{o, r7W'yP"On!`"{@K"ӹ~`H=\M\wr ACj)8 114w`ۦ S_ b3Fغ;dn X;.V@!} ٜ!YIWsI*8GEgX,֏ <3 $sDoƼ]I]:]1Y,Vy9bOTn<~cOv؟V2zd7jk!99%2}HIMJ]\ڬ /Cp0ב yH w'H+G7q[$ vә6a-87})h{poho~pмZV ϾnꜣySgM>q:Zp7,y^و, ~`"Ҕԙs:K UWJ3]>bFCC1[0􌮥䢹)4n#'C @!^lڻol;AMamW+6,Op<xG, X pC@~.Vho0sm ²q:[A)N}X,_2'Kӗ?{Tu\|_}OB*+lV7ϩy*7K?'tn h?fRunz}U-8|oEړE2UxA>9r.).g#R2|; eL(U(x|ĩvǜqVZW:lbW 7>=W3O7sqiǯhPI[OykGF+)5, `s~B {Tuuˌ>ߐ&i'aBxZP2m鹆˓EG-F-Á ~\cd8 1vi,\J ebXJ50Q{9`V/p`2PygJz7-,ud;=#ՂuK0@9=bX_]w FXii˳ \=b vBqmҐY9|ķHM?$\P@ѬQnUl4\B8SQR44QV&1ӑ@rgQ~=<LGҽ6=3[EZ|RwI7f)wH~,*&t'˴8?)gzS3GpQGE(JKU(fRE(%$.$;ӵ#gl&Y;c# w"ꗈ7a%8aޚ*cV_j|0XTWb"..$N'_ży#))%Xty %~$I b'|8ćnj7٥ w 5@Ph-bCe? q\r8@zɐ+~#P8WbXQHL`r|UѥꢫDOg:,U6,/}TiLPht,KCieJr38Aܪ7;e[2RYYj;U]uLܬb[MMDJ]FoK M̿lE}-eiv3"ղSOsf78(zd}O^p7X,F ^D .{02q&NoaYK|B1UnkzWZG ڗ)VFI(*BvLd۬ޯқGw%CfHx+/nT ]<`7e]0"EEEk3f͝;)wRkX~c3lg /z-Z䵈C!0}?M؄MGGGޙޙ9Y9Y9Y)))/bh]]77*b#/G|\ _Z 4;:qH оk%k-><PJ鶮`X,Vy#H-Eɏ3 WbX?Ab3dYSqPX|îOI[&åxW KB^iۆ_:Ao߸O2gS9kfwT{ u zLy 80gj״F}vڽk_'-3-3->JrX;B{!?^wZwݯ-`:BbX,V`gX 4c@xN6>fӠu Q2Y uؐưEʶO*Z=Ԥ^֓'v{6I1U4`G =OZs h:hsSYz}D{YD=Ks"x'^˹w d?Z[D0_'RJܹjqb #fcVVO'*<[<3!tٲX%t(J/M_tw݁333 A>A" CK%Be玟;~NkZBM 5Gz0 (A g#W#, ֑i3p@fߴHX79GBPKYAg@]%}Ӌ9Mkb$_mǫN3U<3na3mp{k,런BUAtQ%у/~nƍzult$>ՎK'b'\Gd4mmmQףGݤ%ѧ- SQtYcQ#y wh_T.J"ZF XS,jjV%ky_E!תguʛu&7Z+`11ŦI+78)ҧ(Ndcc}?m5  ̿Lt1v% hQYcӡ]>vLG J~kiX%X,?tzx'2b҈> f7@p f5l*\Tg:,Y,Vw}o"ׄ;wro|kO4ڷ%wkZ(4'm+t*֗SdiJsm#n'n'n_>Y2C\|ڼWJiO>9/01i)x}YwRxu+/#4-t5z[Ü3Zu*3\"J?8O,sJyF|f#pr4UgH$],vn yYٙZ{ˉ0D?=&|oP@V,ZV0ǫ~>sޟyjN%?.kK{TMnfߍ@\BOqg5^sRE.8@VzjLʭxߨ+2VdPSSv_(X,?B#?^b;Ⱥ" $I2 Dpx&?þߋXcՏ<]G0;X iEjmjrCIU.-.1<&t)i0p*gX=Y1y*GNeFg51($.s<"wYn5}c-Bjg`l0qUWUE+s =fBEak~Cm{U,ڵ(qOuy|J- 5_wgG2iA\yj5|u6 NN*t4sǤ-10꼱pPu  '.i4k 3noǎThAh]`2"S?Nd^=Xk@h/*Gv%Oa-8g@\YCNY(Fc&VmƎ\ K9Ѯ/n=ӣȞ 50 `V?2CG]"bX}E?l/b5BɉIMuMkFF "0Y?0<<`4u_hyxr֡"8{(9~NZ9=M:'08Po@^rq*"-X3b~lb1 MQN[>bnYDQ'LOnwtf3%dWdtu|E# sb7lq>yd ~дW#M/KEo3iyК+nZ<gtHy7#nϪT}fgIǂ^}=zL_Ҁ*)L'6q\lQ,w( X&ozF"+ͩp=4Whf/$@x83A#)7Vq}(J/Ewi'IB|n$5TL?y514ΘЁ5֮)HD5P2'MzIR#])RrV^{WJ$P$=26&sPT waQm_3Mw `(*؅.@+vbb؍ (!(ݝ]QP{;ygk gfBs;<$ZmwBG! i8TouN '"E)RS|ZPZMP)`Oe@n}r?usIC\T#]wIbp6whɿ\`+ro &/z0Ԧx `*}1qqRH:H҈0i3A~_\Z'`L>8Tw_aEV3Sq 1B\߄'NLJR󴋶[WrsZkUW^5}f͌ŌŌd `3FP\fV9`*42'EfBZۼffK,b! $X[6WUl-NM|>L~{ <>͐[K9ۚy˒3bMi_j)y M^z,)Ouv{x"d!7U]^PQιAZ7 li ڽ|lBۏw?QrҰҰ0 CMmz"<%<%} ~ dG#ٱ:e:D$%H'@ :NLӁ!}FTR{2.sss333hUZVEAV+ƝÝÝ#((N>$nI}`iYڤ\\|/ 9O >dF.b"1K/_XXg$$$pqf{byXyUyUyUWK$o8N$E [4j+[ ZHO\BD&iw5h}.4zP@P|zdc/ER)Rq)2s3(g_kQ?$-Ѝ{5җ_|M}Oa>")bQD%QEEڋL0`2j1ƁƁƁFFF ^/,lw2-3-3-g7n Aʃĉ'˧˧U<jKUXLa)SLMM-,, c c cBBB~\>%W+$$$''' ~.8ea”yV0r9LHHH}D .2K5K5K5r zmh +`* ?6~l#Gp:R 5H &7LnhًD "ՠh9Z.~@9+sV欤{5DAXXX̧O3( D"IqLqLqLb$11:1:1:|aH8K%.]r6ZC8<OJJJ7O7O7tJӕ/_ԛ7Ko\or*ʩMҧ鏭^TxxxGkkZTb{W_/` Xnb7faa,)KJT&Id#:+wWΚ5'kNVZVZVZg<<<Ӯ]O;8wp222]((( A"Eꋚi2 M M M&M;;7R/š8' gV+ŕbz'S&*Q9TUKe@())yV^w-ߵ|T`Yzzz& N48ze˾MJJ*,,Wjy<@_&L~%K s s sz0dsM6?DkT\b.1Ag!WB)RHi(UJ =viٍ!r4 >M"E?P)a+ߍoogj&r9GeYmWZXYKr02PNgP>T>uIHYH+ 'f/p{\:agԠ|nGqE$D,ތfmcy-C7̍k1~7܀cl͚Q6v7EjSJ+4Lvvv>| ?pr2y^oVz'bȠ_PǨBp%S01?&=|rƌE/Fm7^U\Eiߡ+.A%)֥dmO{OcW?VRkgm_mZmQmqBw\wHN$Cs%Et,5TkUM\Uq0K-ѥdY¼بAy##;0FN|?^Ycb] 41lԛØ̝SRy⸪'%MׅUF8Ou=.2ۡDX&YDF uns+m5&yS24s E"UwҊ"JVt+נ>'c&۲:zzrΙ7gPyB>Q#WEp{BRגqn/[T]h[kI}Ɉjzu$iPIy: jk:FjO7P_,p\ AlKe b# }Bj|Ȱbpzŀ3Jߦ1 Ev˟g[ky_ L{E;7as QFY:vKmKSܾ}sɧՍ߆Ѐh~ 4F0J8+q֫WRofǫ~:sm̵;Nש0d_WQQ>>>ةS/^ - 7o,Y (!(!(錧3+ + +*S0`}>G-/x}ׇi}')S[[["S_Fllknn[~n.]ڍQt`HιE"lO'DDDint_}M!톴_m~BP#Ԫ;)OOOfO=vvv ,8uvb;M/^6뼮Uʴʴʴ5fk֘=\p%''' Duu(ב̼p ̟z鮫rW=]t%J,U/k9+?R~^^^յĵĵγ:jŲ Uꧫ*r9V;vәNg:"DEDQbӐJJJL^0ٔٔOOn2/ rwwgo% (X0``ءCCPO>23df̩S3nb>O/-Öa˘5{k===խȭȭճVZ=#G.V]8wYsgŦǦǦSO'ǕiGڱ***\NNpGG}paD-F h&u oaW}0a={{>w-Zkv7ntI$5: ZEV .s2u`ڵk׮#(Pץ:z7ݐ??_)RK}rmZLm2J%.a"|O%)Ri{A4Rc(,ӳo)Sv:]UK~9"jJdÙ4̯N*H"bg3mO6\Z-|b7<ʼn'@2333)^K&;׃yN_@K>lv;1ƞψ`L:+^4+lz~f*骖8H&і g̞.E"t%p~N#} ȭɲq} bÂoIWt Rz /{2ϹDɒjKx9Z:E*CR=ϊVM:6K/mT^ )1.ݲ1zO~;ڬ*A=jy;V-=yӏ`H $8vI2d&AE׈׈ܕ ^^^.^xGzc2B_JR~ܕsW]r.>x}RS?8kXlDs8g1 v_N5lϱs)SxQQ|q?7o4D܍qWTTp 5{VY^zmmmvS-V[|%]:tЅcI; }5@)+7wѢ1cb-чB{#aFo"ҴǞZߥ'^Rp Pקc2LS@;Zv@/ݟRt);]̳)2zΠخ|Q]oU/IrjO!6_1=A뒣AKٛ;~ƬH#H#HFgS D` @gR7%yD%fYn6zg]Yweݕ؋:wL%^e===7oތh Xo@P&SSSN]]%^K LpLa `*bjRR>}N.ߺ|JJJK=A_hDD,KkkkMnۧn6r)\j})UWvnB:cbb\xsUUD}/b XA5bX-ly'x'x'|sMff\'Iy>+{VlEQ Q QNzs'2@@@e>fO)qA vE* aBC/E?ELL384аCè*~'9sb,|W)))\NsXE(BB@&Ziп| %BP扯NL!=r{v(Q\5j~Ώ#1+⊸"תU_!X /T.\R^{Ir&qӹtҎ#(9JT5jRƂ3}3}3}~|?~mWIiii/lVVVN#HSҔ~a%*QYyޙ{gywݡjBՄ uu|._+ l [–Pd!!%K:kkkRT)h0F#aU}L<GQJ)-bSlMQTkYYْ%cK?ta҅І6 er^{N1)$@WǓVW)~ E/D`NVy -*T|T*ĸO`p]myVNG0T]yD:g=J?D~a<pLRm2_ӿoe Z%,L(&b l͟[^9@`Qxno_jZׯU}PM;^ 5|I"忋A(E)!NXO8`2&2&2&".b]WWW'p~ *+8Li# s[:k׌j5PP%B^IIVq㓸jӨsۚofX2,艞L_=~Л|2u ž{pnLS|VGy5C l&Jz1LyF_}FaBbwr3ꖬ>M{V߆n@7]u0D@I$Ph|kF],*g ` ` h"EZ.]T]߸q}ܧOswc7vcpppYIۃo v-nݞeDÿ9***+eWʮ5k״-ϖg#^/%e &ˊeŲcǨYg]%y*y*y9[slF֛w0`ms,Y.ӋӋӋSIWIWIgE"Y===y}Xv,;e1q]u 211ʉ hSjؽߛ;wwnLLLB%t8z=.444))I#Բurb9ܣݣݣ)SnW]k|ĪĪ```زp~rm= zjt:t<`3} y^>仓N& tmDFDc-8ƈa0b}HH%Gk~^{-X\!W|laVںui N'#xKjɒ<]]](ʁɋE_,,,5s9Ĝ$LsKS.MUTSW2_) B/_mb222p*}TTY,Ui B78V=:$ 茝$N p;V0@OĆ+azP&jr:ohTfd?Ш 4{2N]>h񕬚z(3~ =@ʵu9gсZwؗt.&S`rm9}cϾ::]'u*Sh ˚zh&qP vOMt|!P߳&iӂ7F9"#]Ȝ8w`@Uf `xmU@`rX$[/2\ ot?oMA$Z&J'6#,`,5 $9ɬ5!?m Pn òƶV)A(E)!\Lqx8bSl]gLǫľ~ƄLp.4q*l:bH IlKFdcϯ1VHS*;O[eWx 0Ncu\Z0y~+)Vb1XyVѭ[fʛ~޷ +?u9CZLedƍ-&.\桷r_a.G$_vCɜ93s#Ġ>`f03[->xaIEIEIEr,r/Zk[sL)S/_Ŀ]w$@ ...gD}V$H\eX pְ5+~|%eX˰^{}zzz!CϷ-` ؂iퟶꬩ]' K#E܋שS &h&2sd;hw6 2 ƷMMH'҉tNY Nl?^%.Kuuu:::z^}}}:qFU'OP:a>|wѓ'GOҸʓ+O*++q7qc75A-RK>>>[Wo]u5ϛ*T܋܋܋;Gw~S4hB@mY6`ـe_CYEVUc,Xhq⢅\Sr:RN$w;kQ>A%F ?~$CDE&M6tkӭkr,&hh\||^zH#-3g011Viz1<ǐlX<f4{on@mX]6ݮSbے)$^2&+3 +9)d3nmzNsrg_x @RGE+lՓ=,UFpM{RY&XR;6/.@U8wtctH _O!r8G 6O @Khfپ[^YPas& Qo(kPJF7iWG N=-n4҆?6imtLJ"z8@(8gEр_( 5x8d-mP}8B)arM)R`{~W5jwtV*T7o: *Ϟ0={6y9}g}\-JeإuzR)bNB(t@JDW|!O2PϛgYl`tVq)VZM5^uK2-e?;'G>N`xԬ9L?2ZЧ}W}V%߿u0Q4'ΜYFN.\:lq売̛2(`5[i`Eyme얱5\--؛؛؛\py;wۏg?{'63/+^VXXX@D*I﮿ * * *Z=E ިGGG쾲Ǐ?z1sc|\  \l9V=zZ$|fh'Z*Z*ZzLٙ+.G11%*%*%*vvvIIq--xV<+՜sn̹1@c >XA qA  4H#ޗtgʏ+?26Y(ىy+ajcCEu?OsS禎8\.Rv 6#mFڌ$ZOOOޱc{ǶOI>}&@zvW6_m^5Xo5kjת]vM3;,o7˻:ЁxJ<%s\2`NcNcN)aEXulh͈`D0"Xz,=ާz|đqd\uXBug{{{v3lw(P֡5k88:8:8mCևm %빮纞c,d,d,RR2]2]2雧o1ASuS4ESr \BVdŧ+E%d Z4%BPӍV|O^# W~t~JwtGn=N2^2^R3Y&Lf3{סּSia통l#4 MB+I03bB [D-0Yff?Eb5w^,HQJn7 fs0׎ԧY^I6Qemd.zS?md ?͖ZH N,6u;<:0Eua@7J@'I9hSfLTm, @^X9@\_@K ԟcՂel_?ALr 44*|[\Vh9 {jXHtMLo?y? J=I#ZfL)E6nm)Ri)RnQ-WO->Y<5:htࣛn>hyoaC$cälcӛ{ʷksx"m.CFcb[swnc83QO ^Vżp]3,ZRvw](xz+jH[{c1~uG8!{C9:nL'`QIDAT~*3v٩$_TJD3n=N汃,rm=l쎳; Ӝ~ݚl2#sз$HU*qA7ңK.QYԬOed{;wد_cSSSڐ&CMwA(+ʢ@O'}l}l}l;0;0;0e3d3d3#3<<|NkǵN, r/p/p/`ơ[ $b#x]uΒΒU>dYl7SVV߂ 5Bof<-OוB!G飔P\`3mmCJJJ]tnѹEBBBrrr9tNjjsss~M4P+G!Р>CaLLL\\]DEFaAs~9Oc>>@h 5Hٰ&AkGEwH|Ud6 i^`Vȵ{([v0w{;͓k}Q@dN5R8~7` oQ{Y(P<|ۛHjY`>PMr@w={T1 `aWRjRlWɈ%@LWJ}рČZ+VEeoW~w"L H!2  Wm S@sX84ljtj Ȯj`km Bh f}>k&#yR rͲ/&:; նlaJt@Z vp- aZ!+t; [TH<ֳ'`q\9Aw<G Ul ȴ5j~ɀI*Ͼ U'.Mw]KY@0y֕я^dUއuigPeo@v @iU<z{.T6"!@9s @޷mNJ:A([JPIē{kmE}Yq -J":H"?Y\K*pT/s%%ykC?ՋՋk!b!yg?qh񒥇roicb:ɬ=!"t"zȄ*N=+9I]^ۧnUdN p)(G`Ѱ(UO(U!: Ӳ>~~q~ngθՒh{I93W^qXH6a o@b #jp+\ /8~᫇   a6௳ϻ o+V0xa`6m |o dv)SRZHiAҁt`xxx擽O>ٛ:ujk-Fs`eeGwww`QQQ-XՕ+W.B-[0r9)ʄ2I5M5M5̒̒,I$fj 5X~"E^gb"6^C{;qĽ&&&H@31+-Zίith|'#t >Kmp PEZ[O &G 0=]S'!h >z4_ ku^:wՙ4E[/=Ai]롨nZ o0|@Tiٵ,q½;]C9Mհ6li!ƶX))FH"?xtټȁ#6\[5XXX:)UNT宏O?.mCFj4mOKՄ]u (UZ\.fˎ/'޼f_V5bфU + 00!Ã>vQgGl{jƓsN= [6j$iyzB..2|ffD^"OƞwxT3v?"""V[uQS111A]|t!ϒgɟFbc&M8mqg3k蜉YVPVPV#?q\\W Vխ[ i69| CyK%ߒ[Ķ^=iOړ $[ӭ֥5jFv:ti|fˮ]/+W>| 2 rk8K%n3Ìqiʥ#G:DO6aPE괺XW+5q?; wU\߿RdQNGf$3YKhIIIha0Z(r\|h }>@NNN-B Jn/.$$  O!(ރԀx5ܘ {ds@KG u@T- y@C"*?nyzq~cgս\ kc_s ˔|_~RES 6AMفʢwѴ6$[7M4 -oYP[+* j-=d_h_[k3 nUdCU=C@c {Qdʹ_NG940i˒qߌha/;N oҗ}0o*@2?s Ҏ" Zsx 5@VO3Vk Q_6 y6ggʄVu)5yE4]$^^}=Sm@s;>4罵Ɉ._<'@$"EoB)RH!{CK!C~ Z,h I`&^V=*O)=E$. ^nmɽ|H }31;gÆ,جX@[u?c0j^"u>x% . ~3Xjc*KeNj,dk,7YC \Q3OyP]B?~ںں+WV-*tfW|B ^.Lz$X2nWQfS{5_PnHݞA9ύY\u>MXZ+|<4tejLfzNxb{EV-⼈{"\\G*|qˏ_&oigFѭ|ѯppp 2̏2P"g3g3ghhh77wu՟;M 据I0 f-6?}ⱍ}q>Jn% MB3Ù UFQeIvIvIvQzinM&[ڄ6 D+KW+ǧO&M {7?beq[byjYvj{tUtUtUġC$%%}@Ҡ4(a={X“$5;!!!Cy>92 P@]w!o_ oooϿMٛX%KA%}M7O:d-3z =%""*** ^֘$A:1KԒ2Kddd2CLd#`_AuFP%` h`P%LGT 57{u KxntB Sɔի IamkkeL(tX-=H rd2CDz<`0@XVj(5 HY0P?= KUQI~fc/oV iѶ֢w~Kÿ͎#9/ܨt@q> "9 $ @Ϫ,m$t' Q"DM+DIýr}s /]*|wu9sۓ[ՒGţzCTL2xו=?25kWC~ZCemy׎LW2]z<4駘䒨guӋgwDƲg?|g'\&qKFIu=E'Yt*rd| ;;,^ۦf;A ÉڙE;&ߖ$>/W5TpU1<hSѦ"NjK6jߏ~?h'7J|?׾:0īīyi%%)++J ]ڻwaaa$o7ɛ6\  dVǾ|*#q8J߶{m;QQQ !?:χ@ aArʻ:F3CD;A1֧+ٕeӗM_a=֣f8[[۫nQUTUW999a>>>kUyx켲NQ(FcCšЀ.]_.\~[[j>O=pÌu*<~ ?_3fldgs-ev>쳳y vۉD[mqڒ-K%RIՓ'UORzic}000XTXTXTRyT|Lxgpi[(nQ|}gi/ڋݾ( mp]@@q࣯K5&  G_σH ݮ/ۦIepXNН (uuzvx ѵơVᘧ#PQ֤ժ&.kLr: ;Ew )rkn%̊oi7B,$f >/3+H;̟̫5qPo\#khc Gv`m)P?3d@\eGզ,5t>vFXhcQ)D5H"?,_Yv[©b,Ghii!9sLgGþ_1MR#iMӚ&--]zL4Gs|L&FҾoΆ 9 i Er~9_)W)W)???+ |EQ(U*JɈɈɠҩt*K0z=]`KnHnHn IHPgq8C100h6mREE T I++ɫ"D.^{t /MRd[- 7n0&8V+N;=+,VXq\1L(BgnVoq8N s s sʠۃn-CP2;]=k)k)kiԞ=SO9Ԟr=(tpܸܸx :999czm=zLLeT.\Tv%%%eeeU6U6U6BAPd$2ۋۋ_2G2G2//窆W eXe.ƞq}g5axFV=({PV黧PG#SwL1uGmi?POKw|a]2$)>@]ի3ti QR/P h]Se6P8l8+}G3e}Wlׯ" W'_'}^HP)Rsȼ.;)W1WԷԷWCC7W֒[K.ܹB3e .мVa7Z Қ%&]1IׄuyaM7u8PjfljpkHx!Xݢހox(S8%3RKnY¨"{BLZõk5бC\nuҠԬ蜤{L|xKW)Gv{c6+,QTKAv%.\dCf^9J} 6Ѡ'G鑩n$xxvW󹖋't= \+VrXEjr7nݘUA:z \ucP}7ou]g'@b&''?'TD\".q8~M}C8CթMd$א9s8'%%dDMFm6D ^2C#C#C#M7M7M7KWWW&LM05ulԱ)))ممBЇo7җe+u 666NNN"_w &m&L ]4tiaaa-k11"""vztU|C! V)U:c{{{ #rzyZǴi|A- 7Qr%XXXy"D ]^;Q:C{5hVVVC?~RR/ۿl v_axC ߭݃Uk`/{{{)MShiiAT;VӪQMSMSM'ǟO]6um̙3O?-""Rrujɑz% G8…a}@_uG ~ <&-pGH]K K K8}ӻ޾{{Aփs9ٜ!v#҂hl@Nѡq 6Șȁ>P/qWȣռr/?jdYOJYTb>?z0V5S? @)A֚;l%@]][w~ jTm[JS]\&?K*77kBtzQȣMi67eI@{m5YkC%JL(~ci/үRq' YrZUx6 j5k2F/,{ ܞ RI\R w@qA)R| P)Rsi4]^LLLP~^!^C:n踡qǽ};롰Y)=lwi.lD:cX<^pgH<:*@~Zk"]'WhmD +YyCX1X[k밡ʩɩkۣo*TS8=G{L$&buŒT:ze+WצR3VL1{h[ʔ6gqFrɏiU ݪđ803̱BQ+,koiإl-:}e`k#IPP0>>ޞʧ/ebý{2J0$`Ip~q~q~1zzԐG>(**6.6.64t|9_{~a7n|y筃^z>}R{_M<>e$Fdn ͟SJTp! aHDo!aHxxᛆo000(' РQ˦ga~a~aaaaooo . `bj~--mΙ3M,L,L,tb{qacJۯކpqm*UVڋx5lpdddD.[ xO?Yya煝'O.]D;"Th+ڪ1???\h?˭˭Mn4,a0K~)g9^%^%^%2"2"2/?^6zmE&MjzFbzz},BoFlllmCwdޑy>>>u*0(0(0>[[[|yy.\]lwټyKjFjFjFcGk u'^FAgwm)YOZ0ʯMF6Z fLs5 c9۩a;[`M׸0Gc:@au[%A3+}t&`gZT?f+-{P+dx}f4P{5vWu):=[jThw Du; <7/¤3;[Cأ{]b`{ ȝci6*oeT{Pޮ >J-@ǟ7&eݭHNkoPDm,Qd:tZ :d7=H+ԉ t1 3ެ6Pk,Z8`ҁwar@ʤd)R~B)RH]`Tyl -`+Ak/^oook廰1 c,&yC7̇7N nm !7OZ[oaWK5=2-n520Y3'.X0yg}jWΊ= 0څBMx h2Xdo;L )q'GN%mμ=eh~sJiMCZ,@[ ljݑfjL@c-G tq/UuzXB `)쎺Z1Qws=y뀳@" gjI">HRHEqf.sբfk@~;cԂQ?3[-̻֔ez}3^]<5DKNu@12BDh:)t: 3,ۗByrvrvrv2SeLeƤ/KVG#nVmm h@Om<Ԡ+/"^>^>^jN5]8F#j>%KGcd~)R4j܋& W;IIIFo( 3r<h 3Yk6>Du/k=#)R:H"?UuHpHBHAc96lnPzPzPe \[(o7MM,2W%K[z>)Zak!_%"URfO]4vLKo_h92Q@T`,8r:̟dkMվ:o:3o+:3_e('ʿ>.  `'tttbvq^' eW=etwY @OzINY߄iQS:<:'m0/M_{!Falqz,wQzKZFLÜZ#{s` O:v.\v焷W};ڡ5X4id6MRƙݸ|?tbiSՕyğm7ӛh9Z6löBMMe2rccc7j4 2#XJ,%!$ND\\jM6Yv5ko{%k'k'kgİa===}O}O}OqZƩ* !Kv.͢Ydddӄ O9os,B:GTc߶m?>8ghО-3Zf7o2! ]e_~^y]r\r\r FF 0M2M2M긢㊎+θ: 1ğ5EgEgEg\U2لf)((|rV!Gܺvڭkda09 d3ٽ{yV|C9XOw`ggw8pan/ \s6Ì3:3z=3gl zFzzZk]wޅc ubYfffug6ip-[ڷTvW0La0'ǓY]}0cy3f͔+..F4<~h:h:h:ﹾvvv瞟{~7o,2B3B3B}CQ7tC8!W.* * *---%K833sz( 9ثOBQ@/UC7(gv `vNP }EމZ`GfK@ܶ>@8 0MWy_M vK_~p4 )QkFj="(k eWzGDtv_z+m $4_xm¯t#8;ɇ3-RJ{ 32N^G%Dz>ѹ3`2k3@pQc_A2P $l*+%{MmPi3P>PA(EHRHEjsSw;;ٝp_}7޼{sŪUF7nodd999-i[Ҷ$%%쉜o:<]l;}V] (T}cDwӚ!ZěǧީY>A;CZ'Ҍ% ]ԠĹ̠'6_0j]bGQN %)'+e% ,|؇R渊A4SG`J뀉3_r3©R2d&gyPpɣ'D kl{~QV{^ZxG$v; Ùpvh¡={HRi%,eee_On]0j5ệ[4biDIuVnV;wlY~gV[kZiZiZ}]-f34CRRRMƎ߳0,Kxp8s9W^{{{&''~ݛTAyq~ǽ: -2[d\K\K\K EXYYH#oۗ˖˖"nT7[jjjQ8qC {91c* St[t[t /_dy< ttc6<''7o@Arrr$*S%*Qs)RΥu^׻I'U.VڣGk^%^~qc1=)OʓzQGQrf\g\g\NNNssssyS m'`CTʍx-A+H\ {Y@у{~  >P> dGY.4\?@<@5= k. *nLhw곪r-d-Ԧ9,@[^o𨻱"m@m5+S w ¦$ʮ&5@qwrg+7oc=os* bi#Kg' \lteHfJmGv\ ʹW ؐN >pt&=ͭн<(< @zc,E R)RGۡCin[L[voٽ/w~ӣܶdKUXbzde|k`eX&)zD_w>~o޿kW׮]#ZDh1gל]svW]r>Պ=nuMzڃ-fn\*0FUBlکXvlq,d*`Wh|hJ%5grS,ytQcO $O&>MeXa]233HDV%]PPPxQ#"GD/푷GiFXv8C="U2J;m{Vm.)OQL|}H2 h@t*s@w_09ҳHdQ %=Z3[54gt]{j}/t%}+fwF%5l)Fuh\ٹsjׇ4447Cs^>mI#8 ƶhH 8Z?2bɍFb)b)ajT` ` ` =n&M ؋G>.BSZW*y\q˸\C3:Yճg<`ȃI 'ڮ]i{Mwww EuoGC!LdLưÖ[x㍏7>yl _/֊֊yqW"?J>J>J~ *NNNͬY7&҉t⻷N:tԪUS( ~X"_/\viڥi緞z>p>P/3/f^̼Q:SST;vGm6fSa0[q.]Tcy8Eŋo}iIIHW+ӱ-!!qぎ:'''͏5?S)@P%!*m^ڼ;$It,",!љrn=zM=uz5 *zz=^\\W]mh:uza~c'ZOh=ʣ+oz n*؁ڜFyCo=z\kfffioioiO~ r/ ձ/kkP끦&ȖqMgy 0b,I:}wq`خ?PVkLz P"t+g뫯1JWHPևh1vء# $fO "v}U5z/(j!wV#= qcY/p(e V4=|%Ui\X DsY Pc{Z=HPB&(wU"q;)RH"E? ’@8X=S yMwݵwU`agRac^`n2a*޿uN9=-{!S+`pppoܼpÃs3q\_,mCrD|nQs{H0HCfǢ7UU7"k^U(Y!2J'y@fC=\V u9F8s m9C 8Sr$%2ѵ]7nvϞ8{n%J|t ~[Ǐ5*jTԨs$Z-֫YfI5N 99}8 j`+\>$ G`DsxnEf}Ϭ|nkbGvERy$e ݤOl~t 4`5'OP1ݧX9y%7t*|AN#T}U}U}D{C#Ȍ33f yo 2+W:H_/5]0 ;:ДCSy{{=`{gs$I~So7ћ-z[  ^0x.]:Vxq>"?"?"ddʦʦHDw[Ea$Igee)CX΋bbbOTn}.~.~? `` $%֚sr5\ X VAΚ4kҬIG(Q^Fde4hѤW   ۻ:uzDRG GAA!hnܠTG" Y2#̈/b狝/v辤Kr\[b>s3wG=w?q\_p}NZ:iqܺNTL {,ف{{{?c:v0WuUO4زV+u*$TM{hT"/ZIJk9.'96bpgM>QUFAӾum~bz߉DXxeݎg:y݋x^ \*? ՚T}I5@&,a'igao 64Kq% ˨β]lN)R:H"?UV]XEI( %#rss5:vx?grj1ߙe9/([`Fۓ 4N9=׆k.YEݑ?rnӳ]嵕O婴so+Ur- tifg7+P'&;h<=. JMpxv$U]lƩ>?+-/Ҍ`fwarƦRH69%0iݛֈ<7Fˏ-/l#l#l@( |}dꑩGw:ٌٰjD@YjAdA9q$0$0$P$I$.ReAeAew/sk\ ‚:uH +6֚=({OR>I{UUh*U<тhATL|||3g 7,4h!)$'ߟ|_yjUx5"9kYYY媨UQ (ʀс? 6?RuK-^{ݛvoڽid瑝GvVpWpWp+Q(q̺̺J{81^Ev} @e.Bǐv{ݭNn35s@,D@Uq_ DpyͶ= dž8MT'l(.L!T^r@ޭMƶ@_O cb2M~L {Uo쁪qukNHImycA܀u(KK.E#uJ"EUk]561=Y,jr뭫*[-%#J\VNQť+A!9vj+Y~6:^gfoztW)9~7d/6HvQ?0`[tj֖#KfEYRhJpWtjLZo^n?ڜzLRˊٛ |cYy5 MKV$l-S-S-jCBBBƗ/_"""cknX#K,mn;*<qe In$Hev%pa v!@ڰ$ 9F7vsٚ=CK̶sbaBծ1N)t6|]sfqx[?usےm]C]q-&sUo0,^I(>KWѫu޳Jv?I:v Cz-!C׹]v[{V{^{="|"^OpHVke דm,X!H5;({fvA$ DD1a19x9 s"*&䜖 3?y gkvwvtG!אk9؛cej9ù6א///|2eq9Ά2hjCj{[ouuFImug>R,>t;QΝrܘi8[ $o:y=(ٹIK:e) TNogcPp$d PU[ PEst_䪄;wYM K'x^gL8@% 䨰9@]`0@ /T#)XzF*[nnëbn a ]BkkS'hfr-/ PmJMA:% PW.U,8 PE(fT",(" vKv|,=<ޱ*#LL_Mh«9EK2ϥY1zӶV8)z sݖ/ڹ#b}jґJew~]Έ0;}CDPZO!6^<'.j ~=|||╋W.^i:;e֐RDִ^UcF]:iTQFu"""1k5&''䇻ك?eR|y~vv6˰ [v| ~Xa;;;4}>]ٹTnjݲew9Σu5j֝77onb&L2kO-b +[-~pJ(@Ad*2Ot>QYY ŋ?SAND??iTߵ"ϸwzH!M4 u:q%wK.];+ʿi{RH+*"NP'đ8*m˱\|y|y|yii)4 Ϳ . . . ;Nla9c ;E.r+%<3?F0iCڐ6jFKK :PJ]P^=[L/UꖬG hFҼ2)@ܗ/+k "ˢUMCnZr|쏼 FBe]t>n @uM*{:P>Ma̫U,9SeҦj&~~9\9%h>Bc}ꛑ2W j:v@.@aM@QJ9 |Jj) 8U]Z(@Ԯi=yxx)BixI9ڱI / 007>7>7kteCMNi *]x v(=%"M:Ai;??riJp I ;w}NyzJꇮ_ȭ")KR APOT4T^[Ūu3LSA}H($@e `-^JyyyoooUX7X6i(D\BjѵiZ @ p@Tp/@@ ;T@ YҲtvpnzJzGceGBgJwLS&hF!j8k~HCA!@=(FTPe" . GE_ +My8_o8iwF[t;1s:4SiҎ?auqiץ]v)}֯nV 'ds !%G+Wgґfʛ{j쩱uE1 ڰ6M={8{Ξk=՞j{Xa c!b>jn~ˮcױjLц G;;;=tϿvsُg?x^ii4zsss3gϨfT33!7M>|(Pˡ.]*샳?Հj@5djccc,ݘnL7iWULSŽZj٫ppp~%(DaE\\\#.K撿i alEFhFF4..[is<>ommMݣQnUy/IjyTsaC\z"%#@|Pw!PQCP#5Jh%;/ya76fW l0`^TCI)Sq<@ 4E*M8F w1+PRDKV+ Eho mATsh3)))+W6l+WgꘋYϳg=]m)RVԴZ*i_m|,ٰjNׁkD|Tf-8Z. ~0z$=_GvT @ J]"X.+JVhl̶A˔EU& PɂuIhPt4g W)g(" P9wQ oA@$d@qp>}Zz ޢJʫ[99i*"TJSm4Zn*@f3+j`@6 2GPG2T!#/ҷ#dg$фKt7Zv%'<=p̆r8mk#%S{/;Vnjqu9mdSE"W6r/8 P/l P Jn|*N"Ӷe2.C b e2CZv[W7BEޘ2L5.eUx\lIg0g3n܆ 5֐ZCl|~jl$&MޛF=zZӖ;;*6Uln\8΅Lə3ȳȳ u[[[ x6=bմ9hG8%Sդb]ջRBJ>-cX1V=u{̀|V7H*s>Pa?ND*Uz~Gӌi*2*R-:[t{ϽWTPR{*Un&+mw @CCCLL pQe(CPn(7H$[ud7٭Bb %kԓ"V0?a~|֜5gͫdPS7Gy{'L%r"'r7o J]q:w$Hޑ mw;6DA 8WIEUҍt#t=^?M-v/1TCp< {'0VQq}>t#־ lxܑ/ᆰZ~5S*hX7: 'T 52Ξ p$?50a|Vlr7LJ_BV,`mA{ꮧZ; @wVo(.?: K{'P6`6PPNGms5 ZWNd-iduZfey^΃Zrϐtl)V}ZݏΫy POҁ}o|@EB@-T8HMPpWRЫoi@HD I.Tݜ"kqlA~b|5~4R#Ht4E$@.-$PB 2;q6&\P(gd@d P' R*@0Rꄠv3B@]A@ N S3s K]k~ȍg}7j6OϟϜIlu-'!Kj$@3kj @6 " `<[3mX n|xx֢IܻىNZaeSO:?uwoؒvK?{Dk{ܿYf#_-Gͬu(#QOT0:3@MiHR"l|VeÂW3 :9ݍGў6mr.͸4ҌZ?UPQ8(JI[ngz}3%L ST>uvm7Ϗ#rGM/+ʠ2:l#HeNN\>=M|4dgVe```ŝ;wooo~1""B67#?!?!fC~ B2B2B2LylkjjJvPpI #af=lN"|5R,RQCD 9ӋhgL[-Ӷs[̵liҲ%BPC J+WsWݣGr%DI"γkbMuuuV[E:N䛒U8Z+Vj!ՐjHI.%jjj=z٣gòò*l*#GdYD}lll A䃪2oRVRVR[ko&L Br+ ZZ+/kf2 @:;HFJb%zѢGR֬kZU] |)H)ʇ|꽭[z:=TnrSUUAP^Sr&?4beg-Ā pxj Bv RJ! /Y7|UmEKަv_+xѹ'L[OA 9nU*{B):ǪQa1P::rjo& Mm:iH=P4[zʝߍ@>Exuz(ͱp2+c5PV:` @X_OcpPl{W(P@NVJVI]TH @t~ @4,@ԭ /4Ƒ!۝_heu~P J-Cb @)+Ԧ6;.) { wjz9MEb驀KAe=9@J~[0W"u}]X k5; 3@EF|׫'pPYp^_ 5BmhrkC{26۫.{ǟ[zRRNPFc)@T0Ăe$H0 T`4@.TZ*(?Acxm PQZW#%éN`L\M+P{# P-Pj7(uܫŇ 7vZ2keVmD&2YZg{Vg%4!ňzASlc!>!>{5d|6?pRIkZi围7iot6Md$#5aMXNI87|xP*.O<9:u딱elٷnVng3:+"7"7"=Ǟc?wxWZVim -ƫ 3gT*J=~ypH(#B''' ^0x```_u&!!ԳSNXXX,IYRŴ!Ccˎ-;L]]}h!-ZeR R R B@o`Va(1&MrDa>3g<Pغ(#ʈ2266uuu$ĀT"m-m-m}WO|2g(((WOƓdk??]5P"T^,/s\(b*ƤI&?7.KHHxw-33VqK<)yrcH*#;-vZLW+ЃjwJ2k*^KΧo -VN:6ZlL2{N'=uTj D ;|vڃ@A;4d, v?20h=`'`[h30۳i @}lOA UTHS;m=o?4c1\S =w;P'+UDW ĝ= 7\o9~Q:ʯ= 8I?<<\4LRE/N=0~%p(|,p66`q05\ 0h8h6@z3S" GqYǽ\[7&|({.qYets|T(C:-jVyYuFDkCImZbYKyXJd7 `)6J`4)Ћ(Λ7U}PiKG.]?o[-'ĖVPN;9o-~~Pz]t{ϵ@8h?# _j~OF7)= /M 0K俦zf|||W,_Y%K\QF=޴̿lĤ"V"Kl{C )ҎZK~y{)VPYE0btx {4B7۞+rj6smdǸkF} ?`݃u%vɋJzefk"}.gZ A2l,Y:k᳆/,," HU 13gxͳ77l<<<]-ZvT{b3ƟMArHrHrTTT?FY6dmH)M)M)}{ݷwC^ y5pî~]U| }dŮ]+C+C+͡C7sug ===}bhc7,nX,m*_ w;$''?kɳ&6tha=nq>i݆m؆؊UA(JR!ۗ2,$cO٧#G,+++;fwXUVu[e```fnfnfn`b`b`Lae)_S&v]uQQQR6lJ777?>R-綜rH6#FT#Q^_@z`-6h}r6 a?Uz/4_UWm_1)L ^ $A IW^,Y.R]v۵3Τ:i>wxw_(kQ֢,X;ٝϺDOT1P1P18}VGPfj1ZW:^}rɭ'Zr-;rq\sj\Y];۵kmjvc1c{,YԤIQ(((___FH'qq;wPѴiGc:vHNigQz^n/71 1 1`լUVZ@sfsvTTT;wZ36gl\Ƚ{!WrYrYrv#E(B֔5eM-q^b/$-vcbLutt,#-#-#5k‚Cte}77xscά9jtF> EEEA\\ዹ*lGG;wﶜr~rrr%LdLc*Zl5LM֛7 Xp_}Fy.>8%X(hr}ǡ[-yO2@Z)筠n@Dρ ߣeqsCbTXYO摖 gˁE/#A vJsjF ״5?k (<5_pdF@t80 ?^=uu{TGt0tT=O1h7!oLّYuDj^ZєT9 PAS] \O N7}+Q)-*[U<(Y6(`KNhtd k¹wl@Qmg cgy51ְ>Z]Ix!O%EEG ;{>iVc =6lpo\44@gRT(s Ͳ7T5ك G%'|q2PX[5{ѾG#J342L]C=A"\*,e7 \v}G+?nE`º ߵ^mZP" @gR T6# 15ʍq]nLvm g/uו^Wyq/.ڈ#VXö>hiiW~'DRRS=Uvs g7XU{&5pMHi/[G}:<8htYmN6xZ wH5_xD9e8e8e{JcG#Bg*rma#u8ӥQq%BN®™T hԂ3bm'F+l^?k6Iׇ!^SN-~Vؼ36mĠAG;v1SFςs9畍W6^ٸȎ&y L+VQ s\-[ܷ$z$z$zn B>>>և_nDQFCCC V7gҟzW]ڟWWW//^^}FBBYG֑uĜm\1QLe\Uۯ_m1cB篝vRRR 秞%(A!wIIIf͸'*Ow;]QFQFQFR>I}+absq34C34xmƎƎƎIIIE"I$!!˧/^{=JJJ*X5kנ)S았:IDATo(P-N`faN՝;,|Bo$}}@U*P~5j՘^^UWrܬY$&&rp-gcƜquuȵ777ս{Y0aG|˾}/o_}Qw/dQèa&umRmOGw+ʸNs:@m?_+N]`e%9ndU<'\pw/߽|qNJ"ȶ}E#l4Q6ۈ::?JL% BƏ ·'ae=c Eo>9c2=cb"En5^kE/?;sTQa1o1>]5 `}Kp;vQ ] p[.-X}i.XS>͒GzqkyscÖk#FpeqOqض}svHSBl͈ MנvdinX1н?*onP/nj#A%(AIQvQvQ֬Y[yT8'6&\%:#//ne[h8*k9崖 e(NpSyyz= \o4=f6Mk!!!kZd{d{d{,/X^\EEy7ݸ}/)YRddžvlxvg y§mm5_h|.];DN̉9,4Ntsssw_0|avb;Ԣ3'j)j)j~D$IgIgI\\\7&&&66[Ckn30c f.):,:,: %(}*s?pÉLG#ʦ_+b~9~~~o[߶mmmmI9)'=_p ǜsb HH/TE   4viiEZhz 4K%_(eƳgE;v5pSME};gqg <,x8rA#]Wp]f6`QnGx?~gHrq naCYtYtYSޔ7>Q}D)zSyN :egggggulʣGKWү_{z齧%$$%TLTLTL<9䈓#zO=$Ɲqg;-fO?4*%*%*WqWLa̭3Μ{rɽr\ |p!,,ϬSrNɡC/^fO'JyQ~T?H(4nkָ@AoXZ!܆KvOQ藡au"*Bw)p됿wK%SImΩS;ݿw.oRKM05| iS3 Q4O *}P bQFeJ ߖgͳهf!eKdנ!S$v`i±Tgmz !G9Wbo(X=s9TTT80 bSi?CCCm~b9%gŮh Jrt'1J?kvq+ŜW>oa`a`a7M~I~I~TJաP oy.]V rӦJ ֟Zv.ąrkM5{`~ZoӷNOk2ɰ&~Ʀgvnݖo [`i>hRdޒn{MzIi;q["p+d"J6Nbo$jR+IKF-fGoGO?рi4{ yL PAbX,>vcy_&G#~M۸qg> w e<`mY[:RwwwZvk٭e13cftg“ O&<9?e.2G)T"^n6MUflv[lճUbbjKԵk]zá>{s͹7ՍՍՍ WTlW58:lt谋U/ʆɆɆ'Ӝi4m`ݎ>jL$U!sʊʊʊOձVZA ZЪ/!//ޥK{EZu[w$H-R*+O?&&& 64l( ~4z,=s5JoVҵ>~ix,Xqۗ.{]FƑqd\}wlܱcǖ{:u`??ZP#S=zN3t1CLiTZ9鷦ߚ~Y:e#J4]4]4}疟k..?G^^U۫- iuoӸ-E.b 0 5ipfah7=}iQSMy6&Ik)X`aBw%w%wi<(՝S 41K_n"S-x''hӞ3_eG=&ʽ{^/ߞ2|p$89E~89uI2 @O^  yyP*:@ *6vх7X8.%b[ro;zv5s> /w_w@ށjX$L¤3]gUVnp]M^@ \ <&yLhܣq=(Q<hhh^lwnlvl%{bO7)nRdbbbnZv$;vr; 9MN:o]]]7o߄yn_}Udddnoo/}>Q(AԘcٞu"D։؁cro&;+;+;p64!^L/SOUW]_u_"~Y,qrȿ}ƿB !1vazd0Msl޿Ҟ߄0~ynՅ Z?d(@%e{=Ig:IP}pl(0G9[4 ?tWruБ{ /݃歛69=%pzJӕ+9tБ.WKnkeZ;=I#5m7 R$J yLLLjٮ)S<8ȃ#oƽKb$&C'C'C'70707P2Y2Y2pc ЉUg^*TxvUUM/M/M/:uuZ;e;oaª^^^w>0 Np¶n{ZpZpZH#(&bRT$\. *XX@&QIڑڑڑ?:u ԫEZ}JoEߢoѷ;tw;I$JYDKŜc1*\_R2)huz]X?~`D(((TTTדּYgϻwyā8ΞMrdCP6TQYQYQYk`uM5i;n222z-΅s\ڥ_#͎4;MkF*"\"\"\21...~~~ 999t!]H#|8Χ"a/5HMNsꥺnnnu 1:0(]\w G G G RAԠзԷԷ<̎3;BLBLBLf%J#GN%o11!Aw]W:Zut˵.׺h^yQO'7嘴0iabz kگt'NRdȶm[$HnQ7/1]i^~ n+XmfSBd tc& N63+XPorn3^Qwl:Y9.C5kzuX]6e|D` H75t!&WZn`^Ҟͯ ]sJз]εi]*U8Ot} Yn pFqO)S٠Lڬ8d{8fͬY^PyҎmwжLF~Ys{V5m?S)Fg5Ҝ `.~?z -1oiii#WGm0ǣ~<' eee3q&BFI]I]I]5^5^5^7F7F7vjΒ:K7o4ߨYxxx:udee/_rnc)WXyi2d$;;;=z***Um e(k:=(=(=na?YH^^^ C:Iے%m{?#6%lJؔV'NZ,q8Z-](](]0fffmmmFFF5Vv>*%KZץm]~As\ߓvއ%JP2d@ 3 5zDDDO>=$$$ehД3'fN,R?)yPVI&werX;&ǗV'OZ%K9v :nMTx `|]`s_;i4E=HO:|/7b86NTTԔ)뇸˸,Ӕi4m6fn~i# Iö~te )H6J6J6ZF-kAZPWw^yu:pPI nnnD >z58'Ήs"sW+Iddd넔R=sQ )0W1#..D3LtEuuO#(y ܷdz^EA8A~ǀVzC)x`?OԴ<<<B&<<<<@T E$Ll:Fw7n '뱾+++46h햹_/{뼆,QθLP%FdFc spt U?UУmu^96xbFN@*xV QqO3/QV>Z͵rw@bDاdk(]d/]&) װ&: L%P߰@ 08ɍ05RpY SoƖӏ q"aE'\t1#G SFw-@L@ id@TMOΑ?"@*v2c5Sećgi8wPE#Ti#~Unvڧh8d$X Pk ~)8`"zl)FZ8m%mସ/ iZ)Sx  m¦]=bإ{[63bV n)*O{{:՛mtNb7)Jxx*!---#nG\L@L@L׈k5cG=՞jPPPM^7=stS \Z-.3zJw~gꡝMyxxxxxxxA˅OSMk9uSZִ5]_^_^_dQ(7N߰lbP}hI|%+Jgd3pLhfKQûwS52wzH}2-",uH#@,H"3b8  6`hQ(<(VzY0q||2A\FHFHF0j|WQ pMjX;?yդ$-xKɣNJ&YKSS2WJ ,vNbs5Uka~3,gDX/`*L_՚LBvҺsGzX8|#rl||OڴT=-Z,A^e <ߒ^Mp&`nݪO)R5YkdkBS늺U/@P8X7`4y`XS|5 7XF E7 *_Ȕܧ_LȘO{QaMk<<<<I.),\ U`BȀ){_TU@ "gȃ=#{kֱr3eue܏91!eNMq$V^ 3ncafZrucΦޙ-3^g&~6'I1kרL[-c0 l=Of>%K.ے;%MȠ~uJ2ֺ{ꩌy fe_&5mCTt$$.~-rDDD S{wݹw.Y]|*O##W1 XooͿֿh+'݊{__!)BNyA/v/H|C IwtTK#N1 55υwTZm6hO>}>7F\s姗_wD?8j4,]͙3qU#NQa!)0>XpN\SgMe7nCIwT=^) -t4Z1 &t>Pk@ldHCd.@ ]hx)D! Q@AB;;z~b?ޏw], k (@ P`7ep7mj QhQ t=?BS6`N=zs~j~?IN};T\2$ CShOPW_jg0Vkz!<<)))\|ΫWOHHXϺ"u[ 3'̜vhv5/"` W $2jZ%eY1Y&۔yK|Sw*ã[=S;"d% X.jf1OUv{sl8adz-Nۄ 6L7w_ItVӇM;FfoF%}ӠմuA!oυ`d @_ a>kMKj=Pua&OD񧴙"4h69x.\%K&L:XIW#HJ;vI$:O:xxxp7]ijz9<´3U\@R@g#]Uⷻ'ʼ=F>Raž[wn[aaa!f 1C0AɃ۳nϦM7%-fb(itM<<<<bP"St` O61b_eYڨ۸tuĎ#|u)R֥A ꛫ^z D9?,X7o3d)iL90q-oCGrL_, pP eG4z9®z]k^z*ݞ6g-h=μK.y摛+ʷtӝNwZ۪6-5mT<o-i؋g_,0 P 3řG}~² .,;TS= *Cv]y}7cz3)cZӫ&*8e *bjZ%X /~ Lf9>3KlҏԴUScj]"g;R~/S>A>R禎.7' ' ' d#+Wn[־EZyPA'&nU:FZ}+rKk״uyxxxxxAH]Kԥ$NN{'z_rlư.ה; %o_{VEz!ځ;L8 1L*@n2c2Y]Lo*D! Z.j4JiҨ-j[ t4Mw]~ )?K6@\)@ rh@kВt4`ɤ)>9-T$&繹<@8 \@HjϏcTn 4ghFki0!000te2㳏v{aoFϭZXXXXncw"зt@KDF7zpPX,~ +9{saj<ʑEG  z֛cxۖu:tw5'לZc`<|||&.1sszYV Bw?d)î *%5!hРsrr"##G yYe#G1l E c0cڟoE=^X3W3W3<<<*>yx4p>PX [j VK(t[x}ilZ~@ 8δ'ֿf{^$7r:]ߌ9v9k/:Ds5ء!tGX׶\˩SoC=>xnbvlիQ"FHCrۉSN_+|t !#P< ;PtM/It={,7diҐVVV_KiSڔv+Vf̖Y~gq6la9cyM.V{y7yYc.KFV"!v1pϠh~ee<Αvw~ZjM?۳՞=W{.nYvJ%@cqA_A>yxxxxx y ^fEI]_cv :Ǩ5ѿ4uPdGT@$ P%X{ qaRhv2L_rd2 S:?FO*~"3C@J`4[l[v|(j[ L`e㖍[6r.MQ%99ȹDDD]@@1>6:$5 @P^b4H`) .(.Bn8@8MO8̍9$j΅ 8-RZsʺ}򇻿K 9縞> > > 67tGCbNw ~-˱^{_g ن_h2fǛovp keoB8ĔQ*,ivh|pL7#1 3lLUd.PZ@^Gvs^of<<<< -5zM|ʠKB=MkʇW4S-lFXfX=8w_|>% 75@4^!rmTԲSWDU6REQJ0B$OQ%t22nBW6͛>3}f֗~6UKH6d-[J/S_4 a>8hn,@JRfi钅cYf zWQ4}Xj~jݺu6QKϷ0)F>L\p3oTKS_V5;WݞT]]1o>8jjj-Z:u$ 3lululuZjԻG{+jWԮ7VӪn*Yv(#b@qdY/-S)nA?Lw;yx!4iLu*"`򯜽WuS6:ho-:X?tНCw}eֻYf;:耣D݊e@c7;Ԓ_^=?J̨C7 ^mwޏnt7Fs" `s H~&*9t/")Q(KO_cP rV[.YM'צ^ؙ[ B ^ 2ƒ2H :zuZg̾Y1U0R)DPVeoFl3&gs={ȷv%qY28 *  ;dYa9Tz~q ôiߊ ag 9ӋR.}@jpf汍4EaQ<<<<<6x!(f48Jw-WGҲQz"eLEFIX CP&3it,ح4Z RLe{6RmIw##`46$NJ’2>>$0C/@4)_NHgٿnV~T((..SK\OJRQGOivv4H8e^ D `h >`,`0(F)O,XBbkkE#_;XYYۥ )Ugm')]pu6 $u҂3 C8;wBIB݋[R Bqw-c^ڴΗg&#<Ιsڮ⸀d"M;)W@&S6B1 PUYA P;V ^| _s/ֹݘڗߵse7Mz#)ջ4ث^8$;| Nt!wT#{kޏR?a]KOYٵ:_ظظo˿-n_ܾk,YT~?tjV03IBPTNb,7^-PԳO>h7'^yZXk)Zڵ럽ƕWj\i\q 5ۭ~nYlhrۛNt)@t:(M{\=<RD1'a ^8%_K50(y 3*zl藏wowC϶~VyRۺLeAD2UYiyfQj%5Kux`_׽]vݛ/:_th 0`e[[[:kkqCwV׌]3vغksw:\8pGBף$)A$PR@^@V.7c&|[e+9 \$d:/V컱Ҹzzg)R777|9  vڭkcqi,S6l T0Ѿu @x$ڏ MTE3*CoP*zapY2Vz߈jex~/ |6'sަV^Px@UK >!W\'_ǣU[c{~%@h`Jxzy9lxR 4liqYM+r/F)slPtd |W1{.CO)GVH+p 1g Oh;#^`oL[>ZгOбYgzUJnRQj PDڃҪC H /A@u] !#vV꒦@j@F/[@ aV/_XM>ݹ䜿&aߑ+_2Ubw>uE+̠-sTN>WSCջ׼, XN|r5r)jVzꍪ7H~mo90vcyw+Szt:NNO2B*~AҦ ur$0䩡(apBMsŁf Hk2F;}@^K;?aɭ_4m?ҘK.;lwخc`~x#t8pXm-6ۘncy{{;#vF[c[se}bz kuL0`)t+/HSk*JE4;/ZS<ps)N;P/l RP˅˞}(`#zBY(d !ztYwϹѼRU쥣\[N8Lwqe7'vq{vg̶'$?ÞtK@0% !r]ˋ}1&K?u̓g9&vG7WTio.']S]ެC`|:?i:=& e!HgxyiK^v׭\!G~ۯXcU&ܝo¾e3]OWF=@t=@tE1U/ڞgnIMz5tYhbea ސ8 ylrQ 4頝ٯ4J P H;kNJE>`]U.1vcƐs!Bon=[lM5 =fƗ=I?> u@qrzTQGir4vRYgIHzV;Vί_3MfHn"1+_PM@Vc՜D`6;u >]ij$/A @Fu$=?uȪ9f Aڙ̧@luHte=|Z;D-[(?†Oc䢻)}(:/0U3{&խ$p=%w1 eΫN{wݱJzGE- njʢVni ۴@BRI.p[D?H$!M~Z(!tޓ;A!pڒL/%F6lpO!t"ب'-kr%KVZuk-I'L8e㔍Ȝ& %$MJNtߢu:N$Ukrm0Fo/GݼWwtsM3lB[ JAKe2ڰ8j RkY rP RVЦ? ̰|8mM\Kij㉯;pܔ^ #-h`r_}5KٛVh_mַ+?7d́ZF`)P[u6ouq86 R/H>a!ư&*@"73&@8%uoc3Ο}:EAZ>H&M#Nt=@t_X:ڐ{ا;d_l6sm9xq_0aHyK ANh0 z,/qHm ސƂt<@i?d%B[ vdw82CdO_[#00[|,Y?gYޒ5hɔ_ %0} (sF,UA(A.rJ}  {$IZa;}2uVP߳@YuPV?@j1 mqW`T|jD (jRXdP@:Ƞ55S_U9=v+UsN+{-iu6^ +m@7Al G@Đmkk; ${UzwZ9o\ϭuے̗N3ޟnAlo(4{[~4ه"6o/m~KslELm{B78 *\Re,@Ԟ%Le N:m 8M[@~m: O͇ugm~4)` xZɎ>6CuXr chJTȚao\@Ͽri޹/K]as ؁inSLY<束t~ Zt %d箝wVrlx4vY:N BNw7LϿL]n%b=X:d0xcxpx\|@ @Zj rP3.K 2M[X[$[A AZ$Vɀ }ф }btX/>q{e^>ЗWM]RWb4l[v+Nt t:Ϙg]9ryor]ZM-H ZyaI{l4ZV?0I &HwmkiJ@xm>HpR*^b}s>I_|{ µR-qE]=WÞ= *!gB dkfMNvi{w)#$X[ }΀Vڃ ,%xǬ-~1y-M8fX̶Vb)j @ jS(7Azl50@9@~Rs@4PwiNrP49L]l$حւKvP hPI%1BRGނ@#D4L@>Y DjnQ dHMm 8UY @m6髥٬ek3d2y^^vo3uFƎEUîs,V.mz~>%O>y :ݟGs[gvڄkk̭nxv&$n/'.{~#J˞6֖bџY_ "eR{HjyłpQ;穗DNV)xXzq(ގkh ?u__y_;]ȡNIGF4dcNJ8~6ތ$ۇŃ'/gw)K>ӱ̓U^qiN`i[N\13Q!Im`*,) lYc %k>c\9ǥ&˻(:x>xfӋJcem'!g-ucC_ndWAO-MMMc:=jGEv*)=:N?=@tdAnŸ/ZwYBw:ou\ipf04v YܐZx .cb rjMÆ;!3@9OJh=As9Dn NZ;դS]vU9ΐ%:^U럭LW["KΉv$ 4bR`uSh/s _k?9ƹ9E$m&ɝ_ T$H]&8sO~G@|Ʊt.j wK>ak֟No= 9'UZ48af]J_y'ڄ<8Y3Rٲf.s r r ˦# PDK?]x?U[󑩪~GN~N鈪d\׋z>%HzÈ搢Wv:@3"}3sϓ-!']5ks$?kýmf֦Krj5laZOzdvd\} I@<b_d3Hv$ZN 0D+ 2\{ 2K7%H'@:i(OM f3@W c0LnYL| )#,2L%gj\X7OH|Im*g+p؜?_ cIb6T_lrq,$wT( ?vT-Ga9 RZ\.9XH'K/Ht(@J`OPHk2Z; Pz+@9PQ*A I I8)$|T;Q <.-]ZsP7h"-|-߬]2EosEMtM d6f rM;[ƎZ9;v;A/t 5`?pnAniJKyd lCJwj=}DX7by@͠ z|uL;nHMaI֌DDC=$&٦EӚe|% / .qGPE,% 5#Z8 4*9=K۝ԵOڴ>")kw1Yp#`gJZ^r'IK6K,mִ5K_J+7?qEn1GEXtCt:I ΗN|r}f̐޶eg^j3G3g.iV?g5];]j Qɵ'Ŭ}r'aV۾I72 ZV" ۵h!{&H\@D,3DM )#s8r.5@I p+`vrX$0HyK?˅] ee^Y~y1b,F2Ty2r@RK39݀(2܅P \*\~SMLy'_?L8pWӀrj*9Xj)٪idI} BP2 U{PAIFPA XC r8 |/e*A @mɫe5׀8K!Q-W~2GFFoڵ-}\e˓Fe_ޙr>wFeI^@nHV$0ֵ+ -:er7z3ȣV*{>y]Ш-mlk+4+,O6[~lZj:d0b>\\QUw=Ooa3"hoLE,Hw H$b}!GGO 8*K?ˎxf&zʚ٠N% -oG6rYy̶o}\+ڧ>%2N;E͙#i)IE~Rz\Wn5lϳ=ϮwR\t| KޔNtu:zaJݼ[ ڜ,4B=Uo?Rix3oʉTӍؑˎȩ G޹cA߫/wհ%6FkV,mI ZQ @d$Z-O<[V6rFu`$HZ\uYN.]d `)(:BF_c)  $_KD3,# n!+׿i`U@.%` [@Ff~yO|%,[BrWE5X/A&H.:_ DU2f75p<5T"H}uY nHHuH J k ײ*H8J*5<x5[3N:QqcM=^ڝFȞ˒!=;o|h]'?.ISMۺ^ͧn.ܓ{=~0Vo;?IlJ~unm鐽Rפ'vwK>."TE HX4炭kU6R19<}Oiir Hde{tdץǶc+hm n ʚ*~LR! i:QH[KjlAG)Vh ] K ZU 7-@8Y@81rtY!oG (p^"@|2pSv,pXH 0@jXM %bgK0@~ d &1 1k,$wI+\7XzYˋDrPWD>X6-eRTYr(@rZ<+Ue 4Ho[@mRlv!d+$9sND`V dRQJ*׀Z$ +BGUp@~#4(ހ'z& $=Gڢ@`َe{h{Crw)gAOlU<<ѺNf7Wýe772+|zYune3#џnyy53DRsp-NfI.  tIDAT4D11%dS^m6̕7C!he'dF͔z7*v}nPBZZp4e 1*yozf6R*(.a`g9|J6{NZu;HP[Ɇ :seY,>n 4Z<i,Yx>ѢUV-Zm`XzAӘ*Ft:_Nωnެ5EnO`9?ɩNӯюX=54~} OyY5gn{`GyBҾm @- )A_h _3@hy%AL,@H- YH! Y$`HqR< t2\c$K@t@94 `5'C,-pQ 4 `K @Z T`P%A=iɱHVꎚLāe.0Q- d }j)^PgE/0R( ! ESJMQAFIb/[AKy*@k --rd6r_Uu;wgb;fݶhNZonڼUZ_Y]F'rgjP}M=0ӎ.'I=+c.HJ/P3@KWndw͝ZD!B@4جEUdw#OOS>TmM p O7 /8o 8gVUªU sO='s܍99(Ut:o:N?pf!&&.Y 6?8v"%鯮#žs5nT|fR%z-h;@F7@O$7PV@ IlxѲTvqhN+W$$J* Jg@lN~%#s^dz Ē4$# ,ɡ~,(z5#H!`‚`ȏ9%x ]uZ}C~MrhN[PjO+0aK 9۲O\!+MU̖9'7(j0` `@&HeHGlA}aZ " AQGdY J \ A& f T{ `Tn CmfM5D|ɾ7sS%V-VVuN蕄=[?V]sPPͦMsm<^Nkuܫdk7?1Yި:w,ӋOx<7ex{dtL g6-mbjH[WSu&%[X$yAMmsd;_ CaxAYa%. `H}+N~AW=P7T~,maHS൭:h0pc?~Li']tMoqƹ y/佐wEVT3>0>0>rʝ*wƎ;b숚]kvu2en_gUXI>N&Nϱ>T1d=29r1\C~߽\ͱnUZ5 X+Qqq'dV9=oe9% VbҀEIX%#MI<8`+MJ`% 9WHm̓'b M3?}h,%Kg ~Y3Ԕ~znDyH j>Ӓ~ ZrW/β[ V>哮%Z@YQ5C̀ P kPK-F) 'zC0Hlx)?54H6!@*zJk>@| /Au QZ A{v" ͥ9JAozI/Z 3_Ҹܢp5>ڒ]t$w臵r:[;KmYƻuhi= VX3*ן;Q %_kCKR;\9i׫ 7M+_`ˡs^sAsDWCTw ٦Y;΀Mn]A4m0*`<զi(nfyx;mPQsD&A[nr!KH XN+@(+9]l;l4?k{IMjR'LJ0)zn蹖oۗ/g_κu=zRL`+zW%;pCn 4y$~ORUCѲ[[X=s`fG3z>#ezǶq#2G˖>ȿtfߝFZ&Bd  ̲*bekp6Jk@(Z DLbt@myhbDb$ch$`%{+m RSpHC b5U|\R SIG:^r?B#,N!epj[/~QT9nloo?"ݻ /hR KQ6:xjitrJ#AT_:MK}s[ ק#fUtj*cRVکw+e:XK_Xi7%z?>G RT-NKP2܅DD`DU-ҧPY>7z@R]j|6 РZ؀d렚pr@D $J>`Xg/6Z Lô> xP_3bnm'o??wcŽ8vӻ{Lu"[R -{ro^z:WKq.m}/ߛƐ^ FE~3?Shvv ~ѶGx|AK-^6zEV=<< l[haVvR٥;  IMÆCӾe'¦DKt>bmnvI|G_6ɞw3?{X]s IcVT3b@ii^û[kiF=&}A<XeK5g* !%Rt?3I~ֺ xu {3K}*.WqFsjo 6b'VlI'4jbĪIYg߸u֍[};fmvW_ٺg랭6ڴk6\nsXoN؜9a\skuC<veO}~U]w-Y/|ܺ!e:NKqzP M?Ħ~U,OQ7mXmǵ_vflİȽ 1b EPU" Z-m olŽSgVTF)UK$rTa7 [ҥjQ`cxɻi:f}蜃)=75G9wJw;[aEl39G>gVM-Z)@L@njI9Q[(V W~1Hă(@b b%1eY4;2h|7 moTkZ8m [<}8l< l]8ݕӍ_:g]P09\f7*6TgPr1^eQ[nŻ 3hΠsԦ6$/j 6oxnN9{r8pȡq}iaRL3uO߁#hoU/[ٔۢ!դ;{;{y,S}I~m'|k!/:5K%Ň4kiπa" 3L! tͮր _s  5SdtD,Fv2d*V>a>kq0q;kZ=1~%/NuTM[%ߞug:Id|raf_j嫕h3͌"E8]$wܩ? ~˦/nw彗^z 3ҸTRK-bpp󺆍NR t)<]9l\Y]XBxDsR~pj_º<.;N3ȹKҧ4]GS#:vI90NFHJxIS%H h`H)Љ}2hKP|H.Lm JAU@cy LB a@".K? B@H^bMt,Al%`I Rr MV4{m>Ujc雎.pdj Syvۊ<{_UBrUfUtd鿆RJ)Ƀ'<llIbhbhbNwwas[oZkٮekK/eB<d|}f-MwދHڤaosl޺WyM KybG̓"`j}OdL e ku`u)>fX@MR(RV};04q>!X$ {-]X^DGn5#IOhDHL3825oiT^\+s2g[m}㧌2~ m3S-ZL1+cV:vT;CZctJؖ-a[ˈ/m-ͱc7NqStke9\$Iv?è:ǜvIJN:㼌y"6m[^|>ӛ1w+e4{g}jLcZn2L]QftXmĶ]y6m*ӊ/ 1+u\|ݜT:cb{c֨?8stqb^[`{V:g(|`~|m^1wxȇ[]Gǯ.?c;V笪1`#8.@JFb  C$CJ <J %Q$ [ I/ $H(lhH(b u!Fn$RHzXïfɣCyukˮy:-uڍ'hD-Oo>c_mIwwEv=ˌ*qXlZnܳ^*tA3%hɠ3xdT´9`)S@K}P%->8Tj>DKw ,z-灪 #&UWf$I#AAz T'рwb]ނ* _KPM%'PFR? B2ԑF-z MwѶ<&&=(|G?<V?d̐LgǟEtuNM4fK`lf3;11 .\BB@h^O=換?ƅn\hԻwM&6>}>OPPXi;޽bᏣ4k1nIO: m]ɜo>%VZl3x+hdiYV?0TDix_eoV0IV 7)󆃏oO OۣN1 g4W;oooۜay95N 6mxZ6V%.m=\s9l~ŋ/^mO۞\jra[grv$I~?Y'NdGˣѺ޶{6%ڔhSBu:c]ve_4jѨ}ߝw7wt!=Pt)GtMP JW~w+Mݍf?4 v?b7nMj PXVmkZa3(I=&P:<'<3o272$?KeTv*X&6ᤱy2Ԧ%=a@2+[(k8Ms3Di鼻:Lߴ׆{dًm矽A*m3t~cZ?fZ<9рuy2urU|A;Z# % 8L<*$7kH`#$* H c)VVLIE~R )[J}C}wozՃs}N;ߋA߇072V.[4OJ̻֝^r_trYgUa7[Q=6*%Tݢpl, X+38USK>e: %%`y ۟v H ijZԖ 8,@} :( B,eQF"$ @[΀%Y{ຼ:Hzj,AzhAua-:%4|(]|>kqGgc]Θ4%&&cЎAkOäIH&89w=|ڍj7۲o˾ŧV|ZJ'8cV1c.̄n{z@t.:vڪT; 6@.#[&&|QT1zLGCZӸ"zhP-5*'Rteʼn Lo0^444}oF1kz>뻕V[WJ_ɠ' |nj}ɦW^izeQEeo>GƤITpPiӜ9sk֮odߓ}Ohҡ:cv#ڍh7bSM7PwC um{ᜆsαݜEnt:]:30Jn.VwY48^TeK*VMSFrŹ]}=FM.퍎CkVC c:n į7njN<{$;߅9/cC"א-ah9(D]\IլWMIYe)u׷V.Ϝ&u&{F]nK=2Ts0bm02rƵk*Ot3&ubyGV=Tu@Kd,vӆ7['9`s`hςCS^E 'VͱtqqHk0KZA J 78V5B0UKn-o+@7 %+@ DJlAV\(!p 7@9T6]d*O>8w]f|卺?oy˝A#FG΋BٓE9EݒKESc!{=Y^l[*`Lӫ'_|j :DbrTvjH.. HHve Q-,Z$vX* - j:`'-j!4jRBƃ' d<$gbb%H9BAyZA mDF4FҒ($hsd2{UZC7.:z#W\&;_+_ꕤu_xaϏ㺿LgzCC촳N5%jJB r͛roʽ)  ޺u֭[M7޴{M7vݔ!+ٗkn{tu1|H0㬺T 2OH{W~.6NlI9}f`z $z18sǢ!}]@{Ysn xie>FVi^FrW[!qc^>R 7y^u˼^2Wt9ӝLs\q5Uґ_FL1yY|gv)[lgO=}d铗N^:y磟~>yٓgv;wܹsLV3;pñeUUYVvMfꚩk\q=Ƽb̋q=pԦQFmb XgZ?R.o:/q^dw3S"KN=bX t:Ot]7 > {[W_羖m+;wm<8qΥaAN\&i  FT 0U+..6gLhew/=?҃ ?jWM6z7q"@B KFZ9urcv&22.j֛A97u3nzcc 9ħ5gr6{{q@F 4il3ُd,d=NYcb]b8r,Mb߸gQԻsZ'җJ:e2fHs$_܋׿w2 i('Rxj_~ytU6k3=<<ש2DIlULXٮA%H y```қ0$VU>5̠V]L5n{owdž}7a :𧃺W[Rz~W&!a3>v]Uj#a:PՔՔ+:ꨫEҕ+IWr=r#7ZhqE+R$oE| ٣Kj.UXhTĒs=Hc5L=L )=Ɵyjd 6MT veJv%\H 3PT!2O.$kֹAޫL)Yv)DhЧANuwߤ\rMhoy1ŜZ-ov-e– [+Wet]F΁9s\aYeɅ'\׼/fee5b舡#Ɨ/_~B U'Tm|wSafl Rsb͉5'z!G]YV0מ$N=@>Óaso6i5[TcwX}2lPб:wO ;{d"y&u^exuIw-MAOކ ံ6U*jKU$$}{6 齳!2^ 6iF߸{'Yi,\pϻW{|ۛ C*P:gq܅kPF%cS|mjkoWپtqgM49ѭi6CO&/KܤHӶTcH.$.elti+eXĺz-跗l³ ]WB?S4N/Ygma0DT9]tMx4ѯf7#oljc:jݸquZyoo /XjV)hFӖ*FgCtNmMם{ŽŞwg׺ezۊvuvxŽiv9žd @P̛akVzTeIoKn9c3F, 3Ag}NU.rx#;YOUH4ssXn&`7O QGMewieǽOÅ{7ъlpZK򜮻kZB|0\e"׵={9qcON.ͦTR;GM;Aem^Mo2Nvv rڥﺥюw+?ŕuu+LNwݦ!ϱXۓ|!;v~36zޅ317g8-@cI8(s7_nl .:xv(=ݶA ʅ{N\a Џ=@@jph'`%mآq*1\ r$~1# ~I~ ]v9Wiy+=jhJx]u(?*X.|gJXZ (PV@̀ťGL 9eZ̒b|H'|r p.Au0 <i V< @(*r'['Uv9Vme :h]rkc>$S ;v努5 Ƃ V+XWvW]m;Etw?V  d-iyҐ-e|v8ŗ[+oOثv{I cVc1#yj.*1oKBBc̦sx%\cN"Wv9݉7Jd xH~ :9]9{KZFJa2]kmi\~mV +Wp8>h {O>mrc2~WvP4PI-JSr2<1 N^\I}.Tt-\=C!?PCfdy;uQ7Y5mM[Wu>m5N@5s?M'>OSr͔ںtg=w_+ǯ]pϢ}j6pn(VH~4@<\%u[s{~Lܹf:>mΏkISs2lq+/sjL܃5REJ)t4P@RKUP< @:Hr| -!3À(2@r#{RP#%~p֣Usy=sGq])`|/W^]S|5sF$-.ړ|{G?ˎ{jǭ+yHnC`okj MԋJ/*4N;ݪp­ -˷,߲|S N58egg]j]$0=TeVYSjKiy[{"d0uY[gDk5OI9) #F&;̺3?n3g=r{癝gvoooq[Q#FD﫽O%/yZ;4ҼJ6ܼnsӫn.PuK˳K/4t~ED̡g.5{~ֹo%i_5轡м?u2֮62o۾{C 9haY=h^׿l$SԆqrjcDҚo[7]ME$/1XVͦE폄Muk:nB~ZUL[k_s;];08֮xaߍ [5hs=mXSnY7"_%u>ժ@O]܊7ݎ/w >:_YXT 54}<]md3̧ke/VV55$hixC7Rsu6rשdY!t&{P*C\'auqy̚Ɲ{8':Oԍߟv\_{'6Kq{w.Ύ˲Tj[@UY g.HUU ?DAHoShOd2uϦy 5ZE`苶;w8sdZsjU[!\{"@,# @z TwPˤj"KW@D5 I,‡0 @u@*[ݧ(( *v:cw؍݈H c轿{\'3wpΜZz{hHQu ڊZIKdϘp BL7=v:]W>Z|+؅\3P53Xhwn/j0R> 6%ӱkbX@tUO(mJ---t(JGi4\$I9soKߖmbĐ!]Wu4C  rGqI1qWւX)j\dQfʛӞ'VF nj>\`ٰv &: x]L>?8jp( `0|lǯ愛nNP+œgL1yƯ~vZ -F{LV[fftMgxjh4Fi4SypJo-)wZ!]=OX;xOI'4情iۏ+oH+65ճ#l un?ћi\kP4x.`;zC(wSTڳAޓ!=?k6U9Lm4::PtFz}fs9*d;pRuSu!d4A @wBSr,vâV EZ)sjb7(>et)#Nȏ(D,"FOsƦSG|scMĈcDXaNjZ\9ϭ]z/+^:ƯQVWu>{z~9ʧDT{M²Uw4,lۥ7g]%SMunSoT Ë/2p9 4{mc;`\̢hC9 @wj+@ @PmS|9o 5[12K#,XLF0l͞=7300:W0`V>}d%g%g%=nafaUHѾHD֣"a gb͘)jJlH=w[7M~)]HB΋$L_S$YlN/vPߡ?($$E+N+N+N!C_Ͷm7&Mn_3Sʅr\,-,-,-*"+"+"y۾<;.rsca٢|:!F(tFAn-&Ijnmi}ҍ.5d}drCsv^ ;hh5#iYJEtˇK‰i߳Xw?KeuG\@EhS N杘XK4}H;ϱ0/H,'_ǜy\L6S4tqR,㙷6Nӕy38FH-˄EׅS1=xʗE+i,NE'IMu8or){?G[˘$%Lhv$P&S,xz"%ƛ7O˴7hbywCi |Ƴ(7 id{=[2]R}0zpb#PH-Z"@")53JPXT[#ط,h79GNc^4Ɇ.{ ̽tsgvqS/~X.EF&>Q7JL"֖-ypI?sbUnkD!Qs<''֧.㺌2NCCǣJՕ+^U'I#;Gv%KFHFHFȄ mllT#FS1!8Bb {UOFd&Ǒ,(o)'ljd~2?#gff#<£_>.9@|x,Y>df򯟑fffdddb_J^^>pk/Z_||a(=aFyh4F?tF&PyKp4.acia+M.hod4Rԉhooy͗}~b`h SJTs ܖ ٫XgcԢx9엚 /nzwnaRZ3PK,E}kfMI Q!jߣ`Y7QmPΞf@9J%͕Ctmd<b^+wtOZZX :SMԠϣL-i}/ +lTJ\[qW /v׼l]K'ec6ru8yzě1A1jfsߕ95vהKxKkw#]P_Q'<rȬ 3k*x-sR۾pjDgTXsvʌo~<4h[ۜc!< 9{% |z.=R,;t_?<+ګ٭E 078ĢQm7cytأ2=ܦ=+>mV~6g|~w( d@ =8S!x@J` = #0(FsD6ʃtz^yl"ymk;Eyd/oR]ËW?\f7c-7jFak_Zĸ*eSuHH6LSS<*\{n+:1ļP|7~F#YYY;v(444ěěy繞U(FS9Sr \EU=!s{qGE"Cc?旴tttc_RS+VTT 8​ՌZ<[<[<۶/~|q1$Oeſh4BiQvW6&D+Xd+cƷ 8]Ђ5:녃f`hd Vcw\ѶѲfrJRMT2|02hErQfROr'_N0R6w{{uJFGf&,㯯TLt:DCf{FM[m-4 ƞCs-wkohY{w~XW$Iaֿ`ZtQۀ@m˸RVEy +߅;\!hpFj5mi:.#)Z*X1!0wkYF!|Gr}owJ|z0O[t/sf]$yh|W~PM%,!{ )% Pm7G @  8N'mڄ>T!OϟFyx)퍇L+oΎ51۷/ecɴ3l+jnT^!K_?zs7a 'g/9 5^/q]`CTи۝`=VDS!L8˅ P @H^hP6H lSQl(IwQ@](3-/iFd]k|3v{ zoԚ5[v GwU%|z'_@H4R^2z9ol9FN̙33'Ndx`Lh4.hsD+˷8ŬMTfoJѕ;r@j2͓ =&pA'sGG\.@pXsC9uY]d&9-:-^"^]):QKI>6Xe?gC-C[-NStZugQ9)u[T"c5SS}A%]Y喛L(p[H'tg>z]7'#Mvow6e@xL,S}'giM#<{bnMswd~CxӬ} i&+ZR9Z ^l} Șa g; Vȹ/Tw{f$gθ]Y6[v[gQz0kStFu+C2ļ: ?]-K)F@.e  h#!K8c8(h0a~XsmGE*_"H[&@mϑEd^"{DiW<, v/P;ĽʞΞϒ(Îq+4u@qq #2˝ʡf,X=F~Eo˙U34>CQ.tk~[/+,jLͮ+4Wl]YfqYl' `uU'Bx_vzp` Uυ0Z -+U_6s!OLza[nJtK\OO2ث탳Wܰ^w{GuWrm1uO7BNE0|1ѭ)ܤvߴؓyrYLH0i7Sure˜X9>66{dMŏD?/xESS?Yc:t߆?Pgt^keȧtbf`H#bFնL^F8TJP9E+ 70f<Fꑺ%\juũz&kSN,(M G-)BjV=}mmpddOY-c.efzܾ*ӺTť_.JQN=4 L?,) M@,XR!1+>>ߐnٮWn>>:$e9|wXu>ٽ 0<\L?3c+<(!Z|nsPqTqTqDӉMm6mp|B6?y^.r]S-s1Ch4.hq҈&'ŌvڹtcftanĖ[i5h~ruaa~/1?T&APssc6-g{{U;[]\DKSC^ 0X#0|.6ӄxp+>:v1!ГPqkZNc#ň;s(?˦MkfU{7Ǫ}̒qیְi#+ш71Ń1IxR~{_w1~.u9M_8ħ4f+K巟gL=;v6̖Jd,jK2;=Lj>0apf˾ ֳt5urMk|(Nm.jeϜY/ 9S-zPp t9deL2^++x<ؓ;ǟr?ZiëUvS2 ,U_m2ʶIAjr}<헢^QWx>|oϿ=/hIkIkIcފ :0':ʠ2?:4헐A5\'#+H%>Zg=8HS~_Mܜk%DeHCL ~dɘqsi7ﵿ^kk .u\qYCC罐I I!)"Q$K'.>ٷo|u1co^L˛SS0ܮBFB/K~W^nigrzvX0߂nӏ˼̺PiLfXC?XpF.Dę6ȇ(v۰]bԈ}_̩Y&nDFkG>.wvj" \j3s5P$_Ui{/)IңyG=.-Z "L|sy/Ke2x W>nk9sW+Ʒ~Poڢ1S klV|][JF U=333__;w\]wuusbQ+͕~ߏxxx; w H) YYY͓&yM2H5H5Hh4SB̂6 m҂-}D/bJCoE 3?eXAEG>V&)!60X⿿kpz%Jfvpppa.]er\ Մj/C!&CL9uԑS}xiZ^:::-N !5 5 5 +VTr2es΍;ɘ_1ʈ2~av]˻$e8nath4/h4o&Mdw.u-]צ cEs 6l+ *6ˉHolj*j4D<0P,Bͽ6{vُVsM2jyh:jzF[qzܦ'゠~\۱ +Ul,<g?ٌueکe\ͱz7prhgP5+7wVykzwc-(ͯ]7ٕ'W̷>+FW5MM]3W0OT6]2A*euű^r{~V^Q䀢Ŕ蝹4՞ ؒ84+k/.Z(Z(Z8*oTިTN'RK/0o7RG5Fo_VG<+I+mw'2Fgdw%":=+zXqZx]juyPe,h{:o7QR[,voKzF(J'(|)<<ʂ&bmk~j-b9e jWY9drBJ!ykkj6/?Ss H>X>)L(#[aԇQ5d0 οLj5O:wrLA&ŝ<*MܪsvgF^zv1g?-i~ftIMޓL֩UZiQŲî mX>)G'; )Te$qDE䟷L ˲H2F)@ ~ @12OۮMp{]]:v*|UԪP~Tf=l)sҲ?1+`2:~y"zZX)5њ,ߺ=8cQBj:c]H&V\־F>fe}YSЯJ^/غh!IEocwYJ6R[QI5*K))g6i|=^3DuVzbWl߷>g,#Rf՗誷 9 Ht,ksm1~adҩnz<9ؼ5oSsˣo`| ?wn-(ZE^0DG0P( G @ȋ9>m/uLi(oVa"gL1ϪH&zGe@$.x<]7jݖuQ=wkjQS˻/ylf{ur=tIpEZ!vUsWLǡ˫NYLXs{8 rH4@IЊ;F51 @=*TЮ҄;t:#=(dgbsr)czזoqIN%FPCS^tuuc8íޭޭ\s=~/{CZU*ؔ2mH2:};)s5`RߦTHQ\)IS<6Vx:6uK76K_mb5o~ޮ~X oTV!8?`Vv*w1eM |n:OMu%--^{ؽzhSoP,{^}XzeQ |e16={W}F =Z|S|F/YKоE!G^qyB6`i,I.jSû ‚Ȓ!mKk}x\e^ʦKxjO;n2T};t99潎cY{J|΂3&.c.N+mآ~E\X^(~~/שӷfR_QIAe=]K^ *e6  Qm(R-e$ڬa,[o>yj$!J[cxO2.$GI[uyol}nrO&n.LHC*Ԫ:7:8y\tޔK|kc.@8l=z4 |$RW&#@99 PNԒ4L '!|RG6.hŅS4YȹTi)]L4Tu~;{- Ʉ'$#rп;g;vtO3O3O#Mr7EKKK1 uC].#^7nz]A_w%%%UYYY8pxv*564646˅rl"ӹӹ5klo222 'hiiةz6?,4`3j8z~udAu}֖.r`Qs0RDeIIW׸"jŞS^\sVdʜ[HiݖF8jEW?~]٭@Cʪ ^170GHn9A/NaTpeBAMCa>Ǯ:Vo'pw*i#wn~T7O)l-,kb;ɊSvćCٗN2u޶eT[/^I#u7s4Ɛx_׾[qeEvMuU8n>[T>`Y&*Jqb7ΞS| Z TD2jԠ@ 9 *P x 1@gd9G2݆|Y=2ڣ40U'r)P[QOV 1qcԏ SSS}O 8Pm[U4+.O>>Lj܋؋vN9tSMVE,,,/rVd,2!ž={˸e2.$3g===Lw y7&AUQA11h4] |ф>م&NOp*hJhD|y|!z@2LDiЧc]>v:OSTs@H>,j?A1 7oϫ a4c|Kp K]G`_I:?> ֍{tV8+n_!llls;vN]c]c]cC=B=B= N0'l [qȼ}=]{nVݬYݻuo̽i{Ⱥpˠh4o.hzoˊ[^ 5Ί\0`; ^_6yG;լԗ5HQ#kJ}{U>YVgRLlě3Xm\cXT"=4uۭ6`bSUvk]\ZuLm'K 4mHeGxoz2uHw3LI:aYj#NݸYm:5LD&k,xTiCºeN>d Hcj~ZKG ca+N>wsEŊW3;q M.E,݄=%{%\8aC`M;Mj$dR /$]Rz8Wee/XZbv궙}y-㳏,0BFJ{'4_2IDAT @mēD'o]4Av!$fD 0&s0ָ +UoO"KnZZ%|yGc,2(xGqDQ|"ǔD_fdZg>x]b}C t<%P:s?O^{/y_o&X@F"IVR @I4 $B Q 2USNz6\%\tdK ptK6{b&1ٺ(&sU ى}(;7Íbz64U ح[c}N'ǟr|sT8fwav8Ug!BgLST:%-- ׌|||TJT֒[Kn-ɩΩΩn8pĄ qXXXT@!ظAa ĞK ͪc8,*,*,JUd5:d|?Y޳gk|"""\ՙ!aC†S>C> UEh@HE@GHFFxұl6+YlgJqֺIH)S]عɌ5FV봹:3{)mvpP릆ثil z j׆Sp^iەYxXj mS?\8(5f7d?.]^O!W_EVw:[57)#FKt묰ywguF# s+ǚWٮ$ntYޖ  #pW y $@.i1-8$ 0cj |D$P..V7t)+ÕwXL4gŸCF(">">rՃW^taӅMhf4S}nnHG:enܖiininiHg3U!oJ !A#,RC}0RS~KRwY&I~^^^|Ю]A*!X,K-[^Aч]v}5sϽ{Uҧ)}0`dv2;9r[%1MS4FBOP6e^h#Ovݨ }׶-bD,+m "·lG ,(&đ[j2FSi3C]*2.) РvP#zLqlg6I;5fOQgOB13\6-gxXvԨ~>nfM_ WpNs,O>! 'r@Nb(hE:@^H%@`H2Md-_mu;gO /8@ŻSqDS8C4~sS{>;%͙OXߖ~6HI(A c)aI&mͦMO?mۦMe YcyrEtJ+yyyǓ0wa]kvٵ LC8MܕBMC+&@H*1~?1ߥ哉 ZJ?rȼ^˼˼|$S#FN ^5+ϧM4xN&Dj1NJs^i3D1joH> K;g/%ӛ? ؔk߉gd Zb{\QQ Q+]]r[Q骂@S&1 %J!@P@jr2R (`# &.#r}8xE튿<պ1-d[J_chX9 ;8.=8α<W}^h6K[T_W"[©m +ږ-#Y@p@;Bl44@lQhAc s$\bK ȉqЊ\6nd-b1#g~ⷥ43YmplPTfszNWbnʙǕQ}M(>^#/1"o%~YԺ3JK&Ve3gS6߶fbk;"W*t1PyޕKr2Œ GTpx+3b"w+g\c/M\ܢ!8 JpC?&{NsB]=`Gp`Hj"cGIZ4b$@"i tH)2tMH51$lB`uÑ>ōiǍza })s2vz 8nքAgS"jJ\u?4`|s:ą^HPE_rVoƭ[/^WX_ٷp} ?7}nGN<XSͧem~Gn)U˪eժ I(n7^z!{BaIX\p_~Wb,vL:ąT(Q$!m|$}>u R-RطoaBU塵Ok>xA Th Ɋ}+wK2qIȧPb,zސFh@Hԃ@~Z,9T>5%}WEqsi;TV;r+MSߺÌޓ~x}kq--J$c  {* _mpNFJ2 Ig!_1޻[N/?zӗN޸0 8SuA$6f(h>=ȢLux76_ěU^WWcX'!dHJ*'F$~,ozF#o3QTr *kp}SGuJVksZ1ƛd˫c i}[T]{`Bosf]^ٞ_|7+юri˭Z&m(kbB Tz)uL%3S]y!%{ϔ[7yPQq̩gd "D5B8 /X0$9=i N PK @jP#9\$M>#LxN(tj b4:3N w(c2Z%rs׷5@Zfي'Ozr/l3dF} j7iYY@֋[٢#,! Z +k"oSa{"{T|c"#:rdܪZs~xxq]F 3Hx&+#dԚm<8NQsPk7u_:+[ g`tl\Ax9;fU2nPɫ\XaIW6~$gX{oeSnn#/XkwJ=(Ҋ3x>&;33'Q8ExrgvxoyPcg/̼r odW9ה#QY1Q2ZddͩFvk\}hn[ަS(Mj&0Ω e,Ə}~Ѷk1uQ~既qWvie=Tyl@[.CEu/"Y u.SK?K&˪nU*3S{'}\m+xH2 o&1*?h͏jQ)'5#6dK2=shmݒf^֏-g^] ܩiWG_f(z4x ]W͖Ӓ)nh]"Wr3q M_6P1PqGo7{=[svt0@ H$}ȩ8.@<}cQJʖw/* -ѽ߮Pց t|:ߵVO؜2n#\91l[gigm`To!O}e1<"\,A_A>&Dq@-4Zx$HđK/Z$ :Ɵ(T* _$H|2eJ˔7n8ܐIͤf:ߔH333Wo_}ggg΀WA(FࠪsPS& tr &5S^;n6h!y8.iCMzwQwoRSrMNj!G3}-CR!x͜i-k8}ӝ<^܊_0!tS"'yTL/>m]~j]YZYK50ڰ1)ɼВV_8*nem2s-U~#6d3 a c;V(QM+3wܽUUU&--=~,{N'-­tttW?_s~gЇ>u:Lۭ[o7%$Da~#JHB!vQCHQդ]֢4ܨd2h;bfNQ1)~Cʺ7a#zelvڶc;3-~ٞOQKf/11إ_-2,7Ol.fPѩC i2$K jڟi4F.hJ+Op:mvtA; _Zjoc1I+/+&땑|nml-?=MyIi7j֬fL]a!@ ?C) ` Sj۔jDiGl`8y|bJXbt~ԕf_uZ5uxN\;>[<ѤRVR$?&bK|V]lDÿ4}8ZK'?Y&͠fi>]kl&+Y 5d&y : #\l"ud@T/,  "@U}cN\T~3@RM5Κ.OUcsimn!0,oػm[gW?3w{F4ߋݏ:ِZu''ٽ3?\xȆaEòۇ^%١jTNܰV]X_42L[v`lQ6Vu:SĞ tSNC72ߨu`.~!oӠ-\V4H* 9-QWղ\;,wC\6ح2 ̶coa`5uYi|wLxs7/`69a.s OH1@ .R9@+/Bp8X5)lrВWdŚCwW33utW_\Y#}=tPWa_}!XPSA!鵖h[ oM75Nr[o 1cs$ QG>s;/,,|)_ '~k=ȓ.OJ$q<<cCP:IF:={.칳CVe?h4סhEǔe=Z{{Z8=? A[ϐoScgnҪbfoC䑯$XGdr+@ UB gʹqV!juV)d)@TD@/Gu@ J/0y qFZwl˴kׅQuH!?g(_0YԔC? wި^ӷGZ]jat0+-FjUq8֧vo6v{"8^e(N-#A1\iھ>}oTG};. ݫWWmA"l>砾Y$Tތ^*5sQk*Ad4q4mFmԏ!S-%FQ3Z"(Pđ> Ke301 >iǭ3~^vxa^w\]餮~s: 'RL 'YK,!\':YOثZ2 C@gR r!@6+ɺᙽ3 mt]^h N8um.:ڮ.~S-[!luboUdR_ݶ}٫RTh;wY?~d;wlZꛫob8̷̷wߖ}[mX|%5{h'x'*>U|Z?r#+Wxxx#XAV#FXiدHGf`61# hOyYBzN&hɍZ jPSu(={8SC#tFh] 4ryθ~E)Ǐdzd~m S?&61_ɴ0vrc |ƞfy#TZLh+6:rDZvFgpFsG5gleq {:f}x }R) j3y7:``]S^QJ_d׺lF+t6ΕٚbO${ mQFrjhk:t.U{VcTqIqHD_ǹwM6zR;.̘[Iid/0C^øѺ_"Hy}ɿMBӚUAD=P<3kkQ^vWL2]^q&^Aqg(/ 3("T=N@ܻS[ݣeZNIDlD!$G @#M dc$Nx聤ϱAgb^=9lyr wI@ L a$&@5!*wxd #TP6ɐG=.Hٶ:h}s 9!?qLxNa'YjG-_V;ڨ@_`z!!!ZZZ;^xO?I)dcyUyUyUy/xlllRRRnGݎU?IF2&4Mhcݘpc 2]LW^^ 0gGfW{i@|`_YFlG:V ۾$Oq||K[h-!Ԋx~FhVtFs`Jw8[kGkL,9=> wa]&%>zetQZVxiIpdp[b{Inj946̦D{ d./uZ"cd5I,1%~@0}_3"t8S`-^yUF6o؆2eC?-ndLi\~hTʅh[![؋OTjBhT42J X;ػi?\O(YyY0>5jUiu^P{>s w1O*  8Tj?Vv0)X HG F/CPd@.6@$R P[ ,&uP @I9&i MB8El8h oUɼT3*N7dnōCW&ӪvoXג]u|FbyBٿUتOfw"f ib2 <#Z~v8jqMck4y(s*t`PԷ1&[Owl}huZRv|}V͛Zztg,owⓥ G9J}&@QnU#ƁVIu¥:zt*t_wqbL8M Gɘ1uŧ٧uBgI5ID @I %@)Jd=I '(?;*lUirHD( "999c9#&"fEEP$J9w:|oqf.Ν~Z\uN}z@? aFtsvپt;pk.=k^we,)Tn[Cxzc{S򿉺AݠnH}>RXXXڏ?{v;cp *P ~tG.-ngκA(///;XciӶmjb5 4ut*rVX`nnNVP+:8?"$z&ڦNHEEu|żg= |eR M՝hz'N:r˽иvntV#TQQQQ^tSQKzKu53:35?|4xv7 E}o8.>CL&nd,g@ivDh}H`[ܥIS5bJ^7x}rR\E 'sV~UGӪ;ܑ^+fh^3:t\{ R IkПnn iSz^F\R,0~[tE7&Y!FPSTьJWXM[\3D cR408'=[W@n5l"TRAFnXP]A^PۿL1dnBÑj75w2vWع9 ` J2u0)۪ab,ege2 edg8@d9AH S$)IAD3cGdLi5wKuY?HOe]CpmΜ!uC+kfSWPнy-iSt|ƒ&RfNzN/]Τ\}^Shgy{. u'pnӪi׍\w+p^|,Bz>IN-Ȯ:{50l͢qNcf80L1JR'ߞ03xCAˍ}/-s/pV^Mi/nQHR8)A2%28=Yl;ngNa@6y˺+ ^l-51Rε$Ϧ&E\)Pd75NFBlӳMO^0y.r7Tz[؛coYkW{:.`۲mٶ[oy_{@d"Mݯ't}́}>}NG?^XcQ dÜz|w]TTj֒;V_`BR-^yj^΅sȬ6ZfްaÆ z$ Wc7uD*****m**l\9Vʤx~ 7N(BK5 k\T3[ު$Y\:6%r`jU{v˴kZ_u>A!ݲ64=AqWڰ.Њ4?y}N>\]njZXuJ5ƉpsMV 6M6VAc(Q`׻mX^0F!`xhE]/T@جZ%$:@Bj`w=m,v֯73ul6\ֲY.@"4v$@mbd<P[Q @# %%,4RYu%F˂h|{k}'Y?vS\SbsIq^jo_I{e׼ԥ%܋ueeYejʣs1ʖQ5PO٪ ᄹT$PpՊF؍Y"z+ޮөVMjYꔿIk̭rv~oΫd6Z-"ָ JSܼΐ Ok:l {OPX|=M2Ťw^Z칛oZya[|v[$csgG<M_: 3@Ԉ5@h"3v+dd>1Nd1v@s!@dl(55Vl2@n1gKzh1oޤb_f c 0x7_AfPWҁ:<+pQp s s [.b+4Vh{pSSS:Ymf0e2l ZC!$M.]:WpWz~-%K w){ʾS0&6HdGɣF~gozMB5-OdAGG)ҮO^{}CfmFC5aM_@B10nw mdעGBw<@rROҪk~Yc}XAUR5L6YQUCkGąϝ< L喂|IHCk!KP%jy&N3ivZԑSj/ڽ uC3Mƨ_@00ɷeP$jrw}k{9O ]75AFt`]$[Gj՗hMW3>5(1"uޭ1JӃ>},=o2D-E_OJ{c(/~C%":HyO/GH' eaڭm'Z[6_btlG ,Y?͸y!%LI tg69!mٮœ-ыգ#1bD2ul&@fj5; ?@' mz'HH5 @Jh$ЈI&~V-bMr'{p1M=pMeIY]>tzά60zmy'7'7R@c_=8($ tºF"zbaVƢzڟ5Wxrֶ|<=hjmde\Jzg[tSobe׬U]vH{~$oJɋ(,p:zj4HЇg0 Wԉ% "py.VV Yo ."Wzb3cC2jV 7:vJ>@<>ѽK/ϬI7L)A/"5u2*/KZ/>7|nۦnx`Z4"Ajf5zUUf T߶~zz3g^{___ؙcg;wc+c+cNB 9hr!f$a{-\oTTϵϞ ׃A4iSLh)ZmkO~`ΓZhTEEEESUTU~xXo7wW`.̥f܅^T-dPQf)La A=?u:ZC^c܀_7=rSc}ma^=rXÀ粵ۖ[L|n6.,##zlsƗ~68Cu!og͙$?Fp؍?5WPI.><ВwgqI%sE^?A )?aSZM[ ӷY94**]^@[]H p~ci'S B[e$~}i͆s>-048^g*bggtOs oجl2E;ktUj E̷I ,uAҪU;u $pd=l @7 }gKD E ęM E6)}9\}^R㌹E[m3$p"1^wQ_[} :o`sFFlqi^B%AWCJ6:;H7N1Yؼp43횟SSa䩢3E>C$7ADuk[ؙ(jX;ܤx|k r//Q5)+l,8KYcQʞ| 7>R#`uN6kLӺs=Zj+[74-8X⒠/jYVB޾wsmB'#(_ EI/x3y%l@v2sj}ӥ`zyu`;@ĮIy2XJv)@&.fN5Mvz2 @I #Fٯru 0Sn@_iĄ[-cOnQl"O$3lJmi.0fƒ`ub6{gLW:]ޑɹjʔy_7Gqq3P׈ )S$^!V4lxős-M84RfS-\ߡ/2b ^TFS7,X9%dwfe^y2~OZlKZݔbhZm^A}ϣ+걟dHgx* ,p_@uNR?4j976Y-6n 'w}m%=i`a塹'u{Op52 pXkkYvά@aY ?csMi sB+c86mׯ~X4_#w--@ae `<4u2*s:#!;6m8zr5aaaUWG|ǦN%׉...JK5km*m*m*#ZV+fD̈$D?|ѻ?6=gΜ9sJ Y2W,& I-U ɦ~׵LE/8RI%Ɂ[r R~{p5G+H+#mb&?,kZqgxrG#8N\EEEE7PUT~h q ?W;(<ͿG<E/jifr{gM~%X#+dhU1(20Kp2w72~\5 rM/jZcMzHS !}a' Z[k0I$K+,ʚYދ\4|pb.}Q|P4Aq]rk_ uȲ뇶>k5ձvG(Kok^@w>Pwcr@Ѹ!!ۡĽ#G@hac4EՍs4%OK7jBB*oNtڧS%*LiWTa وSd%A.Ŕ7Qg\&Lt"1v2YZ&<H9' y!@*Y Yb @!AJ>pc?T6h0z"Heh"HW|!iu8NF #OZ$%6P62~<]O:40iwY[}YA| _ (Mvo6X$CaPBq+vBkWbW,i 4`#cOYιuSWoS֏ 5t\Z7*EqR{p[p9|Bc|>;?k{#K9;]cL}m<8^=~2_mQdwIXnqU-K`JF˪Lt5wKWߜ9'!Z  If-8@n2҂H ><82IX.7,p)wդqsQ555}O_/K%RשGOGOGOg 'l0aÄ /*_kkMKb+^p㫒V%Jj¹uJJJSק^rmʵ)Cݏ805I :t&̜5sYקO_))NI!D=P@]TTxK:qn0*b))ߡdfj7g7n K[777{ʏYߎ]y*****@C u/[֓:K. }qztj욧vc4h΋2/%%k,s~m۳Ujuڹ_JӾU'2Rzпqe8eERn]l|CT[t;A~#iePXOXu؇./^mR*8S2''oFvVKMS~J;ïT2 a+ A}luy;u.Fӣb>T 3w*DrG&kZYVϥdz*rz͸*;Ofc V^~*4oCmOtט\4iX3UEJL*9dN:])c.{\R?J<"O ]عN"vb Bv6@gg,s 9N c5? ~[rhT$r@# = J|z|!CgK{8w+f{(c5$2-N+ik҅2lǰ3l0˿W)$ʁoeSImm{eų]O:1xr1ܷfݜ#LƗHɔWV0 `iW'Y)uމx+f-[>YrLWNVoIѼ;*ʃq# H2H<vrH+vv;-(˄H6zegto6dޯM/d׽˃Z:h鸐q!B4ih}i2d 555k ! P]vw/_(0ӈN#:Z=jպ'O̟?{K\pByL3ΌV3Zhe~NC@!ﻖ.!kޓ!ɭ 8*g~|||V5N4kjTNEEEEAU TQA VetHVF(_/)xx $kf֔ \+|x.cV6m3 ӑ_(J={0E&sKS+G^jr?Qc˂2м2O^W6*jT^//:j^<{qL/E0TBc\ΊCqKT"CuuOZM78ґ4H9p0Ԗ'e[Z&^p mƤuyMIE,j^XLYp蚩hnw[~=`;(_쫳Q˚٭R~䘛, rfɅbc3ALSt.=y,DldSd0騜jKJ~Q/q`ۆk1:Ӈ>>`$0h0y\w &@'٥8ER[ԛz`6$%F#Gg _yU :mo9">ZKzzVQSxޗyk4 w:frxrc۹ftBqtv`5}![r.T9-hdd;[ RV!f>4{sĆ.SBV^iO> ս36(1S\@fn:KLftm>g~8."@9MʏNCCc]w?x$H`U}-De_vJJJKSzٖe[m\d$#>R0F0F0f髥*(((( ߰888ǂs =泛AAA]fwͶ]ev/F&R)|o}ww?~ 70}̾_P:y잳{ZNEuF[,b0y\ *7w[k_oFSrp/nXxsbeb,|Vvt6.GrSI_+7yƧvkWGG͠c:/wѹD0ƈ 1G9] AQ2 @dptd(q [Dv@Տ9 t@)c8R22eu(ȧ("QkɣtSSL H\>\z8~}YCY%ԣDuzk4&&Ԛ,浙NmA.zpE]~:Zm8s#Dl }ĝtupŬ zaQBq]_EV!W^Z/rvLx|7jT!6#do=&lHi+kh¨~&48_Y@VWf G2Vȿ}6OqDS`wx"oeh;RK'uc_T[p@ڰei,ūOw ` !jͽsv]:00f퓳"~d.L YLpߔ]b /SVBTcw%DJD-vQGAWsyüaZI\>.[~nECt[sB5FH-5=nNLp ۗkc;ueW#!_kYgfzo ɓLh|pV{5ůE-[4(&2?zJj|q۔'Ex4Rgo+~  Bz"҂9(YȧLTvSF/xEM˳)HyY |f!k#p%{Ȝ˵ڍ_/ \Fu& VedoeRE S}]n}[:CoГMH TO`$$%=@{@! PSKJZ|`6f6u5oi\ Q~1\&yCE.ov_噷 $M)s2 h3YeɐLel{WNw|D/ChPݩc$-b,F}d DÚ> F޻κ>4KߣPib!: z|@Fczzm5z%?:goi04]8j.[-}6{ϕmMY2?KIoeQcYܩ[7٥wḯٮmzx1@I}^qb \Jj](f:0F2ofLckQȟ㑳sG ^j\3 /կ.sE4fmu%bw=8͂E"~_S2pe8OnA,Q!!y7m^El[~+%%%ǣ$%%JJJZj}/NNN3 f@ Kضma222z {?!RP <<E;|Fܘt9G#-5dNHֱL\{.#MBs % bm lq/YVEkV1,}< 0u"rM4ykЃ3>{FyA(X5V+PE,i,QekGd9~)Vٳs넨V &pm1SK[ etj(b˘Dt3]C1dO´fٚa> f@0[ʛ/N-@Zܩ4DT0@ cRǞP@5ȧdR 5Sl0%@ "?1߯k.~Xt_?;TayӍ+zKˮmC8Ӻ^"?uEka1-gi0_mQPΧn1SaMbcEwB*uRuJH! x٨nl7[āo|F5)B>F>F>&zK-#zu<hi^;[!}rt]~vgNSFxGxH]x*+Wa.]oT"0#/0QWR]jw&)QR^Fnij%Fh @OXu?ԙ2d>|WѮ]E'>a-"(W5PEEEE?QUT~T4 W>N\=֠pP7UܘRWns^iĎfNlh5d]X.t~jfy{DfK#PW-*dάm)w.ure{}d#≸ovC/nk1v}A- % F&qh-~O ^\s`+ƒVt3GpbJsetZOG2rDF+KZ, dr2'Y|Y0zL$HW*Pf$.ʎLOz&%_x{l +cRl|Ŧ]Vƈ!IJҸADJ6ʌC4>׉;:^$zo1.*? qESn?wTîeFe#UH'O> .Oy9#5-jvg);- QaكrJQ])R3C9sF=YWy׳w'3vafR/.#F 8O8tڗ:^]Uit'ިS3c]z@ |T)e]qcō7،y{|G,`^V؈ype$`[~)N[XhΒ*+{dn\aٍ"7lJJ 氽r[8^G?v?jm^g'YYNTϑϤ,ԡ gz>}ҶGzqhҡRT<͹c8.Y00P9V61: WF;t]+M/lYLօv~]^ٙs=Av!{ mMQ%0/fv"4P;-U)3n|>}7x`^xZ}{z'(%m'Z02]T[Pl'TavdjRZ4,_鵵i،|nN:4[ԥҗ酨SoD t+?6nc6{tmz8nnJo?A"[SS*yơ'S VOqfqeLRԫe%nKLikkveO_nWlv.+2M̻W&>BLKSSpu+s/K<Ѫ(BߋyDWX(VeaJTVkf$2V:D4d=mvLg,7%{`) &_Ͽ fO/G_WOɑ׾`a߭I:=xw3ri}kbh(f.]ԥ/BL]-wc\^gHB>_^8 oҳ꿌nk]PXN#ԹFI&r.@>9倗o\qF>>>JKq 80p gggϊ1+bů_WM JE#3V8鴦JضmcهE^Y[DJuHIU TQ))P%&kv;`:e9mCYSlt*AYQ~5᩺..^<R>'7ڊ&zf+|UɁV!z~jһqcLy}dW7PuO=C>&7V˟T9Iϥp>cI5o+D/jgLE]DYX#2|snc#k %WX<7㓜)5QǻMє8]*;Rv<~?}ZP~bYPo{gą3;)kSQ2M.ow(:w#7 f-s,l\.,tyEAǢ*uˇ6c6QG"%Y*xwOOviIDAT~זcE 0 ]`Ї^Ip+3 513횋6xĽ*4IBC:gMǤI[:(W K~!^jw6%d3jq Թsyņ H4&^eWW]PPP=l尕V-to{rppl BaaW®]@ Rԣ333I%;N?_VEWj ݩ`bK-cdS'>E3,-X* {,]@j{O M= 7jjr.aAۡ\UPEEEE_R!Ccԩ( f S5w,VDY5܆Q;qO;Q"/ʒ+fK@ ̷2ўzr;TvXJO+qׇ/6j ,3>Z5b[w{wIg؛'GX-ydTPd4#uW\A_މ7km>~ >a!f|r3. ֫}:h_%eӋY\N ߏ|x./Vx :Pk=:y's!hnywtx fI8D)=z.}歭un;,iNosNNʻ@αv&c+՜t|t+ބh&خ5xɉ N$Gδ8]']-NxOV*77]c)YRl'mvhŨO6bu=c' [-879~#dh0Xp곧^8Y*X_^$e;_oXW  F !`3Vqf\4g'%; X3w`oh˾.:Ѭ-~@zƪd"pV@r R NkjUҦ~O[5V;hQ |v5`Svb/gVHujrk۸ǹK5<4z&\ixu2Mckg=0xC 갻;abws9昊M??X.kLAJ+eGhOO=n1 W|/ _ܪ7wreon"[hauU 7>9}BFSO F'0KM5_zy]F<@Č= v`K@3)d 2g6$>Rbh$ŧ_scmd_+P[?BRըPy9B܄#ñ,6u**?"*"DJQ%"[5Z'&&nĺGuaRe?΂n݌o9ĖVvXa%c<7(Q Bhh9&sL1:: hPx{s-SQ~uwxyTG_1t)scV;ԪvC m7GeDڈi~t:A*+RQQQQqfФH?2ӛ5P o۫Ғ|?N^^,cؑۍaɟ߸v黴κ M,ht"'rm|:J.\SֻOfFo՜!2Iκh~%Dç5҆D])Xf-K/T-eX59nKWBo{n~X,rI41, _#/@k'5O4S8 hkdM-Zܗ\O^"yY)H a|׭}n +pPJB3 epunS; <&5j+ 7Gb=ZeUj{qVpoAu-3 NZ,Y|y, 6>cK-y IĘAtFI%E~ܔ&-k,fG|'=MڌtX{ O;;k>j;+ $7. kLRGJkGjO$-z-b'ޠWkb&YJy&wdϗwP6`"y$ZqA 5FLJvڮ_By {y Hf@2vH3f 3@3*̩y bEMDM,0&PF5Z>R|5U# P0c 7W%-w3P^̫~Z96܍k6/޽T%]E )z`0/=T~p{n Az,jOQBzqV*****jʴ'פ9ym uzI% NpE,v-riM4jo꼚BI¾KlrD~-N[\Oګ.s^[ƚL0 NrSVƼV}e\ԙu=8 ҡaN x~v5nl]߈m< Kpӵ XJ%<:'md{eέZ`/ʗf5F^ֵHQVeeeޯ2UV,PW+ ~sNG ~*}1yK/ 7$fc[!vY.6~ #^03thPt& [K=|\~ 2d*lR:D)>sP/sy[yDɼѝBHO(  `>٪SptgН1_8_8_\s!AMZiҎ=V%U%U{P;;sÓ O6j߾~spmXw>| _%fVVu: =URbZD]JCo7hǦvO?ѭ(}Xd?[D%ǿ+{g>2{cu JAzQuNl6 8cߢmXGR5,ih8<|5JLRoQᜳ[Y}i>n2seaZlS|>&tprV-'D]Ɔz?jVe ߪϵr)dl99i14y{:xMߩ8쓝meZ)̇/FT51@+ Wl_~1nϱԀ6~O3KSʨ- WEzѾ-o/ k|+5y'Z{ ٣ONhĵiowc.:\\ꋸWc-=M\)19j;Lƿ\Р5P~|y4OKQMlͪ=j2r/lLrtҌQE@&@&m `[z `?PЀ.@HyB CD~ X yo=@M,B(@M{?9XcS(9]WaN;`݅T>~р>8};[9\[f}N>#d\[m>sp9Wڈc[6/͇G%U1Xk3Z+<% SjFR>Q钻*|%gk~i!_sJ)EݭQ9VX/F?;LƱlK!!R}U8Y,Nᆤ I䴜`qT6W㯣z$Ƽ~co[C 8MF;k-甠WBWT6#t8˞y/pQ-6Qycic*3k hAR3.wk__S)`c 6sp[v0şp{ϥi푥v:utQg0]a]iZ4ƴ;伨׷`ϣmh4ٌ cЈ/GCJItffnMU:h&H'Ұ'{j9qZ&mumש߁shZQkS+2cE_*mc^0:h@JjzKáij/9;V;FFXiy{.Iʬ_9VWP]V𡪿bԊ9GV?i㧧t/$(j'^ N^&gJ术V>QP65P9rdc:`ʿ=q;%9e/^qソ ݺ:lw#QVje9@+CLd)ydI1H2  @pcRzd( l aěMHk!@q\;i^H; fYusWz˞V<塓;A`>~Z69 kduϷOtU ڛ!K4,gzd sF9>~he\(SؕMf*uv2]j\韗V-g's}qF rE[]{-5žҕOu^{!|(笡^S`bٌ'#G:䄲 '|ºт9GE9|pT{j'2%AI~];wt:tO"?ݣQ<<<_4~>#L^3S5u6P3fZʹϞ>{zqš ;v>eDy>|xݨu֍GZOo ~7My5kyo朗?^*CABFQG@e**??ۑIȧϽRl격˦7l~ AfN qXT_Ь|92V6A\};{$6x}#BպiT9O-wjIts*#[org6ny "F7^qi/^[!1߾VKǜ1ERӬwҬ/|tteȒ[Y7Ң߸\r>+ȋgԛ&bWW2%rVڂ_e6~ӾڳnїEӵ~;0媶PkrZ(ry8Fx#W1͋f`ȯUU.ުL)xsZje1N,Wz6M#l agjnԚnɭBͭj*nٶI{HٖZt.V{3Ԯqyh'-Ia:H*J+^%mc%4E& P#@WjUeѱ}z ϩ5[D -ޠt`R})mmn< . "a(oPyl,$՞ A3ɮ(V+xήy<ط X7 ʗrۅK5'~soAy [5isҬ.}{=~߶7B+ھk;:NبĮQ\8cǚ{FȎWyJ /P{YH@'>M_FjwJ`SQs}g7pvv$e2`Pvøq_m/rSS 6b#6gn} ~.]ֻeYPʱ>>>X:N:N:n#HYkbM~I 1k֯Yf=NNqs,9K6kՔ\W?ϟ344(/ʫR 2`@S'w&8j\|bݷ3NSG[[[oe^Dύvd[OZSGP TQP+^wd-d/d?}]S[]˽I*cIJYSEkv@ ((^De>[  <~}T wS f[[榇ley;yOhes˹H]>zDEl:P3\IA ]وYtjނmӝ㱄wMIO445_{6qCRFWX\v3.CY+{nnͪ7'Ԯg[&}t=xSlG8*D"xv眗{^53+U@P1W6>ψ^i@;83gÐx1_CrF~y]z4j:^*jzd篥{Ov`YcmD1Ȣ9?z v{Q+ ɊYN^#"Wt4)eū=W?O{A 3rD &@62cDdH6S=@*C c(3hd{ ^s qe%+* >5rg^~aVuN_M~("ܺn}hY4^wvwUπӦNӳ|@omw"zٸgղi\Z2U1:$F6@>HtڐeG:W|.JPٓjI_UJƚ8{}2[#Y(̿ RMG1S56JZ  T3 6'ljCчEVVV$%%9s GQM7XcU0%`J~6m""~,drg/ﵼ^/?xxxwԠAQ ?ZE?4c1uj֩kvx}Nw;ӝ:& hzzz <33|^>/RĂPfaw-SQATv#/gg %ACUK uuu:5ڇ %*KEEEEGAR&O>(,-RmάʂPqjyxdo_biZ<)c  o=u5]k(kV Վ آo $=Uo;]Sf}P "}{گpE&RKvÜ 'M;C婇U3 *54t/2S%8\~snuZؙm3&&l/iTL 9ZQ[T Jy V6ȃfE';PSϨ;55ەRAPb" 甼?N'k>4HD "_G]˹O=\9D3hr95[K/slibm;2@ Y>w7my7w0yT9 ]#RH7?8QySWə<8~$2J T(5רH5"`C5@h@ fi($z1kt! 3`Z@T=rd(1@ՙ^qGqSb?Yev׫1[dde_M~F^q^tq(ULj 5Nՠnݷl@x.`S(ק :0Do?d66 @vc@a@V. n9zSldXΊ\wӯ0A+\GM)_U!G^v8oڑ~JĔҳZf0ĦN/GwQ ~`;;3gnlAV>Y}L4/ǼrLSS7o5kئMyrxx){읲WPPp]uՆՆՆM;jjjn:KKK :#:z+\u4i]PvEl ¦H* F;4֭[[΃߳ĞZ.{ k`M[C^wIOm5N-_-ӧu'H#4dج;Fύ83̀3ߜ==jT#TQQQQj_ Duכ?Ώ~.tR#Kf D?}MH7I=m _Gwvň[’SX>` FOE5*/;WK\n,G/(ӝv_ȉѣ̞pwkYDqPV vc<;i)׶0K2ŌLI8q gӲrWV8O"GW]mUyr"GI#%`)$U9`3bEM)b>y!  Ռ Ù2#H7f7$@2 mucĞ]Vm@6iRƛ~ ǞE.=dL?Gڗ~iιԍ(!TxaidNmE=nuvGIG4co)0BZ#]\?}]9HP7JXUkyɛ'm}Pnn.9N$N]rpaz!G=z...2i0`ڱck7 4h &Ld"S$O'=8'Opqq;99ػ(u@wwgpww}p5&@$wk~99XZ^wWuuתZ+gSM}uNNWgs+D---U&TPe`΃f6gw\;&2br˲1Oyu*{Mkk>._d6gIĺGn*pJOyvcm$Iٝ jTGR̾ "YNXX)[erӳ/iY3g >nsöN*2,بҦi}S|]W_~c.1"Ɣ-dʺWj/Y?tl"YoRb:WtXp |B9detCD*m}Gj~c;SlP lFl}ʩ[|.gpzM' ,buYXZM{{ rb5ۚ4z`xNUK}l{O]4$RuWop e)ycukY|u7.upίLZ<2էXRɉ!;e)1 ݕ] WymzZSU'PL}N/z}KO[xY'gIލVp}Y+iŋu;WJ3WP|XE丕Sry)y%Ӷ#TFmy9G1[(I7) ̥xO#W{5KSÍQ[Ll̰ɹC)՘2 k}sQ>D'B w- g fhT@)Mo h/mՌrƀ A| +Hy"Y#@y"A ;./|IP+AfI}PJs^~saibߔ3゚&kyǦ@Stڬ3uKt&[?k2P|[ZRhY?gbr d0d,,x Cy&@!Apz>0*o1~<uqu{?a#Ya׌?3~c5ξ)Su׌:T'w3xew"f\+׽m/!, dFgFgF/ݺtҭok9^!Ӑiȼo?G~tuO׍Y9f嘕~~~?t}5j&MdqGP7tiii;_ufw,ݝ~f }aDS;y;*KkUVYfe]?<4Y!])+NB 3d=?doJkS*8Ulۆ/4Y4\rB\7x.$GG\&SNGV4-iP2=R?hB;ƭV} NGaf&S^YYпB?WOu\Fl_v5܉or`Of;Tv~ 09-:'tuՙ\2YkaV L>$/<(<;zsŘ0|Fg~>)-s4%*6d&\r3cTS3Ф2?1s}8zrgrݺbz0ۭ(m3~퓦Ǵs~.']kסvAr隘#egM馑p=Īgn;׺}y,e.C/Pҹ򆢏7<뵜۲>&sѯ ?dήUzmҴg-~~9g+0T=[շqPG5h4IˑsoeZڗ`..E0+2I}=2"/?XOKR.-3'n9usO%?6Wrr4WSs4M;h)=nV Cr(wn`3p/&mhԂrK@ 0ԓh`n &@8D&| 䕫=`@e(UJA ,{ t='u{tǯ3^՘i(wt쩆g}O9BLE5/% ?rdg4Y %(YPY HYJw_ւd90 c$6~(I:m%?oX1ei~N-EsW=߆ vL wkKkuƒWC*3يPnokzRI.W\M{=ў\ '-ﶼw}l˪ϩ>kϮ]G'8Op'4D]166yذacfggk*  wPޓO~ÞϤMIN~僼K ~6i]fǖyE=;kp,c.06S,h?6UYcj ZHy-T' oL7A4w W:OG %.6y"HH_@$Sk icAi @퀛D# =r{oox)}\.(bP;60_{3UޱWBYT TLɦdS򥥗^ZjjjR15 5 5ӫN[ov߱~%K4kܬq˦.lj>J[-זߪqƭ&O+~š}idL%_ӞcK-ܚcGBf/Q@g|H*2*4eh3T:ڒe-1\|NF|/djT1Aa(6 H&dp4rQjr(UE9 y Ho1 ȭr J!5Ђ(&:XTM-W|@KIo;COm.= }y~zze稍?V9eQʴҙ%2a+ayu \?ϗd ɸkZڗ/i64}=}W<92 3 L+>.,Oi= ߲ a 3cH'Mg<I5_P^ֶmzPEgo-v?C)g kmwݱ dwJr(q2_lv~8qvJ;=`>`>pYg͜9s̙}?~vDmiاaۥKmNZ4iѤE{w|/hw{s͹7gB 3<2HcV %H "@ *tСzv>ovѼѼѼG@ݮnWyXa6mnf! 㛠̄ \'xJ. 7ˠnv7&7y]gS]VS">:j&%7wkIBՎф~oUjӘƴNuly硟&NzeOrzߖ`aANT N[ ot5kϯPg>MJ/}o9]qCJym ;?9xg;B/Qӷ{Ǭq)#hh'BKMqjי5V_X,+4W%"Jm696uU-ኄ_v]k [_LhL5lӧUdS̎kg 2 % xawѹ8ej_hiA9l}v|}Ug׸]>ƪMbd>Hb=n'n.w ɼVub-N?ecv{bE;&^kMW.%mzu/K@%2uh[1wt?s|nMbPy&\34rtc*ٖ: ()"d8&yXJ]ѽ\1D |ܝ'/=x(d h7ǒ I] UwH@qh`|rU~哮$m@Q[lÀ$.JY t\:b@. 8(@ɩ:$OJme-ç_oU K*<1KH |(|D>%l6j'&7lB yZ 9H@{_ 㥮^Y\ȞOF&d2V,"Y}y2^:(@PH1~zs 0ND |J]d6Hk?38RܕNpr ;__+&u<;ise9dYsnk;}8{XV~m?RK2Y&?  /4߲Zj-74nh)4Ҹj[lz)IS.ߺ|-*Sٕ1/~'LJbddrg˝-w*lƻ )m㷍ߦ,Q(K6}MߘOO?q);;;o CٮlQYR8״o$NL*䫵qk#?/!W. f1k~[vyak^(G;#q7c_FWRjtP^7FIB\+^:є<W]vAF LԢ%|kmɯϨ<8y84x yV,Ɖ2>f7nh6#uS&{ L @Ι:\3nj rμ ȏ7 M߃8@|& ^ Z;wsassh盀8iZ&H H3p\!@CmHs1H71 Q)V>Luֹ묎dGkS2fUjyW,P}b~bŇWKܳcꫯ# h; d<d6t6-CZtO Z1Y2DM> 5րNZB#h>*Hg^Zo:JGFʋ_wNklO)WRG-|޲)lSئDu3gRϪ .gލ{74V+9qG'{o)L>@}/q _f|eW_Q]G]G]l7SS+Jߜ2t7,,b}!X֥O_O_O{Q:x6Fn ;>\*㲰B 8{_l}'okҚĩAcu<޵L#:^xdL{x>Mǣ.jsqRB+xgaR8[~ 矨uVcluv:߫޼H! [\lB+]Ɋ̸ ?ȝZC-^HwԦ9 zEF~${:%F{~t$>QZcW{NU)!ZҺ ǃvy`$K啄[վ35mo_4::[]r 'u>DL8 ˓>>e\t3]n^xgzf6 lZq'h_ @#@m f`v5BfX{Ulx%_q[A^64&wZ M 7̹A.+\49g* yhMA"A f0?mi#ss=#HsW?s3s 8 7; :+?v}ifRHkeTՖ44R@k 4ZU#!ȣ/X-F8I 3z߯!>5p-R+%@fКjAFHKZh@H3hc@󓖠%hA,A+-lOA&jksAv%kc@fj#@"@jcAk&@k@+@/AWEvBBJH RLnyWx}5aMmyK:?Psls*3w. )6'0YSST5տjeo<{1iǤ&&&bWǮ]]nI%8܎m괩Ӧ$( ٜes6mo}}5WC<4_.~?7sLLLT].5 ~u5^qvGda@XH4 GX;O:l|₹bφUz@};*?1c|m )8v_9,c{V,,,,,l-,b՟6 1Rs|;Wq}CVZG(-zձGtUlojᙓWHM+7M^]*\C4 O,V/-}Kf[Us/z2AWj^\9)GlMBwYf7ͥ6 \;Drh-\9b3Xv4+Y)Ϸ[|lıG\V2@)VGܡޭ˒/eRE\)cdʀ.6>^ϩY1@OK};n?~Һ)i|/n( N5mTG2x϶a˅ rayYzj]]\1W2YzU璘.o䬡KyR,Z&_>̼~Ż1/\tJzէv}9\ V洭G9fSn^Rݡzr}!WM BL^ nC]L^1S~cC>IIwZ'qFe?;{Qagrr YY@X}xP}`/9fWtN$4yK`) % l8N?i iR@Ui җi 2 8r2$QV#7P_Z.@ GH]-hvglJy`6p\C娲F9fK#͑_'g,XVgggTS}U;W\eĈ1J'IN﮼ʙVVV,ٽdg nQ;vFi^m13_z5gԜQ3_f~u}nnn>(q_} mSM}75m2m2mʾ*3 [{[{[; 5I8J7TXq`Jv7B}) 6ydo9^gw[-kf曙of9teؖ[Zl\{pڬdwtK_Rn>yz,b$NgTb +m63MNY3k '3:.i.ζunosIvŢ~_Qߠm*o E䨝;Zo턠όcR[) 0S3c8N8ܸ?L''Gz溭ج2/=ΏSvHu`r|6[qPz(5Fkà :uK.FNA;ftVmJ6-u vQqPtNi 5*SLz7S.߳=eEOF:.v}}j[v./+o?KFX6Q߼+vhvk!phs*=u:w_n./6Vm6tpu&{PxEW)wu(LRAύ2 )4hRVr8&zCPh@.QOS݀' 2j. j&pA4W)%%/R +:E8*EDIITLPeHM|<;P-0?WM[{?Bih]uMk#3sHpL`7@!`3#@j'@B` mAbAzBe%HQ682R=82^At$@ Y ~t"t cX 4H+ Ch#@%@F(*3AttɟivO+a㘽_XXr9(Q*}ߍ_F I҃Fc|Fڳk;+לּ^/}R&dZƖ|+VT:PIO掟;~Ʌ 'O1Ɣ3gؘ1yclvζp˿.ܐ!sCvt7v7v766~̗+_|ƥKQ(E6ݸvZPPP̘1go7TJRNI:ewDk8Tj+g AcLY#Fj{E _ǯlt1' 8\}}k8fpz>3t>zvgfbĔ)z깫|efw@4~,3XNXX%|tiǍ^v5>Z;/eBτ-θ=v_2PK9;ϣձ8}.[zvpb!R%G5ʑBN+Uet|yeru< ?p66R˲yTO'cCg)4/XVcqi9W|NԀ[4]yXw-]m,;So,p?gԱvJ?h.n7̧i8)!8^S&*xGn2v<.ӓgiqT}Vó.{woZ9Ek9u4&LgCKv~oK_3]g7F+YzF*~!Tn Dݍ;N]ϻޘ%cY2|)ç/J_ROӧ.<¬Y%J|8_s|M"E심ZZZ=q/jЫs+̭0xxn _!øvۡ`6y&RG\m6W`GҰ']+?cSIYJ,MjSJ[zjk? I0_Vs/'l Dfw٧Kx.[nƃ Fж儱ſIV&8qڥ ƽNqREsu(gWֺ|j-IڳhY s+wp+.swh/h#n9+lP0=1+fmFٌ|ޗzF3}Tڳa܇wߑ#<{+ԹQ^9zpDgѶZtv'ux³L"F~6޹$PURd|춴1r>{*Exu[n<c_l;݈{ŸN껪#=mr.c!燆[wH. (}IS&kx|ˠ=ψjsZYKca֏k9 kMSEk\y]V+um?N͌seá`^-c^깴` MOcV`Ҕ7F&%>Gm|RxƭԲV\ZؕX+kSK{^O^;\uSɶ-qf.oR|NW5*OBF~}A>K 2KV[sv{ƙˠfqO0@K2Ɋ힡zXYa78 9hFo:l7nXdi h}LAkm ۸d)G4@amd.S= 7h2sms b 3ۃ D3z9$˜fN1@q &snNDt;X{[f> `VA2*,/"\ ]8`lU0p=IdYgWpV*=Rd6 6d64?i Z6OZM 2HnBuUfK: 4)t 4O-/Ayg(46d'm(H iZ)m Z} -PAM}˽GoaZQʘp({?SJSA}[Ǵi31rbHfav@شic9RHO> 4,M^6^z9帨qQlu:6 >7|cƐ!"",シ1;| t?ds φ<lS,uQr,, aunGK^tޛQYd3gqwukzyļ;cjYYXXXX,Q,,šD9;vF@ޕv*1:@F=\{Wn׮ձ@ISCe/5ڞ1-ןSRIMn'xu~FVSzpF[A9/K&j>f2 8ԴJ)l^/fy=U$\,}XƸmW=0tIwIroŵ#KݐhmZ!+^~>f %#9=w3P֧Hir/3վwNm|IK8@|I {PM\ ;ү6ө%/r$=jjQK_P] jO@tAJ2W2b * C+@% hSwi2yRe !@^b8Hi%{ny=pʒ=^}%{(R^F(~ Urj3]gw,~-la[[[+W/lE؊"@ƙ3gy8!夜[jXjXj'"C -bff6ӼO>N>f6ml{ڷk]vZ44[oEKK :t仒ʄNꫫuQRm[wwwyݞކކ6m>|_|;:|ATV!pد>'$)6 6p4Yf*{.W87pnw}ՇU;VXprIs׹[n9mlaaawg tQE#nObb˵fwQL:n<^1z`C(4|d $r3t@'Nvܓ\wzuSP]j]8UFv!K:XHumqnf^v5LZo- }vr)nCʑJo}[t_|ىq3f|XG)L!K hsg]ZN|]KEOjm#f?QOx}֧3V>b qg_yڟ^78)<3#s!SKY{\C/f=?twoѲmCR^M䤵aoEy|c#<t|)c}.ہU<H*~YcK3UMbLJs_}MR-̎JaP<=k2Ov]ș)r|;q޸KǻR_y_Cl GH]}!Uo]hS~7ZEsLIk]]p4_z޳#vVEk 4$J!Pjbbdjk1,cn&`+[U@jw@9 ZةWA٬٦ezP"NrZ Jgm H( '@@Z @qd&"`R2YY X@b6@ja)݁ |)zP>+ ShgmYIZNܞ][/?OO~5퀜%)Bt.K@Y tqz|1lJs 0[% A&3#@)Zе븄q z6٨gԻwSrUV/缜rΧ柚j?h~rW gaZimu{Z/?{Kctǯ_Gnh͔rgv'_]{^^-[qCGh6OAUM2uM;[/o|cbLM6宨$gwt*$(ͅ 3wqYXXVB XZ:*q:0Q7J{3ȡxȢs>)뭁>V{PW kerߓ'灈8f+SzܵeOVgYj;9E {YĖJů:lcm^!q8`DGK*tU)2=ަHڲ۳fGa%VO&4,XѯoV~t8Wnr}CkV @mejC# ؗ_mW7rïzoqqS|O)idfVBv{۴lֱ>L R@믃QRY{ %v4wP\I2APenRrRJy f5y{` @e^@b |Q|@uAi5e D*X%$ (R p@Q&DJI%>;J _to݌nӴg_*1cu.~ƚ;H!Z$N@)F`$@K`Azjege)HYZ}e!Dn,)=V ,Jw`,A+`,AW|Z|ŀ @r`@zq$@6 @*?]@Fr`0A td-')&a짉SV}C?d}ާC e]&˲sn~'|S8E&U,Q%\50hytK|[>wm+{-+Iz'vۭ|+o666TSŧٚfk)פ\rMTSu~~~u ?>.dڕ+{[9'sN㳎:>׼⑋G.7oޏ{?ئMuM7}^[y#eCg9+W1Ǽ%斘[bnј1EcTOS%t uC*窜r/ֿX|sA͙IK=N|ej{@Mg݉bk)Mئ9-TL]]yo|p#B/ m|g}7jϛ,~QN?ؾfKr}ژU9~mhUymM8֧PIUrW*#WSezOr !)~ԄZeݿO4jX\Agp uÒ&z^=@9t*tJsUd2=)Q^\K% ߰t痽D՘Tj>(g;[Ұڸ&6oK)v%npO n͹X>+j[oJ[Gf=cÿ[mJZ-p=fU;iJ7gQԴ?rxVҸ-ZI)^-3w3>w=w?6!{]_5ɹ1Xr]_^tOxj|tݛ?<>{ej' ZN.ukyv>Z??Kw%\j6 hA%F.P=-o]k(@hA)5%C HPlu@uA6eAYFգ SlP΀S7B@rf(@rS J-%xdtUJm8Jg% 8YWZ\c,()@Zyt;n(&oo80wZvV_d ?y2F!KAh | 4rrQ4%@$@"j"n4 @A>"AA`$[@WQ@~ڃUh?w7=H/Y Rod @Q 2=vEh5 EhUȽ▅ɓv#}tB/:S8w?EoBZtwNrUyTHNu5匡ጨq:i=sX`OUn6kGsLvfߕ*cŽ ;&Yf՛U1%bJĔȼy+󖱅EQGWPB }C*xuZ]]gb'V_!~ycsk\ˮfNɜ9?.u拚W_{wv>1}bzlBv(fCi^ݻvڽKl.[K_:u,X圖sZιY1+fAAXXXaÎ=ңUUUy`SБ& FG<{pl~aSLQN*yPPPuE|{l^P:j}=3/-ɯa% *^X-z*×]o W^V:]xvflH!%mC yŨZ:^e7ş(940|~{f72Utҵ+;8 ߓ//]{=&E߽drXozloႣIv 6g7QѕUqRBe9eֵe>?aT4ndh{9n:nL3ܝ4Πԉ$]Zdg 7k'I(ڧf;32 Dn}{T~Ha_|}sϼjO B̧\98y!텵Q\v⬤m,Wcyzf}gN*BȏC_SLVgl;r+^~{ 4{<dUig:+~x>w3x!-^]~UF)6wRcUCͭ=!QN[fbrNO-/ۓO,/mڸܒ!G@IbHZ˕Uf)C>(L#+Cܷ_̠iV_ ٽMV Yw[-z95ju`΂v@Yz b'Y$3d5X6T ̩o~CUahȯ_ 3m(u4 O$(L>j@׻@٤6%CueZxsA٤.ezd2< (߫fnJ(s[ E ؀Yy d)Q@A Ji (@yJP΀-@l,\DRkwWWymQ*-3E xݤ {dje%3-뭦8}7IMqfV.TNތ;3/fzt>Vq-[z9<-t.^1O̪:W1ͭӞƗX,ٮv1:OU Xmkc5'zt>BUvL}aC1ZAt;5$κ\O]c :o?7.i^M֏,1q;nW"u /ٽ%ϬZU˛Cf ~~ Q5W UΝƼ?[eQ'vUs*`γl@.F QJ=}Pnut9A_Jcm<(u.@) =!(@^.^Wj~Pµ@W5 ?(Kw 2PׂLV2K29JJ0P-JO% %B,(K@i%hJ(@,wJ@@ѿ̏>P]BQ+>37%[ص-tO?v8V CA~Պ-l+4NEOcGq.]LV4v~t*6_Ji= ʟP}Sik`DI<ʜ5#>rC];Fwz-'k|u:_TlSM Np_XFpFpFp Ξ;{J+ :l밭=m{tr^6_YgYUfUUʋ+/$%)]ttt?y"DDKD/YdՒUKn͂6 [*?~x>\pԦh.r+G\zk7ѣU*{l̳1FOOϔ)/S^?2yK|'_|]\r`Mvfl3kyN^va*RR_Ӕjkl'duL_k&51zpS&?5 l`\ko3%<~=:\JȝUܻ\ki-m0X^5Uڅے[c=4^Ox@ l隖#越c 78gOki,ngMx6^iCxz\Zoߋ6vآӬX"=gddֽ9®kksxUq']aX<]~ǗVu zJ N=,*5Z)zYe?y1$nWJn^Gsx8M\$ (VvY!sn_~6no>i;P⹄$x5ϹWL]t.0%=7yךkO5߯EیO%!g"N>0oꬻRuo刻8c=:Iؘjvr\nJVRQkJn(W=@m~.]8(uu-K"ƺx@i STGPJ4W΃V 2K 2RY +,(;e4`Ee x,駼Z)! 8,頄9JeH0I. _y'v<,zu/]wtJ+ŴҊhAJ,˳>dY;YVrB& Dg`,FK`@'0$BV9 RQVҝ{  lM^6y|)RM;a성1116l 1d,Xhע]v홹g枙ٕܙ3s{ɻ=roEV}0[m1X#VG]4vE_~3 <<,~3һK.{݅v-oFVKjP6h:2CjC(iDzeL*jW`9XX;tZXt_dȔFv<6oӞ_I;CW[U86ʼ|NtUc(QWlOLyͧN ˢ!jѝY29 -lzȽ0Y,mwVGk|l}<&ݨWN=pi|PL W.T(bcSj60qR[(ehb-+U); o%e( gsJy\#GOdqV7?frOTE֝E\41dC;; ύo͊KgzAo6j I?V;Ti%|l||,+q&;j~"5]pܯGޱ5|9·$rH7:81>< `>j*ᅦkFesYX_W>|iw|r6R=8_r e2JWR֦l3uδmX)|yÝYS%h%4ܥ]II.=tڀ]sxaWX1߀T3%A J (>揉ikV̥V,#Gc9  UP>+NڃG5QIY:2EO Q2LiCMJG#pV^) 4<(5D ?#B`F  RVZp?'- G9ܢ'F+36T%1%2z Nze4҄m,OK`,K ,D HKYd'A%dHdd !+@>("wA vA3mY f@A;`l(yҝm ld[d]w=߱u{7vo8m7뭾f+_#0!,ЩCy}_ОUThDg߽&bYaC9Qo_R9J7 vdz-]8ǹ444խVZ*zA=1qDɺuiRFL9茣3:7wn\VgVr[m3X%딢%?ouywp}. q~<]o|tk~Wȯm/VuӂH*UEKWXz+xWXVhYe]kw{5:0aS*91(7usỘNKu#r-!.Pgdiİ.NIhv&L֯%\:3(@e78%qHP\3C뉳D}+vF]*rZ- fnJ 6j> ׊PxPT?PK 2\Ie U2A:R\A8W6 QyTU4Ňz+~뽤IA*o;@{}:Ywֻ:a=!I sw ki 4!7{Cl/HAi4! i xW $q) @= 5@@F&o@|K^H [t@kAKpE  $i2oJd4higoP徼>57|Y >Hr~^Gޓgn뵝umr*X&HEܲ+m]rΤ.V=:ޮY2WLO3 +(]>\@&8!ߤ6N>I|duZ) ,ѻ% tٕm6D<΃:'鏨+p[nuhJ)噗g^ϛ7=o҃#ǨQs??I%ˆ1b%1c>|O~/t޳gyjV]yv1L3y8D(.]WZ(-x'=dd &HN)9!{$hlloo:q_}tX+3ǔr}qTVoЌfiΜ`DRPy $B)*gY\^٩>^ '2|>-$˼%v{kC;hSraVjj%y)FG.9L{Uj*}6u*cſ!Cf<|L{e%#%ciگK-u}Yn7rPy'TEJkii9ڭ{խ{͏fVi0BYh|G-,,XXlh cުn 4u;o.f=4кKշms)YAtەzʩtṞ=J__Iu[&l#Ej}/x̩zܚ[;nӵGZ\PltBC?V9<;ewn]U|.F!9 ΑX#:.Z'S$4ix%?j^_d!nj* 5OVĚ^-nǞ }TG ,yTO()tT뇾tA6مi)+k CB琽y0zUҌIkdy<ﳍWBa^|Uտ?AZ]Λwf=b|^Zۘ[*Lo,XTGܡ3.Fx7k+.)-C>/礜K'?ME|1ΰfum']9{hO riYQylW/*9ūxGoɶE/%q?1W 6[v܇?7+Y+{Q2$m5~xfLU00Ű`0 @hu^Y{!v,ctwZ"͍ZQw2V4C[м #@oZ7c h ɠ7M1&a 0Z?Ә t\crc).F'qƼ4&h-4XQF~ƪ Ì]ikiԟ31roJ٦gѧ}=Iv=7o[%GmޝWRYQMMdlCV /5zܱYL %60s"eXU[vҝ حݍ```w( J (ݵٵy}b5^cqa?|j˴bΆ^rֹݕ Q'> Z&84%)(aR(~(**F$F$F$Vpqf,ZQhřgy<7|׮yZѴiE[l fP LEnEIEIEWg.\(##ݸqwn!B5jH El5be[٭NO:=ݫzl9ԵkSז(QDp\W(aQ¢;sZHVS\G)r4udW~t<ΛfWt-_<KuCdw_bV!omVA/7+!xaR 6~%ǚ)9qtrd^=lT0~:P~Q*}sPgѫn!LmqUS`a^۽{mصks\Co~?b,̋uyncUzeSH J`e͙ڌƋ>?mmޏF=&|ִ_^\B=8 j]PWQS(gSEfFCpQȇm[&LZ_2W/!}vh-A,̡%{IWo~Ztu!e=__}a؄pVY,_ \'y~|sLM՚`B.{+ϐ^xH\p7U/ [ ߫m:ռ~gt@sH4$Ҳa]û2- Qe#NEA BJ$ko8wRkYzu|p76K0XT^Wn{c\+ ۚ: fG87hNA .VJ*-$-B=VҶ Gj=l]&(,8bFϵ(<&p`ۯ{j˞pǃ"ZL>m5`zTէȭZd}El)/tVBa^^#ft>|nuy/ 8 YŃkyLvsCVvuĈ͗k|vEs1:TC ^c̟0yƚWn cdsK38ա3'ڻ=M0FT`LX1m `kƕ6&`Ag`З 0]3F3) D(An_,YPXC԰NeZ|Q5*D3Qvzt $iee$.pdyh4Q?95Ms>kZ?uz!S zW!6!ݞ 'l٥|WM3DgYp;Sw$r!j%^eвeC068Xq`ooou1 0wd-F;BwĢ^.z@"#VUp%{e۰m6n*U 2ˠ-[|D>a"@~ƅqa\̟?7&M@CCʽʽʽ&jL^&/Cg/BXXl'u>|hƪL4V~a|ݽ{ I+YvsP@}T}+/J(;z47&.׷zr Vc.>sjW6c+ ll&]hU飿\L1 k2[(96B졹Cvأfu27ACʜC︶no"[w+ V<3[;yҼS$I-Jm-3YUkT@WqWz%uceO5T+ю`Vb@GkI뼪J8|uMIHZdLOaY9lR `Ǣl{bgzN8(²30Ż~;jkzX4 /\h//V- P sܶ7xN-*շ#ֶ'WT쇂||^(jf"`N=gZ]JƼBDM7rܳ46ԍbLftg뺏Yg_n#|'x,pd/hx)'frO@ Q ؠ~6 2Wj?/Fy'wc^Yv&3@V@ T[z0ɴ@ A@q|h N1@.Q(@]GP @q KPJJFOV OAj<~z5brٮLq*0N`(&:oxe Fv~ϖ|3C4A i,0+@c8m %#q*/#[śX~L?k2E'T?Grrr S8ɫm.ߺ|ddd`H`H`H 74ހd$#YvVX9``}\h5t#,,,B  hѸqpNpNp΂ b#""((G ooo>.}\^ӽ{9#gU*I[o9*l6 U8o(;(;(;D/j=s+ թPP{Fbvx6eǥ QiBq"0bր?z3AЇ92w4#JyQR뢂#L%QQj^6 E to3rWt99k65U?vn} ՖVk޷[Q i'6s]ط8Qgu}h *sG?g5-k}LZMi)9&שWO~?uCͯeA˂!C:trVY/]G,)_lB;u*P"ڊ_*<,cgTb jzR!O)]bxTۃYO.>doǢgD [3OVEz f`v3:دGt$l` ufc"X<_zx>Tv:많XM"Y<,k~NW݂fwlF  biܶ:{١Tٷ9NǷbCu;MsK,lA3=\/q6:z֯ʈ Vbr?$)j4BVumeV^v|VW|d&3Is9+IXKHBZx{52SihI7NS^&`m{&[ NR+KUA9#\q7HVm5 WЛ7Wsir c96N}vO:Sk*4ײ0$MuGj7ػ֙=rc__kjOQ*s%uTOsWŃ5oh mYkU \7Z(]) 3y&mk0Y Aʺ[ bҡܘhǝf^aocVȸw-eFD#}zM;ֿvMxU)͘X~RRy'WQ[9_)OthOVüeHPf(3i`v0;5HJJ>ot^{1=LRRҞ /_szΉb)?#Ne:zꙫg39 = = ]JJߪmLۘ1!'CN\8pq`u-gr&gۦMk6mʹ5ֈ"H\%$lN؜Eɋ% Oj4J؍ݥK{>pCo]uip\U{UUKT;(+OܴTx~sMJǕbVÓiW U!)M^]&t%X栠@Tb.farF[_1DDI_*r'j;g(&H# az:|ܫ?$&qY_zΤ # 3j-PêIT+ "i~K ^T+: CSM(r|~R@Kj[IT:V6]ӪpyFϱ13fR{`Jf HQ̌|rWk [T߫F瑙VLSKa=afc'&V-BF<3ȗSV\yPra TrMN |ĮoLORF~$O*luvZ/."Q{CS3&n_cB.1=S 9(Kв g2TEVQֱC*K\b_m }y!邅">(:4ĵ5\w~%p{qiAWkne _o1dcVe\2+fϻU5O7i'z5ms +o\oebySq:I4'~ `2xvmxQκhi8(}s>\KO3a`O(@80ll @kߗhS(@<ts.tZX}76?iTp_7&tm`6a)@ h h<4a@uX rE- 7,O-2~\-b@3)aX`%a9XI+jh3@cq8`h-XE/5X`hVJk:V?u8z.;uq}19;P3/鶍j>-UƒwM*v~=T;ܚˬy%ߙ /9vnõb':UV> {6w$y8n㥬?oo7$.%l3Mwiܿ~VFl!(NJ[nk䝑wFީ^SS޴Lh2acƈ... SPdD\qŻwK/| -PAC ^_z}'x~o_]UUUi4RE~⮋.RWWsMLp>|5jkNf'FKы-*vW]mr].dAeee\|-N8].ëQ^rf`w]\H߄JuE9):AT( pfSξy]tT*W__Zcu5ƾMu>:@^K֒Z>#QS'$_4cI3KMZ0VqsBwt 1_+o}Oց~;a[@s#4VO\udՑUGT95? w;8K/vکk4ɬ=}F>è)JrnA=^y˱s+ sjhv%<'i Ӷ7aǯ~F-*Yle,}wo_AO2.}0s 9 eh:QFoC T7C0ķݛ*;e~e"]-B3[r;4];7 M0Y\7yeSxrcf\le X bnJ< s}J\pff6}-;4./{3&5dF+ʆ3K>hk9[۲$[6CAm;d5SI/?B1T>;%_H_\LT5Z{,}RSiěOۇ~GsJZUlXw_?X_xuTԮ\Ex g aÑu xE{WNՏ5,3ckyAԧ%r@{}8a&T" +{%yɃ wNI!|07Y#yFXlul`Jvz`ybFe(lZ^ܿ&홖ڂ_^K—o6؝׷pfo,gm 23}X7[ $T p +:JWl~gh4Go㉤[v\ʵn"F,8ta8`Z@|fSϿϤ@c> DDAy@(Mh 44 &c1 h6f`` Iph"0a A<@?%`ϣ-FS  ZAlA@8+LAFc>@hK-*ǜ'ƍn&mʱC/$cbdMZ6bvV zuiF!lq&:3`M,A%b!ڠ+[\_3}e٤/Ͷnݚcwbifhܻ{1o`mM7iߤ:C1re"-y<<.@ \b٠A)1SbĬYgF3H3H3)SD)ѕ+W*BoIII??=0Zosss/˅4psn|qW]w5cbČ*@ t:'OtAsM]jqj~-ܭ/3o=9FGY^4W,A0o)X1;Zk-/gи4ToebnW-&O'5?td^ּЅT>q,4t]jHzr|jՓZ-$j;gtS/>ojjYYYxxM&4n'fͼM"F?!ß|,`Ψm"˲OwSl+a6bbVbJoaӎt3-SnE/ r-Dz`74fpI%ڥCJ݀T:AFͯ#OG q@WMdKYFUWw`݈g3넙_o0Fԗ<5f1swt]_b;ݪ:+.OD~C~,W;Cm\cͫ#oh9~l7sȈ:BZ2ݔrj Mh'۔{(mӫE_'FD{me\qʨL 0ӄc=HCP_\/EYT~Q)wfxbJVZ` f@ުުz)\TxC$ s6s㺑Zέ[07m;ز_޵-_;ߵN@0y i4KS2*-OZB8@ñ X `<4؊-R[h @n M!pt@ v 줝@ 4 ^ ͡(@ ,h4h2vO&v;iX֒]cbwګۆ꾝T5򍒤+Va uPnҙd-* =.l+FB*=UP <#v[|a]a`.zɡGScWn}}cTQvP@QUZ///WΫW9oiCav3 |6]mf0a4هCa1\E_~ޙޙޙ=L䜜@tmFm={ LK>-}llL.vOh(Q:"Zҵk=x߃+<1]wZ";!YȤ;;tJ ;3bD<ܥ^oƃM֘P;m R WX)\ڼ˶.9!.a{1 #Z6lPO)E-F wyco1BQ(1[^3ԟ/Y|S,fM,0]RO7 e60\TxPNӅ6E?fj%+@r[mGlL:0<.+LCGOS'Âvn0&A5~ >ɶ3(ո@yKsٜeˆZy!eDZv'nE#|3k]n`TglR_R*L3(Zxwǎm [`"x&^2&MG6= WO*`У0C͢ZZbx0;V.mj71&3-l-z W|ɹ#9<5K٠Q/v/ 6ѻBDysL7P~s(h2,UU,Em+p t+HKM7@ ZP ,?7MK ^t l3 ZLlh0- Rhm.i @X0[ |-' E\e_1<9{iVA{j \­0vTٹ^GW/ r/??R٫db\h霫t=2n  S& 2=g7/j^<4fZzU(Tc곚L/CvƌPd6~æd\neaGtDǜ&9Mr7o>\޹sy*pru~MȞ=!ɋEVB{>}Eы 7 {04i|,Y۳go_X\\"EދRYT&7 0#1R4\4\4\$I&A&A&A™™™׮+{yk;~=WgޯW*H(i%Kjo-`ZtX _Yi;;L'jPgHȉN<)LfIto}KYӜ6FiulM?Wf|`Ṇ :Z OU}ZZ r0s !(~? ?O[k* *GZU&a1@Cz6Xm6`@hX h NX せL-PfƇ09UMõC#W^I͜ʖϘN0?Y?`_nNʽeU?KˀeҦbr/;1xx00ӭ+RB_-`lǟ\{ ׍G lBszGϛ7=o]twEa0wXashhhޟ?̘13C0\0\I;y'yvy֥[n1ƬxN91[gh:u0vs}><}]W9}(K^wʤ`O VGi%8fbK- uȯҷr&av|֝S}%"ӡlgTdpB;u$QiЇ:N, ޗv[oÎ,s;A=24nyfCc0VEΫFzCo a2@f!bY2h33XJ`O~`uPDy4WC nj5 S8k>ѩ7至P uGm/[o9l{ޓI s_Cpw2`/m^v^Fu[h!zR==F6CtJt{Ĕr')f]$wK,;V>Ige;z ͏ڧ6]i9TOywUDzlK( w9帺ႅUu;bg.Պݴ0N r:G9N&`>9UFva@a8h.|dUfd,h0/vN䉥 -Fc.@h ~jIA1%`#VNQ@pf:|6'BkI"gHJ}s{ϺSFxx]F>z~-r7&cƺ?WLf^ZUkroU~VYwpǞ6= c3m5 @&~:ӆAX91H%j%hXYL5֭lQ~x:L6g@WFa, ; o?m-Vnjj ZI XYUwh9!9Jd^ʠ5_q#5lBU6۹JZ 귰Guv >}m]wuyWa&%J)_fh=Ik!9Ϥ1ͨ#SWYq/WmVH5{Sluzol15K/TVV ,Tz|RmeeF'NZ>Z>ZspGuTF6kՊlڳiϦ9^xL; 㱒XI$66VqUqUqW+ۧۧ!?Yܳg nܦ<ʣ<?/ |šPqhOOSGL!''اjq((P|^ ͗[p3;ŕ@Eҟ^9A}6P^σ.dMQuKÄlms74y_kWaLqc˺T&j;461TUuj;\Q_:T_zNJM:S =j}qxx퓷Oކ.N~>fu4o_sdīύʚ9ӼaeEZ_~{k}'',%fi!ÂP?V{ Ȱ?pǏٛ+tPGըCN"i%{D}9cROi(,ilơ2a.26Slݵ1Zݞ#;bبM!Tzn]_5NOI9V><%YoΜd s9<ϳ^8)X|}ΰD'M>67,a 0XﮁM&ЖﮁZSџ]GRc=@ -J|w\` 64|@~t7vX Xlh -A7@P܂]64s]<+&DY<|`T6ؽe/ZoD(Lv9j7SS&i#ظU~N}9o&x#gIP<0A}b^4jt4g`fᒾa_9ZXUX,Y3++CM<4Q]]]ښ)1cČK$K$K$ZCh rS|a燝^^^%fiҚv-Z5e.\ np+ D޻w{~9̗3%%%(.RQQΩԪԪ*K.K.KF34]aaMs;[5j}j~[䎲Mw/Lz>.}hٖ+ A(<8>cN9dxL-fx7830L)7PfdAlnb?hᒸ!5s54.%D<)KN=4WS$kD7'^ꏚQU Ljevk7A98|-sSSӘA1bz*-;% ) *.MTL!M9>:F֚긽SZDQT>JGM\*@a7bh77,6\%tTW4hw!#~C)Jd(93ecᅧ2;LfigVͿA'mxi|viiQdzvz-X>`ZY54ɽO9O&Wvlٍ즧bɱa_3=Ӿ]M5:Ҽg6Yk=sk; :# Wm.E7q݉]dVk4R$'j}ktxM?]p9HBM2FX " ZPOԝVp/@Ch_h-ZGVKx@}p:h5] ?V: @?44,mF䧸@t7wMhLKeE o4+@NK&VělwRWaRSRf׍,fǭRJ!*=M}oa}\eNz8p10a|q=c|eK: 0>f6AA0~ab牟'~^}'OZs}>w?*,*,*l/gp"jM!ѐhHN<;ijF8qa-[PY<0?Ã罞zHd$2aa%(⣊A7-.)k%ѡ#VR7+أ =Y D)0M5'鹣s!YO/0x0@Bi3GfNvNb*9mϊ/lD!l @|>>sc>wB!J 05N`}51e~ EUq\1^$oOM]{kmύX=qՑUGVj~?ъъ'fubVȀ#x!2 s iՙ7z.=εىbD bt\eτ5ﮜU+F5dx-Iaǜu֛Ό^>krlٵ%JJTWL"V U8RU~]0p`Tjm}t *ԝ@W_߶ r[6x+z|QΒțTd":g]Ĕ KBZ9?(՜A[־pgl\[GEdq[eItaFunXn򴡉y|LeܰLT_ACWc5GZZ1:dq6~J*(FX`=<:m&s˔FpGLXqYQ_ƙ+ˮI3}J,tPrMVS\`Qޤ ۲ g(-V3}Q 4DnP%#{(IZضdxzMbg:<ղ1H`Z{:p|枭ퟴ$gHt݇-|UY4i:zi{+0W:m}5/v_Vv4A!,h؎1q Y߽7v'؁-m6c!@nߝ }MYt [a-X h* @H[Z'Q@CZ;(ne{7Ot1ۭvXn36 &'BrW,64"O0£ds\YyE`JOETz玛ۻwŦmܺAfTU!>dlWN-L0V La3FibZ ֫.}' ns456>?ld#;+++L3A EVeZU ChP`P`P0c㏭?!!!hhˉ91'|.ܽsE:=X`5c5c5c/_οu^HR%9|D } L7H7H7'ǟoX ւK+ \ߍ(zUXIs/digCy`aX@ ,l`϶8Kdm)] ~@^XlheK3gxD7~LƕREZWWV'Z*xq Iy5S~v{'r&o*oʏ۸_ӇOZG-s5|#WUji9NM{VDg+7'e?逰-zMD Tq}ު{náﶼnKCQu+W8],elVG1Z14c($'-;|bG]\5:G,HE`eqi;n f 96R/i/+,z ! 6%ʠ` U+-^IoG҂XZM?0m[f^a(x}+{a`f2&hgcbFP˪˒U܅N[6]4H8xǙL(y=saRqm}&f&4n)U=ǀy8xo:vЕEۚTH 寵049bęMŃ-lz#=֧8d u@pj3!-yX"k1`abX>1^aR$rso43&j^7-خ v;[5:5#Fh,i*gq}8 pĝPz)7(1JRqH1DU\Q#Rʽ(TW*ǹȣ9V)_$nK:Ut&.ϙtmuYɞc*jYS1d6VDx}u `4`SAS>:m]m~rAz\J\_Uܐ\i;rEkrҔ3Z϶ARU]]x3Z/t5w[1l?QrWp74 G|Ti4gZr) OxIj?ٴT/fiHȇx9((2ݰt g|D@4 @ *!4"T4;IoD@"T f"@7ݗoުlFs`K ;CZWRepV\o`B!)_;s}[^/V=Юݷo..G4nܹNNbqY@P:+d><%cw18}iM4{=<)梒WrF?9g5WlТϜ! yOj냎5`fy ]wi\bгIDATC7- / / ;û?Faa^z% Vl.]λBtCtCtgk֞䇓NXKcEleZ˴gggE좪93Ό3KMM UEOC%!!Ƿ:vZak/EOw8|U%f/p_p9 SB@B ids5u s9W)'ߐH|){{Wݻן0/U޻giٱ9ǎ|XT.Y306蓋t}!|xʌ7Ԃstb|j4drD\Z17[kLNк:/yCVTiS=ϾYhI#' )$AϦt+tړ .lrh=I>':@"=5F͟ v;u9r՗W_^|ȹSswWpM:kŒ&+N#gqLzS?2v gKSu_ ]TpξYRev25&U%lVػ'`AC޵9Cz`JT ҂>$vA`h҇bź.U&7~.-3`뉯y~izܴ NXo\Oule"`~b *$ri! ,`[Ȭ40 @9TUP_ r9䃣]Gʋ*=L@` u؀skd#bVפ{P0Tu irO]omH8i01HU.ҷbG eVa;W+'OuΛme!> d[dL&*/pȧpui) UW-ʗ˽TnBfޅ9aY ߕ/*XZzBGM]1%*_3YY_a9[[l}\L׹FxPA5LңL|Ç.v;zl gW\=HSzM5Z14{>{s^5ux',k5rp8 `(; %F),lh- $ fZ`<r%&" 'Gg,.Bh>Eh`Ɠ@ñr BiWh4BBGq$4|a߱=Wš]6Fk7MZj*OTD5,o`wdiSz)Zs֙aazmgWT?8efn߶ecTVDSScӊwیkqֵYf]Kܞ=q;Ct*E"x}VYgiiifڛ|*TeZh-"""_[_[_['O Zן Nzu9w=圤ļx6g5~îࠤD|ʴk0%q醬*# Dܿ_Vǎ77i2gNFy_]<3s;]\23_uUe: *5#whw*=jyї};MIr ^M#>!˿+*(4T1ΔW~Ĺb؛V4f/$VI+@CFu u]1zaN :>|Cݩ"&3 B5%***ތz3ͨzZ Vo]viv\v\vyqЪb|{.lBP@| Eydz5m1Glq`#M֝"l^f,$0,t%U} \L\1fD+S -u?7?=Ak/;I%.p)am~£e X<6鼅9{6so27xmy6ݼSZsdv;G͟汧ʸR&nM\&D;kFJt[謓+#YW_ڎWY>M<+06 _Z`|ZLa9@M0+ _ `t$%!XSlA6UCIrb-մX/- kL,e j :?>IܳӼW?8l>t]Zףd`'[Y\`7..iiS{[51aU~rȮj׹GI52( 4Q,XMnHEX89ZZtafbBvL2 7F,,,<싳/;/w^,Y2"* ];ʵk_׾.7d2dyCyCyq?gwSޥʡ0мyMg1dՐUCVGGGR3jF :1NLAqq\eq ##3jt-grFJJJպd15L;+[~}=east_:X ׉8nX QY6R#i\a^h^ё0$iRYK)!AO޾*)ꕩi8ggy]u떔|bNL6ՓM+dLs21uUGܶs~F+GW-wxѽn09Ę3ɼ&[ ZLO~=;/4i3DD% Mk 5`۝lHm^1i!kWI1J- jhX~Da\Pׄr Wۯ6NŜp*j H&58HFaհwxN@QHuɲS}3 [OE،noN/,x_\Zӽ\02/5jvꬹfyԡ#orek<~ysh5HRĭ=sM[B  sm6g`8h#E7@Sh@`(45p!`q 6:h8|L- ;`4K~` @#;ȇIc M X H.Kl]af[Rq;5'(ꎮsV߱x]!ͪy%UTVjkdNógc"RGfYa7q޾o; Uu/cSݵםŃtS3>E= v*1:-&#eX=BIs;ꞁb/٪d}aVZo_II aTM}P{jC 7tkmft.ll:J7Zhqtnӳ1c0L;;;?1Zc!A|||;߫WJJJ+T*؟22!L2Ȭ#x@なu!!(PI}33WܚYWiI;dͤk(@``z[҂(PA&[Xܝ<ZKe*) RaHcGÆ'_hcӷB p\>|xJʍnnqqGdŪR-`I~tz4EU1q]/;G97nX~(VQSrXI%kɘ ;}3*{z/WȺ뾬>$ uQeJ .}3KfZI!5Z1hg2 .ߦ(?_˻5zh [`EpGu'OY@Z"wa~gVFSaQ@4O_>rBIUG.#MGn{b??GAP'+QW%PIeQ"|xv4vMǩGnVzಪT.}f_-nGd ʹ2Vٝ](  g:Zqiό-76ƁW$~WHHǓXGE lh-0msc@h)wlh@F2h36XFڂCEGꕒroޔK~՗ P"{ܳYϜi@ Jy?WdkHߴ^^rVycvj%TB)ر=T_lϞsߠpeYCz5qmq nlMy nλ9漅 -ZOH>NpB[=PP!/277tZӵ*R+R+R/ . . NX8aᄬzYoŌbF5lXٰ1c.͎7;8yü5\õ  QG۠fͺA\*=TUxd2.^/8Q¢+.Xo 'Fkg+2;=H__fP,7_S!P5ihN(.,>jԨCbˍ/5.;>5)g j{ʻPLwƉz?lq~5{$ }JЖP1 2F8|IIzjAiq~N-v`zp BX< 8+o vuurڨiB9:6k"@xF1XXup 6_QF.fa='j B5d >{c}o-r+,d }f>jFr,ʄ>P FfpiwZ"R5x1!z~u`^}cʱr-[7 :cEW&Yu%XJ5^b 7Zzw^s4]鐲Ԟx~ӛvh^!6e P-J(h6!c˜0F3Q3Q3QպPRxvr]`**[ tB`  S,3O!N{̭b"#U}nf֪զMM̙[Nkpp(.NIYжmsr޾UmLZu*"nʹ2}Bsû`^z̷WE3I5F[0T%5j ت|ԴNy8ҡ5a61 n^Im±{ޚ^]Vou L 38TW\URP CDǭK;y;ű ur!7 Mq`dІV1P ^?:O%R[n5F?28q>,sNǦέQ oɲ.z,^XHöϛ\˙k6UR"\fgADxa-: ^V\$Sq'mneäuOָ$% -b^1v&.f_BogAQnU|,@7g^̢I:AGʭn"압-d(h lUѳu)}"KTD"CHc}~cq&שJs ~D4Ih7낌ITǮG;ڻjviQQg!;cf/9Ðҥ|>{1AGkc{0 / o\B 7 W_?|&S0h4yEqEX `+mh|KAFxC0c ymw5yU)3^olh+h~0_Rf;qAƂ4'd E`TVf>_.ڴxѱG{6*,T Z)찹'2nt\xFktnSX`QQ $2+ {7ZǦPҷ@ApW]"\ZZ_˻/ᄐ6PC}T&0Ԯ]WȎ#;|trøq;vXu鳜 l`z=zuGn=tC4y< ȅo???hpQ$$$99*s4W!Bt.|t둓ݍVHK@t,l?Ujs*-xh nNNvfTW\R"WرNۻJ<0L$R*?tiڴ'utrեL7&fV<u@Dٹ&*9L։uI|ħ(3VC~F?qv۲SߜKY/l^VpP &Jҙ>lΞ{L)uc"cG6 Cu: r3Zp/*73׼`j!/_k|Az"߸L\S5h 3n3 kxU1v Do(7LXrȋW/hs2"`fch F^;} hpM`VPeS;?e=ޥɦ^<_Tf/k rLg:Zh>Bqm|KKs[[PʵaiȎ(xTGk ? &h•镡ULGK)~vZ/xKңFim篏~ޣ.S_ ,CY^z1ԙ%h+!Bp\h+]0 Asg*` 4%w&4@[p R: ?20,kOy݅ݥ]cBܽ}?3Lt4a> 'C嬽: `&'Ntt LEgX%*tϾx)sVKed8`6hC vڜkVJ?~l6==$dѢ;;/.2YYXܭ޽ 6mz't wc] n5|:s6^FPPT ($%#͌ |g(>L]̟!mdN|iΧ7o"߰l*YVhVM6_jUUfM5qDQ(_OuxE">w\qAAA&&&FV *ӅO>]X|s7?|||xלU%Z-Z-Z=#쪷ޮzGGG\mvkZ> ~N.,#)ݕW&'/|{%*`o(ZbBDg ‹g z g& );@?;R=_ <"΀q\5z;H'@l7yѺ7fǤm7_e(mX`UaeL 0|zW?]}{@9G^棱 g7 m΋hfrs+Z6d)?`l23.,I{|'8q OfuuzV=*,27ϥG |^at?,@7 b/@E퇟,+, : ;ڏg 7̤]VЇXl`tn:|h]`>t((xȋvCe#FZA '; K i5=}ܙ;722)iSQ쒒zھqcp{{n筷fˠH\dA >yQ`\0CDX@rr{ƉK{?uaw~a4Ы>.g9Ld-s[fun{#y俺V5jrKC. 4dO=q}QRRB%*}$-$-$-_X~aK:Ѕ~э9Q{~xR'Nl!.S~aXV DO)  B{I +1rNUneiuߴi ff^^}X,_0!@L˴-TojV/O8 ۱|*pݰFQ d;gֱc6ì j+, >SnI(gQ*+Uf|>,$8a7,!u|ا֭MgerJ*Ϋ:bsݟesҧR ,tH7H1 c]Shf^dܱyXNaV50*MB/_lC},z,z,ҩujF/kH NJcű B~꧒lvlϪ̪̪|xxrE]þc߱8rdee.>!C 2]%h/TÔ5j!כh}Fܧ[ iAMԾ@KQJ YsQ֬ |K;$ ͕ɬ98iòpx\oR==ٳ R* ME6Z 2iߟ[heFqpSRۯ8([QKklci+mݖg6ܥ1K`u:¨2h;5ebia_]Mtr'f.t͢I`pZ:%A@CdY-%JNomcu" B XR9SL"UE#>/rKr򴞴8*ct )b@sm hY,&q`']pk<Ӏ2˯F4R+Nܧ=BZ4PN0/9&8on)\TlDGՂԇt*'鳼*=i$Ӧt\|Ѻ W#C nm2XU}x?IFYJУuWv[^; t&a6@Gҝa@v"@Ӌ%XK7%Kw؎E]L7.l9Φgb2E݄}))2/xl:zvMsHNWm&a^:q܂oD#_Ǟj%."oߤ++MLT*|(0z{d,ґFlIWf<O1avҸ5ٶO#aZXcCԀ+l |||,;wL1mmm<9cΘFFFPJMLL` [jjjՉW'@y^*TЩSooouuu)SytH>GxiBrb+5 ?{q\S=th*x-ƌ0cFg_Y?ǁړÅL6rUD;%H:tb啕WV^6ڨkt:kuFYXhyѷ 7dL~3grh5r aaaFiuӺih&ͤ\W|%_W߇v 9suru/j{coDEyT0 ꃁ;,F3j+odmV2/òC6[N#[O?%;ʼŋcc13+B ՕHt *SfD.ҽA[ڍ\*hrAAbe'`qVt,ԫrY%+oYע#52ۍʻ%'6P eSǧֵ*ǓZ@/w PH-B3SÅٟ*FEWItґ]LK`(䃀CD:H }lG cQ0Y`f7ҬwSVut]u첤Ɛ *zfAS qv#xR4Y)؆Z YoxK|ӵi=]{VEexI_`z 3c;eŕ^ dB+%aVXѺlq pAfiH^8'#C[ǽ(X"Ryhw&;7* xƘ#WX2̣V~t.@'!j  t%88?QQt)I6Nu_ËKmW.ZqJi \j92IS+|Ǣ&kp绸޽;gNTTBBvii3sq{۶&M⬬#h:O p_f,i&b6]< ,ͦ{beb؏nou_V%DDn[?cU5v( )RM-.F/B aĈf@_+ ;̃! $Ftu4CI &\7y ؛[^;jeF ~˶K!dӂ/^pتr] r$.צG%tٶPZ{r, `мLpঈڭ6l 'h>:˥2Ԃn_xJenw&oL>Ʌ@UMWX]C K G:^0:?t9] `6tTs35ںKnxSBQDu4w;TPA` 4h6M7޴Zk9=Fc;whͶ6JKKXp I!r;3 =cB4*Fx YD=:5\Šn􀦱X,Cfld GE3-RaTjfsgz&ݺҹNG@_&bBjKM֬'UP[ڧ/Fj)AM^ơi= =.Vp6:{҉>+}x*_=(~+v/SfO={3A=QpMWJ(-/^[phYlmpMv{N @`C @QrHz^߸'A{xU =6*paO(Sm*bj7mwыG/T  9xYr\$RRRļyc6l`SS 7|pँNT*PCǼĐSH#u<.vVۭF4wԸWV쥦}Ki43g&$?>hPJݻb1˪Li >#*#hUQZJ=Ay^T\b7@*6I +]]﷿t[T2(zn}?3 ZL 4WlE8,ޫxafm]{'ܩ;Zݯ;D+ڝ1D'CbkVe ܘm_|5UUy}q-%Nm<9m 0 a40P-3` OVޏo~3v񱥦ž(_u„bGЛmɞG7"t:17uk<;}FERvMhm:s$}>\1sloJhS0B wɻoq\آkY&b'Ռv>T"$н4<h0.GOt4t `<t 0OTPmj|ú^@9#v{C;%G*ղ;Bw!5?/ƍ%K23)]w`fehػm׫ jbSFڮzސ!{666ޭ{ݪZZZ\"}A\,sss7qGi#i#i#''zrrRYR{ŻZkeђwwwB ) 54X]n[խoua~ߚR |`` [s`hY2YL74:Ex\R/6 >=-Ёj*/OO_$&f߾-ss#"Cɺdhk nzf?k4<*`ʻׇlvjS%ѓ*x?ͺc$橪k~ъXI@g1ʯ?׺K%χ,!} h9q E M餻h5dzr݋w5/^1۽(ΦEA, ظkA `1YvaugߖVz]f{Cl$( zS}@vm0MU GI `o+{|aciVe=4mz嗲Mt@('gOf6 C,V&c!q]>*^tX~URk `)6 $+D +DNczpr0_n{O>3N+D9HՈ!ϒvj{BLj(Їl4t]`6t]`6t]`6t])ټ! [>[tx+V|$jA@jJaϳ?j9)Xֶ޽Y>|-%RBu5#<ήz[]RyĶC47mB<?g&Yh;,%2&ZjQnۨmج籞=CaAinn;~pppR*HA RW)D! MMM5ka0uTM2^uTobޱc}ֽ[nݻ$D[Kq[.s9/\΋g@/alo 0uh!5iKÙSpvgڷoFFAAӧyccӸ1w` Uŋccwu-/x,ݴq֬mS;ƓV=b#Kok4dEW -WQT<ՕqS)ޟ] #4,*jl[%ѪzE9mUO2 fl_YPILZ @Vz|V([jV&OVcmp@,jBDW2GJI=yO#N/Y]yjLQ\ bA0)OEޤcrE@0Z܆DB74x?3A7V>5A7v4n{R< .k aX` ]WTYןy|Std ë=W:ʶq .e>oT0 vQ9sG5/G14tU@2L&ׯ׮ݥK9D54rqTRzCգ:ɲ)y6:`lw jgP"tK=zWt4  FKO4UU{콲JC*oWޮ(D!w~e+XJ[[{sm7R4hJ;e)Kٴuiֵj۫iii;Nhā@qs&Ιvkvvv.p:&0>ƹ-U'BBܴ^w| nQ]@t0-9DBD:#S.$v0<-z{ ۅ(1*RIXll|PݺF]֧F0"I$:Z=lطo!!'|Z]VY +H֌"홒u*tO㿭4;'Y*fx~9F؏RK&3h_cl{-{>iN~NRcb\;C z,y@VVҡ.6Ccb ;5wV\?Sdf +h?cu, <˦ԉ"P@C7 &:Rq[new 8ֻ ouu9yGa0D* 'vӯ~F_} eW\]ً y 4VX=@s Wa\`je=azL Bޯ4qum—;WEsc*d3fȊ/n%nbVT ub`OC͋hκ6m,~$jkX7rԅӞfDmd$2F̨BQGje`S]$ nm]~fD7^-)IJZ$&f bc9tHlrGN-@4f݅ByQ#DGL[դ7t4JYݲ+_ܠ.dSfXA'#d9?wdzvPDR@Ǻ(GHPt<ʸ?]Y͹CwwdJ+(Σ ! `pB7MT5Zܝ~3٦F6;f$:v! V'k`WiLI UpIxzq]<|<2iN7w7T >MAGd2 L[ԩGmw1$]\{hˠιHw KU?=0k`dp  Ы&mXuW!AGh$ϳ^Lzok-lA￐11deᷝ^8*8ЭbʑFޙZ03Q6fFLޢPԁ3j+H *OeJuތQQ%%@Z1B)!uzЧOppӦ\zd[Ylcjt좡( \s,Xd""%S!&Ϻ#΃;GCLژt1)1njTC#5S3޵ksOb(FZZ1I "AuLVԭ[єiSM5kWߣ򐇼U#VX5b}mWnUnUnET3OQQرޣz:>>^ql [sVty5smއEʒi(Ѐ@9}?.q#*wisU+ti!dfn]˖BU^1 vꔕŢE11VUq둅Im>'s!;$rt'qϧF G bN J6s\O4˭6+o8^3!5"Ao!v͇1%}ǜy3 l͂E2 rK;jvŌ3#Ԗ',PblEy%.8%o|HU% =MFV t 3-}@m H90G,- ,Dǫy|o*mm:bWۉm]H;|S|pr%1ܵ^~& T9 ێȩbc+h EssS`?Pet繦*v ocҫ[_[7c8x!3č C"yA vޭ Z?Pv޸ZJ2w*I\ra7E/,SOM*F#t$&>|8mZttU"Agz{kwꔏLVV&l5&p360M'GD'$(A^_YXZ22#4b09<̩Y 7ĭU-[dbtG"""ئئ&hܣR7n(..˶`rLn3----[4h,P _ Ui4F:z222Y@Y88}j 9Cxnr |#OSbC>e!S f ~$t%4ߥ@AOCC# XǦ )y$#":j1W^]aA15VB!+2-k:w>\[8E8yC6ٲ, LH^QsVŮ( RۀƽD_ІFڊ+.Xw55yqVGyyB C܁F# h&i?&HەNSg[uN-jwOOLk.ܪJ0 pBT@S U[I'|y”>ykS;[Z&0&4VX}, r@G=G _D^& 0ns  ȫ|ojv3V^az X_2j"mURPҳМ^g)] wni~x]ApM\sǂ؀ZEFcۑϾKC/:qnFIXF똉W{6"\a\w?^\e_ƹd[%]1\c-In=g쳭dsG 3y 7裮ll:EnؼyffHaa..e$CBg]6lmn-4ӼrҊYJ/L Ҁ&sLb}6 @=]ݶ.%0آF}A_hiiαK%bbbRRr\[[smȮ#z.]&""FςE%aVJSxr3wexf.K*cPXp>7  'T 1^"G+hxf6O7M_TwɩC ?B̌jdENq.GV2}b 0;`+/0Z(j8 $ho++q jV|m7E}6sDy'o16cV-k_0]069Zl~C1N7 k8#pĚ3TԳ+7ZI!<67< WOyWû;W\Pxv)5[i}|vR7Tݠ$7=?^оnUd4'˫Uٳ>~l&=G}99[Zm[&..11Zik)ߍ0m6 ˜ޒ]BeJ'G^4q?Zdp[+h.>kۮmq8p!kuհ%,Ngy@i4P=3S&OM6J %艞詧W"q}UD P];W\_l6[D|Cb!I,>0;s1MAku#un7mڇ>>qQ bc).@Mxsn^v vsiqd#E%כ oi)q T­).ت3jجF3 HMm8n0CfMk\v([ 2 ;>ooڟop: ؖ 46CY/N1V@8n:`{YA?; tx<}E-o̮"|@mI@*BY+'zN4l<0)y{H}b,4]P.y3m>"y;U-/vhE)C* f>$"'[',@Qǡ>kw.ppcׂ~r-_2EL{(p̪l#~rJ6MqQTs)r.\Q* 5ǏL͛!C>jb0aX_Ǐ]]{ھqc<@ .2<3N~i(H , P)FFQ_OuZ&)66J9b XrGpG@-xÎs;8;ǒt ܨTdIE?!dHLPK VSF Lqj[0Z8 `?4AS5_;iߦ^Yyr6p豎{o=$kxc\׉J*Õ:[дO-sm|fDl~&߻6{WI?r }'i8AF I@]z,Mz\yx;qF(氜_& 4Sv6AnvBa!UJIi 77$dɒڵ8yk0364sǎF|}- fgH3@9z{Y JT@('=M<&xJ|*T yxs npڒ?q4hƦCm:.];### 1x#(**:eԔQSF---mGjhQ8$ͱgiz\qn[YF%x[9+ #]]P"Drk+[e[YMLfO[ܺ/003֖<SEEV֒%11i 1OXzM{zɕ}:ӑU WbwJ.:34i?2CV-}O*Jjv-K7 &li_h\Di{tYrs'8I{/_͹#iga 8zigi8^v QP(F Dhd萨)Yoi+.d -%XG-3->OH0˄/;_&y#2=% ``K2PiG+JabwsTb[Paa pӲennDĢE}q,iuxNaW'o=H#]#=Lc=Gx'$J,a&5;H\ϸM^g_M9% K"vc,4/ԳyU)nۥԸߔZs$,X +~grZV͕dQ)Skăރ>V.U !.@$sYTt"p*@X~3AR.%ѻ+{:r6;\ M7%ßJ`WS_2Ҵh=Њny<q%f9`Ԇ*0&kG|=(DcrSp<uaAvж7ޗe6Qylpv_lTXRbr}) h)IGԉPNnJqxyLjڵB  Vx߽ G 4lf%oKޖm2enYݲi4AArz+@x#iӫGz薣[ni~a P /_BTd UNLFuЛw^ ˥koi(!05"[8Qh.)͉7H"15ݿ{k\]{hF(6M,fYfonߞ6ӧӧMM25 *=aZpWNȒU:&ӸC<!IhcxyHØyFoNg1~P[pqxF64>I8~?/fEw4 A͂MD/KeE}Ul޿/ncX[W#Uw!B=H(a8qbΎKۨKjw4>$;J\h(Fogd&@L0(h hF4AiJ5罷<UcG# |P+q͜}rS 4uxGTL~mLllHy̅0͏ 51W#Wyx? ~{גG_}[,(-*L*U(]oРikj jF[d7 )Ϛ4` 3*Z$ ӹi @Ku(C)q#[01CNmm\ KgE} <w1hڅv5k]]ݑGnY5jV,\\ bZcj5&hKЖ- :t60zgU(PlB5y$g%O99I_hǪGP: sb[6eCră3glH6yAr!r_fZzس^ E"CCLL9s/5}e9I\:)nŧ+ka(hO8Ie`6iz *H %=HPc%? w@n-t_Tot` d-[%?/)U0`}C7PC 5wzhmFmKKv%oa~N666fC RUuP֤Qv{3%9uVF3؇ӯ7͂BmAzaHcfLEf4zZiWB޾nذz`r+Wyx[ڥ߾-Z{@Ӧyyn+$?ȍjgnTcO i0ζ ÌID΢.`t8 ݳ+^oK.L_C ! L |m_yjQ' =u,M5 ֵ2Ȩ[w 0+2Ze72jڒ_~O{ Lz /H3@." Ƣ(lv}zR4*:ަoxR>-GȪ;:&ڳ\WtS>kv 7j3]9 >-3w;.5}'iN4< I$e۝qvgujUHRez oiwE+^'f#!\Q(,,ߟ1>})eϪ)XΫWBK˴4ccnSIYOXt2OPƦN߰>E9* 7^U jFsj~$w,ϙ?',;XF6> ϫ篞zBBBs-Z5..ݮ ((?fC 1 P??i{흶wZڴiiNENENEtAx;:n'ʋݸ0-Tvb;sAQ*!wL@ lЉt"UE^R0L+ ccrr8Fs/`u\MfZJpT?cocunܹ ,Cj^uU hXf* eM=5ɹ{3FBhό' K4Q73Ase dQ,YT"Js)`@i(/\}3"3.K=y̴$abs p$cL#| TRG ?Ҿq0ȷV:VC hWy¹ $wmepN]|{f'o& 5萁l,!'V|$ ޖ3]U@3%}[YHdhxh:#F=ѿZ0b1WyxG*Tѣ^?>1##ñVJ6fT} ˙\!㘷\z<ӛ$]V>*cP[¹TL)Ԛ+Wq߂;o^$9މ!u^(.go<QCXه"?z1 6>jܢZN\$h W"?c!-(Ƥ* SX2vǨ[}T1\!|J`v/zJKg7tH`~]1vDL. LEk\>H=døX7uG:hף]nq'ѝԝԝD4) L`BƐ1d3g&&ny)%%%[!xί_}4fR9W<~rUC^d_gsVUnJS( rHϦ"<x {IVVRW"7XuٹS`?<B*.^8&32>%˧af%z)DL*sjAV̸A2NX'xfrBUРnqe{5VaqMF[/-,NPʙ^}Gq.-3>Qf//@<=@\lʩ2s '}sB-27u<.mOtv$<)6uI>SvC}#YlnĂ&B ?^0FX ž@C p68[w7k=$?&mM}+gb{@1/YNԋvp]'OwMmBGѠf"Ct؊Daھ3ξ8}Nj/cjor'}C?Q¹x«TU^s2tئ [pxpQ^q0*ϸ`cJUw)/V;w΍U ~t' jEGp ]31gZ8E3 ;Z7,QG1*( dOFFٰ̰~`VBdN3!B34P 48e2.-=-=-H#}96cK +FGґt$ҐR#OO!qHN;u촰v  dj$Yp!6`D{X%SX5А]nR@dV$Vx B@A iL`fifv~r[Q=,{KK`?i*W3>~V_X#ǁRpf?mYXAvqGQP|bo%Y`S"$ vISt,SA a2'M[wb@^UׇtZ8zG4@{dտ05%aC1͈G]t*7?k ĬZfe4ٌW{uڷH: 4&^!"K#怳 CD.]c HƂT'||h[ʎ8rլٛtg9,~9֋5k{!ﯜ]Tuxg0hT=jvM^Kq9BPl+>0g֕A|"8gtiߋ-6[,7r Zjz_Ϊ1>_ҕ_tX@町DbI_@yhڴ7oY Y@H B_'O\\zڱqcSӜ5B' @ HMce.,d{[ >L T~u rb = o6ϿWFOӮ݇iBGxW:B{XF8sHcϘ,U֫rew #t91BWK@ yD\Fs(esjC*xxq]*AGYt߶m7?$ot79&A)uۃqV\~J]@f4Qv9m8Y =PcTŪFGAY5$$B\;6Xvۺv5hf$WyxD!c3[Q.n_ I7C>&Kv|YeM'vWyZX{gϯ_ߟ9{L<A, ۷?y׷Us缽%JoDV/YIޫ҅AF *(B%( 6 \_I))>vxx&]* 5)G<ņņņQyQyQy 6xᒇK*J);Ɏ99hN}aA#4B#Ҝ4'ŵŵŵ7 n<>x|nkWD!QaAg|E,-hӂ"(o^p/Dl"PTro(1 -$Z LAxiS/)gc*+BYSgR Jyh&}|܈_޸!kUUr!=Z{\*1gd»{?{ Ivh8Wb *OnOaMfVJƈ:2CФqn8;l(- n]40h Hv"~-,SeXKS ZPOFy;  +Z62ά]\ .8[nR*ԢOm:=лH0Jt d23%._ tݰXKG1J+RW@ݞ!=,!.^B$GdgSXضnu#ĐP q0zT➇u'/Wyۙ$]zgч?1 |]_+t7\exb[U4AwwcWCm}k0'z`vgqn~,&&ryR?Ǐ]]#h&yTLnp PM04@R0MG ^RMtnҹk>ouVyMvjL1?B'8 aC$3FZ0üFcDZkq|^Pi4;T2d7J*W?{KӳZU۔GPBG9 0FoÐl%(TPKxa(EjԞ\9CD=rtl&(o\Ғ<<ޟ}eennҎ33_"Qܓ%^lmIP窀uSЌΚWWUN p~ 1-ciܮ+ __ KeQMFO%!V}MG&i` jWhz B$ MM}&/d* ,<H$ z 7>;NRԲ- uUb?f<p +89Hy, $@ 26s]A+ekЩw_KN@9'w}dPczF>C#c`I7ǰ݇-٬u=p9aOLq֍'kU[YUkىc 8m%S/\%{L3|ՏANڅE1G&Po̢be? Ww>EE͜}ll.))yߦVml՛ #*3ou+ E=.POXA `F2^5&*H ]3!ͦ=Z3?V&jUUUY9Y9Y9-[> 16blʭ[ىDv"R!bvaPyx 1I>'d6MfK'I'I'\s=s_=:٭[gvFډωωAd]PA2biji.'(nyi6$-iiWX{L;aC[^}6̕ܥL(Q x)":#yTi=}~ɺӨʪfѲa=>$@Bu BvVݗ:v'H]@ݹ.ޏo^ dž썠a;ԗ^(.ja1Q'hRe!0RX<ޏM ċK{P%^ٚ6a A˵4-hpmO퟾E2$]^?mr@6ʫ޳o5 za,Ű=ו}QYT4DWyNQёGGԙ>n\\\h TFx2V0wwwo@Qa7x !Sw+5V/' +SQt(**6 嘎T!If\m[H}uL>a=ic0 U2 `_h!]HVTSO橓R'NzC/^ ;;;B] uA[E[:NS`#V:99d/KI$$|g[DZDZD[mm>S6m wQQQ|||?y{ ՛Cu24J9rMӃ&So9`Q ~}͂[o&leLKNaVѳlf;T|kpw\V`LNv]jl u옚zᥥ֕ՇKJ K4hU//H@^1鴻m3dު&dSE8@t`AKHBT_emu<;w{O ixqseDzc@errrmYIYIYIJXJXJX؇?,Xt/^ҽO?ݟʦʦc>FPkS $+JpܧOw{Nddd'l1qsD{w2y/,0>&@{:Z'>_|xnܱ9x+Tjx_JA'tZEAiҺNxYhA)JV5N=x0H3h/Ģ$wx$iVo(}?/yKV3#ʮ/]67fLQsWfmsWu76ʬ*+>6Ç~(%(޾up'8I+ML$Էg'zEU{0Q] r>*dp of`rFŻjce6hk JB=d@hA1ႎV-ćgz*%y߼iԨYm*6m-=pE8UI*~&ڥiuv4;36aGdנOJoԌ͹ 5aGBQ=VaFU.3dXQ;ñ 2!˱ ]Z/9O6m @ ՛7WX؃FDzVWIHFr{}滒N&wEL!<^ ` #ݹodi-hrE+5arRZ< sAf1ꔑP`iB<Q x6|{mQUoRK׆ѾPf`_<9`gָ$`]HXU}X<<|wC=(*DyWy"r L՚O->1{f`@vv$0C+-̼^GO#Rn(ejqU?*hpM˲^gEZU/nr="okݦXh؇E!)D֝U=_ӧ'*rxP͛_ձryY4ap5:ګ,ȢW栀֣}k`[a%c2FgUFL;Kv%>ףCrxdp57xJ\cų4wPs7iz= ?-(3)im[E!$޹fAazL 1+-*~ADIUJJbÇ9Ew>}jw7Py<,VkHȔ)?=klVsq /IkҪqr?[\fAzpg㥓ڶZ`oक़G 1IT*ϟa(R^HipOAsh6orFSČf5v$H1g䣖oUWycD4r~8hŊ-塄PK˖!!::rxVryiDҳΝܹ.h woj פ1i\mh%(zې,Zd NMu&˖ЧwY8&# kRwJ?((Hw|` iOzԹ|Qz)_i{{A :LuB "biJ`9'F$J ..iBK"(\?MarU.a›7]\tٹgؘ<<25U,;tWGBJu!ނڂ=;&_{(F 3]8UfAd:{%<ʪ~||^iCuP{uaTMf`/ Z4Avs|Z8& ,([ ]$%&_yaﬣ6wwB@pwwwwi)š-@IHB=7:c便@0o-X9=37{~cLirT EY6x ;>knu}˝*.~3 }Iic GL|0KLQ#Ol =:4Ċj[+}XuRMK21*&0O n Z{:-fwQzjw~ -oe?폈y+2,Y&m*5Bhk.*6ޠ5.h2Fu J.ĭUZZryy>iҽ{QQ5jG@@qp ?zdgs&us'c׭FRh%]DDOI'F撮MPL뻬MJv/6u!a'V/y(D"NY4Vk47~YuwSst;^X%4x{TLS̤Ac,&/yʈۜJD/#m%IJhsB+º[=\vkqjԩ 1(΂/H !H܊MO#!l܏cT9PUqQ`<$n"#YV$bY,!.mbEժffiiRLkl:⦩h_J7KpF>JTG%Z!1`"ƛ_=lݹϲs]>bǡ( ዯ)baYWٴЖ?<|8UZiJ]F De,XIwF&c5WzG8,ǀw&3߀,Y8jŋuPJYP@PʲM&'_6eJX%%Y Ċ$sx$uh?]~tR5r& `[ \?`ى=OOҬ8{[Ž[y W $(~ laI|[d2A&锬w3k&*@UT$յmwVD(:J5xpT޽}DG>lhwc~d>$T'E%d(E1a9ok@lUэ{Av5952aҦi6ߴXȞHh@\, @a;@`?S^R@{Vr톦].')Eψ Pf 1%(Rao׭p= r<*S/26Rn p@r4,wEN d+;aI}`lzNasϐX͖9ʹ)_zuȨMȱ# 'GN3q2_j:7Lھ,ZjNb=ҷbL>=X(~ė]c/dƆ?HmKߦg]_aک",Ͻ6B;&XYmFFޓF{rkw*UҎ:ݴ4O\~IfSx!;Ig G1'Ag2VrRQ0GaEcqBCЁVwIT{X!GA`U=⑊0VNej߿L벾TQ!"]6$c+R@ΓVL[{q-bS|e a3g4X40pȬ,‚/=_\!WiӤWyn#!iSTT)YoZ"PSeOF=;? =!Y+ʌxћ-f;۰-~{t@D+ 5|KjI;nrjqv.]3 (:zL9 4?Ie`֯mln)K/6(u=׭@$)gb:G潘|vNv<_@  `zlz}rF_hB΄޹Yo |?zdkۦʕU:;[YG:ͼ]eYl[z+&d@Y'ؑn"Sdқ ?75U( j y(D2 kfk~[I#_9%4JzЗt ,?MO@ =Fk梟D IT&+G7Ly '*,_0|GVV|:rHrs##C֘Yj<3{j~c?f|鑴w}#7j'j 2x.T؅&>{x@ʓy ?b܁In\ѡM#G-6 ei44p <2! E7W;5nj w#~5&;Bd%RXsE3b_bzB#cRvݘ#$/4 ۑ Q-b.?jB~b,h btFW{]H{@ާ_e>ݝ%a7.;R)]B,zZD'з1rF#L5&GӪL"2 p΄/=d EttVq}~?i:/=\rKaw]ɉEϯ^Nt%Z\֓- 8H+2dV.c}ͽ{YTJGG60j/_4ɓ{je2}Yek`'==[Xrecloyr4OjHVKSMdH^UХXd B@ h`(auy`ǰ#{;4L[T5F%<$O~,~Z?~ā%;NL$)}QL9g,yǟGgB Q F4V\M֢q”}ѺLV/rUCK&\!_zD"Jmϟ?><|++*'/=gpihؒvQMs[EH ,kQMQd3yʠϯD_!這Q.M4fOQT&zcI;=r#][]LL<"Z%q.΂9SsݘVʬ/?gjr!xzeaS  5yPw+T\*/T<=iN p RbTgJ0[ 9Ë} _ASzo{m5/FVҭy'E®$_ gDYCTͭ (X3,&2\ZL93ݙܧC\OUm&}On:Hrڶ11q !EeAJI;]3hhW) %ԇБF kmx[iQmNң׋,ִ˗'ONAA5TrdbY냂j8x["Qğ+Ou~ar3Xt_FtS2ZVȀ!DC"֠[V~V dy6|i a`iqyv+<b~kp~z rd P<)3S=,?ʌb2BŞ2|fu|*ߊJ%d{+ס>>}_;ZR9bijg;wv{\׫wͻq&,AY}$7tv%/9D%L [u Z폈""ܲ[-%sPZ.1xp:W_{)6Jtȷ v53aړK٫(CCae 1qlY Rd6nfVZUWS񹢎\}=PeaSQs04Ua:b@ i:\_}Mb4F6{2V@tڌL2V؊WiV6CHHe؜ _0T?y{V|I@@F sjZ8oۅtT1 0@^ddG,םėSDSJ T)֍kY\s ~1]S=%ރm*;I`fZzNǗ'Ow?z}XZ&&m|yj׮9;GnP,,o|\JTwF }u+ԃKZL;&VI+D+bwh#n3?JH5pꑀ4ᱏlM3QB'}6PRF/9<0Ј+"Yw;ӗ9molaq`aV/_s^dBcaI:ewT)@q" @E^D0ڝx{M#obQ; S{иSrNFLGF '(n)1`1<́*q oŸߟ d[ӈp[G- _Hr v#̼1?yE׈]Zvld% oZB8^J7U}w"9fPAP/B\@]}ܽRݟ>eҹQxIIn1i$CtޛchnqES0E/H&m]˺)l3ZʇrpفgΌÇmP0__;߹жeժƚGzʐkd!G@$:{2Qh,xlsպ+Z4z,+o*IQ%i1@SOsL[%Oʓ1PMq- kG烢*L@ CLF䪸d▢N mѼueRejti`ȑwT̯j?x0ujXڵ,hUCӒ$>Eaa@+,?#>1,s{yXD[3U]˃7o"G(r|`2/6ū#96c6;VY> o eXDh`'.h?ncž;Mȭ\kcDud A@Dg/4xэavo=h7ZM(ʬW4, &43UsI'@- [9߰K}?~.NG\XBH}jO0RVT@@࿌zw-CdQWre:_zHDt5SFv]8đy+sUu&>voy]îǟG Doy vVWvͿ{PJvxΗ͛={FD\8xpXZmha{VNRұcS޽PT|e5kT9qS$jޞ['d<)zF>lD#+#0 ^۝bA;LU/V nQzf8#(u3=A*|r;`~aU1kY;/NȵQ8YQ`` KMv2Qlos^p2Dr[˖W\X(G@@@u8kpܸOl!>eylCPQTI7YXz8A0 5m ֵfgęuޥ6Ǐ(vOs*dI-ĭ9X~ػҎNCf{4xA ,r``l feW˭s=ݻq8oq/Uh%+na 0a6L}""w8[8.dtD/҃|ߎ\BP dqg`,2B8K Pko;m ^p![eo.o~вI2Ҧx !!ߡeDWx>lo E7ec"{ ~0m7$h|Id7^j߉&-ԣݏm_z~X W5ݚᓸEĖ.zy81i/^Tʯ`oenu+nÒ$??j)P0ЗY R  laJ1`,Qlߛ-O+'x+KxꨮڣYJ(0ʪ !Ċ%~OUy۶kbʗS|~~l,WZB5~ Cܴ<2#Ru0^cG^Tlܣ£fҥ jߚfYCu9^u9Mӊr^R ͂+jQ=70YfzcUp@RX =iXi -t E[ {:7Z "1Q6 Y1`ӕ)@ic`|gFc*NL9N|bqE:<ʠfl+fɆ+.B: |eC%v(a ,h7aj„>Cm2TK|Q*  }kHX>:/ |PJ+ΜYhaw֗8Q{ɓq0œdm#r8>3O ddh QDʢ)]~9B5h2'dNfEO$-͌꤅ѽen)IH02rpX$0pkWB~U /PJiÆnqfRƳiZuNZ75JuȀ w>74~/u\,z^hvmc@˸` `)eQwEĜ:nD[ܛ;.C,( "0hz̲~JdoUKe;SїV#0Cc SFznסS> L0d/(Rٜt$PaA ߝV[9^s͋b&5]]=9ށi8ԑ<|7Z3B bn |ZJ"m`9Z]!Rx)$fu@\ၿnX¤"h}hŨQNPzB[͗N*!:ܹ#BBJ338 |$J,[wn_ vˋR!drkRbbvji,X8SzPi2*FPƋј.ݐf-hHDh_f{ Rc[˗}nONT*~\W>xpZ%owXw-%NOQFEkD>&y.]VqF s^DGg(HSPV]΂v6!@걓(6MQ\pA݌m /vs\bgm@[hPMsliS{۫Raf5UnH;ҘN .5[Y8w(0d Xδf3, g5Fڞ^>͌mB_h)#ϵ{79iA]'1'K6b[kdִn_ oחOW]vI^?>ƮK!%:ĽkOiL_Kf>f)>iCMcv8Y>xͻ]4 Yz)PWEVNzug>n!\?|B] /` 'ߵq']bJ;y[ 1CE0ěGYv+V@@JbKB0ghT/WN}qWbY]G͹Eֲߵ7uxq 6Z&uM@h#}cJy!G ~:}U<,?zҗ =+'@&_zuAڟGndɥ7fG`dr_Ťor6P\#^YY..Nӧ&~ps ifʪU]\ +$e +@,@C8Vfv)G}PTŨ I2~xkz샟҂Y_jDWD SLZD-XΏm 2 E0MrkO=,5NQC *Eqc_?EԬ,ݵkvЇ"bTBG60j/]2$,ڵ޽zD,( 0^OHJO{xjzu* _zh0"h/F5VM-J]3;=vX c0` 'PS)o%tGɫů jٲ#Ξut_ ;l#Qsل&=yaeȗj3MZvjkk)GSnJ7Cך0f5==@\ʰ hA|ș.Z}~/p~d%* ͥ%YѪˍGH޲X#Sx&uU;1`@1-TS)c/Je_KET1_P0i^}@zm9Yuцo&QXcjj6UmXc>MKS]z9zTxMnEz9^zqVVE (:8[7Ωfkާ"d 3(H Q]J%@! ~OkPLmC&gm4z<5z + F1w@ P=󕲻O. ~ث립&$ыH}P$MI=t^< z݉> ’ XsjwRB&8إhE~;uj%C^ѡ ;Oj/dG,VF;4p=m. ۡ=|]Fv]+6Sm%6Ο X xU\2G/OD/=5Xχ^ѥaYdU0Q"~bRWyL萜q(fRV~U%$df;6uݻ~~YY17OM52jnj^uqJ;d3%&nO+@ t ~l XÔx11Y)*f{Ajy+"^PΒ%+P]';tўLF:`EE=a$BYkkg2J'?Ϝtj wz ʅ~Rn/L @\xdn&U> ԏ>?ܮ^(9WN|`hX1aD"6pd:^l|ԺѤG Ot,ҡw?t9]u4 ܊|+w |BBOj aJ"Z`SYpAMX|P%¹!uoNMaEϤ,(,kzdE5:h_WϷU*Ϝ=ѣGZ>oe {sVhomnίYoˋlee'wQ5a!;5NӇ(nr`I$E:C|LZ31NW19;u|ӓ+"zuP_z}TOlPB^ `A9Nھq;^D/Vmƙ>}uMWe+D˸`8`5$!}V-Hpzi{ӛ"%>*EOG k  3v'4#U&%~&pCQ]v JbG-ͲVx,@FA bΊW- d! K@ gvف-n7,4&=AS[w/.]k6]j黶k%:]pҢЄW(pc؎| ԝg̍ 4B{D0ԍ,r.&%?"F󥇴&+ R -e=C,Sxl٭^2ʷ;i1߳<{nSop":{GD\4hPXFPxXG@@@?H2LG/ߴAAyyFÝM4?Y+$I~W }HI%0⚢|3WA96992O?|옫k:!"N2A"aYC/O;6"b6ss:?/='qT<~>p^wYiWQ6]hh񲧧|\Iu5{0PO\299޺n˪Ӡ/m>䘑"F c!eR6@)@fP9 eL+Yi*XsS]OOb]SP VGFQ^2tsy# ݿ\ݚƕjLAWAS6V v@h X\,'-hj*oc?ٷi=6G`5V`G4:Dkv %lҍ:=/~=9oSO׮qn%/J m-8,`4TI |GL-119XڪESw^8%NP !T ѝE^voHbm{<ŭpB] RJJu!!wveG@@@@Mp}_}}^uqZZ&&J ioV.۟͟G+88۞tٴÏtw$֤XlQ0'L$Ui摱=֟+N x˖g,zT͏A$r8 !&X0dKaG9>v)؜)d0C,*`@?ě  0L9#w?ZA3]|g^/[ц4Uέ5|3Y1?)ؠGJM-v\y6O\ipmOOFU;&\/?Aƀ#'үlA%E/W~.NnmLS0P?ʲ M^i8HU=~zBK-%-hIm@E@ Tj`6CIU1%Z+} :Bw~Fi:~.Zh5N@'_ׄڶ?U3pș d -_0Q7v! @Z,7aG<ߘ jԔoU Si֌C>cPu|2M4 V'bwL]{{lh,=oBiLLժiiGL~Nf[~>_z> E+WVt指ð,9pL85t4 OQ<2PmĞK^OHtk+W ل|TXXyy'>yqc۶ .Dy $ ig')qf(KNML  0ܑ9C&)^8kg$G$1Fd9C## `Q@(`w.]-CTTvQܳY+FTQ."Ӎ|^h (pb?I ڵ<>O 7̭g@G^JDye%d(grF<h=j[|TO0Ȱ jd; tuJv-߇`WeJ&ېX\jT1UtYsf|:jǎGEw-0nnNaDD 8;?}jeu+tu ?. 9333OO~~~S[WrV֓'nlݻrXY?=NXKڂ]LFQR+W9~#)YJdxYP@@@kE @q~% Ew*.2{:ȄSu-uu;g܇/ $Ğ>FYv+=Ps?7!tf)u:ĊwA A55f@%XLϥ@.s[5]v?KݙѲ%4c^aj8@1Da^Ptiర{%VW* /'1?+kڭ[O :{ݽu+V51R(VHM50Y$0pԨKaYBc턇{{XފM&'_>ujXڵ66%%YY_ 2BЗeq nI',c$CÝ;tٶ|U*H&tQ0ٳNN_fgW!{Æ:-*-i 0Ϥ yv {dh=?vJP(f $b'9p@a8ePQ࿈:]p›Swr53}-ƪZH81J>2IB#.[0#@pY. 壈Eq7 ,Mkzʟ@9?Çgμ};%;'oE_ jV{ر޹ӥKddvKVw @~C\^ٳNN .]8bDf\nY_%%%b\f{xm;mZhڵM&'_FWP  -j][w5eA2ٍ = ABQD%D3PYG\{M'/ H`Ok䀬mYAMx~,ArY1-8R60Q4[MT0$ ,<\4 <|P|s@lpQњa}w e+x6÷Ғko_Ttя=zԪUl,ߊ>% !b Wj5˪:]QBXݱcNJ.yyݹкUU88DEYXxgٲ= [NFBae5iR~[jffHȤIOl痛ŷ`!}2`RTW%Z{rV`)&1)ҊDjُtDL{f*9nμemFewz3t`B |;F@D8 u_*\٠|Ž^-OY&Վă,\lbN('6Gz BΫ=Dr(kCcy@D|W(Hiw[lr= Hf H&7aA@{2ܟl N [IWG$ =dv Tͬ:| |^sv;YNlP|!(;|÷g@P:0/f67=46핰ʃf9;h4 Nwz>. z NN2}׮66կofVHdd$ hXVjwHKۿܹW. ]FJʚ5v{ժGzy5ovmJyy/YV\nabE@aN9;7jR@@@@@ܿomԧOÆ?ܶm|&<}iZǷ:#StH 4Q"y)M+1[v>;h71Ii1 "|x2{W͸*ãZ&i׺U־!{ a-T_ 0VX+Ng/J ٘uE~a~ռZTje'@X|h&'0I$kH6,e*W慨V$ F9v+f5*xyLQˀ5\J<*vo }-:dh2oH >{){0u~ ?!sy0${g캛NM.7Yj@V }ޝ@}@© Mtg\m0p]#ϤJ]=R,N-!60c He qgmjDPGD @L].ck3Q%!N-r]F蚑~fs4i  |&s"vt1?F\m,~'ϻe< xXy%A,|R ÖUƦ56+ 6rxozCk&kNT{@KY}f3W>j(IziSoUL+`Xrbկhj|;tc8:ԩuM8:=PRbl\گӧ_A2DnO~5( PvI$۶y{ѽ{l"kafkf.=rVNqB>cc& >pm7F{VgbXl 7JTg;ٿ#ծJ?T{؄w |"XaSg\QhsϨVw֨mmn+Jtb[ [ٖMB@j y^˱2kR РdKEfcѧP%,xc Z-=DcZ1ՒQfe_u&W #rw U;lcݡܻFƚjPJU(n3nFΕov3774f5{I&y,5lP~

!110- `Yh.>J+iOb ]p'W f;>sbQ"=Lp+^!#>-Fp0lW=4m psX bBK NЙt9)_q!#CZ4.3̸ {bnϽa#{]e5{r7ޥ淚RJ 9Ń#e d0x7 g_LܯIh}ښoe@LB]8\^]o(cDYAzʺWU^ ;o4|+#7wڟQ]R?lU!>(Jj7@kt&bEKw!`  &LOš8߰s\ş kS-֕=6QRDb1>&mjB^]cď}'#`uEÀEϥS,S I.q?S3Cܳ;=`*ܶ м(/"w)/ ~4 V.S-h9|g;+8n0vۀ"Pgk+mZtI@;ֵ.h8jo(pF_Q~I66m[Zھ}ׯ߹XR{?mB`j*RHTHXP[i|kzoMǻOdĒt䏷+by{r!*P_YO<2%>}[s\4ڀTYGXD6hKw-i1P hܠ)f\juɟpU^hbI #.*ɺ-ߚYôV #~X _#!c 0,QIVXxc XCc:75Ӗ"c"r>'@0?māo.v/s d yo,rr/m 4bހJ,!4=8{zJ^览i{/h/0krBR#͋Dbqm@8 VUN.֗'{GH 'O>济>kPWKYHv]O|BY 0986Yl Px9鱟ku6F{N g#Yf h|}@qm֠Ff kUH!P4^:IFu )'!t#P7Gx9h%"v7a#VQ-'%zxtFTG窀R"j45R?u=v nn OM[X0T*JM6֠*@|V;q폷X"y2]so7 o6#-y(ZlHRdƒIDATh3|zNGMh7#z!m&;Ѷް$t TZW}BīK*R]_(PizGf^Nx+_.` mqܜ=Q[]}: A`kv6yAeVQk?-= fs}eR;xmQ@ܵIrHa.ͦ6`Gdʰy˜joZ4 55Ͱyj\N fH~OI2p[,3p|uz VyOr0?+MƓv 쫕n+oS@xuÀOV &dP+A<^]P̰n=y# )ot86'5{qpc _̞pdg^XHsd[M 0]Y.&HYT7c 9{~@ܽt[|uc,Kmͯx6?=Km-wD>*T00|(&[ KKkk> (F:Jhm:eN W֠Cч0b-W@X/)ڞSʈekV͒%.=4)8ԅ Fѳp(rXҞ ^,M߮nS^ >\r 64Kp`OQ|i tD9# V^K$)Y(YqpC|7pEp _0e4\45 Dc*\m^NU@ * vgzAP?GfTԭ's,^!Pܖ:Gfl1U6 ,XsD=~2r%XΔbLJ釒nf+pEys3c7o:P !M ޵O!'#pp Pp,TBpM\ xx1~&CgK =s  oJ箞i>" !Ư^XN@@@@@@@@@@@@hh Ew*bJSeEI@.VP-W "+ꗑx~bٱ.Wv(dk1ȄAf;Ѩf ~tV9Wdmɹ=㣍!Y0kPC0?%4^%{8ouIȏJ tV@#ܴ>n]*A5F<U43{!j9i,tU9 =k=.vh {sFO%ufgs1S?dyEo`;'lP B/"d3߉s붛 dcMitn=I{Hj!oeg.-6}/q{ڕCAܻp?J>aqj⒠)Ey 7(] ^']cF~e6KAiw`=xxkI7J¬E}odHo3]bP'.A--,xGkd/zb 2!3q b p$mEw<le6/B_,:n\5Aڠ =Thd'2DEE,[bB5LL*WQԴJCCooKK뮨e<)*z֭oϿ_T-}13ML33QJc //H$2㙻<.??<8*ncz{D7wRظb6m5 04PA"!D,޽;=32FI66rCqqV51 zӘ/srڼXlbRiժ*/o`aa!qcjJ503./^}-WNpsH\#:8.;khX|VV-ZTdd/3\~lN˿md #y,)4$(<\T> 5jdn^NPTjkKh4w,, =s&'娨ODDܹEM.wr26zRR%$<~\XիyyogfjwA&st^}==]LHP_}aV$(NS||,-b33J6#ss]-)Tq{;\ +Mpq14d??=4Jd:5/s;j5j>/)GG޾~}35+W66ps˝e2BRJJ502"wCCùw?OEz) -ȧyj> Sѕ]m.La>lPhv]_A[.PfhyNɗ%0Gfڍ.K!ѴWW G9S bIHzt|H6?sc OxͲ#.oq^ ~"zwߏX e-T"sr6;V@Z7cvW)EO $3W*hΓzE@,xɧ3]]Ǎ㌨W_;6:z֬;gدgiNֶys  8`mۮ\ͽ}e}wֶk7Jg6E.wrj¢Q,6'gݺ;.^ͽ~}o4x ᑑ'GFp:gpu?fMx(C^}?jQҡU˖7;7.n+WnzlY1`]MZXԯ/"}+kkҲZ5J ٳ͛SRv~0,̆nllڵk¢aW_9368Z&cl'C[lԈ^loZoww]\^}}'O lHΤ'13QwU``ٻmN۶߿woFz= #G:8& Ν۴9w.'ʕU6mzݖ. yǎ֭Zici٤ 7)l:uLMU9ѱcDzΞݼ95ubKԭkjZC'OSR\|T11Xq8G!C8MsrWbik۱K7nptooܼNsǫ4ZYI$ݻشo=1vlTԬY7ݹ}P>}ϓ.]۴)X"1qÆO?U|.,,rB>Jz=U\OiܵkggdDHNNbq@5"ńTz=>~߸gg)kd$ma066 af0ST/_z,[\~ RHX[g]jjQ, hU,[I$rt46fe)ڐt}nZY1L@HfjJBWUyyj5˲ᙙz=w&|<܊roAJJt: ' NNN"Qvv"! CP\YY,{˗:GҒawv==T&yFRIÇii,{rBNR} D"BWWSSYQ$m㎡V˲Qaaz;))z}zR: %Bneg2T 8:w**h|CcȝEVV"Q"wd΍|WwQF)J~Z_WδmlDME"L>-\n {GkV-GG((V$rr26& ,)())bbXô4fYݏȍfΚlxYb+_%rP\5*q',C:2өڼwyoElO,]!6Ƌ.&dzў.E 9aPţHK1$I@c /l&/XKeԼsМoHvzPF)ARgٽk 3Ejx7|vY .M]m๥hՒcd#) X0p8о|qhDig"i߻' '+fOh_7D]V}xC'2>dN+bdo >@Q,`U8qT3|v!X$9x ';jZ#'hoipq)@ڐMG2z:XYh:z}FFQn@;8Hvv\~O+YY5krY)Oƕ\s.cwb\ڣGOt H$/_ipe9m\&VaNTnۖo_iJsC|5׍4.3\Fm׷GG[ێwpMk:]AWD49YNK浱HV eyIֳfc鋻Ezv1 GnKrpe*'Lpv6Uk'Y0\E+l;Z[lRT)Wr O_ t"LFDbe%ZZr3sFĉÆ-ZfM޽Ǐ4s/)INIraSR4*W[bE##_w\3\]Ǎ3'6v_EE|MLD"##A{|]e~\Nz783&*jƌ59Oŋ=J$\#-MV,-42e({TJgQQ)}WdlPQ@"= ̙jd͚yxÆ>R}X۷z$["dž esJLFȖ-[+ھ+'4pH+W6i"7hMvJřOKn?u\.s-ml,ֲǟ}?R%$gq&ևR)!S֨!Vlg0cǞ;R}jLmv@ZT #![Ε:Wr˖={UWos79+ .}v7P*N.m> WݧOJ͟*Ui: 1eؚ5MM/tnaG·z/BެyYP׮ݾ,8uŋ7n#[m{i]]r'WUM2zt߾Ϟϓo*4N[W!YyBAȶm[+G=R]>WV4ݹ/!޽RN$ڴeKWcJJO?[8+kC(uq16~}{\4D"8y{vZ^^b1|s?eH$· ,-?pr26f[[۵;x+;p``D2kVZ;?&M￯__.2ҥɫpyfڶB|ȂҴer?rb͚'^R<`6h"K Wzu^-YM`l0oڪ|y ٷ}{K#GJJ ~Mnb"}ѦͧvkPhpp]Lz<;ecc>}!+}lwRɽ+^v4.r.V[xFEJq&5pN,zfV,ݍR4 Qg_+n `ֻGgp|ؿSX+'UWQ@ śNjbEC۸hLV ήs4Ow>'oj&g{p~'Ofg_xoyD|l̘3Msq3^?dCޜ2n\W_笚㣣)M gΞxe}-7ýV̛ɓ_?zuncӮHDp3?s剉֕JŲ*4+*,[\^'ƙ [6eJL̂Jedg㬬GΜ))_sk8.3ʕ7CC""7;ZYj^2.>~J.f~r WWi7}zl…uHXsܤI/^̛|yۄ 57.:z ryODŽ5kHvW+ Y}z9+>\pS,XsϚ5qfU.66mۖ |=66R*q9|xVٳ)9pZ|}|66m;},v\'u+? WzSf뚹|MsL̜:~B/]ͽys///ͧYBJ<~|tٛ6U|e_7mJIٵ4GkMMv.ukܸ̿s^=bYFkٲ\9M7<ի6:vy ʕ$r(li꟬A.f\իhnLJ_=19vl*IÆbbDj}9˲ܕ\wUttn.>}1\AJrWel,wV/&rY'V&[(Kry׮G>; ǎRE*rp_[+|}$wdϯ[W&{ӧhddv6Çի z}qNG)wƺ0L:"Q6bqPH_I\P@4ddF H9x);G2 gv P0 ` 5-xwΪrEHȂ ؊PDQ P?=iE @tT 0`ϻIr`(PIHp(_[[K@'\ (?aja,}J&Aaak{>.?a+rME\nsO6f.~g 88yԉ;Oϙ;BQ3C[aGT g`)?OjDx}ȇ xpz5br 2Q?XKpf0r|e U~;Jمц6 $pNeᄀ恎 <4@T?DNd\+;L=6ndnv_LMQTk?ZQ^ |l好|% \\&gMmkeլoed?ټ  k~uB۸%KJc g|Zi֭*Zřyܻ*s7[32/]ͽqcѢ~΋e1 1\ku8xŊgvs8w9#+c;|xdԩfrvТ3cc-*}Wy۸Kd_ g\q+VzJq1˖̞xq{qf&YXYWqaqA!www)⮅R(EKnGw1Mbڛ}SΜٙM2qD'VRi0/Ke"-%aHu/R}~?u(i(;yKOaCGG.o)hk+[Y>ZN[p҇ӟ?_$4t\euk//{<.NJL\62r_j}%vv3f-%>˃N(ΕSlCD˛5˿)qgߺTySFwb"Ǒ 5k>UH8GB+X$$eN%^^ nӧ*?-"ݻDFFթ#͛׸qabӘ1u5oY^qulmuu?9_cYM|[xRkRqa?HH[ Ә7o۷j5 6qcIQ&O__${72R.S;-;&c=uZoa$T]di [72ZTP{0KLA+>g 7NčUYSCy9]-r4 ~;Ε'kVYBbRz\ B/MHRl]!,K'uڰǿUȀ[უ5J rQ:Q=T KP"JGwb~8u$R8yCpYD*bJDԪ'. JK{4;S2 SzrHaIITȑ ?%2>JS(@, @j j$E6W&)&5cnM`Mz^IST^:: @-Qz퉬BG'uڰ_#M 'oxXߥX#+4&[?KRlMV)P7PP6K-QzoEzbS`f8QNiïQA=Jker!;hMJJqEO\PǏ'$g'"qc`$ž=ML:t(o#ODx.;{" 㤟m4mJ6j0ff[utFKCCT{wfj%oonHM{wjrɷ5@3:;dUWT)q._iSA*=v,>̙J>!''(׮ܹRe2n2ܼwԻ$@@UZ<}@~d-,"#貜%6V?p .K]\:q"!Y+XA]]7O E g@6Z ={tT8Y$`Z&'y8 \LDi~}ːfĭEϓk9M"5UU0ىdQ BWqڏy)t#%{}R#C7-}uq8D!ƍϟT%ϟƲ,,](9W?}WFF4mgGQXlW#Ϊ ^U(ߏ(9v+rK}dD^[cͿ<| rsz"PXU+I!ێĽgiMQљœ4`,XzℿZv'%GjJETN|d68>#8y5`AȽC˗ȕ[gغuEÇ}|w98yWqqDU(HԂ)\jo64/k>}ZW+߿xE1'3zݪ4^l{nz׌߻g 8u[=|fӖKz(R7MK &O;cX՜Ƈ"{9lL:,Gؓ}RUk'-+~6ZrK3t.y=Bz[v ;Nَ=#LY1)"42}4T*bFbJӠM4/ٵ."3|jZh]a|X x̃)Ӗ 0VnZ(hA]Lׅ j-Ӵb-g׏_%w@& }gg}/wOx3'27L̒?0H`2:invki zUW3ZF$Wb戜 YhXv"tf7ҒSN2SxP-e\䓳dG2OֶC zH j}P5wtf|dK98"=O֥\-0D۵T_5+**wߒgdIbX&׼ sz;+FA-EZ*< C:9yZ7ٝyW7?\4GHWCM511T|v{-f3m9T{Jq&#5-^_hKoeRJ<2Mac8[" w xiLojVZnֳZ鎵y=R6zvUFjgɞK\SzGNru QzpĪIfHit=}\"01jif0tHa@Wy.1Jz0HRd=kc+j cD+P)uuqav{`!fSW3 [$50=Qn-iݯdx;43pL๋\\뢧 0+گC '9^;gV[ɔ ac yc0MES$j4YcT٣?KJW'-4%& "}|_̉<8\WR BHZ\j+ж%R>MŻo 4zx>pexZH&ړW_39w%Ti>U:y21ӐMO32^g?{{֖ $4-yzyx=N0$^ӌW 5ҷ|Brf.2$@bR"՗ g._no_ $o?U8?{VpDtr%%ҵ@XQݻiiOJ33CTRi*^efz{)H|JXT)q] ~=58;%$[pwѩUH(44,XJTN.)5X?D<.~ע !rr5խW'Ed8^dǍrE(4bţGJ% H29rd"N+>Dڽys[`ج,JȷVzXQ (qHӧ+DBQC֬Y Wk4% lL׬yDܴMBLFQ;8 Yz{_I^_(J4EgNH^!c4hw97yg.rb߾K;VduLĒ1OΉ ƿ{HBaD0OQN)Z" G6a:W KߐzEWvG dHhZRda⟱(޾+K DNV*9N,![ Ұ{!oв.$%]^~ﳳ~`<,,@HZU" 4t_THH\}ܹ޽e Io̖y*.eR1S7#p*"ڲ#$4.e20ڷ/@XE]̊ HI֞$B/Ӛ {йfv#9K<I>-y{>xuk׉0H#1JMjќ;Mĭ(A(<8/ۡ `oӽG>ypɻn߯L3E덳h#*<.H BPDI}E%IlnVܟ 4? D(xx0STK$9^SJQ  '4öXzi6nԷY ) = 5QRu,ֻf s#RH_̎u`J+{ߊ`0<ÒekDAt ߳]TUe៯a:jxL 3T@Up5M.>NPg2懖Zn.:-DRZ0j5LazDGzoFg>ILx|sPxB*7W-:A}oaPkܶnẒ ҅yp-dg%B $9!Xv֪N^՚`>xPlt,zRoŮ۪嶇UV}35c&膞 o/G1(!l/TG4Ocvѿg;-f#ș/5Bv؊&:-ɺst׽!~ ,q"BOLpFgױUTS ȗD4XJ]-& 86P(g8&RdkaL%]{׌xRC~!k

5rIԊR"ႥwFDii dX{,[ng٩S OtHGҥ(D /߹Wb)8L0tlz6vur)7,%g@u qTߧ_O gli_2rh|uƑj^3ujCR @--P \ا7VneG ̘z8uҗ*wJIS*9YQ&diW93ТadcCo+z a&"6u>6qjOFvFGʐ;f^֒U`RJAdA=KF՛N}7AHƩsq/^5HtTc/؜;_ro:P $"^؜LI٣fՉ=g~gRMKߘ&Kw!bW n9Z5k[wҁO{Ж9&JYU]|? tUA&^e˝7g]RN 3:ro%d]3j6{a  ZHLV7loݓdU`PtO*gFuF\afxA|Zԧ9!A~qEO8Z˴l WBC>\cMnMPg?4<—A`^eGkj&KI0| @ V:xDG|5=fsD6 /< o^Cdx&JS;u_ž{JԪ!3S74\lcȂ_sv'QIJ͹lsW'nG[^jhlRӬolȢx !,⎇rZ{n:sƓW U|X4?šb:j dZlW8M&HP'%-ؘ EFds#Sʥճq+ϙjw:lu[Ye1Yުva{;T-MP#]5 fyXn*wDr^x!U푞>~z=];\bDZff^ - @]a% |.@D 6NW.~cF%bFپ]9 "~w?H~PeCM:gO?t%T]"`٬,9N.'P''#葕?hѕZRH׊#~&&~Xvvzze% CB)֫gn0Ά4MS_g*>EIkD *kNhQ$bFEef|*e]yJ?%puA[ХJ򝓢܁de %x{ȲwDDl3U%9&[Ra{^9qO&"hY|b0uuW&48-jW:Xz5ioL}{ m~9l==klIO{%&éLZξz7;*ɩZZf K9{Fw&c˧Ƞh 1 ^pE܉txuV:ZiX)BNgWڅoH^/k?o WG}t2E:e116כT5:`k-lcS, ㎿wk^'jJC( }\0bii,{nb#8)/K8꾾ᤪ=uS'؜[+pJg ePD/c3-oJ~|Y,Yx?uN/Sj@ #샞앱D5=$(PP=$C ]NTb)\F#de! )e3'vOMsdg^{~J]M[A68SFh TgͨԆ*q-XvLw-~N+_[ޗ̼Pg?Fy9Ό_@?7`T6<??RaVDK:Ԉh,T&A-ԛױ/r,I]xLx8( {nf`VzGN^u yVuXi]Jzhn~zgX#h~qiT8ޔs;ɌMg6kVaVa{Mfv%dEYX%VjT +P]M:MK@4nqݤ c]37UG䯷0PI% (|>mۀV YY䟈D4-ZhQڮ(Pܹ۩fg@ :~|ݺ"QgwvP煣j(˲D"$fKq ]8: Koz~]ɵk[(Q!b`vԒAeu޼۷SzJtt mSKK(ѣ 3ۄݳ0 C2MeRZUNayΒ7S;!Gk.f>ˮ\wdZh _A#O >#}N'6<{gcZ6^ޥub֔ $P2!p[7S,:Qjy`5c$ 4" ; R!~OTWWcU{o,Lچ&c%eiڛd5wo;yY l߉O\/g;`1=Жz lEmVn>J(l>4#d֍?d|Bf`Pmc&cX!u([_ɝa#GEE$yԙt25 @Lk(Hq1qwʖ)o#WgkgTgW`SqK耛UF]]Ví>|&Wj+q?8*z~۫3H !hz1K52Qo[r~Muc8R \*k)Xh?mt.5o5Luwk;zB`{+Fvfg6i:Y_Fx<9C-i<\%5gTC,Hf%'J8+~\vׄ^\nwDA!N+Ait*"/CXuŇ&6(TWPqw\2ZW7)" }'͏hyoFs} Uj}\[kovK>3 L\P@ j ("w[OX[m%PlzƖ.a?# MEs+jH7qt_Bjs~\Bz'DD ;s62[_{fuQ5cT/dlo ƽ}34

9<<x -GnpEx^9 GlL?>LG8J=_owWeʐ? c#Xm_goM,">bcz??>Y^zBCj']9R)Vݤ}l4[/Po^_ߥf3'O[ݔ`Qnٿʃ]ٶƟixv?Dv8o%T)( i-Zfgs $d$ YAAJ1D(J'IOO(,L."^ i[I4jĈw?޸12r׮/;p)]WW )y'ÇϞmU%e!'GXߞ':88?جXlh(|sHH˲J#-M(WVkȐ5Y6>+ \.-e^::bLLLd+VUSrrxo?˷oo^*us35-zW̌avhߞaSS9>T*ߏ, 0lS{ִz, sԃqnpC}':=ԑ¿b&6b#˜!=7"ݛNoOh|Ad5q5,^=ӻ#3o@w,0XMhtD +΂]կEufj;i[\V&jC^ς] `P"\bj _ K8 䍣@0  Sq?‚bR; F.`zRL[V ~GG\xsĶjqm|̯FMa2ZUg=wA*Vr 4wح?I=좳C,;A:be,5zS_S#~6!MW -q}@u'Rr>Wڀ3᩽enڥ6iNQ̟ªUj5͹ka98!>V (HGVm2tTfN1IE& K{4>4twUN`+"dhZ(ayİ`]pG"W'@<ٶnlOh۩?+6VLs?yܧ-vb|ݩ_?QZ=n&\@v˅Ϗ]Ȝ4 *1 $'U4o/On2IZhoC͌ O RALs_%/@jq1l9|ڹx߲y߾:,Wt մTZѐs*⼕T߁+߬c"PHQR%&t(;С/⾽ڟHkִl),^ܤX\4Hdw8nϞooP(u;y2'Cِ5P|kB Z|i1ɞѯج,?sr֮}DTj hz߾N%KHъї^F뛘DYMmt+5VP"ԇV/Nهf?6t?7@?/RbD >:YR{qTw-m+/N)iOs/z'|0j eOʱ`i4}A/hj; tRh &1Ax\NGW##`V(thN'bSvj3) FRxn"AX6H <<` HnQt}t"5HI1l}Zɼ([6@;F=WTFGaHʢWKQryXXaa Ed!؉@h` UJ%\Ӡ <,~}:īZU*(J(T:thk3DbSȻ*W:>M5j$3S cGtEyaY822 :8H$U_:;f@\ᡫ[nժdvvDBVR:$ izpvL_d֭pfUwܿ "vT؋JdDOVZQQ0 .] h.\ ҔI|}{_T˖=xTWOCu2DwׯU#G|}W {tv h(6V-di]]?rkKwޥb\f3RSg=p0{n"jî~Xr: #_C.b~ϡcL޺u1]l (-LQP o@`fR2se7';`^8LC4KyiBńY<8e7Ix)i̯KL*pɘ￾uZ2KI;ӢJ*OՏÃߐ}y!E Oi _ =[c3T,Ģ߷U+~F[z>@9u,z#m5o.L5sg)آCwUFZ|cu`|g2 pޏ쫃e8e` {:R.:"4{NUItcEfRƂzo0\ﻤ~ rgAT(5uCw9{Q\yODG,-hGmjR& 쮵zcUBMCpw܏ ~02ȥ Y➓I 5$wOo|Y:w cb0Uu,@@XiQ̀-t\}H4H9: 0DOUBK7িI߾|Mun̮蹪8'JdL$21Q*#UV^^vv``R "h12^/&'߸Qsٳׯ #5iA͕\կ/дX\w*z>qq HHPTIM2j^|8'ӴHԱax냏Ovb%2E%>zz$b~d-kOF8XRywjbH\]izzDN)S_W(_ ZS%EAZ& ޘ,r%$J)ryq$^Eۂ8w~Fڳ[V-<](lٲJ(_?WW%tExQ PWPUl{iCt=$U.gfI7x' 9e99߃?+ggķ6)t~ՕZŤ~&ɚ?b$!@b*z`ؘ3"wz3L#i΋i9+& 8;uJ`JZjN"|yBDKC IRs(S,D1>eGehh#" !ގ.Eo`Pژ6I9.FL4ܤpֱ?-k2ćP8QC跔)]Ikb-ՔX !lRumu\MkY&Sݙ)A$&)_BF9 1C3ćuK8~3RS&|wlD]uvNlnN pjCM-C,%ӌʗ30 RNDnڀ. NS@]Zk=G -`@Oo2M?Wq^_Kj7.& Ka ]τo0sa6*kZ TRVҚo(^M}{[U7T,8s`ghn `rS۩=Uׄh*kbҵk[# F'(ZJF,,ԴKO.Դ{l Wg`3^ '֝;iiU|?B\ngflf4T.99qEAzgEAׯ33}|H3|s޽!Ҿ%%Z+:[x<ݺU&`h4A°a5k E$qOVJ M\Xs-::3{zucܲCBu̘˗a.\?uDE9]PY[`{N+Zzu 8oXM?tuf%HDyB&,~h>4c)#e敄LU"@'|A/ a>nc}jkw+S䞴_ U4Z vf]12V@oS 12{A::S_dD_niJ mj,b6S6֠9usWOxS=ݣ55>Pp#1OW)]  -6'Q;ysz?2J ҁFſT9` ݉9F#0jݸk9fQjI> 2.c-{4Cghz݌>BS4A-4+vh+ijF`jb'"W喞R\NZFpoZ$+`,JԮ) k;.c\pGq&oQ-}ygΆMs?Y> ca',QF7jqRY]hW@uϏvp186wͪ4j78 Z*=fL3,VGx)NBwn&V&i0|kn1?:FldNe86(šr5?W`1 z VhOB?CJD1D;ƀeT=?~\ z l{J:isrJ͛>"/Mfm=f S0 'O~aCN>xyUL1¢_9UMCDhTOaü2YժݺҝSn݊vnZڣGEeKSTPؘܿ2LMdn޳gEkT>}UFGܹ'/Yf͗PpBqjJʝ;ݻ]Җ-n{O+z}mm~;1ն}a%}[\"-Z>]tOii;K(bl[Fo_~:=,)Bۆ>$>C%nxNQWٲͫw2TnZF}&O/=΢9-j KP{8#<+L!ۢnq{F1w\+/xL/iļKxۛc&sMX'XL/y]u~7]hz` qy #kp;c\8!`=p$Ph˧m<5AEokzstU[X#'^z` I_V߅A&+ Uzn/=FLխْ^-t ]^N PyjmLu=H$2 zs,45z `BoQ 4a`C]_b猗-} ;Zr˳2OHUK8o JfT-f 0rĠ&}iFuE_G!aiBa#+7f#3Wr5٘xE|pZ)W=PيrQ'>H‹1\6ekbzc'ASm+z~* 5\M9#+@ss%CЭ\paQOQcƸ.$*7>>YY~~n#"肥ĝ6ly~ewטoccWy>sÄ Æ5nO8mk`Ьȑ,aY|׮ < B uhkW^ֺu36n߾Tߴ]kLѣ BӦ 9$gBעJ?sk{d݌^^zze=!CÆEg*dS'GǢEŠvլibRؚaY>|HI)\MFjfoX ZZB!EJ666+srJ$͢VR vNxxa+\O&$] 4ڪU* CV{Eɽz^dda<-OOCK/h^ѿDK߳ŚY/cs4|Kn?;! "**iħu`3v:iC/6^/ wufYu ԺIeK 5Ѭp1Z T)ҪJWEz{:g[fɏngԲyCV2?jJitpPVvPR =x}h:AD6?o2)6nfv5 Q:yHmi2RjAՆPqԧPzсp5]QmE$PP &` )!Je90Y:K $Q[iڢc%HB7w7!.ʙ= De R۩z|+Yõ->P/Zb_|!obIL\A^/U OLClRJrJ<Zh=&Rf)j:sjne6/6f7mY-s*ʤi(^kq+38ZS mBFfjPuj[i˂:Cw ·O awcZ9z@0AU֠!]@XW^ɼ(A%EbR0hWҡw. 4MC|0v9;]K kqfM--MUǮ]۷/X۰!*j׮ @jUD֭E#9¢-[U[aC]zxJ,67ظ][V hE 8X. ;x0.ĉ"M ˗;8̟?n!zz_}@7eQ MV9J\k[FG[,w?^0H&Ϸ:jUή5~СSZ[i'/塡GQu6:PHQB!YU BE.MwXj]V&%qAAE|R@Pw0NOTRwA}TVQ9tURv>+*CIQ!x|``as-Qرu%ON.xZCYS3$ ͱ΍n|[\T1j@M`2!ya]SY,:b)(ztopY7>C3Q~J='ç&i@FfZ*Ifj ExR0ir%7lE"SS?ABC;,g&%]jc#XYmbҹsRAlI- <=324,$# rb "1N{R2ypkc,ޠ,R;݌gS 9e +IQLpģ"\V .5+łNלn߻>k#(x[3=GbƶB\Du|\)Ρ0ލfԞWҸ]8(,;jU}/gL?0klfx9c)~VljH`'>dxh`{Uj4j@&/E6!㑅l+q h3:XPۘCi"0չOS ~ns S)V5EU+Q'Ղ@lνM{kG_Ɖ5IכMnzܷ4\} xuG >^[DEsZJ/ׯd˗mܸ}ʕFFBaDn\_qcYTkd̟bqV.reDĖ-$7AzE&~kSSȈ|~}" ::MffQ}ؾ=*j4:=}P } H}zzNz::j MK$..ZZ  @woNRر/% ͵)jގR]F{>)e{H} =}ZMo!Cj ;tWf"PRYv^Yhx+(Iծ@pBPP~afƍ5|+D߸3jӦm%̙"~wzZh;kIHH2?. ܹ@G'w" ao_Nԩ׮)DEeBjyxp~M;žlr9'$T*' I`6?Ct`Aj uG0q">i%nj ,PAB2j˨a:wؘ) U!Yԛq9!T ``'ֲoU4/XǺȦbzt BW/ fTyxܔ`+ #7/!3~Tei/ Xn"jJWhU4jpGٲ˓@BM2?4tm݆qEC3s,e,(/G^-\цs×EyRK/pvmZ-pC8v){4}TAnl XM%v|?zy%%C=VuJ,&$rg14nUi)mZ숹6x~p.5 Y#bAZH&p`8yXC^U/̜^G9Jht9nog3 5H,c mibšgGNVO"NIS\x􈧍tC݉-,V`L߄ERz(51*OlD8E[ J&q\"ooɯrthA*Nb!kЗ^@'WOj.ܘSQ.p{a;5J,^7Z88th~qM~e@=.MG-mY} yˣ[iQ:w>ۉL@ Ko-W?=D-@<p= vo=֚+@ z6 M?5ᦨ6#=>|Ko6@)7,^}[skoz6  tp 2[ZcR%%0g8K1<ݾ~~SE˃Ϟ 7mڅ ׯzm̰0"22&F{o_lc&̝ufwA8\!C޿2R6U&L7쀀Bn܇g?{u ^h\)P&'O?k֓'^yGmV*Uz V-to_woP(c \\ w(əwJHH[Fթ#mko$Tb%^^ XP(J{7"hdfڵMM?(P"͛۶HUsa +57 ϸIfȄ'Nt.yyY[3LIgH6d+[Iؒ /ܛKz~}V  t}rGJebbNNa}}I*]U+A_kf;;: ڡDR_W\S10H(jǎ%ccoݹ5!P0Feu!+MB[jBoY@v،ƥeMD=ĥ: ~_4:<uuȇOnnVժYrɍЃ`j&ՆZF!DOCB_\jb^}u`(Ug >X|ֵ>|dչ`R;,B ш$[NMB Bȏfg?%T];I)}Uh}- U.Pqf,5zB.fkqF0 mIT!w19o>yhGy>Wc{Mu-z;c-@F?غ4c-ׂa3|TSW'7f8g1}s |sԩ*ZxNn=E:PXvoŴKwƴx:m?IVxRǘ1*-Z8Yޮ;cIzЍ xfpcN/ 寏?{7lԌ:؇8jPXB{XSGrlCP!JPj4Ѹ uꄟez&H:Վ>-Āf]俇ծ6 Uu sx'ZsoY7;='%ť/^.kd7~4q< l6Sz_ ]8 sl[sRI&vl{d\qqCCb Y.. u@T^/Nv6Zu+ ײ~&uhkWNB 7TőM{?;^BKkFDر{wLÞzz ԩUz*  {dJZT`dRS>=tӧ^=PpR%F=kVpeC@@NNHAAKI$66^^zzZZNNbXLQiiMFYY>>xAeOFD(ҖT4'O&&^p^z'y*>99AAgcR,퓖 -~}v~FڵZ5`߈ݻK.h4FElZB&&2Eկoa0;822 |} k\E{)Ryx4]ǩE*%ًqq,qyCȒ5@>M1L䛷ـf֪ejJmB*, H$ isXN XZx̘˗ÇtH.oW/gggOgg 00%޽KHl˛T& )8&GI*TOӾII߆KGGVWSDǏYx8\xVpd7n|>_tWbB;3U/΢hZxF;|jVJ]xv gP 58o[:xķnѫ]1g-FpN:}#X|Ŧ^AGH1%ܵA,-6 K 6 i F3oJr-OI\#6ib>?ɯȫSt*@Z5Mג:F-v8`PLцdIz(Vө`.,4T |b{$ù.^^Xzv9s&\?-YjUZ5jx~7K625+Aˆ2? `( >~?S_qenP7=v=HPT}2o9_ZҀ,eojr@()XIAĿGO"ݣ!ɷnϼ$ X%KO,<9*$$?_a(΍aa,e\͚հaf" %mloJm˗%ɁT…);vk'tߢ-ÐOI͛_P||9@Hv Ȇ ϞTs6jTlCvV@@>?& eIdwHHxۣQ-Ż~eEj6CAk6:gyK9XX('\~1>4&s,"BP쳓;7#sh04%lR$ m"33K tGQF*[ŞzoEU5qmQuR+T+^J)oP7L%ybn^ܶԶk~M=/LhknwDz%9yDžC_`\SW$c/^5(Ve_={`d?͵}*:y7{ɭ4U_}IϨΎԜ;nͤWI1I%ZLw($|8k#pco9@B'GSiύMXg55RF#A4@ 6kS2\EU$Ȳ{A7?..8M즬Gv'Y ٲb6#4ZmX*w%J*`WTEU*32ʲm(GDddpܸqW(D $baIz5$D3mH,Or\3fܼ?YYEQ<oިT[xRե_aa7drٳM\\AҢBVRR=tr?*fY ikDEs%/&]P|Z+ ]fMLN9qO0Nv!y[33KHHZ v\~vxo>RjzfTDz*;aq8oZ"Grn]p!CACC aHg@,K#cM55w5 wWaRf9' I|HtTЖf0Oi7P.0(` c0Z`ЎZ O,  -IՌ3|Q (m:Wsq|ԓA28 Nw7SJ ,{+jAZ+4i91kysȍB/eLV53dt)&5jN3̺V4nSkn>,I&f]bn6mEIC}金Rp=c `slfBV? c6jdDv}V @# 6Zu#v;jQA PUrkʑWy;]m>YGs}ԲKj H9n4qcN Z?W13T{Y\ K DAH nQ͙4fv_bcqK_NOza'|)LZ]idCd誹2pY gk(Ś 5?.໯9J>C(%p› LJ\}ŃFVZVS(Y)tI7cu=MmF?׼]{wFUCe*xuǾxr]\1'6]eb8Kvbf۞ ڎ.-@H# }8_]-55',:Y}`M:`8p*qEd CH z # }/?  %X=F>+g$U,ͩ?R9Pgz'01uG2SiIawWmK :L̫Vkaj2FmbE֪G˘V_a!*~n8&[mST]O%TRI%T٠>v{;M$"ttXgY޽KLd߿hΝ TIsԇj5 s:mZ$ MQ"2عs;}ީyτ(:e (::ŕ7O6֘'"ƍϟT$ ^^66 STXTKN?W2LPPj*5 r8RVllV yZy ~ʧOg!"PPeX+L޽oߪǎѐvmB? ˂SS9p!(Hy6>eIAc!/\)lYJaAn" Y<ژ7x| QC($g$⋝$r2=~Ųi4EV, $k\A\)Jx,&e5;z4'{j 7IWrw_^w~Ŝ8e/siPPI(5fq&]v꿋kzt9 JN @Ch j4S=Î꽢$5JŁzC?t-kQ 8`_#m-Gg9s8%Ax}:+Z?JrU _q 0Q9#5#bQqf;uBRKzA~cGns1>(N 7cG@mQS tu`R4Uɘr@n|oz.Kݷk&[EGT[>TKM&|^^y>J0&a<p nFhЍ?j|3mTp|<׃N"XA> K+L7 1Acң6>hQf`8j?ӛʵ.)s6xI|w̔PlJFgjI \c>&H Kk+ٗH-rJK_贱jIlSw~gT2Ԏi{~aKpqFqC֢ VsQ/17Ȅ\ov //TYԱےTZb%< >DLcvh~%+]2; ik 13zיsXN/}ޙu>M6Y gq_=3'ؓ-yh5|2;viɇٓdq*9΂FbVU[B0 %@6_5~x*8Ǖ7NםhDgd3,`hr]+qZ$ v@|'?Ir]QYs RώQfjS?p@Wǩ}3jXJ9m~y,~#_\L PG>1Śh~ t^Mvgwod =2&bDQC h8N /,9k7np\\\VVBHeۀgϖG;;1FtI.'If8#BfdTmj)(.] h;6o~˝1/Msrj?~{|{zz4mcKQd,K-7~+ G䫼Gsr4 MKK ׭{T"$lժeiMK nZא#S!b׿Rx__|M93 D)㈠!u{:8aE{gkUx;&CNzS=9{PLUE (L @Ck6"]Qޓ 0.[`Ѕ ZpBW+Ez87I-j5X H1-ԥ:K=ӎއ6brP"j?qtOV,6Ȇ5}]=m%[cUR+eoOpBJpŝ rJtEp! 5:qچx nj_b i3}j:2wDM%C&@fp"6x w,-CO ݯJ*3z41ԩys}ƍ" ?@"FF*$S`E (T$26Y9+);ddOQY exERIY!~\ JMșE9Dy5NL$moSrCndGJ8%S͹pZ-ԧNW7!%&MTû4+izg*D؋01R%NIQaLPPB@+%) Os')c) 72NU`N~:;-0Wq;?P*?s%<;iը ÎU֖520#f腫%"pXaݫl.ֽ=X:/EBS)wJ)^?BA8'Mmn~ءۍcUd&\tG|ZqZ&Y<5Zsoqf5&\4K IſFqkY?-wŧ$t{w$yRƴ^Y7M2XHEMֶi;F\F;R[*1x"2$wXÝ=+j=^ ڗ=gͻVݴUFkPꊏM$)vd/"p&Lk w40A/9,7⥿$h@˳E^乑 k#jzutDӅ|2#: Tx0ؼ!b忱^JNfEĒ}gFއPt@J7?~RRT&&4/F1bĈ +a=a]5[ѰrRUjb" f̘3*>D7nE-2cN8)*dU#]X)rjzJgnl4tь3PN4Cqg@s8 `NS;5UOjc<|0#PIE/4e" w;Z,: vTPUs^+Fl ƛEq~ Gl l^ \) Ǒӟ "8j b"[$0ٮ%k(򟪅OKg1^UZa1ϵN*ޗ\]O1H/lPflUx=18qtri9'8'gTz#T48:P(:v殬VGeL,ޛOϥz z<˖yNeee~JkVjG@q_b-ͺОq7ܘm%{؎gUl6kwO暌sRU .WWL%EHhԒMMDɈ' &VvBu I{V;9:ϻf[Ƥ4؏9%N|B{|PJsz9cp+@|1@g*4}BWn@aGS()W&r%rT!T{ v@7&\p*jC= :fx@qU5RSR/p|GXEbw2X*up.ow@~Bk75 #:Ew[K씙8&(MÑ}1b:\.!\nRi*ݻv tŦY=]_^4:#MQYIİeӼlI!bOǐ*uW߼S$|kɜ#s8Qo\ihȻ#>-D  6篈e軨} skwYyu3LnEVqH %u~S7~1φ';,QnczN2L)7Ϥ)wW2R[m΢n5]i7$dWU͗9_p(N-m *|̡Yu`?# M6&<2館5V0a.װ X1 {#di'-J=v!7M\I$iG4`lBnqjuljZ$ ${wun?<';mS;_V}"6> ˮ ?|yEɩ0g(ԻV=8y @Iwo͸).@;xÂ󈷏jS1Y])*J3W9+7^UPM;S){_`@3L^ȻiEcJX}XS٥"[("x΢ZQ)u1(11%Ɍlb2]:MwCMx*xcEUmYTqMmܡG0*G@԰/,8ב'xYzE#هƘYg8> O}+d-s)Gfp䝁C#ۯB7rL|ȾFYmZ(hvfh uy&{W,~3ѧFJ@kC ]nm`݂Є,CMV!+i㯄Q op /A u%,T #-$bcדnڷҍu4o/ORrӭU=*Si&^ߐ9kb^ĕս\%yi&̦X4aO*.W `sW~W[қ:M~5k}аM,u :fh.`1Kq$@lcw#sF<kv|khNAFSmbMr+RKk~<9ikd)܂m?soԞ ;ē.EQ:`5L皦CZF+)P=,z:J9fUn 7?bĈ#,,\3V,-4Ʀ];c5_̃zgk|}b\,-y< v[Dþʇz= jujW Ell|RR%%h4j5Mk440h+ʶjeiٸHDRY` eddܻ'<~\RR%&Z#F1b?tU\uSf<0)gCwF=ؽgE~\c჊%'v%̷.oy?GI_6[_ =Y_-6|cNyo~vr<.>i[uGf)Lmޘ?5S|"e|bsnaV֡dQJ֋Fq^ c`']l_f̢$ѭ9UP&p$r.M&>ˢqs~~)XG60鸋˟,ey~=G;? C N=[K)5UYp{P$ɯȺ3">j,x=iD$ƧŚ6 cIIzjCiЫy5z=O] E^qRJ,0nU GEyp޲Vs3: fs>#͞Nzh(nmM-s=6{ttVl֌\vJ;;+Ym9.o"VklA}LUD7I]?5<\f/]IH~KQI'/'vmaɟ'wmQ=6x)*P[],̱]y7۶~fPRX {/94Yv.פv6-o FZCw2XpTfEfr&7tW2-.W > 3='}.OsU_Qi[nMIn3(NKЋ%*Ios_Kruo>]O: DUR3b29)w6u௏tA+RT1 >*1A'jpE@ժӯ*dНqۯbSK^3NH]7nu˚M^&۸\pn/\IO1z=\N6.A-%?I52 L(=l]3|L{*?"z$|wȬDgpq4b|a1bVXQ,Ʀm[?PHQ~&[YxUJ$O/tRE"r;4M4-d2p8fffffyd-G%+n1^&$T))lW<*#qw\\BQPPno2p}lpիCB(c#F1/ Ôg0>?>i`5Ǿ.Y ;$|j"-r)W%[sEy<4!߃KLg ;9W}(\'3 ;*K'o$U 8=A/hاVoų_L7[Rܷ "]SsJE9 1HM(߷dzۦGҩPMF[bB[Lh9RH2 t@IoUN);8T[KW֢m Xְ?,~`7 4k rEhJv L`8Уu褧&[8ZZ ߼mt±76 k!H!FqCGZSBo5AUЖ5QŲOm^*R$+jWP8 וLZ[~D |T}:}rF|=B$]응Nz'zr"u$ PaBO,}BH׶+)p}""xaEA;!U0Ja]gفm͸G XjzW@HLo6M_;^D׺ʼn7od+هmoWLAe` 'TsW( )Ǯ,ll{of=uJ Uk?[jv*]|~巭 : +wn!pBF'l*2xJ3jQ1&9C!Nh+oN\x.ҁ]Bǯ}' Loߑ< n3xG%![w41cw!*44 nc6  "vSK7\ .hzKJ ҲΈ@@QAuak۱H Zcپu|H 45R,Yf͚58p@NNNNN!>vرcǎ9rȑBP(~eV>tv-+?}643]>jdaa-*۰y``NKh22dGh}%W2b1wt*!qqo:Z0..[YfĈτ0sNDIH$Iqm|51Kġ̫ 4A)zmxe׫չiSJa@7~D6j28s}xR">?g3Ϙ%+_X_wk\"}!EG؟ݕ*/ܜEcJ9&)_Uk\jNW246?ſKbM"`ZR5fӳ@BwCzӰS5p5ԀF4sQb?#z~G̍i{|>Y^JQ;w8aTGi'k$&騍Iد^Y&cmܟcʵ݁9cW7z.=\+Rҿdz$ͤJ!n6fH"9.T!mEE0 L]U19( c fcu`Gq=\LO 8Ҍ詆dB704.6KI⎓Ds6^~0% }JHU/ȉs"nlJ!|M3sfRP"!oʝB7~)R'q@/ $}a W8DQB`fWxcs^g}ŞbǤUl:r^ J8<~ Ĵ).Ǜ=to̶Vz- #df  1" E ῐ% jPhb:r+$3yl"1jaDx߉ۉL&bn'Ȩ@uXt`=,G_򣄢UZ)jN/mgzN2s4W5ن~g>!,@ b'N\_*kzJol 1M{sfЮJx65@~zێ@L!(P\Q>`Ђ/)lmU j",c>Y_^v X{\ğd^MzhX `8fa^T16M]e=кWRG [T]VKo7yLτJԻ,Ao{ιѝdՅ[1C[,^眷f7g'2Em^Cƽ{`sGmYbH,88kgeբE۶VV͚s_bF 4 @$(PiK};|GKK.SFFFFFFvСC))))))|>绹ل &M4i+^rʕ+666666sDBuYG{f6ibaQzZk4FӫW^ziӦM6+W\H$Dop5<޾W/v[TFDYiyt3#",mkd~yca 6:-C}bKk$[;^>lrҟP?0La$Ir\\&Z|~/s3)fVe{S~!"B/Pk7X{2;'iX+Gs+2$od_V+ڙФrFSk& Ú绑/ڝرdiɃMܦA .=_?ޢZtG[/L@19t$㔾Q`fMx2t #kְhu Ǵ3"R 1^ccKRVko% PF τ0Oz<M^nʲQ&pB3ʙۃ\{3W"hUf r-FEK9% ̙͉skL,4'sX"/\+)NO3hӝ;Hiuڗt Rиh*AU_)פڊr pZCAfvɞJr=ႂ: #s"4} }3sヹroqOdy@8 a_Ky@+`pl5y͐7d^U|{򒾥v\4 =}"ߙOI~݇SX} 5 sKodRd3mq N4c ,& )wnδ)?m1*|}k%\/N2Ώ>.%N*ْGv,oI;njW,WOEUt|P0qma/>ʿPѿrGjLl\{9Olq%*m3^ɌV5-<*zZelS.n]PYH2@mАԇsVpߔ`{K*0ufQq@+( %J=}>.Zk] : δ H'}¢7.7/NR/JuDI%4ۑezSX;t7V- & Ql59`TYGp47 xVoqy mf- m l38nl%av |eֺ߅rL\ Woo+쨕 ߫"~m0,<7<FOF]WIc=^h 9SتW;Ӯ5gp(f1[7]/5gɡK*un+ݫ6_1莜]+F1휹=ll:t^]*p|  #7mjaQK7r\B;?????u֭[̬PB Μ9s̙+VXZ ֭[nݞ={ٳ8˗/_sN\_E ptdw-.\pB++k׮]v-ZhѢ75hЀ?2-]#alROaJ&#$,QBŽ¿BQ<[7bȿ+Y)df<ʫv&E;v\%'Yy<o1,銩NJ4Ց1ds3̳(Rlc11@7 >vW6v?C/BtV0teF4T?gv3Gx`|aVVlzQ-.+ bŕqc So4]x-iN c݄E78 fRry_  Sô-wx3[#LN[)(HdBYͫ3 ̭G9k2ɤ@4_QM!T<;\127/ (s]reJ9#md#XU^8ihzL+x|\AD=ц{uB ĞDp3G625 Ś[kl"?x0)Lm]Og>@-tg9}/w؝N7d3_1LX/Stg3>Fn9kX[W4|jX 6fX4:" tcq;J֦V9)**zz.B*߮\*PØ1$kΘgB{aoo/F^%4 :)}9>[ę>x[G]*uWgk?rm ^_Ra.:|w1uKñ'{uo4x r.I1扮=+i>'C6LU!d=WדCʼnVG\T.+lƻ 6ڑX)ri3aNsEN:k Ûvn9@>~֖" ɻ ǮT Z{T./Ƌ73 ɭN_+(=[HK I+`j;ҙ òei969VjC+P+=IG=I#ntҴꕰ{ґܙ]]L }ǟ? ΋j<`:v4 䕻*.ֶnipŻ |-Bp`SE 3=~\tK>bEPPxx˖e!#F7\y tdcӺ5+|u_T(Ǎ9c~Frt0o_;+eʔ)SLYvڵk------#"""""Ǐ?W^߲BBBBBB?~]6}Y4޾gϡCY{Ǐ_zիG=#W^zoJ$@/_EE،07o~YGC?f͖-  #4nܮ݉r9gb έW}Ggͺ{W9z4*JTF|=JJ yAB??~_75J)YFZ.\vM:s%aVٓaZ;ˆ*U^իW|/[s?ךfGMQmήQ#8:eR) 3_ӂ)q@4/eZ((a MYo FD!UR8ӇZǭDu0 SjF X!x8h +Q@9:>ʳ"gϮu@0s@ "͹A=P"1NO3Lo&J80]=΂KeSdO;J u | %vb$J(d\q0 @,6P4P\|lR - =1`l#BjF'5EBk3_g!~4yγfK,PdH?-sU1EEYQ@kp 7~9aW?A&<#$J ⮤Pt@_:d8Ig0qZ7W#k3@77xF ' Ѹ (rEM8{yCt;=Yn F[7|n^F#Hcg+o%Ʋk^}VW@FY.Jn"Zלs.UKWө\)ՌSW˜ ]TckZK 0D XQXW,/m.h}qA @@@~rXKiB@y1s x֗nͽڢ `ڸ|vIрv͓@O:cp{iHN>b|ɝԁT)ʬ4Or8d|K'KqSo"88$)^U)J=ցf#U<COZim=R2j&{`g'd0JK&LMXv`q؍`A#Fʕֶ]Mc yϟ?~Ç?xjZVM8qĉ5k֬Y#{{%L5_"lJX(gРA 4 ˗/_|lllll,a|J_ٮ-[ZZ6nsǾJRT5ٳgϲE__zիзXhѢE좢X1Wds 4S'3I/ dd2̃r.k7hJK yh2z͛''gР޽%=:uRzsƍ?_s8GnĈlfc1 OO ;onW?* fN{>͖ׄ0GiLr"VDm1 &-UV |[Zm'Gw ahATa@/Fc d񕍒/O7QʢZgt޸؇Q@eo,x7Tg@ݿM t 0bD/5m Վ63Ԝ5њ ?ԴPڼVOjܴj ΨFoxtTu}BXC+{C;ڣʆdGsbǗ =d~{ԏ}_xث -CV`P Sl%Khfnش?3 @~"UffɮU{_9a9z*pНއGQM^'\Fwןy9VFOlJ/!=kdv׀k͗U#H[n5=ȇ.\kwn6\7fJT ,^HcC~rʗ' ޻rډ>Cyk7C& (bF0}|1~kA"gBaD~}sS.@-ǣ@<1o ?ށ{`z웼:'0J2 Ho 3$]o5yӿ#[AoSIRcۑ{"o`8AwTg,=BZ\پfcmLcMkL:L< jwIR7(j>nzkqOg`t)_ei¿2HKK5*&$ {%{3~PYy#FZD%խkfإM۶+T&L0a¡C:Ė|{ [;ڹsΝ;~1&/$ݖ/F !g̀JU罧gr<ިQI$۷j%x\9!x %lĈ4*a%[VEY;􉰂 7o%G6D0E 7L-*jԢ[Z_q۵&mKNٍVJv>Q&6+ԏ92.({b0P0Z>w\[}Uk2L{ppMe-yney+T]:C[90#>"xLJMH@òv"0AKul0 ^j\zF7E7͠)V3=:~5x2PNz!>;Ijw+mh79-M}' 7`=O$kS411v9TeArI3{xdn鉧yݎN ̔"JvX V'BX!6i;8)4H~ ֫++h DN ЯTֱϘFO6ߪ[9zVsD;u_(ݰij#NO<⮦zVYS> I= ;7:jNxjG#MuMJE{x'[)1@AuT,JҺ3>f͗gkvC|m{4093I1bLmm;tnٲC+-̸\Sӿfo߾}l'+4mڴiӦaaaaaa| 'F5jT&M4i~6kfaQǎ 4PA,._S(>ԵzoJiii7x4<#i̬vm6ۭJ/^x"+ ڵk׮]-$5U&h#&Ҟ>k/ ~f Ѧ:j%q? +jĈ#Fw Wn,Χ_Y*.sR% f 3AґLKr`Na&3z:49PpYF_ [%3jEdA#@QRtӺ%92vd>LiQP#F߀s_6d `V!%p`v#"/r*RLpkb<5 Ijp`&s@P~EheQ؁ˤ-׬7yd|5ŞѲMOO ͪʫ4#;M߸ >5}DuIJo3PЙp :C n$sQYxY0 Hhz< `z74Lu/ &k8OzŵI{=Of%tT\'q_+t:Gpg-';TTWޔƭHLT'zM_ jCL^{<} f⾮3sH0gsiozdZ]ր3ԩ_{^ sU,2|sIՈ#F>V?yzLMk`>† 6lJ>|𡙙;ߟ-v~ǯ$88z_+qqeE\Y"TSg۳r+#l>4Sj5Mk4*o7 p8p8͚YX4hVt:nȐ!C a lcǎ;VZjժ}G <45bȧTn!/_;0 ðB _"1b@D ?EɊxxbqY#FL/XW2Hoy9ER1i6ހg?CMho<5L( &r\J(s&B>d.n <ɨ/h>8J"1K&EH?b4$.2~5Z>Otɒw\(L~Zl_Dl_G~nBEfN'=r 04@Due:>+U1Q9Kz ꛬMt7Ȥz*:t+'P[&A뭱|8CfIvFN x`+n{ zΙ; Jk?PS10ӄ:+~VRI#Fksu뚚~4h0 //oL>}oKoݲe˖-[^p… 3թM֯_3%Kz-8 /_|ڵk׮]۩SN:x<_xŋv'tjjJKz#pq]\BGoanǏ?~'N8q~7mڴiӦ֭[nܑ> tqш#0DE]B͛˖EDL6mZ̙2ښ %|1bĈFTtYmYr@G&@6sJRA7}eb-jEa8m+"%oЈR25Ǹ,GP chEJ1;%sTԍ)&1 Uً^Bц(a(,@Q,pyCfX,] $5kҮHkw^T Q mW(:ɏɛ?{ѪFVK=8`&M"&q5"I"Ta _}a'" 6!Q9\=|>XYZ[!NQM_)E{G&n.qS՞i]YR0?S Z9)d< Șp}eg:ԫa@o H=3+(GgwJ(K PgL|"3Yoc㿞nE2"y]SP_elq4{!xuÍǼo7k|hp ̉=.olܺg"1@rh~PԁDz#F.^,(qV-SOOYÇfe֭[nb.ׯ_~XLQ"QÆk_^XxnYEɉϷ88զM6m߿cƌ3fL[=R( Bwwwwww6l_12Rx"aE-,-5w޽{nVd >|s̙3gΗX >3bBbb_'%K#طon&&Soj*D_qNmQ}F1b@vm;TGn>*}Y pp(}L'y{ttދz~)0Bڟ\+rK-RZ+" ZӴGنаJQ18Fd!R;N,(hbsr'h~h2 |H)X&ݷ 0%sK?i#iPT!N>;ใHEyiIDAT5ءȿ@_N*ɶ \ۭra%N<+C>{*PpǪst:,V;D~|eY&ő(}OR+@A"jNz8Xҗݹ_>߁e@`NzGa(xNILU\WQ1ܤ+u֩hgzJiXzwWY,+ji_DU#d:f663*2/8Èz Nw?^^u1bBCKJ?/)1rSSGQp\.;p.^xŧN:u[htɓ'O677777gs 4hР|v }gAchҲI+U21>}ӧUVZb3>{ٳglf *TпիW7y;tСC|p<*"\]/6gϞ={ѣG͖m޼yͷlٲeO)64 իF0ZBAȭ[+Wq,0jՂjU zl|D#F1E@;Wd?L=iVUMH##Vk#v(WL2p hPECMgEҧf P8/(' 1qIUoT5_f3G/lDDJjf"\Jxj̓Ԛ5(e}Bpl*#,xK! FСd=|r[ZYo奫kp4TgӘi %_10&Gy& f2Ӓ-aW0ZP<]?"FPOtv&.aTlUd“w2}C֞oE -Vqt٩s-+Nk $?yGMYRb9߃hg{[i[ nztLaNBf5=fA_Cyi~-o;F?. UizܨXC#zsx'hiңv?PǨ'{۰dᮄuNK8^1Diڸ>%ۺޫgPuD1b䯸zΝOK'H$ɝ;wܹ `+va3>|! nݺu}EZYZ~JEBQ}S eCv)W ELUYhaiٰײ^JRT?;W_&{#,1υ>q:th@09Ԕ6o^rs-,$p0 pU2Y~~Aifg!Ô޿{Zo,DlĈ#P۩p&AW/&{NW8+ =dBPÈr cmd) ITQHbtSF>.7fVb'0`E$БyY=fo$QNIψ$g /*7Bgr$R1;RFd<*Hg@Z.6S+h6?Re휑('GЛ!xgK6+ sdBE4ۗ{jm*6J hű[9x1&Ү{I3U\Z?;|G:f@GvCIo.?07Lآ pfudk |ԍoKMnӕ*>yzaJAzC=hM 7MQ~d9sa-̨]{&6~nT.=hxXӢ3+{_yZc5믶5bg/5}nyG[-8ƕGi^"]Ycy9<=w'G/,rWt_edrHp*oVMeTbWFp6+?Ώne6IO0bĈOtR}\7v۷o}2l&\rrrrrW^z Ǐ?~83ǖg5k֬Y>~֭--437pLM{oa_t{ݻYf͚5ST*8lٲe>ѢZAe̖-[lْ,+W\rk\ 4 0̝;F|g$ŋA^J>ܹClm[jT$F.W(hԩ FD3ʆPG]$7'՗^]tK#&0ԦflSGf)vQ<眩e5.mΩx|,6g4 @_;w`@jzt0έfm+_#.ֆM-Zt$0({I_j}<.d|V#oYeN`IYو#Fah…7Fpt"_tttttǏ߷o߾}=-ؽ{ݻل[nݺ5So߾}͝;wܹP-/T&$|T%+ BPi4Fׯ_qgתUVZ/^x񢉉ɧIIɋ'>527Sˋo߾}"H$sټدsfFR%'uQTJQNM$&}>O":u8SS.T*ðBo9 پ(ʄ_67N. og#F1u*diNʄ/:Vfqv5NiT)R$UuTyv=T&V/2L>:鋘jJ{Rqv*ŏ(!K|&SrGQ5C1LmD|P  WTM+4q*)dsTڪ}A:tehpG Šy6B>2Rʿ|{يDp83 `z|fK`ޏ_]m sq^ 6}MtsnJنsЄ^ʬ0*N# @iX ȧգ ^ft kaíH<ɎI"p3A)[=ExLX19N2mfPϧK{]G5 W@Ӳ&ǻYC¾T(U`QT['h;PRp-Xϡf6ө< SJ ~>'-6r]OXZv=nM=ܪ5\WR!Q7Yݵ`S-]|^M 93I2@l`+r~sdx7'廗v>2ُMEEwл7[ٳgϞ=qƍ7gjժUVkgeլ%J… .\ʁcccccc3a„ &L>}lO]D/-jsrO|}f |VѣG=""""""ؼ؝;wܹ^zd_7# "Y Bҥs昛nݴ[Tj5!ߎz ߛj^Fj?^.ȑOKzNREF^RݿegдZ]N;B(pR[[ݝsry<[[OOJmlp1b ޟ7q0C`]mB_yǜIclX8D0jKe6NaϽ C|@ 9xJC*۞,.ȞQ|aI§L-QnCH6u\DB!"4٦Ǎi$M j.2&0e2@ê B6H`=Д3 pQ{$)X >F 2+jp\_-PT1w!GJde?)%2FwݭXSoJD6J):YIg=Z؃^5bĈ'7Wg QV*|J;Vcs=1s9ւzޠY[ddݫ4[[(VysْÆ 6l+B!l 4hЀ-hyoVi44(F. ΟgA!C 2֭[nbk>@]+,sg?iB=ڱw`,Wݱc++77%MѴT ECou_?thX<4رeeEGϞ:%?~|^_X[c0YΎQ{ !GQPYHTRf"QJMrkĈ#Q8hd+&s UZexxw=pp=aӕw,3A|ZI"N%k-mN!o2f఩Fw[@̻oHc @hT%'>ߤMd R}ʼBx '? Ѐ 0\;eOךUG3QL(M+lZܙg/ItB (؎(U-gJ{ey*q{=o(cEכ@c&g`qg+>` !\m5 _t9wF $L* D'.Ph5˷7'UНx.r|/ hi hj56K_cUfckjs: c0ljJۖut?unz?j:Fa" l {徨tɥRT[GMx/G4__`wJ'2  [7ΧnP_MԹ=Nziy~, B% 1b_ +Q\TPp֧ lf{Ν;wܹC:C233333{:tdsM_]\G9r@YQ.iי Aֻn.ԇ{B#ApX"T|C9_ >jN,kYQk^Sqb@^- |٬驊u,rtJc{B' 3t0*J2_u jҒ4,1 M劜`r8-3C!N~% Frlfq#K2 @#, s5!mPz~ [R7wd ʫWP!+*QzE U+Ȧh(W1d=.U7!G|ۦ7F*[j ,00 j^vBQӘ3D8 gxטg`hfw HܟG~vvǑ",ld~=:.m7,{> - t,bn-JdY14Hdt ۤgKF4XG}6aQqփ@GDNr|zU82T7KX3qa  |iG@o8jK_4W8s ;isd3%o !fZ3Vc)+[v ͔^gf9/gc- #ϝ9-jo%hYou#K5b_a`>af5>a?{2m+9H,YDh&)r73.N"2g]a"K_pTЖ4([#jD—&2v5lZF[[R"ddMI`0q@tR$@#zJN'*PLcWeCK$?HN7IDΧ}yL+F P+V5ߞ&`ێ֓Zi[:nڷU=SeXީMͫpya$f ]ә8f  wF_hRϦ6ꗤ n4{/=l,/}s.,w zc]v1iL'L3)3B8wv]cf?UҾtJJUb:F1()1{d-,-5YliPOܹsΝ^Zjժ5jԨQ:tPQQQQQѣG=f}5jHUJ$\n0(">/_*ѝ;GFRHn==b .L(n\xŋ :tС[d[xf> 4$G,.-5JK5(ӻ6B [&-RTJ_Oi[<(1RVde|IQNM(RDBQ+V̛gnު26]TZXSTÆu2Yqa^^~tڵs| ~܃5Fz֭³g4i0VR>zt`iiHȑ# aaѡÜ9%}zQq#F1`GD, 8 a߂~Lz`Tc uӚKB|j2H5 _PzE&>TM{=Up )hk76ZpjImc=\F.c׋_/QWqv=b^y;+;n=|6SIQٜlI. KZɂ^ ʝ敵7.j^>2v\ZsZ uKUŗ R:KU0UBX$|k a[Tw7A{ O XEOdֆ:Qdd|?GnV.j!uӅyWԔ ԟ+NR}̒eWЈյz[ypnU鹌M|e^~^/_i$[gB ;51_Эe gXFxgrL^7fхǡz)8ZEZ\o|#~]\|@ {zZ[t*4^ɣGſHeaː vv&&nٿ"d2#ٳg6_yƍ7nܹaPǯ_߾;[Z EZBX~]``¢ǏssʤR6/O󭭅BMM̪V,.JKG6Ғ57^߿^=35VH|}-,\s^ʕ+W\5k֬YbcccccYQJ*UTY` 7o޼y/?Ҍ 6++9YNK+1!$:UB.];j{{[[gu묬||*T>+WnT6m7Sڌ B.OL&2R&+.~R.W* Cz}IIPжmJex 66Æ++W;^#FCPp[bSׂ'519"0w.a¾ 3I S %tYGF Rge%*En5J%u3E09wdv# L`~$ސPhAAMb=uͥә jRĆo,P /i0NRJWRN;qKf7*F:<.iJpK&a`"hmbEyE oѣ n # @<P4Xqaz9*??ݗ boNyŤ Ur[GsJVP4sw(* ',F?ؐءihx|z*bƽ[w]IYnt|u[7+HRˉ!LIau5ܘ|&ccy=ls5Y81ZYâPm^c٢=0Q"L=Ҹb s{kV ={x؀&&+_ o W# q; &\m70"Gtm3վ'9y4vV^= Zhjh=Z?&ʔʭ|׽HLnV7aں~lo#bc  &/i?lEynkK:hMW:IKzT:-=>2I' -3Km; c띳majj=k(9Wb4bL_i.LZCN$SV5>֟?An,=e[#Fvx!z6Wr7o޼y#Fq̙3gΰ9slNaΝ;wlaaaa񦰌`0 JRTbX,.1^VZqT^ޥK%%ϟrr DF&&_UIIxxAܹkWL kj;;PS>s8bo7,Ԡ>}G.^U߿fM2e3YjΝ;wd ~x!!66-[:9Sb!+ ]ukTZT~h|~[Ν@`o/]]v..LvFa{얢bOj֬]ԴzuWWɉ#;vرc3B4nχ>|u֭[޾}ۇ>|/9weOz߅ah'O $(hZaחgAkkKe߷6UR2vСR)}8ptt\Nwj1CJ4dͻwU'ϟsٙaZ3a<{Pշoܿ_TTRLVR"o^}z}QQzzvYZriCVՈ#FP@kƑcssgn6(魗nV:U j]pY%3K:S" ,TUlY\1'vRs/wB H*@N<@P]LOa=O³|̘r>'c@㘂. έf)FZ*;CO f.@X;n$'VLW_VY8]u' 210 B0:T1_s>G;{:{Y s^fmh&lrbkj^,RN. cd9{ cbх1rNif &R˹+P; w-JG{E)4+EAљIϧLMp@284px7V4d!-t*!MN[ܓ1Oh{"'Jqs^z3x{޽0Ϳw槟{t%=<|}Kybc j^bvSsN1!B'=TI5 _37墚>$QRitv *쓪7KZSLE,ڦPV0,,9 `zlid4/A=\)|=8/ms9/˦ǩh 穡瘼]>]4 uC0G+f&w=t,F1`7 0޾Gx*oUaN>}E-Z(11111k׮]v5k֬Yڵ 3g\jssRRvNM嗘Vz}IVegϦYSDmfg_Gh4gƆ# a> {ԹWܻ=gN@MVNNAus -*UlaayyWWlY` gn[QgTBnw^ 0twݭ݉"-0L z?vsu-y/hx.h-?RA0wtT:_ W'lR-ȸ#0*{/F'ԉ1ke9"Kk,wpbvěm#jOzA @l_b0 b!lǛhէ[3n{?Rnnhi nUʈ˄r&c$\﷬7>52yy3*:BICIJ鳇e[DFwvhco%& >8 H{#fgZVR}+|B!yrC=KUYhRFhQPF#VV={::|J7k$&K ֟C x6??<|h_ߣG62>K_yԩ˗O ZҋH$DnݺuСCZq) EVYP(D"ysу̞=y2WQ=ZF:˗o(/^.ݻiOԣjZqvvnVjՖ-Baq@^^$ٱ߿"IIooi9MFFW;;؄d3!4fҥ66;Ii҄dz۲Bpδ0P,_Nů_?w Aٺ :tFMP=1ɓ*fZ潼TSPWl*{$?g`=Pd ɄrR .4CIG^? Ñ@:~tEKQFO1@ E}@;mҗt@ i@+`zwʫu/[+8ˠWw 6{J,[0V{#6>-}xr1@!2)ǷW5e18 8X;.Gg/⁁%[ࠌ$['㸭`9uelO)qĸ 9ޖ5ױq2x/X)v!Q,=V=R}y^sbW)ݢJ۔+:) 9u4n\G]:մ-],I۲H؊j(gȀ̃e?_+$@ լ_D65n:`\sdzd92ؔEVjiڮbj{TZvhd;BHqP*$j+^jW ۧTA,>2'x2kfߋt93"^+M!,BZGy* UС2X!I2?_.jrmե`PERBVéϑJKJ${$_"99/fe=[h4bZ=sf` *I"DeYjLKۿ?66ԍԢ"űcOui$qb%%T*}=ĵk+J,9Y,Y08ygd=_^`˒ou:YYq̰a4d2\9ܹSV4HQT$$Hh$%eddei$I^wsIPHkn&b1I~L.-g&ɡCϝui-(Tq[k|>`>L}34߫=zT^7V4Xk>ff/^yy]Rw<޷qqϟS֣ZX\A:tc'-ZD>L<ǛjG~000X:qk'W A0UJi'4CoJ_0G*QpGt<@14׼򵭕#q8dАoHZQ@`h lgYPvo3{Xb^-\dqT[ pg׶\K,%%MwhLv}GN+.@ $T@l|t|b ]4K*A/kC"HL_>ސ)n:^E:-S+)K4&{SxHozc[g'2D"sp[ G֤eV}ȳLmdj6;=MSl9?oiV^ΏVnZi;yX-;7l^Vm]{HuȆ8o 5<6L p(v"izQ\˩Z95F4˜E S[WW{kqB!,iO~}Fv%-,!(1u'A%$YMVwval…AAׯTEEJM} ɛ7 <Ȕ(eXRibHcGTR*));wFEU޵32$s璓ƍ-,!?L06))vEEQ3YP2yBaaxVyGͷ2Syy&0@.ȐJ%C'O_7@δZIЭQĩS&&[߳'[R\==ח.f&''[[&S%ZN76f0>Ug+c=+ JlX_WWWW.[JezzXXn]BQ\|:te@o Ej:3&䅵̬Ad{jgB[/q ȥ^q =Z8#!Bsdfk bL#⾬x@#|s;h}G_^X^,p Gp `M?J"kvYc = @hA4 gMzI '4:-RU;uhRHYd"7'UwjKiݷ$"ϖoOheH?tn꩙yЖ'YT:3lX;KϘ>NkU,M7t|?%`=[G&.Mb\^+q|DCR!P蠁x0":Z;`Qh [Wl_U/YK&Xl{Jjwq/mXC-X]F] zySᏫڀJ.ްŝwn0fJJ5 a(J.nVo8~\fp@zBc!^Yb鼽6mX0邞/7;M~SG6][-7chV0hz'>Cx7X0V(]'~a_S7ADZ+xj]bv} 'ktļq]-X f\aRޢ:E&Ü#h q=Y:tTBVթCE*YY2%cǯ\]ǎ0eJ@@M~>wUc,?/) P1TP1hEЇ>-o˗SR(򞛕uLRV+i*h<\jmݯ *8l62'G&Ͽ{7#1J0˻} #gb yT3J9}}.vm#Ҙ={:4&fʔA'Nܺ5#7oD`P}ܠTEu[A()K8sfPҒF;w!S&M4`UbVGq@Ɵļ/RU]\ zmqwf IwgeUQc^N,M֦}}~ 0nt 77GSUsqӫꂕO~J(J5TcM3:t+@?1\ȌO .w̋&A|$h4ScCC"7/2n#o{縴$$M 0 E5yjeqkA! "9Ȗz[hӴ"?\4->ƚ6U-d1Y~j C@|S`cԨ;sx.y愬h3F/}c\tz\[3-kLM>[֯Oѿ9F@T9,%߸]$hׯ{XJ/ܾ=dHts$%\YP`n^~KIj, VKJTEݾ{VL*(P(HRjMM[.oJzOdgJU9Y}ɽ{-T X%YH$qqB)&$?gjmݯsipvJwFa'%^ݻwTԘ1Ӧ%$,^o_v:sQ> |WMPd2WWʕ'<=%k(P>&%RedhJkwdcޝ:7n`ӵ+5jBQTtir& b&Gz޷f,{{s?H@4Igy:Ǧ=|7{ `8yI{ْ! g{>ky"+Z=(:)z i͂f0e?8- AX0I_K^r+Id3߮:(RF(Vz菛Фy7V,c؃;_Vt1q_auc˴=.D0ĉ XiEwG+yC#5r*O h!j|Cv5Fn4[ 4 B*Rȁt܆8?_p:'ɃvY&}S@NBtK׳/$ >ZZtMZ,vB-eu񭱇_90}`cKs4By|86oLQv^ރD6!kǓxw>ܣy%G:H_VRl{7XWK䝜a4kׯS)I,A hgY+h#v}M=6&yס RJ$cW*q>x|Nz\ԏޛ9|RIτ R:c W8Lke3#5'#.g@1xMf>d:gta{gt9[x9Mva9KmJ + ^Ԛ-|Qu‘#ffff&&aY˗oPRшDb1Ɔh42LV\xTIh24wݻ1u6kUJA,~q )6CXX٥2r43p'WwwdQ8B,݊7gd,Yh`ШСZX\~:tAp *J$Ozd}1q; 0p0_"2'wVJMʯQ]X'Jx8C1j͹ 6Z%!&-2{rc!Uǽ (*5Act\+"뉧A14B`Aƒ( ɞ,3;WQ3[u}IVDOI\-.C-DSpM,|jrH7@Ă1zALӐ uk";ZzqG'4RK-@$iv0ȁM ZMMֻ6M~wa>rrS fg0Y[ŶM>qd+k : $Bv$= ?91@N@\ JMc:F'Ėqцm_Z?\ya8hw'J^L/-"Mgɢ\u*ưz1rkH6Z_Q* @`1-Sb]s5ӓ [=CL)݆J+'v$8Rq1Ax3,FypRV\\5n!sZ@(X#P8C1bP Pv(@M9 dãx7 rī;۠x1&) 6bWt@ ,x-iwSEA{+ɡqoI:KcC1ID]Qy(5~qkZ&1ze,֋*wۃ58OyS8HBJQt?9^NyZyEu7dNpQwkfzAt}p+i!;<3|46Ԇb׌IO;"sXKD'@MNH>i]|s yӧޚ2ʒ{ 'š %#%^I˥5NxvFR:0K5"C`Ҹ=@i;}ҢXʖ[go?S㙽K _ťi7|kEڶC)gߑͭY|  q\t}C *YJ}#+-N6uwvDw =X37;oz Ae2СC_øq?j1@zqqOٟBA ţG}#99g5fʕ[R$I .]ڵ[$%mL{eQAaXiRFuܧ**fS71}yiN˩ AX4ngJ%"tED\FqÆlذl1`CV1 ?~ޣGݻ)P\.ǘb2*9sTbŦMɁ61qvx#G0nfé?߿$R, fmmnnbBG. :Z$-ܡCml,-?=yIɣG;vTHuQh Z؍ZㅚJ\B@< $QĂB@RVYYzM2P0IA"t+ :!G[n7גЊ0a)SGbWl]ƒ"먖 S0@ɲhD!{wBe㓵G6oZ롰mI5x1j ðX$%;[e;G3Y@4B8>AđǝyZmT=4,l+_$c9wTWb!Ote$p6.LF}Qa72 G tt~4-ڃp~PݣĨ]PllG#67tpO",,_ jf;]n%wM׋Tbr?~[LGgհO[3(<5.MKx1`Ү=U{\'k/M{dL4]СW j,X1@JΝ"Qxxq8x0;C'O>y27%@#7 jdV5*aibB-W~-|034]Ԕǫ^/oSR* 3 m`*C0욛{jjjy#nmmdٿ:tA??z4BII/^h4ҥs͙3e Ww۸Df߾cT|aFsKR LFPAa\ްa$9|ŋթ{V$rH(|hڰ4ALI_D`аOWΞdBNQRr5 EB«W?ۏ:0B-l."qPBcPp >a369zל7tUCԂ, |J@P m;4mZCwyfk!({CZ  fCad La4,MrHe16_I\{ Tȡ>@[&ȀYM('Yv.MO쇅 @ T@ 3OkGÙmwB+/~$sgkjo9T\+wޫ[dzςBR e5\Y4  > ?p@ 2E DhY'FO5~%3HpC satSY"5?2 ݩa3{X $`]^tT:{1goRQ[ƿit??@E4C-c6myCpvtE 3gy_?z򟳁K&.8, OO/ir4*tzTYir2AbotP|(')~E8OwƩ{LUզX+V}zmx\_S^]g;|0MOW=G-g:2-5aq4xq|pcfٚ#?ġ̮qxڋsT}̣cjŜ(%ŭߏۡеl֯Rxՙ9 q`lj4ú]/0NwߺiɘM2fGۏ05?+ǡMCh*c`f=ξC #dB{6j^N}:ʕ׶[ɓK:qW_~bhO5SI6b3aveSEQ˗aaÆ|вݻݸ]FGϙHehd))b1MEc`ml\ީhqq˗lƟd0@귉DaaEEI\ܯsE$IRXht!jU:zbqd@v`l׏RV?WwwO)G8~gyb27ڵ4jܫ( *^ l`PY?!ΎϿw/#5)珝С?֡KIIf&A>=d@NNd$ЎIӶZ\jFjIc&&$9pl9{6{&HWP2aimZ4116a2,zӧ;9}h[XU)QV,.(QС&◰UR=($PSxPq &Dž6țluKm$p>֟+wR$ApGkvųmf֨VTtozHi伵y͜,=bݕ] 2ATp`UYpD^z(!S  (@x;\F"7`j|v>@`U >D-K jctš D[] %ck6<^9RiaM54 d6#jXA ʕ;HAn%!액&.wh'{pD~Q PI;Yo"K46 SlT2+ Q[M؝Qq0B,.D X"#/C+FŒ^y/6%B%{A4`JȘgTaڈ7okMbFN;!O8~ɎtȮJZ!vGp3ÆaKI^O!˥|?Y|Nd'fGy" dL{lXy ZLo܁6mH;l$aX.0SYv;:tX t##&S U*5ʜɓlʦ2(wO߿##EܴBuw畣\&de?T<$&$-!C?c޾~>aʔ7o(ɰ׸b02[v07qxBP\7?{z46nef dmmc51rSPOgP\ġC۷tЪկe6 %%$illh)S9..1Q$?? yP9ujQ'Q t>$p׷*V c_:mlGoajjhhnb})"D14gnYY'NKYwWu@ +n88%C|H}+E$ P]Zy޽h6%-,'c%Ueaa7;l4`ͦQ yюF.Dَi{<©9>S{J=Cej6=8͓M(ĺ);3}uB1dȵlA\z<7;(5ATLm"\T j5XjѢj Z@praߍ4OM<"&S])5 d!!QD3@!z'zXhlP _9L\PɟO{$D!SЇi 0OQalX ^A ˩7j6dlDQ@!$JRCԜۯgR 8LP 4t_jU{:5̨Nv>qBT5wm;?cNocZ#+k$v|pv>'˘؃i?>:&VW+p-u͎loH 5Dla%:ǫ*Z^b9f50@Ã]q @`^>] )- ȭ{Mliݞ?L} -!B',e>T,y]^uZsF:sraeCo4(|*Yh?k=lXgaafF]pizkWDN@ A(J%#GNRTRTTj'YHUU*H,&I''45 N1H޿tb'(=] +1`ogѿ . 4G0l#Gll-zvskDHN~GC B j$nGv?md;ǃ>v3>@b 0C(P{W ؐDhW`a,܅H8 a5%-kdj)rG;ְB+V!톺 .u#:%~Ǵ!!~2 3RL0=hgXs!O>W]{骕:SpWzwf'Z,`V9*AszY'8iKs_L]`/qҁaO3l+b'gY?otf>;_P R r"1)*Zp'dgW hsz66lY!p `lnNAv/Zm ]t_Њ1Y%QWOo{g 2Ia*3ZÖaVe  y??+ݿ{UODz[FOl`,ծd5#8>vU^66ҩH0e2 ~ XW-d\OS,} XCUKqsmsP'#՛q;y{%3Րo7] x Y_ S)}?ZD,Pd^3K6Ѷ<=e֨`TQ䦽G& iDQW2795&=^fN̛߬ѭWBlƢ]'x\%ԉL\|&'slpkBڜ %:?l|˼WYjԵǚ'o=q7+=2):t(ͦ||ooЀoԨƟSG/,|(;cP2+ܹdn4;…ѣkeTSvu^mӆdz]+`2 sժ:uV EVTn]x+ilܠ9߰aeJB&xy&&4mja88藭gPGljK_QPR4eYqrb2+7oo?fYzz>1^Pbq˜1*DH_p䈙 PIMTT޿%㠠Pc~ssO&a.^YJ$_P\|Ҝ9T߯cFhw׭ؼ9odDС֦,A|Ř$5gf2ڷ5vqiРǫC :HE S-\rg6SۭPqAUU  &WLez&]r'!0^oU"aE+?r%G b=Pv /^ c˥'r:jh֐ҳjB15|]}<}jimV~3ك 32 }z5N$Q}l̟x>)7p ޭG(D` cڑz<﫢Z]$7 w;eT@pV"w;qJe ]h@D@󈌣RUc?s5N!>xg7*рZb mf#vf?V,rs׃:@Dm|t6'6ո!ؘUfU}*:@L$nS)'_&Ou/*P _n K@%#vOҎo**d6vm KQ"}kz 1"rEe"PvTOJS OO꿪wlY['9vOR.%[:F+hF>i.pVVС+(P$6?7W( )*h`ٔf[YhzztQzff%%Z]ύ<;ܹ۷32>ɁB668;̜YAo/QˬYի'$YSzFi߿7ibiinޱ-znnK 9lؑ jhXIim<ѣ=lYZQQӧ{ ʸ\ϏEƱ8Ņz=VjPTݽd Ij4>> Ƒ#;wDo>.)HԔ d2',MRed'dz¸Sի1vpW=j4))gNJ%QBL6`TJry\܋rylg Ebb@ZVєEnl7wst%+քݚq![xBc}@ ?eX'hpFZ8mTaڋ[ȕM_ZDcnxc%}F.p*l7d՗tsz]j,ݏq=XوF@w, =aNnjϦ]#U~MtU2{]>x46g$urzgjVIs CڵML7mWFr us[fM*?%&5r+12357ơLb){^:1F($Y<ٸ4cۼ70ׯi$bcUf5bZ//wwCOOO!L.ǸgϡC 235JǧK۴Y*2jRبQ4Hj1ߪKDϞ'{wIJp@Amiْ/!CLM?)7oN :tHk.` KoEKhIza.ۿC?EƙqV͉2^dCDL\`"')At"c6a|Rbd0Z ȇ)>jM;ZVVf鋞ZeXhcb&-EnP&ҪXs=70 < aN3Wk a-<:JXV">dà$xPc֌wv 1o.0oN@ֵ[BFa[b7iE2,|W KYh"FrC>~U-ҀFM?"9~]q\vQ3"n!rR\7r'>pqQYtm+8Ekp28XuT(:DQqr`2Í ]v)FcR-9 'D6K`nOr(^/rh󸪥|ȄK3O" yR~[`Kiա߼9x!={cZ5kf޽~=d2P\~\N Z!ѣgH$TO cdqKbѦ <|eR 9s$JT(f](qWĄdL{'4\33&,(P>}+ ;yC0bi"hBCeL5Ǫ{~%xAgH%^71Igf g6:ZP(`&סl6@ ?䘂T,7\y4HAA-1)hl?*9* ъz]N qk`B,Z<7aC\} ]Ć0L ln c` >mZ'^V#{}'erW!10pc| vʁjЊ Nu{A7i^~?-`/R94t_d!6A{OX^k=y?c1ק4` 4a% p#zOK 9Nm3!9EU^6[j^e fd;`o?jfflv5n\R}aav IIjKJ#)kP*GԴU+kkk}E.vvƖ%s22MH01inww3lm\XqvR/-p8vv:R`0ըשsBVwdd\"NjD_R&TU^NTs璒 Iwq5ѡ2!I!ݻzh;[dNW4V{z1Il6BTlvӦݻElqptlЀ$;v\1())%%mZmIɧmehaSǫ))\.bt~'Aaeefv`ZڧxT(D"$'N75utС3BKVmqrǨ x!6;ԕu[^)lN8iqwc@CqutTUIboZV# C GhlAmy韛>43[j:(G 40P(L^[Z|=i= Cv~x#jc5k렁p/XP L+LI|&#-}`@ $av7]%Apnit)/BƊsw dF7qq^ݦ,U8e@6p^p Betn✾8R)ZYAhGryV O39XuJv^s e Tpⶺ1tlA޷al^,m5S)VgRrsv uEjd+=Q,]V67;-imvplo4/zpzVpɤ6Ay` ͥ{PK+W0[t:*O~e1KN./gwiv@W{9$nsg1gOi 0A#^ Yݮ!;j4LBRM3S՝DW#\mZ;Jb/cy_rk##CoJ̅3:>|(. }}MLƍ-,JO6* Vjcb, *,|4',†]Ӧ-[6mڱcǎ;6hдiÆ| u{04(<|WRS틉ʈ~.BZځbqTfFFu뚚/_^u~`|i庹xTFI^^" RP{C~11%RG(Uv5k2_:t\5O{Qkwdke+bM11isiPT7;3vllL?iet80&I>\sip7lXظABxذ KJB Y, Ǐ_P($?IAcܢŌ$ٷ. R)?>f %~F).NOn\"'gN*Cώ+={y$ZV(ͭСMF[:?+&du& ḋ4=iz;,IhpXlugf(vU鈮mz @4Ȃr?TL2.UEQsp8Y%j7-KpSP q?#xf3g-5{^/ӭJ]a\[ثJ".5+O]7` M+褰QzaANyjl*ӳ˵-k59|]v$'{Z|CA nb@ALwP>;~[ĉ,/pJrK ˆ-&{r2IU./CvOe I(8/- ߸1Â5<f ,x`u~2A kh5$ksa܁H nL#B}ڴnrܑܹAhxk5f] .qbcom#!ݩ^M;}\/ohhP 4!?Es<|d16)TW{?jpƔZ"a &>μ gi J <`޲zkKkYDWi==TNU<8X;U00ߕHѫe^pc Y jNߖ6PW@1TQj;w6lXZF"Q"rޘ2$}KC!SgԨѣG޽{nݬ,,uc1 >yĉ'O8~ H((Q0=С8*/O.ws[V-*pe8i@MAL*ge5+)sQáѨ|D55uhʘILLIIxQ&&MZZRRmkʼ췌c\ޜ3233####)s4HNHX6,,3D9sWʼzezusRJʷl1ͽ~=--/tSӶmOVŲpnȠw*OȬС2jU*]w)[G009sFFp2Yn:}â2Ijc_т"Fs#Is5kkT 5HF(|pv-V,zzNe7R!1tHVH۰C8~*)X9%!&\>fk`:Dr&1nLeK5Tp߂UI@F8rTLʳEL6>$Q̅ `A,YCvuYt6Molh}gpbb3C?9-h#@nn>]>t# £TtQ9ܡ,p@ ,AvM5*yP!*ۨh*fϡlDS;P/2'rNs 6H}Lvql؍va{< N~"0E+)!ߺMQ= 8A&V@$@ `T PgjG*P5Dt~"A'`6F9>Tfp xҕc뙛;_{#eI` Ιz C<5Y5sɜܘbA?wO/ۮVCÊH #ɮr{ԦSpc6|5`iHM[Z?~LޯUS}l:Z zS(+6.=CٴĀ'>>NV֒a沣f~|96m5iG!x|1x $Պ`ҷ+MjӾϏ%-{^'-n:t12bc. zCfxV*MH zk7n\۷ލ?vqIWΝ۷ܙ4taCRR-ssoLOOHX:,u~'T׆ uRyf %'II6EDhF5cƻwօ& ~ EE/_憄 yQы@fZ !!6EDei eܚeˇoXEv em\\epH+-:b;<͆CE*3p^b@9lFDdCP'cc'z{A%xYn#@_aF+7ܡt2 VxYHV#E;k5aIEoFp&kb;z `_#Wsaկ_z3b=W)&p%nMp& NJ*htrcgO.?!ޛɇq&4oV CZNQsנE%6Hxhw܈-a0%PT#V +*D 3˛&9΋R_d ԧӧcƼz~f&hUwЦMvmDDDD|н{׮ݻuSg033115O>{i}}}OBHn͛iiTVYU{PV'{{\7BB~ի촨Y޽˻uVci٫#X0>>9|Ę\tiH eTdŸR*aa#GS7f ]A6jWOG(>c:NXhLCñc 30(4H!)x$/,$I $H*]P@Ʉ :,_q60%$??cF K(8qMll&j8ioG\Lje28"B.WϜ)*ڶ-;[ X>3)<[q+XZmI ƥiؘTvfvMTU=:ic uFuxit[=m!ZT)( LP4T7P4do)Hwa  QQ|TCy.-tÉ*wXA PF2l"54m#E=h/|!/@%@:Ec6{AU=2pOfpVb"q G d.(9({3iXoE<%@/|MCm@ Ơ}a1aT;wЯƶWxg Jė 'fUOLǟߠ Z+cMW!H;ZX6&w)lh}y8REd]u/1yl&xiy ' y10(a omOּf`څI&jb8BG_U:[e:˻kd6<KlPLgosrfC>;t.GZ]ӣԨ$cm 2_F+7h{"7]~W* zv _~(ZgF+y;ćJ?nzaO2xgx 2H,YՊnIщ !\ӘQؕ.coC)k3&uxBpqo$U*ěO֗ EUjҥ[.]._tdV8޾S:vHb$5uޘc ))WR\U^^II``AAySZE$1NHX&,54UĤQL>ŲŅ]k`l_eHY~0iR@@E);庺xTʞ R"A3JM},~%FFӹ^0ٳIY,}Oxb1VP` `lloO=zl`fV9v2Yt EbF aggoo=/-/d~O ,,Tڭ[Μ/*R~d=M \ެY}ZXlesgFF^ޢE4ڷd† [ Plil={\?޽zN:t/!gYi EZ':XLCn\IR\P8 3tJ6!Jd,Rn91LeR0"X:ϥE!mRʱPM PA6}A /#|?D`NJ,r"ȡyQWV35,e0 c%Ʒ`vU輲lw!*mow&zAǪw zUAR6sMKb1͛Nq>v!}<^p؇+,R&ȃTê?]_;ma6}|8M=QF 6 jI~SX8-{rj(.1LQBYQSV:F@<E_:4_KgY)D=F,^3Nڝi1fM^kRHF.߄ڍ_{,{8msX:Wji)CfIv:^q!}҈e{ۉFf6;7Յ/CZ-TM7kb9֑" G@CGXc]3.)'۪|Ǜ_.>UExc RABH:JEAAL8oÓ`=<`Hkũe 4wh`x8L⩲˒#`а<ůZ$56|zH_0^2M3"a}}F:ΜWkxoX;`0,enz _jBgze*kdT504I\O+>ֻZqaDFk1HSfB{uv!Nd8͢[V*Xq׍ZAsz7HWT lU &m&no^<}PTel|b" qD~]AuĠOQ# .A襼`0"eF]nɞ.@k Q=gT c7RXivv|塡 >}ڱc\ܲe!!ef2,盚jemmaѩݿV+k4۶EE^Zzcn898[^:th׮CE,YxŊe˖/"")M>iSK˪^obs8nnFGϝ}iJe~\~H\ԩc2MMl+qp:>9ςz%&%mCgδhV=Ri|P֬eiᘙkg[.th .^? 'Jܵk:>UfE~zO(*>miWr @Fc00nl425. 2Yx;T׏RƍWo,|+FCM37QK$ߖ,HHHO/)QKbblvӦM6k*J%%;chxxj FUl@ٶ-==7#d0Bvvl6)߮ 1ƅ.̚E\1[vϞ^:tT1ZB(cpvࣰ v}lmx?x;$@!}as* a=&e&i[Ҧ`)(C*~yxxCdO@ H~!NLM 'zl\m@| *|1``Dɠ]3]kEţnXCyID bHMzw91z@|#5> ? | YA54z\?E.!]c:Mc n%tsD a@^;:k|.wnI| ~fAiGZ5_T HXTR d^,Zbe't U\o :R} M{-]jyE8V=oXv,ʵYm"^KeŚ1^Kf0_`u`u?_K{]W|. חua8e%!Q缚sڨ:IAzAg$Ph.zN6voθw#&N= W.Ϯc=8a7xЅCZl/^~/? FNҠ6O?ErAhzCf'bCocz+47{Ɏu$}`NQ''~i)_j GtJ"  =8Q_?#رJZRYTYNbh;U\*<-M";70P*MHzD #G=rW%BP(sssrㅅ|>~ϟ'N$'Pd|~&8IDOrs_OK3ÃFpnc3pKNΕ+$V0ס<͛|>I6jWJ@|FY3W`}`# 0СjU%s ?h.%_#~N1$20$x6GCPr*UXR`h 7@e?:V-~vrz%GbT\rzﺰ˼Ŭ f۝.NY%Kn(U椒m 7EJoUo60ncJF]10[*Ʉ;݃`^ 8` Հs55 Qv6Mɹ6t,HfK3c@@b/Ͳ'Cbx {1W~FCÀW?@xia1W&ޱDPٷ1aJ;KH8/^E{0wqC6| oLdn8!Smӡّ&g#v f16&uߟUEukIO?z4>^ʒLL7,%"P-n"MY(,|,''>~ٲXG@h4ڜ9s̙Ss߿ ӧo>}<<=<ڴi׮M:uԩSg={eo٣Q,XpcG;#T *ש4pu;F 04H-ʅWTynyǎKjkgcwΗ7'/&'W@*UaU5/ áѬzvtڑk(B!A\8a% rzz8uI~~z/ rBAPzzBRLIRje2$ϝz?^^$٣ֿgd۷ܸ̜hcC뫯b1 FIZVS֮uwwp(4HahqپdgKb130`-su3'6S9B!q[PkYÇ\j+VZjժ#G>tHИ!+<^njLfefRϔSRU*$V|Cò`m ZJȰa66 ~MNzѡoȂDKvɴ[~pΈC f-X0e)cC-)@f>R3r9,i0` ka0<N1pIa mhB6h! g(*We AL0a2> ,{P <OVzmW\Uqa! {XP/3XNyqYղp~/<%TJXQpH @i4K7X@о P2'ȡ< @7 d =Rn@gY##.;0^:v:]H{2"9TV'@W`OxEDIԅݖWxPEG5*z]vsGV`7_C<>0pW JuG3ֆ1)G-lsћο}0qoVK_ IG u;h%X -CkqG%+, >BvZ%;%R'8`vXsJdSrtMLM܄'u2E1EkA hi>a7Jj%o|DklϛgV˜). 1rZ/Ɨ:h\k#YspHL8O)gV rzx=m]^5hA,~tر%s8͝>,f]{zl%N_V+?P\ p[ǧ/! rsoHK$a FEEϟ88LE ߖB9L̟3Ѽy˖͛;898,L.zٳg̬?;wܹsSM:5<<44<7--55-ʕ˗\1444nݺvmkRT*)YںOOY&4K{yY6z?U{G^F NNӦPJ)?w zL)lƊ¢K{{ҹjGCBe ^4q"% sq&&u֪kYbG9~sҤQ i4 U6o Ꝗ2ز%]_`p8?sܽaCimxFxOr 40664| ?plgg;Ilm;*,-SSUoՙV/7o߱cN'O8a#X[[Y߿o޽Æ 6|x뗞JV(Qo߮Uã$XL() E[g#mEؽBΚj+Hhj đG8\>6J#/cL@y5U @>Oˍw  ʫhQo]98M$g=̃? Eh.Zw*Z|]r @Thm9Djjw57͞U݀nC{H4n0(  hnaŏ'R?,L DJGvR?sZڎMD!/TT+e[vʇNa5NH؁f=J 0nW [|=u::!h͂;(ޅu6r' ү95m)%Ѐ$\䚊[Ht-S- Eat^`֦s]Wqj2WNV)zfFY'@(C88LCӓN:0ŇyjߺٺX[w;ä#gA]wt(ۨY%ʑ7DCM+l f4nqO^^3RG qmLN!=rORewQ\mn{HApwwwwB))R(Nq+Vܭ;$8!]6Y9m@h̙3lunNb?gg[߸122.nÆޟ[y/ 4T4hP9kII{.5jԨ) ōo#>}[lٲennn )RwܻRݸ J*V,_ׯ]kԨQƍݻ{~/o:woZZNNvo2~>7n\dd\L)+nn6ʲ,˲ӦuڥϞ%& ûGi47oڥPTإTZp  LZ_35/n5 sI[Fx! Ow%є$nMΈS~$m#m& v#yTݞc\Սo';%xOG@@xa25|pcqwzfS<2! 5D Z9^FnNO e:`;@g@ 2ng>A/H1Gn4yi48Od#HU4xZeVlchTAadS})f&F|l$t+$*(3\℁HYm?Ii1^0Н 8$t̀"8WTNz:yCuЀ\"`BLePr< пkEIsè_/'F9n3s~{6N՟c,a6أb2R`rӆSe*2U"hYǔT*JjuZXDJg0_REKd|~<ϰNWB-f86ƒ@qo֔H׻#Tv|o7u~QF:IwHCˊ4qD|\ēd2?+~qy.A>8Aq-d]Xʘy8UL"lHUэ4"Qژ9%0d1!^|8m|P ϞM~јg%Ojѣ#_ 3D r7bḧO'Osڊ6>Dj5kVG=zczmW,Yd@EGfh fӧ_?j5֬7ҜWKB,vwJ6!Of))y!kRSUxzmwaaB }6%7 ErB֮]ťlْ%?Or h…_vǛn߾oV-0,KiݺSZT/.G.YbHԴ 7iS'wwGY&)ik0P0 !hNE|={ݻ@?OB~ӧO+WlٲQQQQ/^`AttB—KKSNJK䷴j _&Je2B(-WNHN,[6,I;w?ͭ43?&M ^`}aT讝C ȢOK@IKdUR; YO A :HrK26.[^9]- .[&s'S&cu`%79_"q}~Woc[vLb9[哣Kٷ(wXRod>MP;&9_}C0z F҄ q]`3dD@LGDp#zE j76Fkǿ ."W~AU8i|Z\ "k \TzvxSg{ݯy *pCٺXK\=<|&ˑW8ԥlbe^R锆u'EPݻ\C\ٕl6C3 JGZR1pKGhbQf622'D ''!/?7G~ >'CP x1oރJ|F[ƾ{"|r (?0cM#I$2)=hx||z  ʼM4TòMI:;]վx?Z\\jI658`Z5K< \yT`g0Vk׮?z b1͚͞ iYYL_$jUuCtiE"a}߰XV ܬGOOall~H{$nS^!,6I,{F|vCt6,ssF" >>ݻS8Wۗ,\E|v|ĝ;^!!aaZ|ׯ_-~tbbn0bX(>^%T"3J$Wq-3Sg~͙Fɔfȷ?ȋ~ɋ~> !)IXrr̟UyB>>3ca1jٹs7 E׬YťB2e&/o%$$%Yvvvv sFcDģG& J$it) 5h~(5 eZ=;>oGRh>}zJ4㤩OC`YHrF޻7%%#l876o޲e>>yaˡonu+;;/|o Ç?}n2~_TTʂbޗ-K*>sWJU326nP  AD +Jo$!nu*ytxf` ,ҙAfZĉ ?_(KbIOCgEopf'zEq+8-B7vkDҭpp VAm7Yfr|ё;._3ڷfNbc7}YOwר:eRt_=M92 FDpU?otFnpt=D6;RoϨ@[G?H2ΙDߧT&kbti5g2 oM7%~Dj,|܀ޗ_m{PXUM~ZדC 4Vj譩.|q3i/f*@7XV[?3K;~.5vP߶g,sE)Znjb1=:; $뢯:$7%Jm%d/d<$^E|;ٖ@YhA|u'u~w7/7 J?h.m-,u~Gd[!&fժO-&DhaoU9sySBO/SLmjrq]l0tIy_ Fh4jx{ջwR(D)SN2w^6 #|o>7c0t:.`tјeoroZJ_W<~1ذ1L:w@R҃ \0V-Xe֬Q7nܱC}woTTLŲzƍ yTn+唶nx1?XRlNK[wo1:-%##&&7W~fsRғ'͵k[fd5fLrE͚MPHt{xDGKvK?#JI_>DeigOrrzjGjk 6lذay[ffVJW"4 & ok22NIy y{~Z%JdDڵEh}hq#F҆oMm$b*Ks '?cd1btN9N{zMyG= SUH`# -B\bk>`0=.@!>2JS~~ pA,4]tѽԊ;C{/L3Й36KD (pف}?=(p:҇YG=Xbh#:<)u6ot2F`Tq)G|,+?wXo 8,0$Ak~@`/(Z&̌<)G$B x$w1OJ f.VhUQRjg'V8\:wv ?Ow/{(ooyJHL]NXT?}5Z_Oxbut~hnjAiuʮ:MF)Rnێ?.rzWUR~-w[nZ2ְ1T>٥ҘWƤg+yܹע3ˮZaZɳgf֭-߿R>JuZ{[,̸Xӣ33?>.n„iʗOK۸qg/>=wb̌h|.͛99rڵpvMˤ$`?"[e BC *\R ʕx4Vmܸq&M߿{6o~Fc0(T*4jv|TK;8]}ĺuݛsHڰM@X&E8xHQדGCqO#[H6Q66=ޯ2ٌ{|{ o%Ƣd>ahI%.ĵ9B~B{5_(E< szZ:iqj|SMuBb(5 ?qM N)~)Hea7ShyvL!Z^X#s,$NXh7snm%K.5aVE-E\P >{Qŭjb] S֙ ^SeoG0rh$QKK)˳rZ^i}OaD4nC&ˑS3/Z?(U=f{Xő^jph&d*x·dsZFXas%"XXq^2s\ؼm>xO)=S~CiLcS}ߦ;&/%M{sd.>}eɅZ[|~6"2D²Ri Eޞ^ѣ?123F7F||BB&O.UeVFcj>p-s#ڱ|ɓǏ4]ߌ d.>MT#;z?9na%fI`'i%:+E:aPXA C. hoH?Jжy266 ƷXe[cЂk`q .pQfCNұvi[:em*sc jk/ c׆Ysek&械~ <{9i~Ȣͣ.0ī1؅;ю'f,^s/*HsY٠5u=dt3Y~m47W.}w =uk;svtܦ?5f~ZI]%">"v:/c"]f?5;Ņ w|[rGWZGBDN.{s %%ak][rS;"ј;9U^CK$^^E,xB%;۔&>Y,MDnfsDĠA/ aڵcǮ]:^FoT:8(ݻwڽʕ+V\_{q74Z!aqwo7GS_ 1>}ܧk6gg͔͟: WZmm|pZFqttp`locffFEEG[,nn,Rq\n?{ b1[/\Hi61SS##֯]ybQ9NS230!>_ʗh^ݼืEGDeћeYBZpscݻwֵqq 0hѣH($2eJcϢq;FDx׿-yxbq~>>?<++A۶ojh23MU6!b5h`ÜEb*t tgHDBE{}:(j%zQ@@ = >V@6ڊ*: FxTL( |+Yƽ2O T GmUc4\/U nJ< ?cb酻4={QGbѰDHfy,B }N osR/^]0CM s ˱ 4fHzP4_:E+Ҳ$]j1W""OUw7D:}l$3N8d[]i55j94Yg;g+5.T>TiK `J tWP v`xó./l4*©|h-K] L;q#gөE72g4pf}kY詐_=\!_yfUP%E Dҿ|Y{ԓs]Y/)ƻ3wf;9CоxJ/sJᾨL[s[ue/[3esr1qFWldJO7_OK˫srPС =\9' Æ]- }TYY*+V,__1u-[|rbL%raCr yٜzlbj^IQ59bo8J9ΖAh[RǧN%ٳӧe2O|J/>>)bMHXbw $J53'7 _50-mݺ>}8&SBƒ|ɓ}NFwQX\.J O^^y_| *xbO'Nyƍuƍ]]scPJi~|yFVVvmƏ JgT ?zbg CES93/8GP6L%!QJ^ȢRWy"I9"Y6@KVP( {;rGKLn^*rL;ũpi-pE8fnY*/]BlSzdqZGV厫ڥU6"gp nؙq +/VxV+# -/%ǶXAK֐ ip9/rBMS_N,.ܷ+QwhɡW | /@OAѽΡ uףN!$H0yNbg(G7,m!Zկ֯\|o t=i:q~Ҿ |8 F8DO\*C;ϨYeH6߷_Npw_ 70cg-mK4y7glJZu>>gGU[^m ּْek6)>p;LS.ZsT n'ŊǤCw 蠈:v/ޥbڽ\D3z%ܗ>栟YAȃ!6M$%OCUͳgfsv$*ߪ4*>{6eݻ99ᙙ?ٳg͚={nzpssuuo޼}={vܽb0$$h˗?zwE}PQ|U,`?; 6xxis ߷O" Yx,'e?%kMJz-"! IIVGaXƍN4$vR>"l6!,Z&;Ӷz)I/JHIQ_Nz]svbj9xAL׀T-J'A Ma)Θ2td {q"qq.r[; >8D! aLJ1KV'|og-e`UZ9 {n^]W ] 2u-;:m Iߵ|3gUsgf^9=shfg߽Rgm[11IZɓ 5eMzzZZzz^{y,䮎RegTݺu֭f=$J?Hr>G6)/lY*B֚H6wޝ:+J$iJ޶V/ "? \z5!oo"D̟?mc͚U=&AtZ, +V𹃯FLpFrӳ*ɓ x,˲ݺxx ( o˗IlYGǏ+x?ɓ/rsT 4ligt+W ׯObͽe+Gx{*T:8xy %`4RJ!Olߞn>s…  #s5]zy)IISj̈́Pٰ^("Q Hcd> ~ Vy($[^^WɖlA[ЕȢ "+1P`ܛdvƝ )J\TU$0wP,bCVrMk7h PޠѺd~t)4\3 Slۡ)0\*tyȚ`@d 9[E@MUA`QNKe2E`A@~ns |*  tlZ7/11Gqܣǫhj%maV+!,KHhԩKGFΚwUO22ΞMJ6B^]+m#G:rdqƎ3g֬9s{;OC7Νtٳ'O>|^;7<\&W(ʔqqq{xQ*\b߱|:B!*  ܺe !.-_β ˸qJej}bvv K:^OiJJZZ$a(U(-Z4wlAhz-Æ}LƲ,ӽC[{xΜ% >8qrVV+3 !H$|M>sjjd2L&+\8448cۺu֭ZY,箮"HsgɒB/PV/NJOPA*UuߥqcrhaL )yz.ڰ  oR ԔݞqFPU+v!ߓ(D,( 2iM|'x& zƝGw4`1cx/2@jP`<v @A1 7d}G+*n>SZƱ-`88rh=f,7C76nwWn.i*j6>^$؍9`>lhjPz WB@Ot9 Axpuhu\W뫆K ɏOm[qpѣǎ=v B֌n@Y/U(dٞ=}}-PKww//__^o0ڵk׶mZZjY}P:~& >}כL;?FXvv?\Wxx,[BqJZN6o߶ 6 X&Io`<;R<8aF)@~@sΓ<xffHj?00V%u?0!HPZT0^y !I d(TaKl5?Ҟi⍴ bi#iX.s{K=uy!4?֐5g1}PC@ !0FtB:f@F +H{#:!})/l5l6I_sE1y@(D` ewS06{!-SN:L2 ،Fͤ6f93Vf! Z@ASv#ڸGW[!pG8\ΑF22zL~kOa 6Δj%H,DKj[XK*Foɡ\)YAGc-C}X\ľL\>:X_M:(cK?EM2\gI. gy%ض͢v:ӡ \M_"x}ul5a~ KQxXKE}ivБ ++ksXeGǥeîW0k]} -.N?/+ՅM s?6U0m0[ٮͽ,}d<>.ƿ|yWW H$,q߭Bs˗2xɓqnݲX49#@)N:yԩ?|+VXVobXˁ80lСÆ%&&$$&)#h|t„۷]R%^ң!z}H둑_\6l, 6Cȋrؔ)|5zѣcǼg edX*Jq>>l6S~m *Ei*|L*UbbV֡CӧͤIAA~~j99ۏIT򿋇 R(;J HrgV|ESCmJed8wSRz{^r7=ω:tذanݺyw-[|L޶L)n]bbz 11:~`E%oe |[ LHx_m+DrPEJ*o0yeP,hB8Z 0&t>\Jm#1:,.Tт %GSqZ\Hx"K ,X'6lV}f bP\-lyMp!+!]hڃov$`4~01mCnϴC`2\Ce5]S7E44]&PѸF B`n3)p | !2T"4WNU^ήn ٔ'`n RzBgNԠPid(`d#6m ^FCw^zooM%M:3Q5_^Wn>KovUH0,-Z%}`EGJ*7iE3HGQ[S̥Y*4D/M W*L+դB4 sj)ѽQ5"%!N$2 ^Z]-kn9ލdS(S;*evm_ Η@ʸܝpiܴh[i^m Z~mŽ#FU\3_륽B,^P AiN$ʃ@G5 ˞zFwh`2Pz-O꺭0yp8N˭6z}\V+J$Ç)~LRRj#q-%)ήHGGҥ%i'6vO?l9eٵk]Ο?3f̘1K.]tH3MDyQpٳ̹wΝwyʺ~=55)iϞh/llذaoIHw?9Z֭6Fkrr|,:la6m*Q"448X*ߏyDU}o[b4rѨ"ńDrkkQ)t0t1+O.iPs_: FnDA."ix&pѕ0l~&Ǽ}3^޿'f !%6(pB3]1\@3d O0 WJY[ `^Bo{5G3p_ 4F/42$' q9yX3JЎ"%IxIRGa`y/Zl F3.Ҟ\LtZ/DFȄ֤87Pδ)uvUrZJxv*6= KA;wk%//|Xo z{eS.!! [mې7m痐m-ZTnqx_#*.n; IIDAT))}ӷرcǎۨQ&/_lrvv`0|W޸qkׯkZ>K=+bD]sȆ 6U##f!CdYjUdƌ?lzzFںuii7o:`o09>|^Ϸ RZO?^['O4׷ow/o/!!oR9;aŊ,bg)fqq:Fm>.+d'(0a³gou:W%" :tw,kfqϫT͚5)).dddefo^:wnBk+|gc4ij4|yflffRj~A  cg&,(-+֨!,XH$ߒmڤ{@z;D|t2z>>Ih<,@-f,q>wC3aWKb07/X5R-&y >l@]0+6b%!L]A#W7#Ly}z Ȕ:Q8{v)P :lmq4ioqbO~M, 9>ZeN%$t9 %™7+Жwm"F ^t*шB& 9?IEG)db뱀e{ONH%eP) ƕb=haxf6>Қ\fޔVqU\P₯Ҟ$Ւ&טhI ůp3^ޗoB֧p}::I2#6Zui~oݗtui)c :#iFG|:u7mZ8pbF=n{ܝIcQ$m`#5eJ\ /5{5y3o:hnj]ݏ~0pq2:lb풫_WAOZ :I2m **!#_jtl]MY7z+UdTS^ҕX /,P99!XV"aٰy*T033F^ dYT (P`BókJf{lԻwwDE7mZ~F׏7ZBM+SKdm>:݆Ҽj㿄Z0;w 99 ͘$Mv__0'G8dЀ}GiPP͚6j!yV?R}K+ի;8]CN'';/Y24T.ߥTy(V  uwW jꜜWju֭[xAqwHb〓'32ZeSRL&92Rj^jgavHnΥޡJXߪ}9N4 t2v ^xOfwk1ޤ9D=kjjkY?̜;sCpH7[ޭpЭB ?*Kc'vY_xEË[ܷEnO56EiBh$uB1]*Nl=yyy﫱zZ-p륳 F׮57;Y1x4>ᴻc؂H{V}sPGuԶN].%(f8]^x)_ƿ?~v R*˖uqIK;q"!VQEnnRkݺoNNHؾ=*J},;;c<*E wqv>x4+aÆ`00̮]2'ˮYp\.BaƎ̜>J{{;e3g.^4<>bȈjoܵݽuQ_"2Htlraabk;O%#$Fh>$G5jԨϟ=PzЫ#O E)T( O3gҲNHKhVb^qz}NNvSWlܶY E ;0`7_.1J,܃}r+[V_kV֚I[hm! Vav9;:FQ<ъc܁]Kw/=Ts{.ڿM*ScFͭ;]o;%8%N-۪U mi~?mFvB1xbڡ7TlTFu|U;Ǫ 0>x?F%cwfo%b?$0~iʺvk|NrҊ>ȯcv/\?1 ]S _|y=ɣ }~KE1ىbEnSk~rA5߆0%@~Zn@ *4cFٲy{wdJK3bbVz$cqf3ƮYihԩ_>І .t,Bbc_<22 QSR|-BRpu J˫xq@ VqJciiϞ)r9!+WΟ斻۷3wB`RŊDڵh! 0x?ffL&wɒצ͒% v=99ϯZE)Y,J%&M\\|iG%df:#o]zU_?*''P Xx2}D7/KIٹ3))5]90BP%9d*tzh2:W-߅t:*-mӦApg6mfͲɄ6> \ƕǤd@JFHkw(č-8O{Zc 2@|ǿ-8cETBzPNj%fTИ{,!w*l J*ִd8MOW<fF/H,H#NvH%U3(ɏZbHAQ}xA mg4޸b40WjSKXB$,Hs> ^ZkB2t (= Y+\3)AAprmA'BE40wurlC 3aIі6d+8߷ʆM OS-MTkcO{*Bˢwt Zmmv9wxۅ쩖M pta=trpnSvo|Z6[ƅ:vXgj5F>F)\gPϦ6&) sn1/Fc߶[yb#j`MAaTݪs~/d2KZOՉfɖ K"j?U6qMEg(;6?r=ˑ=22/vs`gM^[+,ӌZPMK8b{ŌVM0M]zn(>R4-ټjvl;Xd!D,ɴsrVbqtP5m~ѿժ{l|g$%,(: iTk׵kNN=ǽ{(_ww|vb^g~|iRRol޼LD1g +oCo8wC)qqnr֖-DF;z;,DB?FR%11< d2JCCקT"EcRJ 9{_ tI 3  gR0陙XLHzzFeddfZtf6͔ s\۶˖BֈL<32AV1Ychܺ599#ԩLӜRJ%aP2e E WW'UJ\$ʛOZffffV֛a\\||BB޽zy 5ժ99)VXu+;޿[,۶%&Kb1̚UppRPyy"BX,v˗&7nT'OTGef_}凜Ҝ3g/'eE"'-NɄ6ރ<YK8|oYcʟϔ,M}Q(l!6Ge>$RVU YM:5Ii\e=LT7v*0/7cg"`Gv(>EhIn=\~QfBILY f*)fv(˕g;r˳X` R)" pPT Huģ\P ?P "P A g|O&} R8 @w "8upV&7A 88P'HJ0hLK131%a6l6?p2[+jtiFnJK9ͳYU66#$ݦLz O4Uzjwg#Tܖ!~,rSSta:-33wo4bf @K1mIMI+d\ݺQyuܿY$pn*ڬR<lX)+,$UX.Ƽ߉E;i+bN9n6FPjn0ݏJPIfR 0-+R'P )UOZvˊoJlpp(]93d~[B–-/^z}LFr@mKݼYg_Bh6:VIe-?Ej'^Ph2EDƗ$'')ǧN%$*e[ [F ZJР P*H3zv^bbrz&͛wׯ߾m0DD!8@J֭;v,H 6gʍL:H1I9 GDr|AcsgTC' @=F]ur~9j:Fto* wݮ0ACDJN:iĢ xq{ @JhC\$h[0iƉO&0IEq1= WK.hd'*H:*r>X: ^ 0~g3`5g yY#AgC,(2p5eGe8I6*X5aӄ7'}sAkw-z [pИ-qw= 'EO?ܮ- IlcH]ҭR*sVs֣1߽g͌'JyI"I6pԕNW⯜vf;vU5C\ XHGPm\mXABK'%!j @ٯ~?pխ5ԇOG/ .fgfb=\ fm8f `|"֡g_H'dw6 8;רtGZFGX1 (T۬iSd$g~b%#٤/ڰa&&uٷoBL&&$$(H(jԨ\Y"zM˗mXeޜE_gQ8;lFuJ?I~wϝh. qj5]~kDX$"D//kvr@&stR_ߺC{Kpp Ԩ/f󟙦"9Yj?7'j?㏔t|Ϟi4:]w>~\ҥ H$ΩT*E"Hoej_bիO8v/7 C!rL֯[Ϟ^^nn #?+[E `9s}}{hΝG }GPq۶}=d2YѢ "{-6!DÂhJensLzNy⋟>+si*rf<V:e+9i{c&X{"}~e߃LPxzisgԫE 11W?}J)Q?hPߎLg:ao339d8֔ 6Ucݻ aYJQ spիsgK Cnj̬Szud>} ҧO?7|Ajɉe eY?x`2M2gNvnذt s.Yӝ81}:!O9އV0{X&S!!B̙&9:2̧y̬,U&J 8`'ΞST(\]9SeϿ*j33ǏϞP&M\]+IK3L& `}kS32ޗcoTjպu۶11QQ΍ė.;Lǿ'>=B(3A`~bv',eDFO%/b8X9'ӗunm(sKܻw|'|jZci~+8X^+~ECT\=pcVn܆ 0pbŬVbII9x066]SY2~X1BXT7y0GƷo4j0$$h2Y@ذa㟏F0{ Fj4N}oeeQڲy!r0 h4NNJ%ۼy|l;/&'ZBPHX,ҷ(o"q;Y88xYe)'k|w/y֤C^17_bҘh 3lW1^_~ Zlټ>-oX~ݺuvܹsvFVImX,;޻%J.ܸ2˾O;|СC>tACaҥ $e\?%h|$D.0LpRϲDzx`4RJ':tTffvәjի }I6Z:?s&IRihh2YM%K6o0rS~/sZ[\0vIElvF+tPG.:K,)c`^1࿙ @o@Zik2|J1sS8mS*h|Gnk L6c=LğLG -$y!FMG5ր L*M[:k +ҳ.YSa, QeIَGヤgzdnS@rR}0*{ d6(LXH 20 fpUmsb=)s2X`W{իam*'~F$PWz?)%̙s_2 g z{{z~jݶϣfDޞa?~u[3^K:^ 8; QN~ȇ ,,I$x?X̟γgz@gnXxHHϞbޛ֭[~-[hѬٛeURR%ٳgϚ5}3f,_t%d8Jx {3ooXӧO<~駠 ?ҥ ԩ,Mi'3d2 (ޣ4ppZvFYYǏge%% f~-(dtcvP/ߡR٨ј1cI6iLr[O̲=2) ʝ &>!s$etJ, =M2~ FTW0.ۿkM uWV]VY RIDvd,9 @K~qːؓXRfi75+w:*H1 t&z)l>*{NvY 4AN4& ^sg  OXREUFHyH#;N;E E4ޱI[x4s(XEބ`IBx"7px z\=>@ Q ڠk1YCA@ҚKf5&8'rs kIXNwl6l|.|nݫ׆^h. SI5N캺E ==ʭe {5#$|iZuRh]oHvxڵoxy\'cqd%Yn*[vC EpO\,Ɠ̞?;NLbg %^Uz?vuGL=0i~]ѧAkKgwߺ,Xq>g6w_bD4ZZ~GњtaUwY4rG}/Vb]x6iƗ!׷W<(qnsϜIL5K:| yͭaC)#hʺv-55GƷٜw\6lBȋ/u"Vj$/cb,t:_?tܸSzQ.Ǝ:5+ a`{{b4..!je2B\][L fj޼aCY d fP~e8ر3g \1V^ٹM=;wm44^=ǧt鏿{ }{۫zN}׿=o9w:\.37#hʕ99FC) djp!wR`>nnm꯿|x رODEU`o_o"5ԷC|ܙegGM,Rg@ ȰZ)MHhj>?5.dZ4&*hZ_Psrt:LKjKi47nجل 5kHȟg0R Jn/`%IJPy۳L["#EX$DQGvLuնd: ! @i;65!E  GOF^kC;_5@4DL)_=htYxQK(ނ(&PBhrڎ"-v%inf  q2%nY8KQm0TC4G uAJV|lP8RFU3^!% @-#C;A2d=,F:nJ"FK*@!Nђ\UAQ>ua)#4lB . Ds,apPS*P 0ͅ%!0l ip5$*Sݽ[;DS}uE*xJ/@Y#6?J͓aѦZ]{-|o<3&.d@0:?"W8vmnε+֡#ƣhaT Q7fn,X,%}YKn0RnaogW!<̂HUGַ. қ G_siUq-|Lz+$Y?MoɩZ5E,Taî^e”bc+Wvwwu[7/ ,%'TP*4mZ2z}\VɄ nV)0ݽiS?ņ _Z pa7VPXeM~ݻ+.\j0!!Bȑ'fez^O)sTTy>cƄ ?wN7w?;:YYӌ dg+&3|?ϞR1̙3qݻoݚ+$$.mBN1(mذNt޽"ga`hhPPb1-Z̝K_r_.Z,11|MXTusKPD"Z޻V޲  Uf5>6ʕ+VPׯ_oذa <^}rN^_Tqc\pmFr%3ÕZjmOO,[6,S(.>>0r[9pu8ՕaB^ו|6Ϟ7u:ҥ 23pΝl~/l|P,`F [6rZ S)z{Ha$YN'6=6f>y4=L([nOsQ Et\`6bG7c_F 9tO+[&{gcEЋ4 H @ʓ r[M@o#'i렋`]8 A*ӆja'N(8IGM*z[T-ќĺRg\0JEO\eb p 闅2 ,pp#H1܂=κ"'[`.N|PrX!aV!qpJn ON4+Y!4N0!B!4H\IR㶁"j9R,t` = BZ ;8H0l J5 fq,NM2J|cd9hrYzӪB @/@`E(CF(wXI . -K7L&u0^@s af`%lVMNǬw-Wb\pS-8|K}`÷D}tv}sD=L5̜_-{γ6= v>07G?.Woݦ->>ʡLM+wow9Ԯ <;пu1:'|P@m.V|~J۰RƎ-QIn _\Z<=콯OFŋwr%LJf 4e W׺uG*VkafYiiϞ"!.. /^DG[,~~>>%W'[6k֠T>1b#Gt:~ZR^<4iL=rIͻwAz[rzzԨ!CǍjY}f&66!!"HOpq ̌&dϞCd  Ν2ё746mڱC_vmϒOL?6^ #PڼٔV{6vvo:.P/]snz =mۖ^oX}{9344 (H*}ɹ ܾe.ߔ , PZX,?7vt) JN69n椤͛ҢZyJbYի m! #ET OK# 0&YW*jq ٬[*A/>Rb cH8!x#  @@Hbt e:'p@R wMnwY'e̍)RDZ7]&BR^8~x`ȏ?/~a3H!RP>'ΑRTcR "!ћq_ `?04(D#!BwI,6U8%UMӫg NfIX [P-P;!'Z.00~xfܜHP7Y f<@%tI1P37>{1r@:=%x ЂҚ+ЭxXNw2fK>zׄFqZh5%iSGu1r5MpXx? &0VrbkJ 2Ϳ8IU>PK1D{kFY6p}֭]v7o0m2a^LKҶfW~;xʾ[Z:we*v+qNTҸ2bp ߗWp7uTϬm~VCWLgg/]':\ᘝqڰְw\ϞtQQjed\˄_'+WRSqt,VlʕYV&?>=U>z~Ǖ e?FG݃m/M u{Y 駪&.qw\LC;~v=[X Cji7\T}c٭YtX!ie`ϝYl܈ܥ@ŵJ)BqiZ (Nqmqw  d7i) m!;Ͻ3\!$Gܕ6dٷkE}cLC'-E1!!rJkەW,SUq.>d*#oWdW;{2·m*_,nܼ)FP[zѣ))R hʔBBw/ZTmd9=}'7HJ$TH+L|i4ezzttnܸ)HΎ*tdK^ydys[$$T{17  n܈v87__.`فG?~vڴy=>\2-iIlxKP{GOFz:#Xoڌl =J e#ʆ𣃎dsi1<`^_|)E2\ ʳin_|c0K3% a1o!Y+ďm`xVҵ$7'9^ǀU]$DN2CI':+F *mpʚ0*đݭ &O6{ [/[Ɓp>^Ѓ1uЎ૛vLG7v-$T$lGÉ-5d{]tE9]~iM|ZVjR޽Y,Z5mP >~|NNf *+',Xl4l؀Zmzzf& Ҡp^nϟV7aL&b; OIK9`?˜ټwoAdu/ +T߆ ۷ ]u܍ ΘDz6a6߹t SZVб㻼.WfG/>Fz{{yݽlq~5==+k֬BRB[ӟ:tСC7/,[| Ν=vr\.0,ۼV@02~ ρ&ӹs99F{{K$bqӦ^^jujuT̴ϘRZ9u+&fLo)S"#  J CxV`(C+"B&׮-Y2<ʕЀ#ߏ?>'h|qR22/1 `~cYccybׯ4ϯwo7Q@48M6 0_ck.>AڅȘ(Qkt*-+'5zCv"ءI;&J#9$8Jyh݅!-j`_\3ZzV ާW޹>Hz!åIgƯ,t1"#? 2xe|I##^خ1=CE~7b=!3-J|Ӫ+#wG"UJds'EikՃ/C+3"RGQhԇ rx,Idè" $6߳lK%7,kV Ү$~>pzAI~5rY -.i\ny ^ %Y;;zr.]Dge%//3Zsr򷤦޼0kv II>>,qҥ>> bZT2LvvNγKZ67o޹t\.!֨ѿ?ժn#\99II/>N.WHq:xN7h 16jP0 !Edɮ]*//JϋVhg׮trgoܘ2%>>==/q?cnjFSS U|*T2ف-:cF2_G23Wy^)ǐE&0G: ^?Vl_+dur'T}1K;&1:հ"t3En'|| |kۧh]o$ndȝM}Aѽ\l/e'k1R[a[ne$xkqxMTL>C;T[m&Y3Z2D֌ohb4PmP wՃxH/Ft3}HAER+WQN2vwY ݒm|I8D| 4~Fn3 QjdӚjBf9'gLLn$2~"vu/dg2 < HhmRgJ i^\sA7hJ7>w_,E.H"'?\ug)nԗ%~ZZyytc2N2B ]Hz\dQ)he2EGm{h3^s{JpwYޗ?dJԙ.2\`2Bĉ,Ԋ6r^{\Kp;I v(,˲j5ry{"QRZ*Z^]xbErrff^^Z_}#:l؈CNN3Ra}lŊbqB \hX \>cFddp㯝;7!!-g;&?<0iҥ ĉʕK=::6gX8~ŋRS 5(b3IIv5nÇIIRX4j 1U q!jQjrlgr 9OqNs(.'D[sQ~ `7a>N_T4=D2:3!\(ZXɮ0ϦEk>aMe67s.pOjU>4g'P@+4!*GG[0@ ( SvOPc/lн>RLe*{ _T[՝"7o _c c&^Kh% ŧmJۈFd8 NmdBq`@0A8\sFY.:Y[v<BdvyxeUt;9),AdVz6$.l(6 =K4B.R!M@/i!QͣLEu*}Ͷ,\I)- b|nȥȥwXlYP4yp nRj7?&Ok{\adȽ?NK܂P(JʴqvT¼Lڻ]'N:ף+/Q9+n| ؖI i_e[A{xBs*SԋTȃ )۶и kqɺrO~<̧?^\G~wil:W*%Y\1qpd.B߭4( T@,Qqwp8l6C"o*HшLrLPW. +njj{/jԶ.#UncG?ANcםT.C:V۞rC{6tnܼYFV+(I//VHZF:nyJs'6gB_| :whcLaK )/O/p͚k*Vj{.Tϯyso|'#:bs'6%!7Ã_, :wX,vٹx\vvNq`Ue2zuNreV,YRJE"75B"S\Ѣ͛_v~llԩTNThxaw<|vrsgv>}XV}=@+8|H^+_@{HGK0*T bƓV@p9%?#r,f}v"WFБHgFoz؜{2~|i#t@lbay? 'zƏ +D7Ȅ#d>ejc_,lA %*bf[(13t͛|)XNjFz1C ?(Lk~W×jj>RrJ}tMjy({^X(I(1^*@ td#.E;W]ġ9m:-_Rλ9'!U&"Hs9M3`"$[ѐ d  0&aGC2=ݦfcWϘI?A5Bheܧ6?b)o  n3psֺ۞# *tXcDklfQ̯LD^>si~,m'z`C㵪_ڡîmW| |lZ9K5Qags6\gT vxJS޿m_mwqC(/D7[ue`URk*@]f({3ѸΏ#"+\DmpctUX>3)z8B,GG޼9`3%J̘QNW&dyneCK~^>%HnwX?CbAP !̶h̙]׋D,K6osru3JhfӍF!g~_~VKR)!7oFG;.\q`" 7cGΝ̙AFn֬aCkڵeIf2ʗ/]Z*-]D 8##3Xe "D#ttZP0oòVmؐwի <)_F&L2\.>..'gϞI-6Çg>)<8/99v}ݓ?S^вF5kѣgϞ=/\pSN~|llJʕ+C32xzb{y| S G[Vqbvrznvr\r90Z-DgΘL6[^Qڽ{@9l>H:~RRf n-'L(\80Gv˵~}j^aCjjffBbjEATIh7jG bO8oN'1*-:}zb^/o_ffNo~gn6 ͙Ӧ8t2 M+e$6 IL6&<8.e_To7/C %7l9XERn!*_/RQ]xC1E\aPLHN nꔈx 3?~8YatnȆ9m]Y+[m Schd_sC7UTj $)t0Ui]}H/Rn<@I!R*"7@ PR|@~|, n0`>d &xm-9yO.R]D%?BFM d ?:>|+7o"5P'6 _]ھ06;l`)mEp]zGA@j)]A j!CC+P wO?+VʹsFc^qZX,N"z^޹st͛02YA|/@VGżLb9 NB&J@^B 'Zr¼2odH"jN swb$Ԏ< rf;ë"F]Mj\ަ;H7#܇vrv ioLnXqAKP:d׍%^4kcrnb) ) j1ቼL xRYbs" P"rS`0HJAO <,4]XAku$KNKU7q߄ 5;H"nvH3*C8sQUr 6 pu`C8Y^nS?yЂQ}+׬!rB;7`D-gISؐ]"n|bomWwaU*=;vq q2?ӑY-WCGucP'ѩ,9ښ[/}v1sKVq}M6,jђ04-G/,1{6bvi?~ϥIu]:^Rtz1uFZǗni?5)lv\V,*yrobU11/juȥK|rhBҥwiiVÇfݺ{fvvt.io-q濊Ñ_4a.;ۻJ ${녔V;wKL”vΟ~T {;thFСukBn8v_k:}JqÇsNg>ݺTN;g7jԮ]zzt{N Kz{ ב~i\'Ø wWg=LVHPФIQQO3o R53zQwFGGGϜ9{9*Zto_ffv>z2`@HH@ƝT*J  b3v[eAG1b#枨VI-=7;{'{L{nGaHu.fcjx҂Kgqg c+L[|bmԎǨR[a)ya-ͽ8i;N)=98vXtUɻkmöhջu.1OUU3,ݸy3 gf>ãJ5w8Orm!xUl],{75u۶8՚uk\i4:o|e4:k nܸ)Xx>QˋB_.۫T۷Zgg|׮de]zQRrIɒEBm5k6m˛={Ѣi~17wʔsY.ݱc^t(dȵkl˛Yd{^s8o7sy%朜ԙ345af5+VTU1Q^l0ovA ˥TZZ|ҦM/GL&J2dsΝ;hbŞ9/NHHIaYBiUm0ߩwo޽{vCC_Unq#/jk޵Zg1`@HHߨ{l)CC A//OLY7zyGpԩ]RROW\x.:RY0_}}=d:sfj`| HF.u.PO';:z -4B J_Yd$uv3#f3H +YFG+VC~FBxWpԕdoyͥ{0k*Ϯэ7^XYR__\*{ *7EZΝON}@Fƾ}C^`&$ ɰvMPxWN0 ;Ppmڴs,ǎ>m wcbΘw X,Jk֬ZU*ݲe ;׬U*YpPiӎ:_ܹO^"d wCV*JªU6mXV"y6/_ޱ|yPrҍu:˖2%""(_$b5<<*٠qw|nnu+tz 8hРASU[dŋ_x0hy5+..%e…by9C.|$.q_=dȐ!BZ(ryޯql˗ss7 *$dCsČ GO"W?eSS_)(BHf^^'N|A2w-YVg6}]R) W<әzә:n^ 6~ҥ\!q\aD-ik"Z.R*K̇FBo/ыM3Q VYʮm&gٲKYbR@ԪRYQR<@ZYb{j<׵1ѥX=9UȦF(;j=, esʾU{V5M3Vzy8u^J6 +LlnKI@8 8rs_z|RYVKHbV(""j{}-%b~>]ҍ7D?,8__'BcV+bfjդR᧰]8{R`u9n֬ rs[jD>xxfS˲ .[f2=|/PZH:j5sK\GNΞ=&N;_~?{vTTHIWjUm?~jqǎee[t:OOO-7oubVj&Le˖-[fZV!Ŋ|Y`ʕIIii5/|ʕVݺu͛O#8O"g5˖xGIDATÆݽ8B'GE[BvJOV^  UfƌE*TPHZV /k].ƍ{ .Hz`Z)KWܧ(==ul8ȡT!4D-XsO`$($PuLURNELU5sd.zh _6-ZjͫW_M_QILDDNJZYFGu=e _yC ΀l A]%yi!^~la)SRG|F%$蠁7jsv=`g|wCuE2/uYeMg0$ y#’W =GC#H|bhHRv"JW mSVۜA5h.# $Rl4KQ ^D&6;- P%o#Z‰ F(^-^Hqf hSvE9jNWb\?M_:SJ\B||k,0;:ި|{zOuI؃2 `%7WŴ@`>|?ΧU60uo}x,1+@}؃¯"Jq^j1EkU7@u7ErrΞxzJ)SƳ[,L/*!hAGƍeOp׭Yh  ^SΝْSS9onʩ& V$z[JaO@8w?VTTZDѢnԴ4?%4II_?NCN*3 !RTh>:0#G.:vlXZJbW֑#zpP*cקee BpL7lR)r/*/]/4(ls\.`o޽;##+++xFcnn>Bh曱cnjyzX,vӝN92&&1q'}ϣu֭o(Å/X,Mڭ[@?3iRD|qb}a@ G=ŗ;K@G!E !Đ)|K-Fj9Pl(ZB 82^34+3RKj/\:%Ftu臨74Z4֦I l`H n(i7E;ƙ]ˎ@V!9ӝB9X%)B#"SH+i3;i,6 iaҖ@6No# &pZ'+r#_«jhVfy_E|bE]NV?oZH㪦i !4NB.&*yyKD>N@޽Nb**H$sF~RX(Wo7 g080s*Vj5# n۷>g`K2X#vddv޽&Sf^^Ͳe}'Oq>s`J5a~DN]{yO.&SN^/Q_&ŋ/^d>,0G|NJr88nժLq2W(E {1g!ry|d/D ZڴLpM\'?LINB̂7Ci{(ER;@3`VeR%~s#*/L5RVh|\_үvEke d>斸[ky&';:sVy!-EKiih&ӒhW'R!c"W^], R" BE~K_ٽ6lUTenўT4t|(F:EjnΓǐYF 23;/fJZ 4u}&.)`7ڈ?0Q?`Nmf("Ks2tf g[u-_g;F\ad̗(uR]E[1k]mcnC;o;FI4Eԥ^=]oYNr_^-7+ۆRmE{14:k4$(3grp“iD"J,V( ~WG|%wݸyU*U*ݸPx?#1֭v͂h4T*aZ}s> 7z{{y'DdˣTh(ݹs>O[T*Za33y>#Cy^\tN'0,KiSZjZ퉉ׯ WRS}}bML'ryƍ5n:}OJJIIMС}v8Oi-2RT(M zxA7$$0p„8yyQœh1cƌXt+H?;9nw8?y2'hwӕ z_ #P/҂.q}̊ Vq5cٵt.D {LQ{Q۱S?G HPjqP87gN'RAu4 v2Ķt+GL6wk˴ a0f:5B }/'gG}>וRwOqMD{J} Кu<5}={8nAAֻ ~0ƒ iu)NC{X5sЉmt) B[ tX=uL'ju:[_հZ攔=*q#i4WUˍ7t(-Z4wq\.339N 0@9c\\BշYYlr8\.'dErs?E RjҥW{XNR@$J)mxD!Ǘ,yͯRD"Q־د߭[,R)˖/j۶:gF<Gծ]JT0<_~٭[niiY̛WDDRɲOM&M*R$886fxLNNO‚O?-\hQV^F=-yAo4?^!,ˮ^]lѢe(:yArrzf.]0`@xxB_p@}v~ߑYareYV#1M@6 {EeXW$H!: g0!2b\<G?XI*}d1@fq :mˤ^ Y"rCEXWV=MnEcfYg˧k9eUHGC,[o[8iW+x"N`7ke/ݴŜRu 1350 F&|+n\^Gd(ךY4yP#.T?dD, $֞ŬEcF-1/"" )gZ=Xq$H$YXH2OC Mid8 jb҇ЛPT9˔+Uw}jS7DU/+Yp`-NȦC6qFneP7NkI)؄,(KOt$$gG\ւ͟UTn˵MS*F/(!o?v゙l?cvn 0"WxzzjV5ROu'Zcf5n_Zq򞲮hh[;;'gJ<w-}Kї("))'&>C8kh#]df2C/Q'/Ev[xKy'MY`stn.=kITɻE'$˽{17Wzt {|RTII))&yyyz2Lf^󑑅 b4Rq- 5jhJeHBP$$(PUDRF^;8uӧ>|ГwT۶ji4ϗa͚R""*U:wlXΘaLœa3M{qNpw.xzu2E֯&6W>7wٲg?FxߏQaa݃aXV,>[ t :'dN*d^f4·^~}0PLnK6 4]>9mb{DC,k풼~-A>ζ59Lŝ뷮D[LPuyQ\7x2A4~F{{6%$a8S3~3 d 'H蝇?J$^Xu:.9 z~']3;T_9tԛ8!ʉh}Y;i 69#JϧRo u "*KXME#W=zel]4_fg`C)a?jR?II*X,I2JK6-zVYq k-ld<{ =CAA Nv =sBS:+fz],ic7GꋚGniE5\r`:ޝD+P:^c t൞p H)inoڴaC\"/t:l6[~].KH \z1oŹ6,]#x328N$AXiӌ3ᶟ_<߶O?jWƍ}(u-j52+.};nqq/Z_Ӧ͚5k~K/O~veYv"E_I??_߅ cc?>UV5~ʕWYc0 ŗC,֭+[X>j~].0 :\G =:,NP7b1"(᪐h#qJgNvRƦ_=μH8'nW6J/c${-\7VeUwf;QG۴kxu{"9ز̾_T4ZkkIHnı<6;Z4CTͅ *(jo;VU&{$,/SHj;gt[~wԡ!Usn;)rVNjr:,っs6a$ncM P@0y,0OyC?s'M Noqq[S"t ǔ4͍gB){Fv[F"aX1wMRPqob-juɒ:]AGƍB>[am8HIq֭;wg2<˲,!q.׏?.^l2lP*T+lӦY3yN23w\&_̳vA ̏bX(H$Bou>}{r1crrti^|ղE5 čw0ً5Im)5Ο_=^^DRŤבsoS=JLR5^^.ѣG=z8Nz H^N'Νg,vcΜٳgz"JhTkKɞo0;K< Jj1(Nmhaõ_ɐA'#+rץ9!l/9 9>D2bDhHABȣG32勺~ƍplٲu֭ oX0 ӿhh`رaar|]ݳXSS32^xX,?XW$=nw8 TyPuӝ@CE Uup* r4` @6?G*؊J%bW:zA|KR~@#$ԸO_\w}FXsNee^\^iClQ[3N IGܝ_*㙼?Ar,3n]UHUPo_oW”aɇEumUdJ  $$ ˨C2&der~M $(;XLx4 ivtZNZ]m=$Z $vJ.Z䴵e1;f†$ 6G [}l0t?~ա1ô%դ7Qe4L3VU?oŤ$XDB/Q<]HtŲ5;[gBQE":7/b˨ ~a\m.gHb_GbV^~ gWWLC&=21k' Q}ȇ/UєT]]9TG#RU}V~B6Kt:gL(\^ .Rs6;7|3/uA ga;?qcZ4wfR =}nwA7˖>ƍPZTUFoMNݻ?r~]U6nOaqEDP. A^ӱlF^?-HCF `\\B˵wV @vسgff~,+PZ|v֬9p DM8-&TIjM$,0SDEyVL̋HWr|tZѨ(JYGG[,v{.n=xpd6?쬬ظ"E"":rѻwyVїG$"K۷M&zsn/|Q/GM))/J%޽DϔlhD"S*7\ Sp؇*PY@ptb?:0Hqf=Wa!g3LALph;@N @R ,O!I$HToE*5b02qΏp-jVr*-Yki큯l?ǖfOrNږ?e'5JX²MKhWHuBB6${jnHI%iJjh/dS~S em `$M+h8!iVt@ɝ͛-jv{z՚{֓uݸyRLG?nܸyYT*J[>*Uv%yIHp!66!!߷'ޞ,+T[+]ZQ?b1!ńTyxڕ;hPtOWp4].k-KJRN Jw;wfd/l9(O.;;u*7bY4))-m߾ǝfs+^NRs  SR^x4[~I?<*i^?8`hEdJD4̞yF;IpX@v ڴݫ,l]6zT MwJt,5Bܥ \@VrM=KW)L-Oʳ*76b?')578/'q`~M%d{5ǀEk쥣9Dqv]'?rIn?=pE)%)x 3iY60ձJ*W/ԿR*g/v]{tM}RYrK?"rܷ]-3\{wIg}H?rd2%t bv]n(Jlbg[J"Yt-&9CR=d.)dJPVY2#^Oea@]VK&TRLsz6°~ Jk2K <T7 SaUXGOs*hiPoM[ɳE)l;C,ܼ0(.x%bhxx,[MV=lc&pGhavZZv6 iSoYݫl\eyY7k65PdPr.,)nRɄⳎ>5Y-R5Zr?H`9BC-9>u}/iҗeկϲgZ31rƖAVM)!]WOw>zH/1>^^iiwŋvX,II))gرwoG_ >ZGiѢ RZ- PpX,Gr͛OHa w }.Q"`/ooؼƞo~yk|wM|#3IcS6lw7Kμg4/_4۸̸XRݲzio 9@ag`tA_&7n#J%tfgaowbHB7n@. UXV&cټ{61D²^H@@6aa7nDFRZє֭;|8q>!;$'_JHFj0X,6V vJ$mr'*r(#ϯX1aD7e#%%:R2Bf۶k۷ss]'LNNNNI8yeL:uڴg=ԪժT۶zrݹc2;m4[,V+=>}ɓ{գ󼃕*i48aaRH}{2E\g/]FFVt:9Ogg ϰ0B?$߿}{OOO? RgW|5<==om?Y*[2,f$Sik[S4TS\vUbeR(W=*4C7Kh_Ʀ 9CihCL9KelV#ɍz7..>$ghqNW?K4FvC0Gڍ7o_p<͖jrq,+ug\ׯ޽7maOAAƕ-+i4IAƍ+\_%X/XF#`6gfbc̙3g&%%%%%uܩSǎi` 4RY#HlNgwƞ9m0vXV+޸)x0n0o{9q3\ʄx,gB5(@A PyF۱xHg#*q[xT$i'(p.'zP E>`X]U'ɝeiep_m>JړpIIC'Eӷ =0ԃ?Doi<)\C𐎇ea -' :0-G?׿D7[띉Uꮙ[`Ёw_À| "SM50хVW $T gx/.ޤ?j3IzK@J2W^a∅'5X-O'" 4KU/^kzX{UHXK<(M?|n\mkm [cuզt:#@E"nWY֫WO~Q{?^3o%~/vz_޺ob;kkƙQ.+;=&]hvm^ۦNAւK7nܼ TE5qFŋ^^jJoK\\^;ܻH=G U 45,(H0|yU(?7nK\b;wCDzӽxL⊸wƇ7ڒ6fyhki"pqOO)o#b `{x56r|f֗/%sf=&a&.sͻG S%oomfdߟ¼;w wA7>}y-ENX[tƍwәa[jgϞ:uSgΜ;sNjR/JEF)PH$(d))VO\cذ𠠂\b2U,'ׄ :lذa}ݻX,?&L?~۷o{|ht:RSg(R$(ݏnْi0LQRP1cD"B)SFQ*44 ukIk- Kܻ3?0P&31[d9޽TjeE1 q0Ѫ9V?! Yx .*<$)im%~V݁BytasHQx}XA " H@`-wZn:{}5Nr8)I#|C@N2 3I֓Qh1_Mk(@1t6WHyg-3GDiK q>|r5n5wkLĞdg!\ mhW.W|] YVҠ%`3gUd2  Kܹf`@1 @{a8x'dOiS<p׼2x7b+[dUK-oo^ht " ͝[-JD>$)];v/(ܫW7\MK&]Ğc2հKm$~hc r\ k'ߎ۸_Cf;m]]LqJ-XPJfGGu- C0 !PܯWYfĈ#E(h-h4/}2ٟc>~gooxҥ˗߿{Νm}|~˖66'{yD|r]][濁B㢢Z26BHrˏ7nܸqׯ}|%-7o*''''LZNwLNNaa66_!#n]kkKKooX  y$ AG|j]aU W>#;j޸f lm6 -w9>2Nތ1w%IJؐ5,2^/,˖Vի/ bD,O>}O//T& $-643Je2;W&&"D"ўр@ koo̡/ cjjVә99sZfaz4hhҤI&MjҤq yj ~RTjbҽ{Ϟz_vo?{`zzvݝ̤ߏ_acj]}1P1i@I- !,} 3v=%r-%PACڃ&8pF&/(;cLL& rt&qj~M*Yk[X4>bNT9#6NٱRDU$xJ6Y7> PDc"kNwskr\avK++ W){L0@ y8V{kk3 )Zؖ{08c~nɯ:&qky^;|w +8GuN~JCDz̠AMTAJ5[ =q ?G03RfB#F~'剽p0V[Rx,4fM9/͏0w7+4oR]K|I\Tp,:*+Qp[eNOܝhª&| sOngu&j9]}4pjѵ{322Gp9,{+{׳Qm^oF;J;Sۃ(uP)݄0WĵX[֯#F@1qb VR *jgֶU+g&TTS R| F$bYC6 BIVF1bINV?LVycX\Vؑ}DzzVVvV uB!0LF֖}[Y5iba! 1 89DFq&8㸋/\xQǏ= c X㏕*Tol'yW/GG[ NN2oF>whR=|8##'gϞԬd4wܭ[nǏ;vlr~~_/;wܹЂ"RJF&˗*բEefO <=k,؍y =ܘ,]:V􌄂ئq9z[@zSTDę8vU11":d1 PAj&!-5aaMW;;U=W?mq/9ൖ]5!86lh`ӾםZמ`2ʲlϸ=RZ5S ~TN:a9$:zg^OVqg?~\XiNۨQffǞK+*j9N&E֍> #ה)s|Cw^^..*< ѰthmmfpaTO.xQ\\Jn22Z;y2;;? 8sp ơ*2tСݻwֵۖ.իW"bRh4:xzemkSxZ^^Qц əWfg,'yzV^0bWxxUpXHwĥzCݒKNr+Z\_#u̫GP.ĪuM,kj!p24@AΐK5rƯUhrJ(b@9YG ``\Ȭf?nYU_rb+vg}c苯z&TΨoDl` VG9yI_{iez8춌C,Xj53sBS)𒑮,뿌{|:zEt*(+t0 S hf~D|Y#Q 4²ń.^mrZ3S斺zJajE%/<^N]z%}If묭5.N-"RF:hGME6t%I&,G>, \fQTq/]J$degB|=m>MoմW8J=(ǽ&[gD5kvzFU82)\kC-Q2 쩦-N.p<Όym]\2TXߋ;MDk5Guo0dGY(u_2z h/![HXOݻZ'[._hRWd/X{Al !"aKS{~1;i~W_iw员tܳyO-טac5B3AUj` lʫR+>!JX/ @d4YLs0B`4\ _5;j}?*|1/Qzsk᫘57Yl:N;{E^^:vcKu÷{hknGGe995$F줷-Х/8oeыa\2hƌq b0b/1e wݧ#Տ󳱉ƌ,!ӦU5eJŊȿ>JU vgYUln|YcSS?vV}ժ/og'xr9Ҡ/dddeeCyy2/\W( TMLNNVjffj:y×>?jrdR__7ヒ-)Q~F;~ [L u˺(<8<<&c~uϷ.ߎJW;w;sf5GY-!V_b˞߰"VKn_1ҲI,@`_FhĻܳjBWI q#;' GL*gMho>#)ų^4{X\4&`[H) ۼ}Rq4kOgt-CbNBqB"}HE,=rvPm©`rAވ[97ƙ7 Us)_ P,[w اT[&`ZsLֈYue;p}! թe*;߶Kʇwk~HA ~= t=Z~r@v_7gtI[l@C:fln˱s  Z4!Q [Kmu}OFxu;78 >]a8,Qe_i4,[Ξ=+>/cƄ>zԦMt4DZliONN&&-]ZZT2ssP(^.(Tɐܼzu6?_Q(""z| ]xهtEEZmrKTT+ogdCI u盙ZB)w떓SvKXXde1dN5ݻƞ8hQJG߿om7#PV3꒒J"V-'O`f>knݺuxݻw>////OόiӢv,Wأ&M--15H [6lHLLKh8PkAܵ+ ݵƧukKKi˗_&))+kؤ hZVoߞ=?LֿwO\ X𭻬9 Ø1IIwB̬yI梆\͚MٺunnEEIIr)SVȪ]^h~p}Oʑ'cSc'OgA2oa|kX"W=!N+[+((Ņ!v_Νz擌Ū[? x5ߐ >izkM˯Ң6d51s@7 " D]8~e; @,yFᰫ^tlxKUg[G ID,q&CS~~!$^04 ժn 0hۏnB&KzkytG=9MmrϽ*Kww> 'Ak\l8jV;Vy>9r{T '? :X6ǪF AE-6)8)Tk٪\A|Bz3a ѮxWi?4I;2 e3&$j E[l\Uvu6^ u7@R6@L!9NL;)qR;# J Q4r-<5`]w< Q:=; jȗ m8\qTW^F'{|;IN sOd?yi&.d{dX$6.8L4}?⻓ާεmX:gJX~%}fv/krgm-mx]fAu};e8AR)gRW]蟹-4kVΠy k)n\-(x8'fe]sgTTP޽'FHBkb7v|:@{шo&y)eB kN󰳋67or`?۷:Oӳ0!a7&M|ѱvի˗4(>^*'`T pphRR޵j+7x<׶m۶m~NTK,]tRYRƨ6͛[Y|~~Vվ@0 3oכwūWJVkȆakFiC!o]\ll=;&&%L-dd5bgѣGݺu޽{ppAA"P(mOKJJ…/]Zbo޼qPA&31^Z3sƦۗa;b b? 6~q¶n_?5Νѿ5@ZԐ ~drSlw-h q%OJh F> 8fK&X=+Z:j"*0YG̘v xV$d<&؁آI&J&^,S.Witg j)`Zt`olIVFx<<@_12%m^NK&W"]ڸ϶}m70&CIp c>K4>:-nLu;\ۼe/v7R5, }6b`BJH־vvI]l46׬XXi˴iEA?v~6=6v^7j,o,_K.Om $kF(ȕWВfL7tĐH e]ai9tС͚5hxĉX̲ry`FRJ ƦE7Suryx CNg0<`'-ylrrd9sFW޾sg74hV[O*J:>bEWׄ@Wײc{*PxM_/X\T$4mqcPPGV˔2ŐҸqJ͛u릥ݻOޝ:m׫Wq1&cȇ y{תSYY^^L ʕ7 ʕ 05ɤOȨu֬Yڰ {[NG{{+~S'{{aCRRz!OK. B'ߊ-m:vݴi/fe"?v5W[v56666;vԥKǎ;vXnݺu [TjFs۷o9rc<nnNλҹEY-;11))ǧ|Q #dVV=zZUVRV[\l,سgL|>iiBZi B.G17ɩ,;zq.nQ3Ed!tP[g~8tMDEzfof*tcq#siDD {hx;[5Xы{Hi!]¿-mMB="x emçGb =\$wAXA^X9" "$PhFO  cŁЉm'ck${|{qGm(KEDZWǺ)j=%u|*ᶐƵ9)fG6@+y[yyU!j0 fnmx.GAfL#0{#Ǜ.]BMIv2wvh SIOS%%$HF kdzbH]` 9dt2 ىkhj7uє 4?#, 0.9W7mu%c~ Wigtx+?K4@jO[S=7 \b9Dk+>U`K/S+;_t@ϛw긌Vv3Bi!,WXbȇPyJPvCm«s[?[n:(H&DI|p ![C~7 XR>*jO6 2pˠAeݛOOUBޖ ;^`I|g:/@qZ_8ЦMbŋW tsÆZ-sއXߨQak7k(]#F@X9LMxF8G\Ebʧ<d60'yk;6IUYh4>b%b!=CGh,v9U[) M(CA̐@#,&ϫ3Q&% ek[߹TD0 f4/TYS4e%6&MvƹXr|#F>fI j+bMc{$I#-,5sF\FYd>U>eaXۅ7t:O7o,Iujm;ߔ˛jpyYyttuƷW*Eiqi%IuG F$,-#Fd}T^աB6@ ||J5miSPPHȱcgΌgM=Bss@Ou`__ԗvh||tEϞ4hb%{{Ϝ$WPvS]Ejj^^G%/IDATF|ի{{GEUGyz*  E˺eR`Ah?}AAc>na_}kf̌JJ]RRӇwr S(JJ ʕ+UXb3gN>u#F3̟gb^=KKs˗ssvvsv /_T&:ʍ T.ի+ӹnْukrrFFFƇp#G:xh555337ɤRsss_WJJ2d(}R0b)Wy^ߣQQ~ry:JUv5c 9ɓU ZHe0" @Kŀ'(\\*ѩ1?_%|RHӑF$?Z!noyŏXvO$Xsv o%W_za⅜1w^)2b8`!P BpMb{u::+"KD=J[0w$ybꩽ]?$AGгk HIaXu+VE;%:춹mJ<|"h2!DMouI(.l-sS|U`#z@,dkI^ ڞvEf13B9==Qkor&UcVD!v ۚT~w13t2)E\8wN|њ$evKSYg> %\5yaC45,G3yhs+@pXw\dK&hm ݕ_i=5|us#]r[??wOgh00i1R 0}̅fMͺ*u=NٵsMt)\#%7 7+7g8TT9}&(lU!Y_?[şT {^`Q4O#Srer %;Iwz`Zs^yHh8iR3mxr'>SLgiիYA'r岳bgJƖu,F U*i%-ر ߝ5Ȳ 2xS^^^358 c1_e5\LNZX6880W{ڻ|,7]׏_._?{^5iƍ׬ 80-M")۱a0jӧ%J#" ~6(Z5>qܹs5 Ba66 wI?/*R(&Ovs{cFVRVؑQ),,x<:nD77{_~.(8v,33'F\s0//77'𘘘XZ1x<^IN1*__T"8 yy Ő!aa#D"/5-,:w^؊:9cGIIW|{O'Эpfs %Pd,J7%@-@)2wI^Z&[I}r{,wlxrQ]aG!?6yʓ^#8Ϩ~<O6A%A>V9;z2pݗ8xWTᄌd8@OD4@{a ^&#"~gGQD19v6tKV2?"6YHgu|@7Q9n;sQHw,Y(@frrpptE3l(ݾprK{|gtA=}u4P)YH۰%d*MZǴ~js_psdIa+؍<**/Zaăi KXO$?پ0H{Il6@*Ɵ~*򪶵`Yfw~bn~zXR,bbшMgAÉ -9K ;UN4&6A-guMA111P`x܀XH aF }xu[!HpNXIy-~jJ+TV"1*Csİ@!-8؃_l40\m|đS"5?'jbg>^;{ybKVޑ2@pgBA@|FYMQmN!~2eM46٢35Ǎ; -gЖ=pي 2'k֓#%#a[kc͡soh [SﱦT!aM#0r(L^ MvQG3VP7 }-UPߣVY#Bzd1Z͊N+צZ0݈#qkqs/!ł[E P uU[RR-ڟ._2&)ӧ66FתՓ'-[яYY)& +gfF$FWll7wrJLܾ뤤##% xzʭXO2ho` ٻ7 WY!<ZZ|ervv"x_uBjFzktD]@G~8 vs޺cOvtR݂Ñ61͛)- ܿWPQ~"CƕǞ[n>w_Μy{{~NNEZrxR??SS%Dѣ#"re2e533ޛYYG(}X>y2++/Ȓ*'r ?ûI"HʗJ5dz,,\]Bu'O^ +,,*2ejx{ɀ> $$dd,]C͝ll ٻK$:R7yXח.OR k ~kD1vlvNWLh@޽ @hAGɺ6\ ̗.nO iܗv?=[M0 J6]y HHҼ܀?1a@?o/"7Pxs*mF's]Y%/[ʍ`aJq 10L ӱ PrPG0^ӆ1Of\X~}˟us'@4cPPW `aF3>ޒ@௳nў~fou/ulvffۮy%'Sڤ ӫYυ-t,OA3av55mUܝc5;M(Ղ aE+l`sΜD`ςs <䱐WNb`6E5>z&kYv1G*b93ΚVwQcN &3 B•>lQtIQ w}A=A@ֆP 9@AN"ͳ,1ð~"pPF }ߧTi̔sނ:T6ğ`ZΌ$ٱdN2+mX<d!"/9'䌩r6Վ@X| tnؐ񭆸~>o_ό=+Cl ŏh]x_[M3XF2x5gm$]ӣIuaOUhb=@H|bϡM{LZpIM:A>֦; JyeO'ay2Ise CΩdQgSz[ZXmgO-k cW?n 撙=Wjf\ W鳖ITp%7\տ~^l8|Dvv d˒2dS&On߾cǺu 0~x b1on.U F>-[^JLܺwILm[FiЈ҂at: :wcҤ;thpǎi!h/]UŅrܩ[t׮ʃ~@֮D/.]\!ܠ&2y#u:jȗ/w:y…oi4% 3):/7h0bć("P1+q 0:8X[H;1sg+7ơ%'gglZ&cBFG$bBWD =\ 66&&0+Wxbn.U'oņOÈNN֣F9:#vvjuL̽{z}aaf&qR\fYJf͒]3\ 駲 w1[>gn +}35H}[3mѹ `Jݖ H%zzs ms*@2Xa^mtWi](٤;Y`>3o_T?jh~|eb?.Bzht!*\:/jdF\ٵkmzh凜{kQ}C~ fф[Y2-q9K- 8',0ijR&хʫ{+ ' 9TӍRK(H f@-XCk7zwn,1Q2fyVqGuܽ>QEʴ ť>),Xz ]1siE8`E/t']3FxnC fv?9߲. gBE U$;ks~'3T/@*<7j5vYa&tr"{j.WTSUGg_sU-!"癮@,vpы=2*9IVy40g?Đ 1.LLJv/ׇ֭zd~]wv#-  8Fۂ;@=xKLvPhsy5^7}G* *^=)~,t*pnvTB-^z;n˙mR^hԟ~ P#e ϼb4tIoO2RlǷ;iS30~\˗<|S05 V24Xi)~Hute  +!bN;R:$`0Z&؈LF2Accp~[[ Pt6( r^:l% U dg:5aÇ^թL)!_7Y=8}:)lG6b>>вSJssrnzc1_$915 km.V%,Ē/`2jɒ,ˡ]:>:N_vfΓi~\![YU+af-s1L''Ϟ]ǩTor,)))))T&~ЂBC=Q#$ZE427?ubŏ-n,,T*۴y(,Lm9 Bȍ!!*Thb{1C~aOza~\x3fx{dooi!BCKJZ[[aoOMٴ)11--5U0)ΐAYY~~ ~~ ,kfC(_>/S=[bŜ/vdH͖-ϹQVGХ2deQ]VH2i!A3VT#7}"=Ep|h?P)]9U!f,n9֒F88_ma\PibmB*c}'&Ƴ{<]:@8b`Z`y/Lf#d]ɛq7Yv6=7QM!ިz^Krw>fP !狯[UZ~ӎEd bX9'v@;cn[#r\EH;J:J$3 k읽8EsG4^/_ ]v!oM3l[$?]٩U/[id}ߞ;T#%+ jQ>58 WimsƼص{ˡ*db67{r5{}{ .;&G$G#:=ӼPᦪVZ䚻[Fm3A\go0b.Lg#.1yK\&<;@}utnq#-Bm)c, '@ڋ,N3y@x&0I{@6y5o=4٫ /ZjtuY`(L·ȓ&mڠnɲkOia_>Hq_N|yå༺^YGgyN#~ b:3~Vg ֍mryR;U(GF+^ٍ(>"RZky 7ڮMmJzmlF̾X2GdQ*<4.R夜NG̝6ſJ5{[g992\AYzJʩS'>|ᑟuΝuBJJDԩ 俌AcY oS*55urҲN;;C=²# ,Eu*W\OOB8vf ;nر3ΜӍD $8[ޖ^N;BeP0ǎln]@@99Bừ)(ti͚cǦOrSS3ďuѣWCط?X_ǎe~QQJFӰÇaayyZky6mjmmiyh`?s/EfV7le||II&&Kիgffb(nՔ}ysbbZǶ` MM5=ܼ}9szkk*'PYmۄ,OKQ_v| &"XiiW.q4`mT 7i:zU; 2K̑e}zf bv]n>]Lg J⇖H2VtW[d3K辘$FL.MgQKMXمVٖg=:zRBij9B6r[ax O6 ԁgBDex sԧJl~UV]dߜ4"ٴ1a"MosM[ R4֘&Oi]nuѷX.!ow,e%Zx`{Jw;jo !]8A4LMsukam{ϑ)l.wԾt3Nw"_'d%nXUxw6y[XBY'IMɅfDw%g]j̭M*,)8wZ jP@H-*Nl #Y 9gӥ.}̥yj`llWWPgo(hHԌ:ЋTI2Mv9uW8GƘcph,PұH;}99X_]3^p֓}/:p \"olEpU6ZY@&Y`_X7,;=9<$sTC- -H<|MZ9͟R',<*z.o!f^| %t%ZUٳ_8ysh2;w~!C>-)1525ZޜP{qs(Vo !C׮~ #׬iksgddjCqqz}I֟x2ohںQ#S`KK>Xˈ7*W ()_1Xav`eŒ%/xWJRn&jf_"HᱻE6Uj|tF>}hVfaZM "H$%&&&&&Z[[[/5>>11)]XZ[ Addڕ*}' .NhZ|ի$yNb12̝;!!_ۼ?8Zkѣ/]Dڵ--&Ntu_\&,R*9SR^U.VliٽʕߵH׫=z?>dȫW{JZmqq -fjObȭԅ\AQ3yz]VYiO7>h=!1 XILZ=Ee&wv!5#sik%73Z 9:j0O ?Ey3[ZmfS1y`/EGaC e$5NW]d:Y X:|KQ\9DkTmu0ptꉬcEiLImR"_lVe شz-=̘``n H!3yHbY-V׌ٛܐΑQfQ%ؼy\ v4=IOӳP/Ҁammed< &ύҒS㲅:.WC ~TCG0YSn 7wۇX.pU4\/ 2;,ds ;w /Ia[50iv ìa)*U; nԟq/XV+~R橱K6exڡ^m̖KDüL¿, &eШ2w]kr:F7 %;~<_-+ǙooqJ䰹ZTf9F>!͢=͒ͲL:^# gN.L 3֤(ؾe~vYGe1\Q WWÕp-3i+7} w"]KKx u5xA{i c<]CB12gs5ll~Wfc1vl@@`ia hQժ͚99dɓg33?\dҲ[e&Mr] !RZnz{G^4x /^lR mʒ5Ѣ>s $ 뙞|`w )w<%@@'z [T@~9LO>ػoSn+)Ye%u!+̃'_^!Jr65phP޲(W- Jcg&d1s~$8)ayguO6G 2yy7),D􈎤O!S=Wnsrԋ\Eh)Kx@jqi6,jVfR=-`gJf]y!C7ҏ,'Hb]fҖL*# h"}  @H7?los(((1`~eoSN1@:4@iEq\ G8$ppBny2rz}{NGN% k) H;~@v.Kz87q.ִ]s(Jb .e%'(h.D(-J7^N̢_8q)\.B,oLWSZdVʯW< -OCi{AB20 B# -H2t㹋-ЅJ>U_^$7QhCa_GK>8{i+?;s:.M^ܠbW5lIuCu2ZHЧT ؈Lt4=yR˙0iGghl[!DkGu5yajQ]X;q"TӔgQ\_~X+QhرY_<-*[ύw$Ο4O,7Æ7_w$h[kK֬RImFH gO}ysoweyy+!Qt v-(Q(vTSFtRv{heF㓛kV]jZڛҥCVŋ))SF?r/ j>6vŊ={ߵ!kU--ֵ^Ϗ[*,,??44,\G=<={4Zwcoen޺ʕUz{߿P﵍s9s\ rJ)4 Bw𣻵{; E`P[U[BCcbrWײCIIXعs7I^n3knݺ{^ZW>yy.. EQћo<!ܻWFŊ~~%ݻ32rsLy*.N_@[mE|899Z^߷oxxl99yy۾D²,۲e~VVժRױ#5ȓO\SPptffNNB§۫0iS͚_#0OÁM>v< xe]kX ^;q{?H/k@ 5t~m$''6uy-vzE|/C>O] | ]t-ه3}ZhRɲ|yչr=r[Uxfn Q% $/,Bkw!¯7kxC'p/V5rv*0<,/D!_޴stoծ\W^[yLX=N}]5oԉ_w |9-!\^HlYzʒNq'EHexU'Z]cÖ'DUy3ctY%O km\W6ӾD,8'QJi\/>ĭ|IkƽRO*aRaL#5*l:n̪i}I=1w7OT( TVVt1]F 7{L.=ݦҷ|O/(D=G}9[ 9Gģ7j;pzUj]EQhbf &'&?O,erg4 BPY0  p  t|35D~IJA | AN#?457Y"{'w>D?G~Y*za%_+ѧ;Ì͈׌;Ȏ~uEJs+[F6m(3Ϟ .΀#a؇#^sUbA'Kҕr鲎5÷e> חae*{>Ya7g0N,e27%dmOҍ<r>bj?pӳm S(| Çeg=t(g6/\hӦMvlٶmC4큁rLvVժdƪTZq_'$\4jdeeaqP`Ph| V%'ggϘXb1˲l@\.I"L&zz ,lb"89DBTJ^%z:@Hz^$%)ii:Vk4DE) Zqa/8:V`iٽ"gwZB1rdx]]ŝ:+Q-a*.dۻ 9uP7^ ݩ; l $Tv<_X,$- N |(L'۲G^vIQẴ&ԁ{˛Sdb7"k|W"j*Kk/їH%(8 E, B%6OToN9޳Q@o2:#| \|E4Di9xJ /r+UL ܒ@og܆3bhIWf(S4n5 L1G}FWw;߶P% h)˳ ;(n:͞HӰ n3Kjn f۴G< PA@WWE{8{^S`tFGA(=4cV-X6znM~'Q-COw#Bܭyugt:NЇpMw7S_?E)Sq]9sz=E2NJIwLx(<ДarQqJ\װDc.qvҭ&ZW"gl@hF4~@:YY;f5%dJc LE}$1syϻ.J8c?@Ѿ(BQLDX qꈙ`>P͓8@2Wۄ7;[4NWҾ&-IREp˜8aK \$ܷ|(}&ݥ NBGf*y~wOYxDxM}eX"l!*fBopf<%wU;;/: 0v$"m͒ mL4vxӱr%M1ёYK)KMe {MTAfo!?;ĶJV]C+Ycg7CSNZwcٿ?E4Pfhbƍ޽ *Ly^|/_&&nk66bqjҴRϟhج…U._aCDDbm_+[Y*J*_pZaVVV ۗ+lYHHY#Ѱlժ'Nx{7kaCPDRPPv7X!;6_Z]r2K:B-0tUMŋ'e[0'G(47_6 `']]41ȇe=N_72=#GRҳIf͚7pܹgx,qUgO>>c:;Oċbz䌌}RR22t?m0&]:8ج_&A#᝵qcJJvi__jv a 5aYZ u:U藇Ϸ53klDZn 9S 5Ν9]ꂂ2>[2g*9W)9SޣWoKS\=@W t&@A&:%u7{/-\Q|FRp\^δ [ܘH8@Y8yt+iS⼝ I, VHj"֣[ z2f&ጇWbd 0+la+MVE%W999in2]T\V~5>j)(+`7S/&$ٟPo㆒qL4 KGŒWN}  ( 5YAϵ{FZ&d<F ?^h辌/i;#D>`0 f ZPZ P QH@%H YˆNh˫Bܶ—8*ZCQrdo:W\=C/]zVphԍ+&ZL^؞ ԋijY _?yYvO<1UH`Ep`A0R^AE# zy-(/4xceuA x:nijڹKcdnF.`֧r1wAQe|Tה.y'7;%eMA[;y6* 890>A۝ᆕ,׮M;nP<xrKv+ aCPc}\ە\/_ȓhU&WlK&R3d <ig]ȏ,Ҟh:\_? J_P 4{Bs~kl-i6%7,Vvӣ`Mz=$tj1V+ ̢lW{= MyJo~Q6r.eIھf|1ۈ*R{8?+d!l#s,D?z3=SpŠgM-`܃XY¥܃sll0r"Ĭ/d{Uxټ EͲϥѣ#G>T޿wl),R*Ϝ?'OZZm^Zm#8Q`iaQ]FƩS謁ab-<ذcb.}"%esml||f  ϏRqͽ};㝋R__SӠ{ 6;մ˗SS =~Wk|9ӈ{v, 53+xDt5on۬t QNuMUhFd3zmLQQ T4vGVV*(})T;w226lԉT7.RL& | { 4FtYBnެUJ\|ر̜hEC fy{lcSٹFsӗ/IL;ɂePVi&cJ$[²6V-+{tO„]n_GȳDSɵ])Ad(i qU PKhFӫjU Cd*sd SR[N[~`9$zZbQ3H`e#'dq|6-NG)l[垂JO)*[mGŝxK3p3U^<3_1Ps !=̖5e.eK\V0& @0hF҃j hF؝!Dc-$>:q"oz5Rxj|3 Um:ͳ|ߝ!_UH,fskUBǥ6D?AǷw![,B.tB0qЊ<~#-f8} 8r1{&K9cFhD劲)!!003o} )|]qcDDb֭T$6/O24&*%x<>?0p˖Z|ssm/\ցVliYmu꼽8&PhLMD:]QVk3U*m02xoo7х*UJJq^_R VVBAگ#Ub\ޢڵ*\ZƕS-,nM3qz[;0vz;-ԁOL\MOҐ:kWn=FT5}aރ/jVApom6:xBO,*j*pBp>R> ~a7]*/ojq_6VߙHvEf/|R+\@6#!ȋ' #ߖiEzL(+^kCD}DNt r؈jTU+rp89A.wE秋\: =2('Tۜpl @ixqNjirJ^{ (*Xn _P( Fmbٱ@~F XC6_-@6IU>KyoyGD4`xH5P0$8s!l6~\ bkq&٤N|jӤ_݋4Ǖ+c&j5W`aa͛ر6658e?M6=]m/s>%u([Zvu-v{Ww?402(hu?a/Jqy>}3PBB Xzu 5J~|_H$JH԰]*ԩs_!g%u͒%#&66f@u9Q}me+Zd`ex4@"ٻۻK]ʖ] "'%͞O)"0ާO߾۷wŏ;;;99:j{z2֭^^5jK4u:3""6ŋBCGdR׷aCcjz6%D,ϔ\βj!11{D;&=Ln/^;̸$"7w1X<_ޯyNH]ÿ=._ \`BM R>w xd־&/0'41i  w7pgYP E0pʪ]\0sr{Ɔ0ܭ鍧WrgG+7Yx\y!DgS1O0}T5erQaA#Ԅ Yc&/{ayפvKƄPvev&`LXv׹: F=m*Ⱦ !: ۖLyAeݘ4i 㤢7:ЦEC E N)T ${L!<i50fU,XGNJ(Uh[:$wa^|~>czz^;E3w]הV X*vͮF"r&%͙qiiŏ[[[[$&&&&&d2Tw߷owoggY<<\\ba.JNյkEEÆEEegkW ll رݻUD|BF.77J˔^((m[<(m[LM?n<ϲ͛''߹3iRD֭MnIy'-Ԉ$!w_ Pq W;1Ƭ @4<@@>?#">!n:>hתK F]"Ϙ9%Rl@sb*b?S::VݢŲ%4sS8a')圫 vEA#uf2q~f3v5ȞpJBJY%.]Y0F>a@P9h"&}+&hjT %WvM>tBecUMEC]E>@SYFsC<||;fΔ=I<(\"XFt_s܋ܽ8gO*vQBFuW8";e\<#4n _}1ݠ ~WfC`]2?->NgQ%y7ѫUR$*3xo>hfvRؑz>\Ed4N[C~蓡RVl7YCo,1bJ[,@B x'0(a}Hr 3tWT;֏]2LWK1?mب'Ny:['9yEg8aZ *&KbFAJj!غϼy&_qѻ.Wz"JN6tn$O>'\{/?{[OQ[̮[u~-N$ed7]y@څxF%9kM,hU`.۰A4^t[@l'J8^8qe H0~Kaa'7ɩIBBKLܰ{5k"#F"jּseɓ>ɹ{7zrww#G4xf޼ЬWSRfaBw]4(Ϧ?Clů^N1"b̘Ǐ=󂫥e͚vvר?+忈kDMKVU2䒛keZ6q]J~&<愫#uU0>=m`pKK_ŋF~¢\9Cg韓}ر_?~ԙ3g϶kצM6u֫WÇܿ_Hhg7qki(,85+..%etܝ+lٺumm޿a,76ϳ^J~Zͽ{ZmBBh(+%STcL$}|$7JRoZD";;ooBbSG ͍1#,l|}HG6??AXƣ,Xilk:[\H$OwBJXsu-=RPBQoGfHҋ8H<@'x-ſ+ӹMG᩾~>:߾rA.x[VΕgx\%fΎi6(Oia)!0 @2ՙŵbvnQM62ki4k1*BKutO}¾721t7MIw6naA;C&Lˊ#h$X&8_n]Qr3h)1ZU[~ugM^IL1' uL?GEo)ifC# ߏhZewv+s h0@\C_X /0cXhIq${ o@k Qu(4^9K/Qӻ GHLrHG9l5EK1'25ի_Iú#>]~TeS›kn5yfz:')<)t,X>EH:ZUgMy:O)8P{QQ4E1Gj9{QWP<{UU6GAoOֈ}(=nr"Э$^AC'47W+f4rFC&M OFBgEvgM5TPxGvZq2:Y;RoO8wHS`46do*҉9n82G] EℲ\WURIPGx+O b9;A$+{XI'6: 6) 9bOcE 2I5XR.XQy)vJ^ZHև볺lzd y50;miG4u U:Ķ h4x@ *C RW:+YgOHY 5q劸ګ~εgї4GgEN$fhT] N<u[C@c_~> 1a5mt٠ϙpӋ ?>sVhxK)jvC4ؽ|yDQ,hѮS'0׀Kl]]e''ZkvæՆu+T*B|6_^*SCbBCy*??1q4ba{޽=th߾={~iwJ$nn?t))?Tc=<\\rsYB"$ФaFF XJJΘ|zVVNQ1Tjjjmݻ FFߧ&LƲMޱ'O^ F:Mꏒ0vJ.;E?\`a P# o0(_ lK@FA뙬L٭XvJ .|don+F p2LDEmj/G6l=M_[;F}gM%Bpό*% g-O\6=" * O jp0Րs-O<&(V}{UC?I^SDL -{+ICA'Ksje?-gf 7V nf*"\ ׇ[^+nh9'^o+]=UcYdX+0xhj(g@J:㈺1g'^~{E};#9WN3n s~^/]J_Zq#Q5؟; ?ΤJNwR]C*nc6s#m+ydg~ &K0>2p5kزλ 1yY;Yt֭s6)鄮T,0sX=``3n}IB3(oA>-@c-{8#/LCC7' !.2] nwJ҂*e,+N|D^Pzȫy-ydflTB6$p2?+&1'v;:o&y8(ꉪan?_(lR_`LoɯZ-zTB|F7Tgm9 j)iJOPj >Q$\\H ^1b9wBlߤ+up})SX&hof:L }M;JvTr,eqA%rAhۦyJE-)}]n鑑&=}J)ѯ⻊;~ MZJy/^燆fgDߊUZ[7lg_3cA.>B'O23_=ka1Vs\l%^ef^T\-~Ĥ|y WБR0G__Iڵ- J)垽<rTg}B@Ɣldti`QWVkh\7vREF^1K$+;:NzoM8"'cF[\9OQ~7X)ILj+32MJJKc/7%TP,%*xzz_4HK{hW6mrtT22 U2O_8Q(WHTǴdݕr.N\ze)],w *Jg;Lv3XrAªXjs$^$8|X.2Ϯ)+\<'%o| QS-?22ΟOLttãxc3%Ḹ#"˔11\FiP deݸݏ?eAAw-u -K6mVRL#Aȹ?یua/~,AYFaUF7fjW0%`~O?ybk[*(aaefn֫\oeգզu g>\xzu 37˖5t&Jz{Hޱ#%%3񴴬,ysG/>R&֯?lEv"d^\ةS7oR%+{CAآXڿ 6-X&K $&4xfow{=}%X2`!MBْ;Tk*ϿU\ q9) %F@$6 ^ğb1p Ip:LVNt,aW?¨S;9I^r2C zfZlK\W^eEb0 R"={#j{rճL':^BA1lΘO21-i} [2A8i&8-oާS{h.h>Y :)x򫡡Ub3>LM['W^gΨ >f=Xp-)/ Rnev68t6ߖ]SU?gx6M^ QtO.ǝIs<ho˰q +eo*T_2LQ|ߠA"i^Y+%)^*w0f 4"CQ M$w1=p ş5Ɉ<߸2bPi-YWLeqP΂,Yt[&LzC fb~:ɾIi+u&Ges &%/w8f?^joj9!| hzw}j}VMiiM8REƬu=B;oui0uO˃FSǡ3+,{(/KY; ON:AdBZ,/8@Ҹ&|"|ut+A[hSԡ72T"e=fXyћ^'Ї)NZW'=kNV 3e%r]Y\,~D,JU|Y3Bo$5*z=),+YYI$ #}0|KMnTکSe2 sDI$ψr"_FT(t+v?p15rmX"G;ٶ ~~&=Mr…UٕrO?}0rQ*_8}:3sǎ}?f7uVX=q:m[JJffTTaaQї -,ٴ#XXhGGEݹ/w,ʢeºS;\bdmevtpHzDW͸=I@l?, (aBq\55̜Z0 UJE['Dvp~wpJ&+{q@uSq7a,'H*?2*آ4M7F ]PP!nӑ{x ݹ9efb18&]@Pb-&z$hXO =*\`ZdtKM/7\>)g%w䢨i"^9&xᏕh8i:O>ވȚnJQRiꟊ>E8`}xwݗȂS"oǹ*݂3qIB5O9.9Gث;_Dm&.0"'/_(Itl&YCHwƃh] +>+xHl[&ʟ: }?ei!kpZD(\㷃)ҵ'FZ ]4<<5)vO,.DSե7DZ@P>>Ml$m<Ð曚7reTZTgoٲkxHQF)(MM˄Nyxl1<2MQveg>79?Y|})Tu0q"w]\lm R j5SAARy`zzN˙J%~i@SӺu67ozLH '4]H$vȑQQ{tE%; 6ܭ6Ge|{6tJE3coY'`q)ےV_$ @H08;M&QH39rM#Z/x 0p 4 pnv%yQÜt! ]$'_Qz&,[S`yR17pZk#6G\l*Z~)B%+-B2H4dxPaf#K7k\j y]gf5C?lKŎNғkMSdkؖ7[qVaUG@}`ޗ?HmpBW X|E*rP=8L5cvXoh3y/ۑQFafF7d&r DAOވn ;,'r@ʖq=(4hNP9kC\AhF !]h ]Eڵb>Ax]_~Ii9vȲ8CEgLlf.^HH)j˼|Hi^ } `Z3o F yS5RUƿZs*-}v %qI*څ / U =[+pْZ6l2t%l}&9\Te߃ƩɱU&>&[?axH2SoJj="maߑUq%c/gFsy]05Rz>M,V E6Mv,}"m9E|iivbE߀,+LĶzⱅ-.sfeɜfS>:YEn*DQѣ/I9('>{ּ2/@rs>(۶us?b!!YY/_Ti4))*^_Pq\Q^_ D֯_21UU_Т-Cv˖Unku,}Md5}|N][~YflK] %wIwqh*ͳ/+\)g5(`|fدs8'y7q]CχZڒ2΂1$Hi UyRW&-YAH 5P\&V(|GRQQ3l&>C%=|:h$4В[XlbA '0=Pf(s1&) )$I?בo_8~wOf]OidZwL v&# 49P O2+*L2SSpfLFLF%" }Bm16Rue񳩎T7q~2HTD~A'w1_J%Bm_LƷ;dwx;Lv*Q<C{"$2*X}>27`Abv|Ǔ׍sDNTIDAT :+@,[ĜA =YF_ns@>3 /wX 5' V9>Y|[pݼ)Pt;9vso^=.0t>~z$3=J?WhNƔ0 lDPO-fu&KhY:v},:ugcĽKza\FOٗ5L%edvk GNOpA+7ϳ.>tNlCg[{n27E:i- b:^,x:V痛{uʊk2l&Kay+R2ʵ!kt @ V6JWFoSa _K1/ N>v6峲.\81$$>B̢/{sN~xb|,Jmbbl66;9.[V`,mbc`jڲu+߹aZZ:fkmϪD(1E"]ɦq&0د}J !MGڵ׮<8>P(8~\ 05uqY(*wU˗326oc!j*T(_Ȁ sީZEE<|WXPlIa@*Yܼee2ӳ(1q„OK{Ȱ'ƃMڋ{,4 "CON8 }-M񽁍@P"ݤAI `dzȴ9I 661.q&>awQ'[#/  3 /mlyIګt f"AAƙ妕U/8Vы]#qǙZ6t˯(\FP;` Ҳ1|(!x$#yiȅ:F!( gX  8Ɛ|ρ\AE? D<ҐJTB4`!BT"pDcÓB`r a!AR2Y8CGd-}$TuLCC; kCQ7N߾[ mƲ݂0%eF@d6tl% ,u`nu+ I5鲵wBSoʰ47TcQ@R5csox8\I}D!U!y7OJy(L0H)NP$b5ntvRDbe?Ō`  {}B9\nSe{9c4Ƀ45?ADy̺ǞóS:h L;?je mFath]$A*%kk4CM7c7.TC{]aOB{=K3C5:Ы(ɤMkSסːoP0H9ѿlp¸ÕNM\C穔/ ϫT&5vɒw[WMj(}iN9}V|TRL0 !0̷zr9%ȑ- 5jܸѢ!KבHJq;k:tW(_ICɳ!tPni).uyIɺ7ׯaziaHu:qrQ¯{Rj#YFcXZvO;N4sfٲPdg]z99mZ\u)< ѨTYYZN|XXAAQjFVsܗ sF(657oldݽrkXWF޻GgE"?HR nlqF,#Vn.S)v&I~VUiMfSʫA2WQʿ,$] e/B4<Dq] EXz"!&"@+*⻬,ՠuʱ)FÛWEX. 4 < .,qKY;g9cCdNvt C'&TPcݓC[1ƆL[sRQ`8~wYGI;M:x)8-72fe_,hL>BWz5$&WRhֺ,Ҙ{"N㦟ԉ=IQ7aFNR>M$V$vgx=Ìl|ԠMw;|G~pP䡛znvEy8DZ+KCxυrWCijYO,*_ʄXdg`-n* B wRJmvBCR)Q9!O,['7W,.(hߞe x| *Vܻ^= Cg̼r%99&fl@5jXZ֪eggHK)k#,TxgfgxoI@'ֵZjUFՃ:O| }]4DYF8¬,j rٹAa¯3Rә;vK@ :9͝*xz~8yy/\esL&11u[Y W矡P :<) bDRqY4?_縼$0PCKwt"Mbծt8[Uލ<n|wfb52tR>mv8=;p@46Qe4-ЂXD4``xf 43撺M @+|\W\^ݙ4/CS,!\+qO]'2U2yq *Y'vJE6#ێZ4zO2V3ravb}UU6YVYѦ}b/m#8]5to!Suqk4pK!9K*6;es͂Յǿtpo6'T e:*wwT/{.$K4H 4-VIagWxG,>9rvUTӻ\s4K-fq93F Й()BZcxZH4T<ƵST-nz[{B[& R>RZtѣ}cƄQ~`׏CڶmA ZZ֩cofMj'O23#"F#y(Nݽg 2tpw mnj՜>w#&?a A;:]Mx9svm1Z4İ1EEYX,^8ztXIH)ϳlj%u2Tjb0a•+˲ TH)}^^nng-j5SznARypZZv99:!X[˷jebRV~bkŊiCGWRggGDLƍ WDFt)<"sa:OSM߀@>{U.&c4@NoV}"9N L/?jq}Bݮ۷d!yu4+a J|>{y܈)Vя_T|u69=B^p0tm,+̍yi0I EB_": a +ƞVt=7Vwi),D `K#Ѱ %O8)0}GQC7]/`"Ԃ%U`-iiA+Gt۵Ë8NZyKӲM۾,to)e1/1 v'Vdiv7!φo_gGΝj9>5zqbk>Z`4@i4Rk). *@BIĈݢ30v~t(+Va)[z|F*)YUdIǂd%|{^3;pNaq lV8ckr=jcFۤs Йxle7aުshN 'a#jJ XU| '|㶢p3tJV(ͺcGšǜ_JO~ yv?:IХԩ*K@4+ 44;4(ںaCHJ^Pg?Sd2gܠ k&M~+J)EEzBMAAaaDDnVR "UÆ)K/caflܬƍ+Vxr2+}ҝNӚ0R)nFhnol9Bǫ K !W&M6n?5U./Zy:k QppgC)7vVGE]1ڊ"QDDZAAFF߮<~\XT޼N^BBTzCP( ..2ory``62Yٲ :ƒQ7;[HJuCz5ݲn vu$΂uxI\0[x+~ا~)'dsj|m^G. ^zTw E^\C$ptPE+4f"e%_7J^,hʠ,q7[oawc Y>SEUx @%Kt @즫Rϕ9Fƽo67:ߨU:u0W<2GۿD 4pA4,B2}^kF7Vh<¼2WKXQRvS{Vk"r2X 7Lz0̢jlTҼãe#l.LF ୴eeaẸvn"fvNF)GϠQ,H@}#D+L.`N?XZ -<(a]Ajw^eJ,Ce&$c|l;J| 8uT~KǽO\v.(-cvmXr:w:vlܱn_߻wS`[O9CfrfƅS&zmɫy+-JG7"dg߶Ll#cx Tzm"Qӷ/ΝKҭxѷn_߾}xsO?-1vwRR( 1  (1R8ӌ7U4~,l׽rz?'Sd_IT#|F2.fyҩ)nieM'$H` s"t{q&-Q-0 "ޮB#.0=iP{Հ4ԁcc9BSm`-2e_1 a( IlHT5a9wăHGn#9I_! FO,_j#VڬQ)xoJYnrd3 D[X\az#ֈ5]Wb >n<4kh67~a $:Bf M˫;m2\-uK))4qo(>ć1`k y/Ə~u*#KkWbmݸcI² ^Qݺ/E$bJi@.01 ^)e{ťXD,#~1!`j]k԰ߟk{^ so uZG|y #FܾX&-ub,\X^1wY[b׵j~IxT*J&6VnD.@ZJ}|ʕ+."Dߟ!PqMܿ?yrx-vvju; x3>%Gmy*_B<(Pw|g` $p:(B7%حD!h5zºas)S|VpS, BWAYL$ba9q.rtMd(]g(1NkYt9M+"ݴKTC;߳2NiLN"V"H@uNc'͹d$SWߕ >+}V p[ @v볆~ȈS LXݸ0@9X6%j֤EU骭+m۳xhce~ޮe/"QG^ kѱ)R;ڦM0--F룋<6zjllj Y/wm2e~G0_lWO>;ʝq0vpjm&-4%p>T9![=Uݳ͵lM_Ujbi]ɚyzoFr6uk:`a}!'o՞vE^/ tDm^ ,i}:xysmT;ME2isy^/n囧o0l˲-~ï1Q{.ENѬre{LAܤ 3qxr[Q_UjՑo?5qWm?4t>mAn =\Mԗ m?tJ_B{C'JW3M𺮺[LLf_ظYDR\^ʙ3MTs~ժQʲ| z4kxq%7K)NN11VVmڬXQ]st8.Z䧴Ч/aB޶.,^I]grjm]’%FĘ{y:KBYY{ێI<<,,C ֚lW/2%}A 02^ׅu-BsWy{,[d#A=JAـT%$|TT昹>bSgyB I,P yH)ie!]mZytֶ}$f3:<=eER- ^Hzx#΢۱&굊n[%#-^շǢ J= od?XäJIB`ս*EF9etUGW=e E;0,40:HA )X!=xH# E?W'x0 Ѓ,h!!b9PASU-(s<#-pah`;WgCl5 ߲ljNBHEs9}gn>c=olS@7+ʙ o[qѯ,_w)s8hYWe]Ι5P͞f27ts~2iƟN&%_)v4Y㸩O]wXVF5- G8 S0B= JʁIfZf`\M%1O&Ə^lwvcPī`EN7x` LXgcNY~Hs!!;LvќY?ܿa{^٘$wuȪ+}]^nU7&Q\U9D妾q3 " "ה+&L^P_b_}R^YSZti@hl|:}-_bѩd"KntĹ5ǪȈ&uF2qg,Ϧ+awvn5AVz5㾨dcCy&ޗ9h+6K07pV#y|yr`֒^E7nh!YZJ$%1~aaɭѰjK6ĥ@8ƹRiӦ7WX3>>)v#=N+;_ 21* ik/<8 0'Ozxjq_~99}j)eY69y`MLr@  Y30E,6@DBV׏nNN^ޟ_K!rӦ660rWmamkW W2 %y !GeMFlwŐˀRfiyKMC>9<*EXfpMV$<>՟c jCİo%h  C%s[zcR1[Tol'X>.u`%>Zo%mѵ3.J#AM9YjҡB_AM|nP2V,e|H*PzO:Kgdk4 +Qxf|M!/O~I:1h8YV@YsĝdO0 (}JzU,7O[!A&=*hW~tA2&K}CN,=gϢ}tmxJ,@ LJZi 4)O]ʇ12E`^J ۽o3.!D!4PX\N"nELƤpGL4G?~=q;6; =Nf?~`ÁVJ84_vAg91)zk()V 33*ex3*&<]>Ym8!)+)5jگnrgMc?,zoYD,"a1(ᆐt.鮬kHU}2a[۝r?[sLz^[TT0+(gkapeJ*U3haM7Y]ӻ{U,2}V|M[hy2IjkZX^ջXTooq2avvptāʅyvLWm]mnL|!(0tmoIAMmSrcem Ҍl' ϺYVNY\mO?Ky*忈^MM>5{v̚{$>@^OӁΝY%Cժ.4mZMX㧤<reDDɭekյ*忉H ի8Ql۷d%S\(3 Xnʾ+J}|K^ >^7o굁ʐS VXX(lۧϱcmhᎏ=|gOvc|]mY[<Y*5)IKə;ݻ"e?XJ¢uY̚4?T8H$wС11J)޺v9cSUR=R,cn=[dbUPB>~q+tp pbt']{pev3" rZ y%,B_tr>=Dp'jyALJD\ւS]]WpI#dd* !Gv[A?Zqs֣-N*-U[fN@kͼ{̛g/ips̀?q)Z2ĞvIm^Nw튱svO (O H="C5Q(|I%=h?)tA,"ޤA:H 'iXCkt L&czڎC}NYcl.aĔBi%%x?b qG4 `* "ͨrWzcE. 14=d4&ŲF|u~4Τ\O~QG 鸅Lc~q*rت{ͧQN¥,f~[3x :k2-Ŧ![d%QYJYIM %,XAf:q{`2S^5A`S@;@|=5ܔ#dj7ǾK)_rgkԭD4Rdqzo=ƾ*zhlV[j6F\ykw7'K8uC̳jQ2ږOO/L%ǧqG6G:utpŁ>ZKP,ذZ+ ZWEBA* TQ F)p,ϒqMl3AU͜cMVivcwφ̞4Vf'jXx sUSf ')Wb?9]7d볥ى{w?'#R'7Q={G:{j3EdavJZ>=BEvk=iX3ݼz3 ?>O[E7s$x CԀ^>bڦ궒 AGalR b }92|VQGro̧mpЮ]c%)!@j/6k&d%1k46p%G0b1>\DXʗJ ~}KWNL455lTʙLpn]SfU7 *DRRVr1͓֌'y&X3!y⠠ѣ=\үTSϯXeSS?kVtGGGI^^ -,llܽ[*-SFZCBf [YLK3lTLP`TIF;UVild=t@>@>V?8jӵ.CIVX @jY$ZSFTܿk}r~è#B/oc1%jWsՅK*4TMYm[\bD]o 5 (BK3ieL|Ư疡N2.0aC𷥦m|QI,ݕ)ǒ76_mžK̕}͂[VN`3߶M%vL]ߝ nmp苝*[=M߹qܙg3"<~SI, ;͸ZY0ϝ<-m#VXjP-ڏy8ʻC^6|JۖYFgM 7`󞯧 N᫱#MZId#vkI~nC]տѸ%U'/&f].:Ge9s'TOnzb mXl# ln0Q+J~L zL# ds  ۋa7F.rat!aA!˿UJ) y򹯏Oݞy+?o߳8qa٢"KіHD"iH//g}Kze tإK>}h??+zKr}ܼUk+Wٰ[[Z;5Mۺ#Gz4..:O'hJZuHwbGu}j+WV0|&&_\ 9v,+kA>.ggT"yz-,)(`Y/. Ba!Q|yBBZƍ :\Ьu>7 &&66^Ƿwa&oZVFFHa!fwC{?xVоuHd$.#n}jÁCU`6~5 + hMH:4EX6|'.Xtkς~Տ7Q׃;!Krt~fG#\fuQ׫)Kyʒv:& C钟{_~~lv:sXwJPL6@Ou(W3,mKNT?Ƕ!)q aBqdQcY:ZmIac PN⑬߭.x}*bo o֏bQLqP@%x] Z\U^^8gڂ ZY ^z$H;`:4QKm/:.7#^NkD2<Dy؏Y{jk;lISZqHʫcŕ+J8(Ig\0D6 まۅu)t j)a \SŞ} LGu@&vը|\gzh#nݵ%&͗M0S5+rucGL2qu+вwmyfXQOuY%)NXBkOwٸBgs2Gn yH==V"kSFJzw}3pڔf1fsƧ; s1[f# 2J"N\=Q XE]L'av{zD,'_/258٣[YYz64[m‹p )s%*$hA)|T j' 0r8h 1J _7ٛ?~}c=t:ms>j' " w%נJVZnJҜy;+xޢL-5un9Y/WR+~ziS!*|0fu{uee&Lߙr~5*)n݇{iF_[gf,m*Ψ8~5[avf-D Q(gtИG9=n9FfobZ(%ڵ3uq +E9uZUiJW^'ލ}.h[V_=6pdxTu׮~7ƔS;?NkȕV9.oukݧ.?x|I80[e,>cuk;% w{t/QPu|sL'N1Kl֙#Cum=!, fF&iWsjdwSS,!WM~~f\MO8g]J)2:]b:=1nڴmǏ;Q Cţz;DD}$ƬKchP^bwԜv[ϺIS #}kqe&鶠yɲhhHy<n].5QS;5w bRr+ ϵ^\CN ᰂe pSw_sרs?cgW+ҵ΃rDԊk|Ql`7@ԔU.絆o (h]!BhIkQa? 6b(W cJr`R4*/v] V@Ua%\YwYtD~: e`|ؑ3[ͷ k۾c[|Zܥ}+8#L8ibsY7kݴZwo_r̕їw,sd8߉hQ~{tL Vb?ux&f#*8eH]ލ8>nCo02w5w~ A]fg!Uuwyیz8lat]uIVZqbqv`RRw )}Iݱ-e=?32e/ 3&4ں|Y98MK[I6>];{{]<<$;4Th~!..9֭܏-2iݺ[Zvh!"|;T6sfX^^񆍇[PG2jUF 0Ligg) ~Py]Qλmsv,= )Jc.8@dj|\?Ȱw:H>{D >ÎP7*X4P7o 27'-5Sݯj\SpPXܹyx+SYLa R|/CkFJљɱb5n9Ɲ-Ya"=D/g,1uߌCBFonZ&ѥ!\w:KsqAEx#j mZZ$m_N2}9/7NcQ-t&y#ԭ7"<ʁ-1M-臨p.y'3iFK2lo6~D:wI]FՑeoN5!ABbs;=tw>\}C<3_Tnu5{&&6xIY6ʠ2wLi}U֫m~_ JKdɨ5i~r}t+V+)g+7:lu;v\k}Wa<NQjy%khζwP9ٻn4Wﶯ&={~-+{4a^Aڏ6_9ITJZq,_mNut}b>ԏr$?%+칟wytywMF1H',,rqO_;qc$)|*^N;̠{#]5-l;J JQe߫ۯ~]&n~ܒ?^\|LaZw^=-fYuTx5m!9s9;'yfmê%qZ $1Mْ> *8K3';O/zJrFcu|Q婎5ipV|=]p=oßGǂb^µM|L_n*rhkYa-# K^aPyD"!pYwpZTa3U~ʤI޹BWI$:,,Ҍ[޲jՀ7 .ihf&=eaϘQ2̏ HPDiOv<\_ԙ0L]]< ƍ7nTiT#=VMKLK[AJu/[IkkKÇ+U03Hm遯_T6%'gfT^ںO OϺ3pu-)IM ߳EGC.Gn.qȌe  q dxw6Oѕ^70@mH@@H&?QRz'Mgw~5Rr4EY_Up&eSMeՋOtݪ8 /-z9 (zpZjX~ZKۘ  K }uVW.;8sXBF5(F+`Zq1nO'~_-]GO,\YPw '-W~~\ٖP=sҭtek\^#~~j {϶) ^8y>|ߐ>C70`sû2:l^^n[,vIfAl?'5G tm2Ck?&_EOϵG^NS϶Pi"6 qV\/>s!ua7?1-ϓi7U5 ʭuM`+:_Һ>M-[˷[?'ǺxmC l4Y$W9hI)-?<~z3>gl ᡉzZ++9)9i3lrxDK]aς ?,mqЇh.M= ת{s>1 0ot/G㪔"n "h,qҲ2Y]6&dPyD.*kSo,ZiN-[t*K$_0%$_5Xvʀ'XoѝW Ϋ4Ȇ|d}_4yeQY\&Jݏxv|k:dCf5Lӥmċ^ķ,Xv} >Q3k)@"v(`s(W O(|H,켦G,+~MhP-[˧XJ𾉃&zj,zl9WuyշGحe6/]|8َ9;w\r-ڵmy䍑%#Ǻ.HFQ1)-^>\77Xa .J[C)>^{{rif˛Evw0+nЙ m;Ζ]dw{[}S=8-kBfnznQoSTvؾrka,!Cf!u/&s KW@]];TMXfAFsX)w"X^t])n.ls!O. ޙ[hJ+СPpyG rG%0,AߍBɫON+EG:K"~jWeiWTޝyDfB/D?"uTLLiY&}\qz& 6dNN~u ZlFK]7  n</+Ϭ 6<3ԆM/Jz@}fj^:ԖOc)|֘}\)\U\ Ags-7/>d@qЁ6=z2hg KϋUlߪGǥ=5e%$n΋]οZ5f/]*je5*o2g蹡/u(T✒֋۴=piߥ=k Ne.-qtݤ(IsYQMYϚA7jr^NDn9Y*Gmoh I_ӈGVciƎig;|}GQ /z1qIɲȍm [jMynfdCOOgOunVyV֡^\5eS 6*3U+[[+5k*Vtuus˥Ra*,=;**.@W0:̛gjZޠAM~]yy?Κ~~> ԶeuF6kDM&\"N~\ f۷L@S^pz}!ǴBL%=CHeGgFKOk.TC7r+X fi؜rr9da'!ist;j2,4]N4  Pc?[dPNj"^z, dd0%},~u<Yv!@]*KQ]vgIԺgf[$(ׇZq:jjm{L`z0i54:T?+Jb V,/J6'ذ3/W~rzLoWwxR׻DPvI+^_EiW=޳kW|d&M|ɂ #Hs["Na<|.߉ ? J;Х#tst;cI^Kn_qpM5kn3rHrk๳BFMܛdF񡱯=lN;M+˗ȻY13u:k~4#jֵwFֶ,,cUhDe~|ƆIY _p0TABa}vWնŀmcA˦,^׍7tvZŸyI2?3VzPEk2 %4TˌK?H3+kq$t_O Rعң d1^c~sߟ $d;J͟::#,M{b6b#;2˹Úe^|"?_ӯx=UBVW̥ dʖSSM&a㈬4gZiWp.ms!c x[*5k[*է°"g;aĉ;L,{3߹?E4dkO4W~췯~;ZhʆUM69nOxo <FZlɠͼsAqFՆݒ}iG&] /dXc;8Ҡ*'^_N}LW Y&XԑN :tgj}bO͜nj{AcFϟnREƗ|M]?zxEgi&2*P,W'M}16OpޜҽZy=ϥ-[W${ҕfgkRR:͝,; V{G8ٳ=:4,L43ӈ!De:uNnl׮D&*O&A:otn_8QI$&;jol\X#%%RѮ]};V|N w*UTԃj_Vj4YY T~p56H$ll rtZX yʕ~yM!!R\nl\Fժu&{xԪUB^e`qju11gӉe d&YB#LxE;BI$P/> m κ@*4@7 @ZJġ%p'9Տ\7f|x u~L+:QxdMd 9~+3WOLTG*]t.!! qǕ '_(C2a M߃R(SCSM2$Kaf.i]ay5&N$I!YEf>qcrշ5}Ʃإ>i^QhP,|>TTU(B#XK[s=\E{PUߖɢTt~Ǭ[L-7Ͻ(c/V $)_a&׬N%E$V(kbF@!sX-$;@G ?%>rHz\]Yy_չ=xs|8_+y~ 7 oNg?S,S˓k[# KOdlo.cg'"V(L$wFю'|]g & r9\i>JNd>uѬjI'Xo4%t2.\٘1y^>`gOECˍ"?yZ9MtjfS>ȳF*q]ROh嗷~ySKCO.] ߙtxq4jznUv 3S6,oP kh#I͹>;`]eRTc)(bnV^PUgO?#=P@%ࠇ e#ւ@ h AcFc૒f΍fe˥ O/h(h:XwI MuDYvm.XAv-M؃kWp?b7h7]J#G);SǞ5VSg![7TST􂿧}Qr8L[44=Ѭ-$&|-FO0kE~;;.GcڄYZ6 kց~bL+H`o8Y71̦ЧD , ",`'T&6R(3-_V<>&Q_CߚJ)mRPDqIܝiKJ.o\ 1`ok`/U o**g~Ǐp9O4!M Z9;aæ9MsBrj0r ~cͣ0] ##3 K*;r VK|}~kEX窙_zUz6g4n{v'lRzWa`>JJ{./*=pv[P]^1|d߉?iim*<eCg3p N06ycpM=z님 "yEGf $[p%g+ns5F0=$Gyғl?r&3L~ ans=ȹ9oN$e[# pAt{`^V>:8zfUƌ4ϵ i>4(3uա6I =hd~}D;RoN=;kgAc7;dKwVNnR$T_rL:@\XwcOb̬8ZI'Mgtt|w#GN9l(Uō\E{T*?`lP5)\dV{$U^;zլq'NJwQ~Uן0}>nE-4wacϦN8iN֩W{]-!Bo+5~-՚._|93O1wjٟO,6!P~I6Jslj/leV^UiI :95X}3O]kHzXUB6'LثD;]Zj:'is:Ҍz'T@pGhtVџDӱlP˷lm[ժyy Py& j̶ǚ5nzN"Ň?}n]Wzadff7W4x nn-[j,Gyy99GS6P>Jff͚M Wn~ r9i]&&^6vlD:]IPy6  ?:+x3Sѭ7p/"6}BO@Vlڒ~=0;mmܬ7OۈXK4p:Y/E9ǪCeϹ7+ > d|Ԏ94ot~N;uQ̎'nd-t~lp~ ߇w}WyPfȁP9 Id#U&| djKxd;0[㩂R:MIWLG3̦Uџ쥷*'@eE 4( T($vPР̯$SY2cz-9b'´6 +aDj}+_<|}_sSV, PPd4yRښnak=j& k}z?e!>@ˌ.4>͖V[g@boA݉ ¿8.Fĭy ǹ*w9Xo%t-' H6$n)n^_dWd̎;Ftբ =U8gBb^zd͘(pºZkup jf^ުm Np OA(/s/_X10g`tԣbϯC4",Gݹw7vv{{sv[dh=-7ݚI7[f儕L\wSnF:j=Xb7pa{itnImWC.O{az]ֶLfZ|NԞ齬'ӧw^4 ]W pqPC!+Yv5ڦd׻=9>5iO1BČMl[,r;em4TD?!!iǍ +]Zp@TJS|дib"gE_ru|yZ11?)+Wΰ\M*;mk׀0 CMDE?%<ڗןN$y2=H~ҧ&7Y9Vu1&`&-3yNb:ڹ٩VU׷*OKG5 C vAqG`d!H~~boDsۀѝߵ띑viz!G =S”pjK{XXmһMz5aѱwKN1CF m:B6{Zҍ#fƦc,LlʷWnk[pV6&/J)擘#Kes_*,oNpH$(8J7ߟ(e…Ru))¦V-#ʕCCSR|}sr{LM51izUnrw6䜅)S<88NR.#Q(?G$%%Ik/.q Ux)7JԶ+5?';&6&i;NҘaś\9Gp~Ц-Md9g斑ݔ<wz'>/"(QN \gG7VUL+//oDbzy񀆁\Ϗ=&eצvuElᰂn5PÆR djTpG=cU%_~h%} B?҂LLϕ_>9T`JI钒w],=]ʼ7&6g?D‡RW{(EgD7$ X_cv5j}|VmXǶm4x[C67b\7}'rH7dw41Jہ̃ GhI]|N?Z"~zfٻ@3HhCtG齙ڱi:W/N2Y|e#,6BȮ@ 67DTg[p`\]H0b'<ݧ:ekƼC,GCcJ3T[4u'ncR뵺iEI M﷉VZEUYO+W^_UU@ dϝ GyF{EoTr#2f^κ:=[7nv FyhyrŋmۊX@ٰr} *:E _o7qdL߮R&v}-لo0Dgۄ ֩) pY1$u,+?9ؔW:PڱݯG/Э#|Hh4r;1;x~>G!zL_|_ye_mjd[&46ۋ[հi~.cLj;;_+VjbJ 7fP'ea5j <ˎ@\rb̾!lvXm^vϘ]X0"ߕ:!.cR)S"Իr%?qTmjcc֭Q޾}kOt:VD S;nnmlTyF`+& ׬iڵ~Ա'Dk\gm8~Ai +~ㆳs:H$_rL.33&eT߼edDE;WAT*3Tjc!9;6mZWR)tm$'߻7i҇w[Yi4ByNץGwZVlG:D8@` Htׁg@#+;%$yU/,.}1z[?7zڸ h -" \k3 a{dׇY$z{|EvQKWnN/ zDphHuI8Vt:!5UwKsӶNӴ;Ӷ.ɷQ(T ˩90L7k`U%tQb =,. ހrpJ4kg@B~#D xt(Fb]WuiGyiO}uEea\ svz}% KrD/乂f6V*sAg5l]#w@ŀ*%K;{ݫ7M_wmeAgߝ/Фp_ACizlFktб'-&Z;5HѸIB֪5W\xn{[;9OERFw+pW>K(oq!-MZ&'ۊS(% 6TϚ3c{q%v,`9tPCs-y*o15M3'_LVilI-B H$qP >x >lW /,l\gO2*nݔ蜝##:v\fM70[/?旐ttZjl^NaYI$᷃wlB+.[0~VV_jU6ZNegǗmOq%%99e,wXeXA*.WN*J||d2Օa 33BXFU|0k[x{ lwWw_KA&"N;E1z[Ru.Mm@Rhֹ?J&>*: Z$ mz\ezJSfM4/]wxw-Ka 8M.>|aaB1M\6d;z`IZ; V&j:qc[6<򀚟T} `c%mGlMY@Q$@žjGaݥ`OmUt8̲9ݎv:l1kf^b#Q]JvUT>B K,msÔN 4>#qXX9C1jo"eEZsBWW$(S>s֭ sSO-YX#'GwETe «W'M ((Niva˖۶URڥKP*\bd$g7d8Nc~ɫc`d*H$iJj#=Խ9urjLٴ+W\]5۴oЌ o_] !cQ߻lՠ(NOԨ+a 7]'H##ߍHax7P Ж, :TFzEv.8{>]K6q Oc ͠}8m49{vޞf|BfOO6UCWR ~)+uT#c0ܥmv"wCEsǯK!+H=bYb>a5;"} xa&o5E-bP;VozrD|c=$oA$|;g8(-]!kUIm'ikjpÝ)=ڪ P6|pz5j`DLe,{Jvê *:rxyue])ƛi.xK yU2\Qwmt 26m4Zg<[nwY7egvwaɡ.zZUiUA~m:F/[]eukm-wly"t-E"џ^S';72$k="]ˣ8ŋn>}sgJ33F:}I ֭{ℏOӦ{奥mGҩ}uɭ ݅H$YY;nڤ( a7 U$b^/޽P{wes14UAO* 8GdPNj'I4x8)+ *@?Þ.{Nesr&CEFUX˓b#f}zz%?Bk V$>sK۟ƧRqh2QMCOw_u;w]wVwD>] =&uUo5Czpc?УP1P{73Rj6gp`6Uʋ~4bP?iŜl˧7=#r[3P  cn>!6-wrOB']~ߚ-M]ru@\wZ4_+t܃Ԍ6*֬[nroΩ}؝wOs_$9.؍'wslbbӝuy>lHߐ6)ީF%}v{ǡgzրItb9}ˬ>@YZZ/h5nֵnz1*yB&nWO1ƅ:V`x1Y[ք5!ZSCK2Tʿv&eEE68+΋ }_횎hFg0/ߵw֬Rv %#D_*,<82ĉ.?tPyJKǏv8N*@䉳skVnelj*XN+W6s߰Sƍk ]'HWÅx{I;|Ku ;m63=vJc`g3R Q6sKT1k}~4 '\|>zd,$>@d50. ;#]lяLl~7]e!Οz~fPhM씇B!Uz-飈~0]󲿥Oik0kFcEa:ب5~3q2;|2*?eݤ.ٺ`Lc>o譿3?HYSg4b.>{KBB_?Q,fVԭ^T dSΘvf[ ,nE6M.OvFٍ AVԣO[.!&x/gOJ6-r)'l._:5$$.Z kaѶuիWom@mI8OZлmaf"Dߖ^:yv!ӄSihGhn^UkT)??:z[V 6l[cJl3`}P$}m@a::WRNhSA)yVI)J-}hdσ/e+>v<((2Q `94ǃB4k2ZԊ/]ṰFjJtܤT[4 }jr-;wt0Չ`QR?G0@f ~?A("ySu(Ʊt4>k 5gF#z3&~V7cfl= }jT7]62-q߽A|t͕oqf>* ف4ƷcM|چ_P/[U-uܪ"6?;!v?2=W/ -}w'\Ve)]s̡{ 2d16T7]8G˞9޶mBZ7.2rΝo`Jܱ`KO73`05' DD@ VK: a×G[AQU5USlKd= cW/I8M{c\}MC)iOQ~|bĤR`zO6LLE*mq;"&09-s !sӕ1|⪤}$EqkiD3c :AG(tWp.QE`rցd*oIG0TRDPW=0xv-m>x4wüLX \"]G鮵eCYnc ]'H$']RZ:+i̙Wrv8z:?Yrdd+zeGpw.ZK:DOMT ܥg]GL9: 9x%A*pG^f۰FNͺ{q׬Nwhڟ/Q6]_n ufMJL>rxX, @KjU@`R3P5{0;^B@%6E_-)[ų* + *D-h?"S}nvXz9 $t~, 㭘Ӵ%6.N% B@MQ9꼕nٵ;5$+tD"הzUy˸qakKzU/)STdmRm@֬Yb" #pw޾skղz݉"Өu~7-ZkgW͋Dr\y|m6+E=f|ll|y`qϞUV1еPZ~FFHȌoZRq|T]bEO6ڣzWމDJGR+,!pvP چHo7 CBot >8 9k_}*菡ࠡOhWzoRКwE*#gh[:OPZ_3ց4i$/ɂ:F3@sE:d2{`7V B7ym3tv̏V'Sv'.}ܘ'koF\Op!?E47UKL ʺ|y䐐d?_emdjں-Uݽ[\YP(4KKN=ל0#BI$~kK%ޡm}Lu U!;8Ԭvm#FǛ}ʗ/*JL:Ç; G^KMڶcn{D"QD|62# .bu&$;JOT?M+$,rJ[qLn<E(((Rp*p>j8BMy'WUZ4N3(bnbbhk=<"K\z/hۤ/`' &A(t*MB{jN|,w 5)B2aYjԧ#: q*.STrQH+ IR23 "ܣ N3dG̋D^UZפY$zQcG }-Xe)}u븸W'M -)P#TI&7hppJV˲0dM\까ZҷTfk+wN"HuPmaRA[~WbIұBF*=v|Nʶ!--H clӕy@Ϟ.I$<bן2vKJnqWbbb"NDb6x 3i bh[ =a՜yMU%Q>!]⦊  Z# d0Frb&t%B`P =R1bqzpH)Qh+n! ILw6KO*Zr %29 PBYV ,-*+9`6ХU BO]7=ۨ1moh0*2pqrqSY+j]ק"YnuW'lb{:T%E4ljtք: ~5$Dߖ:'6( ^]18j!XV{߿xѽOZB!rڴٴ)(,3H/lY`oX[W,tճ߿5ݻ͛+T(*JH63˾St:KÈ{LjD8bѾ|s`G7}wb~!P@sdǤB-t;h<3+f#އ^|L'uO ߜsF!rAMBA -Zd-]-Bm'R1?! 'ۭl.E,.Zz*O2}H.L 7ZwoFwJ1x81 eO<(רߑonP؍3S6;i6yەs[pPhС*D"0d'I.`{y&:wS}?bPCPa̞v-D5uJ<+$6 N'. O>DAj"TNjk׬{\JGwͿlIYkrch\cYau# MbD"я(Xm[4fɒ8],MIv-8 O|1晙FF-Zl^Jj.yz }obŌ!qZ9w $D?MZ8d3p6`Miׯ4nysJC98]յ$5588"bSR="r8AoIn'r\DT$MCn"xu?hA syp5~C3 :ގ|u Vuu]@"Q,ǸjE }d1qdHo[=vܵmU`4HKv-Տ[hZ ױ*?I~%߅ ,# -d_[(x"OmU{rNCQ] gu4L[7v"3AIW,~nڝg7u+~UufVWR[t =NKJZ\alWV)3Bcl]\FKNE!i7\#N:.JInGڛ֢B1ע)100B)-Q`KGK&ߖCCd*غLr v=K|&5re>M;BI$~\@L7/PRI$ݺ5jԻwJ>j~3RZ-ԫwO&{JMdreU\}׮4@nf.tD"E r2?iflX;N+TYV.?pb=XgOR"10NPW:v3grj dG搭Ԧ{[ՒIG,F -=lH$0A<rROUn5R$6cqiEI44qa.[+}Ps2sCZSH>Z]_\ȟ.vG$Q;=Mc˵ˊ6;ʇ.{lc&אO"^>Qbt,?+-վQd+skJ'yfN&iu)xSC>AU?oD5NƑ_.1)+v1ZoDWIJjj{յ 뻼|LBY}Ial;)vLu3Ea ^}J˭\n}.p*9HrF'MNMV#7χr.@#5췶5MH*@3Ivٍ3VȗTr($)TZD"џJcI'aˊݽJ7<,TTqcܸ7oBC;te2~M qx{?yܾuի[Y%' CkB: 4uuzuf6?D"兇XN+00YԨw a2 DB)ǵhԩaa;vبչB),Ȯ );m}קoVI$B CqHO?Ct44 @(x R\kΈx;ChD1!a)DB :zVK›-axͲfԊ\ D ҹfiǼ'-]?5C{_Tˠ.~:" PTm9 D7eױ.2P{Gecz?y؇K88`CJT>1~㹦/,R}+mJz]RE90M5d࣮ǖ;I_'<B %U`~WICT`q!6E+?S~ƞҌj%Z6Y(f!oD`A5^|Tk2҅^4T@ʚ&6s†je9ݞy,a꣉PyD"诂)_I&OT=.6Sffe ccWOOc^:^]gh[ArFǥҥm2T$D_rZ}޽)7h횸e0?2޿Tiq"",,*V>~5-[򢢄 baT6hؔn2' D"@(݄@d4YnmeVpAu %>1I9iw*&)qԸI;8; >Nq{yG2gc?-ࡃi<{mkTв+ r nepp= &@P,A|~Mzl51D_dAnwBD6jy>}uqҞ\q t2PB( o$)ڵ\gowF#Y]j>uۛax%s[`1y%>XH<"HW.Rku'ntqi/l~*Nٴ˕kz˖J V(T#"[,D"5C6i0RE"k@L|M:sA>LW@ @  :/J*Aҋ1;;R>;DXʡ# 4!Jzj\}XI댭XE?tvs#̮^} FW?o=,]kFP|-<?Xc֧Jՠα -4E41s4I|. z;HKBC*{h Z^^?.u{zhAhQDh((E}.D5~?ք9;KdqcȪު{ZAvSAv!lK Gwmˍr1w X=KӁnޢ&Fčq]cz+Z\uJ͋51A `׵McU]ley{<D"_~]Py ^x<yI).Fzu[HHy=?sB)!˿zeoߩʕj&$ uEe*V4s۵ny6m­^D"PJ)쫓ZŶ+k͔ldre@qר6Ro0=3߿ߺQ~,vr|ԗ̿!;H$}g T|խN[ ugP(kZYz+La4B?yafDEdc즬[&n[i>@Dz/(!ga7mP:}d1ndsO-4nxaS||"%~,YGan=$׽u#$;M-JQ b:1%lC/i/z˦~|>і;_1l!oY,28KnW osSrv'i eLZKF0yUo:CHM<";1}(gɓ4x|/Ekc#65mfj|}>tq)k _rBq;ﱌHr*H$ӕjUW_o)( *,yήjUnj55-W׿˫0.nmQ#;;!BfZzf֗;$DT"H$*kpQkd%1x_6Wzq怪2t:ױxbP@yX#Fr-8 dA҇kGaBI:JcJޕ+*t(E5 pK%pܤΡ\ xM!/IPpMCR \죲ca1u% KSU2\ ןcs" ]2ɬˍT mݣ1F MR (h*Ϣ7eE6,1v(=&쇊U "ϝl}R|7CR?`Iq  ZH5 B_Ve<4%Vv|@=n1.TEm$vqIb s'mYҘM79nA=wS?G`|6a"{^(98am28C-TH$^TI|y:&*_I<2 o߶n_6Z*[\J4ٻ߿~#G|}% weIm=V(5 G$Dźq{nݼ~bs B aSʗa6 e2'YXh4cFF8Э[B•+,K) VVt}I`;zɗ:fL m#D_ pƣ3p'6$|TVCorPHHGðԚO# 7]Ąen`P/u.mk$!ϪFMIaWܫ<ݬCo0bn: wPK5*i'%1bH/"r9D1NGSOP5I!6A&Uե &0Y oH BǺ {?Wk>R M?* |sdcWS?7B"wI[i![aV:ek}Z=dG$D_&&!A>mZ.>GPVt V\lmTnysPiv29ՠ2k52V\u'"H$Zg/4nXmzW!)Miuff۶0 8_#ՀRUX& T' oJ`~UN÷E 5RZM\ߏCTV$8?UP~DsD"8J3ܙ/uşedh& alLM%Lqԡ̙ ##8?B$TbM鴧H;x:Co5^"g!WwT!t.H$}jJ`,N?')4?oXutPP @[x#q !$#7(Bɂ A(!z=]>$d6oty~}M1+I))#II5j:6 %D"!q\a^1~Thm 3f!I:Y)uڵ̝ T$D¢Yy)ZY9t)+toc7_еXp)&SIfLȬ KTkƜ:4D"HTʏs&M T`~v*ly:X\_((<`J}M7lhm't"H$ȏG#.in?wCЉ5"w+6ou~s[:}%DF\2h6ph!p`6ZK?͈&# %D{ROfͯViS6"N} B3s A!/oҏ0As>}yf5jʪvPUHԔ0L\"H$Q dܸysCKNHuvv.e*m1`,H$D!D<p`ݛ65r$9+N֛G05ߡ@,(DE;k|S`}-\z ?J l&qmzHnDC :H#"o(]-5ӮW)r΂N:/3 '!3>lYL:H$((͘~}ˣӹ:й~ 24d*4b zOe4H$JEb{sՄ `X%mepR>%rDX"H$HJZb<^ojc-Z@|lq_`3m0P.(>/,`,HH;$,,붆$i_{_oD[@!l*r#m?,)<,}Yy'tD"HWh gΌ\3^{¦" Cli3 *WSXWh*tD"HW3ޥѦ쬾q4փ?ĴB;%[%6lTVctVp1Z"H${G-Py/.HNڪ~lv Lwa6S쀠jLO$6MDE_&6Eߍv@2Vt}1\"Yz6w{3 Fu*ձyn:}Ywr !UD"7Wۂc㋞>yۓg{oon6k6Ժm{B!G?H$}soko6W3VL LGcM}Z4*"H$)̀U #~vmM-k=?cs>s牍\4RNNdl߬(71B|BS4EU~_qo,UicOY+m9ĄS> >&\+.b#`_[7~+5kծCg/ }Fk- /Nf0 fB#һPnlwq׆g*uگzc=[eFRg¤<,UY+&Bн.heŊ+[_IUN~C$ >'EfUuńBwt8Jnɜc{CL.7l\&Gl/e$3.`_WL!SP8`p$N|jZۀ{J~h( Cxq8 u4a'`2M`;Qq_;ZiQ6B>+c'Yx=!-HI!{hhp]y!Ÿ{wc,i<0-`{|#ã92)_WF!ܛמQlXkSWEW:s<"lA>:hj1]|gXh_WF!!h>Nͳx4P6^5.S? Hr`+fσt *0v毐 VO *j҃[?1̳Bh߸#a0#0@/ag"Fu5BȃǏ^+;;vGDjUĐLF#!:s]./M&=-Oܘ[B!݃oZ%K.oR665w }顟/X0$-$;+kh oM!tv(.sbǼX坫6*d9WJ^ODQ9JBzpp:Z .KXqHx# 8H F j%tEXtdate:create2021-06-21T14:20:40+00:00}4%tEXtdate:modify2021-06-21T14:20:40+00:00 IENDB`datawizard/man/figures/logo.png0000644000176200001440000003301614141467475016311 0ustar liggesusersPNG  IHDRxb]esRGBgAMA a pHYsod5IDATx^|TUozf&!*DP,k,X^bZA@DAzA H7oH&& 13wf^s){Wlhew6+Fnb_t6Fwi <ώPoO1{ד7&`{6^!~/;[9ԑ`6S?CL|T, (KRe*q|+0)BNT4ޟ e!o0y6ls,5 &&>Ύm!#܊جR7hP?#9M' ^]˝xx1m0pKIKFAa1Û?L]`/gm/Nj ]pT//62< ?Qp-.HL\V4K#Xr/|aY*bYjcGrŢ9/5)]xqiE/WTiIh_᩹A\xG)N!G=6p@μ?MQR_Z*+0)5P_i xf[eܿpA0%$q3 7|N&xvN^4ޟH9P&p;0}ew]ꍏ'L^'u|ϯCq(gY\~l?-I#Ç#x*9OA:DHb%fa*Ð9\Ëcui%1ܻj|:J S^m<SN0$ t?Ťlڗ2p`JiPYm(ڦpIF~A{,_\~fbZH9>]K MES!^+")`u gf4^ [!W`(Ғ[끝NK8qs>&ݺJʰ{u3{-!*%n| DP"5'[>֌EtrmeAjA;^*n]} ܎Γۊ%- K0kP;q̅xUJđ~-b/X6|.rÌזpxYٞeRكgRSqhid|-v}Q|2V+i\.bʱFpY[2ZTh1g5X\̻m<4nˤd 숮kY<[+~—cT$d@`Ǚ-wʎL:st\nR@[SzM";Qo*׀cGc>.0[BYmFҐ׿m0oMHKOB { F:ך'ݟaS䡟N诧;el"ܔQЄyrMPE}I†3R`kH̽f9J Qx( '& uf7 ׇˮ* NrH&z3޾~<U=pΉl vrC;9p-Cr_ViqW G$*NTd 1GQecFt;t1ރQnBCmOˀӅ,n kG1#qqoWɂ`KT@EGA/6j o/S^Cɓw$wN`CQ))4r,S~RAOo {56ݿ JQkĹ#%X8e5ʏcFδ\}H$=zPc%G2,qPiR0. o ¹G:70~G &\`ǜސNJ<媚/GkqR[@"T)KaM4҆ׯL ?絯Y@am;7ʎTnvfh<$׭8'\5gɔ5uS%A&P  RE׿QDܖzᬌ 6&#{OHbڟ#K<Yzh\H\' ֋<&. |%"}3j/w-j^19J `&@+ϠwiUg|gK 8#?DxV-] ߎwM?Ƹφ1{{>t%|Ix8oGݛ>,F`٨F2hTҘ&IK n'/% n{\Յ\)0ݹ:L?J0O O=ԅ+u$Fiuk4Vzvxw$t[* I:^j:A3|yj o5MQLL2,l5N =ý 3RX/cU0J8;oԴ6Z j;y9S 䉷ZP,`΢E7>y` y, X2u~wJR a'kR0'!()`S*h>O̾2{y``6.5Һʜ 3cS"=59dDzỹ?0ƣ>Ȝ$:?P?#5kpW$8cnYJR6\lcܧCvt+a0ck g(5.|x SczPyd= _9؈ cXL̴k̡0v,"Ki3)6^ĴsX<=ݓk:ͽgp.ҥ,X5BOf* -~`^"=IPBFR''lu^[gEwŠz rzRYL`WPqJp\ߐ5 'Q&P=Fj&2~{ т( LY"D:_Fr2'o}仑KQymj);}>jFZܶ5:J I.Rl6X/bvSkoeCĆXLɜš½T \;p:ByL 3=̜fB {av:9bG$5Wp<+췳:fuZW-S0ϻG{4(KupREOcMXF:6]TT*Kq&:V?r3oU>3,<)%$1D;#yH>B[yDLU5?aqg⾁Aq6iRZ*'nrz~]#@BU֓a)r)~G 4+io9f?Y0?λAB L]K߇EcsY[̄^IB0ҜaEAV Il:̂ы*<&]k.z1\`3;LA9'ʚprrr8!o5y)3<9QK);w[ZeЯl4b-(Q7ۭK.{#kTg:m CMIKP}eǤ'1ϺH}T lWѥ/:WxK)%m"dXw&ašwԶa|׃mbE\Xe-8uhotc80{EƊP]r\JdKqݰ5ެE)g8m;W>+a9˄@,}a|;[GdohRÁW h3>;vTaqn R_RSu/^Im@Ÿuy ٦UaͽCPI['N\jLלB#{6՝qj%'YOD=CC]5cŧƢb 25ɓK~TEKSG ޓJ=44v@Y)-uݹZ,bvouIR޵aw$S!cUvFCH͞"$?L-S|Uď7+:Xrii2FOpu<_8T t]c^މN[ȲDl ? 6lw+% AH1vmH=lIKũ5Aj#>[{ȨjBmX>wBtK%FأbD]uᩇLK;Ż8d/LDSǯ: o^d< _{71PPua{tj Kܩh)zeG̿c8ߺbZ=SkDLDܯ1CoǑ3Թ{^ٱ|:|6\< ՁeHRҎR]4+ 7,/=(¶8k=Ňf%pDJ<)#DCҗ7J|卹9'H]e=|(T6ÞM|hƽ!%5RRY/kxSM%p ,89Z09'o&Oz([)L~\(Q|fY! #L9gRT!_omv^/ A,{|Y~˟6rzŬA3{AnVr5:?JU5@jϑfM6h~gTq3::):bj:sY6bMKzJEb2 E뽠"bȦ+|KA>q9gP~6 ̺Exި3:̼G m_"e?VaH#'3.ZB4p1^JoC¶A+ 0Uk!82 deq,d1]Ua`&Vyl5Nn"Г:8 {f <唁w/€jU΄ ]74mD[7gLWoaߊXSN|^oرGT ,z?^X֪Р:YQkkz0ZC/t(Z-d61aӗ+1_V'9qVSIӡ]tn$`Fy?wnhk%V5./ $CYV͍ՃX+bA duWQ?~3qǜ>MfW[[F`ҳ%=k^6k'îQYs/~nY yOHαc35dka c+.#alƍ([[HB[6 bcuNVݸ{Ы⫆ϋH9Y=ipUNB<͂'Ƶ7#mIaӳ{26'avЮ-[E 7xd=JP5g6HLLv@LgJ`^# jԊ eȂC!"/^ {X84xSc9V_& +c)/6Oa[#ڈnן\cSāSCA`l#Ts䑻,-&+T(pn<;=VQVu?䱿üV܏z- $,*cf%,#\p|9#Z Yk&"0k1(o'U}GWI7s6ΉNfnPbi=^Q٤:=3x{M]pBRBVݻfϪ9+@E6>}<9\J {b-Z+Oy2lI.QӴiFA(||k>Qz/vp#.WҎasWgJ$*6 241}`{N;k'(Eޞ(X$6h׀0 zS+F;Z `|mqH z'awf!1. r1_~ ;[S\&䢻  yx$&rCv>^-r5NJհ; 0lhWxb`cꍁvB8n'mt܋1eioTs<ר%ts:>F컵:wI"i@!Lޒ#lIh,8/x-Vo說@Ŭ0? d7 M,u{Uk~գѣDŽV^Eʖr`v{ČF FNB9C .'=7 TIMUkny檏gɑF]'_?^3gq%~i+.l8s29Խ믴S0YkTndI$*IX94' ;TX15C3hd&ÿx+Ft̀!Ga9*9-+XE`Ráԅr6zy?~n'Dart^L5wnlU)L<ީw?|]Aas}&0uJK4`̫L<-E{ge8R2֚ 2Lj?q&1CznƴWcUBp4oA#BQq lq_̸I >$*?xY 2 !> ra 2 ]%9IIp9'Fo%PkS׮r{ܥ03;/ߎr]x{U Fl??e3ؒtZ'+")(M G-OZZGa{bjt> 8]PX _:xWs89mlvIi)^n=^;,pJ04; s7GXĦ{c=]Ro4:D O0`6{sh[qx~TI®S`ó}Y 88f6(;[""}Qlꈶ1wMiLV.8a/&H\[ .DYY#{N>'\+**Պ?|?o#3C}i@W¥llJtݭ'\F=.|,.qe}gMܜQOlE^_ۤP;yѵe&!o~jDkG$¿#zǿ业B UQu6y+E;Ĩ>KVj{Ά,M`j1u5~v [ ꘅ Gp6CqgbKϐ}w9#N^*^ GFԔ]fR q!#krcXA O >#F ֪p±s?\v# WJAR0sKWz-'@.H,rx/TWڄ ,P!r4gp930KS|0ױ8dY`%<;M?A& O?vA f>:ӅyKԯbsF؊_ %mC8Û=2Pf_Hn5@k@'Y#n1 n`):IEB/6vuK*ֿ!9nK4Wh{j{&A$i2#چCt#WZ#G"'wâN2<{(7mj438x!?.B(dz=Sz,[8s5~H5q>Hg{CvfL&f Ul8zV 6\/P;Qo֭h%qNܴ YY}$V&yg<8)TIܻd.dֽW٬K˭FkP!.YҋoyB*xB)NjQ[O=9xh< q^IT vS3ڱAF]#=ySHClI>~s͈'GRd;oϲ:foR`ӌ^tc{%E]e4"8S{uɖ|\|-/LbZ-n;9{4ae%ij|ܓzrSgZwGJ6T8>Ux'w_j(A Ƅ4Tҹ># `c#HAvrqܭ4/= rO[{0\}EFbqXhTqkkUJ>ΔBY,,9&Msf$"d BX$^[(H·cG2I:þBvvY?9ҏG.ipIaSd#ȽӃ/Ohvހu/B ĬPrZWx~>*سسڂGLzif؄u)s;^H?_mAC&=C'긫WqD&0#].%;EN8$%9ȱbOvU+ n/:R'CbaL#0;+=fs D>6ӱ ߖ1wM3<{Nۣɐ&J3 oT:˶@RhH̕XpUn/pv:rCl&hV(\9 ( JShX]j' kL}]q o%9a FFcӳѹw(:s̟?^ϱ>]~˸lM˭@OZ* 8:tpudrJ3Kْj"="M2N+&::pR omJ.. ։yO|!+F356mb48U$9(`DqX}W6|M,!ìx{beY .Ycl]VԹU<WtMZTbXĝ߭^ˮ ?+WwB.Qh۵NY.9Pȇtb(\F0TN![*'QܞyU]{Ɓ |{S*wweHl~ SWV-PfsRw9arV;BhlduhS,̭΋qZ lz1@d0&):+wڗK5-F/xG$tG;#?f 6&gM8_?Ļ?=u7"IENDB`datawizard/man/reshape_ci.Rd0000644000176200001440000000240014131371650015545 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/reshape_ci.R \name{reshape_ci} \alias{reshape_ci} \title{Reshape CI between wide/long formats} \usage{ reshape_ci(x, ci_type = "CI") } \arguments{ \item{x}{A data frame containing columns named \code{CI_low} and \code{CI_high} (or similar, see \code{ci_type}).} \item{ci_type}{String indicating the "type" (i.e. prefix) of the interval columns. Per \emph{easystats} convention, confidence or credible intervals are named \code{CI_low} and \code{CI_high}, and the related \code{ci_type} would be \code{"CI"}. If column names for other intervals differ, \code{ci_type} can be used to indicate the name, e.g. \code{ci_type = "SI"} can be used for support intervals, where the column names in the data frame would be \code{SI_low} and \code{SI_high}.} } \value{ A dataframe with columns corresponding to confidence intervals reshaped either to wide or long format. } \description{ Reshape CI between wide/long formats. } \examples{ x <- data.frame( Parameter = c("Term 1", "Term 2", "Term 1", "Term 2"), CI = c(.8, .8, .9, .9), CI_low = c(.2, .3, .1, .15), CI_high = c(.5, .6, .8, .85), stringsAsFactors = FALSE ) reshape_ci(x) reshape_ci(reshape_ci(x)) } datawizard/man/data_restoretype.Rd0000644000176200001440000000157214113652110017023 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/data_restoretype.R \name{data_restoretype} \alias{data_restoretype} \title{Restore the type of columns according to a reference data frame} \usage{ data_restoretype(data, reference = NULL, ...) } \arguments{ \item{data}{A data frame to pivot.} \item{reference}{A reference data frame from which to find the correct column types.} \item{...}{Additional arguments passed on to methods.} } \value{ A dataframe with columns whose types have been restored based on the reference dataframe. } \description{ Restore the type of columns according to a reference data frame } \examples{ data <- data.frame( Sepal.Length = c("1", "3", "2"), Species = c("setosa", "versicolor", "setosa"), New = c("1", "3", "4") ) fixed <- data_restoretype(data, reference = iris) summary(fixed) } datawizard/man/describe_distribution.Rd0000644000176200001440000000632514113652110020025 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/describe_distribution.R \name{describe_distribution} \alias{describe_distribution} \alias{describe_distribution.numeric} \alias{describe_distribution.factor} \alias{describe_distribution.data.frame} \title{Describe a distribution} \usage{ describe_distribution(x, ...) \method{describe_distribution}{numeric}( x, centrality = "mean", dispersion = TRUE, iqr = TRUE, range = TRUE, quartiles = FALSE, ci = NULL, iterations = 100, threshold = 0.1, verbose = TRUE, ... ) \method{describe_distribution}{factor}(x, dispersion = TRUE, range = TRUE, verbose = TRUE, ...) \method{describe_distribution}{data.frame}( x, centrality = "mean", dispersion = TRUE, iqr = TRUE, range = TRUE, quartiles = FALSE, include_factors = FALSE, ci = NULL, iterations = 100, threshold = 0.1, verbose = TRUE, ... ) } \arguments{ \item{x}{A numeric vector.} \item{...}{Additional arguments to be passed to or from methods.} \item{centrality}{The point-estimates (centrality indices) to compute. Character (vector) or list with one or more of these options: \code{"median"}, \code{"mean"}, \code{"MAP"} or \code{"all"}.} \item{dispersion}{Logical, if \code{TRUE}, computes indices of dispersion related to the estimate(s) (\code{SD} and \code{MAD} for \code{mean} and \code{median}, respectively).} \item{iqr}{Logical, if \code{TRUE}, the interquartile range is calculated (based on \code{\link[stats:IQR]{stats::IQR()}}, using \code{type = 6}).} \item{range}{Return the range (min and max).} \item{quartiles}{Return the first and third quartiles (25th and 75pth percentiles).} \item{ci}{Confidence Interval (CI) level. Default is \code{NULL}, i.e. no confidence intervals are computed. If not \code{NULL}, confidence intervals are based on bootstrap replicates (see \code{iterations}). If \code{centrality = "all"}, the bootstrapped confidence interval refers to the first centrality index (which is typically the median).} \item{iterations}{The number of bootstrap replicates for computing confidence intervals. Only applies when \code{ci} is not \code{NULL}.} \item{threshold}{For \code{centrality = "trimmed"} (i.e. trimmed mean), indicates the fraction (0 to 0.5) of observations to be trimmed from each end of the vector before the mean is computed.} \item{verbose}{Toggle warnings and messages.} \item{include_factors}{Logical, if \code{TRUE}, factors are included in the output, however, only columns for range (first and last factor levels) as well as n and missing will contain information.} } \value{ A data frame with columns that describe the properties of the variables. } \description{ This function describes a distribution by a set of indices (e.g., measures of centrality, dispersion, range, skewness, kurtosis). } \note{ There is also a \href{https://easystats.github.io/see/articles/parameters.html}{\code{plot()}-method} implemented in the \href{https://easystats.github.io/see/}{\pkg{see}-package}. } \examples{ describe_distribution(rnorm(100)) data(iris) describe_distribution(iris) describe_distribution(iris, include_factors = TRUE, quartiles = TRUE) } datawizard/man/data_to_long.Rd0000644000176200001440000000645514113652110016104 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/data_reshape.R \name{data_to_long} \alias{data_to_long} \alias{data_to_wide} \alias{reshape_longer} \alias{reshape_wider} \title{Reshape (pivot) data from wide to long} \usage{ data_to_long( data, cols = "all", colnames_to = "Name", values_to = "Value", rows_to = NULL, ..., names_to = colnames_to ) data_to_wide( data, values_from = "Value", colnames_from = "Name", rows_from = NULL, sep = "_", ..., names_from = colnames_from ) reshape_longer( data, cols = "all", colnames_to = "Name", values_to = "Value", rows_to = NULL, ..., names_to = colnames_to ) reshape_wider( data, values_from = "Value", colnames_from = "Name", rows_from = NULL, sep = "_", ..., names_from = colnames_from ) } \arguments{ \item{data}{A data frame to pivot.} \item{cols}{A vector of column names or indices to pivot into longer format.} \item{colnames_to}{The name of the new column that will contain the column names.} \item{values_to}{The name of the new column that will contain the values of the pivoted variables.} \item{rows_to}{The name of the column that will contain the row-number from the original data. If \code{NULL}, will be removed.} \item{...}{Additional arguments passed on to methods.} \item{names_to, names_from}{Same as \code{colnames_to}, is there for compatibility with \code{tidyr::pivot_longer()}.} \item{values_from}{The name of the column that contains the values of the put in the columns.} \item{colnames_from}{The name of the column that contains the levels to be used as future columns.} \item{rows_from}{The name of the column that identifies the rows. If \code{NULL}, will use all the unique rows.} \item{sep}{The indicating a separating character in the variable names in the wide format.} } \value{ data.frame } \description{ This function "lengthens" data, increasing the number of rows and decreasing the number of columns. This is a dependency-free base-R equivalent of \code{tidyr::pivot_longer()}. } \examples{ wide_data <- data.frame(replicate(5, rnorm(10))) # From wide to long # ------------------ # Default behaviour (equivalent to tidyr::pivot_longer(wide_data, cols = 1:5)) data_to_long(wide_data) # Customizing the names data_to_long(wide_data, cols = c(1, 2), colnames_to = "Column", values_to = "Numbers", rows_to = "Row" ) # From long to wide # ----------------- long_data <- data_to_long(wide_data, rows_to = "Row_ID") # Save row number data_to_wide(long_data, colnames_from = "Name", values_from = "Value", rows_from = "Row_ID" ) # Full example # ------------------ if (require("psych")) { data <- psych::bfi # Wide format with one row per participant's personality test # Pivot long format long <- data_to_long(data, cols = "\\\\d", # Select all columns that contain a digit colnames_to = "Item", values_to = "Score", rows_to = "Participant" ) # Separate facet and question number long$Facet <- gsub("\\\\d", "", long$Item) long$Item <- gsub("[A-Z]", "", long$Item) long$Item <- paste0("I", long$Item) wide <- data_to_wide(long, colnames_from = "Item", values_from = "Score" ) head(wide) } } datawizard/man/data_transpose.Rd0000644000176200001440000000143214113652110016447 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/data_transpose.R \name{data_transpose} \alias{data_transpose} \title{Transpose a dataframe} \usage{ data_transpose(data, verbose = TRUE, ...) } \arguments{ \item{data}{A data frame, or an object that can be coerced to a data frame.} \item{verbose}{Silence warnings and/or messages by setting it to \code{FALSE}.} \item{...}{Other arguments passed to or from other functions.} } \description{ Transpose a dataframe. It's the equivalent of using \code{t()} but restores the data.frame class, and prints a warning if the data type is modified (see example). } \examples{ transposed <- data_transpose(iris) transposed[1:5] transposed <- data_transpose(iris[1:4]) # Only numeric = no warning } datawizard/man/data_match.Rd0000644000176200001440000000141214113652110015523 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/data_match.R \name{data_match} \alias{data_match} \title{Find row indices of a data frame matching a specific condition} \usage{ data_match(x, to, ...) } \arguments{ \item{x}{A data frame.} \item{to}{A data frame matching the specified conditions.} \item{...}{Other arguments passed to or from other functions.} } \value{ A dataframe containing rows that match the specified configuration. } \description{ Find row indices of a data frame that match a specific condition. } \examples{ matching_rows <- data_match(mtcars, data.frame(vs = 0, am = 1)) mtcars[matching_rows, ] matching_rows <- data_match(mtcars, data.frame(vs = 0, am = c(0, 1))) mtcars[matching_rows, ] } datawizard/man/visualisation_recipe.Rd0000644000176200001440000000145314141441413017667 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/visualisation_recipe.R \name{visualisation_recipe} \alias{visualisation_recipe} \title{Prepare objects for visualisation} \usage{ visualisation_recipe(x, ...) } \arguments{ \item{x}{An \code{easystats} object.} \item{...}{Other arguments passed to other functions.} } \description{ This function prepares objects for visualisation by returning a list of layers with data and geoms that can be easily plotted using for instance \code{ggplot2}. See the documentation for your object's class: \itemize{ \item{\link[modelbased:visualisation_recipe.estimate_predicted]{modelbased} (\code{estimate_means}, \code{estimate_contrasts}, \code{estimate_slopes}, \code{estimate_predicted}, \code{estimate_grouplevel})} } } datawizard/man/data_relocate.Rd0000644000176200001440000000214514113652110016231 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/data_relocate.R \name{data_relocate} \alias{data_relocate} \title{Relocate (reorder) columns of a data frame} \usage{ data_relocate(data, cols, before = NULL, after = NULL, safe = TRUE, ...) } \arguments{ \item{data}{A data frame to pivot.} \item{cols}{A character vector indicating the names of the columns to move.} \item{before, after}{Destination of columns. Supplying neither will move columns to the left-hand side; specifying both is an error.} \item{safe}{If \code{TRUE}, will disregard non-existing columns.} \item{...}{Other arguments passed to or from other functions.} } \value{ A data frame with reordered columns. } \description{ Relocate (reorder) columns of a data frame } \examples{ # Reorder columns head(data_relocate(iris, cols = "Species", before = "Sepal.Length")) head(data_relocate(iris, cols = "Species", before = "Sepal.Width")) head(data_relocate(iris, cols = "Sepal.Width", after = "Species")) head(data_relocate(iris, cols = c("Species", "Petal.Length"), after = "Sepal.Width")) } datawizard/man/normalize.Rd0000644000176200001440000000462014113652110015442 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/normalize.R \name{normalize} \alias{normalize} \alias{normalize.numeric} \alias{normalize.grouped_df} \alias{normalize.data.frame} \title{Normalize numeric variable to 0-1 range} \usage{ normalize(x, ...) \method{normalize}{numeric}(x, include_bounds = TRUE, verbose = TRUE, ...) \method{normalize}{grouped_df}( x, select = NULL, exclude = NULL, include_bounds = TRUE, verbose = TRUE, ... ) \method{normalize}{data.frame}( x, select = NULL, exclude = NULL, include_bounds = TRUE, verbose = TRUE, ... ) } \arguments{ \item{x}{A numeric vector, data frame, or matrix. See details.} \item{...}{Arguments passed to or from other methods.} \item{include_bounds}{Logical, if \code{TRUE}, return value may include 0 and 1. If \code{FALSE}, the return value is compressed, using Smithson and Verkuilen's (2006) formula \code{(x * (n - 1) + 0.5) / n}, to avoid zeros and ones in the normalized variables. This can be useful in case of beta-regression, where the response variable is not allowed to include zeros and ones.} \item{verbose}{Toggle warnings and messages on or off.} \item{select}{Character vector of column names. If \code{NULL} (the default), all variables will be selected.} \item{exclude}{Character vector of column names to be excluded from selection.} } \value{ A normalized object. } \description{ Performs a normalization of data, i.e., it scales variables in the range 0 - \enumerate{ \item This is a special case of \code{\link[=data_rescale]{data_rescale()}}. } } \details{ \itemize{ \item If \code{x} is a matrix, normalization is performed across all values (not column- or row-wise). For column-wise normalization, convert the matrix to a data.frame. \item If \code{x} is a grouped data frame (\code{grouped_df}), normalization is performed separately for each group. } } \examples{ normalize(c(0, 1, 5, -5, -2)) normalize(c(0, 1, 5, -5, -2), include_bounds = FALSE) head(normalize(trees)) } \references{ Smithson M, Verkuilen J (2006). A Better Lemon Squeezer? Maximum-Likelihood Regression with Beta-Distributed Dependent Variables. Psychological Methods, 11(1), 54–71. } \seealso{ Other transform utilities: \code{\link{data_rescale}()}, \code{\link{ranktransform}()}, \code{\link{standardize}()} } \concept{transform utilities} datawizard/man/data_extract.Rd0000644000176200001440000000302114141441413016102 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/data_extract.R \name{data_extract} \alias{data_extract} \alias{extract} \title{Extract a single column or element from an object} \usage{ data_extract(data, select, name = NULL, ...) extract(data, select, name = NULL, ...) } \arguments{ \item{data}{The object to subset. Methods are currently available for data frames and data frame extensions (e.g., tibbles).} \item{select}{A variable specified as: \itemize{ \item a literal variable name (e.g., \code{column_name}) \item a character vector with the variable name (e.g., \code{"column_name"}) \item a positive integer, giving the position counting from the left \item a negative integer, giving the position counting from the right. } The default returns the last column. If the special value \code{0} or \code{"row.names"} is given, the row names of the object (if any) are extracted.} \item{name}{An optional argument that specifies the column to be used as names for for the vector after extraction. Specified in the same way as \code{select}.} \item{...}{For use by future methods.} } \value{ A vector containing the extracted element. } \description{ \code{extract()} is similar to \code{$}. It extracts a single column or element from an object (e.g., a data frame, list, ) } \examples{ extract(mtcars, cyl, name = gear) extract(mtcars, "cyl", name = gear) extract(mtcars, -1, name = gear) extract(mtcars, cyl, name = 0) extract(mtcars, cyl, name = "row.names") } datawizard/man/ranktransform.Rd0000644000176200001440000000361514113652110016334 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/ranktransform.R \name{ranktransform} \alias{ranktransform} \alias{ranktransform.numeric} \alias{ranktransform.grouped_df} \alias{ranktransform.data.frame} \title{(Signed) rank transformation} \usage{ ranktransform(x, ...) \method{ranktransform}{numeric}(x, sign = FALSE, method = "average", verbose = TRUE, ...) \method{ranktransform}{grouped_df}( x, select = NULL, exclude = NULL, sign = FALSE, method = "average", ... ) \method{ranktransform}{data.frame}( x, select = NULL, exclude = NULL, sign = FALSE, method = "average", ... ) } \arguments{ \item{x}{Object.} \item{...}{Arguments passed to or from other methods.} \item{sign}{Logical, if \code{TRUE}, return signed ranks.} \item{method}{Treatment of ties. Can be one of \code{"average"} (default), \code{"first"}, \code{"last"}, \code{"random"}, \code{"max"} or \code{"min"}. See \code{\link[=rank]{rank()}} for details.} \item{verbose}{Toggle warnings and messages on or off.} \item{select}{Character vector of column names. If \code{NULL} (the default), all variables will be selected.} \item{exclude}{Character vector of column names to be excluded from selection.} } \value{ A rank-transformed object. } \description{ Transform numeric values with the integers of their rank (i.e., 1st smallest, 2nd smallest, 3rd smallest, etc.). Setting the \code{sign} argument to \code{TRUE} will give you signed ranks, where the ranking is done according to absolute size but where the sign is preserved (i.e., 2, 1, -3, 4). } \examples{ ranktransform(c(0, 1, 5, -5, -2)) ranktransform(c(0, 1, 5, -5, -2), sign = TRUE) head(ranktransform(trees)) } \seealso{ Other transform utilities: \code{\link{data_rescale}()}, \code{\link{normalize}()}, \code{\link{standardize}()} } \concept{transform utilities} datawizard/man/center.Rd0000644000176200001440000001060714141513700014726 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/center.R \name{center} \alias{center} \alias{centre} \alias{center.numeric} \alias{center.data.frame} \title{Centering (Grand-Mean Centering)} \usage{ center(x, ...) centre(x, ...) \method{center}{numeric}( x, robust = FALSE, weights = NULL, verbose = TRUE, reference = NULL, center = NULL, ... ) \method{center}{data.frame}( x, robust = FALSE, weights = NULL, verbose = TRUE, reference = NULL, select = NULL, exclude = NULL, remove_na = c("none", "selected", "all"), force = FALSE, append = FALSE, center = NULL, ... ) } \arguments{ \item{x}{A data frame, a (numeric or character) vector or a factor.} \item{...}{Currently not used.} \item{robust}{Logical, if \code{TRUE}, centering is done by subtracting the median from the variables. If \code{FALSE}, variables are centered by subtracting the mean.} \item{weights}{Can be \code{NULL} (for no weighting), or: \itemize{ \item For data frames: a numeric vector of weights, or a character of the name of a column in the \code{data.frame} that contains the weights. \item For numeric vectors: a numeric vector of weights. }} \item{verbose}{Toggle warnings and messages.} \item{reference}{A data frame or variable from which the centrality and deviation will be computed instead of from the input variable. Useful for standardizing a subset or new data according to another data frame.} \item{center}{Numeric value, which can be used as alternative to \code{reference} to define a reference centrality. If \code{center} is of length 1, it will be recycled to match the length of selected variables for centering. Else, \code{center} must be of same length as the number of selected variables. Values in \code{center} will be matched to selected variables in the provided order, unless a named vector is given. In this case, names are matched against the names of the selected variables.} \item{select}{Character vector of column names. If \code{NULL} (the default), all variables will be selected.} \item{exclude}{Character vector of column names to be excluded from selection.} \item{remove_na}{How should missing values (\code{NA}) be treated: if \code{"none"} (default): each column's standardization is done separately, ignoring \code{NA}s. Else, rows with \code{NA} in the columns selected with \code{select} / \code{exclude} (\code{"selected"}) or in all columns (\code{"all"}) are dropped before standardization, and the resulting data frame does not include these cases.} \item{force}{Logical, if \code{TRUE}, forces centering of factors as well. Factors are converted to numerical values, with the lowest level being the value \code{1} (unless the factor has numeric levels, which are converted to the corresponding numeric value).} \item{append}{Logical or string. If \code{TRUE}, centered variables get new column names (with the suffix \code{"_c"}) and are appended (column bind) to \code{x}, thus returning both the original and the centered variables. If \code{FALSE}, original variables in \code{x} will be overwritten by their centered versions. If a character value, centered variables are appended with new column names (using the defined suffix) to the original data frame.} } \value{ The centered variables. } \description{ Performs a grand-mean centering of data. } \note{ \strong{Difference between centering and standardizing}: Standardized variables are computed by subtracting the mean of the variable and then dividing it by the standard deviation, while centering variables involves only the subtraction. } \examples{ data(iris) # entire dataframe or a vector head(iris$Sepal.Width) head(center(iris$Sepal.Width)) head(center(iris)) head(center(iris, force = TRUE)) # only the selected columns from a dataframe center(anscombe, select = c("x1", "x3")) center(anscombe, exclude = c("x1", "x3")) # centering with reference center and scale d <- data.frame( a = c(-2, -1, 0, 1, 2), b = c(3, 4, 5, 6, 7) ) # default centering at mean center(d) # centering, using 0 as mean center(d, center = 0) # centering, using -5 as mean center(d, center = -5) } \seealso{ If centering within-clusters (instead of grand-mean centering) is required, see \code{\link[=demean]{demean()}}. For standardizing, see \code{\link[=standardize]{standardize()}}. } datawizard/DESCRIPTION0000644000176200001440000000426014174271374014126 0ustar liggesusersType: Package Package: datawizard Title: Easy Data Wrangling Version: 0.2.3 Authors@R: c( person("Dominique", "Makowski", , "dom.makowski@gmail.com", role = "aut", comment = c(ORCID = "0000-0001-5375-9967", Twitter = "@Dom_Makowski")), person("Daniel", "Lüdecke", , "d.luedecke@uke.de", role = "aut", comment = c(ORCID = "0000-0002-8895-3206", Twitter = "@strengejacke")), person("Indrajeet", "Patil", , "patilindrajeet.science@gmail.com", role = c("aut", "cre"), comment = c(ORCID = "0000-0003-1995-6531", Twitter = "@patilindrajeets")), person("Mattan S.", "Ben-Shachar", , "matanshm@post.bgu.ac.il", role = "aut", comment = c(ORCID = "0000-0002-4287-4801")), person("Brenton M.", "Wiernik", , "brenton@wiernik.org", role = "aut", comment = c(ORCID = "0000-0001-9560-6336", Twitter = "@bmwiernik")) ) Maintainer: Indrajeet Patil Description: A lightweight package to easily manipulate, clean, transform, and prepare your data for analysis. It also forms the data wrangling backend for the packages in the 'easystats' ecosystem. License: GPL-3 URL: https://easystats.github.io/datawizard/ BugReports: https://github.com/easystats/datawizard/issues Depends: R (>= 3.4) Imports: insight (>= 0.14.4), stats, utils Suggests: bayestestR, boot, dplyr, effectsize, gamm4, ggplot2, knitr, lfe, lme4, MASS, modelbased, parameters, performance, poorman, psych, rmarkdown, rstanarm, see, spelling, testthat (>= 3.0.0), tidyr VignetteBuilder: knitr Config/testthat/edition: 3 Encoding: UTF-8 Language: en-US RoxygenNote: 7.1.2 NeedsCompilation: no Packaged: 2022-01-26 15:24:20 UTC; IndrajeetPatil Author: Dominique Makowski [aut] (, @Dom_Makowski), Daniel Lüdecke [aut] (, @strengejacke), Indrajeet Patil [aut, cre] (, @patilindrajeets), Mattan S. Ben-Shachar [aut] (), Brenton M. Wiernik [aut] (, @bmwiernik) Repository: CRAN Date/Publication: 2022-01-26 16:12:44 UTC datawizard/build/0000755000176200001440000000000014174263642013514 5ustar liggesusersdatawizard/build/vignette.rds0000644000176200001440000000040114174263642016046 0ustar liggesusersu=O1 sZh30? 6d5D9(IU_wMN\+8m"E"/8-Fn>QX#VQ) t콦|a4+:B#+ym._yב3&Jg]sJ;ggu9NgG/[-/j9bӁWXUf/$;^4vv7Oݴd?9 D>ñ/?|datawizard/tests/0000755000176200001440000000000014113652110013540 5ustar liggesusersdatawizard/tests/spelling.R0000644000176200001440000000023314164750351015512 0ustar liggesusersif (requireNamespace("spelling", quietly = TRUE)) { spelling::spell_check_test( vignettes = TRUE, error = FALSE, skip_on_cran = TRUE ) } datawizard/tests/testthat/0000755000176200001440000000000014174271374015420 5ustar liggesusersdatawizard/tests/testthat/test-winsorization.R0000644000176200001440000000051014174263210021421 0ustar liggesusers test_that("testing Winsorization of factors", { expect_equal(winsorize(as.factor(mtcars$am)), as.factor(mtcars$am)) }) test_that("with missing values", { expect_snapshot(suppressWarnings(head(winsorize(na.omit(ggplot2::msleep$brainwt))))) expect_equal(length(winsorize(as.factor(ggplot2::msleep$vore))), 83) }) datawizard/tests/testthat/test-compact-list.R0000644000176200001440000000101114171777711021113 0ustar liggesuserstest_that("compact_list works as expected", { expect_equal(compact_list(list(NULL, 1, c(NA, NA))), list(1, c(NA, NA))) expect_equal(compact_list(c(1, NA, NA)), c(1, NA, NA)) expect_equal(compact_list(list(NULL, 1, list(NULL, NULL))), list(1)) expect_equal(compact_list(c(1, NA, NA), remove_na = TRUE), 1) expect_equal(compact_list(c(1, 2, 3), remove_na = TRUE), c(1, 2, 3)) expect_equal(compact_list(""), "") expect_null(compact_list(NULL)) expect_equal(compact_list(logical(0)), logical(0)) }) datawizard/tests/testthat/test-smoothness.R0000644000176200001440000000035314113652110020703 0ustar liggesuserstest_that("smoothness", { set.seed(123) x <- (-10:10)^3 + rnorm(21, 0, 100) expect_equal(smoothness(x)[[1]], 0.9030014, tolerance = 0.001) expect_equal(smoothness(x, method = "auto")[[1]], 1.750452, tolerance = 0.001) }) datawizard/tests/testthat/test-std_center.R0000644000176200001440000000400614164744652020655 0ustar liggesusersif (require("testthat")) { d <- iris[1:4, ] # standardize ----------------------------------------------------- test_that("standardize.data.frame", { x <- standardise(d, select = c("Sepal.Length", "Sepal.Width")) expect_equal(as.vector(x$Sepal.Length), as.vector(scale(d$Sepal.Length)), tolerance = 0.001) expect_equal(as.vector(x$Petal.Length), as.vector(d$Petal.Length), tolerance = 0.001) expect_equal(colnames(x), c("Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width", "Species")) x <- standardise(d, select = c("Sepal.Length", "Sepal.Width"), append = TRUE) expect_equal(as.vector(x$Sepal.Length_z), as.vector(scale(d$Sepal.Length)), tolerance = 0.001) expect_equal(as.vector(x$Sepal.Length), as.vector(d$Sepal.Length), tolerance = 0.001) expect_equal(as.vector(x$Petal.Length), as.vector(d$Petal.Length), tolerance = 0.001) expect_equal(colnames(x), c("Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width", "Species", "Sepal.Length_z", "Sepal.Width_z")) }) # standardize ----------------------------------------------------- test_that("center.data.frame", { x <- center(d, select = c("Sepal.Length", "Sepal.Width")) expect_equal(as.vector(x$Sepal.Length), as.vector(d$Sepal.Length - mean(d$Sepal.Length)), tolerance = 0.001) expect_equal(as.vector(x$Petal.Length), as.vector(d$Petal.Length), tolerance = 0.001) expect_equal(colnames(x), c("Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width", "Species")) x <- center(d, select = c("Sepal.Length", "Sepal.Width"), append = TRUE) expect_equal(as.vector(x$Sepal.Length_c), as.vector(d$Sepal.Length - mean(d$Sepal.Length)), tolerance = 0.001) expect_equal(as.vector(x$Sepal.Length), as.vector(d$Sepal.Length), tolerance = 0.001) expect_equal(as.vector(x$Petal.Length), as.vector(d$Petal.Length), tolerance = 0.001) expect_equal(colnames(x), c("Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width", "Species", "Sepal.Length_c", "Sepal.Width_c")) }) } datawizard/tests/testthat/test-distributions.R0000644000176200001440000000072214113652110021403 0ustar liggesusersif (require("testthat") && require("bayestestR") && require("parameters")) { test_that("distributions", { x <- bayestestR::distribution_normal(100) expect_equal(kurtosis(x)$Kurtosis, -0.3204763, tolerance = 0.01) expect_equal(skewness(x)$Skewness, -5.050428e-16, tolerance = 0.01) expect_equal(as.numeric(smoothness(x, "diff")), 0.919, tolerance = 0.01) expect_equal(as.numeric(smoothness(x, "cor")), 0.998, tolerance = 0.01) }) } datawizard/tests/testthat/test-skewness.R0000644000176200001440000000220014113652110020334 0ustar liggesusersif (require("testthat")) { test_that("skewness", { data(iris) expect_equal(skewness(iris$Sepal.Length)[[1]], 0.314911, tolerance = 1e-3) expect_equal(skewness(iris$Sepal.Length, type = 1)[[1]], 0.3117531, tolerance = 1e-3) expect_equal(skewness(iris$Sepal.Length, type = 3)[[1]], 0.3086407, tolerance = 1e-3) }) test_that("kurtosis", { data(iris) expect_equal(kurtosis(iris$Sepal.Length)[[1]], -0.552064, tolerance = 1e-3) expect_equal(kurtosis(iris$Sepal.Length, type = 1)[[1]], -0.5735679, tolerance = 1e-3) expect_equal(kurtosis(iris$Sepal.Length, type = 3)[[1]], -0.6058125, tolerance = 1e-3) }) test_that("skewness", { data(iris) expect_equal( skewness(iris[, 1:4])[[2]], c( 0.314910956636973, 0.318965664713603, -0.274884179751012, -0.10296674764898 ), tolerance = 1e-3 ) }) test_that("kurtosis", { data(iris) expect_equal( kurtosis(iris[, 1:4])[[2]], c( -0.552064041315639, 0.228249042468194, -1.40210341552175, -1.34060399661265 ), tolerance = 1e-3 ) }) } datawizard/tests/testthat/test-is-empty-object.R0000644000176200001440000000074214172027360021526 0ustar liggesuserstest_that("is_empty_object works as expected", { # not empty expect_false(is_empty_object(list(NULL, 1, c(NA, NA)))) expect_false(is_empty_object(c(1, NA, NA))) expect_false(is_empty_object("")) # empty expect_true(is_empty_object(logical(0))) expect_true(is_empty_object(NULL)) expect_true(is_empty_object(list(NULL, list(NULL, NULL)))) expect_true(is_empty_object(NA)) expect_true(is_empty_object(c())) expect_true(is_empty_object(list())) }) datawizard/tests/testthat/test-ranktransform.R0000644000176200001440000000066214113652110021373 0ustar liggesusersif (require("testthat")) { test_that("signed rank", { x <- c(-1, 2, -3, 4) sr <- ranktransform(x, sign = TRUE) r <- ranktransform(x, sign = FALSE) expect_equal(sr, x) # unchanged expect_equal(r, c(2, 3, 1, 4)) x <- c(1, -2, -2, 4, 0, 3, -14, 0) expect_warning(ranktransform(x, sign = TRUE)) expect_true(all(is.na(suppressWarnings(ranktransform(x, sign = TRUE)[c(5, 8)])))) }) } datawizard/tests/testthat/test-compact-character.R0000644000176200001440000000051414174253064022074 0ustar liggesuserstest_that("compact character works as expected", { expect_equal(compact_character(c("x", "y", NA)), c("x", "y")) expect_equal(compact_character(c("x", "y", NA_real_)), c("x", "y")) expect_equal(compact_character(c("x", "NULL", "", "y")), c("x", "y")) # scalar expect_equal(compact_character(""), character(0)) }) datawizard/tests/testthat/test-standardize-data.R0000644000176200001440000002016314151374205021731 0ustar liggesusersif (require("testthat") && require("poorman")) { # standardize.numeric ----------------------------------------------------- test_that("standardize.numeric", { x <- standardize(seq(0, 1, length.out = 100)) expect_equal(mean(x), 0, tolerance = 0.01) x <- standardize(seq(0, 1, length.out = 100), two_sd = TRUE) expect_equal(sd(x), 0.5, tolerance = 0.01) x <- standardize(seq(0, 1, length.out = 100), robust = TRUE) expect_equal(median(x), 0, tolerance = 0.01) x <- standardize(seq(0, 1, length.out = 100), robust = TRUE, two_sd = TRUE) expect_equal(mad(x), 0.5, tolerance = 0.01) expect_message(standardize(c(0, 0, 0, 1, 1))) x <- standardize(c(-1, 0, 1), reference = seq(3, 4, length.out = 100)) expect_equal(mean(x), -11.943, tolerance = 0.01) }) # standardize factor / Date ----------------------------------------------- test_that("standardize.numeric", { f <- factor(c("c", "a", "b")) expect_equal(standardize(f), f) expect_equal(standardize(f, force = TRUE), c(1, -1, 0), ignore_attr = TRUE) d <- as.Date(c("1989/08/06", "1989/08/04", "1989/08/05")) expect_equal(standardize(d), d) expect_equal(standardize(d, force = TRUE), c(1, -1, 0), ignore_attr = TRUE) }) # standardize.data.frame -------------------------------------------------- test_that("standardize.data.frame", { data(iris) x <- standardize(iris) expect_equal(mean(x$Sepal.Length), 0, tolerance = 0.01) expect_length(levels(x$Species), 3) expect_equal(mean(subset(x, Species == "virginica")$Sepal.Length), 0.90, tolerance = 0.01) x2 <- standardize(x = iris[1, ], reference = iris) expect_true(all(x2[1, ] == x[1, ])) skip_if_not_installed("poorman") x <- standardize(group_by(iris, Species)) expect_equal(mean(x$Sepal.Length), 0, tolerance = 0.01) expect_length(levels(x$Species), 3) expect_equal(mean(subset(x, Species == "virginica")$Sepal.Length), 0, tolerance = 0.01) }) test_that("standardize.data.frame, NAs", { data(iris) iris$Sepal.Width[c(148, 65, 33, 58, 54, 93, 114, 72, 32, 23)] <- NA iris$Sepal.Length[c(11, 30, 141, 146, 13, 149, 6, 8, 48, 101)] <- NA x <- standardize(iris) expect_equal(head(x$Sepal.Length), c(-0.9163, -1.1588, -1.4013, -1.5226, -1.0376, NA), tolerance = 0.01) expect_equal(head(x$Sepal.Width), c(1.0237, -0.151, 0.3189, 0.0839, 1.2586, 1.9635), tolerance = 0.01) expect_equal(mean(x$Sepal.Length), as.numeric(NA)) x <- standardize(iris, two_sd = TRUE) expect_equal(head(x$Sepal.Length), c(-0.4603, -0.5811, -0.7019, -0.7623, -0.5207, NA), tolerance = 0.01) expect_equal(head(x$Sepal.Width), c(0.5118, -0.0755, 0.1594, 0.042, 0.6293, 0.9817), tolerance = 0.01) expect_equal(mean(x$Sepal.Length), as.numeric(NA)) skip_if_not_installed("poorman") x <- standardize(group_by(iris, .data$Species)) expect_equal(head(x$Sepal.Length), c(0.2547, -0.3057, -0.8661, -1.1463, -0.0255, NA), tolerance = 0.01) expect_equal(head(x$Sepal.Width), c(0.2369, -1.0887, -0.5584, -0.8235, 0.502, 1.2974), tolerance = 0.01) expect_equal(mean(x$Sepal.Length), as.numeric(NA)) }) test_that("standardize.data.frame, apend", { data(iris) iris$Sepal.Width[c(26, 43, 56, 11, 66, 132, 23, 133, 131, 28)] <- NA iris$Sepal.Length[c(32, 12, 109, 92, 119, 49, 83, 113, 64, 30)] <- NA x <- standardize(iris, append = TRUE) expect_equal(colnames(x), c( "Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width", "Species", "Sepal.Length_z", "Sepal.Width_z", "Petal.Length_z", "Petal.Width_z" )) expect_equal(head(x$Sepal.Length_z), c(-0.8953, -1.1385, -1.3816, -1.5032, -1.0169, -0.5306), tolerance = 0.01) expect_equal(head(x$Sepal.Width_z), c(1.04, -0.1029, 0.3543, 0.1257, 1.2685, 1.9542), tolerance = 0.01) expect_equal(mean(x$Sepal.Length_z), as.numeric(NA)) x <- standardize(iris, two_sd = TRUE, append = TRUE) expect_equal(head(x$Sepal.Length_z), c(-0.4477, -0.5692, -0.6908, -0.7516, -0.5084, -0.2653), tolerance = 0.01) expect_equal(head(x$Sepal.Width_z), c(0.52, -0.0514, 0.1771, 0.0629, 0.6343, 0.9771), tolerance = 0.01) expect_equal(mean(x$Sepal.Length_z), as.numeric(NA)) skip_if_not_installed("poorman") x <- standardize(group_by(iris, .data$Species), append = TRUE) expect_equal(head(x$Sepal.Length_z), c(0.2746, -0.2868, -0.8483, -1.129, -0.0061, 1.1168), tolerance = 0.01) expect_equal(head(x$Sepal.Width_z), c(0.1766, -1.1051, -0.5924, -0.8487, 0.4329, 1.2019), tolerance = 0.01) expect_equal(mean(x$Sepal.Length_z), as.numeric(NA)) }) test_that("standardize.data.frame, weights", { x <- rexp(30) w <- rpois(30, 20) + 1 expect_equal( sqrt(cov.wt(cbind(x, x), w)$cov[1, 1]), attr(standardize(x, weights = w), "scale") ) expect_equal( standardize(x, weights = w), standardize(data.frame(x), weights = w)$x ) # name and vector give same results expect_equal( standardize(mtcars, exclude = "cyl", weights = mtcars$cyl), standardize(mtcars, weights = "cyl") ) skip_if_not_installed("poorman") d <- group_by(mtcars, am) expect_warning(standardize(d, weights = d$cyl)) }) # Unstandardize ----------------------------------------------------------- test_that("unstandardize, numeric", { data(iris) x <- standardize(iris$Petal.Length) rez <- unstandardize(x) expect_equal(rez, iris$Petal.Length, tolerance = 1e-3, ignore_attr = TRUE) rez <- unstandardize(x, reference = iris$Petal.Length) expect_equal(rez, iris$Petal.Length, tolerance = 1e-3, ignore_attr = TRUE) rez <- unstandardize(x, center = mean(iris$Petal.Length), scale = stats::sd(iris$Petal.Length)) expect_equal(rez, iris$Petal.Length, tolerance = 1e-3, ignore_attr = TRUE) rez <- unstandardize(0, center = mean(iris$Petal.Length), scale = stats::sd(iris$Petal.Length)) expect_equal(rez, mean(iris$Petal.Length), tolerance = 1e-3) x <- standardize(iris$Petal.Length, robust = TRUE, two_sd = TRUE) rez <- unstandardize(x, robust = TRUE, two_sd = TRUE) expect_equal(rez, iris$Petal.Length, tolerance = 1e-3, ignore_attr = TRUE) x <- scale(iris$Petal.Length) rez <- unstandardize(x) expect_equal(rez, iris$Petal.Length, tolerance = 1e-3, ignore_attr = TRUE) x <- scale(iris$Petal.Length, center = 3, scale = 2) rez <- unstandardize(x) expect_equal(rez, iris$Petal.Length, tolerance = 1e-3, ignore_attr = TRUE) }) test_that("unstandardize, dataframe", { data(iris) x <- standardize(iris) rez <- unstandardize(x) expect_equal(rez, iris, tolerance = 0.1, ignore_attr = TRUE) x <- standardize(iris, select = "Petal.Length") rez <- unstandardize(x) expect_equal(rez, iris, tolerance = 0.1, ignore_attr = TRUE) x <- standardize(iris, select = "Petal.Length") rez <- unstandardize(x, center = c(Petal.Length = mean(iris$Petal.Length)), scale = c(Petal.Length = stats::sd(iris$Petal.Length)) ) expect_equal(rez, iris, tolerance = 0.1, ignore_attr = TRUE) expect_error(unstandardize(x, center = mean(iris$Petal.Length), scale = stats::sd(iris$Petal.Length) )) x <- standardize(iris) rez <- unstandardize(x, center = rep(0, 4), scale = rep(1, 4)) expect_equal(rez, x, tolerance = 0.1, ignore_attr = TRUE) data(iris) x <- standardize(iris, robust = TRUE, two_sd = TRUE) rez <- unstandardize(x, robust = TRUE, two_sd = TRUE) expect_equal(rez, iris, tolerance = 0.1, ignore_attr = TRUE) skip_if_not_installed("poorman") d <- group_by(mtcars, am) x <- standardize(d) expect_error(unstandardize(x)) }) test_that("un/standardize, matrix", { set.seed(4) x <- matrix(sample(8), nrow = 4) colnames(x) <- letters[1:2] rownames(x) <- LETTERS[1:4] x expect_equal(z1 <- standardize(x), z2 <- scale(x), ignore_attr = TRUE) expect_equal(unstandardize(z1), x) expect_equal(unstandardize(z2), unstandardize(z1)) }) } datawizard/tests/testthat/_snaps/0000755000176200001440000000000014174263210016671 5ustar liggesusersdatawizard/tests/testthat/_snaps/winsorization.md0000644000176200001440000000026114174263210022131 0ustar liggesusers# with missing values Code suppressWarnings(head(winsorize(na.omit(ggplot2::msleep$brainwt)))) Output [1] 0.0155 0.0024 0.1750 0.0700 0.0982 0.1150 datawizard/tests/testthat/test-adjust.R0000644000176200001440000000116214113652110017772 0ustar liggesusersif (require("testthat")) { data(iris) test_that("adjust multilevel", { skip_if_not_installed("lme4") adj <- adjust(iris[c("Sepal.Length", "Species")], multilevel = TRUE, bayesian = FALSE) expect_equal( head(adj$Sepal.Length), c(0.08698, -0.11302, -0.31302, -0.41302, -0.01302, 0.38698), tolerance = 1e-3 ) }) test_that("adjust", { adj <- adjust(iris[c("Sepal.Length", "Species")], multilevel = FALSE, bayesian = FALSE) expect_equal( head(adj$Sepal.Length), c(0.094, -0.106, -0.306, -0.406, -0.006, 0.394), tolerance = 1e-3 ) }) } datawizard/tests/testthat/test-describe_distribution.R0000644000176200001440000000025114113652110023055 0ustar liggesusersif (require("testthat")) { test_that("describe_distribution", { x <- describe_distribution(rnorm(100)) expect_equal(c(nrow(x), ncol(x)), c(1, 9)) }) } datawizard/tests/testthat/test-std_center_scale_args.R0000644000176200001440000000411314164744654023041 0ustar liggesusersif (require("testthat")) { d <- data.frame(a = 1:5, b = 21:25, c = 41:45) test_that("standardize", { x <- standardize(d) expect_equal(as.vector(x$a), as.vector(scale(d$a)), tolerance = 0.001) }) test_that("standardize", { x <- standardize(d, center = 5, scale = 2) expect_equal(as.vector(x$a), c(-2, -1.5, -1, -0.5, 0), tolerance = 0.001) }) test_that("standardize", { x <- standardize(d, center = c(5, 25, 45), scale = c(3, 3, 3)) expect_equal(as.vector(x$a), c(-1.33333, -1, -0.66667, -0.33333, 0), tolerance = 0.001) expect_equal(as.vector(x$b), c(-1.33333, -1, -0.66667, -0.33333, 0), tolerance = 0.001) }) test_that("standardize", { x <- standardize(d, center = c(c = 45, a = 5, b = 25), scale = c(3, 3, 3)) expect_equal(as.vector(x$a), c(-1.33333, -1, -0.66667, -0.33333, 0), tolerance = 0.001) expect_equal(as.vector(x$b), c(-1.33333, -1, -0.66667, -0.33333, 0), tolerance = 0.001) }) test_that("standardize", { x <- standardize(d, center = c(c = 45, a = 5, b = 25), scale = c(1, 2, 3)) expect_equal(as.vector(x$a), c(-4, -3, -2, -1, 0), tolerance = 0.001) expect_equal(as.vector(x$b), c(-2, -1.5, -1, -0.5, 0), tolerance = 0.001) }) test_that("standardize", { x <- standardize(d, center = c(c = 45, a = 5, b = 25), scale = c(a = 1, b = 2, c = 3)) expect_equal(as.vector(x$a), c(-4, -3, -2, -1, 0), tolerance = 0.001) expect_equal(as.vector(x$b), c(-2, -1.5, -1, -0.5, 0), tolerance = 0.001) }) test_that("standardize", { x <- standardize(d, center = c(c = 45, a = 5, b = 25), scale = c(c = 3, b = 2, a = 1)) expect_equal(as.vector(x$a), c(-4, -3, -2, -1, 0), tolerance = 0.001) expect_equal(as.vector(x$b), c(-2, -1.5, -1, -0.5, 0), tolerance = 0.001) }) test_that("standardize", { x <- standardize(d, center = c(c = 45, a = 5, b = 25), scale = c(c = 1, b = 2, a = 3)) expect_equal(as.vector(x$a), c(-1.33333, -1, -0.66667, -0.33333, 0), tolerance = 0.001) expect_equal(as.vector(x$b), c(-2, -1.5, -1, -0.5, 0), tolerance = 0.001) }) } datawizard/tests/testthat/test-extract.R0000644000176200001440000000071714141441413020162 0ustar liggesuserstest_that("extract from data frame", { expect_equal( extract(mtcars, cyl, name = gear), setNames(mtcars$cyl, mtcars$gear) ) expect_equal( extract(mtcars, -1, name = gear), setNames(mtcars[[11]], mtcars$gear) ) expect_equal( extract(mtcars, cyl, name = 0), setNames(mtcars$cyl, rownames(mtcars)) ) expect_equal( extract(mtcars, cyl, name = "row.names"), setNames(mtcars$cyl, rownames(mtcars)) ) }) datawizard/tests/testthat/test-center.R0000644000176200001440000000210614141167105017765 0ustar liggesusersif (require("testthat")) { data(iris) data(mtcars) z <- center(iris$Sepal.Width) test_that("center", { expect_equal(as.vector(z), iris$Sepal.Width - mean(iris$Sepal.Width), tolerance = 1e-4, ignore_attr = TRUE) }) z <- center(mtcars$hp, robust = TRUE) test_that("center, robust", { expect_equal(as.vector(z), mtcars$hp - median(mtcars$hp), tolerance = 1e-4, ignore_attr = TRUE) }) z <- center(iris, select = "Sepal.Width") test_that("center, select", { expect_equal(as.vector(z$Sepal.Width), iris$Sepal.Width - mean(iris$Sepal.Width), tolerance = 1e-4, ignore_attr = TRUE) }) z <- center(iris, select = "Species") test_that("center, factors", { expect_equal(z$Species, iris$Species) }) z <- center(iris, select = "Species", force = TRUE) v <- as.numeric(iris$Species) test_that("center, force factors", { expect_equal(as.vector(z$Species), v - median(v), tolerance = 1e-4, ignore_attr = TRUE) }) test_that("center, all na", { z <- center(c(NA, NA, NA)) expect_equal(z, c(NA, NA, NA)) }) } datawizard/tests/testthat.R0000644000176200001440000000010414113652110015516 0ustar liggesuserslibrary(testthat) library(datawizard) test_check("datawizard") datawizard/vignettes/0000755000176200001440000000000014174263644014427 5ustar liggesusersdatawizard/vignettes/demean.Rmd0000644000176200001440000004651614141234536016330 0ustar liggesusers--- title: "Analysing Longitudinal or Panel Data" output: rmarkdown::html_vignette: toc: true fig_width: 10.08 fig_height: 6 vignette: > %\VignetteIndexEntry{Analysing Longitudinal or Panel Data} \usepackage[utf8]{inputenc} %\VignetteEngine{knitr::rmarkdown} editor_options: chunk_output_type: console bibliography: bibliography.bib --- ```{r , include=FALSE} library(knitr) knitr::opts_chunk$set( echo = TRUE, collapse = TRUE, warning = FALSE, message = FALSE, comment = "#>", out.width = "100%" ) pkgs <- c( "datawizard", "poorman", "tidyr", "see", "ggplot2", "parameters", "performance", "lme4", "lfe" ) if (!all(sapply(pkgs, requireNamespace, quietly = TRUE))) { knitr::opts_chunk$set(eval = FALSE) } if (!packageVersion("parameters") >= "0.14.1") { knitr::opts_chunk$set(eval = FALSE) } if (!packageVersion("performance") >= "0.7.4") { knitr::opts_chunk$set(eval = FALSE) } set.seed(333) ``` This vignette explains the rational behind the `demean()` function. We give recommendations how to analyze multilevel or hierarchical data structures, when macro-indicators (or level-2 predictors, or higher-level units, or more general: _group-level predictors_) are used as covariates and the model suffers from **heterogeneity bias** [@bell_explaining_2015]. # Sample data used in this vignette ```{r} library(parameters) data("qol_cancer") ``` * Variables: * `QoL` : Response (quality of life of patient) * `phq4` : Patient Health Questionnaire, **time-varying** variable * `hospital` : Location of treatment, **time-invariant** variable, co-variate * `education`: Educational level, **time-invariant** variable, co-variate * `ID` : patient ID * `time` : time-point of measurement # Heterogeneity bias Heterogeneity bias occurs when group-level predictors vary within and across groups, and hence fixed effects may correlate with group (or random) effects. This is a typical situation when analyzing longitudinal or panel data: Due to the repeated measurements of persons, the "person" (or subject-ID) is now a level-2 variable. Predictors at level-1 ("fixed effects"), e.g. self-rated health or income, now have an effect at level-1 ("within"-effect) and at higher-level units (level-2, the subject-level, which is the "between"-effect) (see also [this posting](https://shouldbewriting.netlify.app/posts/2019-10-21-accounting-for-within-and-between-subject-effect/)). This inevitably leads to correlating fixed effects and error terms - which, in turn, results in biased estimates, because both the within- *and* between-effect are captured in *one* estimate. You can check if your model may suffer from heterogeneity bias using the `check_heterogeneity_bias()` function: ```{r} library(performance) check_heterogeneity_bias(qol_cancer, select = c("phq4", "education"), group = "ID") ``` # Adressing heterogeneity bias: the Fixed Effects Regression (FE) approach Fixed effects regression models (FE) are a popular approach for panel data analysis in particular in econometrics and considered as gold standard. To avoid the problem of heterogeneity bias, in FE all higher-level variance (and thus, any between-effects), "are controlled out using the higher-level entities themselves, included in the model as dummy variables" [@bell_explaining_2015]. As a consequence, FE models are only able estimate _within-effects_. To remove between-effects and only model within-effects, the data needs some preparation: _de-meaning_. De-meaning, or _person-mean centering_, or _centering within clusters_, takes away the higher-level mean from the regression equation, and as such, FE avoids estimating a parameter for each higher-level unit. ## Computing the de-meaned and group-meaned variables ```{r} qol_cancer <- cbind( qol_cancer, datawizard::demean(qol_cancer, select = c("phq4", "QoL"), group = "ID") ) ``` Now we have: * `phq4_between`: time-varying variable with the mean of `phq4` across all time-points, for each patient (ID). * `phq4_within`: the de-meaned time-varying variable `phq4`. A FE model is a classical linear model, where * Intercept is removed * time-invariant predictors are not allowed to be included * the group-level factor is included as predictor * time-varying predictors are de-meaned ("person-mean centered", indicating the "within-subject" effect) ```{r} fe_model1 <- lm( QoL ~ 0 + time + phq4_within + ID, data = qol_cancer ) # we use only the first two rows, because the remaining rows are # the estimates for "ID", which is not of interest here... model_parameters(fe_model1)[1:2, ] # instead of removing the intercept, we could also use the # de-meaned response... fe_model2 <- lm( QoL_within ~ time + phq4_within + ID, data = qol_cancer ) model_parameters(fe_model2)[2:3, ] # we compare the results with those from the "lfe"-package for panel data library(lfe) fe_model3 <- felm( QoL ~ time + phq4 | ID, data = qol_cancer ) model_parameters(fe_model3) ``` As we can see, the _within-effect_ of PHQ-4 is `-3.66`, hence the mean of the change for an average individual case in our sample (or, the "net" effect), is `-3.66`. But what about the between-effect? How do people with higher PHQ-4 score differ from people with lower PHQ-4 score? Or what about educational inequalities? Do higher educated people have a higher PHQ-4 score than lower educated people? This question cannot be answered with FE regression. But: "Can one fit a multilevel model with varying intercepts (or coefficients) when the units and predictors correlate? The answer is yes. And the solution is simple." [@bafumi_fitting_2006] # Adressing heterogeneity bias: the Mixed Model approach Mixed models include different levels of sources of variability (i.e. error terms at each level). Predictors used at level-1 that are varying across higher-level units will thus have residual errors at both level-1 and higher-level units. "Such covariates contain two parts: one that is specific to the higher-level entity that does not vary between occasions, and one that represents the difference between occasions, within higher-level entities" [@bell_explaining_2015]. Hence, the error terms will be correlated with the covariate, which violates one of the assumptions of mixed models (iid, independent and identically distributed error terms) - also known and described above as _heterogeneity bias_. But how can this issue be addressed outside the FE framework? There are several ways how to address this using a mixed models approach: * Correlated group factors and predictors are no problem anyway, because [partial pooling](https://www.tjmahr.com/plotting-partial-pooling-in-mixed-effects-models/) allows estimates of units o borrow strength from the whole sample and shrink toward a common mean (@shor_bayesian_2007). * If predictor and group factors correlate, one can remove this correlation by group-meaning [or "mean within clusters", @bafumi_fitting_2006; @gelman_data_2007, Chap. 12.6.]. * When time-varying predictors are "decomposed" into their time-varying and time-invariant components (demeaning), then mixed models can model **both** within- and between-subject effects [@bell_fixed_2019] - this approach is essentially a further development of a long-known recommendation by Mundlak [@mundlak_pooling_1978]. For now, we will follow the last recommendation and use the within- and between-version of `phq4`. ```{r} library(lme4) mixed_1 <- lmer( QoL ~ time + phq4_within + phq4_between + (1 | ID), data = qol_cancer ) model_parameters(mixed_1) # compare to FE-model model_parameters(fe_model1)[1:2, ] ``` As we can see, the estimates and standard errors are identical. The argument _against_ the use of mixed models, i.e. that using mixed models for panel data will yield biased estimates and standard errors, is based on an incorrect model specification [@mundlak_pooling_1978]. As such, when the (mixed) model is properly specified, the estimator of the mixed model is identical to the 'within' (i.e. FE) estimator. As a consequence, we cannot only use the above specified mixed model for panel data, we can even specify more complex models including within-effects, between-effects or random effects variation. A mixed models approach can model the causes of endogeneity explicitly by including the (separated) within- and between-effects of time-varying fixed effects and including time-constant fixed effects. ```{r} mixed_2 <- lmer( QoL ~ time + phq4_within + phq4_between + education + (1 + time | ID), data = qol_cancer ) # effects = "fixed" will not display random effects, but split the # fixed effects into its between- and within-effects components. model_parameters(mixed_2, effects = "fixed") ``` For more complex models, within-effects will naturally change slightly and are no longer identical to simpler FE models. This is no "bias", but rather the result of building more complex models: FE models lack information of variation in the group-effects or between-subject effects. Furthermore, FE models cannot include random slopes, which means that fixed effects regressions are neglecting "cross-cluster differences in the effects of lower-level controls (which) reduces the precision of estimated context effects, resulting in (...) low statistical power" [@heisig_costs_2017]. # Conclusion: Complex Random Effects Within-Between Models Depending on the structure of the data, the best approach to analyzing panel data would be a so called "complex random effects within-between" model [@bell_fixed_2019]: ```{r echo=FALSE} f <- "yit = β0 + β1W (xit - ͞xi) + β2B ͞xi + β3 zi + υi0 + υi1 (xit - ͞xi) + εit" knitr::asis_output(f) ``` ```{r echo=FALSE} f <- "

" knitr::asis_output(f) ``` In R-code, the model is written down like this: ```{r} rewb <- lmer( QoL ~ time + phq4_within + phq4_between + education + (1 + time | ID) + (1 + phq4_within | ID), data = qol_cancer ) ``` **What about time-constant predictors?** After demeaning time-varying predictors, "at the higher level, the mean term is no longer constrained by Level 1 effects, so it is free to account for all the higher-level variance associated with that variable" [@bell_explaining_2015]. Thus, _time-constant **categorical**_ predictors, that only have a between-effect, can be simply included as fixed effects predictor (since they’re not constrained by level-1 effects). Time-constant _continuous_ **group-level predictors** (for instance, GDP of countries) should be group-meaned, to have a proper "between"-effect [@gelman_data_2007, Chap. 12.6.]. The benefit of this kind of model is that you have information on within-, between- and other time-constant (i.e. between) effects or group-level predictors... ```{r} model_parameters(rewb, effects = "fixed") ``` ... but you can also model the variation of (group) effects across time (and probably space), and you can even include more higher-level units (e.g. nested design or cross-classified design with more than two levels): ```{r} random_parameters(rewb) ``` **What about imbalanced groups, i.e. large differences in N per group?** See little example after this visual example... # A visual example First, we generate some fake data that implies a linear relationship between outcome and independent variable. The objective is that the amount of typing errors depends on how fast (typing speed) you can type, however, the more typing experience you have, the faster you can type. Thus, the outcome measure is "amount of typing errors", while our predictor is "typing speed". Furthermore, we have repeated measurements of people with different "typing experience levels". The results show that we will have two sources of variation: Overall, more experienced typists make less mistakes (group-level pattern). When typing faster, typists make more mistakes (individual-level pattern). ```{r} library(ggplot2) library(poorman) library(see) set.seed(123) n <- 5 b <- seq(1, 1.5, length.out = 5) x <- seq(2, 2 * n, 2) d <- do.call(rbind, lapply(1:n, function(i) { data.frame( x = seq(1, n, by = .2), y = 2 * x[i] + b[i] * seq(1, n, by = .2) + rnorm(21), grp = as.factor(2 * i) ) })) d <- d %>% group_by(grp) %>% mutate(x = rev(15 - (x + 1.5 * as.numeric(grp)))) %>% ungroup() labs <- c("very slow", "slow", "average", "fast", "very fast") levels(d$grp) <- rev(labs) d <- cbind(d, datawizard::demean(d, c("x", "y"), group = "grp")) ``` Let's look at the raw data... ```{r echo=FALSE} ggplot(d, aes(x, y)) + geom_point(colour = "#555555", size = 2.5, alpha = .5) + see::theme_modern() + labs(x = "Typing Speed", y = "Typing Errors", colour = "Type Experience") ``` ## Model 1: Linear relationship between typing errors and typing speed We can now assume a (linear) relationship between typing errors and typing speed. ```{r echo=FALSE} ggplot(d, aes(x, y)) + geom_point(colour = "#555555", size = 2.5, alpha = .5) + geom_smooth(method = "lm", se = F, colour = "#555555") + see::theme_modern() + labs(x = "Typing Speed", y = "Typing Errors", colour = "Type Experience") ``` Looking at the coefficients, we have following model with a coefficient of `-1.92`. ```{r} m1 <- lm(y ~ x, data = d) model_parameters(m1) ``` However, we have ignored the clustered structure in our data, in this example due to repeated measurements. ```{r echo=FALSE} ggplot(d, aes(x, y)) + geom_point(mapping = aes(colour = grp), size = 2.5, alpha = .5) + geom_smooth(method = "lm", se = F, colour = "#555555") + see::scale_color_flat() + see::theme_modern() + labs(x = "Typing Speed", y = "Typing Errors", colour = "Type Experience") ``` ## Model 2: Within-subject effect of typing speed A fixed effects regression (FE-regression) would now remove all between-effects and include only the within-effects as well as the group-level indicator. ```{r echo=FALSE} ggplot(d, aes(x, y)) + geom_smooth(mapping = aes(colour = grp), method = "lm", se = FALSE) + geom_point(mapping = aes(colour = grp), size = 2.2, alpha = .6) + see::scale_color_flat() + see::theme_modern() + labs(x = "Typing Speed", y = "Typing Errors", colour = "Type Experience") ``` This returns the coefficient of the "within"-effect, which is `1.2`, with a standard error of `0.07`. Note that the FE-model does *not* take the variation *between* subjects into account, thus resulting in (possibly) biased estimates, and biased standard errors. ```{r} m2 <- lm(y ~ 0 + x_within + grp, data = d) model_parameters(m2)[1, ] ``` ## Model 3: Between-subject effect of typing speed To understand, why the above model 1 (`m1`) returns a biased estimate, which is a "weighted average" of the within- and between-effects, let us look at the between-effect now. ```{r echo=FALSE} ggplot(d, aes(x, y)) + geom_point(mapping = aes(colour = grp), size = 2.2, alpha = .6) + geom_smooth(mapping = aes(x = x_between, y = y_between), method = "lm", se = F, colour = "#444444") + see::scale_color_flat() + see::theme_modern() + labs(x = "Typing Speed", y = "Typing Errors", colour = "Type Experience") ``` As we can see, the between-effect is `-2.93`, which is different from the `-1.92` estimated in the model `m1`. ```{r} m3 <- lm(y ~ x_between, data = d) model_parameters(m3) ``` ## Model 4: Mixed model with within- and between-subjects Since FE-models can only model within-effects, we now use a mixed model with within- and between-effects. ```{r echo=FALSE} ggplot(d, aes(x, y)) + geom_smooth(mapping = aes(colour = grp), method = "lm", se = FALSE) + geom_point(mapping = aes(colour = grp), size = 2.2, alpha = .6) + geom_smooth(mapping = aes(x = x_between, y = y_between), method = "lm", se = F, colour = "#444444") + see::scale_color_flat() + see::theme_modern() + labs(x = "Typing Speed", y = "Typing Errors", colour = "Type Experience") ``` We see, the estimate for the within-effects is *not* biased. Furthermore, we get the correct between-effect as well (standard errors differ, because the variance in the grouping structure is more accurately taken into account). ```{r} m4 <- lmer(y ~ x_between + x_within + (1 | grp), data = d) model_parameters(m4) ``` ## Model 5: Complex Random-Effects Within-Between Model Finally, we can also take the variation between subjects into account by adding a random slope. This model can be called a complex "REWB" (random-effects within-between) model. Due to the variation between subjects, we get larger standard errors for the within-effect. ```{r} m5 <- lmer(y ~ x_between + x_within + (1 + x_within | grp), data = d) model_parameters(m5) ``` # Balanced versus imbalanced groups The "simple" linear slope of the between-effect (and also from the within-effect) is (almost) identical in "classical" linear regression compared to linear mixed models when the groups are balanced, i.e. when the number of observation per group is similar or the same. Whenever group size is imbalanced, the "simple" linear slope will be adjusted. This leads to different estimates for between-effects between classical and mixed models regressions due to shrinkage - i.e. for larger variation of group sizes we find stronger regularization of estimates. Hence, for mixed models with larger differences in number of observation per random effects group, the between-effect will differ from the between-effect calculated by "classical" regression models. However, this shrinkage is a desired property of mixed models and usually improves the estimates. ```{r} set.seed(123) n <- 5 b <- seq(1, 1.5, length.out = 5) x <- seq(2, 2 * n, 2) d <- do.call(rbind, lapply(1:n, function(i) { data.frame( x = seq(1, n, by = .2), y = 2 * x[i] + b[i] * seq(1, n, by = .2) + rnorm(21), grp = as.factor(2 * i) ) })) # create imbalanced groups d$grp[sample(which(d$grp == 8), 10)] <- 6 d$grp[sample(which(d$grp == 4), 8)] <- 2 d$grp[sample(which(d$grp == 10), 9)] <- 6 d <- d %>% group_by(grp) %>% mutate(x = rev(15 - (x + 1.5 * as.numeric(grp)))) %>% ungroup() labs <- c("very slow", "slow", "average", "fast", "very fast") levels(d$grp) <- rev(labs) d <- cbind(d, datawizard::demean(d, c("x", "y"), group = "grp")) # Between-subject effect of typing speed m1 <- lm(y ~ x_between, data = d) model_parameters(m1) # Between-subject effect of typing speed, accounting for group structure m2 <- lmer(y ~ x_between + (1 | grp), data = d) model_parameters(m2) ``` # References datawizard/vignettes/bibliography.bib0000644000176200001440000001135514113652110017544 0ustar liggesusers@Manual{revelle2018, title = {psych: Procedures for Psychological, Psychometric, and Personality Research}, author = {William Revelle}, organization = { Northwestern University}, address = { Evanston, Illinois}, year = {2018}, note = {R package version 1.8.12}, url = {https://CRAN.R-project.org/package=psych} } @article{makowski2018psycho, title={The psycho package: An efficient and publishing-oriented workflow for psychological science}, author={Makowski, Dominique}, journal={Journal of Open Source Software}, volume={3}, number={22}, pages={470}, year={2018} } @article{menard2011standards, title={Standards for standardized logistic regression coefficients}, author={Menard, Scott}, journal={Social Forces}, volume={89}, number={4}, pages={1409--1428}, year={2011}, publisher={The University of North Carolina Press} } @article{schielzeth2010simple, title={Simple means to improve the interpretability of regression coefficients}, author={Schielzeth, Holger}, journal={Methods in Ecology and Evolution}, volume={1}, number={2}, pages={103--113}, year={2010}, publisher={Wiley Online Library} } @article{gelman2008scaling, title={Scaling regression inputs by dividing by two standard deviations}, author={Gelman, Andrew}, journal={Statistics in medicine}, volume={27}, number={15}, pages={2865--2873}, year={2008}, publisher={Wiley Online Library} } @article{menard2004six, title={Six approaches to calculating standardized logistic regression coefficients}, author={Menard, Scott}, journal={The American Statistician}, volume={58}, number={3}, pages={218--223}, year={2004}, publisher={Taylor \& Francis} } @article{bring1994standardize, title={How to standardize regression coefficients}, author={Bring, Johan}, journal={The American Statistician}, volume={48}, number={3}, pages={209--213}, year={1994}, publisher={Taylor \& Francis} } @article{neter1989applied, title={Applied linear regression models}, author={Neter, John and Wasserman, William and Kutner, Michael H}, year={1989}, publisher={Irwin Homewood, IL} } @book{gelman_data_2007, address = {Cambridge; New York}, series = {Analytical methods for social research}, title = {Data analysis using regression and multilevel/hierarchical models}, isbn = {978-0-521-86706-1 978-0-521-68689-1}, publisher = {Cambridge University Press}, author = {Gelman, Andrew and Hill, Jennifer}, year = {2007} } @inproceedings{bafumi_fitting_2006, address = {Philadelphia, PA}, title = {Fitting Multilevel Models When Predictors and Group Effects Correlate.}, author = {Bafumi, Joseph and Gelman, Andrew}, year = {2006} } @article{bell_fixed_2019, title = {Fixed and random effects models: making an informed choice}, issn = {1573-7845}, url = {https://doi.org/10.1007/s11135-018-0802-x}, doi = {10.1007/s11135-018-0802-x}, journal = {Quality \& Quantity}, author = {Bell, Andrew and Fairbrother, Malcolm and Jones, Kelvyn}, volume = {53}, year = {2019}, pages = {1051--1074} } @article{bell_explaining_2015, title = {Explaining Fixed Effects: Random Effects Modeling of Time-Series Cross-Sectional and Panel Data}, volume = {3}, issn = {2049-8470, 2049-8489}, url = {https://www.cambridge.org/core/product/identifier/S2049847014000077/type/journal_article}, doi = {10.1017/psrm.2014.7}, number = {1}, journal = {Political Science Research and Methods}, author = {Bell, Andrew and Jones, Kelvyn}, month = jan, year = {2015}, pages = {133--153} } @article{heisig_costs_2017, title = {The Costs of Simplicity: Why Multilevel Models May Benefit from Accounting for Cross-Cluster Differences in the Effects of Controls}, volume = {82}, issn = {0003-1224, 1939-8271}, url = {http://journals.sagepub.com/doi/10.1177/0003122417717901}, doi = {10.1177/0003122417717901}, number = {4}, journal = {American Sociological Review}, author = {Heisig, Jan Paul and Schaeffer, Merlin and Giesecke, Johannes}, month = aug, year = {2017}, pages = {796--827} } @article{shor_bayesian_2007, title = {A Bayesian Multilevel Modeling Approach to Time-Series Cross-Sectional Data}, volume = {15}, issn = {1047-1987, 1476-4989}, doi = {10.1093/pan/mpm006}, number = {2}, journal = {Political Analysis}, author = {Shor, Boris and Bafumi, Joseph and Keele, Luke and Park, David}, year = {2007}, pages = {165--181} } @article{mundlak_pooling_1978, title = {On the Pooling of Time Series and Cross Section Data}, volume = {46}, number = {1}, journal = {Econometrica}, author = {Mundlak, Yair}, month = jan, year = {1978}, pages = {69} } datawizard/vignettes/standardize_data.Rmd0000644000176200001440000003132014174263411020363 0ustar liggesusers--- title: "Data Standardization" output: rmarkdown::html_vignette: toc: true fig_width: 10.08 fig_height: 6 vignette: > \usepackage[utf8]{inputenc} %\VignetteIndexEntry{Data Standardization} %\VignetteEngine{knitr::rmarkdown} --- ```{r message=FALSE, warning=FALSE, include=FALSE} library(knitr) options(knitr.kable.NA = "") knitr::opts_chunk$set( comment = ">", message = FALSE, warning = FALSE, dpi = 300 ) pkgs <- c( "datawizard", "poorman", "see", "ggplot2", "parameters", "lme4" ) if (!all(sapply(pkgs, requireNamespace, quietly = TRUE))) { knitr::opts_chunk$set(eval = FALSE) } ``` # Introduction To make sense of their data and effects, scientists might want to standardize (Z-score) their variables. This makes the data unitless, expressed only in terms of deviation from an index of centrality (e.g., the mean or the median). However, aside from some benefits, standardization also comes with challenges and issues, that the scientist should be aware of. ## Methods of Standardization The `datawizard` package offers two methods of standardization via the `standardize()` function: - **Normal standardization**: center around the *mean*, with *SD* units (default). - **Robust standardization**: center around the *median*, with *MAD* (median absolute deviation) units (`robust = TRUE`). Let's look at the following example: ```{r} library(datawizard) library(effectsize) # for data # let's have a look at what the data look like data("hardlyworking", package = "effectsize") head(hardlyworking) # let's use both methods of standardization hardlyworking$xtra_hours_z <- standardize(hardlyworking$xtra_hours) hardlyworking$xtra_hours_zr <- standardize(hardlyworking$xtra_hours, robust = TRUE) ``` We can see that different methods give different central and variation values: ```{r, eval=FALSE} library(dplyr) library(tidyr) hardlyworking %>% select(starts_with("xtra_hours")) %>% pivot_longer(everything()) %>% group_by(name) %>% summarise( mean = mean(value), sd = sd(value), median = median(value), mad = mad(value) ) ``` ```{r, echo=FALSE} library(poorman) hardlyworking %>% select(starts_with("xtra_hours")) %>% reshape_longer(colnames_to = "name", values_to = "value") %>% group_by(name) %>% summarise( mean = mean(value), sd = sd(value), median = median(value), mad = mad(value) ) %>% knitr::kable(digits = 4) ``` `standardize()` can also be used to standardize a full data frame - where each numeric variable is standardized separately: ```{r} hardlyworking_z <- standardize(hardlyworking) ``` ```{r, eval=FALSE} hardlyworking_z %>% select(-xtra_hours_z, -xtra_hours_zr) %>% pivot_longer(everything()) %>% group_by(name) %>% summarise( mean = mean(value), sd = sd(value), median = median(value), mad = mad(value) ) ``` ```{r, echo=FALSE} hardlyworking_z %>% select(-xtra_hours_z, -xtra_hours_zr) %>% reshape_longer(colnames_to = "name", values_to = "value") %>% group_by(name) %>% summarise( mean = mean(value), sd = sd(value), median = median(value), mad = mad(value) ) %>% knitr::kable(digits = 4) ``` Weighted standardization is also supported via the `weights` argument, and factors can also be standardized (if you're into that kind of thing) by setting `force = TRUE`, which converts factors to treatment-coded dummy variables before standardizing. ## Variable-wise *vs.* Participant-wise Standardization is an important step and extra caution is required in **repeated-measures designs**, in which there are three ways of standardizing data: - **Variable-wise**: The most common method. A simple scaling of each column. - **Participant-wise**: Variables are standardized "within" each participant, *i.e.*, for each participant, by the participant's mean and SD. - **Full**: Participant-wise first and then re-standardizing variable-wise. Unfortunately, the method used is often not explicitly stated. This is an issue as these methods can generate important discrepancies (that can in turn contribute to the reproducibility crisis). Let's investigate these 3 methods. ### The Data We will take the `emotion` dataset in which participants were exposed to negative pictures and had to rate their emotions (**valence**) and the amount of memories associated with the picture (**autobiographical link**). One could make the hypothesis that for young participants with no context of war or violence, the most negative pictures (mutilations) are less related to memories than less negative pictures (involving for example car crashes or sick people). In other words, **we expect a positive relationship between valence** (with high values corresponding to less negativity) **and autobiographical link**. Let's have a look at the data, averaged by participants: ```{r, eval=FALSE} # Download the 'emotion' dataset load(url("https://raw.github.com/neuropsychology/psycho.R/master/data/emotion.rda")) # Discard neutral pictures (keep only negative) emotion <- emotion %>% filter(Emotion_Condition == "Negative") # Summary emotion %>% drop_na(Subjective_Valence, Autobiographical_Link) %>% group_by(Participant_ID) %>% summarise( n_Trials = n(), Valence_Mean = mean(Subjective_Valence), Valence_SD = sd(Subjective_Valence) ) ``` ```{r, echo=FALSE} load(url("https://raw.github.com/neuropsychology/psycho.R/master/data/emotion.rda")) # Discard neutral pictures (keep only negative) emotion <- emotion %>% filter(Emotion_Condition == "Negative") # Summary emotion %>% subset(!(is.na(Subjective_Valence) | is.na(Autobiographical_Link))) %>% group_by(Participant_ID) %>% summarise( n_Trials = n(), Valence_Mean = mean(Subjective_Valence), Valence_SD = sd(Subjective_Valence) ) ``` As we can see from the means and SDs, there is a lot of variability **between** participants both in their means and their individual *within*-participant SD. ### Effect of Standardization We will create three data frames standardized with each of the three techniques. ```{r} Z_VariableWise <- emotion %>% standardize() Z_ParticipantWise <- emotion %>% group_by(Participant_ID) %>% standardize() Z_Full <- emotion %>% group_by(Participant_ID) %>% standardize() %>% ungroup() %>% standardize() ``` Let's see how these three standardization techniques affected the **Valence** variable. ### Across Participants We can calculate the mean and SD of *Valence* across all participants: ```{r, eval=FALSE} # Create a convenient function to print summarise_Subjective_Valence <- function(data) { df_name <- deparse(substitute(data)) data %>% ungroup() %>% summarise( DF = df_name, Mean = mean(Subjective_Valence), SD = sd(Subjective_Valence) ) } # Check the results rbind( summarise_Subjective_Valence(Z_VariableWise), summarise_Subjective_Valence(Z_ParticipantWise), summarise_Subjective_Valence(Z_Full) ) ``` ```{r, echo=FALSE} # Create a convenient function to print summarise_Subjective_Valence <- function(data) { df_name <- deparse(substitute(data)) data <- data %>% ungroup() %>% summarise( Mean = mean(Subjective_Valence), SD = sd(Subjective_Valence) ) cbind(DF = df_name, data) } # Check the results rbind( summarise_Subjective_Valence(Z_VariableWise), summarise_Subjective_Valence(Z_ParticipantWise), summarise_Subjective_Valence(Z_Full) ) %>% knitr::kable(digits = 2) ``` The **means** and the **SD** appear as fairly similar (0 and 1)... ```{r, fig.width=7, fig.height=4.5, results='markup', fig.align='center'} library(see) library(ggplot2) ggplot() + geom_density(aes(Z_VariableWise$Subjective_Valence, color = "Z_VariableWise" ), size = 1) + geom_density(aes(Z_ParticipantWise$Subjective_Valence, color = "Z_ParticipantWise" ), size = 1) + geom_density(aes(Z_Full$Subjective_Valence, color = "Z_Full" ), size = 1) + see::theme_modern() + labs(color = "") ``` and so do the marginal distributions... ### At the Participant Level However, we can also look at what happens in the participant level. Let's look at the first 5 participants: ```{r, eval=FALSE} # Create convenient function print_participants <- function(data) { df_name <- deparse(substitute(data)) data %>% group_by(Participant_ID) %>% summarise( DF = df_name, Mean = mean(Subjective_Valence), SD = sd(Subjective_Valence) ) %>% head(5) %>% select(DF, everything()) } # Check the results rbind( print_participants(Z_VariableWise), print_participants(Z_ParticipantWise), print_participants(Z_Full) ) ``` ```{r, echo=FALSE} # Create convenient function print_participants <- function(data) { df_name <- deparse(substitute(data)) data %>% group_by(Participant_ID) %>% summarise( Mean = mean(Subjective_Valence), SD = sd(Subjective_Valence) ) %>% cbind(DF = df_name, .) %>% head(5) %>% select(DF, everything()) } # Check the results rbind( print_participants(Z_VariableWise), print_participants(Z_ParticipantWise), print_participants(Z_Full) ) %>% knitr::kable(digits = 2) ``` Seems like *full* and *participant-wise* standardization give similar results, but different ones than *variable-wise* standardization. ### Compare Let's do a **correlation** between the **variable-wise and participant-wise methods**. ```{r, fig.width=7, fig.height=4.5, results='markup', fig.align='center'} r <- cor.test( Z_VariableWise$Subjective_Valence, Z_ParticipantWise$Subjective_Valence ) data.frame( Original = emotion$Subjective_Valence, VariableWise = Z_VariableWise$Subjective_Valence, ParticipantWise = Z_ParticipantWise$Subjective_Valence ) %>% ggplot(aes(x = VariableWise, y = ParticipantWise, colour = Original)) + geom_point(alpha = 0.75, shape = 16) + geom_smooth(method = "lm", color = "black") + scale_color_distiller(palette = 1) + ggtitle(paste0("r = ", round(r$estimate, 2))) + see::theme_modern() ``` While the three standardization methods roughly present the same characteristics at a general level (mean 0 and SD 1) and a similar distribution, their values are not exactly the same! Let's now answer the original question by investigating the **linear relationship between valence and autobiographical link**. We can do this by running a mixed-effects model with participants entered as random effects. ```{r} library(lme4) m_raw <- lmer( formula = Subjective_Valence ~ Autobiographical_Link + (1 | Participant_ID), data = emotion ) m_VariableWise <- update(m_raw, data = Z_VariableWise) m_ParticipantWise <- update(m_raw, data = Z_ParticipantWise) m_Full <- update(m_raw, data = Z_Full) ``` We can extract the parameters of interest from each model, and find: ```{r} # Convenient function get_par <- function(model) { mod_name <- deparse(substitute(model)) parameters::model_parameters(model) %>% mutate(Model = mod_name) %>% select(-Parameter) %>% select(Model, everything()) %>% .[-1, ] } # Run the model on all datasets rbind( get_par(m_raw), get_par(m_VariableWise), get_par(m_ParticipantWise), get_par(m_Full) ) ``` As we can see, **variable-wise** standardization only affects **the coefficient** (which is expected, as it changes the unit), but not the test statistic or statistical significance. However, using **participant-wise** standardization *does* affect the coefficient **and** the significance. **No method is better or more justified, and the choice depends on the specific case, context, data and goal.** ### Conclusion 1. **Standardization can be useful in *some* cases and should be justified**. 2. **Variable and Participant-wise standardization methods *appear* to produce similar data**. 3. **Variable and Participant-wise standardization can lead to different results**. 4. **The chosen method can strongly influence the results and should therefore be explicitly stated and justified to enhance reproducibility of results**. We showed here yet another way of **sneakily tweaking the data** that can change the results. To prevent its use as a bad practice, we can only highlight the importance of open data, open analysis/scripts, and preregistration. # See also - `datawizard::demean()`: - `standardize_parameters(method = "pseudo")` for mixed-effects models # References datawizard/R/0000755000176200001440000000000014174263210012605 5ustar liggesusersdatawizard/R/data_findcols.R0000644000176200001440000000200714141067100015513 0ustar liggesusers#' @rdname data_rename #' @examples #' # Find columns names by pattern #' data_findcols(iris, starts_with = "Sepal") #' data_findcols(iris, ends_with = "Width") #' data_findcols(iris, pattern = "\\.") #' data_findcols(iris, c("Petal.Width", "Sepal.Length")) #' @export data_findcols <- function(data, pattern = NULL, starts_with = NULL, ends_with = NULL, ...) { # TODO: Need to extend this to work with NSE so that the following shoud work: # - data_findcols(iris, Sepal.Length) # - data_findcols(iris, starts_with("Sepal")) # - data_findcols(iris, contains("Sepal")) n <- names(data) if (!is.null(pattern)) { match <- c() for (i in c(pattern)) { match <- c(match, n[grepl(i, n)]) } } if (!is.null(starts_with)) { match <- n[grepl(paste0("^", starts_with), n)] } if (!is.null(ends_with)) { match <- n[grepl(paste0(ends_with, "$"), n)] } match } datawizard/R/data_rename.R0000644000176200001440000000425414113652110015167 0ustar liggesusers#' Convenient dataframe manipulation functionalities #' #' Safe and intuitive functions to manipulate dataframes. #' #' @param data A data frame, or an object that can be coerced to a data frame. #' @param pattern,replacement,starts_with,ends_with Character strings. #' @param cols,rows Vector of column or row names. #' @param safe Do not throw error if for instance the variable to be #' renamed/removed doesn't exist. #' @param ... Other arguments passed to or from other functions. #' #' @return A modified data frame. #' #' @examples #' # Rename columns #' head(data_rename(iris, "Sepal.Length", "length")) #' # data_rename(iris, "FakeCol", "length", safe=FALSE) # This fails #' head(data_rename(iris, "FakeCol", "length")) # This doesn't #' head(data_rename(iris, c("Sepal.Length", "Sepal.Width"), c("length", "width"))) #' #' # Reset names #' head(data_rename(iris, NULL)) #' #' # Change all #' head(data_rename(iris, paste0("Var", 1:5))) #' @export data_rename <- function(data, pattern = NULL, replacement = NULL, safe = TRUE, ...) { # Sanity checks if (is.null(replacement) && is.null(pattern)) { names(data) <- c(1:ncol(data)) return(data) } else if (is.null(replacement) && !is.null(pattern)) { names(data) <- pattern return(data) } else if (!is.null(replacement) && is.null(pattern)) { names(data) <- replacement return(data) } if (length(pattern) != length(replacement)) { stop("The 'replacement' names must be of the same length than the variable names.") } for (i in 1:length(pattern)) { data <- .data_rename(data, pattern[i], replacement[i], safe) } data } #' @keywords internal .data_rename <- function(data, pattern, replacement, safe = TRUE) { if (isFALSE(safe) & !pattern %in% names(data)) { stop(paste0("Variable '", pattern, "' is not in your dataframe :/")) } names(data) <- replace(names(data), names(data) == pattern, replacement) data } # Row.names ---------------------------------------------------------------- #' @rdname data_rename #' @export data_rename_rows <- function(data, rows = NULL) { row.names(data) <- rows data } datawizard/R/utils_get_dots.R0000644000176200001440000000643714113652110015764 0ustar liggesusers# function to evaluate dots in a tidyselect-style and return # the variable names as character vector .get_dot_data <- function(dat, dots, verbose = TRUE) { if (!is.data.frame(dat) || length(dots) == 0) { return(dat) } columns <- colnames(dat) x <- unlist(lapply(dots, function(i) { # contains-token if (grepl("^contains\\(", i)) { pattern <- gsub("contains\\(\"(.*)\"\\)", "\\1", i) columns[string_contains(pattern, columns)] # starts-with token } else if (grepl("^starts\\(", i) || grepl("^starts_with\\(", i)) { pattern <- gsub("(.*)\\(\"(.*)\"\\)", "\\2", i) columns[string_starts_with(pattern, columns)] # ends-with token } else if (grepl("^ends\\(", i) || grepl("^ends_with\\(", i)) { pattern <- gsub("(.*)\\(\"(.*)\"\\)", "\\2", i) columns[string_ends_with(pattern, columns)] # one-of token } else if (grepl("^one_of\\(", i)) { pattern <- gsub("(\"|\\s)", "", unlist(strsplit(gsub("one_of\\(\"(.*)\"\\)", "\\1", i), ","))) columns[string_one_of(pattern, columns)] # num_range token } else if (grepl("^num_range\\(", i)) { columns[match(.get_num_range(i), columns)] # from-to token } else if (grepl(":", i, fixed = TRUE)) { tmp <- unlist(strsplit(i, ":", fixed = TRUE)) start <- if (.is_num_chr(tmp[1])) { as.numeric(tmp[1]) } else { which(columns == tmp[1]) } end <- if (.is_num_chr(tmp[2])) { as.numeric(tmp[2]) } else { which(columns == tmp[2]) } columns[start:end] # simple name } else { i } })) x <- unlist(lapply(x, function(i) { if (.is_num_chr(i)) { columns[as.numeric(i)] } else if (.is_num_fac(i)) { columns[as.numeric(as.character(i))] } else { i } })) not_found <- setdiff(x, columns) if (length(not_found) && isTRUE(verbose)) { insight::print_color(sprintf( "%i variables were not found in the dataset: %s\n", length(not_found), paste0(not_found, collapse = ", ") ), color = "red" ) } dat[, intersect(x, columns), drop = FALSE] } .is_num_chr <- function(x) { is.character(x) && !anyNA(suppressWarnings(as.numeric(stats::na.omit(x)))) } .is_num_fac <- function(x) { is.factor(x) && !anyNA(suppressWarnings(as.numeric(levels(x)))) } .get_num_range <- function(i) { r1 <- trimws(unlist(strsplit(gsub("num_range\\((.*)\\)", "\\1", i), ","))) r2 <- gsub("\"", "", trimws(gsub("(.*)(=)(.*)", "\\3", r1)), fixed = TRUE) es <- grepl("=", r1) if (any(es)) { names(r2)[es] <- trimws(gsub("(.*)(=)(.*)", "\\1", r1[es])) } args <- c("prefix", "range", "width") if (is.null(names(r2))) { names(r2) <- args[1:length(r2)] } na_names <- which(is.na(names(r2))) if (length(na_names)) { names(r2)[na_names] <- args[na_names] } if (length(r2) > 3) { r2 <- r2[1:3] } from <- as.numeric(gsub("(\\d):(.*)", "\\1", r2["range"])) to <- as.numeric(gsub("(.*):(\\d)", "\\2", r2["range"])) width <- as.numeric(r2["width"]) if (is.na(width)) { sprintf("%s%i", r2["prefix"], from:to) } else { sprintf("%s%.*i", r2["prefix"], width, from:to) } } datawizard/R/reshape_ci.R0000644000176200001440000000763114131371650015042 0ustar liggesusers#' Reshape CI between wide/long formats #' #' Reshape CI between wide/long formats. #' #' @param x A data frame containing columns named `CI_low` and `CI_high` (or #' similar, see `ci_type`). #' @param ci_type String indicating the "type" (i.e. prefix) of the interval #' columns. Per *easystats* convention, confidence or credible intervals are #' named `CI_low` and `CI_high`, and the related `ci_type` would be `"CI"`. #' If column names for other intervals differ, `ci_type` can be used to #' indicate the name, e.g. `ci_type = "SI"` can be used for support intervals, #' where the column names in the data frame would be `SI_low` and `SI_high`. #' #' @return #' #' A dataframe with columns corresponding to confidence intervals reshaped #' either to wide or long format. #' #' @examples #' x <- data.frame( #' Parameter = c("Term 1", "Term 2", "Term 1", "Term 2"), #' CI = c(.8, .8, .9, .9), #' CI_low = c(.2, .3, .1, .15), #' CI_high = c(.5, .6, .8, .85), #' stringsAsFactors = FALSE #' ) #' #' reshape_ci(x) #' reshape_ci(reshape_ci(x)) #' @export reshape_ci <- function(x, ci_type = "CI") { # define interval type ci_type <- match.arg(ci_type, choices = c("CI", "SI", "HDI", "ETI")) ci_low <- paste0(ci_type, "_low") ci_high <- paste0(ci_type, "_high") # Long to wide ---------------- if (ci_low %in% names(x) & ci_high %in% names(x) & "CI" %in% names(x)) { ci_position <- which(names(x) == "CI") # Reshape if (length(unique(x$CI)) > 1) { if (!"Parameter" %in% names(x)) { x$Parameter <- NA remove_parameter <- TRUE } else { remove_parameter <- FALSE } x <- stats::reshape( x, idvar = "Parameter", timevar = "CI", direction = "wide", v.names = c(ci_low, ci_high), sep = "_" ) row.names(x) <- NULL if (remove_parameter) x$Parameter <- NULL } # Replace at the right place ci_colname <- names(x)[c(grepl(paste0(ci_low, "_*"), names(x)) | grepl(paste0(ci_high, "_*"), names(x)))] colnames_1 <- names(x)[0:(ci_position - 1)][!names(x)[0:(ci_position - 1)] %in% ci_colname] colnames_2 <- names(x)[!names(x) %in% c(ci_colname, colnames_1)] x <- x[c(colnames_1, ci_colname, colnames_2)] # Wide to long -------------- } else { if (!"Parameter" %in% names(x)) { x$Parameter <- 1:nrow(x) remove_parameter <- TRUE } else { remove_parameter <- FALSE } lows <- grepl(paste0(ci_low, "_*"), names(x)) highs <- grepl(paste0(ci_high, "_*"), names(x)) ci <- as.numeric(gsub(paste0(ci_low, "_"), "", names(x)[lows])) if (paste0(ci, collapse = "-") != paste0(gsub(paste0(ci_high, "_"), "", names(x)[highs]), collapse = "-")) { stop("Something went wrong in the CIs reshaping.") return(x) } if (sum(lows) > 1 & sum(highs) > 1) { low <- stats::reshape( x[!highs], direction = "long", varying = list(names(x)[lows]), sep = "_", timevar = "CI", v.names = ci_low, times = ci ) high <- stats::reshape( x[!lows], direction = "long", varying = list(names(x)[highs]), sep = "_", timevar = "CI", v.names = ci_high, times = ci ) x <- merge(low, high) x$id <- NULL x <- x[order(x$Parameter), ] row.names(x) <- NULL if (remove_parameter) x$Parameter <- NULL } # Replace at the right place ci_position <- which(lows)[1] ci_colname <- c("CI", ci_low, ci_high) colnames_1 <- names(x)[0:(ci_position - 1)][!names(x)[0:(ci_position - 1)] %in% ci_colname] colnames_2 <- names(x)[!names(x) %in% c(ci_colname, colnames_1)] x <- x[c(colnames_1, ci_colname, colnames_2)] } class(x) <- intersect(c("data.frame", "numeric"), class(x)) x } datawizard/R/data_extract.R0000644000176200001440000000454514164744510015411 0ustar liggesusers#' Extract a single column or element from an object #' #' `extract()` is similar to `$`. It extracts a single column or element from an object #' (e.g., a data frame, list, ) #' #' @param data The object to subset. Methods are currently available for data frames #' and data frame extensions (e.g., tibbles). #' @param select A variable specified as: #' #' - a literal variable name (e.g., `column_name`) #' - a character vector with the variable name (e.g., `"column_name"`) #' - a positive integer, giving the position counting from the left #' - a negative integer, giving the position counting from the right. #' #' The default returns the last column. #' If the special value `0` or `"row.names"` is given, the row names of the #' object (if any) are extracted. #' @param name An optional argument that specifies the column to be used as #' names for for the vector after extraction. #' Specified in the same way as `select`. #' @param ... For use by future methods. #' #' @return A vector containing the extracted element. #' @export #' #' @examples #' extract(mtcars, cyl, name = gear) #' extract(mtcars, "cyl", name = gear) #' extract(mtcars, -1, name = gear) #' extract(mtcars, cyl, name = 0) #' extract(mtcars, cyl, name = "row.names") data_extract <- function(data, select, name = NULL, ...) { UseMethod("data_extract") } #' @export #' @rdname data_extract extract <- data_extract #' @export data_extract.data.frame <- function(data, select, name = NULL, ...) { nl <- as.list(seq_along(data)) names(nl) <- names(data) select <- eval(substitute(select), nl, parent.frame()) if (is.numeric(select) && select < 0) { select <- length(data) + select + 1 } else if (is.numeric(select) && select == 0) { select <- rownames(data) } else if (is.character(select) && select == "row.names") { select <- rownames(data) } name <- eval(substitute(name), nl, parent.frame()) if (is.numeric(name) && name < 0) { name <- length(data) + name + 1 } else if (is.numeric(name) && name == 0) { name <- rownames(data) } else if (is.character(name) && name == "row.names") { name <- rownames(data) } if (length(name) == 1) { stats::setNames(data[, select, drop = TRUE], data[, name, drop = TRUE]) } else { stats::setNames(data[, select, drop = TRUE], name) } } datawizard/R/ranktransform.R0000644000176200001440000001050014141236110015604 0ustar liggesusers#' (Signed) rank transformation #' #' Transform numeric values with the integers of their rank (i.e., 1st smallest, #' 2nd smallest, 3rd smallest, etc.). Setting the `sign` argument to `TRUE` will #' give you signed ranks, where the ranking is done according to absolute size #' but where the sign is preserved (i.e., 2, 1, -3, 4). #' #' @inheritParams standardize.data.frame #' #' @param x Object. #' @param sign Logical, if `TRUE`, return signed ranks. #' @param method Treatment of ties. Can be one of `"average"` (default), #' `"first"`, `"last"`, `"random"`, `"max"` or `"min"`. See [rank()] for #' details. #' @param ... Arguments passed to or from other methods. #' #' @examples #' ranktransform(c(0, 1, 5, -5, -2)) #' ranktransform(c(0, 1, 5, -5, -2), sign = TRUE) #' #' head(ranktransform(trees)) #' @return A rank-transformed object. #' #' @family transform utilities #' #' @export ranktransform <- function(x, ...) { UseMethod("ranktransform") } #' @rdname ranktransform #' @export ranktransform.numeric <- function(x, sign = FALSE, method = "average", verbose = TRUE, ...) { # Warning if all NaNs if (all(is.na(x))) { return(x) } # Warning if only one value if (length(unique(x)) == 1) { if (is.null(names(x))) { name <- deparse(substitute(x)) } else { name <- names(x) } if (verbose) { warning(paste0("Variable `", name, "` contains only one unique value and will not be normalized.")) } return(x) } # Warning if logical vector if (length(unique(x)) == 2) { if (is.null(names(x))) { name <- deparse(substitute(x)) } else { name <- names(x) } if (verbose) { warning(paste0("Variable `", name, "` contains only two different values. Consider converting it to a factor.")) } } if (sign) { ZEROES <- x == 0 if (any(ZEROES) && verbose) warning("Zeros detected. These cannot be sign-rank transformed.") out <- rep(NA, length(x)) out[!ZEROES] <- sign(x[!ZEROES]) * rank(abs(x[!ZEROES]), ties.method = method, na.last = "keep") } else { out <- rank(x, ties.method = method, na.last = "keep") } out } #' @export ranktransform.factor <- function(x, ...) { x } #' @rdname ranktransform #' @export ranktransform.grouped_df <- function(x, select = NULL, exclude = NULL, sign = FALSE, method = "average", ...) { info <- attributes(x) # dplyr >= 0.8.0 returns attribute "indices" grps <- attr(x, "groups", exact = TRUE) # check for formula notation, convert to character vector if (inherits(select, "formula")) { select <- all.vars(select) } if (inherits(exclude, "formula")) { exclude <- all.vars(exclude) } # dplyr < 0.8.0? if (is.null(grps)) { grps <- attr(x, "indices", exact = TRUE) grps <- lapply(grps, function(x) x + 1) } else { grps <- grps[[".rows"]] } x <- as.data.frame(x) for (rows in grps) { x[rows, ] <- ranktransform( x[rows, ], select = select, exclude = exclude, sign = sign, method = method, ... ) } # set back class, so data frame still works with dplyr attributes(x) <- info x } #' @rdname ranktransform #' @export ranktransform.data.frame <- function(x, select = NULL, exclude = NULL, sign = FALSE, method = "average", ...) { # check for formula notation, convert to character vector if (inherits(select, "formula")) { select <- all.vars(select) } if (inherits(exclude, "formula")) { exclude <- all.vars(exclude) } if (is.null(select)) { select <- names(x) } if (!is.null(exclude)) { select <- setdiff(select, exclude) } x[select] <- lapply(x[select], ranktransform, sign = sign, method = method) x } datawizard/R/describe_distribution.R0000644000176200001440000002603014113652110017302 0ustar liggesusers#' Describe a distribution #' #' This function describes a distribution by a set of indices (e.g., measures of #' centrality, dispersion, range, skewness, kurtosis). #' #' @param x A numeric vector. #' @param range Return the range (min and max). #' @param quartiles Return the first and third quartiles (25th and 75pth #' percentiles). #' @param include_factors Logical, if `TRUE`, factors are included in the #' output, however, only columns for range (first and last factor levels) as #' well as n and missing will contain information. #' @param ci Confidence Interval (CI) level. Default is `NULL`, i.e. no #' confidence intervals are computed. If not `NULL`, confidence intervals #' are based on bootstrap replicates (see `iterations`). If #' `centrality = "all"`, the bootstrapped confidence interval refers to #' the first centrality index (which is typically the median). #' @param iterations The number of bootstrap replicates for computing confidence #' intervals. Only applies when `ci` is not `NULL`. #' @param iqr Logical, if `TRUE`, the interquartile range is calculated #' (based on [stats::IQR()], using `type = 6`). #' @param verbose Toggle warnings and messages. #' @inheritParams bayestestR::point_estimate #' #' @note There is also a #' [`plot()`-method](https://easystats.github.io/see/articles/parameters.html) #' implemented in the #' \href{https://easystats.github.io/see/}{\pkg{see}-package}. #' #' @return A data frame with columns that describe the properties of the variables. #' @examples #' describe_distribution(rnorm(100)) #' #' data(iris) #' describe_distribution(iris) #' describe_distribution(iris, include_factors = TRUE, quartiles = TRUE) #' @export describe_distribution <- function(x, ...) { UseMethod("describe_distribution") } #' @rdname describe_distribution #' @export describe_distribution.numeric <- function(x, centrality = "mean", dispersion = TRUE, iqr = TRUE, range = TRUE, quartiles = FALSE, ci = NULL, iterations = 100, threshold = .1, verbose = TRUE, ...) { out <- data.frame(.temp = 0) # Missing n_missing <- sum(is.na(x)) x <- stats::na.omit(x) # Point estimates out <- cbind( out, bayestestR::point_estimate( x, centrality = centrality, dispersion = dispersion, threshold = threshold, ... ) ) # interquartile range, type same as minitab and SPSS if (iqr) { out$IQR <- stats::IQR(x, na.rm = TRUE, type = 6) } # Confidence Intervals if (!is.null(ci)) { insight::check_if_installed("boot") results <- boot::boot( data = x, statistic = .boot_distribution, R = iterations, centrality = centrality ) out_ci <- bayestestR::ci(results$t, ci = ci, verbose = FALSE) out <- cbind(out, data.frame(CI_low = out_ci$CI_low[1], CI_high = out_ci$CI_high[1])) } # Range if (range) { out <- cbind( out, data.frame( Min = min(x, na.rm = TRUE), Max = max(x, na.rm = TRUE) ) ) } # Quartiles if (quartiles) { out <- cbind( out, data.frame( Q1 = stats::quantile(x, probs = 0.25, na.rm = TRUE), Q3 = stats::quantile(x, probs = 0.75, na.rm = TRUE) ) ) } # Skewness out <- cbind( out, data.frame( Skewness = as.numeric(skewness(x, verbose = verbose)), Kurtosis = as.numeric(kurtosis(x, verbose = verbose)) ) ) out$n <- length(x) out$n_Missing <- n_missing out$`.temp` <- NULL class(out) <- unique(c("parameters_distribution", "see_parameters_distribution", class(out))) attr(out, "data") <- x attr(out, "ci") <- ci attr(out, "threshold") <- threshold if (centrality == "all") attr(out, "first_centrality") <- colnames(out)[1] out } #' @rdname describe_distribution #' @export describe_distribution.factor <- function(x, dispersion = TRUE, range = TRUE, verbose = TRUE, ...) { # Missing n_missing <- sum(is.na(x)) x <- stats::na.omit(x) out <- data.frame( Mean = NA, SD = NA, CI_low = NA, CI_high = NA, IQR = NA, Min = levels(x)[1], Max = levels(x)[nlevels(x)], Q1 = NA, Q3 = NA, Skewness = as.numeric(skewness(x, verbose = verbose)), Kurtosis = as.numeric(kurtosis(x, verbose = verbose)), n = length(x), n_Missing = n_missing, stringsAsFactors = FALSE ) if (!dispersion) { out$SD <- NULL } dot.arguments <- list(...) if (is.null(dot.arguments[["ci"]])) { out$CI_low <- NULL out$CI_high <- NULL } if (is.null(dot.arguments[["iqr"]]) || isFALSE(dot.arguments[["iqr"]])) { out$IQR <- NULL } if (is.null(dot.arguments[["quartiles"]]) || isFALSE(dot.arguments[["quartiles"]])) { out$Q1 <- NULL out$Q3 <- NULL } if (!range) { out$Min <- NULL out$Max <- NULL } class(out) <- unique(c("parameters_distribution", "see_parameters_distribution", class(out))) attr(out, "data") <- x out } #' @export describe_distribution.character <- function(x, dispersion = TRUE, range = TRUE, verbose = TRUE, ...) { # Missing n_missing <- sum(is.na(x)) x <- stats::na.omit(x) values <- unique(x) out <- data.frame( Mean = NA, SD = NA, IQR = NA, CI_low = NA, CI_high = NA, Min = values[1], Max = values[length(values)], Q1 = NA, Q3 = NA, Skewness = as.numeric(skewness(x, verbose = verbose)), Kurtosis = as.numeric(kurtosis(x, verbose = verbose)), n = length(x), n_Missing = n_missing, stringsAsFactors = FALSE ) if (!dispersion) { out$SD <- NULL } dot.arguments <- list(...) if (is.null(dot.arguments[["ci"]])) { out$CI_low <- NULL out$CI_high <- NULL } if (is.null(dot.arguments[["iqr"]]) || isFALSE(dot.arguments[["iqr"]])) { out$IQR <- NULL } if (is.null(dot.arguments[["quartiles"]]) || isFALSE(dot.arguments[["quartiles"]])) { out$Q1 <- NULL out$Q3 <- NULL } if (!range) { out$Min <- NULL out$Max <- NULL } class(out) <- unique(c("parameters_distribution", "see_parameters_distribution", class(out))) attr(out, "data") <- x out } #' @rdname describe_distribution #' @export describe_distribution.data.frame <- function(x, centrality = "mean", dispersion = TRUE, iqr = TRUE, range = TRUE, quartiles = FALSE, include_factors = FALSE, ci = NULL, iterations = 100, threshold = .1, verbose = TRUE, ...) { out <- do.call(rbind, lapply(x, function(i) { if ((include_factors && is.factor(i)) || (!is.character(i) && !is.factor(i))) { describe_distribution( i, centrality = centrality, dispersion = dispersion, iqr = iqr, range = range, quartiles = quartiles, ci = ci, iterations = iterations, threshold = threshold, verbose = verbose ) } })) out$Variable <- row.names(out) row.names(out) <- NULL out <- out[c("Variable", setdiff(colnames(out), "Variable"))] class(out) <- unique(c("parameters_distribution", "see_parameters_distribution", class(out))) attr(out, "object_name") <- deparse(substitute(x), width.cutoff = 500) attr(out, "ci") <- ci attr(out, "threshold") <- threshold if (centrality == "all") attr(out, "first_centrality") <- colnames(out)[2] out } #' @export describe_distribution.grouped_df <- function(x, centrality = "mean", dispersion = TRUE, iqr = TRUE, range = TRUE, quartiles = FALSE, include_factors = FALSE, ci = NULL, iterations = 100, threshold = .1, verbose = TRUE, ...) { group_vars <- setdiff(colnames(attributes(x)$groups), ".rows") group_data <- expand.grid(lapply(x[group_vars], function(i) unique(sort(i)))) groups <- split(x, x[group_vars]) out <- do.call(rbind, lapply(1:length(groups), function(i) { d <- describe_distribution.data.frame( groups[[i]], centrality = centrality, dispersion = dispersion, iqr = iqr, range = range, quartiles = quartiles, include_factors = include_factors, ci = ci, iterations = iterations, threshold = threshold, ... ) d[[".group"]] <- paste(sprintf("%s=%s", group_vars, sapply(group_data[i, ], as.character)), collapse = " | ") d })) class(out) <- unique(c("parameters_distribution", "see_parameters_distribution", class(out))) attr(out, "object_name") <- deparse(substitute(x), width.cutoff = 500) attr(out, "ci") <- ci attr(out, "threshold") <- threshold if (centrality == "all") attr(out, "first_centrality") <- colnames(out)[2] out } #' @export print.parameters_distribution <- function(x, digits = 2, ...) { formatted_table <- format( x, digits = digits, format = "text", ci_width = NULL, ci_brackets = TRUE, ... ) cat(insight::export_table(formatted_table, format = "text", digits = digits)) invisible(x) } # bootstrapping CIs ---------------------------------- .boot_distribution <- function(data, indices, centrality) { out <- datawizard::describe_distribution( data[indices], centrality = centrality, dispersion = FALSE, iqr = FALSE, range = FALSE, quartiles = FALSE, ci = NULL ) out[[1]] } datawizard/R/data_relocate.R0000644000176200001440000000505614113652110015517 0ustar liggesusers#' Relocate (reorder) columns of a data frame #' #' @param data A data frame to pivot. #' @param cols A character vector indicating the names of the columns to move. #' @param before,after Destination of columns. Supplying neither will move #' columns to the left-hand side; specifying both is an error. #' @param safe If `TRUE`, will disregard non-existing columns. #' @inheritParams data_rename #' #' @examples #' # Reorder columns #' head(data_relocate(iris, cols = "Species", before = "Sepal.Length")) #' head(data_relocate(iris, cols = "Species", before = "Sepal.Width")) #' head(data_relocate(iris, cols = "Sepal.Width", after = "Species")) #' head(data_relocate(iris, cols = c("Species", "Petal.Length"), after = "Sepal.Width")) #' @return A data frame with reordered columns. #' #' @export data_relocate <- function(data, cols, before = NULL, after = NULL, safe = TRUE, ...) { # Sanitize if (!is.null(before) && !is.null(after)) { stop("You must supply only one of `before` or `after`.") } if (safe) { cols <- cols[cols %in% names(data)] } # save attributes att <- attributes(data) # Move columns to the right hand side data <- data[c(setdiff(names(data), cols), cols)] # Get columns and their original position data_cols <- names(data) position <- which(data_cols %in% cols) # Find new positions if (!is.null(before)) { before <- before[before %in% data_cols][1] # Take first that exists (if vector is supplied) if (length(before) != 1) { stop("The column passed to 'before' wasn't found. Possibly mispelled.") } where <- min(match(before, data_cols)) position <- c(setdiff(position, where), where) } else if (!is.null(after)) { after <- after[after %in% data_cols][1] # Take first that exists (if vector is supplied) if (length(after) != 1) { stop("The column passed to 'after' wasn't found. Possibly mispelled.") } where <- max(match(after, data_cols)) position <- c(where, setdiff(position, where)) } else { where <- 1 position <- union(position, where) } # Set left and right side lhs <- setdiff(seq(1, where - 1), position) rhs <- setdiff(seq(where + 1, ncol(data)), position) position <- unique(c(lhs, position, rhs)) position <- position[position <= length(data_cols)] out <- data[position] attributes(out) <- utils::modifyList(att, attributes(out)) out } datawizard/R/center.R0000644000176200001440000001605114164744506014226 0ustar liggesusers#' Centering (Grand-Mean Centering) #' #' Performs a grand-mean centering of data. #' #' @param x A data frame, a (numeric or character) vector or a factor. #' @param select Character vector of column names. If `NULL` (the default), #' all variables will be selected. #' @param exclude Character vector of column names to be excluded from selection. #' @param force Logical, if `TRUE`, forces centering of factors as #' well. Factors are converted to numerical values, with the lowest level #' being the value `1` (unless the factor has numeric levels, which are #' converted to the corresponding numeric value). #' @param robust Logical, if `TRUE`, centering is done by subtracting the #' median from the variables. If `FALSE`, variables are centered by #' subtracting the mean. #' @param append Logical or string. If `TRUE`, centered variables get new #' column names (with the suffix `"_c"`) and are appended (column bind) to `x`, #' thus returning both the original and the centered variables. If `FALSE`, #' original variables in `x` will be overwritten by their centered versions. #' If a character value, centered variables are appended with new column #' names (using the defined suffix) to the original data frame. #' @param verbose Toggle warnings and messages. #' @param weights Can be `NULL` (for no weighting), or: #' - For data frames: a numeric vector of weights, or a character of the #' name of a column in the `data.frame` that contains the weights. #' - For numeric vectors: a numeric vector of weights. #' @param center Numeric value, which can be used as alternative to #' `reference` to define a reference centrality. If `center` is of length 1, #' it will be recycled to match the length of selected variables for centering. #' Else, `center` must be of same length as the number of selected variables. #' Values in `center` will be matched to selected variables in the provided #' order, unless a named vector is given. In this case, names are matched #' against the names of the selected variables. #' @param ... Currently not used. #' @inheritParams standardize #' #' @note #' **Difference between centering and standardizing**: Standardized variables #' are computed by subtracting the mean of the variable and then dividing it by #' the standard deviation, while centering variables involves only the #' subtraction. #' #' @seealso If centering within-clusters (instead of grand-mean centering) #' is required, see [demean()]. For standardizing, see [standardize()]. #' #' @return The centered variables. #' #' @examples #' data(iris) #' #' # entire dataframe or a vector #' head(iris$Sepal.Width) #' head(center(iris$Sepal.Width)) #' head(center(iris)) #' head(center(iris, force = TRUE)) #' #' # only the selected columns from a dataframe #' center(anscombe, select = c("x1", "x3")) #' center(anscombe, exclude = c("x1", "x3")) #' #' # centering with reference center and scale #' d <- data.frame( #' a = c(-2, -1, 0, 1, 2), #' b = c(3, 4, 5, 6, 7) #' ) #' #' # default centering at mean #' center(d) #' #' # centering, using 0 as mean #' center(d, center = 0) #' #' # centering, using -5 as mean #' center(d, center = -5) #' @export center <- function(x, ...) { UseMethod("center") } #' @rdname center #' @export centre <- center #' @rdname center #' @export center.numeric <- function(x, robust = FALSE, weights = NULL, verbose = TRUE, reference = NULL, center = NULL, ...) { args <- .process_std_center(x, weights, robust, verbose, reference, center, scale = NULL) if (is.null(args)) { # all NA? return(x) } else if (is.null(args$check)) { vals <- rep(0, length(args$vals)) # If only unique value } else { vals <- as.vector(args$vals - args$center) } centered_x <- rep(NA, length(args$valid_x)) centered_x[args$valid_x] <- vals attr(centered_x, "center") <- args$center attr(centered_x, "scale") <- args$scale attr(centered_x, "robust") <- robust centered_x } #' @export center.factor <- function(x, weights = NULL, robust = FALSE, verbose = TRUE, force = FALSE, ...) { if (!force) { return(x) } center(.factor_to_numeric(x), weights = weights, robust = robust, verbose = verbose, ...) } #' @export center.logical <- center.factor #' @export center.character <- center.factor #' @rdname center #' @inheritParams standardize.data.frame #' @export center.data.frame <- function(x, robust = FALSE, weights = NULL, verbose = TRUE, reference = NULL, select = NULL, exclude = NULL, remove_na = c("none", "selected", "all"), force = FALSE, append = FALSE, center = NULL, ...) { # process arguments args <- .process_std_args(x, select, exclude, weights, append, append_suffix = "_c", force, remove_na, reference, .center = center, .scale = NULL ) # set new values x <- args$x for (var in args$select) { x[[var]] <- center( x[[var]], robust = robust, weights = args$weights, verbose = FALSE, reference = reference[[var]], center = args$center[var], force = force ) } attr(x, "center") <- sapply(x[args$select], function(z) attributes(z)$center) attr(x, "scale") <- sapply(x[args$select], function(z) attributes(z)$scale) attr(x, "robust") <- robust x } #' @export center.grouped_df <- function(x, robust = FALSE, weights = NULL, verbose = TRUE, reference = NULL, select = NULL, exclude = NULL, remove_na = c("none", "selected", "all"), force = FALSE, append = FALSE, center = NULL, ...) { args <- .process_grouped_df(x, select, exclude, append, append_suffix = "_c", reference, weights, force ) for (rows in args$grps) { args$x[rows, ] <- center( args$x[rows, ], select = args$select, exclude = NULL, robust = robust, weights = args$weights, remove_na = remove_na, verbose = verbose, force = force, append = FALSE, center = center, ... ) } # set back class, so data frame still works with dplyr attributes(args$x) <- args$info args$x } datawizard/R/compact_character.R0000644000176200001440000000067514174263210016402 0ustar liggesusers#' Remove empty strings from character #' #' @param x A single character or a vector of characters. #' #' @return #' #' A character or a character vector with empty strings removed. #' #' @examples #' compact_character(c("x", "y", NA)) #' compact_character(c("x", "NULL", "", "y")) #' #' @export compact_character <- function(x) { x[!sapply(x, function(i) nchar(i) == 0 || all(is.na(i)) || any(i == "NULL", na.rm = TRUE))] } datawizard/R/convert_data_to_numeric.R0000644000176200001440000000357114174253064017641 0ustar liggesusers#' Convert data to numeric #' #' Convert data to numeric by converting characters to factors and factors to either numeric levels or dummy variables. #' #' @param x A data frame or a vector. #' @param dummy_factors Transform factors to dummy factors (all factor levels as different columns filled with a binary 0-1 value). #' @param ... Arguments passed to or from other methods. #' #' @examples #' head(convert_data_to_numeric(iris)) #' @return A data frame of numeric variables. #' @export convert_data_to_numeric <- function(x, ...) { UseMethod("convert_data_to_numeric") } #' @rdname convert_data_to_numeric #' @export data_to_numeric <- convert_data_to_numeric #' @rdname convert_data_to_numeric #' @export convert_data_to_numeric.data.frame <- function(x, dummy_factors = TRUE, ...) { out <- sapply(x, convert_data_to_numeric, dummy_factors = dummy_factors, simplify = FALSE) as.data.frame(do.call(cbind, out)) } #' @export convert_data_to_numeric.numeric <- function(x, ...) { as.numeric(x) } #' @export convert_data_to_numeric.double <- convert_data_to_numeric.numeric #' @export convert_data_to_numeric.logical <- convert_data_to_numeric.numeric #' @export convert_data_to_numeric.factor <- function(x, dummy_factors = TRUE, ...) { if (dummy_factors) { out <- as.data.frame(stats::model.matrix(~x, contrasts.arg = list(x = "contr.treatment"))) out[1] <- as.numeric(rowSums(out[2:ncol(out)]) == 0) names(out) <- levels(x) } else { out <- as.numeric(x) } out } #' @export convert_data_to_numeric.character <- function(x, dummy_factors = FALSE, ...) { nums <- grepl("[-]?[0-9]+[.]?[0-9]*|[-]?[0-9]+[L]?|[-]?[0-9]+[.]?[0-9]*[eE][0-9]+", x) if (all(nums)) { out <- as.numeric(nums) } else { out <- convert_data_to_numeric(as.factor(nums), dummy_factors = dummy_factors) } out } datawizard/R/data_addprefix.R0000644000176200001440000000065114113652110015663 0ustar liggesusers#' @rdname data_rename #' @examples #' # Add prefix / suffix to all columns #' head(data_addprefix(iris, "NEW_")) #' head(data_addsuffix(iris, "_OLD")) #' @export data_addprefix <- function(data, pattern, ...) { names(data) <- paste0(pattern, names(data)) data } #' @rdname data_rename #' @export data_addsuffix <- function(data, pattern, ...) { names(data) <- paste0(names(data), pattern) data } datawizard/R/data_reshape.R0000644000176200001440000001517214113652110015350 0ustar liggesusers#' Reshape (pivot) data from wide to long #' #' This function "lengthens" data, increasing the number of rows and decreasing #' the number of columns. This is a dependency-free base-R equivalent of #' `tidyr::pivot_longer()`. #' #' @param data A data frame to pivot. #' @param cols A vector of column names or indices to pivot into longer format. #' @param colnames_to The name of the new column that will contain the column #' names. #' @param values_to The name of the new column that will contain the values of #' the pivoted variables. #' @param rows_to The name of the column that will contain the row-number from #' the original data. If `NULL`, will be removed. #' @param colnames_from The name of the column that contains the levels to be #' used as future columns. #' @param values_from The name of the column that contains the values of the put #' in the columns. #' @param rows_from The name of the column that identifies the rows. If #' `NULL`, will use all the unique rows. #' @param ... Additional arguments passed on to methods. #' @param names_to,names_from Same as `colnames_to`, is there for #' compatibility with `tidyr::pivot_longer()`. #' @param sep The indicating a separating character in the variable names in the #' wide format. #' #' #' @examples #' wide_data <- data.frame(replicate(5, rnorm(10))) #' #' # From wide to long #' # ------------------ #' # Default behaviour (equivalent to tidyr::pivot_longer(wide_data, cols = 1:5)) #' data_to_long(wide_data) #' #' # Customizing the names #' data_to_long(wide_data, #' cols = c(1, 2), #' colnames_to = "Column", #' values_to = "Numbers", #' rows_to = "Row" #' ) #' #' # From long to wide #' # ----------------- #' long_data <- data_to_long(wide_data, rows_to = "Row_ID") # Save row number #' data_to_wide(long_data, #' colnames_from = "Name", #' values_from = "Value", #' rows_from = "Row_ID" #' ) #' #' # Full example #' # ------------------ #' if (require("psych")) { #' data <- psych::bfi # Wide format with one row per participant's personality test #' #' # Pivot long format #' long <- data_to_long(data, #' cols = "\\d", # Select all columns that contain a digit #' colnames_to = "Item", #' values_to = "Score", #' rows_to = "Participant" #' ) #' #' # Separate facet and question number #' long$Facet <- gsub("\\d", "", long$Item) #' long$Item <- gsub("[A-Z]", "", long$Item) #' long$Item <- paste0("I", long$Item) #' #' wide <- data_to_wide(long, #' colnames_from = "Item", #' values_from = "Score" #' ) #' head(wide) #' } #' @return data.frame #' @export data_to_long <- function(data, cols = "all", colnames_to = "Name", values_to = "Value", rows_to = NULL, ..., names_to = colnames_to) { if (inherits(data, "tbl_df")) { tbl_input <- TRUE data <- as.data.frame(data) } else { tbl_input <- FALSE } # Select columns ---------------- if (is.character(cols) && length(cols) == 1) { # If only one name if (cols == "all") { # If all, take all cols <- names(data) } else { # Surely, a regex cols <- grep(cols, names(data), value = TRUE) } } # If numeric, surely the index of the cols if (is.numeric(cols)) { cols <- names(data)[cols] } # Sanity checks ---------------- # Make sure all cols are in data if (!all(cols %in% names(data))) { stop("Some variables as selected by 'cols' are not present in the data.") } # Compatibility with tidyr if (names_to != colnames_to) colnames_to <- names_to # save attribute of each variable variable_attr <- lapply(data, attributes) # Reshaping --------------------- # Create Index column as needed by reshape data[["_Row"]] <- to_numeric(row.names(data)) # Reshape long <- stats::reshape(data, varying = cols, idvar = "_Row", v.names = values_to, timevar = colnames_to, direction = "long" ) # Cleaning -------------------------- # Sort the dataframe (to match pivot_longer's output) long <- long[order(long[["_Row"]], long[[colnames_to]]), ] # Remove or rename the row index if (is.null(rows_to)) { long[["_Row"]] <- NULL } else { names(long)[names(long) == "_Row"] <- rows_to } # Re-insert col names as levels long[[colnames_to]] <- cols[long[[colnames_to]]] # Reset row names row.names(long) <- NULL # Remove reshape attributes attributes(long)$reshapeLong <- NULL # add back attributes where possible for (i in colnames(long)) { attributes(long[[i]]) <- variable_attr[[i]] } if (isTRUE(tbl_input)) { class(long) <- c("tbl_df", "tbl", "data.frame") } long } #' @rdname data_to_long #' @export data_to_wide <- function(data, values_from = "Value", colnames_from = "Name", rows_from = NULL, sep = "_", ..., names_from = colnames_from) { if (inherits(data, "tbl_df")) { tbl_input <- TRUE data <- as.data.frame(data) } else { tbl_input <- FALSE } # Compatibility with tidyr if (names_from != colnames_from) colnames_from <- names_from # save attribute of each variable variable_attr <- lapply(data, attributes) # If no other row identifier, create one if (is.null(rows_from)) { if (all(names(data) %in% c(values_from, colnames_from))) { data[["_Rows"]] <- row.names(data) } data[["_Rows"]] <- apply(data[, !names(data) %in% c(values_from, colnames_from), drop = FALSE], 1, paste, collapse = "_") rows_from <- "_Rows" } # Reshape wide <- stats::reshape(data, v.names = values_from, idvar = rows_from, timevar = colnames_from, sep = sep, direction = "wide" ) # Clean if ("_Rows" %in% names(wide)) wide[["_Rows"]] <- NULL row.names(wide) <- NULL # Reset row names # Remove reshape attributes attributes(wide)$reshapeWide <- NULL # add back attributes where possible for (i in colnames(wide)) { attributes(wide[[i]]) <- variable_attr[[i]] } if (isTRUE(tbl_input)) { class(wide) <- c("tbl_df", "tbl", "data.frame") } wide } # Aliases ----------------------------------------------------------------- #' @rdname data_to_long #' @export reshape_longer <- data_to_long #' @rdname data_to_long #' @export reshape_wider <- data_to_wide datawizard/R/data_transpose.R0000644000176200001440000000154114126335276015751 0ustar liggesusers#' Transpose a dataframe #' #' Transpose a dataframe. It's the equivalent of using `t()` but restores the data.frame class, and prints a warning if the data type is modified (see example). #' #' @inheritParams data_rename #' @param verbose Silence warnings and/or messages by setting it to `FALSE`. #' #' @examples #' transposed <- data_transpose(iris) #' transposed[1:5] #' #' transposed <- data_transpose(iris[1:4]) # Only numeric = no warning #' @export data_transpose <- function(data, verbose = TRUE, ...) { if (length(unique(sapply(data, class))) > 1) { if (verbose) { warning("Your data contains mixed types of data. After transposition, all will be transformed into characters.") } } new <- as.data.frame(t(data)) # Restore names colnames(new) <- rownames(data) rownames(new) <- colnames(data) new } datawizard/R/rescale_weights.R0000644000176200001440000001732514113652110016102 0ustar liggesusers#' @title Rescale design weights for multilevel analysis #' @name rescale_weights #' #' @description Most functions to fit multilevel and mixed effects models only #' allow to specify frequency weights, but not design (i.e. sampling or #' probability) weights, which should be used when analyzing complex samples #' and survey data. `rescale_weights()` implements an algorithm proposed #' by \cite{Asparouhov (2006)} and \cite{Carle (2009)} to rescale design #' weights in survey data to account for the grouping structure of multilevel #' models, which then can be used for multilevel modelling. #' #' @param data A data frame. #' @param group Variable names (as character vector, or as formula), indicating #' the grouping structure (strata) of the survey data (level-2-cluster #' variable). It is also possible to create weights for multiple group #' variables; in such cases, each created weighting variable will be suffixed #' by the name of the group variable. #' @param probability_weights Variable indicating the probability (design or #' sampling) weights of the survey data (level-1-weight). #' @param nest Logical, if `TRUE` and `group` indicates at least two #' group variables, then groups are "nested", i.e. groups are now a #' combination from each group level of the variables in `group`. #' #' @return `data`, including the new weighting variables: `pweights_a` #' and `pweights_b`, which represent the rescaled design weights to use #' in multilevel models (use these variables for the `weights` argument). #' #' @details #' #' Rescaling is based on two methods: For `pweights_a`, the sample weights #' `probability_weights` are adjusted by a factor that represents the proportion #' of group size divided by the sum of sampling weights within each group. The #' adjustment factor for `pweights_b` is the sum of sample weights within each #' group divided by the sum of squared sample weights within each group (see #' Carle (2009), Appendix B). #' #' Regarding the choice between scaling methods A and B, Carle suggests that #' "analysts who wish to discuss point estimates should report results based on #' weighting method A. For analysts more interested in residual between-group #' variance, method B may generally provide the least biased estimates". In #' general, it is recommended to fit a non-weighted model and weighted models #' with both scaling methods and when comparing the models, see whether the #' "inferential decisions converge", to gain confidence in the results. #' #' Though the bias of scaled weights decreases with increasing group size, #' method A is preferred when insufficient or low group size is a concern. #' #' The group ID and probably PSU may be used as random effects (e.g. nested #' design, or group and PSU as varying intercepts), depending on the survey #' design that should be mimicked. #' #' @references #' - Carle A.C. (2009). Fitting multilevel models in complex survey data #' with design weights: Recommendations. BMC Medical Research Methodology #' 9(49): 1-13 #' #' - Asparouhov T. (2006). General Multi-Level Modeling with Sampling #' Weights. Communications in Statistics - Theory and Methods 35: 439-460 #' #' @examples #' if (require("lme4")) { #' data(nhanes_sample) #' head(rescale_weights(nhanes_sample, "SDMVSTRA", "WTINT2YR")) #' #' # also works with multiple group-variables #' head(rescale_weights(nhanes_sample, c("SDMVSTRA", "SDMVPSU"), "WTINT2YR")) #' #' # or nested structures. #' x <- rescale_weights( #' data = nhanes_sample, #' group = c("SDMVSTRA", "SDMVPSU"), #' probability_weights = "WTINT2YR", #' nest = TRUE #' ) #' head(x) #' #' nhanes_sample <- rescale_weights(nhanes_sample, "SDMVSTRA", "WTINT2YR") #' #' glmer( #' total ~ factor(RIAGENDR) * (log(age) + factor(RIDRETH1)) + (1 | SDMVPSU), #' family = poisson(), #' data = nhanes_sample, #' weights = pweights_a #' ) #' } #' @export rescale_weights <- function(data, group, probability_weights, nest = FALSE) { if (inherits(group, "formula")) { group <- all.vars(group) } # check if weight has missings. we need to remove them first, # and add back weights to correct cases later weight_missings <- which(is.na(data[[probability_weights]])) weight_non_na <- which(!is.na(data[[probability_weights]])) if (length(weight_missings) > 0) { data_tmp <- data[weight_non_na, ] } else { data_tmp <- data } # sort id data_tmp$.bamboozled <- 1:nrow(data_tmp) if (nest && length(group) < 2) { warning(insight::format_message(sprintf("Only one group variable selected, no nested structure possible. Rescaling weights for grout '%s' now.", group)), call. = FALSE) nest <- FALSE } if (nest) { out <- .rescale_weights_nested(data_tmp, group, probability_weights, nrow(data), weight_non_na) } else { out <- lapply(group, function(i) { x <- .rescale_weights(data_tmp, i, probability_weights, nrow(data), weight_non_na) if (length(group) > 1) { colnames(x) <- sprintf(c("pweight_a_%s", "pweight_b_%s"), i) } x }) } do.call(cbind, list(data, out)) } # rescale weights, for one or more group variables ---------------------------- .rescale_weights <- function(x, group, probability_weights, n, weight_non_na) { # compute sum of weights per group design_weights <- .data_frame( group = sort(unique(x[[group]])), sum_weights_by_group = tapply(x[[probability_weights]], as.factor(x[[group]]), sum), sum_squared_weights_by_group = tapply(x[[probability_weights]]^2, as.factor(x[[group]]), sum), n_per_group = as.vector(table(x[[group]])) ) colnames(design_weights)[1] <- group x <- merge(x, design_weights, by = group, sort = FALSE) # restore original order x <- x[order(x$.bamboozled), ] x$.bamboozled <- NULL # multiply the original weight by the fraction of the # sampling unit total population based on Carle 2009 w_a <- x[[probability_weights]] * x$n_per_group / x$sum_weights_by_group w_b <- x[[probability_weights]] * x$sum_weights_by_group / x$sum_squared_weights_by_group out <- data.frame( pweights_a = rep(as.numeric(NA), times = n), pweights_b = rep(as.numeric(NA), times = n) ) out$pweights_a[weight_non_na] <- w_a out$pweights_b[weight_non_na] <- w_b out } # rescale weights, for nested groups ---------------------------- .rescale_weights_nested <- function(x, group, probability_weights, n, weight_non_na) { groups <- expand.grid(lapply(group, function(i) sort(unique(x[[i]])))) colnames(groups) <- group # compute sum of weights per group design_weights <- cbind( groups, .data_frame( sum_weights_by_group = unlist(as.list(tapply(x[[probability_weights]], lapply(group, function(i) as.factor(x[[i]])), sum))), sum_squared_weights_by_group = unlist(as.list(tapply(x[[probability_weights]]^2, lapply(group, function(i) as.factor(x[[i]])), sum))), n_per_group = unlist(as.list(table(x[, group]))) ) ) x <- merge(x, design_weights, by = group, sort = FALSE) # restore original order x <- x[order(x$.bamboozled), ] x$.bamboozled <- NULL # multiply the original weight by the fraction of the # sampling unit total population based on Carle 2009 w_a <- x[[probability_weights]] * x$n_per_group / x$sum_weights_by_group w_b <- x[[probability_weights]] * x$sum_weights_by_group / x$sum_squared_weights_by_group out <- data.frame( pweights_a = rep(as.numeric(NA), times = n), pweights_b = rep(as.numeric(NA), times = n) ) out$pweights_a[weight_non_na] <- w_a out$pweights_b[weight_non_na] <- w_b out } datawizard/R/data_partition.R0000644000176200001440000000443514113652110015732 0ustar liggesusers#' Partition data into a test and a training set #' #' Creates a training and a test set based on a dataframe. Can also be #' stratified (i.e., evenly spread a given factor) using the `group` #' argument. #' #' @inheritParams data_rename #' @param training_proportion The proportion (between 0 and 1) of the training #' set. The remaining part will be used for the test set. #' @param group A character vector indicating the name(s) of the column(s) used #' for stratified partitioning. #' @param seed A random number generator seed. Enter an integer (e.g. 123) so #' that the random sampling will be the same each time you run the function. #' #' @return A list of two data frames, named `test` and `training`. #' #' @examples #' df <- iris #' df$Smell <- rep(c("Strong", "Light"), 75) #' #' data_partition(df) #' data_partition(df, group = "Species") #' data_partition(df, group = c("Species", "Smell")) #' @export data_partition <- function(data, training_proportion = 0.7, group = NULL, seed = NULL, ...) { if (!is.data.frame(data)) { data <- tryCatch( expr = { as.data.frame(data) }, error = function(e) { NULL } ) if (is.null(data)) { stop("`data` needs to be a data frame, or an object that can be coerced to a data frame.") } } if (!is.null(seed)) { set.seed(seed) } training <- data.frame() test <- data.frame() if (!is.null(group)) { for (i in split(data, data[group])) { out <- .data_partition(i, training_proportion) training <- rbind(training, i[out$training, ]) test <- rbind(test, i[out$test, ]) } } else { out <- .data_partition(data, training_proportion) training <- rbind(training, data[out$training, ]) test <- rbind(test, data[out$test, ]) } list( training = training, test = test ) } #' @keywords internal .data_partition <- function(data, training_proportion = 0.8) { training_indices <- sample(1:nrow(data), size = training_proportion * nrow(data)) test_indices <- (1:nrow(data))[-training_indices] list( training = training_indices, test = test_indices ) } datawizard/R/data_rescale.R0000644000176200001440000001127514173025777015362 0ustar liggesusers#' Rescale Variables to a New Range #' #' Rescale variables to a new range. #' #' @inheritParams standardize.data.frame #' #' @param x A numeric variable. #' @param to New range that the variable will have after rescaling. #' @param range Initial (old) range of values. If `NULL`, will take the range of #' the input vector (`range(x)`). #' @param ... Arguments passed to or from other methods. #' #' @examples #' data_rescale(c(0, 1, 5, -5, -2)) #' data_rescale(c(0, 1, 5, -5, -2), to = c(-5, 5)) #' #' # Specify the "theoretical" range of the input vector #' data_rescale(c(1, 3, 4), to = c(0, 40), range = c(0, 4)) #' #' # Dataframes #' head(data_rescale(iris, to = c(0, 1))) #' head(data_rescale(iris, to = c(0, 1), select = "Sepal.Length")) #' #' # One can specify a list of ranges #' head(data_rescale(iris, to = list( #' "Sepal.Length" = c(0, 1), #' "Petal.Length" = c(-1, 0) #' ))) #' @seealso [normalize()] [standardize()] [ranktransform()] #' #' @return A rescaled object. #' #' @family transform utilities #' #' @export data_rescale <- function(x, ...) { UseMethod("data_rescale") } #' @rdname data_rescale #' @export change_scale <- function(x, ...) { # TODO: Don't deprecate for now # so we have time to change it accross the verse, but for next round # .Deprecated("data_rescale") data_rescale(x, ...) } #' @rdname data_rescale #' @export data_rescale.numeric <- function(x, to = c(0, 100), range = NULL, verbose = TRUE, ...) { if (is.null(to)) { return(x) } # Warning if all NaNs if (all(is.na(x))) { return(x) } # Warning if only one value if (length(unique(x)) == 1 && is.null(range)) { if (verbose) { warning(paste0("A `range` must be provided for data with only one observation.")) } return(x) } if (is.null(range)) { range <- c(min(x, na.rm = TRUE), max(x, na.rm = TRUE)) } min <- ifelse(is.na(range[1]), min(x, na.rm = TRUE), range[1]) max <- ifelse(is.na(range[2]), max(x, na.rm = TRUE), range[2]) new_min <- ifelse(is.na(to[1]), min, to[1]) new_max <- ifelse(is.na(to[2]), max, to[2]) out <- as.vector((new_max - new_min) / (max - min) * (x - min) + new_min) out } #' @export data_rescale.factor <- function(x, ...) { x } #' @rdname data_rescale #' @export data_rescale.grouped_df <- function(x, to = c(0, 100), range = NULL, select = NULL, exclude = NULL, ...) { info <- attributes(x) # dplyr >= 0.8.0 returns attribute "indices" grps <- attr(x, "groups", exact = TRUE) # check for formula notation, convert to character vector if (inherits(select, "formula")) { select <- all.vars(select) } if (inherits(exclude, "formula")) { exclude <- all.vars(exclude) } # dplyr < 0.8.0? if (is.null(grps)) { grps <- attr(x, "indices", exact = TRUE) grps <- lapply(grps, function(x) x + 1) } else { grps <- grps[[".rows"]] } x <- as.data.frame(x) for (rows in grps) { x[rows, ] <- change_scale( x[rows, ], select = select, exclude = exclude, to = to, range = range, ... ) } # set back class, so data frame still works with dplyr attributes(x) <- info x } #' @rdname data_rescale #' @export data_rescale.data.frame <- function(x, to = c(0, 100), range = NULL, select = NULL, exclude = NULL, ...) { # check for formula notation, convert to character vector if (inherits(select, "formula")) { select <- all.vars(select) } if (inherits(exclude, "formula")) { exclude <- all.vars(exclude) } if (is.null(select)) { select <- names(x) } if (!is.null(exclude)) { select <- setdiff(select, exclude) } # Transform the range so that it is a list now if (!is.null(range)) { if (!is.list(range)) { range <- stats::setNames(rep(list(range), length(select)), select) } } # Transform the 'to' so that it is a list now if (!is.list(to)) { to <- stats::setNames(rep(list(to), length(select)), select) } x[select] <- as.data.frame(sapply(select, function(n) { data_rescale(x[[n]], to = to[[n]], range = range[[n]]) }, simplify = FALSE)) x } datawizard/R/smoothness.R0000644000176200001440000000665714113652110015142 0ustar liggesusers#' Quantify the smoothness of a vector #' #' @param x Numeric vector (similar to a time series). #' @param method Can be "diff" (the standard deviation of the standardized #' differences) or "cor" (default, lag-one autocorrelation). #' @param lag An integer indicating which lag to use. If less than 1, will be #' interpreted as expressed in percentage of the length of the vector. #' @inheritParams skewness #' #' @examples #' x <- (-10:10)^3 + rnorm(21, 0, 100) #' plot(x) #' smoothness(x, method = "cor") #' smoothness(x, method = "diff") #' @return Value of smoothness. #' @references https://stats.stackexchange.com/questions/24607/how-to-measure-smoothness-of-a-time-series-in-r #' #' @export smoothness <- function(x, method = "cor", lag = 1, iterations = NULL, ...) { UseMethod("smoothness") } #' @export smoothness.numeric <- function(x, method = "cor", lag = 1, iterations = NULL, ...) { if (lag < 1) { lag <- round(lag * length(x)) } if (lag <= 0) { stop("lag cannot be that small.") } if (method == "cor") { smooth <- stats::cor(utils::head(x, length(x) - lag), utils::tail(x, length(x) - lag)) } else { smooth <- stats::sd(diff(x, lag = lag)) / abs(mean(diff(x, lag = lag))) } if (!is.null(iterations)) { if (!requireNamespace("boot", quietly = TRUE)) { warning("Package 'boot' needed for bootstrapping SEs.", call. = FALSE) } else { results <- boot::boot( data = x, statistic = .boot_smoothness, R = iterations, method = method, lag = lag ) out_se <- stats::sd(results$t, na.rm = TRUE) smooth <- data.frame(Smoothness = smooth, SE = out_se) } } class(smooth) <- unique(c("parameters_smoothness", class(smooth))) smooth } #' @export smoothness.data.frame <- function(x, method = "cor", lag = 1, iterations = NULL, ...) { .smoothness <- lapply( x, smoothness, method = method, lag = lag, iterations = iterations ) .smoothness <- cbind(Parameter = names(.smoothness), do.call(rbind, .smoothness)) class(.smoothness) <- unique(c("parameters_smoothness", class(.smoothness))) .smoothness } #' @export smoothness.default <- function(x, method = "cor", lag = 1, iterations = NULL, ...) { smoothness( .factor_to_numeric(x), method = method, lag = lag, iterations = iterations ) } # bootstrapping ----------------------------------- .boot_smoothness <- function(data, indices, method, lag) { datawizard::smoothness( x = data[indices], method = method, lag = lag, iterations = NULL ) } # methods ----------------------------------------- #' @export as.numeric.parameters_smoothness <- function(x, ...) { if (is.data.frame(x)) { x$Smoothness } else { as.vector(x) } } #' @export as.double.parameters_smoothness <- as.numeric.parameters_smoothness datawizard/R/data.R0000644000176200001440000000064014113652110013633 0ustar liggesusers#' @docType data #' @title Sample dataset from the National Health and Nutrition Examination Survey #' @name nhanes_sample #' @keywords data #' #' @description Selected variables from the National Health and Nutrition Examination #' Survey that are used in the example from Lumley (2010), Appendix E. #' #' @references Lumley T (2010). Complex Surveys: a guide to analysis using R. Wiley NULL datawizard/R/format_text.R0000644000176200001440000000557114113652110015266 0ustar liggesusers#' Convenient text formatting functionalities #' #' Convenience functions to manipulate and format text. #' #' @param text,text2 A character string. #' @param width Positive integer giving the target column width for wrapping #' lines in the output. Can be "auto", in which case it will select 90\% of the #' default width. #' @inheritParams data_rename #' @param sep Separator. #' @param last Last separator. #' @param n The number of characters to find. #' @param ... Other arguments to be passed to or from other functions. #' #' @return A character string. #' #' @examples #' # Add full stop if missing #' text_fullstop(c("something", "something else.")) #' #' # Find last characters #' text_lastchar(c("ABC", "DEF"), n = 2) #' #' # Smart concatenation #' text_concatenate(c("First", "Second", "Last")) #' #' # Remove parts of string #' text_remove(c("one!", "two", "three!"), "!") #' #' # Wrap text #' long_text <- paste(rep("abc ", 100), collapse = "") #' cat(text_wrap(long_text, width = 50)) #' #' # Paste with optional separator #' text_paste(c("A", "", "B"), c("42", "42", "42")) #' @export format_text <- function(text, sep = ", ", last = " and ", width = NULL, ...) { text_wrap(text_concatenate(text, sep = sep, last = last), width = width) } #' @rdname format_text #' @export text_fullstop <- function(text) { text[!text_lastchar(text) %in% c(".", ":", ",", ";", "!", "?")] <- paste0(text[text_lastchar(text) != "."], ".") text } #' @rdname format_text #' @export text_lastchar <- function(text, n = 1) { sapply(text, function(xx) { substr(xx, (nchar(xx) - n + 1), nchar(xx)) }) } #' @rdname format_text #' @export text_concatenate <- function(text, sep = ", ", last = " and ") { text <- text[text != ""] if (length(text) == 1) { text } else { s <- paste0(utils::head(text, -1), collapse = sep) s <- paste0(c(s, utils::tail(text, 1)), collapse = last) s } } #' @rdname format_text #' @export text_paste <- function(text, text2 = NULL, sep = ", ", ...) { if (!is.null(text2)) { paste0(text, ifelse(text == "" | text2 == "", "", sep), text2) } } #' @rdname format_text #' @export text_remove <- function(text, pattern = "", ...) { gsub(pattern, "", text, ...) } #' @rdname format_text #' @export text_wrap <- function(text, width = NULL, ...) { if (is.null(width)) { return(text) } text <- strsplit(text, "\n", perl = TRUE) text <- unlist(text) if (width == "auto") { width <- 0.9 * getOption("width") } wrapped <- "" for (s in text) { if (nchar(s) > width) { leading_spaces <- nchar(s) - nchar(trimws(s)) s <- strwrap(s, width = width) s <- paste0(s, collapse = "\n") s <- paste0(paste0(rep(" ", leading_spaces), collapse = ""), s) } wrapped <- paste0(wrapped, s, "\n") } wrapped } datawizard/R/utils_strings.R0000644000176200001440000000077514174253064015660 0ustar liggesusersstring_starts_with <- function(pattern, x) { pattern <- paste0("^\\Q", pattern, "\\E") grep(pattern, x, perl = TRUE) } string_contains <- function(pattern, x) { pattern <- paste0("\\Q", pattern, "\\E") grep(pattern, x, perl = TRUE) } string_ends_with <- function(pattern, x) { pattern <- paste0("\\Q", pattern, "\\E$") grep(pattern, x, perl = TRUE) } string_one_of <- function(pattern, x) { m <- unlist(sapply(pattern, grep, x = x, fixed = TRUE, useBytes = TRUE)) x[m] } datawizard/R/normalize.R0000644000176200001440000001123614141236076014737 0ustar liggesusers#' Normalize numeric variable to 0-1 range #' #' Performs a normalization of data, i.e., it scales variables in the range 0 - #' 1. This is a special case of [data_rescale()]. #' #' @inheritParams standardize.data.frame #' #' @param x A numeric vector, data frame, or matrix. See details. #' @param include_bounds Logical, if `TRUE`, return value may include 0 and 1. #' If `FALSE`, the return value is compressed, using Smithson and Verkuilen's #' (2006) formula `(x * (n - 1) + 0.5) / n`, to avoid zeros and ones in the #' normalized variables. This can be useful in case of beta-regression, where #' the response variable is not allowed to include zeros and ones. #' @param ... Arguments passed to or from other methods. #' #' @details #' - If `x` is a matrix, normalization is performed across all values (not #' column- or row-wise). For column-wise normalization, convert the matrix to a #' data.frame. #' - If `x` is a grouped data frame (`grouped_df`), normalization is performed #' separately for each group. #' #' @examples #' normalize(c(0, 1, 5, -5, -2)) #' normalize(c(0, 1, 5, -5, -2), include_bounds = FALSE) #' #' head(normalize(trees)) #' @references #' Smithson M, Verkuilen J (2006). A Better Lemon Squeezer? Maximum-Likelihood #' Regression with Beta-Distributed Dependent Variables. Psychological Methods, #' 11(1), 54–71. #' #' @family transform utilities #' #' @return A normalized object. #' #' @export normalize <- function(x, ...) { UseMethod("normalize") } #' @rdname normalize #' @export normalize.numeric <- function(x, include_bounds = TRUE, verbose = TRUE, ...) { # Warning if all NaNs if (all(is.na(x))) { return(x) } # Warning if only one value if (length(unique(x)) == 1) { if (is.null(names(x))) { name <- deparse(substitute(x)) } else { name <- names(x) } if (verbose) { warning(paste0("Variable `", name, "` contains only one unique value and will not be normalized.")) } return(x) } # Warning if logical vector if (length(unique(x)) == 2) { if (is.null(names(x))) { name <- deparse(substitute(x)) } else { name <- names(x) } if (verbose) { warning(paste0("Variable `", name, "` contains only two different values. Consider converting it to a factor.")) } } out <- as.vector((x - min(x, na.rm = TRUE)) / diff(range(x, na.rm = TRUE), na.rm = TRUE)) if (!include_bounds && (any(out == 0) | any(out == 1))) { out <- (out * (length(out) - 1) + 0.5) / length(out) } out } #' @export normalize.factor <- function(x, ...) { x } #' @rdname normalize #' @export normalize.grouped_df <- function(x, select = NULL, exclude = NULL, include_bounds = TRUE, verbose = TRUE, ...) { info <- attributes(x) # dplyr >= 0.8.0 returns attribute "indices" grps <- attr(x, "groups", exact = TRUE) # check for formula notation, convert to character vector if (inherits(select, "formula")) { select <- all.vars(select) } if (inherits(exclude, "formula")) { exclude <- all.vars(exclude) } # dplyr < 0.8.0? if (is.null(grps)) { grps <- attr(x, "indices", exact = TRUE) grps <- lapply(grps, function(x) x + 1) } else { grps <- grps[[".rows"]] } x <- as.data.frame(x) for (rows in grps) { x[rows, ] <- normalize( x[rows, ], select = select, exclude = exclude, include_bounds = include_bounds, verbose = verbose, ... ) } # set back class, so data frame still works with dplyr attributes(x) <- info x } #' @rdname normalize #' @export normalize.data.frame <- function(x, select = NULL, exclude = NULL, include_bounds = TRUE, verbose = TRUE, ...) { # check for formula notation, convert to character vector if (inherits(select, "formula")) { select <- all.vars(select) } if (inherits(exclude, "formula")) { exclude <- all.vars(exclude) } if (is.null(select)) { select <- names(x) } if (!is.null(exclude)) { select <- setdiff(select, exclude) } x[select] <- lapply(x[select], normalize, include_bounds = include_bounds, verbose = verbose) x } #' @export normalize.matrix <- function(x, ...) { matrix(normalize(as.numeric(x), ...), nrow = nrow(x)) } datawizard/R/visualisation_recipe.R0000644000176200001440000000465214126335276017171 0ustar liggesusers#' Prepare objects for visualisation #' #' This function prepares objects for visualisation by returning a list of #' layers with data and geoms that can be easily plotted using for instance #' `ggplot2`. See the documentation for your object's class: #' \itemize{ #' \item{[modelbased][modelbased::visualisation_recipe.estimate_predicted] (`estimate_means`, `estimate_contrasts`, `estimate_slopes`, `estimate_predicted`, `estimate_grouplevel`)} #' } #' #' @param x An `easystats` object. #' @param ... Other arguments passed to other functions. #' #' @export visualisation_recipe <- function(x, ...) { UseMethod("visualisation_recipe") } #' @export print.visualisation_recipe <- function(x, ...) { for (i in 1:length(x)) { l <- x[[paste0("l", i)]] insight::print_color(paste0("Layer ", i, "\n--------\n"), "blue") insight::print_color(paste0("Geom type: ", ifelse(is.null(l$geom), "[NULL]", l$geom), "\n"), "yellow") elements <- names(l)[!sapply(l, is.null)] # Loop through all elements of list for (element in elements[elements != "geom"]) { # Print element name if (element == "aes") { cat("aes_string(\n") } else { cat(paste0(element, " = ")) } # Print element if (element == "data") { cat(paste0("[", paste0(dim(l$data), collapse = " x "), "]")) } else if (element == "aes") { for (aes in names(l$aes)) { if (!is.null(l$aes[[aes]])) { if (is.character(l$aes[[aes]])) { cat(paste0(" ", aes, " = '", l$aes[[aes]], "'\n")) } else { cat(paste0(" ", aes, " = ", l$aes[[aes]], "\n")) } } } cat(")") } else { if (is.character(l[[element]]) || is.numeric(l[[element]]) || is.factor(l[[element]])) { if (is.character(l[[element]])) { cat(paste0("'", l[[element]], "'")) } else { if (length(l[[element]]) == 1) { cat(l[[element]]) } else { cat(paste0("c(", paste0(l[[element]], collapse = ", "), ")")) } } } else { cat(paste0("class: ", class(l[[element]]), collapse = "/")) } } cat("\n") } cat("\n") } } #' @export plot.visualisation_recipe <- function(x, ...) { insight::check_if_installed("see") NextMethod() } datawizard/R/data_restoretype.R0000644000176200001440000000350714113652110016305 0ustar liggesusers#' Restore the type of columns according to a reference data frame #' #' @inheritParams data_to_long #' @inheritParams data_rename #' @param reference A reference data frame from which to find the correct #' column types. #' #' @return #' #' A dataframe with columns whose types have been restored based on the #' reference dataframe. #' #' @examples #' data <- data.frame( #' Sepal.Length = c("1", "3", "2"), #' Species = c("setosa", "versicolor", "setosa"), #' New = c("1", "3", "4") #' ) #' #' fixed <- data_restoretype(data, reference = iris) #' summary(fixed) #' @export data_restoretype <- function(data, reference = NULL, ...) { for (col in names(data)) { # No reference data (regular fixing) ---------------- if (is.null(reference)) { if (is.character(data[[col]])) { data[[col]] <- to_numeric(data[[col]]) } } else { if (is.factor(reference[[col]]) && !is.factor(data[[col]])) { # Restore factor levels data[[col]] <- factor(data[[col]], levels = levels(reference[[col]])) } if (is.numeric(reference[[col]]) && !is.numeric(data[[col]])) { data[[col]] <- to_numeric(as.character(data[[col]])) } if (is.character(reference[[col]]) && !is.character(data[[col]])) { data[[col]] <- as.character(data[[col]]) } } } data } #' Convert to Numeric (if possible) #' #' Tries to convert vector to numeric if possible (if no warnings or errors). #' Otherwise, leaves it as is. #' #' @param x A vector to be converted. #' #' @examples #' to_numeric(c("1", "2")) #' to_numeric(c("1", "2", "A")) #' @return Numeric vector (if possible) #' @export to_numeric <- function(x) { tryCatch(as.numeric(as.character(x)), error = function(e) x, warning = function(w) x ) } datawizard/R/adjust.R0000644000176200001440000001671114113652110014222 0ustar liggesusers#' Adjust data for the effect of other variable(s) #' #' This function can be used to adjust the data for the effect of other #' variables present in the dataset. It is based on an underlying fitting of #' regressions models, allowing for quite some flexibility, such as including #' factors as random effects in mixed models (multilevel partialization), #' continuous variables as smooth terms in general additive models (non-linear #' partialization) and/or fitting these models under a Bayesian framework. The #' values returned by this function are the residuals of the regression models. #' Note that a regular correlation between two "adjusted" variables is #' equivalent to the partial correlation between them. #' #' @param data A dataframe. #' @param effect Character vector of column names to be adjusted for (regressed #' out). If `NULL` (the default), all variables will be selected. #' @inheritParams standardize #' @param multilevel If `TRUE`, the factors are included as random factors. #' Else, if `FALSE` (default), they are included as fixed effects in the #' simple regression model. #' @param additive If `TRUE`, continuous variables as included as smooth terms #' in additive models. The goal is to regress-out potential non-linear #' effects. #' @param bayesian If `TRUE`, the models are fitted under the Bayesian framework #' using `rstanarm`. #' @param keep_intercept If `FALSE` (default), the intercept of the model is #' re-added. This avoids the centering around 0 that happens by default #' when regressing out another variable (see the examples below for a #' visual representation of this). #' #' @return A data frame comparable to `data`, with adjusted variables. #' #' @examples #' adjusted_all <- adjust(attitude) #' head(adjusted_all) #' adjusted_one <- adjust(attitude, effect = "complaints", select = "rating") #' head(adjusted_one) #' \donttest{ #' adjust(attitude, effect = "complaints", select = "rating", bayesian = TRUE) #' adjust(attitude, effect = "complaints", select = "rating", additive = TRUE) #' attitude$complaints_LMH <- cut(attitude$complaints, 3) #' adjust(attitude, effect = "complaints_LMH", select = "rating", multilevel = TRUE) #' } #' #' if (require("MASS") && require("bayestestR")) { #' # Generate data #' data <- simulate_correlation(n = 100, r = 0.7) #' data$V2 <- (5 * data$V2) + 20 # Add intercept #' #' # Adjust #' adjusted <- adjust(data, effect = "V1", select = "V2") #' adjusted_icpt <- adjust(data, effect = "V1", select = "V2", keep_intercept = TRUE) #' #' # Visualize #' plot(data$V1, data$V2, #' pch = 19, col = "blue", #' ylim = c(min(adjusted$V2), max(data$V2)), #' main = "Original (blue), adjusted (green), and adjusted - intercept kept (red) data" #' ) #' abline(lm(V2 ~ V1, data = data), col = "blue") #' points(adjusted$V1, adjusted$V2, pch = 19, col = "green") #' abline(lm(V2 ~ V1, data = adjusted), col = "green") #' points(adjusted_icpt$V1, adjusted_icpt$V2, pch = 19, col = "red") #' abline(lm(V2 ~ V1, data = adjusted_icpt), col = "red") #' } #' @export adjust <- function(data, effect = NULL, select = NULL, exclude = NULL, multilevel = FALSE, additive = FALSE, bayesian = FALSE, keep_intercept = FALSE) { if (!all(colnames(data) == make.names(colnames(data), unique = TRUE))) { warning("Bad column names (e.g., with spaces) have been detected which might create issues in many functions.\n", "Please fix it (you can run `names(mydata) <- make.names(names(mydata))` for a quick fix).", call. = FALSE ) } # check for formula notation, convert to character vector if (inherits(effect, "formula")) { effect <- all.vars(effect) } if (inherits(select, "formula")) { select <- all.vars(select) } if (inherits(exclude, "formula")) { exclude <- all.vars(exclude) } # Find predictors if (is.null(effect)) { effect <- names(data) } # Factors formula_random <- NULL facs <- names(data[effect][!sapply(data[effect], is.numeric)]) if (length(facs) >= 1) { if (multilevel) { if (additive) { formula_random <- stats::as.formula(paste("~", paste(paste0("(1|", facs, ")"), collapse = " + "))) } else { formula_random <- paste("+", paste(paste0("(1|", facs, ")"), collapse = " + ")) } effect <- effect[!effect %in% facs] } } nums <- sapply(data, is.numeric) # Find outcomes if (is.null(select)) { select <- names(data[nums]) } if (!is.null(exclude)) { select <- select[!select %in% c(exclude)] } # Fit models out <- data.frame(.ID = 1:nrow(data)) for (var in select) { predictors <- effect[effect != var] if (additive) { predictors_num <- names(data[predictors][sapply(data[predictors], is.numeric)]) predictors[predictors == predictors_num] <- paste0("s(", predictors_num, ")") } formula_predictors <- paste(c("1", predictors), collapse = " + ") formula <- paste(var, "~", formula_predictors) x <- .model_adjust_for( data = data[unique(c(var, effect, facs))], formula, multilevel = multilevel, additive = additive, bayesian = bayesian, formula_random = formula_random, keep_intercept = keep_intercept ) out[var] <- x } out[names(data)[!names(data) %in% names(out)]] <- data[names(data)[!names(data) %in% names(out)]] out[names(data)] } #' @rdname adjust #' @export data_adjust <- adjust #' @keywords internal .model_adjust_for <- function(data, formula, multilevel = FALSE, additive = FALSE, bayesian = FALSE, formula_random = NULL, keep_intercept = FALSE) { # Additive ----------------------- if (additive) { # Bayesian if (bayesian) { insight::check_if_installed("rstanarm") model <- rstanarm::stan_gamm4(stats::as.formula(formula), random = formula_random, data = data, refresh = 0) # Frequentist } else { insight::check_if_installed("gamm4") model <- gamm4::gamm4(stats::as.formula(formula), random = formula_random, data = data) } # Linear ------------------------- } else { # Bayesian if (bayesian) { insight::check_if_installed("rstanarm") if (multilevel) { model <- rstanarm::stan_lmer(paste(formula, formula_random), data = data, refresh = 0) } else { model <- rstanarm::stan_glm(formula, data = data, refresh = 0) } # Frequentist } else { if (multilevel) { insight::check_if_installed("lme4") model <- lme4::lmer(paste(formula, formula_random), data = data) } else { model <- stats::lm(formula, data = data) } } } adjusted <- insight::get_residuals(model) # Re-add intercept if need be if (keep_intercept) { intercept <- insight::get_intercept(model) if (length(intercept) > 1) intercept <- stats::median(intercept) # For bayesian model if (is.na(intercept)) intercept <- 0 adjusted <- adjusted + intercept } # Deal with missing data out <- rep(NA, nrow(data)) out[stats::complete.cases(data)] <- as.vector(adjusted) out } datawizard/R/data_match.R0000644000176200001440000000160414113652110015010 0ustar liggesusers#' Find row indices of a data frame matching a specific condition #' #' Find row indices of a data frame that match a specific condition. #' #' @param x A data frame. #' @param to A data frame matching the specified conditions. #' @inheritParams data_rename #' #' @return #' #' A dataframe containing rows that match the specified configuration. #' #' @examples #' matching_rows <- data_match(mtcars, data.frame(vs = 0, am = 1)) #' mtcars[matching_rows, ] #' #' matching_rows <- data_match(mtcars, data.frame(vs = 0, am = c(0, 1))) #' mtcars[matching_rows, ] #' @export data_match <- function(x, to, ...) { # Input checks if (!is.data.frame(to)) to <- as.data.frame(to) # Find matching rows idx <- 1:nrow(x) for (col in names(to)) { if (col %in% names(x)) { idx <- idx[x[[col]][idx] %in% to[[col]]] } } to_numeric(row.names(x)[idx]) } datawizard/R/unstandardize.R0000644000176200001440000001257614174253064015624 0ustar liggesusers#' @rdname standardize #' @export unstandardize <- function(x, ...) { UseMethod("unstandardize") } #' @rdname standardize #' @export unstandardise <- unstandardize #' @rdname standardize #' @export unstandardize.numeric <- function(x, center = NULL, scale = NULL, reference = NULL, robust = FALSE, two_sd = FALSE, ...) { if (!is.null(reference)) { if (robust) { center <- stats::median(reference, na.rm = TRUE) scale <- stats::mad(reference, na.rm = TRUE) } else { center <- mean(reference, na.rm = TRUE) scale <- stats::sd(reference, na.rm = TRUE) } } else if (is.null(center) || is.null(scale)) { if (all(c("center", "scale") %in% names(attributes(x)))) { center <- attr(x, "center", exact = TRUE) scale <- attr(x, "scale", exact = TRUE) attr(x, "scale") <- attr(x, "center") <- NULL } else if (all(c("scaled:center", "scaled:scale") %in% names(attributes(x)))) { center <- attr(x, "scaled:center", exact = TRUE) scale <- attr(x, "scaled:scale", exact = TRUE) attr(x, "scaled:scale") <- attr(x, "scaled:center") <- NULL } else { stop("You must provide the arguments `center`, `scale` or `reference`.") } } if (two_sd) { scale <- 2 * scale } x * scale + center } #' @rdname standardize #' @export unstandardize.data.frame <- function(x, center = NULL, scale = NULL, reference = NULL, robust = FALSE, two_sd = FALSE, select = NULL, exclude = NULL, ...) { if (!is.null(reference)) { i <- sapply(x, is.numeric) i <- i[i] reference <- reference[names(i)] if (robust) { center <- sapply(reference, stats::median, na.rm = TRUE) scale <- sapply(reference, stats::mad, na.rm = TRUE) } else { center <- sapply(reference, mean, na.rm = TRUE) scale <- sapply(reference, stats::sd, na.rm = TRUE) } } else if (is.null(center) || is.null(scale)) { i <- sapply(x, function(k) { is.numeric(k) && !is.null(a <- attributes(k)) && all(c("scale", "center") %in% names(a)) }) if (any(i)) { i <- i[i] center <- sapply(x[names(i)], attr, "center", exact = TRUE) scale <- sapply(x[names(i)], attr, "scale", exact = TRUE) } else if (all(c("center", "scale") %in% names(attributes(x)))) { center <- attr(x, "center", exact = TRUE) scale <- attr(x, "scale", exact = TRUE) attr(x, "center") <- attr(x, "scale") <- NULL i <- names(x) %in% names(scale) i <- i[i] } else { stop("You must provide the arguments `center`, `scale` or `reference`.") } } else { if (is.null(names(center))) { i <- sapply(x, is.numeric) names(center) <- names(scale) <- names(x[i]) } i <- names(x) %in% names(center) names(i) <- names(x) i <- i[i] } if (two_sd) { scale <- 2 * scale } # Select and deselect cols <- names(i) if (!is.null(select)) cols <- cols[cols %in% select] if (!is.null(exclude)) cols <- cols[!cols %in% exclude] # Apply unstandardization to cols for (col in cols) { x[col] <- unstandardize(x[[col]], center = center[[col]], scale = scale[[col]]) } x } #' @export unstandardize.factor <- function(x, ...) { x } #' @export unstandardize.character <- function(x, ...) { x } #' @export unstandardize.grouped_df <- function(x, center = NULL, scale = NULL, reference = NULL, robust = FALSE, two_sd = FALSE, ...) { stop("Cannot (yet) unstandardize a grouped_df.") } #' @export unstandardize.matrix <- function(x, center = NULL, scale = NULL, reference = NULL, robust = FALSE, two_sd = FALSE, ...) { if (all(c("scaled:center", "scaled:scale") %in% names(attributes(x)))) { center <- attr(x, "scaled:center", exact = TRUE) scale <- attr(x, "scaled:scale", exact = TRUE) attr(x, "scaled:center") <- attr(x, "scaled:scale") <- NULL for (col in seq_len(ncol(x))) { x[, col] <- unstandardize.numeric(x[, col], center = center[col], scale = scale[col]) } } else { scales <- attr(x, "scale") centers <- attr(x, "center") xl <- lapply(seq_len(ncol(x)), function(i) { tmp <- x[, i] attributes(tmp) <- list(center = centers[i], scale = scales[i]) tmp }) xz <- lapply(xl, datawizard::unstandardize, ...) x_out <- do.call(cbind, xz) dimnames(x_out) <- dimnames(x) x <- x_out } x } #' @export unstandardize.array <- unstandardize.matrix datawizard/R/utils_data.R0000644000176200001440000000055214174263210015063 0ustar liggesusers#' help-functions #' @keywords internal #' @noRd .data_frame <- function(...) { x <- data.frame(..., stringsAsFactors = FALSE) rownames(x) <- NULL x } rownames_as_column <- function(x, var = "rowname") { rn <- data.frame(rn = rownames(x), stringsAsFactors = FALSE) x <- cbind(rn, x) colnames(x)[1] <- var rownames(x) <- NULL x } datawizard/R/skewness_kurtosis.R0000644000176200001440000003111214113652110016525 0ustar liggesusers#' Compute Skewness and (Excess) Kurtosis #' #' @param x A numeric vector or data.frame. #' @param na.rm Remove missing values. #' @param type Type of algorithm for computing skewness. May be one of `1` #' (or `"1"`, `"I"` or `"classic"`), `2` (or `"2"`, #' `"II"` or `"SPSS"` or `"SAS"`) or `3` (or `"3"`, #' `"III"` or `"Minitab"`). See 'Details'. #' @param iterations The number of bootstrap replicates for computing standard #' errors. If `NULL` (default), parametric standard errors are computed. #' @param test Logical, if `TRUE`, tests if skewness or kurtosis is #' significantly different from zero. #' @param digits Number of decimal places. #' @param object An object returned by `skewness()` or `kurtosis()`. #' @param verbose Toggle warnings and messages. #' @param ... Arguments passed to or from other methods. #' #' @details #' #' \subsection{Skewness}{ #' Symmetric distributions have a `skewness` around zero, while #' a negative skewness values indicates a "left-skewed" distribution, and a #' positive skewness values indicates a "right-skewed" distribution. Examples #' for the relationship of skewness and distributions are: #' \itemize{ #' \item Normal distribution (and other symmetric distribution) has a skewness #' of 0 #' \item Half-normal distribution has a skewness just below 1 #' \item Exponential distribution has a skewness of 2 #' \item Lognormal distribution can have a skewness of any positive value, #' depending on its parameters #' } #' (\cite{https://en.wikipedia.org/wiki/Skewness}) #' } #' \subsection{Types of Skewness}{ #' `skewness()` supports three different methods for estimating skewness, #' as discussed in \cite{Joanes and Gill (1988)}: #' \itemize{ #' \item Type "1" is the "classical" method, which is `g1 = (sum((x - #' mean(x))^3) / n) / (sum((x - mean(x))^2) / n)^1.5` #' #' \item Type "2" first calculates the type-1 skewness, then adjusts the result: #' `G1 = g1 * sqrt(n * (n - 1)) / (n - 2)`. This is what SAS and SPSS #' usually return #' #' \item Type "3" first calculates the type-1 skewness, then adjusts the result: #' `b1 = g1 * ((1 - 1 / n))^1.5`. This is what Minitab usually returns. #' } #' } #' \subsection{Kurtosis}{ #' The `kurtosis` is a measure of "tailedness" of a distribution. A #' distribution with a kurtosis values of about zero is called "mesokurtic". A #' kurtosis value larger than zero indicates a "leptokurtic" distribution with #' *fatter* tails. A kurtosis value below zero indicates a "platykurtic" #' distribution with *thinner* tails #' (\cite{https://en.wikipedia.org/wiki/Kurtosis}). #' } #' \subsection{Types of Kurtosis}{ #' `kurtosis()` supports three different methods for estimating kurtosis, #' as discussed in \cite{Joanes and Gill (1988)}: #' \itemize{ #' \item Type "1" is the "classical" method, which is `g2 = n * sum((x - #' mean(x))^4) / (sum((x - mean(x))^2)^2) - 3`. #' #' \item Type "2" first calculates the type-1 kurtosis, than adjusts the result: #' `G2 = ((n + 1) * g2 + 6) * (n - 1)/((n - 2) * (n - 3))`. This is what #' SAS and SPSS usually return #' #' \item Type "3" first calculates the type-1 kurtosis, than adjusts the result: #' `b2 = (g2 + 3) * (1 - 1 / n)^2 - 3`. This is what Minitab usually #' returns. #' } #' } #' \subsection{Standard Errors}{ #' It is recommended to compute empirical (bootstrapped) standard errors (via #' the `iterations` argument) than relying on analytic standard errors #' (\cite{Wright & Herrington, 2011}). #' } #' #' @references #' - D. N. Joanes and C. A. Gill (1998). Comparing measures of sample #' skewness and kurtosis. The Statistician, 47, 183–189. #' #' - Wright, D. B., & Herrington, J. A. (2011). Problematic standard #' errors and confidence intervals for skewness and kurtosis. Behavior #' research methods, 43(1), 8-17. #' #' @return Values of skewness or kurtosis. #' #' @examples #' skewness(rnorm(1000)) #' kurtosis(rnorm(1000)) #' @export skewness <- function(x, na.rm = TRUE, type = "2", iterations = NULL, verbose = TRUE, ...) { UseMethod("skewness") } # skewness ----------------------------------------- #' @export skewness.numeric <- function(x, na.rm = TRUE, type = "2", iterations = NULL, verbose = TRUE, ...) { if (na.rm) x <- x[!is.na(x)] n <- length(x) out <- (sum((x - mean(x))^3) / n) / (sum((x - mean(x))^2) / n)^1.5 type <- .check_skewness_type(type) if (type == "2" && n < 3) { if (verbose) { warning(insight::format_message("Need at least 3 complete observations for type-2-skewness. Using 'type=\"1\"' now."), call. = FALSE) } type <- "1" } .skewness <- switch(type, "1" = out, "2" = out * sqrt(n * (n - 1)) / (n - 2), "3" = out * ((1 - 1 / n))^1.5 ) out_se <- sqrt((6 * (n - 2)) / ((n + 1) * (n + 3))) .skewness_se <- switch(type, "1" = out_se, "2" = out_se * ((sqrt(n * (n - 1))) / (n - 2)), "3" = out_se * (((n - 1) / n)^1.5), ) if (!is.null(iterations)) { if (!requireNamespace("boot", quietly = TRUE)) { warning("Package 'boot' needed for bootstrapping SEs.", call. = FALSE) } else { results <- boot::boot( data = x, statistic = .boot_skewness, R = iterations, na.rm = na.rm, type = type ) out_se <- stats::sd(results$t, na.rm = TRUE) } } .skewness <- data.frame( Skewness = .skewness, SE = out_se ) class(.skewness) <- unique(c("parameters_skewness", class(.skewness))) .skewness } #' @export skewness.matrix <- function(x, na.rm = TRUE, type = "2", iterations = NULL, ...) { .skewness <- apply( x, 2, skewness, na.rm = na.rm, type = type, iterations = iterations ) .names <- colnames(x) if (length(.names) == 0) { .names <- paste0("X", seq_len(ncol(x))) } .skewness <- cbind(Parameter = .names, do.call(rbind, .skewness)) class(.skewness) <- unique(c("parameters_skewness", class(.skewness))) .skewness } #' @export skewness.data.frame <- function(x, na.rm = TRUE, type = "2", iterations = NULL, ...) { .skewness <- lapply(x, skewness, na.rm = na.rm, type = type, iterations = iterations ) .skewness <- cbind(Parameter = names(.skewness), do.call(rbind, .skewness)) class(.skewness) <- unique(c("parameters_skewness", class(.skewness))) .skewness } #' @export skewness.default <- function(x, na.rm = TRUE, type = "2", iterations = NULL, ...) { skewness( .factor_to_numeric(x), na.rm = na.rm, type = type, iterations = iterations ) } # Kurtosis ----------------------------------- #' @rdname skewness #' @export kurtosis <- function(x, na.rm = TRUE, type = "2", iterations = NULL, verbose = TRUE, ...) { UseMethod("kurtosis") } #' @export kurtosis.numeric <- function(x, na.rm = TRUE, type = "2", iterations = NULL, verbose = TRUE, ...) { if (na.rm) x <- x[!is.na(x)] n <- length(x) out <- n * sum((x - mean(x))^4) / (sum((x - mean(x))^2)^2) type <- .check_skewness_type(type) if (type == "2" && n < 4) { if (verbose) { warning(insight::format_message("Need at least 4 complete observations for type-2-kurtosis Using 'type=\"1\"' now."), call. = FALSE) } type <- "1" } .kurtosis <- switch(type, "1" = out - 3, "2" = ((n + 1) * (out - 3) + 6) * (n - 1) / ((n - 2) * (n - 3)), "3" = out * (1 - 1 / n)^2 - 3 ) out_se <- sqrt((24 * n * (n - 2) * (n - 3)) / (((n + 1)^2) * (n + 3) * (n + 5))) .kurtosis_se <- switch(type, "1" = out_se, "2" = out_se * (((n - 1) * (n + 1)) / ((n - 2) * (n - 3))), "3" = out_se * ((n - 1) / n)^2 ) if (!is.null(iterations)) { insight::check_if_installed("boot") results <- boot::boot( data = x, statistic = .boot_kurtosis, R = iterations, na.rm = na.rm, type = type ) out_se <- stats::sd(results$t, na.rm = TRUE) } .kurtosis <- data.frame( Kurtosis = .kurtosis, SE = out_se ) class(.kurtosis) <- unique(c("parameters_kurtosis", class(.kurtosis))) .kurtosis } #' @export kurtosis.matrix <- function(x, na.rm = TRUE, type = "2", iterations = NULL, ...) { .kurtosis <- apply( x, 2, kurtosis, na.rm = na.rm, type = type, iterations = iterations ) .names <- colnames(x) if (length(.names) == 0) { .names <- paste0("X", seq_len(ncol(x))) } .kurtosis <- cbind(Parameter = .names, do.call(rbind, .kurtosis)) class(.kurtosis) <- unique(c("parameters_kurtosis", class(.kurtosis))) .kurtosis } #' @export kurtosis.data.frame <- function(x, na.rm = TRUE, type = "2", iterations = NULL, ...) { .kurtosis <- lapply(x, kurtosis, na.rm = na.rm, type = type, iterations = iterations ) .kurtosis <- cbind(Parameter = names(.kurtosis), do.call(rbind, .kurtosis)) class(.kurtosis) <- unique(c("parameters_kurtosis", class(.kurtosis))) .kurtosis } #' @export kurtosis.default <- function(x, na.rm = TRUE, type = "2", iterations = NULL, ...) { kurtosis( .factor_to_numeric(x), na.rm = na.rm, type = type, iterations = iterations ) } # methods ----------------------------------------- #' @export as.numeric.parameters_kurtosis <- function(x, ...) { x$Kurtosis } #' @export as.numeric.parameters_skewness <- function(x, ...) { x$Skewness } #' @export as.double.parameters_kurtosis <- as.numeric.parameters_kurtosis #' @export as.double.parameters_skewness <- as.numeric.parameters_skewness #' @rdname skewness #' @export print.parameters_kurtosis <- function(x, digits = 3, test = FALSE, ...) { out <- summary(x, test = test) cat(insight::export_table(out, digits = digits)) invisible(x) } #' @rdname skewness #' @export print.parameters_skewness <- print.parameters_kurtosis #' @rdname skewness #' @export summary.parameters_skewness <- function(object, test = FALSE, ...) { if (test) { object$z <- object$Skewness / object$SE object$p <- 2 * (1 - stats::pnorm(abs(object$z))) } object } #' @rdname skewness #' @export summary.parameters_kurtosis <- function(object, test = FALSE, ...) { if (test) { object$z <- object$Kurtosis / object$SE object$p <- 2 * (1 - stats::pnorm(abs(object$z))) } object } # helper ------------------------------------------ .check_skewness_type <- function(type) { # convenience if (is.numeric(type)) type <- as.character(type) if (is.null(type) || is.na(type) || !(type %in% c("1", "2", "3", "I", "II", "III", "classic", "SPSS", "SAS", "Minitab"))) { warning(insight::format_message("'type' must be a character value from \"1\" to \"3\". Using 'type=\"2\"' now."), call. = FALSE) type <- "2" } switch(type, "1" = , "I" = , "classic" = "1", "2" = , "II" = , "SPSS" = , "SAS" = "2", "3" = , "III" = , "Minitab" = "3" ) } # bootstrapping ----------------------------------- .boot_skewness <- function(data, indices, na.rm, type) { datawizard::skewness(data[indices], na.rm = na.rm, type = type, iterations = NULL )$Skewness } .boot_kurtosis <- function(data, indices, na.rm, type) { datawizard::kurtosis(data[indices], na.rm = na.rm, type = type, iterations = NULL )$Kurtosis } datawizard/R/data_remove.R0000644000176200001440000000047614113652110015217 0ustar liggesusers#' @rdname data_rename #' @examples #' # Remove columns #' head(data_remove(iris, "Sepal.Length")) #' @export data_remove <- function(data, pattern, ...) { new <- data[!names(data) %in% pattern] attributes(new) <- utils::modifyList(attributes(data), attributes(new)) class(new) <- class(data) new } datawizard/R/standardize.R0000644000176200001440000002671014174253064015254 0ustar liggesusers#' Standardization (Z-scoring) #' #' Performs a standardization of data (z-scoring), i.e., centering and scaling, #' so that the data is expressed in terms of standard deviation (i.e., mean = 0, #' SD = 1) or Median Absolute Deviance (median = 0, MAD = 1). When applied to a #' statistical model, this function extracts the dataset, standardizes it, and #' refits the model with this standardized version of the dataset. The #' [normalize()] function can also be used to scale all numeric variables within #' the 0 - 1 range. #' \cr\cr #' For model standardization, see [effectsize::standardize.default()] #' #' @param x A data frame, a vector or a statistical model (for `unstandardize()` #' cannot be a model). #' @param robust Logical, if `TRUE`, centering is done by subtracting the #' median from the variables and dividing it by the median absolute deviation #' (MAD). If `FALSE`, variables are standardized by subtracting the #' mean and dividing it by the standard deviation (SD). #' @param two_sd If `TRUE`, the variables are scaled by two times the deviation #' (SD or MAD depending on `robust`). This method can be useful to obtain #' model coefficients of continuous parameters comparable to coefficients #' related to binary predictors, when applied to **the predictors** (not the #' outcome) (Gelman, 2008). #' @param weights Can be `NULL` (for no weighting), or: #' - For model: if `TRUE` (default), a weighted-standardization is carried out. #' - For `data.frame`s: a numeric vector of weights, or a character of the #' name of a column in the `data.frame` that contains the weights. #' - For numeric vectors: a numeric vector of weights. #' @param verbose Toggle warnings and messages on or off. #' @param select Character vector of column names. If `NULL` (the default), all #' variables will be selected. #' @param exclude Character vector of column names to be excluded from selection. #' @param remove_na How should missing values (`NA`) be treated: if `"none"` #' (default): each column's standardization is done separately, ignoring #' `NA`s. Else, rows with `NA` in the columns selected with `select` / #' `exclude` (`"selected"`) or in all columns (`"all"`) are dropped before #' standardization, and the resulting data frame does not include these cases. #' @param force Logical, if `TRUE`, forces standardization of factors and dates #' as well. Factors are converted to numerical values, with the lowest level #' being the value `1` (unless the factor has numeric levels, which are #' converted to the corresponding numeric value). #' @param append Logical or string. If `TRUE`, standardized variables get new #' column names (with the suffix `"_z"`) and are appended (column bind) to `x`, #' thus returning both the original and the standardized variables. If `FALSE`, #' original variables in `x` will be overwritten by their standardized versions. #' If a character value, standardized variables are appended with new column #' names (using the defined suffix) to the original data frame. #' @param reference A data frame or variable from which the centrality and #' deviation will be computed instead of from the input variable. Useful for #' standardizing a subset or new data according to another data frame. #' @param center,scale #' * For `standardize()`: \cr #' Numeric values, which can be used as alternative to `reference` to define #' a reference centrality and deviation. If `scale` and `center` are of #' length 1, they will be recycled to match the length of selected variables #' for standardization. Else, `center` and `scale` must be of same length as #' the number of selected variables. Values in `center` and `scale` will be #' matched to selected variables in the provided order, unless a named vector #' is given. In this case, names are matched against the names of the selected #' variables. #' #' * For `unstandardize()`: \cr #' `center` and `scale` correspond to the center (the mean / median) and the scale (SD / MAD) of #' the original non-standardized data (for data frames, should be named, or #' have column order correspond to the numeric column). However, one can also #' directly provide the original data through `reference`, from which the #' center and the scale will be computed (according to `robust` and `two_sd`). #' Alternatively, if the input contains the attributes `center` and `scale` #' (as does the output of `standardize()`), it will take it from there if the #' rest of the arguments are absent. #' @param ... Arguments passed to or from other methods. #' #' @return The standardized object (either a standardize data frame or a #' statistical model fitted on standardized data). #' #' @note When `x` is a vector or a data frame with `remove_na = "none")`, #' missing values are preserved, so the return value has the same length / #' number of rows as the original input. #' #' @seealso See [center()] for grand-mean centering of variables. #' #' @family transform utilities #' @family standardize #' #' @examples #' d <- iris[1:4, ] #' #' # vectors #' standardise(d$Petal.Length) #' #' # Data frames #' # overwrite #' standardise(d, select = c("Sepal.Length", "Sepal.Width")) #' #' # append #' standardise(d, select = c("Sepal.Length", "Sepal.Width"), append = TRUE) #' #' # append, suffix #' standardise(d, select = c("Sepal.Length", "Sepal.Width"), append = "_std") #' #' # standardizing with reference center and scale #' d <- data.frame( #' a = c(-2, -1, 0, 1, 2), #' b = c(3, 4, 5, 6, 7) #' ) #' #' # default standardization, based on mean and sd of each variable #' standardize(d) # means are 0 and 5, sd ~ 1.581139 #' #' # standardization, based on mean and sd set to the same values #' standardize(d, center = c(0, 5), scale = c(1.581, 1.581)) #' #' # standardization, mean and sd for each variable newly defined #' standardize(d, center = c(3, 4), scale = c(2, 4)) #' #' # standardization, taking same mean and sd for each variable #' standardize(d, center = 1, scale = 3) #' @export standardize <- function(x, ...) { UseMethod("standardize") } #' @rdname standardize #' @export standardise <- standardize #' @rdname standardize #' @export standardize.numeric <- function(x, robust = FALSE, two_sd = FALSE, weights = NULL, verbose = TRUE, reference = NULL, center = NULL, scale = NULL, ...) { args <- .process_std_center(x, weights, robust, verbose, reference, center, scale) # Perform standardization if (is.null(args)) { # all NA? return(x) } else if (is.null(args$check)) { vals <- rep(0, length(args$vals)) # If only unique value } else { if (two_sd) { vals <- as.vector((args$vals - args$center) / (2 * args$scale)) } else { vals <- as.vector((args$vals - args$center) / args$scale) } } scaled_x <- rep(NA, length(args$valid_x)) scaled_x[args$valid_x] <- vals attr(scaled_x, "center") <- args$center attr(scaled_x, "scale") <- args$scale attr(scaled_x, "robust") <- robust scaled_x } #' @export standardize.double <- standardize.numeric #' @export standardize.integer <- standardize.numeric #' @export standardize.matrix <- function(x, ...) { xl <- lapply(seq_len(ncol(x)), function(i) x[, i]) xz <- lapply(xl, datawizard::standardize, ...) x_out <- do.call(cbind, xz) dimnames(x_out) <- dimnames(x) attr(x_out, "center") <- sapply(xz, attr, "center") attr(x_out, "scale") <- sapply(xz, attr, "scale") attr(x_out, "robust") <- sapply(xz, attr, "robust")[1] x_out } #' @rdname standardize #' @export standardize.factor <- function(x, robust = FALSE, two_sd = FALSE, weights = NULL, verbose = TRUE, force = FALSE, ...) { if (!force) { return(x) } standardize(.factor_to_numeric(x), robust = robust, two_sd = two_sd, weights = weights, verbose = verbose, ... ) } #' @export standardize.character <- standardize.factor #' @export standardize.logical <- standardize.factor #' @export standardize.Date <- standardize.factor #' @export standardize.AsIs <- standardize.numeric # Data frames ------------------------------------------------------------- #' @rdname standardize #' @export standardize.data.frame <- function(x, robust = FALSE, two_sd = FALSE, weights = NULL, verbose = TRUE, reference = NULL, select = NULL, exclude = NULL, remove_na = c("none", "selected", "all"), force = FALSE, append = FALSE, center = NULL, scale = NULL, ...) { # process arguments args <- .process_std_args(x, select, exclude, weights, append, append_suffix = "_z", force, remove_na, reference, .center = center, .scale = scale ) # set new values x <- args$x # Loop through variables and standardize it for (var in args$select) { x[[var]] <- standardize(x[[var]], robust = robust, two_sd = two_sd, weights = args$weights, reference = reference[[var]], center = args$center[var], scale = args$scale[var], verbose = FALSE, force = force ) } attr(x, "center") <- sapply(x[args$select], function(z) attributes(z)$center) attr(x, "scale") <- sapply(x[args$select], function(z) attributes(z)$scale) attr(x, "robust") <- robust x } #' @export standardize.grouped_df <- function(x, robust = FALSE, two_sd = FALSE, weights = NULL, verbose = TRUE, reference = NULL, select = NULL, exclude = NULL, remove_na = c("none", "selected", "all"), force = FALSE, append = FALSE, center = NULL, scale = NULL, ...) { args <- .process_grouped_df(x, select, exclude, append, append_suffix = "_z", reference, weights, force ) for (rows in args$grps) { args$x[rows, ] <- standardize( args$x[rows, ], select = args$select, exclude = NULL, robust = robust, two_sd = two_sd, weights = args$weights, remove_na = remove_na, verbose = verbose, force = force, append = FALSE, center = center, scale = scale, ... ) } # set back class, so data frame still works with dplyr attributes(args$x) <- args$info args$x } datawizard/R/utils_misc.R0000644000176200001440000000253714173221405015111 0ustar liggesusers#' Check if object is empty #' #' @param x A list, a vector, or a dataframe. #' #' @return A logical indicating whether the entered object is empty. #' #' @examples #' is_empty_object(c(1, 2, 3, NA)) #' is_empty_object(list(NULL, c(NA, NA))) #' is_empty_object(list(NULL, NA)) #' @export is_empty_object <- function(x) { flag_empty <- FALSE # precaution to take for a tibble if (inherits(x, c("tbl_df", "tbl"))) x <- as.data.frame(x) if (inherits(x, "data.frame")) { x <- as.data.frame(x) if (nrow(x) > 0 && ncol(x) > 0) { x <- x[, !sapply(x, function(i) all(is.na(i))), drop = FALSE] # this is much faster than apply(x, 1, FUN) flag_empty <- all(rowSums(is.na(x)) == ncol(x)) } else { flag_empty <- TRUE } # a list but not a data.frame } else if (is.list(x) && length(x) > 0) { x <- tryCatch( { compact_list(x) }, error = function(x) { x } ) } else if (!is.null(x)) { x <- stats::na.omit(x) } # need to check for is.null for R 3.4 isTRUE(flag_empty) || length(x) == 0 || is.null(x) || isTRUE(nrow(x) == 0) || isTRUE(ncol(x) == 0) } obj_has_name <- function(x, name) { name %in% names(x) } obj_has_rownames <- function(x) { !identical(as.character(1:nrow(x)), rownames(x)) } datawizard/R/winsorize.R0000644000176200001440000000376714113652110014770 0ustar liggesusers#' Winsorize data #' #' @details #' #' Winsorizing or winsorization is the transformation of statistics by limiting #' extreme values in the statistical data to reduce the effect of possibly #' spurious outliers. The distribution of many statistics can be heavily #' influenced by outliers. A typical strategy is to set all outliers (values #' beyond a certain threshold) to a specified percentile of the data; for #' example, a 90\% winsorization would see all data below the 5th percentile set #' to the 5th percentile, and data above the 95th percentile set to the 95th #' percentile. Winsorized estimators are usually more robust to outliers than #' their more standard forms. #' #' @return #' #' A dataframe with winsorized columns or a winsorized vector. #' #' @param data Dataframe or vector. #' @param threshold The amount of winsorization. #' @param verbose Toggle warnings. #' @param ... Currently not used. #' #' @examples #' winsorize(iris$Sepal.Length, threshold = 0.2) #' winsorize(iris, threshold = 0.2) #' @export winsorize <- function(data, ...) { UseMethod("winsorize") } #' @export winsorize.factor <- function(data, ...) { data } #' @export winsorize.character <- winsorize.factor #' @export winsorize.logical <- winsorize.factor #' @export winsorize.data.frame <- function(data, threshold = 0.2, verbose = TRUE, ...) { sapply(data, winsorize, threshold = threshold, verbose = verbose) } #' @rdname winsorize #' @export winsorize.numeric <- function(data, threshold = 0.2, verbose = TRUE, ...) { if (threshold < 0 || threshold > 1) { if (isTRUE(verbose)) { warning("'threshold' for winsorization must be a scalar between 0 and 1. Did not winsorize data.", call. = FALSE) } return(data) } y <- sort(data) n <- length(data) ibot <- floor(threshold * n) + 1 itop <- length(data) - ibot + 1 xbot <- y[ibot] xtop <- y[itop] winval <- ifelse(data <= xbot, xbot, data) ifelse(winval >= xtop, xtop, winval) } datawizard/R/utils_list.R0000644000176200001440000000114014173161423015121 0ustar liggesusers#' Remove empty elements from lists #' #' @param x A list or vector. #' @param remove_na Logical to decide if `NA`s should be removed. #' #' @examples #' compact_list(list(NULL, 1, c(NA, NA))) #' compact_list(c(1, NA, NA)) #' compact_list(c(1, NA, NA), remove_na = TRUE) #' @export compact_list <- function(x, remove_na = FALSE) { if (remove_na) { x[!sapply(x, function(i) length(i) == 0L || is.null(i) || (length(i) == 1L & is.na(i)) || any(i == "NULL", na.rm = TRUE))] } else { x[!sapply(x, function(i) length(i) == 0L || is.null(i) || any(i == "NULL", na.rm = TRUE))] } } datawizard/R/demean.R0000644000176200001440000004266014126335276014202 0ustar liggesusers#' Compute group-meaned and de-meaned variables #' #' `demean()` computes group- and de-meaned versions of a variable that can be #' used in regression analysis to model the between- and within-subject effect. #' `degroup()` is more generic in terms of the centering-operation. While #' `demean()` always uses mean-centering, `degroup()` can also use the mode or #' median for centering. #' #' @param x A data frame. #' @param select Character vector (or formula) with names of variables to select #' that should be group- and de-meaned. #' @param group Character vector (or formula) with the name of the variable that #' indicates the group- or cluster-ID. #' @param center Method for centering. `demean()` always performs #' mean-centering, while `degroup()` can use `center = "median"` or #' `center = "mode"` for median- or mode-centering, and also `"min"` #' or `"max"`. #' @param suffix_demean,suffix_groupmean String value, will be appended to the #' names of the group-meaned and de-meaned variables of `x`. By default, #' de-meaned variables will be suffixed with `"_within"` and #' grouped-meaned variables with `"_between"`. #' @param add_attributes Logical, if `TRUE`, the returned variables gain #' attributes to indicate the within- and between-effects. This is only #' relevant when printing `model_parameters()` - in such cases, the #' within- and between-effects are printed in separated blocks. #' @inheritParams center #' #' @return A data frame with the group-/de-meaned variables, which get the suffix #' `"_between"` (for the group-meaned variable) and `"_within"` (for #' the de-meaned variable) by default. #' #' @seealso If grand-mean centering (instead of centering within-clusters) #' is required, see [center()]. #' #' @details #' \subsection{Heterogeneity Bias}{ #' Mixed models include different levels of sources of variability, i.e. #' error terms at each level. When macro-indicators (or level-2 predictors, #' or higher-level units, or more general: *group-level predictors that #' **vary** within and across groups*) are included as fixed effects (i.e. #' treated as covariate at level-1), the variance that is left unaccounted for #' this covariate will be absorbed into the error terms of level-1 and level-2 #' (\cite{Bafumi and Gelman 2006; Gelman and Hill 2007, Chapter 12.6.}): #' \dQuote{Such covariates contain two parts: one that is specific to the #' higher-level entity that does not vary between occasions, and one that #' represents the difference between occasions, within higher-level entities} #' (\cite{Bell et al. 2015}). Hence, the error terms will be correlated with #' the covariate, which violates one of the assumptions of mixed models #' (iid, independent and identically distributed error terms). This bias is #' also called the *heterogeneity bias* (\cite{Bell et al. 2015}). To #' resolve this problem, level-2 predictors used as (level-1) covariates should #' be separated into their "within" and "between" effects by "de-meaning" and #' "group-meaning": After demeaning time-varying predictors, \dQuote{at the #' higher level, the mean term is no longer constrained by Level 1 effects, #' so it is free to account for all the higher-level variance associated #' with that variable} (\cite{Bell et al. 2015}). #' } #' \subsection{Panel data and correlating fixed and group effects}{ #' `demean()` is intended to create group- and de-meaned variables #' for panel regression models (fixed effects models), or for complex #' random-effect-within-between models (see \cite{Bell et al. 2015, 2018}), #' where group-effects (random effects) and fixed effects correlate (see #' \cite{Bafumi and Gelman 2006}). This can happen, for instance, when #' analyzing panel data, which can lead to *Heterogeneity Bias*. To #' control for correlating predictors and group effects, it is recommended #' to include the group-meaned and de-meaned version of *time-varying covariates* #' (and group-meaned version of *time-invariant covariates* that are on #' a higher level, e.g. level-2 predictors) in the model. By this, one can #' fit complex multilevel models for panel data, including time-varying #' predictors, time-invariant predictors and random effects. #' } #' \subsection{Why mixed models are preferred over fixed effects models}{ #' A mixed models approach can model the causes of endogeneity explicitly #' by including the (separated) within- and between-effects of time-varying #' fixed effects and including time-constant fixed effects. Furthermore, #' mixed models also include random effects, thus a mixed models approach #' is superior to classic fixed-effects models, which lack information of #' variation in the group-effects or between-subject effects. Furthermore, #' fixed effects regression cannot include random slopes, which means that #' fixed effects regressions are neglecting \dQuote{cross-cluster differences #' in the effects of lower-level controls (which) reduces the precision of #' estimated context effects, resulting in unnecessarily wide confidence #' intervals and low statistical power} (\cite{Heisig et al. 2017}). #' } #' \subsection{Terminology}{ #' The group-meaned variable is simply the mean of an independent variable #' within each group (or id-level or cluster) represented by `group`. #' It represents the cluster-mean of an independent variable. The regression #' coefficient of a group-meaned variable is the *between-subject-effect*. #' The de-meaned variable is then the centered version of the group-meaned #' variable. De-meaning is sometimes also called person-mean centering or #' centering within clusters. The regression coefficient of a de-meaned #' variable represents the *within-subject-effect*. #' } #' \subsection{De-meaning with continuous predictors}{ #' For continuous time-varying predictors, the recommendation is to include #' both their de-meaned and group-meaned versions as fixed effects, but not #' the raw (untransformed) time-varying predictors themselves. The de-meaned #' predictor should also be included as random effect (random slope). In #' regression models, the coefficient of the de-meaned predictors indicates #' the within-subject effect, while the coefficient of the group-meaned #' predictor indicates the between-subject effect. #' } #' \subsection{De-meaning with binary predictors}{ #' For binary time-varying predictors, there are two recommendations. First #' is to include the raw (untransformed) binary predictor as fixed effect #' only and the *de-meaned* variable as random effect (random slope). #' The alternative would be to add the de-meaned version(s) of binary #' time-varying covariates as additional fixed effect as well (instead of #' adding it as random slope). Centering time-varying binary variables to #' obtain within-effects (level 1) isn't necessary. They have a sensible #' interpretation when left in the typical 0/1 format (\cite{Hoffmann 2015, #' chapter 8-2.I}). `demean()` will thus coerce categorical time-varying #' predictors to numeric to compute the de- and group-meaned versions for #' these variables, where the raw (untransformed) binary predictor and the #' de-meaned version should be added to the model. #' } #' \subsection{De-meaning of factors with more than 2 levels}{ #' Factors with more than two levels are demeaned in two ways: first, these #' are also converted to numeric and de-meaned; second, dummy variables #' are created (binary, with 0/1 coding for each level) and these binary #' dummy-variables are de-meaned in the same way (as described above). #' Packages like \pkg{panelr} internally convert factors to dummies before #' demeaning, so this behaviour can be mimicked here. #' } #' \subsection{De-meaning interaction terms}{ There are multiple ways to deal #' with interaction terms of within- and between-effects. A classical approach #' is to simply use the product term of the de-meaned variables (i.e. #' introducing the de-meaned variables as interaction term in the model #' formula, e.g. `y ~ x_within * time_within`). This approach, however, #' might be subject to bias (see \cite{Giesselmann & Schmidt-Catran 2020}). #' \cr \cr #' Another option is to first calculate the product term and then apply the #' de-meaning to it. This approach produces an estimator \dQuote{that reflects #' unit-level differences of interacted variables whose moderators vary #' within units}, which is desirable if *no* within interaction of #' two time-dependent variables is required. \cr \cr #' A third option, when the interaction should result in a genuine within #' estimator, is to "double de-mean" the interaction terms #' (\cite{Giesselmann & Schmidt-Catran 2018}), however, this is currently #' not supported by `demean()`. If this is required, the `wmb()` #' function from the \pkg{panelr} package should be used. \cr \cr #' To de-mean interaction terms for within-between models, simply specify #' the term as interaction for the `select`-argument, e.g. #' `select = "a*b"` (see 'Examples'). #' } #' \subsection{Analysing panel data with mixed models using lme4}{ #' A description of how to translate the #' formulas described in *Bell et al. 2018* into R using `lmer()` #' from \pkg{lme4} can be found in #' [this vignette](https://easystats.github.io/datawizard/articles/demean.html). #' } #' #' @references \itemize{ #' \item Bafumi J, Gelman A. 2006. Fitting Multilevel Models When Predictors #' and Group Effects Correlate. In. Philadelphia, PA: Annual meeting of the #' American Political Science Association. #' #' \item Bell A, Fairbrother M, Jones K. 2019. Fixed and Random Effects #' Models: Making an Informed Choice. Quality & Quantity (53); 1051-1074 #' #' \item Bell A, Jones K. 2015. Explaining Fixed Effects: Random Effects #' Modeling of Time-Series Cross-Sectional and Panel Data. Political Science #' Research and Methods, 3(1), 133–153. #' #' \item Gelman A, Hill J. 2007. Data Analysis Using Regression and #' Multilevel/Hierarchical Models. Analytical Methods for Social Research. #' Cambridge, New York: Cambridge University Press #' #' \item Giesselmann M, Schmidt-Catran, AW. 2020. Interactions in fixed #' effects regression models. Sociological Methods & Research, 1–28. #' https://doi.org/10.1177/0049124120914934 #' #' \item Heisig JP, Schaeffer M, Giesecke J. 2017. The Costs of Simplicity: #' Why Multilevel Models May Benefit from Accounting for Cross-Cluster #' Differences in the Effects of Controls. American Sociological Review 82 #' (4): 796–827. #' #' \item Hoffman L. 2015. Longitudinal analysis: modeling within-person #' fluctuation and change. New York: Routledge #' } #' @examples #' data(iris) #' iris$ID <- sample(1:4, nrow(iris), replace = TRUE) # fake-ID #' iris$binary <- as.factor(rbinom(150, 1, .35)) # binary variable #' #' x <- demean(iris, select = c("Sepal.Length", "Petal.Length"), group = "ID") #' head(x) #' #' x <- demean(iris, select = c("Sepal.Length", "binary", "Species"), group = "ID") #' head(x) #' #' #' # demean interaction term x*y #' dat <- data.frame( #' a = c(1, 2, 3, 4, 1, 2, 3, 4), #' x = c(4, 3, 3, 4, 1, 2, 1, 2), #' y = c(1, 2, 1, 2, 4, 3, 2, 1), #' ID = c(1, 2, 3, 1, 2, 3, 1, 2) #' ) #' demean(dat, select = c("a", "x*y"), group = "ID") #' #' # or in formula-notation #' demean(dat, select = ~ a + x * y, group = ~ID) #' @export demean <- function(x, select, group, suffix_demean = "_within", suffix_groupmean = "_between", add_attributes = TRUE, verbose = TRUE) { degroup( x = x, select = select, group = group, center = "mean", suffix_demean = suffix_demean, suffix_groupmean = suffix_groupmean, add_attributes = add_attributes, verbose = verbose ) } #' @rdname demean #' @export degroup <- function(x, select, group, center = "mean", suffix_demean = "_within", suffix_groupmean = "_between", add_attributes = TRUE, verbose = TRUE) { # ugly tibbles again... x <- as.data.frame(x) center <- match.arg(tolower(center), choices = c("mean", "median", "mode", "min", "max")) if (inherits(select, "formula")) { # formula to character, remove "~", split at "+" select <- trimws(unlist(strsplit(gsub("~", "", .safe_deparse(select), fixed = TRUE), "+", fixed = TRUE))) } if (inherits(group, "formula")) { group <- all.vars(group) } interactions_no <- select[!grepl("(\\*|\\:)", select)] interactions_yes <- select[grepl("(\\*|\\:)", select)] if (length(interactions_yes)) { interaction_terms <- lapply(strsplit(interactions_yes, "*", fixed = TRUE), trimws) product <- lapply(interaction_terms, function(i) do.call(`*`, x[, i])) new_dat <- as.data.frame(stats::setNames(product, gsub("\\s", "", gsub("*", "_", interactions_yes, fixed = TRUE)))) x <- cbind(x, new_dat) select <- c(interactions_no, colnames(new_dat)) } not_found <- setdiff(select, colnames(x)) if (length(not_found) && isTRUE(verbose)) { insight::print_color(sprintf( "%i variables were not found in the dataset: %s\n", length(not_found), paste0(not_found, collapse = ", ") ), color = "red" ) } select <- intersect(colnames(x), select) # get data to demean... dat <- x[, c(select, group)] # find categorical predictors that are coded as factors categorical_predictors <- sapply(dat[select], is.factor) # convert binary predictors to numeric if (any(categorical_predictors)) { # convert categorical to numeric, and then demean dat[select[categorical_predictors]] <- lapply( dat[select[categorical_predictors]], function(i) as.numeric(i) - 1 ) # convert categorical to dummy, and demean each binary dummy for (i in select[categorical_predictors]) { if (nlevels(x[[i]]) > 2) { for (j in levels(x[[i]])) { # create vector with zeros f <- rep(0, nrow(x)) # for each matching level, set dummy to 1 f[x[[i]] == j] <- 1 dummy <- data.frame(f) # colnames = variable name + factor level # also add new dummy variables to "select" colnames(dummy) <- sprintf("%s_%s", i, j) select <- c(select, sprintf("%s_%s", i, j)) # add to data dat <- cbind(dat, dummy) } } } # tell user... if (isTRUE(verbose)) { insight::print_color( sprintf( "Categorical predictors (%s) have been coerced to numeric values to compute de- and group-meaned variables.\n", paste0(names(categorical_predictors)[categorical_predictors], collapse = ", ") ), "yellow" ) } } # group variables, then calculate the mean-value # for variables within each group (the group means). assign # mean values to a vector of same length as the data if (center == "mode") { x_gm_list <- lapply(select, function(i) { stats::ave(dat[[i]], dat[[group]], FUN = function(.gm) .mode(stats::na.omit(.gm))) }) } else if (center == "median") { x_gm_list <- lapply(select, function(i) { stats::ave(dat[[i]], dat[[group]], FUN = function(.gm) stats::median(.gm, na.rm = TRUE)) }) } else if (center == "min") { x_gm_list <- lapply(select, function(i) { stats::ave(dat[[i]], dat[[group]], FUN = function(.gm) min(.gm, na.rm = TRUE)) }) } else if (center == "max") { x_gm_list <- lapply(select, function(i) { stats::ave(dat[[i]], dat[[group]], FUN = function(.gm) max(.gm, na.rm = TRUE)) }) } else { x_gm_list <- lapply(select, function(i) { stats::ave(dat[[i]], dat[[group]], FUN = function(.gm) mean(.gm, na.rm = TRUE)) }) } names(x_gm_list) <- select # create de-meaned variables by subtracting the group mean from each individual value x_dm_list <- lapply(select, function(i) dat[[i]] - x_gm_list[[i]]) names(x_dm_list) <- select # convert to data frame and add suffix to column names x_gm <- as.data.frame(x_gm_list) x_dm <- as.data.frame(x_dm_list) colnames(x_dm) <- sprintf("%s%s", colnames(x_dm), suffix_demean) colnames(x_gm) <- sprintf("%s%s", colnames(x_gm), suffix_groupmean) if (isTRUE(add_attributes)) { x_dm[] <- lapply(x_dm, function(i) { attr(i, "within-effect") <- TRUE i }) x_gm[] <- lapply(x_gm, function(i) { attr(i, "between-effect") <- TRUE i }) } cbind(x_gm, x_dm) } #' @rdname demean #' @export detrend <- degroup # helper ------------------ .mode <- function(x) { uniqv <- unique(x) tab <- tabulate(match(x, uniqv)) idx <- which.max(tab) uniqv[idx] } #' @keywords internal .safe_deparse <- function(string) { paste0(sapply(deparse(string, width.cutoff = 500), trimws, simplify = TRUE), collapse = " ") } datawizard/R/backports.R0000644000176200001440000000050414113652110014711 0ustar liggesusers.str2lang <- function(s) { stopifnot(length(s) == 1L) ex <- parse(text = s, keep.source = FALSE) stopifnot(length(ex) == 1L) ex[[1L]] } isTRUE <- function(x) { is.logical(x) && length(x) == 1L && !is.na(x) && x } isFALSE <- function(x) { is.logical(x) && length(x) == 1L && !is.na(x) && !x } datawizard/R/utils_standardize_center.R0000644000176200001440000002761614164744634020051 0ustar liggesusers # helper ----------------------------- ## preparation for standardize and center ---- .process_std_center <- function(x, weights, robust, verbose, reference = NULL, center = NULL, scale = NULL) { # Warning if all NaNs if (all(is.na(x))) { return(NULL) } if (.are_weights(weights)) { valid_x <- !is.na(x) & !is.na(weights) vals <- x[valid_x] weights <- weights[valid_x] } else { valid_x <- !is.na(x) vals <- x[valid_x] } # Sanity checks check <- .check_standardize_numeric(x, name = NULL, verbose = verbose, reference = reference) if (is.factor(vals) || is.character(vals)) { vals <- .factor_to_numeric(vals) } # Get center and scale ref <- .get_center_scale(vals, robust, weights, reference, .center = center, .scale = scale) list( vals = vals, valid_x = valid_x, center = ref$center, scale = ref$scale, check = check ) } ## processing and checking of arguments ---- .process_std_args <- function(x, select, exclude, weights, append, append_suffix = "_z", force, remove_na = "none", reference = NULL, .center = NULL, .scale = NULL) { # check for formula notation, convert to character vector if (inherits(select, "formula")) { select <- all.vars(select) } if (inherits(exclude, "formula")) { exclude <- all.vars(exclude) } # check append argument, and set default if (isFALSE(append)) { append <- NULL } else if (isTRUE(append)) { append <- append_suffix } if (!is.null(weights) && is.character(weights)) { if (weights %in% colnames(x)) { exclude <- c(exclude, weights) } else { warning(insight::format_message("Could not find weighting column '", weights, "'. Weighting not carried out.")) weights <- NULL } } select <- .select_variables(x, select, exclude, force) # check if selected variables are in reference if (!is.null(reference) && !all(select %in% names(reference))) { stop("The 'reference' must include all variables from 'select'.") } # drop NAs remove_na <- match.arg(remove_na, c("none", "selected", "all")) omit <- switch(remove_na, none = logical(nrow(x)), selected = rowSums(sapply(x[select], is.na)) > 0, all = rowSums(sapply(x, is.na)) > 0 ) x <- x[!omit, , drop = FALSE] if (!is.null(weights) && is.character(weights)) weights <- x[[weights]] # append standardized variables if (!is.null(append) && append != "") { new_variables <- x[select] colnames(new_variables) <- paste0(colnames(new_variables), append) x <- cbind(x, new_variables) select <- colnames(new_variables) } # check for reference center and scale if (!is.null(.center)) { # for center(), we have no scale - set it to default value if (is.null(.scale)) { .scale <- rep(1, length(.center)) } # center and scale must have same length if (length(.center) != length(.scale)) { stop("'center' and 'scale' must be of same length.") } # center and scale must either be of length 1 or of same length as selected variables if (length(.center) > 1 && length(.center) != length(select)) { stop(insight::format_message("'center' and 'scale' must have the same length as the selected variables for standardization or centering.")) } # if of length 1, recycle if (length(.center) == 1) { .center <- rep(.center, length(select)) .scale <- rep(.scale, length(select)) } # set names if (is.null(names(.center))) { .center <- stats::setNames(.center, select) } if (is.null(names(.scale))) { .scale <- stats::setNames(.scale, select) } } else { # use NA if missing, so we can index these as vectors .center <- stats::setNames(rep(NA, length(select)), select) .scale <- stats::setNames(rep(NA, length(select)), select) } list( x = x, select = select, exclude = exclude, weights = weights, append = append, center = .center, scale = .scale ) } ## retrieve center and scale information ---- .get_center_scale <- function(x, robust = FALSE, weights = NULL, reference = NULL, .center = NULL, .scale = NULL) { if (is.null(reference)) reference <- x # for center(), we have no scale. default to 0 if (is.null(.scale) || is.na(.scale)) { .scale <- 1 } if (!is.null(.center) && !is.na(.center)) { center <- .center scale <- .scale } else if (robust) { center <- .median(reference, weights) scale <- .mad(reference, weights) } else { center <- .mean(reference, weights) scale <- .sd(reference, weights) } list(center = center, scale = scale) } ## check range of input variables ---- #' @keywords internal .check_standardize_numeric <- function(x, name = NULL, verbose = TRUE, reference = NULL) { # Warning if only one value if (length(unique(x)) == 1 && is.null(reference)) { if (verbose) { if (is.null(name)) { message(insight::format_message("The variable contains only one unique value and will be set to 0.")) } else { message(insight::format_message(paste0("The variable `", name, "` contains only one unique value and will be set to 0."))) } } return(NULL) } # Warning if logical vector if (length(unique(x)) == 2 && !is.factor(x) && !is.character(x)) { if (verbose) { if (is.null(name)) { message(insight::format_message("The variable contains only two different values. Consider converting it to a factor.")) } else { message(insight::format_message(paste0("Variable `", name, "` contains only two different values. Consider converting it to a factor."))) } } } x } ## variables to standardize and center ---- .select_variables <- function(x, select, exclude, force) { if (is.null(select)) { select <- names(x) } if (!is.null(exclude)) { select <- setdiff(select, exclude) } if (!force) { factors <- sapply(x[select], function(i) is.factor(i) | is.character(i)) select <- select[!factors] } select } .are_weights <- function(w) { !is.null(w) && length(w) && !all(w == 1) && !all(w == w[1]) } .factor_to_numeric <- function(x) { # no need to change for numeric if (is.numeric(x)) { return(x) } # Dates can be coerced by as.numeric(), w/o as.character() if (inherits(x, "Date")) { return(as.numeric(x)) } if (anyNA(suppressWarnings(as.numeric(as.character(stats::na.omit(x)))))) { if (is.character(x)) { x <- as.factor(x) } levels(x) <- 1:nlevels(x) } as.numeric(as.character(x)) } ## own implementation of mean/median/mad/sd ---- .mean <- function(x, weights = NULL, verbose = TRUE, ...) { if (!.are_weights(weights)) { return(mean(x, na.rm = TRUE)) } if (!all(weights > 0, na.rm = TRUE)) { if (isTRUE(verbose)) { warning("Some weights were negative. Weighting not carried out.", call. = FALSE) } return(mean(x, na.rm = TRUE)) } stats::weighted.mean(x, weights, na.rm = TRUE) } .median <- function(x, weights = NULL, verbose = TRUE, ...) { # From spatstat + wiki if (!.are_weights(weights)) { return(stats::median(x, na.rm = TRUE)) } if (!all(weights > 0, na.rm = TRUE)) { if (isTRUE(verbose)) { warning("Some weights were negative. Weighting not carried out.", call. = FALSE) } return(stats::median(x, na.rm = TRUE)) } oo <- order(x) x <- x[oo] weights <- weights[oo] Fx <- cumsum(weights) / sum(weights) lefties <- which(Fx <= 0.5) left <- max(lefties) if (length(lefties) == 0) { result <- x[1] } else if (left == length(x)) { result <- x[length(x)] } else { result <- x[left] if (!(Fx[left - 1] < 0.5 && 1 - Fx[left] < 0.5)) { right <- left + 1 y <- x[left] * Fx[left] + x[right] * Fx[right] if (is.finite(y)) result <- y } } result } # For standardize_info ---------------------------------------------------- .sd <- function(x, weights = NULL) { # from cov.wt if (!.are_weights(weights)) { return(stats::sd(x, na.rm = TRUE)) } stopifnot(all(weights > 0, na.rm = TRUE)) weights1 <- weights / sum(weights) center <- sum(weights1 * x) xc <- sqrt(weights1) * (x - center) var <- (t(xc) %*% xc) / (1 - sum(weights1^2)) sqrt(as.vector(var)) } .mad <- function(x, weights = NULL, constant = 1.4826) { # From matrixStats if (!.are_weights(weights)) { return(stats::mad(x, na.rm = TRUE)) } stopifnot(all(weights > 0, na.rm = TRUE)) center <- .median(x, weights = weights) x <- abs(x - center) constant * .median(x, weights = weights) } # For standardize_parameters ---------------------------------------------- #' @keywords internal .get_object <- function(x, attribute_name = "object_name") { obj_name <- attr(x, attribute_name, exact = TRUE) model <- NULL if (!is.null(obj_name)) { model <- tryCatch( { get(obj_name, envir = parent.frame()) }, error = function(e) { NULL } ) if (is.null(model) || # prevent self reference inherits(model, "parameters_model")) { model <- tryCatch( { get(obj_name, envir = globalenv()) }, error = function(e) { NULL } ) } } model } # for grouped df --------------------------- .process_grouped_df <- function(x, select, exclude, append, append_suffix = "_z", reference, weights, force) { if (!is.null(reference)) { stop("The `reference` argument cannot be used with grouped standardization for now.") } # check append argument, and set default if (isFALSE(append)) { append <- NULL } else if (isTRUE(append)) { append <- append_suffix } info <- attributes(x) # dplyr >= 0.8.0 returns attribute "indices" grps <- attr(x, "groups", exact = TRUE) # check for formula notation, convert to character vector if (inherits(select, "formula")) { select <- all.vars(select) } if (inherits(exclude, "formula")) { exclude <- all.vars(exclude) } if (is.numeric(weights)) { warning( "For grouped data frames, 'weights' must be a character, not a numeric vector.\n", "Ignoring weightings." ) weights <- NULL } # dplyr < 0.8.0? if (is.null(grps)) { grps <- attr(x, "indices", exact = TRUE) grps <- lapply(grps, function(x) x + 1) } else { grps <- grps[[".rows"]] } x <- as.data.frame(x) select <- .select_variables(x, select, exclude, force) # append standardized variables if (!is.null(append) && append != "") { new_variables <- x[select] colnames(new_variables) <- paste0(colnames(new_variables), append) x <- cbind(x, new_variables) select <- colnames(new_variables) info$names <- c(info$names, select) } list(x = x, info = info, select = select, grps = grps, weights = weights) } datawizard/R/data_reorder.R0000644000176200001440000000064514113652110015362 0ustar liggesusers#' @rdname data_rename #' @examples #' # Reorder columns #' head(data_reorder(iris, c("Species", "Sepal.Length"))) #' head(data_reorder(iris, c("Species", "dupa"))) # Safe for non-existing cols #' @export data_reorder <- function(data, cols, safe = TRUE, ...) { remaining_columns <- setdiff(colnames(data), cols) if (isTRUE(safe)) cols <- cols[cols %in% names(data)] data[, c(cols, remaining_columns)] } datawizard/NEWS.md0000644000176200001440000000320714174263210013504 0ustar liggesusers# datawizard 0.2.3 - New functions: + to work with lists: `is_empty_object()` and `compact_list()` + to work with strings: `compact_character()` # datawizard 0.2.2 - New function `data_extract()` (or its alias `extract()`) to pull single variables from a data frame, possibly naming each value by the row names of that data frame. - `reshape_ci()` gains a `ci_type` argument, to reshape data frames where CI-columns have prefixes other than `"CI"`. - `standardize()` and `center()` gain arguments `center` and `scale`, to define references for centrality and deviation that are used when centering or standardizing variables. - `center()` gains the arguments `force` and `reference`, similar to `standardize()`. - The functionality of the `append` argument in `center()` and `standardize()` was revised. This made the `suffix` argument redundant, and thus it was removed. - Fixed issue in `standardize()`. - Fixed issue in `data_findcols()`. # datawizard 0.2.1 - Exports `plot` method for `visualisation_recipe()` objects from `{see}` package. - `centre()`, `standardise()`, `unstandardise()` are exported as aliases for `center()`, `standardize()`, `unstandardize()`, respectively. # datawizard 0.2.0.1 - This is mainly a maintenance release that addresses some issues with conflicting namespaces. # datawizard 0.2.0 - New function: `visualisation_recipe()`. - The following function has now moved to *performance* package: `check_multimodal()`. - Minor updates to documentation, including a new vignette about `demean()`. # datawizard 0.1.0 * First release. datawizard/MD50000644000176200001440000001322314174271374012727 0ustar liggesusers7edb42b19ca34825708a845eb5566e32 *DESCRIPTION 30dd2ec71ff7d2508b0ea7055736d402 *NAMESPACE 9af90dae4176561cc2f11bd758e59c78 *NEWS.md 2c95d6e7277a34c95ba6d3ca43661bf6 *R/adjust.R bf51304a14b6f7997659a2fff1f1573d *R/backports.R 26d0126a24081d9430a124e2a4516242 *R/center.R bd9ddb639b027cc3d08f6ce83c89df16 *R/compact_character.R b1e9c91d15526e730f9b4ac6374ff642 *R/convert_data_to_numeric.R df25a529de5475cb15f8cf4779da09ac *R/data.R 8e8f531934c254a711b44207c47a8cb2 *R/data_addprefix.R fef6c7b45b2d34bc657abf697313ee5f *R/data_extract.R b13caaee2000edf597323d509806eb18 *R/data_findcols.R e6d58da9645d12643b28a4b95b84175e *R/data_match.R d3786ec053459efa9902a7917964a11e *R/data_partition.R 4fc94fad139d0bed3b581ff831585dd7 *R/data_relocate.R 62400fbfa47b295b0ec085a5edff3cd9 *R/data_remove.R df18b3d1432670e43e0eebc74964bdd5 *R/data_rename.R a1486ff1a36a55a0525292b9e47640ab *R/data_reorder.R 14b2af4e53619060bd40774a151a560f *R/data_rescale.R ff2ea7164f7cc4f0db4c7a152018f647 *R/data_reshape.R 932ad79f5fe7c63a2e9b4845453d49f6 *R/data_restoretype.R 05c60c93ccbf4a1afdda63bdfe7c3924 *R/data_transpose.R 38f1b1a7454a8b37860179aa511cbe76 *R/demean.R cf531d8bf0e31ccbd065548a9cdd8d6f *R/describe_distribution.R 45deea142844a57eccf7f7b14dee8a56 *R/format_text.R 19d633a2207ed3ca877d6d30e9ac4cea *R/normalize.R a3eb28241e619f510c1543da4375ebe9 *R/ranktransform.R de4443d108b823509ad75b7d218d68f8 *R/rescale_weights.R 4d872dbe3da14c7df5ad0a0ba57a1d2e *R/reshape_ci.R 893f32436112a5cf9aa167590cca3835 *R/skewness_kurtosis.R c876b64db2333ad5869641934cd254ff *R/smoothness.R 58952645a1d9b5459e8540ec1774a85d *R/standardize.R 292ee1f98afcb07b3494ff6c139415ed *R/unstandardize.R 90606d90a60cb10fc43c5afcc3475dcd *R/utils_data.R 8daf2e17cdfc204ccf5323ea2962fdde *R/utils_get_dots.R bb204ec34b87d8ca4cadd9cce209fc73 *R/utils_list.R df0ab69d324b02971ab0b7c888478e57 *R/utils_misc.R 431c50fff4e6009740f62462c60faee8 *R/utils_standardize_center.R 27691eacb6c30214808c60f9a198d035 *R/utils_strings.R a70fc548e2e39e0c718538a6d00eef38 *R/visualisation_recipe.R 57ad361e51dac7ca44b2f5e0b620b991 *R/winsorize.R 18be1110c4c0f36e0be6f77306927ad6 *README.md 7a9535d3fb39f4657f1388dd6afc79a0 *build/vignette.rds ad3f18b79c24699a3c122d8b377b5028 *data/nhanes_sample.RData 9b83904e79205d3ae17c19abbcf722c7 *inst/CITATION 9390a3ff223e1ca4da53bc88c56e3d43 *inst/WORDLIST bb7ca465d96441968b061867c5d2d58e *inst/doc/demean.R fe294e85c1bd69ab524cb645e49f7e21 *inst/doc/demean.Rmd a61fb5a76a98cfdc5407ef5c00eff1c1 *inst/doc/demean.html 8d26a860fedee480d4acc2033526d18c *inst/doc/standardize_data.R fcb96856fd80fe087184fd134fd48738 *inst/doc/standardize_data.Rmd f82b87db15a0008307442390a60d0a2d *inst/doc/standardize_data.html 5b54ac29d4b9f0a55cb6cdffce180c8b *man/adjust.Rd f760cdbf5a498a1bbb1098979a8f2ab3 *man/center.Rd fcee0989967d8c9bec9b51d5ca31f840 *man/compact_character.Rd c8a84c72e7ee9caccd86d0b6de7b63d0 *man/compact_list.Rd d59cc75e5933d83de495640fca2ec658 *man/convert_data_to_numeric.Rd 039b0d7bd9d36f632da48044599bb5f3 *man/data_extract.Rd 9461991ab29e29e2d7e228b364932613 *man/data_match.Rd a9e6d887cc3762b8a869ad0d0ac98861 *man/data_partition.Rd d7cad77a7cc808305769d90eea62b9c0 *man/data_relocate.Rd deab732d3b33bea28f44e35ae602c7f0 *man/data_rename.Rd 408061960d66df892b13afb7cffb5210 *man/data_rescale.Rd 7881243f60e57e23664082cbad856223 *man/data_restoretype.Rd 9c49bc82433208d36a02e3c12e5da2eb *man/data_to_long.Rd a2cf23ab26379e3c7938d8f69f7a8eea *man/data_transpose.Rd 21e0402db35d8740b8d9566c500c035d *man/demean.Rd 83dd6501248955189e868f43fffd63f9 *man/describe_distribution.Rd 951384ada018696c397c789fbe1d60d8 *man/figures/card.png bb0cc047e1d1c8b51c34918fa3da3007 *man/figures/logo.png 0f9fc5e71a84be9de4b7ebb55f05d1c2 *man/format_text.Rd 7c99953222ed1d18b39cc4c724014d31 *man/is_empty_object.Rd 17c3fc342f8a9f59803c4c53ae0aab4c *man/nhanes_sample.Rd 81602d91932c0822083ef13f2e09e022 *man/normalize.Rd 34214d474c8cfebb78be9267e7945ebe *man/ranktransform.Rd 08b8b13d3241e68d3e5fcbe252cd93df *man/rescale_weights.Rd e6a3fad770f145f6dde47469548c7dd9 *man/reshape_ci.Rd a5727f145ff31d7011fdb8eaecf3b63e *man/skewness.Rd 65b39afcad7ca1baec1acdd5e56a0aeb *man/smoothness.Rd 58cbeeca9fafb2af3f1d02953d0b9a68 *man/standardize.Rd 70e56a1abdb9c61b226c4c4efe566e40 *man/to_numeric.Rd ad731416edad0fc6af329275e66a89be *man/visualisation_recipe.Rd 06efbd7c7e73e30e0d2ac0dc19765bc7 *man/winsorize.Rd dbd9bab057163c01c320d0b9d3bb9620 *tests/spelling.R d4c6de9fa1db1405b65f350cc2cfb32d *tests/testthat.R eb452402d682f3e147f397141778af3a *tests/testthat/_snaps/winsorization.md b011d5f45bdddf6ba890a73667ede0fc *tests/testthat/test-adjust.R f27133e81f0d8969965868a09abdcce7 *tests/testthat/test-center.R 992667c857302fc815b2f7ec528c6dd5 *tests/testthat/test-compact-character.R 9ca991b07771e499ea3e1556c57243b6 *tests/testthat/test-compact-list.R 51afe03533d0aa62af35a6899cd0c745 *tests/testthat/test-describe_distribution.R b5b0d04ea2a8bdbcdbd7422b7dbfdb63 *tests/testthat/test-distributions.R 30f4df3caf0ef1cc6d52b53ddf087a14 *tests/testthat/test-extract.R 3471968a2a04dd44d28dde4fc1e60f49 *tests/testthat/test-is-empty-object.R 024e85276218ccffbc91c834f5dbd0d5 *tests/testthat/test-ranktransform.R 7205c10271650b1b7ec5bc7708814190 *tests/testthat/test-skewness.R 7c81b124715b77f8843417ea113fd0b0 *tests/testthat/test-smoothness.R 94f740dde167c8436ab8e5179de1c1c5 *tests/testthat/test-standardize-data.R a66cbca4858811bc79b10ad0f0130982 *tests/testthat/test-std_center.R fff8ca509be55c6f960db3651ac36921 *tests/testthat/test-std_center_scale_args.R fa3ac3c1f2f819b81a72f69770d1da06 *tests/testthat/test-winsorization.R 4bf86d3cb7c39b926a92dad5ae417d44 *vignettes/bibliography.bib fe294e85c1bd69ab524cb645e49f7e21 *vignettes/demean.Rmd fcb96856fd80fe087184fd134fd48738 *vignettes/standardize_data.Rmd datawizard/inst/0000755000176200001440000000000014174263642013372 5ustar liggesusersdatawizard/inst/doc/0000755000176200001440000000000014174263642014137 5ustar liggesusersdatawizard/inst/doc/standardize_data.html0000644000176200001440000056635714174263642020354 0ustar liggesusers Data Standardization

Data Standardization

Introduction

To make sense of their data and effects, scientists might want to standardize (Z-score) their variables. This makes the data unitless, expressed only in terms of deviation from an index of centrality (e.g., the mean or the median). However, aside from some benefits, standardization also comes with challenges and issues, that the scientist should be aware of.

Methods of Standardization

The datawizard package offers two methods of standardization via the standardize() function:

  • Normal standardization: center around the mean, with SD units (default).

  • Robust standardization: center around the median, with MAD (median absolute deviation) units (robust = TRUE).

Let’s look at the following example:

library(datawizard)
library(effectsize) # for data

# let's have a look at what the data look like
data("hardlyworking", package = "effectsize")
head(hardlyworking)
>     salary xtra_hours n_comps age seniority
> 1 19744.65   4.161812       1  32         3
> 2 11301.95   1.621868       0  34         3
> 3 20635.62   1.190859       3  33         5
> 4 23047.16   7.190997       1  35         3
> 5 27342.15  11.261399       0  33         4
> 6 25656.63   3.633346       2  30         5
# let's use both methods of standardization
hardlyworking$xtra_hours_z <- standardize(hardlyworking$xtra_hours)
hardlyworking$xtra_hours_zr <- standardize(hardlyworking$xtra_hours, robust = TRUE)

We can see that different methods give different central and variation values:

library(dplyr)
library(tidyr)

hardlyworking %>%
  select(starts_with("xtra_hours")) %>%
  pivot_longer(everything()) %>%
  group_by(name) %>%
  summarise(
    mean = mean(value),
    sd = sd(value),
    median = median(value),
    mad = mad(value)
  )
name mean sd median mad
xtra_hours 3.9757 3.9035 2.7726 2.8479
xtra_hours_z 0.0000 1.0000 -0.3082 0.7296
xtra_hours_zr 0.4224 1.3706 0.0000 1.0000

standardize() can also be used to standardize a full data frame - where each numeric variable is standardized separately:

hardlyworking_z <- standardize(hardlyworking)
hardlyworking_z %>%
  select(-xtra_hours_z, -xtra_hours_zr) %>%
  pivot_longer(everything()) %>%
  group_by(name) %>%
  summarise(
    mean = mean(value),
    sd = sd(value),
    median = median(value),
    mad = mad(value)
  )
name mean sd median mad
age 0 1 0.0605 1.2461
n_comps 0 1 -0.0606 1.7968
salary 0 1 -0.1619 0.8640
seniority 0 1 -0.3681 1.2931
xtra_hours 0 1 -0.3082 0.7296

Weighted standardization is also supported via the weights argument, and factors can also be standardized (if you’re into that kind of thing) by setting force = TRUE, which converts factors to treatment-coded dummy variables before standardizing.

Variable-wise vs. Participant-wise

Standardization is an important step and extra caution is required in repeated-measures designs, in which there are three ways of standardizing data:

  • Variable-wise: The most common method. A simple scaling of each column.

  • Participant-wise: Variables are standardized “within” each participant, i.e., for each participant, by the participant’s mean and SD.

  • Full: Participant-wise first and then re-standardizing variable-wise.

Unfortunately, the method used is often not explicitly stated. This is an issue as these methods can generate important discrepancies (that can in turn contribute to the reproducibility crisis). Let’s investigate these 3 methods.

The Data

We will take the emotion dataset in which participants were exposed to negative pictures and had to rate their emotions (valence) and the amount of memories associated with the picture (autobiographical link). One could make the hypothesis that for young participants with no context of war or violence, the most negative pictures (mutilations) are less related to memories than less negative pictures (involving for example car crashes or sick people). In other words, we expect a positive relationship between valence (with high values corresponding to less negativity) and autobiographical link.

Let’s have a look at the data, averaged by participants:

# Download the 'emotion' dataset
load(url("https://raw.github.com/neuropsychology/psycho.R/master/data/emotion.rda"))

# Discard neutral pictures (keep only negative)
emotion <- emotion %>% filter(Emotion_Condition == "Negative")

# Summary
emotion %>%
  drop_na(Subjective_Valence, Autobiographical_Link) %>%
  group_by(Participant_ID) %>%
  summarise(
    n_Trials = n(),
    Valence_Mean = mean(Subjective_Valence),
    Valence_SD = sd(Subjective_Valence)
  )
> # A tibble: 19 x 4
> # Groups:   Participant_ID [19]
>    Participant_ID n_Trials Valence_Mean Valence_SD
>    <fct>             <int>        <dbl>      <dbl>
>  1 10S                  24       -58.1       42.6 
>  2 11S                  24       -73.2       37.0 
>  3 12S                  24       -57.5       26.6 
>  4 13S                  24       -63.2       23.7 
>  5 14S                  24       -56.6       26.5 
>  6 15S                  24       -60.6       33.7 
>  7 16S                  24       -46.1       24.9 
>  8 17S                  24        -1.54       4.98
>  9 18S                  24       -67.2       35.0 
> 10 19S                  24       -59.6       33.2 
> 11 1S                   24       -53.0       42.9 
> 12 2S                   23       -43.0       39.2 
> 13 3S                   24       -64.3       34.4 
> 14 4S                   24       -81.6       27.6 
> 15 5S                   24       -58.1       25.3 
> 16 6S                   24       -74.7       29.2 
> 17 7S                   24       -62.3       39.7 
> 18 8S                   24       -56.9       32.7 
> 19 9S                   24       -31.5       52.7

As we can see from the means and SDs, there is a lot of variability between participants both in their means and their individual within-participant SD.

Effect of Standardization

We will create three data frames standardized with each of the three techniques.

Z_VariableWise <- emotion %>%
  standardize()

Z_ParticipantWise <- emotion %>%
  group_by(Participant_ID) %>%
  standardize()

Z_Full <- emotion %>%
  group_by(Participant_ID) %>%
  standardize() %>%
  ungroup() %>%
  standardize()

Let’s see how these three standardization techniques affected the Valence variable.

Across Participants

We can calculate the mean and SD of Valence across all participants:

# Create a convenient function to print
summarise_Subjective_Valence <- function(data) {
  df_name <- deparse(substitute(data))
  data %>%
    ungroup() %>%
    summarise(
      DF = df_name,
      Mean = mean(Subjective_Valence),
      SD = sd(Subjective_Valence)
    )
}
# Check the results
rbind(
  summarise_Subjective_Valence(Z_VariableWise),
  summarise_Subjective_Valence(Z_ParticipantWise),
  summarise_Subjective_Valence(Z_Full)
)
DF Mean SD
Z_VariableWise 0 1.00
Z_ParticipantWise 0 0.98
Z_Full 0 1.00

The means and the SD appear as fairly similar (0 and 1)…

library(see)
library(ggplot2)

ggplot() +
  geom_density(aes(Z_VariableWise$Subjective_Valence,
    color = "Z_VariableWise"
  ), size = 1) +
  geom_density(aes(Z_ParticipantWise$Subjective_Valence,
    color = "Z_ParticipantWise"
  ), size = 1) +
  geom_density(aes(Z_Full$Subjective_Valence,
    color = "Z_Full"
  ), size = 1) +
  see::theme_modern() +
  labs(color = "")

and so do the marginal distributions…

At the Participant Level

However, we can also look at what happens in the participant level. Let’s look at the first 5 participants:

# Create convenient function
print_participants <- function(data) {
  df_name <- deparse(substitute(data))
  data %>%
    group_by(Participant_ID) %>%
    summarise(
      DF = df_name,
      Mean = mean(Subjective_Valence),
      SD = sd(Subjective_Valence)
    ) %>%
    head(5) %>%
    select(DF, everything())
}

# Check the results
rbind(
  print_participants(Z_VariableWise),
  print_participants(Z_ParticipantWise),
  print_participants(Z_Full)
)
DF Participant_ID Mean SD
Z_VariableWise 10S -0.05 1.15
Z_VariableWise 11S -0.46 1.00
Z_VariableWise 12S -0.03 0.72
Z_VariableWise 13S -0.19 0.64
Z_VariableWise 14S -0.01 0.71
Z_ParticipantWise 10S 0.00 1.00
Z_ParticipantWise 11S 0.00 1.00
Z_ParticipantWise 12S 0.00 1.00
Z_ParticipantWise 13S 0.00 1.00
Z_ParticipantWise 14S 0.00 1.00
Z_Full 10S 0.00 1.02
Z_Full 11S 0.00 1.02
Z_Full 12S 0.00 1.02
Z_Full 13S 0.00 1.02
Z_Full 14S 0.00 1.02

Seems like full and participant-wise standardization give similar results, but different ones than variable-wise standardization.

Compare

Let’s do a correlation between the variable-wise and participant-wise methods.

r <- cor.test(
  Z_VariableWise$Subjective_Valence,
  Z_ParticipantWise$Subjective_Valence
)

data.frame(
  Original = emotion$Subjective_Valence,
  VariableWise = Z_VariableWise$Subjective_Valence,
  ParticipantWise = Z_ParticipantWise$Subjective_Valence
) %>%
  ggplot(aes(x = VariableWise, y = ParticipantWise, colour = Original)) +
  geom_point(alpha = 0.75, shape = 16) +
  geom_smooth(method = "lm", color = "black") +
  scale_color_distiller(palette = 1) +
  ggtitle(paste0("r = ", round(r$estimate, 2))) +
  see::theme_modern()

While the three standardization methods roughly present the same characteristics at a general level (mean 0 and SD 1) and a similar distribution, their values are not exactly the same!

Let’s now answer the original question by investigating the linear relationship between valence and autobiographical link. We can do this by running a mixed-effects model with participants entered as random effects.

library(lme4)
m_raw <- lmer(
  formula = Subjective_Valence ~ Autobiographical_Link + (1 | Participant_ID),
  data = emotion
)
m_VariableWise <- update(m_raw, data = Z_VariableWise)
m_ParticipantWise <- update(m_raw, data = Z_ParticipantWise)
m_Full <- update(m_raw, data = Z_Full)

We can extract the parameters of interest from each model, and find:

# Convenient function
get_par <- function(model) {
  mod_name <- deparse(substitute(model))
  parameters::model_parameters(model) %>%
    mutate(Model = mod_name) %>%
    select(-Parameter) %>%
    select(Model, everything()) %>%
    .[-1, ]
}

# Run the model on all datasets
rbind(
  get_par(m_raw),
  get_par(m_VariableWise),
  get_par(m_ParticipantWise),
  get_par(m_Full)
)
> # Fixed Effects
> 
> Model             | Coefficient |   SE |        95% CI | t(451) |     p
> -----------------------------------------------------------------------
> m_raw             |        0.09 | 0.07 | [-0.04, 0.22] |   1.36 | 0.174
> m_VariableWise    |        0.07 | 0.05 | [-0.03, 0.17] |   1.36 | 0.174
> m_ParticipantWise |        0.08 | 0.05 | [-0.01, 0.17] |   1.75 | 0.080
> m_Full            |        0.08 | 0.05 | [-0.01, 0.17] |   1.75 | 0.080
> 
> # Random Effects: Participant_ID
> 
> Model             | Coefficient
> -------------------------------
> m_raw             |       16.49
> m_VariableWise    |        0.45
> m_ParticipantWise |        0.00
> m_Full            |        0.00
> 
> # Random Effects: Residual
> 
> Model             | Coefficient
> -------------------------------
> m_raw             |       33.56
> m_VariableWise    |        0.91
> m_ParticipantWise |        0.98
> m_Full            |        1.00

As we can see, variable-wise standardization only affects the coefficient (which is expected, as it changes the unit), but not the test statistic or statistical significance. However, using participant-wise standardization does affect the coefficient and the significance.

No method is better or more justified, and the choice depends on the specific case, context, data and goal.

Conclusion

  1. Standardization can be useful in some cases and should be justified.

  2. Variable and Participant-wise standardization methods appear to produce similar data.

  3. Variable and Participant-wise standardization can lead to different results.

  4. The chosen method can strongly influence the results and should therefore be explicitly stated and justified to enhance reproducibility of results.

We showed here yet another way of sneakily tweaking the data that can change the results. To prevent its use as a bad practice, we can only highlight the importance of open data, open analysis/scripts, and preregistration.

See also

References

datawizard/inst/doc/demean.Rmd0000644000176200001440000004651614141234536016042 0ustar liggesusers--- title: "Analysing Longitudinal or Panel Data" output: rmarkdown::html_vignette: toc: true fig_width: 10.08 fig_height: 6 vignette: > %\VignetteIndexEntry{Analysing Longitudinal or Panel Data} \usepackage[utf8]{inputenc} %\VignetteEngine{knitr::rmarkdown} editor_options: chunk_output_type: console bibliography: bibliography.bib --- ```{r , include=FALSE} library(knitr) knitr::opts_chunk$set( echo = TRUE, collapse = TRUE, warning = FALSE, message = FALSE, comment = "#>", out.width = "100%" ) pkgs <- c( "datawizard", "poorman", "tidyr", "see", "ggplot2", "parameters", "performance", "lme4", "lfe" ) if (!all(sapply(pkgs, requireNamespace, quietly = TRUE))) { knitr::opts_chunk$set(eval = FALSE) } if (!packageVersion("parameters") >= "0.14.1") { knitr::opts_chunk$set(eval = FALSE) } if (!packageVersion("performance") >= "0.7.4") { knitr::opts_chunk$set(eval = FALSE) } set.seed(333) ``` This vignette explains the rational behind the `demean()` function. We give recommendations how to analyze multilevel or hierarchical data structures, when macro-indicators (or level-2 predictors, or higher-level units, or more general: _group-level predictors_) are used as covariates and the model suffers from **heterogeneity bias** [@bell_explaining_2015]. # Sample data used in this vignette ```{r} library(parameters) data("qol_cancer") ``` * Variables: * `QoL` : Response (quality of life of patient) * `phq4` : Patient Health Questionnaire, **time-varying** variable * `hospital` : Location of treatment, **time-invariant** variable, co-variate * `education`: Educational level, **time-invariant** variable, co-variate * `ID` : patient ID * `time` : time-point of measurement # Heterogeneity bias Heterogeneity bias occurs when group-level predictors vary within and across groups, and hence fixed effects may correlate with group (or random) effects. This is a typical situation when analyzing longitudinal or panel data: Due to the repeated measurements of persons, the "person" (or subject-ID) is now a level-2 variable. Predictors at level-1 ("fixed effects"), e.g. self-rated health or income, now have an effect at level-1 ("within"-effect) and at higher-level units (level-2, the subject-level, which is the "between"-effect) (see also [this posting](https://shouldbewriting.netlify.app/posts/2019-10-21-accounting-for-within-and-between-subject-effect/)). This inevitably leads to correlating fixed effects and error terms - which, in turn, results in biased estimates, because both the within- *and* between-effect are captured in *one* estimate. You can check if your model may suffer from heterogeneity bias using the `check_heterogeneity_bias()` function: ```{r} library(performance) check_heterogeneity_bias(qol_cancer, select = c("phq4", "education"), group = "ID") ``` # Adressing heterogeneity bias: the Fixed Effects Regression (FE) approach Fixed effects regression models (FE) are a popular approach for panel data analysis in particular in econometrics and considered as gold standard. To avoid the problem of heterogeneity bias, in FE all higher-level variance (and thus, any between-effects), "are controlled out using the higher-level entities themselves, included in the model as dummy variables" [@bell_explaining_2015]. As a consequence, FE models are only able estimate _within-effects_. To remove between-effects and only model within-effects, the data needs some preparation: _de-meaning_. De-meaning, or _person-mean centering_, or _centering within clusters_, takes away the higher-level mean from the regression equation, and as such, FE avoids estimating a parameter for each higher-level unit. ## Computing the de-meaned and group-meaned variables ```{r} qol_cancer <- cbind( qol_cancer, datawizard::demean(qol_cancer, select = c("phq4", "QoL"), group = "ID") ) ``` Now we have: * `phq4_between`: time-varying variable with the mean of `phq4` across all time-points, for each patient (ID). * `phq4_within`: the de-meaned time-varying variable `phq4`. A FE model is a classical linear model, where * Intercept is removed * time-invariant predictors are not allowed to be included * the group-level factor is included as predictor * time-varying predictors are de-meaned ("person-mean centered", indicating the "within-subject" effect) ```{r} fe_model1 <- lm( QoL ~ 0 + time + phq4_within + ID, data = qol_cancer ) # we use only the first two rows, because the remaining rows are # the estimates for "ID", which is not of interest here... model_parameters(fe_model1)[1:2, ] # instead of removing the intercept, we could also use the # de-meaned response... fe_model2 <- lm( QoL_within ~ time + phq4_within + ID, data = qol_cancer ) model_parameters(fe_model2)[2:3, ] # we compare the results with those from the "lfe"-package for panel data library(lfe) fe_model3 <- felm( QoL ~ time + phq4 | ID, data = qol_cancer ) model_parameters(fe_model3) ``` As we can see, the _within-effect_ of PHQ-4 is `-3.66`, hence the mean of the change for an average individual case in our sample (or, the "net" effect), is `-3.66`. But what about the between-effect? How do people with higher PHQ-4 score differ from people with lower PHQ-4 score? Or what about educational inequalities? Do higher educated people have a higher PHQ-4 score than lower educated people? This question cannot be answered with FE regression. But: "Can one fit a multilevel model with varying intercepts (or coefficients) when the units and predictors correlate? The answer is yes. And the solution is simple." [@bafumi_fitting_2006] # Adressing heterogeneity bias: the Mixed Model approach Mixed models include different levels of sources of variability (i.e. error terms at each level). Predictors used at level-1 that are varying across higher-level units will thus have residual errors at both level-1 and higher-level units. "Such covariates contain two parts: one that is specific to the higher-level entity that does not vary between occasions, and one that represents the difference between occasions, within higher-level entities" [@bell_explaining_2015]. Hence, the error terms will be correlated with the covariate, which violates one of the assumptions of mixed models (iid, independent and identically distributed error terms) - also known and described above as _heterogeneity bias_. But how can this issue be addressed outside the FE framework? There are several ways how to address this using a mixed models approach: * Correlated group factors and predictors are no problem anyway, because [partial pooling](https://www.tjmahr.com/plotting-partial-pooling-in-mixed-effects-models/) allows estimates of units o borrow strength from the whole sample and shrink toward a common mean (@shor_bayesian_2007). * If predictor and group factors correlate, one can remove this correlation by group-meaning [or "mean within clusters", @bafumi_fitting_2006; @gelman_data_2007, Chap. 12.6.]. * When time-varying predictors are "decomposed" into their time-varying and time-invariant components (demeaning), then mixed models can model **both** within- and between-subject effects [@bell_fixed_2019] - this approach is essentially a further development of a long-known recommendation by Mundlak [@mundlak_pooling_1978]. For now, we will follow the last recommendation and use the within- and between-version of `phq4`. ```{r} library(lme4) mixed_1 <- lmer( QoL ~ time + phq4_within + phq4_between + (1 | ID), data = qol_cancer ) model_parameters(mixed_1) # compare to FE-model model_parameters(fe_model1)[1:2, ] ``` As we can see, the estimates and standard errors are identical. The argument _against_ the use of mixed models, i.e. that using mixed models for panel data will yield biased estimates and standard errors, is based on an incorrect model specification [@mundlak_pooling_1978]. As such, when the (mixed) model is properly specified, the estimator of the mixed model is identical to the 'within' (i.e. FE) estimator. As a consequence, we cannot only use the above specified mixed model for panel data, we can even specify more complex models including within-effects, between-effects or random effects variation. A mixed models approach can model the causes of endogeneity explicitly by including the (separated) within- and between-effects of time-varying fixed effects and including time-constant fixed effects. ```{r} mixed_2 <- lmer( QoL ~ time + phq4_within + phq4_between + education + (1 + time | ID), data = qol_cancer ) # effects = "fixed" will not display random effects, but split the # fixed effects into its between- and within-effects components. model_parameters(mixed_2, effects = "fixed") ``` For more complex models, within-effects will naturally change slightly and are no longer identical to simpler FE models. This is no "bias", but rather the result of building more complex models: FE models lack information of variation in the group-effects or between-subject effects. Furthermore, FE models cannot include random slopes, which means that fixed effects regressions are neglecting "cross-cluster differences in the effects of lower-level controls (which) reduces the precision of estimated context effects, resulting in (...) low statistical power" [@heisig_costs_2017]. # Conclusion: Complex Random Effects Within-Between Models Depending on the structure of the data, the best approach to analyzing panel data would be a so called "complex random effects within-between" model [@bell_fixed_2019]: ```{r echo=FALSE} f <- "yit = β0 + β1W (xit - ͞xi) + β2B ͞xi + β3 zi + υi0 + υi1 (xit - ͞xi) + εit" knitr::asis_output(f) ``` ```{r echo=FALSE} f <- "
  • xit - ͞xi is the de-meaned predictor, phq4_within
  • ͞xi is the group-meaned predictor, phq4_between
  • β1W is the coefficient for phq4_within (within-subject)
  • β2B is the coefficient for phq4_between (bewteen-subject)
  • β3 is the coefficient for time-constant predictors, such as `hospital` or `education` (bewteen-subject)
" knitr::asis_output(f) ``` In R-code, the model is written down like this: ```{r} rewb <- lmer( QoL ~ time + phq4_within + phq4_between + education + (1 + time | ID) + (1 + phq4_within | ID), data = qol_cancer ) ``` **What about time-constant predictors?** After demeaning time-varying predictors, "at the higher level, the mean term is no longer constrained by Level 1 effects, so it is free to account for all the higher-level variance associated with that variable" [@bell_explaining_2015]. Thus, _time-constant **categorical**_ predictors, that only have a between-effect, can be simply included as fixed effects predictor (since they’re not constrained by level-1 effects). Time-constant _continuous_ **group-level predictors** (for instance, GDP of countries) should be group-meaned, to have a proper "between"-effect [@gelman_data_2007, Chap. 12.6.]. The benefit of this kind of model is that you have information on within-, between- and other time-constant (i.e. between) effects or group-level predictors... ```{r} model_parameters(rewb, effects = "fixed") ``` ... but you can also model the variation of (group) effects across time (and probably space), and you can even include more higher-level units (e.g. nested design or cross-classified design with more than two levels): ```{r} random_parameters(rewb) ``` **What about imbalanced groups, i.e. large differences in N per group?** See little example after this visual example... # A visual example First, we generate some fake data that implies a linear relationship between outcome and independent variable. The objective is that the amount of typing errors depends on how fast (typing speed) you can type, however, the more typing experience you have, the faster you can type. Thus, the outcome measure is "amount of typing errors", while our predictor is "typing speed". Furthermore, we have repeated measurements of people with different "typing experience levels". The results show that we will have two sources of variation: Overall, more experienced typists make less mistakes (group-level pattern). When typing faster, typists make more mistakes (individual-level pattern). ```{r} library(ggplot2) library(poorman) library(see) set.seed(123) n <- 5 b <- seq(1, 1.5, length.out = 5) x <- seq(2, 2 * n, 2) d <- do.call(rbind, lapply(1:n, function(i) { data.frame( x = seq(1, n, by = .2), y = 2 * x[i] + b[i] * seq(1, n, by = .2) + rnorm(21), grp = as.factor(2 * i) ) })) d <- d %>% group_by(grp) %>% mutate(x = rev(15 - (x + 1.5 * as.numeric(grp)))) %>% ungroup() labs <- c("very slow", "slow", "average", "fast", "very fast") levels(d$grp) <- rev(labs) d <- cbind(d, datawizard::demean(d, c("x", "y"), group = "grp")) ``` Let's look at the raw data... ```{r echo=FALSE} ggplot(d, aes(x, y)) + geom_point(colour = "#555555", size = 2.5, alpha = .5) + see::theme_modern() + labs(x = "Typing Speed", y = "Typing Errors", colour = "Type Experience") ``` ## Model 1: Linear relationship between typing errors and typing speed We can now assume a (linear) relationship between typing errors and typing speed. ```{r echo=FALSE} ggplot(d, aes(x, y)) + geom_point(colour = "#555555", size = 2.5, alpha = .5) + geom_smooth(method = "lm", se = F, colour = "#555555") + see::theme_modern() + labs(x = "Typing Speed", y = "Typing Errors", colour = "Type Experience") ``` Looking at the coefficients, we have following model with a coefficient of `-1.92`. ```{r} m1 <- lm(y ~ x, data = d) model_parameters(m1) ``` However, we have ignored the clustered structure in our data, in this example due to repeated measurements. ```{r echo=FALSE} ggplot(d, aes(x, y)) + geom_point(mapping = aes(colour = grp), size = 2.5, alpha = .5) + geom_smooth(method = "lm", se = F, colour = "#555555") + see::scale_color_flat() + see::theme_modern() + labs(x = "Typing Speed", y = "Typing Errors", colour = "Type Experience") ``` ## Model 2: Within-subject effect of typing speed A fixed effects regression (FE-regression) would now remove all between-effects and include only the within-effects as well as the group-level indicator. ```{r echo=FALSE} ggplot(d, aes(x, y)) + geom_smooth(mapping = aes(colour = grp), method = "lm", se = FALSE) + geom_point(mapping = aes(colour = grp), size = 2.2, alpha = .6) + see::scale_color_flat() + see::theme_modern() + labs(x = "Typing Speed", y = "Typing Errors", colour = "Type Experience") ``` This returns the coefficient of the "within"-effect, which is `1.2`, with a standard error of `0.07`. Note that the FE-model does *not* take the variation *between* subjects into account, thus resulting in (possibly) biased estimates, and biased standard errors. ```{r} m2 <- lm(y ~ 0 + x_within + grp, data = d) model_parameters(m2)[1, ] ``` ## Model 3: Between-subject effect of typing speed To understand, why the above model 1 (`m1`) returns a biased estimate, which is a "weighted average" of the within- and between-effects, let us look at the between-effect now. ```{r echo=FALSE} ggplot(d, aes(x, y)) + geom_point(mapping = aes(colour = grp), size = 2.2, alpha = .6) + geom_smooth(mapping = aes(x = x_between, y = y_between), method = "lm", se = F, colour = "#444444") + see::scale_color_flat() + see::theme_modern() + labs(x = "Typing Speed", y = "Typing Errors", colour = "Type Experience") ``` As we can see, the between-effect is `-2.93`, which is different from the `-1.92` estimated in the model `m1`. ```{r} m3 <- lm(y ~ x_between, data = d) model_parameters(m3) ``` ## Model 4: Mixed model with within- and between-subjects Since FE-models can only model within-effects, we now use a mixed model with within- and between-effects. ```{r echo=FALSE} ggplot(d, aes(x, y)) + geom_smooth(mapping = aes(colour = grp), method = "lm", se = FALSE) + geom_point(mapping = aes(colour = grp), size = 2.2, alpha = .6) + geom_smooth(mapping = aes(x = x_between, y = y_between), method = "lm", se = F, colour = "#444444") + see::scale_color_flat() + see::theme_modern() + labs(x = "Typing Speed", y = "Typing Errors", colour = "Type Experience") ``` We see, the estimate for the within-effects is *not* biased. Furthermore, we get the correct between-effect as well (standard errors differ, because the variance in the grouping structure is more accurately taken into account). ```{r} m4 <- lmer(y ~ x_between + x_within + (1 | grp), data = d) model_parameters(m4) ``` ## Model 5: Complex Random-Effects Within-Between Model Finally, we can also take the variation between subjects into account by adding a random slope. This model can be called a complex "REWB" (random-effects within-between) model. Due to the variation between subjects, we get larger standard errors for the within-effect. ```{r} m5 <- lmer(y ~ x_between + x_within + (1 + x_within | grp), data = d) model_parameters(m5) ``` # Balanced versus imbalanced groups The "simple" linear slope of the between-effect (and also from the within-effect) is (almost) identical in "classical" linear regression compared to linear mixed models when the groups are balanced, i.e. when the number of observation per group is similar or the same. Whenever group size is imbalanced, the "simple" linear slope will be adjusted. This leads to different estimates for between-effects between classical and mixed models regressions due to shrinkage - i.e. for larger variation of group sizes we find stronger regularization of estimates. Hence, for mixed models with larger differences in number of observation per random effects group, the between-effect will differ from the between-effect calculated by "classical" regression models. However, this shrinkage is a desired property of mixed models and usually improves the estimates. ```{r} set.seed(123) n <- 5 b <- seq(1, 1.5, length.out = 5) x <- seq(2, 2 * n, 2) d <- do.call(rbind, lapply(1:n, function(i) { data.frame( x = seq(1, n, by = .2), y = 2 * x[i] + b[i] * seq(1, n, by = .2) + rnorm(21), grp = as.factor(2 * i) ) })) # create imbalanced groups d$grp[sample(which(d$grp == 8), 10)] <- 6 d$grp[sample(which(d$grp == 4), 8)] <- 2 d$grp[sample(which(d$grp == 10), 9)] <- 6 d <- d %>% group_by(grp) %>% mutate(x = rev(15 - (x + 1.5 * as.numeric(grp)))) %>% ungroup() labs <- c("very slow", "slow", "average", "fast", "very fast") levels(d$grp) <- rev(labs) d <- cbind(d, datawizard::demean(d, c("x", "y"), group = "grp")) # Between-subject effect of typing speed m1 <- lm(y ~ x_between, data = d) model_parameters(m1) # Between-subject effect of typing speed, accounting for group structure m2 <- lmer(y ~ x_between + (1 | grp), data = d) model_parameters(m2) ``` # References datawizard/inst/doc/demean.html0000644000176200001440000042307514174263635016273 0ustar liggesusers Analysing Longitudinal or Panel Data

Analysing Longitudinal or Panel Data

This vignette explains the rational behind the demean() function.

We give recommendations how to analyze multilevel or hierarchical data structures, when macro-indicators (or level-2 predictors, or higher-level units, or more general: group-level predictors) are used as covariates and the model suffers from heterogeneity bias (Bell and Jones 2015).

Sample data used in this vignette

library(parameters)
data("qol_cancer")
  • Variables:

    • QoL : Response (quality of life of patient)

    • phq4 : Patient Health Questionnaire, time-varying variable

    • hospital : Location of treatment, time-invariant variable, co-variate

    • education: Educational level, time-invariant variable, co-variate

    • ID : patient ID

    • time : time-point of measurement

Heterogeneity bias

Heterogeneity bias occurs when group-level predictors vary within and across groups, and hence fixed effects may correlate with group (or random) effects. This is a typical situation when analyzing longitudinal or panel data: Due to the repeated measurements of persons, the “person” (or subject-ID) is now a level-2 variable. Predictors at level-1 (“fixed effects”), e.g. self-rated health or income, now have an effect at level-1 (“within”-effect) and at higher-level units (level-2, the subject-level, which is the “between”-effect) (see also this posting). This inevitably leads to correlating fixed effects and error terms - which, in turn, results in biased estimates, because both the within- and between-effect are captured in one estimate.

You can check if your model may suffer from heterogeneity bias using the check_heterogeneity_bias() function:

library(performance)
check_heterogeneity_bias(qol_cancer, select = c("phq4", "education"), group = "ID")
#> Possible heterogeneity bias due to following predictors: phq4

Adressing heterogeneity bias: the Fixed Effects Regression (FE) approach

Fixed effects regression models (FE) are a popular approach for panel data analysis in particular in econometrics and considered as gold standard. To avoid the problem of heterogeneity bias, in FE all higher-level variance (and thus, any between-effects), “are controlled out using the higher-level entities themselves, included in the model as dummy variables” (Bell and Jones 2015). As a consequence, FE models are only able estimate within-effects.

To remove between-effects and only model within-effects, the data needs some preparation: de-meaning. De-meaning, or person-mean centering, or centering within clusters, takes away the higher-level mean from the regression equation, and as such, FE avoids estimating a parameter for each higher-level unit.

Computing the de-meaned and group-meaned variables

qol_cancer <- cbind(
  qol_cancer,
  datawizard::demean(qol_cancer, select = c("phq4", "QoL"), group = "ID")
)

Now we have:

  • phq4_between: time-varying variable with the mean of phq4 across all time-points, for each patient (ID).

  • phq4_within: the de-meaned time-varying variable phq4.

A FE model is a classical linear model, where

  • Intercept is removed

  • time-invariant predictors are not allowed to be included

  • the group-level factor is included as predictor

  • time-varying predictors are de-meaned (“person-mean centered”, indicating the “within-subject” effect)

fe_model1 <- lm(
  QoL ~ 0 + time + phq4_within + ID,
  data = qol_cancer
)
# we use only the first two rows, because the remaining rows are
# the estimates for "ID", which is not of interest here...
model_parameters(fe_model1)[1:2, ]
#> Parameter   | Coefficient |   SE |         95% CI | t(374) |      p
#> -------------------------------------------------------------------
#> time        |        1.09 | 0.64 | [-0.17,  2.34] |   1.70 | 0.089 
#> phq4 within |       -3.66 | 0.41 | [-4.46, -2.86] |  -8.95 | < .001


# instead of removing the intercept, we could also use the
# de-meaned response...
fe_model2 <- lm(
  QoL_within ~ time + phq4_within + ID,
  data = qol_cancer
)
model_parameters(fe_model2)[2:3, ]
#> Parameter   | Coefficient |   SE |         95% CI | t(374) |      p
#> -------------------------------------------------------------------
#> time        |        1.09 | 0.64 | [-0.17,  2.34] |   1.70 | 0.089 
#> phq4 within |       -3.66 | 0.41 | [-4.46, -2.86] |  -8.95 | < .001

# we compare the results with those from the "lfe"-package for panel data
library(lfe)
fe_model3 <- felm(
  QoL ~ time + phq4 | ID,
   data = qol_cancer
)
model_parameters(fe_model3)
#> # Fixed Effects
#> 
#> Parameter | Coefficient |   SE |         95% CI | t(374) |      p
#> -----------------------------------------------------------------
#> time      |        1.09 | 0.64 | [-0.17,  2.34] |   1.70 | 0.089 
#> phq4      |       -3.66 | 0.41 | [-4.46, -2.86] |  -8.95 | < .001

As we can see, the within-effect of PHQ-4 is -3.66, hence the mean of the change for an average individual case in our sample (or, the “net” effect), is -3.66.

But what about the between-effect? How do people with higher PHQ-4 score differ from people with lower PHQ-4 score? Or what about educational inequalities? Do higher educated people have a higher PHQ-4 score than lower educated people?

This question cannot be answered with FE regression. But: “Can one fit a multilevel model with varying intercepts (or coefficients) when the units and predictors correlate? The answer is yes. And the solution is simple.” (Bafumi and Gelman 2006)

Adressing heterogeneity bias: the Mixed Model approach

Mixed models include different levels of sources of variability (i.e. error terms at each level). Predictors used at level-1 that are varying across higher-level units will thus have residual errors at both level-1 and higher-level units. “Such covariates contain two parts: one that is specific to the higher-level entity that does not vary between occasions, and one that represents the difference between occasions, within higher-level entities” (Bell and Jones 2015). Hence, the error terms will be correlated with the covariate, which violates one of the assumptions of mixed models (iid, independent and identically distributed error terms) - also known and described above as heterogeneity bias.

But how can this issue be addressed outside the FE framework?

There are several ways how to address this using a mixed models approach:

  • Correlated group factors and predictors are no problem anyway, because partial pooling allows estimates of units o borrow strength from the whole sample and shrink toward a common mean (Shor et al. (2007)).

  • If predictor and group factors correlate, one can remove this correlation by group-meaning (or “mean within clusters,” Bafumi and Gelman 2006; Gelman and Hill 2007, chap. 12.6.).

  • When time-varying predictors are “decomposed” into their time-varying and time-invariant components (demeaning), then mixed models can model both within- and between-subject effects (Bell, Fairbrother, and Jones 2019) - this approach is essentially a further development of a long-known recommendation by Mundlak (Mundlak 1978).

For now, we will follow the last recommendation and use the within- and between-version of phq4.

library(lme4)
mixed_1 <- lmer(
  QoL ~ time + phq4_within + phq4_between + (1 | ID),
  data = qol_cancer
)
model_parameters(mixed_1)
#> # Fixed Effects
#> 
#> Parameter    | Coefficient |   SE |         95% CI | t(558) |      p
#> --------------------------------------------------------------------
#> (Intercept)  |       71.53 | 1.56 | [68.48, 74.59] |  45.98 | < .001
#> time         |        1.09 | 0.64 | [-0.17,  2.34] |   1.70 | 0.089 
#> phq4 within  |       -3.66 | 0.41 | [-4.46, -2.86] |  -8.95 | < .001
#> phq4 between |       -6.28 | 0.50 | [-7.27, -5.30] | -12.53 | < .001
#> 
#> # Random Effects
#> 
#> Parameter          | Coefficient
#> --------------------------------
#> SD (Intercept: ID) |        9.88
#> SD (Residual)      |       12.37

# compare to FE-model
model_parameters(fe_model1)[1:2, ]
#> Parameter   | Coefficient |   SE |         95% CI | t(374) |      p
#> -------------------------------------------------------------------
#> time        |        1.09 | 0.64 | [-0.17,  2.34] |   1.70 | 0.089 
#> phq4 within |       -3.66 | 0.41 | [-4.46, -2.86] |  -8.95 | < .001

As we can see, the estimates and standard errors are identical. The argument against the use of mixed models, i.e. that using mixed models for panel data will yield biased estimates and standard errors, is based on an incorrect model specification (Mundlak 1978). As such, when the (mixed) model is properly specified, the estimator of the mixed model is identical to the ‘within’ (i.e. FE) estimator.

As a consequence, we cannot only use the above specified mixed model for panel data, we can even specify more complex models including within-effects, between-effects or random effects variation. A mixed models approach can model the causes of endogeneity explicitly by including the (separated) within- and between-effects of time-varying fixed effects and including time-constant fixed effects.

mixed_2 <- lmer(
  QoL ~ time + phq4_within + phq4_between + education + (1 + time | ID),
  data = qol_cancer
)
# effects = "fixed" will not display random effects, but split the
# fixed effects into its between- and within-effects components.
model_parameters(mixed_2, effects = "fixed")
#> Parameter        | Coefficient |   SE |         95% CI | t(554) |      p
#> ------------------------------------------------------------------------
#> (Intercept)      |       67.36 | 2.48 | [62.48, 72.23] |  27.15 | < .001
#> time             |        1.09 | 0.66 | [-0.21,  2.39] |   1.65 | 0.099 
#> education [mid]  |        5.01 | 2.35 | [ 0.40,  9.62] |   2.14 | 0.033 
#> education [high] |        5.52 | 2.75 | [ 0.11, 10.93] |   2.00 | 0.046 
#> 
#> # Within-Effects
#> 
#> Parameter   | Coefficient |   SE |         95% CI | t(554) |      p
#> -------------------------------------------------------------------
#> phq4 within |       -3.72 | 0.41 | [-4.52, -2.92] |  -9.10 | < .001
#> 
#> # Between-Effects
#> 
#> Parameter    | Coefficient |   SE |         95% CI | t(554) |      p
#> --------------------------------------------------------------------
#> phq4 between |       -6.13 | 0.52 | [-7.14, -5.11] | -11.84 | < .001

For more complex models, within-effects will naturally change slightly and are no longer identical to simpler FE models. This is no “bias”, but rather the result of building more complex models: FE models lack information of variation in the group-effects or between-subject effects. Furthermore, FE models cannot include random slopes, which means that fixed effects regressions are neglecting “cross-cluster differences in the effects of lower-level controls (which) reduces the precision of estimated context effects, resulting in (…) low statistical power” (Heisig, Schaeffer, and Giesecke 2017).

Conclusion: Complex Random Effects Within-Between Models

Depending on the structure of the data, the best approach to analyzing panel data would be a so called “complex random effects within-between” model (Bell, Fairbrother, and Jones 2019):

yit = β0 + β1W (xit - ͞xi) + β2B ͞xi + β3 zi + υi0 + υi1 (xit - ͞xi) + εit

  • xit - ͞xi is the de-meaned predictor, phq4_within
  • ͞xi is the group-meaned predictor, phq4_between
  • β1W is the coefficient for phq4_within (within-subject)
  • β2B is the coefficient for phq4_between (bewteen-subject)
  • β3 is the coefficient for time-constant predictors, such as hospital or education (bewteen-subject)

In R-code, the model is written down like this:

rewb <- lmer(
  QoL ~ time + phq4_within + phq4_between + education +
    (1 + time | ID) + (1 + phq4_within | ID),
  data = qol_cancer
)

What about time-constant predictors?

After demeaning time-varying predictors, “at the higher level, the mean term is no longer constrained by Level 1 effects, so it is free to account for all the higher-level variance associated with that variable” (Bell and Jones 2015).

Thus, time-constant categorical predictors, that only have a between-effect, can be simply included as fixed effects predictor (since they’re not constrained by level-1 effects). Time-constant continuous group-level predictors (for instance, GDP of countries) should be group-meaned, to have a proper “between”-effect (Gelman and Hill 2007, chap. 12.6.).

The benefit of this kind of model is that you have information on within-, between- and other time-constant (i.e. between) effects or group-level predictors…

model_parameters(rewb, effects = "fixed")
#> Parameter        | Coefficient |   SE |         95% CI | t(551) |      p
#> ------------------------------------------------------------------------
#> (Intercept)      |       67.18 | 2.39 | [62.49, 71.87] |  28.13 | < .001
#> time             |        1.18 | 0.60 | [-0.01,  2.37] |   1.95 | 0.051 
#> education [mid]  |        4.95 | 2.35 | [ 0.34,  9.56] |   2.11 | 0.035 
#> education [high] |        5.62 | 2.76 | [ 0.20, 11.04] |   2.04 | 0.042 
#> 
#> # Within-Effects
#> 
#> Parameter   | Coefficient |   SE |         95% CI | t(551) |      p
#> -------------------------------------------------------------------
#> phq4 within |       -4.50 | 0.58 | [-5.64, -3.36] |  -7.78 | < .001
#> 
#> # Between-Effects
#> 
#> Parameter    | Coefficient |   SE |         95% CI | t(551) |      p
#> --------------------------------------------------------------------
#> phq4 between |       -6.11 | 0.52 | [-7.13, -5.10] | -11.81 | < .001

… but you can also model the variation of (group) effects across time (and probably space), and you can even include more higher-level units (e.g. nested design or cross-classified design with more than two levels):

random_parameters(rewb)
#> # Random Effects
#> 
#> Within-Group Variance              119.47 (10.93)
#> Between-Group Variance
#>   Random Intercept (ID)             107.5 (10.37)
#>   Random Intercept (ID.1)           25.76  (5.08)
#>   Random Slope (ID.time)             0.49   (0.7)
#>   Random Slope (ID.1.phq4_within)   14.37  (3.79)
#> Correlations
#>   ID.time                           -0.99
#>   ID.phq4_within                     0.44
#> N (groups per factor)
#>   ID                                  188
#> Observations                          564

What about imbalanced groups, i.e. large differences in N per group?

See little example after this visual example…

A visual example

First, we generate some fake data that implies a linear relationship between outcome and independent variable. The objective is that the amount of typing errors depends on how fast (typing speed) you can type, however, the more typing experience you have, the faster you can type. Thus, the outcome measure is “amount of typing errors”, while our predictor is “typing speed”. Furthermore, we have repeated measurements of people with different “typing experience levels”.

The results show that we will have two sources of variation: Overall, more experienced typists make less mistakes (group-level pattern). When typing faster, typists make more mistakes (individual-level pattern).

library(ggplot2)
library(poorman)
library(see)

set.seed(123)
n <- 5
b <- seq(1, 1.5, length.out = 5)
x <- seq(2, 2 * n, 2)

d <- do.call(rbind, lapply(1:n, function(i) {
  data.frame(
    x = seq(1, n, by = .2),
    y = 2 * x[i] + b[i] * seq(1, n, by = .2) + rnorm(21),
    grp = as.factor(2 * i)
  )
}))

d <- d %>%
  group_by(grp) %>%
  mutate(x = rev(15 - (x + 1.5 * as.numeric(grp)))) %>%
  ungroup()

labs <- c("very slow", "slow", "average", "fast", "very fast")
levels(d$grp) <- rev(labs)

d <- cbind(d, datawizard::demean(d, c("x", "y"), group = "grp"))

Let’s look at the raw data…

Model 1: Linear relationship between typing errors and typing speed

We can now assume a (linear) relationship between typing errors and typing speed.

Looking at the coefficients, we have following model with a coefficient of -1.92.

m1 <- lm(y ~ x, data = d)
model_parameters(m1)
#> Parameter   | Coefficient |   SE |         95% CI | t(103) |      p
#> -------------------------------------------------------------------
#> (Intercept) |       30.20 | 1.42 | [27.39, 33.00] |  21.34 | < .001
#> x           |       -1.92 | 0.18 | [-2.27, -1.56] | -10.69 | < .001

However, we have ignored the clustered structure in our data, in this example due to repeated measurements.

Model 2: Within-subject effect of typing speed

A fixed effects regression (FE-regression) would now remove all between-effects and include only the within-effects as well as the group-level indicator.

This returns the coefficient of the “within”-effect, which is 1.2, with a standard error of 0.07. Note that the FE-model does not take the variation between subjects into account, thus resulting in (possibly) biased estimates, and biased standard errors.

m2 <- lm(y ~ 0 + x_within + grp, data = d)
model_parameters(m2)[1, ]
#> Parameter | Coefficient |   SE |       95% CI | t(99) |      p
#> --------------------------------------------------------------
#> x within  |        1.20 | 0.07 | [1.06, 1.35] | 16.08 | < .001

Model 3: Between-subject effect of typing speed

To understand, why the above model 1 (m1) returns a biased estimate, which is a “weighted average” of the within- and between-effects, let us look at the between-effect now.

As we can see, the between-effect is -2.93, which is different from the -1.92 estimated in the model m1.

m3 <- lm(y ~ x_between, data = d)
model_parameters(m3)
#> Parameter   | Coefficient |   SE |         95% CI | t(103) |      p
#> -------------------------------------------------------------------
#> (Intercept) |       37.83 | 0.62 | [36.59, 39.06] |  60.79 | < .001
#> x between   |       -2.93 | 0.08 | [-3.09, -2.78] | -36.76 | < .001

Model 4: Mixed model with within- and between-subjects

Since FE-models can only model within-effects, we now use a mixed model with within- and between-effects.

We see, the estimate for the within-effects is not biased. Furthermore, we get the correct between-effect as well (standard errors differ, because the variance in the grouping structure is more accurately taken into account).

m4 <- lmer(y ~ x_between + x_within + (1 | grp), data = d)
model_parameters(m4)
#> # Fixed Effects
#> 
#> Parameter   | Coefficient |   SE |         95% CI | t(100) |      p
#> -------------------------------------------------------------------
#> (Intercept) |       37.83 | 0.33 | [37.17, 38.48] | 114.46 | < .001
#> x between   |       -2.93 | 0.04 | [-3.02, -2.85] | -69.22 | < .001
#> x within    |        1.20 | 0.07 | [ 1.06,  1.35] |  16.22 | < .001
#> 
#> # Random Effects
#> 
#> Parameter           | Coefficient
#> ---------------------------------
#> SD (Intercept: grp) |        0.00
#> SD (Residual)       |        0.92

Model 5: Complex Random-Effects Within-Between Model

Finally, we can also take the variation between subjects into account by adding a random slope. This model can be called a complex “REWB” (random-effects within-between) model. Due to the variation between subjects, we get larger standard errors for the within-effect.

m5 <- lmer(y ~ x_between + x_within + (1 + x_within | grp), data = d)
model_parameters(m5)
#> # Fixed Effects
#> 
#> Parameter   | Coefficient |   SE |         95% CI |  t(98) |      p
#> -------------------------------------------------------------------
#> (Intercept) |       37.95 | 0.34 | [37.28, 38.63] | 111.15 | < .001
#> x between   |       -2.95 | 0.04 | [-3.04, -2.87] | -67.57 | < .001
#> x within    |        1.20 | 0.10 | [ 1.01,  1.40] |  12.16 | < .001
#> 
#> # Random Effects
#> 
#> Parameter                     | Coefficient
#> -------------------------------------------
#> SD (Intercept: grp)           |        0.09
#> SD (x_within: grp)            |        0.15
#> Cor (Intercept~x_within: grp) |       -1.00
#> SD (Residual)                 |        0.90

Balanced versus imbalanced groups

The “simple” linear slope of the between-effect (and also from the within-effect) is (almost) identical in “classical” linear regression compared to linear mixed models when the groups are balanced, i.e. when the number of observation per group is similar or the same.

Whenever group size is imbalanced, the “simple” linear slope will be adjusted. This leads to different estimates for between-effects between classical and mixed models regressions due to shrinkage - i.e. for larger variation of group sizes we find stronger regularization of estimates.

Hence, for mixed models with larger differences in number of observation per random effects group, the between-effect will differ from the between-effect calculated by “classical” regression models. However, this shrinkage is a desired property of mixed models and usually improves the estimates.

set.seed(123)
n <- 5
b <- seq(1, 1.5, length.out = 5)
x <- seq(2, 2 * n, 2)

d <- do.call(rbind, lapply(1:n, function(i) {
  data.frame(
    x = seq(1, n, by = .2),
    y = 2 * x[i] + b[i] * seq(1, n, by = .2) + rnorm(21),
    grp = as.factor(2 * i)
  )
}))

# create imbalanced groups
d$grp[sample(which(d$grp == 8), 10)] <- 6
d$grp[sample(which(d$grp == 4), 8)] <- 2
d$grp[sample(which(d$grp == 10), 9)] <- 6

d <- d %>%
  group_by(grp) %>%
  mutate(x = rev(15 - (x + 1.5 * as.numeric(grp)))) %>%
  ungroup()

labs <- c("very slow", "slow", "average", "fast", "very fast")
levels(d$grp) <- rev(labs)

d <- cbind(d, datawizard::demean(d, c("x", "y"), group = "grp"))

# Between-subject effect of typing speed
m1 <- lm(y ~ x_between, data = d)
model_parameters(m1)
#> Parameter   | Coefficient |   SE |         95% CI | t(103) |      p
#> -------------------------------------------------------------------
#> (Intercept) |       38.32 | 1.33 | [35.69, 40.95] |  28.87 | < .001
#> x between   |       -2.81 | 0.16 | [-3.13, -2.49] | -17.47 | < .001

# Between-subject effect of typing speed, accounting for group structure
m2 <- lmer(y ~ x_between + (1 | grp), data = d)
model_parameters(m2)
#> # Fixed Effects
#> 
#> Parameter   | Coefficient |   SE |         95% CI | t(101) |      p
#> -------------------------------------------------------------------
#> (Intercept) |       37.02 | 2.73 | [31.59, 42.44] |  13.54 | < .001
#> x between   |       -2.71 | 0.35 | [-3.40, -2.02] |  -7.81 | < .001
#> 
#> # Random Effects
#> 
#> Parameter           | Coefficient
#> ---------------------------------
#> SD (Intercept: grp) |        1.54
#> SD (Residual)       |        2.98

References

Bafumi, Joseph, and Andrew Gelman. 2006. “Fitting Multilevel Models When Predictors and Group Effects Correlate.” In. Philadelphia, PA.
Bell, Andrew, Malcolm Fairbrother, and Kelvyn Jones. 2019. “Fixed and Random Effects Models: Making an Informed Choice.” Quality & Quantity 53: 1051–74. https://doi.org/10.1007/s11135-018-0802-x.
Bell, Andrew, and Kelvyn Jones. 2015. “Explaining Fixed Effects: Random Effects Modeling of Time-Series Cross-Sectional and Panel Data.” Political Science Research and Methods 3 (1): 133–53. https://doi.org/10.1017/psrm.2014.7.
Gelman, Andrew, and Jennifer Hill. 2007. Data Analysis Using Regression and Multilevel/Hierarchical Models. Analytical Methods for Social Research. Cambridge; New York: Cambridge University Press.
Heisig, Jan Paul, Merlin Schaeffer, and Johannes Giesecke. 2017. “The Costs of Simplicity: Why Multilevel Models May Benefit from Accounting for Cross-Cluster Differences in the Effects of Controls.” American Sociological Review 82 (4): 796–827. https://doi.org/10.1177/0003122417717901.
Mundlak, Yair. 1978. “On the Pooling of Time Series and Cross Section Data.” Econometrica 46 (1): 69.
Shor, Boris, Joseph Bafumi, Luke Keele, and David Park. 2007. “A Bayesian Multilevel Modeling Approach to Time-Series Cross-Sectional Data.” Political Analysis 15 (2): 165–81. https://doi.org/10.1093/pan/mpm006.
datawizard/inst/doc/standardize_data.Rmd0000644000176200001440000003132014174263411020075 0ustar liggesusers--- title: "Data Standardization" output: rmarkdown::html_vignette: toc: true fig_width: 10.08 fig_height: 6 vignette: > \usepackage[utf8]{inputenc} %\VignetteIndexEntry{Data Standardization} %\VignetteEngine{knitr::rmarkdown} --- ```{r message=FALSE, warning=FALSE, include=FALSE} library(knitr) options(knitr.kable.NA = "") knitr::opts_chunk$set( comment = ">", message = FALSE, warning = FALSE, dpi = 300 ) pkgs <- c( "datawizard", "poorman", "see", "ggplot2", "parameters", "lme4" ) if (!all(sapply(pkgs, requireNamespace, quietly = TRUE))) { knitr::opts_chunk$set(eval = FALSE) } ``` # Introduction To make sense of their data and effects, scientists might want to standardize (Z-score) their variables. This makes the data unitless, expressed only in terms of deviation from an index of centrality (e.g., the mean or the median). However, aside from some benefits, standardization also comes with challenges and issues, that the scientist should be aware of. ## Methods of Standardization The `datawizard` package offers two methods of standardization via the `standardize()` function: - **Normal standardization**: center around the *mean*, with *SD* units (default). - **Robust standardization**: center around the *median*, with *MAD* (median absolute deviation) units (`robust = TRUE`). Let's look at the following example: ```{r} library(datawizard) library(effectsize) # for data # let's have a look at what the data look like data("hardlyworking", package = "effectsize") head(hardlyworking) # let's use both methods of standardization hardlyworking$xtra_hours_z <- standardize(hardlyworking$xtra_hours) hardlyworking$xtra_hours_zr <- standardize(hardlyworking$xtra_hours, robust = TRUE) ``` We can see that different methods give different central and variation values: ```{r, eval=FALSE} library(dplyr) library(tidyr) hardlyworking %>% select(starts_with("xtra_hours")) %>% pivot_longer(everything()) %>% group_by(name) %>% summarise( mean = mean(value), sd = sd(value), median = median(value), mad = mad(value) ) ``` ```{r, echo=FALSE} library(poorman) hardlyworking %>% select(starts_with("xtra_hours")) %>% reshape_longer(colnames_to = "name", values_to = "value") %>% group_by(name) %>% summarise( mean = mean(value), sd = sd(value), median = median(value), mad = mad(value) ) %>% knitr::kable(digits = 4) ``` `standardize()` can also be used to standardize a full data frame - where each numeric variable is standardized separately: ```{r} hardlyworking_z <- standardize(hardlyworking) ``` ```{r, eval=FALSE} hardlyworking_z %>% select(-xtra_hours_z, -xtra_hours_zr) %>% pivot_longer(everything()) %>% group_by(name) %>% summarise( mean = mean(value), sd = sd(value), median = median(value), mad = mad(value) ) ``` ```{r, echo=FALSE} hardlyworking_z %>% select(-xtra_hours_z, -xtra_hours_zr) %>% reshape_longer(colnames_to = "name", values_to = "value") %>% group_by(name) %>% summarise( mean = mean(value), sd = sd(value), median = median(value), mad = mad(value) ) %>% knitr::kable(digits = 4) ``` Weighted standardization is also supported via the `weights` argument, and factors can also be standardized (if you're into that kind of thing) by setting `force = TRUE`, which converts factors to treatment-coded dummy variables before standardizing. ## Variable-wise *vs.* Participant-wise Standardization is an important step and extra caution is required in **repeated-measures designs**, in which there are three ways of standardizing data: - **Variable-wise**: The most common method. A simple scaling of each column. - **Participant-wise**: Variables are standardized "within" each participant, *i.e.*, for each participant, by the participant's mean and SD. - **Full**: Participant-wise first and then re-standardizing variable-wise. Unfortunately, the method used is often not explicitly stated. This is an issue as these methods can generate important discrepancies (that can in turn contribute to the reproducibility crisis). Let's investigate these 3 methods. ### The Data We will take the `emotion` dataset in which participants were exposed to negative pictures and had to rate their emotions (**valence**) and the amount of memories associated with the picture (**autobiographical link**). One could make the hypothesis that for young participants with no context of war or violence, the most negative pictures (mutilations) are less related to memories than less negative pictures (involving for example car crashes or sick people). In other words, **we expect a positive relationship between valence** (with high values corresponding to less negativity) **and autobiographical link**. Let's have a look at the data, averaged by participants: ```{r, eval=FALSE} # Download the 'emotion' dataset load(url("https://raw.github.com/neuropsychology/psycho.R/master/data/emotion.rda")) # Discard neutral pictures (keep only negative) emotion <- emotion %>% filter(Emotion_Condition == "Negative") # Summary emotion %>% drop_na(Subjective_Valence, Autobiographical_Link) %>% group_by(Participant_ID) %>% summarise( n_Trials = n(), Valence_Mean = mean(Subjective_Valence), Valence_SD = sd(Subjective_Valence) ) ``` ```{r, echo=FALSE} load(url("https://raw.github.com/neuropsychology/psycho.R/master/data/emotion.rda")) # Discard neutral pictures (keep only negative) emotion <- emotion %>% filter(Emotion_Condition == "Negative") # Summary emotion %>% subset(!(is.na(Subjective_Valence) | is.na(Autobiographical_Link))) %>% group_by(Participant_ID) %>% summarise( n_Trials = n(), Valence_Mean = mean(Subjective_Valence), Valence_SD = sd(Subjective_Valence) ) ``` As we can see from the means and SDs, there is a lot of variability **between** participants both in their means and their individual *within*-participant SD. ### Effect of Standardization We will create three data frames standardized with each of the three techniques. ```{r} Z_VariableWise <- emotion %>% standardize() Z_ParticipantWise <- emotion %>% group_by(Participant_ID) %>% standardize() Z_Full <- emotion %>% group_by(Participant_ID) %>% standardize() %>% ungroup() %>% standardize() ``` Let's see how these three standardization techniques affected the **Valence** variable. ### Across Participants We can calculate the mean and SD of *Valence* across all participants: ```{r, eval=FALSE} # Create a convenient function to print summarise_Subjective_Valence <- function(data) { df_name <- deparse(substitute(data)) data %>% ungroup() %>% summarise( DF = df_name, Mean = mean(Subjective_Valence), SD = sd(Subjective_Valence) ) } # Check the results rbind( summarise_Subjective_Valence(Z_VariableWise), summarise_Subjective_Valence(Z_ParticipantWise), summarise_Subjective_Valence(Z_Full) ) ``` ```{r, echo=FALSE} # Create a convenient function to print summarise_Subjective_Valence <- function(data) { df_name <- deparse(substitute(data)) data <- data %>% ungroup() %>% summarise( Mean = mean(Subjective_Valence), SD = sd(Subjective_Valence) ) cbind(DF = df_name, data) } # Check the results rbind( summarise_Subjective_Valence(Z_VariableWise), summarise_Subjective_Valence(Z_ParticipantWise), summarise_Subjective_Valence(Z_Full) ) %>% knitr::kable(digits = 2) ``` The **means** and the **SD** appear as fairly similar (0 and 1)... ```{r, fig.width=7, fig.height=4.5, results='markup', fig.align='center'} library(see) library(ggplot2) ggplot() + geom_density(aes(Z_VariableWise$Subjective_Valence, color = "Z_VariableWise" ), size = 1) + geom_density(aes(Z_ParticipantWise$Subjective_Valence, color = "Z_ParticipantWise" ), size = 1) + geom_density(aes(Z_Full$Subjective_Valence, color = "Z_Full" ), size = 1) + see::theme_modern() + labs(color = "") ``` and so do the marginal distributions... ### At the Participant Level However, we can also look at what happens in the participant level. Let's look at the first 5 participants: ```{r, eval=FALSE} # Create convenient function print_participants <- function(data) { df_name <- deparse(substitute(data)) data %>% group_by(Participant_ID) %>% summarise( DF = df_name, Mean = mean(Subjective_Valence), SD = sd(Subjective_Valence) ) %>% head(5) %>% select(DF, everything()) } # Check the results rbind( print_participants(Z_VariableWise), print_participants(Z_ParticipantWise), print_participants(Z_Full) ) ``` ```{r, echo=FALSE} # Create convenient function print_participants <- function(data) { df_name <- deparse(substitute(data)) data %>% group_by(Participant_ID) %>% summarise( Mean = mean(Subjective_Valence), SD = sd(Subjective_Valence) ) %>% cbind(DF = df_name, .) %>% head(5) %>% select(DF, everything()) } # Check the results rbind( print_participants(Z_VariableWise), print_participants(Z_ParticipantWise), print_participants(Z_Full) ) %>% knitr::kable(digits = 2) ``` Seems like *full* and *participant-wise* standardization give similar results, but different ones than *variable-wise* standardization. ### Compare Let's do a **correlation** between the **variable-wise and participant-wise methods**. ```{r, fig.width=7, fig.height=4.5, results='markup', fig.align='center'} r <- cor.test( Z_VariableWise$Subjective_Valence, Z_ParticipantWise$Subjective_Valence ) data.frame( Original = emotion$Subjective_Valence, VariableWise = Z_VariableWise$Subjective_Valence, ParticipantWise = Z_ParticipantWise$Subjective_Valence ) %>% ggplot(aes(x = VariableWise, y = ParticipantWise, colour = Original)) + geom_point(alpha = 0.75, shape = 16) + geom_smooth(method = "lm", color = "black") + scale_color_distiller(palette = 1) + ggtitle(paste0("r = ", round(r$estimate, 2))) + see::theme_modern() ``` While the three standardization methods roughly present the same characteristics at a general level (mean 0 and SD 1) and a similar distribution, their values are not exactly the same! Let's now answer the original question by investigating the **linear relationship between valence and autobiographical link**. We can do this by running a mixed-effects model with participants entered as random effects. ```{r} library(lme4) m_raw <- lmer( formula = Subjective_Valence ~ Autobiographical_Link + (1 | Participant_ID), data = emotion ) m_VariableWise <- update(m_raw, data = Z_VariableWise) m_ParticipantWise <- update(m_raw, data = Z_ParticipantWise) m_Full <- update(m_raw, data = Z_Full) ``` We can extract the parameters of interest from each model, and find: ```{r} # Convenient function get_par <- function(model) { mod_name <- deparse(substitute(model)) parameters::model_parameters(model) %>% mutate(Model = mod_name) %>% select(-Parameter) %>% select(Model, everything()) %>% .[-1, ] } # Run the model on all datasets rbind( get_par(m_raw), get_par(m_VariableWise), get_par(m_ParticipantWise), get_par(m_Full) ) ``` As we can see, **variable-wise** standardization only affects **the coefficient** (which is expected, as it changes the unit), but not the test statistic or statistical significance. However, using **participant-wise** standardization *does* affect the coefficient **and** the significance. **No method is better or more justified, and the choice depends on the specific case, context, data and goal.** ### Conclusion 1. **Standardization can be useful in *some* cases and should be justified**. 2. **Variable and Participant-wise standardization methods *appear* to produce similar data**. 3. **Variable and Participant-wise standardization can lead to different results**. 4. **The chosen method can strongly influence the results and should therefore be explicitly stated and justified to enhance reproducibility of results**. We showed here yet another way of **sneakily tweaking the data** that can change the results. To prevent its use as a bad practice, we can only highlight the importance of open data, open analysis/scripts, and preregistration. # See also - `datawizard::demean()`: - `standardize_parameters(method = "pseudo")` for mixed-effects models # References datawizard/inst/doc/standardize_data.R0000644000176200001440000002030714174263642017565 0ustar liggesusers## ----message=FALSE, warning=FALSE, include=FALSE------------------------------ library(knitr) options(knitr.kable.NA = "") knitr::opts_chunk$set( comment = ">", message = FALSE, warning = FALSE, dpi = 300 ) pkgs <- c( "datawizard", "poorman", "see", "ggplot2", "parameters", "lme4" ) if (!all(sapply(pkgs, requireNamespace, quietly = TRUE))) { knitr::opts_chunk$set(eval = FALSE) } ## ----------------------------------------------------------------------------- library(datawizard) library(effectsize) # for data # let's have a look at what the data look like data("hardlyworking", package = "effectsize") head(hardlyworking) # let's use both methods of standardization hardlyworking$xtra_hours_z <- standardize(hardlyworking$xtra_hours) hardlyworking$xtra_hours_zr <- standardize(hardlyworking$xtra_hours, robust = TRUE) ## ---- eval=FALSE-------------------------------------------------------------- # library(dplyr) # library(tidyr) # # hardlyworking %>% # select(starts_with("xtra_hours")) %>% # pivot_longer(everything()) %>% # group_by(name) %>% # summarise( # mean = mean(value), # sd = sd(value), # median = median(value), # mad = mad(value) # ) ## ---- echo=FALSE-------------------------------------------------------------- library(poorman) hardlyworking %>% select(starts_with("xtra_hours")) %>% reshape_longer(colnames_to = "name", values_to = "value") %>% group_by(name) %>% summarise( mean = mean(value), sd = sd(value), median = median(value), mad = mad(value) ) %>% knitr::kable(digits = 4) ## ----------------------------------------------------------------------------- hardlyworking_z <- standardize(hardlyworking) ## ---- eval=FALSE-------------------------------------------------------------- # hardlyworking_z %>% # select(-xtra_hours_z, -xtra_hours_zr) %>% # pivot_longer(everything()) %>% # group_by(name) %>% # summarise( # mean = mean(value), # sd = sd(value), # median = median(value), # mad = mad(value) # ) ## ---- echo=FALSE-------------------------------------------------------------- hardlyworking_z %>% select(-xtra_hours_z, -xtra_hours_zr) %>% reshape_longer(colnames_to = "name", values_to = "value") %>% group_by(name) %>% summarise( mean = mean(value), sd = sd(value), median = median(value), mad = mad(value) ) %>% knitr::kable(digits = 4) ## ---- eval=FALSE-------------------------------------------------------------- # # Download the 'emotion' dataset # load(url("https://raw.github.com/neuropsychology/psycho.R/master/data/emotion.rda")) # # # Discard neutral pictures (keep only negative) # emotion <- emotion %>% filter(Emotion_Condition == "Negative") # # # Summary # emotion %>% # drop_na(Subjective_Valence, Autobiographical_Link) %>% # group_by(Participant_ID) %>% # summarise( # n_Trials = n(), # Valence_Mean = mean(Subjective_Valence), # Valence_SD = sd(Subjective_Valence) # ) ## ---- echo=FALSE-------------------------------------------------------------- load(url("https://raw.github.com/neuropsychology/psycho.R/master/data/emotion.rda")) # Discard neutral pictures (keep only negative) emotion <- emotion %>% filter(Emotion_Condition == "Negative") # Summary emotion %>% subset(!(is.na(Subjective_Valence) | is.na(Autobiographical_Link))) %>% group_by(Participant_ID) %>% summarise( n_Trials = n(), Valence_Mean = mean(Subjective_Valence), Valence_SD = sd(Subjective_Valence) ) ## ----------------------------------------------------------------------------- Z_VariableWise <- emotion %>% standardize() Z_ParticipantWise <- emotion %>% group_by(Participant_ID) %>% standardize() Z_Full <- emotion %>% group_by(Participant_ID) %>% standardize() %>% ungroup() %>% standardize() ## ---- eval=FALSE-------------------------------------------------------------- # # Create a convenient function to print # summarise_Subjective_Valence <- function(data) { # df_name <- deparse(substitute(data)) # data %>% # ungroup() %>% # summarise( # DF = df_name, # Mean = mean(Subjective_Valence), # SD = sd(Subjective_Valence) # ) # } # # Check the results # rbind( # summarise_Subjective_Valence(Z_VariableWise), # summarise_Subjective_Valence(Z_ParticipantWise), # summarise_Subjective_Valence(Z_Full) # ) ## ---- echo=FALSE-------------------------------------------------------------- # Create a convenient function to print summarise_Subjective_Valence <- function(data) { df_name <- deparse(substitute(data)) data <- data %>% ungroup() %>% summarise( Mean = mean(Subjective_Valence), SD = sd(Subjective_Valence) ) cbind(DF = df_name, data) } # Check the results rbind( summarise_Subjective_Valence(Z_VariableWise), summarise_Subjective_Valence(Z_ParticipantWise), summarise_Subjective_Valence(Z_Full) ) %>% knitr::kable(digits = 2) ## ---- fig.width=7, fig.height=4.5, results='markup', fig.align='center'------- library(see) library(ggplot2) ggplot() + geom_density(aes(Z_VariableWise$Subjective_Valence, color = "Z_VariableWise" ), size = 1) + geom_density(aes(Z_ParticipantWise$Subjective_Valence, color = "Z_ParticipantWise" ), size = 1) + geom_density(aes(Z_Full$Subjective_Valence, color = "Z_Full" ), size = 1) + see::theme_modern() + labs(color = "") ## ---- eval=FALSE-------------------------------------------------------------- # # Create convenient function # print_participants <- function(data) { # df_name <- deparse(substitute(data)) # data %>% # group_by(Participant_ID) %>% # summarise( # DF = df_name, # Mean = mean(Subjective_Valence), # SD = sd(Subjective_Valence) # ) %>% # head(5) %>% # select(DF, everything()) # } # # # Check the results # rbind( # print_participants(Z_VariableWise), # print_participants(Z_ParticipantWise), # print_participants(Z_Full) # ) ## ---- echo=FALSE-------------------------------------------------------------- # Create convenient function print_participants <- function(data) { df_name <- deparse(substitute(data)) data %>% group_by(Participant_ID) %>% summarise( Mean = mean(Subjective_Valence), SD = sd(Subjective_Valence) ) %>% cbind(DF = df_name, .) %>% head(5) %>% select(DF, everything()) } # Check the results rbind( print_participants(Z_VariableWise), print_participants(Z_ParticipantWise), print_participants(Z_Full) ) %>% knitr::kable(digits = 2) ## ---- fig.width=7, fig.height=4.5, results='markup', fig.align='center'------- r <- cor.test( Z_VariableWise$Subjective_Valence, Z_ParticipantWise$Subjective_Valence ) data.frame( Original = emotion$Subjective_Valence, VariableWise = Z_VariableWise$Subjective_Valence, ParticipantWise = Z_ParticipantWise$Subjective_Valence ) %>% ggplot(aes(x = VariableWise, y = ParticipantWise, colour = Original)) + geom_point(alpha = 0.75, shape = 16) + geom_smooth(method = "lm", color = "black") + scale_color_distiller(palette = 1) + ggtitle(paste0("r = ", round(r$estimate, 2))) + see::theme_modern() ## ----------------------------------------------------------------------------- library(lme4) m_raw <- lmer( formula = Subjective_Valence ~ Autobiographical_Link + (1 | Participant_ID), data = emotion ) m_VariableWise <- update(m_raw, data = Z_VariableWise) m_ParticipantWise <- update(m_raw, data = Z_ParticipantWise) m_Full <- update(m_raw, data = Z_Full) ## ----------------------------------------------------------------------------- # Convenient function get_par <- function(model) { mod_name <- deparse(substitute(model)) parameters::model_parameters(model) %>% mutate(Model = mod_name) %>% select(-Parameter) %>% select(Model, everything()) %>% .[-1, ] } # Run the model on all datasets rbind( get_par(m_raw), get_par(m_VariableWise), get_par(m_ParticipantWise), get_par(m_Full) ) datawizard/inst/doc/demean.R0000644000176200001440000002112014174263635015511 0ustar liggesusers## ---- include=FALSE----------------------------------------------------------- library(knitr) knitr::opts_chunk$set( echo = TRUE, collapse = TRUE, warning = FALSE, message = FALSE, comment = "#>", out.width = "100%" ) pkgs <- c( "datawizard", "poorman", "tidyr", "see", "ggplot2", "parameters", "performance", "lme4", "lfe" ) if (!all(sapply(pkgs, requireNamespace, quietly = TRUE))) { knitr::opts_chunk$set(eval = FALSE) } if (!packageVersion("parameters") >= "0.14.1") { knitr::opts_chunk$set(eval = FALSE) } if (!packageVersion("performance") >= "0.7.4") { knitr::opts_chunk$set(eval = FALSE) } set.seed(333) ## ----------------------------------------------------------------------------- library(parameters) data("qol_cancer") ## ----------------------------------------------------------------------------- library(performance) check_heterogeneity_bias(qol_cancer, select = c("phq4", "education"), group = "ID") ## ----------------------------------------------------------------------------- qol_cancer <- cbind( qol_cancer, datawizard::demean(qol_cancer, select = c("phq4", "QoL"), group = "ID") ) ## ----------------------------------------------------------------------------- fe_model1 <- lm( QoL ~ 0 + time + phq4_within + ID, data = qol_cancer ) # we use only the first two rows, because the remaining rows are # the estimates for "ID", which is not of interest here... model_parameters(fe_model1)[1:2, ] # instead of removing the intercept, we could also use the # de-meaned response... fe_model2 <- lm( QoL_within ~ time + phq4_within + ID, data = qol_cancer ) model_parameters(fe_model2)[2:3, ] # we compare the results with those from the "lfe"-package for panel data library(lfe) fe_model3 <- felm( QoL ~ time + phq4 | ID, data = qol_cancer ) model_parameters(fe_model3) ## ----------------------------------------------------------------------------- library(lme4) mixed_1 <- lmer( QoL ~ time + phq4_within + phq4_between + (1 | ID), data = qol_cancer ) model_parameters(mixed_1) # compare to FE-model model_parameters(fe_model1)[1:2, ] ## ----------------------------------------------------------------------------- mixed_2 <- lmer( QoL ~ time + phq4_within + phq4_between + education + (1 + time | ID), data = qol_cancer ) # effects = "fixed" will not display random effects, but split the # fixed effects into its between- and within-effects components. model_parameters(mixed_2, effects = "fixed") ## ----echo=FALSE--------------------------------------------------------------- f <- "yit = β0 + β1W (xit - ͞xi) + β2B ͞xi + β3 zi + υi0 + υi1 (xit - ͞xi) + εit" knitr::asis_output(f) ## ----echo=FALSE--------------------------------------------------------------- f <- "
  • xit - ͞xi is the de-meaned predictor, phq4_within
  • ͞xi is the group-meaned predictor, phq4_between
  • β1W is the coefficient for phq4_within (within-subject)
  • β2B is the coefficient for phq4_between (bewteen-subject)
  • β3 is the coefficient for time-constant predictors, such as `hospital` or `education` (bewteen-subject)
" knitr::asis_output(f) ## ----------------------------------------------------------------------------- rewb <- lmer( QoL ~ time + phq4_within + phq4_between + education + (1 + time | ID) + (1 + phq4_within | ID), data = qol_cancer ) ## ----------------------------------------------------------------------------- model_parameters(rewb, effects = "fixed") ## ----------------------------------------------------------------------------- random_parameters(rewb) ## ----------------------------------------------------------------------------- library(ggplot2) library(poorman) library(see) set.seed(123) n <- 5 b <- seq(1, 1.5, length.out = 5) x <- seq(2, 2 * n, 2) d <- do.call(rbind, lapply(1:n, function(i) { data.frame( x = seq(1, n, by = .2), y = 2 * x[i] + b[i] * seq(1, n, by = .2) + rnorm(21), grp = as.factor(2 * i) ) })) d <- d %>% group_by(grp) %>% mutate(x = rev(15 - (x + 1.5 * as.numeric(grp)))) %>% ungroup() labs <- c("very slow", "slow", "average", "fast", "very fast") levels(d$grp) <- rev(labs) d <- cbind(d, datawizard::demean(d, c("x", "y"), group = "grp")) ## ----echo=FALSE--------------------------------------------------------------- ggplot(d, aes(x, y)) + geom_point(colour = "#555555", size = 2.5, alpha = .5) + see::theme_modern() + labs(x = "Typing Speed", y = "Typing Errors", colour = "Type Experience") ## ----echo=FALSE--------------------------------------------------------------- ggplot(d, aes(x, y)) + geom_point(colour = "#555555", size = 2.5, alpha = .5) + geom_smooth(method = "lm", se = F, colour = "#555555") + see::theme_modern() + labs(x = "Typing Speed", y = "Typing Errors", colour = "Type Experience") ## ----------------------------------------------------------------------------- m1 <- lm(y ~ x, data = d) model_parameters(m1) ## ----echo=FALSE--------------------------------------------------------------- ggplot(d, aes(x, y)) + geom_point(mapping = aes(colour = grp), size = 2.5, alpha = .5) + geom_smooth(method = "lm", se = F, colour = "#555555") + see::scale_color_flat() + see::theme_modern() + labs(x = "Typing Speed", y = "Typing Errors", colour = "Type Experience") ## ----echo=FALSE--------------------------------------------------------------- ggplot(d, aes(x, y)) + geom_smooth(mapping = aes(colour = grp), method = "lm", se = FALSE) + geom_point(mapping = aes(colour = grp), size = 2.2, alpha = .6) + see::scale_color_flat() + see::theme_modern() + labs(x = "Typing Speed", y = "Typing Errors", colour = "Type Experience") ## ----------------------------------------------------------------------------- m2 <- lm(y ~ 0 + x_within + grp, data = d) model_parameters(m2)[1, ] ## ----echo=FALSE--------------------------------------------------------------- ggplot(d, aes(x, y)) + geom_point(mapping = aes(colour = grp), size = 2.2, alpha = .6) + geom_smooth(mapping = aes(x = x_between, y = y_between), method = "lm", se = F, colour = "#444444") + see::scale_color_flat() + see::theme_modern() + labs(x = "Typing Speed", y = "Typing Errors", colour = "Type Experience") ## ----------------------------------------------------------------------------- m3 <- lm(y ~ x_between, data = d) model_parameters(m3) ## ----echo=FALSE--------------------------------------------------------------- ggplot(d, aes(x, y)) + geom_smooth(mapping = aes(colour = grp), method = "lm", se = FALSE) + geom_point(mapping = aes(colour = grp), size = 2.2, alpha = .6) + geom_smooth(mapping = aes(x = x_between, y = y_between), method = "lm", se = F, colour = "#444444") + see::scale_color_flat() + see::theme_modern() + labs(x = "Typing Speed", y = "Typing Errors", colour = "Type Experience") ## ----------------------------------------------------------------------------- m4 <- lmer(y ~ x_between + x_within + (1 | grp), data = d) model_parameters(m4) ## ----------------------------------------------------------------------------- m5 <- lmer(y ~ x_between + x_within + (1 + x_within | grp), data = d) model_parameters(m5) ## ----------------------------------------------------------------------------- set.seed(123) n <- 5 b <- seq(1, 1.5, length.out = 5) x <- seq(2, 2 * n, 2) d <- do.call(rbind, lapply(1:n, function(i) { data.frame( x = seq(1, n, by = .2), y = 2 * x[i] + b[i] * seq(1, n, by = .2) + rnorm(21), grp = as.factor(2 * i) ) })) # create imbalanced groups d$grp[sample(which(d$grp == 8), 10)] <- 6 d$grp[sample(which(d$grp == 4), 8)] <- 2 d$grp[sample(which(d$grp == 10), 9)] <- 6 d <- d %>% group_by(grp) %>% mutate(x = rev(15 - (x + 1.5 * as.numeric(grp)))) %>% ungroup() labs <- c("very slow", "slow", "average", "fast", "very fast") levels(d$grp) <- rev(labs) d <- cbind(d, datawizard::demean(d, c("x", "y"), group = "grp")) # Between-subject effect of typing speed m1 <- lm(y ~ x_between, data = d) model_parameters(m1) # Between-subject effect of typing speed, accounting for group structure m2 <- lmer(y ~ x_between + (1 | grp), data = d) model_parameters(m2) datawizard/inst/CITATION0000644000176200001440000000116014113652110014506 0ustar liggesusersbibentry( bibtype="Article", title="datawizard: Easy Data Wrangling", author=c(person("Dominique", "Makowski"), person("Daniel", "Lüdecke"), person("Indrajeet", "Patil"), person("Mattan S.", "Ben-Shachar"), person("Brenton M.", "Wiernik")), journal="CRAN", year="2021", note="R package", url="https://easystats.github.io/datawizard/", textVersion = paste("Makowski, Lüdecke, Patil, Ben-Shachar, & Wiernik (2021). datawizard: Easy Data Wrangling. CRAN.", "Available from https://easystats.github.io/datawizard/" ), mheader = "To cite datawizard in publications use:" ) datawizard/inst/WORDLIST0000644000176200001440000000127314164750346014570 0ustar liggesusersAdressing Analysing Asparouhov BMC Bafumi Carle Catran De Fairbrother Gelman Giesecke Giesselmann Heisig Herrington Hockety Hoffmann Joanes Lumley Minitab Mundlak PHQ PSU REWB Rescale Rescaling Routledge SDs Schaeffer Verkuilen Verkuilen's Winsorize Winsorized Winsorizing al behaviour de doi easystats effectsize endogeneity et geoms github https io leptokurtic lme meaned mesokurtic modelling nd partialization platykurtic pockety proprties pth quartiles reproducibility rescale rescaled rescaling stackexchange tailedness th tibbles unitless untransformed visualisation wikipedia winsorization winsorize winsorized wockety