From 188e255bf8ed68fa64bcb63577cb100eeb326254 Mon Sep 17 00:00:00 2001 From: Thomas Huth Date: Thu, 20 Jun 2024 16:59:28 +0200 Subject: [PATCH] hw/s390x: Remove the possibility to load the s390-netboot.img binary Since the netboot code has now been merged into the main s390-ccw.img binary, we don't need the separate s390-netboot.img anymore. Remove it and the code that was responsible for loading it. Message-Id: <20240621082422.136217-6-thuth@redhat.com> Signed-off-by: Thomas Huth --- hw/s390x/ipl.c | 55 ------------------------------------- hw/s390x/ipl.h | 12 +++----- hw/s390x/s390-virtio-ccw.c | 10 ++----- pc-bios/meson.build | 1 - pc-bios/s390-netboot.img | Bin 67232 -> 0 bytes 5 files changed, 6 insertions(+), 72 deletions(-) delete mode 100644 pc-bios/s390-netboot.img diff --git a/hw/s390x/ipl.c b/hw/s390x/ipl.c index 5f60977cebc..8c490eeb529 100644 --- a/hw/s390x/ipl.c +++ b/hw/s390x/ipl.c @@ -288,7 +288,6 @@ static Property s390_ipl_properties[] = { DEFINE_PROP_STRING("initrd", S390IPLState, initrd), DEFINE_PROP_STRING("cmdline", S390IPLState, cmdline), DEFINE_PROP_STRING("firmware", S390IPLState, firmware), - DEFINE_PROP_STRING("netboot_fw", S390IPLState, netboot_fw), DEFINE_PROP_BOOL("enforce_bios", S390IPLState, enforce_bios, false), DEFINE_PROP_BOOL("iplbext_migration", S390IPLState, iplbext_migration, true), @@ -480,56 +479,6 @@ int s390_ipl_set_loadparm(uint8_t *loadparm) return -1; } -static int load_netboot_image(Error **errp) -{ - MachineState *ms = MACHINE(qdev_get_machine()); - S390IPLState *ipl = get_ipl_device(); - char *netboot_filename; - MemoryRegion *sysmem = get_system_memory(); - MemoryRegion *mr = NULL; - void *ram_ptr = NULL; - int img_size = -1; - - mr = memory_region_find(sysmem, 0, 1).mr; - if (!mr) { - error_setg(errp, "Failed to find memory region at address 0"); - return -1; - } - - ram_ptr = memory_region_get_ram_ptr(mr); - if (!ram_ptr) { - error_setg(errp, "No RAM found"); - goto unref_mr; - } - - netboot_filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, ipl->netboot_fw); - if (netboot_filename == NULL) { - error_setg(errp, "Could not find network bootloader '%s'", - ipl->netboot_fw); - goto unref_mr; - } - - img_size = load_elf_ram(netboot_filename, NULL, NULL, NULL, - &ipl->start_addr, - NULL, NULL, NULL, 1, EM_S390, 0, 0, NULL, - false); - - if (img_size < 0) { - img_size = load_image_size(netboot_filename, ram_ptr, ms->ram_size); - ipl->start_addr = KERN_IMAGE_START; - } - - if (img_size < 0) { - error_setg(errp, "Failed to load network bootloader"); - } - - g_free(netboot_filename); - -unref_mr: - memory_region_unref(mr); - return img_size; -} - static bool is_virtio_ccw_device_of_type(IplParameterBlock *iplb, int virtio_id) { @@ -754,10 +703,6 @@ void s390_ipl_prepare_cpu(S390CPU *cpu) ipl->iplb_valid = s390_gen_initial_iplb(ipl); } } - if (ipl->netboot) { - load_netboot_image(&error_fatal); - ipl->qipl.netboot_start_addr = cpu_to_be64(ipl->start_addr); - } s390_ipl_set_boot_menu(ipl); s390_ipl_prepare_qipl(cpu); } diff --git a/hw/s390x/ipl.h b/hw/s390x/ipl.h index 57cd1257697..b2105b616a9 100644 --- a/hw/s390x/ipl.h +++ b/hw/s390x/ipl.h @@ -134,11 +134,8 @@ void s390_ipl_clear_reset_request(void); /* * The QEMU IPL Parameters will be stored at absolute address * 204 (0xcc) which means it is 32-bit word aligned but not - * double-word aligned. - * Placement of data fields in this area must account for - * their alignment needs. E.g., netboot_start_address must - * have an offset of 4 + n * 8 bytes within the struct in order - * to keep it double-word aligned. + * double-word aligned. Placement of 64-bit data fields in this + * area must account for their alignment needs. * The total size of the struct must never exceed 28 bytes. * This definition must be kept in sync with the definition * in pc-bios/s390-ccw/iplb.h. @@ -146,9 +143,9 @@ void s390_ipl_clear_reset_request(void); struct QemuIplParameters { uint8_t qipl_flags; uint8_t reserved1[3]; - uint64_t netboot_start_addr; + uint64_t reserved2; uint32_t boot_menu_timeout; - uint8_t reserved2[12]; + uint8_t reserved3[12]; } QEMU_PACKED; typedef struct QemuIplParameters QemuIplParameters; @@ -178,7 +175,6 @@ struct S390IPLState { char *initrd; char *cmdline; char *firmware; - char *netboot_fw; uint8_t cssid; uint8_t ssid; uint16_t devno; diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c index 5aa8d207a3f..529e53f3080 100644 --- a/hw/s390x/s390-virtio-ccw.c +++ b/hw/s390x/s390-virtio-ccw.c @@ -197,11 +197,10 @@ static void s390_memory_init(MemoryRegion *ram) static void s390_init_ipl_dev(const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, const char *firmware, - const char *netboot_fw, bool enforce_bios) + bool enforce_bios) { Object *new = object_new(TYPE_S390_IPL); DeviceState *dev = DEVICE(new); - char *netboot_fw_prop; if (kernel_filename) { qdev_prop_set_string(dev, "kernel", kernel_filename); @@ -212,11 +211,6 @@ static void s390_init_ipl_dev(const char *kernel_filename, qdev_prop_set_string(dev, "cmdline", kernel_cmdline); qdev_prop_set_string(dev, "firmware", firmware); qdev_prop_set_bit(dev, "enforce_bios", enforce_bios); - netboot_fw_prop = object_property_get_str(new, "netboot_fw", &error_abort); - if (!strlen(netboot_fw_prop)) { - qdev_prop_set_string(dev, "netboot_fw", netboot_fw); - } - g_free(netboot_fw_prop); object_property_add_child(qdev_get_machine(), TYPE_S390_IPL, new); object_unref(new); @@ -284,7 +278,7 @@ static void ccw_init(MachineState *machine) s390_init_ipl_dev(machine->kernel_filename, machine->kernel_cmdline, machine->initrd_filename, machine->firmware ?: "s390-ccw.img", - "s390-netboot.img", true); + true); dev = qdev_new(TYPE_S390_PCI_HOST_BRIDGE); object_property_add_child(qdev_get_machine(), TYPE_S390_PCI_HOST_BRIDGE, diff --git a/pc-bios/meson.build b/pc-bios/meson.build index 090379763e7..4823dff189a 100644 --- a/pc-bios/meson.build +++ b/pc-bios/meson.build @@ -68,7 +68,6 @@ blobs = [ 'kvmvapic.bin', 'pvh.bin', 's390-ccw.img', - 's390-netboot.img', 'slof.bin', 'skiboot.lid', 'palcode-clipper', diff --git a/pc-bios/s390-netboot.img b/pc-bios/s390-netboot.img deleted file mode 100644 index 6908e49f06801808b826d3a01f88132cf1b2f57c..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc-jL100001 literal 67232 zc-riJd3;pW+5fqd$wCZplT5-SAh{s{!XixAWO11rf(CFI5HyHN#0~eTX^SfXB7#~C zQLNUs4oJL;tqw?)xREOL^=+$fio2~A9T)7lOfa$tBl) z%JiL|)RcNWivIL!LO##G&Zp^}pTLVZ0WTE?ev0BQPw#~_pU&v0@38;rly7E7eFufJ zvh!1DBd@r0{>UpX95-gfbytrll`znskCAcmX|u&Y@7L;YKI8g3KYcB@GvxcgUsOKz z4VS_sZh+U7Uf~J$%XE5x!&ATd+x$^?G=G!w!6zfPjc*$B=1uqC)$^H6@7(jR8k6MG zZKvR#dUtx}f4)p1G7!G>mhB1n??>TBA$+k*uLk{Ie@x&8XwJgmT_> z%ek)R!i%oGcHV{O*PJirT~~AdwKd|pi>|tG-lf$Xb@fkbWYneA<2bhFB6_=GzC))y z9Qb8@i{&^;t+iV^hs*jX{M}CBs{Itcty8#aKZS4aQqFD_9`Bs~TBqLKox^4OQx^k| z3E=@J+~2wUhzj>~PG9%xt17&tbNK)I#ee_(_uqg2{rBI0|NZyhfB*gW-+%x8_uqg2 z{oDUySH}aQxS8~a>N(cly|vAsl9GH*GwC~5y@2=I`8RcLGwCzdmsXw-))0}h)RUBE z6;Mc>7;bG6qM7vH+Vy65N3G=-Nxr`R!V0}!tT2Su*vH5b+fmA)iu1g;eIR;5U)(1XG^ zkW1zoayt%&G*Iv5-*{LQM}zT4={HpGp^#v`hFC$rRrN`tKBVth z$mLz~0hKm{-;NJ$NG8a1O7Dy6J8H#}rd&~ow_=X3(oxe~_0G`DNB}t6V#)l2Tdyg_mM4 zqi2d$=LsU!jYxG{Li`OXzQC++UEs9g>_?hBg8E7`sk|C(tQ-DI!tNH4VGX68^@#yy zR_lUQBXvP(E+Z(3N(_Rq744k2mdd!6N`BEa7TJx1^K7`e zUThd3YM0lFeq5vHK}s{NsfUmZ5}OxrF$;oHyP=zs8O_E^WtB&J}M4t!zTB2*-kMMEq5xXG*Ht zu>|EW22{18o+w^ibsSTrg`PRTS93MJ|HLF5QXVRc#vZks%QJPRDlXH?OB1q0YW>O0 zRg~j;YmV??{9NNu`^-x2D^KreptV@|VxvW}=*e;B=rBggfQ1ef_^Fqur+;P@Ynh-D z^>if925l72hJPjNh;H;{6J|o2Yvl>h42zOhD*Rq!?zkwKqkL))JA+-@#!n9oMwq z6|HI=#@KBg%Ghlk!aYVQ>rorV{KZF6{#z*BWTY!YIuq%FD&0Gr?xJ0k?uKSvh?~#0 zCK!ZkdgT#lTGO`)YFRnsk*G+QBf4-dc*%UiV|n{6)(DYmZP6~VMx?e|#bOS{lyNEC z%a1g2`ni*+Z0(VUsDw21VX2u*BV(%Y0EW*Sgbu9Ed60RTSV=MI+_#S`11>T!5>Ev$ z9m=E5tZFT${?~cTSQFA@P1VjgJpB`m_N~J!_Z=?T2ZRd84a&n*jYtDK3XUJJZIqy^yr8Vy2u(LiQu0xb4ni$88 zUp0tY!PsT|HGYm-Pa(YfWzSvYF>7lzYoTqgqI5KG+#Ic?xI$~Ky^zbLnoCgX(^P7f z>@O=nQivFRD$7_uu5`6aR$vwoOgVKs1^=itxPeEY7OoC zf@o4FYU?4&xZMu50o#LVlwE6W*?)?4nb4a2Vj0!aXkAZyw{8D+hZCOncNOvvU}`Ui zUHBq>zr){`VccE#G+}sJ!stn1{4*Y?#1oM36{K53`ErP z;_gJ;a;t6M-c-Pm*#wag<%6F%~+NwyuEEYd^o7WP2}4=vf}XD53$hwYSznG}^ZJ*Y5~U$75B5Hf*3#)JD>cplS!+ z=ZUA_Z6socMsIpQiuF>;`ed-pqa zq_)d4?iEfMsqLw$?s~09Xo<_yNnO5q-MBX48GAAwlJePwms)%6Dut_aX*39$5j3lb zMrW9C+dn#s5K?c=6Y2hBO2PQ+OMmOjv~VwLI;DJ${`v}!b*w1y5A*l6hKgQRzDS`o z8-sc{&GP39dZq`BuxJorPo>@>HW(tGW@BTyA^J6cYTNeNiYAE;39`8GrnXsgdhco~ z6ggJ0{dOl9YV2lnZn#%N&ybkxcxcaaRj@Dksa`8(eh(D)AOX;Y#IF076q4pj{J;dD!j%}bGrr|c5dDc_(d?mIyUP=AMluo$f zF@C{fP~J(B_tBflp$jtbJ_%5yQM(?BSIBl<{2t{t7+*f$3Z3xPLx?l=7B9(PzZJzH zlAt&)6o_xkF{zh7WnSZNpwb%&_7T=5lBM%ZBmUbBqYaisBg-SApMMz3xuA?9!q6YG zo+BP#&2{hpr$2AQ*f6Kmm+K_6uBVtBYG(-T92R?sBoAum>;TEPTkNf9Q88fuIaBKe zCvYl~5J`sH+B^OyU2IK`zpv{ALD7u}vWn4e$utD&qee(qoU(du?o; zIF97-9-?r|XROjg;al}>XA<|C* z&^c)2rEHid0&X8>QXgg#HEU6QjEA(!B_gXSNfgEgh!aT?AnGM~t_1b&jmF~(L9Zp& zc%qyve~}r8uiY>vAe?b>Uv2!c4Wj}s#L+mnM{*OQ+keCtNV>h~R%>tjZXVrIqHplV z!@*E|O*Gh&Msi58=tm`oL&5mkXh4Nz(;H#g48q# z>e9|*$us#XlEX7aJ?n{(gzK%EwAoex^?O}%m6b_-TSpxKMS5;YgS2=4Cm1>B5{8pv zxgwM1`&yBOm}exlQQgf$Zg$_V_=dT7_nPvp~FSyPAbbl_vX;aVn8A=HmaKp3UUwEZ)6C?02@tBcR->8p4yt#sthefO)K=lvJDEc->W%l~EA`e4 zf2lQ*bpKp2n*N}(R=ph!(6IMPT}^4=(3X*Fz$($YK+RO?XnR(~oxx50+XYQDw)|6@ zN%*SzgLQqJwY)J_r7*De)h4`?XVhw#VP^=N^YH9x6(_Z^yh?eqCyyrmVVcm&N^fDA z=VO9kJFgbBE})T7Dr!m6sL48p-hx(5<{Ww&R!#5U(^IGKOnRnSHTu!?Bxzj#UwUd3 zKbFSD7nHwH)KczS=t;TtGI~<(%%|x|xqF{YPs*Kn1wAQu@0aN5p>&tglS=9Jel!^W zCzWENlp=akDZPF{Pb#HX4n3)qp6}C>a`&1}W7kHj8B^3^vyd@mNK6&BE-*7&FKtLS zgwlb~Lwm0!T*r7V1nVCTeU>;Q6?4ePpwB$|Zcd=jmP68KGto-(!RT{-3F;mrH6MB# zNi~1@V?%NN4zBzARtJjjzoeSK`q80y9(6zALh%^Y{Pm9x#WK`=xeLX`RP#4KIus$) zUE)GfL^a2mH~gqjg;{sc8W)OR(`>E%*gaD91nQpWLUA@h zK{D2l48=m!-Oq)h4?*Gm(Q#46b?<)9fnxWY1V!?X4h1x+-S@drP+zpB{Mb;;dmDA1 z;X-j5L6O=S3MprFK%i>ZYddNmU)x>IxC3%VGsziLdp+cgdX_UD?2t3&two(axAxxF z{k9zqe)}#ok0G(EzrCNO>55Qmx|+#n1O?CJNtakNct-S2wq~#lk@SE6&aAoXod%Lh z{1aGfIp;T2W06&nAaR%>DRG#t#KF>k`s6Iq_p?ZvnFt;Fvx^P+A%}6Bl$|%4(bQALu-`n z&@TJ8+A)VldImHacch!O@l9rZ{OvCMhUf7-#fN?%zH^QTF!UiUbE`A@cglUXA9;SB z`x4jvoeRZxuR&}1v7vz6_TAks6t`O+PN+wJepr~wnmpt7sE$dkHp>aas^{o1?&#mcHM*3iJDzcfsX6w$*UB_yPj0>OF_^70$Lt_XTNQ& z0IU;e49-2o7$jK5Ngc3;g!M~?^)3l3*Vbumxm#_e{yD6fp534{((m!*?Ss{`06YDMr5VpT!PSfpT|c+?>w{^=hl5?& z-Z_JhpuNwk`nt9Eu`X%@&nX2@(9|u?mw?@wsi#cwf_M1Z9RheM*RTwO*?}6mL0Ob!y1>fhadj9 z)YASV`3&{V`rQ%KH|WrOVD~$RkJnjiemFUJ_b=3QUk<_MiQ1?j~_lPXMFm@;bqqa>Up_(I(T|UK6l!%i8?&Et~dg? zPC6J|M^N8QKO7!*zMN%pD%ERdw)~IJKQ5yA`R!IUhg-W9?bfKA% z(E6Oo14*O4jG!s}@bI}_3hE20`a*|MU#L@k=?V3jlm`^p+H_bgC4GEWAM4V%fW5x2 zbKRk?b@PnrV!qOdKWYsX8n0taE)I#Z!mAjD4k-s@ z=D(=-`Xi|Kv?JhsSqHksY!;p+eTL-l;>2mI=$~5-IsOl8J`4>wg8HT%ay~q~_C0h2_|H8w{=XWgo|md;S)$!$XuY+!z0%a< zk5&d+^iUukj_S%jbATC)heLXNt!u-XM{h#Z(j2QX-dKi&;V5PW8o4`8@=C!0pZa`}xmd&)Lmh`jjt_<_TwiZTn*!Is^MJ+aE^G>Q3g?UCMEo(rnh$5|>ZyM-nwE&drX(?-!%8VuR(ChoOIVpnsgt6HQ6h4q zfzWs=BNz$@@6zIAVddF2Tl+>03Mq~iQb`%oQaAP>+m~B2G*PJ=UaHw2tv9&8*fmhD z^_URRNIlyM-zLIMxnf;xozO(jV1B)q(-SnAu}tA5d_@exhd;S7wcU=EMsWJjAnH@G z0gersfwbGJd@rppbuP?lZLjn*&lNIqaOB??d6#R zZZ||h_fr~<-8lElX{|WV5`je-X#!PyLPlh`m8XdYVgfu1;6%%%^qiv!KBH2#op{|R zur>NKY^t|p4Pg5YG4d@fQrg1Y{3y51LaM2S>x>!^;t9mP({hRkudRGiB$i2q^t6U( zDQt^Pqn$?;jnVG8nMS*ZcG$n$;|V)!m}3D4_we~j?az|3SC@zMa0#_QKo{cqW`Y>a zXUhToMa1i$z!^}<#rf>aP-U~P#bMvJ{|x5o+Df7!ZbN_GUDjsNlgH4N^yHKCM}fOP z&FMdVhkrj=%cl{jZXw|a>()Y%qTtZvF1AzOeI8X)f5K%0)pea2S^X=sHvSY&U&}nn zY`IT4SiT!d^Uzae_3>wrD+%z;s|>`Ss?;N*sX!F@3h6h~mrcEym^ahO3+w66k#Csw z96|CMv?7Z}7h96N!YBU~>>dSsF@>)o{GVk8R|lx90S*rLy-ZMVppr7w82xQ?wGhud zPw+o!*2g#b`>xPMZ|0g-8rvzvo6({)AXXz66;W{Q{1 zbL}36IyA)8bDvjI&OQw}E}&5|p19i8Y>|p_qjjOcLaVKPGt+7XEQ>!`jJf=`c)t-e zd=lP&!oN|R@-1~F9 zW4!LY4et~1F5$Tq?>EYGU`ifpK-g>47Cv#eA*2`nDjFuv>ctq?ztUL$5TBGZ1M36K zQE8;7!2d!u%@#pxNb+v}I&ligL8B;LU&5frnwq@Z!TH|Z*3ejncdh?EV9=lH0dA$4*O7L0q( zqS5mR$r#i|J}Zt^O_1leCw*r|B0)aA%aS3eflrfju6y|uGKb>aICE_dUBMDF&tk4^ z|898H*j;Hvq`m!cP!RKO1AKNUK^1qUy&SIfq-EBlkiNcAaAST~a9>A%_rflFuY{TA zbM5A)Xdq&+Butb0%D1$z2=ED_usZpY<#;}D&Pm0l;3NuhEt2DJ6J_{jd#SY|m&R=p z#_ifllBuj|_RhSiB)eY7<29yp96`;kpBl{!cwvLqxoiz1=r-a2np>(Xl||%9*ul|K zK5s%ZUpnwSBN~jbWT-PlObs-zOUba1>KzcvVqQ`ah(E%3CF#veB|#PoC|N83o3!tL zSHa^jpE-Z4l*NYdSxmy9OIy>g<{GEGNxXq@#U~wIJb3(5B_0X)w_6WjHdLiJB`7&u zyV)E2CSHy6&DzZ#c{*F3o`Ecalg>RqR&pVqx-L#_mwE@w1Jh4+wGZ|Na5n#Hds(hO zr-kHtoWU_NXcjzybuN+7;4xTw@+e<2$?QvpM%Z)I$N3D+O@D~8yGU=dPV@3puxTrX z)VCP1Pe^!(Uf59#;{bBp$KzN&SeluX#$nTTA`HA@+n&zn?56F(x!3XH4Craz=Ado= zDau}LUMOWvlI9$opB1T%Bcv{4-#NK7C=gp`e=8+WKv7HI-$?%mllmDW3*uD#N-8IeQTeq==PygXlet?aQoX_NxifuXf+O?dv{Cp}upw5P0E%|`I?Dn8Y=X5N! zBJFgfo!&hyVkaV&txzU1eK56}Rq?fa!jaymJLkBB7=B+gz}AuKJUmW*O*;X(k3K-z zL{Za{X(W8zA;(UCP4&{l+-iAd45butDU-jK^R1Ns#T90CeUSY%L<1b^cvv`gB=7Rf zJq2D-YHJ0!V1*-{+p|c@nNPSYr?Pantl`$s-h9%$l+tccJ|JXiX^qdsMc+G|GT5&Q z$_c1)jA)=mXWC=B&A&Vv3GhhZF~-t?->reiSE)5MsWxgbt-?#o`>r%R$mxAOGu_Z#{59~DIS?VZlO6JXPaxcVF9kXX6s&H7tF z>TerKdt%LP8grexJ{0RExYI;gG|26ta#$W|Pbe>$%R_1*`AXNap+m{?RoSxCzN)ki zEi*OM8j`e~-Thqn}r8Zsw#HtK6AuV9WVYzKQZD5kN66r9_W7)R5=^`^G0_=;?HeiP zMK#`>{$+WJ&vx+{U0zqX&YJ4=JF?%nUC;ui!t08d^C4Qt{?TeYN3&0{oNGwp^%54# zcziA2C#4^=Wl64CwKSL7`ki@4OXUr7$~6bDM}{Ri)VGNxdMNd{e~sbs>)|EOn}}ii(hdv*QWwi(UzDjOt`CG| z2g6kR>78q5`ynoup2yJNN?Ee*l)O@wX=X0Tm8I3YZE61%>9Q>-&Eua03Y;jC`1ClH z;gzjkp^G$sVKkfHbF+eaT`qDiqMT33obci|fa8e=PPFYZl0;Ue#vdh`|0&~`=Yle0 zi7)zG2Nv7sQT}@l+Kxd7XvZ;5JC=5D$9O93iVliU)F8T2Lwhl$tL&D}+bx|=>B>7% zSdvPc(KYS+koIF;|I%}BcoV6C*ha~vr@M$>a#i+5yNBo01dlpvt z*yqks#Idwkw$7`3nc6RDF6yaja#kcA&6@bsZJVNjH91s9#aJyE%*-e=GJ8QDtPz)) zk<8w!M40EO49h>t8zgP4QeWc@=@Ad8`Vhjqd1wKGzW=d zdY;P?I{VcL$+X@Eo60M3XNQFLS|ww&ppn_TERdPm9HF+e=cJWp{lmEplOwM8u+sk{ zEZaOIml+X_W*2ztGK~o4voWlbvOKXq!ejamX8oGnhO&g*kwfJk{b{G%ze${bxW7*_ zNe-%jwlGzzz|2Fvy$t@@MnA*vx4z50w(J9Iyrxx>mKhA_{TfpA{vks*I92vvcm;-i zogwF^$hnU6k+3tD$+Z>=z1#9@n)LSB`f-D{V`GEXx|;qTp}&XeZ$IYA=SioTOl6i^ z6SOfX^D)kyxgBu)B3cDajs!l^)29+In4nc46}*@Eo3KtoZQ+?<*%A)(y-dM%G1ZSz=~?kt+tV2h&^okyfJJdbHA@hJtexLvAd#76_~^ z*n=9hYG{++-;Ccu4sNr1O3xiM@30h=DgDBU^LZC7VISk__`BSW%>@yrcB~`Z`Zcee zQiz|@pS4Ovg7joxvRd5-fVo!s5)~H$_BS@Ozfh6`Lq>cpLS7FU5xw%l8UrwFYf-cUokN6XAre{CARgitV3USMkcV{Q%*DSFRTU_B$C~ zhM!^{H3N|#LNT)id}sswat8XN4RvF#lIN)1?yu425U@~VFCzTzqg)|+?x*J|o#ZAf%nd={)uBt(opF>UT?cK+pLX;E1^9^N)kpIycL$d&)lYt_0f@pz)?%VnkuIZ4(n24(HmOEe-5a1hU)Rx<$Y08H zti8MZ#0@q{A3;2B==dfrHfa2BCN&S!XskoZ{A9Zc&qvQr)GWROSR4mId~TO zqqGUDm_PL|vu?M2H2W=AtD(~zJ^uR;`t{6JV#jNgk~F3re-ZVN&Yolp-gY_GD(iVA zhGf3$=;@(!C(y`Aw(2~`O4(2Ip!MgVug;R?4f75v>o$W-y{$#Aa!~Ds z{#+~H)|LOI3B(aL0%C(8c+K5c8Y@St)>G{(eZZPlY=9WgJH&e`v12)2q{pt_ygt`}duDo4NYcf!zcZc$xwD1Z~XL#WSvtc!5HBf^sQMGkgtYOpsnfv}0O zvLuEyk8o*AJ|&4INHf|Mj>pOoOOzksTJYYjXm=9v!-K-foNVbIseaw8l~65xHl#z7 zF6ji-Yz0*cpsLgUZiZ1WxY>x4RK2s&ZszXyG6YNSYe+IgWzh?NXADFQ;ur8Fo09_g zev^M*c0X3< zlU(YoX=jgm=h5iiXx6vAsi=C0Qx8tUehXey2hXieY>;BHa=Pmiw|0^ioEUnKfbweW z2hi`|R?@@&!@7O9EE{HI2MmjbUvG;cDlb4M{scLHIpx_#+hF(x80@*=6KyN?sTi)OV6hzmsHz z?^5XRuk`me{k_qk?L3B_$6&mNyYjRpKj%_<{zdHvyS$9(q{>-g^R1Tl0S-@Faw+)W zx&}`eqnxDXW8o=zs;K3>i^21b>BTr%{2GmyT1s&p$11P5+G6+wAHE+co>wV;!!1-^ zn42Yqc`{V_Zvdvjm4S$lN6(T$z;_|@89CPL>A7PQQ#{e+_cVg9P@E*+ZbywP%1HBP zKY6P(lDf8t<*ik*Cexq8NowJ7cKBk3zP6b;38m;GahI|QqxvBVDKi7#z7D8I zAib%|>T3peAiQ=B!p9QDuI937Rv(V=`w%_@<=4yd?fNeJQ>?l0&d{}Lo>^BOQQp);%rSFxjn~;o&zZnh z&{z}a){Mtq5o@0Q+vyKln2+@F)nP%>Hm?Kyv4T=qLr%mF7;76;@*TVv&Ndzt|N90J z7RncAf7eHA3AF~&4`wo&@umQK!+tB<(lr%pD_m~(n8bNF*vQrsas_~Q)0GFor6~Ds ze}nZ)n)Pmhm+0F`HY>3n;~A4@Y-^J!;W>;njJ*5}#J8rqvdl*q3v1bf`K^DeG+NTk z{3`fHHp6-b=0?(rh-Y{mzCLW4Lr24AQ;oi871fYtW`#Ab+y7W>9b2an46~^;FTP|s zbHrGsZ%=GIy%zG_QQOR__$Kx*4S92=vsQb|75tm>bG7z1lSe+F#hnN#@A2C4=`*RP zrYm1_;KwNAdKuF5qb|GadBR8d=;z|Y2Yj^I3kgaQo7fdf7s9(CE1q(8eSBl%iP#67 z5UqmVqBs)Z!v06rxm4ap>ooS|FVc}OfHH>&k=ibI`navoSvXf7M#Ij8-Rp0p&0c5u z>%{eHmGP+t5o9mgqI@Ox*r|-Am&>~m*o!Lmjcx>|rZmAhDE(?RllF4LPaK8t3#?(n z138w%hC2Lx_*vc3_e1z}K8NO{4-R+JpD5F76A^B>;iGBX4f8{<8Xt8-OH}H92!F>7 z?}yZWzv&;RPetMCc+XQyG6|pX1Kh81fI&YJ_5BYmL zkLjghQH_rJ!!-;Uzn9e*R4*uS};8Y?OU1#^{WSBWa; zn`wM0Qhts5C@yo>GLBj&_erRpO#gan-9Oj@Fg8p|U%YPRNMCa0iubgRhXgxz|DjVl z)G{QG=9-xMmE~VT->;!9pSW$ggz))G#!%T_v>vw#lzfTWUPNuL9J;nj!keT$){;r) znnygdKk~nZ{Etu#k4w(uaImEV!54c{$=bhY@d}htcW4;g(xqgDI~<07$fZ-=SAv%) zKE7l-;+hE)->Ui4T@O5d6?2@oG()toc9g-kr;R7>7QRyAaw2aG~k^;wysH{Wou zIot4JhdN?pux%uT^&H(~ZxiXNWZq5Bx3<_D+)}S|O5OWUluD!LEiK|{VNL#X z#?s=CA!*D*e^)`n^keL;lv*K4JN-pJdJa<3Qy+>=6Dw)HPv`j_Wk_l0c$9Ghr2B0Y z_Z8qijwHHtH8V2o7n5|84hrCYz#jQfB^TP24D;eVPT|6Rmz2-!R}?l*QhwBV|EF9^ zLD7h^0SU5wMr;M!h49|LSsjmHRjy6+h(;pgp(n8hR2guQy+2U~j=^r(Qr$eNTXl2;-ERtoE!E?-bgZ@CU*gHeNB7=#B(%58DcI$-D(Eo zYp@GB0aidf2V`OnVC(*4g~4-kEQ{DYdo(Vh(5zS?zBt}*+kM!FG_2+!74UmT>>)YZ z@~uYJbir$@Z{pN-oBgMR{XIkN+w$)75;G9+b1x{*zdBmWw=?v$`qG#flKeHzC|PDz zxP-LU+07xL-8LfRGxO&F21_V=cmaP2XRr*2#=t$Qe6xfj(l9w4`VsN?W8BK4BTz`M~@Eb@fMyf%s~8k z!sJ%e_zJ}iI6yu5RQ^z!FWyn>%UycK8j^ywfuT!ePuO3R4rn-QeS`0Ccn#r7wyeSO zCu>2yD$jv3lXquF^5_fd+>-V+iYtmv`{%q4&tu!3Y#72<2+OSp1bZKUn6#xHgo*jq zZSD-!Wfk1HuV(Pyz@@(-_$E4_p|;i(iqdqhE!=~c~t_IBW%ktkz|HCkqsZ0yu(&V z{jl^G86Y#xK<)zl6Pr{Wj+jW{PLw)i1)4eSy&L9Zy0t7L3P4@>p=r||U*dJQuhG4+(mIaLzmPmNbzri;6WYAd2 z2@O!vpes!y!oKFmaj4w4;qnHZ-(lyJV0ST!QYD!Y*r`Dx9CWG~2qz)bi2n{D!l<_<J}r*K-s7BtyG=t$gxw;Eppa!2LG?Z$(qDg6>r75{4ic?ibm?C z9nJl6rxcucJW~B1R@7l5Z2@X?&=OW4)Ne(%hh zv3D_R_H=T2??sNcz`I+mr|plhl2#)ILehSr(k*CLXBqucU~UdpeeLw|GRQLQ{T*&JDBtqReF?Mw;@?PHbst?fIDi4 zQYFoYl_VEIADpTW=wgfJ$kX5On;M65y;H6S1=Pv8>u_U=>hYrY;B}N{G~5w4PSN@} z=Tsf^B({2y8vPoal$gNMOBiccg-65RPY;og8$)aCnDs147Qal$K{&!`BDVji6F!{3 z%duV*>~A!O>mb;J>JFGie6Jc&`HQ4Q72DtDH)TD?GcN1c<7yl^sOVS)x=YSx=??h38e0kT(#Pup&)0KIg0`6izT}<7;SM-asw$$a~v# zX^*`P(qNgN^}uyhn%RwrDi<_#GXRBBk6Q z+wR|x*!l*ox;NoPr_?ox`@}eb*J0JX1ov${KwNPyuZ3jIj$U5Nwv07m9;AZv89QUY zfIX5AHio<&a|%MSQZe|?)@IR*zekp0feq@__4=%*<_v z6)Sd1$KZY~Ue(Twh*cA@t~At)RC$p5VK?{L$X#Pc)u?f7l_{>^U21O=&Oox=Fy~w3 zjN!pQ<#iBMV?Lkx%Yr={?)<3{Wk`LYle*xkRiesEwXmc+>RhJ~+Sr5F z>Fjv)`sUziI_`5DvliGWrB1OsOiE=5s+h5wxi&Rbo~<)dff6ZKtI3#w43b6`9StYMQ`wm@uGXnjELmbe`d=qyuBhZOy8bPa+kY) zGA7yC0a#Rx+4od+)+SsU626X^7f=NtzjVyIXYl#o$+F4MrEt2n(B8)@*|&T}oS)aUQgL$n1wJ`mp+`K8r(?gx z^bh8fqJ0bV*GM}!YEd8a&4?Ggt-qMWcUY6=;dSPV{)JKEDSWd!>Q&^&?XU$q(N_jj;w_^|e#+pL(lmze`o@vV zKFH$}19K^asp*6+wrEeP-8DHPMcK6|7pr0gf0DO=JF6GBzzXLUSOpY3kGNNP&4PJ8 zNl=gAJlwaWpFM&Uk0Zr1YK`<&l3aH1zNO;v+Rd<0@ILR@NgM#Ct~vgKaees_|D=rh{cif( zXFZo9EX$5zKYj%6b?vQAHFdkevV*Ue{!Xom`mp9X2Wy@=R&kQCxq$DD*IovcY0@H& zLNHSV(lM9zfR2Wkj6imL@hAbnM4 zpog*zsIls_Zz^j8Yz5;fdRd(!z00;M11#rgzd`s5mCSiKf0p0$Rpj|7=2paPoKwr` zJU8L%Nq+^+ex9P$XW>jZy#M1)abFqVT4>dH3i))5XEjdpmGNm(J~tIB7d=GJ=CJT2 zFPT%vmQbE6qk`ud;%P@wiYYRMiaS@?dKW5B7D0+l5*aa{@Sr@OJo8S{6rWn1nO78> z!ry$-(Eb~*jIrHOEL+uHN^d=Q9S2(cRN@3Y&t`_xp|9!A>i^MCDLqHt9*0?l>4H-F z)y?S6oI|rE`xN1G`IRB+!B8Bw3rDY!c`FU<*ryP^K|T#^rSw@yu~Mc8)#_L?-M^Y; ziNH(p_U*J3xi*cp$79+8iAcXug|w8E%r~e4|vpqVD+&fwiDqd0H4d37L#x=>2LW z@tJ{8VdK8g;;=9a!_a$=hIQ}$!D#bz)n?|?9&Hg~b}FmXNeIIY?)`Q%-Dy|)2lJi4 z7{ScBufcD=qcwkWysI?>Q~UOqd5ycVLtH~zvz(>7uHItSZ!c$h9x$0}8E`^nC?qf@ zLxBt$mwfVIOmmQ8M*IC|=|Sm>q1eZg?QcM1_b3e96MFy@PNjG=%?IQi%p>2HbOVTf zYliEY;>u{eIGzu<_1x|ooOYW=y&tW<*}4Jt1rrJ4lbu%WKkopo;G5OM@xKuF$S2(U zWVw=)^_xc0Kn7&FcSUhUFydz&a;u2H73mQS#$WfDm9-IF-HD=O4K0^u-l4)19Ubw3 z_hjc3TjlmnzGYmVdFS4?9_O2y?LF90Dpb5EyVH(R7SBq3vTz=uhNu`T+!5-p{k*2+ zDO@4BikN|~8|00VjCt<)!i9O+m9=c`EN(s+A4xh-@(MBa;Cw_(_>cHV+y1|I>f;IY zrusOk!0F=??o@oG&F%$Q8&v8c^u}XC$rB^qFdv|ipx1j9*9l9m)Av=DE!yMqToHJ3 z+x|7o!?=~67=1lRxNN8LljKa_ZZibNKQR{C_`XYge~eiv7k;W*9KCJCHI4lZk)JhN zhiyoIe;HsNwLD1uT`3m%rtlnUyi^v{ldKAjeS3(8^K=heGlh(RKuKPB!txkTvS%K) zmsDfi=GpLs44H;!<-S?&`mV>gzXKk8-{rzP7~jjf#NXt`_rZ5fLOk({5xP9lYt@Nyi+Di+^?k5Rr|$xM_g3`Hp0^BcQ{xC5-|)fJHO5Z- zw)|7{AahFPTZ-P(Now&l*hX4e(C85g85yA}LwC;^yK=xWO=`tsGv&>O?tB$m$Fp+- z^C#8}Dg|+x8c{u4w6N5F#cbAjw}?4bFYI!$Ws9d^hq8A`&f~Px8J3D#%wa?MW^^+U z_NjZ<)1x6nj?^h^!NigSqz0cFsb%bmPJPiEW_`19nGkGOlvhWk_p8vuDOO1V_GZK} zRwibN2cvqp2XqUTe3z*mk!zKWz=??(`uYwH{ptuLdxE;ow$P#)`vJCkWWDCb6>n)_ zZ!NEM=x>Q|kJ=vWv*WF#+Kg}p+h@)ZwK}{KC0HkSFPre-@s~6X;`QgS&pjRTf%0io z&2~xlHmb?rl1^{GqqqE)Gbc%BC2RI=>|?VJm_@|XTA6OS zZ457;`DPz_A)`ts`qoT6zAzV|Jcf4z&|Hg&-8y~R1c)UMn+SzHLv1cBkj$_dC;AjATb6a=xP7^&>LUg zd}5>*+ZOQL*5AuCceKs(8_V2zODHBtkXO)%)ZAH#=b3t;*|9mL^*rh~9B`H!gSa(* ze;3&=7@LK8Zi<@cIK7^S7c z7At5M$Cj&kZm6{U=9#UsD$>hbXrw!9$NpqsXQ&y8um`-kj=byMX^30jcjvn|i9!E2 zm+O9KcZ$zYnMQ3|Wxez@(C15MT_IFo+lyj=@jf4gs%rg?eGkKga$id1AKlvs?ANLG z@Ec>F=Io(+0L8+3cgML;E7nmLP!FdmeN~1xn*LS$B!{;DtgOjX7+?D&T&q}r+y`!r zJtZG&&-)zGk;7v%=yEo zbo6T8=^;J?&vCnN=nNm=Pnh?qCA@ONywTHdIac_*)`^1ccRl@XVvmm4Z}Z~RDR!8n zda#6AFv0E3fL;R4hI%u#9TGw@@Mv&2=TqsB+ez0!@lHtMx&-gI#-=DwAiV1saCTdX zC;nXRJNBiv1{^s%_daErkm9V#=l&YIU4#o~r#JUr*T>N?XU`M($Z)OtgVLt0lRevT zvzp2X$0N#~t;DrwD~J_Eq-|0JHf-|L*|E;v?T+!%lEMBw!Q;##wTjaOeW**Ql*9UN zk^Ru=j8Pv7OT$h)?#bbGNUXPVNILO@l8(K3tbnV1_{9G08}8h{eeXR;{~BHT*EmT3 z8vl0x4oNYbeJJpzhgF{zC0g&~{Fdf*wE{q+!0p+bi1e~UVQF$lQ}%Dp+6FC>mtaqj zur36=8b{R6#^LsJYx%#?&!o}jw{S1y|1Z|&4E~OWf&$zDD`@#!(8zXhDBfB9O64Phlyitnqdc$wCBnH3(uRI3t;hG8k;22MLO#c zCDX8;dAF3WYZ>N+tTPHvD8eT{>qTr4?=!N+G0k|HN!;G|l#S?H$_v>-xuW5ugl{K4 z1uH$04rYE{f)h!3Pp%TMNbkec+mNP{R;Fu?r)G6(Rt(7oOjC##|E`mt8r~cgQQpqtVW4BX!oMBIPmDbeMzfuVq(mtHEvT-*O-74Q^ zL87W)eI#A&?#nfRq3E&cYS*z9bq(bHQ~uE8zK{{E()}VAP>sdO;)i+7Gk*frZtz(- z+|6+fa;LzDZWVH0PO-9t4CL*DbiYU5fs}U)<$bt|Ul;axBnI=&_O*-&wd(H4+p{$} zzDDjG_|mxN^Zv^9<-IHS2!NkqBB*fmw8Bvwo*?hXdIt8uGM`p^C)lsad@>(Cp9W*k zI+JagwxTw8iOLMKHD&$_`5RacC9F)LnQ9Va*;zf=F)141+S!XFNuO!T;~++L=3=v| zDqWr5C{z1gu+YoiBw=QFk@5<2LzU*jbdkz4QRPEv*}rk)XPX-$8bdt@HlLZNI(0BT z4tm4QaVygN8EGb|Jf1w9ug@HvkjImElAGsp#{SqUqK>JGP9&Xs@+Ksl@bP1x`dw$A zIx~Z@+X=5p60d{cSwP>%tIVi96W{EaMf!E}`X9`{FTa8D+d*S_NqpYNJ?Vq}1BtQb zD&g_Bn})$B*z!@<>#FVsr*8d^`3~?FOUCCd_9v7ADLhF^-th+t7sMaVItPW zW-`4Z?aNeusZ;lt=c?ZNC21C1|Ese8_V+u>|AW5*^;Qx7Hp1_d*D8Rn&8Po8{stxA zH$ckK1AB`DlV2=uo%!IY%bqkSj4q_tddzYzvM&I{Y%0vpu*~ z>A@%uhU7Zz{+}GUF1Ge=$`^fTjHNdfiuLUAntjC4>~=0BMK#OzK37Q?A>JKzLuaZP zc?wSb6^du9wcAfy-6b%eGBO+@+)&M_S?6e>)B(~o7NdK7u?U_F9!Byzhx@V=3GFH&66 z!TYrfC12BS0`Ff=GR@hr%AXBPO8(!|@tgI{mpqzBU(aXlWdDSSo*G0X!<_>v)JaKC zpQ$}RLT#h05_`AoaU1L8eU4$7=)gT1)gwpYG%cTzN+BxRBBmoxZ(dharSMMT2h!7L zHQJoJ8*S{NXh!X(acX}N>D+D7sud|)^NX>HvPBHXca+yHRk^%=xjq!s)1rY$I;E#F zbKf8>CWEwxx8d31QTuI5^AKyX(laXhaDSA&YI{#6(b<}2vyBFO6)BGzG-lIC3(Ekf z_^hMnRQaD`oss06+}{G0Cn^I$_CM;yN=+MDvoe1awKO9{F?oeVor~dHWF_l5Y`fBa z9&#?1y9n)P;p=*8(=OGfT?FsR2)&9z_o&c46nY#&FQCxxRp|E=T8hw03f-$h_fqH} zgr3SCHdH8k+USeWGWNHjLfP+z&U+QPCvKj{)+YP+Sd~J{8EX~qZwngLyrMKjj#^%a z>KL=I)LIRUXQ9+QX={tVoJiEd&$j)bsN9|o{m4^B`#+lW60SP1gEQ_fWGTWf0az0Bc?uVtSF%zIJ7l#plv z2aaxI>&%d-=XH9ui|K>c(*dyQ&if3!Z-{MUm2DW$e4~z2`OV4LE7hs+23Rxa3WaEhW9TCjwIhG>ja*G?N5OzoQ=qv(Y2l5*C*7_X8#}Gz9DfY zcWR_(93jse;T(XJ6(DirK9mA@T+S<&`^1}1MEZ#`eWm2k0r$K^TykifWh}AZ#R%-E z@!%=n`By1{F@mOWGj!b#*tX9ZFYOgd78|7OYTv}(Bt;L%53n`jd7`$tPUun9%E~om)m-ewEuh#DZtVFg_5%)etZ|PzQ%M7VpwN+y zjCj;^K5vE9zBx~xGCTjsLyIQ#Wt1VtkhJD&^mERhki{Vyngh1lA1VnKgE7V&wYIQfu4Km zc_Tf)r{|^g+(XaB^xRF)2k5zrp11jZG^_J&UovDIKZUk}!9g5#a&$s=>6f!Kq za!*Ii+S!od54Z0Q;fcx z25!iMl)K|JC+)pL+q`Gss-e{0L=_56) z?~PT+^9b^s;pVxE&xlhVpUNXt9_Sm!eB?p@XLj`e-IRy>KNopIfeew0b0RY5K;--> za$b#`{oI^Cr<~7smSd;~W_R{?PV@2IxR<1uwA~RH89^n*l&SRx*BiOxiQKl^XQ-K? zfH(?sbKZd{#khPFtCnxMGluJrJkfi)@e`zase3BK{tU6~$?3xm_<3ChKHKG<-V5+S zd0mUJCb13=iN|29vcv*E>BUm7W<8J6U&NXc>3h|A%jow?wmfloN7_khez@GMCv9<< z&Aur%Gzf!FXXvi4XoEfB(@ekDmrWX25BmDjJsV}fHv@;(h!o{h;#-^n7)7B)^c=x! zXl{)?)jV}2`>^42i0Tw$*OKH3#cy4%ht`dVqf)s(vOn)o+zASUM=q+P~L61CAbv_{md<>M!r-jg@oAZ z=62}LO;pFT)YcwOTT_35w$|8px;2NTUrCkvVK@A7lx(BqaanvCsnCtX-f^eaQTN)-)W z6jT66RnSLfd$!A zKz3S3hK8@g46Uuna%{jGG?o}%HIizDJiTY@uIvIZAz5Lt3 z17Pz=xPlk@V72sgE&A_`R#ki883wiVeElG`%vZGxsnplcQme~%poHlzgf|@|Z#nX= z#mU}~b2FE;v74jE-z5Ep=O!_f{jcqkyJI~66!=m87OcpokjBI}xfQBCiRHMr>0Ojo z%D%~?Rjv06FQ5ByB+vZ|WPSdu#2RH!5YEgxP2)0*pr-jGy7++HYMi(#)!GT7%$u z?LfHO_lU&1eWi6dNpwFWJ*&-To#8R&F-)mPKLPpib>1sxKcWbG8ev;h*hvV3Jel>Z z3Omj{4=@_Lg_6Vf7sGK{qm870!_X2!>qJ_XJRuB!Qdmno{7Kzs>%f?Ev}Qp)4sO?Ra>4VNF>_Z4HZOZR!Yo}ae<-CR+Tj?`Kdd%y|`(5xJ6ToTF6VPU!_c`qp zXFf>otxA1`?~LS7Ge07Ipm(x-mu1@@C&(`qipRadc8t~n++oI^E2`s9SSv)byi0*- zCXb-`G{JL0i7Sn7PxM@ndaXR+#+2#b<-nJ6kCFy%LAdMfDCIWxl$GGipa;AWv`{P7 zsGXf@j@^d$*JghF3G>;A5PZ8Gl^Ilfh%(I-e?HF~<_7rI?w`Y>=tkF9J@uB|Lg7Z=p*$j1 zQ16EHfKaubM`fSmv^r^%!p4wJp}#vIE~Xt27kwODuSvRxg478)bQrcCl*t#m?zJ zzrg}4``u?s1Q@wBKoXVkt zJtR>F)0E$!rGT(1zFlcE4bBd%cb93zx0!+36z2{+FX_jT67ad(cwV3^YF*jH2q4eE^&k5)!;^nO}`2NhZJ)qp3gY8&N-Ux%8O zJH6%BatUL75RdusoqDSqUH2G}U@>z5%)FBvkHjO=-h};b%M<*Lr1I6{a;;07O#FL< zSQ+B83S9HxN+S}WuYS(HVq^?`8Q9^@qqN7ctbv)PLY&w**lzaun-8 zzQ!DkIO%x*8f%Lg4iEBr{&VNDxy0WNcxOMM>Eb4)HV)>rvtV-3cQsR zNsD;-wijwiv*VG#Y0rnf)miXdqkP>T&lfI+I#N*cE_6~SV zim*<>-V_L5CG^$8XJh#c1_C3=1ZAL?umW@I>-97d*}0@rw>k zC0K2x5>VzGB_nLdSGv4k*pAYODN(I+&!i`1R|cv4Y3f`H+fw7iwQWatNXs9JmHGK} zoG6Yl1?4@|!AE+YDdXF-U7IM`pW~%p3ETd%(79PN_9mtKopYa-Z9{VFYUk&k&Bb}( zMcB3W!^Ul*qm_vZyW4a{gDhobmHYV~DE6^y`^LgYpbs}Zm9nITJEAf=BsoZMyOf{P z1J{2dRy5MZFl&t9n~!Y&MBi$eJ8w0-P54#mX(}`ucg?GH5NnH+d%K@Ygl86$?+Ph1 z4Z(MQP_LCUJQ5?TgdtA=k$l{Dls`K^i{VBnTSWQbWe1Qu_iqQ3_e#n&n#)SPEB3fL z)9LlEw;qcN+#f@7Ca1_gj8*o4^;n-H{Q6njI~Bb#i&w|;a)<)?T=%5tETr=x-E2Sek_j|s_^dkV z5Y}{|<;`G^@drqkX>FqN`tpqk@}950A;QN%ExZ(yIg&S zt*U2BoT*lXR4W)W$60BVn>{gBSf_*cl{4n@bli+uBaV+IBTo+U2=*aLqwrD6lMk(B zE@O!AkD-wDeUBm-3$1LVOIkU0N)$)hVYFutj)3%E!Wqgfr#TDwa`DA+a&MK zvHynBOkZK&;_m0}CmUfgnRM7grRm~V$RpOOy&!p;C)YU|l&c_q}Y31)r027g2KYIfuMFp2h6>0ZmSKj=~t+Xt>m zD5*%cqVF1Yi|sZ?>vCJ?hE8Vt$Ts`EF8Ah_!F%_xjyu{D=$_Yev&sUABe_$2 z2J@@QGXkP)hT)|79`@peG$*eW1tyJ9<&~H{>CLj{f~%C9V*|pR4PGY8(5MV8L}l2v zECV&*yraFhdku<*Nho}YVCf%kXy(wN}p&b=ON0OhkLBNlyY0A`zGZr z@`BIsiFl$Pj-36<{}@wEgkUI^x2NTpRL&Z#M&e8g)=M;ulfg2D;ttG>XIS?OBWF%5 zJtW|fnrEsnth;7zl2uGp=G9TMVqwN#CWvJRecZu}vAgq6k}N;)^jsDbkzLgb_{NY-3akKbKxa z+%4U1DHCyPRS!NfXupk+hY*rSAw+F%O^-)l8`|u3$iKNGzuoHQ|6le9 zB-5+4szCfvUKyjA*CR1FS%)Y64LHLXp!{`^*VwPp&8rqhG|Zq=q16+%?4R*nSRFZ) z_OOAy?<#mMPUzR1gns>VmwtWWfc-kLQ@?J)T*3X?6ibiDex1qvYP~3q;TeP1vLO8^ zh(a2LYB+~0d*1K1t47qWS{Tx>i{8=uI?|J4P#9sVmGa;FTY0Y5=flqASnL3M zA=za#j=U|Y<21MO?U=X7c04R%&$wU5S%6OKI$2g<-P_m)5@3Vc+4EsfYJ>7U@gPa_ zwZfBho$?qX{oRkisqXX535N6(>Lm_eYHiU@!g=dCI5p+PDaSTpkQ~&Tpcxwt>7+Bo zl7yf1tFZ)aPYU6kg2f_^<`V}YIa{NWdoL## zeW{Jd+VR|g{~EuxyjtiKmR3eJlu_AbdMK$(5Cu%2y7ZtxUD;6)=l`|$w82qb*WDE|NNX?)#L=L?n(j~kTwDg zF(vZb-M89j?Y_6X_f{Wnn<$t}{G-z{q?u{s%!GE#2sd@A#Qng|v~^p??&`+*6wS!fhp!+R>J09*$F{jOmt$M;1d0pvrQF<`G zvQ)QYstxz%g~a)gUlD7k^tJs)ls>%alO%JKI3JVbaMRr1NX>VEtz5I_;#wAp<2e`< zckLk5csWSY$~8R~?}3(B6QAZwAQpPhweLdhmm_Sviw7XSZYCmSUS7W&M?78y0;@-_`C#jT60QLCA{ZL9zd^)rw4r#HyoK=<96@rpNb!!`c ze`S<4b&2sB()UakNQrT8unQlHu53d>g>o3DN|GDxFkn*!&6Ys_| z_Gvxt9L@bVvqsPzs~~rB>RFW5Nud$H8NZj~o=ZH3dy2j~M0{VSZ;Dm}eOX*to@oZ^ z&fz$tJVQH2>JUfM>KZK1mETl*K__t$8XCp37I|H*ZOKn|3{MQ`|~>l5U%BW+PDBUa-wK zXmxAvec!t`4Em^fZJ5R`>!t0$8|)ill+p}7!xb296hqRg;G6`e%DxRSQ=4hcSFNn6 zTZx+49?;@fZ%x7Phwv5z_5It-Bo{XksMirt-?2EM&9!vO~O8T=ROwZH+<3j^IC z|54g|6QVi8&@6faXT?f8{Q7ONe?ihX$qe$6D!gC=L!$&*^!r#3JH z?^=hjM5niGVB@%s3E>IcBMe~?`#pqdTIt%r96IZG1N@z3{|?~*ozac+ACE8#zg$H+ zn_ebQl*acoulCI~cjEeIyeo;{YGj)5-t~W=8>jJ1RlK#7qviuy$6X+eP^-1G>%{k~ z@keLZ(Ja&>3}=?V1=ei|TLEo{`;VHS7j^ydGyV=&MS)`CZ<`L>dTq8J#*? z_Z5ZLove?phNoMgudGQ9N;QQ~6(f-)=yq z@A%owsxJC=ql-yBQQP(*kd+Y1%J~*0NwLYvI()&mAXbtBz^^aS+BN$@pjWhmBuj`sC_a8>Y8@D-%% zB(+FAwG(3hOYd9IpVvYqhjX>?pIzfxJfee0(~8Z945Xh zetvkk0w;O>DD6m4{0{pl{3Ah4oP)fVW|vjypniKcz)tX4I)xlpTCS~XE0dgDhE_bw z-h*BXl5{>i&FCDo6@phdM!I9~%mq9Jw!*iWKZfW@;L|&#CDw~I6S}(ue=R3o5-%#= zh&UeuYKV65alsLf8`)dr>rqd>aE$m&1=ZR>YDL>~{ci== zXy$dAWZ}kK;8*KeEB?&uSq;B#&${_Pi}b7ppy|le@3FjW;j^GQsn>}9^5OH4mh;l? z#_z_xv}Y51cEkB7>DCSKJ}CRijq>IMkK+9kxI%#=Ye(idBjX!t;z#}GYOTPp81aUb zggkv#o`D7Y-2-;{*YhO5DNFQSK4Ip7S==$e z!PDjB=^}n_1&tZ=;U{ceVpU46AWLuN#I(>j@6CGOIIj`1`t{3{t3{0K<*GBCOuhWy z#1068y6DYO`%Xl_vrlf~K8)2gL!nNYSdAku&;qM&;uv}j*r}yr?g3Yya0L&~Q@J@U zW;LJ%f1>X7nB%fFaL+(u>cK!4-T>vvmL+Nb4xPS-bMb<<<1=0FCFMNzH}DG&#Sb>h zZe#e2*MxN}K;am>E%Ff`?)&{v>$cz8?7cN_`t;Vlk#L(AvAt#J;YYl;Cpz!%+OltB zL`$VJdUiNx$oMBm@&(f>p0*XB=Q6sH$-L@?|$T)W#AP9G6^ECa$Ur_jvX;GYO=ffq_aJf5C)UgIGC*tG0w`8VW!!mgSGV@NxPabhK+dT#NP9D(m@PnUB{s>iIAB55QMP`B9YTfQ_qJ9zm727RCg}|@s^w-WYIH{ z7AVIpITcD`d0kRYH81EHLvsmN(l!d3Jt45@Y0J!bZ-m1~8$6<9g`P0Gu5Kcm{CN&r z86#`xwxAz*e++mZ?lFnJlkt)>amrUS6))>WulyusN#ykOi1*erp4N+^Fr-H2uaHCa zv4(A}5T;VSW>)m|nQ6}-Onk~4zV`n%u z;p)y-kl2Nxc63yrNH!=v0WEEic=zVDVbPX}LMA+@KM7U$YB4Gr7oty>3|sfwFFa5J zvDIvl_e%YG0H#=g96nxF^J`!f+oRGJg<@WJ^>DXU0L}>BgLG;p;^@JyEg?zYgpb-< zdL-Oi5RwdH61KA8#6+Gj7j;{6EjxVJp?=hF0nO0ZnQ*UFlJeCHdMGR#S0@=e4i(Tr zOmarbaAocK3eXa1!y!SGy%MUgpu&_#NVbqAEd^++>)C7Aj;ulWkTopn9TiYXP?%7` zQ?+Huz6)Bz$dt4^G*QWPF@{SCN#-UT-fcst=Y8GWpOUx6czPnQw6QNGr)wFC=9_uW zARw6{w0TUUmyZH`-Rz_NWc1WRDeViUbYM!aFg~uuLGFa?1Md=vu^J>C0zxFhrt zl$o;}u$RY7r&KIjHb@vBHEh>2U%^}PbPx7D)-za(q5?InyF9ByBD6CHaddoX&LU}; zuc~ZlC11NN3i;S)YJgb+)SfI560uDes>#s6!CUxI%h$x(AD#KZU+(;mJsl!VlpZz# zyQCmvL5-+H!AMY#IzJpscmgl0O_UL!mIr$dHjWqcf@M#jv~%ccI(D8^DVx=8@L52P zJ9)+i-NOz0v?DzgU-_NT8~u663vmj7oV=sH2Yw0Qxle!rfl~ z(e(m$#FWl8F1+|iU;hz~M6e(jbRyG>>I@S3?68m#?i9hR0VG9@j4e>;%g*liq>eH0 z54e?8y$=UOY1uQ8v&WA0bw?PssQ)kg|M*e+SK(G(N6 zZL6T9GAR3L{iF;-GHl>ip1nA8KC+bQU1=u2DY@G1^!7q|GZN2l*#a?5Wb1O z1K%GNc?rHw!8b606G8?Mfu0a6syawa^mq!ErSc;VC?;lsK66R8pq3>m!hs;@k>DV> zJDTftUK{-j$xsq1(74cwVE#GujS<}?tpIJoOC~yoC~Y;iXgffPekOV};Bd2Uu@l55 z$nlp_$=JQH`vtv-Q!2_AhkcL4!-F2PEsQ7C2+HU&PZ`aVJA%Dg_j+?ps+2wtGfI;j z&Z9v^+yIZ-zhnYu(mAX$Bf0iRFz^mtD{bX#V$qUU#bj-57zYqS;hDM)Lt3txAjZAu zY%s?v*`R=Is|4JX*7{gKdS3lZS=Wk1WWqX1(+%1P8eZteDwT;fX>pj)!_cS5f}!4) z`L%Q!c{gfUdEx#T`Mf?14mzb;#69wgswi-6&2+HbzHZOKYv$*FFq;X ze<;JhuZjOtb{lKB?JFw(U;mB_&&Y6GhNcWNGJJf+LQYgld08v?!p{mO^ZVT_pDn@8 ztkZa%gY8o$GoxpMYn+)S`o)k=p_{jDBjAB`&?YG^f0OyB`ULu z>OO0XEAh=kH*Z!jN5LabDR;tgZPFhVIFj;=ZVT;(?sJug=s6+6BpPmn`P19jQG4PR zw-PfsG*?(dC#6bSw^bBWh305`*t6>M{fDRib)4}3K^bHqdCYNG^teJQ`;Vkp)rO}9934Xld#v-D+^y%9st|y4_V)<{RK7is%BzE z|G6sr<9}cJXyIF<9}k||@Tx7sxBp;qxF0{WINXo(3*eXapZUf7=`$y)-xtFF*5_;T zb+hWHtR%_r^GMG{dN9(HDOW$y@d}bJ!260I`{eoL`Q-T+AFDj~bMdRLD5J!hAzM=P zMmZvVTE44ZxLby|%dkm?chwZJOyavF-y4`3}#*#)Orn!FZ~~zRQmozqLa7o??1Mc?}_Y+ zM0rQFqdmH-eJ5`n1fTo>jCv_P+!5W%Sj5SJJM3yH7IF1)mqiR**ebFJINN$;*epd- zB_p2+8yQA#InBwjNM^!xCJG{SZ5FZhyoN9E%fh(ZyKekUq+Mbx9BcU2e&`C$C{F<$ePFY}i#OFvVF z?7#x$W0<`q{}*ey