build.bat 或 build.sh
+- 完全保留了原教学仓库的代码段填空设置和项目架构,代码搬运便捷
+- 已编写好烧板脚本,支持 ZYBO-Z710 开发板的一键烧录,学生只需要把精力集中在 CPU 的编写即可
+
+YatCPU 文档地址[点击此处](https://yatcpu.sysu.tech)
+
+(能求个 star⭐ 吗 QAQ ~)
\ No newline at end of file
diff --git a/lab2/src/main/scala/board/z710/z710/Top.scala b/lab2/src/main/scala/board/z710/z710/Top.scala
new file mode 100644
index 0000000..97864a5
--- /dev/null
+++ b/lab2/src/main/scala/board/z710/z710/Top.scala
@@ -0,0 +1,103 @@
+// Copyright 2022 Canbin Huang
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package board.z710
+
+import chisel3._
+import chisel3.stage.{ChiselGeneratorAnnotation, ChiselStage}
+import chisel3.util.Cat
+import peripheral._
+import riscv.Parameters
+import riscv.core.{CPU, ProgramCounter}
+
+class Top(binaryFilename: String = "say_goodbye.asmbin") extends Module {
+ val io = IO(new Bundle() {
+ val tx = Output(Bool())
+ val rx = Input(Bool())
+
+ val led = Output(Bool()) // z710 has few LEDs, use one for running indicator
+ })
+ val mem = Module(new Memory(Parameters.MemorySizeInWords))
+ // val hdmi_display = Module(new HDMIDisplay)
+ // val display = Module(new CharacterDisplay)
+ val timer = Module(new Timer)
+ val uart = Module(new Uart(frequency = 32_000000, baudRate = 115200)) // 31M or 32M is good, 33M more error
+ val dummy = Module(new Dummy)
+
+ // display.io.bundle <> dummy.io.bundle
+ mem.io.bundle <> dummy.io.bundle
+ mem.io.debug_read_address := 0.U
+ timer.io.bundle <> dummy.io.bundle
+ uart.io.bundle <> dummy.io.bundle
+ io.tx := uart.io.txd
+ uart.io.rxd := io.rx
+
+ val instruction_rom = Module(new InstructionROM(binaryFilename))
+ val rom_loader = Module(new ROMLoader(instruction_rom.capacity))
+
+ rom_loader.io.rom_data := instruction_rom.io.data
+ rom_loader.io.load_address := Parameters.EntryAddress
+ instruction_rom.io.address := rom_loader.io.rom_address
+
+ val CPU_clkdiv = RegInit(UInt(2.W),0.U)
+ val CPU_tick = Wire(Bool())
+ val CPU_next = Wire(UInt(2.W))
+ CPU_next := Mux(CPU_clkdiv === 3.U, 0.U, CPU_clkdiv + 1.U)
+ CPU_tick := CPU_clkdiv === 0.U
+ CPU_clkdiv := CPU_next
+
+ withClock(CPU_tick.asClock) {
+ val cpu = Module(new CPU)
+ cpu.io.interrupt_flag := Cat(uart.io.signal_interrupt, timer.io.signal_interrupt)
+ cpu.io.csr_regs_debug_read_address := 0.U
+ cpu.io.regs_debug_read_address := 0.U
+ cpu.io.instruction_valid := rom_loader.io.load_finished
+ mem.io.instruction_address := cpu.io.instruction_address
+ cpu.io.instruction := mem.io.instruction
+
+ when(!rom_loader.io.load_finished) {
+ rom_loader.io.bundle <> mem.io.bundle
+ cpu.io.memory_bundle.read_data := 0.U
+ }.otherwise {
+ rom_loader.io.bundle.read_data := 0.U
+ when(cpu.io.deviceSelect === 4.U) {
+ cpu.io.memory_bundle <> timer.io.bundle
+ }.elsewhen(cpu.io.deviceSelect === 2.U) { // deviceSelect = highest 3 bits of address, thus 0x4000_0000 is mapped to UART
+ cpu.io.memory_bundle <> uart.io.bundle
+ }.otherwise {
+ cpu.io.memory_bundle <> mem.io.bundle
+ }
+ }
+ }
+
+ // LED, blinks every second
+ val clock_freq = 40_000_000.U
+ val led_count = RegInit(0.U(32.W))
+ when (led_count >= clock_freq) {
+ led_count := 0.U
+ }.otherwise {
+ led_count := led_count + 1.U
+ }
+ io.led := (led_count >= (clock_freq >> 1))
+
+
+
+}
+
+object VerilogGenerator extends App {
+ (new ChiselStage).execute(
+ Array("-X", "verilog", "-td", "verilog/z710"),
+ Seq(ChiselGeneratorAnnotation(() => new Top("say_goodbye.asmbin"))) // program to run on CPU
+ )
+}
\ No newline at end of file
diff --git a/lab2/src/test/scala/riscv/BoardTest.scala b/lab2/src/test/scala/riscv/BoardTest.scala
index 40bd459..46e0621 100644
--- a/lab2/src/test/scala/riscv/BoardTest.scala
+++ b/lab2/src/test/scala/riscv/BoardTest.scala
@@ -1,25 +1,25 @@
-package riscv
+package riscv.singlecycle
-import board.z710.Top
-
-import riscv.{Parameters, TestAnnotations}
+import board.basys3.BootStates
import chisel3._
-import chisel3.util.{is, switch}
import chiseltest._
import org.scalatest.flatspec.AnyFlatSpec
+
+import riscv.{Parameters, TestAnnotations}
+
import board.z710.Top
-class SayGoodbyeTest extends AnyFlatSpec with ChiselScalatestTester {
- behavior of "Board simulation"
- it should "say goodbye " in {
- test(new Top("say_goodbye.asmbin")).withAnnotations(TestAnnotations.annos) { c =>
-
- for (i <- 1 to 50000) {
- c.clock.step(5)
- c.io.rx.poke((i % 2).U) // poke some useless value, since rx not yet used
- }
- }
+class BoardSayGoodbyeTest extends AnyFlatSpec with ChiselScalatestTester {
+ behavior of "Board Single"
+ it should "say goodbye" in {
+ test(new Top("say_goodbye.asmbin")).withAnnotations(Seq(VerilatorBackendAnnotation, WriteVcdAnnotation))
+ { c =>
+ for (i <- 1 to 200) {
+ c.clock.step(1000)
+ c.io.rx.poke((i % 2).B) // Avoid timeout
+ }
+ }
}
}
diff --git a/lab2/vivado/z710/generate_and_program.tcl b/lab2/vivado/z710/generate_and_program.tcl
new file mode 100644
index 0000000..71df1af
--- /dev/null
+++ b/lab2/vivado/z710/generate_and_program.tcl
@@ -0,0 +1,17 @@
+# Copyright 2021 Howard Lau
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Only tested on Vivado 2020.1 on Windows 10
+source generate_bitstream.tcl
+source program_device.tcl
\ No newline at end of file
diff --git a/lab2/vivado/z710/generate_bitstream.tcl b/lab2/vivado/z710/generate_bitstream.tcl
new file mode 100644
index 0000000..0a025be
--- /dev/null
+++ b/lab2/vivado/z710/generate_bitstream.tcl
@@ -0,0 +1,57 @@
+# Copyright 2021 Howard Lau
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+source open_project.tcl
+
+while 1 {
+ if { [catch {launch_runs synth_1 -jobs 4 } ] } {
+ regexp {ERROR: \[Common (\d+-\d+)]} $errorInfo -> code
+ if { [string equal $code "12-978"] } {
+ puts "Already generated and up-to-date"
+ break
+ } elseif { [string equal $code "17-69"] } {
+ puts "Out of date, reset runs"
+ reset_runs synth_1
+ continue
+ } else {
+ puts "UNKNOWN ERROR!!! $errorInfo"
+ exit
+ }
+ }
+ break
+}
+
+wait_on_run synth_1
+
+while 1 {
+ if { [catch {launch_runs impl_1 -jobs 4 -to_step write_bitstream } ] } {
+ regexp {ERROR: \[Vivado (\d+-\d+)]} $errorInfo -> code
+ if { [string equal $code "12-978"] } {
+ puts "Already generated and up-to-date"
+ break
+ } elseif { [string equal $code "12-1088"] } {
+ puts "Out of date, reset runs"
+ reset_runs impl_1
+ continue
+ } else {
+ puts "UNKNOWN ERROR!!! $errorInfo"
+ exit
+ }
+ }
+ break
+}
+
+wait_on_run impl_1
+
+file rename riscv-z710/riscv-z710.runs/impl_1/design_1_wrapper.bit riscv-z710/riscv-z710.runs/impl_1/Top.bit
\ No newline at end of file
diff --git a/lab2/vivado/z710/helloworld.c b/lab2/vivado/z710/helloworld.c
new file mode 100644
index 0000000..1f04639
--- /dev/null
+++ b/lab2/vivado/z710/helloworld.c
@@ -0,0 +1,139 @@
+/******************************************************************************
+*
+* Copyright (C) 2009 - 2014 Xilinx, Inc. All rights reserved.
+*
+* Permission is hereby granted, free of charge, to any person obtaining a copy
+* of this software and associated documentation files (the "Software"), to deal
+* in the Software without restriction, including without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* Use of the Software is limited solely to applications:
+* (a) running on a Xilinx device, or
+* (b) that interact with a Xilinx device through a bus or interconnect.
+*
+* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
+* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*
+* Except as contained in this notice, the name of the Xilinx shall not be used
+* in advertising or otherwise to promote the sale, use or other dealings in
+* this Software without prior written authorization from Xilinx.
+*
+******************************************************************************/
+
+/*
+ * helloworld.c: simple test application
+ *
+ * This application configures UART 16550 to baud rate 9600.
+ * PS7 UART (Zynq) is not initialized by this application, since
+ * bootrom/bsp configures it to baud rate 115200
+ *
+ * ------------------------------------------------
+ * | UART TYPE BAUD RATE |
+ * ------------------------------------------------
+ * uartns550 9600
+ * uartlite Configurable only in HW design
+ * ps7_uart 115200 (configured by bootrom/bsp)
+ */
+
+#include 5p z&`R@Yj>~;z?Af0YiOUK_9PtqwhsAoJ#ZmhFL%H?xu7skKCt@t<49ChUD{^NE7@Z#H zRW@+>?TRrB46abF_I=>gU8onj)AMK^uc+uqWG&19$j*rB(w$B5Or@i`^xx@%+h3$+lxS&B{A{IpshfPu-A7-7s5qo=;3tKO4>A zr(c__BxJpo>y)>H_NE#2vBt)u8Ik$-qfXyER$QO`t#CQ=``0*K3`L(D@owcy<47 zr0udIc7U36#@#V*=ca}z`oj3)IsdU6#{1@^}iSW2bclv z2mp}fWyhJxa$q66b9M};>g{|DOt?(#;;NgnmxGiIh8G*l 7;wfR_i1HM#4~9tpbG$mM9c3o~0&&XYv;|O5{)I!Vf_@j0YLPg~ z|8w?GPz>w?H~6L!)j+d!;>gP6bCpA1Uskw(XPtGGu4W-eJtoEQl@V7tlVFIHs}Rz( zd+p#LIuUk=cRRbzNcG|0>Hj~58i><|-AGe67lugZvr=J*^u4Lk*#Fb~H&SRBsTeTl z-YSxz1$=- $kiZ-4e`fS=@~H6IWczgI zD{pb 4588cu3)W4VjP5J>^G}z?py=wbJrLA+K>uv~iGo~~vBW=) zCsNds)$q+x$5!^oBx9grFq_-M{qMYS*j=UZyUoM>$Y3jSlDUpZ_u?C?N&ZrroK?&t z%OEhSr7|yD+uVbIo@&DanC=N+Mf@f*e|2DpagOE0uSq|WD$Gz&s_~2C$?z|D6nmP} zB28PrNxIrlTB4HC%*Kqdg1(#f4p*5^`<+K{@mo>yH0v>j^2yAIii-@ZNne<3L#u{S zHw*LQ i9{Qu!KHb_M8g5w%TXU1E z4Nbzuzyt&ixX6STCM6}m%UK!ISpMEgJ(R1;2pmmo;aiOZ>g8x_PvoZC34zHptX4@* zy0b2mcy_7U9mu&^f|(3w^Ha{lw0#MQ!^3`yXVnDb$>vniEeepQ$VFkRVnFd;33J2q zcVSIg&7$J8pQ@fEU!-+8{uVIl#WlJbieROgD{0BZEIlu8z3+% z!1*}GipwmegQgU)t)<*%&a;AUtVO!XRvxbkpm}$4n%GQ!ABX^@$I#tHA@dZiz_{H8 zV7nMf_s-=o0}Nb$Fr8_0b6r~CPC4b?x!{)ZR)a*h6+AD1Kpu+?w{pvEYM0na0HNmc zci*baS&hu8inx9LY1OiSTC9g{<(=3|9=U#=dWn*h;jtK{uQd?Av*K2U&-nh=bw 6f0$U-bnv04WapxUk1&&F zC{ud{f{Gt}X^ZdVh1v@XgnfL3Y I>dU|a!q6r=de|J<>MzR(lJEM_r5i$d0KkY$*8WDT%Rt3|BqNfzv zvLB*4679=#`BwJwGX8IdjeJ>YvOTOOYj&1hdvd`0hzrPAVZHmQ%WKV={pHn|6;8t! z)$L?2RH->PIl#yy98tJHm40JQYG8z|y-qjna3t(Krb2Z_53Is?!u|2BPkx`q{y9oD zEG7!Wq}~y|@;e(-vhfmt>u}rHK`C!&;Z%{IwXBBhvHgJOnzx#)dsv?vS7G!`jgaz! zVYjk1BuQ J~xOM4GuVpA1Z?<2i))1)6Z1)rIU zG{~m9Lye9~DClur-EV?{o&J3TK?-qiOrQ0HW}j1e6S394`0Xn4E s%E1g-e-y;v+uPnw8k@Eyob#XuggV-) %d8CE oxNkNE zZ4B^01`&ysTgsr;HVf9Bp+jE-Ryc`19Ly-tsaF_nCsN|Juzb*gA@n(iLyI;_J>#v4 zR5+r{(SsgqKIZqnKsAx=+n}E~CIn;N$3vBUfskAdEm@C`2<%7H)uv4a9`3c>z=Qn$ zL_;mLKVa;u&{IG90%w-Aj;Mjh)Q8@MLMBBniONRSCByFc>uf{O0Sm^KQdZ7=n6$#B z-E`7{Sgnc8WtngkX1W4risj3t&&?Rtq{m6W aGU@*poSy1-2Jw8Q+TcIOh$I9in>Byt^f!x2is$ zp|YHMaWMB5XDB@ozU5)VIM!GcY|@h6KL?_ta&A@P_+sQuJG;hk$Tj!ZTc`gXQur4A z{uHApw@bJQ!Z@k+0HPB#-C-eOjmK~gkoZJ8B!2RHw(rUPX;~ZStjyNks_AjO`rwqy z>Wl%T9tmd1ZKwC#z1A)NjWh<|pm+aJchoGb5OurfGM(lca<%{%^(_s6)Poe-DwC(1 zx>W#Z^OnMK`j^+r@Z1d(04^>pOg?ayFoJ^%8!zpJ0Z3?WF3tj95;%i8pv+JaFM&3D zWXwxUQ*XW~f99TjRD$}*r RNanUC?gJ@lGP|j=c7LJz zWtXA!UUj(~25(GKmS=v|k@t#ht%=ukX$gdMeW`<{z`41oXzI;!^jF!<{qCr@azJSc z q}0Ck3`v|w2J9#AjSEs| z%x?^PYIM}@QX~DNF%hB*kr-A__iMeBGD%#Ch}vjq`7te^b1t$Q5+&fuQR+3eG@YqX zz+5jl#_;k`s+o`pD?F1~>B#shN;WuyGbZIM=b*=~2f8$vS0e5+(K0TJ?Igaf-P5)# z%AXc>I;_B&;gh2iK3VTIv#Huz>5DR5uT7?A>_r9^N9q7avE$Xsx4=a*H`oJAXGbfu zRfA!O;Xx z_b- SLt)vTWQa6A@J^U#nS zqG*SoN W3YK^$^_xc~Ohs2J_8kEQo*E!gmRU!9GTaM>RH_}qATt!->n;%4?K Wzf|Jum zma_W2Dqh1JyPuOhLs?$)TCbi})gw5ad4 GuYkscIj}0LV^O zp81|jTny3)k~(+?nu~HMU2#^R*!RHGm$`Chf1Q-eY-kheQTyiknbzfI^V%sM@)yLH zrG#QbZuYlabCw$k{c)1&^1f?jcp3%Ht8KXvY2`gSdVQU0Bq-O>kv;xw;C1(zP@B2a zgY $4^88q3n$>Ep)py_FMkQC5N)?n^6bWCHM+~lMZQ+1|gJ^I&InH?9_xVMj zq?sj0L~GHYOy#V5bz`($eN4Z~+5!Q)Go7@|7&_h19@XhJ=1&`8l>Cd#@HBufIPE=n z^){<__<)fG^a>-%=6YwTY%@ =BN7h|HRKz*O(R`p7dS?K{U8` zxC}}6nTdpR(uZ=Tor`k291w yptxBW-ml&uDQVE(*19(8bCvv+%`j~xGyx~`+oZXW#mOH1MtotSa=d%c1&=G1J0 zoHVV8W gT;Tro?bkh22(a{w2Qh z>+h|zdc&RN66@1M$>l$UUslX7VPS$s2fZkgY(jN>DIdO*TMUWk`zU?x_52-1Ij>?a zPetH}pET(J2Hl^o?f==5R{EHLsQkv%F4-T{itHpdsq~|)sC+H;YD@IJulxxOzEO2D z+eN%B56E<3%GI15pj=*t&}+045BF;oeRnWvWb+1IgRw)cxgAWV8jB%PDxq{{>MQO_ zMZJj&Dq5~dTJvralu^O-N0$!N<#=Pu##fVd@$B@t`#jnBY?0iKoXepllkDmM`>tt- z+(YW^{V=6&-BCq@+2ZYR@BQuJA#p{*Yjd^FQ|~R!QhQq&U}7NN-K*8-#g#i#rCuT~ zpY8Oqa{l7`Jh$SakdR`TPFv5-8wAqae$oFJ*Sibpb;ZZ2&(LZ5F%UZ3NHNG$RYnO| zZgjdl)V3WOz#Id!WeSuSjZ=CKzht+6_h<}UAAM^oqCva5S9%D0BY1ek)vBp5uG2bs zeIjjqv$`u`7Cr~}?+3C*zsZ9x@9y4SUI691ck6E(FMf;`es4R>er2&|>#uuBCKpc~ z&-X9U+*iaWk5NWKMrr`X=T*KRyzJ%N0HXd!lX&5(JalfamuDK6Y$m^{!2Y9=HgdFe z)wKeC^*PQm2TY1Hx@Z%E4o>-wxx$fWPl1yC$J7zdY2D QV30g6Ou`Q@#L^|=~Tg9e;UrM{*Gj3!`liyEO{c5-#xgB~^be$Ga4 zwu^k8vF#?N*#tkuh-$@gKHroIwLi7yr_ggAmGmk}K>u?~VA1n^JpRqMj*B&mtVI{n zFK4UXs14gW*$l&GAa5lD@eoM@>;w~~`f`lw=M{vsJWZ*+mZR)yib;0K)gfUI-_Rf} zQ7*Ps3@u#_)|YHRAxXN`P2Z}TdV$1d =`@?POl^@Ei z=X7LyI&8U0FwAPesvziw-pFbvP{){wL#KK2JKK-!OR=12xG(Li`Ou6iXZpyR35rw)U zTgf7#>mL<>4r0rx#Mb2__QM=}#3Glivpc> 2-!ut@NYZ0HzCXk3R6A1fm8x^dg0f3m{@ur<~pNh(IX=m51#c)zC7j u#0Y5A_6GR&o@@P7i+J&Tt^7yTMcjZR(g!GydD zP$@fTAdbo6Sx!wf%M~oI5G2#g=PBXc^lnP-uM5vi>*7k<;Wb9cB_GIG4`-J*3}jrG z<>x2XR4)h1wb+Ual{oBq9Yl{MX&)$&?%!InfkPrC;$vNzQ;C{b)!)z_aP)P20$ PuPk1yQshqNR)eG~g;{F^V^u_qq78Jsn)0^c9fW!IeHJ5k zE5@6EVD?jPIEW{+Pf0mw9FoD3TD$(sU=m(U=7h=W*juOmw*iltsg68r?uoJ5t}Sp? zg};LFYodnE{70jg`6A(FkBX~xjsE7=YYkJmig3JHGGurgJnhwXWkPrpw_0wZk$|hE z-2Bttb6$S(x8t_*V;I6=wxZqmdPjBZxLWJrotpkf9pKj&`@}cEx{>(0(44BvXW^U? zJDhRzFRPK(?N`%gAR+T={@wfvS`fOdBnYQnX!a`V^5-(M$*PL}?Z;D3Si%*Pk9Fun zYVCHW1ugAk%ZqJQb)H`{Pf-J3kMmDYGoAMGr{nQGMrL($lL!{2D&3@b(xUAjtvT o__OH=`79*zEwQ|LOpM9Qx**#^hCY^Q90^_U6)~_ev G%FVV F+Z;7cV@k4dFwDTu#G9VcWjmR%F?N}f41RTr zXqsshMU-J4uGQ)Jxma5e$aa}liWTzcGg_J`LPgNzyrP3kT{PC+C6oI_(uL79KB3)N zfog%n&PDc2uZ$BbaGLPctwBJKI0^Hh&p645DguxPKq&QWd4hUilAsQCzVj`!-JRN) zGg j$KI73P`R4X| zKUc!ODpAcw2OGch%UslLL3FI0i@5$`gNt}>=B2r*(4s!;=#R}#PPWn)^6*gWc1xop z{y|55_RmctC$~)>ghP#mz2}SvRK<0p*F&Y_%>~k1l(?E-U(%p$5UQ57rLAwd1j$8E zx3^w-jqH+aP1>f;I@lWAKg&kRTof{;233bs8r?phmpvS3x>HCONCcbpENWVO487Ly zbVrw%I?>9B)r>g|ua2(?BW5i+-OpFbs75wtv&gc28%7~5!|k9MP{8zIk#hxa@F& zxwL~cQmrHAp!+0>^e${}+$h$OQ5u~Q$Kgtyrf`d-n$t?*a$47hOVJgv+I9@dbg0C_ zd?UtFF%4Eaxy!j%!kr;MrkGnTvj8`wG;J^@$s`_gQ{xNzG25@3m|i(dT;+2;0_f)G z&qz^6aI$*Zre}akt8^ 9`qnk^e3VgmTokC0)kPPr(bA{TQEn=Q5?4#`)_&C|c6 z)o}s*d@Km}6P} xnCQWA2iM-#e>Q8WHSJ*0U32w98E>>elOvG{%dKoralXOU d~b#^ehfTQSClF7k;mn#N2z=Ce2k zPHz$=XUY#rywh&2d^)V2O*hsSIZ~I0aSN?_+!HecwANU8gm3#RiI!_Ae6BfH&4PrV zZY=K }s+o0X1Zj1_5x|9Z23>@)0{+|P%h;a+sn7I_QUokB z7>Qve!1y%N5GGG~zJ@OY6h-(X4>Oh%QN_pXk;yFaa5!xAJ>kxFe6H)dyhWaFM6Ha6 zC~IXQ;nR{cU%`@hLh7hyvPlOIHbZGX&XdWJNe6ok#Pi}RXZThl7qm~qE!?fQlfWgn zyHdup*VD0%)+b=YsmF5w{N1z3O}`j!`zv*M$IkAA?d#lXh0oYni<_VC9ZbXVLB=P$ zv
X#Omt?0llS#z2#4o#8Y%w?9Cw?^e$JiX^PqbBMRt-N zr`HKw2-kDSYD4R#$6ZHz!;!XA8i}v_lCSfdgwVyJ-+kNN+bqcM^6u?o<;nNt7SM4u z9=|4NUx?D&!_!t_{m~QhcDZu8zJDTgFh2Ko>3+5W^6{==E%5`l ~%Z@ovl_sMZhz!ICWuH@Eo `e(5}o zc2)JgGpcAhYxn7DIdwnMUMF6)XlW61YM33;nz=ffSUo3fQv}-xg4&C{uKb?LKpeXX z^edg@KWX+W`KqqSbNjswj<)l#>>m_ vDD$UhXZOw5 zwF`}Pex7pb3O|RjYOmD9yCSk5s_mRQY12j8a^~i8#=jjk%g#J;AJ&c*J+$V>dDOxB zm`cwSTE1{%rnJ-Q_9S>wDFfd6ef`!~kehWT!FxcW= K7jSEISCHr53fa5_R>1V2c|2uQmEMDwoR&(_Z4K{gi>nW(nDoxau;nlnpquy{rXT z8n5e>_w3f^0Gc%;>R6IJIbJ@Pwj#7Th+*Zo@+q(@EO&FZdh3t0^-0Mrv81AAZr51r z0}l=MM{3u};pqM!?0r>K6kOQurznV&0@9( k=txB6LhvBsS&h^sSr+15A(R5fO| z+=ALmO+Lo3YtY5 DnW?R8?m;!Neu6z zuGIr%kal=KAQeoLo^x94a9mvf-hEP~Kd0F92EsME((sUS?2WM88B6VXID?PcQ*>yh zdLxGqw-az>M!j{J+U4iCT ;=m!Uz2fCG`a2;sDFgM?0wr^pt1j=9O~t_Gb{{ zZAaLCYC#JY&MLsEqgr=KFEc~xRLwd@<<`3zlf4-Cfa!w@qm*{q5LL8U#CSX3k1jk% zX6cmt`4L)Wl3M@ByA-s^{k_HvlfUtsg@%%m>N4(;x+$_|oU16OeLwo$l+?g#zsQEN z{;#B3ZFghYR{+WA16*3b(2>1;wk_BZpatCdcI3^x>lxRe>&pm)07Ws&S#vPBeU;~i zT)JHLpsImyRP@$pT}=M4Wt`H1WvA|ir>49Ax5g&X){&U~AhT~}q6q>!w+3~U?&r6e z?qV^B|CDy**v9GGzuA|MKTD->WO?Kin1xHVS~qy*>b6-P__^C3yc7!tY-k2{3r{+{36$KM zWXOuW(mGc{XM$6TR2#$_vS*C5ZMS|n^%U&<#F0dcII;vbjx;m@rEUtWv!e%Vds9AY zIRz^|DiFjPdo9eUmXX-8phOcMN>Wawb{{$0Dz8F4-*=d=sum*LRd40ooov`_&WSyw zjDrk{5vqqMbMFi@8;Wa;-%5Ta=&`FHDBFVc1~VDHa-nc3`j!4)#`isWP`O0smH%;j z`&@t;&0H!t9B|-j;T6!4rYEJz(qf|@)e6|i;h(iV=;7`hkR8>h%LwQc=?QMuhK^}m z?4K{4D3mbGAc;y;_>Q~hu6rrvHXSj9 )H4+;5)(EyipH#*>fxh`(YT<#lytU_3<|oTowC#n097BU|JJ%dEuj%kup--v7?2~ zj$<^K&*zc~!-p;akNP|;W_j$6^J^wavB->%PK+0_yu4aHP$NJ2^q{t>>N@Pz{9kpw z+(lDy!%zlr)JxqMWWZ|%XeE1WK{T*>H))KsAw9|fZycX5?3HGuu ?w&7@sxe~!Wd`G8?D`9WKUG-(3U#GoO%BWz}h h-QDmFi=!9r|tb7w3-o z78Ad%3g*k<)_k=~4$f>)T4`|R?+9?B{VO}|BoB;cysT@AZD*nwNxuUSjsNfEIwgvT zvo?qy4DR5YV#+w(;Fz9`u`SV=;=ro=j&9ttU_LMTY@N_HckXh35Xo=AE0KORqZ?Gk zw<%nkmu%)5WX;Ua=bh 6k ze<}_v&GbvsZ@+5I;-U{G8u=_RyJixr^{up}2S>q_1>AjcmU``RLOiW(aAwzhS;Wk8 z+9VT%#S`p2xF-N3hb>FJTp4gd9`Mg~Koogy80&G<$Le?_aAhH{CG5PNKXkxEVS6`` zKLbK$@F;1Iyoo!a0baq)UYvFrmrFm<`oMN)XVS0r>sb-lMKDwgPT4$BzclHnVs=v1 zOqRAC&COTmFNOtm#dR~k>8=K$M#D?xQ!7@||GcUp)ok<9j}dU_LNH;v^QA|@-LuX& z9~@(zjh- x7~!W4Gk;ubv} z5JCfUU9j}yxa|`D$~T6ku4t$}TOGvdKHdGK?4r`(a=GmQTV=+2&VaY$Njrco&&hr% zfKuN3-O6X-6vYn4gmifmQ(EpVVQ^ 6L~5s*v*}ycdX?d?v73s%Vmt|SkRs9Kn`5~Y zN}(MkW|yLzeO)?Cq5=dZAg@F H)Hxw~F<}yN!&JcGTZK;&vVMu6rsQ9qWjVV)hJ4#c z9R^S+c515)fLcAq##)sqQP#Omh4H_|_ &ZvBfp`n zL~Y|d78{fVT9385qWf)5Lhg18Nix)_f#k$abhy*$0Gn=`U=3pHai1pAS(9^Wq^v`p zm+I0%hk<1A$QP@X?^QEPKdRm2+JXY**C4nZnthI&O$VG=bMv8`Li<-?sFB><@{cl$ zdZGZ`uagr$_XH&};(D~N@SONGwm9QK$=>tMmiN=<9~?bR6S4hJ5}tUqelaFSh{g>o z(ZZHk6Y4-6P^ D$0{SD zx2p*wheUqZHlx?!zb^xhdhaG3Zc22aobl1=hpeMFuLBO7)VW^P?{MByHV^%?+E>`i z8lPw4O{#w@>FHQmP`Gzup9m9x*IUAc1^gz6DONBOI-W0u@H5Y%Ea~}yPZhfpIFcm& zN3Mrw5})fmL;m8AsOO*TV29^?7P|5>`(P0gluq;2uj>!~PVBAUf_<2Zc2V;|?5JQm zpYyp1zrmTlUt=Y+CwWK_q`RWI^^IEEC$LR4d2}`S`@_4bvAXZO`Gfrc&xLo;@9slZ z)ozx~mSBJI*arAd#$ba-zG5&9h|S23iV&*a6wFq X;e&jv= zpwJ8^8-+O3VKtc<*?hY}eq|1_(bN4fYmxtm9QBfPxA9CT*gf{7&({nt*4~X~g>;o` zdj)8AL kK5UJ@mBlT}8&W{;GmWlLN~VaFLwR zrp*&~VwN4ZH;FS#g-uwL{FjkJ02RJ0uHK^Bna$fJnWY>sg<$Y%nKy2N2e92*BZu(a z8}%3uK#G~0Xp$H4;&aL)tmcktzWvKkhZ4vey^&?Z`zyF}910I_C7Z4xrm$M*LweVz z16KSyc!)x-f3 >rbA$HB<-q(Q$@Sme`(iaA$8RPNV>BsJ z`4773M?*u_)vsfw1R{JNTBjJE7q_!TY&v*~D3w@wP0(Hq2c_;SHr_5|O0 pKdSqus2#7HHuV{E55Wa8ITY6m&XD(VeTpr1Y`b9Ln z``|*xxY!l86kYKZ9VX49zl6j?|HOed`hN4XJzBn*9_Sug%sF?tIjY9vRI97tQuZ&l zqPIniUfrFo*ENys3ty^n9H+!05h5bZ3))hG6k+Z?d6YS-zbn1a7wI(9#>9(&Ddg1< z@w$h-2OkI&+i(}%k0yxIgH%&O{W$5QEH2vF7KAx6_q7*4sVmgmx~ck?g=zQmE{Jt1 zLZt~e&z;j7#8dGVBtW7qBE0_Lw=1cmzQ6-~fWQB^SSt-9k>vH-F&^T2u@TXEiWhgc z+)q$)+>X&BI%-|p!85%Dd7V7;2}$1dNYD#kUaNrHeM{H|5**^C8;z@netv_8fjYOx zWZIlC-2h3?)#X!AP{8%#Bf7J7-MMocP8YQIPV5e`dJ_SFqUVqHyCpKgS!Ol z-@Nv^3 z?kF?(*68?d;C9FPB)zr%BzW2TBy(r=VNUGvtTy~=G!O{{@mr6!!h?Jsk9rVyRik=_ zl*(7fN4Z{8V)IOasdKO*IOraO!*!QVZ|u50{Mf^_e3yaaZR&Hu?!0i1SrH4y+@V+Q zB4olj+xP0FW==GW#n{3ZRUzI|K0Tc>MMgo+rvyS{1ZJdJo=4P9X-Hq##aNK7-{P3b zzw}}CeHpb=9Q-Q#?6jele);M!&RC~>?3p>-5#D|b3G5NeLAL{nt5?a*E=g=2d#F`& zqT1BTjobEzMCuQGZ5~Hssjo(>ssgt18g2kxi>u9&ZpRbgg~p1Ly8(CSdGzFP&V?&w z+rvM1jTsuyBlWm^9Nu{HQnciRcgN4Wy2SK?A@dPUQok);K%Q+ZdSlvA%z3NosDAU< z$!IX`9MmGg&QZx6$gQ)exuic`?~A(oCIM}z03dU!j8w`R`an|c?j^+-B ^!YJam{m2%t`2xOvh9DHDVfgh zhr UsNVvWq+FvEcCXTc1&0oEP>mN|u;1ICP5|MZ~8+n|ESn=K+{RF+f6)wdvZE}FY; z@*tbbwM5SiLM=_&R+Ok{2eCBR(Z%!qnM5O&9N1;%I!9cEymU6-c9*W># tDlOOA7-FJUk~iN!KOSV14} z!EFt&tx1KWHhTetcSqsLs( O$@;W^gBY*nGZR5hJ;70j^=Wn{@9%^^aGlDf(Z%t0@V92?Jb3m1? zLX#f&$talmkVkI^PSoi%#(Z2Eo^Y(+4{VHx*x d_&J-ky zeu!;|r#EG}7=R|33Z*v#CE==y$74jtQ{z}_YT4RcW?9&4ltn0TcsY+>GwY5>qV+?V z^@b){B(4EZ*9E&nwbwl?1{OOh{9tN~6{VHKFY(+sIF@l7*vKTAhsq96Yuvts=kAaT ze7&rM{_~UvG^N#aS7MU?xz=hV EuZ@(|o6;uw1raPIW)m||QcBfr zSuUxeX%t?QI5b$tOA@qqugh0k&(xR0@n?CDIK332J>YhoH!u!U11KM00<>lB`HIwH z&n4N<>#Ix&(z$ju`LzlIE88~mA5u($vvx)9zUogl$iIIamK`N|Ss+a3^}Lv6uJwxq zPLWQ1%H_)nUrfXb!vL{2GMLR!A(B(7K1W2rPOakwwev>E*`U;j95mO%9jp1TdYsxB z`51C(-|qU@annoyW6)R?mw&)0y{aXm>9v@r&u7AgdOORf;W3<|&E;-odC}s8&QQC3 zmz|*+)5dGL*r%mu#u+jkTn6iQP)?mnbIUV*VZFS~t+2TK9N56Pd@`24VuoNyNXH^K z6iNr}ESgXCCp~nBjVW>E5#G@XM9NWVO~<$?+@m@^Ol!_KbKfflWFQ_^j1J N !M(gyT*+i#xtXH~m29Vb5q~nv9|B;}6!BBBVL8Em=?Ih9D55R{Ox^ci_SB#1b}U!T zTS)_*Ja40W5zl)CcvXNMdX7QW3$5)2WVTqR?A~09r5@wbF@Wj-{zTf3Qrt|O7V%r~ zzH3sG`@bKn%REaPtPF+PjSD&o9|j(s6#(}A9v@I2 ~ UGKKcO}zo8o!7wM-{MC@Ad4mkMmu zPz&D`e7ThD3eg^WpIV@ {A%XWRQcc;=7hfJ<5H6+kPlUwLs9t1xT0{e z^_@ILDdwSZCAqLuKU=;?!Z4epEfWv&0l-1mEKngnD#*?NLXu4p71_;&PZC6Z@aT)W z)Eiana~1lHD7@E60&&woJ^(|>+uClhb(;USV(O}BjdntA0+|B&Pq%dhj+u9vhw4}f zc^#9|$EF{d9_5}g?D&H~j-?jy|jj%Ta*D0mH;>_%1yGyw1Laq2qOqwzmjB(Qz$66|2A*8Pk~ zwX!oXi$AE#?or$y+oOz3Xe_&nEH>@0P3JyIcsjYWE*d+yVxfDbbdUKH^HT)KpPER8 z{!7eG8(8eE)zL5iQ `+OPtd%y+2wz^d z dBf`r^+fET>8h!!IYDMInH@8}&EwYe)?xK!Bw@ty;KgNJGa*vtM!rN& zs<@7odJ5H25m>0{X~xdG@CSTtAVf^z9;@W3r#dshun&%|IAI++{M9u4u7JpLDifr{ zLh&Vir@RF#5N%NI>@v(I1b9BY_`b6=+6nw%BPZw_%x$MdX>qri^*OWeIB9L(TC$CE zkEOn!s_G=+SdczxjD2?Z+kBv|rsF}sH|_Csx+^89|1yHLZe@HJsiR9yfY^FU0-oL_ zkY7q?QyZ4NR2SqJ9&PhP>b- -TEa^@@u^wr&f&$dVo-JS!%=G2p z{PKKy5}I3aISIW%{FCSKQ8Uex^Q9)Gp>E{?pr_`$Nz0^zi|>V(5XXg#`eGUPF=etZ zwT%+ILnV2H*M??wmIhoy)aTEsiVSFotPINxZ>GHEB9gNkS{ainZ$H!K?u _(d?HYoW z&0rx2&e7o9!P9K6?iwk+&7U2Ncx24mX)KBm-u;lvxp9;8oQphK_@?3}2uJvB!S8@q z72dRSDxY)(DOhR`*+QKhyL?3c^aEWxWYP3{J*S1OgKjr`r#yV(!1N+cZ-ez;VgcLu z2r`xu=Ea_IYroMrk9P)Xl ``jW)$sY(LmXMe8RRC>ClR0{>pY>mO`h|N_Mm@Hx%YRmKusn zV&JIke~a=}Gu$1gRG#+Tzi_Cr16MtRD5cnU$@x7`sjm78rbr|L%1*7r{FZwhf2~L4 zRDMO?Y{MX|>Gi2BhCfOC=Amcx8mU324o01_9?^`RKkp1-p{nxmM1y;(Gl;M$d6DR| zdDd8` zg#NtfTc9_}se+Y^{d+5;NU0|64+GfG!6#-TKaaf`R zltx)n1_#!_)zlPZyJ{xomc_TeRAgZw#CfserC;_KIDCWesYKKKC83R1V_2z=WfQ zXjX5_GPA*Ru-a+OsEjCD(on@+DLBKP-BTdNJ}5g@V05M0^V8HXbS4v`L#71`hxZ$1 z^b=+HF>;-C&13+r?&ir1(3MmoqF{tnZgwnfY?58EELbW+QmF6dyI{3LiP23^)l0PL zXso)_&)`S#oNW?ctFghRDGR~A<2EFL^9&6tZ)B#qoG|`CsTn^h`Da_j4c_nCE0R13 z1b!Pd8PqJvj?Av>pUWmozWg9;6qB*N7Pk1Rp%%8hw@O=g*2zB$j>ie kC|c z>dgq_)l%KCl!idRO{?sNi@NnL`sNTnJO4l(NTEFJ8nqAWZt(viWt_EI7W{S|0a8)r z98_It;%|Wr-1WIz{)dOg1o1l?(K7nSA^r+>!1~R#4QU7F7%LK43C$j=wB-x|k`!{T zO%knZO}4^Ozc@b u-9n2gP> zu+x9?LSP3$y#w>b$RT0#{VaR`>2(GNi}=(ZE#AzjJ+A&f)+s?>9{)oD?S;2(ZO-ES zyk4t#QtqoK!L{g1N1}(_70_c$z1h^Q(fIL-x0AQXemR#JooKVeT#5x;)zbSwi(1lu zGgt&U4s|~gI#wA+T(JC`%40*+j%gse>$eLZ^XbY1INx>kQ_m5JTaMAaXu3PO@MlK~ zWiRu&IXkGbp`tH!$4Y-=bx~g(WgZ=;A1=E0r<|zftoZx-* hm;A)sZ}*~bn7BpjR?$4xR5XC&6Ev#45l;x~q~ijL3{tTgO+Xb^MiY;Znj zI>8*i2_NhH9vJW#W;WkpzWLAQ-$uXeGB Jy<7gQc^Y@luHBp}QuRMm-T;6EShZ3uO9@NHzKKV0G;bLb0mca{w9 zxk;5mkL0+I$82gjorp9yYpM)kog|9-9v(>mxj+wh&k;E^cdek?ne6&FwclpYt)e)| ztK{I8GtdL(Irw%mnD*vs+?bX2n9E_l#VODm?by6uT6ALasGOZ&F&vX}Tupee1;mjO z6&00~H068bgcaZrQC;j=1P1mW+8GR$VM;8w=&H~RCYwbXz(f9!5GuSTDh4GqtgWS` zjmk7mBcwB+%PY_bRVoMaO&kXuAdx3rj+9klsaLZQP9V>N8mf^*Kr|1_kOeZlskO>2 z;PZDD2BmZHJlDga57ds*IOs*tbVwsN@jjxjX0K }4 z0Gc?cp?mhSRM13HMX~nrwEuHJ;;K1B8dS3mpWU6h^}0eiF6%GWHCpd@Lu?!?Z>`~0 zeuwkE5Xd=KAW !D$Em8GZXkO*Sw|^Kq5GeIWJ9 zh4x6h XH=1@LuVla-kXCj zF|oS;VsB-shBclOmw}G
*C}6j#I8k8Wd%KTimqcj%F|UxwA(PrCZd~XzUHtLU{3LLVv7%h;?80fK+}C7A z9qeb{Z~Y^ENtTZc%U+sDIFTo?jict>mnhelFb?yK*ER`^*s`>VuXem9Yh ADklTB|uHt>E&<|1izBn7gK7boRdY zi3EDw-*a4IH|KU$;v^eb7`6&v5i#p{hp<@ptKU|mq75pOwuQSG9pD}WO0@(Zcl})w zeQ0BHfMjtXr1q~*(v6b?aJDlRtCkXC89|&8dvhT(X8KsFKHV72V=BUmj3H k&cR72xMFBZ+3u&u;t Dc>XieB!JYxeE%MxxoRQ}T8)WR=%kBWz-@JI<3EwxCX+gsao- z2K~-A|E&~Vk+Ph()N;G*oo#{j&bER*1^O@y%A9>+C->s@x!jYR3dLy{9N+VyEipXs z7NtR_cfYs@nGLUNyOxjUUBU>?= &F*Rig6k=|J=TUm(R0U%nGMW{R#etEn5P z)w$tV-_;YDwdSoVPcN++q_P$2o?@WVKowK<5n6rf_L=vjlVbjRqF}v&slu93OoRKb zk8)3yOp#_mvv|USRK21qv3u@w!?MDwiyQ0;CULyK gY$X{ fboXrQ z**Ng5fP(~2%=@L KLeEe7!hi%jU6HJpWt-C^`p%k4r% z$fjI)bl28oL}&-aD+r^pEY@9>-e%RB={wLSY|8H5(Ac4t{3|wpd}xG>X(mw%4#MA$ zP2k~4Wk=zmTBU-Mi}(o~uwRG2C;i#al#*!q)kVCOlpkr6J*cX575o8@oX8{isg>@Z z#}}8J^55 u07qd00No18ABUDOp$gAWR&4_gp05M+ zMXuD|H$Irp>zrwsc7CXxtj$ls(wrB6{_BWDZ-RYZR!B4=pG2f6Tj6{VaqE_dAoER= zPD;A$=n)wdDtZ t|u8qa-uOw5~) z-wdEiLqIA8!aKV5x0eqdKgg4)6|d{w%V8@ q%a6!n0Ky=JyE)$%s0QguAC-=ZCG6hsV`d zbn~N<@UnDN?)JvoyN}hm#GVKkuSom}Z);ahh@e&Z^I{e#SR^6cLpAu7CF5Cr0gb@k z=Zx*n`kz|b<9v;IF;zHZGTBBB ftIP8ofvupKX%buK=en zYUiStF;7%(rU|h>@4LJmF5ujo!KI64%=Ul1`%dpNrZ}FmkBadiGLv*yINgoPI!G3` zI^c_GQk)=%`pC1C*A^uHpW1y1Af($^3?((ZSAh*8FGbAd__RJ=2jy{nSf27kW@u`* zd=z=?zihf9dRoYGpzwZw?7!O(?X5eaxjmcYBz{KcB#_609FDlw^%~7&l~Lbrw&=(+ z+aR`M{9)2X&pCC%^S|s$T!ca7ujdujov5}8hnZUK#hQ|lzj!pyN)DxS%2|6hZMHmN zeFX09}qg~ zGjN&)B);sG=^buU`Vq%S;DdXh55F=}Cl9P|r&}LNETL(<_h!0dUA)Ux_t$GVo1~8K zX!Wa2H9spIzrqHyNR!B>tyhh-M0)ByAv9XfoL~O28neeE8B{$gQAo~HU||iSjO^Yc zwqp}wF9_o3nLAG_;&F6g|KuJ>VX`(&suUXe>tAT$R=wXU%)eWVc#fH8xIWn&_}BON za(3sxzr;bd buTCuD3p d>~z`1$a1l+nAc-@A9c6~|hRL|enU78Hd#jZc|YJX<=JN!$_3$4GJD-_OI9oCC;*EC-98{O+(`3NSm z@B| lm82R8FqM zwBVR?Cd%t)j%BbT+VI1en0~*fKj_YXkz5`xn)W^OInKrF6V2$a48)G9u@<8bIy6jD zAEfE!)ll+Gnhx4iUDpxe&acq6lKqp+2sTXOZ9k0Okw427Y7Sr3)Q^$KLR_ZkewX_a zud4s^0fhrmlzx)hMrnnOeI63X_}4K~K5;eZwUA8s`v)ia^B!N63-x;cpz+@ndrJ2& zPn8+;zdn0-^V&xwYTV^Q5#UYEhYg7QmQ!-Z9bIi*aa(JSoWI%t7NBH3xc~ml&?ad6 zqm(}PN ^P=fS%g-vz>b|OSvj q$Im6Q|kfCQ|BAE4!&&gCJ#RCU%<)|;p z=cU^Co&zOHq}aWvRJvfD?Y!!f21n^cu26#b2ybD@r+7tv^2rIcv+~&42lY}FZtJWh zw^v$Z X5J zLf+RZ3(pt4SSZeR%~_pOopKWV^1!h>&f+ o~cP^GD97Hd<&FD?#xQyh0gWB5ePqGg7X7j`Wg+(CifL ziF#q$F3v{DcP8~tOH0ZPID9`( 7`!@O4~712{WpkLt0Q;cPmt=exn z<_C3S`A!Opt>!FxCThBA1@bgT$2>)Sllsqpl`<~Z?=A9LKM_#6N^!U1&G+Kg7GG?8 z&|!(Hv9K9**Q0<$t)-D^LRJ)w6zF%>n>1x>-G1s#>y&UBR_;9f;c9omizI?Q!QRp5 z=VPp``AgZXJZSX+#2<3zZ%s-*KM1 24aY~2%c;|5F}^U`bhs* zD)X?3;Q#mM!*VlO{U_hw{%^&ry#AJ9*ByHL*JsraVBS^C3PvOT9QS{a+1A-6)OinK z@cY_qFF2if{M>uC$+()6eQ>~?H^F7{wTJ(+z6d;64I~rqse5gHcve17j?Rv2f;gf} zy73~%p8$uUtHzBe+4QMY|2jMFolDD~m>4^cC*$ OBa(|{oIxJw*^9WHy_}^w zcn~_T9kT&;=)7V#c}X4zy&J8E1{qy y-;=b|8g zU@oCE6n)sL;wlOu8Y7VP9<_44W!h_RCK+2zzzxD=p6CV#*o4KdiVd*mezI!L5w05* znZ_J;w6Vvk-h^E=bKUJ!ur%>WDN4bp;!7kdd4vS3cYeO{+5Eb-#dVp}WEa}DYAnby z)s$zn3JF%THEjc2n9;C?n+IO@NEMB@iO>`;jW1sira~Ri27P)oK?9u;9pR)t-N^ma zET0YErS6a0ycdkA1;!e*ofc^7iuDr*|AFw}gF$3S!6U}TEO0dLq~)*|k89e-xL7P0 zn7Mf2pT6TP5l^2d_G?Pwq*ykb-R~QxhxfBCnX~2Y0=1oe1`X4ds*nKmnCe4dK#@C9 zJEB1-3~hz*+@30s>a1^%gR@{LU7iJF{eIvKe>SjTarR|7Qd%N3yFkIK1Ph%j$6&^o zk>)Z(JiJGd`o}WZu2$bzZr |>+o;hk=bCUY< iuC1pv6@kAV zpFSLgZxCBO-LmBCCYkn;C^kL3GF`{LQ8-YzAI`Ktx#r_Rn_p4-giU>k;vKh)bggf^ z`z@0Rjq7AS7ngpK^9{~>@ryX;8xi02*=O vZ&sMZBQ7w^v-b0eh)6ty(E}Z={Tq^%H{fZL%MA$9S3F`{lik)A3Aj%t_-|x) z5PEE<{n ZMjSff; ow#XkYQR4a{4uIQCXjy5X9KLi8^{v0f$KM 1EX+nz@jbltf08%}qe;_LSPZPmd zKwU9Z@9`GL_q{t#&2N@7Gl`zSH&T74Nj8M*E%B#?n73-$Jkjt_mNTCOUpM{-{zaoc z;5;<*lTWu*X-f*rnZ~@$=Gmmh8myNm1^BpH(YC&BvrT@JdKx-+!N>+0RQQwXvL^9b z!F|_>SR{|-8uWG=Nb>S2XR&48(_(r0s4UA!f=8;*H{rcx^@{JgJ_@$r!%^bq{)>D? zKOJ_=d8R2qKgO4v;3#%ykGl)sIz?6SkiyoJPpWBGGb9o@ms_E{jb|-oKAs!ozBw!- zZ+2iBH~f}g7D+2N6)IJYhk-3mmeK)gKUg-uV#FVqZ6it9Gz;Yu-pl^);(z`Su%D6N z5BVuZl0HK7YI07$zi{P7{=v_@>kz&yZ!vj8o`wp2HW~4F26AzIbY?JAyB>I3&s-#~ zQnjyQ)?4|?Z=2)6<@$ClN)yCVoEpT#y6F1ow@5^@GwFC=jYXqTBiextP<*JD`(>o2 zk4J4>pVMHzK1Y%hhap$adps-g&q`C~C9a(NM8`E&ySx58(vZGown4`wlU`qq%D9qx z9l1_JAANvM?gCwyf9`v?CuETWFJ!#s-_-&P<0~y*PP5krHJqNkS FNJf5=GiDxFJ?+-M=kGJxRe js`Dn?tbg4rAcGt%xjdG+@qzf(vseOh$kdA z=?}w4*?$^f+ik60)*%&+Rc3fMqC3KBPW#{IDR4i|AIw$j0%y$I981|0fJm%E2Ok>- z3yWbur@W96_P6?2D2|h`IO9cx4SiTCRfMv9##hL5HUE!Sy@{_c`(}IM$^Q!Yjr>;V zVRd*7%WnGM|JFRlYQLtV@QK31N9LsX-4z%k;xbfvBLUw&^$7SM`%Rx>1b~&l-F X4IE3^O-6yAc&{GPNJArI9s(!G&Biz$<@s_H?zCWvrm*}WhPdV{xg;Ht3aXH zD@m^Ra@XhA{%|tBH6dw{>Rz~8Dff&_@RWc}2> =fZ5!;uTtNuQ*QXC2xnV6CYr-Nc8KYx z`V?-?81Jp<^E*RfsJD-wjd#bdk)y_+8}_H$;`^)^DQpL=`?t=n?HS|J@O4;yU6|N5 zn_nd806-rxWX4>$sv73CsigV~6wsZ?*^Bl1?LFP;2sZ%mhk@Gs;3;*WZjB#bcAgGx z>ON49J0_%2n_-cO$QsDfn4Ua^O{3o|v3C+?lKo?L=@w~$1c6lvnEh5(k*#l-tISi2 z@)$3 W9l8I=I4@AP4z5yox$M{7|3l$(Gi0+n837<}<(AZue(G94!yMf-K3(xu z!ustSgO}Ma2Mx;gvM1U)ocQP46~#qZs2NRtjIho>3El1H9BZ(<9S*$~nE@`Hss-4; zdaIZVon66}#}QsE{L~v_=(X*~|A(1j%FtX-0zPzXpNoBf^E2UIjzinD@*ie!@pxN6 zakY}b=}z)wZ=o{g%lnUlJL4NO35glH_CSZFo>g(9M4$LStjxuq?pWfv;GLTYri883 z%WCh {wOf4NJTIhyH+~9{f^2?a~?K6#Q|^9UDsZYXY%k0kGC}X zG^tBvXHO-aA=at7sAI>Rwo#Wb%X*Y1kPr89Lgtcvy=Ze?eG+OzAX`t&I<=;`H&HQ9 zNuQ5k=qXN{o)7uBy-QulFvsrqZ;aJ`+Q*-^ckwp(nSFZ%nF5I1eQMYDDonIKW(+f1 zr@qw;@vMK>CbEu95Tz^`t4YLb-E ZD4c}ieaS%`|MN4?VGXv;?=ZNFoVP1agr9}n)yT9T@6v~M_|+l z^;~!w+7-fieS-e(rTxPFvlOR_ZnUfI Dx$uU zHVd7gb!v~NpUEz 7{P#auMQxWF4{UZI|j%1ZrRjdv#(;8ay?z{ojj!7gZo12I7B zV#)nXCE1lvbZMIkeDYJ0O0Lk(>cZ96&@hLeH-OOz2+bRREAYy8c ncK^l?J?Shx^;qNyVI$ B2d6qjYw9JSesYt&OV+mOQG874`Q+ z`G1R)#sqmz=yN +$mju)ankW4R-t|f3CR**Cg3)Hl~)O z@N8KtSQ*UnkEU7N(`|F(6sQeli}eg9msH nLc(|Bu% e-Ar)1Bqy5`3w!3N*L&nVq^wxon7bK90J#x4w+mV)*m#|Q`xO}Viwkz zOim!tejFLKs{1|h*mOeQ{`fKWES_2$R6E><5O7c;^R}QG+}i0RB9~%5PakToPFJNQ zj9>kTo0ApyAtx}Q+AddA>x#552pGuvR$CmmQ=7}DY*(?KnE#It{5;gX*#!c-D;B&b z$oJ8H6OPR@&y2bAii5_%QolK>hOMSXb>9qkuXSbQb+G8o(`C^WCme~EGp08C_J?Er z$idiwOl5XJm20$#36hnG9GCZ>NcDVFj^s#96}cGTf70^AmHv!-gy1dw^{mrgF)N;| z^RW3=+MsW3qGx`a*4GnjZdw1cPdwLs9{aCP&AaQTlKH^ Z%Uwi>w^@Dj{6V z1JAwfNO^4|jt)*(G@ b3s^U_hV02}I7viifgYElLt6kURSh z*E5FXZ~&i3t`{I1jziHrV(L1c&S$0M7|j|stg~chYSP9yjwq9a8y51L0mFZzV1q>; z5FJNn@yK_fWpnsKST+hHn^%4FJUjEUtu}&NRR-pkDbSSMk_uozk?x|!f)j?aZOoMd z)R^J^n&uJ)617!MBOTc0kXJoq;IxQd&SJgE>1;uVSY}4FiK^2HGe63fM4@Ja%@E9A zVDr2x^6`>?hf5zM?B>ZN> V_GFnMXrB$X`=3G~FO#0H0d^bzbij9%EBnZ=54 zgicyEPHvPR&@QCyxaB21`qjwUKUS99h@uB+_~!0B-O3C7kwCdN R% zv)p cC2ayry{h|G!gnpV@=R5TtB(AH)$95z1i%Ndo$Sr&uaSb4La>ds<_ z>gva5!!~qRw>wIY--SD1GpxJX3d`{s^R%r_+5@=|jI`jBlZsykcnXkTo?i>FjKY3vGUoSlU->YxjZ`nJ zyyE8$EYF>B*X@}vf8bYk@BRJbXI%B`zwSo=;P%l!fA-nJX;04S(zAD6a?O)-uR8q5 zqXoKqZu49J_`CVh*$ S#|ICn<#-X9N-KX;%S z-2Iz#^uCw8B)W6wwfpifFBK}!JbK;S(Ei=@g^?R~Z@;X1#@FAqZ7$ff`( ?45+MW|>Tj4!Fb@jXE&M57={iV}4y??0wvfF<8Pp^E}Pu}>F z%U)GJ|G6vAIk5AsJ9eLQV6Ww0@RGL-3{R-Bgkx*`P<$vJf0*LdA);f)Xd#Y|#SS7g z9>-i@ng8Mirqa^VQVbBn76-K4ipLjdX*{Ndg#}uUx!m}|_%aG1KaQ7|TNyfcONLuJ zl}h8qA{9#X+SWLYBVIeV*<^ZcoQl}tRU6N8=>nb0W1oV}!R8im{M7Mgk*|_Yrk9F^ zut}C9S*nb4HXZ;J-?#FcHafKI8 iD7J0=MRQQl#uSMoPky1?EZagX@0S28Ndt?r@U6kK;o)F0AlG$DO50j2>nx z=PiL3C@(xgp9@do=kWxkkk3LUJULX1i}9)PQ{!=QeB!D2wQ;f7Lj3%RLx-3?0iMJY z9Db+uOx)+mx4z%!2}@mka?Cu@C%|fFBYS9}f)G48so{UeAYg?jhhB&$zr!gk2$#V$ z@C3TcmlxgTc@hgx*6A*^BXR_uu KK{O=eDz+`39^K(4xB28wr#>Wa?UWTwv zHH~mT)yiaa X6+`9!=N z<@3D7oc$^ahhInL?34U?eRvUvQ-$aS>9~tF$?b%i>KyLn*6M7$?+r-t2{ymGLD9;} zbwk4mPp<07 zi9C{$Dj}WlN<(BhwU1fM6a$n?VOs%ri4jKWt|q=4nNt(|D1m z5nPa@L6Kuo?5r4>937{9rADij&F 2|NL@K<|8K z<{37nNyi0l`=s7a85peR3FhS& #S) zzUR6arYLw4AE93xhp86Fy+_2Y*7eOSbk}k#d-mBAjf~iFI$Y0_7tvj@=&l#%2}g=h zgrd7>c|~{a+}iss8y(8}Fpn^x&-qY)!iVr1^l9mE@m~xRI-X$Vz7^&tk#9oW(vZ6v z{?>*sug%)_RzmL&$@v#b_@Q3;P =)3V8n+v$bUkh(2NcXowWbJ)IbM$XUITg79voB28n^5=L|eN!?9 z8>Sy~{TN^f-irp&7hevbrx4&tuczRl2?w7~$o~LD8U!zVj^|OM?96)7AOOEJp!#}p z56|m{gk;xI`sFgd^KBC6KX?iu4KnrAoaFNnA&RZalzrkW2tX_OS_x$(T6p_Pd_dsc z99F~n&h^Xu)fwdb@dbE9*r_KleS&yI^bsWut|gH?6rS%rU?X(4j1V)w<}@qum68C{ z?MYs#4Hz)!WUlU^r$CH+lVl|W9pd__H3+OPXYC4YB^vx+SZS}>0+;}&Jf*yzIykUC zFrq3{=#aqv1nkXLZslFj36BiRlayIQT|ua($?vXrW|7*fc_L2r4l#pj)`%Yo!7tT- zXbewFz4CIBzRdaUXlrEX FCUnFi!W5bmW-e01#RJ(1GvjS2R5JwEDvR5jT3aYAI8S&@gcI^Vi3ds8 zyPiPGWaxr&U_2#zX&IX$wI4&Axij NC{&AfFD^hRVIcjOFD__Bj1vSz`} z^H1iooxqt93c(-beK=2-qAHJA9YnzaLZ304!U`84SJ9@5%@TEL*0~=`Q?}EYJ$<-s zv58d&joFG-dd%9(vj-{X;O!Gy?V?*vcsb45$@XZyt18pB(=_)+!_ e?sad EteW$} ni5ua9uA`$2E5&<*??m1b~P!aF U!Qi*37o{pQ5B6m5 =^M3VYOmhmwVH|zsQ-# z9TZ(ipQJgX9x~mo3ftymB0CQ%*9r0clBwQhxUh~RcJ6Zl%10e6S?hV#UR0=(cgG#B zkY^lc*dh+p)2bs|yv3mA|CIe{@99T=kZoYJ9Z3&!hvem_&H0^c)=hH<* zo;I*6`{mo`ZXh>0 z3U=v-sLHx;_k2eO9c=9%%1ssUT}JNzLU^x>ZrQ_U9yYGS6A$w!L=3vj(1;3+V(#$B z2!&ZRd}eZKg95iE5>&K{m`~pK7l^73kLGugY1?^% Wv#K)BeWcD}F(9>_ zrzcVW;RzVEPdoab+8Pxwo%IgY17ynXc?Sn1dMIFF3+lu9c8&CW6yfxWLu?S|DXvDg z5>9fR587NI8|G%uH{XzHX)XwjZPZ6U&nl3|3`G5;r&j%p4Gtr{B@>F@rV3 Nbe 08V_9EVUj4CfD3uR! z&x= |U)KcF$QDw=fX`R(MLCO1KkXBA&4gb$G%k z&EDJOMMoof*Pu4R6t&eSRnWT;nsM`?s!(uRmBOl{*=@BE%ck|1frpq(>C6xtZbd*- zR$C6TgY(V; 4FG8FN-NvYk zc+NN3Gq|;iWg~&7jH@$h54SzNJFu9P=9Lj4nL`0Ac&PO2I1U0r7+w8o#NTa1(n&(s z0yaGl;8qKFGpTD2F!gm7Bi+M?{+0-9lUm?sksd7EePQs9@DVRI3L;ThhDiz&dI=(j zd5gv@b>ZDpTLdLYTE@K Sd-Gsse(~?9@P7( zqIH!HFgtE!vcgSE@k>u2JYa1E#()}n4*R?5mU7Gl$_B<44m+@uILjqmb^P~d5(aQ| zZNggPDV^1mMwUbQHZS&_<|=tE=1 ^-qQ>1JE^p|ha2}V<7ixLV8TyHie$s|bri|RZ`e$uq@IsM$d8{fU zR*UXh%wSdz$|E$nXN(>iyM%5ypKT*U`*-hFdN9w$uK&AYYI`8t3SJj2# z=<6&ckv)&OvB*ua-9^K<+r8>qJ^CYd{}uHcveCU4P`*p1w8#RXqeiwfYo>DD(?{LA z=+W@zt?sseIe$uLc=y>s^T~U=SDs1pKfE|sXp~0hM$I$PRfUmlxW~iB$J6=|HwjIt zPkK3zB^Jh$`` ~lArf8|X-d|7 $F= z=YM$0@D=r&t~mRm$5g&tuLhUy`0SN89s23k#9!R>_8Tue_VcfP;DW;3hqk}^?BzF9 z-~Qb8pN>E9D}Ot6|HuB_-`xM)nctoJ%VWR$-uSsIZ@cNHUwz=%cR$rVbmr*&@ptDQ zxN_&&@BjWM{_fX);$`>kJoUt1%w;M2=eIoa`HOyaap>nhu=Bab%lETl-IUxx*!b`~ zIjb6iCpi_|lb>7M6h?3S+P{D9{cmX9^wRe}chgNb-WVTy?zx*@xBsTMp1I?JPd)oD z&ivZzerd;dfBl|))5r7q|9o-&xxaqZ{rBGbz p zvp@T{ulu>e%MR85_QsoT*!tu5KXKyRr?x(H-*b1p{o6 ^I)~GynBd3s+9u_km;IoSXRlSO3QS|MD|`xBY1G-Um)C zd_Zp^`tJ`tvUpMU@z=+ HDqFVvw|L2}&w&S>3gTGFdj=RL zj^qDE%`9$m(V=c-{!rJ>zO7xkFW)uu JaA1{^0TP>nfsa4!p96z$}4IkTgur+?}mtXtIm%Z#&`Gfn4`;Hvh zx9_|Uj4zcwJ$|G(UfkDch*==73?;w!D8Wg;uoB &%!6W1GsSEM)z7O5kD!$=k ^zp_{l>D_bu-mUpja& z`|yz?U;mNf!Qy!9NaH9QTa2RT$!SzgwoBlaz@XqhS{nCm1Z(!&;xUHzZ(Lcth+}CJ zyXpCV_Txj81y3sXEo8qvR4ILBC>mX0P2U)z%zB<+|8}bdKL_T?($bNG2f>rp!j2ux zlco3@_bn|PSzcOL{@BNs77p(F@|QpP$)la0>@G01xZGO!+vdT8-)wwnnM)iwdepaD z%%aUoF#f7cazkdvFZa&5;nAXT@Fa0+T!UlG56>w)*kXO m+U;En1Q?L3?i{;|r!SSW@K2TiV@#uX^%S+4qj$*k32v4B9GKv1$`ahDK zK|nHHMDl)8f}dhE%2si-g=loO{~%tPR!2S;+D^$mOHGd`vx$Zqc$%9*TV0|b!j2-@ zyMXeEZW;b0Pf1h~|HeZ7QqYaAU)mY&ocK^dLik4_6o1L44|{2!U*Puqo`|bv%bzql z{5-eY@$K(?rw=ziuA*B#Pio%Z@EUU4tC||{BjheGM}7Z6JlMi~?M@~dVkN#fY%;jL z(F`><0z-gg#5PG~`i$oCw{G|A` )&EU?x*S-d637r|w(t9Wh-aHQoLH82Ep zPpb_cm?yp2e%wzUmgPeP1c?T{9z3ZuvudbvU*QWMA8HImlgyJ3EoH!yh0;QaGAlfR zT~Mo)O5cmYlOlYtNO&^N^GFG{UT1|TaV$JJdh{rG(gDTic%F>Y;v)6zU*^ey7R8y& za;^Ao`b(k{|8=jOK?HhBy^%^kl$V=(V2q#HYf-c;a#Ad|y04fAPb%|}lW;cwp~7N* z_DAO{ol0k7@ki%1wU{SdC(LfHed^Gm=B1={k#<*Fc$CG;%*zR0+etObR~iM 2?Ug?{L_x6+m)6M%UL*-QDSk-k1BhA;@4Vr@Xcdd#34U#2YPJ2# z1{;mv$roSoojmh|o}kJ+ mc3mvrCH@k2hn zE%BqweSIZFJ5 *;ycPdOc|U?jet9Lnv9W7i*n>~2PA^>d9mUXpUon{SVK0sE zHX Y+HVGXLCP_%Bc *0D^l}!@jk(R{3=;S;J z%&POOi6%Jd8|x_>8UFX#wL}uS=_hOw_Ieci9f6*{!!9e?vX#L0BK?#Ol&*7ZQ!*uh z7WlJAJSp@VlF$V5jGeHj1)E=mxbi^QPbs|`9y@PYll*~0zvqV}+Di(*d>;eJx)HEg zJ!H9nD*IwXa^&To>;tkOdTz_nZ%+0ZB3L?MYrjbU3i{aghwCXD8EePe3WPqtj)=}M z$?#qcabCbkUTMwsV 6eUN6znW!t$6euo) z9s1-dp>yQqTZEypG>m f}`aUUBG3H($px~ z95yEfHB!+g&8rp)8YA{>_$G0UNlVS>bJ3)31Q`)2e_58VNy+lFN8A1fNn*ppC1G#8 zN7yusv55rRvt2NQN8}_`?HCuf$`UqRRmzI{#qq#zW4AmHb+{;63#VO+EE={Ia$H0Y zk*gYQ?AT%2N|VebX6+Z7!a4BL$mO@OgU z_{zy5$(#~eJ&CVsNH#F#z``kbmqbyUWQSf@vw7LKZ>-dIW8plt*?g#*kR^#l%gNp> zWICLdWl6CB1cAW^(RgXt7!DyGgqz4Sxd5KUVVj^lS1|nk7yB(67#$o`^4odVl^>Ys zG#4#$G*mn`mGU3-3Dqd8kMQ2mb I+C`LwB5cXKT@utfZ#$&1|G$ zoRy+7tFlK3p7ATlXZ&w*t7sb&Ze6rO*hLBlLXt82pjeyT3O!z>uuHD1FuU>`A9i>$ zF_qn1gXfpFf`cR4;6w-Eo{C#gT}LyWGefnz%l7NzWV>NEFpiX^P9@iIopv{@xRSe> zYg!g2`eZoDVrG=u^q|u7c;!LJx|9ER)ttM4C8kUHNb@{a5z*kL5GdK4T>AfT{R4tz zoUcQ~7Lm*+UWt{VNJ6}IrJ}6grp;lF?9>(RI_*MNKFlnf4KJWtoAWM1zTOPxsCk8I zGdvreZD%60ox(70E}aT5;K^x(zDToG%4Q!6!>r-X9T~+9{je77<*|X&WWW)=f^x}F z(=~bF!~D3J*Dsm{Iz&!_vg=0&0;072<6YrU)2nrn9l0&&+Ok4XZ{}4;miu_djUEn; zJ2wOi7KLqqZ 5nRIUN!5j3*1P4 zx1z_FD`>>QbeKLskIgTV3xnZ+GPlYF VD`9TQhmP&CW?0~v+k_!gj77^+Y+q|cPzkf!g(2aMJ-F9kSDU}( zzgv~q(BQ6I5&u<)6h1N+4YTUv0beRBOR|dxV>OHnyt`l;SHVH_nZUofRBjqNaB~~a zG0ZnMYe#J%5?&Gv*czSGR(5)~;dMx%656w5J;D`u-4pS`lY4uV!aD0pJ6)U4fr9s{ zuw5Muha LuT$zB#aHHgvkosjY?=c8<0Ge`3L-T9h+2E~wodBN49?{ReS)u5x@1;q!yyXR2r# zgc9bmnW&-i(_w>$fX3$_ vdimF^#0MFc|9H9Jg~)+oBn*5Q4dJzF4n4Pq&eK9K zO!C`!dL<;Zl}MsyGr)i$t42E|IagCs9HWge9+<|KIblF&8nmh)Eohe&3*v`H+ *a b}`zfXg9Zi_(1LMEhEP*;mbe~CjG*2 z!%(>Y5z>vo_=^RG?^%g&Y=9R%o`5|)+xURX*S1xgtw(PT_iPJGo38!ccg Du8vx2bFId2}xP#rLSUeD&G6<6oWG z{S$xkmAUFykN=zf-#c*Zm3zMbW0U*NKRWfQsgaA%zv5F9@4WV!(_VMu4L|eqd#_=h zJj!y?Jo*0f%GO+d(RbdrqjF$(aOpR{{oR{>>FBFJ`6umnU%lyg^LO(%Uisd0E~}K5 zzWu$ux^c$Oto)MPZ>_{PHt<%TRdS-_EkBHR%;onmPcn~k$hvFWwXMtA=Ca*qU3>1; zbJfdUapJY-HeIzfy6f<{#+f(1Y}fSGTAQ{Fop|`{J?(I7Q2dLQZg*Z%eEA9Q X%3{XGuGQjBqKSzNSK`#M{)w_M$cUc6es6|3y|}Yf@}6XZ7PSgX zwdK-ID$w$Zqa^d>>6Q2o2Edc0-=Sl1YzTeY{Z5Q;HFDoB#LSv_8K3T MLLC2^i(@A|flmp=_|mEHMEo3=rBtgm{)|OLqePD #?CxrI1$H0?S`G=nQtBHwX+&Z*Wcv!yg*+coQ zEAbx;JoC&rMt9seY8>Gna_oIh?PB74DxL^m{NngCm&pC)IL@%{QWaf*JJI#mSES$j zJo!GGz2tRQG5gs#TE`O($0tNKcE6&y^V6S(!*&AJT@{T-v!*DB{~feMAHEULvBA z#K!O4_V&*i;lD_${1NLEl_USX#$LE*b$Hl^yL#VqTvu+_WOMjlUQuqlssq2qus#XD zMh>s)gxAUWI-w0Bq~V{KzmS?J#}ij`