From 867585c7cc13e2f8961a25f44da83cd87cbd8626 Mon Sep 17 00:00:00 2001 From: Hayden Hargreaves Date: Mon, 28 Apr 2025 23:40:35 -0700 Subject: [PATCH] WRITING: Started writing the functional article --- ... Programming Language: Featuring Elixir.md | 257 ++++++++++++++++++ static/journal/elixir-logo.png | Bin 0 -> 62250 bytes 2 files changed, 257 insertions(+) create mode 100644 src/journal/What is a Functional Programming Language: Featuring Elixir.md create mode 100644 static/journal/elixir-logo.png diff --git a/src/journal/What is a Functional Programming Language: Featuring Elixir.md b/src/journal/What is a Functional Programming Language: Featuring Elixir.md new file mode 100644 index 0000000..de9c239 --- /dev/null +++ b/src/journal/What is a Functional Programming Language: Featuring Elixir.md @@ -0,0 +1,257 @@ +Date: 2025/04/28 +Desc: I have decided to begin the journey of learning functional programming. Here is my experience. + +# What is a Functional Programming Language: Featuring Elixir.md + +Jet Brains Logo + +
+ +###### Author: Hayden Hargreaves + +###### Published: 05/??/2025 + +## Background + +Many programmers tend to avoid **functional programming** due to its perceived complexity, myself included. +But is functional programming really that much more complex? My goal is to break my fear of functional +programming, [monads](https://en.wikipedia.org/wiki/Monad_(functional_programming)), [functors](https://en.wikipedia.org/wiki/Functor), and all those *scary* terms frequently tossed around in the functional +space. + +How am I going to do this? Well, I am definitely not going to start with [Haskell](https://www.haskell.org). For those who have +never seen or heard of Haskell, this decision might be hard to understand. I will not explain myself too +much. But I will provide a code snippet from the Haskell docs and let you decide if it a worthy language +for someone who has never written a line of functional code in their life. + +```haskell +primes = filterPrime [2..] where + filterPrime (p:xs) = + p : filterPrime [x | x <- xs, x `mod` p /= 0] +``` + +Personally, the Haskell language is far too esoteric for my liking. Eventually, I would love to be able +to, at the very least, **read** Haskell code, but not yet. So this put me a spot to select from a large +selection of languages. I did not want to use a language like **Python** or **JavaScript** which can be +written to *seem* functional. No, I wanted to write a **real** functional language. A common list of as +follows: + +- [Haskell](https://www.haskell.org) +- [Erlang](https://www.erlang.org) +- **[Elixir](https://elixir-lang.org)** +- [Scala](https://www.scala-lang.org) +- [Clojure](https://clojure.org) +- [OCaml](https://ocaml.org) +- [Common Lisp](https://lisp-lang.org) + +To avoid offending all of the "functional bros" I will not explain my thought process much. However, I +will mention that I tried to learn **OCaml** a years ago and could not enjoy it. Maybe that was because I +was not as advanced as I am today, or maybe I did not have the proper mindset. Regardless, that ruled +out OCaml. I have no experience in any of the other languages, so I did what most would do. I let Reddit +decide! The [Elixir](https://www.reddit.com/r/elixir/) Reddit page was very informative as well as providing me with a link to the +[2024 Stack Overflow Survey](https://survey.stackoverflow.co/2024/technology#top-paying-technologies) which described Erlang and Elixir as the top two paying languages. + +With that out of the way, lets talk more about what functional programming is. + +## What is Functional Programming + +At the most basic level, functional programming is defined as a ["programming paradigm where programs are +constructed by applying and composing functions"](https://en.wikipedia.org/wiki/Functional_programming). In laymen terms, a majority of the code written in these +languages is just functions. Everything can be expressed as some composition of functions. For this reason, +a strong understanding of mathematics can be hugely beneficial to functional programmers. + +> +> "Functional programming evolved from lambda calculus" +> + +#### Pure Functions + +Another key difference between other paradigms is the strict immutability. Functional programming introduces +the term "[pure function](https://en.wikipedia.org/wiki/Pure_function)" which is any function that can be run (any amount of times) and will always produce +the same output, **and cannot be affected by (or affect) any mutable state.** The intention of writing pure +functions is to prevent [side effects](https://en.wikipedia.org/wiki/Side_effect_(computer_science)), "any observable effect other than its primary purpose." + +To simplify, the two properties of a **pure** function are: + +1) The function will return an identical result for identical arguments. With ***no*** variation for any reason, +including reference arguments. +2) The function has no *side effects*, no mutation of local static variables, non-local variables, etc.) + +An example of a pure function in C++ may look as follows: + +```c++ +void f() { + static std::atomic x = 0; + ++x; +} +``` + +The function `f()` is pure because it follows the above properties. + +```c++ +int f_i() { + static int x = 0; + ++x; + return x; +} +``` + +However, the function `f_i()` is impure because it returns a variation of a static variable. + +Countless more examples of impure functions can be found [here](https://en.wikipedia.org/wiki/Pure_function#Impure_functions). + +**NOTE:** I wanted to write these examples in Elixir, but due to its functional nature, it would be very hard. + +
+ +#### Functions are First Class Citizens + +Another key property of functional programming is that functions are known as [first class citizens](https://en.wikipedia.org/wiki/First-class_citizen) which +means they can be assigned to variables, passed into other functions as arguments ([higher order functions](https://en.wikipedia.org/wiki/Higher-order_function)) +and returned from functions. This is not uncommon in modern programming languages so I will not provide an +in-depth explanation. + +
+ +#### Recursion + +The death of many modern programming languages, recursion, is one of the many strengths of functional languages. +[Recursion](https://en.wikipedia.org/wiki/Recursion_(computer_science)) occurs when a functions calls itself. This is the most common way to implement [iteration](https://en.wikipedia.org/wiki/Iteration) in +functional programming. For example a simple loop in any common procedural language: + +```c++ +std::vector numbers = {1, 2, 4, 8, 16}; + +for (size_t i = 0; i < numbers.size(); i++) { + std::cout << numbers[i] << " "; +} +``` + +Can be written in a similar way using recursion with Elixir: + +```Elixir +def print_list([]), do: IO.puts("") # Base case: when the list is empty, this function is called + +def print_list([head | tail]) do + IO.puts(head) # Print the first element in the list (head) + print_list(tail) # Call the function again with the remaining elements +end +``` + +Programmers coming from other languages might freak when they see so much recursion, and it is not wrong to +worry. In procedural languages, recursion requires the stack to keep a record of each function call, and when +recursion is used to extreme levels, the stack becomes very large and uses lots of memory. Not very efficient! +However, functional programming languages found a solution, [tail recursion](https://en.wikipedia.org/wiki/Tail_call). Tail recursion allows the compiler +to creation a subroutine which represents the final action (final function call) and place it onto the stack, +allowing the program to jump right to the end without having to store the entire recursive loop in stack memory. +This reduces the memory stack space from linear or O(N) to constant or O(1). A huge performance increases in +recursive programs. + +
+ +#### Strict vs. Non-Strict Evaluation + +Functional languages can be categorized by *strict (eager)* or *non-strict (lazy)* evaluation. The different +evaluation styles refer to how arguments are processed inside an expression under evaluation. This concept +is quite complex and this overview does not warrant the necessity for such details. However, a simple example +can explain (on a higher level) the difference. **"Under strict evaluation, the evaluation of any term containing +a failing subterm fails.** An example makes this a bit easier to understand. We will use the same example to described +both evaluation types. + +``` +print length([2+1, 3*2, 1/0, 5-4]) +``` + +In a language categorized as *strict*, the expression above will fail, due to the term `1/0` failing. However, in a language +with *non-strict* evaluation, the length expression will return 4 because it does attempt to evaluate the subterms, which +result in failure. + +To summarize, *lazy* evaluation does not attempt to evaluate function arguments unless their values are required for the +function call itself. + +***NOTE: Elixir is a strictly evaluated language.*** + +
+ +#### Referential Transparency + +Another very detailed differentiation from imperative programming languages. [Referential transparency](https://en.wikipedia.org/wiki/Referential_transparency) stems from linguistic +roots and language by extension. Applications in this context (computer science) states that "a language is *referentially +transparent* when an expression built from another, replaces the expression with a subexpression which represents the same value +and does not change the value of the expression." That sounds very complicated, and it is, but to be simple, expressions cannot +be modified, only replaced. + +Functional programming languages do not have **assignment statements**, because a value can never be changed once it is defined. +This is a result of the language allowing variables to be swapped with their value at any time. Therefore, functional languages +are referentially transparent. + +Another example will make this easier to understand. Consider the following assignment statement from [C](https://en.wikipedia.org/wiki/C_(programming_language)). This assignment changes +the value assigned to the variable `x`. If the initial value of `x` was to be `1`, the result would be `10`. But when called again, the +result would be `100`. Since replacing `x` with `10` or `100` gives the program different meaning, it is not *referentially transparent.* + +```c +x = x * 10 +``` + +However, consider the following elixir function, `f(x)`. This implementation is *transparent*, as it does not modify the value of x, +which results in the absence of **side effects**. Instead, it returns a value which can be used to replace an existing value. This +is the standard in functional languages which results in their referential nature. + +```elixir +def f(x) do + x + 1 +end +``` + +
+ +#### Data Structures + +The last key difference between imperative and function languages is their representation of data structures. Functional languages +admit a [purely functional](https://en.wikipedia.org/wiki/Purely_functional_data_structure) data structure, where the biggest difference is immutability. Purely functional data structures are +strongly immutable, which allows for many advantages, such as [persistence](https://en.wikipedia.org/wiki/Persistent_data_structure), quick copy and [thread safety](https://en.wikipedia.org/wiki/Thread_safety). +Of the advantages listed, I will only go in detail about one: **persistence.** Purely functional data structures are persistent which +means that when modifications occur, the previous state will be kept unmodified. A common comparison is to the non-persistent array +which admits a **destructive update** which cannot be undone, since no previous versions are kept. + +***NOTE: Elixir is not a purely functional language and as a result, does not implement a purely functional data structure.*** + + +## Why Functional? + +That was quite a long explanation, but it covered almost everything you would need to know to *begin* learning a functional language. +However, I did not explain why **I** decided to learn. Functional languages are rarely faster (or even as fast) as imperative languages +like C, so the choice was not made for performance. The most obvious choice: ***I want to.*** So many software developers spend too much +time worrying about what is "the best" or "the fastest." Maybe they should just be learning what they **want.** + +Like I stated in the background, I, like many others, run at the sight of functional languages, but its about time I break that fear! +The next sections of this article will highlight my experience learning the **Elixir Programming Language,** so if you were only here for +the functional definition, this is a good stopping point. + +## Why Elixir? + +I have talked a lot about Elixir language but what exactly is it? Obviously its a functional programming language, but that's very vague. +"[Elixir](https://elixir-lang.org) is a dynamic, functional language for building scalable and maintainable applications." Elixir runs on the [Erlang](https://www.erlang.org) VM which is +known for creating fault tolerant, low-latency, distributed systems. The language can be installed and testing in the interactive elixir shell +`iex`, similar to pythons interactive shell. The interactive shell was a great tool for my own learning while reading through the documentation. + +Elixir was first released in **2012** which makes it a newer language, but not as new as some (Odin, or Zig). With this comes a large user base +as well as a large developer ecosystem. But, what makes elixir stand out in that aspect is its compatibility with Erlang. Erlang, which appeared +in **1986** has a huge ecosystem of libraries and tools which work seamlessly in Elixir. Elixir comes packaged with a build tool, `mix` which allows +for compilation and interpretation of elixir code. Elixir *also* has a dedicated package manager, `hex`, which is comparable to `npm` in terms of +use. However, Elixir's ecosystem does not compare to the JavaScript ecosystem (what language does?). + +One of the most popular uses of Elixir is with the [Phoenix Web Framework](https://www.phoenixframework.org). Phoenix, a full stack web framework that boasts its countless features +which include **LiveView**, a tool for building real-time web applications. Another popular library, **[Ecto](https://hexdocs.pm/ecto/Ecto.html)** is a SQL ORM that is built into the Phoenix +framework and allows for seamless database connections from your web application back end. (The Phoenix framework will come up more later.) + + +But who cares? Well, many large companies you have heard of use Elixir in their software. Some of which include WhatsApp, Discord, Heroku, Pepsico +and [more](https://elixir-lang.org/cases.html). + +## The Beginning + + + +The repo: +https://github.com/haydenhargreaves/ElixirTodo + diff --git a/static/journal/elixir-logo.png b/static/journal/elixir-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..737034fa54b2726b22b740d2e1f8b0f463ae05b2 GIT binary patch literal 62250 zcmYgXbzGEd(_WSqB$bpB5TuckZYcqgZj|nhB^QvAQlwi&knT>UUAkeHB^Fq^VQD_j zQP2B5e=fWCJ#)>>HP_7ZBkGl!!u@+x_W%IEeI-S?*8l+eIskz71qbWy6OY^NUI5_m zKuJzo%Li?HzT1~k#k}X>7MkD)>X;hv&qwd{NKNA%80crqEU6m2zd}%j+o}3)m*Fx# z&9y_P-8F8@R@?CK4TVq8@Udc1+1SmkR-tMa_CeK+S&d(7i=QJ2@xRX=^n;Hn$y&Q4 zRx5_sK=v@v?~ieh<5hoN@$Zwk+~XkXPL2HcQOxa)*n<_01AzY1NK*;zyD#K-EIv~( zfBgFizImgZnuA8vk!9+$lvqL@tZDoa&!Q{w$CKZGCs{xEktGSj%H^#%|5l)by|bKA z#dSzltpL#TG0ltjS@`|6w>TepB=JT7A_uXTFI1*`hRwx;iGVM=uNASAE;Cx3e_J@} z(yWpx)InrZ*LHkNs-oK)1Qf#sS5|KDHK2Yhqrd;xVjS0uJBvtp0QT3#@nwYGFC;Nb zAi$0<-jT-1soqmG8vZ9ibM3c=e;g29KPW@^12{?okpqWoDLKB5&nd6bDzMDbe)gI1 zNe=Lu@pNPDas2hhb!pdKBnZ_gZ&qr3JCQLT|9`%h zEni&`)%YA=vM5lSf|hH4SR8M4{Nk^O#l)c=CpN?1-77;;4*d9IOS`msDxMyO$5jTZ zjMIVc#&tvlT;eNh#6#0fuR`V*Lu@JaXffxe;5uUXPbg=l<3)zJ@xjcw`j>N^@mvmc z7sh5;l)E?R5CHIiabIzsBRb@0dh)ET2Kidou2<;m+_nbMwq>RXZ?fw8gJ^ z_WdQ<&uig_q<_<)txLE917F=A0sjQiRl6d0f&;o}Q6}$*v4$NzA>VaR%+lCSxAw%l zcesAv5KK$H*Yv!D13gqd;QEIGc^Tcg`XY&$uhCB8bg&~^__I(M502rUK)HV(rV*t~ zZU98a;Brn@QWR!#;cZ4L=D0&UP0ZDGBm9MjLzX3>YS#+ z2iSuaXSy9vFn>nQ;*h7K_`T4-`w0n+S-y-q7IuFDd-30|j?i2vC}P?JZeYu`lM6Oa zIwgUQI-|xuL3vP$mD!G6PAB2WnC3R}hRWIMA3OB_L#_qZeO~Eo+#&|kzlqAHxe@u^ zRSBSUxHoHV$EN^y%(s|q-pc0zTi!DS#|AqMmi`BN%IWeIPI6qp<<+Wm^O?aoK@jcM z>mYQaRk!nj)Vb}C-ZQ3%Ru>`greexQU(YkL7XGvO`%a#J!`#&DC)&G8aE{?v)nmf6d*~*{F z(Kh!ooEz%fXQp9h9%Hl+|W?)#OOV7_<-KgVyMEn6D+rn#tezZo&ntVe(CtC4q^$4yx^t zw@Ii!#DfLnSw5seDOUjT39fCfyT(qEasXJWqE}B#+;M`Xwu$M{Y($utEKY4it|)EV zHDh(Uf)OX8!TIjBK_T0pGfvNtbGO&(PHMkxnUz-0TwpQ7$5+ser!j7-yBO~X5%VY6 zVmPI^OSn*J3MsH_8a5UzN7roa*?{EJg`fgE_f{JL{dr20_7OX4#Ce!0o$IIHgnQQ_ z*leD|Bx?AZe3w1VKGrpI2syuAya+p+=k2g>G79#HG1iJ7NvPc(FVgL;KAx zJ)ql}f+li1RbqO`ClCI$>!Z~0?)kk69GCS7!*X*PZgq!STXY=8m%IVar!x=UD$nd< zdG@$H+`yK6L{PMn6SUA%GiYIH?Q>l4FwTBy_dFBbLK?f4V~VNyv!q?ui5;m zVlYUg`By=s<6c<*;)Sq1vTJ*-h5uTw zulP4!a=_~sEYAsS_CC8%OA>GZ8EZRD=h~^`c>G>=SB>7dx-a_LqL(!W$077)$=&-STu_v{d3wGFUFw8NgA}OoPZzWQ&nB$cBiW8;9f$E#>ViA_ zwBVjl?3Fb%J5Ro?MaI2s;lth8lQ3B3u4A?R1sTyiQ0UW-Q+<0kU`gQ6G$)s;?lPRo zo#j8X&=CG;dT2F1*L@$Ch7PN-q>2w01uD`;x#7zljCnPv|o#yZX8EELIxkC%9c zM~sH}y#qd&ffX9rD`hSkO`zvgHIs1=jyG&Tb%bGq z-&6hoZE>%d-@K-nyMVJh>+gcbhjmBgTwErGppRc{u_cAMtBm(v*sn>f8^36>zIl)# zjo5@b&V5sIzm7S;u@J!;6thtK-g4?R`{0tGlP+TK!MGjiTr+`<7cn(4-;Z(Hk5 zV&fBiQEchm?T9A$;04x)U-&1e(LoV~FZYoo^ zj9--rcP4oCsz@=Qsk-lz2rdy zEH5c_Z#yfdwaVtp^PwFe19)uqiKau3rSSl(g+>$w7c;2oVQ_9__^A_^^q^=Z-5yTT7KuH{mJIVEgEoY>xXQ_R9+1n6vufAm( z(!{yvWB}&`5ib_Fn2b0)HIG?!%do|*WU#^yarKIn8YHulkRX1$i}sri4lFT_eGsRF zBTu6td zcXU+gQ`QPDj-UOZ7Vu4X#1UPo)O4EvgQ55pH@cV-L$`BYm0_F>G0{9B&6KSfbC3xA zI1hCb!R9c$%iVku7spelDqW!skBm;bKByXn!v5nXIpv6KMnRnlg;%!86=iOr@6E!T z&Ph~#O^bI~{bw4X9nY_3MVaU?c6Xu$v`4hDF?aJp(VQhim8ry!W)Qy(B0iAEJoY&{ zjpstUT<*H@i*OF%0+tbm+ZQcP)+Kw_%MMm<8D2^~kB+ju@VHN;h&8=uP4!mE2ddO@ z#0RVf&NKWek&*UX7ZWg}+V_~^tay`nqKQqArE{SCV>`@%9!>TF0oN3R!FWB4hC zp0Bd3E}Iespo%=u-e{1(7kdf%WAWeTEJx$6e>RkQ0s26$=GCX}KA-Q2o;~B&^Z$LQ06*20@h&$q7x}{UvS1(sglbCLf zQ6?%t7~OodH6PR<^Iv|(EwupZztE*^BFa zO;@3=LgOYxGsY~Op5hY3IGWvD@r?R)?NP4sQ{hkKkar16RncjI+*r+UYs97BlH!uI z=oD-if4f^(+6q0C;2l@!@5^RGc2nW8sFj-+Sq1fzwc#|$F%Qubd8w`pUJO=Bo5|Gz z|JGrSf>gYa^R)$`yLq-s1fq41Hy~NJeOr8H&}^cVhq|S8HQ=pS)&s7uC7x&*-&RHJ z><As3-VE5X_JhZ|v7 z3KztH@Oyo{2t$A%`S7m|nJMA~D|;nX>Q<{QuemuWDhf)(y(s$EO`;J^@pgi3bTeEt z&lXgw5+#J&H);D~c3@Y<`NRO8afJ0ER>UMNYT`jRi<9JF3V#(3*s}|lVNH%X=3-}i zTuz8|9>W`beX891c9$(j`}es(-xkj;7I_z($o}0+Y;N!=+R7o|IJbZ52;F;EWsf(N zFQloriq?w!S50~zj3^n+`E*pkEG0@VKE=8lxA6S^m&3!a_(s6_2u*zO}D{}rgvg6k{t1a zlBroAg2Ms$tb6Y8w-PkPZ#U#ewApsVTCYZyxhIbPQ{wBN;o-PJfUpc0ellbaNd6dM%HdX+uS;X6 zSvx#?C~+$+Fj<*QE`CsbeP56|ea{|O6-tX1$y~d$U5##K)SKR}E!7+e_dniG`jfx@ zzrfj>=c;D$Y4OEK8FKrROuukzZAidPGOD|w#C2VAb-wzc(QP5`T*GVu4Y?WDvuklZ zyTiKYZ$_uKCdq~bvWnio`8`(Ghb0?Se+R<|EOjP_t5!0ozcIu?LS3JJAtL z8@;_q3sBQCd3SdHy8KUHLgKC;OpOk6y(N%(d%kk2V20k;NqC_iT0JPYbAD9YVz~9A z;TY)$F_4*|Fc=ItczfgEwZ)}4hy@f9Es8~?$5Jt27#JbCjr13Sj`v5Ue*2rrnA@8L zdX`m$6k2t|p?9a>TCJ9?bKD*#8!NaRvW%%r)f8RD-!)<4Sg-x5&d{oTRBs*Z4{3>sEe>O+NNBzy2>dy0F?8Wb@ zNtUoi))Xk9iol{(hpxqHTwAtDzV=(XQ|veQEMJD!1agGaFti|u&lq5mS??4=JX6yY z@2GpLFm2?1u|4juMhWS4+ztDq_oO5{X-1SeO0!LTy5#T|WGRL_D^zvGooBW3-^5n+ zpfOH3#|h1}p1OHK{rxAe*8d)PCmcvz zN^O578+moP*o(kEK@b~2#u(ReHTYbNp`cw4%akuBR^`sqJ>d3Swo~4Q+-2U`4!(~* zX8lO#ECU~qsmlW5zO>WLVWDOt=!V*C4@3#l{6-gd-8K4tRKH#8ElEYF6c;y|U!*cc zr|I~iQ!F~Q#3h;=r+{!fNm4q)^cFPB!&^j)bWA=+EyBar>$RD*3b~FtcgvwhMsw zFgK^J&dsN}PE!X7B^OMc7KtKfCEqzsK!>sF>f!cj$ClzN9`Z)l8yWhqjZ54?rFoE5 zH%eVp@Ym?QN5+3RoMc4ujT5lhW4An67qx{vY`|@87Q0HI5+3*shN{@PbWj- zzZe%4nGbfljOi}vj%#A<;%oFPIZY%stB@#5mrRUc)Vt+QIceW%^}ZIhb!Yi~INJ5W zpy@WSUc}Ng$+fmzLkLhoP_a8%;aBzn-pp-W?V9FlV+d!jv>1MI->IySf#yvU?!sV6VZg==cQQ9^B{rs~{@)Z%rbn9BWU^(G@LQ{qXeA`Z|j<1RZA02EW>n z?m51k%oGZThc2z$i5sZrT&2z>a>hEbf1YF1sQ2D6;6sO&NNYVb3v-SgF$BpK2SC(2 z_5fa#3uTUHE@Nx7zteqHxHNkKz=aCpZV7*ZUIpJ?&}|dXqxSBsrNpCmAqBNIs8Ou! z#;%b{Ll!O11ig%jH1!Ai2lVUJh1T#|9ISH$)-`j+B*XysC{}KHZoJXW;#W85)*wl) z$eU8hTbJMCiyZL6oqPy;k${we_p9rSB<|jeb$|zss;KA)?#9Wa1?t?${!zM%gy?z+ zBQ*nOnXVzG&?jFG&Dp+;^Q6lyoDs)PiCimQw8-QSkcY9I#%7CMms4jLl(A?Mik%dZOqpM)s#xk~f9VZ0 z-U1qR<`ts1V+%CuKAv>&Z)T^r_pd6uHg<+9q#WE%3tMq)v7C4aCqvRnx&Q3-z&B#r z!$AVzI2+CLtLg~9jOr;ygdl!>(t6-OqO~WcSg;EPtXt>B%DL8bDw1yZqXY_JUWRYA z11;vUISWGhO*QF%J#2&tewrnPA{WLDZt=jZ_KlC4v;8)N{DRv5NWDAA5NH*f$wS1Q zzNpBJmZ?t05vPEebX&uDD2cD<#T6@Ic+{pa0t9qwXtR(adtn`M%%O;yRlyJ&R76T(n1bM2MiGViRu*7cqRxa_utaIjA)LwV z%-Vjsnu1DLPyV6k)I|WoZ`!WBs?@Xupx6mrobmP*_jv>{P2?8Ob(<8QIi% zAaz^>el${+h34;kMNJj7=-MfC%VBY2t?i+}0Z%laFYs39$fw+5p0{@lmTuM^&~1@I z2a`YCJX`p)KE+*^e13KEc@e;*Mv4P!0EhrMQmAvO4Q28&=p^svQT38a@aNTYmhsP4 z?RTn^IxT9BS;T+pLv0$Hpa)@Be-IrPKQ)cvRuEQB*^LV0GNEUCDMJ8q+Aj!2^*0_1 z%BZ;kXkAl^YeWAF5GL;r2!In6bOm#gDIo5tKJ@}sx5jqE{HyZS54RoexAi#m)vO3+ zH|IdY=8}CJ)u3j1py=yp8SE-2fL)-(&Tx1oN=#ILuQ5iwNm5le^a^J9n>O!;s;weq zeXzLAGy5Zb#6AF@UY{HAVu14Ht;wFPL2J*EhluJ3{~$kZQaG>nr`eBNKDy%E0tlz% zdiCK?#AawCSE}qKLg}~hKa+1K&uBVKhNP$F4s)Pbm)2V2gpx&H{$KQQk?oXHsOJp6 z#!#%-PD?YoeJz@{mhU0O_Z#yUe7W!iy|VT`7edkNcKIgT)c13 z6&UgR4A6wYA*p9R6Bjug%}P+L7b8?gh6_khN5YLidP!00cB%m#Kl8~*OY60oILCsx z@r;vCYeLa1_>gY+J{$;ARMS~~eM|d=#>0S=zb(MIjt+J<2!J_t`qWR(ua20#tDvQV z#nydUU4;x{;FYX3S)qn}?SxGBH(FymhD{pU-)1r9R1(UtPZqS8Vn0L#VYheUQpY&F z`&=UZb(LkY;6yZaC@2D+v#vGD_;2x}T|<|;^-qjEa6xv?LT1L;T+{Dn?r*%PF{6owvL&(XuhEgcyt| z#^LHt(@W>dMbSd`$I{3o@#uRh48B2eeNq?1p)P3_} z?|%uVxe>@>Uqn8(>gImxe@reCJXM|SjqW7V1n@Qi3s9`o|4e>3)@ z+BYpnl#NCJi9m)e5tk@s#}8hYm31v!9uMa&iI*MK`mn~w{M(EbSn}Uc3FP_FPEDS> zvqhIt4V8K+KzhwOxB=`Pee|J_${#p}2-0+AkmqhPY91E-yD8(YFGz*#)jT|^HkcPk zmUYB}@Rtt`58vCkPWFaij=CK6Z5#8f!-Np!X zK;ug!{+Z*V?Vk07ggNB$e+AOxbGIX?e{YgiQ*Vkz1SzOTha0FmqkB=ahJAo+oM1SD z8s_tQvm6#2Nptj~j|@!8&uh*trZ-z-A}o7^Y{anQ3yM#C@4MrdUH09M*^fx-Li{B2 zBrm?d4^;debl}BwtM5%SdoFwChne+mx&Bo)vx;90M=pN$X9f5h4X@H(Abnx)&fut5 zgTu@3M84V79v!^J(~Ke$1NYht@6EXzI)Y8PvvA{HoFsq{YFdn zB4j>L@+43a-tE}jv}G~7kM$Ol;wqzU@I+LielRDC$h2Xf-@rZ`^ag6l8So64?*39hR#sf|CcHOC7-fqPGP zUfz1ai2{c%$GQ_lmnKw0gaq%O+?E6?=CtEYTxTczSk&JweaFf%Gj(=6K<@|=JT6-5 zID~@db$&_aB%@S1{zvYuSNj)x&H!DW&4}aOaj5ev@#i#e9V?(n1jXc)O3NS z&l4}Vic-{@xre98b*x>-3;U=!r{pQjYK2W_sivn|6!%1ipDoV5b_OpX-l?7l*R|ZP ze`UL1_|FA)?ogY5P|_AWev8t#4^dMTa=%-jVLqb>wRLp->>MHAY0X{dIG?}N+8)u- zxt8ewF7!3&Y)ijd(CJ!*R0S%btWLb(chlUi=|1fD>wb)5!dbs!N#O(z$nB%(K1IuW z%0*mC-6Ju4+JoXVF!6zb;|uedg5V&tB{~WpV|a?Ce|o`ZOZc1cH8#t4(Ah)_Lsvu- zi1qbr9i?warFHm1sI4`!n~f6nfFl#3cJC^rE+A9dTqK%SP-_S{gAG34+&`)1X#XJd z`n{2I9J`BQe{*Dp4a9u|vEBUP)u!#C3zq=$-IYBQ{L?|KjqUrS;^|Wdi{Yq_*t2p> z7vhf}^NKHxE_Rvse70q++pcMNdMM0eczY=DF2sL~2T%@oW%++Ud9}ISl-r)lS669c zr13M1tiE=o6#(q0%(IrK{YpPQw>)7GuU@MDCPN|I<`uQP7%f#C;TB_-Nr3niSDJHI7%s9#6yk116udx8Y}5 zKlOhee!MmPO_UX63OJ+s?T>j3=Jn(|b@TV7cs&O|dNdgNnTUqX_oG6M_eM%?y$Na- zZvB@HB*ye3-hK?yxOTEGjG6C|h28-`s!P!|upl?2N%?hLY?~h1D%I`e+BG5qO=2zw zV$2Q-T6-RSgZ~d^{{RyNFmU$68uo;U%U3VfKAL=kG>sI2uF(oMD>W4^l!r?#W@}QdTk| z-;*qO;`y8OsQiRkT^U(;j6s(+b#K-pfP^Mz@xap|$PMD1?2 za{nc;L$~t}ZXE07KBreNA2@$uM<8B%9{{Po?Y3%^pigc4#(?AwAE(L{;|I8b>Z|+vuA=M{ zn6Dr-$t}p0J2-pa{CBq|aDmj?v-GtI;dJF6GMI>1Ua( z3|o&*0j_@im&c4a{abVrLtokf|JJg3Ol5A4!Rggwa5U-a7R+Fi3$S=zn>)O~WVfCI zX1{cDhno$N&KiAA;}`Pkrr0vXX{nF7oMX=mT&9-!7YH*vCZ1)P{++ zgr7_IY&xD$#mav6EKd}<711C8Xnd>MCA9RcOP>6!M-KkguwpEl(o+8#)$5Y;*Y~5# z!&&!O+SVshwN4?I;5cfHP58sRH$(f4vF_7~M2*SzK%(d8TF)8yK~s=1h%3`i3g8FX z<-oA$`he}&;I?RMZI&bBPyB}JNkAzLNNts724sj-u6p}R8~FPLjD15uVCy_$L9UD9 z*2EZNf9cfk*rQ$mSU4m<(b=-}?r zbHX9rh=r>3_G4_wIr)tl!AMIoK$fh1r$dBx#X=rD12mvx zJ~a=_Hi+Q00j=iQDcB9b2*xp=@Z z6{IJ81@*r@qIjSyr?1g_|CRS_+YLpK56Ai~;2*c~Za-cI0nR>h#IY>$0dBa!In|0z zFen}7e!Gxs17rI4+gilsWi-#)kDJyD9&nDWTc85J#w{}-=;X|Mi?2a}hs!mnj@|4r z$+n~Y*Oq|26Tqv+i`Op|)Js^)Y7EUrtZR;*I>s=>DZEeGb3nY*u~To~dh}7PUsUL; z9M1yby>tfkkDh6J@;4?Jc2sRZz5E1J6mq-pxw=N~8F7(Onty%^gPnM` zz8|fjRDOpzwFd+)arFz& zJ#TjjfSoElG^cHld_r5_j=pFLE6ijeyr2Z!e$^&wZMy4qDXqKgw3seYsUKWVy8Ism zyvbV07RSZ0*^^Q?DVPc&Q^{yHjMyQSqt+wh(Z?XHt>aZiD?M4*d{Q!L!fAvP31VoB z1qmctw &^*{GqUpr)2f;l#hY|n|CGerCiHlbWs}=1uq?Po)P_J4@cFCtpvq(;( z(g`0Cgjb1~I`>`h44VoWqt4Bhf*#z3W_Q}{w0(T#!pXH#X{BDGk7RUr>*zU6wsXka zfzTdqz?n`a0Xf=L^y%|o#i4iI;N-x28{J=&3Zwa1wh}gZ>F0@V=JzRr%yGX=Qrt&E zCPb}Rromo$BwIIu5G1fc1IX|F0xMeU!sI_TQ#%ANctv5Ej6nNJu28I`p&)9uj z&PS7zL{+oBzlDHCZgNvsu4kkG$OZsD^(pa=ne9whNnP4Twort7WGeTfn)m9+lKx``9>X2i!}+p;U3zl^KH zqhGYMq4JG%k~3CCd=FOwJY)tIRPN?!JjH!gKDpTWJo?E79!&kNgPrSS(hf^>qWDSwWr{;~MnI6q*@pw}Q?5O6^-vGoY}0=hdMJ!W)N< z{JqsefW1=62k-o{?;uXj>Y*j65_bS0`WfJ^1*8fTu&=K@j^VvQC4(GsF8o2KBwO2T zf=kDOqw%Z4bvs{X-ECN{qxx@tI`As~fQK&fN!Zg~+DED~eTz&CP-`ZAH2B_z4JN`w z^=_mIcx2So^m<^XI%S@mUQ1f9^XnrPoO(7;fgYNwHla})!$xM}v0%_QiQGYiL+j(I z>t9RTu>&Fz-n7=E3k3i5hCMY(GH0}okr8@n4-MUALV%6Lw&eRdPN{FZS=ju^9$w7i zpQ<dMHU`A6InmiTR9g30`I3 zh29ul_#e@xH&V|>eF~4fAK5j9i2x!2L=V27yDPG`U$En?QhCmEXU@oAnO#MCFL2kF zp3-(@xps&t(&dM(`~)y-W#M%Ia@Roj(BgI@aLNFlyTf;C`ay&TYu0f6!UqqW#U4q3 zdt);ZWjmtOGm2V^fV}%cgPY3wuaa|KnkNi!AlO&+p?vn8qcU8SgTfm;#qN1}p>cl1 z%FPvPk-(^w^RkmKrKKA6y~gWZB*CCC_?Zy$+%i?*^+NJ9Q_G@&O z4<7dzm2}m|B$ERCdaX|$qSg{nzm{+{7Qhm}5vMShE`J2aaUld0csd|oquhn~4li}l z9=&j8_w<@kkGJQ@a6t6D!o^jkU_7G!LBFE-hDsXtNO=Row(W>0z7G)$`A$h6oPpOR z|CE5!L~KtIs3C;-27L-*`30!(ax%B^7uANto0^qHH2cxUf$kU@cKYH+KSG_)4gOQ( zt>|0sU<&1`s7!Tu;RFpHp!)O*M9pXQR(LDXi{0NrnZ0*;_R~2}U_#%c6aw7Gska@u z6Fj_R(nQc)9G!dvJN%WU@a$b|r}~vFHrdFHCI=pg$uO*?iNq34?4z`A|y7h|_F@-*tU&43xI9Ad_(P8!oO-^Prh@36)K8I*LV4Xl2E}x{WJJwnD zWMdD|@jw~iAlWJTbFIy5?c!{Z!bWf)oX~%N(QpCdznWW+D{;o|n8Crkbr6Zux3@sCL4)@v4PPTY~c0MyaEb{;TccYQop+^|5JslAsnF81+H!f48?I zKgUaQY`)>=X6bY2j5Q{Y5e0x}*~Ee*Vnr-x(>XxH2@(mQdyLEHk8JsWWXkSQG-KFi zsv@6n<;3yPe0Y^&lY!V!rdcBU!8{k|Az7o+@7L6;KNdm5d~N^K1fI$+ODP%F7stFu z6d}*qSs>xD4{i?}{DZ$V`DO;%pc_}?57NXYclY3i?s0$>#aI1#(Hzw3&8arrkQBp{ zsa^i$TUKP{_4Jos8dsI&9v&?Nhd3C8_RD946)z~sScCQ7KU^^cxI92l-0jUuX>kYW zbsoU|PYY+gU$<0M?o&SupIsO7P;n>UdYfwO2P9o$jKZp56yW*~rGA_#5_F2VOhBI34J#%Fb&`ZVV!2cakSu8HUfHVHRbGxB3kySfnu z=8^j9A)O>0TXD<*Xnz6^0%NpV4o3(9Sczuznd0P3dl-&wLrgZ|vW}v;sYWKpa*yZ% zJ0^#;%*Njl51d?n9BdzLZog3Pb?|-kfjeFk{0dAc^S#*6`o}{E5_9o;{jW>g zq!tvj_yRfSUF*Xz8zn!F^uYT_&iaT`;x^4|xa^UNZ!qr~+RuN(PkGGJtXrjEXLFFvS4-1NWpe(ZvEzeo%lCyLeKi&gZl z{X`R_$orch-kP0nYu$Z07dDxV>gpVdPix9aQ>KQzTlYqe8|D+dX@l33;5jWTG%Vbp zf?ohvX1mv8m_}Tk+oBlTy)3^BWs{GcEHO^x0WWv9UCFMA|5V+8z5WPpi&6=8s+Q`S z&lhzf?^@(Al2D^1QMvS?f{km0lEWl9!k^XI!gU}48uWxlIn79#7rg9+tE&(bRmUl_ zrLq7kpX72YIh6#m18R446OKQnv>cr(!=LKd)sbKlH;o?ltB#><n!r^ia5n-9#d3As|;X>C7l|K&H8CK&waMAPr^pkH-M-$Y;{$Q*+k*ulylj_yww zjBY!Sn1**AJY#tZqN}oaW-PL!vo~p%<^K3BH;Ds!VM)Y&>US8dNyXL=#s(C?i8)V$ zzNx@5ab!3>>+qc|HCb*xJ{xHJJXmxT?)z;T-N6D19e9fv#4-uIoFpf3z5S;euEblO zU9nRfE$(mmSe~WukR59-3xD2qhdy?Zd7FZX@E`;Hs_=FXejfMrL7g5FS(*Pr$@x0_ z`7=Cgs^+z@S-u!G$roAWy)?>;#6#>m?$-=bB`Pk7;R`y-?OFwS*OTm^i1)vq(Wo5w zf0>wNsW^4$E;_+wni^ichwAcFGF`m+hY`-Zb?KY0Gj>FJ#E7nbm0$f@2nbs_FaM!8 zvKM%I^$8n5`*7=xS_b;P``=J)?!Zg~9<@bEsaz}dU{*!eq-ye{&KgBSY$WcH!cu|FjV2BQ~wl=!{{Lg$m*H0!YFG)Y~o?w**I{`PI5QcejHCY7Tm3`-J&?6 zKX5EaRl3Co(}~`+iXuYTZfsBwe;dUW&di0Df|6()6+x@jPL`D)uiPk*_AG`8ezixu6pHi zEfbAE#6e)cC|a5C7jcb4TE*V+bK965=DiG?@yWx|m#79uhOVo5FStTkygMv#D$V^UcRY|V8+{)LzOBYR zZFkt=OI@3mg$>unTzxzByU5@n#CLD0GJ5C%uyxkt!USp!kQD5kj@B7+zr%eVy?^6w zS)Kv*3`DC=xxt`M$YYdnr@efm1MF~Ny<{ezpuYFbW|eQCMZ2HydP?;HKrJqGR&WJoEmjf7_u0qA zh6-azGKs&ckB*?gNT%9Uqbt>cZ%AT>ye7=Y+$<^ClE||v&qBdM);7j-W(=1`$k8IO z#=O7Tivu)$XHq&Vh)&O%U2$DW#2&<+>$q2e#Dz|pD=qW}{GB)`j|;k%=#BX-e=y30 z*otbiY;Bitl>uh3`5`i?bK%rOoA9s}89&*W(3PX=SEz+B+K=gU))xm_bMpC?)1(fY ztdZx+8YPwTf$WhFshV4WrQ93y+Hmz7Ho@#|Z3h6GfMEy`YcP-%4WKR2V*szCRj|2T zCkPCp6-_<{{zHIwkTgzX-pK(%=X<{54srS&fjS8QXbaAVRt{hK&vhPL=nyCmDGv_DT^IN?avKD})v_^o(hj^tUa%LwEhy=84Tm zjG7F2q*9IsHW@%;^QsUIqI%j$ly?6}MY@VoHq@N$TkTfjL9_u0F|Iii5fO>-C%Wj_ zNiPx%#Ecz*sI1fhO9bO9$L-xP3`LAMFjjTluF+u`jS9T>pYX7P)Dd0CF$ORY7yQMF z&OEEt@t9LOJbcFK$Bk%N3zF@REo&y^9zgXwPTL4uxG2|y2K;!Q<;Xms`z5cacH8wQ zmO(pVR-;jCesow7hqB`d~{zE?Fh+8ZCL9heK{C`A}FYts56lTb$BKa(h|IOL}7C@1hi2ZJ7=CYk@% z<~FRY$PZqxYd2f)%MuXqRdsdqy(n&?ND!-{u=KGqym7Z)JcK7u90oYyZV%6$Df_%@ zci4x^GBf@hn=me&qDKJicCx&=Q--?~$a76VDv+vsDG| z50-JU=0N>g4P>7}XsVF?w@1wbhDHSNJ1K{f?-$ih=2j7zPLMFAZNaABlgU8yS=JlF z+ok+3G4a&VQ)|6*kcrO~@;O|pCd7%4?VbQ8w)^RCq1~AjpzrjFO%0J!Bo1JWpUnxh z-@F89L#6LUWhjoG9}Nf_v}S9Z$V)w#1808Fw1w%mZ9(`KCT5M})Z15RytV#Okde3C zY@P7<9MHj-E@HQWaPi(Q!=Kyl7OX{YpRZf|aA$9I{LGb~-RSgcon74giMczCe$q&!Ib(`;lElvGxa_?bVZeD@u^mFBV4)v5U>Exb4TO?6LG#E^<;s}VeBravYhS>%}7mM0{<2dPZ$K1)=F zd+I8~K~)Lf@6o#^eXE)kMa&VLbD#EF4%@{4ATYqmT97C%iLtK-$tLX+QMNd|*{PJP z80~zGbi9iK5k0Srxp2I3l4qJyrfTqqP?yCzWw>j3Qj4Y~t7jk+F;Pa|UcfDU^xT@>4Ms%mG-^eZ z?T=hV4c`50)bD(7#k!^h$d_1u>3P!Uq+IpccpwU_Q-P)-V81y zR0Zy8celFIm9I|0D73v?f*L;vbW=;{j7321FecEfgEEWfuwBH|L9+S3QAg8iW48+Ue*(R0C zWzgx72Iu8Zusuq7kua3eE3ENejb4)QW;3Z}OG^b_SjFbKCr=E-l(I%8V+YwfgHF?$ zD{WxSTz>(hTTV=al~7?pE*0Ra%$+pg|JWs%3&M;g!*$L$S<|HD&gpE-+b@apBZ zx|bg#5>W2}y?dhNL`-&JUYYM-tDt52dbQ>Vlg*^r`3m?+C`Wou4((aAG1zS_y8yM^ z3eRy>;Fae6qPrD$W%_j`YthActaEc0dzx<}dUdv7Z(;;Z?4}H|CwVv9u)q7)BEEHX z^mJJRsl}#`g{&>oRT;+4sx~}OQTc(w^Hndw0_C}=Qkzcwj9k*x6DF=y&sNL+<{IED zD33z{i6eS?Ur#80nzyUNZU`$ZPcww8OSj~%Bu$`0s|Ig-%S3M;sOkON%RHkKP#tGJ z+|@x}#x6$+rV`*oqN(KujiP;`_C9xeP3u1|)>GvgA+tx~fZ@m!|B8O2HuxtGi?N{% z-4a``##p^NPK@4(;b$4urIva|>B;@BSt1PK2#gFO85IYq&!0U_vp^QhBXY7On6C^% z;un16fEWiGXnFZs3yNl&oLF5^|Zo;r59 zdB&+MdOl#v%t#;bpUsVPAaR3rcDA;=WWVVB(Xy~i{5-mwpx(6O`Z|gKlIp;Yu zmqT@i_)xB~|NnKJuJqjOHgHL3hLgDulr<8W>?#{s$2XL#K?u-)Xb6(bdGtmb3bmLa z|2*`m`d0Os_fUR4t}gL9ZI~X)<*EE{-mIYljYoyQ+;CqKTTtGZK0~>1T^g84ybAxe z3eQzO(A{5DMo!W>ikHh!X8#92nn}*`Ig>i5%Py_23*RlN_l_zk_p%-5`&uD;#(Q-Fu!^gx zuegC9&U7;o>n=M>*p|UNd;(cNon#z&ph^Xi-Iw#ktZDQ{)$Zbl%MO<A-TLvIV4N_tGnUuhVysbaXOd`uSt9WNw<{pV(sp!3^&uV9+LlW; zL-s{-Q}s~UY4PJUNbQ=#XfCtQE$~oX(rngQwSMz?s57=t> z*ZAwJ+sCwLHUupO{`Bag&bQLMJipjPr;_5KdpgHbqFq=NJBQWwo4+GS=N|m@9uzSu zLb2yE`0se>gOKoOSwWG=@IM@$x^(w<8qOyZBZdY;rVY zw3zlGEX~4;SBhupUo^u~9H#U{x7x){a5bf}S_xPotvjj7ZeCK;g2>SMEAnNMZ~txy zyUK!5i;St2!C;8);nzmLIY8 zdv(&X0%AY+t4)vAMKmwjS73#Dw#c8Z7Fjz1NYUTVmr8jmjRF;TdZx6w-VkX$BH8{j zPN1IMU>Y02Tk)b}veu`LNzPNPS?C`vRNWv;Z_J>kcKx|NHZyy%ABfb(LrdpXu_>Bx z>M~LZ+judGZ6=r>%x7Y-9Aygq-*+0|lO~adgb!Ve`df>)xt9jPgK-E3Py94to+n;J zaah(`c0qz|3ac7fq zWKF&8;jeqeU~&a3jobO<1kyIyX369-4PUDH=id>@Z-)M}NxP&v83%YPi&l)!Kf&MY ztIU`Fe{u)GEt~i9uJAsE$GZ~rRn=d-PN_fo;mu<1YJ(cIMb0c2&pEViLb8)w?Zsy~ zzo<3(D!sR#H*6rP}X zvsT$RCdXmBYa?AcVCppl@HW(Mw!B14mNgSjX zlI;2Q7@+OvIhGER@+M(*=+a=9{(VdL8irK_E9YId&bm%E&4P)Dnl9gitN)Akv6($1 z4$gP|jF%(k{{s#ZZw4IGyq6E@X_%45{f^IMR@}8;HnXy{0Vlz&$^IUE~dt>R;bTh_u z^Ox!7B{tCfnC`Njx(HII@jFjlfFOQyX1nKeIB8CQ6Ltk>56SFcDig(g0dRb?k91|i zr*y9d3%#Z)tt5p8jIN&JJTkvkJ4ZecDcey#xo^d`)5`j5#s~?DlGbsEq@|{Zrlu=C zxo-$BLnN|&9*P%sVDHlxjnIJQHHtRLI}B~CKU3@rXC1k1g^U#b8V^OU2&T#ir;12V zmHMn8ulIKz{<%Y5?n@qHsK=Xh2lwQoUISIYQMpsj?q8A#;hZ9Cn{ zO!8v0f;ZjS^+TDePRfiLs10I7n|3Y$R+TOBgale_MKZn3R$ zziX;mJ6(H;A1A~FPqUjAcy%O7Fp6+_`o4RrYsZ(+YmL4QeFwcw_PxLK742F8fR19I zh_$GnZx`?#N&e_VnCjZXXB$bDt02a>hhFDR8a%$o30a7UTp;$hzkWbviM#u~5I4PQ zkB4U#8mhKur`F10@Q=swj_7I_Q4Ud9dJ%J=ob+HAO{?)v2DVsXz)(&$x5A_gdE8~Y zr1;q9x!=HDYaHpxm*K5e;=ZA6i^S7KI!Gz}EI~%RF7FX*OZY*F%3}=q{NKu=-Xmsf zbP@Ucx{v(8Z|*rx{Cf59;^{x8P4Z=k+6&b2b*m>bR($wPjANTZ1LK;A0h9a*N2`w%k8OHJy;BsSJ{0;@kbK^^ zwzgF}ZfN-adiXwaNe&F~x>R!+zZ+kusd|&{ci)Y}Gsr!+;{te+Wa)kzuW2k~dL5^- zvNF-xd+h=1WSoNN9g%GxUk@@3pp0uGTQNT4$hG>WwtmYJ{N0>FQ(v|6IWHd=!NH|9 zH0wOuBck8k_pI8@L%LrBX9)K~)T?FjfS3l?o9i03k-qBv{LipjP)`C*>aSrpmwA(W zJaZX&XNaKH^j-aPZGNMBzTcO8lo#DHC80d#9y&^+HR=4{@kinE-e#ZgnAR+=`BnRb zWeh3?J1rr;tRn|`523P%*%ujyqOb3kRPM&*~;-2YH(K_zXS1%7Iw>Yx1-D>YAgnrjiT(C3WUhX|6 zK1uc2nsqGAeGggi9BDhM_0IM8ppXWi(%A1>{LWE2LBmkySIbvd$@l8t-zmQFxA*Fk zuNtNJSpVXq_(c_yHZ{RPc)`4sWmrJBk2!ilPM}pfRrTXK`Ib4({iR0MJ&it)L`||&YA2}kw_~TIXj?!o{?&0Sj`57;U(Z?ObaCkJ zL1!`H?cq?z1R)2;ha#A!h!95Af(B9uO_euOcPEy)w zf_q(_?E}TYOOJPU2hOwEC&0q0ckg;8m|a94>1jH*e-`I^4o#fjq(bZ32=r!b+Nzr5 zSx+;bPSTb^cuO5#)#+>T$Hivoy^T`LcV_bKKT7&FRkqXh4^r>!IcDk2n`5uxPuJGx zWnc(LX~Qftl_BLtGru;(MxsjPW{ZovIi~9OuYiIg6jG;UZ}ATS5vx|dv*N<9XmGqo z@5UwSZB`dV%qf1VsqLdF&)MB`0G+sDE;_zhe^yp+0$NR$$SuyUCD?~}XRe*U9bBr2 z$j^8TG5&%3{Oh=Xe#ZayRXOfOO^d@Y?o9g8ZNnSu>oHl$FO>&$S?5_O)_WfTuh`7{ zT`|9UqP_RFY8=r8@jp0()`s4-W!at!(lQ%fy?XoFm+f$`3u{(pBlzbQ?+*4skT^u{4_gZl|H2; zsGGjy=A~_nymrI=nKpS^^)Pq1fT&IwaKruUboz3otNBRap7gQNoHF zH%KXm&`)&PE*c*I9MK2gt*y^}ulA(aB-)mIZA;qJcz2pZ;7l`i8&R2A^2`)#4^yT- z{~nx00g`JhT#D2CgK^3LW&JK91V>skD#HG*bQyhf}f6!LC6p0iiQl+SU@SXZxt8Ywfw za=8`Y=F=aW@ACP#^%D&8mjJF4JuPIpb_pO}G}#VF}*+>c$)M?TznU z54@MZzW_8byz2fc;^~NX63fKy!AxBHz87WW+E|X~h~BB_BO|fwSLXFQ7an`$jeJ8w zGY<|BrVi8kTmhL118Wn`1*2#7GhpqJ)UA|p)khSU3l4Hh-*}~znC5$jdYKC6HC@!k zpBy;F(#i`nXs53_C~gKfb6G1|Na0qt@cecg)c3M`L$a2$2dr)gWdRn=$@7U7qFQ{7 zuAU5Z9!4cWcRP>EwhFmYP|x}Gkc)%P9|WgCKX2(?jtSqb%K!4^zY^sO&y|i5kIJp+ zsifIZOyL(oA5K=aEK!4woVY^Kdy)6x>N@GRpkXKh@QLH%kEO=Jushq(y%puamZNVo z$j2`XOZ7996RhLrg?`lQ*DqeD(;Z7Wg*J7`JH~3%}#moZ6I40+X&}*2%l#=s1GIYnf5Un%39@?G3Qf{lB^9IwuDVTN`kuSAO-VK zhF;YOTcVz5f-v}i6)d^g@7G_qu)RSNRyJj=1@lPCz|kvXy?L=CRifQjvC?p3-9^dH zzF|c#Zo|F$20kYHR+u{oJfnP@PzB&&V8@I<-N!_fuD8$u3LW31r=ahZ^uO%mMSZ5; zRNE(V_4ME4-a6;iH|G{#m-qDRA)lulXDXxn@NEZz32w>V)eaRYd}k@X}b#p>1x-mmM&J*{9qwks56D>Cj@IFcxc``hG#wRCW zba>%DC*AKgZ)K7dTWfjKi1USGrtEgZ@p_$%Ik?rkeH_yQ^`j~P?n?Kltta)cmh6jV z3043j$n@y)K-I9IlKo-cm4geyN@YN@qvOp2W1E-3;nYPU^=3dOUInrdr+LAhRpP|G z^&)|-${kQs*la*@?o9{FO~C3_3g^rAC`MOA3f;b zc8&08ovqf3L57WG{OhTW7pD^PcxJ-Ry z!pTvSP1yrGrv&-@<}2(X$idpuW?x+9LQ-#0;$>n$XM`RLw~Y^Dr;%0(yp-zzR4L4* zb{_fFO;;GU+Ll@xCz>l;OTTw>3&DNrNk-sw9x& zj6t)2ip444OX55JBTn&$Sg=ZjHuDHgRWA#VO?J&b*|&bley*t9{SoBAa)sQQ|H9d9 z$=L@MzQz_f^%FJbG9;86itpJL)azK{<2-XaFd z9bQ#8{~(zv&xf#_aXB}-aQD7*k{Yd0E$r32|B&{$@au*XYvA3_tQiW~=Y)rjjJLap z?5DPG^WF_=hXs1lh~^oO8mdmbeHO|bQx1ag_>r%_9)E<&Ev9e3ch?rjyG@k|Hxh73 z*FVWaNiHe{HT~UMzFkOyp6VkfEn(fVI!M{2VIMu@EBkpl%8!F&IUU}}Fgii$H@%5> zaSDNJ`x0>6!)P7uh^m?cIg(60nKJpS-|F8d7sr6e6s{MKH>zKr) z)(^Igb_dfsxF2rr2t1#E`0T4m3Fqca8iY+rPCi$u+Q>6+!_Rq8^=I;-x;;-5%@LsR zKuL%#_D2*;w;Ni)^4wka)$UGu`Ko64X<{z0`1(?u+bx%S zpw{Z|$?CcbBI@(ci;1_#9g0q^$9Rjod(iN`cBx72s9bto`%_1ucX(yuou_Df{lHKh z0hY06Die!ZtO4W%EL3Ukl!YZ~rJMU#rl&NU3IIbsR@HfyO}bFOw)AmBtr4O5X}fWG zG4{(F^d-WXBg!jxt8wKI%3zr5pojZFWH$+VwRR1G6?(YvG>PqiwM;-VCo^;B;cYUH zW9KV%GG`D6a1JmaR5Ly8=dCD!eJpZyQ*V)XA!)LuWG|T`Yl*by)$4%P*^GZ~wXMDa zUOFwe@_@2lGlxgr)(U$iWsn|{c(bPN^H)xi88F#MV2-w-Q6TX^Y@A@NY!^@^rbV)&c#`8JF*H>*BTNN z5`b3;z=)@4#b^yL{h;5#zU@}|O6ZV$d!HFaFYF+vWbdpw6eK_TvBcQVshijpyp-BJ z;S!uN^_hID^5fe=$&D{BJZSuI9~DH1hE?I~mT!H>j%BilWbv;b=ay%L#OWeI(NJAV zwQTyRhT`s4h=OsmV7Ey3b1gT@#R#>Rs|eQ((eaOsp90stD-fKui2jJ_p3s5gR;k5M zfi{$(;hz5QM#lX?jA>8CF@bp8sq}E2D6W5wL=)@^PXB)_cUo!C=Hmo`->qOrxxTtB zoh+SyP2Pb8aMa_??d9KTyr`S@L{Vcs^)g$Saq(qDEYP)(LFgy zV*@iD)`Hdd@2(+SWBe_?kcBNPT_3ela#o3M`3~*wyP}YT;|IP(pvnbJn_<(l2E64@ zij5JI%Qw5{v$?+z11fb*S;n%q*R$+8^X1E`xfk6cB0`IRsL!Y|a>+1HPCr~Ce19bl zAtE3H+xU0ww~JfiPJ@r!fZlB~3*?VJd)=VToQZexZ5vG7Wj1C1OS1D(tvG%7)n0_N z_Mx5Uh=;<*PF(Stf7OSierGFEioPV-%^&C6bU*V|io==Qk!LK^ zgr;lm({a0#o~P2n_&|EXz!}SiB*7Wk{q(p~)7mX)3DaERNQl%XQe(Xb$ws2fP2y+? zG@_aJFONgCJ)y|oH7X%tny1*Bx1GKVnK5!n%)*xJyasox($8{$)LHK68zHqAh zUYsixtWN*5JHtRT(=6I(u{WlE@O--98r^dyD7mNa^QayI(>8;3MKJ-F57G#;BNs|uhJUpKx-IwARa!hKN@R2y6U)rM=Z!wp4dDM8Uh$FR#M;lnO074&kKP zD01^WC&Y^miN#~cU(;;(@$Q46X8J870cWT?{j0%geA8Cpj-)B3%(-YKX~%dE}Q<;7H<{85u_;0*GBlj7)3 z@@MJ+y?xfjWQF~j@N!K4FJ4Dc>P}>M{6W}BWdB931KEQof$F|RpUSB^SBxhYeYAzi zDr;|HTuG7Vu!WR~gSnqnhIt!bafUy14ZnxY=S!HQ2hqBhS8Hafvf{NRZhdRnK_2(?>5w;5b%}@Ki zcq&e;ny?tss{%m=zptvp7G8o0s6~>$dryibZy~O?>V*Bx;iu-(8$P4^sq&*t-5H8t zsc~jmQ;3|c^T(#8!krqE)`r`Ay35E%R6Aqd zE&9>8XpT*(Zp?|b@Cjnn1HBex!{^-9Ugi&B!rpi9c}UD$&DDsYbb1H*Xy8XH^5k2R zmm}7l@)rh4P)6#0EHS71TX0D&naFaNsSnhYt3=Z|dMffOjor9XorMgMlQxN6sLeU( zvFBvl@Nk(P3?NK)w{!_tt6QogaTnE(+J8oW!YW#836%qXzdc8NC0=bebIXca+kMI) z!aIL$JfXbb@3VQoD=T$c?`A8tZFiKsOq)w7No4h6jEJn*-y=JL8_|i2e^ZH1)gDb+vLZadP6`Puv8Dr`C;@JkYcCcr6 zPlJrYtW02*ItBS5wO6G~V|7ZvhREG*JZ-UP3cp8Hz!Y)X+i$?MttXYW0;$X6i`Gjg z$k9J}(6{{-o@aPXO&lOIEp%?0T+=edxRAhWkE^E^-_>h0{@qauM(>cB+)}u1g1EcK z^DKgN8RH)w&Z}nJ=1rFwU6Gu}=5}1Z?OciuUea=6`Q3XRLVynUwRawzbs?q!9p(Ns z6tB(~2p{I+kFfKd=jD>6Z3#nx0lcYekSzhp%VFG~aSlTO_WFNzJWWf~PkUy{!yq!{ z51h?F%B9j-(*6DX@?D)5VK`w&CSy}) zYEBGgwtX=v!EKh((FLJie}M}BPGIQPSUF3WVk`S2;Bjin4gyE--D0MbmwCk%9(Nr3Dlm~WwkvN z#RQ5G$D8mJq;QUUi%$)2M+~TjK2Mcl>X2XUO=R=A?@sPD>%$yJQ)IUe{cslt! z%bcXyO0EzY$^%BU9IjSN|=O()Tpv}4odz_!?2 z!19lW#80JMVfIKUtYv~CJ2QA?)s{^UiLNNFfAb^(Ww@AxVWGXs!Y*}|^YR+O`&u-$ zYICwR{K57kyR5pmR`!M^Hb{v0tzqksXC;gv(6F@C>W%8!ECEl_iMS3`1h$s4w4)nk zg}D)rCnX)-QP(P^|CHu;Y9+xlv}3Avu?EZ!#noj+y7D$9{^b-KMQLHe%;181bHcJuCCuJ5p$o((I05BKnWRf*bkn~B+(5LB-bMdLpPu0!cMb+d3{r#5v`Z1%0^{=&_gpI^VQ z(!w|nJc&-@&bmkJrK)A(o3Az8UP^%(ubD^>a}i6&t@WCAkPE*#tohc^f)3}iAH+@@?-*jT%be}GXbEdm{48h-E*E}UctbvwHQ&sZmRki&CPCF&`@GuD z42@oe+76ok2U#63i^nmN`p9YT`)dan+1^`(Nmj0JB4*&L%#rxRwOS~S2!D7klN^{~ zA2vX3DD~9aRW_;3<@_rG>*b<`nVrr$9f(6x(z-g!155CC5#iJrf>l*~SyjJApVPi3 zUr57@Zp@FtLB=`F-8GyE=Nr+&&ky~o{Da~YoF=2+M$3t3E=sPSX(}4KhBiD|mTERG z+>yyjk70cobcy~}Uyo*$j5OkpZP;La-niT?V!#=3D%CIkWbQbIr(Yan0i&tecW}ZI z1n$o)oerpHFN;gQoUt0^lli3D>_7NV*ij!aFRKwx%DXYwdE`|yKn*h0+NG&v76+bJ>$L1ucLcypTstKuA1?kepjmE_VQ0)i9 z-bhG)kM!&{G6)r&5{uw7{?bV%V|Rf2WT9ti6?v}Q-XOdJFUDVXlgB5ypK&ZwH z{1iB6MFRjWaiv`^06GZ|Xp5WA>VvFRK$Sqk&dJZNYl1{X*xjgW;1B4c3FmGvsVsO> zjqSJ_G3BPheAL~*s~`UE(Wz+GA?32`+)}a8t$^^8l#$XLn{C=(%|9lnWQ+6bX3rzr z!<_>rdoYXO4K%b8!5=;q`)-{E3vYK!xDS3zA0q{M;oRpgSXy|`0+!5-kzxHiM8B)r zxiM^saX?SrkWYGd&mWWmJ^4;n9nsVxYP-i2L;ZR}80;77)upQsfwz_HrRi`naoKvU z6u5nkm`WiKJ2PP|NF#6Bsi@)vIEH+ldmPe~lK-XVyRpNp&+L+#y56YILf{`O>2nUs zADPL#ec--eFNcTB$wy(SmcM*Fi9g;9f_N0 zVlR@DKswjbez`!c(d|2g?zn?udX`~8?d@tnAvaZLfAJOn^q-^sXk(9w+z^GrA46;= zddWpfXnWR-UOpl^y*+cs8iw0AO4jyY!(Kfaxs`3Y%rutP>tm6?=u%Z|M@2BXy}m$B z8U5Cz)t)?MeiVjp&1d_O`mgQ}ev}A%xAp%pK}!py->Yq8`ccu$s>h@QY#OI-g&z8U zb&}EJClQy!nPvdSw-16L-FI@Ue+7Q4V)(LB!cLje*k`x8h<%nRm;bkIM?rl~wCzN0Gh!NG)nVH08~( z{HFy0GMSi2pAdqjj#n#6u90hOo)8RM9aOE4k9Pdl3VYYgG;@!|P5o$-goc2jA=q*E ztC6QId!+|c18VWy4F}8RB|$qiZ6hlYp>~1Dt9{>6zs$?Mqv_3|sdZb}u)L=|%-H2t$LX;%McIe^=75f4 zsrA7^m2>5`{Rg0t`;cA;w7lBHf;99UuD|(z`UiC3TCN++m0VSCoar6jj1M5KYD|{l zjd=0Jt^NZ8y5GV8P)sH3i}Ob>UMXUKl42u6aufr8{l{VH7`b2lf1;&eAPW8*90t`#^4H6!_HkDtPPCYs@S99G)*D9` zJ$4lp-h2}FyHKrb$7BPYr78|LVMnpr8!lMQpvkz?xxwT~VY>~a%{h%HFc;|0v+e%| zBGK>K^@KPzgTvW#qnf|GI1MDEEE;!rdDwd(%XT^`2gZGu1}#c50vGLYWA&~aImSY1bheeQNp#=7uC zqw$aXo7f=e)L`yTl-oK@*!ZcL4ut=XAIJO;>2JHE3WId|O5GX+S{(;o?4cfKyTI4eoj8J z7T`AK>?=-k1;Y?WTX#zB?ZQ*6IG_&byurI&q;K0rWs7d%XO*%7wR#}0f0@zd{i;?%s6ltM7?{sg0bU`0A+K%XJVi^^QsF`)QmWa?%`T97)>nO5fy- znnS&cvfyjOhHvlN9!}mY9W4tMQ#hpJ1K+6%i4RWRX32T-~CXgi#ZCS7; zK0NS`i4fmMb)UEf*ZF_*;Jt)VVJ4CUvqFL0Z@qXuw4h!VuR^`!*^G8d|mK25>$NtvdlW)Zq6wVHQ|Gx2?f6&bxiRc!Vw^aEe^j^K6qjb#n-+2eJS61M*A~B>3+ zpCaBzMQ~OV6_P6tE8-3TSqs5HpK-;}G=;!%&9$VAWEpmNV~dsT%P|De_Ze9#H-_Hp*Q$3NYO6gO zKLn2_oO98g2xDiJY#Na6B1bv(XJcS8_n840aLqD8EP>;-Xnxih4`_{=wOHVqk0O>j1m9%UyT?5Y0cB^?G0-pnA5L49b+}K=EWM@B^(o( z(PB7?AM+T7X_a*tO{P-L`RSHLBw^nS6nTUN*ku12s0z+k@0#KK5Bx z-sUpJeo$Zhj=Yn?56BL8ZO)`DAjwLYWG3%opUc^~M86gT&w3`l?>SFd)20$jhPz_=uCga7WIXUoA84Kjh95ql7!J)d8fL2J>-qgO zVzMy%{txYbLYbkX`L`9zA%%DMxN7&_M3g>sf3SU+q#e(>wA~Fq{JNOH8+!p^R6?Hp z7tn2SR2Pe8g&C4}b2{!m0jOlB#qgcQ=7nT?vt4(fhp zMV1L#S|3!Ub5`SDpX?90Y$bj>&lo;A{|Ba)tQTE;H~yrJuY`h`Q%KriMMR%6BkBnb ztKP|Y$IK{2#dD{p9B!p(@JT+? z*ELrlLt%YIw^eiZ@6A1F$JN4CdTi23ZY0-pA|M>r2V;BObQY5>FO8hA8s2vq-{C7> z$(L3TH6d4aH;r~t5xM#(cG0DgVpyEyZB*wu{~PereO`9T-CJmp&gV+`W`v?ZP9oe$Ec-*;ZA%U^mi;h+;#fUQ~Ol9iS%h4&tP4jxP>n2 zd3E`5ChwDJjxmbhR$uWNdqFnNJ3TLblp%&d8+4u$lBL!KY$yT#@?O-NfFp@8U*Kzn zKFjNBSsghAzb?_B(sd(1?eFWS4I&ii@@!y4Ao(WZdIv8_b?u8;s@9iat)5@E3mr#9 zClFTulmqI~eELBD5YVXf&iVB9i~gEbYSaE;@287`&XE^`tUfL4_1s}=5Zk~WRY1%9 zb|$K;pnQ!2?p1(cPLWaT$i#B`&Hs|1XZpxm>O#qjglc`H8{Qx0`h0BREKvvxINtO) z_v!lL;vA0pwY4TEBOR5e~+S6rY5zW+T0M-~!f+xy<#P0!C^05qLc{faE^DP(>CvZC-v8=Z76 zVAD!kB~}`#6FO$@M#gG*m)pqv;S+?oa*Y1+L4>3(vX=Qj5kmaD{kZIvN|Qh#Dg$SK ze$Y8H%vG#$k#mgd`s_M>H?My74s`+dp)K_| z@jHEWHPcPHc%%#4m{jn=?fsj^P?!Xz$S&if7_RbrTcA(}KT=>@v$(I51hP%O2fM zoZ`kpt*&fzOfs2kZZBRAaT}KA)gxj-O}fbH4;S7dNzjal>19^9V*mB^+~?^1`SSK| zzdbc9-RVTG)CI){wic@G&oA(izP3 zJ};=AY>)qOol_P2(I!#%J+#b)ht7?I0s5BP#G=)Vu3gl*zF37 zzI_xrbSZl@?#1&+9cnjDhMC-uqF&_NYwwov$;tDMS!CE*7Zbieop#8{qw>?R?{}|U zeW%plUs$UU8Jm?GCWte0Y(xC6P=8T-aXZs}y~|z4ox5x8L?a2@f=Y6)cb&fzz0X-* zPQsMT-B9Qt(cI=A?j%M1P#NS>0yUY`H97FnujvTAjKk@MC^`2J4S4MX)xG zAt8XY3-tFZ5EC3r`uCEDM#Jo&ctvmXL}2MzMjv@+QeTWusP;^Fz0l zaJ4n^?*n~gvnfNJ4${rB->Vfc&!U6WzLPli zA{$n`kixN~sakye^JoP?98>(KTCllJRqs|>k!;`VZVi}OC^!;{oz&nkce~%^w}JRR z=vD+zFu2leNzp7)?hZASCtzyJD8Gue5-=;dGvNAz`@Vg=F`_|3Wq=F!TWpkNp~b~~ zlpoBG2Aq_=YS4cdTpE8oWzaCTaI3%TjW_P=W|t_S52u}2(M47kqYTv|QHCSGZz03x zR-%9+5`W;-XEBdv=#DfR#)+cIV?|I-BBW@jNb|ABe3E?#DG zOX*|bwg}z%A)|c%qo>w-G=?FhfNaP!2Y-2u&QBvgvkQmR?iA&~h|bF>92v4{?_?sS zr_DpmGT```Ax`35&$}H!8}Gu(D;!%H%r{Q4M5 zKz@UNjqi)qh7tEasgvPma`~imEw%wqJA^Ra3I}sn)$rf&clf~C+n_9CBMxSR(3yYW zeAVp?!8GhE(G1y|Y>6d*_;qIgpfZC4Q72S(;~C~d3CGSMTKU(YE018f{|Is4?TwBs zS>B&EctdxWuK}5a$q^&7UZxVd^LpZcUb;Djab&yB<{f56Y*i~UEdeqSKKXT^$;t~c;& z{xH2kcX?h+GVk6nJgY@G5QKpO4k`Z6NVVWR{R`#qwei=!xyt`v<6EoICDJdmo#7J?YpNSOMo%eTw3z z;%lqfnvsdc`l;zyvglczgkR%ZKZy;GzTwOKTNe;4dOnx<{g(r7L))ur57j>;g#XYm z4Mwso<~MmO@DtRevx+$3XB0=N56<%I-hE3IpA<)P#LzX4JzL`LnMV>-!Zr!Yo`h-1 z`H794ktY&frLq!RYRyS8l4&=gx#^>t`1zladlV#|K6d+Gop`YtLErY>>zMDkzyfL5 zm4ok}g5NR8I<}Q1znf)&+)J6ay`7ys_~)Dt2-J(zL*>Z<@<62#LW+vWU$wu=arrQ> z>pqClbbjR79UGequS$$;R%cLk9Aoj9jjQ7)lNVcOowAo*yN<_MRO)bkL9r#S4V!+K z2;KXHdLF8dO#`|pxFDc;9puNz{z7CAWIN|CDUt}xS zSU8~&Z1#}vq_j0d8_&4pn6X>ZDiL!@{u{BA{TT`IN<=1K__t1pYVdKpZq+y#sR}c&;X4 zjy~BI;&fi8{@Tjxa4qt6nRlZV`k8I`i*)0ncgoW{{jv6He9yIQVTtE{_$bN9!Qb~k zfi`;B!7ywce$Mpx|I~=YJZUevWU$HPASZh~eAVGgZZMv3VoUbAp6l}w=%{Ilm9G$0 z^@r+}yHG@D#fvhB2dNq=*9{PJ!NKDDC9}D&MZ93`=6@%4XXbiHr-meGR}kFt9;IDym0*b8ZDYWAr-kEt?Ss%J)S;ySyCo+5<-@X(a zusX1UIb{5kX~yD8tV(gtMA4N5%^`eZ2GhQ_m%-r$-{AZ4AD@WJljKaTuEli)6OEq$ z?~RoDd5Ek=Lb}6W`}-U>M&%V?{kLR4iyK=60VrjNbW&m*`7+F&cf$o2q@NTEZoAG< z{{gam>E`(VNV*39xZbC`u^O8jG-}+~R%08D?QCp2Y0}uX?X*GD*mh$Z8@&7dy`TFJ z+az74|2Y5jFRoU{~2iOzx<-!a^3?(HNyiVz>OJ)h}d>&C1J<>(^ z)wD8y_dOaPU&8xCFS{7c%?z!71Az{VCpqxfZieFI55zmU%bb`=@*WHSwMr<>xTWbk{Lgd4vp$%_f@D+g)FFu-&8ZQ2jHh88JJpE5to_LIx+Kt_}`KcZd zit7rR&9AV7;nV){ZFeicZxgcVcXQAQj1W%d0{(VNolu#OFp`A5mu3=+Bl45IyY^8`Xj*39H{N5RGdX_am3$t_T1H5>w)t#!OH7$j+$^PuZl_(`J?AL zghv+AbE?JziY|PD3D`z|#R!xe;psWP+|#CyHVIC~j~#O^5v-lR(D686T2Yc$(Sn1O zjvZ0joS59xhjTKGxuP7r1w6Qja>29uZHA9Xbf~O9tTD$A${DnFF=D+OK+4*802d7#HPwyGiE!znG3XX)O?#yU}frkrn>QWi@7hm$jMjuCngqYp7 zE3ZhxiV_P(Ty>3*Wm!~=pyr-u8s@wrEzzv3Jz|>fM?Wlj=e@#j?weMcb_Va*f)7*f z@b543kJ5A5#=6jEZiGbVsBP|50uQm@{+3*3=xn-1zB!wo~hyu=W6t5%C6Lv{NZqJS4xT^sF(I z$`7LwLE;YWtfp*CU3exZ+}WvAW!dvjY`@O)mQ#9C1zd!lTYgEePt;Z z(4e5N+;-QOVO0CnIMstBe4muhe+(?4aG76%=<$XWbth7osG~%pE7rm=NLMy4V`$`R{ zquOb&xd01qz9B{z@+^Mh!>;OL(7yIWlLI7K1=N1xNwDZ+meu`FD-^d-VQr|pz z*Xu8XxA+=5ah)X-N&?u2OZVH9V_ZLVG!P!j*>I&)C^I`U$rPb*M2b5|t6CqSBl%tkmq%?1omgqBq4R#~|% zq_YL%Re{Y(=poToZ%l?>YjW@Th-TeS_{bFO`v_5JX-7EGJ^dkCT)1gSiS>l(UjS84 za9UCdd1da#02CpMiGD`A>L{;TZ@A@6UF>)=-r9I%3d!ztm)_&DM(+43+}|XVPr1FuHma()@!JqP|xbQSsfspSrtZ z+yWf@Jh6|j4K5%iW0{j@Bgcm;>Fm35I|bv3B&D+vQ~32r$3lPsTACn1)p z(4`3yS)R+ndSSN&C<>RB@Ea8@2xW!0Pl>DC~OM`89LnV z#q6e+n=kULl32`;1~K2%uyALRah&YDQ7YP-%@4sX3E*u3O`wu4&yw+(Ci?&u=X_rt-6_WWLp&KFzZpW(8!%no{(+1Y z9Ot;yTVC?X+x&P%W43*t$_vz^6Hnxp@{;d8dy~ z16PCCeM&y0{S!gcSNX4IoMSKq}DuH9Y>XX8K`gQYpBr7 zJ)&Y*hz}?chuVqU*2RM)me^AT3b{6_soq&1bNmfI8!7a zX#G_hIJI=~fUDdc37z2Jex7+AJzKhBLN*HBALM;Ttpf< ze}!o`hgCCb8`@+b*;1J`-umR&>EaqX45%zogC{AbSj*MlsQ=~Y>d4AZi!JQ#woPs;D(96Jf z*lo8?Re><-&`Im)GCjPP*2u0NZQb~@xk!_5YcHbnEg(Z~@iT?nimfig4Tx&v;t|L# z1DyzqH7z28(vLHg6LXj7TJkbBCh3i0AL(YohjMMl@XG^lTgND6ZSV_}!|<{q(~$TM zaf$^7cE3F(DMotC>ZV_W`-G$$&WkH=4D*%}0hY+JC|9qz(Q!W-IYcG$95Gd31@R84 z>Rqp~Mjw`tN-nl33!VMaA4EEp9w~ITQLi$%b*ut9eqlkai%vUvttp&xr&=p(En=;e zatfI4)GNHmv1JKR9?GtMZjWEkE(&0&@B+|@V%$pAH4~s$YJkyNq-Xy+aJn~Sy$NQz zb-To0pG6akfB?2za>Vv?{rNlS0etdY%F^5PM?KnT6Z}LnC5g^u$!5!JrYxZl>(V@s zuE^k5|JU;Jg8MQak_a3Qw+L31e~mzq@HZd2!E>>w-C|eum83K%0Tu|njQ*S32fd9e zu-5Gcs|k_q1fki>xLDj;8^q2w9WlS^?>@xG0}p1>sT2Ix{uJ|1C=8;Ut;W#Iif`d5 z)r#1kmIg8am|Nyp6k$?52$~8#(Uu(tiKYe5+cfPB0*4b=++;#^VVcT`Qtm2wv9e(dUP%xvS0M=Z3gNz%T%&EN0a zWffHup0-JVvtgHecf?2;olxB2e{28{-s$-B##FD&hdk4gHja{FegH~;8PjQ&xhdg~ z(qMK*f~ACF-*vXn&5dZ$&_0Y21cPBmZN|i0_XeSetP4xFh(<8ivj1cNMS-qN>0(_CRaL z**h`p1O^*E1b{EgFm9k=G)thdDtbR7rim__0B*X?Np}EX*X0>(o*v#ENFv@hUQL0x z{bS!(6!Fqxzl;w1q!BrO<@zq#xpw7z^>rjIu00>?$lO`@6ElP?+Wq(cFj5gOZB5lV z50Z^XuuKcOW}~rg&sIBLwpE2&Wa(_YbKd5f-`7HfSPI$j$$X(2^U+>QCV2{(pM;f7Tvmcl0YK_ zR$+{-WjW1DldnvH;+QBjx8*;Pq+_eP)!rOcaS$I@+U%KQ_SEIGj4jqwPZ#=rT&II@ zyKp>RVL~@<{hkF8zt*(tPN{G>`QUH|4vIcwz z548cD+PT^ry~h4l#-rdU{KK?+TL@v_`2{43aYHQZTL58T>qLi%g{bnNpUbEci`N3e zd(L@gaM_Z684Na@r@>-9ClD5w=jtpycwIvO8M=MGuIBwag<5kkyr=q~XQ*8DKmNQ0 zX}6Erb;`&Dy?lX|K=#AF0rWT`bA#hYrhk8l$VZWcvh#Lx^S0^6B9Xy3vUl;52@EZr zj((cX@}ur+{vD}m!86?FH|phNQSe>6 zUn>np^xoQ@)rZIjZ7{OZV}7|HbYy2#q1{D9n!y(cfRBQJ&%?zBY)khK2)Dw+L6c@1 z_4Nd(GNk(1R{lP%Br`-0FlhHZbaCnRDFOtuG9N72Ft*wJ zY&{~}XjN(q!+aOS~7S`UOPKBfz!ciqn1$zS5Zfy+YGcjvq^`RN@ZVK}C+#8GMP{ z5;qF6w^?$<-))od<53aPWK~=ylr{cZk*mB+6v?xJOlbWb>K8fU%2&%@ut&-BcUgb~ z^5g|!*st%#N%Lv+h^+{SGfw^~_yHZ5=G5H1itO79wf)o7 ziMGXk^IAs$!qE`A*|@`y`-m?Ib@&N}EiOf|U341#q4kcT;i}g9;c`I7ek4p}RsS#5 zd{#D){E4~W)|B`;&>1+?qaG_En)XR_1G*ueN=J<-&JBtgD*8~M#QL2h5b0a>i5)65 zPE(_U!csh;$rlo!N{r*!5V~3Q*(=D5D9&3ykgF6&9)ntxX;UaF&R)b~wT)+34ca>f zFNC12*K3_{GA4p9(jGWt+4Q*QhA?lBAqJ85qenoFL(bEu5-pB(^r*D)e)FeSkp~a7;v+J}%49L&w2!8FaC^nslV{Pg zlGpUhDtzJ!Tp5Ww@gDWg7LaU79aH~1(!QpPKjzhlL&$svD<&%-&nDG_5v_YyTJ z1Sod2>*bNIU*NKn`>|0sIe29Ejq_C`xx0-yc2ANuSJ{87BTSzaq)m*`d?C+x>)*{9 z9@9q{75rlbCVR^|sjiUcvklW-qa>cBv)JHs$zFYH7rEnDE@|1q+gGxL{{Z!t#Mmbz+3i;Ahohw}7Dmc;GM%uRSJ z5AiPM$`;bEnP*IwL(3K-+_xl^+bUM`^Li}r2g;Y&_dx<{f|K!jb_IEsUG&Mho5JFw zdnxCs?wWiC0K#Vr0MRxX?y5=yn%NqNHb=X_$8A_SjnN`KJcJgBtdD6jCY7 z^1(@=0KhzWJ5bw1rZa653l`BzSGR6M{rL64>sVq^-bm8>-iRR+PB8kNPUv> zb7l>)o<`mFDm9xu;QQQ*9zY(lr$mw^3&QM5Hi3XGEpHR4OjEo6N!jf=Hx|y_|!4V$6PUM+@aO zZ?;&UZ*pL5p{d z{Ojw89WlT5)Lu+xZ;7tG8)<#) z*X=?w%10iecSsV-{hC$YDbM_w^QmMR|=fm)HJJ6FI(=~&Tm;J07HJWp8m zXy18NQB|k^*5wEqYi|D&xI;0`9KR?kcf`tG^K~2GZ5Pt|$cKeK3z}pSd2D+nBeyk; zVYjAa0+lt|;@vv~EbAG%SPrS5TE&YwVZv|spqMi`T*kUS=mFN;tCTP&3OA2G@+=sC z0M&|3X?cW1=3Y^ox`AIHJ}2+m>qt^%{)bIk{Kjf-%-vMl!dpfOT@3#P#+-+0P|m5n z_wAef%W`|HONL$;Klu8=+L=;BR91h}FD0l1NhSmFtAV8G9B1U^uTjqY)(@t@-|A-u zA|592AAu{{EvY@Kt@(^0=k!a~xd#a_=^*TQYmr>vNxYNBp(L{(ise~+Yi z{bCOs8WrVF!W_-mD_imKk6FLZ6>3`g%)!4bV{do%2A(V1dx>g~s~|;ApitfRN-;#Y z(ApPVv>%sBIyG8zp#>?uok7gwgND-&yMI+9Irwom186Vk24 z*nl?Sq5%?+Jt_CcH&a2S)3&pSOg&G-axrHkfnOhLkCs<<5G#+m9UDocey>Qy^~lw% z0^>jA&B=LwhVZg48UR}pZ=ZjDq&i{jY$?qgJd=N#E+f1(m&{AByl~^ord5E+$8D-C=0NjK! z)P7d0^2AAID(ZoHc_-Ueg~+@1JEs7LNhOTtB;JGCR2PRR>@G!T0==gePYw|p%I=Y5 z?wmpX;G3@==z|@LS!%#LU-Rjh01tJ-yT%TP+Gp`$BTbz@UnT&%zmI?TP#tGT6z(OU z`$MS@1%Tdo)V=WUuUYWY*)iE^eOtTfavOyfR&#F!2_Cy#r$IDq#-IF>O7o(0zLF?* zeno%bZWx6v2TERkshAhkagd?oqsS6umyA|d| zW$U4!{e%n-b#^{D;6=dQyTlbyQGg~D7XwbkPborH?$Ppc9QapNMbi@Dr8ltP8fG(zKzO$YXJ|H^jx=% zTpb%H;b*$D*s;D1C?_8^YwWcVjcy@e(ivj#VX#MOVwllfVQeQuzt^P_s2ZHcA23;Tloqa zXYVEhTK)i|zKFBEzJ`xq6>xpysy)3}?DPw86T~7nCLB)AHwWZ;ZE3QuxO}Yf1xW z{kAQH1BvQ2!LI@QS3XgDWATr>-gXlbtubzvPdzH{;?TznAKWiUm|s0*Qr=jlKFye# ztu5W2OxDHR*1Ymp9CG^@zS2RMn-juR$QL!Xe*Ed>`9O#`i@k|`Rk>Mxcl9NdR5{BO zJ>*8({+=|cmyzB&TI=R)3r$$6jE6Fe89q%s1On-eSEB5HW~lLv?--K$Vd-{k2W&>Z zZ9aTLMSP^#@8p)=_Qmb59*RCUh}CsX%C+oOXtuc>-q1n|stJN&qqEKwW}L*=U6%1+AQ$-X}_kOwb>Yy`MH}JLzArpvOx9~$?2>SplR}peo zfHN*uZ+&Z9j8)({MHT3c8113J(k<90^L$gd9dBaG`Ihox2)!t6O_STaZW284c>eYe zUvezEGmr}FrYT0g>Ebq*r3Y^bC2Qz;)rE$WHZO!Zj`0jy`o^drYtNJc`wVaU@#}G* zV!|bDv_5bw50?|;xG}bYGc2ijVN*%oB>h9tbg9Ty8VG$~1RbIR zj0R_#_7Z@SD$sAl3L}9bj69rvA({S2{X|eSesRlTgCM#uHkM!TgHlejouOFqRdUqR zV}v%JqyYy$VT`9jYL`)NlBccSDm?hoPIn*6J}ArIez=W&WOsuGL_AQZUO!M4#^y64 z3d1gDYK^@_y49)mHyzlPQk~!uBx5#;Xbr8Vqwfv1&|SN}mshNhGk10Bmu5M08N93C zKaWM;G1b>m#N&2mB#9C#>OH18Q<~680L<$c;ZFr`6DLea8}djKy?+$@uHa-WxH~x<4KAZz;_3NtbH#Vxm%P8f^^6d4zYyjf257^(7CSDlM zt?YY^+F-x2Z7%d&C6@^6iY}-uUY>J`tfWeH6;xJsvE^5OX)+G*LSB48LF60Md}Pt8 z0;5${2ENCETnl&@cQScI)?X8eChYz3j@m?%LNjz&ndLN2rXnZndKGPLSNJ9yNp+iD zqbYi*>r>#3Z#r%hbNfi~i!8#Nh4@-NIi1yPG;FAhON{<53Hs`De)U$htkSTZb7&ut zdDY$1Y&NTp+!mVtG_6`~SaQ@dEV`RjJv}zaMMtI5oh*)J zD(>?fT2MVUe-|Hm!iSsE3&&4{xT&kaROOYGM6hl!7ot^Nd1>z;{9G8%1zJW-O`Z}I zJi-CUH1lRpU0SSR<^j458H6UU=&*;QaUXOhf0E_8wPzkJG(TI#e3wP|%rF@Mv>zjr)~WD&AoEVNm+(My2+L z9%hHnZsx3;{VNg`HM40Ny1O7oSb3|aJAE33eC)^C=JkT#b;WPczSVDnJqxU)I{MxC zURik)pfA7ywQ$pKRT79E*im1eeeUVRFbYir!{ zDrV+x%?6V>Ykc@%o!b{ej6^`rr6;(@-u>M zACF$`)5Fe=pziA1n^mGHF7l60fPa*7%p@c7_;Lu52fc{He`_?8 zxg+V^?7E@i`PEBCx|*QZXa${LQ6ztHHDkdj)>6w5z}d%`AwLOFWl<-w5XjzSz+%v33P| zy_9vtK*)gLXTlAhXBfY_v4O$`IW1zT5bc<#hhi|kYKL{yv?HpJD0xm(&L><-00j-bkH)I>tZ3Hwi)Z-cADBiQ7`YavUHfBaZJO}!&9BWO zNT2pQxH3$PDa^vH)!EJvbMowGq0iB za;+YGepjOgh$a$+fC$2S3IhzLc;ql!0vc1<4iMV`gXl|m`leXG;Yq6s!tvU1+C_JB zFyHODrm_4i%je6ErEjLywEZ1gJ1LtL7^?+h!m@Zhyg%N(8s3&$o}ReKQ}jrjOCwCo zTJ@VC)sjY^9P#fPzc9FlV7a$8YL|roOYz6?J94MO0;wJhPN!s)Y3SwiG+HqnGqI5*>38=q{c`oZav%=SDSwP}ZBG^g}6W_|fOXx$+Cb>5*ndd~A>dBL_#A=Xk8 zU>6nhmsXZ9G_fs%LQbRMLmb|HvPI_7^V|JviM|5I1V2Ma#aJCZSW7kg$ZQV8qxWV7 z8>SUE?lzA;q2dieK$NZz6DM&R)bQ)w@$J&N+V70S=w9v zM4YfZipE<6b9P6_?RVhC%h4IsX@vBH73cX@%UfB(->q}(F1vjpM<);C>T@*$!H;O( zB(z^2g=MAn`}%(IH!(>5#~5!wERdE_XRt8qDLAu* zs_#P`uU96`@HhDwafU{zharlDD8Jsg`GZGH*}}3BtKub$F8t9=R@};N`3!>k?La6a z1Acb7ee9^15ZVUQPCO1YggnTTZWtW6UCvPeA2a)M{5ZZ69PvboMcHEG`*b#b6BV5H zna)Vbp(OyAf*!h_-jma%bT{R`!IC%4Y(HKt(B^;k*VVeY!E9nQA$aXD9x_XuC(|EO zL&H4BqbPfhOd+5Wb3;4ca??-xuIhULc$iA|F?VgF$Cj4Yc;IG3wFMU;{25iP zxzNynP&<{sbc0kz&)2 zB#z<@X+{*k*HF%Sv=c_{+O}=FwY{A=M5tP$K(c5sfzQnrI z5y@kpZ^{G#jIpuKXy!^ASiQm>n>NfE`szL&-_5*MH+KsAhrh2PVwk}xP{h46L z2*V&t%DVY|iA&hj-dqIX+|(+Bqq8A#et@>%=O+}x!eL^jsJND}50UA|4lP~X9_+(ixRvPuOnf72IFo|-@+sZ3=&b?EjrCsUr zL$hTAO>g5AC&k9O4)3uC{;m%C>Gsb6Pt&`L`5Y0JZDTWSzk>3JC0sTJN0WvTbXuHE$d!xvzh#F?$0KR%N}gwCc*<#FWl)e2m64+;DdjS8{}jI>i@o1L3_j9 zAs;jnDe?Jc0Q05QsuE4?dqxFCBI0LM?WPOgAl8a>J zX8kF6IUbR^aD?k2^y!#prDNIuE9ai@x$_+tUgDY#&e)%+_M^;Cr(^C_mzdkze>&)U zp)k0m&Ko>XXG!yI3A``Ki}|OX+hv=yyssv9K%edt%3DCqFW-o2SR$>@JTtvy5|%c~ z!s}cSWIP^{EcrwNNRq269n|hZ?8*?E1cG;(4rIly@c|rIX zg#8Y0WVJ*=pi$mkNqozF%D^T5`R)8WbTjhNgV^;h*+*R_yRo)}x-@H z8AHx7wX!X?2r<*(wO^^lo>J6ta{fJ^2B>2TNhV_XR1pvUT=0`BwM-fem_nva2G_Cv zm^_E5rpq>W#Sv=u-1UkF+M#KHqe-B{uO~%nZ$5U*QTp`K&A9g;fM3KDBnm5qxV3U~ zfkHg#=y%tbtLuA{R$iI8SU!Izy&cyWgggOpV+%gc`)jseAhC zWRev~g783J3Q1MZ?>ThA`5d}v`_f~N%Qx?9N(SC8xEkDL$j6o^zl8X!R@WcjGb+)- zk&iY@4cbtuG#`qpz_nl^Ag0LYmfK>sb#2BERe} zE}C1B+VNC2Z&QP>Q#6-DnTlg@(oJpiTn*+C*19)#C-vfW5Z|gMH{U4xIs2qK>gEoC z7T4NoQ(_Kq*i=ETKHfUU*UYfAwoMpY^Pve&!aL~-L~+737O&UDOI8W&2Euc3-ZEc8Jyj_XhOc@y=HlTT)j@XZ2sdndo%Pl5vhTHe{w2D`*YGtI}KhT?YMJBY=wW z;5iRgHZXq^J`scZZ}3)eHnW)omYuZq0qzKtY{ux%=k+-%w)k7=W2LI;7CRR6>i_3P&E4tDg-B z&g@vVdO+1mL-}$hu9&yT|EUpR7ts(~GrgyA05W1|$JFSb_li^c^=x0R zsY%Uuz`gmyzw%3dR&L&(AO3op9;ts7Fi`)|$*o1`isH;^W;TaF^dLF$ zqLdXf=B~rnr@*C<=Xhl`N%ZX7&mX|nV%jS#gf)lZd%D`UE;9f2(*|ece>#DAy z4y7;~v!LOI-G`vdDx29M4x2nh1u!-zX*)KGMcCsqC9zH$hV){E%$}Fb5;dR-#1(j* zQYDWgktwUk5#4MXemCr8GkeCb?mF636V!>KPHtX6>-`jCE#NI}zRhe{@Y)UPYKVOD zDhocnWPN7{xDZRuyq~JH7A7J?LIF@!Lnan8{VfH2?mK=a17ELC zM#C=cNxE*LBW|{B{)>@s(t{-5)MT^?`{^pSw5maI3yo3vi?4I{UGXZZ~`w%9M zkl3{v;DW|8je)9``QY;RZ9T^4QX}N$z?t`Wa31#6-KBPS-ZzI@&ai8%^QjQNsC>#e z{F2#Qir@hj!ykXuNS48Gv(NA*WZp#|PLTBxf=Y3NaPCti%WYZe-z6*eR!q zG3WWgj$TMLSFJ2;njc%8w~-WGU#BIt|Im3tfmw74RkGZFEc7LMIII~n06E9Dovq6mHp zrfQ`jZSo=%4`5$&=6}YCX#XA6p_!zg6jDAszLCut{s zSx9vX4hE8TC^(@uvzhOwjtT_xX&YTNBIT?k)T z>vX)ti|$$f?AD)tGgL~bC~K8LEO{JZ?+IiU|JdCPjD#-w$*f~8jDM@re-zKVxv?0% z!NP>wI-nsCCHrT4P3iONw6&SlJlFjQ|7HgBV{fdkM^(O+60Cn&>L)O#E;^jSX|FQf z$^;9v%T;2U7Z&wqR;o?T(RNB4=haQ!*iqJ!BrFxyknP1UCTR|YIq8{mYc&t=UP*}Y zP}Po{^9E>Gu)#xB*Euq^a^_3C*}`h!jFj29rY3~mP(JyUd@Ma+=pH1Uz9w7EwMyQm z07IU^scD+++zP5ALXDg(u@C%Mj+Yh^}Z6)62I|=k%eu*~aZ7nj_>wBgsj*ln~R9ujs{hI2}L3i)^QB59XjX z>8hdZ>_i10zd{HUtUWBc*1q|RuSFx0 z(5Cln&H~q#CJ%VHbET-FT7d^G^VNMxnb(c!T#Rt^v(fyr*RH8@`FVLv+OJU_f1*&^u|v7*w1@e^ zLyVeJC5fQr^xfer_`~OM8Rf@s?@MeYaoD9zI2Kg1@_xT-I;-C#@gY zQpG{K1ewK*PiCXe@#Hijrff_lrG9NWI(`liQvcNxv|j>hUL1c{o&w z`O45cG`c+(oIksJ?Y7Th{h*4!34-^}b2S#~#7Wm}eUD;B^z~Y%zz4P(ELvbr(Qy|wr0h=|g?=PMY$g49i)t@F6uzt3BC(>^C zu|6c^7>(A>8bStwZtH9YL3W(1?d%zNHlbA2`d|m`4VcCojz#Xj^7u{OI9T%QZ8G^o zMvF5wqy@k_EZz8b5DNw%LHG{6r&D2&<2U-`jYnIwx^Brhn6hj-wVOLGsNHA_%@P36ZalU(UC{ABiYo(5<$GXQ{R0HCe05(*U$hT z%00jsJfSbV7|zoq2J~3&R8@h5-HfG5C-4Nr{9j1H;LP5kw{6GgpM6U&ZBKx}t&Cq| ze2QM3i{k0}3%f#Z_KfJH`CBMQKpySYqMjK^(KujD%N?SK{nAiwRhmP3I^~%<=&TBl z$(?NWJbPpzb_>gFf5up!>w@Vy$xW*c@T@t?r0#zX!EXuTB%DN~2t20b0VF0(NOu+! zWMHnf0eSwWhq58JMphSxBxeQ}wmU%-O~lRBrV=T;x@A&_NNc}S&+bow6)Uh#Eim;p zSEJhBWyI}2hURc-i6sMEo0Ph)M(xkF&}XsBf#J^&VM=%uYsl0z;b&{1cM8^&G67Z& zJ9=p<8ZE+yGdI)4B-K z@YD9^At9ZIV4RmzOn}kwg;noql~4RSVyEa!NTA~SHQe4Oi=PS%FHFC42o3Qr$v0}@ zw7Jc0tw_i>PQHlqWlJsXW0m*f=2+Kx16CQN*F(0NRPP+bcq+a<66q#=AujNVVk*DCz!6tjF8?^ zUmxtntNv!Ge>>eH+9Kc6j~gh5 zViPh1&EuG0H8_Se`@`tWR6}DWEsuq`8d%cNm6d<{@8ED^K;O@>l+|EYM5OwDO6|eJ ztz7E)Y?JwXU@SvYFVqH2LtL>urete~0X!JL(4a%VB_8|JIcN z#{k{Spf%Ii(vn26uKjJ*P+~%@KfQh$9$xB?@}^oiwu!`&ZHw2YHp6v9B9@D;*q?_m zeMj@uYGHOOZz-*`9EwXq-1=&=_w(xqH}?7vR$}ozMI{l?(9r%EiEuLW z+Z25c<5Tq?5qTQ}n@RX>Zu>d_`{%Gd2xbpI>Ef69IvR0B^j8?@^KaYvedoH~+M;^M zCXMQ2@OkLfH-cBN#>eM&KPrcQL4x}D5?h$ouZPAUzRJj2Xy>j~q%9Gu+Xl#hc~qod z@1dhQk5m-9!PU0$tm>l6mQetwwk+gtZFrcbIzMwoaYg@MRo5L3*Vest5@6Q77sMVf4;0jQP3w?)~of+t2yyJkNQ~ zI_rJcyVhR&oU>h0WZqv?A#H2D7hn?2uShN``3I51DqM@?7JV>|ns0gGkt!ACnW_o* z3pw)n0Opm6>HIIJ8N#M&h<>>rO#ggGlvngoZ#N)(nIO1Uc?@%f!b|@;AVL+gitV8s zfhBzT5{7#eBr*@e3&Dnl4DS;9G7n$W86m;8FD8x^t6}4M z0SGpgt??r$B7gKMXrxg=>cyPOp;9MxkqBi1DSLoeKF4;MPEbR^MGJ9W?2)pGO3Hz9 zG797@nC&1(VKMzVr}_DTaDh!9mR0dB{~n8y9~W?SYo1}ea21=FXMT1nsH5+7Mn^t( ztCV6^+a$AOZJQkN!CMBnQ#%pvg;qozyR@ilv1)(MGlLcy-4o>?N8|Dl(wx3b z9Sof+va4!43f_5khG(=WzkS_keWmZ!(8+`eKBNzc_IeofiRzggSg5k*q@@Ol&2O^) zc|Lr3mG22`M)Ca6|7+|#DPSxT$6c~UHG?c@JM6p=Bld9ezVk{J2TeK^stq?+w{WlV zN;>GKKc4D1!cz3GNXoy>Vz|C0Fv$OAlFPR7`*X65cN_EMgnlKbh3oh}{@9*2=!1pj z!m4>*Dr_>mIJ37XWokZl@UD4!fv%Nt>ZN3)MSj6YT>qj;m0Aji?hN*@sJE`9uwoHDpNYk5WO z5JsXiMBV1#5IS`9x?Gx!PjQo4$|FjWHot1L;x5n+p+U69ym4(Oxlv$yD@P(+_FP`xXreSvB1&V%I{JfeC{8{yq z7i`BNJJlziYW_JABMLHjFk4-$g{0DdJ)_0h!8edMbL3H=BPuSQvJKvOl-uYNx z-sclDurp2+IwO=^aQE;p4&~=s49h~l&B&y31*roH% zY;ly{E%E{aKTsWvT;9)AaU+eo%@9p9@u91`CjHJ6Xi_%qn^)jBbY5LOtkoYo_d0!& zk;UXbpOD3%llK3hZqK5iP_2KwqNgUW6I9IQYH8M&M&1wcE2$GA@f~3~<@wr(aj}RJ ztnH=JfBO6M?e`uXH|24!pAcpy5N{&A?W@`$IA`LG_1*MSFZs$e&p;PI+`@F>_d#r2 zXHMjaB)}{ryHRhqf+YyxYW%AL! zFC_32gJl9t7ORfjAbBu_|GF`?0KtQiX4M~){8>*0;Mx818-vzYf<`S;v2TPj2y;VR zy#%vfo+&KRRUZF18T4uay3h?zZvwUg5gnC5t)-E2a@{->xjvYF578WIb zkxp+F+1wR+_Okj`NEl8~e8$YS&tt(_EHM^fC}i9GGP4OOJ-0iXg}eUA`zQhF*N4r4 zs?c`%+gHwj(d_@k&Dt34v9Yo|U63{I^yHH!xQxE&kt5NfM zO3+Y~{`ZIZ!>g~cX0l+%3$ed8$r=Ro}NuqC^gl0j$ds3)IM4OnI5%|)#j9N@7 z?Vh0T4B8IRWTKJ?752MJ>sJ?2N}D_`deOKG*eCmsDtUk0di}bM0U8!8yd;S{|73N? z)R8O2e9tZl*dgRtni}nTJ61{UO z@C2}CJ)0MAs`%*Fy2$l1hCH$p-ADRV^XTn=s7UTt{uwEecAT%5hnpOEfsAL4NS{Jx zR--{@_sjSvIES2t`1H37ZIQmuk`>1FQuea?a{K|~J+n-#5$DakTaiQHgukx zDP}b8?k0vQ@^mQ)nZ^VCB-DA!rP)5dMS{etX2|-@V7JK9>xsd8;-iQFR$rano%Z69 zlk?VA+B7q<0qf>K;kA~`{)ZV!>QT!FiLg~!Qa6A75-{#`LEPm?XZ&w63|y+E zJH1b;i?C%W-!)kfWm5;HyP>vtx`8s5b*N+Xk5QJZl?cXkj)V zD{Rh1_kcc{^MqiCT6b4M)lcXR!-(Uzxy(5u%;S2w$Lb|j7Ibdn-)v)I%OZ6+0%^?@ zt&EJH|BR^T56Se6R|nD%*lsJ{d*2zy_-w7oF#>6we*Em^{9CwD^1Be)40^QRrI6 z+rAMo&* zxA}a=Ld$!sj=PQilJfHm1-PP!Syr8Ioxx1<*9RvPr(OfzfD}hyq9bp%K{E}52svbHW;8?x%Z6-D-VG`?yoKP zD%}^ItbGznMEL5d=&$`QzL`O?M78eVt6=gS}{Na?(N~_2LmA$!Fyydf^}j zHO<7C=-eaDp679ZQYV&bN9Nv6^S&L%fv`Z2d;Lrwq}I$>T{AZoz1s#C1KM0$X=H@2 z!a%#7zKMUAboRzSP&}9eyC5;l{W@y4n+c~Ks%Xy}?RwTKA>&eC&qzS^o)fA$)mHp( z5$BARM-}?m(CGw%tp0oBY4&$R4f_=kFI!oo5@RzY)hjLUg5FPd=WECFx911 zXj0~>Jg@UiJ!;Ojzo4^A4va#nw%Xawxw%8sefS)?>rdEB7U_qM_pY%7gTwwc3eePA zaXDz`Cx)^3QoL`-MIEoCU47qmx(emsU{3uy`1Qn8trhcFYTBF2nqB(VPyS6?7Nx^&nI-&Dqna&+-E2U5f9}TIHHfbNf{0~O17ly0g8{ymBC?DfFQ$Ab zmJBx_3#A&P1gtR@X%>2#@f=)rA`bTw9su3%DjCo$@5b>{7`^9Lmw(ry5K&wrCpIcA zW`bz=(fzZUJW9J#;q!@U3L7Gf5M?g{W-`A50A^wQVJ;;n`Su zFY8O_kw|Pd62ZPTwP_X_756RoB=tB`NT?6!1i$c}b-7wq-@B?7|JRwhSpDO_%5&g3 zxLbQE+%0%1-0C``hbq~qy)7Z!r!+t}azUissU{tyjEfkVin82vb?*t7^89+0k{Yl) zxETi5^bpgc^VFx#2vYao4MBw18ToHFx-u};kwMfuUyX<`nLv}aFZ_dv+GSS9C%kfm z_mV&Pb>``h^qi0bZ2gCMK)I~%d!AAjc@O>zt|Cl;%x28+2|R`L*Q z-9mc1_Yv;rrQCn;hF@B$pMR6dlo4n;1Bbws-CXr9OgQGI+@boWpIC|#a)!BYXK)Q% z+K#qtNs`DD<>68O^uIYE{2|x9#Z4lVA8+Dx+~ad0eKiY`Zou=B`F9Y* z+q*N}9m|5kbwL`>?jGfcyq!i_zmWtZHE`>mju+|wMhBQo4YyXU3Er1pqM`aev%dVY zQhz<}?3M-s?)kOg=L&qTQZP<0yzKqtz%135fsBSmDf59JB}qBCuOe<&ewA9|+mti( z-5igR$Qw!tB5v0$ji?yR9na`UL)T#@y+3e{6jNQ-YFaa<)`2w7?mYnsJHz^!?it*; zUg*5yM=4CtsWhxHvTAoV2HnX4gRT;_piRin|B{e3T~7h5dB(o9^huI2kbhdaE_Ea3 zfW%k^u@FsyeOF?c>6RD zu+I7>{k{S3*6K^o8c;>5$@8GN@-#1y?d-2xhedK44MDBKIE=Del3grl&ER+5{^TGz za=Km05&5v7EzOpO$=Ppa_NrZD!jBl)Xgvj4x&C^?>%RUzde0SDx@d$3Rb1{V-CT*i zMLe_?K7q^yC;Shj8fq{Po(=IXq_5$1(dc?+F1(mUct@=&jxt5S#@=}5Yb9sO(o9>q zI=7~mHh)CLuV0CrZB8{e5dkFv#B+!K0*+B#5j{HlP7d8k74S);qMgG2D- z(vx4Ytxadu^b@7kiK%1aLAV!0-W35$4UoiNq!(Y}8+lzPuxouTt?Yo{MJ;u|X>)R} z-kD@y+?0XlwKG7)r#agPPbFT2Ix2R9NnwA9 zbdAb++7;$^WIie};Zk+*sg#U2h!&4>D4X2b>Xo;h#SS0V-OBKX*e^3>_^GTI3V@=i z2T~l$Br>v!A5{so32dle@Gs@wUZH^fc;hNb^Lc$&%d4@Tm(L8NV%%$5}~?I`*(Ze zH2}f>ob3TmGC%vp+HM69^1DR8C)4ka4BTEh=0oan1j_6V*Q>iV&N6Bm6_hKbxv@{T z9tJ<4)GZ$z!urB5R=PMJSR@}O*EGaRIJpYe$*wLj)VI_LG(u8Q^$S}4NCHYg#TvUm zfS-6K@#4B#Vlv6Pn&RCH_~rFa3&&moS0qvO8BB3Tv2+l5>~y?h-`2vn*!ydm+RB+` zC`q>Qt*j?WLy_3vJ11W{ID(U4K)5qKZ1Sa_3c?d%eRoSByw=!>05W59J96GuGzX7$ z=m<*lO^F2ex9)>)Cc( zt_35Xv1s}eykJ=V=j@fUMJ#7)0!+(L;nueWJiVCHG|5Hm%B1aNz(KE`BrgAd?AcJo z#1SrbNx`Bclt8!Ruf4exk1gRi(&9(!GjPEiMxCh_t+6z@D$7&JUo{9+mjm zHve@VpOv&^v(oZgDl%8zRtzA?8cBQJt^TXTRPYd{J%WHz#?`)h!L(rd0CkmM)z!GQ zgf87#1Gf94E=>NV6PS!6H}aR0r$T*Ja8GWfvi?|cjl)1d+s$U$U9SA&0I75D(YV;Wu;aF zFMpC?G-DY!ZqR_zF@uU>wgB->BV`(moritGJ#LH*R(Ri;#2@CM@98emW*F~#w;0_Y zyyrD>Io;Zq+t=2HHbHa5|I_EY&OAz-8!$YXBcYsl zmw=ZgR3P3nfnQTV^_V!N@^TNM?`)?PuxNU+Hw?1253W0qTN3!GL?v})jj&s<-&;C! z$7+n7-c>SxV>&UJcppUFOvywIQ4kwoLuG$ZKPi5fCB1sdzbQG(!W2l;EOKf2oQ%F} zY$$Hdu5iVT~Cfb&CrbC|jQd zQI)%wO20|!I87DAN$245#1IPT+7JAux#6*`%&j&PBp_MV#yPDOrP}bYe&wui8==)n zdKsI3^bdLp;7nz#V`+-OK5zc&%=#0wt>24w3MIF;t5M)#M6GCrIkuV+7id2YG zIrRA6EmKkFdXzJ;`GZWnxt8 zaMQeu$F(d|3O(!USmLU!fjdZp!hAITDPZ{5!CD;HTs<}1{WBZ^>0dKS6A@W4fN#ry z0lGVtF!_kHqw|~Q6H%qy#EDwto0{Kasi%WG-5;eJ$Hx*E^JN05k(nT+9|L zW#89cy_~Jiq&SMN(f|#6GG+>8AP##!Y+Xafxb$nDZ9thTZQsV3G=wMv{?hQV`teyn z6`1xQZ>HVHSQIzk23nl`r&n{$@O%+9mC{?9B{q zucqP;=B^?cQ@HfZxninqHP!385h_4`=edXm=hBEwMuK6f>D*0qtES*Ifz`40^V@9DnWm%&Ko>; z{0F@2oPshOrviInu!uE}aq!xNJfrM~874fm<0WQhz3tSDqob^Wflne&R>d?UGlq*> zb}OSxMk|-{H9YR-OR@y2;@1Jp&`A@ON=Xs4==Rb_5l1luWdiF(BlpBZpS%I`ya7+7 zlMCTvH-8`ZcW2B80yc>p>bBK6CL?03LJ&^IWG@19@oe-MKx_4K?tjc8Q^kB&5lp{V$*O|t6Y}RH7S~L@_XCHU=tC$-KGkC8RY?? zRbUP1Xt*W4?qygroo7_>S$j@hn}rF8y_>a5SKY9R-ldVCV zvaz2;mamW*vBJ9jMyxoZc3ZK%Xi#tlFmOwK?||#y$&cTi6LD=$Y}*lhg;K7ge$4SM zv%otsKZVM%`(N$>xTm|z??(Gv=|+qei^Ms%l~Z~8WQHqM>2kkVF^P*;H#Xt_?g zV9e_gut9s6omYO0;oQpU$k=MOVE;TGi-n7o+-;VjCxD+yhTY`hL_>aqaVQuwgM8|S z?7{73icUWs6x1j6Uy15a#l&CJoq9jEYa+jIW_{q{zPfM+xz7Q8U)t}&qQ^rWdOcIR z_zB9LJu^j?S$WTNsF_Mv-k#X%miI%ao~+?{-uXGUuKqSKBgYc`>G#svtSd{7sjp(Y zprN~Q|H8)l>24UWIB+mEyX%G*)_srN2o?ByF~{yBjz)F*(Ct-dRWQOla4TGi<<-A=u-ar1D0kN@7zh|2Z&*w?8j-SbcL}VIvrD&iW<-t zPZw9^Rr9|PN(X*HZQrCeU5+T88d5s_SlE~LEoxgpcx8~O|IUI7i*(u%GEaDcFad7J z!1^xP(<1$-LfkxNj?rUvK22>p%Sb>wN$EGGJB=?@3&kPd+zdrpkz4>&*GDcFs2lRK1=>HNti#`vY7aCfRui z58`MnS6H3lwtF??d3Y68p}rabrwp}LS2mEyQofY)p>HN%!?laXp2;qC z^X)JIj3Y3&&kh}3JA4xJb^agRumGM-ag@k}c>es%dJE}QoDWt-j*%H~cwhCEOEm4R zo6jd@Q&_^8^Su**M_aSoBTQkf7n#&QoCsl zUEA>0X`3U;H# zy?B(B^>nAHxa_}$4S!DqE;a^=Gy7gbrev&LZg)EXhD1Rthe<&h3vH<>}n zZcGbh2~uk!zYBxZ9lk*~+iKO59X*Ioq(a!Lqwy5SusMT{T*C8_5$P&HjQ8{2OJww% z#vML-g@?_1@hP{$UsVIbmD#1?Hx+JKW#3NU(pZ{9MH&bEYKgdPx3Y-mvb{ zD~K#BJ2%vhywDiB2=^~oB1>bb@QPwr8_>8bo=sg|SiV6F&nXv{Alpw z^KrPW_Ew!u9+RWkHc-zR9aa_GEEsuT4I-mmK+?)ITf}1xP=}(WGco$?ve%yojSCVyrewjb3(tN3 zi&8^O>y#(pRz@G{%+6B-P%?>&*C;1xNScmoJ%!5^mX)h_uogAc(e{w?fwx^lMp4{x z*<;l3s6NpH0#wP0cbrA-*~0VR2E1tx;m$8b2SZv${ZTSOpj+|lxTs; zXv5eq{AUh3iE?CoE>}D<|3cy#ifWUhM0~2%CsIohZa*H+UpRS{J|(Pl^39*wRV}5K zUUSW3+Kt0KnZ$^GveZGBxGN$%x=pS~hzC_&EA_mzQZ3~!w+cilh6t7S)=p$bg-frh zI)EGL^_Y?UG<3DbP>@>ngN)M~+cMYNsLPIui)so6>)B=sTDyaJ+Bo0P;r#<1x28&oul5Z>gc;J{%M-x z_Bm)RUM(Q%W06$Jls`@LZYR34qPQch?$kof*oGXCJ5sKpYN#0>d&1hJ>h%& zu=|^#(&BzS&2o-NBDn#WCQKl?)A6(kTV?gTdsh>w_=@G)lkYv_RK_rb-^gn4#_R)Z zO)BX&o<~S-Vrv+1%8nZ!V#S%{C!6U`h8M%~wi?%IX2P1<`=y$O1Qmwx=_#2nikAAj z|6!6>H%*t>7S83klLpOOkO4HmL@Obz;TMn@X@gG6or9d@3dWzwA&{Rm4m+c@hdGMM zL79Fp%~e|K;ux!S3tBU?S$$mWk1wSGkJd)2q=xB=qqdq?1Mf)qum3DXow*7BM^##7 zMGh0KyTZB%3u?QO@pAiX?x+xPsN|&e=!QQl+fS;&N&%vS*kGWd#zTSN5yD}ZV4~D` zcqoVNZR*=zMUTe}9M1>NH>#;1kL#e<-K}s3UGjj-i@js4J$y4_q>)!~ z_2MCUhOk{5VHk$Bvlre8wGi-p?zWFg+~D?x%9|%OLG@Hc`-fh zZc=SH)DrIhSblG{2g$<2_2(9UiR#uwK{nYg-f7hPh7xW}SEDbB@3^aTV3i#|k4}de z?eh);-{Tj4%*Qd8h~6|IAd@`$ptpP?!yx;8f0ruqI32BZMHR(soBH2KflkSYV9*m? zti-U94Y7)TPm$KKrN;Q!uxSXHd%0r#7Q;q-u`f&f(`tb{0pr|Jcv~GSZ(?!C#Jg1* zleX2s8*c%xf_$>#h5m5HqhM~L5R6v&Vu-t26WM(o@tR{FIM!j_Iz_0k&@u#FvZFS4 zjBEM}0TyX_>`pKK#Qsi{=WXYx;$UxvRjb&4pVK;CN03#Y#jA)a?=$*&YePcggGrP< zF?qpsQ75Poh>Dkveqqp0V^?r#kMHQ;tAi2Q>Wcq1*I z_H>L6uaY=D? zCjDd0PI)ctyN+GMO&`(EZLN<|#oesaQ`Kj?n2G__muNLi^En#aeEQVX*KGx4Pp^m% zzrCvPio`eMKi3m3IOQgr-)~rzEtmQ{aJ0OR$d9IY^0&LPm1GU(4)anolsB%=(>qE2 pIe(q7B**pkX8^$eXy}{lBk+5$T?s@&u@vums3~hbhbUTv{vQJ%?r#79 literal 0 HcmV?d00001