From 2b300e45b00e02c54b244be1a2b1269666451711 Mon Sep 17 00:00:00 2001 From: Marco Cawthorne Date: Sat, 22 Jun 2024 00:29:51 -0700 Subject: [PATCH] Move platform files over, rebuild weapons against Nuclide --- PROJECT | 1 + README.md | 5 +- engine.h | 251 +++ manifest.fmf | 19 - src/Makefile | 4 +- .../HLWeaponSelect.qc} | 54 +- src/client/Makefile | 4 +- src/client/cmds.qc | 3 + src/client/defs.h | 5 +- src/client/entities.qc | 12 +- src/client/hud.qc | 27 +- src/client/hud_ammonotify.qc | 36 +- src/client/hud_itemnotify.qc | 4 +- src/client/hud_sprite.h | 19 + src/client/hud_sprite.qc | 147 +- src/client/hud_weaponselect.qc | 188 +- src/client/init.qc | 3 + src/client/obituary.qc | 6 + src/client/progs.src | 2 +- src/client/scoreboard.qc | 8 +- src/menu/Makefile | 4 +- src/menu/progs.src | 2 +- src/server/Makefile | 4 +- src/server/flashlight.qc | 2 +- src/server/gamerules.h | 1 - src/server/gamerules.qc | 24 +- src/server/gamerules_multiplayer.qc | 31 +- src/server/gamerules_singleplayer.qc | 14 +- src/server/items.h | 2 + src/server/player.qc | 13 - src/server/progs.src | 19 +- src/server/server.qc | 1 - src/server/xen_hair.qc | 3 +- src/server/xen_plantlight.qc | 3 +- src/server/xen_spore_large.qc | 3 +- src/server/xen_spore_medium.qc | 3 +- src/server/xen_spore_small.qc | 3 +- src/shared/HLGaussBeam.qc | 88 + src/shared/HLWeapon.qc | 217 +++ src/shared/animations.h | 3 - src/shared/animations.qc | 20 +- src/shared/fx_corpse.qc | 4 +- src/shared/include.src | 23 +- src/shared/player.qc | 349 +--- src/shared/pmove.qc | 19 +- src/shared/w_crossbow.qc | 16 +- src/shared/w_crowbar.qc | 23 +- src/shared/w_egon.qc | 2 +- src/shared/w_gauss.qc | 6 +- src/shared/w_glock.qc | 6 +- src/shared/w_handgrenade.qc | 4 +- src/shared/w_hornetgun.qc | 6 +- src/shared/w_mp5.qc | 418 ---- src/shared/w_python.qc | 4 +- src/shared/w_rpg.qc | 12 +- src/shared/w_satchel.qc | 6 +- src/shared/w_shotgun.qc | 6 +- src/shared/w_snark.qc | 4 +- src/shared/w_tripmine.qc | 438 ++--- src/shared/weapon_common.h | 99 - src/shared/weapon_common.qc | 480 ----- zpak001.pk3dir/PAK_NAME | 1 + zpak001.pk3dir/cfg/skill.cfg | 9 +- zpak001.pk3dir/csprogs.dat | Bin 0 -> 942058 bytes zpak001.pk3dir/csprogs.lno | Bin 0 -> 206988 bytes zpak001.pk3dir/cvar_defaults.cfg | 163 ++ zpak001.pk3dir/def/ammo.def | 59 + zpak001.pk3dir/def/ammo/357.def | 6 + zpak001.pk3dir/def/ammo/9mmAR.def | 6 + zpak001.pk3dir/def/ammo/9mmbox.def | 6 + zpak001.pk3dir/def/ammo/9mmclip.def | 6 + zpak001.pk3dir/def/ammo/ARgrenades.def | 6 + zpak001.pk3dir/def/ammo/base.def | 8 + zpak001.pk3dir/def/ammo/buckshot.def | 6 + zpak001.pk3dir/def/ammo/crossbow.def | 6 + zpak001.pk3dir/def/ammo/gaussclip.def | 6 + zpak001.pk3dir/def/ammo/rpgclip.def | 6 + zpak001.pk3dir/def/items.def | 33 + zpak001.pk3dir/def/monsters.def | 71 +- zpak001.pk3dir/def/monsters/miniturret.def | 18 +- zpak001.pk3dir/def/monsters/scientist.def | 1 - zpak001.pk3dir/def/monsters/snark.def | 30 + zpak001.pk3dir/def/monsters/tripmine.def | 5 + zpak001.pk3dir/def/player.def | 4 + zpak001.pk3dir/def/projectiles.def | 15 + zpak001.pk3dir/def/spawns.def | 26 + zpak001.pk3dir/def/weapons.def | 28 +- zpak001.pk3dir/def/weapons/357.def | 61 +- zpak001.pk3dir/def/weapons/9mmAR.def | 110 +- zpak001.pk3dir/def/weapons/9mmhandgun.def | 80 +- zpak001.pk3dir/def/weapons/crossbow.def | 79 +- zpak001.pk3dir/def/weapons/crowbar.def | 62 +- zpak001.pk3dir/def/weapons/egon.def | 49 +- zpak001.pk3dir/def/weapons/gauss.def | 76 +- zpak001.pk3dir/def/weapons/handgrenade.def | 62 +- zpak001.pk3dir/def/weapons/hornetgun.def | 57 +- zpak001.pk3dir/def/weapons/rpg.def | 78 +- zpak001.pk3dir/def/weapons/satchel.def | 46 +- zpak001.pk3dir/def/weapons/shotgun.def | 126 +- zpak001.pk3dir/def/weapons/snark.def | 50 +- zpak001.pk3dir/def/weapons/tripmine.def | 40 +- zpak001.pk3dir/default.cfg | 104 +- zpak001.pk3dir/efx/gs_big1.efx | 23 + zpak001.pk3dir/efx/gs_big2.efx | 23 + zpak001.pk3dir/efx/gs_big3.efx | 23 + zpak001.pk3dir/efx/gs_bright_l.efx | 23 + zpak001.pk3dir/efx/gs_bright_m.efx | 23 + zpak001.pk3dir/efx/gs_bright_s.efx | 23 + zpak001.pk3dir/efx/gs_cavern_l.efx | 23 + zpak001.pk3dir/efx/gs_cavern_m.efx | 23 + zpak001.pk3dir/efx/gs_cavern_s.efx | 23 + zpak001.pk3dir/efx/gs_chamber_l.efx | 23 + zpak001.pk3dir/efx/gs_chamber_m.efx | 23 + zpak001.pk3dir/efx/gs_chamber_s.efx | 23 + zpak001.pk3dir/efx/gs_concrete_l.efx | 23 + zpak001.pk3dir/efx/gs_concrete_m.efx | 23 + zpak001.pk3dir/efx/gs_concrete_s.efx | 23 + zpak001.pk3dir/efx/gs_generic.efx | 0 zpak001.pk3dir/efx/gs_metal_l.efx | 23 + zpak001.pk3dir/efx/gs_metal_m.efx | 23 + zpak001.pk3dir/efx/gs_metal_s.efx | 23 + zpak001.pk3dir/efx/gs_tunnel_l.efx | 23 + zpak001.pk3dir/efx/gs_tunnel_m.efx | 23 + zpak001.pk3dir/efx/gs_tunnel_s.efx | 23 + zpak001.pk3dir/efx/gs_water1.efx | 23 + zpak001.pk3dir/efx/gs_water2.efx | 23 + zpak001.pk3dir/efx/gs_water3.efx | 23 + zpak001.pk3dir/efx/gs_weirdo1.efx | 23 + zpak001.pk3dir/efx/gs_weirdo2.efx | 23 + zpak001.pk3dir/efx/gs_weirdo3.efx | 23 + zpak001.pk3dir/eukara.cfg | 84 + zpak001.pk3dir/fonts/OFL.txt | 93 + zpak001.pk3dir/fonts/README.txt | 81 + ...botoCondensed-Italic-VariableFont_wght.ttf | Bin 0 -> 387312 bytes .../fonts/RobotoCondensed-Medium.ttf | Bin 0 -> 144888 bytes .../fonts/RobotoCondensed-Regular.ttf | Bin 0 -> 144852 bytes .../RobotoCondensed-VariableFont_wght.ttf | Bin 0 -> 370940 bytes zpak001.pk3dir/fonts/Roboto_Condensed.zip | Bin 0 -> 3437594 bytes zpak001.pk3dir/fonts/SairaCondensed-Black.ttf | Bin 0 -> 89236 bytes zpak001.pk3dir/fonts/SairaCondensed-Bold.ttf | Bin 0 -> 88716 bytes .../fonts/SairaCondensed-ExtraBold.ttf | Bin 0 -> 88856 bytes .../fonts/SairaCondensed-ExtraLight.ttf | Bin 0 -> 86192 bytes zpak001.pk3dir/fonts/SairaCondensed-Light.ttf | Bin 0 -> 88400 bytes .../fonts/SairaCondensed-Medium.ttf | Bin 0 -> 88992 bytes .../fonts/SairaCondensed-Regular.ttf | Bin 0 -> 87848 bytes .../fonts/SairaCondensed-SemiBold.ttf | Bin 0 -> 88140 bytes zpak001.pk3dir/fonts/SairaCondensed-Thin.ttf | Bin 0 -> 85908 bytes zpak001.pk3dir/fonts/Saira_Condensed.zip | Bin 0 -> 798063 bytes zpak001.pk3dir/fonts/Share-TechMono.otf | Bin 0 -> 16840 bytes zpak001.pk3dir/fonts/Share-TechMono.ttf | Bin 0 -> 58548 bytes zpak001.pk3dir/fonts/Unispace Bd It.otf | Bin 0 -> 24396 bytes zpak001.pk3dir/fonts/Unispace Bd.otf | Bin 0 -> 22412 bytes zpak001.pk3dir/fonts/Unispace It.otf | Bin 0 -> 24652 bytes zpak001.pk3dir/fonts/Unispace Rg.otf | Bin 0 -> 22360 bytes .../fonts/arial-condensed-bold-regular.zip | Bin 0 -> 49828 bytes zpak001.pk3dir/fonts/arial_condensed_bold.ttf | Bin 0 -> 78640 bytes .../hg/HGSoeiKakugothicUB Ultra-Bold.ttf | Bin 0 -> 1620232 bytes .../fonts/ibm/IBMPlexSansCondensed-Bold.otf | Bin 0 -> 70012 bytes .../ibm/IBMPlexSansCondensed-BoldItalic.otf | Bin 0 -> 73156 bytes .../ibm/IBMPlexSansCondensed-ExtraLight.otf | Bin 0 -> 69920 bytes .../IBMPlexSansCondensed-ExtraLightItalic.otf | Bin 0 -> 72444 bytes .../fonts/ibm/IBMPlexSansCondensed-Italic.otf | Bin 0 -> 72564 bytes .../fonts/ibm/IBMPlexSansCondensed-Light.otf | Bin 0 -> 70612 bytes .../ibm/IBMPlexSansCondensed-LightItalic.otf | Bin 0 -> 72584 bytes .../fonts/ibm/IBMPlexSansCondensed-Medium.otf | Bin 0 -> 70168 bytes .../ibm/IBMPlexSansCondensed-MediumItalic.otf | Bin 0 -> 75260 bytes .../ibm/IBMPlexSansCondensed-Regular.otf | Bin 0 -> 69424 bytes .../ibm/IBMPlexSansCondensed-SemiBold.otf | Bin 0 -> 71124 bytes .../IBMPlexSansCondensed-SemiBoldItalic.otf | Bin 0 -> 75236 bytes .../fonts/ibm/IBMPlexSansCondensed-Text.otf | Bin 0 -> 70144 bytes .../ibm/IBMPlexSansCondensed-TextItalic.otf | Bin 0 -> 73928 bytes .../fonts/ibm/IBMPlexSansCondensed-Thin.otf | Bin 0 -> 68128 bytes .../ibm/IBMPlexSansCondensed-ThinItalic.otf | Bin 0 -> 71316 bytes zpak001.pk3dir/fonts/ibm/LICENSE.txt | 93 + zpak001.pk3dir/fonts/menu_header.font | 3 + zpak001.pk3dir/fonts/menu_label.font | 2 + zpak001.pk3dir/fonts/menu_label_bold.font | 2 + zpak001.pk3dir/fonts/menu_main.font | 3 + .../fonts/nimbus/NimbusSanL-Bol.otf | Bin 0 -> 72712 bytes .../fonts/nimbus/NimbusSanL-BolIta.otf | Bin 0 -> 77360 bytes .../fonts/nimbus/NimbusSanL-Reg.otf | Bin 0 -> 71196 bytes .../fonts/nimbus/NimbusSanL-RegIta.otf | Bin 0 -> 77288 bytes zpak001.pk3dir/fonts/nimbus/NumbusSanL.txt | 340 ++++ .../fonts/static/RobotoCondensed-Black.ttf | Bin 0 -> 146116 bytes .../static/RobotoCondensed-BlackItalic.ttf | Bin 0 -> 152340 bytes .../fonts/static/RobotoCondensed-Bold.ttf | Bin 0 -> 145532 bytes .../static/RobotoCondensed-BoldItalic.ttf | Bin 0 -> 151612 bytes .../static/RobotoCondensed-ExtraBold.ttf | Bin 0 -> 145776 bytes .../RobotoCondensed-ExtraBoldItalic.ttf | Bin 0 -> 151976 bytes .../static/RobotoCondensed-ExtraLight.ttf | Bin 0 -> 144984 bytes .../RobotoCondensed-ExtraLightItalic.ttf | Bin 0 -> 150788 bytes .../fonts/static/RobotoCondensed-Italic.ttf | Bin 0 -> 150896 bytes .../fonts/static/RobotoCondensed-Light.ttf | Bin 0 -> 144940 bytes .../static/RobotoCondensed-LightItalic.ttf | Bin 0 -> 151064 bytes .../fonts/static/RobotoCondensed-Medium.ttf | Bin 0 -> 144888 bytes .../static/RobotoCondensed-MediumItalic.ttf | Bin 0 -> 151084 bytes .../fonts/static/RobotoCondensed-SemiBold.ttf | Bin 0 -> 145484 bytes .../static/RobotoCondensed-SemiBoldItalic.ttf | Bin 0 -> 151316 bytes .../fonts/static/RobotoCondensed-Thin.ttf | Bin 0 -> 144912 bytes .../static/RobotoCondensed-ThinItalic.ttf | Bin 0 -> 150268 bytes zpak001.pk3dir/gfx/blue_default.png | Bin 0 -> 347 bytes zpak001.pk3dir/gfx/console1.tga | Bin 0 -> 12580 bytes zpak001.pk3dir/gfx/console2.tga | Bin 0 -> 55741 bytes zpak001.pk3dir/gfx/devcon.mat | 17 + zpak001.pk3dir/glsl/default2d.glsl | 29 + .../glsl/defaultadditivesprite.glsl | 27 + zpak001.pk3dir/glsl/defaultfill.glsl | 20 + zpak001.pk3dir/glsl/defaultskin.glsl | 339 ++++ zpak001.pk3dir/glsl/defaultskybox.glsl | 30 + zpak001.pk3dir/glsl/defaultsprite.glsl | 74 + zpak001.pk3dir/glsl/defaultwall.glsl | 225 +++ zpak001.pk3dir/glsl/defaultwarp.glsl | 146 ++ zpak001.pk3dir/menu.dat.default.po | 1693 +++++++++++++++++ zpak001.pk3dir/particles/weapon_egon.cfg | 20 +- zpak001.pk3dir/scripts/achievements.txt | 9 + zpak001.pk3dir/scripts/drawdebug.shader | 22 + zpak001.pk3dir/scripts/drawportal.shader | 15 + zpak001.pk3dir/scripts/maptweaks.txt | 30 + zpak001.pk3dir/sound/items_valve.sndshd | 5 + zpak001.pk3dir/sound/weapons_valve.sndshd | 12 + 220 files changed, 6517 insertions(+), 2306 deletions(-) create mode 100644 PROJECT create mode 100644 engine.h delete mode 100644 manifest.fmf rename src/{server/modelevent.qc => client/HLWeaponSelect.qc} (56%) create mode 100644 src/client/hud_sprite.h create mode 100644 src/shared/HLGaussBeam.qc create mode 100644 src/shared/HLWeapon.qc delete mode 100644 src/shared/w_mp5.qc delete mode 100644 src/shared/weapon_common.h delete mode 100644 src/shared/weapon_common.qc create mode 100644 zpak001.pk3dir/PAK_NAME create mode 100644 zpak001.pk3dir/csprogs.dat create mode 100644 zpak001.pk3dir/csprogs.lno create mode 100644 zpak001.pk3dir/cvar_defaults.cfg create mode 100644 zpak001.pk3dir/def/ammo.def create mode 100644 zpak001.pk3dir/def/ammo/357.def create mode 100644 zpak001.pk3dir/def/ammo/9mmAR.def create mode 100644 zpak001.pk3dir/def/ammo/9mmbox.def create mode 100644 zpak001.pk3dir/def/ammo/9mmclip.def create mode 100644 zpak001.pk3dir/def/ammo/ARgrenades.def create mode 100644 zpak001.pk3dir/def/ammo/base.def create mode 100644 zpak001.pk3dir/def/ammo/buckshot.def create mode 100644 zpak001.pk3dir/def/ammo/crossbow.def create mode 100644 zpak001.pk3dir/def/ammo/gaussclip.def create mode 100644 zpak001.pk3dir/def/ammo/rpgclip.def create mode 100644 zpak001.pk3dir/def/items.def create mode 100644 zpak001.pk3dir/def/monsters/snark.def create mode 100644 zpak001.pk3dir/def/monsters/tripmine.def create mode 100644 zpak001.pk3dir/def/player.def create mode 100644 zpak001.pk3dir/def/projectiles.def create mode 100644 zpak001.pk3dir/def/spawns.def create mode 100644 zpak001.pk3dir/efx/gs_big1.efx create mode 100644 zpak001.pk3dir/efx/gs_big2.efx create mode 100644 zpak001.pk3dir/efx/gs_big3.efx create mode 100644 zpak001.pk3dir/efx/gs_bright_l.efx create mode 100644 zpak001.pk3dir/efx/gs_bright_m.efx create mode 100644 zpak001.pk3dir/efx/gs_bright_s.efx create mode 100644 zpak001.pk3dir/efx/gs_cavern_l.efx create mode 100644 zpak001.pk3dir/efx/gs_cavern_m.efx create mode 100644 zpak001.pk3dir/efx/gs_cavern_s.efx create mode 100644 zpak001.pk3dir/efx/gs_chamber_l.efx create mode 100644 zpak001.pk3dir/efx/gs_chamber_m.efx create mode 100644 zpak001.pk3dir/efx/gs_chamber_s.efx create mode 100644 zpak001.pk3dir/efx/gs_concrete_l.efx create mode 100644 zpak001.pk3dir/efx/gs_concrete_m.efx create mode 100644 zpak001.pk3dir/efx/gs_concrete_s.efx create mode 100644 zpak001.pk3dir/efx/gs_generic.efx create mode 100644 zpak001.pk3dir/efx/gs_metal_l.efx create mode 100644 zpak001.pk3dir/efx/gs_metal_m.efx create mode 100644 zpak001.pk3dir/efx/gs_metal_s.efx create mode 100644 zpak001.pk3dir/efx/gs_tunnel_l.efx create mode 100644 zpak001.pk3dir/efx/gs_tunnel_m.efx create mode 100644 zpak001.pk3dir/efx/gs_tunnel_s.efx create mode 100644 zpak001.pk3dir/efx/gs_water1.efx create mode 100644 zpak001.pk3dir/efx/gs_water2.efx create mode 100644 zpak001.pk3dir/efx/gs_water3.efx create mode 100644 zpak001.pk3dir/efx/gs_weirdo1.efx create mode 100644 zpak001.pk3dir/efx/gs_weirdo2.efx create mode 100644 zpak001.pk3dir/efx/gs_weirdo3.efx create mode 100644 zpak001.pk3dir/eukara.cfg create mode 100644 zpak001.pk3dir/fonts/OFL.txt create mode 100644 zpak001.pk3dir/fonts/README.txt create mode 100644 zpak001.pk3dir/fonts/RobotoCondensed-Italic-VariableFont_wght.ttf create mode 100644 zpak001.pk3dir/fonts/RobotoCondensed-Medium.ttf create mode 100644 zpak001.pk3dir/fonts/RobotoCondensed-Regular.ttf create mode 100644 zpak001.pk3dir/fonts/RobotoCondensed-VariableFont_wght.ttf create mode 100644 zpak001.pk3dir/fonts/Roboto_Condensed.zip create mode 100644 zpak001.pk3dir/fonts/SairaCondensed-Black.ttf create mode 100644 zpak001.pk3dir/fonts/SairaCondensed-Bold.ttf create mode 100644 zpak001.pk3dir/fonts/SairaCondensed-ExtraBold.ttf create mode 100644 zpak001.pk3dir/fonts/SairaCondensed-ExtraLight.ttf create mode 100644 zpak001.pk3dir/fonts/SairaCondensed-Light.ttf create mode 100644 zpak001.pk3dir/fonts/SairaCondensed-Medium.ttf create mode 100644 zpak001.pk3dir/fonts/SairaCondensed-Regular.ttf create mode 100644 zpak001.pk3dir/fonts/SairaCondensed-SemiBold.ttf create mode 100644 zpak001.pk3dir/fonts/SairaCondensed-Thin.ttf create mode 100644 zpak001.pk3dir/fonts/Saira_Condensed.zip create mode 100644 zpak001.pk3dir/fonts/Share-TechMono.otf create mode 100644 zpak001.pk3dir/fonts/Share-TechMono.ttf create mode 100644 zpak001.pk3dir/fonts/Unispace Bd It.otf create mode 100644 zpak001.pk3dir/fonts/Unispace Bd.otf create mode 100644 zpak001.pk3dir/fonts/Unispace It.otf create mode 100644 zpak001.pk3dir/fonts/Unispace Rg.otf create mode 100644 zpak001.pk3dir/fonts/arial-condensed-bold-regular.zip create mode 100644 zpak001.pk3dir/fonts/arial_condensed_bold.ttf create mode 100644 zpak001.pk3dir/fonts/hg/HGSoeiKakugothicUB Ultra-Bold.ttf create mode 100644 zpak001.pk3dir/fonts/ibm/IBMPlexSansCondensed-Bold.otf create mode 100644 zpak001.pk3dir/fonts/ibm/IBMPlexSansCondensed-BoldItalic.otf create mode 100644 zpak001.pk3dir/fonts/ibm/IBMPlexSansCondensed-ExtraLight.otf create mode 100644 zpak001.pk3dir/fonts/ibm/IBMPlexSansCondensed-ExtraLightItalic.otf create mode 100644 zpak001.pk3dir/fonts/ibm/IBMPlexSansCondensed-Italic.otf create mode 100644 zpak001.pk3dir/fonts/ibm/IBMPlexSansCondensed-Light.otf create mode 100644 zpak001.pk3dir/fonts/ibm/IBMPlexSansCondensed-LightItalic.otf create mode 100644 zpak001.pk3dir/fonts/ibm/IBMPlexSansCondensed-Medium.otf create mode 100644 zpak001.pk3dir/fonts/ibm/IBMPlexSansCondensed-MediumItalic.otf create mode 100644 zpak001.pk3dir/fonts/ibm/IBMPlexSansCondensed-Regular.otf create mode 100644 zpak001.pk3dir/fonts/ibm/IBMPlexSansCondensed-SemiBold.otf create mode 100644 zpak001.pk3dir/fonts/ibm/IBMPlexSansCondensed-SemiBoldItalic.otf create mode 100644 zpak001.pk3dir/fonts/ibm/IBMPlexSansCondensed-Text.otf create mode 100644 zpak001.pk3dir/fonts/ibm/IBMPlexSansCondensed-TextItalic.otf create mode 100644 zpak001.pk3dir/fonts/ibm/IBMPlexSansCondensed-Thin.otf create mode 100644 zpak001.pk3dir/fonts/ibm/IBMPlexSansCondensed-ThinItalic.otf create mode 100644 zpak001.pk3dir/fonts/ibm/LICENSE.txt create mode 100644 zpak001.pk3dir/fonts/menu_header.font create mode 100644 zpak001.pk3dir/fonts/menu_label.font create mode 100644 zpak001.pk3dir/fonts/menu_label_bold.font create mode 100644 zpak001.pk3dir/fonts/menu_main.font create mode 100644 zpak001.pk3dir/fonts/nimbus/NimbusSanL-Bol.otf create mode 100644 zpak001.pk3dir/fonts/nimbus/NimbusSanL-BolIta.otf create mode 100644 zpak001.pk3dir/fonts/nimbus/NimbusSanL-Reg.otf create mode 100644 zpak001.pk3dir/fonts/nimbus/NimbusSanL-RegIta.otf create mode 100644 zpak001.pk3dir/fonts/nimbus/NumbusSanL.txt create mode 100644 zpak001.pk3dir/fonts/static/RobotoCondensed-Black.ttf create mode 100644 zpak001.pk3dir/fonts/static/RobotoCondensed-BlackItalic.ttf create mode 100644 zpak001.pk3dir/fonts/static/RobotoCondensed-Bold.ttf create mode 100644 zpak001.pk3dir/fonts/static/RobotoCondensed-BoldItalic.ttf create mode 100644 zpak001.pk3dir/fonts/static/RobotoCondensed-ExtraBold.ttf create mode 100644 zpak001.pk3dir/fonts/static/RobotoCondensed-ExtraBoldItalic.ttf create mode 100644 zpak001.pk3dir/fonts/static/RobotoCondensed-ExtraLight.ttf create mode 100644 zpak001.pk3dir/fonts/static/RobotoCondensed-ExtraLightItalic.ttf create mode 100644 zpak001.pk3dir/fonts/static/RobotoCondensed-Italic.ttf create mode 100644 zpak001.pk3dir/fonts/static/RobotoCondensed-Light.ttf create mode 100644 zpak001.pk3dir/fonts/static/RobotoCondensed-LightItalic.ttf create mode 100644 zpak001.pk3dir/fonts/static/RobotoCondensed-Medium.ttf create mode 100644 zpak001.pk3dir/fonts/static/RobotoCondensed-MediumItalic.ttf create mode 100644 zpak001.pk3dir/fonts/static/RobotoCondensed-SemiBold.ttf create mode 100644 zpak001.pk3dir/fonts/static/RobotoCondensed-SemiBoldItalic.ttf create mode 100644 zpak001.pk3dir/fonts/static/RobotoCondensed-Thin.ttf create mode 100644 zpak001.pk3dir/fonts/static/RobotoCondensed-ThinItalic.ttf create mode 100755 zpak001.pk3dir/gfx/blue_default.png create mode 100644 zpak001.pk3dir/gfx/console1.tga create mode 100644 zpak001.pk3dir/gfx/console2.tga create mode 100644 zpak001.pk3dir/gfx/devcon.mat create mode 100644 zpak001.pk3dir/glsl/default2d.glsl create mode 100644 zpak001.pk3dir/glsl/defaultadditivesprite.glsl create mode 100644 zpak001.pk3dir/glsl/defaultfill.glsl create mode 100644 zpak001.pk3dir/glsl/defaultskin.glsl create mode 100644 zpak001.pk3dir/glsl/defaultskybox.glsl create mode 100644 zpak001.pk3dir/glsl/defaultsprite.glsl create mode 100644 zpak001.pk3dir/glsl/defaultwall.glsl create mode 100644 zpak001.pk3dir/glsl/defaultwarp.glsl create mode 100644 zpak001.pk3dir/menu.dat.default.po create mode 100644 zpak001.pk3dir/scripts/achievements.txt create mode 100644 zpak001.pk3dir/scripts/drawdebug.shader create mode 100644 zpak001.pk3dir/scripts/drawportal.shader create mode 100644 zpak001.pk3dir/scripts/maptweaks.txt diff --git a/PROJECT b/PROJECT new file mode 100644 index 0000000..97d4b9d --- /dev/null +++ b/PROJECT @@ -0,0 +1 @@ +RadTherapy \ No newline at end of file diff --git a/README.md b/README.md index 1229163..950c95e 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,6 @@ -# FreeHL -Clean-room reimplementation of Half-Life: Deathmatch and Half-Life (Experimental, this means Singleplayer is NOT complete). +# Rad-Therapy (FreeHL) + +Clean-room reimplementation of Valve Corporation's Half-Life: Deathmatch and Half-Life (Experimental, this means Singleplayer is NOT complete). Similar to FreeCS, this aims to recreate the feeling of the original game. It's designed to work with the content from the CD version of the game. diff --git a/engine.h b/engine.h new file mode 100644 index 0000000..7353663 --- /dev/null +++ b/engine.h @@ -0,0 +1,251 @@ +/*** +* +* Copyright (c) 2000-2022, Vera Visions. All rights reserved. +* +****/ + +#define FULLENGINENAME "Rad-Therapy" +#define GAME_SHORTNAME "HL" +#define GAME_BASEGAMES "valve" +#define GAME_PROTOCOL "FTE-HalfLife" + +#define BRANDING_ICON "freecs.ico" +#define DISTRIBUTION "FHL" +#define DISTRIBUTIONLONG "eukara" +#define GAME_FULLNAME FULLENGINENAME +#define GAME_DEFAULTPORT 23000 +#define ENGINEWEBSITE "https://www.frag-net.com/" + +#ifndef GLQUAKE +#define GLQUAKE +#endif + +/* +#ifndef VKQUAKE +#define VKQUAKE +#endif +*/ +#undef VKQUAKE /* not yet, needs more testing */ + + /* disable quake specific hacks and overrides */ +#define QUAKETC +#define NOBUILTINMENUS +#define NOLEGACY + +/* engine behaviour */ +#define PLUGINS /* enables fteplug_ files */ +#define AVAIL_ZLIB /* we need this for pk3 and ogg vorbis */ +#define CL_MASTER /* allows for serverbrowser builtins */ +#define CSQC_DAT /* clientside qcvm */ +#define MENU_DAT /* persistent qcvm */ +#define PSET_SCRIPT /* scripts defining particles */ +#define LOADERTHREAD /* multithreading related */ +#define USEAREAGRID /* leave it on, improves performance */ +#define AVAIL_DINPUT /* input for Windows */ +#define AVAIL_FREETYPE /* for truetype font rendering */ +#define AVAIL_STBI /* avoid libpng/libjpeg dependancies */ +#define ENGINE_ROUTING /* engine-side, fast routing */ + +#ifndef LEGACY_GPU + #define RTLIGHTS +#else + #undef RTLIGHTS +#endif + +#undef D3D9QUAKE /* MICROS~1 trash */ +#undef D3D11QUAKE /* MICROS~1 trash */ +#undef D3D8QUAKE /* MICROS~1 trash */ + +/* uncompressed textures */ +#define IMAGEFMT_BMP /* sprays */ +#define IMAGEFMT_TGA + +/* compressed textures */ +#define IMAGEFMT_KTX +#define DECOMPRESS_ETC2 +#define DECOMPRESS_RGTC +#define DECOMPRESS_S3TC + +/* To be able to comm with Frag-Net.com */ +#define HAVE_PACKET +#define SUPPORT_ICE +#define HAVE_TCP +#define HAVE_GNUTLS /* linux tls/dtls support */ +#define HAVE_WINSSPI /* windows tls/dtls support */ +#define WEBCLIENT /* uri_get+any internal downloads etc */ + +#ifndef MULTITHREAD +#define MULTITHREAD +#endif + +#ifndef DEBUG +/* if 2, disables writing fteextensions.qc completely. */ +#define NOQCDESCRIPTIONS 2 +#endif + +/* various package formats */ +#define PACKAGE_PK3 +#define PACKAGE_TEXWAD +#define PACKAGE_Q1PAK + +/* level formats */ +#define Q3BSPS +#define Q1BSPS +#define TERRAIN + +/* audio */ +#undef AVAIL_DSOUND +#define AVAIL_OPENAL +#define AVAIL_OGGVORBIS +#define HAVE_OPUS +#define VOICECHAT + +/* todo: make OpenAL only */ +#define HAVE_MIXER + +/* Model formats, IQM/VVM and HLMDL for legacy maps */ +#define INTERQUAKEMODELS +#define HALFLIFEMODELS + +/* physics */ +#undef USE_INTERNAL_ODE +#undef USE_INTERNAL_BULLET +#define USERBE +#define RAGDOLL + +/* we don't need any of these */ +#undef IMAGEFMT_PCX +#undef PACKAGE_DOOMWAD +#undef DOOMWADS +#undef MAP_PROC +#undef Q2BSPS +#define RFBSPS +#define VERTEXINDEXBYTES 2 //16bit indexes work everywhere but may break some file types, 32bit indexes are optional in gles<=2 and d3d<=9 and take more memory/copying but allow for bigger batches/models. Plugins need to be compiled the same way so this is no longer set per-renderer. +#define SPRMODELS +#undef SP2MODELS +#undef DSPMODELS +#undef MD1MODELS +#undef MD2MODELS +#undef MD3MODELS +#undef MD5MODELS +#undef ZYMOTICMODELS +#undef DPMMODELS +#undef PSKMODELS +#undef MENU_NATIVECODE /* native menu replacing menuQC */ +#undef MVD_RECORDING /* server can record MVDs. */ +#undef AVAIL_WASAPI /* windows advanced sound api */ +//#undef AVAIL_DSOUND /* MICROS~1 trash */ +#undef BOTLIB_STATIC /* q3 botlib */ +#undef AVAIL_XZDEC /* .xz decompression */ +#undef HAVE_SPEEX /* .xz decompression */ +#undef AVAIL_GZDEC /* .gz decompression */ +#undef PACKAGE_DZIP /* .dzip special-case archive support */ +#undef AVAIL_PNGLIB /* .png image format support (read+screenshots) */ +#undef AVAIL_JPEGLIB /* .jpeg image format support (read+screenshots) */ +#undef AVAIL_MP3_ACM /* .mp3 support (in windows). */ +#undef IMAGEFMT_DDS +#undef IMAGEFMT_PKM +#undef IMAGEFMT_BLP +#undef NETPREPARSE /* allows for running both nq+qw on the same server (if not, protocol used must match gamecode) */ +#undef USE_SQLITE /* sql-database-as-file support */ +#undef QUAKESTATS /* defines STAT_HEALTH etc. if omitted, you'll need to provide that functionality yourself */ +#undef QUAKEHUD /* support for drawing the vanilla hud */ +#undef QWSKINS /* disabling this means no qw .pcx skins nor enemy/team skin/colour forcing */ +#undef SVRANKING /* legacy server-side ranking system */ +#define HUFFNETWORK /* crappy network compression. probably needs reseeding */ +#undef SVCHAT /* ancient lame builtin to support NPC-style chat.. */ +#undef VM_Q1 /* q1qvm implementation, to support ktx */ +#undef Q2SERVER /* q2 server+gamecode */ +#undef Q2CLIENT /* q2 client. file formats enabled separately */ +#undef Q3CLIENT /* q3 client stuff */ +#undef Q3SERVER /* q3 server stuff */ +#undef HEXEN2 /* runs hexen2 gamecode, supports hexen2 file formats */ +#undef NQPROT /* act as an nq client/server, with nq gamecode */ +#undef WEBSERVER /* sv_ftp + sv_http cvars */ +#undef RUNTIMELIGHTING /* automatic generation of .lit files */ +#undef R_XFLIP /* old silly thing */ +#undef TEXTEDITOR /* because emacs */ +#undef TCPCONNECT /* support for playing over tcp sockets, instead of just udp. compatible with qizmo */ +#undef IRCCONNECT /* lame support for routing game packets via irc server. not a good idea */ +#undef PSET_CLASSIC /* support the 'classic' particle system, for that classic quake feel */ +#undef HAVE_CDPLAYER /* Redbook CD Audio */ +#undef QTERM +#undef SIDEVIEWS +#undef MAX_SPLITS +#undef SUBSERVERS /* multi-map */ +#undef VM_LUA /* lua game-logic */ +#undef HLCLIENT /* regressed, unfinished*/ +#undef HLSERVER /* regressed, unfinished */ +#undef FTPSERVER +#undef HAVE_JUKEBO /* includes built-in jukebox */ +#define HAVE_MEDIA_DECODER /* can play cin/roq, more with plugins */ +#undef HAVE_MEDIA_ENCODER /* capture/capturedemo work */ +#undef HAVE_SPEECHTOTEXT /* Windows speech-to-text thing */ +#undef SAVEDGAMES +#undef PACKAGEMANAGER /* enable/disable/download packages and plugins */ +#undef HEADLESSQUAKE +#undef WAYLANDQUAKE +#undef SERVER_DEMO_PLAYBACK /* deprecated */ +#undef DECOMPRESS_BPTC +#undef IMAGEFMT_HDR +#undef IMAGEFMT_PBM +#undef IMAGEFMT_PSD +#undef IMAGEFMT_XCF +#undef IMAGEFMT_LMP +#undef IMAGEFMT_PNG +#undef IMAGEFMT_JPG +#undef IMAGEFMT_GIF +#undef IMAGEFMT_EXR +#undef IPLOG +#undef AVAIL_BOTLIB +#undef AVAIL_BZLIB +#undef DECOMPRESS_ASTC +#undef IMAGEFMT_ASTC +#undef HAVE_HTTPSV +#undef MODELFMT_MDX +#undef MODELFMT_OBJ +#undef MODELFMT_GLTF + +#ifdef COMPILE_OPTS +/* things to configure qclib, which annoyingly doesn't include this + * file itself */ +-DOMIT_QCC /* disable the built-in qcc */ +//-DSIMPLE_QCVM /* disable qc debugging and 32bit opcodes */ +#ifndef AVAIL_ZLIB +-DNO_ZLIB /* disable zlib */ +#endif +#ifdef AVAIL_PNGLIB +-DLINK_PNG +#endif +#ifdef AVAIL_JPEGLIB +-DLINK_JPEG +#endif +#ifdef AVAIL_FREETYPE +-DLINK_FREETYPE +#endif + +/* makefile will respond to this by trying to link bullet into the + * engine itself, instead of as a plugin. */ +#ifdef USE_INTERNAL_BULLET +-DLINK_INTERNAL_BULLET +#endif + +#ifdef USE_INTERNAL_ODE +-DODE_STATIC +#endif + +/* disable static speex */ +#ifdef HAVE_SPEEX +-DNO_SPEEX +#endif + +/* disable static botlib */ +#ifndef BOTLIB_STATIC +-DNO_BOTLIB +#endif + +-DLIBVORBISFILE_STATIC + +/* optimise for size instead of speed. less cpu cache needed means that + * its sometimes faster.*/ +#endif diff --git a/manifest.fmf b/manifest.fmf deleted file mode 100644 index c16c646..0000000 --- a/manifest.fmf +++ /dev/null @@ -1,19 +0,0 @@ -FTEMANIFEST 1 -GAME valve -NAME "Half-Life" -BASEGAME platform -BASEGAME valve - -// you don't really want to change these -RTCBROKER master.frag-net.com:27950 -PROTOCOLNAME "FTE-HalfLife" -MAINCONFIG game.cfg -DOWNLOADSURL "http://www.frag-net.com/dl/packages" - --exec platform_default.cfg - -// load ffmpeg for the logo.avi file --plug_load ffmpeg - -// override some liblist.gam entries --set gameinfo_chatroom "halflife" \ No newline at end of file diff --git a/src/Makefile b/src/Makefile index 5e8df06..3580572 100644 --- a/src/Makefile +++ b/src/Makefile @@ -1,6 +1,6 @@ -CC=fteqcc +QCC=fteqcc all: cd client && $(MAKE) cd server && $(MAKE) - cd menu && $(MAKE) + cd menu && $(MAKE) \ No newline at end of file diff --git a/src/server/modelevent.qc b/src/client/HLWeaponSelect.qc similarity index 56% rename from src/server/modelevent.qc rename to src/client/HLWeaponSelect.qc index 1052cff..56cc733 100644 --- a/src/server/modelevent.qc +++ b/src/client/HLWeaponSelect.qc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016-2022 Vera Visions LLC. + * Copyright (c) 2016-2020 Marco Cawthorne * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -12,14 +12,52 @@ * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ + */ + +class +HLWeaponSelect +{ + void HLWeaponSelect(void); + + virtual void Draw(void); + virtual void SelectSlot(bool); + virtual void SelectNext(bool); + virtual void SelectPrevious(bool); + virtual void SelectBest(bool); +}; void -Game_ServerModelEvent(float flTimeStamp, int iCode, string strData) +HLWeaponSelect::HLWeaponSelect(void) { - switch (iCode) { - default: - Event_ServerModelEvent(flTimeStamp, iCode, strData); - break; - } + +} + +void +HLWeaponSelect::Draw(void) +{ + +} + +void +HLWeaponSelect::SelectSlot(bool fastSwitch) +{ + +} + +void +HLWeaponSelect::SelectNext(bool fastSwitch) +{ + +} + +void +HLWeaponSelect::SelectPrevious(bool fastSwitch) +{ + +} + +void +HLWeaponSelect::SelectBest(bool fastSwitch) +{ + } diff --git a/src/client/Makefile b/src/client/Makefile index 627019a..2fe44a4 100644 --- a/src/client/Makefile +++ b/src/client/Makefile @@ -1,4 +1,4 @@ -CC=fteqcc +QCC=fteqcc all: - $(CC) progs.src + $(QCC) progs.src diff --git a/src/client/cmds.qc b/src/client/cmds.qc index af09116..2b3593b 100644 --- a/src/client/cmds.qc +++ b/src/client/cmds.qc @@ -21,6 +21,9 @@ ClientGame_ConsoleCommand(void) case "chooseteam": sendevent("HLDM_Chooseteam", "s", argv(1)); break; + case "hudSort": + HLWeapon_SortWeaponChain((NSClientPlayer)pSeat->m_ePlayer); + break; default: return (0); } diff --git a/src/client/defs.h b/src/client/defs.h index 41cf6b0..dc50a65 100644 --- a/src/client/defs.h +++ b/src/client/defs.h @@ -16,6 +16,7 @@ #include "obituary.h" #include "particles.h" +#include "hud_sprite.h" var int autocvar_cl_autoweaponswitch = TRUE; @@ -65,4 +66,6 @@ void HUD_DrawAmmo1(void); void HUD_DrawAmmo2(void); void HUD_DrawAmmo3(void); void HUD_DrawAmmoBar(vector pos, float val, float max, float a); -void HUD_WeaponPickupNotify(int); \ No newline at end of file +void HUD_WeaponPickupNotify(int); + +NSWeapon HLWeapon_SortWeaponChain(NSClientPlayer targetPlayer); diff --git a/src/client/entities.qc b/src/client/entities.qc index 9632dd3..fc5060e 100644 --- a/src/client/entities.qc +++ b/src/client/entities.qc @@ -19,7 +19,17 @@ ClientGame_EntityUpdate(float id, float new) { switch (id) { case ENT_TRIPMINE: - w_tripmine_parse(); + NSENTITY_READENTITY(HLTripmine, new) + break; + case ENT_WEAPON: + NSENTITY_READENTITY(HLWeapon, new) + break; + case ENT_PLAYER: +#ifndef GEARBOX + NSENTITY_READENTITY(HLPlayer, new) +#else + NSENTITY_READENTITY(OP4Player, new) +#endif break; default: return (0); diff --git a/src/client/hud.qc b/src/client/hud.qc index 31f5938..b1205a4 100644 --- a/src/client/hud.qc +++ b/src/client/hud.qc @@ -138,7 +138,7 @@ void HUD_DrawHealth(void) { vector pos; - player pl = (player)pSeat->m_ePlayer; + NSClientPlayer pl = (NSClientPlayer)pSeat->m_ePlayer; if (pl.health != pSeatLocal->m_iHealthOld) { pSeatLocal->m_flHealthAlpha = 1.0; @@ -185,7 +185,7 @@ void HUD_DrawArmor(void) { vector pos; - player pl = (player)pSeat->m_ePlayer; + NSClientPlayer pl = (NSClientPlayer)pSeat->m_ePlayer; pos = g_hudmins + [198, g_hudres[1] - 42]; @@ -232,7 +232,7 @@ HUD_DrawArmor(void) void HUD_DrawAmmo1(void) { - player pl = (player)pSeat->m_ePlayer; + NSClientPlayer pl = (NSClientPlayer)pSeat->m_ePlayer; vector pos; if (pl.a_ammo1 != pSeatLocal->m_iAmmo1Old) { @@ -255,7 +255,7 @@ HUD_DrawAmmo1(void) void HUD_DrawAmmo2(void) { - player pl = (player)pSeat->m_ePlayer; + NSClientPlayer pl = (NSClientPlayer)pSeat->m_ePlayer; vector pos; if (pl.a_ammo2 != pSeatLocal->m_iAmmo2Old) { @@ -277,7 +277,7 @@ HUD_DrawAmmo2(void) void HUD_DrawAmmo3(void) { - player pl = (player)pSeat->m_ePlayer; + NSClientPlayer pl = (NSClientPlayer)pSeat->m_ePlayer; vector pos; if (pl.a_ammo3 != pSeatLocal->m_iAmmo3Old) { @@ -313,7 +313,7 @@ void HUD_DrawFlashlight(void) { vector pos; - player pl = (player)pSeat->m_ePlayer; + NSClientPlayer pl = (NSClientPlayer)pSeat->m_ePlayer; pos = g_hudmins + [g_hudres[0] - 48, 16]; /* both on, draw both sprites at full intensity */ @@ -389,7 +389,7 @@ HUD_DrawLogo(void) void HUD_DrawNotify(void) { - player pl = (player)self; + NSClientPlayer pl = (NSClientPlayer)self; vector pos; float a; @@ -404,7 +404,7 @@ HUD_DrawNotify(void) a = bound(0.0, pSeatLocal->m_flPickupAlpha, 1.0); pos[1] += 48 * (1.0 - a); - Weapons_HUDPic(pl, pSeatLocal->m_iPickupWeapon, 1, pos, a); + //Weapons_HUDPic(pl, pSeatLocal->m_iPickupWeapon, 1, pos, a); HUD_ItemNotify_Draw(pos); HUD_AmmoNotify_Draw(pos); pSeatLocal->m_flPickupAlpha -= (clframetime * 0.5); @@ -413,6 +413,7 @@ HUD_DrawNotify(void) void HUD_WeaponPickupNotify(int w) { +#if 0 #if defined (VALVE) || defined (GEARBOX) switch (w) { case WEAPON_SNARK: @@ -426,7 +427,7 @@ HUD_WeaponPickupNotify(int w) default: } #endif - +#endif pSeatLocal->m_iPickupWeapon = w; pSeatLocal->m_flPickupAlpha = 2.5f; } @@ -471,7 +472,7 @@ HUD_TimeRemaining(void) void HUD_Draw(void) { - player pl = (player)pSeat->m_ePlayer; + NSClientPlayer pl = (NSClientPlayer)pSeat->m_ePlayer; #ifndef TFC #ifndef GEARBOX @@ -487,7 +488,9 @@ HUD_Draw(void) #endif /* little point in not drawing these, even if you don't have a suit */ - Weapons_DrawCrosshair(pl); + if (pl.m_activeWeapon) + pl.m_activeWeapon.UpdateGUI(); + HUD_DrawDamageIndicator(); HUD_DrawWeaponSelect(); Obituary_Draw(); @@ -495,7 +498,7 @@ HUD_Draw(void) HUD_TimeRemaining(); - if (!(pl.g_items & ITEM_SUIT)) { + if (pl.HasItem("item_suit") == false) { return; } diff --git a/src/client/hud_ammonotify.qc b/src/client/hud_ammonotify.qc index 7870fea..850e256 100644 --- a/src/client/hud_ammonotify.qc +++ b/src/client/hud_ammonotify.qc @@ -98,26 +98,26 @@ HUD_AmmoNotify_Insert(int type, int count) /* called whenever we should check for pickup updates */ void -HUD_AmmoNotify_Check(player pl) +HUD_AmmoNotify_Check(NSClientPlayer pl) { - HUD_AmmoNotify_Insert(0, pl.ammo_9mm - pl.ammo_9mm_net); - HUD_AmmoNotify_Insert(1, pl.ammo_357 - pl.ammo_357_net); - HUD_AmmoNotify_Insert(2, pl.ammo_m203_grenade - pl.ammo_m203_grenade_net); - HUD_AmmoNotify_Insert(3, pl.ammo_buckshot - pl.ammo_buckshot_net); - HUD_AmmoNotify_Insert(4, pl.ammo_bolt - pl.ammo_bolt_net); - HUD_AmmoNotify_Insert(5, pl.ammo_rocket - pl.ammo_rocket_net); - HUD_AmmoNotify_Insert(6, pl.ammo_uranium - pl.ammo_uranium_net); - HUD_AmmoNotify_Insert(7, pl.ammo_hornet - pl.ammo_hornet_net); - HUD_AmmoNotify_Insert(8, pl.ammo_handgrenade - pl.ammo_handgrenade_net); - HUD_AmmoNotify_Insert(9, pl.ammo_satchel - pl.ammo_satchel_net); - HUD_AmmoNotify_Insert(10, pl.ammo_snark - pl.ammo_snark_net); - HUD_AmmoNotify_Insert(11, pl.ammo_tripmine - pl.ammo_tripmine_net); + HUD_AmmoNotify_Insert(0, pl.m_iAmmoTypes[1] - pl.m_iAmmoTypes_net[1]); + HUD_AmmoNotify_Insert(1, pl.m_iAmmoTypes[2] - pl.m_iAmmoTypes_net[2]); + HUD_AmmoNotify_Insert(2, pl.m_iAmmoTypes[12] - pl.m_iAmmoTypes_net[12]); + HUD_AmmoNotify_Insert(3, pl.m_iAmmoTypes[3] - pl.m_iAmmoTypes_net[3]); + HUD_AmmoNotify_Insert(4, pl.m_iAmmoTypes[4] - pl.m_iAmmoTypes_net[4]); + HUD_AmmoNotify_Insert(5, pl.m_iAmmoTypes[5] - pl.m_iAmmoTypes_net[5]); + HUD_AmmoNotify_Insert(6, pl.m_iAmmoTypes[6] - pl.m_iAmmoTypes_net[6]); + HUD_AmmoNotify_Insert(7, pl.m_iAmmoTypes[11] - pl.m_iAmmoTypes_net[11]); + HUD_AmmoNotify_Insert(8, pl.m_iAmmoTypes[7] - pl.m_iAmmoTypes_net[7]); + HUD_AmmoNotify_Insert(9, pl.m_iAmmoTypes[8] - pl.m_iAmmoTypes_net[8]); + HUD_AmmoNotify_Insert(10, pl.m_iAmmoTypes[10] - pl.m_iAmmoTypes_net[10]); + HUD_AmmoNotify_Insert(11, pl.m_iAmmoTypes[9] - pl.m_iAmmoTypes_net[9]); #ifdef GEARBOX - HUD_AmmoNotify_Insert(12, pl.ammo_556 - pl.ammo_556_net); - HUD_AmmoNotify_Insert(13, pl.ammo_762 - pl.ammo_762_net); - HUD_AmmoNotify_Insert(14, pl.ammo_spore - pl.ammo_spore_net); - HUD_AmmoNotify_Insert(15, pl.ammo_shock - pl.ammo_shock_net); - HUD_AmmoNotify_Insert(16, pl.ammo_penguin - pl.ammo_penguin_net); + HUD_AmmoNotify_Insert(12, pl.m_iAmmoTypes[13] - pl.m_iAmmoTypes_net[13]); + HUD_AmmoNotify_Insert(13, pl.m_iAmmoTypes[14] - pl.m_iAmmoTypes_net[14]); + HUD_AmmoNotify_Insert(14, pl.m_iAmmoTypes[15] - pl.m_iAmmoTypes_net[15]); + HUD_AmmoNotify_Insert(15, pl.m_iAmmoTypes[16] - pl.m_iAmmoTypes_net[16]); + HUD_AmmoNotify_Insert(16, pl.m_iAmmoTypes[17] - pl.m_iAmmoTypes_net[17]); #endif } \ No newline at end of file diff --git a/src/client/hud_itemnotify.qc b/src/client/hud_itemnotify.qc index 203365f..b51acb0 100644 --- a/src/client/hud_itemnotify.qc +++ b/src/client/hud_itemnotify.qc @@ -76,8 +76,9 @@ HUD_ItemNotify_Insert(int type, int count) /* called whenever we should check for pickup updates */ void -HUD_ItemNotify_Check(player pl) +HUD_ItemNotify_Check(NSClientPlayer pl) { +#if 0 int healthdiff = (int)bound(0, pl.health - pSeatLocal->m_iHealthOld, 100); int armordiff = (int)bound(0, pl.armor - pSeatLocal->m_iArmorOld, 100); bool ljDiff = ((pl.g_items & ITEM_LONGJUMP) > (pSeatLocal->m_iItemsOld & ITEM_LONGJUMP)) ? true : false; @@ -107,4 +108,5 @@ HUD_ItemNotify_Check(player pl) } pSeatLocal->m_iItemsOld = pl.g_items; +#endif } \ No newline at end of file diff --git a/src/client/hud_sprite.h b/src/client/hud_sprite.h new file mode 100644 index 0000000..e985247 --- /dev/null +++ b/src/client/hud_sprite.h @@ -0,0 +1,19 @@ +typedef struct +{ + string m_strImage; + vector m_vecSize; + vector m_vecCanvasSize; + vector m_vecCanvasPos; +} hlsprite_t; + +void HLSprite_Init(void); + +void HLSprite_Draw_RGBA(string spriteName, vector spritePos, vector spriteColor, float spriteAlpha, bool isAdditive); + +void HLSprite_Draw(string spriteName, vector spritePos, bool isAdditive); + +void HLSprite_Draw_A(string spriteName, vector spritePos, float spriteAlpha, bool isAdditive); + +void HLSprite_Draw_RGB(string spriteName, vector spritePos, vector spriteColor, bool isAdditive); + +void HLSprite_DrawCrosshair(string spriteName); \ No newline at end of file diff --git a/src/client/hud_sprite.qc b/src/client/hud_sprite.qc index 6c35fbb..a7c4ac0 100644 --- a/src/client/hud_sprite.qc +++ b/src/client/hud_sprite.qc @@ -14,35 +14,61 @@ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -typedef struct -{ - string m_strImage; - vector m_vecSize; - vector m_vecCanvasSize; - vector m_vecCanvasPos; -} hlsprite_t; - hlsprite_t *g_hlsprites; var hashtable g_hashhlsprite; +var int g_hlSpriteCount; -void -HLSprite_Init(void) +static int +HLSprite_CountEntriesInFile(string fileName) { - filestream hudFile; - vector imgSize; int spriteCount = 0i; - int i = 0i; - int c = 0i; + filestream hudFile; string line; + int c = 0i; - hudFile = fopen("sprites/hud.txt", FILE_READ); + hudFile = fopen(fileName, FILE_READ); if (hudFile < 0) { - NSError("Missing file sprites/hud.txt"); - return; + NSError("Missing file %S", fileName); + return (-1i); } /* count valid entries */ + while ((line = fgets(hudFile))) { + c = tokenize_console(line); + + if (c != 7) { + continue; + } + + if (argv(1) != "640") { + continue; + } + + spriteCount += 1i; + } + + fclose(hudFile); + + return (spriteCount); +} + +static bool +HLSprite_LoadFromFile(string fileName, string prefix) +{ + filestream hudFile; + int c = 0i; + vector imgSize = g_vec_null; + string line = ""; + string sheetName; + + hudFile = fopen(fileName, FILE_READ); + + if (hudFile < 0) { + NSError("Missing file %S", fileName); + return (false); + } + while ((line = fgets(hudFile))) { c = tokenize_console(line); @@ -52,7 +78,45 @@ HLSprite_Init(void) if (argv(1) != "640") continue; - spriteCount++; + if (prefix != "") + sheetName = strcat(prefix, argv(0)); + else + sheetName = argv(0); + + //printf("%S %S\n", sheetName, prefix); + + g_hlsprites[g_hlSpriteCount].m_strImage = spriteframe(sprintf("sprites/%s.spr", argv(2)), 0, 0.0f); + g_hlsprites[g_hlSpriteCount].m_vecSize[0] = stof(argv(5)); + g_hlsprites[g_hlSpriteCount].m_vecSize[1] = stof(argv(6)); + imgSize = drawgetimagesize(g_hlsprites[g_hlSpriteCount].m_strImage); + g_hlsprites[g_hlSpriteCount].m_vecCanvasPos[0] = stof(argv(3)) / imgSize[0]; + g_hlsprites[g_hlSpriteCount].m_vecCanvasPos[1] = stof(argv(4)) / imgSize[1]; + g_hlsprites[g_hlSpriteCount].m_vecCanvasSize[0] = g_hlsprites[g_hlSpriteCount].m_vecSize[0] / imgSize[0]; + g_hlsprites[g_hlSpriteCount].m_vecCanvasSize[1] = g_hlsprites[g_hlSpriteCount].m_vecSize[1] / imgSize[1]; + hash_add(g_hashhlsprite, sheetName, (int)g_hlSpriteCount); + g_hlSpriteCount += 1i; + } + + fclose(hudFile); + return (true); +} + +void +HLSprite_Init(void) +{ + int spriteCount = 0i; + searchhandle sh; + string hudFile; + string prefix; + + g_hlSpriteCount = 0i; + spriteCount = HLSprite_CountEntriesInFile("sprites/hud.txt"); + + sh = search_begin("sprites/weapon_*.txt", TRUE, TRUE); + + for (int i = 0; i < search_getsize(sh); i++) { + hudFile = search_getfilename(sh, i); + spriteCount += HLSprite_CountEntriesInFile(hudFile); } /* if we couldn't find anything, don't bother */ @@ -64,33 +128,19 @@ HLSprite_Init(void) g_hashhlsprite = hash_createtab(2, HASH_ADD); } - /* to the beginning we go. */ - fseek(hudFile, 0); /* allocate valid entries */ g_hlsprites = memalloc(sizeof(hlsprite_t) * spriteCount); /* read the data into our banks */ - while ((line = fgets(hudFile))) { - c = tokenize_console(line); + HLSprite_LoadFromFile("sprites/hud.txt", ""); - if (c != 7) - continue; - - if (argv(1) != "640") - continue; - - g_hlsprites[i].m_strImage = spriteframe(sprintf("sprites/%s.spr", argv(2)), 0, 0.0f); - g_hlsprites[i].m_vecSize[0] = stof(argv(5)); - g_hlsprites[i].m_vecSize[1] = stof(argv(6)); - imgSize = drawgetimagesize(g_hlsprites[i].m_strImage); - g_hlsprites[i].m_vecCanvasPos[0] = stof(argv(3)) / imgSize[0]; - g_hlsprites[i].m_vecCanvasPos[1] = stof(argv(4)) / imgSize[1]; - g_hlsprites[i].m_vecCanvasSize[0] = g_hlsprites[i].m_vecSize[0] / imgSize[0]; - g_hlsprites[i].m_vecCanvasSize[1] = g_hlsprites[i].m_vecSize[1] / imgSize[1]; - hash_add(g_hashhlsprite, argv(0), (int)i); - i++; + for (int i = 0; i < search_getsize(sh); i++) { + hudFile = search_getfilename(sh, i); + prefix = substring(hudFile, 8, -4); + HLSprite_LoadFromFile(hudFile, prefix); } - + + search_end(sh); NSLog("...initialized %i HL sprites.", spriteCount); } @@ -134,4 +184,23 @@ void HLSprite_Draw_RGB(string spriteName, vector spritePos, vector spriteColor, bool isAdditive) { HLSprite_Draw_RGBA(spriteName, spritePos, spriteColor, 1.0f, isAdditive); +} + +void +HLSprite_DrawCrosshair(string spriteName) +{ + int spriteNum = -1i; + + if (!spriteName) { + return; + } + + spriteNum = (int)hash_get(g_hashhlsprite, spriteName, -1i); + + if (spriteNum == -1i) { + NSError("Cannot draw sprite %S!", spriteName); + return; + } + + Cross_DrawSub(g_hlsprites[spriteNum].m_strImage, g_hlsprites[spriteNum].m_vecSize, g_hlsprites[spriteNum].m_vecCanvasPos, g_hlsprites[spriteNum].m_vecCanvasSize); } \ No newline at end of file diff --git a/src/client/hud_weaponselect.qc b/src/client/hud_weaponselect.qc index 77fde99..826b071 100644 --- a/src/client/hud_weaponselect.qc +++ b/src/client/hud_weaponselect.qc @@ -14,7 +14,80 @@ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -void View_ForceChange(player pl, int targetWeapon); +.NSWeapon m_nextWeapon; +.NSWeapon m_prevWeapon; + +void View_ForceChange(NSClientPlayer pl, int targetWeapon); + +NSWeapon +HLWeapon_SortWeaponChain(NSClientPlayer targetPlayer) +{ + NSWeapon itemChain = targetPlayer.m_itemList; + int heighestSlot = -1i; + int heighestPos = -1i; + NSWeapon firstWeapon, lastWeapon; + + firstWeapon = lastWeapon = __NULL__; + + if (!targetPlayer.m_itemList) { + return __NULL__; + } + + /* first we determine the range of our hud buckets. */ + while (itemChain) { + if (itemChain.IsWeapon() == true) { + int hudSlot = itemChain.GetDefInt("hudSlot"); + int hudPos = itemChain.GetDefInt("hudSlotPos"); + + if (hudSlot > heighestSlot) { + heighestSlot = hudSlot; + } + if (hudPos > heighestPos) { + heighestPos = hudPos; + } + } + + itemChain = itemChain.chain; + } + + for (int hS = 0i; hS <= heighestSlot; hS++) { + for (int hP = 0i; hP <= heighestPos; hP++) { + itemChain = targetPlayer.m_itemList; + + while (itemChain) { + if (itemChain.IsWeapon() == true) { + int hudSlot = itemChain.GetDefInt("hudSlot"); + int hudPos = itemChain.GetDefInt("hudSlotPos"); + + if (hudSlot == hS && hudPos == hP) { + /* first weapon in the chain? */ + if (!lastWeapon) { + firstWeapon = itemChain; + lastWeapon = firstWeapon; + } else { + /* assign this weapon to the last weapon of our chain. */ + lastWeapon.m_nextWeapon = itemChain; + itemChain.m_prevWeapon = lastWeapon; + lastWeapon = itemChain; + } + } + } + + itemChain = itemChain.chain; + } + } + } + + /* test */ + NSWeapon weaponTest = firstWeapon; + while (weaponTest) { + weaponTest = weaponTest.m_nextWeapon; + } + + firstWeapon.m_prevWeapon = lastWeapon; + + return (firstWeapon); +} vector g_vecHUDNums[6] = { @@ -27,104 +100,74 @@ vector g_vecHUDNums[6] = }; bool -HUD_DrawWeaponSelect_CanSwitch(player pl) +HUD_DrawWeaponSelect_CanSwitch(NSClientPlayer pl) { - if (!pl.activeweapon) + if (!pl.m_activeWeapon) return false; - for (int i = 1; i < g_weapons.length; i++) { - if (pl.g_items & g_weapons[i].id && g_weapons[i].isempty(pl) == false) { - return true; - } - } - - return false; + return true; } void -HUD_DrawWeaponSelect_Forward(void) +HUD_SelectWeapon(NSWeapon nextWeapon) { - player pl = (player)pSeat->m_ePlayer; - - if (HUD_DrawWeaponSelect_CanSwitch(pl) == false) { - pSeat->m_flHUDWeaponSelectTime = time + 3; - pSeat->m_iHUDWeaponSelected = pl.activeweapon; + if (!nextWeapon) { + pSeat->m_iHUDWeaponSelected = 0i; return; } - if (pSeat->m_flHUDWeaponSelectTime < time) { - pSeat->m_iHUDWeaponSelected = pl.activeweapon; - pl.StartSoundDef("Player.WeaponSelectionOpen", CHAN_ITEM, false); - } else { - pl.StartSoundDef("Player.WeaponSelectionMoveSlot", CHAN_ITEM, false); + pSeat->m_iHUDWeaponSelected = nextWeapon.GetSharedID(); +} - pSeat->m_iHUDWeaponSelected--; - if (pSeat->m_iHUDWeaponSelected <= 0) { - pSeat->m_iHUDWeaponSelected = g_weapons.length - 1; - } +/* Select the next item in the list. */ +void +HUD_DrawWeaponSelect_Forward(void) +{ + NSClientPlayer pl = (NSClientPlayer)pSeat->m_ePlayer; + NSWeapon firstWeapon; + + if (HUD_DrawWeaponSelect_CanSwitch(pl) = false) { + return; } - pSeat->m_flHUDWeaponSelectTime = time + 3; + firstWeapon = HLWeapon_SortWeaponChain(pl); - if not (pl.g_items & g_weapons[pSeat->m_iHUDWeaponSelected].id) - HUD_DrawWeaponSelect_Forward(); - else if (g_weapons[pSeat->m_iHUDWeaponSelected].isempty) - if (g_weapons[pSeat->m_iHUDWeaponSelected].isempty(pl)) - HUD_DrawWeaponSelect_Forward(); + if (pl.m_activeWeapon.m_nextWeapon) { + HUD_SelectWeapon(pl.m_activeWeapon.m_nextWeapon); + } else { + HUD_SelectWeapon(firstWeapon); + } } void HUD_DrawWeaponSelect_Back(void) { - player pl = (player)pSeat->m_ePlayer; + NSClientPlayer pl = (NSClientPlayer)pSeat->m_ePlayer; + NSWeapon firstWeapon; - if (HUD_DrawWeaponSelect_CanSwitch(pl) == false) { - pSeat->m_flHUDWeaponSelectTime = time + 3; - pSeat->m_iHUDWeaponSelected = pl.activeweapon; + if (HUD_DrawWeaponSelect_CanSwitch(pl) = false) { return; } - if (pSeat->m_flHUDWeaponSelectTime < time) { - pSeat->m_iHUDWeaponSelected = pl.activeweapon; - pl.StartSoundDef("Player.WeaponSelectionOpen", CHAN_ITEM, false); + firstWeapon = HLWeapon_SortWeaponChain(pl); + + if (pl.m_activeWeapon.m_prevWeapon) { + HUD_SelectWeapon(pl.m_activeWeapon.m_prevWeapon); } else { - pl.StartSoundDef("Player.WeaponSelectionMoveSlot", CHAN_ITEM, false); - - pSeat->m_iHUDWeaponSelected++; - if (pSeat->m_iHUDWeaponSelected >= g_weapons.length) { - pSeat->m_iHUDWeaponSelected = 1; - } + HUD_SelectWeapon(firstWeapon); } - - pSeat->m_flHUDWeaponSelectTime = time + 3; - - if not (pl.g_items & g_weapons[pSeat->m_iHUDWeaponSelected].id) - HUD_DrawWeaponSelect_Back(); - else if (g_weapons[pSeat->m_iHUDWeaponSelected].isempty) - if (g_weapons[pSeat->m_iHUDWeaponSelected].isempty(pl)) - HUD_DrawWeaponSelect_Back(); } void HUD_DrawWeaponSelect_Trigger(void) { - player pl = (player)pSeat->m_ePlayer; - if (pl.activeweapon != pSeat->m_iHUDWeaponSelected) - View_ForceChange(pl, pSeat->m_iHUDWeaponSelected); - - - Sound_Play(pSeat->m_ePlayer, CHAN_ITEM, "Player.WeaponSelected"); - pSeat->m_iHUDWeaponSelected = pSeat->m_flHUDWeaponSelectTime = 0; } void HUD_DrawWeaponSelect_Last(void) { - player pl = (player)pSeat->m_ePlayer; - if (pl.g_items & g_weapons[pSeat->m_iOldWeapon].id) { - View_ForceChange(pl, pSeat->m_iOldWeapon); - } + } void @@ -136,23 +179,15 @@ HUD_DrawWeaponSelect_Num(vector vecPos, float fValue) int HUD_InSlotPos(int slot, int pos) { - player pl = (player)pSeat->m_ePlayer; - for (int i = 1; i < g_weapons.length; i++) { - if (g_weapons[i].slot == slot && g_weapons[i].slot_pos == pos) { - if (pl.g_items & g_weapons[i].id) { - return i; - } else { - return (-1); - } - } - } + return (-1); } void HUD_SlotSelect(int slot) { - player pl = (player)pSeat->m_ePlayer; +#if 0 + NSClientPlayer pl = (NSClientPlayer)pSeat->m_ePlayer; int curslot = g_weapons[pSeat->m_iHUDWeaponSelected].slot; int i; @@ -201,12 +236,14 @@ HUD_SlotSelect(int slot) pSeat->m_flHUDWeaponSelectTime = time + 3; } } +#endif } void HUD_DrawWeaponSelect(void) { - player pl = (player)pSeat->m_ePlayer; +#if 0 + NSClientPlayer pl = (NSClientPlayer)pSeat->m_ePlayer; if (!pl.activeweapon) { return; } @@ -254,4 +291,5 @@ HUD_DrawWeaponSelect(void) vecPos[0] += 25; } } +#endif } diff --git a/src/client/init.qc b/src/client/init.qc index 666ff25..25c2fc7 100644 --- a/src/client/init.qc +++ b/src/client/init.qc @@ -26,6 +26,7 @@ ClientGame_Init(float apilevel, string enginename, float engineversion) { Obituary_Init(); registercommand("chooseteam"); + registercommand("hudSort"); } void VGUI_ShowMOTD(); @@ -56,6 +57,8 @@ ClientGame_RendererRestart(string rstr) MUZZLE_SMALL = (int)getmodelindex("sprites/muzzleflash2.spr"); MUZZLE_WEIRD = (int)getmodelindex("sprites/muzzleflash3.spr"); + HLSprite_Init(); + Damage_Precache(); Obituary_Precache(); diff --git a/src/client/obituary.qc b/src/client/obituary.qc index be2b602..cbdd278 100644 --- a/src/client/obituary.qc +++ b/src/client/obituary.qc @@ -17,6 +17,7 @@ void Obituary_Init(void) { +#if 0 int c; int i; filestream fh; @@ -74,6 +75,7 @@ Obituary_Init(void) } fclose(fh); +#endif } void @@ -86,6 +88,7 @@ Obituary_Precache(void) void Obituary_KillIcon(int id, float w) { +#if 0 if (w > 0) for (int i = 0; i < g_obtype_count; i++) { if (g_weapons[w].name == g_obtypes[i].name) { @@ -101,11 +104,13 @@ Obituary_KillIcon(int id, float w) return; } } +#endif } void Obituary_Add(string attacker, string victim, float weapon, float flags) { +#if 0 int i; int x, y; x = OBITUARY_LINES; @@ -143,6 +148,7 @@ Obituary_Add(string attacker, string victim, float weapon, float flags) print("\n"); } } +#endif } void diff --git a/src/client/progs.src b/src/client/progs.src index 7fb792b..c28df20 100644 --- a/src/client/progs.src +++ b/src/client/progs.src @@ -1,6 +1,6 @@ #pragma target fte_5768 //#pragma flag enable assumeint -#pragma progs_dat "../../csprogs.dat" +#pragma progs_dat "../../zpak001.pk3dir/csprogs.dat" #define CSQC #define CLIENT diff --git a/src/client/scoreboard.qc b/src/client/scoreboard.qc index b020b56..ae85744 100644 --- a/src/client/scoreboard.qc +++ b/src/client/scoreboard.qc @@ -29,7 +29,7 @@ Scores_Init(void) } void -Scores_DrawTeam(player pl, vector pos) +Scores_DrawTeam(NSClientPlayer pl, vector pos) { drawfill(pos, [290, 1], SCORE_LINE_C, 1.0f, DRAWFLAG_ADDITIVE); @@ -135,7 +135,7 @@ Scores_DrawTeam(player pl, vector pos) } void -Scores_DrawNormal(player pl, vector pos) +Scores_DrawNormal(NSClientPlayer pl, vector pos) { drawfill(pos, [290, 1], SCORE_LINE_C, 1.0f, DRAWFLAG_ADDITIVE); @@ -192,9 +192,9 @@ void Scores_Draw(void) { vector pos; - player pl; + NSClientPlayer pl; - pl = (player)pSeat->m_ePlayer; + pl = (NSClientPlayer)pSeat->m_ePlayer; if (autocvar_cl_centerscores) { int c = 10; diff --git a/src/menu/Makefile b/src/menu/Makefile index 627019a..2fe44a4 100644 --- a/src/menu/Makefile +++ b/src/menu/Makefile @@ -1,4 +1,4 @@ -CC=fteqcc +QCC=fteqcc all: - $(CC) progs.src + $(QCC) progs.src diff --git a/src/menu/progs.src b/src/menu/progs.src index b81630b..6bc139e 100644 --- a/src/menu/progs.src +++ b/src/menu/progs.src @@ -1,6 +1,6 @@ #pragma target fte_5768_5768 //#pragma flag enable assumeint -#pragma progs_dat "../../menu.dat" +#pragma progs_dat "../../zpak001.pk3dir/menu.dat" #define MENU #define GAME_DIR "valve" #define MODEL_PREVIEW diff --git a/src/server/Makefile b/src/server/Makefile index 627019a..2fe44a4 100644 --- a/src/server/Makefile +++ b/src/server/Makefile @@ -1,4 +1,4 @@ -CC=fteqcc +QCC=fteqcc all: - $(CC) progs.src + $(QCC) progs.src diff --git a/src/server/flashlight.qc b/src/server/flashlight.qc index 97a36a4..83d6b5a 100644 --- a/src/server/flashlight.qc +++ b/src/server/flashlight.qc @@ -22,7 +22,7 @@ void Flashlight_Toggle(void) } } -#ifdef VALVE +#if 0 player pl = (player)self; if (!(pl.g_items & ITEM_SUIT)) { return; diff --git a/src/server/gamerules.h b/src/server/gamerules.h index 6ecef05..95ae9b4 100644 --- a/src/server/gamerules.h +++ b/src/server/gamerules.h @@ -18,7 +18,6 @@ class HLGameRules:CGameRules { virtual void PlayerConnect(NSClientPlayer); virtual void PlayerDisconnect(NSClientPlayer); - virtual void PlayerKill(NSClientPlayer); virtual void PlayerPostFrame(NSClientPlayer); virtual void LevelDecodeParms(NSClientPlayer); diff --git a/src/server/gamerules.qc b/src/server/gamerules.qc index c3727ef..a8b8cb7 100644 --- a/src/server/gamerules.qc +++ b/src/server/gamerules.qc @@ -21,9 +21,8 @@ HLGameRules::IsMultiplayer(void) } void -HLGameRules::LevelDecodeParms(NSClientPlayer pp) +HLGameRules::LevelDecodeParms(NSClientPlayer pl) { - player pl = (player)pp; g_landmarkpos[0] = parm1; g_landmarkpos[1] = parm2; g_landmarkpos[2] = parm3; @@ -36,6 +35,7 @@ HLGameRules::LevelDecodeParms(NSClientPlayer pp) pl.activeweapon = parm11; pl.flags = parm64; +#if 0 pl.ammo_9mm = parm12; pl.ammo_357 = parm13; pl.ammo_buckshot = parm14; @@ -56,19 +56,12 @@ HLGameRules::LevelDecodeParms(NSClientPlayer pp) pl.crossbow_mag = parm28; pl.rpg_mag = parm29; pl.satchel_chg = parm30; - - /* reset bounds */ - if (pl.HasFlags(FL_CROUCHING)) { - pl.SetSize(VEC_CHULL_MIN, VEC_CHULL_MAX); - } else { - pl.SetSize(VEC_HULL_MIN, VEC_HULL_MAX); - } +#endif } void -HLGameRules::LevelChangeParms(NSClientPlayer pp) +HLGameRules::LevelChangeParms(NSClientPlayer pl) { - player pl = (player)pp; parm1 = g_landmarkpos[0]; parm2 = g_landmarkpos[1]; parm3 = g_landmarkpos[2]; @@ -81,6 +74,8 @@ HLGameRules::LevelChangeParms(NSClientPlayer pp) parm64 = pl.GetFlags(); parm10 = pl.g_items; parm11 = pl.activeweapon; + +#if 0 parm12 = pl.ammo_9mm; parm13 = pl.ammo_357; parm14 = pl.ammo_buckshot; @@ -100,6 +95,7 @@ HLGameRules::LevelChangeParms(NSClientPlayer pp) parm28 = pl.crossbow_mag; parm29 = pl.rpg_mag; parm30 = pl.satchel_chg; +#endif } void @@ -132,12 +128,6 @@ HLGameRules::PlayerDisconnect(NSClientPlayer pl) super::PlayerDisconnect(pl); } -void -HLGameRules::PlayerKill(NSClientPlayer pl) -{ - Damage_Apply(pl, pl, pl.health, WEAPON_NONE, DMG_SKIP_ARMOR); -} - void TriggerFlashlight(NSClient target) { diff --git a/src/server/gamerules_multiplayer.qc b/src/server/gamerules_multiplayer.qc index 163cb79..7c56d8f 100644 --- a/src/server/gamerules_multiplayer.qc +++ b/src/server/gamerules_multiplayer.qc @@ -122,9 +122,9 @@ HLMultiplayerRules::PlayerDeath(NSClientPlayer pl) #ifdef VALVE /* explode all satchels */ - s_satchel_detonate((entity)pl); + //s_satchel_detonate((entity)pl); /* drop their posessions into a weaponbox item */ - weaponbox_spawn((player)pl); + //weaponbox_spawn(pl); #endif /* either gib, or make a corpse */ @@ -133,6 +133,7 @@ HLMultiplayerRules::PlayerDeath(NSClientPlayer pl) float gibStrength = g_dmg_iDamage * 2.0f; BreakModel_Entity(pl, gibDir, gibStrength); } else { +#if 0 float deathAnimation = ANIM_DIESIMPLE; switch (g_dmg_iHitBody) { @@ -159,16 +160,16 @@ HLMultiplayerRules::PlayerDeath(NSClientPlayer pl) break; } - NSEntity newCorpse = (NSEntity)FX_Corpse_Spawn((player)pl, deathAnimation); + NSEntity newCorpse = (NSEntity)FX_Corpse_Spawn(pl, deathAnimation); /* if we were crouching, adjust the bbox (thx 2 lack of crouch death animation) */ - if (pl.flags & FL_CROUCHING) { + if (pl.IsCrouching()) { newCorpse.SetSize(VEC_HULL_MIN, [16, 16, -16]); } +#endif } /* now let's make the real client invisible */ - pl.Death(); pl.SetTakedamage(DAMAGE_NO); pl.gflags &= ~GF_FLASHLIGHT; pl.gflags &= ~GF_EGONBEAM; @@ -185,9 +186,8 @@ HLMultiplayerRules::PlayerDeath(NSClientPlayer pl) } void -HLMultiplayerRules::PlayerSpawn(NSClientPlayer pp) +HLMultiplayerRules::PlayerSpawn(NSClientPlayer pl) { - player pl = (player)pp; string playerModel; /* this is where the mods want to deviate */ entity spot; @@ -239,21 +239,20 @@ HLMultiplayerRules::PlayerSpawn(NSClientPlayer pp) pl.SetInfoKey("*dead", "0"); pl.SetInfoKey("*deaths", ftos(pl.deaths)); pl.SetPropData("actor_human"); - pl.SetCanBleed(true); + pl.EnableBleeding(); LevelNewParms(); LevelDecodeParms(pl); #if defined (VALVE) || defined (GEARBOX) - pl.g_items = ITEM_CROWBAR | ITEM_GLOCK | ITEM_SUIT; - pl.activeweapon = WEAPON_GLOCK; - pl.glock_mag = 18; - pl.ammo_9mm = 44; + pl.GiveItem("item_suit"); + pl.GiveItem("weapon_9mmhandgun"); + pl.GiveItem("weapon_crowbar"); + //pl.ammo_9mm = 44; #endif spot = Spawn_SelectRandom("info_player_deathmatch"); pl.Transport(spot.origin, spot.angles); - Weapons_RefreshAmmo(pl); Client_FixAngle(pl, pl.angles); } @@ -293,7 +292,7 @@ void CSEv_HLDM_Chooseteam_s(string teamName) { HLGameRules rules = (HLGameRules)g_grMode; - player pl = (player)self; + NSClientPlayer pl = (NSClientPlayer)self; if (!teamName) return; @@ -310,7 +309,9 @@ CSEv_HLDM_Chooseteam_s(string teamName) for (int i = 0; i < c; i++) { if (argv(i) == teamName) { pl.SetTeam((float)i + 1); - Damage_Apply(pl, pl, 100, 0, DMG_SKIP_ARMOR); + pl.SetHealth(-100); + pl.Death(pl, pl, 100i, g_vec_null, 0i); + //Damage_Apply(pl, pl, 100, 0, DMG_SKIP_ARMOR); return; } } diff --git a/src/server/gamerules_singleplayer.qc b/src/server/gamerules_singleplayer.qc index 026e462..d8fbe9e 100644 --- a/src/server/gamerules_singleplayer.qc +++ b/src/server/gamerules_singleplayer.qc @@ -50,7 +50,7 @@ HLSingleplayerRules::PlayerDeath(NSClientPlayer pl) corpse.movetype = MOVETYPE_TOSS; corpse.solid = SOLID_TRIGGER; corpse.modelindex = pl.modelindex; - corpse.frame = ANIM_DIESIMPLE; + //corpse.frame = ANIM_DIESIMPLE; corpse.angles = pl.angles; corpse.velocity = pl.velocity; } @@ -85,31 +85,32 @@ HLSingleplayerRules::PlayerSpawn(NSClientPlayer pl) pl.ClearVelocity(); pl.SetInfoKey("*spec", "0"); pl.SetInfoKey("*deaths", ftos(pl.deaths)); - pl.SetCanBleed(true); + pl.EnableBleeding(); if (startspot != "") { LevelDecodeParms(pl); pl.SetOrigin(Landmark_GetSpot()); + pl.Physics_Run(); } else { entity spawnPoint; LevelNewParms(); spawnPoint = find(world, ::classname, "info_player_start"); pl.Transport(spawnPoint.origin, spawnPoint.angles); + pl.Physics_Run(); } - Weapons_RefreshAmmo(pl); Client_FixAngle(pl, pl.angles); } bool -HLSingleplayerRules::ImpulseCommand(NSClient bp, float num) +HLSingleplayerRules::ImpulseCommand(NSClient pl, float num) { switch (num) { case 101: - player pl = (player)bp; pl.SetHealth(100); pl.SetMaxHealth(100); pl.SetArmor(100); +#if 0 pl.g_items |= ITEM_SUIT; Weapons_AddItem(pl, WEAPON_CROWBAR, -1); Weapons_AddItem(pl, WEAPON_GLOCK, -1); @@ -137,10 +138,11 @@ HLSingleplayerRules::ImpulseCommand(NSClient bp, float num) Weapons_AddItem(pl, WEAPON_SNIPERRIFLE, -1); Weapons_AddItem(pl, WEAPON_SPORELAUNCHER, -1); Weapons_AddItem(pl, WEAPON_SHOCKRIFLE, -1); +#endif #endif break; default: - return super::ImpulseCommand(bp, num); + return super::ImpulseCommand(pl, num); } return true; diff --git a/src/server/items.h b/src/server/items.h index 9a34809..abe7476 100644 --- a/src/server/items.h +++ b/src/server/items.h @@ -14,6 +14,7 @@ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#if 0 /* PICKUP ITEMS */ class item_pickup:NSRenderableEntity { @@ -30,3 +31,4 @@ class item_pickup:NSRenderableEntity virtual void SetFloating(int); virtual void PickupRespawn(void); }; +#endif \ No newline at end of file diff --git a/src/server/player.qc b/src/server/player.qc index 68edb08..0263fae 100644 --- a/src/server/player.qc +++ b/src/server/player.qc @@ -14,19 +14,6 @@ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -void Weapons_Draw(player pl); - -void -CSEv_PlayerSwitchWeapon_i(int w) -{ - player pl = (player)self; - - if (pl.activeweapon != w) { - pl.activeweapon = w; - Weapons_Draw(pl); - } -} - void Player_Precache(void) { diff --git a/src/server/progs.src b/src/server/progs.src index 8445f11..f317d3d 100644 --- a/src/server/progs.src +++ b/src/server/progs.src @@ -1,6 +1,6 @@ #pragma target fte_5768 //#pragma flag enable assumeint -#pragma progs_dat "../../progs.dat" +#pragma progs_dat "../../zpak001.pk3dir/progs.dat" #define QWSSQC #define SERVER @@ -20,19 +20,19 @@ defs.h ../shared/include.src player.qc -items.qc -item_longjump.qc -item_suit.qc -item_healthkit.qc -item_battery.qc -item_weaponbox.qc -world_items.qc +//items.qc +//item_longjump.qc +//item_suit.qc +//item_healthkit.qc +//item_battery.qc +//item_weaponbox.qc +//world_items.qc xen_spore_small.qc xen_spore_medium.qc xen_spore_large.qc xen_hair.qc xen_plantlight.qc -ammo.qc +//ammo.qc ../../../src/botlib/include.src @@ -42,7 +42,6 @@ gamerules_multiplayer.qc server.qc damage.qc flashlight.qc -modelevent.qc spawn.qc diff --git a/src/server/server.qc b/src/server/server.qc index a149c8e..5f25a57 100644 --- a/src/server/server.qc +++ b/src/server/server.qc @@ -33,7 +33,6 @@ Game_Worldspawn(void) precache_model("models/player.mdl"); precache_model("models/w_weaponbox.mdl"); - Weapons_Init(); Player_Precache(); FX_Corpse_Init(); } diff --git a/src/server/xen_hair.qc b/src/server/xen_hair.qc index 1b00205..ee29b60 100644 --- a/src/server/xen_hair.qc +++ b/src/server/xen_hair.qc @@ -33,10 +33,9 @@ class xen_hair:NSRenderableEntity void xen_hair::Respawn(void) { + super::Respawn(); SetSolid(SOLID_SLIDEBOX); SetMovetype(MOVETYPE_WALK); - SetModel(GetSpawnModel()); - SetOrigin(GetSpawnOrigin()); } void diff --git a/src/server/xen_plantlight.qc b/src/server/xen_plantlight.qc index 22dafd0..6da221e 100644 --- a/src/server/xen_plantlight.qc +++ b/src/server/xen_plantlight.qc @@ -33,10 +33,9 @@ class xen_plantlight:NSRenderableEntity void xen_plantlight::Respawn(void) { + super::Respawn(); SetSolid(SOLID_SLIDEBOX); SetMovetype(MOVETYPE_WALK); - SetModel(GetSpawnModel()); - SetOrigin(GetSpawnOrigin()); } void diff --git a/src/server/xen_spore_large.qc b/src/server/xen_spore_large.qc index 3cf6c95..539b86f 100644 --- a/src/server/xen_spore_large.qc +++ b/src/server/xen_spore_large.qc @@ -33,10 +33,9 @@ class xen_spore_large:NSRenderableEntity void xen_spore_large::Respawn(void) { + super::Respawn(); SetSolid(SOLID_SLIDEBOX); SetMovetype(MOVETYPE_WALK); - SetModel(GetSpawnModel()); - SetOrigin(GetSpawnOrigin()); } void diff --git a/src/server/xen_spore_medium.qc b/src/server/xen_spore_medium.qc index 03b0156..d478b9b 100644 --- a/src/server/xen_spore_medium.qc +++ b/src/server/xen_spore_medium.qc @@ -33,10 +33,9 @@ class xen_spore_medium:NSRenderableEntity void xen_spore_medium::Respawn(void) { + super::Respawn(); SetSolid(SOLID_SLIDEBOX); SetMovetype(MOVETYPE_WALK); - SetModel(GetSpawnModel()); - SetOrigin(GetSpawnOrigin()); } void diff --git a/src/server/xen_spore_small.qc b/src/server/xen_spore_small.qc index 7112806..dac57bb 100644 --- a/src/server/xen_spore_small.qc +++ b/src/server/xen_spore_small.qc @@ -33,10 +33,9 @@ class xen_spore_small:NSRenderableEntity void xen_spore_small::Respawn(void) { + super::Respawn(); SetSolid(SOLID_SLIDEBOX); SetMovetype(MOVETYPE_WALK); - SetModel(GetSpawnModel()); - SetOrigin(GetSpawnOrigin()); } void diff --git a/src/shared/HLGaussBeam.qc b/src/shared/HLGaussBeam.qc new file mode 100644 index 0000000..bfb3d3b --- /dev/null +++ b/src/shared/HLGaussBeam.qc @@ -0,0 +1,88 @@ +#ifdef SERVER +class +HLGaussBeam:NSProjectile +{ + void HLGaussBeam(void); + + virtual void Launch(vector, vector, float, float, float); + nonvirtual void GaussAttack(float); +}; + +void +HLGaussBeam::HLGaussBeam(void) +{ +} + +void +HLGaussBeam::Launch(vector startPos, vector launchDir, float fuseOffset, float powerMultiplier, float dmgMultiplier) +{ + GaussAttack(fuseOffset); + + if (fuseOffset > 0.0f) + FX_GaussBeam(startPos, launchDir, 6, owner); + else + FX_GaussBeam(startPos, launchDir, 0, owner); + + NSError("fuseOffset: %f", fuseOffset); +} + +void +HLGaussBeam::GaussAttack(float fuseOffset) +{ + NSClientPlayer ourOwner = (NSClientPlayer)owner; + int iLoop = 6i; + vector vecCurPlane; + vector vecCurPos; + vector vecSrc; + vector vecEndPos; + vector vecDir; + + vecDir = anglesToForward(ourOwner.GetViewAngle()); + vecSrc = ourOwner.GetEyePos(); + vecEndPos = vecSrc + v_forward * 1024; + traceline(vecSrc, vecEndPos, FALSE, ourOwner); + vecCurPlane = trace_plane_normal; + vecCurPos = trace_endpos; + + int iDamage; + + if (fuseOffset > 0.0) { + iDamage = (int)rint(lerp(20, 150, fuseOffset / 5.0f)); + } else { + iDamage = 20i; + } + + if (serverkeyfloat("*bspversion") == BSPVER_HL) + if (getsurfacetexture(trace_ent, getsurfacenearpoint(trace_ent, trace_endpos)) == "sky") { + return; + } + + if (trace_ent.takedamage == DAMAGE_YES) { + //Damage_Apply(trace_ent, ourOwner, iDamage, WEAPON_GAUSS, DMG_ELECTRO); + sound(trace_ent, CHAN_ITEM, sprintf("weapons/electro%d.wav", random(0,3)+4), 1, ATTN_NORM); + } + + // reflection equation: + trace_plane_normal = vecCurPlane; + trace_endpos = vecCurPos; + + while (iLoop > 0i) { + vector newDir; + trace_plane_normal = vecCurPlane; + trace_endpos = vecCurPos; + newDir = vecDir - 2 * (vecDir * trace_plane_normal) * trace_plane_normal; + vecDir = newDir; + vecSrc = trace_endpos + (vecDir * -1); + vecEndPos = trace_endpos + (vecDir * 8192); + traceline(vecSrc, vecEndPos, FALSE, ourOwner); + vecCurPlane = trace_plane_normal; + vecCurPos = trace_endpos; + iLoop--; + + if (trace_ent.takedamage == DAMAGE_YES) { + //Damage_Apply(trace_ent, ourOwner, iDamage, WEAPON_GAUSS, DMG_ELECTRO); + sound(trace_ent, CHAN_ITEM, sprintf("weapons/electro%d.wav", random(0,3)+4), 1, ATTN_NORM); + } + } +} +#endif \ No newline at end of file diff --git a/src/shared/HLWeapon.qc b/src/shared/HLWeapon.qc new file mode 100644 index 0000000..79e4a10 --- /dev/null +++ b/src/shared/HLWeapon.qc @@ -0,0 +1,217 @@ +/* + * Copyright (c) 2024 Marco Cawthorne + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +/*! \brief Half-Life weapon base class. */ +/*!QUAKED HLWeapon (0 0.8 0.8) (-16 -16 0) (16 16 72) +# OVERVIEW +Half-Life specific weapon based on NSWeapon. + +# NEW KEYS +- "ammoIcon" - Which sprites/ image to use. See notes. +- "crosshair" - Which sprites/ image to use as a crosshair. See notes. +- "hudSlot" - In which weapon selection slot this weapon belongs to. +- "hudSlotPos" - The position of the weapon in the respective weapon selection slot. + +# NOTES +Both `ammoIcon` and `crosshair` refer to sprite declarations inside the sprites/ directory. FreeHL scans the `sprites/hud.txt` file and and weapon specific files. +Since the weapon specific files only contain short names like `ammo` and `crosshair` you have to refer to them with a prefix separated by a `.` period symbol. + +For example, `ammoIcon` being set to `weapon_foobar.ammo` will look up `ammo` inside `sprites/weapon_foobar.txt`. +*/ +class +HLWeapon:NSWeapon +{ + void HLWeapon(void); + + bool m_bAltModeSwitch; + virtual void AddedToInventory(void); + virtual void PrimaryAttack(void); + virtual void SecondaryAttack(void); + +#ifdef SERVER + virtual void SpawnKey(string, string); +#endif + +#ifdef CLIENT + int m_iHudSlot; + int m_iHudSlotPos; + + string m_ammoIcon; + string m_crossHair; + NSWeapon m_nextWeapon; + virtual void UpdateGUI(void); + nonvirtual void DrawLaser(void); +#endif +}; + +void +HLWeapon::HLWeapon(void) +{ + +} + +#ifdef SERVER +void +HLWeapon::SpawnKey(string keyName, string setValue) +{ + switch (keyName) { + case "altLaser": + case "ammoIcon": + case "crosshair": + case "hudSlot": + case "hudSlotPos": + break; + default: + super::SpawnKey(keyName, setValue); + } +} +#endif + +void +HLWeapon::PrimaryAttack(void) +{ + if (m_bAltModeSwitch == true) { + if (CanFire() == false) { + return; + } + + //m_iMode = 1 - m_iMode; + } + + if (m_iMode) { + super::SecondaryAttack(); + return; + } + + super::PrimaryAttack(); +} + +void +HLWeapon::SecondaryAttack(void) +{ + if (m_bAltModeSwitch == true) { + if (CanFire() == false) { + return; + } + + m_iMode = 1 - m_iMode; + SetAttackNext(1.0); + SetIdleNext(1.0f); + return; + } + + super::SecondaryAttack(); +} + + +void +HLWeapon::AddedToInventory(void) +{ + super::AddedToInventory(); + +#ifdef CLIENT + m_ammoIcon = GetDefString("ammoIcon"); + + if (m_ammoIcon == "") { + m_ammoIcon = sprintf("%s.ammo", strtolower(classname)); + } + + m_crossHair = GetDefString("crosshair"); + + if (m_crossHair == "") { + m_crossHair = sprintf("%s.crosshair", strtolower(classname)); + } + + if (m_ammoIcon == "none") { + m_ammoIcon = __NULL__; + } + + if (m_crossHair == "none") { + m_crossHair = __NULL__; + } + + m_iHudSlot = GetDefInt("hudSlot"); + m_iHudSlotPos = GetDefInt("hudSlotPos"); +#endif + + m_bAltModeSwitch = GetDefBool("altLaser"); +} + +#ifdef CLIENT +void +HLWeapon::UpdateGUI(void) +{ + NSClientPlayer ourOwner = __NULL__; + + /* draw crosshair */ + HLSprite_DrawCrosshair(m_crossHair); + + /* draw ammo icon */ + if (m_ammoIcon) { + vector ammoPos = g_hudmins + [g_hudres[0] - 48, g_hudres[1] - 42]; + HLSprite_Draw_RGBA(m_ammoIcon, ammoPos, g_hud_color, pSeatLocal->m_flAmmo2Alpha, true); + } + + if (m_iMode) { + DrawLaser(); + } + + if (m_bAmmoRequired == false) + return; + + ourOwner = (NSClientPlayer)GetOwner(); + + if (m_iClipSize > 0i) { + ourOwner.a_ammo1 = m_iClip; + HUD_DrawAmmo1(); + } + + ourOwner.a_ammo2 = ourOwner.GetReserveAmmo(m_primaryAmmoType); + HUD_DrawAmmo2(); + + if (m_secondaryAmmoType && m_primaryAmmoType != m_secondaryAmmoType) { + ourOwner.a_ammo3 = ourOwner.GetReserveAmmo(m_secondaryAmmoType); + HUD_DrawAmmo3(); + } +} + +void +HLWeapon::DrawLaser(void) +{ + NSClientPlayer ourOwner = (NSClientPlayer)GetOwner(); + float lerpValue; + vector laser_pos = g_vec_null; + vector jitter = [0.0f, 0.0f, 0.0f]; + + vector src = ourOwner.GetEyePos(); + traceline(src, src + (anglesToForward(ourOwner.v_angle) * 256), FALSE, ourOwner); + lerpValue = lerp(18,6, trace_fraction); + jitter[0] = (random(0,2) - 2) * (1 - trace_fraction); + jitter[1] = (random(0,2) - 2) * (1 - trace_fraction); + laser_pos = g_hudmins + (g_hudres / 2) + ([-lerpValue,-lerpValue] / 2); + + drawsubpic( + laser_pos + jitter, + [lerpValue,lerpValue], + g_laser_spr, + [0,0], + [1.0, 1.0], + [1,1,1], + 1.0f, + DRAWFLAG_ADDITIVE + ); +} +#endif diff --git a/src/shared/animations.h b/src/shared/animations.h index f19f157..ec1ee09 100644 --- a/src/shared/animations.h +++ b/src/shared/animations.h @@ -90,6 +90,3 @@ enum ANIM_CR_AIMBOW, ANIM_CR_SHOOTBOW }; - -void Animation_PlayerTop(player, float, float); -void Animation_PlayerBottom(player, float, float); diff --git a/src/shared/animations.qc b/src/shared/animations.qc index 4a2dcbb..99a2919 100644 --- a/src/shared/animations.qc +++ b/src/shared/animations.qc @@ -21,6 +21,10 @@ .float bonecontrol2; .float bonecontrol3; .float bonecontrol4; +.float frame2; +.float lerpfrac; +.float baselerpfrac; +.float baseframe2; void Animation_Print(string sWow) { #ifdef CLIENT @@ -31,7 +35,7 @@ void Animation_Print(string sWow) { } void -Animation_TimerUpdate(player pl, float ftime) +Animation_TimerUpdate(HLPlayer pl, float ftime) { makevectors([0, pl.v_angle[1], 0]); @@ -56,28 +60,28 @@ depending on what the player is doing ================= */ void -Animation_PlayerUpdate(player pl) +Animation_PlayerUpdate(HLPlayer pl) { pl.basebone = gettagindex(pl, "Bip01 Spine1"); if (pl.anim_top_delay <= 0.0f) { - pl.anim_top = Weapons_GetAim(pl, pl.activeweapon); + pl.anim_top = 0;//Weapons_GetAim(pl, pl.activeweapon); } if (vlen(pl.velocity) == 0) { - if (pl.flags & FL_CROUCHING) { + if (pl.IsCrouching()) { pl.anim_bottom = ANIM_CROUCHIDLE; } else { pl.anim_bottom = ANIM_IDLE; } } else if (vlen(pl.velocity) < 150) { - if (pl.flags & FL_CROUCHING) { + if (pl.IsCrouching()) { pl.anim_bottom = ANIM_CRAWL; } else { pl.anim_bottom = ANIM_WALK; } } else if (vlen(pl.velocity) > 150) { - if (pl.flags & FL_CROUCHING) { + if (pl.IsCrouching()) { pl.anim_bottom = ANIM_CRAWL; } else { pl.anim_bottom = ANIM_RUN; @@ -112,7 +116,7 @@ Animation_PlayerUpdate(player pl) } void -Animation_PlayerTop(player pl, float topanim, float timer) +Animation_PlayerTop(HLPlayer pl, float topanim, float timer) { pl.anim_top = topanim; pl.anim_top_time = 0.0f; @@ -120,7 +124,7 @@ Animation_PlayerTop(player pl, float topanim, float timer) } void -Animation_PlayerBottom(player pl, float botanim, float timer) +Animation_PlayerBottom(HLPlayer pl, float botanim, float timer) { pl.anim_bottom = botanim; } diff --git a/src/shared/fx_corpse.qc b/src/shared/fx_corpse.qc index 37abeb2..dc68e85 100644 --- a/src/shared/fx_corpse.qc +++ b/src/shared/fx_corpse.qc @@ -55,14 +55,14 @@ FX_Corpse_Update(void) } entity -FX_Corpse_Spawn(player pl, float anim) +FX_Corpse_Spawn(NSClientPlayer pl, float anim) { NSRenderableEntity body_next = (NSRenderableEntity)FX_Corpse_Next(); body_next.SetMovetype(MOVETYPE_BOUNCE); body_next.SetSolid(SOLID_CORPSE); body_next.SetModel(pl.GetModel()); - if (pl.flags & FL_CROUCHING) { + if (pl.IsCrouching()) { body_next.SetOrigin(pl.GetOrigin() + [0,0,32]); } else { body_next.SetOrigin(pl.GetOrigin()); diff --git a/src/shared/include.src b/src/shared/include.src index 520c655..b8aa65c 100644 --- a/src/shared/include.src +++ b/src/shared/include.src @@ -2,32 +2,15 @@ ../../../valve/src/shared/entities.h ../../../valve/src/shared/events.h ../../../valve/src/shared/flags.h + ../../../valve/src/shared/player.qc -../../../valve/src/shared/weapon_common.h -../../../valve/src/shared/animations.h ../../../valve/src/shared/animations.qc ../../../valve/src/shared/pmove.qc ../../../valve/src/shared/fx_blood.qc ../../../valve/src/shared/fx_gaussbeam.qc ../../../valve/src/shared/fx_corpse.qc - -../../../valve/src/shared/items.h -../../../valve/src/shared/weapons.h -../../../valve/src/shared/w_crossbow.qc -../../../valve/src/shared/w_crowbar.qc -../../../valve/src/shared/w_egon.qc -../../../valve/src/shared/w_gauss.qc -../../../valve/src/shared/w_glock.qc -../../../valve/src/shared/w_handgrenade.qc -../../../valve/src/shared/w_hornetgun.qc -../../../valve/src/shared/w_mp5.qc -../../../valve/src/shared/w_python.qc -../../../valve/src/shared/w_rpg.qc -../../../valve/src/shared/w_satchel.qc -../../../valve/src/shared/w_shotgun.qc -../../../valve/src/shared/w_snark.qc +../../../valve/src/shared/HLGaussBeam.qc +../../../valve/src/shared/HLWeapon.qc ../../../valve/src/shared/w_tripmine.qc -../../../valve/src/shared/weapons.qc -../../../valve/src/shared/weapon_common.qc #endlist diff --git a/src/shared/player.qc b/src/shared/player.qc index dfb3644..a72c7c5 100644 --- a/src/shared/player.qc +++ b/src/shared/player.qc @@ -14,24 +14,19 @@ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#include "animations.h" #include "skeleton.h" /* all custom SendFlags bits we can possibly send */ enumflags { PLAYER_TOPFRAME = PLAYER_CUSTOMFIELDSTART, - PLAYER_BOTTOMFRAME, - PLAYER_AMMO1, - PLAYER_AMMO2, - PLAYER_AMMO3, - PLAYER_UNUSED5, - PLAYER_UNUSED6, - PLAYER_UNUSED7 + PLAYER_BOTTOMFRAME }; -class player:NSClientPlayer +class HLPlayer:NSClientPlayer { - void(void) player; + void(void) HLPlayer; /* animation */ PREDICTED_INT(anim_top) @@ -40,34 +35,6 @@ class player:NSClientPlayer PREDICTED_INT(anim_bottom) PREDICTED_FLOAT(anim_bottom_time) - /* ammo 1 */ - PREDICTED_INT(glock_mag) - PREDICTED_INT(mp5_mag) - PREDICTED_INT(python_mag) - PREDICTED_INT(shotgun_mag) - PREDICTED_INT(crossbow_mag) - PREDICTED_INT(rpg_mag) - PREDICTED_INT(satchel_chg) - - /* ammo 2 */ - PREDICTED_INT(ammo_9mm) - PREDICTED_INT(ammo_357) - PREDICTED_INT(ammo_buckshot) - PREDICTED_INT(ammo_bolt) - PREDICTED_INT(ammo_rocket) - PREDICTED_INT(ammo_uranium) - PREDICTED_INT(ammo_handgrenade) - PREDICTED_INT(ammo_satchel) - PREDICTED_INT(ammo_tripmine) - PREDICTED_INT(ammo_snark) - PREDICTED_INT(ammo_hornet) - - /* ammo 3 */ - PREDICTED_INT(ammo_m203_grenade) - PREDICTED_INT(ammo_gauss_volume) - PREDICTED_INT(ammo_rpg_state) - PREDICTED_INT(mode_tempstate) - virtual void Physics_Jump(void); virtual void UpdatePlayerAnimation(float); @@ -85,43 +52,24 @@ class player:NSClientPlayer #endif }; +void Animation_PlayerTop(HLPlayer, float, float); +void Animation_PlayerBottom(HLPlayer, float, float); + void -player::player(void) +HLPlayer::HLPlayer(void) { anim_top = 0; anim_top_time = 0; anim_top_delay = 0; anim_bottom = 0; anim_bottom_time = 0; - glock_mag = 0; - mp5_mag = 0; - python_mag = 0; - shotgun_mag = 0; - crossbow_mag = 0; - rpg_mag = 0; - satchel_chg = 0; - ammo_9mm = 0; - ammo_357 = 0; - ammo_buckshot = 0; - ammo_bolt = 0; - ammo_rocket = 0; - ammo_uranium = 0; - ammo_handgrenade = 0; - ammo_satchel = 0; - ammo_tripmine = 0; - ammo_snark = 0; - ammo_hornet = 0; - ammo_m203_grenade = 0; - ammo_gauss_volume = 0; - ammo_rpg_state = 0; - mode_tempstate = 0; } -void Animation_PlayerUpdate(player); -void Animation_TimerUpdate(player, float); +void Animation_PlayerUpdate(HLPlayer); +void Animation_TimerUpdate(HLPlayer, float); void -player::UpdatePlayerAnimation(float timelength) +HLPlayer::UpdatePlayerAnimation(float timelength) { /* calculate our skeletal progression */ Animation_PlayerUpdate(this); @@ -135,7 +83,7 @@ void Camera_StrafeRoll(__inout vector camera_angle); void Shake_Update(NSClientPlayer); void -player::UpdateAliveCam(void) +HLPlayer::UpdateAliveCam(void) { vector cam_pos = GetEyePos(); Camera_RunPosBob(view_angles, cam_pos); @@ -164,10 +112,10 @@ player::UpdateAliveCam(void) } .string oldmodel; -string Weapons_GetPlayermodel(player, int); +//string Weapons_GetPlayermodel(NSClientPlayer, int); void -player::UpdatePlayerAttachments(bool visible) +HLPlayer::UpdatePlayerAttachments(bool visible) { /* draw the flashlight */ if (gflags & GF_FLASHLIGHT) { @@ -199,7 +147,7 @@ player::UpdatePlayerAttachments(bool visible) return; /* what's the current weapon model supposed to be anyway? */ - p_model.oldmodel = Weapons_GetPlayermodel(this, activeweapon); + p_model.oldmodel = 0;//Weapons_GetPlayermodel(this, activeweapon); /* we changed weapons, update skeletonindex */ if (p_model.model != p_model.oldmodel) { @@ -244,19 +192,18 @@ player::UpdatePlayerAttachments(bool visible) } } -void Weapons_AmmoUpdate(entity); -void HUD_AmmoNotify_Check(player pl); -void HUD_ItemNotify_Check(player pl); +void HUD_AmmoNotify_Check(NSClientPlayer pl); +void HUD_ItemNotify_Check(NSClientPlayer pl); /* ================= -player::ReceiveEntity +HLPlayer::ReceiveEntity ================= */ void -player::ReceiveEntity(float new, float flChanged) +HLPlayer::ReceiveEntity(float new, float flChanged) { /* the generic client attributes */ - NSClientPlayer::ReceiveEntity(new, flChanged); + super::ReceiveEntity(new, flChanged); /* animation */ READENTITY_BYTE(anim_top, PLAYER_TOPFRAME) @@ -265,34 +212,9 @@ player::ReceiveEntity(float new, float flChanged) READENTITY_BYTE(anim_bottom, PLAYER_BOTTOMFRAME) READENTITY_FLOAT(anim_bottom_time, PLAYER_BOTTOMFRAME) - READENTITY_BYTE(glock_mag, PLAYER_AMMO1) - READENTITY_BYTE(mp5_mag, PLAYER_AMMO1) - READENTITY_BYTE(python_mag, PLAYER_AMMO1) - READENTITY_BYTE(shotgun_mag, PLAYER_AMMO1) - READENTITY_BYTE(crossbow_mag, PLAYER_AMMO1) - READENTITY_BYTE(rpg_mag, PLAYER_AMMO1) - READENTITY_BYTE(satchel_chg, PLAYER_AMMO1) - - READENTITY_BYTE(ammo_9mm, PLAYER_AMMO2) - READENTITY_BYTE(ammo_357, PLAYER_AMMO2) - READENTITY_BYTE(ammo_buckshot, PLAYER_AMMO2) - READENTITY_BYTE(ammo_bolt, PLAYER_AMMO2) - READENTITY_BYTE(ammo_rocket, PLAYER_AMMO2) - READENTITY_BYTE(ammo_uranium, PLAYER_AMMO2) - READENTITY_BYTE(ammo_handgrenade, PLAYER_AMMO2) - READENTITY_BYTE(ammo_satchel, PLAYER_AMMO2) - READENTITY_BYTE(ammo_tripmine, PLAYER_AMMO2) - READENTITY_BYTE(ammo_snark, PLAYER_AMMO2) - READENTITY_BYTE(ammo_hornet, PLAYER_AMMO2) - - READENTITY_BYTE(ammo_m203_grenade, PLAYER_AMMO3) - READENTITY_BYTE(ammo_gauss_volume, PLAYER_AMMO3) - READENTITY_BYTE(ammo_rpg_state, PLAYER_AMMO3) - READENTITY_BYTE(mode_tempstate, PLAYER_AMMO3) - setorigin(this, origin); - /* these only concern the current player */ + /* these only concern the current HLPlayer */ CSQC_UpdateSeat(); if (this != pSeat->m_ePlayer) return; @@ -301,8 +223,7 @@ player::ReceiveEntity(float new, float flChanged) if (flChanged == UPDATE_ALL) PredictPreFrame(); - if (flChanged & PLAYER_AMMO1 || flChanged & PLAYER_AMMO2 || flChanged & PLAYER_AMMO3) { - Weapons_AmmoUpdate(this); + if (flChanged & PLAYER_AMMOTYPES ) { HUD_AmmoNotify_Check(this); } @@ -312,99 +233,48 @@ player::ReceiveEntity(float new, float flChanged) /* ================= -player::PredictPostFrame +HLPlayer::PredictPostFrame Save the last valid server values away in the _net variants of each field so we can roll them back later. ================= */ void -player::PredictPreFrame(void) +HLPlayer::PredictPreFrame(void) { /* the generic client attributes */ - NSClientPlayer::PredictPreFrame(); + super::PredictPreFrame(); SAVE_STATE(anim_top) SAVE_STATE(anim_top_delay) SAVE_STATE(anim_top_time) SAVE_STATE(anim_bottom) SAVE_STATE(anim_bottom_time) - - SAVE_STATE(glock_mag) - SAVE_STATE(mp5_mag) - SAVE_STATE(python_mag) - SAVE_STATE(shotgun_mag) - SAVE_STATE(crossbow_mag) - SAVE_STATE(rpg_mag) - SAVE_STATE(satchel_chg) - - SAVE_STATE(ammo_9mm) - SAVE_STATE(ammo_357) - SAVE_STATE(ammo_buckshot) - SAVE_STATE(ammo_bolt) - SAVE_STATE(ammo_rocket) - SAVE_STATE(ammo_uranium) - SAVE_STATE(ammo_handgrenade) - SAVE_STATE(ammo_satchel) - SAVE_STATE(ammo_tripmine) - SAVE_STATE(ammo_snark) - SAVE_STATE(ammo_hornet) - - SAVE_STATE(ammo_m203_grenade) - SAVE_STATE(ammo_gauss_volume) - SAVE_STATE(ammo_rpg_state) - SAVE_STATE(mode_tempstate) } /* ================= -player::PredictPostFrame +HLPlayer::PredictPostFrame Where we roll back our values to the ones last sent/verified by the server. ================= */ void -player::PredictPostFrame(void) +HLPlayer::PredictPostFrame(void) { /* the generic client attributes */ - NSClientPlayer::PredictPostFrame(); + super::PredictPostFrame(); ROLL_BACK(anim_top) ROLL_BACK(anim_top_delay) ROLL_BACK(anim_top_time) ROLL_BACK(anim_bottom) ROLL_BACK(anim_bottom_time) - - ROLL_BACK(glock_mag) - ROLL_BACK(mp5_mag) - ROLL_BACK(python_mag) - ROLL_BACK(shotgun_mag) - ROLL_BACK(crossbow_mag) - ROLL_BACK(rpg_mag) - ROLL_BACK(satchel_chg) - - ROLL_BACK(ammo_9mm) - ROLL_BACK(ammo_357) - ROLL_BACK(ammo_buckshot) - ROLL_BACK(ammo_m203_grenade) - ROLL_BACK(ammo_bolt) - ROLL_BACK(ammo_rocket) - ROLL_BACK(ammo_uranium) - ROLL_BACK(ammo_handgrenade) - ROLL_BACK(ammo_satchel) - ROLL_BACK(ammo_tripmine) - ROLL_BACK(ammo_snark) - ROLL_BACK(ammo_hornet) - - ROLL_BACK(ammo_m203_grenade) - ROLL_BACK(ammo_gauss_volume) - ROLL_BACK(ammo_rpg_state) - ROLL_BACK(mode_tempstate) } #else void -player::Save(float handle) +HLPlayer::Save(float handle) { super::Save(handle); @@ -413,38 +283,10 @@ player::Save(float handle) SaveFloat(handle, "anim_top_delay", anim_top_delay); SaveInt(handle, "anim_bottom", anim_bottom); SaveFloat(handle, "anim_bottom_time", anim_bottom_time); - - /* ammo 1 */ - SaveInt(handle, "glock_mag", glock_mag); - SaveInt(handle, "mp5_mag", mp5_mag); - SaveInt(handle, "python_mag", python_mag); - SaveInt(handle, "shotgun_mag", shotgun_mag); - SaveInt(handle, "crossbow_mag", crossbow_mag); - SaveInt(handle, "rpg_mag", rpg_mag); - SaveInt(handle, "satchel_chg", satchel_chg); - - /* ammo 2 */ - SaveInt(handle, "ammo_9mm", ammo_9mm); - SaveInt(handle, "ammo_357", ammo_357); - SaveInt(handle, "ammo_buckshot", ammo_buckshot); - SaveInt(handle, "ammo_bolt", ammo_bolt); - SaveInt(handle, "ammo_rocket", ammo_rocket); - SaveInt(handle, "ammo_uranium", ammo_uranium); - SaveInt(handle, "ammo_handgrenade", ammo_handgrenade); - SaveInt(handle, "ammo_satchel", ammo_satchel); - SaveInt(handle, "ammo_tripmine", ammo_tripmine); - SaveInt(handle, "ammo_snark", ammo_snark); - SaveInt(handle, "ammo_hornet", ammo_hornet); - - /* ammo 3 */ - SaveInt(handle, "ammo_m203_grenade", ammo_m203_grenade); - SaveInt(handle, "ammo_gauss_volume", ammo_gauss_volume); - SaveInt(handle, "ammo_rpg_state", ammo_rpg_state); - SaveInt(handle, "mode_tempstate", mode_tempstate); } void -player::Restore(string strKey, string strValue) +HLPlayer::Restore(string strKey, string strValue) { switch (strKey) { case "anim_top": @@ -462,82 +304,13 @@ player::Restore(string strKey, string strValue) case "anim_bottom_time": anim_bottom_time = ReadFloat(strValue); break; - /* AMMO 1 */ - case "glock_mag": - glock_mag = ReadInt(strValue); - break; - case "mp5_mag": - mp5_mag = ReadInt(strValue); - break; - case "python_mag": - python_mag = ReadInt(strValue); - break; - case "shotgun_mag": - shotgun_mag = ReadInt(strValue); - break; - case "crossbow_mag": - crossbow_mag = ReadInt(strValue); - break; - case "rpg_mag": - rpg_mag = ReadInt(strValue); - break; - case "satchel_chg": - satchel_chg = ReadInt(strValue); - break; - /* AMMO 2 */ - case "ammo_9mm": - ammo_9mm = ReadInt(strValue); - break; - case "ammo_357": - ammo_357 = ReadInt(strValue); - break; - case "ammo_buckshot": - ammo_buckshot = ReadInt(strValue); - break; - case "ammo_bolt": - ammo_bolt = ReadInt(strValue); - break; - case "ammo_rocket": - ammo_rocket = ReadInt(strValue); - break; - case "ammo_uranium": - ammo_uranium = ReadInt(strValue); - break; - case "ammo_handgrenade": - ammo_handgrenade = ReadInt(strValue); - break; - case "ammo_satchel": - ammo_satchel = ReadInt(strValue); - break; - case "ammo_tripmine": - ammo_tripmine = ReadInt(strValue); - break; - case "ammo_snark": - ammo_snark = ReadInt(strValue); - break; - case "ammo_hornet": - ammo_hornet = ReadInt(strValue); - break; - /* AMMO 3 */ - case "ammo_m203_grenade": - ammo_m203_grenade = ReadInt(strValue); - break; - case "ammo_gauss_volume": - ammo_gauss_volume = ReadInt(strValue); - break; - case "ammo_rpg_state": - ammo_rpg_state = ReadInt(strValue); - break; - case "mode_tempstate": - mode_tempstate = ReadInt(strValue); - break; default: super::Restore(strKey, strValue); } } void -player::EvaluateEntity(void) +HLPlayer::EvaluateEntity(void) { /* the generic client attributes */ NSClientPlayer::EvaluateEntity(); @@ -548,45 +321,21 @@ player::EvaluateEntity(void) EVALUATE_FIELD(anim_bottom, PLAYER_BOTTOMFRAME) EVALUATE_FIELD(anim_bottom_time, PLAYER_BOTTOMFRAME) - EVALUATE_FIELD(glock_mag, PLAYER_AMMO1) - EVALUATE_FIELD(mp5_mag, PLAYER_AMMO1) - EVALUATE_FIELD(python_mag, PLAYER_AMMO1) - EVALUATE_FIELD(shotgun_mag, PLAYER_AMMO1) - EVALUATE_FIELD(crossbow_mag, PLAYER_AMMO1) - EVALUATE_FIELD(rpg_mag, PLAYER_AMMO1) - EVALUATE_FIELD(satchel_chg, PLAYER_AMMO1) - - EVALUATE_FIELD(ammo_9mm, PLAYER_AMMO2) - EVALUATE_FIELD(ammo_357, PLAYER_AMMO2) - EVALUATE_FIELD(ammo_buckshot, PLAYER_AMMO2) - EVALUATE_FIELD(ammo_bolt, PLAYER_AMMO2) - EVALUATE_FIELD(ammo_rocket, PLAYER_AMMO2) - EVALUATE_FIELD(ammo_uranium, PLAYER_AMMO2) - EVALUATE_FIELD(ammo_handgrenade, PLAYER_AMMO2) - EVALUATE_FIELD(ammo_satchel, PLAYER_AMMO2) - EVALUATE_FIELD(ammo_tripmine, PLAYER_AMMO2) - EVALUATE_FIELD(ammo_snark, PLAYER_AMMO2) - EVALUATE_FIELD(ammo_hornet, PLAYER_AMMO2) - - EVALUATE_FIELD(ammo_m203_grenade, PLAYER_AMMO3) - EVALUATE_FIELD(ammo_gauss_volume, PLAYER_AMMO3) - EVALUATE_FIELD(ammo_rpg_state, PLAYER_AMMO3) - EVALUATE_FIELD(mode_tempstate, PLAYER_AMMO3) } /* ================= -player::SendEntity +HLPlayer::SendEntity ================= */ float -player::SendEntity(entity ePEnt, float flChanged) +HLPlayer::SendEntity(entity ePEnt, float flChanged) { /* just-in-case. */ - if (classname != "player") + if (IsPlayer() == false) return (0); - /* don't broadcast invisible players */ + /* don't broadcast invisible HLPlayers */ if (IsFakeSpectator() && ePEnt != this) return (0); if (!GetModelindex() && ePEnt != this) @@ -594,9 +343,6 @@ player::SendEntity(entity ePEnt, float flChanged) flChanged = OptimiseChangedFlags(ePEnt, flChanged); - WriteByte(MSG_ENTITY, ENT_PLAYER); - WriteFloat(MSG_ENTITY, flChanged); - /* the generic client attributes */ NSClientPlayer::SendEntity(ePEnt, flChanged); @@ -606,31 +352,6 @@ player::SendEntity(entity ePEnt, float flChanged) SENDENTITY_BYTE(anim_bottom, PLAYER_BOTTOMFRAME) SENDENTITY_FLOAT(anim_bottom_time, PLAYER_BOTTOMFRAME) - SENDENTITY_BYTE(glock_mag, PLAYER_AMMO1) - SENDENTITY_BYTE(mp5_mag, PLAYER_AMMO1) - SENDENTITY_BYTE(python_mag, PLAYER_AMMO1) - SENDENTITY_BYTE(shotgun_mag, PLAYER_AMMO1) - SENDENTITY_BYTE(crossbow_mag, PLAYER_AMMO1) - SENDENTITY_BYTE(rpg_mag, PLAYER_AMMO1) - SENDENTITY_BYTE(satchel_chg, PLAYER_AMMO1) - - SENDENTITY_BYTE(ammo_9mm, PLAYER_AMMO2) - SENDENTITY_BYTE(ammo_357, PLAYER_AMMO2) - SENDENTITY_BYTE(ammo_buckshot, PLAYER_AMMO2) - SENDENTITY_BYTE(ammo_bolt, PLAYER_AMMO2) - SENDENTITY_BYTE(ammo_rocket, PLAYER_AMMO2) - SENDENTITY_BYTE(ammo_uranium, PLAYER_AMMO2) - SENDENTITY_BYTE(ammo_handgrenade, PLAYER_AMMO2) - SENDENTITY_BYTE(ammo_satchel, PLAYER_AMMO2) - SENDENTITY_BYTE(ammo_tripmine, PLAYER_AMMO2) - SENDENTITY_BYTE(ammo_snark, PLAYER_AMMO2) - SENDENTITY_BYTE(ammo_hornet, PLAYER_AMMO2) - - SENDENTITY_BYTE(ammo_m203_grenade, PLAYER_AMMO3) - SENDENTITY_BYTE(ammo_gauss_volume, PLAYER_AMMO3) - SENDENTITY_BYTE(ammo_rpg_state, PLAYER_AMMO3) - SENDENTITY_BYTE(mode_tempstate, PLAYER_AMMO3) - return (1); } #endif diff --git a/src/shared/pmove.qc b/src/shared/pmove.qc index fc12046..21596d2 100644 --- a/src/shared/pmove.qc +++ b/src/shared/pmove.qc @@ -23,15 +23,20 @@ #define PMOVE_AIRACCELERATE 10 #define PMOVE_WATERACCELERATE 10 #define PMOVE_ACCELERATE 10 -#define PMOVE_MAXSPEED 270 -#define PMOVE_STEP_WALKSPEED 135 -#define PMOVE_STEP_RUNSPEED 220 -#define PHY_VIEWPOS [0,0,28] -#define PHY_VIEWPOS_CROUCHED [0,0,12] +#define PMOVE_STEP_WALKSPEED 270 +#define PMOVE_STEP_CROUCHSPEED 90 +#define PMOVE_BOXCENTER true +#define PMOVE_NORMAL_HEIGHT 72 +#define PMOVE_NORMAL_VIEWHEIGHT 64 +#define PMOVE_CROUCH_HEIGHT 36 +#define PMOVE_CROUCH_VIEWHEIGHT 30 +/* disable prone, run and lean */ +#define PMOVE_STEP_RUNSPEED 0 +#define PMOVE_PRONE_HEIGHT 0 void -player::Physics_Jump(void) +HLPlayer::Physics_Jump(void) { if (waterlevel >= 2) { if (watertype == CONTENT_WATER) { @@ -43,7 +48,7 @@ player::Physics_Jump(void) } } else { /* Half-Life: Longjump module */ - if (flags & FL_CROUCHING && g_items & 0x00008000i) { + if (IsCrouching() && HasItem("item_longjump")) { makevectors([0, v_angle[1], 0]); velocity = v_forward * 512; velocity[2] += 100; diff --git a/src/shared/w_crossbow.qc b/src/shared/w_crossbow.qc index 56829a5..12474dd 100644 --- a/src/shared/w_crossbow.qc +++ b/src/shared/w_crossbow.qc @@ -48,7 +48,7 @@ w_crossbow_precache(void) } void -w_crossbow_updateammo(player pl) +w_crossbow_updateammo(NSClientPlayer pl) { Weapons_UpdateAmmo(pl, pl.crossbow_mag, pl.ammo_bolt, -1); } @@ -60,7 +60,7 @@ w_crossbow_wmodel(void) } string -w_crossbow_pmodel(player pl) +w_crossbow_pmodel(NSClientPlayer pl) { return "models/p_crossbow.mdl"; } @@ -72,7 +72,7 @@ w_crossbow_deathmsg(void) } int -w_crossbow_pickup(player pl, int new, int startammo) +w_crossbow_pickup(NSClientPlayer pl, int new, int startammo) { #ifdef SERVER int addAmmo = (startammo == -1) ? 5 : startammo; @@ -94,7 +94,7 @@ w_crossbow_pickup(player pl, int new, int startammo) } void -w_crossbow_draw(player pl) +w_crossbow_draw(NSClientPlayer pl) { Weapons_SetModel("models/v_crossbow.mdl"); @@ -105,13 +105,13 @@ w_crossbow_draw(player pl) } void -w_crossbow_holster(player pl) +w_crossbow_holster(NSClientPlayer pl) { Weapons_ViewAnimation(pl, CROSSBOW_HOLSTER1); } void -w_crossbow_primary(player pl) +w_crossbow_primary(NSClientPlayer pl) { if (pl.w_attack_next > 0.0) return; @@ -182,7 +182,7 @@ w_crossbow_primary(player pl) Weapons_ViewAnimation(pl, CROSSBOW_FIRE3); } - if (pl.flags & FL_CROUCHING) + if (pl.IsCrouching()) Animation_PlayerTop(pl, ANIM_CR_SHOOTBOW, 0.25f); else Animation_PlayerTop(pl, ANIM_SHOOTBOW, 0.25f); @@ -307,7 +307,7 @@ w_crossbow_crosshair(player pl) float w_crossbow_aimanim(player pl) { - return pl.flags & FL_CROUCHING ? ANIM_CR_AIMBOW : ANIM_AIMBOW; + return pl.IsCrouching() ? ANIM_CR_AIMBOW : ANIM_AIMBOW; } void diff --git a/src/shared/w_crowbar.qc b/src/shared/w_crowbar.qc index c52a42c..453f77c 100644 --- a/src/shared/w_crowbar.qc +++ b/src/shared/w_crowbar.qc @@ -28,7 +28,7 @@ enum }; void -w_crowbar_precache(void) +HLCrowbar::Precache(void) { #ifdef SERVER Sound_Precache("weapon_crowbar.hit"); @@ -65,20 +65,20 @@ w_crowbar_deathmsg(void) } void -w_crowbar_draw(player pl) +HLCrowbar::Draw(player pl) { Weapons_SetModel("models/v_crowbar.mdl"); Weapons_ViewAnimation(pl, CBAR_DRAW); } void -w_crowbar_holster(player pl) +HLCrowbar::Holster(player pl) { Weapons_ViewAnimation(pl, CBAR_HOLSTER); } void -w_crowbar_primary(player pl) +HLCrowbar::Primary(player pl) { int anim = 0; vector src; @@ -115,7 +115,7 @@ w_crowbar_primary(player pl) Weapons_ViewAnimation(pl, trace_fraction >= 1 ? CBAR_ATTACK3MISS:CBAR_ATTACK3HIT); } - if (pl.flags & FL_CROUCHING) + if (pl.IsCrouching()) Animation_PlayerTop(pl, ANIM_CR_SHOOTCROWBAR, 0.41f); else Animation_PlayerTop(pl, ANIM_SHOOTCROWBAR, 0.5f); @@ -145,7 +145,7 @@ w_crowbar_primary(player pl) } void -w_crowbar_release(player pl) +HLCrowbar::Release(player pl) { if (pl.w_idle_next) { return; @@ -156,13 +156,13 @@ w_crowbar_release(player pl) } float -w_crowbar_aimanim(player pl) +HLCrowbar::PlayerAnim(player pl) { - return pl.flags & FL_CROUCHING ? ANIM_CR_AIMCROWBAR : ANIM_AIMCROWBAR; + return pl.IsCrouching() ? ANIM_CR_AIMCROWBAR : ANIM_AIMCROWBAR; } void -w_crowbar_hudpic(player pl, int selected, vector pos, float a) +HLCrowbar::WeaponIcon(player pl, int selected, vector pos, float a) { #ifdef CLIENT if (selected) { @@ -192,12 +192,13 @@ w_crowbar_hudpic(player pl, int selected, vector pos, float a) } int -w_crowbar_isempty(player pl) +HLCrowbar::IsEmpty(player pl) { return 0; } -weapontype_t w_crowbar_type(player pl) +weapontype_t +HLCrowbar::Type(player pl) { return WPNTYPE_CLOSE; } diff --git a/src/shared/w_egon.qc b/src/shared/w_egon.qc index d5a2352..f1f8d75 100644 --- a/src/shared/w_egon.qc +++ b/src/shared/w_egon.qc @@ -272,7 +272,7 @@ void w_egon_crosshair(player pl) float w_egon_aimanim(player pl) { - return pl.flags & FL_CROUCHING ? ANIM_CR_AIMEGON : ANIM_AIMEGON; + return pl.IsCrouching() ? ANIM_CR_AIMEGON : ANIM_AIMEGON; } void w_egon_hudpic(player pl, int selected, vector pos, float a) diff --git a/src/shared/w_gauss.qc b/src/shared/w_gauss.qc index f8c00a9..15543d4 100644 --- a/src/shared/w_gauss.qc +++ b/src/shared/w_gauss.qc @@ -182,7 +182,7 @@ void w_gauss_primary(player pl) pl.ammo_uranium -= 2; - if (pl.flags & FL_CROUCHING) + if (pl.IsCrouching()) Animation_PlayerTop(pl, ANIM_CR_SHOOTGAUSS, 0.43f); else Animation_PlayerTop(pl, ANIM_SHOOTGAUSS, 0.43f); @@ -224,7 +224,7 @@ void w_gauss_release(player pl) } else if (pl.mode_tempstate == GAUSSTATE_FULL) { Weapons_ViewAnimation(pl, GAUSS_FIRE1); - if (pl.flags & FL_CROUCHING) + if (pl.IsCrouching()) Animation_PlayerTop(pl, ANIM_CR_SHOOTGAUSS, 0.43f); else Animation_PlayerTop(pl, ANIM_SHOOTGAUSS, 0.43f); @@ -382,7 +382,7 @@ void w_gauss_crosshair(player pl) float w_gauss_aimanim(player pl) { - return pl.flags & FL_CROUCHING ? ANIM_CR_AIMGAUSS : ANIM_AIMGAUSS; + return pl.IsCrouching() ? ANIM_CR_AIMGAUSS : ANIM_AIMGAUSS; } void w_gauss_hudpic(player pl, int selected, vector pos, float a) diff --git a/src/shared/w_glock.qc b/src/shared/w_glock.qc index c5a2b1b..2da2cf1 100644 --- a/src/shared/w_glock.qc +++ b/src/shared/w_glock.qc @@ -178,7 +178,7 @@ w_glock_primary(player pl) Weapons_ViewAnimation(pl, GLOCK_SHOOT_EMPTY); } - if (pl.flags & FL_CROUCHING) + if (pl.IsCrouching()) Animation_PlayerTop(pl, ANIM_CR_SHOOT1HAND, 0.2f); else Animation_PlayerTop(pl, ANIM_SHOOT1HAND, 0.2f); @@ -222,7 +222,7 @@ w_glock_secondary(player pl) Weapons_ViewAnimation(pl, GLOCK_SHOOT_EMPTY); } - if (pl.flags & FL_CROUCHING) + if (pl.IsCrouching()) Animation_PlayerTop(pl, ANIM_CR_SHOOT1HAND, 0.2f); else Animation_PlayerTop(pl, ANIM_SHOOT1HAND, 0.2f); @@ -302,7 +302,7 @@ w_glock_release(player pl) float w_glock_aimanim(player pl) { - return pl.flags & FL_CROUCHING ? ANIM_CR_AIM1HAND : ANIM_AIM1HAND; + return pl.IsCrouching() ? ANIM_CR_AIM1HAND : ANIM_AIM1HAND; } void diff --git a/src/shared/w_handgrenade.qc b/src/shared/w_handgrenade.qc index 92f1c51..eff41e4 100644 --- a/src/shared/w_handgrenade.qc +++ b/src/shared/w_handgrenade.qc @@ -162,7 +162,7 @@ void w_handgrenade_release(player pl) pl.w_attack_next = 1.0f; pl.w_idle_next = 0.5f; - if (pl.flags & FL_CROUCHING) + if (pl.IsCrouching()) Animation_PlayerTop(pl, ANIM_CR_SHOOTCROWBAR, 0.41f); else Animation_PlayerTop(pl, ANIM_SHOOTCROWBAR, 0.5f); @@ -191,7 +191,7 @@ void w_handgrenade_release(player pl) float w_handgrenade_aimanim(player pl) { - return pl.flags & FL_CROUCHING ? ANIM_CR_AIMCROWBAR : ANIM_AIMCROWBAR; + return pl.IsCrouching() ? ANIM_CR_AIMCROWBAR : ANIM_AIMCROWBAR; } void diff --git a/src/shared/w_hornetgun.qc b/src/shared/w_hornetgun.qc index 3caf506..4228475 100644 --- a/src/shared/w_hornetgun.qc +++ b/src/shared/w_hornetgun.qc @@ -173,7 +173,7 @@ w_hornetgun_primary(player pl) pl.ammo_hornet--; Weapons_ViewAnimation(pl, HORNETGUN_SHOOT); - if (pl.flags & FL_CROUCHING) + if (pl.IsCrouching()) Animation_PlayerTop(pl, ANIM_CR_SHOOTHIVE, 0.43f); else Animation_PlayerTop(pl, ANIM_SHOOTHIVE, 0.43f); @@ -203,7 +203,7 @@ w_hornetgun_secondary(player pl) pl.ammo_hornet--; Weapons_ViewAnimation(pl, HORNETGUN_SHOOT); - if (pl.flags & FL_CROUCHING) + if (pl.IsCrouching()) Animation_PlayerTop(pl, ANIM_CR_SHOOTHIVE, 0.43f); else Animation_PlayerTop(pl, ANIM_SHOOTHIVE, 0.43f); @@ -239,7 +239,7 @@ w_hornetgun_crosshair(player pl) float w_hornetgun_aimanim(player pl) { - return pl.flags & FL_CROUCHING ? ANIM_CR_AIMHIVE : ANIM_AIMHIVE; + return pl.IsCrouching() ? ANIM_CR_AIMHIVE : ANIM_AIMHIVE; } void diff --git a/src/shared/w_mp5.qc b/src/shared/w_mp5.qc deleted file mode 100644 index ada8998..0000000 --- a/src/shared/w_mp5.qc +++ /dev/null @@ -1,418 +0,0 @@ -/* - * Copyright (c) 2016-2021 Marco Cawthorne - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER - * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING - * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -enum -{ - MP5_IDLE1, - MP5_IDLE2, - MP5_GRENADE, - MP5_RELOAD, - MP5_DRAW, -#ifdef GEARBOX - MP5_DEPLOY, /* not sure what this is about */ -#endif - MP5_FIRE1, - MP5_FIRE2, - MP5_FIRE3 -}; - -#ifdef CLIENT -void w_mp5_ejectshell(void) -{ - static void w_mp5_ejectshell_death(void) { - remove(self); - } - static void w_mp5_ejectshell_touch(void) { - if (other == world) - Sound_Play(self, CHAN_BODY, "modelevent_shell.land"); - } - entity eShell = spawn(); - setmodel(eShell, "models/shell.mdl"); - eShell.solid = SOLID_BBOX; - eShell.movetype = MOVETYPE_BOUNCE; - eShell.drawmask = MASK_ENGINE; - eShell.angles = [pSeat->m_eViewModel.angles[0], pSeat->m_eViewModel.angles[1], 0]; - eShell.velocity = pSeat->m_vecPredictedVelocity; - - float r = random(0.0, 50.0); - makevectors(pSeat->m_eViewModel.angles); - eShell.velocity += (v_forward * 0); - eShell.velocity += (v_right * 45); - eShell.velocity += (v_up * (145 + r)); - eShell.touch = w_mp5_ejectshell_touch; - - eShell.avelocity = [0,45,900]; - eShell.think = w_mp5_ejectshell_death; - eShell.nextthink = time + 2.5f; - setsize(eShell, [0,0,0], [0,0,0]); - setorigin(eShell, pSeat->m_eViewModel.origin + (v_forward * 30) + (v_right * 8) + (v_up * -15)); -} -#endif - -void -w_mp5_precache(void) -{ -#ifdef SERVER - Sound_Precache("weapon_mp5.shoot"); - Sound_Precache("weapon_mp5.gl"); - Sound_Precache("weapon_mp5.empty"); - precache_model("models/w_9mmar.mdl"); - precache_model("models/grenade.mdl"); -#else - precache_model("models/v_9mmar.mdl"); - precache_model("models/p_9mmar.mdl"); - Sound_Precache("modelevent_shell.land"); -#endif -} - -int -w_mp5_pickup(player pl, int new, int startammo) -{ -#ifdef SERVER -#ifdef GEARBOX - int addAmmo = (startammo == -1) ? 50 : startammo; -#else - int addAmmo = (startammo == -1) ? 25 : startammo; -#endif - - if (new) { - pl.mp5_mag = addAmmo; - return (1); - } - - if (pl.ammo_9mm < MAX_A_9MM) { - pl.ammo_9mm = bound(0, pl.ammo_9mm + addAmmo, MAX_A_9MM); - } else { - if (!new) - return (0); - } -#endif - return (1); -} - -void -w_mp5_updateammo(player pl) -{ - Weapons_UpdateAmmo(pl, pl.mp5_mag, pl.ammo_9mm, pl.ammo_m203_grenade); -} - -string -w_mp5_wmodel(void) -{ - return "models/w_9mmar.mdl"; -} - -string -w_mp5_pmodel(player pl) -{ - return "models/p_9mmar.mdl"; -} - -string -w_mp5_deathmsg(void) -{ - return ""; -} - -void -w_mp5_draw(player pl) -{ - Weapons_SetModel("models/v_9mmar.mdl"); - Weapons_ViewAnimation(pl, MP5_DRAW); -} - -void -w_mp5_holster(player pl) -{ - Weapons_ViewAnimation(pl, MP5_DRAW); -} - -void -w_mp5_primary(player pl) -{ - if (pl.w_attack_next > 0.0f) - return; - if (pl.gflags & GF_SEMI_TOGGLED) - return; - - /* Ammo check */ - bool out_of_ammo = (pl.mp5_mag <= 0i) ? true : false; - if (out_of_ammo || (pl.WaterLevel() >= WATERLEVEL_SUBMERGED)) { -#ifdef SERVER - Sound_Play(pl, CHAN_AUTO, "weapon_mp5.empty"); -#endif - pl.gflags |= GF_SEMI_TOGGLED; - return; - } - - pl.mp5_mag--; - - /* Actual firing */ - int r = floor(pseudorandom() * 3.0f); - switch (r) { - case 1: - Weapons_ViewAnimation(pl, MP5_FIRE1); - break; - case 2: - Weapons_ViewAnimation(pl, MP5_FIRE2); - break; - default: - Weapons_ViewAnimation(pl, MP5_FIRE3); - break; - } - - Weapons_ViewPunchAngle(pl, [-2,0,0]); - -#ifdef CLIENT - View_SetMuzzleflash(MUZZLE_RIFLE); - View_AddEvent(w_mp5_ejectshell, 0.0f); -#else - /* singleplayer is more accurate */ - if (cvar("sv_playerslots") == 1) { - TraceAttack_FireBulletsWithDecal(1, Weapons_GetCameraPos(pl), Skill_GetValue("plr_9mmAR_bullet", 5), [0.025,0.025], WEAPON_MP5, "Impact.BigShot"); - } else { - TraceAttack_FireBulletsWithDecal(1, Weapons_GetCameraPos(pl), Skill_GetValue("plr_9mmAR_bullet", 5), [0.05,0.05], WEAPON_MP5, "Impact.BigShot"); - } - - Sound_Play(pl, CHAN_WEAPON, "weapon_mp5.shoot"); -#endif - - if (pl.flags & FL_CROUCHING) - Animation_PlayerTop(pl, ANIM_CR_SHOOTMP5, 0.1f); - else - Animation_PlayerTop(pl, ANIM_SHOOTMP5, 0.1f); - - pl.w_attack_next = 0.085f; - pl.w_idle_next = 10.0f; -} - -void -w_mp5_secondary(player pl) -{ - if (pl.w_attack_next > 0.0f) - return; - if (pl.gflags & GF_SEMI_TOGGLED) - return; - - /* Ammo check */ - bool out_of_ammo = (pl.ammo_m203_grenade <= 0i) ? true : false; - if (out_of_ammo || pl.WaterLevel() >= WATERLEVEL_SUBMERGED) { -#ifdef SERVER - Sound_Play(pl, CHAN_AUTO, "weapon_mp5.empty"); -#endif - pl.gflags |= GF_SEMI_TOGGLED; - return; - } - - pl.ammo_m203_grenade--; - -#ifdef SERVER - NSProjectile_SpawnDef("projectile_ARgrenade", pl); - Sound_Play(pl, CHAN_WEAPON, "weapon_mp5.gl"); -#endif - - Weapons_ViewPunchAngle(pl, [-10.0f, 0.0f, 0.0f]); - Weapons_ViewAnimation(pl, MP5_GRENADE); - - if (pl.flags & FL_CROUCHING) - Animation_PlayerTop(pl, ANIM_CR_SHOOTMP5, 0.45f); - else - Animation_PlayerTop(pl, ANIM_SHOOTMP5, 0.45f); - - pl.w_attack_next = 1.0f; - pl.w_idle_next = 10.0f; -} - -void -w_mp5_reload(player pl) -{ - if (pl.w_attack_next) { - return; - } - - /* Ammo check */ - if (pl.mp5_mag >= 50) { - return; - } - if (pl.ammo_9mm <= 0) { - return; - } - - Weapons_ViewAnimation(pl, MP5_RELOAD); - -#ifdef SERVER - static void w_mp5_reload_done(void) { - player pl = (player)self; - Weapons_ReloadWeapon(pl, player::mp5_mag, player::ammo_9mm, 50); - } - - pl.think = w_mp5_reload_done; - pl.nextthink = time + 1.4f; -#endif - - pl.w_attack_next = 1.5f; - pl.w_idle_next = 10.0f; -} - -void -w_mp5_release(player pl) -{ - - /* auto-reload if need be */ - if (pl.w_attack_next <= 0.0) - if (pl.mp5_mag == 0 && pl.ammo_9mm > 0) { - Weapons_Reload(pl); - return; - } - if (pl.w_idle_next > 0.0) { - return; - } - - int r = floor(pseudorandom() * 3.0f); - if (r == 1) { - Weapons_ViewAnimation(pl, MP5_IDLE1); - } else { - Weapons_ViewAnimation(pl, MP5_IDLE2); - } - - pl.w_idle_next = 15.0f; -} - -void -w_mp5_crosshair(player pl) -{ -#ifdef CLIENT - vector aicon_pos; - - Cross_DrawSub(g_cross_spr, [24,24], [0,48/128], [0.1875, 0.1875]); - - HUD_DrawAmmo1(); - HUD_DrawAmmo2(); - HUD_DrawAmmo3(); - - aicon_pos = g_hudmins + [g_hudres[0] - 48, g_hudres[1] - 42]; - drawsubpic( - aicon_pos, - [24,24], - g_hud7_spr, - [0,72/128], - [24/256, 24/128], - g_hud_color, - pSeatLocal->m_flAmmo2Alpha, - DRAWFLAG_ADDITIVE - ); - - aicon_pos = g_hudmins + [g_hudres[0] - 48, g_hudres[1] - 74]; - drawsubpic( - aicon_pos, - [24,24], - g_hud7_spr, - [48/256,72/128], - [24/256, 24/128], - g_hud_color, - pSeatLocal->m_flAmmo3Alpha, - DRAWFLAG_ADDITIVE - ); -#endif -} - -float -w_mp5_aimanim(player pl) -{ - return pl.flags & ANIM_CR_AIMMP5 ? ANIM_CR_AIMCROWBAR : ANIM_AIMMP5; -} - -void -w_mp5_hudpic(player pl, int selected, vector pos, float a) -{ -#ifdef CLIENT - vector hud_col; - - if (pl.mp5_mag == 0 && pl.ammo_9mm == 0 && pl.ammo_m203_grenade == 0) - hud_col = [1,0,0]; - else - hud_col = g_hud_color; - - if (selected) { - drawsubpic( - pos, - [170,45], - g_hud4_spr, - [0,135/256], - [170/256,45/256], - hud_col, - a, - DRAWFLAG_ADDITIVE - ); - } else { - drawsubpic( - pos, - [170,45], - g_hud1_spr, - [0,135/256], - [170/256,45/256], - hud_col, - a, - DRAWFLAG_ADDITIVE - ); - } - - HUD_DrawAmmoBar(pos, pl.ammo_9mm, MAX_A_9MM, a); - HUD_DrawAmmoBar(pos + [25, 0], pl.ammo_m203_grenade, MAX_A_M203_GRENADE, a); -#endif -} - -int -w_mp5_isempty(player pl) -{ - - if (pl.mp5_mag <= 0 && pl.ammo_9mm <= 0 && pl.ammo_m203_grenade <= 0) - return 1; - - return 0; -} - -weapontype_t -w_mp5_type(player pl) -{ - return WPNTYPE_RANGED; -} - -weapon_t w_mp5 = -{ - .name = "9mmAR", - .id = ITEM_MP5, - .slot = 2, - .slot_pos = 0, - .weight = 15, - .draw = w_mp5_draw, - .holster = w_mp5_holster, - .primary = w_mp5_primary, - .secondary = w_mp5_secondary, - .reload = w_mp5_reload, - .release = w_mp5_release, - .postdraw = w_mp5_crosshair, - .precache = w_mp5_precache, - .pickup = w_mp5_pickup, - .updateammo = w_mp5_updateammo, - .wmodel = w_mp5_wmodel, - .pmodel = w_mp5_pmodel, - .deathmsg = w_mp5_deathmsg, - .aimanim = w_mp5_aimanim, - .isempty = w_mp5_isempty, - .type = w_mp5_type, - .hudpic = w_mp5_hudpic -}; \ No newline at end of file diff --git a/src/shared/w_python.qc b/src/shared/w_python.qc index c8479a2..383599a 100644 --- a/src/shared/w_python.qc +++ b/src/shared/w_python.qc @@ -136,7 +136,7 @@ w_python_primary(player pl) Weapons_ViewPunchAngle(pl, [-10,0,0]); Weapons_ViewAnimation(pl, PYTHON_FIRE1); - if (pl.flags & FL_CROUCHING) + if (pl.IsCrouching()) Animation_PlayerTop(pl, ANIM_CR_SHOOTPYTHON, 0.43f); else Animation_PlayerTop(pl, ANIM_SHOOTPYTHON, 0.43f); @@ -274,7 +274,7 @@ w_python_crosshair(player pl) float w_python_aimanim(player pl) { - return pl.flags & FL_CROUCHING ? ANIM_CR_AIMPYTHON : ANIM_AIMPYTHON; + return pl.IsCrouching() ? ANIM_CR_AIMPYTHON : ANIM_AIMPYTHON; } void diff --git a/src/shared/w_rpg.qc b/src/shared/w_rpg.qc index eacddc7..ee390b1 100644 --- a/src/shared/w_rpg.qc +++ b/src/shared/w_rpg.qc @@ -128,7 +128,7 @@ void w_rpg_primary(player pl) Weapons_ViewAnimation(pl, RPG_FIRE2); Weapons_ViewPunchAngle(pl, [-10,0,0]); - if (pl.flags & FL_CROUCHING) + if (pl.IsCrouching()) Animation_PlayerTop(pl, ANIM_CR_SHOOTRPG, 0.43f); else Animation_PlayerTop(pl, ANIM_SHOOTRPG, 0.43f); @@ -214,7 +214,7 @@ void w_rpg_secondary(player pl) float w_rpg_aimanim(player pl) { - return pl.flags & FL_CROUCHING ? ANIM_CR_AIMRPG : ANIM_AIMRPG; + return pl.IsCrouching() ? ANIM_CR_AIMRPG : ANIM_AIMRPG; } void w_rpg_hudpic(player pl, int selected, vector pos, float a) @@ -245,19 +245,19 @@ void w_rpg_hud(player pl) /* crosshair/laser */ if (pl.ammo_rpg_state == 1) { - float lerp; + float lerpValue; vector jitter = [0.0f, 0.0f, 0.0f]; Weapons_MakeVectors(pl); vector src = pl.origin + pl.view_ofs; traceline(src, src + (v_forward * 256), FALSE, pl); - lerp = Math_Lerp(18,6, trace_fraction); + lerpValue = lerp(18,6, trace_fraction); jitter[0] = (random(0,2) - 2) * (1 - trace_fraction); jitter[1] = (random(0,2) - 2) * (1 - trace_fraction); - laser_pos = g_hudmins + (g_hudres / 2) + ([-lerp,-lerp] / 2); + laser_pos = g_hudmins + (g_hudres / 2) + ([-lerpValue,-lerpValue] / 2); drawsubpic( laser_pos + jitter, - [lerp,lerp], + [lerpValue,lerpValue], g_laser_spr, [0,0], [1.0, 1.0], diff --git a/src/shared/w_satchel.qc b/src/shared/w_satchel.qc index 1f71d62..d187bf1 100644 --- a/src/shared/w_satchel.qc +++ b/src/shared/w_satchel.qc @@ -143,7 +143,7 @@ w_satchel_primary(player pl) pl.ammo_satchel--; pl.mode_tempstate = 1; /* mark us as having deployed something */ - if (pl.flags & FL_CROUCHING) + if (pl.IsCrouching()) Animation_PlayerTop(pl, ANIM_CR_SHOOTSQUEAK, 0.41f); else Animation_PlayerTop(pl, ANIM_SHOOTSQUEAK, 0.5f); @@ -192,7 +192,7 @@ w_satchel_secondary(player pl) NSProjectile_SpawnDef("projectile_satchel", pl); #endif - if (pl.flags & FL_CROUCHING) + if (pl.IsCrouching()) Animation_PlayerTop(pl, ANIM_CR_SHOOTSQUEAK, 0.41f); else Animation_PlayerTop(pl, ANIM_SHOOTSQUEAK, 0.5f); @@ -238,7 +238,7 @@ w_satchel_release(player pl) float w_satchel_aimanim(player pl) { - return pl.flags & FL_CROUCHING ? ANIM_CR_AIMSQUEAK : ANIM_AIMSQUEAK; + return pl.IsCrouching() ? ANIM_CR_AIMSQUEAK : ANIM_AIMSQUEAK; } void diff --git a/src/shared/w_shotgun.qc b/src/shared/w_shotgun.qc index 17d9604..33ea27b 100644 --- a/src/shared/w_shotgun.qc +++ b/src/shared/w_shotgun.qc @@ -219,7 +219,7 @@ w_shotgun_primary(player pl) Weapons_ViewAnimation(pl, SHOTGUN_FIRE1); Weapons_ViewPunchAngle(pl, [-5,0,0]); - if (pl.flags & FL_CROUCHING) + if (pl.IsCrouching()) Animation_PlayerTop(pl, ANIM_CR_SHOOTSHOTGUN, 0.41f); else Animation_PlayerTop(pl, ANIM_SHOOTSHOTGUN, 0.5f); @@ -272,7 +272,7 @@ w_shotgun_secondary(player pl) Weapons_ViewAnimation(pl, SHOTGUN_FIRE2); Weapons_ViewPunchAngle(pl, [-10,0,0]); - if (pl.flags & FL_CROUCHING) + if (pl.IsCrouching()) Animation_PlayerTop(pl, ANIM_CR_SHOOTSHOTGUN, 0.41f); else Animation_PlayerTop(pl, ANIM_SHOOTSHOTGUN, 0.5f); @@ -383,7 +383,7 @@ w_shotgun_crosshair(player pl) float w_shotgun_aimanim(player pl) { - return pl.flags & FL_CROUCHING ? ANIM_CR_AIMSHOTGUN : ANIM_AIMSHOTGUN; + return pl.IsCrouching() ? ANIM_CR_AIMSHOTGUN : ANIM_AIMSHOTGUN; } void diff --git a/src/shared/w_snark.qc b/src/shared/w_snark.qc index 5265ed2..c5d82b3 100644 --- a/src/shared/w_snark.qc +++ b/src/shared/w_snark.qc @@ -194,7 +194,7 @@ void w_snark_primary(player pl) /* Audio-Visual Bit */ Weapons_ViewAnimation(pl, SNARK_THROW); - if (pl.flags & FL_CROUCHING) + if (pl.IsCrouching()) Animation_PlayerTop(pl, ANIM_CR_SHOOTSQUEAK, 0.41f); else Animation_PlayerTop(pl, ANIM_SHOOTSQUEAK, 0.5f); @@ -284,7 +284,7 @@ string w_snark_deathmsg(void) float w_snark_aimanim(player pl) { - return pl.flags & FL_CROUCHING ? ANIM_CR_AIMSQUEAK : ANIM_AIMSQUEAK; + return pl.IsCrouching() ? ANIM_CR_AIMSQUEAK : ANIM_AIMSQUEAK; } void w_snark_hud(player pl) diff --git a/src/shared/w_tripmine.qc b/src/shared/w_tripmine.qc index 80b0c77..4706b23 100644 --- a/src/shared/w_tripmine.qc +++ b/src/shared/w_tripmine.qc @@ -32,95 +32,58 @@ enum * Because not being able to place it around levels would be boring. * Some maps, such as subtransit and a few singleplayer chapters have this. */ -#ifdef SERVER -class monster_tripmine:NSMonster +class HLTripmine:NSSurfacePropEntity { - vector m_vecEndPos; - void(void) monster_tripmine; + void HLTripmine(void); - virtual float(entity, float) SendEntity; - virtual void(int) Trip; - virtual void(void) Damaged; - virtual void(void) Ready; - virtual void(void) Respawn; +#ifdef SERVER + virtual void Respawn(void); + virtual void Spawned(void); + virtual void Ready(void); + virtual void Pain(entity, entity, int, vector, int); + virtual void Death(entity, entity, int, vector, int); + virtual float SendEntity(entity, float); +#endif + +#ifdef CLIENT + virtual float predraw(void); + virtual void ReceiveEntity(float, float); +#endif + +private: + + vector m_vecEndPos; + +#ifdef CLIENT + int m_iActive; +#endif }; -float -monster_tripmine::SendEntity(entity pvsent, float flags) +void +HLTripmine::HLTripmine(void) { - WriteByte(MSG_ENTITY, ENT_TRIPMINE); - WriteCoord(MSG_ENTITY, origin[0]); - WriteCoord(MSG_ENTITY, origin[1]); - WriteCoord(MSG_ENTITY, origin[2]); - WriteCoord(MSG_ENTITY, angles[0]); - WriteCoord(MSG_ENTITY, angles[1]); - WriteCoord(MSG_ENTITY, angles[2]); - WriteCoord(MSG_ENTITY, m_vecEndPos[0]); - WriteCoord(MSG_ENTITY, m_vecEndPos[1]); - WriteCoord(MSG_ENTITY, m_vecEndPos[2]); - WriteByte(MSG_ENTITY, health); - return (1); +#ifdef CLIENT + solid = SOLID_BBOX; + movetype = MOVETYPE_NONE; + drawmask = MASK_ENGINE; + frame = TRIPMINE_WORLD; + m_iActive = FALSE; +#endif +} + +#ifdef SERVER +void +HLTripmine::Respawn(void) +{ + super::Respawn(); + RestoreAngles(); } void -monster_tripmine::Trip(int walkthrough) +HLTripmine::Spawned(void) { - vector explosionPos = GetOrigin(); - float explosionDamage = Skill_GetValue("plr_tripmine", 150); - float explosionRadius = explosionDamage * 2.5f; + super::Spawned(); - if (!walkthrough) { - real_owner = g_dmg_eAttacker; - } - - /* This is to prevent infinite loops in Damage_Radius */ - SetPainCallback(__NULL__); - SetDeathCallback(__NULL__); - SetTakedamage(DAMAGE_NO); - - pointparticles(particleeffectnum("fx_explosion.main"), GetOrigin(), [0,0,0], 1); - Damage_Radius(explosionPos, real_owner, explosionDamage, explosionRadius, true, WEAPON_TRIPMINE); - StartSoundDef("fx.explosion", CHAN_VOICE, true); - Destroy(); -} - -void -monster_tripmine::Damaged(void) -{ - Trip(0); -} - -void -monster_tripmine::Ready(void) -{ - traceline(origin, origin + GetForward() * 2048, FALSE, this); - - /* first time we're marked as ready, we play a sound and set the distance */ - if (CanBeDamaged() == false) { - /* Laser calibrated to N units! */ - m_vecEndPos = trace_endpos; - SetHealth(1); - SetTakedamage(DAMAGE_YES); - StartSoundDef("weapon_tripmine.activate", CHAN_WEAPON, true); - SetSolid(SOLID_BBOX); - SetPainCallback(Damaged); - SetDeathCallback(Damaged); - ForceNetworkUpdate(); - } - - /* laser shorter than when calibrated, explode! */ - if (trace_endpos != m_vecEndPos) { - Trip(1); - return; - } - - /* run this method again next frame */ - ScheduleThink(Ready, 0.0f); -} - -void -monster_tripmine::Respawn(void) -{ SetTakedamage(DAMAGE_NO); SetSolid(SOLID_NOT); SetMovetype(MOVETYPE_NONE); @@ -135,276 +98,103 @@ monster_tripmine::Respawn(void) } void -monster_tripmine::monster_tripmine(void) +HLTripmine::Death(entity inflictor, entity attacker, int damage, vector dir, int location) { - Respawn(); -} -#else -class csitem_tripmine -{ - int m_iActive; - vector m_vecEndPos; + vector explosionPos = GetOrigin(); + float explosionDamage = Skill_GetValue("plr_tripmine", 150); + float explosionRadius = explosionDamage * 2.5f; - void(void) csitem_tripmine; - virtual float(void) predraw; -}; + /* This is to prevent infinite loops in Damage_Radius */ + SetTakedamage(DAMAGE_NO); -float csitem_tripmine::predraw(void) -{ - if (m_iActive) { - trailparticles(BEAM_TRIPMINE, this, origin, m_vecEndPos); - } + pointparticles(particleeffectnum("fx_explosion.main"), GetOrigin(), [0,0,0], 1); - addentity(this); - return PREDRAW_NEXT; + radiusDamage(explosionPos, explosionRadius, 0i, (int)explosionDamage, attacker); + StartSoundDef("fx.explosion", CHAN_VOICE, true); + Destroy(); } void -csitem_tripmine::csitem_tripmine(void) +HLTripmine::Pain(entity inflictor, entity attacker, int damage, vector dir, int location) { - solid = SOLID_BBOX; - movetype = MOVETYPE_NONE; - drawmask = MASK_ENGINE; - frame = TRIPMINE_WORLD; - m_iActive = FALSE; -} - -void w_tripmine_parse(void) -{ - csitem_tripmine tm = (csitem_tripmine)self; - spawnfunc_csitem_tripmine(); - - tm.origin[0] = readcoord(); - tm.origin[1] = readcoord(); - tm.origin[2] = readcoord(); - tm.angles[0] = readcoord(); - tm.angles[1] = readcoord(); - tm.angles[2] = readcoord(); - tm.m_vecEndPos[0] = readcoord(); - tm.m_vecEndPos[1] = readcoord(); - tm.m_vecEndPos[2] = readcoord(); - tm.m_iActive = readbyte(); - setmodel(tm, "models/v_tripmine.mdl"); - - setcustomskin(tm, "", "geomset 0 2\ngeomset 1 2\n"); - setorigin(tm, tm.origin); - setsize(tm, [-8,-8,-8], [8,8,8]); -} -#endif - -/* The WEAPON_TRIPMINE code - * - * Here is where the actual 'weapon' logic happens that the player itself - * runs. It obviously won't work without MONSTER_TRIPMINE */ - -void w_tripmine_precache(void) -{ -#ifdef SERVER - Sound_Precache("weapon_tripmine.deploy"); - Sound_Precache("weapon_tripmine.charge"); - Sound_Precache("weapon_tripmine.activate"); - precache_model("models/v_tripmine.mdl"); -#else - precache_model("models/p_tripmine.mdl"); - precache_model("models/v_tripmine.mdl"); -#endif -} - -void w_tripmine_updateammo(player pl) -{ - Weapons_UpdateAmmo(pl, -1, pl.ammo_tripmine, -1); -} - -string w_tripmine_wmodel(void) -{ - return "models/v_tripmine.mdl"; -} - -string w_tripmine_pmodel(player pl) -{ - return "models/p_tripmine.mdl"; -} - -string w_tripmine_deathmsg(void) -{ - return ""; -} - -int w_tripmine_pickup(player pl, int new, int startammo) -{ -#ifdef SERVER - int addAmmo = (startammo == -1) ? 1 : startammo; - - if (pl.ammo_tripmine < MAX_A_TRIPMINE) { - pl.ammo_tripmine = bound(0, pl.ammo_tripmine + addAmmo, MAX_A_TRIPMINE); - } else { - if (!new) - return (0); - } -#endif - return (1); -} - -void w_tripmine_draw(player pl) -{ - Weapons_SetModel("models/v_tripmine.mdl"); - Weapons_ViewAnimation(pl, TRIPMINE_DRAW); -} - -void w_tripmine_holster(player pl) -{ - + Death(trace_ent, attacker, 0, g_vec_null, 0); } void -w_tripmine_primary(player pl) +HLTripmine::Ready(void) { - vector src; + traceline(origin, origin + GetForward() * 2048, FALSE, this); - if (pl.w_attack_next > 0.0) { + /* first time we're marked as ready, we play a sound and set the distance */ + if (takedamage == DAMAGE_NO) { + /* Laser calibrated to N units! */ + m_vecEndPos = trace_endpos; + SetHealth(1); + SetTakedamage(DAMAGE_YES); + StartSoundDef("weapon_tripmine.activate", CHAN_WEAPON, true); + SetSolid(SOLID_BBOX); + ForceNetworkUpdate(); + } + + /* laser shorter than when calibrated, explode! */ + if (trace_endpos != m_vecEndPos) { + Death(trace_ent, real_owner, 0, g_vec_null, 0); return; } - if (pl.ammo_tripmine <= 0) { - return; - } - - src = Weapons_GetCameraPos(pl); - Weapons_MakeVectors(pl); - traceline(src, src + v_forward * 64, FALSE, pl); - - if (trace_fraction >= 1.0) { - return; - } - - pl.ammo_tripmine--; - - Weapons_ViewAnimation(pl, TRIPMINE_FIRE2); - - if (pl.flags & FL_CROUCHING) - Animation_PlayerTop(pl, ANIM_CR_SHOOTTRIPMINE, 0.41f); - else - Animation_PlayerTop(pl, ANIM_SHOOTTRIPMINE, 0.5f); - -#ifdef SERVER - vector ang = vectoangles(trace_plane_normal); - monster_tripmine mine = spawn(monster_tripmine, real_owner: pl, angles: ang, spawnflags: MSF_MULTIPLAYER); - mine.health = 0; - mine.SetOrigin(trace_endpos + (trace_plane_normal * 8)); - - Sound_Play(pl, CHAN_WEAPON, "weapon_tripmine.deploy"); - Sound_Play(mine, CHAN_WEAPON, "weapon_tripmine.charge"); -#endif - - pl.a_ammo3 = 1; - pl.w_attack_next = - pl.w_idle_next = 0.5f; -} - -void -w_tripmine_release(player pl) -{ - if (pl.w_idle_next > 0.0) { - return; - } - - if (pl.a_ammo3 == 1) { - Weapons_ViewAnimation(pl, TRIPMINE_DRAW); -#ifdef SERVER - if (pl.ammo_tripmine <= 0) { - Weapons_RemoveItem(pl, WEAPON_TRIPMINE); - } -#endif - pl.a_ammo3 = 0; - pl.w_attack_next = 0.5f; - pl.w_idle_next = 3.0f; - return; - } - - int r = (float)input_sequence % 3.0f; - switch (r) { - case 1: - Weapons_ViewAnimation(pl, TRIPMINE_IDLE1); - pl.w_idle_next = 3.0f; - break; - case 2: - Weapons_ViewAnimation(pl, TRIPMINE_IDLE2); - pl.w_idle_next = 2.0f; - break; - default: - Weapons_ViewAnimation(pl, TRIPMINE_FIDGET); - pl.w_idle_next = 3.34f; - break; - } + /* run this method again next frame */ + ScheduleThink(Ready, 0.0f); } float -w_tripmine_aimanim(player pl) +HLTripmine::SendEntity(entity ePEnt, float flChanged) { - return pl.flags & FL_CROUCHING ? ANIM_CR_AIMTRIPMINE : ANIM_AIMTRIPMINE; + WriteByte(MSG_ENTITY, ENT_TRIPMINE); + WriteFloat(MSG_ENTITY, flChanged); + WriteCoord(MSG_ENTITY, origin[0]); + WriteCoord(MSG_ENTITY, origin[1]); + WriteCoord(MSG_ENTITY, origin[2]); + WriteCoord(MSG_ENTITY, angles[0]); + WriteCoord(MSG_ENTITY, angles[1]); + WriteCoord(MSG_ENTITY, angles[2]); + WriteCoord(MSG_ENTITY, m_vecEndPos[0]); + WriteCoord(MSG_ENTITY, m_vecEndPos[1]); + WriteCoord(MSG_ENTITY, m_vecEndPos[2]); + WriteByte(MSG_ENTITY, health); + return (1); } - -void -w_tripmine_hud(player pl) -{ -#ifdef CLIENT - HUD_DrawAmmo2(); - vector aicon_pos = g_hudmins + [g_hudres[0] - 48, g_hudres[1] - 42]; - drawsubpic(aicon_pos, [24,24], g_hud7_spr, [120/256,96/128], [24/256, 24/128], g_hud_color, pSeatLocal->m_flAmmo2Alpha, DRAWFLAG_ADDITIVE); #endif + +#ifdef CLIENT +void +HLTripmine::ReceiveEntity(float flNew, float flChanged) +{ + this.origin[0] = readcoord(); + this.origin[1] = readcoord(); + this.origin[2] = readcoord(); + this.angles[0] = readcoord(); + this.angles[1] = readcoord(); + this.angles[2] = readcoord(); + this.m_vecEndPos[0] = readcoord(); + this.m_vecEndPos[1] = readcoord(); + this.m_vecEndPos[2] = readcoord(); + this.m_iActive = readbyte(); + + setmodel(this, "models/v_tripmine.mdl"); + + setcustomskin(this, "", "geomset 0 2\ngeomset 1 2\n"); + SetSize([-8,-8,-8], [8,8,8]); + Relink(); } -void -w_tripmine_hudpic(player pl, int selected, vector pos, float a) +float +HLTripmine::predraw(void) { -#ifdef CLIENT - if (selected) { - drawsubpic(pos, [170,45], g_hud6_spr, [0,90/256], [170/256,45/256], g_hud_color, a, DRAWFLAG_ADDITIVE); - } else { - drawsubpic(pos, [170,45], g_hud3_spr, [0,90/256], [170/256,45/256], g_hud_color, a, DRAWFLAG_ADDITIVE); + if (m_iActive) { + trailparticles(BEAM_TRIPMINE, this, GetOrigin(), m_vecEndPos); } - HUD_DrawAmmoBar(pos, pl.ammo_tripmine, MAX_A_TRIPMINE, a); + addentity(this); + return (PREDRAW_NEXT); +} #endif -} - -int -w_tripmine_isempty(player pl) -{ - if (pl.ammo_tripmine <= 0) - return 1; - - return 0; -} - -weapontype_t -w_tripmine_type(player pl) -{ - return WPNTYPE_CLOSE; -} - -weapon_t w_tripmine = -{ - .name = "tripmine", - .id = ITEM_TRIPMINE, - .slot = 4, - .slot_pos = 2, - .weight = -10, - .draw = w_tripmine_draw, - .holster = w_tripmine_holster, - .primary = w_tripmine_primary, - .secondary = __NULL__, - .reload = __NULL__, - .release = w_tripmine_release, - .postdraw = w_tripmine_hud, - .precache = w_tripmine_precache, - .pickup = w_tripmine_pickup, - .updateammo = w_tripmine_updateammo, - .wmodel = w_tripmine_wmodel, - .pmodel = w_tripmine_pmodel, - .deathmsg = w_tripmine_deathmsg, - .aimanim = w_tripmine_aimanim, - .isempty = w_tripmine_isempty, - .type = w_tripmine_type, - .hudpic = w_tripmine_hudpic -}; \ No newline at end of file diff --git a/src/shared/weapon_common.h b/src/shared/weapon_common.h deleted file mode 100644 index 1aac488..0000000 --- a/src/shared/weapon_common.h +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright (c) 2016-2022 Vera Visions LLC. - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER - * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING - * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ - -#ifndef NEW_INVENTORY -/* for AI identification purposes */ -typedef enum -{ - WPNTYPE_INVALID, /* no logic */ - WPNTYPE_RANGED, /* will want to keep their distance mostly */ - WPNTYPE_THROW, /* has to keep some distance, but not too far */ - WPNTYPE_CLOSE, /* have to get really close */ - WPNTYPE_FULLAUTO, /* for things that need to be held down */ - WPNTYPE_SEMI /* semi automatic */ -} weapontype_t; - -typedef struct -{ - string name; - int id; /* bitflag id */ - int slot; - int slot_pos; - int allow_drop; - int weight; /* required for bestweapon */ - void(void) precache; - string() wmodel; - string() deathmsg; - - /* player specific */ - string(player) pmodel; - float(player) aimanim; - weapontype_t(player) type; /* required for bot-AI */ - void(player) draw; - void(player) holster; - void(player) primary; - void(player) secondary; - void(player) reload; - void(player) release; - int(player, int, int) pickup; - void(player) updateammo; - - void(player, int) predraw; /* predraw... */ - void(player) postdraw; /* postdraw... */ - - int(player) isempty; /* kinda handy */ - void(player, int, vector, float) hudpic; -} weapon_t; - -void Weapons_Holster(player pl); -void Weapons_Primary(player pl); -void Weapons_Secondary(player pl); -void Weapons_Reload(player pl); -void Weapons_Release(player pl); -void Weapons_PreDraw(player pl, int); - -float Weapons_GetAim(player, int); -int Weapons_IsEmpty(player, int); -void Weapons_DrawCrosshair(player pl); -void Weapons_MakeVectors(player pl); -vector Weapons_GetCameraPos(player pl); -void Weapons_ViewAnimation(player pl, int); -void Weapons_ViewPunchAngle(player pl, vector); -int Weapons_IsPresent(player, int); -void Weapons_UpdateAmmo(player, int, int, int); -int Weapons_GetAnimation(player pl); -void Weapons_EnableModel(void); -void Weapons_DisableModel(void); -weapontype_t Weapons_GetType(player, int); - -void Weapons_SetLeftModel(string); -void Weapons_SetRightModel(string); - -void Weapons_SetRightGeomset(string); -void Weapons_SetLeftGeomset(string); - -/* compat */ -void Weapons_SetGeomset(string); -void Weapons_SetModel(string); - -void Weapons_Sound(entity, float, string); - -#ifdef CLIENT -string Weapons_GetPlayermodel(player, int); -void Weapons_HUDPic(player, int, int, vector, float); -#endif -#else -#endif \ No newline at end of file diff --git a/src/shared/weapon_common.qc b/src/shared/weapon_common.qc deleted file mode 100644 index 36ad05e..0000000 --- a/src/shared/weapon_common.qc +++ /dev/null @@ -1,480 +0,0 @@ -/* - * Copyright (c) 2016-2022 Vera Visions LLC. - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER - * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING - * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ - -#ifndef NEW_INVENTORY -var int g_weapon_weights[g_weapons.length]; - -#ifdef CLIENT -var int g_weapon_order[g_weapons.length]; -#endif - -void -Weapons_Init(void) -{ - /* in the future we'll have no internal weapon table, then this will fill - * one up... */ - /*searchhandle sh; - filestream fh; - string line; - sh = search_begin("scripts/weapon_*.txt", TRUE, TRUE); - for (int i = 0; i < search_getsize(sh); i++) { - fh = fopen(search_getfilename(sh, i), FILE_READ); - if (fh < 0) { - continue; - } - - while ((line = fgets(fh))) { - int w = tokenize(line); - switch (argv(0)) { - case "name": - break; - case "slot": - break; - case "slot_pos": - break; - } - } - fclose(fh); - }*/ - - for (int i = 0; i < g_weapons.length; i++) - if (g_weapons[i].precache != __NULL__) - g_weapons[i].precache(); - - /* check our weapon weights */ - int max = 0; - for (int i = 0; i < g_weapons.length; i++) - if (g_weapons[i].weight > max) - max = g_weapons[i].weight; - - /* don't bother building the list if we've got no weights */ - if (max <= 0) - return; - - /* position in the weight array */ - int w = 0; - - /* loop through all weights */ - for (int b = 0; b <= max; b++) { - /* loop through all weapons */ - for (int i = 0; i < g_weapons.length; i++) { - /* if we've found a valid weight, add the weapon to the list */ - if (g_weapons[i].weight == b) { - g_weapon_weights[w] = i; - w++; - } - } - } - -#if 0 - for (int i = 0; i < g_weapons.length; i++) - print(sprintf("Weapon-Weight order: %s, %i\n", g_weapons[g_weapon_weights[i]].name, i)); -#endif - -#ifdef CLIENT - /* build our slot-order table */ - int st = 0; - - int max_slots = 0; - for (int i = 0; i < g_weapons.length; i++) - if (g_weapons[i].slot > max_slots) - max_slots = g_weapons[i].slot; - int max_pos = 0; - for (int i = 0; i < g_weapons.length; i++) - if (g_weapons[i].slot_pos > max_pos) - max_pos = g_weapons[i].slot_pos; - - /* loop through all slots */ - for (int s = 0; s <= max_slots; s++) { - /* loop through all positions */ - for (int p = 0; p < max_pos; p++) { - /* loop through all the weapons */ - for (int i = 0; i < g_weapons.length; i++) { - if (g_weapons[i].slot == s && g_weapons[i].slot_pos == p) { - g_weapon_order[st] = i; - st++; - } - } - } - } -#if 0 - for (int i = 0; i < g_weapons.length; i++) - print(sprintf("Weapon-List order: %s, %i\n", g_weapons[g_weapon_order[i]].name, i)); -#endif -#endif -} - -void -Weapons_SetLeftModel(string mdl) -{ -#ifdef CLIENT - setmodel(pSeat->m_eViewModelL, mdl); - setsize(pSeat->m_eViewModelL, [0,0,0], [0,0,0]); - pSeat->m_eViewModelL.effects |= EF_NOSHADOW; -#endif -} -void -Weapons_SetRightModel(string mdl) -{ -#ifdef CLIENT - setmodel(pSeat->m_eViewModel, mdl); - setsize(pSeat->m_eViewModel, [0,0,0], [0,0,0]); - pSeat->m_eViewModel.effects |= EF_NOSHADOW; -#endif -} - -void -Weapons_SetModel(string mdl) -{ - Weapons_SetRightModel(mdl); - Weapons_SetLeftModel(""); -} - -void -Weapons_SetRightGeomset(string set) -{ -#ifdef CLIENT - setcustomskin(pSeat->m_eViewModel, "", set); -#endif -} -void -Weapons_SetLeftGeomset(string set) -{ -#ifdef CLIENT - setcustomskin(pSeat->m_eViewModelL, "", set); -#endif -} - -void -Weapons_SetGeomset(string set) -{ - Weapons_SetRightGeomset(set); -} - -void -Weapons_Draw(player pl) -{ - int i = pl.activeweapon; - - /* In case the previous weapon hid the model */ - Weapons_EnableModel(); - -#ifdef CLIENT - View_SetMuzzleflash(0); -#endif - - pl.w_attack_next = 0.5f; - pl.w_idle_next = 2.5f; - pl.viewzoom = 1.0f; - pl.weapontime = 0.0f; - - /* we're meant to respawn when we're dead, don't unset! */ - if (pl.health > 0) { - pl.think = __NULL__; - pl.nextthink = 0.0f; - } - - /* make sure this is all wiped */ - pl.a_ammo1 = pl.a_ammo2 = pl.a_ammo3 = 0; - - if (g_weapons[i].draw != __NULL__) - g_weapons[i].draw(pl); - - if (g_weapons[i].updateammo != __NULL__) - g_weapons[i].updateammo(pl); - - pl.gflags |= GF_SEMI_TOGGLED; -} - -void -Weapons_Holster(player pl) -{ - int i = pl.activeweapon; - - if (g_weapons[i].holster != __NULL__) - g_weapons[i].holster(pl); -} - -void -Weapons_Primary(player pl) -{ - int i = pl.activeweapon; - - if (pl.gflags & GF_SEMI_TOGGLED) - return; - - if (g_weapons[i].primary != __NULL__) - g_weapons[i].primary(pl); - - if (g_weapons[i].updateammo != __NULL__) - g_weapons[i].updateammo(pl); -} - -void -Weapons_AmmoUpdate(entity target) -{ - player pl = (player)target; - int i = pl.activeweapon; - - if (g_weapons[i].updateammo != __NULL__) - g_weapons[i].updateammo(pl); - -} - -void -Weapons_Secondary(player pl) -{ - int i = pl.activeweapon; - - if (g_weapons[i].secondary != __NULL__) - g_weapons[i].secondary(pl); - - if (g_weapons[i].updateammo != __NULL__) - g_weapons[i].updateammo(pl); -} - -void -Weapons_Reload(player pl) -{ - int i = pl.activeweapon; - - if (g_weapons[i].reload != __NULL__) - g_weapons[i].reload(pl); - - if (g_weapons[i].updateammo != __NULL__) - g_weapons[i].updateammo(pl); -} - -void -Weapons_Release(player pl) -{ - int i = pl.activeweapon; - - if (g_weapons[i].release != __NULL__) - g_weapons[i].release(pl); - - pl.gflags &= ~GF_SEMI_TOGGLED; -} - -void -Weapons_PreDraw(player pl, int thirdperson) -{ - int i = pl.activeweapon; - - if (g_weapons[i].predraw != __NULL__) - g_weapons[i].predraw(pl, thirdperson); -} - -int -Weapons_IsEmpty(player pl, int w) -{ - int r = 0; - - entity oself = self; - self = pl; - - if (g_weapons[w].isempty != __NULL__) - r = g_weapons[w].isempty(pl); - - self = oself; - - return (r); -} - - -weapontype_t -Weapons_GetType(player pl, int w) -{ - weapontype_t r = WPNTYPE_INVALID; - - entity oself = self; - self = pl; - - if (g_weapons[w].type != __NULL__) - r = g_weapons[w].type(pl); - - self = oself; - - return (r); -} - -void -Weapons_DrawCrosshair(player pl) -{ - int i = pl.activeweapon; - - if (g_weapons[i].postdraw != __NULL__) - g_weapons[i].postdraw(pl); -} - -string -Weapons_GetWorldmodel(int id) -{ - if (g_weapons[id].wmodel != __NULL__) - return g_weapons[id].wmodel(); - - return ""; -} - -string -Weapons_GetPlayermodel(player pl, int id) -{ - if (g_weapons[id].pmodel != __NULL__) - return g_weapons[id].pmodel(pl); - - return ""; -} - -string -Weapons_GetDeathmessage(int id) -{ - if (g_weapons[id].deathmsg != __NULL__) - return g_weapons[id].deathmsg(); - - return ""; -} - -float -Weapons_GetAim(player pl, int id) -{ - if (g_weapons[id].aimanim != __NULL__) - return g_weapons[id].aimanim(pl); - - return (0); -} - -#ifdef CLIENT -void -Weapons_HUDPic(player pl, int id, int s, vector pos, float a) -{ - if (g_weapons[id].hudpic != __NULL__) - g_weapons[id].hudpic(pl, s, pos, a); -} -#endif - -void -Weapons_MakeVectors(player pl) -{ -#ifdef SERVER - makevectors(pl.v_angle); -#else - makevectors(view_angles); -#endif -} - -vector -Weapons_GetCameraPos(player pl) -{ -#ifdef SERVER - return (pl.origin + pl.view_ofs); -#else - return getproperty(VF_ORIGIN); -#endif -} - -void -Weapons_ViewAnimation(player pl, int i) -{ - pl.weaponframe = i; - pl.weapontime = 0.0f; -} - -#ifdef CLIENT -int View_GetAnimation(void); -#endif - -int -Weapons_GetAnimation(player pl) -{ - return pl.weaponframe; -} - -void -Weapons_ViewPunchAngle(player pl, vector add) -{ - pl.punchangle += add; -} - -int -Weapons_IsPresent(player pl, int w) -{ - if (pl.g_items & g_weapons[w].id) { - return (1); - } else { - return (0); - } -} - -void -Weapons_EnableModel(void) -{ -#ifdef CLIENT - View_EnableViewmodel(); -#endif -} - -void -Weapons_DisableModel(void) -{ -#ifdef CLIENT - View_DisableViewmodel(); -#endif -} - -/* -================= -Weapons_UpdateAmmo - -Sets .a_ammoX fields and clamps them so they can be networked as a single byte. -================= -*/ -void -Weapons_UpdateAmmo(player pl, int a1, int a2, int a3) -{ - /* no change */ - if (a1 == -1) - a1 = pl.a_ammo1; - if (a2 == -1) - a2 = pl.a_ammo2; - if (a3 == -1) - a3 = pl.a_ammo3; - - /* networked as bytes, since we don't need more. Clamp to avoid errors */ - pl.a_ammo1 = a1; - pl.a_ammo2 = a2; - pl.a_ammo3 = a3; -} - -void -Weapons_Sound(entity pl, float channel, string snd) -{ -#if 0 -#ifdef SERVER - float prev = pl.dimension_see; - pl.dimension_see=0; - Sound_Play(pl, channel, snd); - pl.dimension_see = prev; -#else - /* client side == immediately */ - Sound_Play(pl, channel, snd); -#endif -#else - #ifdef SERVER - Sound_Play(pl, channel, snd); - #endif -#endif -} -#endif \ No newline at end of file diff --git a/zpak001.pk3dir/PAK_NAME b/zpak001.pk3dir/PAK_NAME new file mode 100644 index 0000000..80a6ddd --- /dev/null +++ b/zpak001.pk3dir/PAK_NAME @@ -0,0 +1 @@ +package_valve.pk3 diff --git a/zpak001.pk3dir/cfg/skill.cfg b/zpak001.pk3dir/cfg/skill.cfg index 6b6a5d2..a41adf7 100644 --- a/zpak001.pk3dir/cfg/skill.cfg +++ b/zpak001.pk3dir/cfg/skill.cfg @@ -196,12 +196,9 @@ set sk_plr_buckshot3 "5" set sk_plr_crowbar1 "10" set sk_plr_crowbar2 "10" set sk_plr_crowbar3 "10" -set sk_plr_egon_narrow1 "6" -set sk_plr_egon_narrow2 "6" -set sk_plr_egon_narrow3 "6" -set sk_plr_egon_wide1 "14" -set sk_plr_egon_wide2 "14" -set sk_plr_egon_wide3 "14" +set sk_plr_egon1 "6" +set sk_plr_egon2 "6" +set sk_plr_egon3 "6" set sk_plr_gauss1 "20" set sk_plr_gauss2 "20" set sk_plr_gauss3 "20" diff --git a/zpak001.pk3dir/csprogs.dat b/zpak001.pk3dir/csprogs.dat new file mode 100644 index 0000000000000000000000000000000000000000..c66d69139d33d891545afb7cdb2f473d8f00d771 GIT binary patch literal 942058 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

A#{^g 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 z z?;nDCXSZdlvhe!iY$T-o2t;%6L?)Z4y8oNxYFn{S4- zp8h+2#&FL!VSG5ow=-FnPWQ6-RmXW*=C9+uEPm4oR_->(F5`Gotc@qb)K10!J>S=p z)awOFJ)Jki@uQt*Q=*Lhj`!#pobd%xbxYuNm6@bVZd z-{|Evt$dT0*Rt}>US8YE-|}*sm2dI#SS#P^<#sE7+sg$jf7i=JE8phj4lCd8<&u@} z@bWk--|6LbtbCW3*R}F|FORqK-B#{4*ChRYY5RStHvfM}`u%Y3SB3S%4}H6ne*3VO zrQbf{W$Bkc^0M^%AA4E)=}){Y{q#{QcbkWjcD%Iv6|dLU!L@dru}}7&X~*n0SKIr` zFZy;a`^10ovdnLbl6L<>((aeF{g11SIX||^FXa1{GaOwoHt}$ z@`|4)WZw9@mu24ghnHpD@~W3*-SV236Htr8oyOVlZ%h!`UpSE^VPirRiG}!0Q{$2Bb zhpAp}wCnhFe7#72TGz``Z{w4CDh{!p#@G7KFxAtCZQPdoC&TmH2K`2P{(r-yoo>_^BItS?XtFFU#*0db}*ZSJ=eMV(-VjEWcOS)XLqa%i7Pmiy!in z-+Odc*|WJ%FZT3$S?t-u%VN(by)5=@>1DC!Q(hK(KJ8^07q;@U+^_nKmq*$AHJ|me zJXf=|mu0;FoRz!HClr3`SMjU;?!x)eL;2kW+slV@y!g-TZ+DxWlksC&_p3izYtOa$ z?*p+c?Z*huh7|vd^}=mt~*rt6rAp1HR^Ec|KqdFBk0izo(arR^H3Y^8D}K zUY7f&`*>OIn@;eu+&A6V%kq4|eqNU63-_jVfn_ZIrJzV{K zgIYhY_48Ukhu`r*>gV)>WZawV#{n7lj`XsOdq;U$#=R+CmT_;Ymu1|W=4Bc8j`p&Q zd&hWrT{{jQ>t%VaX}Xu!v-ojd?zHmpUS8kICwN)L!5Ll_zx+fm%Q$zEmAlOm$v8LM z}t1G-L^VOAJmiqgKmt|k>Dlg0PkXL(Io`?LVm*siL|MBvs*1l`JyqT3}dHEAo zp6zAv7v^|b=Ciq8-rUB&*2}$CzRt@sAI|gg78bwW%d$?m!ONet_>ErP(#kh^S?151 zy)64!-}3UOZ2ViS+-*)z=GXUYo_(`+pQARx_4r+GSIxz5V(dAZ)oW+dZxo41?fPKtbo`zhsN$)EYj{giQ5A7!y`9WUpsJ?kd+tTmFB z=yr8kySmM%n&WnNSJ}OFbN_ProR_6sKJR5ImuyKJ6gHhY_0IwsEW_NKE0IV5ndKPlf5i_j`XtdIm*kzXNs4F&r~l9 zpJ`qeK1W-*+e}dG-S`7(FWa4z|5=`ol>gaYmiut$cv<|fbG*rM`FfIie9p^KkI#Eq=Gi|dyq_6>ckc(B_ae_rc>mSQ!uxLt&%X@7bBhl+ z&sRJz;rVwj3(tQfJYODw=O;hlJpbi+3C}kYUat+nYs(KfujUrF&JkWMUY7c6wQ{!^ z*&^#J&42&Y2b|}co|o`k%ge%Z?S$tV1MvLx2b^co^AesNUKXCEglAy@o?CrjdCK~A zyyqqU!g^ko`Lol@QV#2TS<2y~R_-?I4p0tT`gG#&?SWkfd45#v*wf2m$6j6*zvOr? z%R2f5FN>Wsye#YJ6TK|?o#bWV@qhEZ)$|L6&nCV+<@w8xC-u;i)Wcx+u|8APK5O;j z+T~E6Yn67rldl)?*LU`^+`svXm!%$e@v`{yyLwsl?`Gw0^W`Dd>v2AxT7O%%_m?I6 ze7-!T-X?ol>gmX&o(>;kJ$<&;|AuKlU+U=uUoY|=kQrW+La>uu{= zy$w^n$@p}JuNN67&-Aj?+gV3)Y}DKmU_D| zskd{7SZ|;A^(J~QPV%|P=Hu=~(La*kBW>g3*XFd+sx9xnriJlvhe6Cme z&DW#&J-2&V%J&X0OFiG2)X#T^SkGUm)!Q)jPpP;2e7#7&x!=oDPY-xm>h%Xny?uX( z^|nK;-iEc_9`*Gi_4L!EUVbvfdii3lUWTb&q#ph^sfS+-u^xWw>$5f=4aa=+OJAN+ zFTYCabX&X_)$l%r_sl^Hlybzq98$awzYSWqf(g`2Bf*AoG{|77Kkp6aV24 zUY6&YpZ2mmKljI^A3l}z!}sewgge&ewPEVFazE?Oz8=L7e8J1ouU|~+_4y%=uYa#S zKR!(L^xqy|rT_ocw+k5`{^n)5pR_n>CySDHGSqWP-mSHl4@rBGb8uE|b@w-={jBEY zWqE&br1AmzrzP#>l%;Gh@73DNhpN3?@7sqwPj!QrrM=wfWob{h zB<*M3QnsJ(`uuA9g3GoqIFLUg_4RFE-r|pbC#k<%m(st;)%?j}>i>hQzuS}gx@{@z ztFBgG|DpO4fBpgA-()@b124<_RUY)RjIR%QS^Db_t&HD?EoFVz*XsK}RNu1y`_roW z`SM6a@xNO0dxxnWJ{arjKlpws;AjpY(IA`PzIrO!YQ6e|CxQ zcTzw9O6uqJq@IVm-?_7|@7j8D+18U%9}Ua#{zbPLv7Fp*80`GGicQCT@LD}ATRjZa zk7WLA@#QUkXsefHK3mSqQm@Ns_tfZFWe;pJjbd^c%JDpf(=V-p`Kxo}%rqgL^+a#{=oVNBI6J{dcmLrT-r3 zW$C|1d0EDXDOT<_hYwSKe!JG6YyG*_pO>OPi$8UIRsTG}%QD~3@UqPJCwf`NgOj{0 zeFUxpvs+GIVal_RA&-D2VpW1ucoIfY)`FrY}EdKI?US83T|BJmm(Ehd5 z=NU=;ou1U+Q1_d6uUZe*>dV#7Q0r?YTYu;K^^DZt1zwi*^x3|D2!4*2W&M0^QlDof z^?BZiq1`{a$mdt4_xab>Devz(Me6fK zU*2+G?k`DwzOa;j(x{rBJ51yKK>G$VAOFkOpVa3YN&PKJ>Tjs~1dX-&8>agEZ~M8@ zK1MF@_N}CSjIwgKXqEvz2@hbrIosZbZ=Ejl>z{o4lm7i&(*B-J z+TYUN&!4`sTL*~Ud%*hIxzqfe!%&~YlzMt^MOS{}2N}QrCi{3fFH3pnyreR)d!Rg!x7$VyT#_czP+?&LbbUKz&Eie|6& z6Y{fqy3DMeQIOkAYmV20&HUV6?F)hD%vp_s(}C?XpU>~r&UiVbFs6*}I)qO$XEyHH zes*Ig!ub(-uXZQfKzyxk_HI8H`8|nrD?lzl-Us=uZuV(E58cLT=-@`ObGidEcaw#mEv4l<*_W7qrzjXBuenrDQCR!?hgA@rWt zxDeszH|~vm-KWhQ)Gp=F*UlFW9bztQ+_(JzA7e!`$(L6X@JZ&*+{ulT+F35lzp`BF zExv31RN#}$Vfj;FN2i(Dh+ybF384luQ-#l1(`XJs_*mF}xV^TTBkgqsGu2){Vve!b zRn2ksI@-*z*KHb4w%6?&XWHu*8_%%UFE^fTuU~0A&t7+HywG01*7$XM-K+63d!5jD zrM>Roc(uJwY`n%^CpFHo*Fzhxv)3aUZ?M;+8gI7OX^pqq>#>dB#kJ3znmYjuM}b#s zPU?~Eqt6`Qcrfs4zJ2DL#ycY6Pnt=2Iyi0SPFo+W$3yaM$Vck2*DzO>|E~E%^LL{B zCENz$i|N^3+ss`_ea=tnbJzUg{qkWgG2VQy=ZO4W8Ts9vpiMwx`%D}1MNRRy19^;Z)N(2lJw*?1^D>f!$|*co1VO+ecYGS$3wn8PC|(|p47$9 z^5(d_D;F8B&@b~R=ljgpayj5=pZQ0ir`^^-ag#QTfX$MDS7?4g4$f4ej;E37?;MKIcW-*H3)=IzRto-%gyJ%um|aPm}z9 zmb9;*w@drlHGg5hd|8_0`?Dne&%OSO@;^=G-(>!`{THaQN#@tNSv}XFuVFs0{6%hp zJUjn*d(J%G{uttQqFp%Kcx}SyumIsX^Gkg5`m6Q@?X!Ct5N|f*>iDafU$@Ur<|)=+ z6Xa|1zeano+bU*N$k$fj4IY=u>x4|beP%9F#m1qz`QIR%_022e{Wg(#rTn`@=C#wt zVvh33nNdYTY#UjC2m{pDv+2T!+G zj-P@*3%)Y$^^gB-d%gK%`vT~w)-%@pseKXbZNl}>?Tb;5=jQ$bIcFB5ZWgyU7=|ux zZ!*udztH{?@N*LUCEzb1d@({7;p);m+@*h^D!t2J(l^-je}x}FE5fJGT$g_tA!A_) zuay6h$h=N6Hvs=fJL}`0iTq0Yt5$wJk^kQQnw6J8?zFK&{!Qjz?QgWd*}j^2v#Q;^ ziFWfQ%2CGsRe`&9!+rU03F=$^RSk`Bm^Ca<;wv+uCzw?#BFE z{lee!;cxc~e;eT=%v)WXBxBR%xew#!1O?DhPF2|n3a;S%XUh9%8?ddf9 zW`6%}zZrI69Lv!j#(M|XCWOD!{x0gTHTRZnpKs&)J=E=62xa?YD`Wp-xG7L(IB|ye z$8&{!k!!ED?e6G+xoc1#Oy{h=+(`z=R`4%@->0Ex*db0D|(C1gJ zZ=n3D?H2n=1Ljw4x3jO>Zpm+q&#zjav#;9j?ELKV%a&iYzJcoaB|=V#2c z6VV=iVXq6!Z|!yY+#l_Ah1_3o?KS_vcW8(Fo1Z?jV{QcMcdQvv_*S0R@#fq1x}mwv zUe`Bw;_5!lrU~(6{%3Hfjm>=S&Nmf;9O5@u#b>S(zuCqYImBPCD!yoE{>$0;mDaG| ztXNpNup0WqN`+MltK<5S!m5SQg`8Opq3j>4BQ(rcIWrn)kgMmfN#^_cH41AL`pkK` z9E_^=gPY9QLa{IodfE#eg>|5393<*l2U5tF={X)$r)U1_7CH;;_hs;@l)E6WiqJ0P zNB@d52-kVt2=6s{TSW9nD0kX#S87s^8zH>UJeJ!8*GcBA+<3EoN`JH2tZ;w7`g_o3 zJl2LY{a(4vke>Dt>9pTLPtNofdM)2A3R_h0&6!UYK3O4Gmuuc^S=b8cs>3;6f5Gb8 zz98$_hx1z(wz1_?9saq(wl;i+s`#HTY-hv2i11FsRN=#M@ypiU9r4Y2`cmP`8Fn_C zoeDq7SGMm*^UQ6m4QKg$HMbKqj79kn>9pTLU$fbz@QZ%wA5YRVoaxWX?Sk~2N7=rZ z4`X!N@5+33FZ>$$G@CsNzst|=*#hl>{ubK>Gwd`^@`Ch?$1CGWz3*Pw1MN5D&zLU0 z)6i$`$?shd{RiSodEZ3t!?n#EkkrQy^9L6Ckl)X(z18h`q&d8BNMR1{XW4vPb6cZfv);E&uAjq|tXws zb=Z*wS@$1^*bLvqOtbcX!W?a{A2-u+W%|~t{C21tTz)4c`OQf3JK5&9VU>Lw4%)t% zNq(m#`JI{M*WbPk&0y_2C&};JB)q&l>CHeKYZ~Z~rcV&{_ zH{$f0CY%B2!@$jwd zs>7!spPiBa#Ww$Kqxg7_f39u{>=~b%UFbD`wezRzKVjWA$M%ypbFFQUZRWayTelrm zSGf=3)@|1&@vlqT@2>eNb#u_a()%K^F1$X8e?yZ0jXwWr(fn^n;@{}=Kf3PvjQnp- z;(sg2{}!MBvC;g$mBhcr=Rdvf=2ZUJ6&vB!MfBj?%&j&Z_lG8r2<4J4&+jDpe>bt` zHgC@lD$@1Bljf(*d^d@Io44n|5#LGK6YA@ZB>tUA{&x+K|D8$vyDIX(BP0L2llb=} z`QPjF|4u{T9qhj+iGQ!p|GN!$r}8i07j5^U-?W+EHQbLYWkQ>Y+1-E}B`-;JihY~wz z?-ay)vf&Zvmwl>MuyE<5y~fjZTDF1zO!MQyqbRpNQ_j2f-%pYMbn_Ey=XCQZuCuZK za;3HRcEsn7{Biit-PeOncmAh^AECax@;^e%PQ%pUGs^t4VeO<`xWef(pUl4wV%)F$ z8Deri{3qo7A&msyW>&~i?!{mHv|+>)d96fVKEY*u!+BZo(H5U*mNdM9nx1I>)$pdh zzLCgpCi1@%`K^Y3S^VvWCHDGGBEOr+?=`$`!%gEq?KRiP7Btc18(+28x<;-@CYt)j zzuW7G##ijMq48yVZESqWUYi;h+v~{2zuD`kMvlZ2O>^TSdu?fy_05ZrSbk&^K5Und z*>ZCCOE$~@9J2-6{r@7o&upIORrXaME4Y2aHuH<5{qCAyuJPxnAK8z+4!OB@lDGP# zT~g2E$Y(CTA4~cXSA5fLDEHsCfSy@BthZlTy?5k(fh+A0zjuD_SIC+8FA?5??_VVO zkWkF7bze?#nM9DdlYR>Fis{lA9(Nv5@N zLE+bhYJU&AZiRNV$DH{suCsCd9j-UP|C*iLm%5=x{IXs1W!xvKPJfPhqHq&D#Xj?~ zMvgz#xL8B|cjiuPd@3~#av$?Fvto|rw$R#1dF5OKB!&pSLY3TBCI4xJi$4NsZbZ** zGiNkPJ$y5Fdc^KN^IF3nps(6q*886jem%a+Nk8TNu+iq}!jX2|eY!9eH9Xe*F_{k* z8u|xqz(0cPVdm1@AK~f#-t^cNp4;zgFwYiRbI%s0Am8!1KcPO^i&!pS$~|59BQ(lq z1M?jIu3Q(KkSEe+zHa%nnM)d_KDNp~SGc&*-9O-X`8-nczQmt#C65Hkso>d&E~t%EUwD`FNMEaI|Y~fved(Qy2bph za7Cgw54jDwF+IcGeP4zfw%g_4<7S^AfBaT>E>es{Or;lq|1TaAo`ZJFe5r%LUGN z*F&QJ&+?IWNK~u;S8Ta5pD9Q;KKFN&17{~`hYYW*|5uXwXLzUKclfl!j#m*f$y}fN zhb_09c@6UN_;&L!+e4qZImd9e=YQhL@reC{_R=%u{XuCrcjjI#{L|XUe0vRNRbKPF zAie18v|4SD{o?vKS2Sj2^A@ZK<;(W^7V_ycYv;d#@j8cpZx!Cbe$>AU|0=v)SlPVo z<8$5^Y2GNjj`5|^-+LSBv7e1p@1mSoy3FUD!aVeFhO^w={uOz>i})+!yV8zM*vE8| zf3C>(Uk7`+KSH~yj}sEpzi0Km2W_TUZ-5qaMdtcWp{|JW6tTl+MN?mN?VaVw`}OsR z;mViKF;KBuSZZW~JiVuxG4UrPyw-s~0=$bxd&`T$z4UajcC$s#r{}!H6$_*hf6?YqrvR22VbsZs9^ph=M}RGIS37x=oAM*?cxH&P(#U zet`VALS{ajBL|mH&TL-f{6{?;AKM^HzPK+ugnXM|5A$XEN`Aww$CYQFIdOse0D;39^d25F2%Io)_(bo zK>XSHJ&UU$?wym5z_ zQk+^m7U|E;9Sgi3T63_8&k2Y;88Y|1r=#79y$4!*561U2*p=2d4f>`)&-mQbqVp@= zd}0d)Uw!73+zHUf`S~PV$C_&zPsWwuGjLtihKrr_r(Jl6f3=T)VpV+B$5?axNan}# zJE3?o{ROAmUb#-3Sv+}UpLyN-8zP@lC7)U)&#aP9tCCOmvQzdH+RZa{$6&@@)0|u< zZG@PFp9Tx%Bl4L=iFb|$$~q%vVQpoz3)&@8b2DPdBq)6%Z=@cIbK@PxL%q_x|enWuoVo z@3Wp?C3=4KKI>VK=vgoXJxQ}N`?=*7yBpP`pa+)lk*()x#1F6s2c zQ!a5Hy=I4{Di@9ym!TaL%%#cruvIe7TxR8Job%Z?5x?7freD0V2$gjWo-c+ahnVbk zSDkOS8CWmdUs~@sQhJ9{PfKIRQ1~xvKX||G>xHMok9%H|&lMes9gB&$k8p{-E;M)9 z>+-p`adr1^Y$ANg{3E{uxZbv-Sv@k(xca=_wj(Vb+tUsG>Q&;8MQC+OnDSwM zzf69Aa9dRGZC-CI9`)YdPp`xui_mJlHy3a1r}yzh?|o6d_j$dsc+`7;KfMxvEJCaG z-c`KE>sk_>`v3l1;2*>{)+jIxRFMP20F#P48SpB0A?(WBSAYPMs#L8j4^kA}H zdN^6vwC4J+YtrMFJa_Rh(#gD2xt`(vmDnHV5o%~O4`LqSdhHRrp5lBEUq_|WQ(u#L z7dpKeTd5ryrhjiStOhm#J)TkN0bD zkNNiYXz}N0Z;#vd)?|KB)xI9J_0wj4uC%YXe#RecIZ{KTc{FKXzZjr>Y32BHrG1J0 z-TrhP0$D%*hF-VN&izlyo%Y+MGG-O?R`K29Ec~9~-D0j|b`SR3i?i`u zLFMyyoDo+sZx`RQ@!l)uZM?Tr@v`<0o&rCvA9;N)xxSEG7u8K~mi600yN-LjPOk6N zFND>y-sE+k=GGj`X=GAP^%%(M56Jw=yAPD>J1Dyk^Zixb2oCx7!+G*obqyUGng)b5 zbWnc0uCe1j{N32m(9y*!VoG>J2lH>VdKzrLIG-!=^BS$}*5fYUGSYK@sdD{FO_l3c z=GSe$l;k7%ik*$t9@^K5e8gh;*4D{VJ`4M`wo~(Yp@R#85qOWcm1EsDgO zfq3uK&+0i9JjQj*>S4R2?CQzkrvP6ExX82dJ3Ky}n;m~$#OHpU8=uC*n#%Esa;M>U z`on(M38aAU^>H18>tl7D9c5hKg&+R3Ss(Ix9Z#F}Iv%eJBLLHV6!E!lxF>qt7)X!R zebn~r4QzfNwe{3(4oUjs23CFm@p5JZ^v91PzYT5tkJl8V5`P05zYA$NeoTS3 z@wq*l*FyS+x(#gl4g2Y%cJh(@%81A3ecXq3Z*1c)G(E|66MNmbgV!-YAFJCKT<2L=82x0u5Dju6znfq(RpTsveme)eOrn=3n z{hz2v*Jipq#J}CBL*~iNI?5egi1!Jf5A}_L*4CWZQ8_=5-=@GFj?zxZxaN)lx_;1?bp0{YVd@A)UL~6D#{t6`AFXi8rpRwjEc0X{e+0Bky zOU&1rh0hC3Gl1}S&R;>x7z-x5;kpDCehpXdx1N|>PfD&QC)ZPw>#50gW^z3ZSNGvQ z?HSFRqi*nv0+d6a*(J{_%l}ijK8bJMCt^8m0eO=7VXhgObgWqsU!Eyt->FfMW4IHj&NNBPydcXHJ8Uj382rEfod=AhGX~+@9~h1BXTXQ{K2yj0HT1qkehxCjU%|YL=k1byn!_&tbv*;6ck?KJ$4b4j z?hpABXa4k?E7$!&U;p*MVDt@Vek=#>8&vYhT8Ay0-Mr7sa!QwntB+;1qYck2?u7P~ zU5-0jf9*Ncx9DrdK59O{bH`UY*pArV=D|+4?&1CPZgYw4w;We@L;f7!*&jK+b6n^6 zF27HBrD-?JJnT2SB3=W&S4O*NFgtb3>e(q-7wGMg4Mw(D2XPwR0ncXso2JuZKSFGf2Vi*VL6`>{M{vCznK76#)4`Sa=2 zfy>+JtIl8ab3GoEHI5{e8YIgUEN3+1=(tyVwFpnXh(i z4*Myy!!o~}!Q)Br62BAADGVZC^4kFEcx8H)56ipP;LGaS-If#e6d=pEv3JKj$mGRv z>T}_@!Y;>?&W5zty*utjyao9GG)nEA`n@rqOFiH@mfTlueFQ$MRHVBnN%sJ*dnM(^ zcFFo!ZV>z!@BC)5lm4)iUA?h=zL*!h9=MbF`;j?F*Jn;koPN-_KJV!Axff#t z^O5pqzZKWd;q)Jfi>$9dnSO5beo;H!_`_fJ4>bN}`3D?#*dAov@c#QFmHIfY$b2?9 zy&Ttu>PJ-S<9*D*`di%B7*0Q;(vE80)$M}w3dfa!>Q&~ARx{SzX#E7%V|v~=vAGu` z7C*z2-$~8vr<^|rYbWdNTbK`Ax`F0-Yb?H4P6yfXX@87&eHich?7DK4IRN9Y$ZWU5 zs}J*1-=OEEKIDtv<#dF8+lO(o594HCGEVl{agzFbF*5Np%IuH+E_zqDaz#I1>lazZ zm%fg`tJ9V$6eOR)jGuQ}&r}k~_&Leiz>rw`9o+bN@cTM`R@&vpOS}$qz<%&S9WMtv zetlTRNyoRc9^L#reBl0bV!^s_iN2g)z^oQ$=qkt6fJq6b> zxc;*4DD2xGmF(M3fqW#&n9tOtbk-P4+R}zWp>SKVYVU-!!b> zry{?jZTw?w{G+SlACttNX5)7uP5*uSso1xlX44^Kp2&w$-0+4v{h_$O7xKRJniqK)5$G_qcrfqnWD zZMu^x^t74dl70H)lYROVJC5y`j(CzU*O#<+6uw(?C!+nIXxEwUcSU8`!`~No+E}4} zwfT62c6%!9IJHCMQ?Z|aDr`Iz{KPM+M-Gg~aJh0l za0=pKZwm3;z7OX~318FhM?Z%9$7SIB{k7vE))=#;nc2bd@AuHb6$SHMfc$9JX|~+l z^IC^ly9)^AI$3zlL=5>njriYhKE0oOU-KDW?lY5`e~ujRyXoe~aFzM~SIw3C_Gems z;ko9sAa|Q96TN3zz0|Xy?kvlHLEV|Qei^S|1n)B!;=VuSvuu3f6N`6IGw(kP6mK;0 z;rg%7eBJI34?h0IgNom0E^YqVAnf3Jb3sKs`f)k%7k+2iayZ+TgY0AUp**Bq&bH;i z^uMzuDfPwrJqPi};M+ZicCJldUEk;0^hq@*^>!X&%E$TNvHki#=g;pKkNa`e@mzbu z^ST{d+vm7e==U5K?Yy+Yu0C^MQm&Wwv&-32eWl-ZD%$gw>_cehe19=JW9)gfWAX=& zbn9xagWP@;_pM{`x$djXpX+w^qfX>6{$BdIG|5-??JL)B^h?~nKJ_v^?{hEB{(N=5 zwA1k!EEZ>~$ZVx!D~qcTsr`(?fO#W6pX`qzMd z%For^fxX>3I@Yk`N4eklA@;HVy8DpaN4^fva|Juxe&;*&Vn-|T$%Ri_1=bhmFFn0?WnwO>&lCK-FPJRDsm(Iqd7e{!7o0j`6e_7&O^<0x7+#W z4m(cE{4)u5T;FjM!tb!-G~<20S<1!jJ5cUMJeX(wYqq~$%t-uH@^|Ga`y**y&(z(5 zd?pTwm++AB;T1n_d05W$7j}eY`h&ze#1FG4Wy6b$%kQ|*6lyI zdJ{ibp6`6OenT!g?T7tK-l!n5tN%Xp67Hk2{oHBW58t2mVskF>%d(%>Uwj0J~#KTd7qp2J=>6u`v`}dzctP8xEIe$ z$v$>0pZDsM`|S9o9P?v7%#ZmnKjy>yINly%7Tf%)?{`+;-*NSgB=*B{ywQ$aB3G6h zgR{#m%=a?BlXte?AX+%SaFrB3V%H=7{yd+vVM)`zT!`lVp=v*#>%mj%_8s{YuCFA| zF)zl|C1pNb|GAIE`;l)iw4d{8>^aTFb&vLo$Mslsyr+?Var4i8JjyRM|H8|he-`7p zrtrQHv83C)VCl)cH>c{knc&B`@;%u6E%y=l8Iy3`Cb#cMhSMI(pGLUjLAgDN_Zd9- z>-2Y{y-;(vSzKAH7JsRqeNsP6$M81uc+xL^ne>ZUJ^$PB7@mvnmkoZuFTe9;`Nr;B zx^~`X#=ts`2ROq4SMJludllyN{0gO(-R^#4*PU7Ojni{1@*jhi)c^USCk9N<@&3)` zrv{AIWER-{{{H!M-Sw;F`H=MUOG`7~4R?NSKBN6yZ*YGx_PZx(Uqip2+64Yt&nqph zUe;^%^J?_WgPq|ywBK|rXb$1we(-NP-fnI*zv*}nGe``d(<3=UR3mBuHhM&I(>%T=ETz8E!f5iG(WFG7_)+|VV55jfmbJpKq1iPL@{P29uBCLlO zq5m#Q)`N@eeG%HejlFsyjwpTEo?%~PaOGIdv)4Y&Cw5JEpY6&j|LXefw7tz1nf-d&md9VwBIG0G zlim-O`wD;a@npXz9&cvd;(qaFV!t%zm!4MlQoneoMdCRh5o$s?IID=DWX9cP;* zNV5d}Y)NuIN;FA3T!QgzNn|{8`^ZbMKehz@e2E>emiX~XaPIHW|EO%A;zw$JN4CD< z%+L8rEYIibgvSDK3I5WOj^VT0l~cMrWPI;mo=aoLSo81PtEfp=uhYSW^(y>kd9s3(U#a&;{o9XAU-$H$g9r@B|lP|gZUFqMMgy+em{pCxO5&s?Ej`OAI zknvWwlC-0N+Ht-l`Miz!{@=NGkYDRqdz$Jk9<{rcdHq?z40J&XqVG zu{;~hdno_+Q2x2n_*|~kYxtIO`fYOmg1jc=^Q8xo{vB9OzPyv;_{;~N70~mKMfmI< zmXnn0Br~cdj~tyIw{OM#_N~g#-B-b@7fUX`X#?cfX=r`;(4Kee>rt=uU|T=PdaY0D zwI1!GzEqdg6Z1LR%JrpAn_sn_Cg^EG?508LX-f1oK~Gbu5hve&5UROdpU#YYrQcgE3*z{74(#}^*weygUe9Z{zluu^ZB^}Gt|d6iT>i@q_Xv&|T2AA^28ro_$X z&V;wj2V*eLjmenj^yfSVN-y(B+HcgJ8yQS~&)1E?+%Trpnj2H%KEs%j+h=g|R!m=d zzl;9PK>9czhWl%xcL8(mbhF&I1IeCb!L=G);I^gC%6 zgY!?uB>isH65Ev-F$Vo_OlgfIKgv_gs--dbH`lCTuWWCeK&5|;DP3*jyKyYEM|Td3 z^s_Og(``J#ga4_wQZ#^4u>ZMwX-sZ)l+POIr)!{}K56}* zq#N4%3}b!0j6=PQgEVfC zrIN3|aj>twG!Fmfnv%UTeefH{VVoEj9Vb}+1(b{Q_i^Z-;|A?FlIfF(ANBpnIp0@2goxamBm+%?r{u1x=RlbMd56JiV{5n1lcYm{behKdp%9(W$do6s| zWB)|jX(#HV6ZNq^uI_j6>ti%rzr^PQI}yKt_~@y)57AkY{Rj7c`&o!}9iC_Hw0O?6 zw1H zo<%tGlXZS)=?26QJNy4$oGD$tqiw$Fa&5xz(bq${@ptK!<9?%&a(CrLzjj)<-=!exPDMyx-7`df(T4tn_7sj4~TyoZ1NE z)JCN+&ToYFyis(VVLRvV{N4UA+tEhI?@4@*Kz`DmHY(i(^j|GrbdksVK{*ZscC z#k(hoC*`c~TUYCS0O_cicDr$ddZ>4WTud)x1^cL%@x%`CS2rq!bk+80@p{ciZN8P| z$aOl_Z?|@*5@nbUs$w3;pvmy|_cePvtyKzOMY3 zKgVy5uTsvu%M-VQ_j^_`<y*1L=+ ze9mX1l8mQ(f0*cB1?@}n|5z%2`oAuoJ11x&exLnq%*YeXZu#HYYg_I)Tzd__=`WL2 z_&kMn#pgJ9<#QdPf1!`S@xF5X)M!3ldb8p=Nf&XX*}{kOxdaz3`F*N1)aQ~|F7g~y z_H#*YT#<3kJ)hCvkA4Z`YSwesizEBv+5T_;_hf|U3&n49ezw!g`H1xtyZ^84Uk--X zV$Unv&mNo|@%M4MdaQn)Xn(Uc<`}l;-{wAt7WK3ppK^X4ybhc>Z+7A8{GoU1J8@r7 z&PA7gJ*$WD)=0%$zv}*>#N+e*{qwsF@#rnN{weXgQ}KR-c=D){*tuHX^%uOCs($Oz z=iragO7@#gTVAmJe^(>J5^I`EouW*g+cy4A~hY1jPbE!$vx zmG>!-@9}1%mIhcpyLmgzb@;s(bUXjk?Su6pT`$)2jt|psVdc|upTw2>L>pLnzZ~s$ zA1NpHlP#^CJl}Ly&q20boeJAT|HfAT%J4@-zdUQjJZ?d*^sCrDD)$8@nG18DZrQ4Z z*Uu!^&nDNclk4Y_>*tf}Hpz9{mhEi1?OVRkQpsW=J0kG zoN$iv2)yO}6Q@7}_Z_RltNStE>$bb)^Lp;9$@Oc=bq`$Kr@H-D%QMg(=>MLL@^{Z~ zk|+I*cQGIE92Jh|?!9&rzN7VD_cdQaJKHh0Bif&wvoap-=T$s!C-NteQl97D3GrUb z?Sy#em_1v{8c=U$9A`)egB6`Kho?3|EB->GP@&v-t1l)Z}upyivRm0<;M}g z`LDe=$%G%5565rmKjAzXoKyq7Uu^j};;n{!=Heux2T&hw-;;g{{qqYjPGgqO;cRN$ zzma`gm!G^hRNC_exDV~dv+8u5zqsG4rE~FDMm+aB!ODI>9-oVp56e50FU#pQTTgsX z`JO1Jk!F|Do>&jpqYNjs>|^VTeCqMs70+E7i+W(W@b?!S&uAaV6<)dCJ`6>@OKJC( zdb3YyW!%qWetd7Yvsd!rzMRXa`h7+rpE*5WwfXFed>WT2pRd_`_FHCq_OSWvzs&Xs zuX%XW$g-8s*D#OlmD>mP#&eMlK)Y^2J;=J%orf#yR#*N!PjFVxe&{3nm1g5Phv1L! zH>aUKdG6LhBM+8`lMvo*?qc`0{hQ}a^PJK(ajov}edes(c*J|kjsrP+pX9(6_HUV2 zml54uJi5|FyM@?L)!(4j?{E0LA?RRsWW4w{(z|v8$ zpz{2zV-cP=$6|atzO)+t@7E&fIUc$3qw-v=qe=&smbd3(rS&+!$&HKnt$Ar}Xs#@e z6QJ)LbMVLo=A_a{usqP(vzHx5*baMhXV`TsYf8quGq8qh#W;N`;-6GH0r5G$9NaP! z`R3wveQ39RrBiW@>D@d-Z@rm>RD&D8jvH0e1$%|v@#TKzIExq7`ZKiGOb1N*>} z>^dIjHQVul&sS8AL)CuB{^qP?9JxGyHrf%#gLms?UBdgAw_vneyTUK(HqY8|%sqF> zam1y=eSeG#vfsgR;Ix0E-+_~oYk{=^HpZ^=EHL5VjL5_ZDxAQg@|7;YnzL3#d{UJ zUw%>PAcW^^co(j#A-@8oi<9_#@8M{3G1f7BPX7~$-*jd6{*OBiG(+BP7aQTU@8S~6v)8<6 z>uDu3)t4Jpm`1CKc z;=6duBeg3>&I=2zzDr6oaHStV)vOAw;XU+B_pbfD6z$@BNxy;h2j}HyYnFYBk5W@A@LZs-z|4RP!uP&;)s`UFLoc;SEyx&>;uB$LFUxl`v zPRD)0Kj$T!-JkLQjNiL)J-oL0Q=a3-1!!yV3cfItxxZc9~ z%Q%lctiR}oO@PnO_!E%M*~$6$D$Hy%5dKd6RoHi6DO_d!{R{1L(2~FVoi%Nj{fm}7 zo=UO#Tnu}-KX6s)D!V^$0c2Os`Tx^Pp60=>bbFfT+tW3`*`BWP?P(s`)4ZfT$=;H* zn|WwA^Gaj!zZ&Ph${ge)^*0aqJ?E6>;UD91pN{E|#NT^ZLh^j*R6GkR;ortMb3@O! z@#H8@Q?<{JHX!cop1HREkE%*HElGEj(b8RO(@m*LcXX0&ikj{^aC7^R?)OA3`2$DJ z#eL8@xNkZK_4vFUZyMlqCSknlGlyVYll^zflgyWq zj{CW6-(elYdff$O%J5?lPQR4>iGC?ZMt44kv^QD5?~EDEwU_vYqY)H>f77RNqf85x3^o-PHyej-nhQ#O4`lI zb+_93JQd>rpI_!a#;S-vyGPQor?DNy;*Ch+^`F0Pwe$K-u*1E7S4-cNq$ggfU&~k4 z6*pOXPl4Szb5rTo(oN9k?iatDy96_nt8eD}4C2+}x#e5o&o`p3-Sa8W+VJ&lxEoiQ zj`!`_kgtq?ub^E#q2}k(QP1G>ySh=cPs`8Q9k=h8yq2F!S8bmQkLMT8nP)oI`zk1< zRddoF+-PtnozNfU++Fr3ra!qZ+>he?JU`mL z=lk~k?WBEw+qdueXy5buwQt&eLEU_er}Hu9q;Za?w;>-HPv>Jiy{$AK|CrCmlJn~ zKJ)KCp5KFe%i?F;i}I0ipMJ(zgoK}fI4QDR>!^IEcDyo0D_&32n zV*Z?eZo>PCsOMt4FDB0q^_hEe#Luy~yvK(1=6;7qKj@y)y(mZ7FQcEsmC!_Uj=kSC z(OlZX_ufr3m$m%WUN3K1Y_C_eylk&mCVta5T3&esbfE+aKh-@&`D| ze6C~`_5pcc=9(5iZDJqrd)Uj7a`=8yo)f^y*-ih?h3{*_#jhj3@0Gp}ej}_=+~<44 z+I^6nPbZq$(S5$^aY*CAapxh}llJ2t^5f0}!0E?5;K!YZFkU>=Z`|oWuRdh^PvyL} zD&o)Xk#u2RO~)IN#Opt=K4j;z;`nl` zt54J~ub23y*z)=&z$$ji;_a!P{ zHUWOHUmO?xUfG)=`TSlP`?EPDe>3vM?}G3>ePB7HiSjAyzlQqM2bOox2bjLIP1ki; z`a^x-iB9wZ51!UzJFnYzqQDF41Nq@~T)+MJ1@!?Bp4JQEr|G%-8`KAuLmyZUeL(m) zTpw5t|GXh6xx7pIzzaF&3(!OUmVv`}{0V<5>WLn*($3G^ddN!XAuFMWyimWg{#jdYTA*HTJ;Yz{Ia_af zpk8i0#9#0EEImZV%hN+vqJIr$sjG*`xYe1J^(&Chbz=qamHz!bqmOVrog(_Z{N45Q zddj}jzuv5Xo+5JKO3>8-uFrsC?MS~Eanfs!8_tcdguX(0P+wW$(^sTiFyGTxB>$>F zed;TOzbPi|F%)~w3-Ie&QU505(=mQ&=Wkf2p0?{J_p#;RJIXim!MCl?2p?tJ!MP(P zJ%jt)rO-3Z!`|57pXfWDzeRA}9B*F2oR@X`WsDp9L%oLUwZ=uCsYWT5d)TJyx*+F+ z)K}0h1QpUjQlgB>OHzDgUvD&EV6SGwPGb8rG6{gZu7Ej`sp@Z>9N|D_w-cH9@bX>ijN)-xOT7ydwyd3 z|By?Mhh2NvBRT2OY-U?~iyaL7Q9BFi!2Xf%{q_~*JI;?Su*cHB=uz0aCz;`~3-BE} z%HdUZzJE715dWw0TJ=W8r($o;`qzLTX|JUJ0n=wdm+;aTA)WBKkEF#$enEaEp8oS) z#;NaUTA3tR2(8uUZ4V{of;8i+F?C$DaSxp*;6h0(Y(Jm%Rq} z64${0eXTt=e%02Oa{bM#)}A{6;pW&HtUGJ5Uadj7S1lYpuL|}j7$0xeTR+)mvv;f= z@TEWAykPtdz3lDCB~Z# z_2fv}!8QVqGceB2AipDe{YK!)(-h*jo6D!qyL_5` z4i}`$8D^Nn_Jia96tHRsU&YYYU*O04C;Y#j|IiP4gn6nbDf5tdt^TQ=o9Z7juOoaD z;Ts4yXYgVEGj9GfZvHdKF9qC97)ibxc97MGiG4@ELP@1R#M@S%r2KpbbR)jvALN&R z@1R|s?+@E@VRZD5^V{{Tr{jFKYyZB;m48ad>~WrMR^r@prImBD<6|7*r#2h+&!Zr{ zx!?I1_?MaY>OVmL{eB9cAw6b3gP+3Z(3?KT`L=idRRilTcdC9rg%9fA!&;wxZm8c| z3i`FR0$+}&o(HP`LauYsuYgCJ`N};P{VK<~=zlQ(2AeG?S7TOZ&Ox`h=Y34~&il61 zZ$*57*^2r5HRRY<%;#954FCR9A4^d0j3o%iG54PxS3>+v>jt-^h6%vg|JxJ$s^^Hq$e~89EbT$8+W~ z(BU(uIDlW3i(j`yF8r#1UwNW4{K^yE06~5#zd3J~L7p?b-whvh!-w7QQ8#=HA?v*z zlk$(d=}#ckUyXUq(i8V)Tt8a<9@Vi}Z>lg-@@q1E61zIvC)Szm6QpB<*^%PW;z2p* zj~^F^{}^%N%XKtp7Y)ismgBm`_R8J%xY9E|!i{qr8cf2rFLdELAo8=pByD=LDZ?u4 ztrM)@2Hc517cwm;^mHuzDi^-w*I771XUXrAl`riu|3Td&H^4FQmW7K?_ z%>mE{WS_GvzJ0<0K1*ZUCpdqqG1|@M5@!=cAlLu+Q@x@o=QI4U!LwX46 zdwizlYfN7kZ#g%sF-v3gzl5K+!}_Ng@@E_VPkw{YUJc|9?OOeSCqvS?0WyIl>X6Df z{g8JDV^jivl{3^l+3p`vzdOonI_bvrdy!86y%xx`8gl`9M?4g-R{PE>`y=>i|MZYJ(cU^yGiEIO!<4kH{tE$eFBR|A?=qt!S#&rDX%dai91|c0jwcC zt6X{x@X>RC8IYI+j%-HRC7^5_;zHNuMeV59Y@RF{1p2bS#~A*f{KlId5+yc&o-+{e zm@n&pu`NJ7XotkWg!;KmFz?v&!?7m&-hvA*6EvB@;9t3a$Z=^fDLZeepOzMLzjlf9 z0p`;9Z2;9m@a6b)&%X=@m@a-K5?q{KJc~2%6+&+=u{wox&em5gHZrewK z`|nV=yoW=4sXsRuk?-n{Mt+MI^E^HuzkMDGe{>%B#gX9uClvmeEP8wElM{(9Ula^C z_ASAUcMO;BorgGSiWPh}<(Ju!nXDPpX zy7IfmC%?V*u*S-56t%w#QN9%XbuRdu_OWKu4ZC1jr#X)%n=j$ttagNqSjT$xic_2D zW$&2}K|2!f4x9itz;CRpaljNFhGIK)qtbhd4>-Yvs-^F5bn! z`(fnwam(>UmHINrT|)UzPVb_n*ze#wCfN5BAzX|v^T@f(@Pxm7Z`hahyhhIp=y$$2 zHXHc@PX}=ng_+Fya49DLT*6|Wx zn~g8quQ5rh*G)EJ-{v@_0H1jF_VvrdQ~dsvz7BN78emj{e~HA%1lRE&*?UMM6RnLS zf%n%vi7)R@FOH4Go^3cv4nx1P>#=?%dYZrf&M3+IIm7UmaQe9IF9q~M@yHK{cvXD^ zyx5N=arSo@uo{*)&vMyF=rDkXahPkifG%EsDX2aSqPD@(Jf%3ED4r65yxnt(}hjT#SAeqg~F6N#+y$-L72cFL{nX z*%ykudduDaE{RuLJN8mHyascP^7RVXwHYq7U%hpC^d^1J5qURw$`uI1cv4D1FgdW>`F%=)?P zON1EoOIJE+|NQcaJ0H%MahBi5;4klm>};A~snGc-y_7hyh}2|gbT{@)&Ht*$*w{TOb?`pW&H z@`u8y7l{!h4?`}4g5`yFpz zLOV=;{bf+O%)?`1+54SvxU}bd8*phC>I&TK{h4QvIVcj`!J%}>-k*7Jqv>%qp>VVJ zXC7Rhf90n`Z7AIA{h6oN-xNvj91;pQdw=G^y&)3Zx=^^fKlAUS{C;2#?rY?y$Ix#K zKlUxdk9QG%u6?GTJ}r`()yp?my4mAG!YX%mWZ_Fas$Dk-mR| z_NzK`Kw>|euJUxhM7CXfzeKiOd%pzbmuE-bFG0EEk5gXwoaqg%6aqfft@fKTO$8*2LW>~V=j*QEGi6!yk-?rh*kei6K>j}U_Vn#_+f`Ut;w=syR_o<9Rk_WT)W zWd7)UBOj2Tz4)|19B))-<8Iz>fC8Em#*=PW6D`ITY>T%-8iim`{Hr=IgpF`QExrKW*B5dSiW{ zoID?LR>rTTF-)HvZ;njx#GU>OM`2W1Pwoj@@rd+!Hl1=-{E)b6u)LRk4chge#~+zE z3jAZYN$_XbrCjcz4KJ7X3BFsN>wSU-bEU1o^8=nEP+stUEb$@T*pI8xFXF-T3dXN- z<8$5kCfJRd&}TglAbnVVo;`Po5p6f_-D^@mAKs(-j&wOwZmDlS*kq2$@VTs;-Z?`& z(m6w8&UKS;mG1b!p+wEJh+>nC*;@r_6UXBwR44W z1;dSYu24AKXy*#yaKr5X)XVbIw<#wbD8HiF|2_Fs0tx1~{~rsv-tj#ASiAmH{wTk3 z-J)Dw40+0PE=o+czZ80m6^i&nxg7rn=LCeyeGBhh{1lc&zS7g$c%rpWJ4GkC_Hx?& zJ$t#@qkdxTQO9NMQOEo2QAOsY#EGy{X4{9>!W(3`VZAa_NIkJf<*KK4rQGd_Jt`NT zo!9g1QA%Hq(+nA}z`4c@J6^Pxk4Jv9d8>${LOVRmufty*zoqdR3DS8+VglA-S@%f) zrSSBQ5ESFt=8tP3=OiN66&pVoJ z*t=*7&QB%+p0rE)u-q8nQDUY5$`sItT7s9}%}r-LQjqvcy=k^yH**T=o#Lw}=_PKu zW2U?CPer*?ah@|FbKcR6_Bej0p+`br>Z9K;KP|DM$8@xpb|wPudTZzAyU(pXW+VpN zacgZn1bDPI&PeEZS)}oY^OO5B{WY1hLiLnr{t%bultY9Yrl&-+JN_mVZkV1D&F=Wy zP`F`wN;JFUWub7x^pt4&+V4W)hUqEM^tH=F;fCoc(e$+|LgDJV;kV-z?ho<%Q245^ zguyS4SwdCo_YG&EUYw){}S-3@po7Bi}?Hi?Gz(E z#QBx=XZQ{B)!xFe-1-6hDzh%~g$nlXBDb9SH{^Q%NAZ&L{8?DXXC;1_m}T`E@dKEJ zb#j*V10aRO4`3E(KO7}zx_$s&J=U)*k5YeUl;rvSO#CGr`T-Em(%3AtUl<o2nB z^}kAxuS(Efx${ftF;Do;>u16KI16^KS@yhs7S8L5=k36=FVacJARm*@i;HJLf18!z zE1GA5e5B{ndTvfW`YrGvpGep}b_*(&;SG+oYX>A>dG9{yId)I%f)}}d4$|%bm!GxW z&iIn;UhcLlVaImK_hIeQKG)h~Rzmc-SsnB|^=DxIV&8tO4wCIkv^&Dw>iRK>F39`6 zvmrU;J+FD7?>tvdNIvg>$h&spf8f1q=e-BKuyHoz(v=C86F-7^mQU1QVK!!h`Vm#5 z|MVLfhjv;Ur9B$-IL?dX^PsQKOANt3!G9k3!-}^|en}u->v3O4JBYj!r}f1znsEDA zm>v5U)RP;`53GHW^r*zi6a9c`=lz{ogyHr4f|b9deR)TT{s)uIB)nGXox?Mq=U6-A zAM1;pZMEOqZFT(w=n=1e7JQeQCB66;HqQH^eD|4teB>{^|D^EM50B$N31wNI_Ygff z{3YOcetG%e110-wFne2iaQ}Ec_=o*=iWYRb55LyRzpL<9{6gku?ZX!&u18$xR&HuB zmpE=yjOQQ1`eo*u)R%pEuKM2oy0i9Wf1V5fX!Sep)BW_j74*aXNJ~%3fklYxIC$gq zp&ci#L#>vMH)ZI!&__qm&8~|z=GKh-<$Fw8ugnxuPw2+>g7viDx!V(Z<-)V`dL8LR zzttt62g5rMQtx_5!hn6_AxJBhbIc!dmQ(%2D|au->3l6iE%K$xBl7iq$j_el4?zw- zWaS{`5dFV$<;!`NVP*Y=5sM&}Te*59zlKZSsCP%lpp>{q^~MSQ)STt$y@l)WQ2u ziHGnX=|K6X_1TZ@iiqb8r4NB0b)1P8&maB%oNUi4e|}l+^4@)*UVtm*`5ha)>j!u> zXkYwCTN`ghywu$5j-RxbYg}llnPl!LUjjPo`>OtOy+CL7tHkYB$MNC0HS1H(+UaWh zpS#?hww#VPK-yoEc_d(8@y=_a*+IhmufpL*vx5{4H<}$J9B#HfC}|CioL61*zj`Ed zJ}T!Q9^9_^Nj;J|R}G%4bj?rdk<58)5N_A}q#nV2$By?+{C+@P^OMRCziWO{`QgXA zAM(?uYkpFXK#u$GC)s5q^X@?Y^PJp%QtQmaRzCUd5syNiceF=5YS%-~ zrz6d-POkeOetU;2o~(U<=jFe1^-{fmt#VA)2g+l4!?z>)Y~j_5xcKe)ra!zS}YMvl_o#qUoM z#cxFWq5ffnr}BvFn&%hA^^yJ>o*WVX4KFVK8&72XH~jP1&re%HFZI{*r*8{MHy8)v zrFLkpUw%Bq-{XmlTngs%-C)*NyKpd{{vOO%IU)Jpxi0-Rn6GwP?zj|xznxb6Ql7~0 zyTI}I{VnW_2}kXvK|JXH!F;tN2J6!gjr*60=3e+q$$2JF$@(#UHqJ2^&c%BS4Ci5= z%YD(-`2DsX_!B2y@+1G!ALLc=c??OzeChL$&htgyBVxI&?mMry<7H>Yx7mBuOK>ki z-ZwHucf;@cZp7t&_3ZdPh~Lv#?c4+YZ?*fF8r*xJ9iRr~Xh-3`RPOtt9O9?p-t|M} z^lQxi4oH)EGQ*d_^^D`6UyeMS(+*0w+2sv7fw z>lxPr&d*`yWNvey*OPnIzfj6?o_po`xaH*iaz8xIcdy)EZ2Nxug|^Fc0I%F%-Ex%D z+3hxEm3!JP$JtGM1-^~o5AB1Ut#b`#Dwh?zZgs~#P4_Xi@SprM)-&4a{ojvb`d^S< zhTOl{eVO+@cAI&|?qBABj@|M9Ev|h>zvQ!_>#wYz&xWqQvVJ}ry8d2^`O5Zn{SE3JlxzO=p7O{aryOB@ zU7v&Xi?aN?VGj?)OWgXZrv~eH50vi_i1$RCdML+@`sZ^w_0Z?69!fqUy~)qqIkR3L zcf5~68poM_O6pHRJ~#@ixukpk3Cb_Zcb;B546C)glR&~E1~dJP72)%)pu9rguBkXV(p;*{rGCkr;hva)d||CRnFkM*X65FPJgUl4*Id) znw<65*!sF}mGxBDf9{ia!h5eGN4YL}^Ko@K`z!OY(qX%6e3~BH+aT=)?CBe9d(;!w zBA@4hYmp-M>D_ROwIR_C8+SYAbGuu=JyX9Uo@&n*JQWUK&K!bs#1cSjZQKBR^!a5QppVJ-QawG6 za$e~2p|c*lL!~RvN!I)9*Sx>XxSkWU-2JGD`dQ~I!TMT0T7B<5Yi&PRU+w9++xOnD z*7{mr+t+yR`rf(AV0WAjf&bu!#D)&%$liLJ{ap&>W3JacUuL+(4e4LV_(|p;8P01m z{|KxHp4^UR2Y)T+eC!NvG&^|VaHHA5!{K&q{dzr=4q&*IITa5+zM`RnWaqMTbCe>3r_c{5A? z=JLP36Xp7%Tn+w>2$ZM%dku1#;p+&0VjFnFo-g{(110@U>o5Ig;x+f4rN&=}ynYSx z`Za{FBYfS;|J%_n(^;PQO8j-iU(dQX`6k+}!}`E=k?X`}#2d^yDtfd0LL`EV1prnRo*&wWHiMsNtA5u)mUi(caB-(KoW>`*2|DomWy` zzV3^2-N|nEX;=ficGshw`^{#oAe$2Nv4#c9%l$~EOMgzluJ+`fZ({A^s1VPAhT|06 zcXR)<1vl9k>if%lhhzide2Iok>Z^4o)cJa3o#P19(`+_l|CnrA@g2b*fu8Rs_#MG)`}TXdzx-}uOVNAaTa_E{g0EO^ zsD;yxe4bY_oR4wX!NPeD^XR?IJ?D3!fB4tUcN2W~{9WAp-8D0A{{DOt=+CEF{rSZ0 z&!>rxk-pJ<47~pdJU<4WA0*llUSmGAA@Moae1uY;*!V#RHBP@Ew!?eKA7hs6VBvfM zyg$j{{c!;Ak1gIGXW`9pyClBN&hy_`JNY)~UH`K2OOfuFZHa#+{%zwk5nqQm_o387 zUWK=dy-#&{0y^S?H2y@e`V>FUnV~D$(17WUmI6FPv}9t^4}qP zrPSB*(dzs4%G~w+df{t0f6H#)uUF>Azw`Q@Ub#KSt=!p$b!eMix0=n*?0fl?7vvv) z_hegQTL(GlpEtqppk3m#^I%BqugN&cZ2NejdgT{6*X7ROM$;<`hZ{|=42K)0|3$Nl zd>KlIFu2k5%EIAB(<{T_X6u!np2qXh{QBQlp>)XBD?PaKosWF)cz#_lTz)StKfd8` zv-MS7&v*|$3f%vO;;VL{pj~BtB)D5b;i^3-2>1F(aJPoS4YLE?5DD(KP`GMG58``M zB)E7u5fW?)&SSFQ)pC-0ZXRYAi)PnzzA^l0cD-*7-$b(Og~M0Bfgs(Z-J6bu(k1); zkvCr!MjFp}C|sUXdhZr{aBqzSwBK z+Wlfk5xZYWa)c?d2&+C$y=Zp4B-t0~HTW0I_v^LNo~Ngm0)B(})Ya3a-8xg6EJnH? z@8YDKFU&zZ_!2^LCPKD*l^g#xLY9~Bauz3FbI&6dy7`y7<*#?+7rF5p-1xEF@0WqfDNxgKKFlH<9x5ko-5n%8lOHUNQ38%Z9h0(v*UGk zyy`&jQqu!}dsw{u>1DuqVPi#7{LloyLohFb<1hEyx@F4w_5V8bjPdP&XEpu~aQnFz z;PBk8e}>NoB+GyYTU7sZ2lH=nY!LWmP_kEY5XN=8WPjA>`?__>!5GiWox!Nj{SWEH z_jM)CUP-$6N4FdLN7KK2P_iajY6jqMZ+HIGVcyn(N2GrM1898bwhsJLm)tHX<0bdv zNY6U7`*lyYC->q=$Kfbh4ZO1Jv3?~m<@j`7e`l2BI8@^=;qYD@+g}>1L;Ho{ksl7> zReb}z*pI6$-&6yuYS6Ja{`Stu9eJl#Jaf-&9_sNuT2Q{6`y$R4?u$qVmA4oo`}51y9Wfq$J6b*B4W`t77^%+eXy;3v zsZS2I>AD{pn#}f-9Gc`l#`B{bn&ke&9~VDJuRhOh{rS|>J-f)zq`YURdhyUC_2Pbp z={tgty2Xh12E=(UiRp9VJ0{OVp25EXHoYEeik{Pa>C`88OtL)v0o6{^jyU}^G|qX` zr{|8~>7mIh0Z-EzpXV#bIQ40NzW7^s_=>-U7pK34zdZdr{Bi2hggXU)`y*8U+M(cV z|2}qTlJ=jWN!odJJjq}5NA${h{tQ?9Ay4r^*nlh=xkS!eeShy=DvsA&thEd4YIz{K9I=pvHv^olmq_qw4?gtx$FDw z6S?dA?F;lT%5L9ppOE@mUfb7r?)E+VL~wpJnN-G(pneVwH+znyMp?)oFiAkPlvgJcRoB+Kj;2M@3oO{OMLO%{XQ7&(Ap;L2p)ZWcpRLW zKTT$*%y`K@N#&G$N6(W}x!)1==AE2tl3#TG%6kAiWyZG@_;~hU>VuR6o*qv-h(Aub zNc?m>WS=5(#qS6H&HTf6N~#@#c2$47;vc?KQuqDAe9B|urTh0_zWBfGl+=BAFkk%3 zcgpZ_FrV_4@Re^RU*##+Q_0u;Ek|1AX-EI^os!B&0>|?&=X$Wtq_HMvztb=ba*ui> z^~DD88v?|K+4WHGqtWl8x9fM|FVF82?PTjqdFsdb9+rG;&}~QkHFnO~&d#@HgIkC&_!&{BGTrtfg9Zd5-s3tZc#Z9B1_d_QU7+df)9^ZSmO%xLdJ~>UXS2*UhnA zpa%(Q`5mY4BpJ7E!)Ai1u6Pp~(gf4D;w>BYtJrMA{uOWAa6rYoHr%1&eH#v}_`rsP zDn7E|;EGRdSX1#C!m;LG`0M?IZgM~1%J^vez0<8lX`FwZ>-4Uu&5ZZ&%n>zn!UVmxY6w8;c#{R z7W#U0i1seiuA%e|gB$H#ro!PydzUF3ZuUB5KkIJgNVIn}M}*QL3~sb{Gz*6t?H$c< zxVo)vo*l*AEuXpiC?^1m)6uz$KLA?7z?&hD*-!B;MfNu%z4qb$+ zdW+CO&+F+Y5`_+pp>$BaJqS0NKhelgxT+@w$L-EY_>Rg6SM-+Mu+!uB6sxcT4KzpF z{b{y-OT8r5JJ-}(?u33M-@PAFq48Yz<`&26D)4>X9z(HG5?*;xqJm-XqI6~*W&8ep zFZF?V@whDfI{SXIzPHSM1m7{?yUY463gh%=z)PX_UW{LV*M0}v&wg*KrSS~Z{XX=j zHuHVhw)nl??|C z?g53_X~&z!B#Fp(wnqX#p&Rum{qDV_`@eroJ(>IcQ7G@(1*#mzNrz*Q9P$~K#$;Me22#I(X@>vEkKC6t|1F#oFit*UoaY9N(|*tRCd3so(^;PBtj{>hGtT;q zvpnOhul067{1P+9+6kE+!@u2pOo`bY(rEWAe6#Tx<$j+wH$Id@Keq69$KSnSCmd<^L%VE$e}wE8 z=}o%sW9`eM@PB)t-0r5y&G*Z@&ic=qm4Hurlg>M#A8hZ3ZhHsWa1kkoEx>lpt>c>ZW${_T+$lcE#4t#X~ z%Y7v2QfCgg`%-O({VB~;Z#43?o_?pf8oiI&F6pE7m2bwHK7eX4#^dmkn9!B_kdB+4 zgY-p@PpXi7;;H#Dj5BA9d{_BU*xL_H^1imLQzFL?L%W^PgM6xZseDmCuIXmq>HQ-Ea`LL(cO(oR-Gpk-yS8 z9{I%oSaUqidyY@;jDHfBc{tT9&CEyg_a&HtwJ5`L1D%(gkNi?2-)A0aj>g(@M3VO; z8RvQ;@}sqJAJDWF?XE+a-BEvpIV#B=bwA)+4!dzN@_&wcx^LzCXoCTP=a>%KWVySn zTsj`yc0BrYeDa8-ghwOvop7ms@iz(e~Zp^VQ7c6^RZ zRu|m~Ili>1 z`>uGM!}uRy2V!`)n|@DR?v>u_#{YJDU=FrAOdZP8o=Ny^@rjT_ z1I;U4g!76EXH^&Bta9P3?joGkE*#QF`X~Kdg?Bd?Umd?2_r&jRyafNh5wbwSiAf13 z*pPgaKz-8b2GC5$yTLrhWzuYi`Kjx=N=M#%U@F1+8n@!Q?}I}i%LP{!eH68JfA zK1{NBwloT!^z-LDnq=`5x)oM_71}8T{^|nC`{_n{vEQU0=|uXhN2q!=>BqS0v7{H{ zq#x--da*v~$2jT5IO)eY>BTtdM>@12WWQoA-6rRx+vE;(i&|dk7PY+6ElPQ%TZ1`B zHfC;u_Dk0njnl819LxAC=(j(gaeqGX_UAM1&nKS#e8x3j@!~w&9_i%ADLLoO6iZi~ zcjdl$$9q^qa6rGCwLS5z^#_<)WLeGT1jdQB?Yq=NY z9djzy*HfWqoeEzXuKTCjeHrUN6rY-`Hd7IwYW4W3D5>-m{^h*^*}wM<)a#qKp7%bY z&V&2V9`Tuq|GI%jY%i$aNxR%nSKE#Yp7L&s%0oVUqUj6?m*F4d(*S>JavI>5xbS(; zm-Rfj)Z)GRe8)uL661Vu74J!AK^9!{*&ug(r{)~rsdjvI9M_}W6EMaqhnvkJ+>e%X zGM?8GkCRZQ#*BC0A-mD}IrbUshvxsx<`2n?|1aEpp69au2{yl*dmeqGGr`S2!Oj0^ zNd8aV{1Zd+Pei_lx4dVm^I7K$+kXJ#Lcfctnf<-U#|LeCIxC&?i}nS=p*#$Oqy8R* zpAQb@K^PqMy9mNj_&82oM`uEm?-<956e@cKC<>WNq`qK}w`v7+ma3rpEh;uzxe7{LO_M@|UA}`qP zbl5Q|C8h%}uU+=@o7Nv|_5=2`|GiZ-AV3eEKnLkTdOifX!hQTSNEXs(dKP`AXXrBx znARaT7k#<{Cm+4S#wQ=0a@8AahFbdk|B(*gCf_JMxGz;bnW4@DO&<*YpxmXuw8}G) zA5t$@zR0QE`C5J-_{%9g>Pi0nvB*pAm(?F`xaDJotNUoh!z)LB)ZxHX%6o9K`^EAi zFVhyT2S>_z?Pxi^$DIb;H0yI1YoGm*@$7Ek{An_0TKgg8r0jp?UM|;P zo}>Bo%CoFI7>FGIe(WqO2mEm4+{`<-uZnbjI5FqBS!Zy2eM@k+>muB2KLhW)Gn#)$ zb0{6M;lfmfAIB-$d2-=!qn#%g4ma9)a^Y|v0KeuxS1%mygI$E1?Qh}Di)inwObX?P zFu2kDdJ2ad&95gMZnhtX=g&glaG`ke&jB=;-%=`baf z4qS%{I>y@-=Y6D;GX#{!9DAL1Xt~U{`2w4hW_{b z{+_2Fs(pTY=;hoW=FRFgXF02b zorURX;N$7#e!E6TJBtS=+pf_$9MQiE!$;x!@e%z#Hyka`{yu2?EB(@Rg@f+|CwX#D zIY~dRpx=+~H-wI7+5Lw9+-5!M(Jr?h=Qk2Aal^B4ZTNs z)5FdRr9&9pXnI)TaHHvA;c&zBrD%HC*`ag@gBwi`D;#b#JuDpV|3(ixCzKvt)5Fd! z7;ZE@EI-_?>0$Zd2jx&SJ*;rJ(e$vw;YQQL3Wpm_4=WsQG(D_vxY6{m{BS$h!@PA- z^eJyWcGglP`tQMJ-~Z2jFP8Ol z=|wyTpP4x?<#&xlU-GA)3|%f)I?q)JSM_r8hnAaUN@MtvDD?L81NU09_tDJP^-k)0 z`IN)V*LyJZpY->e^3ETpobtyhU;J^(1%I6L*&pXTWP7^a2%SAUDc5!XySc(&o-d*3RQCcsE4ax1N{@Y&)Ey1rt3KX_c6b&(0$Bhu3sw8 z87{;50QX0i+3z^AKIH(vcXA2lt@5+(pK8nx;7!hZ;!nj`q85F-6y=)DiWo!kIrTlx ze?8B?0_oh>W!v|!$eRB_|Cb9kuLlm6w~>Bs{VK%Vm8|I zk6)B|5R`NN@ne7d@m%-6h2C?M^1b#}d<$wWygldQ-J7{~9O+vH_7kC&rOc$p?C~OIeg7K*&Wm<$9w5};Q#&j z)PqiAdi=`zDZUu@@ZK&^ZkS70rB4E~Y)p@HGVdfw`~v%Zx7mQx9rXtTANHH`w%!bO z*pC06Kg;p`qPfYr$$I={KKX+fBed^T^+!zh?PX<@l68oaf5OXk&nmY8@FtqyX6}Uu zzsTJkc4@r15;%}==Q;DxuH@5iM%=J?Px;E^JotyR7rdYR`wHHS8Edv=`HMH0*|tKn zd9r8_Cyx8$dc*Jcw41AvzXuO%dT>6G&-I;;?NEqu{f-Lf8RJ{w&wZ|iA@BZf^S%44 zpzLr}%T6T5u9e`dsMiN0Ygxi|fucNnLk{ zp`Y)g%r~~L>x@NYi=<-B}5wg`H|zGcL})*MhqdG)zDsEqg0PB9;KTLjJ|yz8^zede&8 zGNj*FvB1?|*p8$ZqjVeEpr6sA?4cNQV8>r;d2ZNDE^hg7ahWq{5Wct3=AQcrHFxCQ=K$HZC@ z4nh1@q>Ef)|5x;o{%>*Q{!eRC`fp+jl8ch1=BDIYz$2ZQPCD_v9_dtV<7ZpHM&NJn z51nS->$W&~YbWKmSU*R9`J3GG#Fy|FVU;3$;x*ZP2zZMcXPBGOubVUY_{T3gUW@Ge zc{=X7>*d0a6qg_A{{Uhg>HmPGKlRXiBtKA2za!(7TZVGfXBn26rOA7s0XLf;Tm6@C z?nHVFf79k}>#vsGZn-<|0*~X|8hZe~!FMMgz<(pqIt$d8N|)a7YesyE`Gs>&aw+(4 zBsfgUk^l5vD&@an(Cqjd2EO(GD8Juz<+xv-a~;rk8s|a}<~r^FK3bD`sEcxbQBHZ$ z8Qf@czHqqF*h)oWCs;Znm8F)}?nNtshH5;p)Cx)(`Kzmha=`Uze5^ z3^&?$Rttw4?K`XCa8*AOI(YkezK@ij4!4KWLG1)VxO_(`KioS);i~;W;1;^>-H-PiD4aq*XyeU7|us4|P|?!%Cy3?D%#a92Z*Se>Ou zF#VeNYMeQ)hJW;G$j|J2%Kg=--%;+b&dB{gOMal7%6+fgUr>&6pP}}f=bwKL$p0sh zA2Uzjp6fG^iLl3yvc?NK( z#}I$U|Aw$HVoYH_OF^u@<}uWlxacG0&SNO2>jCK}@e)hgzUJ``(-;m)%cJ2aNSb6r7_yO&YE#Jmi< zS{v5Ihcn}^dfBS1ew90n*O*nwS8Q1BFjRcWNAti(ypO%wcV18ZkoE%y?U2qz=4Ry6 z?&V-qSEAiVGVQYe-OS{&HqfI6ROdXKY!=1_V4OLQE74vzGo?)8k9Wv_5&2~(bz{Y| z7~7S}yDC<=?*@||L4EI)jK23Q+AB3Hpzkeg^wTf5o}_x;D;d3SVdHAs4(U#M@Ey%C zy|Ko4^;V$W!6?u9cZlhZUXoMgw-M>It5Ki0Gd{T|!@J^twfjx){%kLY>G|)^uEG7; zH5m0Z?)_N_d4HDns>3?;hyXoU{eRWQ@1*u#C!THbwXWZD z*WkS3!XZAKKWtCinPi?RdZyyJiaMkcAL9K=#Bzj3`^#0RyAgOZ)cU#7R~1B$hunL^ z9z9mM{aD>aIICSaYq|($jSFXO7vZe+jgQbz=;-%9Vfvc*J@#I~+W5V&8{g~RAHK&8 zgZGNpy7!9L`0f=8f8KzxBCqkMdb-5qd`tb6UbTEO5G|8G^*-^dmQT8RFOvPCUyt6) zWSss&{`i_ed~G03KP7*8-ha@z_DAKY*mF;X-;cZ}d_Anhr#i1C8J-3^GQ%^RC5YDd%Tvqr6AHq*2}@ACC85^t@r6^`rWG1@9NELwSY^8(%=2_uIU38!+z% z{>6zXT*^t~IjIrHAbp=L8m$^COVM|{(M zk3jpucZ5CxJ!;H5$&V5CH6LSrlXrwZK~3II4SPrE_iR7z@QzR)=YRE%&_`IuN19L3F5eOQ3?chRI`SQ%k3o0g zt9Mauck{lR@3+I&n(+RUBXhkY^ts#Ke{47k5UBTjg!PbjW8O!<-?#KGq#b?VN8SX6E~wnM%tMVxl# zuzK>2kks?u5&ArGyQGh{%XxS#=J@~i9igvqzx%5W?+AU3c021A`Bd>zyC?2$@uWgeRF;igGoU;yXfHGy3)krU%kbaC#uU2H!;xz4Jz=9kYY~ zEshoAskN=i;*`EO#PTa`d6C;aQuw|^YG?eDcxUeo^+<`mQQqCkes9P@J6k$=Z>UFV zopDk>03SexrsTb$Z4urZ>XGV){>ytqJX90Z@s@jkk}vbJ2b}kN zr0^vb^!H+?1oR=CKY(xhf-WuY`#Ib%3`Y8jl9tBf@GVQOz}fZny&}Ow-Ye=Hk3-Qe z@f?nR^4`FOfS>(d(Y6BKE0TVA?-dCi@?KFiJhVR&`rj+s7V=(Ej}%s4%U7l7K{e== z`@N!4+fVPkBEloSqd|cv?-faT9Z&DQq8{KS8Q+lzbB*s*H@^y;%zn+lJxRW|M16qq zW8L?%j)eu4`#X6rYZ3OKoG0yu`y=x2QjC+#vzEr~@ZK2t;&C^m+@gZ4^wW99{cklm z#s8jIchG5x>7HV`$~&#c{YZRYQN-uDQB?!i0?)5UY2irA(i~P zs-hR>!9a5{>?-8vR`98$w>FM5y+G|=sSybK0fdz61se8BRit{^b}mA_1Ko1?PE6{x z;$Ep5*o!@R!8pFug7%nS<@8GN-LPJ%%2c(fOtqsf;q#!B^s7WU;(syl+#9i8_)qa> zyH#$x#P<-lUCrlL*tOkXpkLevUIhD={-~#R{T-@4mM{G4qVR>s4}L!AlhX6kQIOZ7 zM@o6__ZK#v56w{G9pxjx<05i#bcgp5`9jvKrqRA&uIr(!yM0r8fWP`;29aO5F(p0e ze|DVVtM|0yaMhIYWO@_+t#KNSxgW+$ z*J-|^)i<>r()*>jPP4qe3)t6Jj_Y}E8}FMbS14S4pQ|&twv+h7b$hB=6Z$?U`KPP? zeY|&1e!Cx`#UEbAJ}Kywa8Z z?5h7F=|wt`euU@uXJkD1u9DJC-!U4HlWqe#&@F0trCZeUO1CKGm2Mi6FT>s!S{BcK zUuXy4{PFhlJ7nfh3iRVV?5v!=L!|AKuhdU(6cS1AilTv#*Z%j12Bx?!)j0#L9G3To z20|JPgx)nUCGQUngsheEyDwe~xn7HSt(8Nyt{kF1B;)LVe<-_N-@Ns@S=5QA^2;)` z2Wwoa7XR@bAGVk4{h|A?4*1_6V*P46M@3H3&KiWv_#fj#0KYah1n~L(5aIjZ9}>9q zp7-kKdVk1|ZxF8H?SFrWa4A34U$Hjl_}AL;C%jGYD54zK??-BXPC{D#_l7#YN2Ko! zQGX@eb?*AWIM*xjgX{Rd5%uL7^Z)LBBFY0@PxZbS`I_^X;VSS)e~cgfnCNf%Gx(bZ z@0Urr@bdbukRLwfaYy*W&FW&cFUh*E?|Tr>u=2U^pip% z@4RpvJA3Dacy^Xge8Tdx_3+@kDiT+`y!Tt=-4=yQz7;-@cD!=53wiIncyNO4C_l$RihI(z5kGAH=Xi`VWT>~};@QUC5zGYHzRr2E_Tr+e+QKT^I3VQY^;De?On zWc6*4H{QEs{(G*R*CR4^U9rE4ycB(k@5P9}uEob1n(dx5(&YSFZ zo-CrLOdV3G|7tt=%2CeiJ2sukd9E@1HJPC)+RdW8W3ywSC_(1qi#?ddI$#10ps`!rJ zpB)R3{~gPBF8}@I!{sya?1+z)&n2HZFIav}7XIPzwZFN_=YpSa{s`X$=a2A>^0ltJ zx#mx2^~o3NN5q||pO2#XSr1LAzfiD#w0kc@Q|f0!z0}`6^)BM4{xZS*i=YdyGj(?U zP@fInN9X*XWSVfF=#2{I^PL`vZ?bW|uOsm{ZTz83e6x)|jJWWLjQ?tkzwm*)L%bI2 z@p{0`eV={DRM>s?&g1~)PuP9-&g!A7_7}V-qkKWVlzury=KL~wubf|X@a!G5lZf5S z^G9U9)^ngs@*IYAq(4t^{`=cuKKYRC=zJxe`29)6Q_C~l8u#=-zn^6a@{;!OdW12P zg8h0JY*VQe);;WNcDDM6+Er-B+8LUWgEB3!?+ruiY-@YOskg8k`DYm7OjkR7(2tUE zz5@tapJn;G5O{7W8khQ=8Hf7gU?&@A?PPlH%XNi02m{|!AD80#L%-2oB|lJ3{gAwJ z-$S`(^Iio*+UrIl?2EtcZo9nzk92dek}`L3Y#i+63meC!M!}wVn8SMVow;2R|Iqm- z44g{uS~Dso%Qp0@VM@ioq=^oz* zJ;Xjd5soy!`r{;JL6-zh})j^<0qy<5J%DtlQo1vwT=VJNqf-189BYEI;f4{u8*}?e}8$ zNcD1R%}MUL)v(wesY*xNM^*c4GJ9t9DDr1eKgsVG`B6^)#m?YH^FuBiZZtpSaJZ@m z3LOf4uk7PcI)uTE_D)9OaHGAG5e`@NRndpVpOyBn+hJefI^^JfRDQnrB$OWc;K#mY z`0*~nSG`U6B*|%Q?RwGtlRpimi|TVhxY7KRKMRGcdY*qg{rB#8&oTda{wowd_hFpx z{9X)C`RJF-cpsdkX`Ffh35ECNtzR7TwZA-{p`4os{e|Dh;d~*V&2jY|u4A$fUg+M- z`?u8-{ok|W81N_h4!`qGeQBu;dH+IxO=hny%Db;Z=&)C29~qRR(d6CNp>TD+1mQ-L zcmEBAo6X0C%DXM0aCKY-Uk`3HdABtbuJUmZZZvtfEflWqa|CYo{y+b`FqNY3925Jn zXAShna@+!;ePXYaem7g-diMg3fh^4r*C`k--(Tno-0XV{-u;tk@6^OX@eP9;?VXy! z;YNF>rf|5?-l-`ZF5k7tKW>G?J*$gw!@i3;ITGA>C_m`=jLZv<&!WAzm?`}1!J?k~Cs_Y3GBwBrgLJbfzKz3GxrI&6ggkPB|K z`*fuR!;N;Iu5h@~?$bqu>#al4^wn^opUZnH1;tLx0( z)}GT~zO;Iw+97Fw*$4T9P^ufok>&S8ybf{Nb?9facWNJ;+wEuL3b&uxKXo+n_y&^f zwrk8$SnEj$%%{ynm zuGE2^x*qi?$A-BG5zcy?7xO$^{e1m+G5;9k@jjpU4=~RAeXa1f%l;l=HDD4?wF9z! z`lT;yJOK8aw~F|R3h71*9Py>TKiJ~K?=~C&>l*Di`=?Gsp8tGa^lz`f;s+&hzMn$v zc`Q7m`O8HY+V_e8A2;@G|6eQd?2XjJ7eoK1US3{wHoIft>?=I6m()Wds* z!tI(KULFd!YkGJ^DBP~;;gz9qyQYU%g~IKc9^NY=Tu=U89BJJOhuby%e!Eb7!{A2K z@5AA$ybkIc(e(S?q4V z&+o4|Gui(%y$mOe)w|m;O((vvHzRz z9Fd9tUyAQlY{q$=`j_C{FmM|@(#^3Q{16UJogJ$+|JNb?h|~?G^gC!X+tI{re~vi; zeh(+W&zvFsK6qa9Q+uE3r>PU+C;rpa3D{}!y*Ixr{SEPpNb{~y!5Z=OS(p zmvjH=sdLSAV8e6x8y(`qefb2W=>1eFHx1?3s|mPYfUnr6PC>bLb1G5<&yz5&pE~=Y zMf#VpVev1SX#G33#%H*G9`whU0k4c1D1VtV1NF5$;hlzfHU3UW3BI&VF#U9-Gdu%f z30gfRbt>woE7?Bpw^jge2l(w&IaThT;s2ZPkNsJPkQM>4N3h&fKtJ7LkF$_fK6u8;>~YbsFe! z8v3^i)+5iaga6MTzH5@PZ;1b#_f8n!L1n)B1xUUp|7rJRzSkN$=Fqy5N#&PzFWF6b|E?-GpfeCL8p{L)V3-X$I6+qqWmUD_f20$1*p zJD%LjmRk!Tw-%(XLc49|Dpzh@1-Z4r%B=+%xi!!7)dG~OGxGv+Ye7bC%|X7%tp$)L z3p$ZoH|CUEH)iBkSbk7$Njsk0THwm98z7Hv05&SO7FfA88!6dxYXQo!SF^3$nw`4Z z%B^dVBJ=n%j7u)LHOG}(H~Qq(jhNjxqWopfji~RJTh}69ZLUqtP6@s$x8@_Aa_c&T zCFUBmehuoUE7`uttp%9t3m~_ycjeXs$gKsKj|(8T7Wm{A%UuuX^If^6@#_L|OVc}+ zlm1G7=ucS#d}Q7{6=TmRx2^zQlw0%B66Mx{)Qt!+R+TqGZe4-c6qg)x z<%jsni`-gZ`HLgw$*nnV`wLQ+0d5_}Q{>qdh?8E|f)3YqBDY%e$gS2qa;r6u+-l7u zw_3ktxz*Z5xz*aK+-fqdDb){ya*cjG`s*myj*jgL4MOeruR?pGf`j+Yo!|7>wQ>XG z;6(6}`p-&y*GlSn6H&I=90hGmp>rPnui*`fH2}XMz+oZyi0=t}&&Br^8y^(=zMFrm z8^?YU+Tt3yYbuI_!u{ShZ`U3#_vSDySW8? zd>7>DUGDkPXWdAh5$0AKpJX<6yA__j&1R~@_9vM+&K{NAhfj6bKI7xuINN8u$&Isp z#`kpNY@hKTAl}{FnQ52f&-4R&9^6yMP2zj?+|``flX9ZLoMf4T^Y<>m@xQC~2gDo9 zG^(*kzst_!I`fCrnMi3i*TzWKjexTi>*)xyI3?{J6WgnDG33Xu9go`xL4HluV4b0f+dQwz;i-o*-*FLU3^lJYwM-rD$M;P=O@{FnIssX^xcRDU;}da=gY z{^Pd&`)zx84-GNm^|+0XMM?gsw;x#i7}m|la0i2W$`NIF3DdUIA91eN#82KMdn_gI zkv(q1?DxnXgC9BN+vBP5_sAZ=x|lXc;QX-EJYfCK>37}nJ+g@h7VXT~e|yJV&dH+D(`JN1a@`a5J&R7eL z{HO1Kcl0~|Q)&$MR*v~A@TmoMY=5#D7W=F9JC}F1C0^;gYM!uimpUAO@I!qN0*vktxX(t~g( znIn+jYVVm5pI|=mn*xWJzt6L&DIOQHlWr< zE#C?cV3sFc$sf<7d>{NJjry495YjK$8_yWp8H*QM`I}_+L_5zxPCDipUpuvkk)HgX z3j0;d_X%ydv-{57KhTTkG1s2P`t~&D(`LIbM-ls*WNs<>d+LQ$lX)Sfc1+n9%ejHy zANo7^o>6{#{NkMJiXT4lReu)hd(S}s`!?V{+eNtlaL-Y~=rKGJJ#Gu7hr$oiNbH4tZ)%{mKdRrk%AM{Q|25@uFHP3Nfo6>BU$heZ#&v+}c>`*b zaq7%UyB=~}^<0Sj+H7vM>ju+l$6(mttW440eI@Ll+HSL1WXlm2e+}kVHf!&-k80qZC zf#zjUh3_f7lw$jbxbgmo>pPpgx#)k7gmRSS*}j%nIjZRjSMi|SX-mz;iqZxhgx>*b zLwl!g}upvV76z>PgSp?@HAnm3%_^ z#{6~oOZ}U0hZi4*^^;tp@igKrO+6sHy=v4yJ|=j5^Y)Gjw0AP%)}5|HdwkbS+v9xv zX8jAcccOElrROTxg-8w3x-B&sA?g1N=+F2R#93~5adx={Zn@{(a!4e z;8Z(=JF{dJ*8CevS6Mwr_)Y1{cUy;}E=Q-e$1Aq|r_C!CpQqjQ#h^RkJ%hN#Gm!o_ zH=QBjX!&Q|bhh6O|Nlx#;GB&AC%m5lONJ-mFX3K-a>d9yxlHm`xaFQlNS@&DJhKM> z&-u3+e93vY8gwI^)!^T?zH;l_a<77p-n`^|U0>3k+TOHd?QRF3x7+t5ncj}{?uger zl1@J5ygm_cTKeBX({hQ9>j%pA@RG@jsFp$toL`}|K!JY`60ymupj1a;Qe-%zUtqnzm3-X z`}B7ZZ!iPP38@bCIMeIQJE={!9KNe$!%a4w`^^nDF69Q9O{uE*+t!XpICY4#elu#Z zAB4j=%T=RXKZFM%t=VjLSYG<^j;;T0puWI+H&ee)NIN??+3oZVDcA1yOZpe=*JDMk z5MW;agZXpro0V%e7kuQ@NdK4N=L@; z5a64C+zxQ%xi@Z`EuMRp;!d=08=m7=o@N9W+0i z&ObpP4fBi&%N_(erNK)IQ6;n&Fe*+FTJb>K=$_{{}=c^`2P@JemC+@=rQH_V+bkd zpLD}N+wj`ha)kQRb4Qkc5B%?szaNPIGZ6nE5dSa`|H#Ju`^S${Vc!qtdhrR$*O-s( zKDGuiE*MkHN7pYIN|2_iYli*dkB9M0?l8K20sJ zq+I<9c-)4+w8N60X@BwK`L&DZ*Dju4r~X`7YhG~e96xftPCbwIzXsmbm`7i`cz^BU z{dJ0XOS|GvvJ{-la(qWGSNcyw(s{3e_1JHQzc+n)ZbW#LdDgbi{!d3g(#}_yw{K<5 zTk0qCQQyJ$4O*~I(fL;k+HzirU5xod@MS`I7j{1E7>A$^?>lS#J{AX|6Xh_!=P(eV z%Hd}7j*SQ3VfeP-o?&9?-f7}-n6nMzWWPs?c&+(wst6(Vud&d-N=;E3f74tyM2^JM z!k@oziqfTNzRO>3>y0v1w%%~lCsU8_3hr!Ps#LoszjHInwafO1Jysb{7n$zq!6-k; z{H2l>NAlY!^KxZJyvoyjuf7(o@IB5Yz@MH(_177GG&!?43mxpFJ)9#3p*bVUJIfKEeJ;zq+TV1K)Kev2-qZ-wpL9nUS$^ zpv@%Hh!C$idRg`@Sf{SB4g_(?nM77v9R z%-;$>ILM{=M&LpHU`R3Tl0S?8!;RP3_{s6t5GTF=?mM@xLrQ;)Bm22EHVAzFcA_3mfg%>OV<|%lHigpI1g)axC*8v{+wZW_fma@ORD?SKwa}eZ(;Nj=z2D6gp zB+LWoR>1c{;9mp$ZuOOC0j9^1z7eHT2ph}*PFp*F*v~qobKYEtdIQieeD48&nLfy- zvtAnXYcM<5dW5$F;4ox)i7#pV4d}20E63xg*V-ufvI6I6u$>)3+S$prGtjm}9QpJ2 zb1?9wA6Km#4z>6XG-(?Sw)pBfWgSx4FWTJ`$nS3kr!T=dT(fx?TDs`#qpiG5U>tex zQP+vVnRS9W{EmyPmkVQiLDQh#RRee@pnMzJ=!Sn1mOCRs0|)We#-ZuX^LI>N4t{E* zq_+IB(E69wqzSJb@X254G{2Ke{#tCqc5@rT%khR1zCUdD8SutQmzvu2P>W}cTfQdk zFJEI`w0uXpas8_`Yu$5(Ee_95s9#sRA8ag5^>AH?G zo#Q>;@U%m>zCMqx{9rZYZaCIH=dsxI4yiw>0%}@)-qTscA@;R5hh*O<9%bY5E=S z-P1&n<0uFw=qVTb!|3_(F$9|3%Llhkd}f^d88s#dr!G z$67g0`UxG|-E&tHn^@MrYL3ev{9dJ>KO4;b)^O2mc8KkOiVO!@P9fE~UJbG_>dQ6w zKdu-1qTTNJ>z{}9n4gpYQj2h=I72MFDNdam4t2vF-LT$ zILk@At+c^BV)1P-F{Bc|2i*7{>}+T-PuP%lhy+Ry--m4p#Z1DJ%>j1*!u9-zwm%1= zKZig+IwVa!QT+N+Rn*t$*C%@8A>i|)VuzsoAk^v>KLq-R_=OYBp-8VoI@jq*fO8;b zQXNtmXFls`zRKe|q%wc3*$IE8+(DuEq&vaqpb&fx%7c&Ocf^NZ(-C|Q4#j7uPVhN6 z1fPTR;3N4R@v+CI*#F4dJi)9heil0}z7Mg^hSkpd2*(<}7QuZIi0}I~o86#Q3qMdg zkH=gqL!9Z{kC0C|k0zTTv7M{FgLy4#o1RyL|GTlC-k0$3*rDnR+y20+uWkE$wW4GD zC!534yCJ>7JY>0XtZ8B~Q;+%DzuV89u{e?8k9y7Fpf|%K5$gI+{Fv^K9}$TE$i~Iq zCGP(FGpNy~`qi`TrnCtCd zImf5Hnd>rVRz3Q6VAXI(!d;vo9=guyeCUUI7vWzM{^@;k%1wpuApKH!8qjXm0)40+ ze+i%Y!_n>>guB2q>p-N_J}3FR*!*3P&-xVz>1WUJEyj*;6n&pGj zTs}B0iw|hGqu*zPIn=I`wEyw_n^H3cTJjXYp8_4w`(?vFCw+!FCq2W$pW(uvkv`Hn zCq3I7S#?f&d{vD(tm;hU*Oob*}gbJFJ_G-i7GK=8qM z)YSZCNIMJr!fwcKZ9FGkk8nIVVh&2}f_C;ZtS#jkC%m%}$Eg&cc;$tTr(1rXik8Ul zrz0evjJN#8zpQso`pgVG+66ARet}HK9Xiyn%6ymY*otYuhxOAIpET<4ZGKk9c9mk; z^pbgbE^^zgj|3NvuVTN`hzH-#&IRXu3+H?n&iPqzx|@kr+59PRl|S3f zdFh{lhqXQO{dm|ftv@R40;T3saDjYh=J+z*cQZcRoRAgY+5FTO9}Kw10@e>voBl&e z2Mu`+aRKnY1%DS|-czoSzh)x-6ZCsJ;yWR{!Q6^m(tnDj|8(T1oeQx3d}-yP!V8A{ zE<0PTH3tAIV?H+rS-p3%`M4YR_gs(GqY~{}d%+G;V>T9xAG6<%_3LyWb6+X->?LLy zLfUskE)ZX8VC=_C^y4=C)%_<|t~SIe4`w2y{5lh1IeKs&U>N+Pf2HKNHV#MnJabzq z{VZoAr2I=FpK>e+hjbxdp0KUI;@tux-rk$A>pN)2WhQL?$ z9tTTddI8{b;fBq^0q4 z%fF{Y=HJVqPh6JX%ef5aUOJDjwDY(dD(SjoNof7$%$z&7n%3HkV`TYjl+cbM%3A;^#Yxeo1dUw6I5 z>w?&g2-&}D-2Tl+yxPo1>}J>@Zno=<^zRzmzq4)sWFNx*u{`@nIPBle2w87`G|B!k zUHW$&`ga}rCvZh>=IWn6U;5X}T${ciCh64gbstUp$hFX%*#1puNBw>^U(;ursa40L zU8c98KKpYH`r)^8(xWd4IHyEoP*wp|?OW!f#am`2F<(Y>sC3(~iu-mR#2i(Btj)VmdW-K}nX5#o!`k44arPp?{(UWT*E zWsTRT7opxF)XOe+B+6-d!DAWZ(K6@><|<)>9KoDS%0VLHmCo!c?bWdGcX zw00McU%zgUezuD{>TLw8WAMKou^hxF{^y7jU`*nwH zSMj_fgD3lSuFdU;XN^g?{eI9{lJ4UW|D}LKxJ%MYf%hH2`wrm!Z$YWsYI`rT7ay%hFNh;DyMi9K68F34t{e z<&O99g~acJUc&VI!8i9e9*0ok4>}mP187hE95`tR=8SoPg>TuW$9|5QiEE09(NbkH|?o+e@(tiQ)3>rc6Od8KbU?9 zEy>R-_oQp*{&S|>W9i3z<(_ue7lrq1rrh%MQ<-w4@AHW5VxGfap`)LVvg!Vur8~=C zYM#$Q_vb9#f0;%1=Pli5qWtmBeW2@on4hFO<9@m`?$Mp{X<6fgjilp!(9ndgLf;2K z-zjG2vIl+pFTWg}=bkV93Vf}<5}e2WwUl#hS>xK`73fF1S&4q!hQF2I3(muXP`C|o zj`vK2yC8k8xfpmX!+Fv&_;g4)st3VxDtBhP<$nqIoL^(jIE#Y6{BXd%(p(0(FG6q5 z-JT~$ZiJ86GP|#91HSOkC~m|2rGNUe#?|REvm(7Zy#o5siuBc0tFeFom3vBc-dg`3ckdl1Rgt|9*X?04159_5!vsmw387_7jDUy= zijfsjksty?P{9!qR8|Gd*>w#VQNaMZ62w*4fDtebD3U}$QBcg7*WdG;s_J{YdwK@k z@8|vFy?mw*=hUfFr%vUZoIaQxcOLRBG5KOC^jV75WeLW&I-hhx{${$@z+Z*)HtM@2 zQs0$AKh{t7dr+;fv)-;%ADaC4q2#~hbkOBzeT5s|OcP$JKUbf7U|k!k3%%v#4O3q3 zMMm+`R~q_#o^r%}GI8XC5~K=iuM(t(cig1+J#3Wn^%2r#zWNBQfzCIaNv{RY_U=YC zuh~aPPj9)>{jpA>q~)6heqCN3Lp-)1MM@Q8#Ca>m%fY{g(30gqkB59)k^af@Q_GQ~ zwnE0%3hLF&=#`HUOVqul+-x!BW_3!r*_u{vHdd@IwCf`nNB$-MR$u0;TEs!yWeM^X z^U-4DE81y^^jnr7zWHin#oNs`qCNcx`RgO(uQigt#Ax`r7xUiZ5U-~pYo%!y*T!kwHY*y}nE>FafGW9*XZZ+(+we-EelTa_Wa+LZ88{Z(ZMZ%vB7hf>1Zl%?}k zs-A08{5_E3Z*vBJ@2B{ipW^SM4E{by@%Lbgzh4^Ft>?NFe~+a2>z=_bAEx+QkmB!d zln1tFsdiakhd-Ndyyd=KvEHAt0dnof3~M&E5Wcczv9Z517gOVuIyyCAo&c5qixJD9Aejqg8= zzTS55OOfZcgI}Vhp#EQh&iU=H67AqFnXmsEbf(`ofVmQ%U1@g76kd8exHGLC+$HT` zvi@#6$n^5IgF5}(c5plDsqLtzo-ys9gdjQc(*?n8}xfpITMaSs{yLgQYV;(nTOFEZ}sDefGPF@BAWds&M6 zaJbua@YYWUnEL5$R3u*dfrkE03jH8Me?5h6#|dww&<{5JD^uvb41HA!y~@y6r_c{E z^fy!JwtjsJbnL(7bFF}{OKlrhH+gDZ#_uh&53gUb-sgFEO1<=uuLbThZF-Os4+D3jj|^(ShZ#aM@5 zT$vl<`G?$)9UnD;yBFuqf$4D9^BZfBsx2HnAIE-VR*3z5oL2}jeiPMzVx)TLDe$)d z=M2b4trkL`F@*Dhh17L4>70y-r^kYNZN81Ch_}#s0*N=v%!Ex!(Fj z??2&sdh0xv+vad*ztXm&y1rYC^?JH5!Fd|(-_8egLNAmqdLKFCb#!s&{&8MHpO%nw z48mhLv|Fyq3k`x#tw#$_`X6V~|HPE^chmj;%DbA_cxwNgZ`b3SiE1G1ng{#Q%6k*e zJ&E~wo4@J~=N=hH*>J2LI{kFNk(RfgPM4-gSMIx~y@u3dug0)f)6jhMznFe8*uU=d z_4g=`=3^9^<=u*^1$)3rE@;>VdSg2 z`X|khYi;=4-`Fg)82dHehjr|D-(9CBo$e)odOtbxD@qFML+&Sc{Z}I0IX>D?pq@8) z7;-C%wf~;QkBPsWRnF)@|H;!FPalI%)r@`Oi(qT1gCV5HaOu$wKfEcv>;o`m}xG#|$^t@F4arF9Sl*63Xu@xu+w2 zbiP~y`?9vAU6<4`&h;nsoDM$LZ#w+cc>6=S${#ut`Kns=mVBNZ-{z3hJXB%gJ0xR# zha$e3PsewN#Fy=KeeoTdF}_13zFQIQp2fFCLQijehhpY8xt?i}QvbGwzt*9UiC-vV z{7yssG@p)NNaDwSM1Ao)Eo1ynON!q%^e^g9&o&7?z41FOEq-kh@e8WbM7!thmu7=r z7TO2t-aa%ADNg$oAkj-yxwLaEr)=maDF^2=CKOvfN40hK332|cnd2?b?mggj`FGEC z=z6sa>Q$a=Vmsg6NuQtTi2Afk=rHsIoO40S_q%p?sN>@)x`C8 zp7A#=t)5KxH>KE}Ke7FhOyQ>Ya~LjEkuOhOSX|&-Sj>1|1bbsVm$dJN=N`Hu)i}<& zxOhf!shU~L^hn?L;O@Kc8gf)i$hGyjH+@TRX7@t$hHBJ|;tFR*@j}4X#*XCU{PK)M zZ%OYT4kLW(*PSh~%%e4wA0r{wC+r6Ykv>)rbQ>`*8Vzm8j)tn$EzKg3i~f@$#D2|U zFK*YHt(>~roo=F6k<(4un++(XY%ij~8kXtC znG!Fred{_eGpo3Ji2X16Y30$LJwT~{UUEO!tAp^t~Rx`4AFUzj0a; z`D3YbB^FvaAHBcW^^kns@9vw=^08YTme2JZTb|ESU*zo9r zw(5Y;yIBW@dZ+_Y7w~>RjkgD0mbFCAy&eSL<-ps)J&tyUlFHRV2ER;lQCxL0@F|J` z->0H)TwN}7?yEmg;u?J9UOWht1rd^eM3#1zOYx{5cMoU zzuLM#2KPMBi{L(9HTU%m^>kRCuQTaIdD$pmwcz1=Ro_rw=;h9%^oCEaU)RFMl(VF= z7x-4>z6ws_kNT<-{BFI_C&Y+TPp11>suA?>jrvpTI|Kd{{um|`=4Mr$!*HqB^~HTd z%t!yLUhikurI$V5lB^e0kgu&eH1tkZzYy2=4ugh-{Q-F{_6P$H2h@CnLfzFMvA5md z-9z;Y@&1JNfUU9yh2-3Z`0Ho#Xf2ZDYdeyyCY zqQ^#cl+ce#$k_*UYd_kd1o&UELksx(zqZ31*kK^zI|uPTDs)WfIoR_U6Mt3+-I2QN zAJgtkU%W#aVtU*0@@BZ-P~0!H8SXb0AAxl3C+@DjJ`sD>z$z8aQLx`8gAW8g5coR5 zDfei|?V*kialN!H;0?t`!=0~|^1SxpB0mgB+CQRLD(On%U za%UpldKF&c*mjKeJYM2;oXLkfWg?&)ROYLh$XDdI;pzJ61l0Qv7M}or?032-xi|CzoSYA9S6W8WOxaL$V^#y(uGH{Xm&w8Z6{@F>P+Cm$S-A`umRLFMq zNfdlNuk&~@@x{Q|&ORY6i1tyco|b+W>r=L?gsflL4?aD#teEY{IK-f?c4VCNi}n8I zTy=Wr+2V1Y`uYXwcUpPg`g&aG`Qr7^g5`t$R_w9ASJ6L}=2rZ@w#WWfqCbCnXw@F` zzg3*0hKE`@!%<&XI3p2%+V5@H?LjpXy-=MW-+=yXSKcWeiTu@G_Q}}xtyE=>|LKrG zfA4zyv0XYt?CiFWXJ915^cn?v9&TS8g&trd#reWxokK?~q z;@@53zdmO)!e5|9hhD{cBg^4@#Ctk$J%88&qx1KRUxuC|p@k5s99@$2Pl4!)j_ zjb}_^tNB@9RjIkcZ|{$8rG|x0genBAu*pG2>G=4rX>5-=kKQ6E8-{Od9<=p^pVU zA9{T+dYvij1-AW|sGiL|1ND+CkL7K51A6?FL64s^=ar|_^1!{UCzp@`P9k@3iTAcOm z47hmnG52vk2P)^!*neVwXsWuvv)+0E^q&s>r$hhmMSt5Lbs&%HvgD_Ky^eE1C|mAR z;k@SJ%F|F{vem@=T7)qTe;0&iU<_^7QD%ga=cC7A-sn7pBga)Rf5UrOtQ^kcwn~}5 z*8FjGgmlaqKRb`dc#Ky|il>DrkEN9OuYwDLpVV=ty+1J@^TQV*huZtqd4Jc<7^m_c za%(3JGxo4oIn^Xs=EKF!r_vL2%2vjp?jw_%=bN#!Bnx9fKt?=@GqC-|}(k?;02J`O&$ zy^FApQ-Amj?K8%-b{@}Uy`+?j16j5JAC*3&P@8(@Bf}$`|fR~d%E}z%{#C&>pjl>JgMht*v?GEJk2!UgYv$QwIeHHuN`x; z9+vrHhEon*bUC0l#2*p6(N3&Cx&FeMpW(5*ma4m&Fg$nu-Odjwtdr*Z8SkTBMd#{O?ezVYJc?I@f z+UU^`hNOKCUoQ3dj`Oxn`o$uo9fjf{xy`GS8wft&?N`K{` zQV-kiR;yE;Ci>|Gsw4MzzJqpCr&CkEPL~e~bvoQ9@aC)@PPH0F9&ojf3fJXMD%C}7uxm7 zkk)HSy?VseBojX^w_1%WYzMun)$@fVp7b_mlXQO@c4m5S$(rUP+zQBi`9~w(58h5) zk~Jz{=TnVehIWtmMVOOT`JJ^=j0F9Tk!0_Z*H zdtPUo`c3yscRB;1w_S%}I=l_{RtWP%6YfCB;k|)>2ju=S_OUe1lZ8t#FS!Kok-7aS zmQUXMa)D_d4h1BBk-?8h!OMW#dW`X5J5BxRk2w3Q#L36|kEjXbH4A#OUqX9hzYE%t zWIb&C{e`g){ZpRBsRz?@7V?1&m-*l`@Y{S6S6@oIXmRq-&RT|))1S2$*JrlkoC)nV z0)M;@iT3u619ZPh`-`hARvXAKT%XkKei?AB$5T=sY&u*5d42HL3w(_C=jadQsi&o1 z+7kBXzR}cvEO!dzVV;_!gndx|bTIw~0%w1hY4|i^L3yX(|1BZUjwh(6ravwHKe}`L zL=L8Z8RXgVne|WiGQZ33>Z!xC_TadM`yuT7xDAJPKUqDMuq*K`S^rMLw`M(;z*#Qe z&Uzt%YyU4M;Um?{3EZY{77T^;3NJ{*6IXKIhSO;nZPNBmrMHFS+%B|t}$?J$o8Xqs5R1FwFhjUwM*KyuOYSE(Bo>Cgi)@(7QWV? zpR9I`x!^`wy?#9o`=3~!K5O7}20m}#i_+d*j{4EIPt1>(qdYL2 zIS7a0vcAB3OK6X{?!G4UDR5iAS^Y+VZn!`L&_WN%CvO?y2ceCAYHDpO%C7$3n~DkMm2rLc7p^X`D}c zTRPcLmCyc8RuW%3P-w5@{DAvhq}O8YU8SA|7yA#(1?v2_7WMO5>`&Si zqJ0;@h4^Dx1?VT<=XAhJy6lI)5B*x>_hhw6_!ome4|d!Y+Jbq(k3!v@kI?VOd!Wuv zq{XJt&d?^rcT1=Y`KLsUl6A!iis!wFJL&_8|N9aq`MUbQhMZlYuS4tLzEOP$cg`=7 zkN29LkYnW%?hL)vWTy#_^8h<6KrAi$G>6!JZ%Wmuk>+<2| zE8TwX3=wY4;(Wt2Ujg{+`X2MC-5wMZ?^(kzWRFCLzQ|pm1bm7PT_gN@Ew%q*xEq+x>uEq7_cU%7^mv5Wjna_1O zljaEXB^zahax8k|7s$K`Zi*Dx%(+3J-&rQG*!cj^u0Pmui@kT4{yPd^tvX6zQ-{#r zdyM;mrC!(LUT?pk?slNAcD6eTEYpwug=)3BG3!CLyUfSBU0^$PENVZtOYM{|DWB9G zPFzJ~&w4rb348&6rHBXfJKK>jLR;_-oFnuefTWiL+adCIgbE>_<(A{E_DbW-=eobM zBSSl@@2{fXy8d9lbXRBw)?iQ#J=3;bwyyG=nUf5p!igLvDYKF)A zE*T#0yVUi;_Pm{;u;0rc@$ba>4UPwPg*YG74fS>X{`LEHtUnmuzVJ_bTmt>+Kfag# z_k(|(UmnCbdWdg-KkKvl^iK}|0ONlo?#QG6gZI*ZFZg%!q>{AWcN_NVvU!2Ep__)e?`5g_aAbe9n~cAm!lYNYslfe z64zr+3Odd9mxHO-gFpSvzpm%n>* zt-t(~@ap%sPWsizD^vTFHD;_d41=x%Bs=k+b_R%ULJ-d~M`>^Oxn!6@9)l za=!n|a;D)O=uTqN{~J3^^Zno0N!$B>x0AN_|8A%B{KxZySOjM~;Qtfll>Ka<-~;^G z0+06R0ZvxO`kMgGS53lw%>3aAusG>Wh2Atl=Y46+&s>e03jRM)gG^Q63TK|TDpiHy z^zt&zNB_RC_Mf%a{=MtIu0H>ZJnEBe^vT(4eb%9t{>EWO_1foukw<;4LRg12bH+Jr!#eZ!@G_c5Po+ZF$g@a!lpkG5IN;481{p{QTfAj z(BENr+Mi$C@t$uI|0eLUe-s9U8i~&vZi|#~TPB6u!i3v0++4zKo(Na_Yn~FW=HH~6 zBi!QP^kiCot`TxI;heW~?4{Hw_FP>j%8&1~Cn;s>KuFN0p!rt@t-gwYnuDrRq?Na11 zy*U5bE_}bN|1sT;MgN!U9bP)y^}6Wnr`1JgdRn@Tr?>ouk$+h)v7TZ6jsSP-jj$=d zk#GsM*`rKDp*xq|>`9_295b$yT2InpAS7qUt6An)oDPiyr@eM_HYT1`_5U^xgl* z{e;wJe>7L^Bd|bq6j-D>0Wu$T24ws=UiAZG{$@TKQ%AgbF1QQ$XF*!Wa5y{<7(eE3 zjx_Fte^QcQ9MSg*Y6jP;N6 zmmn2besK?YSkDXY27Mpcy@!wKq4VEZKhs6mGedmUNDq78x2k0qfdJc=) zo_emQspl%g-9TqO7ex%14`RSKs&1y9i-Fn`>Dn_<&y7d;VYo9q)^p@%J-06){WDzh zpD6AFeWdGpu6t5FN50YE>kmG+Ty;l1*Aw*|U3*IYo0O9OdWI*~QO|WV^;|!yRj<6W z_E6rHQciiQuzq>x?4dl?n^joHY)IaeJ(S1#){g7zvtLae^6YuL`uv?&hd@)0U>PP)vUVZYW)g#ZXAG?Kh{m4?m`cAr+SpS&de^%q-Z564 z>)#@9VdKvPp6}Q1<>_}Ss??*P@?CT4%Y5}Sa+y+`f9nC*3iKWTmW~@H(%(#0Qq{h zwA*l^a@^aL;4SyA$i1iINU4hbk}j;F4#ID2LyU&j82G6rIJ*pH( z*Mx-v$Eu6``n}SN{k&mfteR=^{onoiy~s=aI{#nl-y!ao`Stsev;4aRpKbaP+|pLW(CgUj=jnT7N`1`n+Ma!2PhCGu7ri)7 zJVoY-na}n{PAN(W=O;>4KM8-gI$YXgkmQ@Ljz=sus440Mj8+ujiDB=0!gO^q+!rVI z{gaizTnXHfXKFyq7b=Il3Joo?h0H}XfM$Uieh{zxN#SepEy;nV7n zKgq~H%g8@FMSe|+{P9NqxoPspgsbb2f02=Yv5`MBMgFW5`4<@Z7pBQSFFY+xeyO@r z(xp^gBmQ=)>&4$B^>yAAVV-lEjmM*BhcokS&zl{-0y^lgRNZRi-EQQ~O~|`NbBlkfgcY%@nXhQCNBKK~{y&G~LG;$Xh zxsQrmoEtH6zsS2ge4j_|QX_Y{k^4+S?h_(+A>=NE+@(SFQ_lca{e(O@sAAtiNUuB{)v%m z&od11UE}{4Lm|hbCC~qC4VR(js8%x)^~YBD4}#tt6xL6AzHEv^y7h18OY^|j0xmgf zOZHaGH?y9*8uO->&jvPKeFool-Zs5mpRRVno%PJurW}2fRF3SqBAy%mGW-?nt)t`8}iLcbb1i zyEMdii~rYze?ga?U`l|(v?O%<$65&vw&KRYe{m&3g!=q1LT z{a)T9OP_ZB;szs!_X}o6vLjY*3;6NM)%$r7BJLfmg&XgYv;0@!T_e5=(@bD?1iQQ= zdEogt+ZUmo8X0}BKnU}J(I53~4t@0fb(Hs#$g71rds;Q>DyI=7(SA!Sm%)DSdz{#b z13h@J9m8dKP9)i1c7*=uqT^ElyVq@h+T8(Pj`Br_W^Y%W_h#kUs7M) zpR)Zy1?dk-ILAV7>K{b@$z)g8Zp~r0o=$!HdkP{B?qkS}v~hBgp7{}`M3s6wDLq@M zqR5G`InN=`{x&^WFY`u9yn}|dF0L08MeP2L1^y-xyFZ2NijN|ra({CW`%!XLlZf8e z5drS5ht$1af%`19zx=)OHy8Ul>h@>n@9Pea`$+26vwnZ>Ixv3tEKS4RHHxEXHSB1jKS^wBdKy)c*5a4eX4t^TwU+$csvPxsi!TsZoT>> z>Q&bMS|0frj@K@_9@TQZ@z(KKhH}8#ZYl16cI`mYuK6Of{Ew#Vvp5i-!`>nSK-0;lAhnFGxR+oL>5i{+H^cukgQIC;b)wt98;}^S@pv z{SE)hI_azYtLvn{=|A7c{%ES6Z+YlgZ$~WLuZLRbXM{Qbz7Vw&`yGoCwG{F7IW6I% zTJ`s}0Hpj@faGfpI1j&z{BFH73;3DHVRIpuC9yHeWvhsGXSz&=JLTDVmm1&|PHVI? z`km5;R7>=qG(T&ES->gJz6WXLh9Q@+2#YrSpZ+*M*hTcb$k)~A83n|7N8h`MS6sa< zvE#hqd+6V@-Kv0l3;b?WG4!uu(!b?8P%St)AM`Fp5OFn2@`bHOIR0n@e0o^KlBd*8nZ^SOE)qv79FIF+`M$$SjQ0#P{i^UkehXDN(#+BM zp%A#s@12)zFX`Y7N6*)G5W06=Skp_8&uKNUJiRYg&jYuI`$%!$v+zqZgkP2+{PG6E zFNOQ@Df+qgV?M4@gEG1^e^;pi8Qq!ht5pAt?ko>gs;{`a`M9^>>G`;q&}XSA>W3J{ zpdiO{-r#t9vLGNzp zJwWdf8SM0k%tY>3=@vuY1|+|c&}eZNS^*$?zm(DyU+o}l-P40n1$ zekag-8hRz@m5~unCFq?&uQc@iLEk?z%Gn?Ej-c;v=m&s)KxDLY0OQKV#UP$=_ef zBk8PP?L7Th^?_fX$64pURqBfm{kIET?_VHrga0Xk8~y(lxXJ&Vz|H;_1g?+hWoJ8i?;qHjo(z%UyRQT#7E(8GX9Q)UL~OGe%Fx^_JeTlBxj-jCdbx4 zv*3Ov{B=wPgIezMiT$biVvXaWYndV^4JEOCy)|5~b}F&bQjdn5)$R#gr{yEw?Si`rec zLxZrDXb`yFd@=+6D96%mI2@Os1efuupYQm{`9AG`CDLtWZ%+Z7hu@)*mB^c98^nA%m zj1ykUU0Jyj`1%Oj_hC1jx7W~LF$1L^*1R$oHsuSIiUtxR5+&~KC7i% zf>l2DgNDQ2Oy3cJ_o~xSkB*5fRAXS@F~~P#MBW{s4+EW$CyFPikNsmJ!y?lWKLwt- zLSKb>49!15J>{&z2$1#7nUHJeS2f?6k@4zIoRS%ac@_u1>?fU$xigL*bvRZY^Ybd? z8wYY7HCn5FfpsX8jS4fR7yTud3Ag4o~1`h<_Uomv1!YKhxt)$y$#w zQm)28PaBRS8fp2i94%k#cLwwujd{pn&{Erx`Oo%0t(+EcA7k9vv#|7Rp$|v=SW4Kx z9R_Jy4r_GID>2<{{ONAPVf#Qi)MGvD!2FGSI>o=HuR{6J_Tl?sVx_PZop@XdpGA!;6pLb)EWCM$KikEAC}-BCiw6KK3wn-34Da$qZ0Ti zkvBLYZ*ZD?t2gVjYS?$G+L*_BXg)C3JFG_WBUP=G<-OaG4(&AErkR^evEd((&&EoGEPW9`x8!HTTr(QbV`;qZA^DpUn>iWFvkkYB?w?fTI_+!0g`IGH^eO?ay z7dY4FEd)Qy2=f~=HS6_D@E_LyXCpuI_iCg-4&1LX@LB_}%R4Jk-{h#P^XhVMj&ROG z38j3dOBwPT<=fBBKk0tUWR!!+k#i94L+TvVN|PfG0yaasKZpOXs+=6T3J|>-)Ps|g z)|YC*r_0GXC?}I6xF>x!&*v|cljpEHFs*yB%+cU^xh2le@LEB+=pjhrjxjS^}hSC>!CUjum+;?K1+`B~mF@yGU( zznk!GWkOvZamV@AWz7182W=8sI$qE<#Vswzso@vtP&gclL7{ zBVX2d+RMpsr~ewj3TGPHTfGlhXdAvZv^gb`vZJ~4IGN~%g$oVSqO)A z()zph>H>Rt!}0RPz<-CaE89ti?{#OtHrYLvyY2tdQWWR5^;NE(32I~I{B%e%IGvK-s{mu)_e8zMcf0lrz=Zj8u+9}S^>o2a3 zt&k{LgXsX3*!V{<${4ZUjCAdJvw3wO8%F5%>076zP#gzwOlD5tDM@?chHSIRL=_ zE;#-1o?@$KUE%Vi!o}bVWTPa&zjxfp@--9kA5=3jXRY<*%Jg*Lv|qLI%e))y&5%FD zFYRLI4K&|u(f5Eo(6erZKuXT7oOK12e)eVH{avnZx3I2S&yTA*Yz{yJOO$+=(O8-@Lr1X4ep;7obL2z z-Q#M9EX?5kY;nhaBANIm->i)Kd{vJ=voh#2s{wtqd%8ZY68g-}sL!r?^qHMOpV$w}xlC!;=J*Q3vz4EoGzKp*X%uFnrLj$(RUo>8A~>e1)&4EkK&fIiwiU7t@9 z`dpDwpKt5Y=ZXyaT+x6&+C5#LcM|$snNgqb>e1)Q4EkKzfIiwiU7!CX^tmddKHt}) z&s7=pxvBwuw0pWfk0tcEI-@>6)T7VU8T7fj0e!T4x;}R#^tmRZK0nr@&ovqJxuyYq zw0o*PyoXn}TbC#Fx;CR;yX(>G+6;PK+kjr$J+odl3B9h%sMk;R=yhENy{>COFYTUL zuaOD8uFt5~&-LhaeFnX*Z$K~Yo~l=sIyRxt4H@xjCagzt^MB z%^CE$xdDB&d%8Zk34LzKsLvnu=yOX3eQs$$AMKv5&yUiFXL|hu`m9I4kqXAuA`TY; zr^o`It-r>r9sYlyCusYL?AP83f9>I${YT2t{lAku*W|=;n&q~)$Zx`s7>f|TSk5UtVf^QGU#(#1Nvz9bbVeFed4NA z(xXZ}Z}1bP|5&A-OXz!hMtxNvbHD%g4Eo;QfWF#2UEfC&`rMIGpDUVV*5{54`rOfg zKH5E9pW74q+?i3I1MAV}&J6n8*?>OUJzby66Z*`}s892H^qHGMpSca_qutZ>IWM8l zT^aTHS5fBlx+{Y|cQv4oc2C#mjD$XSXVmA%dhBy|27T^sKp*X%uFvraeeTJqk5fX{Uc2C#m(}X?`X4I#9)6DhHgBkRBumOFvd%8Z{jjZkSP)2=n z>aov58T5Im0e!T4x;`%^^qHSgpWJ%%nV&(Q`3>l!-P84XJfY8mjQZr&qtAj2`YdQb zAMKv5&s_<99?qywem(j;oI#(58_-9)r|WZdLZ3%6>QhjUK96M3=aB~V(eCN`T#(S` z(Tw^O)}zm(8T5Iy0e!T4x;|qQ`aG6VpT_m*^H>Ib9&11!?VhgB-xB&P%&1RMJ^C!n zpwGev^wI9=`t(cavnZoJP3qBSQ3ib$HK31nPuGX1hdEB$S0LYm_~Cb+Yr$#kKM0#T zEd&-jT?BS_4iGrV86dEqbBe$>b0!G%I~NKJIM)gcI`;@{?)*#OyE!WazLT>?V5#$| z!1r=?3#`q_{V&5^lhaCI3#US0iBl=?SZ9BMZ|58-u$41ZU~A_Tfo0CA0^2wf1s>sC zB=9ijI)QDSdjz&~o)FmHc~M}0=RJXkJ6i=F#`>Z9PQ%{{jus$=URa+ox24#a~>D?VK(>oSE+aL>we`}XMGa+g69>+ zVW7_S=B2q zhxaEu{5^!Jqb`cZjc9V4R#gWO~~3A}CjZFD3ndmGrMtyv2;` zsT&CrAJcz1!s9z9PXl`2Ie8i>#ryn7=Y7hY$SDW*Z{Y3Kzax#!dgC+V|KFm&yFU7i z;5Cq5;Vg&#KT7!CdpG=n<*--sy&L!7l;{wwS2w{rr`^}ciHZ{ST!ah6cAb^yPPy*Q zcM&#XO}iETCg86r{Bg&pUGJ^S-)SlSj@|=*`u&CfV4r!fLhfH~rT!CnBx_YA_qo;= zUV(Zx@|@YHktrTSAuovdalbL+H5B_8Tf!gr=N{sb&j}oBA8Y3j(vKF?=W9;`?0|E@ zA)LctxUSvcRldn;u=70VIIk0V0TAbIaL>T=kp+Nj@Ye%>tg&n1&Vn)v@Ga*B>|41a z|Ak1eLTzvIyufR0QD2NqjF%|Sd;jB$z~gEFiy`PQNPg(5UWAm5@}9*;&^F<3oN6Ah za!IRJEfRPK;FIw;RP})t`W+1N@b5OXC0>7nVGE1fdnhKT6X9=~@2~0EP2_ij1h1aN zy?PR_OHa#Z^|ZLvlX$A0Rq9PCC$t$q#;2RJ0_QYdLhRlB>YLSy$e)dD{?F{Lr6}Ca z@iOereDVt5P-8dds`c+vVy_!52dw&TT=rxw)&LNqV@AlEST0JY~gl_!{cT*HXe;>50!9N%7&k zq3FSMe&YGhVZyXUtihqUW1pm$$?&+77N=-ZFMs4ZEyHd}tNcORJOOlOB&$ zJL&h#lG7uzebVJ6+r{2@!T#q`lsNWB^?PQ`oOgiR^Bk$+wMPEgnl&N6F8Y?NacT5a zJ>sgFv8&E^rD#`QLc^9SFWq0$G=Hzijw#7Li68n~gLJ_An~{KNpVvydtdVpmQMJ;4 zV3~h6@*dJ{tj;Qe~hr&`tEon7AFyDq|V zjMpv&T6xrGhlFq6Zwi`t?2vF7|MhU!;chbFZiZeP)klUt$=QN7;itSUz}c^&y!H6y zxf1%DElT1yO8ux`V(0@B2B^H%-MnZV@J~dWZTcuay~-4_ED01E8qjOci_IN z9jNou{kMhtI>@J7>Z9>bBJI^Dkv5<+{yU*ZIdJyxFg^lCe5c_09?o>RJg?FQme&2* z9XQW-0^V)i8Tk+V?~J7LvtKeC@uR+vWbKTs@bIyJZrx{s-m7o~-m4|wj>rtrX9xB< zlRi8_r+qmPu;oOj&kmD5J7J5Rk)tKOcL=0=H)pHFSEu(@6W<=D{nzQOn$Q=$j&E8Fvdw*YbAY zJmY!!J0jbV-*XWP(+BUK3*02}Am7o3e*)sJ{S_fUek$o+qFM*^zQ&D6g`JR702j*n zO#JiyCFb)26$sdT#Qxw0$Q_9iP=)aL@&1~ZaK4TFtS39;-dR%Y{Y~^=3q6?M8iPL@ zJ@fl~J5W9@MYy_rd;w_X_|Q&NfS2b4zkpsWJv$@Y1>cT*M7+TH9PsnVsQk~NhYbHv z$_ntF+UF4~rv&cI-xJgdv^o{gi}%dDg!6Y+-_@W~-(s%kDZa;5-)8Rp14o1ckH`yIv-Mxlc8(F ze4B(XHGGy2W^9{&I$rA|teNBnr+u~*?#+?#VIvjz4$>-4WyW1DS)-h`V0t58$( zW4*B!`4#U)MzTv?0aZZJ(U_>wd$SCPOeQ4*WLQ>*MR>+8t~u00snm)@PAkX{`)lG zKU4fSoBHdo#^3t?tMRw~|7!fL|4i|>`RVWs_S633D%qX&633~mw+P+*VC5y-llLXI z@bo{b)#u2U%ulv|WW#CLAL|YK#norJV{8ag#&l?YPpOuMWeHl|iWW`bO%xZy^cqiJEe_ z*_7*V1=spC%x7h5x!;N0??vu+M(#&O?)M(K4f7?-b?r#|ouht09ko)R<*QcTIY*+R z@ZPWSEA*&Uznb}!UooG;^VwJAbL1RVKf-loWq15>ey20=UWGgd!~0H0IqbKM1OH`k z{{=Hddb~Xj=M6aP>3*fEYk=)(o#W8}>9 zaJ9;bV(v5QME^j4XpHZ_;HRF{k9tx+>Z$up+w=a2{Eo8pYu^4IJs9o*26vzr-48Ul zPw@7>gEStc+!E!BQZD16YJe4ww^t2>d+PK40>ESIJMzS4?;2D`X3}?<@HY_XavGfS;{)%Dpc5 zuY9y~Gn6mR7jvF|Dsb=loLbPW{+yrfqOzi_$*6yYQx>rINHQH7AzrvAIBMlFKjMC0 zvHMiOy5urFD3|tW6kR3vY_PV)eZEoL=Nqk3`rU*wgxduXvi8#XOzZ8B3I^c$gHHcA-pnd=kSH^A~l z`8DuY;bcQkecyAnD)MC^Ji_yJ)(|XW=Y=wZK>>f^jpV<)ej zdmuivBhSfg$vX-2?N+Z~<0+zF2j^UY8`Xsd&Jg&J?;=3nQ+S@hX})QIOs5*a9Jt(9 z=*DckTH$nXw&Zn$-UZOB2Yz)q%}>ft)u1z8w!UFK-8Zl$kLlpp$N~KFpNd4j z=C|t><*G>JhOyqIedu5M%QOD`9)BgOnW^84rGB4?G-(oT8ZB3TBPU4=^f@#Tfd95C z5Pdr<5N!{b3%Sn$vb-_<+1^?@;}w+f0wT}VGbng>_|rFJYCTKUc{~3%G7{B3qa%CIdO6s*z)mGw(d#ELzrK&8d z+p#Tv-bcl7JHkK1?ILigKO}IuKPvDU|Gt1_YG8nTW$LIvCqRbVSzrf8`|D`J?P9_W znQ)^f+ zCfqYjxMNJX)h67DY2ls?{|tAEz@`541TOba6ZnjO24I;Q93Wqr`di=}K!!V6UAc#cmj z&hzkIoaf8EIM1tlajxfkajtiJajxTg@zXrGD2bn|)G5$@9sppTHL0q#cg~nZqwD`HXSW)<4fFr_WnEScc$p)#%GM+ZhXcHjvsvF zA1Ant&uph!aBDvsKb?Ma)IEv#@g_FnHs4y@#?Rt5eipa!vAB&7ar=4GZ@lQ^rr!j? z-SnF%xEtR|g1hlOOK|+)V|>pR+{V|&&!*qKiTG)I-4e@l{U<2l=zEb%UpAQ{dS!EOCE z+c{To*UmM9yLLWLaM#XL1$XUyzTo)5=jyA&pQG+i*p=@$61Vxr;?}Mfw|2F-wX4Og zT`g|yVR35@;`Xb;OG*3~|7oJHYmW;AckMASng zyvqcHdp+7+-uKTNFFF2x1pZp!7cU)PzG_jF^ABu)ZxX(?gM-d{h*fU@7Q^oj&QVe!sjucpAGj_l}{pN_|6yai@6%VypPcloUA|`0{y8v=*vN0j(N{z&}tdrQ_&^S zrvR5nmqwRI8LtR-{T5SOEXudKXZ-czA{`2H8i^VV*he=n2t zIS%=a>GYj*DE`BJCQnQHX}l5E)%)PRqg>D*#JHN_PI9=Ouk-svHO6@wJ$mwW#s6}# z@A>KI)3C!I=04Jp@9Ah2gOJaiPjS?<2xlXHc`uO7SL4+Q&a<$xcfa4W(P=)bAJ-}A zZuQ>)|0AIr<(z?E!jbs3pXKAaGL^7$7|-YSGM>-L$VE#|mCN{da9%)uy%N7l?6|_n z_u5(Wy()aK8ooCGaSwO&KHo~j?2Tv#=MB^^c;CG-<>~%<9^$kDIif_pEaiyvi?^YF zZ|AK_;E(gDq~9J`34h7+S=H)v=T4LxJFmz4kytN!?Ll{jdw1Z@K(%@s7Giy1`!6~_ zu}%2>9X&F{P%!j`I&B%V?Ud&jUny6r140Z@BY9=K0ANv<(p^tSRaj7WxfZ% z=gM>Q>1vOCnVvTO4+U1&5r6&u2K8Ma`X;~UY{R$j9dn-RZO8}AZ->CERlXcBEC*HN z_B{{%E=D?kK@z{Kztv+i?typnXUkp!Pw{#Bpj7nDH(tsLa=Sa-SF5vo)ab9$iA-2hH^X z^0Oyh0#|E?Cj)B}cBnxp70&x;U)BPyMf;*hCrtmvf%g-9Uj5cVKK1($koDUJgOfgA ztxM?19^iD~TF?B1o*#fxt&aB*(w^%DU*Zt=>dg{`{eq@FTrd3#_A8bK)+O|+ffg0c zhp6v2MAt_*ARg<0uR}a^?~n0V7Wgp1PyDICh6L`7*CvF|cx@JVte^ONwJ8ywB8d;F zE3pqGg81nB>^Fi!yAyi#*LL6NvHPY(xHSl+!r2UcHvw)+visA4%?UoQejh2&U*?q)b~oq(4K2t-zVJ-_etyf9^aJv0dcc6+W&?A)yPq_>ob8j6ZNE( z$9oSsKJm)s{rO(Gyr=qJxeu^zxzA>hJ1Rvk?-AGc7Oqa{$9np?!0I~n;<&)8R|x*? zy@rI0AN~IaD}lD2uYsK^oR47db<&Swet15>caBoq0bT#FTy2r`eZe7Qe*GAb>qnme z(*KKrEs6A^oR?5TF`c%GzfT?V&j-f76U!sZ;dF6jKH38Jm6Z&K^7t+bVF}!Ad0ip( zu-2~z^a^Jy^w;NK7~adCc0|`xtQTr=JD|-ylhN`Au-(ogu^jxZyv_;I|ljfWiM^ z@FNU-+IY^I_ z@p32Mt=JZAF7J@&^eFRv7>MG%zqs)0ck`;9DuvZ}d^3^my$XqUGxGa#Sr73?^5cuE zM@)El?i!!omvImH^}3ZlcSF33$NgU5oeWO-#P{*I-w&L7TfC17N@PIlT&B2cGM3CobE~;LdjniD#v_JA(5**ItDS;4a16 z*q8VpR7b`;3lQ_Bh=+|2*N=5P$fvtd+71r^-!1;MJMkX`kE;bT!GU`(4L;xC-x&O1 zgYObt>pctpzce`GO?-#o)oNiedpQ{2C2;15D)m_cj|sjlfis6ysZSF4V8OQ}@RJ1J zoWNP4tB_v&7#>S}6?VQ`JS6zK1b&*}?+YGRkD7eD#<<)5**hpHO%acG4c}vi?`?xG zGWeSYk4s0{*0)t^rO>s#UxA$04Nm(Ie^qdtH#G2N5C7e8f62p7`~{CY%gKK{?!=!J z-1cKxe-{VYFW3FtDz)6W&vpX1Xthc$OW@4~Uy|m(Ws?6V68x=&e^DBL+a&%+lHA$8 zuzsd~wQwQ+nZa42N`SE*BE1NZ?RNX%r)Yny{`Z1P|FfME3IFZ{UMBclgWL2Q;@c-l zpWD*hJ0-c_l91O$Q+ zI6_34A}$THptPHUifL+6r7BC>6LNP$qC=pj_al zz&-*u2RaJ;D9}mZmOy8L9|yV!{3Os-;8ufgGx(2FCbM9XS4itP>;2?ot2M!kaO`w;+Zv#~VzY829@cY1F0)Ghf7x-h~aDlr6 zM+p2WaHPPW1N!{@FM)xA{~9<-;BSGW1^ylwB=C>GF#`V^I9A}Ff#U?K;PC>T;0XeK z!4m~$1qTak6#SdO?BEcAIl+?!<_3of%nP0>Fh6*jz=Gf~frSP(Hn1poy3m^hhYM^P z93ik-aHK$gaJ0Z+@JxX%f@1`>3RVkj6C5wFU2u}X4#BAcOM~YNEDuf-*fBUmVCUe) z0=ouh3Je7=6&MN578na&A#mT|)dG72uM@am@J4}^!CM3#5d5dWgMzmSJUDo}z^dRK z0uKq^DX@2NuE0J5s}wQrSJM3qDKz-uJF$IH?y6N=->WEbgs&U;hJh;$e9gdB2Cg>n z0OS840}nQ^%D_VmY-XU}z@ULG3~Xg!8w1-JSZZLofgKI(Y+zRdI~W);5QoSlJ~0FL zHL!<)`x%JC;KKKoiO-=1f7{?|4Se6g4-D*Q_%<1Qqk-=kSZiRm;ma{F%fNSy`#T06 zX6XG5+-&F{8Mwv3j}839z-n$P@g}AB^d%E+s_cKPIi8b)=F6X@xITn8~)ip zJ}S5y{mVlz3*mm=eDITm>)Pk%6#N$t&UbbgPwQXf7pLGef$Mm1e=_Gy_-!oSP; zzzZ;=UWmE%pD=G?_wDHM+27H>7jwa`KZ#wf##SDs{VMvncKR&^{~b8zssGS0F|SR3 z<)F5M&~*2Le6PC=SI@`%H|h=l&y?_RIZRT1bbz-}|HbSv-xkFCqCp)`#>}o`c2a*L ze$Qe2tzs-8up{8Jc;8T$2W>BXH!F3q_GbKj5}uo0St)p<6g)cx&q={^1s^HdgY(^a zz&GRfZ|eBqMnJAx5x-EK5M+9CKRf9cBW@c2PliT>BNao^pItYbpmsSIVTH9d(u3#k zN^uW@H$P8QUn4in&80ifftIR!>Tq9&_%Z&Tq3|=BQ>&YR(BIJ)# zWg^O+zaEQoA}ghz+QL~S5GTC^7CC%*m-j@xDeze5ErD<6ye+Vw+#4}g9p=0%IPUur z*w(2P*v?rau)VWZ;4#ko0uOaQ5cqD+I)U%yd?>IsXT898ayAGYEwW>*s>s_+|z30=sbe==IUaiHu z$*uD&o%gRaiM30#fYs_k-%wbZ<&g49)M-JMf6nWl51pmQGH4}Iq2 zx0w@+^-#eWGiohx%5&G*v0q=xoqKMfIqK_JnmVAtR4Gfgy(9pXdn|Ii&IHv8@rdiWivshfcBjq%%hH}~ye8(Digz(4J zYpk9??;-N69{OGhZ9jS#uWoQg1P3*??XAZ9HRk!ckd4*unC%ekWdn z-)@L6?n^WAJIKVNhip`gs}9Egj_QMsVzv6G?+nN%9Bts4297asETGK~)yOB~gs$%e zqn_2leljP|cyfF=9`2>8Qtr_yRR_v@>pSA8~V4#{(~hyRIBU!oPUn1 zV&nf>fvo4I1kVj}U)N;JgHexT5H9KG8G4PO9}9Z=c;ZV)bwAxdYJ+mqM#@KA^@J~_ z7C>&1(-!&lbfmgc5#UO-i#?~>#@fY5|3&m|4}T?D?WEkbmvW}%P_GUWzjpX#`D-uo ztsMF*%W5zFN<9AJ;M4pi!hZsSV_a=Ac3&%blJ`Qifd=~i0nNt*vEkVA6Ia)o@NPHdIXPUO^PL6z zEkro9Bg4~jw4U~SWn3L*^u0~wP*;AuFJ~X5$g*1T}8fbZCTDGT1dAE@YOXIQ4;|xVuyJ6b$wnMBS#73kptzO!xQXkC%tQ| zsnC`0PnMEkE1Ij%eRY zk;8Pmq{p*eQC=B;T_1Ff6(O7sCOoE3l^OYH_kCj1p(FDZ<98(N#QdY>wF-2MmBy?b zw#OCV1T^Eg9Ha;F3Mt<#Z_MYcFGydHUzTh7(|p#SFQ4l#<)E@3V8{1$@o@&y@)f9k z(Y|ZDu|%*P+!y&g)n8oM`((8IQuS$(j?Y)Y!qhFQ%LR=2#~d)BCwd=YB56ROd7FV4*k1r(S$h4)=rdlw~)hTP)TC{@SY^ zv7j0E?FYOZI4wFJ{=1=cm8<;(XMW`V4Zd5+^wjI4uOc7xi23XAU!o$C?jlOyon}^?SE@p~r~B_8pnvKSm-r4VA8s9(GSnVG>Hn>09p_P^U$8`Q- zLs}00O0jokY#(E<{l(suVqf<>?*4+eSCz4jd%)-Fugis`&)Vojai$YH&uo#uRAFX7j`>@UoP`+T@JGknMv%F?HTUIh9KK!v|r{4qb&s9Qnp z9qXccp_S_$)BJs6HL4HBIelU?0V&y@bK-dH5J;Gh-)3;{0e6N|3*5>(B-ST36*xx7 zl{4fnnbnoGfYyC=CHJxQDqLOpChj+Q6Z3)$?+}D{2*y=EO8(aR+~Mf^4OV0Ra5eaD zL3=sGHzU{!^9Q_6iot3dV}AU01QKyR!f9ch1ba<=so}Gvt5yF<$Lb z*EKHrh~7(R#@iL~Y7oxxuO8`%Sp#3vz2Sd7{D@2bES*(r!8Q36y`96aSC2=%!I|K{ zULC;Xa7P>WRWo0{N|&Qv_15KbuNTkKa`N6IZO65N>P>BTLA!mHm-6An^LVvI*=}{a z=j5Fqe^i}6{$6z>HWL3J6aNssP9Xk%b^E*GAEC$lfohB%?}PX`wC*rh{H%$8tcia@ z9zRFd9g~aC`y$VU94gUHx|(*vdbvnF+hGOXX&rF?%mSR7C{cgGSg;ItowVS08R$u% zmuq@?!}5k|_{#k%%NyMHtH^utZ0KpG#m?64ET-s^o?&RZQYWg?qO&Xhf_^vyvLb!GZ24$Y-_}iA}8M4 zPz~9+@2lZ?k_8Q|%jwsapJnIMU!7Ms5dD<>@_e*{8qnT;dA@m1o`>~zemuT^E+`E*zLRj$95r zJDzcVOuAP8Iwfvadlg-Ql{e=Jlmz8|CF0Q@`6{?fHwSJdey^+(xpV&5U0qdoI^IZj zyytnmtLo0H;JzW#@qNW~;xG4c(Z3WpU1M`{@2ff;+o{h%>ih~xzq8KYUq7{qS_9{) zRa<&!uFubhCc~b8i-DiTMOVY5;cAr9;ddHJrqsn1cHYww;T&70;g9||7%Xdv(M|F+nzgF|_$cOQ1iOhQW8|2>wzn6kTTW_^$7E0r^lUg0i zNnfwF)bF!}NIxVt5A&3Hb?$k=h3Yb-7ym4hale^9Zaw%sp^3_%xN0@ z=jrxc1K+zzO-|TE1%Z+x+agW*&e=T8@?{< z{I|e-ZTK;ruia?)_|Ee-8h&NxD_!BO^Zm~}zAs05*8dF}$I9(;!~gr*VA{&Rzq-7l zQ+%G*2e5u>K#Tn6)lESAVf~PH>c@s3(|JJ~`Md(@q0iLq%)!4Rkk9<^V>&N#<)0ru zzVj`vaNge(^OV!x6E)AYKPhK__16k-Jlh`U)k%A3Js#z6<+d?Amfyy6_?P_Z)p4GB zy$E`Y73x}DPwswFud=>)yx(vUwivFhThx#rKdaC_bv;YJLe=Vr`Onw>Hvi)d?tESU zHXgqd^Bz{}1K>`?n8WX1$c)>@@Vb2wZ#?4RTw%v$4L8(rJX(l+xIS7~w;1!Sn7R>k zC;Zy^AvH1_#~II#gH{h*ug=x&h2#5;crRgouJb3(0>tP0M_f4{ZPQz>y!paA{P2;SF-p-MOjnS-* zjxVmeUCZ-M#OtCK=ibXQP7h!*E$2IpobN!qPU?<4IWxU2XONul@X7fu&DS4`#0{1M z>-+Aydo+LdYX0uc@yGi0)`JtTRx!5ou$=eR{T=h);QC~i|+_m^6 zKUuXy5$P~FWK}l)jLuiuO;Ei&i*R?lAYH5Y>paAH&V^(1voRR{ybkxu)rNE4^diF9 zA3nsqlJjwn7adU^j)ym^7jxz1x_>HYg|=n&LL5(Dg3rnDXMDH+%kYQYSKSLhV0)zA z%O8*J(>=a0oa=Czx4ww^`j=Y2t!W2q)jK!mY-y>@$pu zEwB5a$S=RK>NTy;Yt*|uJnvkkJ}7z}e97j5JulDiiv1Uyj#IZ+Py;_s-BIzgcJHkC zw|1ZELf3yzntG=LQQl7Y>k0YU`7!5$8!b zAFa#7_OuG|Xl=7f79UISFzfK_hv5K z!Mk@Ocx!X<-!gdjSFCa2y_E}h@czCLyti}l-!XU(R%>Dj>PhW2acPof{KQY8le>p=XkH9q+$jS#P1ov6#o`QKR>G3cI+?*&p0 zug2xhBXY!Ye5>>Om&V6^t$H59`uIlsf2;j#HRY6wco##@OZS|3HNIbg@0`Sc(PenQvg%R2e(?KSyH1Qt`g5fphVh*sV z;Z|rac5*%1`d0cq!*NgMjlp`gKI&)K z*E0W)ipe?ks5T!OSlN6e-Xe^1a$ij~_?Ldf{1#!HmHfKG-t*_WGtuyh-@mfW4Og)NQ~&%5ekaM>*1U8rZq-zy_ou?o94`^S+orwPLFRx8muint@OYDeBlJ@&1!&ON#hQAE{ z-0g_r;kLUDb zUv;TQe7VPfxaCHke%ym2;XVeLNF>~)p}1)e?&f-eK{*^13HQlR+`b{WV}opAE&Oro-Xa!96e%?sKi; zQsDwS9L?`kU~-<%cENF@_5She@n6BX&=&k*9=XVQ5b}LeB)L2vDwide!z1Co5{kQR2<{P)aF>PR+WC(E{d{C3+~uLTjUoJwjfDGZ z!MI1a6Yeo>z~%gCFT5Xu=7k-7^Fq?>FZ-*GNv69>&&8biBwsuXzY23o&a3SB%LyRo z&nKDn&15|<-w*RVXALt(l_kA;5ZrHv{AjoIdPP~%(SLMG$~wf}J2D0OkJqptt6zJV zNBru+#?b6;k{b$sj=hT$Zso^y%OIdL-h1(Wy4>sH1GGzi%JDa)Xc*QP!;+Jc zh;~o|5T9;8xZIcD2JX%Ht%ymy6A^C(Xs&zDft!T?!*ILCmP4<%+}M9HzipGYy;08V zK+jS&$zk}nx!M-L`8co(Ou{Zu}7yY=!nEGh8@U@hsbXInpRoN9wZz4ylBR|n#;e%yEi zTfuYU56r`}I0=-iU#sQomzUmOKH^lh!VlZ4+w+{ZzeCH(Hb@APD?=koL&&hXBaP#x!{l<8Mdh+4>iTCyGjgs*E;RUcu zwfh3(V-#ZB@q>CU(j5P1#z!T&KhdoAPV!#mD!A+q&U3_KPKOoOv_U}i--*Ur!rvb5p;X}SAVw`KjAK$Mm zALHAY#O1p5V0B1d`a@0nvwZ0p-<_W8&V$uqdFlUT(!Wyb&7bjYdh#4YDh3m5(96s#8B$n7(L|KekiE~}OmkIQi@ z{fYJ9*VnPWI3Eh~KQY9g^FM$5e!!U#;LrBQ??>DByp<>OrC!pH!*VtU_}ljGk57N@ z!v*94$Jp7}WQ_-3`dcxA=$p14fK{yr9SM7oE& zYzR0`Pekmo>Vzcc$2jjFKM^!>*TDi7_onJhv+8*5&-BzwH{u2uKHTqSd>P;AKR7Qw z^|#gz+>KBDtNot3+n@T#M(lV9zQfOA?cXa8|DSQjmm$J_7pqyF89yO;BE}(oj92e} ze}p&kIQ4RukF~q1;#2LeuHgB!acX=Q?&yzGJ8Z_At;eZZQ{RE@h?rkTR|LqPqt>-^+WkyqR($&9|$8H_Xkgc9PNImW9NO6 zt{2w#T+|BF?Pc79jC&wl%6~juf4i{fIBeEzmmDYAuGf?YzrW=DM{T@K<&3XPXZ7^9 zz5WG!yZaOATE$=Iv3zIM(qgBzvi;1``yw{xP&EnZg8I$m(**@ikTPq@7cmV7Z6^x%9!s3k4Af%f_|^fA>m(Gy0z+}BJMZX zd5gRs%Yie+mzlt`F1L<1*Yjbn-Ol9g)NYR_mY)?M3 zL-V=9mk;S$#b4*4JkG&;sv~NW>z<%_4a5EZxDQ9KKeB2`uAg5EWZIit4YwHm=vr`& z?_g{DiL83A_(~oAOfkdlBlWoe?T+hGXB|hrCadc)jyzmM%ShTS%-883$G#}@s4dfIKsdBiJYbCJ&4Z8&x!b2Zm~{4(%` zd(_$if1&2Tz46;yK7vm@2+Kn|efFF7ke9o@o&3c9sQvPj`f>7W@ACQc+tlUr+adek zGj(b)`hlY_u=djacCvXwsfzd<=9AXs)m9`=UlY zrfF+$=jSJ@zA9dVbev~A4mYd5*7R^t^vU3FWBmE?xGs1tF6)DDFazg%Y!+y`m%+6U z*B?)5ewP}4p9DqzpVG9AM}5d^81Fg1=KHE%y|2epyU%39`JViycsa)H5259e`Ql|r zN4sKcm&t@|2eaVM`vk0Bjq7KBeo^qK*ABz8^A%Yqy$?z7eO_&|!8!jb#qv-N&!gn{ zZiWtXpEr9!%f~st_af+e^`kC-je0@LsYbn+WcnJQu-@N+`&#^I=+K@|&Wb;qB>heC zGn&3E{+y;yQ{NV|{Ldy|(EihbRf~8z=I|dkf6EaP#NVqrUx&ZfKs)@sYWRCC$@Dd9 zx#4d)_z-Q`#X zgrIV)*8Dl;_y=gG9IH(^{*h$*8nw!lV-?ErI`~_Ka;yN~t5A+NG<{ioCHQ4*=dtrS zyKc52mcOuY_k9s>0Qme_ z^(bzd_Ge6Q?f;~I%00$!qg{W5nHcquAL(-yKk0Qo^*U3K&fZ@^yGDC|1@mXWi=%(C zU%aQ~U4{RVFX^K-@Fi{gm&Ip(Jio#6Q7_5!{hYly<=v`i0Q@=5tpP6Qx$bqzv1(U@ zuSs%Vx7HKB!r0F`;cp|H?QRNqx(GL;QQyyUQIARgQ?>uw(B_Fh^_Z5Ath!qBbrJHp z4Lf>FcR#{e|GZxpMbnS>KF(zg)RlaQd{?Ls^}gIWaF;`(yqAnOjmUim?REMyj@Mg6l_C6#m_NL+K`v6DQA0H)8LTu8LAt}1|V+PB88grip za$|jb5+h&!_p+@&%a72@!QXQ5=e19k_mIfPrpu~*(ON_=_@SQpOL(376uG(i7yo88 zA`Z)Ttoe3<^}K|$9}U!gvQO}N#i!UmnppH1?t5WAJU`hTe|O{iXLkN=^+e{FyK4!CSz-v0PqoBQLJ zzzyz?U+Vt&l_%WYA0_-7gty)wziCr{oTxsj_#XKzQr}~Y{|WP=pY*(FqB<}}fA@R) zC(t#JIpxIh=HEJeXAY0>|4GZM2EIS&ct0e+Ku@JT#gCwG!0-1-!RL9ix782H@%R>H zq4@70-3;V0(}hO{#Q%$&y-z z?_+KNhb%Asd7qk`d)T1I2d+PU*6VKhek$*w;rqh&qgtJc^a6$EQi&*+5R^UZxNpK8HaJ_7wxVok@IM4OL!iwQOUh<=uh$gAqVnX47~pMwda6J zK-Yj~y>ajCf61a$jVjT!<%srFUsjZ+1|fY1#3%i!p*w=ks_$c^+W+-fhg8Q@t&U|= z6MujzL%3UhWhs##{jL0J5UUet+%KN8@58R3aoeKi$9W%i)wGo#@jGk$uX6X@bvF3) zcknx>x@i0^KKw2l#kVD?SGGM@sm(ObW~rEYZ+8P-17Ghr(M{7fJ^3t0JhvRm4WINU zpR8w&v!rePFcM>};=gceL$Mej(Wv+2! z#d1EX$hdLi&Ntz+;x_@YO3gOz<;K0zxO3og{`U)3100t-6#tTUj-TQGGwY@W@f&c5 zhId|odw{v@$UW0F-m->=(Ow6kUvZw$1Ld~<+`HW${_gOezVJWz!Yh2?NBY7O2*-WT zDVaZ2q(o1hNR@*t>Z!l3=#gT7W%vYDSA-LLeAVfP<23Cpvg#i|6+P$mh)e(Lwf`FJ zPkR8qpIQDzXje|S+#5#!>oI29hvD-OkNV9XNau_%5~E)2qUFYTS0j#J51Lh5f={-$ zS^B)c$lbwjQoT}k-pz8k=fTm=&-^RI-nCcC&cFS*(az6&6N+o+<$l~~=V!hR#kG0} z!7cRs%=%DVyWi)><+`JFJMiy9ajl-lj~ng$%=e+VR(~V7g`S`JAtJ70zkhZlIfUbS z?Z6$}Xy<%oj`H3s9JgaT;g+=#*L%LK&~sJ)3zcse?h%ptN8z~9&Q*ou{#5KfXXnTv z+PNx~5PQ~xioEBvd!@o~qn)cN95>pzs&L$Yd*tAZm-AqU*ZO=g7Al7@+_`PUwdWXR z{1JXj(8g|q29)cG7|PQ+-$kK(w}xNT&iL_7gztZ!@Q%w(As0XHjqQZHsExSZbE(ey zX?~>k7Y}V8KYRL%gF7n{ZgIi5v)c*x@^-?#vYl|}v;mj;h>f2E?Ul0geS4pb-DhGt z_xZ%h=De8rd(S6Qe_`iGRK{3668-HuR{S#_{Sx*4gQ4$%TPFHE`+bwaTA#=Lvfc>i z{zVLyRn%+Eht8MfnjasW;<$G;5a?#1uc1p_H{JV;`**mazZskwgSZESKf(D$-$!&c zG(nB(Ncd8pcZ7EDQ2&LNY;Y=rKW>Qo@$CMf`1jN}e^>RuIY_4u2;{`_qDt^Xc|4_hzvpO5{uoi&cs7wd`T<2X7& zT?d)j`jh*nCaRJI(=%Q#9VYqPcFFy~GPDNSzY>1={@WH3;P;m-ZdcHhALq^XJB_x! zEq_7vQ01!!(ozpq8gC))c(UKKq5nkH7xhi6Qi(_U4)vd3*>1{nIBbu^zfZZ_mHzA( z%EPxm_aR!;EoMLBHtnuZ;&zMOqv=HKVeOX3^T zxN-kv+{27}sCI=KoQi?Jn~DbM{_eJ0aF?6+a+Rv*%Lic`DOO3ONNV|I@xO!dO)1vD zwQFHI);HxvdkS|xW4a7Zb=1-%&QQb{nup_zJKlawef~h?Q;A>pXO6q<&n23!(YQ6> zPvl_hpW`379-OlM+O~_GkY3t_Yz;`d4hb2T2B&t`ty}CO*l!u`?Qi^ggKbX|J_ohn zAJ>`gNws&G&EN88@5z#Ic^@&o9fu^I^mD$i8r5$K$ZzB($gfi8*NBske7LW9wjLi= zsF~XB7Q0Zp<*`e&+dVd0yFFr8Xt!r`In=o!=>^kkgL+nQF_KGdmZnbd-8h4O! z)5f*mtKBIk-;=G1@f=g5`U1bsvsQKFXHzlu4vGB+?d4|m8$G|^eoQU=@x3?r(yo7d z?6)jy;QV28_}F&W85D0^u=_WSn0fG_9mI}st(^eBCta3kfn9eJlA&ES)6wpAC}?Zf z%kO>uV&1d%J6HV9^qaYKWd)_1+rj4NPbYS-VfjtLH*bUa+<3a{JJ|1COMASb^CZZR zl5JG{TCnp_ejPCX;=K*OnEfxliRkYhSJ)3aV4cA4o-At^qTeeWHJt>V)O4AqY1d@O z2c8r5p3{>0`aQ;gPN)T^zF5b6m=E_NoA?KQXkW&j?hc=c{W`aOraRoW2g>I(d|_2+ zxmTfcBK&^C4mh8|`0U5_e1yCFY#%c_4AtXx7G)B--c)4wf$7SArnSSDb3ezcPkG)) zpKBbgevcL_kN1AQp(*EnzM&Y~hhm%@nv!yf{T1ahD?U_@lg}ZH^lU>vZ|KVn{eq#d zH1vyxo@3~jKzCE!A%7DNSP(4o~=Q6*MI_#CGO_i!z%p+YZ@+KYN~^^|_VQt6u+cyiS95zH_;iuHT?|Tk3cf z+OW9>C~OBzFYADnUDBy7AjA#E`G(~8;pN6$d zX=q#j|7U1h{|$zg`e%K;Y3gf@cDu#an)-T6yWL|g+U*g0Tf04D?`XFo_O5mlW`0y@ z)^$6?KG6QXV(YY99s5wb17mVdd{B&E@*IbE(Z|}|DfWqW`)D-B+ z?YxiURSfn~;ttEjBhIY&_8xk6d203XF>z%a7qQZU*zib)bx!td~Xc5vge?ufiYc1!jKozhb_BzwU|~1TasR zanr^xgK29(+DtS-yUK5ss{|6cX^Ed)KA;<4(tJJA9j7VTSE3HNjEBaPxHGj z{&dv84KV5Kcc-jg#OCkb@8me=+{Ys2a-VzQc;~b?hkx$xTD`5sWx2RN+XxL5AKdFu zJTkR6`j^bp#;HfTJdb)Fr-mn9)NWJaW$kXCSf{Is(#kKo-d=J;FLhV!c55*0$_l#yodO*Rr z2V(4M-98{3w>3LYp66~I|G-eb?f$ID*|FD&X6JcO!MM@vJPXH-X6IQrZZtd3!f{WI z)Gi9gjb`T=j_b9@bnKR**?Eo*Z4Yg;$2>R`*Xn1b{W^Ay(d;n~3B|Sc2Gm2_@uzTm z%tJ%*+h&h>Si!i_>@f?+jb@KoIBqn1%y8T=yUA$x-2W+5zG1jWMC#9l;~v>Y+%UVz zX!e+ghsq%g_vlFc7LFUu9y1&_%x*H8J?0UiatOnXW{(+;+nT*(G<(b=L-}qEKbk$} zug8yOj~R|{?GR;r&bL?P`mObO(NUrDX`4Obn1XSm*&`N?8_gcEaNKD2h=t=uvqucZ z=0k6XzxVbENfZRBr!+=SaC;<_-YU z--LEs3EJML*U$L#UeCkuf8Hy>c)Z7x?g+I4_szZ0umU%F#t_DPJxdXHdBc8Mug7~l z-RXFrCDV-zO}D>J$9p^7>3Dx7)9oFa?tqlthj#R&U5dt)?T7uxYE=Pwh#r9@mZx5A zm6OAP&eap)zh23_ zko9pe!uumuM}vQ;#y>>k@!b6A)WO&fK2*~dJFA{7KFpJo4H1|6uCB$hzg}+Kp2n?& z%W~gl&RH*pOMP7&nmPL4?$WDJekUUzx~IaWyl)4eZaV`Oi2Ch5#iwDvcU0^&9e;>o zI%~hzS)G*nGxTEIkD%U*_i9Kut*R8P{7y<8;|ZT>(la*oc%xz`xp3`0eav@?It{Wt zIdvL#RJb3?{Ilw8Xm8}Z!;|4(jPPZ+nXUsu7d4!Udjwb-=NYKZNX>vxy;`aDNX2SK z>TK*x+xzYOdV7)I%p3;gavS90-&bI~#qskz@fHWfllnS87mwxY8n9o$c;&?xdE%9a z#OqmnsV82~ka(5Fvpw-D1L9e^RI52!FFipWT5<&}GVHTP%}a4(+R<~z)XhN6La%)+ zHkL)NeGB%dZ_d+e-;$b;uy!oXsyT6W>RRldt=9EWrmjXV*MpXNDO1;iUVwIXcM25Pd7s^C;rsS(+(p6fA-&7 zfaCOcmWuQ(xXa$sGHgS_Kv1VKMf3|b>f1b0q{h9ZdA60TI^v9YlPrPo%ev0-8jCUmB zNjYUaz0D(EJD%QV&ifgXPc zU)poEdLY+-V(Pw-{2vO){~_f65b}S>X5L#S74wJYtR1@(S}mY4KjX^#&F zw#SD(?_cJ}ao3$6$IXrB2U}~Tt3?0dc=AYKK96|v$raG|AM)?M2l8#uynlu6KaKmb zaX&Hcr*Q34ug2?g^WL6E!H1iE3^dU*nHYn9)5qtX$9Q3eH>?GDBt7aPoRFJ9dTcfvwW}r zKXD&iBP1{W6LfrOhx8Y_YVI!*hyIu8{YBZYcH@7napXPNsKn089sa2fXRDEY$;VSq zV0_bNZ`d!Kn2_@vCnd!G>n{nh`Y1n-}t=A{w|CFAuJgxiLQ>I;B zX!`lnnr6Hc6T#_EOthZf@3J67|} z@Kf-HZKgb@*NkzFa3$*F9-ck2=QMWASd_zbE}an+ZV?-zMuaAx?UY`>TR{Iw;K4a(($U4 z#9yWTF+VHe+q4G0OwV!F8{S;Tva%ZclDJ+a7Ix zYgN|sJ%qmMW!xUN8twBHxU{2_^6-06rzTb#`-Ol*&ykbh<;&><$mes&XcX+N2#wcC;BpVM&cXj5u{z&7#v6L#Qc`-#ps!IZ-ZTtoyXEG zhMt9PiE&Gf-et0hf3k7UNDR>F??U=!by@7}#Eb;pa}qmtp?hv(gmz~p&eQ(q8~TF8 zg_^!7aj|wUG5(h(W@-8|$N*Saf5ajBo=D-M(}IpV%HUxZc^*pXkQa{|J(XD+Si2L|F$01lfm{tZM*+%J`vqb5zpYQT&Auk={<7+{B;Rn{ zw%P53-P5){6^0wlZYLaf)7b5V-Osij=UAm3bCMQxzg*kye_Nm1C;4@DL1FiZh2uuE z3o0Bpnq5%gxY6u_3dfCR7gRWIG`pa1+_u>Th27J(KIO%A?04FB|J(Xh+w6_P?tfdK zYMZ@L*!^$obNh+XpEvdWZ|hTSvo{L6r!5>en!QosxY6v53dfCRZxoIjW)~FA-YD!o zwe_hm+#@2rPYcJ5W^WXZ8)g?2&E6>NKDG7jbpKm8ZZvzNaDKz=f}+_Qh28(QJ{5)= z&E6;+w>5j9X!b@$A$Bk8Q?21gvp4$n_|fc*TF3X>nYQizH%Bgh+_v5S7LMDt``^~5 zHjUj?*gbITQ*E=m3cCj`95|?U$Kuti89DkF&Br;KCf=P|ul!5y{A4-!sRoXG zAL*c?n-c%k=d{1q>DKA}KRKsOA9*Op#cD&2CT@_Po_7_+aP;qCZ2eI0F$2`HhFF?3 z*9mT#^LsbVdAXbByva>-+;Y==kGkoX@E!Y&(LC2?!)JmoyMInWO;!Ix*}y6O{^Hu7 zvgh9Xddul3{}qVKGm9lCFZGjGsI{flxGReF&F`nmIpbquMd_lngqNgiv190dh{OH- z3xN~#y{LM%Nb3aM-^1d*1?%IlxY?EN<#6qOKi!jX4DkeN@#E3*neE4+v!{2_i)(ES-GB#d~U}6kjQNr?hVP81NXT_ z4x%@{+~|?{okO#T(zoHfIo-vE&&66#eLnEI#<2gUaobvc z+DjzRPbjz3z=zvzli!(aO)hLFol$RNRats-NQ&o*JDK)fjD1D&SB&<03$WbZQDT17 z(>E%)M}zy?Ovm!xiMnr8gSFh<{c~hP2ZW|eJlR`b+;X050s1hba&_W>3F`qM_R@e_xbj_671i+U&?Q9 zY5QTZ>X|+((G&gB=|5IpEYU!OS0cZ9HB9sqt0huro=JbrhN_3!@fsKZwu@YQD{eDz6JgRgu5(@VmL;t48xh ze(v+|qhGJuu5K)_WZbL4yQoSXsgBX(xm#ZDb}=NdT@2Cru|G(?@ZN*J=k}4-sz0PT z(9v$97U}K#tXkclAkBO)QT(4g?)$MJe+%00KRLkP&SPS@ZxQ#x zpgoA4leKT6Urg2Mzq)iC!e!p$#25P>Z~P?UC)4~_inPge3YW{I(hnw5c>m%G2-jol zHHcrEiv#dk#4M`tkko zTF=L^EhInweMicN-|*sle`W{AewFWuG$iS?r>-&5wc6JynIEq;+TH%@1KVGHK>K?r z*Z$a^7st2E)iLSGCI6@U*U2ULjI(*%`D`7S&(;C?JnYHmw)h`&c$5>r$4d89%#%15 z;5>=+)EvDH+T}LsGZWirez@;#`LQnfy(_*g+PQbV5;QJx!1m8un$^A-mv}FSp5Ey2 zO60EkdRGQugt?!3b%lq|tn%VCtLKZi>o6Siy`=_EaNQX0|Fhn&LH}nvxT$D(n)E$6 zx+zUNtKoQ)h|Bjo-8p`S;tfwryk!kG9`7?L1h*LR ziF+;h+88eHVIppm;kPNhaeg})+y^yoli{~1k6)hGVEK5yhORwt!}B-f>prAsf9QdA z9_i~1oiOyHhVE@>-XrBcXR|pf#L7+TfoHVPO7NX_o~g3^)2SB;kNd(YA9woFR>I4C z;go|reV10kyZOTX{PpmK`}s@w!u|R8c7@wE+oX2T^Jt!9^XoCAeZS$Y5WR6YZZy4J z;keQCc7@|c)7wSGb?hpl>FuK8I(oZnBI)f4$Gx_laIb48-0Ry3_l9=DUD!^zi`ohI z=61rpwViMmw-fFi?Svam|6X`MzNek|y|0~c?{6pE2ipnv;da7(w4HF5v=ixpu}6I>%1`pmXc=4?d^rVqjzpd0_7 zU-F;x8mRWrdXa%@C#~Of_LX)_%YNdOv7OSpLeGZ9tLw4)0lM5L;CheuEs%cA+^6sc zT>883U$78!|yOA!vMm_KuqXxc=ZTY`WZP)p@*ht8JS;I)I$L)D? zD-WxW^Os9Kz&WHE5P^FXYX2`2~;zX|@;A z7aICNLtg~i@=ZCt4%*EJ^CvF(As@`2H2ERT{7I7^(#)SU`C-1ypZSs>(#)SU`612x zNt2&`aGAfC<=mghdrRH)!9JSj7?_^>M9#Wd>^`ZVJ!dn?|0smp z`{&&LJX0Rz|7Z9U*PfqXJG1ecRR`$zBwxEvE8)(1lJ{UTy* z)sP}M%Gs~-_P4caZ#|w9Z~p*2>vZ^Y-~D08+U|!@G01lE8rsPK_`d>s0{?esYs zWT2Kz;9>h@JLbJB_B=h?G23A|^i%S^8{VhFUH5&oKCrv?=XY;-Z^}NGI;y zz&IeCG<0`E4>fcT&`i(w&s%W$zG1(bfxM-E?Qi%St?4)7bobZe-T=6-l#WgxtSVxo zG2Zd~8SnA1`go3m^shlYj(gnKIv8|T9Z>pz7}0AGO8;i;tG$zmnR`-3r>hamyFYpo za(z4ZZcD2}JaP%j_fVbhA-Q}H^W=MIF5mZZ`5uaV56jE<(Db_rkq5skc?imTXu3%q znjYQ#P{>#4x8Sng`oLxVG^^Pi4nYf$c6li5We&x-bZ9yQm+jJxv!>j^c?ap=H1AKo zN9{v9oIip8h4`&C?{U7NR)FR{>6K{xf5Q8Nd~%eU1pgtiKVe_{XY5WpPgbqb_7MJk zB>HprBFO)JNPQ^kjrJ`5{VAr~HXxn7_?`}#Kxp~&(qPM>s5>1SKxTWa7*((q%rB>??sJ=e?ot6Ge5t9 zxOZJ}S8H6h503lxJuloUb%UCKHieM_ZY{pc`8fV>?Q>*&k~Xmd;kMohI`?y(!i&8k0kI2Q4FS1Z%4KsuYxv95d;Ah+Yqe8tOGQ2gZ$ldunR9QGNc zeJ*c^f=fa9<4OACF(38rwc&hx$qDHb(RX>5eZKrxs1tJKI3ZV#Nf=iq zVQ*Z)W?)kKFP?f4IrW488Te~d|Iy=tzdthHlacSn^Eny$oSf$SzAxPIC{q{wO%BZO zWaM{pZv64**BVWJrsnuL4O`Kt1;}G6_?epKJ$?P)o}s3t`@`)WKP}Do&gn>B1G);~ z^+*o~^y!+GdyY;^4^yY6Ps6`82VH&5>)*1(rI`QdV3g$<|tUPu025q~Oh zGjJ&{>+kR-c=c+D!56;RzF)_<->CQ%0OmIhINYb@*M2zedD}hZG#%kmZ)ZYIX9mb= zI{26l*)ZO8$mtCHe>&uJrk2xLy1dhkoX!Nre9v;p=}e?QGbbO$s6l#>tCi20Ir(_Q zt$ZY0=yliS(SWoC~+FI#;)A&Qm!5;5qqq+TN$DwtLK|bJE@6&-mvcem~GN&<7a* zJcGm42>s76{^z^=d&6Jug*eZwx6jw(2Gh%W`=Fu^6EpE%lKcecob)7cIV3g{{fX9Q z;ZMC9soN9rEN8E(YRXC1q%O*>lVpF;yH0A|PJWke)^6;pF4d5S@Jn3p`pLoN zdaHHZT|;s0`pM64wDae?h2q+Em*5t9{`}*RebS3^>oq^_m`HN?Box=K^ZdAfj)ePZ zC~lY>W|T&$w{SVwb)xVq>uIjz_KL*sXQBLhah>(@yOH<}$Mv3@aB#T}Z@v9~9?Gvh zA1-omaHE}T|Dsh~+J6R}J3kBKQ0sh$HXy2pwGL-Ky+-T>{3&)Li?!0i^ zXy?ug$BlOGyl~uT=gz}%z30Q7c03_c|M)7jJ+$q7_}2yF?g2~Z*84>`uKgZ`^b1G- z74170{|e>To(q@${A7?_ZP0he2sRmZhaBw z%U5CT&-Im^H?{42?L}$(o}vEEp06doomY#0Mz0_3%8~r-fqj+=!yoB`phN3~zwXdi z4u`*2Unwa&sh{xOceh?n{AK@h8TJEl&%e41cJiWkEyMp~(4%M7A$tFXdf1Dxo^|#) z9xmd(Oc8uzYF4@ue>a)?Mdf`gI5s}MuWrt9E-vD_wOWlSqrPsSdZwJ~?rL>I=SsLI zsHtVl*Y3AieuB<{#=v7Iqwke+EN|$F^OMUV0k<3qKuKftRKi;UdB-Fpi{j}BUO1*zFL2X-d zdHM?ID`X#irn(~i`)xKDdUE@35NbdAkPPuJyGj&r!n(MqUCp93xL9O$v;c=nChe(#RYN%w+3?)J|M z=YIYGgcGl#WO>6mz)GT>UjzF4k~j1{)>orlQm;pS*j#**V|l|$wA(r9mB_h9U2XJe zD{&rF@ZI}kf;%UD4&o;fF1X7Z<|3at={K}qX%6tYKlXFtjRrZtM|=G_Mn3kO*eY=M z?}WvhgzzE2dq?wa`FG?p6X8}K)W1o-bD($16fr-hbGHN1Y#+A1Z9b<0hvkaF?FM%m zT!lZIzb((-OnG>I^$nCv+8yJ{(?wmAKD}rzIMG>+QwT5it)%FTlzVm zlSnE2T$i4zW6uN5AB*N89qa2q*jM}=#;xm+ZW6+W#Qui<@PlsW#J@I&e_eVZsO#`A zgV=1>=YUSet~2=a&^}0CZ|M2yxoUp;`t&NavoA_kp`9_Gc}Oqu<{`g%$ZwvBf4%Xa zZ|GHMU#lACr&lBWK1HjMesiS1KJDZ)2~?dczs=F_nByeyF(h^^%E8mGa^CRncs2HY zFDl~u$nN`6|2W^s;g`fU=3M0}wA=ZCwm*X61OKfGs4Z7ViyjhKc-Ng!U z30oe7usyzHaE^sb`bOkWKB^<|kyQhVw!uDVH{f*zUIrL)-k#&;O1vLe!Y)Dl`92_D z_rRa$a8_cxs8*-zdxSZ9$@|HUcP&~kOuH<$i)zH~1NTHVQu9wfIW9LUj*fzB^CL3( zpuI@5+B+AYcEaKLx9D@H&UhOoe>t!JyxM?we3g1Z{ZG3uDpg7P6&2I&GF7DAG-{C4!z^=dbxulDY9G^vFcXI8>4hq7dRM-P?%Jz^<0fmlw_w}8pcq!}Q7vF|T&Z!O@%L>#GaH-7W+- zUtb-B8>X*bnBF!7H(y^Jgd3($c5w6c)iUm$h5qQ(I~0ar@8R1SC-U{xLAYUh&xKfb zx$Dot&DU3N8r*z+^`^ni*H>>E+d8izP>t$-*DXRL-@_tR|nyS>8lq)k0AXbUthga+xz@d9Hl>p>8lr} z-^M)2dG9-N&evB5@g1h84ad#bS8p2Je0}w%!OhoK7l!*2>c^3P>^2udgl)_un2lIO9aVzB&juOs~8!9fq5)uPzMt9n&wQ-wD68N58E|-lMTd z{Vq)3yD;4veo;H)$J>biZY%PckMP#V=`elu!t~Fc_Tr37`TFXhdJWe9a-9=~o3F3l zG`RWt>gc#!UtOiwWNdSij(TIR`$S*u%$xG{)hl5azW}RWIS(=!_Usm~82{%=5BEf2 zeYgPUC!F_;S6}VStAq5__FMt=5jR7RVC^Gt9~V}^N)3YlP4FLxP_8TOIUjx(=SKKv z@QZ6oU>9~H?6y`mbjRP1Jyt>wNBS1ng58q-p~o$-BV5^V3p9Rif7R3R=Q^DBtkesY zRNjpHrj9Qv#ziiTirP2oGj2>TLVo?#qI7?>OX@pr0bK){>*FlalTUniQ`7d|7UGq< z@HCjl!?`BJU#o7_`m}oWgVC$pmhKo|3_ZKFSLSoO#=TABHmk+yTcORXfiLs*KTYb+ zHm<`vRtDRR-Py)^@J(@Wpul_Cg#xpW%zM5B%-Tqoj>OrvQO*wUx%5H-KT9<_ZQ!vegOMB`j`^$ zJFWN$J3ZsnofX`-ZB+akvh#4BHw*XP(w%MG%i}$?p8v{tPwmbz`^VSBD>Qv=JfYp| zO#JKP&va$_8{(CfOu?kRE`%Cc<&F_Pt?ZbMXg?g<;y<0!J^q(E#e|d=il_CCfLj11@ z@xM02|GE(W>qGo+2=Hh73cCM*Y+Byi~EJVC&F=~?N1es8*P6o9M`*_=8W6< z_s#{4+f|`*2*b_4cW%?*=HENFX>jxJo!d0H`S;EhhU;A?IrWx*?_3aW|Im61!_B{U zZqwlA-#b?ru6JGM$RYpUxggvDp>hbr&A)eU)8KBvd%bo2R^j~qubpreZg_1AzutAT zQ*ZhA?*+-XI<(%xaP#lq+cdbvk>pS~za{O2TiQlkuU^8bxBPnugXB9fwBEvS^Y0-n z4A-mgaQKb3E*TWcZy0X=J%mC0hU0qotsQ>z?;#ArtqJ8f3^)HC!cBvle-GiN!Og#i zur0X1ryAOPk#g{D)HN5(s5q4RHG|ly(&`C{m9Vqnvn&$dX=mRy)b)V1&X`1Ujp%2zH*Lgz!LDO8{34K`1uIqja zJ;T!UpL96aa}qvA(_F_1Jyyr(`c2{=t;4x)lklvjxn2``f~L7n6Z$w!bA2ZC@tWqk zOz0Cd&Gnej6E)3sn9zUGG}m83Pm0-f*BM&AlXLovfvUFhcQAm=sy|fL!L3*S)%p;& zuO#+S=+DUY>X)2<%HzKw=b!fY|1amC@%W43I`Qj0{xNOPPX8@E{zWk|I9e-E(6z*90ePyrM z?`evwAKYhA_Bz^c546{(vH!<>`2wgl;j`2;$X)jH-qqvH(|UZ#szj-r4|rG8HeR)Q zMW0idp!yc|LOICi9+l7N{leW*Ui(>Ts|?LO5s&&|9a7|(v!PU7*N zGolYvNqwSYAZ~mTJLF#a+{JOKPtp6hQLK~N4LY??@t*k9W2axOrgr&A=QBY46K=KI ztf#y;#>M`Lol@?n(mw;YH}a_g^|6W1drA7JkM+G-)oNRFPUmBNKgO}@80c5uhfVxe zu#9%{ZB(0SQS<>0^|HJN?S0(0WxuDw@%|Iw_Xh5R@lSES`F@f5`Owsl-2YSqU%r1?zavnu+z;Lh zt`lGC6YZo->e<#)WvS2~ruWRXLd~-NX;Pnu?xRMtlO7o|-}^k&o;jKxYVS~7@4DEr zKZ>S@8WoD`UAH;*%txVZw7$;VCluGau5fUp*-7skitC;KJGjy8r1uNO_1eul`?Kdo zTF38SFmC?69zpZda9ppQqO*@0&7S#yP=1>{_Kyy3G<)U)Tg8=qLYemp&*|E@8OQ?4=9Gjb<-hIBqn1>B4cN*-ICW8_ixi z9M{_O%D$`9Pomjfj1FxNc0XEh9X&)ed+CEialQ5t4sJBN=0iept^J^%-)MHnhlb*M z^(Ib#i)L?oSSYUdyoQ5&M5OoKpF(lH=Sv*iX!f>;hvIte@*Ui$=03}L7s>A5>n^T)$qxDZjG;Mpk3!G*mqca4e|Hh2Y&|2$@DXP=@8JhDC%JmXM zbG|_OQqWdD#QPR_A}7KB-r!T-jDN9-@4ruetl{TBh;QY<`r^8nH04VAHPBY*%*TH} zy!-xmmW$zr;m07h_2hRK{k1E_F;NXozy74;y$2|FyudMdx_j;W8%%@rB^K)K46SV(-JpRN# zR^#ydJl!D`Yrn>EFsoL_C@1pOAADJTn9$DmLv8+D&>p`D&}T_~eS`aBtJDzW$aef~ zV7vU*(=OTH?ul=J?tcUL+5kPw29N%T{b`2!8R6?;MHy8n3itSXa!-%}gp zSw8d2W8+zUos|36lt=jgkKTXr^RJo5PZLyh_WdsNUPoULZC!s{$b3X)y!JcJd@q__ z>iB|jqv@pz$Bm|!3di-@!#H}LXnLs=Lgf&K8%-}&IBqn(R5)%}JBy~53U6m&xKCkR zY+X+h71vp3zR*To@A}GFZ%5O2ofz64yz4;+H=4d{Vyn1q(|7%P{Al{FaQv|KcQk$1 zNuhEH!;PlzDjYYOzN>KDX!@?gaii(G3dfD6?+VBD>LHwd5>4Orm(cd$)qgtUMKpca zq)=S1e%!&0rtg{@ifi?L(y!&cFLoB2;vB!qgz5jH>C;XQIU1B7B*DJLA#PNb`(vzP)vGbNF z`qD9~D8qKi@2&ao`-_7goU1Q719l12BaFu#gVidoL13T1V6e? zl+~-hX}#xkq-Q^+eqsPz((G5H2g0SCmO}r)@;?ce^izg@+R!f;`b9&(WayU-O}jLv ze+4dzq@Q|qZ7zT2%lya(^Jl)K$p`aezD!R(NHbs3OBLw|4dKkK0ntJC^JN53xeU)dlyyqAD@R&O>=>&=Q$ zUta(5+P?$*>lA+-Jn}If`BLA;kgU2qMwk4HeezZvh)4PKHF_^6zZn|06yeQkX{A&m#epGxWXx?u!rcC7a08(VtnD}`np4i2XiJx!i zhjh9l;}?L=s!ouW;N5NfFVy}^wcQi*k@ew`@m09+Aqzfj{AW!3ix8jX@2JavWc*@7 zmw{$|?xi|q=ssiWRnD0a z^q^9oC7Q3TI?!c3^fUE99ElfP545YcPrZ6vw}0yQYETa9-#P=2F7;Kshl1ML8u*fC zyulIU^$UpS=)DEc^1<@)z75((T~f(%#l@F{(?#=Tas2kXqMz%k>*=X@ zIpp3ovzIE*uzckjud7a9ujJnA8u+rD)Dv!oaMs^aq+0`jj%OSfs!PfDbHl!(y}b8j)-51cEjaAFLX0r_W=>~qX>h2QqCG{_I=?>bd|MCpu)u3!n{g-D-k-BTFyOv`QUwld5 z!&5Io?~k5H$M?tO;8W_K?~k4V?~lJChCKD^Rio#PsRYuqT#v;oGiz04rXeT4N?k8i zCB3xUw`6t0Ow}v1x}g{9r!vzkQ;GVi1n(m6cu8gE2GF>1)zqh?>yLD&m~;!_w&3q^ zS9)GzOF32Q@+Wk8r-Nd?{61l?%#c_OX~dK7&q=;~k5b;%;G5}tx#U-`(TLkir?dM> z)_$=!O1)Eu%FJVkHzZb>nX2QHck$`UKy6B693+TKg->S8*KT6 zm4oG>9GcZKlxH=@2d6xg7v(7XoQ3h_@2BiX8zrkoF+qY|zbW zY`kCQ3hXD{jZxeg_sPdYEeb-C$Ei*Bjecy-I;1ozAtl7WfSVAE``I*MD_M z3hg`vUQ_4?;?HtXo~(cJ1y`r<3u-*#Wz}m)MgOE}kIY5N^B+^r)8P__2H9+Xk7K`Y z0B~L@O=b>O!yqN;=U1T@)9&?3*u7F7-}}<1klxRSv;QOcbHAh-c-X(q%qXp4xiVKE z?}_-^9R3!!SseqZ{kf9k+;27i-tqI3gZq|2h*#Hm4DIpZ_yVhgm}{C2|ll3v=0onH|Dw~!d+@5k@w!k6!@O8MOL6Uw_^ z=G@9&C|3*eV0+*jP0BS_*8}?(+c#Z*`)I9Sy$!y8DC(E7{IXx%4}NX zT@(D-^47v-`)2tD29&QJ;Rw#j&*BT;*X8&QlYehW>;8Be{Un)@{wVbjR!)mg`vdd+ z?aYO+H$XeaydsHtg_MVM96j$2;QRZl-0#itVqT8FH5k1de@EVw)4eG7G+oXl_?%QG z{ZZ;c>g{@sQwK>%zoK2ed~bvImDgeXV1G!WC;0nkRy~2!M9%oIF*z*>kQ3t%27l!9 zDU55JpQJMV1KT0TMcdBhJ?GpR?jFz4_;h{$#>^Y*L6dJ8C#~H@y=$D5bx&vD_f{E< z?<*S~#ruTkN-l(J*F_xPq#emTd1JV?o;e67$CM#clo&!!F+FEYb1Nm^*gV5f3 zaLeb9C@$95gg)N{DnGuIvq`uA?GeLiw~SAEdsqGDr)N2TDB31dr?&Cn(|t_^cOqyUC*b#I@~)ZHSM%o$rWn8K-vB?PE97K6ZjX+Xr2?kDWD6 zmD)|aJLc+rXI<~RX`1bv;cM|L{XoWO>3?4QT@a7>bcw&K#?8myH3Gg}??~yS-|h}P zcRBX}-CON}@o7ZnQ8gm7sB#46?<3$l0&PY7Suc;rM_}GCBC{pHq(6<&av71iN$a)t zL<+C}&Dwu2__M#?V(OXscUOC5PA?jPabZNJ2k=-w%&`Xf$^7k&5~izxFKJm9NPNzp zn9o;8-v!|ohXzE_Pe-7Cl6Q&E_mdyLFT%#Fk$N6K(v?qtQVzMJ^{BH+8z@0M`* zwtTWZy#$;wz#Rr$_xpfyBp)xuS7045oNViGI}S12*7GE!9|Hc~LHu}$$kW}9rX##> z$w;)*W%#AuLE00`(KkXltehmjk!Ji~-LL@lxVm8^^d2KJBQuU1h3{^$M)ms~-?zEi zy@c~SHNVl}GH#E+xIH36jRW(kMmcT)&Gu{ay#x8R;BSd5Kdz7{x5X~}HEMUydzQ2v z$8UGVv*$*CO@4Q{a5k3TovwIRPcshsho`a6F%I7xdQQ9DVlCQjQSZWSRPW%I<#PJd zVAPYm7g&#P#YSd!clFOINR07EWMm#J{fijxr%vsSRx=9Y%_xt2sE6MhJ(Kl9y|?5u z3T=H9SAAzQEcS`Ad9%{`=i~ zk-xvptNB~4`OC-4FV6&5e9nuG1)t<=g5m!-&~=KxvYw*;@J7V4_TTP#m#r5oLE;>r zc~IBK2^x1$#}hIS<@o3P?L_$3>R+2m_Lp8myL|`!_I0?lpXa@uba_uF-A=~kIRet< z#_b80>3%6*Tgvfg7Shw*qO@zwjZYM5oNu@S<+9^H^Re-1Ct&-D#Fz3Pq{?-EQ-I0%r$UcScPeIq z6V$ax#r=?&nuPK)-O$oW82cw>CS_JO#E^#e)me23;>mc#cyWaP0(6{*NL31boxHp|5WW?=JK!9{!={ujoPZf!S4fn=I_U~`7@mS#+4V} z9nSK_l{cSS@L}5?T^pa}q5gv9*$_WV^WUj>5$>Z{)G$4>2=(#X(nY9`GIbW}>MZCh z&(b(HJ^ATW96g=oA*(hoJqJkCe_sff`3ylIX}YA7hNeq;sG;fF{H^}Q(!$RIw6m_} z9uCwu;>$f87v}UoEN`dctuZbzcjv)Atlp2a_lXpPn*p)e&=)4*UV-*7RLwz(-s+Of zS?USQ@1Mw2#Gb%B`w25&8x`9TaJJuYJ@N$N*C0OUI~KnNzB2!@_m&J%Hz6MHFS%8_ zL)GnYrCd+wdDBvjBk3HRrFl4iGdR~7ocTJPpAUPFhu~4}k0D;Y68|z#F?A{4U6*EN zXBKMrip-7Los(IV3Fph=3SY#%6u8CeZ$Nnry6a2vdnx339njqLe4skCUv63TTrqL1 z+=@{P15m>QAvM)MTX<)P?V)vT@V`rm;5{goS^#SIyAgo z(k^P0l&ehR?1*vu671XTi2CMitI+h1Wtjdb@Z~RWy?RZzLt9?n3ljrA$InN#9Q^g^ zkAH!VZ`<)ewBx&wj_vDS?G9DRW1+ZS`)$Xb zJ=%GwC84-p`)vm|+IgtQLvg+K+YWBD^H5KO;#&J{>iO(f`)nw#_x>V>-)Q&mJ{OAXJx}7;n@78^{rON_Yu_yG%;7iMeeEv<;@a_) z^H$Ck+w~&9lkgVkN~|yG_9;$kw+ib@ z^dEiiAlGC5?}%K1^$z`czkvPDbxaLXl^FNA9=igXvON&S_c7ObjL-dD|N8I>tS9|? zl(!N8BiFfk?hAZm_EY)Zv9v8mv)Tf?uq>H8l72O24DxVXnX7j0K)!gN!oiB8GS>}z zmU5o$f3j+?K!1NczrLYRn&aGymHB!Z`o9$7|8ju8<;$`2sZ#&Y^CdZ7jrDyQ=Z7`$ zWqCQj@`jg{QCK$I;#I4$Mcfy12v4AKNT&VV$svd{!^6rZzG>wbsqe2%iXD`by$0?%XE*e%dno-VcyUB z=!f{7)O)$|^)c!9Lm2D127ioK3IAE@{IVAGh3P15Pw3-MhCk(M?=zYR`UA*gk@_I> zTa%9aRZ~H;y=PSq-QKvaq@>p1mrBY;J!`Y^&PBVZz&QYsm$hGC7bxd-TF#SzKP2`6 z^ex}$eW7XUw@5ALPsnGJdcTe9hgSmMuN%XSwtgraH`@9k9Croe;(Wi@nP)^h|G6ww z4q>=Qpsrh=e;1B>WE*k4>oaE_cYCDu!tzi#c-LnRuAHNp5&IGgmf_&N4(D>%uQ(pD zzm7*As8+9r;(FI-4(^?i_^K6Tdg_iO&MZug~=OW%IG)An|Q}9KXr0-7mRY+dGKevpb&q{VMtQpdGm` z*TMSjC++O^_($NmMg0@}@cnoM-j5uQKLkxZ_9t*F)F+t_O?jyQCjAlUPDs__D{l{k za~{EToJV{Lw=aHq9*K5~Lwc-iSOR(_=IuS;Rw4Zom%O+x!TrvekCCpw`Z!bVk=Mss zKF)hpV;Qr|h%Y*x=HJ_9h^|Ec@t8*LqVtrY@?7XHF{87S z|3}=Lz(-jm@8kVWAVDPDWQH>VLaxbG=d^{;stnux9eA7 z5mE3~yx8^F^}aBo5Q7(>tEhknA};R#d8)hTeP=S0#NV!;|H~)SR9AI%byaos@%H<^ zSzi`&{4Ywxo#IbB6Z4{O&|oXIv-n%-2j3w-xxKs}K!0O7 z_JdtW+u%33AMBETK>yT!zpMCr(6v|JC;VRP=lc}D*ZQgM_dAOzf1Z(xe4G72Ikcbu zzssThT+8A4`A*y~*$F@2Wc-}^%H-$YCHZ+x{^9p?JD<1Xz$01B6YC^DofofvgrEKh zoBt?&`lInv&gXSMNsiY)iXBt^^v5JWWj!^G8|mY(_dZMd$q%R}7r*VGpEgL(gnZ5L zSJ?bVnWy{ZwC&>iL934oJWob#*!DC7%+`790p8D`-gJBI`c21!>T$z+KEUpaa6iYs zSJVGqOUlLdB>D3DCRR?ud|un?i7>x+Qq%h3C+K6P`l*=TIH5mt-7ybv>iXel_I(T=OxG8J>m!DsHf2R34Z>K_&MWs z544Z;HI)-#@MHC4&qZi>FV<;$abIGu*ncnl)SutfNuS?5Lw>F=pZe@z>RpqS?1#Ug zoo&=FDe>x;M7-iUu08N}eBLX1`6VSz?G@O@DbAzlf&Bgk`P2T~&!C>{yh!s&)vxAL zj8fb%Y>m{vFJWQ&BhMe$xI;fBoVtI({M7fS`rltl{nBqKAN`oHecu7+VT9?o#IwIc zB)MqkeWEx0{B<+5_vDrzU?1eygx=VGS6wRmo?AeDraHN071B}A22<{Xeu9+yiQI?a zxWM=B?khe&;3~a7qdtE_J?%l)0QIxpe~bS2iN4EF@2|zb;XdcT1=iAezwB?zK*RMp zgpqSd%T#4{zG_qL+`|6i{c=ur8N@Ean-%<5NICAc;6b~xK_Rs(o9BUa{zf@h!~Gw7 ze$3j%(%F2=lk?Cl$V2_|J+Yz=<4WZ6_xWD`uix1dnIZ@*yM{~EX(5qlfrx1q~&#QW*3ANu|GKgoX^41^S?Kr@s8!0Ute{FmAXnlcn}(5KI>;X9yamcwDbG zp?tSX+mGuww(nK=a~^7?Khw{+uD1F00TYA!q=KiHv!%q}D}JZrpY8|U;0Jo&i1ann zF{*j>`0MALjN0n=>Z2Dj9_jjQKKWJmQ}!>8-sG?C!}hR!j9;F;*j_JxJpNC5>p%9s zzqS7a;QjQ3b${#O24Jtw;NL(UjNfkPKb~Bix3Qf(&&=}FFjG>p|5C1csxx9#57+bO z9?0zh578IPugHqj!9OD?7fJZ1mXH1ECG-~UcO0+TU-Q6P<74o@Gn|<5%P3N7mpl~( zKkYB6_96yPqYIwxVa?huQTT_oS1;F}Pk!m`rRPIdUfxHIA`l++?0nj;>uK3CwJGl?_h`)P^+mdmF%N2m@|+PezG%A5Np!Yf>hb>=Gyd~_`7w~5 zFvounW?Vc5?dAQ`V~t-voOQfg0Ep|Ge099bo_?14BB>sKKep$XC{LC;THTey{-DpB zXgN5Za2{gErDLR@S$+8TN3zvm_gMV-$M37QKFhI2(z9GDJ+kDo{Ys}R(f?OQPm+GjU!M2p zy1|PRK{XWfJb%18LcU|d`6AaFw%$)5AJ<{*C)CpzrPpWvdPl2KGH#!O_U5TmTPLBqyy;rvN?$@J4}C&!6bHGYfrumfO;q zg*ZFQ_2${^uZVZ}qy0t$$M`o3^4NHkubMbh(Y}1_(@jAd#BUYo`r~h^tNG1_-1IBE zZaV|M#dX>g%&_!&be!npvus`86!6bc2 z1^G7Pm;H$6$Iit6`Ml>hd9yGM%`(rc0g0;w((=;!?t}XX{64F05BrmCkKMN_!Ra_& z1*)%_AoiZ(#=yS;^fAkwg7HV|h59`{QNEAF{Y#NI0Dt|!zY;0=b6)VzEZX95ZCCD>IvKcI|x2&XZ|h%b)r_N936;a!`MZa1yE|#xOrU z*Ex#PSdx1iVSE<4|{^H1`3)h7;;YH_U-v_OBeS4frD zsJFPH04d9} zpU2gZ0Q2?p({tUIA!UW(Pevtbuk@R^I!sO>+wz2Ym#s`)9k>9i2AjVbW!a8YIZD({ z;bZebBG+29p7yo#B#uMpB8Tlc2ko)rbOq=xL5b_t_jxme*eg&MV*a2IPiF@8eTS{i zHGz30#W%fnVe!YJ&U9EHGLz9i5k8<#1{T%N(uhRU8&vmemn62S$ z;O~HsqsZq<{8nQ9!E$VGzFOd3jC?yjRRDhp@|Qy1i-0Lo#Clh;S{k5!Lw!0ML(Gf`?~5D$&IVtfeQfN202)c?^o4+Gb%7Icz!Uhrpx<}T{Q<(TxlVvLEY?O2R@7NefU zrX7n>PfIDM%65yAZb}Rv&yR}x%Yk|KO_-jo&t_5E2H|g@%0e>Cv*O_))2RwHP zDF0=q9haMSEDZi2?YJWNv!quB+0#nZRYATdy+pBfOe>g}c3qElU2ppREaw^+O4oZm z=50%z%VEzh;uqJW-nV?^Za}#kWIoIJ-Qq;K8zAoukoSg^@;9LTKYZnHMEM&N<*!YY zzY*ncbVoTirj)-C<)8PJzX|1UN|e7oQT`^BzsVix+>}!OCX|1|SAHqVFU4LJ{dtyi z1Im}FqXL(^54O~CYpFXM_$$!CqLhEa(tLc`3 zZkap6StfLhZ^?AaAeY|f)ATok{$}vKIUzs#tIVIdZ@)Tl3;f^~cWK~e!~Yi0-va)( z82DDex1#*5?j7hAx4O51{x;Cxf_j$u+J7tBe=FudL6~~{KGsXPT1p4can1_?AH+e&Bm8IK{r6?DBtRYe0PEVF4*rbvEN-T{;&E1 zqCE~5dVBwXpF?68J{=eK2^J%XCff8{F5p%l#&*;cId{xET3d7y8HP%P~%q z59Q0B8<7h*4+aGB(5{pog$gX9|iCR(n(iH>t1 z5&ZI-=nlL$;d0pzoR0a*r_Fa@KEm-hnf`Rp-(%>@)egK@bVu}Jq~u_~BU!5E2b)RU zzcg4V>D9rbBwZ9dPSPd8p^{z~93^RKqcbGEF}Og|rNJvDy*YTjq_+ldk@WW9os!-e zyhqZ%1XoJ>f58VNy*K!|6cf|H!od|e0;;#Js6~G)nmb2XF2@o(cpr>x6!{L|J&$t_``Csw|zeu z{orx<#cWmRJchIc9?6U4t3d0~bM(=E^Mue>fr9hu1%XGA7NI=xC0IG|vh}mPj@!v{ z+WB)n@SF*8{;c z)%%g&hqRxw26|c}dbQ=aZdrl;&3642bb0u#0!=F2X3Ta|*FBv7R;tB`dF?a771*Cz z5_lTx0j_7rkNtfmQu1GelzjDj_J#zQul-{U<^^lq)qpAg14vikceShKh@o}!BzKMY z5&4ksgGi^~mrwhzMXRmcoCz*e_d~yHpx-r^_pHHqnCmPJtU;V${#xX(#e8Zl@;Q%P zYw{mL{zDk&A2RU6fFH&<`!MKMWBzYbi+=?8M=)+a0zBu-gzp32`(Q`yhlDG$?{l?$ zyV1{f%l*{?$f4IOTb-L=DQmBCkgU_-+p|dQY?WW7oGpyb0yxz~3_UQ_!ir13l(CyAc;1^(g3Uem2hA&tA8r>v zQIcg95YEP6Aah_oJV85jVc&4iyzVV&qp8$Ox zeya>U{mG7R?61VLUpMQcZ)oS5W z0R4FW{g~0i9*jSGq7zV#AFOd5exlg3^Ssfo&w+4QJ9C)uAq@uh##II~UV7(~)vM@rwJZJ5Rj|F0Z&}pdP|;HQ!;5j(aaa zFJ8HEC`Y}Jj_amZ-MIljz8CNuw~6=Xk4WV2jh=z}_C{YuJr4&dKkfJuQa}Bu1pSLi ze8wd5U&a3ZtGK`N3ikJ3k$(CtwA9A=M~(EkDfAU63qx?I}n*~L%C@)twj)RfMD6?S>m?GDY8FEun2^UvWBwcG2iob3^{wlQr z{`x-r^?jeezA66ta+1GpfWN*Ey}S>9eP8tQzFUEIRDjF-;;)41uguZ@`WE!*l^ch0 z^jFf+Un|64J$x_VsW;;N(vgB;FFZx@Q{`wpIbszk7AN;ifcKQ4qSDdF3%-Vt$X@f*M&X;UK5L}?JlE0mxen>`F`uFy^Hs5vCn>%!gp~gN0osfI%GF41 zau)=)!k@Q_UG4o2t{=CchU9**N&3Mj$X}&CK|j#t?D+m-aFg_de1_ z54O6r<5qVY`oT7E*(&{jF#7>>bU)Y(J9*{Cp&a`G>DUjpNk8!Ly?|#wAl_eYL?VAX z>e=RQcdMiyP=5Ao~BTE2fz;ycOL?n<wAB_e!On?@~C~@hVyy7Z_p^PALo+hsgKb5?T9m!XTQW>`l;r(A8~v?<_r5Jj_*&J zFI1ZO!p9PK(O=DcVGGV4>iGE~^y!yt0_0|VqF)z-FXMhDe3|-t@I&b_Ai~v1eU13L z6ZYMi6n{An`3{mN$KS6d{(g`ARqA`hUtP|Nzh6uIeKjfmevkOO6a8-|;_puBw>#Zk z(914x*(vdtFyk+Cbo~7W?eofwLpipObd0~dB>sB%UcfW{67MfJB9Xrv_3UzYyWb|^ z$0YE(5Lb60uI@yC(Rz3mt#9LeS0jB>A3fvh4#@AXKb3#3kDmN1@K+Ok1!SQ-Enp`< zU3c(dTup7Sr{CR(t8A}lpVaa?uI@DT?}B}HA+GKczAQOg?RI}ad&<=hSbyzCT-}Yh zx(oR~xZfn&xf|tnBd+ci{j3<{@9A9^D>Y{{)n$f3W^yaMAux|EP{HQ!fQsUYuY2|3~=$@8~zb z%lyg4XZruopi1`tAI1OoAb*wG1OM0MJpcbu{QtEi|K9^Sen)@*J$gD)+U@t~e-I!3 z6IICLx{)ybpE=t9e?t4ba^p~r?IRui|3A^W0X%OCDSnr@@;l1meWch2@UBMcmy~wt z{f^}J{DS-8{!(n$KD0|dg%zg#tUeYZe~P2R<-nbel33L7H;d=p3yA$uvACbrppdKe22>&kgsD01?{bN5;+Uq|^{pH3a z$~oZyD2Mk$g)1SY_RIgEfBz>*zEt|AK6>_V)>9LI?1UxpuYg1~(N{ng%F_Z0^wV_* zAFE$~zNhyBG@ z#r~aWX8`2_;W5C|E-V2(#(D#;M84HyQ|NJ?`W2-Du)p44*YY?q@*m|mF_w2?ff%0d zi~Z(0G59~}W121tbXl>UPL|MR#r*4MC#L)Vels5aF7YrQW%JPPS?Z*~UN=A=l#Bae zr+3u*VOhw{Q(0knW(<$I#{B-w{V?LWA65@3{Rl_=upg#kdcUhrfce^wRcto$>jSp! zW4UYta|e`g4&b$_ez*d(a+J{WF9B-GS|D}YI8ljAkE0DVyI8# zvJ@7d8c#XDU!Rq(-dv|~QoZ=zwbaXB?_&9N8Ok?FDNnda@z=Xj_vgv)&J6sTrtl+N zr1-Bdgij>YsM(2mZ8QE0px?sP)wexwK{c62InY`CWwaE#Mb(P#*m_cA>6M`g;q= zzf!dbcR?Qc^Lx|t03(6_Hy8h>zqdqAL;PC5Vw|z(Q}p{Hy#8XtZ+}~~uTr&5 zn$N`5N!j$nFe{L`G^ano&f5rHt|GH|n#3A~BkF2&*o+Uj0 zrxXH9dD~yKylo+`KOVLVuLs|DVUK@%)jHe}d|4kWvas-%dRiMjCD+4v)&}@ul&79q zu1k`9>C5T&UF!PipNx~_qvL4Xa7)Nhg+I#U$2SC(&F8)#+qc2UZTlzT_9$17<<~RX z3wl>2>)Ed-mg{Zmv-v!i+{S5(`G~fIt&jXW)PcV}CqO>A8ThoX6Cdsh>2uO8Gw{i; z6CVk$3BA=-Pf~deKeS&**zYgc|Cr%)!o1*@2Au#iesx7!iQfZJUgJB5Y3Ear7gC+W zYqGk98{+@n!Ww==;BMijPPcG>lV6Nf`vJ}XfuDU&*z#fdPWVfuqrED#y27qqQ3vfm zkrM*xH3;G4+>;~9X$8mXw{I23JoS#%e9?Pc+`J6+s-r4y70Q?=>sw;d_!&aUq z$hYzw41SgBtzZFC#;MEk+>d=u(4ODt^P7Bgfgk3RgMOG#Fp~eJrrrTgSNLUDnWs?y z2Z>&&CAOzR;C%e@B$%t-kaqd)q30*A(6{y9YWHgpCeWgO}Q zy)r&fZ(batRta|#{n_)qq(3YTeH`*Pghebp>5c%M)?+uszHZ@M_(7S<3v>(jaZ>AJ zc^cG~chw+iC;7BYQy<<}lO!MKRhWrl-q#U)wEuYH#li5WgTw4G?UA-i;s+S{sr;y4 z`lt05R}D1&Wc8%|Dz1*G@0Z)7KPChHks0WZ%0S;g1O3q%=m#XxuT{ej$c2CPkk)hy z{|&lf|78E-$rRd$x~Knl0UiCHux&>O|Bu6V1Mt@c_G7;xOuGz7(xaYtuq@X(){b$t zsyX#bej7l~dcFAG6@0peTccmn9}30)tX}CaAE*G9)BWGRFFXhBWxnQP z&&P1RLfQB}8q(YLbpYhguWP&hh&)vyr^AHNGZqf)%nXkkWy{~-akuz52lpkcU%1B9!x36?{YL( z-Ql}MqSp;sJ;J%F2jCtUmx{tY!bQ+mQP}!Zk@#VE6BpK-epV!~Zg)|*Iq1nRSNJCL z;RtW(Xs;f^PnVCY_4PE|BZ*%sovWTV_0~rBmn1r49%FaCp5Q!C`+;6>9U}6mn2vj& zbNd1P<{%j@HMAj_^+xT^w1Cb>nHj{)Ktxo ze*^HZW4~bt@|{>e%=$9IgM7qj ze7|rI_*~FaF8VXi{rT~E$nTJZ2jnXsS4)89bCnLh{&%>roT`2Mh1cueDZDjbesF2V90&JD*dFSCCi0n{?HnuVY$p)Q#y%kSBjGoLWfho@ zT319lzY4_kcNu!Y&Q`BS!fu6XIOcab>PXNtT^@a>v3?JPM|X6X^EI}U?|;+x^`<#T zhL4u=&2ZmSKYzSDnoe)DoYh-g-Q9%xOQmZKc^9GXxN^+*Ahe!ADwlu#$`!xePqXVD z+CSf{lTYy3-`g)aLG;e~jxDeE%Px|RXZhIgAyBWcz}1h?^ojjT>Os#dt1#o_evrPB zzl-4QZ&*C}{U7*2hqAB2{S)?A&Rg3!$B8}f$$)QZ@XIscdmH?U40zYzS7yLBHTb_~ zz!w|*eHri-XanQjrNFaY)T@Q(iMBtL_T8USo^)(K<+JM}>dDgCePgR9E9V2?69nIU z{INa`3|y}s1U^hF8)Gd1J5l3S|M*UIHvP_Tf6mWX-#@|6`V-IT3^Mt5`|>GgF8DWu z^*bZq+7I8;4ZMew{N!^@;NB-chqr+LxTh!EbtJ(gYkX_zHdzP zXFsDJ-vHmW$m4z->*ai(^3X2iF|pAgq=S(TMtUsLW2@d)YN*Z-8S_nir+-v3fwk8j{l;+yp+@xAB2)Ncj+lzy!J?4X37RsSAhI{&T6 z=)alxR{x&K|Aue%@0t8DzD-Sk)_UlY(8J}~b@8(gGU_1{--Uk?-z)wkz7y*dcmB8@ zCjCi#tA7_Voj+ujw`Gz)c>SXK_ifVg-I&oIGVvW>Cq4Xez7zf=zMs{}&;Gc)pZ`gG zzxb2*=GQ5%|8YGO{7HN}{+E1v*D~+9v`+J$4>R_U+W5bfU6*;)|2zMqbN*cZrT?XV zij(3}VPc$muuk)Uk231LO$NRX)QRt=jC}Xj^Uss@JXW8l(ev(>n0MDc@7$b`zndht zH%}gdo$}iGR{mkWtLmhW%zXPM$?J_P=hP`qf1FX?OnlG%llbCHR~_{G$K^fmPvSf0 zPvSfGf6CYM-%sl_US-yAza&5N_*VZOTe|s6RYpI{#JBqQ*!~#bk|cS(_1L01>32&; zc{A}{{3r2U@?Y}ppFs~#*D3CNl2H!>GVuL-o%nwGhxxwzC-HspPvZOBpTu|lf64dA zB)fUz{S$TK`&mZ29g)P>ix1VmTbZsOfBuL0R{w70|Aue%?^f2GFVBdajQz*d5QuKp_b4VZ8JfcdPK=W&^D=WRBh_gR^5=ZQ9-_fhrz+M#lvbW_%_a4$6s ztsjQ_q(j5Q&@O%db(rAa%L>GL;rO?E;Sk@G!Yg!TTBg>OjZ#+4&A{)bad_|GmZh?om73S8>%havzWM*59cQ z?xXs@_o>^V_nE!(3o3@YQ?WdA9{CiJ+um2T=aEklxv94kKuf;Y;C>9{;km?*k=pN^ z@jMaXJbYJ*cz*Yu@VEHRJzZ&#}S0N>QKT>NS%KL+9&v~YOKO1<9Xhr#fIM~11~cCc;Aft+8O$% zO?}T8`oA0a1p~iq;C~qSMFYQN;O7kdyn%UMoAUq7z)u+XNdvDj@LB^uV&F#&{E&ek zM#?xd9R9NczeT?L85MwaTnW_&KIXw$fF04Z6LUoG3TZj$3!UMJ7r#inVBg_IebetK zFa41EPW?_9{f_#g9}-W$BTPSJdHNm8(+`RFf7gsK{f_kXL&Ees!t_Iyr{A$W{g5#I zjxha@F#V1&{g5#IjxhbOEmHa&{fmA`n0`l?en@|#-w~!C5~kk~rXP|Y{f_+ThlJ^O zgz1NrmwrciZJeOr5vCs!ProBfKV*6O9m~@X3DfTg(+^2czau^Uka+qX@$^H&^gF`z zL&Ees!t_JJ^gF`zL&Ees!t_JJ^gF`zL&Ees!t_JJ^gF`zL&Ees!t_JJ^gF`zL;Bwc z@xKu%{x>2qt^p7Kvv8>Xh_wDU0{%B5;eTzxpZ4MXxzxBBG;#CPv~lxPiJRJctN*rA z6T)Aa=Vdtl4p3L%E}Xt!$@{1Is-rUzeC>U`d^N2xVdnF`JMUNP`~MTey#L<;axQ|5 zd{4ZJ@jHLK3&-!UP6$tJq~#}HkM3Wn-8*|hev`nTb|0-KhxxqkG{8*bQg4+y3#qFr zWW3>dt0vA&%qM2beM5Ucmg8G6Yo?5YXM^4w2WJ8ze75L?_bpwN?+-pR!vj z-`S{Y#c`GA!tthLX&?0#S8vqAb8^sou0uVPs6&xkUEWHRIRyD^UsJS?Fzs7it{v6n zN-zJn)#xa{{SHQTzT2zOr|0`+H9GQTzZwgfnU=#=+4%q2uulV|XNIT3FVg92GIZ$a ziw+W3Z>H#rcb$~Vfp6^y)=lr}_)!1!)6MY40QgzIOZA(~dQbKn#y9RuRo7#(-;j>` zHYIq{j+ZVsEv)n7X#XVKFQ1uFKmDOUdOG_H{fzNy2HLR-zekyVL=DwNzihWXFNpWe zqu!}_esKok)(pfgzO9)0f2H1J@V6KH_bkBL?`KQ@E(gs1Jr^nQ^N=R@@A;5-ev+Qq zzw@%@OaEQ~dg@L0$N7K=FG%$7rp|on-}A$okM7@ZN?_u74VKu9U)#S4d;Qz?kNJuI zO?g>gGM()o9v$1`_3v`izvrgu-&!u)zj^MK{zW}_{X1FSO4M%qw~O`>w*5O0h3t*oHNauvlgOxBm}-?L5sPRGZ_)%1MmpH}~y;f=}tySg3H>pj_T{QWywkI8=H^>3cev;Di= z^zXTnj#kveEcCbeVe4N^&%x;-rsv@VogF{=L!b0;_8-3Yp6~m-5bax~E<}IV`INsl zK02;ydfo5!xXy8WEO-xrzp{UogD-0+Q9nulw|p4~yiq>2f9rWcvYxle_}&Wr)1K2} zymFP!r#xNE{GR=W^REdwTV>z#;-@>fI$aYxpV8&2>U-rrl6nV#e?K!1Vg{e%p@<~@w&(X)^hpB!AnrSQe7g?E07OiFTQ?b#{Wx%AN_v|_Tx(w zy_NR%`diI>zRSQzvPJ&ndcR6bFO^EYABrDvK6feP%~qG=eFm3HfAc@DB;PfY^Qo80 z`Bsi!j6nW#ti~cBhI;akO^!HUXA2xt~`8MpN?Z)S1U#kcI zO4!5tA4ui0<0}27rRf)bKePSDo@1n+u^v}>{@L5-zqC8xw0=%H>&KLfbe6xrUz0z_ zbG)!g{B2=ce_JU2p6xH5bV&O_t<;E*F9zig*{j@jR@C}$@w38$^y==SHOX4ug5F_4@EZ#$HR2 z-wFA8{$=CCQi17b_FO4zWd9&P>Vf+e1K?lu6T&0aQfOc)&U7xt{-=t8Z{i%RE!PmG zZMZG*K04P?KmPVmuAMkH%d{)nV=van{R%w$ z92{y4@^# z*p^`%#of@4v8L-hzIhVz(H3(jL0MYWYcr?{8wAN`CYfk00%@ z4E0mKMc{EXA>auwPJx&BV8)Zfz?b6<>XrCU|BQnM8UTEY_$TSwrJ-{{2eJem|Idr< zx)itp__Ol^-T$i8ZK%h72ZwYMK+^#Ju41>LAKezdRrJ_SeUW{;=r28=T<1>V6JT}H zUkK-`JHvNKTBYtnS^$6D3Z-5MJ1X^MkoLq&@Wif7oqMJK-0Raf`|)2=_!7=ne+iSH z^@oPwUZw8EdP&9n<+<qGygzivo_&mV2Dde)JyR~_kkr=g?YbDh))w$=S$cQ#YjpNSrx zo1n*=ZY1t%|Gzgp0DStv&-{LJAn1wz7;znQoTPar<2U`E^&JBF8UVUIe6Nhh%YA-B zIkjIb7dZ>y<&4Mk;NuED&hnUG*U8=!VUxI88GvPEpM>XX?NzK==FpS*9jcZXGK*Ea z1l$fV_eEMErQCT2Zg1dxr1mOdJjJz8tq4y?|0{?5J(1o4{#+s8{WKCs{CK=~t492Y zTJR%l!H=p1kN0lXSU=upRU;nn6^q?fL;Lu?qPpF0eq+0M(YQayf1<(6JHQDFP zTJUk;Q`>Lfe^jjg8vZ+0zE>i}moZ|!;SVnwn0`U{WdqX>2>;W-v^(Kf4NN-|<`)3S zk9H;erh#ck!fzXxb|d_*floK^1_RS>#8()Yb|TF0nvg&3Lii&C(+-3;8<=`0%x-3u>XOKuOZ+?=k6m)A4I+ z_?=sg-w0rAJN)0vq9i4FgEKG9_W{WHKzO9{KnD5;Kws*ke-QK!!rl*Npnnkb6Mgh+ zK))v3(^->&ehuhP^U<#b{aU_#(LW6Ohw8Icw0{*(tn%pEbTYnS^C|4XX!t|cLc9Oj8mn`32l-z z5MrDuRZD{WUQemY3VnstUTf8}cn{!utkc)aKDdoPd{5wW=;yYbgr5g|1NK3m39m=o zVA=xlyj@Orql){2tTa0qOJAFNz*HUn2jP zkUs^#oL}KRfFZmGFl3*gWLFqnxb25q=wn zG(WBb7plJ@{a@gx`Rz z8-<#N-o*R6-Uz>G_!R&@TeZ)59p!IOJ)PH)A6G9p{{+nb-!A73yr=W^@CfHkq%Whr zZ{ah;QRhkUe3GdFS!2!`up&UFEse%V=mj(DyPtC zm2)3b*U@-tg5RBJ71G}mZV5Zs@AQb(U2AyWQU)E=ynF5A>! zncXVK|2^JN=w0+T{XJe=FV|C>P|x-11N?45KN?~5_mJ~mc#E`?_^W^~GVRdov(uc` z@Q>@&#v03AuRg2=|51(j`%ymESFd00N|aooD#IT_PWlJ;4X#(4Yvfms)@}y<9MJa$ z-wTnl-DT?0r1qABZ=q8Ozts23_?}$agMP9BDd*2D$$Dv5d>_QblLJHVhc}?yKJn)= z)fRp>#$maSLEj9&3j$hR#wm;U`&WLB{;qQs=wDV-6LF4yTLc*7@cZiRX@fXHemaiY_GC+Y^mnjyefs{^ zYSBj~{+`}69sRxy{Ey$0^7}ny;nh=p0=YDQ`j@pc`zJBfA5*`c@^U^A|NIpBtJJ6H zC!Tz)uU+U9sjscCpV@J<2=r31`Qg0bGvw%b!{Ubb8l$eFHOI=St4vvs?)JoH1# zcL2s8wvY1h{x#cY^=spweXpLCSL>;|eAZw6^B6tP+}QjB887sA&rvi z73BI#<}c;yVAOjs_#GS?0sj7a+vR+PdYRu&)(7oktk(~>N4*Cp>dnt-k9xg%2={?F zKjxPkOVk?@r&H%0{LXz>=)qMXnILh#@D19{`2pi!nM$4?_+jotavbjli*lU!7s}<~ zw@U3s`*zEF#Nvogh2USNW}_Yl^(b{^o*KP1%OvH2ViDRJ#`bWD+BwaCqWvjg(2 zz;F8;-R=U&&GBnTc(;sSyTk1R)eJ41B2I;tPSEs$@oj;ck@ zkJ1jTK9OInew6t|T(y>b`(AY$XYDv?%TwEN=p0Wn6!ZppA9Y; zchOEwXZQQq-UC2qzYqI3+QD{Py6XHizBYdJtDK1Ss{Ic=Kzj*#cc^OYz zAzh(bMGlN;J@RDmJiye0U!FYVkbhpJm+@Pzk0A2bs-VcvdJamdCj>nC@IDgT)f(^= z6^bAnAb+VtnEH04zWLCW)pw&viE0BX(mf+|JXb@z+V!R_PkqwPC90*N*L;~zyO&^Q ztND2O^aDG8=m@Fk5B9u7K43jAj0(7+P=xcsV#Gmvf4fv28se9qOV#nMzLRuFtDTab z&}z4&C${=g(%vC{$-$m$rT!ZD?1Onogcc}K?}19G(?!ZQkp}9Q@K52k5$dEZ?2@g1 zf|u8ec=)~HpOf%E17F{V|24cP3BL#U?1=xp&D691z0LGg+?jS^{)Ku~K7X?F{OWWs)ob$y_~5i$HkobT=so(dfe%XetVG2zZlQjp&mcnJ_YWO0_Uf|1u1aH z6u46g+&Kk4NMQZ^KjrBna3_&Z%X@HSx#}8ek9lpeYA@$a^D)1$@w88JB=@yBwzFpf7X^ zVK@DK6H^WFdVHl`dV+2WelGxWp(=`;?evuKl<|V=lg>FkQ68s{aQVl_Lr_lB_llIO zUZ|%R^!2852)vp5(4BL7q1+WxPSYI79YT zH|Qy~m7^H+#js0p2Kr*q+xwhsrwe*FG7_n6SF$`V=x6x&he02XjB>&m=)<5d_0dN_ zABl`{A{po-pr7cYkAglL>Fz``&__XU?{iZA80ce>(~(;FwY_4X8|mZQ2XuWReN*WAf^MLX zt{>?7MW#6YQt0}DuEa-I0=kmORHr0`t^{;_e02Rm*FRF^^iQGd4?26FllnUXbVo$a zM4GI>BS6PpD(hDRKsO*V-5HQVHvn{nKDr}8cVr~);Lpq>wLOjm9cP=C-$2j}jLdKb zrqB(H=zek(@JB^vI!77U#eESsHp6kTPVb!K#==4YsxwlB#KXj+0AGN$k(j!7EB^?lYK++>a4@){Q^n|2Gg`Sr5=#ajz zc}$4w{Zch3^bbh~hhCHP*w9;&9v9*au~ZESalfflH8uA)j}KJ|d_sulD@xUgp-&|} zDWrF#M0~`TA%UY2S9E+nM)bpRne*{M5~l`5&H`MnhGAc081|ub|HS(NLL-o0sZI$E zN6PiWV9>8ngChs!9E*9*u@T;fTL>8Mdxn0GMZ7u|>$J|;-#sqUMI9IE3_6WJ4*25` zr;ZbRPiF}5Lx4Zd;D-P|1aWDI;Cng81Ajd5Lk#|S;EzWfI$rQ2oD+aQ0r=w${siDp zK-@V&@FSfQfj<%W6Ab=D;7>%HIZ^PVoRfe*3HTEY{v_Z}LR>jX@MD~lfj=4elMMc3 z;7>*zIa%=CouR-F1^#4%9}4_X#Eqd?-*(P9-5D0?s)hkS)Zm8!KMe6=nBd1b!+{?T z{4j$b4*YP$iQ$4D@0KgAgd{7B$WHTaRhk3<|8Dfp?*DBwo{Khoew0Y3`;f0W>hoYBCK z27Z*mj|P4;`u%9ZpXrPNehl!V4So#pW6+Ps2tMwN1%52>V+?*Q@M94V#tMGAGYI!J z2gN$)Fn=)oYB2hvz7GdI!B2;W=&zO8!{ol@P;^y$4q+|wb5Xt-{C7cMF!t{T#RkU) zVLmd*+_&r-8Xh_Z{CHP}>(^n}4byneQ@EeU{=)u2zKz%qLSA|9E1V+r$ut4;jwk*4wnOg&jtYzlohI|Gk!kNUu#|T(PK-m2juU4j#fkCApQ6S`c+vxQ zg8s*%eL*QqxH5Yz>~R|MPZN8L5&dvBM*W_FeTYH0|1cJMPPPZ{2Q#iy6Kp4@N77D~ zFIHnh)I+&C2=U~goJN3YhbvJ}Dj(9(E{99Kp5AvDy;I{QimP;QACv#*g>_!`1hkL( zorpB9P7N`&`&pWb`kj=}FYDv{aT4fC@D(Or)}9NIdp6oz4qNs_%6Lc*EJE8!=g0S| z1wWz|{K#7HqiVsAsRiG?7X0bJGu~xt-?&=v<7>fBs0BZ%7W|Z2@KbBS7uAA4vle{3 z7ChrzP5PTr3w|c>ss3gCuvkrwJOq!w5@{jmdcz-izKSsYk}&5bgz1Nb8DR<2?+8C` zVEP&1Ck;%$BFytyq^BPde#XG`8^SzSK|KA0@OlH&F9_>%uahzEX;`0oos4l#!}{Fo zWQ=PX*5_U)V;s})tA-!#NPha<>tu{m8rJ7tCu3aFus-)X8RL+K-!gKEmh_ z^X>hZhU#$ClFWBP8omqF(}=opj03#`bTi$h4`R8JOcdp4l*W{NYza0KuZt}}b{&~nh4}N~0$v@BJ&q4ki z`1>4_KgZf|Ip zMtMH3 zd5K9cN9y1IWWFE1GzGp)VEtakY{ah)I6*dD-RpF~oQ?NC$iEDa&0ie3B*M6PrN9xu zS4MchiS?DKsKAV`R|Cd3>vEWK-hGweyX9Pko=^NW33$4|ixTh*hx``{d^_564dUup zhx}O&*A1M%azFDd)hMtS@=%Ao*guvC-T8rQO?m@Tf4iCQhp$V4uTOzf%ioxSze!;I z9!0j3^_Qt`IZI4CmnLA{u4Mw>4*8Z!yU0IXyOu>LY5FU9U9%#>dLIxztIYklqMQdJ ze@&FJ&NZzcpuQd56<=z5duGy z|DlBZ4=2h0h{*p)q=(2m9r8_w{D(-0f$%{G{`EWJZYlc;sZ)$*JWu z{xOV0tp9P;|2XP@T;tCnI0OPeY$iL!VDaE=Kz%hX_9f_$ladujs+Ho8voM z#Cc|_oa1GDA8+&=Pm+`4JL&!Bc+Lq;Nu2LV9akEv-Un2v@vz(Yr1zLmj%TD@&!Alz z&z`&xxjmin7}q8vcS4N!*C)hgnDYtaai3>=>{*m!`RAnkbCG8wx;*bU&6C{mat@vC zh^ygv3Z3!cIq2az=s};8Ek`|g;sdaL4=hOJTBx2+TffaONBxD6kNt)6%~KOl%lH`2 zI}pB5;1?qE)C-W#lLOyN&svYW!S?dU#i^keBX-=h_}Qv5`xS7w7hal9f81Aj3HSog z>HfFPnF>E-d}X;S@mrZ)UGHV;+|VnLmqDSgZsm~ye0W>I&ZIvsPqz%BY3F^(qul9>|$R8hL zJs(KDs{reBf*Sz0QX2qiIXNyc9x$Ku?;~a0vhjc?ZaBU%pLVS<<0G{~|KO<{@>?zP@&CLS2R4B(^-CS3`q$l?0h4Yn;%O_j8SSk?9IcZ3%xo|5l%-#g>*h8#d;2M&xPDPB}6$M1^+6@H|;Vr&wgW11BEB%<-Oi^Z3tu0kJO5$MRb9OVn0PZ9UEeeAv(alEXba36^Fu^0X6 zGqiyH;d98<3ct2JB%|G!&-Q$Qlynni9Gw{Bxl!7U`Pz@Pyp1K_?vo!Q`{Z$TF`~HU zvlaB#Zgw9%t}aaAw*im$BBbd*+hE7@;fLpAzG(ZAzCXeKLpkkpR(x*Zs^*``{e;Ve zGb+c$dD7)*81+$(l>O>Fq!BACpX+E?j-z3I zwz>Yl(L+jAW&PhI&2>03m#UCM*pAbc;L-`@Dd$4WE~($`ke~1s2L2MTt1d!ql;_gW zmH1y9yeVd$@f*fp3lmSfP#zs04-Z_0NKN^_0w1>bUr6JsUx4r`K(r+NR?jbporrl! z3Gfp!&$v{yRt~yC=U?zEeSRda`bzn@x-*CJTK!a_EaL>rF`szKpAN6vb&0ggK8N9# z`|3~|k^5_ur`+ENzkUJ2s{kd-O{|vtYms|_k^39S{Y{eGEbp)9n$XAfDc=s{vz~8} zQa^-O0kZXA+Ys|FVs$+`P!H|(ozO1`F)ata(D@ei>G>%2L_YrcU;Ft9})k5Ow8kN06q6#uY*SH z{MD}OHmk8&WaQr;9g7V1ck*NVb|R&Iend*XeMF8S0p{yUP5pZS?*Y8W@R=&} z_o?Wolxt69D&{kKKV>@j-V~aO`^c2PdU?%%D%O!x5&x&+KFVTHbAM=1;K7zlWqnGH z<&d|~*$uh)mJ8bB6-gN%X;;5LE()y)F==l^4~ewF=|ec*hR z+K2hSuAgyhA>f{n$LfW8of?~l`T`uQDFo3i}mdUS;cKx={Tld{WC> z8a$1luE%#T>~#^~{q?3|okVNWj$9M4zf_s;dxrv3W4DL6ZuvLlUWwl-&{1!!xCn8Y zy!bw$>$7OdsWFSsN4~Bv*O`NI)c1wJvmUOa`9JoX{oq?&j{T;ep&a;}rL-JvP|uer znXhh<@gX0jiO&aru1_g9?|{!#dr;dgcz&fgK>n2P1|y%fJN0h)QLi0g55n8Qzf5gF zd7eM#XqimcDJ`8oH=o*$GSv#)?tp(j<4{rDpUa8r_qaNE(`sDZChuoojQj@z_2j+z zze7&!a>VLI8w&g%1J{opD6oRPh|i8TlK1r26Fx%?pB{K$-0zXaIL}q=I8oakz8{PA z6{z1uuaF~3y%ng2QLQ(;jR5dWbqM5L9<_EwmRx+_=kHnjasHQj#0(wjXL!OO)t_9I zFB1r!_svB+;YCrN%eCuN!u(FLALjRk{V=}^?1$^6!1Yt$Y=QNDGuKysKl=pr(Z4S; zsrBIg0yl2+CFz0eE{(xms9bd^c(H|c6gOCcYhh%SZPI;}8p69YFjX)}{H zH)#u#wlrxgljcckpBJ_*q`uz80yl{E+4y4h)igz4go_k^y^H?X0y&*jvnch(@%E|% zo1_1oD)ahIz$WYS38y9K{o_U}z!#`i(I$utcwPq({bU{Jrt0VGJ7=oQ)7qgNR?zsUi_mj>;p^j0~k*~KtV*cEK%`Znig-!v!XTiGxtUo{cFzD^P(aQf<^)ULr zu7`e9BwW3ISEL?CDeo!*y$9*`9RzvVzC)zFRjMaa_SaqlF9>uo>A@!LYSL~dEi`F& zlNKT6zG4rg_o=4}`Z{j3Sh;wHMeFNX~W%GSc^4_m{R{PRJ6hwbv>VhexBsI zu;*a`@*&@1q*L(w5%A^EQlWDQ?6L`vhAXoViLOPymA5bQo2f3*1>itAdIPS29>5Co znx_i7Lm$_xr$R33?Fu^9lZwarV$|cOJ2)d<&m_988R>c@(RIs6HwJWZ)u{pPYvsJy z=rx_3Ba-+QX5@=={l0d0&qy~aiLOZKR{8vh^EKRWD8T)Og4+DcuCLgS{~JH1eKGor zJ-O4+5WR!;Zl=1!&f#c({67pyX>ayJ#^vtO8MuGufWqrfCF(|CxsKBQ(g?k6eL*<7 zKBas|_#5T5@2T_C|1E`H$CnxAe%_PLx`JYfFY5|e{^Dx&{XL~T+mq_|bI=diUiPOj z)E#>Hs zUOApFr(T;T_MeMk5$+GZWcVCo>aT!qZT&VrOhH~BgQxr!PkEc9X?MQ*M}Z#CFwc>C zXM{N4oB=x*!t!hv<6sFQ53kgAXXg7#9ry@g17Vw;1sd}|Qzpw4}g0BRAvtTz;JC0fXUkJP7E(rWipWnv&qpJDO z+s1$Fyo}?ZH@_%0^NV*1v>&|H-12y-7RAAYa> zsye^!h9BccUFt6~^c;WfI=d9R>fJ>j8=Ds)Em5=a%WAUzh^4~Jm*gvkk9zK4yk`X@BIS3-x&oR$J?0D_X`kS1&C`u&W~u( zd4lD7wFG#stDi1o^_Syy21-|GF5KBnHokj_zk zq8%_#U8N2KcU_Kpp9fg4;|~Kj9k(k?`wj<&axhKi-zSRavLM%CkW26HbAOfkV0N>Ib>5RQ;m19QBe~E*YK%Ij6;XVZLwWyb<+t#?STU2WTJXX&a!& z@!T5p-52`i+Zn6RgE`N80yA6xI_F5y zJ5Dbny+9p_@r?E#l(7F1;4=@f-~Q~s1CcWa`K0H#!1|eg6!Mz^+aDb0ceJm4er=LE zB6A-i_=J;xe6*I9Ew@AqH3PR4U=sOLoJV~^BmrowjZ>oiUL<;@pTIffn&{x(%KPrX(V;?=+QB|P*{S?vnDbeA^pE*;TrMMq{uTe zVSk?2s9>(xab$|Wo|^DidR&o|W<4WO&q&nsi|H5oeV?|*E7hpP_^Zq5ep7*bUC*eb zdWxV6TbAjSYIKJ3qfPnIY5g>nPlXyI`(+D}YXA8ZR^q;3a(&dxX`+|YqD8O+$3v}` z(@go(lFBy%eyp*lZXZiiFQ-8-r)AU&>lr8Yj7!wRd3ObJIqzPG)GsINIo;I5IF?Gs ze#Cxyt4eMc&VxdZagc+jZmW+I73vIA-x*S0CO$07i~A={I?{h|t_kw5#V_Wci1$;Y zY(MwCngSnJ2Q?s`^NR^c88?`kxPkqusnLmmsfS5OSKxPIRP)IPpLvoyRo1UlfhV8I zNar9Q{UecY-(OC7rT|}oU#-6>Y!CKjpbzlviqhnhibs2)pQ+e?>)4=K$H_i=%y%=; zL(f9r9Q2$Ypu3oMaek-kyO{GkluvH=#3NsJlmG63doppYI z_mRFd=~k0|hSbvWKGkRV4s{XU)noIRGJk7^{4X=)f1On(_s7VO?*S@}F2~xj48J;` z{Fr|xat`q2lOOZrKKdfy{qn@sP-g~mth`#jl~UiAS)9+mhx>6WVaIEnLd;q1Ji_vz z9=^_+mEcK!=K^B>XIX`kZq4c?>6cl0&dai&0RJxTziB$HPpe0(SL&H`$7WXv{c%Wn zpYBrMec!f#-^G2!-ssmH?>UaNM87J+b04h7;@bnCoi$Cq<1z>Gbpp(tkJf5VlzNTB z4{51RfSI4#PRl1#J@TCz$k7CRIWF0FXv?ww98>??r26MZX+N+2xk>e>mS;WNvgX3B zcje55U3ovq&o2`n>Vg;To7vB*`z!AQAB+3Msqvrr$EC@)dPt?W`IDfBL6Ae+^)tC& zPX3o6pXVs-y6R)_|19hC1m50{8~{3w<92;bx~*B;($X~rKR?}LQUL)^ske90stKWYo%BPoie*#~# zyvnhD;HRrDZ&q5m>hfkg)aP;82RQcJ9-nh)CF7x<&)V|}ydTTwfVs|lPtqn1zXM>; z?MY+tlTN-S#;$f9a6bB-UAJ%@Kp1fXzuu+e%LR!%%K2{Ayae1)<#oIekl&v<-|VP@ zl5h7FJF1X@i6y?Zfw|kxIED8{XJ{{Hh-@!Uu9f0^HFv&jd-*-8EW{c1`>P=bQ^qS7 zeS&;DA(t@e>ZPIMO{n=OmyW)E2KtLL&}V0$zbpfNP6qlbGSD|jL(lpBHEHMz&?;)W zKwWIkgIp%_fC6^w(Z%53RxOTJWG%tH zyCqRt%>VwwCBXaNe|W9PbGU3!bOJr~|A~~pHcCDp7(T7)#Aiq~J|ARxeAuu#ZTnbGx5q2D@xPRJqmh?Hny_AO4r} zerV(+pPJ-tlA>Qr|3~CSljXwqOQSc4pWOie;JS7)q80t_hUmr=_(LD;mA^51la#*+ ze!3KXx>VK`_I_tvotS+i@a!*3kyhfj6AHIgn!Y_?Cu^Db(apfapAOJ*qy?98fNvH* zqMvE}Qi0=Y8TRcxyq{kniJwQ$J7Sg}=|6zHtiN6wdKdit^_Qs~PDiX9{N=LhQ11WZ z?LOdrF2lcp-`{g=jx!v4kF3a+kUg?PW+5UO6+*U?%!D+IGDC^X>_|2l(Mbu>FtU@% z$ap^Y{k!g5=lWewkN@*}UeDdDbDi(+ynoky-Q)Y)=SXITq;8tRK28qs2pEr)k*5Y8 z$@;(N%Ip6BH4in}JlHYXmd{KnKNTa+Zl+=#r(qqZC0R%O{j3z#;d$E= znE8l#Fk7cw-Zv?4==$Bv{o}^LbeAX8ul@P^=yw|Bn@;)OFYojH@&7mo6`J@8N32zulIkGub`6e zj@uvKVt?dBO=%;iyYtqrV?G>*&RbiZJ$|2V|EJ=1mX2jyp==j>*N zyB)L7bJEcBoSCk^(DSS^czzY~GhKc1`IUV<)g0GNf&cCMbfM3i&ieQBU9K~H33vAM zkF&#^_YV^9p>dafmVMvFuJ!$PSD0*M{(Zs^S_dCtZUjZqIw6mrvvHKizQ+<7 z8CuoLqMmmskMEoJ;lH0o#^&*@C;IA+zI=Usu?c0(7e!wmDm9-MX2k>4vr(yM0P5+1 zdg@Vu`(R`}XGC9#No{eFj17p?-kqUQDJf^=7=!)74y9?B^1NQXup4)3_ni~ zi#$z~Jc+_QrI>GoX``4!!gNy1L16~Z46PSG2fr4kJLTcy-7idEGJNdYg-KBA*(S_L z#cUO3tYWqZGeI$53NxJyuX(dD^OQWBgjuMVjlv9gGyMMab74MH@~ji)3#H~Y!W6`l z4SV0s*L1ZoyOh3G3G=;TJ`?7wVwMZ@w^H*mVeTq<_@v?b#Y_}6?;*q2Yl1Kb$?$Q#Da`j|__)Rk z^Rv>|8^WAX%s62#E5?X+LorQ6p5${w=NGTJf-o^;{%f9dDdtg;rzVZmOfegQ2&MnMVrLSDV>>lV12-8C`>4oX5m~_GnS4>)A-k1~qSVE5LZOX&vS(=#- zU_O2T^Z5gqeGg!cJ%G7DCPEH|9Y@Ry&Ch?0J&w$O(+hS^8w6YGW>o}=9x%_&!IGP9>A=4 zfO@_l6UjO_FUG!$OfqKVx8IWauW_At0CRy1UklmS4Km5(57=?a1)+WTU-e{v08^68 zf9=(p50IzH1DJMX{%c&_6?0Ck*B~-{4$lfRmJDC_Gr~+I!_S@5!ptSZ_v$HORx9=V zD$Ewe{36UgGQ8%Wg*m3=`AL}bWcavF3UiALUyBpMM1B;$$9@zh9T~nB$A!tFn4`iJ zAj50^L6}mCVW))qwvuAL6?qzv;nz(RrlpeS8(}&rhUc{3_au`-{(v11e}Fu1l1a|4 zcSzJTOUZLkm_=k*8uPU1&%XRmt$Nvy|@JhDu-3v?ar9 z-YWWfUa4n`Fs~{`_BEUg-y2_wJmbmm`PnSYbj5rj%*Tq^B+N20{M^|n%sMiBem)mw zHyJ+O4Z<8%>RB($X)=6%)(LZ!41aBq_iMkuO(v!M0Xt5)Fmzt8OiY5-qph7 zBExH5B}^eD4=creTT;pMnaERx4BzuBg=zQzeYIE23X!LmVwMXtf(+jq%Y>P%n5DwZ zQTkdU%v{BMD$K`W(gCyD186OdZNhu*ShB* z!)u-?`YNjQHA9%k6!U>FHOTP$%IU&1Aj4~(CQJ)5e7sYIX|I?m!gN*4d&2Zq%)7!2 zQp`KTj8x3q!c0`mWMQT&hR=ije%=F^r4L}%Jb?L9F>i^Q_bO(BFh7vt`%sSSv|`>A zdG31&KI4V1n{3)5CHqlD>BhTpcx zIUGXfziz`vKY*F0)Fb=)m<*riDfsN%s=W6<%eNLres*rS7}uAShmUKRFuRq$h6?kw zVulEFgbZKz!NUBaHuNVk>NGJDokcFeBJvClZVWI z-NzLr!)un~szgR!&W{_B;WhK0+wa>yKwmE@d3uR)4N=TX!i*uq_v(wnOjb-!VPc*L ztrwre9>UB~@^lyG6Eb|gx(Tz644=angxO7oKey^C%n>rY=I4d^O)*`Bxj}}{VP|22 zCE<@-o)acUF`b0TshEz!lu*pG!cashBpx%uq~gVHPT;l`v}+(^8lnifJLtAu@dbJSEIY#WWY@l46<(^N(Vh3X^(i z_-*f#!o-r{w}(xH$*q{i!W1XN_fI2Xsw?$06sD8pk?iHfN%%r9j4ddd5*zaGG(S{B-4|CJ}l z1DMi^sU~W!N`|jRRbd*C;pbo#VOl8WabY?u^;8z7mtr0jX0Xy%Ibp_-;o~YR%w#fr zjmii!L&;NGnE8q+CCqX%d`(LVvz`o}=MutfRq{L{%mKv|7v=}0uVTWSQq04`Tv7Te zBFsNz_*xVe#w-ti3{Xgzg_5U$FfoeBFH8=_H_Dm_4+ zCmtYA3&q5Vv3FGZiWR1-k|#!(-elyw@#EK&JpAYO`^k!l7Jbc8OnPCKD<(>qFUj!z zoKBd-WcVISE6jN^d@N~%`I}5ChEfX?xiWl@r4lAeF%iOKCd2nwAWS~R7-32%=H8v8 zpLKkk48M)KD@<)A&mCb}D(1E@T@~|>F#XB!^|~d@>q?%R!n~`P8^X*`%ynT_lHq%d zZ2|Y~4#iv%d5$W5T^8o7VlD~ur(!M&b4RI1)*O5m+N*p&Ul4hs$o$vXvnl4h$WxRI z-_PfSDX--DO_-Ww_+C9LOj9!a^_Ek@v{U-}RhXV+_&)qan4wCZ1;R`s!^b{fm|0}_ z8qE`CiDEt!W`k1CTw!)9^~@3GkdkM%FejBfGljXPm>I$(Ulo3v`GGK5$ndq`b7j9T zOoq?%`yx*z#Y`8b2^pS$nlR6i;rno^FoP5`MVQG-U+)Psmkd7#-xX#h89w%RgxRL# zd0Uw8lsuD#xvZGCgh{qKw5EIxCkc~*3?J7-VG1gS=d|CKQ_KXBrvVv0KW_@tT*)(D znC@iwK72!%p=9{p7$?kFGJGs!g?X0@ulY4$=8)lY$aC877n9*N_ZNBAD0%t`vr#d9 zh1pJq*Zhhw`xMhhm~Ry`9q(F|F=*U!>nWG zf?`&~Y=H4|_BR=O98jW7Fq>fhz5iSjUeB*EJ75A_&$cv*xd^k9nT%vY*9d*R4zml! zk1H2UNgVKT*?-V(4~*Y;1SR8dA|F37Q(E- zpll^R_xCWVnE6aGKfDGpu zTrkyGU)jh+u(9WbsRNUS*0cbbP|bGLj42NDBLeVC(HAilBYdPADEJqXA(>*4BYk=(B!X! z`4GmRgR@{>!q50^%XXNLm|3WpgD{JjS)-WaFiT-Vvu?~*nEmL;9{bCFfmz1#9D+%} z1Abo5Wth*HIRUd;m|HMwnYjd$6(+rciY&hOmf_VO(4aS~Fe%$!h)JC4Y$m1_70`s!pxE7$j2(u5yzc2j+ zZmg_{z|VZmZ^Ic;jPff(C1S4 zWoO0j%#K7JIrjO;a}0g?u}_APpKrM&^2|{3e2hHDS)LV?hu4FLBuRcJ^b5)p!O$Ay z`H|(Z>t)xJ&*4>(XTMU<@4_4(SQ<^yT;1c^Er(TaQ0az4h@X89!h4@;%7& zE6WqC51+$ZFuySqO~&;_$>MVRUP7?|8GdQJFclP&73LE9@?)*0)KdoLDl<CKiV}`=`+k`KbJl$YM!r0ulB{JhL>z~KquO{9%r(iz!1F%;@8<@wK zQOM)h^d=cz^I({hropGD0( zVJ4!UI5J(y*fE4w)R?F98Z!sRulrCkHg9OPLVrtdF*CCiGZ1;!FtbrHV_~+y;BLgV zGZn1IIh5==^;lrAd;^AF22h)krb*?z_S6^z{*5$?#CH7&3y@g4!F?@dP<263^oQfF;lLlk= zk6Rug6M+K!W5_`;G0fCg%wU*IFv+O!PGsy{_&FN^lLNi<89qPuF>ijB zr-qVexyaK-$zvb$7DS#1O5Tg*@#|wB^A=)eq+&L~6o&C@{DES2!0@(AsmDI%Ez0uj zRPyYHDGrm2l6|M-IR#S+#@|MrC1bCHdpI|=nEbpN{JmNwPpmLeUxc4ud0;A|FMnT| zos8|o&*7smIoNR#n7T1Z`+p3kCh|nk#Wl$AJe5SAmP(!~FuZkFOjThn3*fq56HW@oVk?s;>8p70NCU$eEFK!yc)Q9np zC5kfR*Q+B8uemB2>c)l6FpZHXk}iBo$KG0b>Y&ppMofU)O>uP5Wy(EJ3*VE?zR74_whi;@ZbH1xGC%tV%_ zs*>j!k*B$mrvr>V5B+1du4E$6jejiq0?ZVc6jZ=)#dL$2!OV2Ubcf+>H5qhT(0d zVz!7pOBHhfW(%ulBN<-LL6{vdet!0n;q!A?^!20C*AZc^z}yz&Iu65IitXX%1k6rW zb2c)zo=Cd#Pol5VN}gX~_OLwll{}|Ko(@W$-(dD3kDs5uERSEq^Dz6Fc~dbLMPCcZ z@cA%>jX8ik$?3v1WRl_7@1N8#{5;(ali$BUL)VLf`38CX`yi(k^C`>;W^R&6#`?-p z#F+Cie(dRYg!rw|z`#f7{u7g(NZN}l{8PfI0FL70myPfsOJVUcHqlILL< z`}oF>Ynqa$xX80i$x{;MGV=I+xs!~|>)%tTDDs?8@;nanJFDk!rJkxHPuxyp8i{qU z4#V3+im3^66@8^7_^4tIz+8v%`=<_>WVnvshjB$Q?uYJ=y`_>TH%xMvyUjFP7UOlsuu>-7N{z7K1PJS&wvbzsu4JbRQp&0x|pb4)Q$iN3BXeYJu~hdh37 zq}&x+FJ5yGnDnf#tcrP2^i>ija|XW3ct83GdnW7pZX0g9Ob zlY!-#q?pMtd`;&o^}Guck34>UHYs@)!eoL;87jwoqvXl?F#3Y=uRot6!}n?nYmmc^ z)wb&}8^j#8f#EG?cer^PrVtzZLuB|IwiA6-RPsCvQy6(tQHMh%1nazsH4O1P)pQlI2@cDTdhOfnC zrJmL>HIT>eL$fC|EcE-3J*;AZOZ_dCt&=#7a_yz86@hdN`}wbP?&nG zuhxp055wDYiuqKSmlU%TrXlNVAk4aqp)vTeCW<^G$?*PWk-DD)Qu0%sQC$Z0r@u@Ub5k zd73MEP72cpW+%qZ+i953Szi;#@V>6W*w?@O`SuAJzMuaReeF>Cx&iYA^7wf^50g6! zuLidVC6lgcn*HIX2h29)Nl#aOOfkDfp5}@<3UiQ+>qRnrT*qM!!T9rQEEzsOH$-3a zl)jRc!siWGo}DoBF?OCO8w_v9$?(f^z#K*%dp+B(DyAgNcWhiK4utyR<0=iq&-WZ; zLRmv!%L-EtCT&(OjHy7z-@n&aOhcHXte$pccs-3_>}#Wbo_mww^YgT*XOz-c2bdpO zo@p@kQ8Ul;GR#R<&k{1cp5CIbtz`J<`@;N$Jbpj_!1DNUybg1Q^>q$r80z7Dje<$i zz783F*=U%vY+Tu4mWXjpgW+phh78X$6XqPN=SecWp4l+xVWQ}YFOacg!bgPMrAuM1 z!=xuORO#y&O!9*F%_K5*E&OL-F2nGe7s6!CMoB5$gyC(EV(!9ZKwrrTK8+kU4`25N zrSW_V#$IOIIm*Mw-VDap<4x*=;q?rJ$;$HNgV~3^c%C65&!c2q$Mj`1Om^h)d!;cM zUh^av-kw+Tyd})*Fv+v?YvK1+VRE7`f1XYu!~3dOCh1x%Rq|Aa$-~C}6&XJECt>oz z_`90JN}g{;UuR)j+lgoGI2nI`dRH;o%OH`JQpCt$Nn`;EjF$yWcaua z!PI7^rD76c>cH6R+4hoRzJ;mF>KQ{ObdAv0h;sZ0kMUqS=1h87Buste@sG7uE2cV3 zGuGDuGJNam7UbdA!edNf9#+h0n9Z!7 zDr9&)Wh*Al+XAL_-lUh6gW>1t5XC$Rvju&nqN~nOOh1ulgJMPqb3`#?V0N?hx=V(S zYZnY}c@E<-oEX<`(N}H7?1$NlzS2;#u4L@m`1QF9^DV1q3>jWer%Flp&qAfI-Y`dy z$G^_DAI5%$o42);$M=0!F`o;Q=DYAbU&5R~Uw*IVCBthjR5?_$ucwldr!yH}PZOAV z`FX|o%mvIDHb1=-GZy9?t7n{IK7_f*=4Tced*1r@9oEBKgYl0cSHT<>^(22h>3%+_ zm^3iFT~|z6YYN?;!*t(=`r>o=J4^(OpTmd9@Z6=UB(0|cOkF$<=B+YJD&)yQ7q(E$ zLYVxlo}P;NMf5cS=2g+xS(t(>&m6_XSH)}8Fm|lAttG?Hi~2A{VEpZBA{jnE(_rkF ze4gKxz81n1XZ6G$3DwN=9HKma9~L3wilZ;z!SGfGrY80ZZ)adiu)aEx;eBncmUO*_ zDS5UCGaaTg^76I=rW7voHGfKm&*3f@J3roRR`MKzDUCe-dCDQhoPjA1GJIS& zVR-u+M!qL+s&j$+=O4mNAWQ+6G=;_WVEDKy!c-F`T9}TC$t27u#pHx}jLpv?G672R zw|@m;9*4<9W$s|cI@_kgG=qr_9hwtl_#9q=c^1as58hBrY>m*^ec$m%!^hr)jLmIZ z3B|M)<_X0N7v_1zd<4VWD8($KJbo@dP|SMK*E+@Q6y|_pz9Hl1@HfSnTKHTX=GpJ( zRL4Sd7=eNK$83{p^HCX70Ok*|$KHk+!1B~4!}E-;lQd6fCC?ZbzMm5m^R_T^6*E)x zwM{Xzg!u_(Mv(;%#YuzRmt%Axd1binf7GtUh&tv2$R6f zV8vXbdi-PlX-YjQ>LwlMYQ?02$pPl~>H)>16Xptx{agcY(J&JV-G9E5{>PBvV{az% z6oW}$lxM;7V3@a&$InG0GCWT^7~Z-nd7g!N7kTXUY)c?x$LYuV91I`(RG4a_o*^*r zA&;+TB^h4Nry|dHN}d(M1SgDnQ}ne8W-99|7a88yO_=F0v2Ij&A6dy${|UV30^@Ic zo0H*ttUC-JduN#34^vVKy&AK%#dP9`#K84 z+a1Lmr#ya53!DtkbB>H(<64UO8|El#PDLH|P)w%!N#|#xVsZ+zQ85KzerA1LAj8+9 z1dRP`oWDPf`6)CmYy3Foz}$iH&&|t_;cJnn0nVqw_aED|Qu0)TiG%TDAFbpW4#W4x zr(_Ikuaog>aaJ*lgo*w+e7z3A@K!-F--tZVDCQS3DJfZkVt#0d*F`aQe?Pd044=au zjd(S9?Lf)%A`G9O-(gOR{hR>v5c*0@>EeC~nE=QBJa`ADIIE`=8CMUXDb!aC$antfk8$V7no#}bE{;I&*f zuAj-+Qm7nr9Oela|2X`nV$wgEw4SJ6jj`|X@)irzkkwO^46kQ-Q~cfyjJ?dZx@34g z>tUL}_<4Q?Wtms>1MA8K!O-ehJPAm}P8SjmYqEb%x>d+!^MnvPtuFhgpF< ze(%0YhOhgJFe_QjQ^s>~#3J z#=;zA94HJI<1d4`O=4qlIP*SrDq z12er8^AC(2yRT;qOlQ>0TaFg|2(Np?%oZj;%#Y~H@3BwG*u4HV^G`*d)k>bN!fa8@ z5n&F%JoZ@98c)ESM?I10lz?7_*wEsace7)KzX1p-H74s39fA^(gcEe;Xa{oEVM~b-(V?Sr_ z-;>&)m}0Gxo?i!GJ`v+84O0|({60KQ#vc3o!A2s_Jta>|7~V3R#rjs_m*BIQFvZZ9 ze{54wF@r>&iZF2^&ls38$m4H+>MP~|jQw1@KbKp=R7DNYYnWaz{#?!jGgH+3 z7tA0SKVPL4a~EbXjNgYf$?$PyYQtv&v&)Ku1cN?(UyCa^s76!R0zWSHcX=LE)dkk-r3**`E-VEmp>|9Hso znwz)9-xh;OL3vi9FPn$A*I+({NlO>@r#!ZA`jb3n7R*{!&zF?Pojde_n|UxBSziap zxcPB^wFmFP!fb^}MSYz}VnT_Qzw4 z`4f5ky#GRm*V7H=I*gy6KgrPkaaZjNa}Oppbr^X*)E777U{V#mf1bvW;WciANeAQ4 zuiT2c2NTQk6jw~ncDT)ErjlYFgUQNFJ;k(u$qAE^ifl#3j?4ZTDtmEPm;x+MS0&GA zn8GlAo(C!BeVB(~{Mg4RW<5+v7{A6-$k=0l*+!UBFut!PN}ioCWnt_%Y}=uj?_uok zZuvalE9Os_N-%zYeo{=~_IUmdh(1bhG_!hkJDZVHwiFL!ua!|sA9&! z*xv#3rV^RZC_`VT!aT)HYsD;p;jNEiJ`!e;ODL_|jM8?e_)iVhu2Y&9a z^AZ`liVIW7_`NYjF*9K1qA$N*s}-{sW~5ZEAX#CS!1&vQl4Q`;zpWyS9lIabpVdNn{ss7^2@G$Il|0QTj~{y{#S9R6 z`Y2`~_lnS7E+n^~78bjXgmB_J7;1!E9l93NqvS`U_?|GgTCG z9ft4u7Gy%bgudPq=0(Naf!W3S8maVUI^nS&8`lTS1k_;!46kRI(pPery)4f*B~MD2 zeaswIOlp|@%v@AVT2aq!rJnRK2UwnTSHjmTM&!v)hR<^bVJa%7pfJr8Q%0B`iYYHl zf?^(n`5NQ$`*{i(yHBQ%(;em>^2Ab^ z?G&?}@Tf9KYs z>oE5B$)m_LB9p?I5Q^-I-&=!;Cetp7!Mis|6b;i4#?Q~oWbET1`{!~k$__J%)iXk= z=OLKMte(k9`U=%k5@r^w=ffl>R8J+CC9Iy+NMl+^btFbhSVM_#}_g|U0ww%5q;akYTqZ6eGSk*5_*EX(sg8F%i` z^W23Z&qqq06~e4m%x;*B=*!RZmoUBRCS8l)M4s=+@Nry($;4_tqvVO`hJOPB#@{!6 zj(%)kylsYg491_QHz|)@Kb$%4t(o6o>cRLmO??fIshAf7ffRqfBTbzjGaS! zzS}-acE|HLn6&l)t)!A?2uxR)(5)JN|A>q|_P4$7z;uK0bJ(1WOG;lBz;uU6LC4Q4 zCaMSKgZ0%{F@s_HFf&du=V1E6`1zSehSyx7Ctj0=@q2ZVlBXVw{d*1GY=l{WdFFWr z!n_7klE!riX1g$JUdH>UF#g;*O@`0U4VZPTuN#U<(+jVi!uZ>b41eNtGxd|!QyykB zGx=cBG~hkq?-9amh4E`zj0`_d`@w8yd8(1&V;=#-TVtiKH(_=mPbz{P$k;LXy?Pbq zYgSKhrLR9=4#D^}9k1lM1@j$@U#~ezo@Bl8UOG$$s%HfmK8})o_z~toF{On$q?ocW zm(Z6#FHVx-^IQ?;GBbZDrV7jzW>WtZT2r2My(5_@$Z%sfs`j9-hzFy};HQ82u1QcNsNN|t9Y8Qxb$m{iRCpqLz@uX9RY#b8n+k6*9r zN}lpCX_-m!H$KDAkdFfIXTn6WdSVn)A0|DFKfkh(vFDP19jQ4?2G-X@N}did8DYjy z3FTmFih9n%%wYAj$Iq?da~Rb(=@_agdE#MavOIT`JOyE9G1IP5cwe<(W;0W?akyy@ zGl!YWiWvekmzlMS83XenGgF@o@9PtodCV+o5^naw%x5NR({OVMW&w;}(*~Hs&z=h1 zKKeDi2eSyq-!~0x5i)%CAMS_yFBpFgK8-xz!twQL2D2W<-#5Jga}|cSjxZZx{5d#S zF)zbxVtFPgW)RGmFzG1yOvStf!`r8dnJvsl#e4#@kJYn7G0R1sgNj)N^EDg$F~w{V zdCn+iyD)z%W*5vs)>q{9@U=JqbBLLYiuoSq8yJ84Q$#U8!F&tj*ZncY{0Z|tjNgY( zC?>i;-uGmAS}7(!%t;u(f4V8ADa=nW{xQG+#k>H++hoP`fH}qLnMa22`LAB(S#Yl5 z{U^ESOAo-`%|ISM_9e)37>>94Fc)F`Ik;9aonWr9dUh$M7tG%3o#@pE`lG4I3JziH*oUy4}_6Y1oHTErxuKT@5qgdCbkVsLm0n*nvik(hd!X$ z0j4>Ozh7=g#;q6qgGpUro`&)3-ZQCjz4d_U0ux088AQg;J6=F@z4eCa1Cx==cry0! zy)#(2WiVr4{N9)e6LiA=*3k7f!@L3G_r`L??1XufnO%z64>OUO6N>p3<}GF}D&`o> z+sxc1L*=?~3g%rHzg|(d!pC(BhPT{g_+__+c| zJ~JH@QyAt07=M1f3{wZ|#oI?P_HX?8dWI@yF-#6z$(zYAZ;L$3V0fFMnB~GOQp^gN zxvb`OWNhEQ|7|b}VEi82t(aXfAF**AQ_NnNkD0lwn6F_LvcAkep|SINj=(Hpd14iF z9A+_$UyHnC>=^uQ-S05VVf;QUtC*WGpRs!CE9MT&YG$5QOfVFmgM;zsazDkSf!Ve$n0+iyeZ{;2vmeHcYzXTQ?dQJ9M?&u>beV=$MPxv7}rFqfH$z7rZ3ujfaY9H`IN zlb?(oqiqPcs<4H`%+>6am`!4s_!slKO!`p48uMIHv?*;qyioO?~XCq8H zW(p`~8;t#%!amQVirE2^o|$@z*##2~z`Y_|iz859~j6WWwn0+wu zEYA$Z9DvEl%u2-^gvrFrF2#HUlbM;Lia7~m_p`705*faRzrkcd9zQ?Hp#5!~pP%z0 zPZlyf&z~^ak>?@0u$W@{C*boWtgo6%UjtxjFw;sggJ5dI_}h)XWb9t?zxOu^rXh?U z!)PVX7?>u^yw8lEv-e<{!uWl-L@~2qn!)%v+`)|Re=bZ5W`0r3e3;g(uN%zxdOn6} z!%P$&So`(z=2Muq%six+WiU@OQ$aDSV4h*7v0~Q3v}2}|Vm89GXJ(*czJTcfp+ zn5&98B@909HlNLonT$S*)1iF#P=5tn^iqjPL8HVjdHDt|+E5%uA>z z2$g42Bn!XItOCPZHZuIOs-mwVim3tfGWznjW7Wy<+m>FUucwqey{RvMzw@GE5=1@2 z6*E$piHaE``kJYjNg~g3#k>u}+jhmg3)7da#SdfxT+#k-+f%&Rc|`EuFkLytx6+W7a5ufhz0N$z^a{Q?=g=lpvdW`r>btgjr@7hlu#Fe706 zW0I0eJ$YdGo_~rAb?rhim~pJ;?n<7DFcVo{Lz(gCN?p;{G^MWw!YoxxW0?2Qmw#@x zgG>af^^dh$i9A0jdD_CvK%Vq8*z=0n3-bw#&23vmiqM+cW87`JwjX9OGr1J=4Gf>> zvSdOTLSMgwS%N%%-Rtu_G>JdJtYoGI8NPpx!K{U$@=OOZ_Sj$cGmQQBNc?eU#rz7h zo|&GCIR~==#;i z^}^kzYuQHPGjA~dyqKZnc?{+jGYiSs6p^7crXI{a7{6Yt$nd_NhDlNK{&lvnJpNpH z4kk5>ujimr&k&gOFgCYsKPqMWwiGfkM(sRGjo^T^v`7~V=MW(iCj z8&^xkY!iJARLlWkW+~<@_VcT%wsTq ze!e2Z=cgJ>C6?!slBWhtWoDw%gyx6$RSV{EW=bfg4onpoKlUe?@ijJpsm}7e!i*nR zBbXY@OjS%1n3~Ldu9&7UwU{}nnC39GnTbprKK2$cbzuCs3Nhoy)e456gZ0Sp^QkRN zJ=RwjmdB61oyap*$@8o*ixl&mFkdO=d0{RnrkgP7(}kZqJ%uT)n3siVshB>(3{p%# zVP+|2fG}GXGZ>~m*23RDckhAU2gB{5T~Gh``CFLAFn*0sQ67GN<$ELPx(88#so9gS zI&OPlcq^)yf|SRf?{yXP2uxE}PZu)0o^)^Gb15)>uZ~sn6o+Za@+?%$qcE*mo*iWP zZ9)y0XJGu^J*AjhFzsOc2y zR`LuKd5$T0hQN$P9>1p7SsuSPhlxB{qQmFsHJI@%&tqilxO|@1MV_`wp3yK9S)Rd4 zp0Og&3?`Yx=Pj6bS)O}j_`1IfGYuw=w#<0!9lL+*xas3s<`B#$ zFn%s_#)RgOulvt1i(&j;ElbArMOVBCvjWENpT%_ zrmkXsf!WDSSH+xy*~QEl#hih$|5m8q&r20^9%c_SM-+1r<|}6YQOso+KF|5$!{_I! zF!dDkr!cQ5=DILb6mtt^FKSLtoAHI0@jKW!FYI%5d#7yobnc0Gjt}FXrz|C7Z~N@s zGMZ@!^9xKm%9E~FD385evw7^ryzu2zyRf~+R(YBuz(-kH)>+6^c=fGru@%MxAnL_hy`}Q?|29p&gjZK19o(#{k6DA+a(^|>%159BUpZ9J2 z-juC}uf@+WMVT4Q^7#2U3sa1lrAnSFFnmqlr#zt%guebE%tpoh1@j2&>!f0mzn!$N zTZ%~~Os34?=S4bU$|)vBn5K%!0K;2%#bgp@oMN&FvrsYFL_K>HlUtZ`ipekfN|q&j zejXAgmtqPDQ$sODs2+ct&`~j^M4s0bQ%0EiiYX_|mx_55#{OH*{=C?y?B}X5_TO^$ zHJ_wB{M@MyQ;y{cvWDMg)`EGInZK028p1rr`pQXpcwdcSDl+pJ8NTmY!tmBoF|A-K zu{^ITeYJ(*=ki-ho-V?Cq?lf!o=q@W@q2Z=^%my1VqSr%jGF!J(Vt}a{0yXe{F+8( z3-4=`=<5-fs-m9J!ZcFMSYf&-W}+~o6*EbgIWS#BJ#WEO#n}D0)+^==Om$|ClCgW& zKgO>AZqhaVOUctnn7HiW^*kv|3B@!QroLiY3e!a~ZG;)Fm}i8Uu9yzOY*b7qVSZFh z7Z~2|D5fh+O{|5#?@pB?G>7hSUFg@6Odru#CYX1`x(^b4J*=1^!qidBFk!kXCPA2y ziWvdJZxd!KW|YXYN-<-EIiQ$v!kksic&f+WK1bvXpTqZr$)=bOMPFqUGmrB4+n;)h zStU$o#q5A-!p_qKGWhE_>ld;G4`KxVX zU^>G1=Y#ji@clCrrU%;_@wr25%FV|xJz@M_Ek=f)7u#W8X7yB2%-1lznQ5Y!A7Nf$ z=2@kli!l9|>93euFt5UdW&(4enAzG z`*{@g<;V3b`jLHYgqe;!sj1AlWO$xCl*iw$-c)L?HXVPPh1DFBH#9Cjhbcb@{hLmH z|7=t0DG2ik^7wPGIOXB>l!W1}4orrD{1W`#beJWqo{nUAJyA1~uEkI#Pi7e2-hs(J zh+l%wFTgBAU;h4UsbUJktY-CWC&TM0BkDN@Q&sfUP?*0J(?po)eBpVT2~$)tErhA2 znAXCyR?O4F^ioWFVa6+_qcEQ+rn4}+6w_6hvx@01Osf3hbNHe#g%s0EnCgmoMVMz4 z(_ff=iWw-(B*hF7W|3ls3-gs?MhJ63F{6ZuDG)w~V}&WMnDN5YSIk6VUR2CvVa6-w zU6{4(Je@~|pQjgR;xm&l{=VQY&QW`w^4qA`S$HoA#$M01&6J0mYA{=1>}9qcSL&Gn zvz3`Yl|1jjY=g-eN@J=I4X@`zn4e($^FjN&%ChEDFudJBUkl)PI}LLldHn5j%7;RR z&rgFnc)x(voRbV6dqbEUNbJX6nhfu2kTCTX^BxRu&nae#FhdkGRha3DnGR!X_G`LG zF|&o)qL>9_{Me7ejKJ@)@wN$uw@ZroLYPzq!}DwwCck376sDSDw!r+3HT7ffpqNWA zS7H3)jiF@ty5E4g1`}mMZHi)w&&7K#Fn*7HLWb|Ls~@74()as1^co&_Vh(vC$*!?uywU z`m&$lmV0a)Og!@V$72I251+%kFj-*yT8vjry7~AWOqeWGc(&KW*J3A3X_!bdbCsG; zz?6mY&q3BJCVBy0qlWR%^%51+6Q(ANpPy5T84FX7nLCOp_z_RxmAK{2t3s_3-s-2h)m~%8Ka-(}tO+6w?LfX&9T^ zw(iQ=*({{yI!2mS>St&nTGZm|3luH()x$`1#qPm`O0t zvpk84c?YH|Gp7{u9?T2O+)&JPm~PCZEE3v3e7$DEbY~`$VrIkifbn}QpJEonyu?fy z#jJ$kw}%a2_F?ub8Va{b2lKiC4+karqkKKE`VWF#a5TPcivmMzTE1 z$=LPt?^Bn9nE+FcirmZc_`Uft%odn9GN;L;aCt(1gzGR&B8;!^8tcpN!zl}s&QIE+ z;q&vMFgan~9Zelmm=ALpeffP@k_=z>MKIqnQ%y0SioV*wtP*{#fZ?sDVpa+>Mlq{| znWLE1!mL%y8ezUt%vxbiC}zDdHx%=^FmVru&(9`d@+)SuFy$4qRhTCgvqPA!irFp9 zFvaYF`5t@2@9*h~NrXAV%u2=M;?E>nx%O7 z{8WSaiJ8h|_kF7vFh1}5WcZqHhe->QCX@z$r!G`8H@9Ij!uZeW?IL66 z0-w`!CFT6on7lCQDbGp8^oA(`la|a)#ms`K2$PyjY>7}kysxz|HJK?&hSwai1b+(! z#$IMyO)`AFVqhA>`1xtYjK3^5OjDS2p){rk89H>K2~0bfc)D4zLP4{tBRB%q$0bYUjS6WSZ0M^gQl z;cv^s`1vVBhOhfbm{~Bs#>!;un)~m)FK-RqL!W3K>n9mdadb7h{Z!rXxI=X(b-e7&Z^M3%k37Cp&Oc`hu2 zNd@Ek8mgGhF#LXS0?ZoJ&D%DZ)X3xK@KZ8;T>B`GKmRu>d5*yF_M>8sQXb#e9mV`2 z^2C=4ulbBH#T9c7COw;8C4nqne93$2B}Z(6CC3S|5q z+pCyXFj>);&vRNaYhiM+dLl}P=8&)HI+)zd6jsc7m^{opp_mOYd13sy+=~p~3&U3N zBmC}_Vur&MMIJx)xr+G=#_ngoe>N*-Bg`Yn<8Px*kg;R;`}Yr+$6@^Wep|^?a&@RL ze|wm{O!z*W0n-S1{905d!*74utqbMxeYaKetQKaFVxrb3ox=|llOCoe>hWu_k&La+ z{&InR4j&EkER3%w5yt*b2HzWbVLHM1IsBaruV5xjFJ_|4hVpQeYeQ)4Hn(lX6;lCb z7^|l~8D39Y%H!9)r;?`+%xlQw_s?X-Ob~fKQ_M#&qmaknJ|9-hH!zc6{JQ_Gm}H;h zcj#C>*~^8`PdS*WFn%9aSIklv-rB)rp2#o3`(rTkkjKx@%VhXI%(fAKM;a!ct~x|9 z3t`s7_&xuYV%ETX!OTZw?0)i(6OO@bgGonytyWCQP53uNVEi7dH3@&m5aZ(Oz69n3 zj33u|#cYE43C8c|z0?=a^C!%&Fn(Mo6jSvJ{GD4Ef9_;`D^w4k={I5ifbskJs*-0S z%r#~r%ZIPm6qr9@3R80X`!jazc0b|OF*l8aH{;yFi)?-llTQw>X8}xM7(ez5N?$8s z9)`(EeU*e6k6e6j)cz8`*AJ7KOf52e4mZF&4dd5h!rS=WSLEU5E0}hyp5{uPb1=`c zJkKlUGE66ChAK6`yu~DG6Up!k`@wWZ9zXWAR5LfxTk-GW!Ps%wHb3PQZW7ANxG&3V3xx8+q$}n`4naqj6c8LM-H2Zx1%uYSzm1^4>!NVY-D*} zA`<}=P?2|Fw!rxH8l%(`Y{Pr>EYB<@PkNYLF#i5xxl&ISn7uHzf7`ahqOx=V!kl3BlvnaBhvBWUlIJs+ zpOD9|X)%mjj{OkKX&Aqs>yhEP3vA~{c#j5s<#{jZWrblbvpm)Db7}g+T!-;%F_`k$ zIra1Uy6Ed2rLR#iH(8z?)ECe5F3dkLKJO<=U(;Z6u)a6JTtzP4-iNu3JaKg4amAbz zd9Etv6iih4`}L%GEWEGOJMesmnM^Qs@HtA}VqthIpqLCW(JW6XGJJkYz{D_9Q_1rv zOe{8mzOCK$iRhLW*){o{>}Fu7S@=cnM`p2z>Z4TRxs z0`f>RT$ovkc?~8X`pQ7bnoq_1==h({&*+_ae+3rtfOo7=YQWI{)wuk&GA!1%RDTQO7* z&$AMy6^ttmSIeWA4KS^lDW{liFm0G=2=fQ#i1)P{rY)=IX~i6dd4`$pia7(*p7k|Q zF&AMvz@(%J8AFE8PnO+ypPJ>Fte8SD{5D|@%+TpP3w~c#nAM6YAjE zW#jstjGbq{U#i2r2;=ugRHabO+|+~V#Y|DfG=O=9nW~C;5{A#uQ!tCf{IntC_hC21 zJTJ^J#S9mHy`z{B!YoqEC}DOhW~?wjDrUSee<)_6Fv%;2&(BdZetxnm=2w`3SPO4T zli}yrX_!IG)K<({n87gqwbKqtU-|dov-&W}X`AC>aXzcK*9L^Jzp_#Ftb=aD_}N>nlr=9W@ejWa=`F*lnlSj&N**qVPx~q z8T{op72}_qd6Vk#@I1x*4=LtQOj}_}Cep)eYgt@DjkA;b@B05L@f_?*1U-=X>T$r+oIVsE&imB#rys58_ zidibmK*gL9<}JnK@+Ug=^|4}J6y^)X%n{~W#T*vqtYV7$C#F=-EyYw7CVkcL^?F*E ze2Q5uOlifG_75Vcp4y5zC`?DiY)VB5C=60evD8V;M8&idX1-#&3A0);LxkC-m;_;t zDdv4)t|(@?Fv+Tguh$`AvMJ`KFeMa|DNWKjtf`nX!n9S)lft~Hm|?<L_NKFl`ibP?!OVNfDcLE#6Q}Enz-Z%rIfLDQ1~4Clqr{m}`nD z;9rEJ(xYmHuSHQ|iYlg)FjW-ujxa41lPJtfipk(#WTKi!E2f1oGZiyanB|H&Da=mA zToLA1#q^F(x;Jhq=7KQswZqqmz7iDEK$vNYd0m(_ zia8?84~jW2jHweoKfS~g!n}%EC`={A{3J{>#T3Yrbbh)krj0Pe6f;qnw-s|wnE8tN z$G@RRWvx}r>)Ddl{FP$95$2>~GGtGh=dNPBNS2VpMAr>WvV@!_-o;#I*#f){laSkF z{LIEYCL1n~NXTpQx|q*A>|%aX#l-@qv5OCxHZB%4JrRS1LMGodd;P*@IF2I|ikLTD zEM}&-Si*eZVrerEF(RRyS>|GS^M#9#ny=l@E0_~5Rx%gd%t9BRG%F~sbFrz};$k!Nm5a^Iqo^yndCDZZ;}+%|-WN%3TAJhTxRu%Ce%{*T zoMroKZBDz(+nCEPwl&vXd>X%0X0P|ON#o)(CXtDa*TpU-!Nupzn=W=W(_DPPEUa(q>}KY>5m z4qI0bGtiBrr&;bUf6;vI;!9?$i!Yn~F7`67F1FY2ZN78Ieax{g_PCEZ;f`N1r(Nu8 zF1pyyoOM6%XRf*9{^pj8ubQB~?RS7#zSUlTfO)pIjRQ?r7YCVC?&pI|w2MPbu0!_c zLrq3^Jj~>Dakv@(sl7bG6mrL}nME%D2vgi0zi!GSnuL+2GGau+DANEj(u_83DfUE6 zZpN7fc-)lSykYvg<2TG}E{-=7U3}Ag;Nk?+2Dg*R%|y(jjg!n07vC~#U7T#Ty7;y^ z?BYA-w2SYWYc9TLk~Of`n__mpV(Xr2GP&bvrmY+Ibd$>+zi*1T_<?ZJN3`$8@0hf{Sy_D=vO$hPgP;jH5W&#rfs~7Z;cXE`DS>y81pc%iQtD zW}}M>%^nv&F&m25{ui0=-0@=botv*uO{KMV981hecllCtW}-b_X3n|e<>qe}SD2uo zz5Ys*&c)A678h5Ud@imwbKSmLZ60>VYfKpz*P2Q$t}``VTyN6OvH3TcM(+4?^OTDl z&C@P!GS9pCh3VzuX7j3xUz!mvZZU7VxYbN^ahsXv;&!vr#T{mgi#yE$7k8OsF77tJ zxwyyt<>FT+qLCfXUK8!&K9j@6{idjk2TUcz6y|Gl?}q)%!a;M{#Y1KtVno6>rV)M~ zVG@nqe-R1anzlHOOgL=1*=UZ?<;Tpc&K)-i6s=E{@S~Z4<5USJ%p7}p!b!6VF?GUE z<^W=3!q4U>7f+c#Ts&)%HMW!oQo-fyNIb1QU~!(Y+Y%BLN2Ba%D9*=sAr>z3ZA9t z#&3?BF77ye(1W7Cyq7zU4u(+-T^>5gN9&~a?=zB`VkFQ#1(8tA?;58RxgYhnA52jHJjW(b@;8x8LGV2V&4JYr~S$8qT2<4o@O8#>Mv6nDqD{;j)`JB|wKyO?NN zxfmUEbulIw;9_hr&c(Rk0~a#{OI?f)wz!xv_}0Zt!EY|&^9e5I3Sydt_D3EU6HQ4M zql0QL#sp1Wj19WDm@DY-;&Jnui&4RN7Zc5UE=C7)T#N}maWOVn=3-p1&czJDJ{RMI z!!BkFes(caaK%OZK9Gx6t9yfKz_5M9>>yGRHd)(C>H=yHO!7J{#K=2yHP+boNlicw`0<8S4q{-+y1D{Wj$(O=j|R~#?awRF@naM# z1_g1st-q3siKd2&@j-nTO9fB4m@VkwVx^!v#n60I4*Iy`$}V4oc{~{AjvuGvD#0Xo zT!oIS1~c4oRXRRyR=DG+V3UiOKNq8eqb|k-=UglmTz4^Bki3N@VocDIe*QfDydPaY(#81T9T!Ulvt7&sGkq?e zjP&!n-yK&Aj!_IF)n!5#SFn57vqD)E@lkYxR@#U!bNSCg4?P7G$(Z!gcyNj_w9~a|-AueVJM!OgvyzOGfV7iN$f)8D+ z5iE8wbFkXQ+`$$X^91`{%p3gRVyWO)7mc~%Vk6oIHG_ZLaZNg|6{LK|)?JH^vj_3+ zI7d*>#oEE66hr%}PEf-g*CAgwXylIZemce86i2$4FPQ4$6TwF=)(cj-SU=e4VuRo- z7aIo0D2DnuZZ5gwsNjx^i6%|E(0b=^@$sOri&cV(E=C3QT*Uo=i_yVLF2)3}yBHfx zbTKZN?qY^uzKij}QWrA@8(hp3>~yh4@Pmt)gR?H?4z9bHCx~os>xc?6x|nG4xfm0a zaWOuq=3=R!p^MpqRxXwfo^uhme=Z(36I_f6rn#7C=DHXiEORj?_}s^n ze8>~*cE@>xqb`;TF1XkzxZ`5>AkA~O-yA_s7xDKiUEKfg?5Nf;#!CuR$J#kHs;9sj{N7R_NQQV zjEd-|u2Bc|>*@OSb$J7$A@ZN+%-5{0n0;+O^biD?^R1=ddqzz1G^Vba@-259)ud<8O?^sNYuCYo~3m{Z`un z3ih30Pf-1Tuj7t}kk>~9>tr;}r}oDWMiP{F*6n`O{-h1GU7%oHjSpmf!MYh0WIqn; zuJb*NPtZ?KUB8#Mw=VzLXovDXI__&cTcG;+#prNW+0W>W^8UJffUyM28ECABgNz3# zAFRuV7%vbH)$uSRg7q1$;}J$~Z0AU$ARJ{3me)reHd>dDF_t18tK)G-)4ZyDJYt7U z&`#9llZ;Q%|74w?qMfRprkxH2n_(1{+vl*EI-X^WL;Kk}o?}c!JXg1yr}OiTg~%_^ z`Gq>a$XJK`Vx3>2^Gl6gGB4ON;{eK+>--AiDB_hmUS*s{yjr(kqg|_Ar|YdZ_$0O7 z8+5$UNQQWmuD4m|w-}{lUa+l3EtGH5<=eG8v^%xCw7a2TdyLs=w^zsejKzq5)$x8K zZnEnCfDwfUjSBFP@gY2Hw1h{De)9UE!+z84em5#iQSFWzP2e9!8~CTu2OcxZPgUi| zjRx?9(Fy)#EP^MEj?+~6DPt1++gJuq8^_@p;|e@$Jb~v7ny%`fH;Tav#=G#MQ43x& z8pF#*D|p5D30^hE!)wNDc->eIZx}n^P2+cX%eVk<8+YLyBhwTsnhl_5wt>Fc6^6_~Fp1d+?>BMg48%!IHQtk8$;<;Vxp@tyFx9v@f~7Q5 zz*J@qnA%ih+z6J&tRZz+S~KDOJe}DD`Sj*Nn8ExDW;CzBOy(1q*`(R3eHJqb%xdO> z*~~I9Y`zO4=0`AUHit2@BaAn@!|Y~%n8O?eUo+>!oaP>w%RCQrn@Q#MYQbJNv%xpa z0x*yH4$Nz+abg5})2svYnc3v~ykKvc8xiL>cftbZ5Ayd5!3vty=PL`DYOD>x3Y+a< z5px18YR-gjn`>Y(b0;ir9)|CjXJ8346W(`Ank8W=vk5G1wt;2LUa+j0f1z4VIkO@x zZ`Obn%nq=k*&kLiX|bwT*~|;8nC0QS=1};axeZn|@4@#?L;hbB>;p3itY&6_)y-V6 zhFKrhG+V(B&Cc*6a~`Z^ZiltacbBQ_Dyfb8_`HzScnak?-c)@a$zX)w$7U*R!sn^{ zMmEHsn7OnG`8wuXi0k0IGFe@-Fygv8u4fiUTu;aK%`%AV>$rhg8F2$0e` zH0vR5sN>>BGsKO|ue1s4(b(*WxUsJHnb`~RXF6_T_D9@A$MQaN#J~N2pZBI9Zfefe zCiL6PT#C4vZr9x0h`70q%NzS-Yy_X1CsaOYVP1n@m_{@8IiaO_T<&j!Eeki5H)b2G z71|l>ODI@t^9;(DhqKB023w))eWmNQ(e=JIucF>cU2m1H_l>UCR@ZB1KEUx^9exA- ztqJdx$K7CS!-WyI*Y&^Ec7VjbGvATrN^Ez~$*d$}`8mgA%T@bzSgym?hil5b{681| z1a1s}CNEAnVJ|Nv4P8ZPVM? z4dsG$H&e^J$+m|Fpx+)k-_um%{0P>|RO9pr*4vErmi2<4%@MMm{N2%8rLSW>vJ%eElRAE^<0snP`n=ww9iOm%Y+u-IuKM{koC@v_XNCvD zufYkr-bC#rDA;7P8210caADLt6fOe~qrG5L%u*;n5`Gu?sk+@X^L?2o_FK4?%*)^3 z!j0hZaBI{%8SaSqR5(C9UALQIwnDoz;fobjyYu1hD8Cf$gZh`l1K^GD5O_O0S}NE~ zvp?43VR({^P4*~!`ZeX_@O0F>7hZ(?lW;}+?({VLNFE=PJqy1pe}6RDbDWnZdl61i zQN=IAT~VJ!RzoAwTT0A~q?7OCCYz=A(`@Y=NWollt*RF+Fn@)M&9iWs`9LbzN^>T* zk4N$$US%#p?C5y4xdpMW<2B|%#Bn-aYo0)yJR&|<>ys*yL@Iwbi==|-A{k)%NH&yb z(DgE-9*dk)@F>DiR03ilkQtf0u8%v z1$${evXzWJm2&ws{ZA-2s2|G9(6`8c#AYBaOT7@AvbEH4YJ4c2g|6^nt>=Idm^6rsMDDNKGiF}X9AFy}i0?PYF?xDPI>D(`cmezIS|YLj~QT(FNxJvT4d zC#0T@H-kDf4CQrc(36DYKMip`nvK|?b%^WJSi~m%insx_d#36WokIL6t(4`0HKd)e z5#4}|i9J>M&nP);LSfjH3czO65H_dw@N=pHTTnsSzhGZb71)yIAm57Cz%OYRY)!}D zS2Py3p>9~Oujw|{>l+#`&l7`9jwJklof1)>e@r$tlJNg^S|s8BYg_DZgSCT#wWpbA zH(j@zq1(;W?PlqA-|BW9bi40pIoi$E?dIrqb9K9Uy50A>T}R!n6Ai+4{y?j-{_=Hz z_3uoN5pzn}N*zy5VX0t0(k0{ty^Xw}O3432NuR6ZVpBcjZTbTFfTp8<7wUq17y1Qu zrJ33#a6cW;o{-A#;S`nq33h_^p?x=ci1Kb^eyP@{JEhiUgFUF2wgUW{>T6qQ19+N7 z!85cNo~1q7quLwr9NDeaa?VpW*prHC%fSm&Py4yHC%j10;U(G*d(j2$ZP=T_X!pZ@ zbU}Lu_9yonwVeKx8a|@D+G5&|;A8q4KB0c_Db3O@(;k4&=sJ8(UR!m3EwDbo`L)nG z_d=bw4&{(}WkHlLvKlm1d6%jo?@|Ng7h8u=|0DJt;w9EI#2)oSJ)g#CXQOAKpxYjxb*IAX}daEAXV4acgPJ(T;b|Btljg~QI$*3v%OGfR` z-)3tp%C}gH;a00G+HJFH!|hg2xWj4(cUtj=>UWn_1n!o%kEwW%)fn!z#>0J9Pq}{u z`_)>6c)yj#RP_#6IpIO8Bs^p_g@>)q@Q5`N{${O(zgvI8qt@4?+W%pVgnwFd;4$ka zJZ|O0{yt%)!+QQ@UB~vEw0=VVl+_>pZHn~_q{tv3YZKczegpTz&bge^Y?oXrFk`2hWGYWzAT>&%kkZ?JiiJn@Kab$MgAK4sl=b$p1XXQID=Mex5Jrq zPJ0W^q7;E@H;b}J1*^f;cnR|NR-P$N`5~VSKjP_Dp}>OVD=#&S|qH7ut-?}~gHYKMFp>IRcov$V^#hhUs_3nsPVx~Tq= zS+8r0YCnR>t+p_QH3+7(7HHRM|A48i2Qamjs;lZRjrEqcq_!?hYkd#XStH z6Ra_x20!C>VG~|Fg~~VO?O-!L5;o_bz|Z;Lum#VSQq}u{SA;EjbJ&U}NBNihR~(lC zbQkM0kTP~x+jHJ51233Ov~A!;bFg+iyku_I9)g$6hg#~PmfM=EaWu@}E1nN=8@?Ie zZ{|l5t}}nl6RzWa!z;^jGib{j!FD{5a@L-Yf#32OumfKTiEn@wKdHS6Id^)hcATe% zf)~`5fwSpTIET8!xilNjqrKWcU=r)0He)Z>)KS}0Du2i4TT`q0sc8n{@A=78D&LWxmU;PmK7Rs#;K^ZU{wDm9 z7fr9qf8tdT2fR=k6?fqu!>+s&?8Z;Q?)(Yt!K&rAfJxLAU}?)x%vbf&((Z<>UF#THA2;A-wf!6tGwKcZlhxSG3A{yxCf zyn>vir}C(uo<2nVDSQ*kr*bvVpJ3Ctnp;q?>HJ_9^?z*!SM%-3>-PMdl(P)<1=?qz z@6mo1S99%gmXU@bpOK~_Kbx!h^*GB!%aPAS+mN5b)jW5cWu{}uXQs=@&*f@vJI=C@ zH6X#1Qo-hNHJ=@4S?NvWvrtXQP_PXQRf*FW_oUI?lq>0r@cXM1CPxbHfR? zh!;nBgvOyfLUU2Rn5#M8IE&H_W<%c+E^bNae4YVR+pv zudNPmm~FJ3;XE1%)AME8E%2s!T6+WDGDCw^zqicvFo{)2TNB1v-@v5SAUK~E!rSIP z?J;=Ae5B<=RDTO79xkMEa1qtjHivi3AGLkqJ#)5p1C+YOZYy*U=#DIQYa|q1_6fnkTfE;d-)0s{YqgGPr@>&=!Ty%$nMUFbnUj z?F+N=soKRb8{eb-6KwX>-8OHFKyinsDF5T~Iuh_~^6h|^MT#M}7~ zh|^JN#5?#z#OdiH#5?&a#2M&o#Jl)@#2Kj%;@$i{mb-_0GB4O(o)_-pC9FfW!o~oU2@o11+yFay72BVApwo<=o&C;7va1 zJN0=YGsUC+E&dq!+dNrV)xX1!V>wx<6w2@NhNz#F8X>;N*P?tOb(OKa{?Dgr7sHhN zFigcCz(tgHqN=x;ibw@}z}1+3f<5G0WWRzv;zO|9$9z6~!neYw{5X8ZAHe54X+*Vq z!E?cvycA^OV`zvr&=h?kiCNGRJ0KSqp%6|~^<#@1&=IAfE9yZ{w1>V>bKDCS5^5fM z!IB6ySG{0yLd{1nSW=2GTch5DkKZX+9i6`{7W!2!|0(QtgIQW;lY1!IAV497S#6Xc`E|&>}dN z4#IJCAC9NglT|+xs3@FBb>SrH0w>c{_=5Imufdm;bc$*xr>Ta9^^vwCG_6UHtetQQ z-Go!gpQ_qTqug*hRf3k)Lfaj3YZ4UJdT3k6wNId9Wt^t^ajoKT2Gxf%>3cYfM#0&% z9L}Mma4tQD^C;_d)qXyefeWYwTu1}qB3c6%(=oV&p2MY-X@+XIj7q}g)C4}a`oS00 zJh*}m!j*JYD(^oPr8}$FS6boDRPED=lyEjhU=pi>wmFQm`oN^tJebTnpuG>1TbX95 zeo|Ov;T-w`&ZWLm!P1KgVPyu<2xb(WrJTK>g{UWwCwxhlp!`QLTa_DDL|Y1)RzpZu z04-~xb}i)AF(|A@@VS*{j_T*UnGar&_p7RS05yjLsi#!1OhSzVFIZ-w#*CNu*9tYh zykJ>{8cS2KY(k9zZ?LeKD(f38A{L`vRH!+G1&awaPq1L|Vi?RW)SSSAemldH^je z-8|LavI;?N)q=wM7TVTu?MmoaC!lMw`KsLjiotEi z+&T$!iwE#^(V>#+PmYSZSgltcq2@ytEU$PIzA4na#_IfYQJznzF;(Stexb%H7c9R} zV|%OngL0s}fKcOj%ik5KB;tZXjaRPjAE}MFkWgcjtNVc3ATBJ_IOOVnhhB(_2sP$7 zXM)BcE-KXc;_5z!H8Pg>HPLbH19+NJE>Zb2^d>w@Rkh9FIqCw>(^z-WF=SSiy=3H5R#G#f2IxTWxrc5hTf0wB!yh0zttJDEj62r9< zVP&yWyBT(&V^YDY2sIY3{5?jfal_^BF+zFXRGT$MNsc!q2|g~ zpXX{I{zRyGvDNjT&k@%VY7T65-RCF7b%mPmnzL*)7I8h1BDadev1gdqcLzkt%nQf6kJHw8dYx*#o%J91eZ`t zn8X^bT?ON;V=$@p6sF{v)~fx|MyPqL1^Zeoh2ID@zp-F#g_@sOuy#VtD=qH>6Gh;+ zLd{n#SO=lzq?XtFg_;Xmu$f8>7< zM`U}>a?^a|bJIHHI}0_3GH0*T-^jmCHf-CNiu`Fao=a*I^G)NGg9X5NhsDc^|t_^F7Mn3xt|KQm~(enj=!MK0?joC*Sv} z6xzK(AD~@dq2})6EDwE!d>;A{`Co*ZuaC35G!gl{v;g^jLe0^~*_(6#`8Vkl^8G~> zz6t4-{(tJq6`=9R7od5_ z4;E^kJ<3vY2=3pHMbsTh2#%U38s4!q4IYP@fY^vNbwww5^8=?`Fn;?bDGNg>V=voRNhxF)LfwQzIvhN@|3?* z2sQ7gyuK~eT$-E}rOD{OC@n(&6NQ>p| zFYk*N#brCerV2GLBxl7bKk5~yGN?CAsJS3Hdxx4L{|>c7e!9qrb~A*U-;%QuG!o?{ zXa>q>3N@#tV6(()C@)DnQC^acqI|ZfgnTJ_f_y1*H>vt_gqpuou(_f)oF~R$`K76V zEa$8=m4&HzbC{asjPx9wN)3UvASp{!nD>Vn9e!_R}*bj?bc9sxRxryb<_&3r@n9l&4(LlKiow3 z;ATp(O|{=b1>jby3FSC-+M%#7TMB<+M_?xFo;J;P)jqTJHq2r*fN6MFn3j)&+h{F3 zN`Gsw!7z{8q1s1yCK%6IpTPlf_S@7^ZE(4L#R3K9G1t}BJ*mTgx}$C<1+ls zcm~s&DG#dhog%wd-EZNrU7{%BT{tfsIiALQGUjZrXehPVnn(+&d>#+ym&Mja+RNBv z>mwcEhRBcbDB4?WV`P(Dp1kg^>u-*9ljZVxx`=uX-(p*J`5*dx{8KM?8=g;a*fGSM z9T&Z2JI+psA@DCTPCFf*6pP>~u@?R1s*Y66E)PdJojz+to(4yUVd1jQXz?MG5>IEvnbqv>-vhI+%XG!u@ay>L8T zg%c?5h-yEP-hz{;4xCIK;S?GVr_yRTjgGs@(#54KAdLa1nh07gHa&gyzGgbOl`UI|`AK+>l z4cE|GxRy@AbtL{!?bcHSZlE%7Bh`nS=m)r&#=tGK9&V*Ga2t7ls`lF{JKRAP;74%-pw26sjVz+I6sQk(6Ltdy?2Gh}QA z_ryG@!S+N}!u$ID=7IL1_L26n_KEhX_L=s%_J#JPmf7lkRQ_pAEom(+*9xtzb+oS5 z)B4&Fl)qcpm3;O5(cZ`gY|p;PPPLuv*T?~>!}dpxBOizQ4m*JNQ-d9hoJamp#J%WA>mLee^q_iK%c6N};w*HpO2~yihrDl-E&L$Nst*z#z7A&1zzo3fK z+iFg1c^%tU^Jfc|(N=SR+d(EfFWP6ei^DAT2k0lO-4Oj`v(=o_f`x50ue4whTg@G9 z2T}WL)Q{OepnkmF5B0O#YVKrt{n%FXH4FBdt>$Ew*Nts8&#}DzX{))61e44wblHN^17a_=5UnP^=vgy zBeCN4Sh*cab^Z`5Y0pAj5;13G?Bz1%tgO8Wpa09*8)Ph4c{^@|vVtAM@+#V8VI^D5 zuWGQC;pOsp$>%o1+tJ@w;luEo@ZYd~_&WS9`~-Fi+ox6iAH%6&mv9(%59fis!o^^p za3$C;Tni2iH-SUK-@xJF0FDaxhhxKI;e_yPI61r$P77~`Gs8#VobVYqKYR-=3crxb z=lHQ7l!~O5ChG+)RzExepJy6`lgn~>okO?lt^5BOvBCO4hb;{!ydU+|_4=Zo zykF8zE8BC{&(0>b*r#Fj+^k^zb-n(mXR(HQc>|Cq);Ro{tWT_IIJeYfpNBWf<7TlI zs3+J!-F_h2%ljfhG>Us z&qoTO-38rln9dJ}4!elFynbOPU8Ro4rAP@`-(Z&`m9d^zBDD}-jeLgqTBJ4Nk-DGj zk(eCs#9=q|dfe2@yQP&oR4yB`@LV`7gY z6HxDIWEy-HSpc6$R>BvNm+jR4dl}h`m__$Vi5bzuQiF}gddcf8_Se`RD|#H|JbDf~ z(W}sp-i2||r&5z8k6LF{KPjR= z;Gmrg96S%%nfjvzLjdx*(Nbyc;uoT5@E;7%jN!s!fcXOc9IInG9u zJI(>*UFSMt&q;DkwfCKzQYQ#Gl@KR!njnsIx*<;LOhBB>S&ulma}03`=P}}xPWtPr zeJZD@)C^KP4G^bsdLmBiOor*4?NU2P@0^#)&p*x^SJe5P(J2NqIhA2%XE@B_+<{pg zH5a#F*&HK`y5)e8U-p@;99YFrTv*zU5qj`5pJB>ZgE{T^h#SlH<& zb%G+!OeqCLovpCAa|Y!l9d=9gQ_9HvWLDv2xB}sS%WOrXpY7*#av# zC#6nM(RnPTppujNw(?ykztjxgcdEk=oYt_K^9!u*%z-tWozgf~(>W_Of||~K8LZ=UM|pi`GHl>%fS)>l!G_K=*vLtLSM}f6DIhh1#!dyP z8GPn6g-x75>I6-lF;WVeIV)fb=QotMa_+(}on-e^yVgz~_?1%?wsF3Y#<8!R9#SLt z+8KfTH_md{);TD3f_Ba|DFy8v=f3hgC%e=PIyvRw4^AW4+4%|n=!}OyIcubGtc&xz z)Cjsb=aKK~7!OqYZccis6Lfd-Nh#>zRDr#nrYP_01n?JUH0GZ^Kgoq2GKvjdKG&cJcb3pn0M_ek|W z!Ff|^1QVQ+QZtz7)P<9rwo)gU?DUmVFvXb)r#l-^KFc`0l3q7AMSEmz}-#{ zxW}0wjbnSA6;dPE>ug7UpK}KO>O7G;!G0&jGu8hACpSFoRFKO5b50|8)aeBOaE8M_ zoyG8&vsdZ_$DMQVgmYgi*k4YwyXyVxq%#tpa%M}7;BUu%uKGRgq>u`B#@TaU)jR9V zf#;lc@Vs*wUT_ANSLGL-lDCzYoT~7$Qy*S&zJgbsUGSRo2fXgwgf|>F}Pj4BmI9)mQBvI8z=fA3Eb6D<3&0;bZ4{ZngeToFo{B#h5Ub@Vv`CZe(4-QOjH#ybN{%h$}MVw*l>r-STNHab3;k) z0%*DC&_8#dLE$Dt-gcKEcHHcUUAF}E-0skKx4@8l4JL7)!8kXB*FuB_j zrf>t8()|eaQ@LNl)b3oFSI<{>l(#!Ao=p?x&8e();If!%2r>_Hb` zPqO5vcFuZHR;j$t&z)LQU585N7M8IUq<1U84DLrTquT^#a@$Jf{crA7?58a5s$1%K zWp$6hY;Kn_Dh|8%%PJ%8WaOi6DHwC>!+7@@+GlsO%UIo)(-HmVa66&=H8&;l*Jy;y z%jZ&P0lZGT;0-zpd((4x&P-*fdOuSh*oVr&zEl_9q&C`K@D@#kw`mo;Lx;4N;axIK z)!#kJ2=7w??Yr;+HGvPQGkiqDwe#R(+76%4DfkOLg8e8Zsr{GJy^ih7$YXG!Jf7k8D^42rwEk$=ZM21~e?VM+HsEah@b)i3R)mYP91 zH@nmc%DaVN1-Cq`=+=Oh+|Q&GRCe1*&EP$^C-PO@5s2S+XTT5KHL#j{1m)G;Td;=f zbJc%MH!7vzL-!q6+pVT#bzEF83hKK}P_LmINX?*;J6g#aqg;M2ahD+9#QhaEb70`}YWnKThsG3Jj z-dE#J!+KYX)<(OU(K_hAR&+>d)qm}1L*(m3&pc3Z)#zt3me1R|E6}b%bedc$u}0CB zGVib^(ROIxH2M>47VRx1);!u7+x;)1n#=!(tX*`FtS_JA zbvL5_&e28cc(5QkxRTnAF458G?}vor$bNzb3!uZ=N7Xo9#J-J=!}7n6PL~?2d$g#$ zo?x&px_(z}H*I%q4{c8v$9lW7WqT{=?Jk2qyZfY0(8s-qxUc&h{^F*wRlc8_Pbz}` zZY8N13~(F3fo=yl$Q>kgg2C=AIKFyQ8GhD}2^=7;AQZtz6mX zk-HlC#qMFa#Jvlbx+y%lAA@CXKDgYi1y{J8;7WHQT;*I5&{ ztB`p-g^CR?i_{EEuaJ}i@~R^*yq3`RdZ66#MoX>0^%hGh@Vp%`iFXku^SqR*pOoI~ zQVLReRbX1LIr162Zc-=6=#4|1$yJ>L;655Qe=ErA83(+QO(e z62`oBFy1=@vwL=GRWFD4I(*Hm4s&|n!d%`MnA_V3U-!<#H#|R$YL~~$2lINh;hSD( zn9rL6-|}|B{N7EeyzbzoPOI7#^zy($UR7AwYXysVePK~=w$usU_I63lpqO_C7WbaP zcf7ReRKA3l50>;Q!BSpBSla6d%XmXzS#J(3=WT=Ky|b`__Yzk0(xzAaRr2z~%HDgh ziq{mr>vfh=@SZn9>I5Hni;%D8?S|F8v#^H8GN^uPdg-O||GAeBac!?W;*Y(?i0gWt zU_EabtnV$AIza<(FXB(VGl&~{k6|M(c}8`9H}>*Kt)Q`26n^GampVZcuO;H9UKiNR z8;yK(Z<$mCpL=_ya{OoS4E(}-3R`-qGpY8iyf@&NUPaj2YbcfDcX;1PDQM#jLB6dw z54Q7mpuD|zLTUxydiSIhbnx8F%8p)6*x7qeY6gMV8gUoz7uemKg?uk>o74$Be9UvQ*nW>fV?c{$){uPPklwS{B7QE;5M0gm_1!wH@rR_!Kw`J`qr$*YZc zveyPq@dm)D-h4RC+Xtt6*Q8D`!}BAm-ApeAXL%*yZ0{2|$7>7cdVSzLZ!(47dUugu=Y?Xb zzx7@`+~Adg8@;+xdELTmi+HQo3-LB@D&n2qI=IU_3U_-Cq)xEMi;GwN?e$_(`Txr+ z27mQxO5@mmuZ`3S_IsV+0dEM(4|?+uAM&=q!`=zxk9ZHIBKXaV%dYzU-HXAa-aGIQ zueQ_){`9_r$Go56ac?rpPk5`Pa-3W5H{}2JZo<=^n?v*nLg0o&BDFx@eci}~^ zCA{MGm&)tz-a^DTykFsM?<(^5Jo`1Z{QF*5Y6cIy(uf~=P2eLhK>o2e3O?~x!KdCI zQX_cgJ%rD_OgUBj!Yd75dd(p7`$EHC2u=StNd6OO`B`(RcHA!qh2H|&{s8Fs%b@EY zhn{cbR`q>92MqaDVG_Ts)C}VMQHYcJi(xYVAWZJxf+_r@udDVc{X9~69o?@gmDkbz zW-yH(z_k7tn9g4Y)BAg22LBw)=)ZuO{IqYV_L=>>FpFOqX7!uHY<@Qw_Q$}8zXC@6 z12E=ahVj0UM;*WHenzRhZtfS9nn5oAeVE&C4qx}X!#DhKQVR0;%Mj=DcOibuzks-) z{}LAR)8|$F6!wcq<@IvE8segUGsJKEonbM5nA8r6`-`O%yyLHwT0tp)yHv2!{yF*m zKt7-2KZa%fT&q=F&MzTV*I^FIddh3?G`Vl8_zY!-U8t;7-Y?+qP}etDCe}d4#Ck+u z%HN&;iF-#IaJjy$FTO7&=Krg_-@vbd39C$-ox z>?dLqb@>!sK0W$5$`kkR99=$NmoNHH`Ep&pN|&$wPx&TYzEzj+_)qyRUA|YB@BdHv zL0x`CmmmF4`JcM{gf2f7{RZ3lH|m+}bToKndusRz_otjiJA++__L1epE=Gq)9d;!; z4qlDUhS#ENP<}nSS8B3b(UZvEj^0H6j$ZzKz5GY7te+EnmE)%Qt>y6->{Gv^R1Ov$T`gZ1#9l=E%5wQTf6T&l#D@N0 z)NkbXLH)-5_I2t!GiVg@pZRTMET4DsyThjb7}(5jyjJC#`|aW9{wmnQ-v__&Q=wi< zzYJ{U??L}x`k7JQ+CPQ(D}Om`vHM0>n1Gf%sehB4URsBJSWnM(k2O8LRh=w%Y#iG|ho$XeT^N z=d~~3IZ9tpwL4D*;05|X+Y(-+pW!8%0WZ@w?P++0Uc#%CxlqFEvlu);)!{*E0iRpl zU>6z#579EId``;0`LEZh$-dX;Wk+Z+9@{SK{r7$A|B8uuvAwcBu_Up>Fqw{1>Nrj8 z*#D3Ih^3F6L;Fl<|9>qnF;6TT>LoHzf?Uy$Y%j>4GBr-PHTd_1Se=HL$5R0N-LEWxUEH~o9v3w{m5{t>-M=Vw} z_8HE{&VG{h>i(P`vH#_LSlU3_McY-|P1{}D1Ip*f{EXG@CJPaZ&E+)40wySz}s{R z-l3=3^hH%acd016N1wp1^gTRh4uN@4SvCMD(Q_o=I^l?r2e`&DyQSYCA#_Qu+4d+2(-eA>Z z@vrn#BbM`DabmqhO*RSrn5<^(Em@D)hq0PMo%gk4YQ7ISsdKD^%$w{J{d%aQUk`Ql z>!BWA4<@T0tAKh9VpaaNJUI^l`sZwl|B=kg=jHtCIF8f&cQ&f?V7lJ~&hXp8nZ7Ai z$MrK=U-<*PP9xwAS`53=K6uVNFHPJYgEe|(KPBenJe9E*|EedS+tsg=g#DXXkJv1% zFR{6LzckU?-BfRPGrir-^>%-b?M`ej$5;1zU^^E2``{w~99--_g-iUnO=`QB`V(cW zwvQJ}*v>G#P9@zTCwR^rE=^pHd?+33C-3L{Keo5!E8Cmc&Sb6h_I#PoV7|Yw>r{1jg+eUvf;!XZQxY_?n=GFV!0o32(k3#Iz zb;Mi!Wr#x*Dz5t5<{v;m+x_NnhkqLG^sl17UHosE8p&5Iqxau&w^kjnco{JS{rr+jBi!tp*O^Xhm%g4Zc!2^HU< zJg_TOmL_gTqJsVHr<3gkJMEW(XZ)7%tltTq^WT8y{ST$;JZ*&j&Y7Ly3u`ERX)Tb- z=W6`n|2iM!{Bp1CUxQu5{&3jxSI&pT^&z$b@885$$832XnrxlkZ|n7b+o1Q`M(j6v z|A_w!*6*@EA71g-!mIu`tnWEwdTBez&4ugKc|dy%XEX{p+8? z_FngIV0&-)H?h2%{i)O&v zv>kS(^U}oS6WboEwEUm{)Bogm#nkto#5hqo4&5vNCj{H~N}O0vK3}5u$9}y(4(R=H z5c?ys9%py_XL5by^EduZZ09|H!8Wzs_xWmLzA7<`{9({4}a_Za9Y1k&){`R>@1e^&vGwddGdR5Y^7Y!#C)PA zyBd4%U+eu({@VYMzy5#ZZy@imo3R@Iqd$56y>fizb(K&(Sx+!Glw!L&PF|=j^h1SV zC{zI^3B^m*`+W;pUyT#j1-`IG!I#z&$oO7q;`$Sd!+vwv?byXv@^@l)W$du~v4r2T zlk5GPO8Zdn=SO-!Ki2#CiQdmov7a6G4E;LndF=Ts{lC!t8}X`thf(~$m+vqh@03x? z7x8L8Im~{gJaPRU=Ef(J^%7%)rN;Ut#t!r1)4o!k2IU4z3mxXiXZcroVmpI{;-mk{ z8!Vl!p9Je`u=I%K_;m3J-**x|$I1JNLvQX-$0=jzJD4eS2xbnQgIPkArRq54mi?>a zQ~|!Q8o`&=kC5@v(!}*~SknJ&XI8yF$@G3o{>uJwSjtznJFy>wrTWiyWz+qn*4q`< zahg~9BbGKk;e5z|dUAgI_=NALnd1|_pJs_q_lvP$tUWj--BSmk)Hyo#&Dt9d>R_BQGpteCdA_8n~r zZAon@D6iv(TFdn?SQ(u!t1YK3udSf1sI8=}tgWJbSNoo}s`h;-$E6B=FPBH`y?FI~ z*I?Cjd39Z0BlHmar)KB~{4lf`eiT{+YlY6k+M(|7*+#kxf;7h6sne{mw zK;7VTYn;?zpXlY*(bm=0gC_gnmHkbuT71I&S2g38%l5=-#czQ1QJ>f+@d@`y)r;RQ z^CoMk^Y!ERqF%%JXYzW5$r|bY8*4w)Hc5=*52Jlk#Qz-cW{3^eM4u;3^?B0#KlMJ> z^;*1=m-A|boZV`_H;a!)|1IJNV7$-2eAMBH6(XG<(!e(!}&@MXxWAm0~*)}g3Wu&+W*GHJ%EOmdV>p0*Li@I%W~Jr(ThJ~vPR3TyJ~R)08(JeZS#KOa zgZ-@cS0BB$4-l`Y_QwFq1_x3JIEd=N!So$`ZViU#&AC#Ojlg~&HWJ(M z&-pY~@0W3UzjS$JKNzelVuN+lcGvcJrJnpg9QqmC(JS;Z>>Vlve-5>QeL^{;>Ui$L zdcCmD!vVx9sr4JL*Kfir>*uh^_&-T(O8mdS9~f+gUhkQDz5BkhK8f2W*e{`)d)5B! z7mC3CArB4+y$uJ3X6p6ID%V4uXT{(Ess#s9dpL-O!ojozzMuoz8~=~G`;3yJ>iPwK zx=zi|;8b_@^bA>|(`h;?Dj*_ClAIM00TB>EB_kk0OB7IY1`#Aj$sj>Qau7j+M9EP^ zk|HQGcb|XnUK8%~toOtF<=!f|=4*L)9005RQ{|;dt4Fr0cCo zXE6?AleS`cO~iQQpOb6Y>rqxo* z8<(^j``<#0t0oqu>9jvdu{g*0TEzGq<0i#7Ir6PyC6E6q9{;sz$17)@Pgumayd5@R zJH*G`A|~*DGLfCcPG+aDQ(?RwJ=dDF1KVYKQdjt8(id<>(n2y`&LY0z`ZL*$+>cGU z`Y{Xn^gSHo5U)@3h$YSbQSBGAlN!M}N#)?&q|e~Iqz_27zt*DhRQttyaFiSZN6Yze zjNA>!%Ih#gT5F@c^ukP88w$M>qBIT>?{~h()A`bKNkE9(#yq1@wnn!l6{YrMbbHd%q&2!L=>;-T>`wXt%iohU8SYJ5N?ODjZvR(q ze_xLFG;uc9`t46TLG`3Km-aNCE5Ddl4ekG!Bz{uc<3Q4N%Gbmd)T8IXlIkM=VA30ZaE^S91_v>gsQ5;EXPwhx?BQ18{{qJe9 z`|NM?dEPxf-}wvYJM?~lq)$-(0rqpNc$C%~%l#)!y&sI;cb~SczxtedoHiBd$9Oz4 z(hlLgC^Ky)rAzS((i6qWq)})u!KKE7t^~N|(s3q5URUgVBgv)Or{8~Fsvf!r=hN}Km?P<7KHi6&C-elG|pW|_Mx~5aQCQ@8q=g2>ge2cii zUStcn)chFncH+`}SV`@$o|ltK!7EA6!>dVkNwps=LHmVV`?4)3Uf&{$xMJU{in?Oo ztFB>r@%%(_J!v4?yODGh{+2Wm-b`AC_6_|AwX5bI`UBeZq(&;X>t1N;)!4Ssp$~z{ z`h4irceCeVivBN5)eAIM?a=%E*m|&l{vj-=e*tB}5~wF^g9!=0!o-BX;XIkYiE3xQ zjKBr5K3pg}!pqulm?vQlv?gpOHSwhDBrKL|`~1$^;}-h|dz-z(-evEx_t`($zt{)t z-|R#75zN{S|0M0D@zz8MmzsA&6D3`-`A!}uokKq}lJ3FGq{P=$|AkQqS`0tbjF+G^ z8baM@3lof9FwqzR^B6Or)mRDh8arV=<0O2-xCN68?R9nhmBR5D@24gVBR{2UBF&W! zT`qMUkFI~X!YJ=?jjgJV<8)UA=<`~Nkn5?#s@&5q_4}?So^e%1zRieT$1UTU zL&vEm?1(jCvJRsL+D%4G?{_e+V*ku%2E z>H3^e5$XBmNTe4rUPD|!E~Hq!pL08u31{Ja`4C>#Qkts#D_R6DkPYEN*$L_iqv0aC zn5235jl1+Y79X#;R#DcqmGY%1hw-F&gVEj*;)ev2q|B zCuhU)@;jKRpMewPV>nTkXr{)orYrmRBCDvw`(a(z%apH+damjuJqL&Nrg^_z^(dzM z4RVcZWBy!h;)Iq*!Ltnz~fj0dbwCj1^ROL6VBKCr1V9KK;ph0Tmb@J(X_Y;Np@Zy6_H3*!cCX*`0hjC?KC^4~TJ z!`6lmzGIY!ZH$_*t0lshSg&!Cv;fKZz*vWVV zI~)00spWSu3d6334|X%k!|p~+*u!WBdm0_!M@Apm%NP!O8&hE)V-ft=*Z}()d*LU> zN!ZW00s9+|VARO>wp#wDMqyHlHuzlC#JesZ#qs^aD%#_7L5lZW&!F7DsC0vE{paG^BcQSDsT!Z1%lEoe<>3m3_O zWPJTK(UXtgk8&NqL-@EG%6`TUV~4XN*w5K7*pcigb~HN%W-Wi5@fG!l?$b6_!3oAL zIMFx-CmDah$p$^RPUWT;1>jU89ZoY|g42yg@Jr)eIK$`*zcR+anZ`Ug%h(9NHV%?f z^yc%IzOI|q)O=>2xF*p!X7#ThpU3p){~u94kNK3(V+Qeg%urW#Ivif!U ztfv$sT$gD%*61AL2ApeTl5~HWVL7Zm|L4gMy5G!IonlRV%lq+$9Q!fNvu*r=_5H@!2bUX5vECW74%MUc4%r1}%1Kb@ zo8c&V5ssGm-c{ws$Os%O8^Lk12OKXa!wGT|ysVvtSG0uos@_Byf{*q3WPCg{v5C)T zH*>$gb9K#@PxE|Z|Do$JM&ToByRI@S!qrAPsm_!7pxx1OJRBoe!m)BM94D{9@iGHu z$inZ%);9t(Wlbpbcc4Y@%T9utz8XsX5S$=y!HF`VL)LoG_~$sDEn+=lO>E)y`aZ|@ zpzET@w}=hwMs^ds8PffAMiZ>>7NalL*C|WTa_K%hV>;p#SsC$GV*}z;*#_|s#&Oi! zW@I3JlpIXyYM$tY@UeaXX6Scere3(C$`=VQ!ZET994kMARC$a3H2Wsh^dV5{E1<5QX0;Dh`2^hu6ZM8LkKTu! z1FiZ&m{f$RK0w9E%=1q87AoyprLPI&qJG@ud^y|*PkJ?_RsCu4w~4(?u1fo zb;Yg+ZFi~bL0RQ@xzz7p7O@NE;^`K#J4dXE-MnAyaW&7jyhO3bC~;Kn=X;H+aGx<0 z?l%^|AB}fOwcoc#e@DwNV1``Fo`#uH@1oX6=zeI?8?*hOrZ0k0KL*E0t*a_OR;I&o zvMCwwzb5wKxYWdcS6@n}>#?rSa^xT3^*NerKRH0ohJt{a`P9+$PA=-*>~ z20SRghgY;S@T&GNJS2;CSD!04jC6zTtP^m6%zy)B z$sQ_wkbD^qmTlk=IS`(cbJ(5myu1M~NLx=;Z>W5lr1`iFql&toa?kY|#hSS9YDvb| zLlb|xV!wa=GOwQ#yT2EUZI;S6c(rP}*SrojwZiG2fR z%I;9;qo74!#O{Kceg#TBp|@&hrhE#{k}txqWivQic7=1~NH|w6BI$le;{mqcUq;d| z>iBtJq>*&J%^ka5XmRJfp8GeC-$V8h`w#ms`w!8NU)VfKND?DNVVPeVtp=aSK(-x*hh`S80m&%Wpy}Cwu9s4K$s!FX1Bmh z`70FqV>m$;{aCd#QNBphdtGf6X}^p2hmH*HrxpE_;t99`wiXddl${e>sIsg zY9iSkyT8!sj$JRz?~YwBEadJ?{g$GzJ9fSBNq6jeVKKM5UMNLz_e|;!-4|(lpVn6w zrQI#5Kh|hI+xzI(6E^R0wcV0z4rtg0V0>)0!_aP<2~FE==&-FL)pe_ZSU(yEb_=9& zfHV$plq}j;jRU=35{{A0;aK?*949Bj@p2Wsto;NZ>$hNrp7#?~e}eRp@$u1w3+o+^ zX?}N%rzSk^?B|V|aPoeU!uej_FMT=6(fyFf&uTB=j$Qu`x?|V5^5@Dg!0i@f3$caS zB5YCiNwyeU9A+)A1Y&Enq^%0Arxq<`YevdwY1@a;Wg7s!wn-#iFSJ#o?M2t?P><$+ zxAnvJ3)xze>U;J#R8IL5wCQ)CU3d0V>8AcH`v!FA{b8~`7drKQ>~AndH~Oo3sd@FWL^linb-B8mHH(fAM-&@eX!$h% z7}C}Av^_9h=j0@KUT%aJ4IYyp!lL>Rb^&}+-w%uFw_$NTiysv`88ZCzk}=K3AkSV3BQ&0VQT#A+EPxc?Ox9|7}mF~CliEA29V#t zb`7yxRzuv-b^zrX*`~q9wpU>jTRZrg&3a0;_qr`aaeRN&L{scfbbXp_4y~dkjF*c` zzxTL%byWW+E4bgI<;K%B@uGVajiVG5-Q6f%ikICVlbWdF9uBLz$CFl34gV*z>Q#4t zh4Qbum!e!P_ZGyp-8&JtLOvZ>+lRRo{I8`3>EtVIy}Usf)(kuO{wJKdS%B zuen>(enIo@xz+WU_;P7pLw9e~Yt8Mpa$iOKHm^r(_ieP7^SMS%yz?K&CEo7;q$WOe z_oeNui8j34wro50T_{B-_apSD2Y(Ls%=J0g9_8qLrECYbBl|x40sA4O`!sD&VL#|> zi^49pS+J|ED(q%!1H0R{k(%hm%kQ0Q`8~MZp6o|#FSa+^2j(6Znvc+S;I!Hw``XsP zPi&K6KU)h@?dJ)@)p5|@_Az3&OhX*C{fqv6YI_pp2iRVM18wIhU44#JrE=DJ|Q6pFKe~o6|D>WMoxr<^bPDuSXloT7SW4+uIgXaD#7LQ z9k@acg)8L(xJvGUtK|*2MjBsa?T_*C(Zt8@hRxLe(bpZ!mamCH7)L2Sac^&`_U9;! z*OOwP`*|ua#Sr&PaG1Lqsfock#-Hx*wEcnc8fvqhQR6jA)}eCh{O>(@P!1#G?P}r+ z-u@$TKBkFL?s?hrtzxu$E{&r_e1_%F`&ey$YM0)}YO4cB*xrSo+oHU@b=m6E`#|{r z;W++(_(hKX>SDY*`+Xqv{u0|Uv^UB&3GF%MFVr4A4{uwE__6*c#p?Ij0wa}|wF+>Q zYzs5>5oFf-P2lyLnCpCVOpbm?F_zbFg3a=)TEB_5VsMh}1yU_%CECBD9e`K0Tkx8e zZGueCbE=oM{HgBt)E~P3?N;-UO7SJymtuyy8>MSv7S7`}G20!x z|9K|&V~#sY`4%yY`}4J}4aQ@(?F%@^wwzSsGK|Wp`wbSutJ)!WP5TR8*NTr;`8Twe zVTOE{9SJk#IwvL_FxxD`K*!k=Nb|JfnUCb_lblo50uZa!rYqUHmHoE`Fwp=N` z!*-gf+$Bg&{EY3XiNkIW;v@Y1b19ae zD3;rnoKySn3fsuDYWrB^GgOYQ+uJrF)?^#Rt8A}RIXd5!6A`brnTU0{8}S<3Zz!K2 zZy{c5dj|Q5GXHqh-a6Y5#Chb46szk+?ce}85uTI#*az^uOq-y}U6767MfoZF4ZI}J z!pqV=QI)$QUt&ALt8xmwCU=qa9!}c{x^GAQKll^rOJ&JPs@^hL2Yw@a!sT)XTp{_Tj2(IlS~xf+795j-C#R-UhN+nZBJqQx}@_1RjlV83xj(`a zJ8!jk#?gLA*U3ED&s%AWdgh>?iJoOx|2&>CBt0MMiJcE0;`RR-(u{^4wLWwonr9X2 znVt<~)_5J|a><_9`L7e@rAYB)KmVn9404Po-S?U!j<=UvdcM-Lo%TmfoJ4skp7g}d zYftfVOL=0~AxnF*|Gpx{X)b>j(*33EMfMVV8PfCqwqY04{+S_vp!HK;gqbpNhKhym zg`;F`I9h&4()%B59jG2%kGC~|*KN14f8MYqBmT`6LAw@xJnC8WRZ!E9K&k%;bv^%A zYB{=I4kqX=V4^+{j*$!CSh)|5lXu~GnKDz=d#sm-8T#vFd>o}n^Yo%v3XdoDJX*SE z5XGACdp^%rP7?vo6qF01d{+I4M_p&7NxZNhY2ta$Y?LeOSxQ>OO^lxuFL>4?{vEL< zDtgw__*uj)jw|tYdfAindhs8~w}{*99riAJkG;?S3F-Y8wnZ4<2eyasZ`%%x^C-EM z`k~H8Ps0rP4_j!KO3#$#pwQod7QHt+4Ql!pDD{hQjLh@3sy9}qk%{7=?S*RDuk*gb z>s2||dOhO){=@#uK4vr6Ojg+Wx;Lw_lGWJ+Hj&K(>3gy#cHUprQw!fyt9hzZe|7Py zC;Ry?%{T9T8 z>G-1i5k2ZXf^8v7uB!1BT|5tASC1X#eCQ8dXW;$6caHx9R*}xzF?JosD*W94 zfISo2A!t7gL-s2$Y~MuEeQ7e8+E?4f4@b#raI|a=$H<;=tQ-#?>uX_#elVuI#aid9 zb~5EtQ0SGQMQ_gbfto%QN__(yCr`rh@-8VwA0E$7csoUTI}PORG$hA%l42N_|D4Bv z6p#OC9{+JX{^LCdsGnKmKY_=8B9H$h9{@BltBC}$8$Xa#Lsa&&r=@p^IU(vr!wNQ953+H zL|l&Jg`Nh8%X7TQ(-QFu9542~hqwaAOFTUgzlhi(DzY!JmDrcrSJ=vsuCv=K(0bB5 zw)Q%tCcfd%yXCn)@2YXV>g=m*O?wo}uVw!n*0xWEb?kFsUHfua&%O!Px9^4x>_=cj z`#IRieiJsf{|%ei6Bep*f6bl@U$+;BP3?a8hP@nYX0Ha{v^Rpy?XBQj_77kSdmq@+ zJ`}dHkB4vDXTjF?W$+#QM%c!_8@9C{h3)JY;JfxeV0-(&@I8CpMXG-t?D=6wdujN- zJq$mvzX(6H*MyzyufxvvHn5Am3+!s|2fNuv!0z_Ru!nsv>}g*KKeBIuz3ls8Z~F<@ z$9@HVY`+Kl+QnkkuTSg->}M|w``g_xYA*vnwZ9Ap*z3Z9_BY`mdwV$8-UAM?4}e4M zqu^)u>2R2RAslXB3rEL;GEV2qZWt zU0ECk6P{%&!(H+%xLfvud*mdzSFVDggv0E47*2S^T9>MJ_sKN4UsfjRIb-|K%WA(L zZ~qAU{{;JTIMMzyoMgWNC);(Dn_{0tar|>4QB1X0Mfx;*h}6UiPkDMSCQ(ec+pnp1 zzqCKTs+?he^DlMXYNe+wEjM0Y7i&BpP%On-PZ#*Drx!{0P1rvn>3LO8_Ul$sZ1MD- zqT2bvqpojhVkX9q?*H;UL+eS`t?Wan9(`W%aXFjwcjEJqzF&H#q20ZnnQ)(H9!c{m z+P7a<{hVtLlJtF&KOYa|I{xQzyYpezdc^)uS;Rrl5-fiK=O4o7HC>FimZOP<+>b?26N_U;m)Q4Gd24j3{RBz( zmD*>}cCmf)m3vRbaVgmKozWskj|y6@>*W_!6SYMj5bA3!@>xSj9Wt?UmlQEaoH zL%(itzkc`pUR5pUw&!1JPZxJQ+A`J8?e=>pch{qyr=j;Xd-5WEhdq&&NAs3(dwcA~ zDAvW_9w+5n#9pLp;-SYuF+C5;{r|@^Zl;v`g~`a{DRX29%yC4%@3yKNG}{ zvMJ&t_7NDjqxLu8F?$!}mrUqM`3a&_!btd7Tga}38QKB%6#QAig%})4yN-%4p zU(a~eeMR&>GjCYc6Xm>RVR`Qh@C9!VIzH(AX5K0kOOc3n=(%L5i6o8<)?}S*e)dIg z?0P{V#Ps~3`5G->6P3Mns9lSw;(ZOvtLl9laS@cWh@xEnNwd=|I6De81i; zu&H+!N%InUe?;8OdkntmJ&W|_-YcY4yyY#2IK;~dLz{ToysgSdpEkt`df%WqfV7FS<}{?2H5bEj<_=iiJP%(mAHfQybET^Hq8T7 zm;=c?(VFITQi>MdIVxY&GFPa4@wRsbt+y1dz0*#p@1wOb9#XXBa&^pYDBs?D2-fB8 zQqO#v&NJw_DDQ>3>UenHdkpP$@}5=YqV>)5uz`6SHZ=9ss{f76R8osJHeIlZSsA`& zHixg9eMp;VYED4h)SL(3Ft@>G=4tq*`G~ZM=4R>|)n0Sc1>Z6&!xm<9*wXAn+C(dJ z0^(NYJovV`4YoEv z^rj*IBX0oq@;(pSVVta@56aPd1upb{s{jr}W ziucUVs2;r^(CfXV?(_WATZz=f0Pmpv%7NbRG32cbT_|HFHR`bWui`=81MTo2vDRb}`$ienz{R-AH<0r1@(F z)&3aoma}U4W4!}aIWf*Vilq5*yqDLj`$i^sUqjrTm)C>s2@}OfrtL-5&P23h5tF== z(9UGEV--_SpMJ#g&Okd~qFsxa;hl%L7q{0NTE#r>$9!)Cy543H3%EZE(XK`G;qo7I z`9(bLi=jpI<@_by<IxM}19f zM0tzY#Oa$k{d;b2E9d{f`P+E8J9)W#IDaqltzsW9w|{JT(WrTs`e73T%*U#K(E+Bh zPHnG&W@*wU2ASnZEjq}of%L&4E3&&@4xl=&l>D8`z% zu|JN(a_Revsnh>Qnx7f_omKqA`{6JRv3`pq-cKi}?LPxC z&G+KHK;^CCgm*H{r)U)?y^GP#SIF1JDg57|_ive3DcusCW!@!iVz&8Mm5a_clh&(v zj#-k_qI1kJ;<;v3#B*Anwd_>Jj6=!+8&+&L)^cF#T`%zwspCEk?Vh^)N*rV(*_80azdxAX) zEzwivU~1nc&X}V~dLN`Yle9*EHP<5jthpcQXU)?{KWE-W`gzm3L6tvm79{C?k!Fyz ziHl|xq+c`}BmI)u0qK{`DAF&Rqmh2aoQL$Q<|d?HHTNU^nt1`~*Ui6?e%-WgRPEm| zi;*_*n^}gW=QYeKNWW<|L;CM#XQcmbMv;EYoQU*4%q2+w!`y`Q+vd+mzhhoQ`W^Ej z((jt)Ce{8u(@kp8duCbE8oh7UBc=GuYzH5j-QmCH0GMfxhMHprq{|M_>ev9EaO{RQ z$1&(|T!JZ%yRd-6vYD1A3Oi!wr$rn?u%8s=_({i9>>rnS|G3Kg$2HzRe)HBrJH=35 zijt6im%?$ViQjSj(RFyoGHQqB_vPd8uD2D{)5SeL?@M!>{Y{;Zx*aC^<8c&&UWXt0 z9OYrU<5lQ)yaoe~HZbVu3PX-43_C``2>L_wdpM>eF5_4TpLMK-&pEb{iQ;+339NTn z?teM9Jo^G$fqjv!25w8C>06C?SxWiNP`jEajrQsH3tnzVm?%DUyo>%n z#qGMe-A-JtE8BzZ#d=WQDn54HAEnyw>$r#Ie1d#>PYsvr59#@P$52|1F4DPuKle9; z{#ixXr@jXyih+)$=ugC#N$p87i0cn^>_B=MpStgd?ziLRJnzf%iCAGaPV85`4mwe?$tM#blbD+JETyGSl-(wvX`hH5!-8c$T zzAj$zrNPR+r%9TJ#a97V_0>RnHD420-S;-qU-f-aULC(ReD5Q!>FWk-`Ff&UZC`Iv zigAuXaH3;8oZ^@Rr#n`|uN>Rq*N!73U8i$ALB~DKkAn53=hPiO#PxlW`b*E5J6=HC z5c#@jgnrR;=Z>aGZ_MdUIDMgG6s6OAuzb9{;k$(8Ey6fhMKj-T6kElcz630PspBA( zw~FSm^yo6jZIvJW#*udmjc0VZqXvfr|sphaxq_KLlxhdybDndM`OXH!R{9=l{Zt@yKCfoICP3zmIXYh<}i86`im?n&`~q(8X7H8MiRrCD4MD3{G zBU{5!as(VLzkwO@7d8`SO7HioywDrLG4c~QR?dW1v~AF$UuTW2s=TH@1Eu~3)b;-C ze3+mgf{FS+aGXs0LG7Ozj{Ed^kSH=8YiNBEg-D(VEy;&T^?Pbvl+%*KzpH$i?0|am zAINvg50IabTnBNA9E&(H`9rjmCpk#c=cG?PCqwr!`_@uE-N)?P3J3c3!y&#iaG38Z z{M>gJj`E3Zs{B}=6;ANk;bdPSQWMjBm(=;TnC|V$Y}L%ds4bc!J9%u?FWa_5J&G*77aFmaCqf%bTo&O@;~LhwbD9UkhNcT%5H&EjpEt%X7mP#H3 zODBI##@mUjiM771{~?{;ui_g*&ympkReZa%IcQ9M5i|>6Wvc+^?tWVuP7H?mQ z?Y>Ld^5f}o>35zS`I^}4yY(N+)Av{3gBDCelK+?<&;M`I z_aL8{qrIPf1#-mk>(EanZ@;gOx3uI#(3QM`q~DMD|5kkeJL3B>pGrT9|LgR75dYm*j{&h7Xi%{RtznB!+SF2nKj9GB(z1&%9l{1V5NIIaxi z+6^;*2Q1G9u!OQz}FxBd*mBI()qHl1YKXG>(<#bTJ&x_^59xC^-hY}eAL+U< z)73nqx=2pnLhaG{E~NK$r0=Gf-qVqO5H>)0i)hFePCte8M%+$(92z60=boS@ilmR6 zq1L--dYO}1pLZ7VWV*Uurio(d7qHyoyxbD$>O6qndy%gGk6A=BUf!E*bM`H^1>2Hs z#lFq9X5V4kux+7Llt%xo;wkjcD$>&bp#J0$uJpgKe(kuNJ3V$?(v!ZE(yhXqUJB#u zOIQ1&MZC-HwrAgC1H7I=Ue6G(XPDPB!t2?A%XehoXFp&+WIM5)*)D8Xwj0}>?ZNhB zKVo}9dR{a=L#=1Dcd~Vd`uy&b?7gEtr$6R$eW6u6pPrxcY5v9ZVz6AgkCdW(`g0^b zhnHR%=@rxKk#t_4-VAZ2^w#j@^bg=G>3vE1ewjXk)I_!PX-Kc0zKFDlSJT(S8tLD| zn(6yVx=x>dlC+B2=@*gy3HPrb+nLEPS8ZtpW5pJ7~oIM*M+^*`tOqqzQPu0MwBkLU53!2OuW?M&i!CUZMe zxSi?T&X?TI3~px@uh-W+K6AO9dECx?Zf60vvzXgi!tE^Oc9wHHD|mcXbHCPbduzG9 zb==;1Zf_&Ew~5=^jP|7XKK+%pYCqb>d%9zmMbL2)BEb+danZ{=)4Z=XOtVyQjI`Gu-a4>0_xKdVVhXF&+P!xQPEB z^t%Zk51&K2zk=Jp%5JsNRG*&1OLpB=`~8FTk5;MAslU_nQ@TYwOfLpUaeqg%W7x5f?l($~ zp#GzD56X|{^a;tYApIXspUCNxk{ePw&GVAJAD{P`_&<;+CMUmzbc}+Te^B`R}NdA=S>%#D7V0+vAuXRx8s|&c?Vs=S# zkos>G4!;W~`_=z*;F{6#4}PjqQ=C6ymtmRy6R`*4z*!sW@GNV;Dtc^F)o z{1s^xtCH7{Qmjti57#AMM*fE647f2l|1MQ;Q*sDyPOd@H{WQtnQ@?4x41er<{1)!# z_v}{o2X-5~o!!CiWOuQ<**)xDb|1T+{gFKY6U9%-$Izer{cR1 zczYd8-dJ7j?}hyzQ#zfm_=h3CsDBbk&yDzJ!V>-k$S>_*0iW`3fNB06(B(fs(s{2x zGFy#<$3OcOb$;XZA4j?m<3jfp`>)V;rTdBf7bx8-0{(w!zoPdPaQ}a153@(uqwF#E z7xp-Nf<4KeVo$SY*k9SRklufp{1D?*&VL>KEbo6nYT^aIb+@vDKb5qK7yYG3dd}V- zhA;aoA-{^hKCJ3*39I=#!Rr1fX%(;fN0D?NO>*9QYMg8MccJ~7{)afftL2Z)dtckX zpT7SliVMj_shkvbas1HxkdZG%Lw`ZKe@zoj{K<6vh^~|QC!_s0cs!e7durlM|CdwP@#3 za#ghRu3y~`lt;ApZ$bLy(f#TE zqiE-Pa(A@T*?*Q|tLO^pdXHbt<8Ku`{Ff*_kLc;I{hZ4G$bS>%dU3nG{r4!=L?6Gk zfy)2b|1ZV#`>j9k9yRVak~dNNy7j)(XwBL0Kpq5j5*Z*%;aza`>391ruqkN7Uf z!~MMx-{W|Me=y?v9DnYgg!oU6zwpmS{1?X~{i_f^;CPgOGvdEF9_{}L@k5Ts_)j5z z#PL}F6~zB=JkI|o;(s|F@6WSWjmKk-C-8Vq#D1iUN&XVZ&*1#Y{s7`kj;Hv`A{Nfr zb)TvJniT6|n*U8W-QNLz>F)z)_{YGn{If~=#>n+%`j;ZsIG*MI7O~{`YySbnI>)p9 z7bw=n9REY4Cvf^)f5JYMKF{wU>6aKzpYJb@I1k4Q{2|0vju-l0LY$Z5MgAs;^Krb` z-v;p$953;IfH;ZcrT$)s4UU)jha$Fdyuv?`VqL8CPeb}De{9~G)qZt7i|#Y<&qTT% z-iHTYv02!3Mv&PC)ZOp&b3+;^TZXj&ogn7u$|er*l5FntX`+xm4=>8I2>_mGskG``m zuA3BewnTfo&>lTU?ca;?d;CX8x=+9#yMN`NKhF-;ULofQDo^)i`p+W&Xa8>`y?4Za zht$OpESIjcU^!Oti~k|gkNbzDsr(cE10-E<@h9$A@flA473sP-i+Z{^=Z{^tIqz4$ z$LQjMU)=|75rwgybU!VYqlrs?C$*!A%l=|$?~31p_^SWCuBxBc{IUC`uKUB3PV@Tt z%fVahACTtt<9^@ecJKQuQ#pFir?dN?>hu0je;w5O+usB}^vCY!dE{?Iu@)`rY^Ktq z#hhJXac6&|mvDZLxTJFuX^ED0&W2ApSHU#rHt2F5hHmFY(i-(R??JEA@}r7CQA#iw2!#ksfl^BrVaf^G%ZGt9K5k{#wM-7^g(>jB_HzR`Cyi9+yEnU8nb}-^ZkQ z?Eg^J7teC~bL{hMS+*Qo9@2A>Fi})=&cyO$K>eSj^UQ!c&!q3y$fx(ba$Je)=Lr~( zRlXI{`&|P)(eHc#^`2Fl=LzNX=qt|NNU!Wnr2FFO`4guJt2zsl^oxFAFy+(pyMd9= z3`~TMfV%!n^E5frsGKgGflT_plqjk@pQV`2{{l0p99`!PtU&n!fnBg*-~?$Eg#y2k zbRTXY13npW9#G3E5%9p0feNrxpaCo$c$cK>0=#}T*rx&?BRwrJ66IWhInW(gOVaaZ zf!(AO-oPp758Ot6D3I`zT3$F%2u1=y_;jEOX%RKK{aWlZfu=|=6X<|)&j$L#=K`Zi zx-Jr!MM_aNunN8q*oFLxfm86Mz%5uQpdD1peK}Bow20c=ejWCefDh@F123Xnl|Um{ zHPDu%`HKP{ky2C-42LxXUm?FvU^T28*bVCi&cOPCd!$9w<@W2b4FY)%sq}_{q9nb? zAy5W34!lZQMUy~tlFqLJUEmvm&ye3d@D+S3um-jW?1wD_mq@xk5^tYv6?la7w*$7H z)pA+~(%?IRvLyYE7pO(j@9cq=uzjEh@;e4b!1n_);Rk`W@Wa55B=wuyZ^U*ATtIr~ zzyp-)60jdu%j+5_Oc-zU%qejFGL`v&I2PXb#=i)hU4H(~n) zjv~E(;2O$B0~zqsfO$kMXF#A7N%P?Zo`pjKHAzhj3$%p81Kr?=z-RFDzzmX}tK#-w zXTJ!nMEc0U4wM@eI0Z)sekZMBOdyk_-=hM_N0k!-Zc-DI0~O$uKz%qh&=yV$d`wzI zQ*QqaXcf}~bt&B%ZRQ+BCW<$m6>;1*cg{rlx47JwC}$BZIG(|AOKz_f`!?H}eTQuW zt>P=L*Ot@UvG20&+4rDT%;fSNIK3nLKKlXtA=?RB#VoGZnd7fH?!x7|vfbG3Y!9|4 z`w_H?*<8ODr}t+2uphI1*-zMh&?@F|{r;RDWj|#Humjma>|kh(4sou<_898ihwb#4 zvlc#Q=LSw8eO}-Ksfqc4n{YwkrTWJs!<6C<5vkv@v+jb_KNW1&?n4XE$47BLR7E>;9$-!oPQ8d80_Pc+aPt`58p z*93Z!bbmo0O45Ck&i1rEiDH8DV^SBJ0&n$E=Rp&lUm$&w^GlMhp9SW^ZGmB^zcVlz z?g>mJEn+hFYYL?2!kkM`ewuSS@@H`VSDZi7xry>=9wAQunw`zg;c|1GJ5X*O$Mc;B z5ij6)q4N~QiDHrS3S8{`3odcW2de$0TyB{&mEuJ4jnhl&;^)9n^lLft>36lje2VFQ z4QDyjI}%XuW44N;`2TJd#{!E{ekICV#42ugwewY!|AosR=kg~|p60&@#O8fH6{0d@`wM%VJ;9!2PqC-jGwiSIS@s-zp1r_cWG}Io*(>Z- z_8NPgy}|y*-eiAgZ?S){x7j=FUG^S(pZ$~li+#ZU%|2uwvH!6DvX9veHj@=8>iaSM zu^KB`olRg9**vV3&CBLvpJ0<%gSD}C)?^)QGV5eh*i<$@TYxRd7GevtMcAV3lWZ}z zI9q}($(CYEvrn;Utc!KC9@fkH*mTy<2G}4QV#92NeVToSEyF&`KF2=KmSxMa<=Ge5 z3haw)MfN4O68kdy3R{`2!d8V^v|7qp`W&F|A1O=eb3ux$fd>>@#f^aF7v*n(d}N|{ zHDw(>w{8X+eXFjg{~nl4<)pYBn2h>0Qg-2U6&;V_!i2)mePpQ>HUL2b-m9bUgz>nQ+j`*KG$u* zk|=Kv#-6V;gR$r99KqQ0b#I_N{VvbG$u?)-Vp~9~NDjunueRj$R_xnsYxW(s4cnG& z$G*$9XWwJ<2V>9eb>O%o`#$>t`ytzj?aX#zyRzNb?raa3D0-&!rg5X^bW(<6{0aos z?<|@q7~F>KS}534s_jxZxBzhp&M(RNr8vJd^67p9j5E!%6nq!ktrst^H>Br9gFUbv z(t}ax4-STb;Am18!C*gP6<@5}wH66E=Vg6cS-=YP0- zKej*AMK$z;p5Nm1PuW+4tEe8$FBJS9^=orn2eB0OgS(L4h|?Q$`s+y7M6+O{uv+e$ zoZp=DTLurJ-PXa=sNa_J+j0JToc})ZY2I62PFF71jm!1qa=p1+UtVs1ELVyFDc8~d zU|ydgknS%G#-76-7`#jQx)_4-*Tqn5e_ae`KW9g>quH@2PtT79A5wiyObA+ztM!~1 ze1g=(q~LprDjv$q{R~>gu#{BFw~FB@1>uO4BJlH+VyHJcSc;_Q-B6z9<>Yv3@a5L( zb7Um9H;UUEow9|#N9bZqil6G~Vr)t|I40EoxsAUkBTg^uDlQ7c4h+zY*Oh8SI1f#i(Zyb5TC4{yfAM zF`r$)E@Br42crHG#F|*j?JWxqr*xW!g_paW%dOygE0LeIoK>8^n)BCiyq4p29Ixki z1IHUV-V_{F5&TB$}Y>X-4et%DMhMhzu)UH zmaB;)xt6<}>#tysak*b|m0QXAtJo7LN6*FODz}>R*RZE~eb3}7x0dtQv1d_^=AFn@ zZawFJ%U(h`nqMNg4*SQIT;(^QT-LZ=<8ix=aijYdgPW*cJfGf&6O7HX_B(rvjcpg2 z4>P60W3`=b2X|n3cY=FR|8DSLj&@?@v)cX7u@v`$HNH@vw|@mcUZwW$hrts$+IbZG zm+o7Rw?ofq@_KKEQv4Gk=37WR8~EBgbx zjor@fV0W^+*xl?Nb}ze+-Ov8W9$g&Q5vSy2=u!jymmzAF=l0%Mc`SgC0keZj0-g_P@oFhFoR9QkN2$fBB4rDUW#I&S4nz)DYWtXtbWmZt3&mXpB8!xdO{swdgvn<3=M*j z&=^=IGy^^#T1;9+`H(vQlj5b&dWy4_`%37C9C20d$E)0rTDkgBJG7U|(|K~}NVa

#};f$lp%eY)=;6#M-!)-Rfmh4;6^Fj2HaJ(>?M$MWLi`Tx3_XdlYRHZGdz zkR$$Y{ipjSLh__Kzc`XoSkM0dq*EyN|EP0F{Xe4l{X$7pF5Zqs9Odyl#{R+{XHT#v z*;DLk_6++gdltsq|DV)E_fYJ;EImR+>G!y-@;!6J7V%LiKlPjDAq=VeJT%ceq<;6L z`#C}-a;(oe?#FqyFW38o>-Ec3{sNb~2sIJqa-X6c-RBXyG+!N;14F)S%gO5Ju+SO0 zFG-5wp)%R>r5K6*S&A_^(zEKt_Fwv4BBY+Lpy%8}6|jEOLdM#x?IXqXP!*(q6{?-1 z{h6W06iYEX^d_7aYC~GY!cYg2u2+Y;B3{h#62$T4)AiQSj&^FjmWBFJIl3Ml8U|Nl zedxMrXdLRV4tU;T)&>pI%iJhUJ(T`mr^*v1&d%4^` zF1Me{{mA7GaJg7Nba9Bw|IFnNbNM4&{%Ef9v3l0%<&=}OTx;}7%58WxMV?aewUqp% zMO;tulA1UkDoe)KLlY-L>U$^McMz&d=`@d5s1`gQQu6@QeWRhuD1SMmu5-uh#ijQK zhSYfpwI5ovLY<%9;QjYEm{smZr~$P@_mlGSZt?Q&V0n7N#9`4kOe8 z@dN%p^e9vu+xaoCe?~~%CqmC#Af1l9uv$K)gxjOPdiXkhZqY9i;qDY$M4s>`@OSQ? zHT)UMZ1; z*$g(56{&oEm(^Iw>X6P?!fLB8TMKB zIW`==iS>RSaeUn9`IGQNO3#YRg)L{)aZx^;myD;={i|VTj<`a&P>%S;aLH^j-PaoS zWQ*xOjqm{+$Fbv26R+foE9Z)<+u^As&36`_1KWmI!1m#duw!@^N$20; zBP2bi9zF*(a6PO^SDT{o1kp z!;h#uosWj|{i@0jL_JLm$#ML|m!pZH|1q8B`T8&EBmPVJ$p4Z)=D(zm53Bdf(RJ6b zI*+CETEz7JB3|zqoc>j~5Z2@Cu$$Dx+;Dj~FI<_VdCXFuG}Zb2!f-u`#p}_02Hfv%YRSWdve5k!-ulPS<8vHpWA)mvnanme2t{%xx%q|^bdyBJo+?GSokib({YuHKY@qW_pN8H}W+}>F% zkDedk_yV_ok^6gz`+F7rrR$lw`u7R9*AFI${;6qL-tTBfid*3b`gJE<5k^yMu! zomiloRax<87pqekja&ib67 z=i9j4axUkLOhUi&M`n^1u>$Gw{z*}Y^NU9Ay{y)+IG0TXUqZ=5$|)BQQpEn;ns<;C0AL@=_S+NJjrM^3DK6`)BvePH>XyG-=#K#TT;8h?^B1tt*KwaA5z!B zZK;Rh_S742N2)ll+S!?!3U{Rj;O^8aa8GJexHq*k+?Vj9ek(<^ON%L>gxMUY$E%6ZImo`v>YrvcGpUUXJEDj%@icd;5*io)k?YYJSXk zIg2=h^|pv#dHtK^Sgu8!<@|Gy=0A?8>jLrmbUz}}HF1H<4S*6*rT@jhaD4lwd2m9vTuBkgjO@5K3?k)PF0 z7f$b*BV8BWA|IlD_ek$-?N~&Q$RNZ$bESWTbUJTRKwNMX#jpSBhbg^Kdxt zzaw((zgM~bHTF7tgZ+)Y$^OpXV*g-ovv=6L>^=5A`zQMs`v6MudBjiG{ph{3k)2i5 z{yrM}eSG_9;_uXJSpV4h3C;H#iG9x=ABla>o)A&rv*~__Na+z-`vX0v&dYhkPKl`J zdgAR`#Z(^0e~@n#(>VT@%Rh$k^7Q{ZRa{d2%uLM>MSefDeCwkNfN# z<4(^9Mh4>l!rX}ZU7Maqk8FBN?f3H|8MK~sq~woXw@Y9XA$^a*@vDnPk>OM>LFCCl z63bc2%UPCVIkcy6{k&{G_6atLHCP*KXHC`t{V%*@Q$Ff%hVGc#=%Zl713+Raz@R^8nnPo18b9Z8 zvOd<&W@WRn+1VUyPBs^to6W=KW%IH5*#c}qwh&vGEy5Osp@Cvi3+Ot~--}|p=a+eZ zf6NYC*8?$U;lY?E@KDTGcsM4(1NppgBqjws8j}Mai>U;U$FzYbVuq7+f03A_7@vtb z0MEwULH%6J4~#FyC=X@7OEH<@<(MMyN=yTIHKq@|7BdH4kJ$om#GEA^;%3YnGDH;T z^C|)9d#Eu-i^%gT85Q@DJdQgt!T0^|$0VgOeeX1;2YpU8Ts(}?X-xBh@%cZFk?;T0 z_vpA^>ELw|Px*2D?0+7|Wq7@^Y&o_(TY;^}R$?o&RoJR*HMTligRRNdVr#Q?*t%>z zNPowQ`S0gUe*GT&zohvnW9I!QUr-+5eht`$Y$LWY+k|b(He;K!E!dW9EA~x{iR=FB z-??`&ss1w#6Ypb!_e1&^Bj?o%7hgD^eU0(r=l7F;9>V>5PHoNo+pulfc5HjL1KW}9 z#CB%8uwB`1YFcm&4ucPn?b-_Bi?d{A8z@*^DT^4gvQ(H*e+BU?twTS(=7u3<|6tWEbnI`I|h$?*oIkxjc3;Nv<#Inp-`sBbI)Xlj z?S6-PUiT03-|IGqk7q7BkDbphfb_bJ_fyFI$K!vucZkAnCyhfy5qApGA&R;)k~BYy zJ3H1Zf$bb(A@}+9K3qw60c^L3_fyJU3gg8*UIHl>@^~4$oL#~G&8}q2x+`P9zxK0= z>#N!F|Fe7z*DL-{eJ$!VPmH@R`c>iUU)9|b<7zyv&f^*whl`qQElBqxiyD!u?EIbDuW6ysdj8j$;#_e>?Ylj5lNa>v0n%+PnYzIXwEDl6yI=NAn1~ zOorBZ;$&X*4yvC0}r|H!=vs;@Pzv*Jnen~N4a0avF!#4+;s=P=X0F;ve^o|MU+RAAh?p^m%EVKjj>^oHvE$b9LvX_qQU%*{B-yekINK z;SRn(El*0^eJb~p z!1D*Z%KdIc9m00Wc)KWU7bct@7p+J0qVaZ`CmP$Cp3G!~xEXZ|+ePzs$$7gJyj?16 zNB70>WJjMgI1ZYR!&4l6Zt?!_Mtw$~%-kmn_le;?Uhd=LK7Q_#6@4Pay{JT)<@LzH z+vnu%bMf|hdHZ~P9rAn1QB~mAsHX5+ zR5$oNYAE~>H4XlZS`LMCI}CB2fT7NtFwFT1hC9V`x!+jML@>gc9L9Efpu<@R#&K4L zah*+IJZD!J-#G;S;hYL1oy%YX=Qfzoc^oEk-hhdnFJThrPngu1@P*ueGG{c5a=M|@ zSrEFMm7wBm3{__rs5u8i-8lss&ZW?FZiSZf7_^<&VYKrFOz!*vQ#cd6l>1HTwBeu5 z7?{dg0H$_UglU|OU|MHqn9ex}rgu(;8JtUCM&}lo$$1oJc3y*7oX=s5^E-4qBVWn= zdYl&YIm&cm>@^9n5E zdn|_ z=Fa1=h4UtC>3j`aIYZyc{k3)`B^`k_&Qv6QuE*n%bVJ9U=bId&x2G${ov=JYbawtj&x`c^TW6~* zGLLsfojxxQ>3$d7rw6a!(-}qUIYa=@lMd0>Q|gI4?tY$Ne(&#*fBy^>13dk(pI*HE zUu_B!9JD4594rPb2!`Tt+NOlxEnjHfjVxVUXj(05A$Fbwt z3G7665<8il!cJwUvD4WZ>`ZnRJDZ)u&SmGZ^VtRLLUs|mm|emyWtXvoJdYPB|Z|L#%bm z`Bv%g_1t$oyMf)v``P3yL4U8I@0ogn^V2Wz%*XL9^sFT5zKWhL7%%qh$9Re76vmsm z&lczqOFdVyd>J3#a?c~Iw-(1o^Wu2qeHlZ=dQb3u@eMeBhuG+;N4X(HY~_C2xZfsE zv#j#*zn$wlxW1YD@5DGl>~cQD-pXn;l}m=O4fHfJgqlDn#t&{p{hsd!30#$oJO|dwjUA$GGot?t6m!p5(r#xbJE1 zdxrb&NpQ}Fn<=Q+lAJi*V8-}StqF@67l&+7^A?M4d%zAd_2eCuh(HT zU!XT3^`m(sypb^Ye$21s|C-1f{QGZWubelM=AA}g`o5y~_t#HRyq**5(fzpDU+*WY z-e}qn-3P*(1NTj{ylFAEy|r%2*H_VAAC4orSH2Dm7b(2K`6_>Hf83cL%TsaRbl!Rx z|9;$IB9pfT)x$)LcL;sYCQNv}oiNVo?Mc$>2X8-Ym(wdhuMj43dmGbv{d>Oo&_7J% z_qL}xeGbCgjSLN(aE_MS2TnSdz*Ekh=o8#OeQy-km*zL{%Gc2}uP4T#qO>>oI=YPa z_xHum^3UZQd!D_(USuz^m)R@qRrVTtoxQ={WN)#z**lQ#7s8K^yBPmEe}|}m`oH5! zJg(wBkMphS4c?cxnpb|lm_C>6y-D>jQN#Nb*7o9a#esXyH#Da27dajO$o1-Zb@=GF z{n7o-F{XI~y=iDUeQwz6CV%ZeOf>Q4M!mVW2)1wKEsOCpK9AP?cx>mbg?jt{*}fBR z-<7xTf$eGjOz)e~=a#)~ zF&^UW0f&0`qCU(!h{peJH{3fG%SU)?M9BJR@0{P3kMXX;^0D4ca2)UF6<@Cj-d(?~ zKhb*t>rM8a{;fXMdlmI*-urNd_ceUY*Ka}U21`<4C1erJEMKUv}8?+>w|Y#5~b)Vs#uIJfX|Zsp_L z<{g?-J`Zm9<{T}J#p_477GeFJSf4(>><#9K-8gTD*u&4Kdw)Hjx`KJa;R@!7IK2P3 z+%KMM1N!abe*3xK0q%E@`yJwb@wwk0+%MAg71uR^EBu3eUOnt>h;c&nr}-Sb38@|; z67hZ$vq{)f-lViVRGjt(bHy3#-yzO=Wv-z6MR@2*UiFpa|qj2hxQX8qFpz!-96s!K5zGcw@c33rQq#SVmtb~k*f)g zGnK0aN$<<>^?Sm7p7L>~=HpDmriCviFsI9uzOV zt!RJrJw9(DysmofZH93s-u^AF6a9X9S6z_LgYUg+z>Acs)}2 z`e1*leZgFvmHT94vqPFM*tZJnrNwm#5$SxGr!bJiwUz1-BBv{hUq1h($8x%VgD?2} zmy7#k^u66L&nGvJ^RRi@d~ANU09%kP#1>|YutnKoY;m>(TaqosmS)Sq2vOEmh>n}? zH|Cpw^DFEN=EEXl~^e7zfDe-WaV zYZUdR`4W7==eNe(zX=~lZ9a}VY+bej#$y8n~Wfzkgvr^f>^Z{Cx`- zeSDv&PV+hW#7Aj=UtE&DpX5tQI>caKa+2fuJ~!4I?#qewMqs@#F_Qa? zK_8ko73+tJ30N;&O!V2bewdi#i-1#o39g1&!1f`c4cFTSufJ%=wukgOn14PUc)W#w zZd!o_9jT9^X7#k3Js;!^A#beh}+B#3A19 zaIhZevPPPjK(yd z5*`n9UoAeb6Fw95ll(k!%J+PwoKNmASKMs!_wzKy^!mV;4(pxuWrgQ_x#4+V8@fLV z&1>P?u~vG~SAyyhqPNS&_Ls1}LtMu7q3`4SDr38=zS<;xAIR4T>-TZ_vHnfp=*5`F z71uRF1YBjP9wGX=GE9*DZ}aio;p4f>$8*ou3VrYMO;8xl^3&t#*Xsa!{qK8H=-+XOn2Pmc zi|@XA^m7XnKYS{^Zxbd${Lf&xe;NL66x%>_qCyM$c|>3-|}@7Pabznrgw?jzur_mv0{ zN&RvjG>1s$kN7NqZc+Xy==9qpeV)jlhNSQ9_`Mh}3tSUc+PCAAG+g+Ash8r2A-dpLN`4y=x$?A1OAvCd%ys z8(oXwCf9Db*>xRmaeahaT}i*l^|rY(!|kpTq$9Ay)tHPFJ6!?Pce=*HU9RPDx9bqx zPIx8LO>9f1R`a%7}9=xT}jL02z$$TbNbcCCd+TqodB*Hd`R73-Vq zbKGTjFIIdJWIJ;(eEWF1S*Wk>a8& zKN%9Z=&ArOxmv-?t|9P>Yd*Z{+6}L{uEFcB52Pb-!~qtVfeZ=UbmfM(Tvg$1 zS4ViqH45H!Er<792jP9!9g^lZaeX5r#Y30#r|k34l?Fa?6@ZUjb>I_Mclgvb2|jbJ zfzMsXNk`y?>k%0#Ub^sG7Tp_aGCzls~c9n%+T&>_&*I@X~HIH-zzPomik>ZEzGU`8EPvB2i zSg7nH6bptZIbf(#6^1DtV7M}pbOd54OUOtOLASS-+eIiBU~J_zbSQs>$$A_mEsU!a zh4GYzFuu}=zXQAVkXdKslTEUOHF<&?Rwys`sUP_Ds>%12m9NfKZ7sjOrsBSjUZBpDK@ zqSS^}m2R+_G7(l+*1#IdDOgi^25Tv?|B!uZD=ElGQAf#3h6L&;? z$Vf3t`H1=`B~B9AZ?uvUj#2W%u}Wh*Kgu@LH!3IKCgm~Q zti*E3K3kM%xK+suw<$H@cBLyx`9~Q~QvOj^p}teu19vIc;cn$K+@mB@WWT+N2kukK z!u?81lJbu-n56up%t!s8vH>1aPQ$~>3wT6{qsl%XMXyl%6EzA7wJ? zCzYk}l(HY5R_?$v%6E8H(KOlboRSruS1OW}f0VW)KB!n@RG6_UREx^E6N*q zRY{=BKG&4=@VZizr2L~aBq{$WeNextjD@$974Wul1l~~|z`IJAA^Y4@EO=kZNmBk% zs*;p{l#ZxBR0hIF${hGu*#Vy@SKw3SBYdVLF=fB!N@kMsk5ZDP{G&8Q{iV_!zEUQ@ z*UB3BMmYiBD$n3MCAKB|yjN0?lz)`GB;_BaCh8xQ*6^b;1b$K$!q3Vc_(iz|zbaqh zH^phoKHn7&N%==9ONIn~DD~k_r56 zbsJ2gUV=&0cO>N>H9-p5CrV9Eh6JM2+|a33gD$l*RMfFhRaZexJqC645lQ(+4NEEe zn5spF1WYvsT52h1tIc7wIuIsT=ff20E|^liMpFJ!Ka!Mx)Fgk(KB?3{VQMuWOrzF@ zY1Qs9ojMt&SJ%M|>M4@)kNS+H{G-NBCHrJj6_{D|!Ypce7^Aj^Zgn{HsEeUj-A7XX zQE!oyf7Gw2`_(^E%YIqaG%%Z57-m=N!yIZKm{Xk&bE%t1%0KEklJbxG3iUi{NE+EE zud2g*YIc}ktqcpO9brLrG%TbpCn^7^he*ml>OItpsQSfd?u&f%MPWCCMM#J)IZdgIB2`j2yVI_4uN%==zMNgy#cGLpI|jLS$f&8x*7v(sAXYIwI!^j4kju8sPjq6Kk6>j>!@d7UG+Jvr^d-3 z`_xzegbmb!u%TKPHd1?%lz-I8B;_A<9qLWg1F)%j8#YtF!{(}zQTA)0W`!-)im;X1 zmZbcn4ks!9sEbi=qi%t1)$_2O`UbXF|Hvf!bWqd7j%rcZNo`0{{!#molz-IesCQBS zhF#Ueu$%e-c2`3(%RW6+3-(lV!d_}slJbw*k)-^ijz+z=Iv4g)x5I#X1@=|{f&J7Z zS!BQdYGyb!Rl%_L_GnAs!!lBHFk{bGh9spN2qy8%0FsN zlJbw*74=c-P&is$0LQ3%;8^tr9H)MT<5j0y_M4!3NXkEIS(5UP+7k6i>R)iOIt5Nq zH^8at88}US1*fa=JhIOWH8n~3M=eNF{!#0qK1*#6XR9ON9Caz2s~&*!)O&Eg`V%ft zHLvWmP|ZqG{!uHEA%R6|W4Kriz$NNTxK!N&m#LTFa`hctp(gOjK7Xs}Ny}U&FVn7MV$+` zs=MGe^%~r+ek3XXs7bQQK0DRSWJqAAnjh{`Yr)-WceqEL2=}V%;6C*f+^;?(DgUUk zv&lXO)f8k%;GpV*htzWLu-Y0PQHR2#>SB0I-3O1Ww@AuA>Q|ETkLt`W`*^tr@{f9tr2M1)ME$0kD5vaqOU(dptHt3RwK2S__J{Y>+3>!)jimgeULq;~sP9mJ zsK&}A`#e%@_*l&ipQzR0Q?)C6rjCct)m0?rAN3eX`A2<(`b+gQe5EGME&IJzW8fRL zG<>VJgzwbB@Vz>pr2M1qA}Rl<*HHhUzJMQ9M;_Vdllmw8tmcPb)VlDi+7o_LCzF(a z)O94~AN3UKKh!($r}_;FP01_!g=jt)s#SzxT3Z;d4JRr8Xp2e8KiWRjBeV-Jw)Pr2 zv_JC6K5?|PFs@b<#?um{nT>vuOulcI^(#q5Xt8HLZy3mrKh^QvT5@l9Ye6wy5XP`og^0446;b z0`qGZU;*tNET|uEz_eQhCZ zpzVVVwOg=}_LZdkqd7~;K20w?g<(^z9&D!l1)FPAVGC^&Y^j}tt+ZDp&}PG)+BVoryF^m{(cY1if3yT;WS`zzH0-10f&r~M?5lN#{j~A0zqSev z(2kLmf3!y=O<@G#simhr_hNaJV)fj?i|Ilz+5qB;_CNBkH5H zIOSx&(OOD4M#~S!YPI1wttT9>O@a(;raJCk|g6uO#OAF^}h2cD{A)K%EfeWHs&Xp-`eww$E=qa8whrFI3b(%!?> zTB1s_-x@6=T&tCY>$IkDz1E+k{G-h#DgS8OP~WJXfSa_(aI+Sxvh1@(i-udZyl|UV z6K>bKl9Ye6@g(IRZ58S}wLNf`b{+24KEpj)vMRFQUd;pdX=UMlttCnMM;lC1{?X>6 zeo)&04{4|2VeJJxqQ$8y`yAC$!(&=OcwDPXQvT6;l9Ye6$*7;ymcmooet25D1J7vR z;aN?qCi|V!vcmIPMUwK5)|RCFqYX#>qBaX&(ze3O+GTh}`v+dtl2(^}u4yswx>kmy z{G+ubDgS6gP`{~7hqts%@V0gV-qGH|yIP_evd=v&6TGjLBq{%B%}B~W+CbDFYE$4N zZ9ROforO=dSMaG8SyT3Trlp6^wPGaYAFVM-`A6%A`b%vhe5I{{ueDR~jrJVA)#BBX zecowl;CrnwN%==>KvMqE`k?+n8wWpXE8!>YIQ*v>7aKYA^a@{isf^$2|gjIA$$4*ejE zqu+yZ_0YPqPdwd%@%3CJGdQH zWuFXs7LxLhUYex*qqjgkll~XXtWSkm^i42EKM&pdJLu69Hj;h3dPb7+k6wbL{G&HT z-LLn6S@lUUo4y`q*U!Kl`fHd||D&<&lS@xWQvT74l9Ye+MyTh}yTZKsc$iOL1M}-A zVFCRGEU3qABKs85Q6Mf6Uvs6GZ3(^tac`Y~8Se+owgL)agJuIt_gyr<*u)Ka4R?r{8ih6i6*{6~oO;Y~R^N^H(^qQzw(c8eP z`Y>2cUjnP^2Vf2TKCG#SG?#s9=_X0}N6$%8{?V(UUPo^U>*|AHJ$)gpukVEo^gFPj z{sT7BwHC5ZV?7&5`A4rzQvT7K!KV5E*i4@Xo9nw^3;iZ+segs7bXQB+r?u`QDgWpd zNXkEYW7t;j3)|_lVS9Z$?4VzR9raJJlb)=V?9*9ylazn-vLxjny#eg1_lDi{8L+#) z1@_P{!=Cy-u$P{=we0hko|&Zlqn9En|LApLAH63G=u=@|eIx9rUx5Afw{U=-ppEP^ zP|rY8{?Ut*lz;SEaIoGD4$&vUq53*FOg{^U>#yJlJ$_r+XQZB%r2L~7AwvSA^y+Z5 z-WiV3$HTGuYB)|m1;^{p;RHQSJK1NVo{FUWqZcGY0+aMAaI)S3PSMA}sruh=ntmKk z*Pp-{dPIBKXQrNlr2M1jBSQkS^onq{-WJZ$N5Z-KGB{5^0_W=w;Q~FZgY2_Vw@J!B zdTx^5|Iy3A#d<5aL>~s1>Wkqr{UBVf--9c3(NXsKTQ^9`KY9+5-v7}{!&Q27xLO|! z*XRr2T74f}r{9L__3tF*A6@Mv`)t&+lJx$MUIK2?o50Qb0Jue;3%BaK;WqsS+^&Bi zDgWrs&a%%=-AmH@KYCHPOK%8w>wV!KeHPrS?|}RCt8l;mk)-^iC+#Bp9Moe-djCf+ z1P|%;;9qK}48^_B3Mehfa>ACr`S^jJM*pO<=alIBU!eejiD9=_Jw!Z-Q|_*P#I-|2_p zd;I}P`9}}!CHs8PEt2L-(B1H(UIu>BTfxuzQ20e(0>A19;5Yp)N%=?rNmBmN^}l4F zA9`l^Q!fdH(Hw>tgJ7t!5QZ6hVYqRNr2J!iBPstFN^jXG!pHz)8^xf*XaeIH{b5{V z9*k$~g7J;(B;_CDGfDZ!i0UKzL>g&f0;4cYXf%Y0i~vk*%!Wyf?J%ivg{1srd>|?R z7)b)MPn3}gI*kI*Wz>U;@fTE$8BjB}K;5`VQvNaCk(7UogneZn(?|g=BQLa#+A!Ma z0h1e3VG3g-Olh1WDgPL+NyZctY9+8xPjPQZ7PaeYw^BNwQ&nOS`8*N|#V?A4w7}rS3KgK82>lpEd%06|C)UcjW7}hr$zy?NN*wB~-8yVY3%0I?s zlJbx759&<}$1vHasgV*kGYY`wMqSv#=nY#M(_t%PGfDZ!xIj|=G2Wuy#)vgs_GxQG z!*)hq*xslGI~YA-M`H@?WNaWQ{}^XU%0I>{)Vmm=BV?bhh6%eFxnOsrI_zO|gFTIj zu$Qrxr2J!?A}RkE&r$Df{DgfBZKUiMFtWqGMito4=nVTC@&y62Kl!xaFY=+LH5~fq=Z|H{BWyL4{kI5g4>O0B;_At6G{2U zIFI^H;}P6tgiVxvb{o-fkC6xNHEP3sMi02(m`qasG1ilme~dGzA2ja6Lxz|n`y4h* zc*MvFj~X@LF{3LyZcHF4{}^jX%0I?Q)K40B;3?xfJZ)%`Wxq2wCr$2g4oP2(E8 zWqgFUjbu}0pF4&d-Zjd@dqx|0-xy9({xO!2lz)r^s6R9=!$-z@_}EB1P4;$x~*@dM1V~!^&|Cp;$H_d&}GH*fK{0^f{b*}7}+{_MB zm{nj(vm;6Q#~eda{xSbXJ(al|rZ%s`H0BqW)^yI3ebSkJnBJ@iGnnm2%0K2vlJbwa z4E0Rr4w%`z0<)MOVT_q{zU<>RJWN%_YdMpFJU7o+Ysx5BLEMVQTe53`$z z7RWw1%q%dcSsLatTac80%)un(A9DffdCW~PuXzsUGvC1cX5>QIr+}Fe7Box1LS|Ev z@{c)yr2J#fMZJi*9u_rE!(!%3Slo=aNcJgVrh_HTqOg?Nh@|{u_9ZF*n6pqXW3GW^ z%@eSk`3#mf9gAh33TA3p(JTZjne|D^KW1-|@{c(k^(y8{Sk*iVtC^2sbu-oy*{6n? z64o^H!&+t?lJbw)lcfA(PC>nnxg6Ft55aoo16bb-T`K!DFr#5ZGY@QJ)+8zanB7Rq zKjuW#o0v;rQ*%FTX5NL(&7ZJ^X)crfTADdwE3+C&`N!-`QvNZ=q29(^2-})_U_0{` zY;S&p9ZYSx?9(d*O&{!K zRv;<=m~BbQKjsM3dz-UiA9EWFm{(w5^8@T>Ci`3V>2JE>0JAJf`NwQUQvNZAqCUu+ z0SB9#;Slp89BRIU!_34hWuM_@W;ntuMNXXb#aI(1;PBBlzspbnf&5XZV_L**`g)__|B;_Bo zAxZhi44^*C91mxktKb~-1e|L=h4aifYh<7KW-7SAEJ#xRG3$|(f6Tv7Uu2Gfi_H~q ziFp(*H6OucX2e?AXStaIt}yeFlz+_HB;_Bo2kI-$k#Lo{6s|T8!8PW6xYi6?C;O~3 zZMfddO;Y|bYmk(G%&w?!G>5@W<|4S++z+>yci>i2te1VZnFic$<{&Bmm{m#2KV~P? zcbbFYE^|KIZSH}4%$snp`5o>v)eW-Welsgc`Nyn8QvNa9qkhmF01ugS;9+woJYrsh zN6jzrnCaXo`y4mDB;_BoJW2V-Y=inqvoAbl&V;AUZSahF8J;yi!gFTQO|s8e~L zGQ4eWfOpKZ@UHm=-ZLY&$UgVY^d#jUvlvPF$83!HL$e!vWKMvO&9(4}c?v!?U&3c* zysfg&b2AM|`Nu3wQvNX;p#IYA3}2aJ;cIghd}AJmZ_Q`$o$1&n`@A>*Bq{%x1xU(2 zW?j@jm>u9pa}@k!u7ID-Bk+s)7=ATlZI^w%naN4YKW1K%@{d^y^&e(i_|qH?g|!rh zSO;OK^#F!hp*v)saLXbo|5&+5%0E_h)FZ4`Ft#-WI;=%7jN+J zs~>b(bD(1FfU0#JYSw3{TT#1ZAH(vHlz*&pB)$J*HH4Pc2in$57;SBZ$*n6eh4lfZ zw36(Reg3qvkd%L{(j>kAW7UJHtzIyVH4Ubm4%wkQ3G1hwMw$4G1^%{DuKlaH!J}Vtb`Nt|s()&MF4VcyH0<&2YV0LQ_ z%we5|Ijt8kmlb!v?33F{O;Y}`3X$~wk5v`swK~Fl)>xR|S_unSCtyMADJ*2gJ|O!P zwo;Omf2{l@z5ioXf<>)%u$VOp7Ppqe64p^z(s~3-S>Xp|pVC$|N%_ahLxu#(Smj|^ zt2HcV4Tt5eC9r~Z2v)T2!%9}jA=#(0Ws;PCtehl${>Lftwyk!)ekneX2TZNPT11A23uL5NXkD}vZJz38_P}7-@mNFu&q@ewzK-c z_SOv8!P*8pT9;ub>mQQxkCphC?9;`{Ow!-KtOBsBRR?yndcp42RM^AX40~D^U@z+} zN%_Z0a9sB3ZDknt2#y&@_9Sn*HDK7*{ZB>nx% z$^{2o)!-1T3mj^Vhr_J3aJY2}jUdUXOfkIq`!YzemL2x0H;{(;8bfQoMx?n)2$%TEn^4FgVXz3g=q~;R5R(N%_YTXJns6mO;|rzpN~9u~iB# zv0A{T)?m2IS_GF{```-eHc9!%`c6{*vDCA&&q^yJTxAu9tF5MRjWqzSwdTWh)^51o zxd9@6@FYAgH}p-$jS!~TXo&asjMWXEwI;)J)_Qo}Izv+av0jpt zf2??yWS@(c2`^bW;AN{Cykd2RSFH)~nzaUAw@#9jf2?ODnG|Tti;!3 zzmHZX_{k~-KU>Y=7i$RoYAuA{ti2@VAL|xL`N#T(`VT9?b=l{ql^zPaI1I6yz)*W2 z472CKaC;X?`NzIaQvR_&qaI<$zajg?w$ng|T?EFl8^XADKN!!R4ddI}NynzJI+nnCxQJZOlTK`iR^kXvE2tIv1h=f_7;-zkA0D({A0gEJ<5)_CHpw-|@y$wC&t5+O7eU+udObdlF1(uOlh{ z*r!R#KlTgMQ`zEFh2ry*(aguve3mf9w+^Y42CFte@P zmHo2VSz(M_3A*i$&|{B*Ui)v7@{fI#r2Jz)LfvnFfm!XSd$Lb9+Y7VX zFJixkMeT$SWS?SoCRp4q2}{^5U`cy0EM+esDgW4eNXkF{HE71FPGGVGX+xtZDa!wd`3W z1+F8Kf5yQZ+CzL?9n9UAA1E!`Nuwj`XKu{9BhArL+q#* zvd>W41Bcla;BdPw9AS?jDgW3@Ny2F0YiEJu?6PpY-3m^y zhmw?k>_sHyAA29_lkAIdvi%lLu@kxf^+OYUdujn?R0RST^!E0o4^Hjf0FW#J%^g;x3H43(0Wv~twkuAS^JpdaU!!>yLq!Vz1-V?L^vn74={}eK8yKhZzk#X!vERw% zY5Y1&>-WHP{$en_zcxwp4*EO5jQ-#}>~`o7S^U9y z$zyn4Bey>|FZm8$ZzsEp-OcV{_p+?^+`JCeM zX&5T}{@}b}XSjYAIz(2Sk3(eh&&Ku1&gYlIzw4H~-sgC|oV;Ex{|fX!&-L7XIsaCO z$m3r}b-M4ie;bzP^QX;0^ZkhY{-YQd@CWCqEa;c>RECN|{tH;YFkM&q^C`mny}-v; z6!Tk!h+=+u{{gzc8uuyTPmT3UV*S{nl>ZjSrTxMA8OvZhnva=}w>(?H|CrXJ`QNzz zCH69Vg}usNW3NMpsL1_qaJ{l$&PVPLRk(ju|7#paH5e&w*&pTp0=Mi~@1?hGgLDM$ z*nTon+_g)he%G!J@7e9K{JuR5%OBXYQGa0n4IkPEu>6sI6U!gl?@)hihx{Y^Kd}|k z5qN65$w=|cE{ggyyE1%kx5n}p_8=^OX-`M}rM(osviD&5Yx^pezp-DT{>J_e-`dGO z$o}u_Ok|{ZZx z6MdBZzuD=?Nb%jyONIo#+hyPnyD66cwEJSYh@OnPh+YIkqIY3=X!I2<4~u?TsTjv*-|Nrmpll`_m-G|-Zj^@An zcl{pziCg~Ne~9SmAA#!@_1ktK!ih1>gU2eY%4#rN4D%OEE&C7m%lYhS9&sLz;qh1= zkK^$q9#6(NROsAiI@f2Q9wKJ>Km9f@;q3nz8+;rlYq2&P%_e74uqoL;*;H(5HVvDW zO~C9sm{>x}-^?`_hl|ZHme>O$#8DVqWGyOl6U|so;|LK)Ji+{=am3>0 z!Ev{aK_?WK^Pt8NYfA^++DZO98&_OMpLpU3^$8R4g)vM1dmUdqK>ZK#5=M%TB;6NJ zh~jd82}E3&P(;B*A~_i*5)0v!+b0&8P){PV!=$1RmM0S>(Jz@Oi+Yr(2A!flmb*j? zj9sD=R73!(Vg%I06q4?`wU|BUb%e+ zQLnHxqi6~<2?s5Y5Sc{+m_?Xp3Q9V?+g+Yc3j~Ko}&L{2_sZsZd zW!R5jWW@5U!cT^XY+_*nx!>%f3)agn`jQwQko~fY2{4Bkh2=TKdW>_5=@{n}=P}MD zsuz~)=cel^_n$}nO-6{kViU|K_G10~;sPun9*_=EP`tyqkO(g+w=XOXc9iE`L_}d+ zRMf!v7ZWDN#YI|JLb%BYQIg&n3Hs-(pbv3>^HL%g)+;TF!ZM;f879h#x)_%g&0smv z5tbLdvAlv9ig5)o7FHC~VI{E;%PWieINr))73x*Qc34#$AtOXJu{CYb-OJ_qR2LVq zyoR_)*Ev+w6gfA^^Q$FppG|z$PLmY$^)EW+EQVV;m})i_#dk5S3s{Q4_WjO<-%$4z>|pVO!A;wi6>@ zdocxe5c6S2u@-g`dthgA5_S>SU{~=Nb`$@=?jjWPoc9n3U{9gLULqa*OXP&T#bTPD zmhJ~8GB=lx&wyBj`|0!*c@=pc{lw}9(*9y(OS#?v@rH~L1I5}-ay&@%#Pu8`-t3X% z!D9MA=@79P4i)R+FmY&zeEba;3LZBjM4TmZy^$gb93?)ik>k;#E1qY@2(eaP_pw6V zA?ssBayU+8fa8T9P7w9zKB}Q&q8I`viSZ=eM_0_mc(Paor-(Ihs@RU@)5IZ+r-}1$ zy0`~th___8m?=We%D%J2#@o`_V$Xi*9I*@Ixx$Ipz4L?(=ZkS3`Mj_|II>9>ipuo5 zDncw0Yja8$i#>3OxRpnamx`BgnfR7hj+cvC`DLzLA^yUBdHxn5t7NWODO@|{^ZhEJ z;dy?wh`27tt3?91MyPPD_>&A1>qL#4a``&Z0InCU;0Do!3>O_Yl^%X-p~;PP?VgFc}1ll4h-UQ$o)pgr>hJUwO_audX^%o!7k}`(Fo_YU9@B443p=xU6jQ6Z5PLJUfab{9Pf4!gX7#T)F#30 zV>JtU1IM*pw8wF57bmg*?P59hzg_IxE!W#2#$i7@#4I)%``aNNU_U#AyFzfiZ|Ju} zjOd2-b_r{Y?7LgU zA1>>=g^SIP`X2FUjI8ew@8DjMY^)sb713~?D9o0J`$aqUFL*%QVPC?7BK|nJ{XwC? zL*fK`6&@C!*jVG`dPhWWb~rpLma&`QF)@0AT<@5e0gsEG6Xp207y?g-Z)}`NvVKw= zV$Z`<;syH!o)()X%k@r+{qT&q&OU)>Ma3y{`B_m9o)b$~%IkMdY=q~W z?~BH4C-^`NW2eH0B5h~c=b^~PChZd(pP{@W>o3?03*>$uip2DME-kZH`bd<+c8|pW zY40wew79l}@7JydfZ!;2GELp+r^o+c{lIeoWlhuLZd(Cirv0{6&5cny z&)ZgZJ?^$;&2!q%pK@X=J^qf>OZ(rkMz}Fp``@urYyUgeW9@&(nylmAwVG@DU8|cL z^Ju@jR?_cH-n-T+?RU?bsO|Txd2S5Qe)p`r+V4-R++@@LPpg(2Yis+TRz+>UZ*|c6 z`&NH9cGvd%Rx53PV9nI}2i7t-j@R}F)-Y{|Pip&f zD@fa4SckR#h4qsgf7kXGR&#BCX+6;Tm)3hX3g5%UvtC+5wf&WqGTfA3Sy|keQQKcx zOSS#ARb1;|TfuHDt?jR^ug00{^0gIryc1I{F!7DmQ2V{HI=Hc}_J3mqYyUTvxAuQy z71RE2t+Cqgtu@PyrN1@vd26-Q_IK7dTK~>E{D{@xnu#>pB#SnJ*RokmNpx$%KU z5&!Q@UXiLAZRzU9AsW3T(v2H5#*x!*ys9y-d~jpZ-6l^wDeT5Tjh{#dH}=;UUlzJ? zoyG)m#*M#fOek^pm^=w3mBvKk6R&8KFPWs! zm|P0GF;L^D(%Ox^G^UW*Zj92HQjWOsyv9`W+KmbLTo=#!Op3TMNI&PLmSMb3@&CU> zCc5#`H%__wdnX3*dS}|_6?0-p1t)f`;>3%+oY;ofG22QbD>Y9V+2Y1dnkS9)=Y6Va zKgs6}69@7-V&ZIGCrm8Q>yU{z_#9>8Sbrzx=5vNAx7Tsg$aEbyjl9=!(@2Dln^s=v zcxlD%Z04O-hU>U#rA--gd|HXtd}*bL=1VKy6`lI}Rh^i*w~6WGGd(_?WOC!t4<=ta zxunOZlK}1axs=xS&n4K6H?`mA@>KhMF0HiR7gDl|IsOYN>&7^gOgR~!r%W87{nE=# zZBH+c+?Y}OrI$i|OusKBVONvqOZm)=@3cLGr0!TZrP+s zHK%?ppL@)4IqEy{cRpX4@&GQ%=w4K+~@>ujeLy*Zo&J6Fyu786o|m_5(DTYJIs2IT zXO|*woT}%MUFzxlvrDkfKf5&0`Dd3II{)l)MCYGf+UoqXOF^A~cG;}+&n~SxnsKv> z-NT6+b^h5Uht5B{G}8HJm$=iM_LYmA_{kC{hUT^gVoo5bd=f?Fq z-yG6g=bJ-X>3nlYKb>z5*`o8!A-8qDIb?*+H;2^J`R0&gI^P^JR_B{T^5}eX$SIv~ z4hhlu=8(QR-yD)l=bJ;0>wI&Fx6U_*tk?PGkQqAP91^MX%_%c)^$PcAv@#y@mk)NeBL$|X@cuUyhy=aowWbY8h+ zx6Uh<%+`73lJ`2VTyjR|l}oI?PW}-(pIov<=aWl%>3niYsz|5(vCbzq{mpo}C9xa5 z7CYq=I(}{$r{m_9cRFrv`BulxE%)1-Jh|nij+$tfkJ@4mDeeS_doTuaFks_Ku zkNCUsOC2YV+|_aNNTvp+e;&!N=aWa`>hmv;WbWkD7ts89q>SdzBl|UPUg@Oy@=8B9 zme#y^CFzgmJn~8vJwC6L*Wi44AFl1rABb+lUqM-^{R+xY+OLpAXnP@9;>Ks%uaKP3eudu>TElV;jpOgg!7nD#3s4YXe|DWm<0OT{53e{ren#%0>CxD3#K#ifDvDFD*0OSc&iNOgU8hmzHPRzqF*TZO*&29H{HWWsRJ;y@eCg@ja?(U){rr ze++eEExnKV$WG1gBZu60Rmbs>#>>rkK9cI36AS7%KJrS(@saOz93MHW@rQ`a^8XeD1M(8+xlDelE zk9r-)U#@9>f4S$zkvfjQ{H){n%T*o6U(V||{?cKU$?q@U=s5l|TgUO2BAVA<4r|^3 zIjry70^~&wK)I~>14V{A$0r@-#MYWOP%_Ul zYZo)9TA!;BXq{%$Oxc|zop<_VEd%@ZQyHBX3a&^#fsQuBn!Q_T}9&Gh(C z>EyokYMxN}X|^esm#unyd5Lyo`Y1EM^0I2L z6VGU#^73hQr~e?$Q(o?9p7Qc^o~f@Om-YAxa?6c=nx}#s*E|*EwdScHMKn(ZSu)l+ zE{VQxt{`dWn{q{oH`9z;QBt_EmFB4^Y0o?LHTC$4vRjX@DE@j}CCQ`xD@k!T{-DQI zl0^H=ah0T$9$!iN=<${0q8?vKI_mM2rMezhSsJ_Xt{z`ma_RAvrM@0tS!U?*mF1Zp zUs)pb_$m^m$5oLnZY-zARgpn@Tow6RkEohFuBx2T{#E6Q8@&#g`Bs&= zdR$fcQID%C_q2aC$rWMRt4UEeX4n4Je6VP_+OLMhyI_v5A+@z%O^Gwxlxs?IH%`!gH6@Got111pUoH7c+iOWl zH?G%ywIopc)t2X4Ut8=sCSPs&UfXL+V{NY^X|%qMWOd_HZLcGPw7stQXnkD?bz_Qy zCQn_Nr|tEmxz^W{&TcHC?e%20w%3>OT3=rx+*niF>&tK2-as~LeFOP6CLS{R8%V;7 zCN`8yTHjD^y0P;Kr#`#3Hxij^%8ew68-v~Y#%s-bH*mVVmaL~3Y# z6KUeck=ouwW@&p<8Km`1Wvm+)YkO1KqV3IOq1HE()o$FU?ajn{of*Hm9MJmaa@vhI zw7t0mX?qJve96qeg`{<3J$^s4t(H<+%Pl2@7{_WQr}m`{2aLg68-1 zR#Li{iLGUCFH_%IPP#GKWT)Jo*HKe{h0p6IHa+RY9Ga)K9M(LorMjCZZitib7T+(K z{?WV+nmCU8h>3oCOl%|BG=Cc@;Knc=r;WVPaoR{<9jA?y)^Xa%pE^z(X|Ln7kqmqf z7RPEU^Ypm366MC}dR$xiw2;%jP5ZZ%r>s*PtDOwkVdmdXM!PYO_G>4@_`b~4XCLFl z&2vm_FAKC^ds*d1Uu|zM7v1)3`%S+NazNWV$Z0p$(S9AonrqrS%3ZDRC@~z@`C7Pb(6-O zo!FjeQx0>>KW}!*&xxkrF|G^Kew}E_lioSy6+~11A-}o4y2(AFDfcYmlqVBSd7FOj z?Ist9rhKll)Bc)h%FB8?n^)=obKX1)Aa8ln>B9_DWG|KNP5lN zLoRFH9+F-2_K+i*w})h@;2amKd3#9GK2G_n=ItRh$;;m*%W+-To^oFE_mul?xw4Ma zQ`!(szY;oLPpLsPd&+yFX`iCw_mnL}Q{JWX=qbMvP1$RNnNLs2 zK{VxIdY(OHgT`L+Nf)zjy=0iqqnC8i@q0;D#xwQlikjnl$weKfmn7i%YRZ*0Z!fv3 zd3sAG&C^@vYo6XRUi0*pQkti?6wy4r<%8zwEd@1CZ|SLddP}khGrvC4h&(2?(|mno zv|Ij0^Y)RGx=wv$h34-g`*fZ9$O0Xwk8Ia<>LXQkygt&AX!6a`ar($EU57s6$9OjN z9X0lq6*^vDxuN6qm1~;6ubk7oePx{H>nm3^PhXj%$Mus#dR#wwr^oe^_j+7Ed926v zlPEo|pLpr}`hId)&$GW2;(KZ@tH1c__tpKSj$8h0t6BH{lAmbW(|_ZXOA<}FCigkh z-j!&|2Q`0x`Bmcp>8AMxNJY&vKQ!lr!#|26&6lyJ(0iKg7Llv5r=H08MZd&VHiOf==( zK2CdCqA6e1-ysIcOQI>i)89MD>*th{`aAve5Ka5`K&Sj8(UkiJIpx_J2g`3d-@$T} z`PtTBsjl-IEVFc8gT+thGgzAGJO)cj9dED{W<1ls0^^wYP{$c8yEN|*d8>Jc$nUh; z))48cd56em%{xRIYu+I;Nb?Sne42NNRMosgq`l@HB1znQSBPHLP$|Rj6DF3|-zkPl zQ@7kr%s4}34AHbt((#5$l&l~k1W0>^S{9zKQ zdBbGC<_nWYnkP)6^!P9d(*DC_iuNDINQFuAJzhe-;3yoSjk?LSOf)8ES)E>Sw~ z;j%@K8!kuP@)ziR&xV%tu+q}Gp=S6V+(zR>!SQlEM+ zYm|J-E#Jg1i8isYTP~vgMoC4Dqoty@kCs+i9wRNaJVpjn_OixG{vIaJSSd~9?>VKm zTaM8FV`ZJjanfDe$H^frkC#bW9xqol&jeYe$4!uJT0cQfYn&*5YMdkqdzx`3OGG~> zE+yKO54q*zOPumOqUpC$zb}|9$BCw#ey!79f@sQJ^nKi92`8Fzx^iaSCQBirDW48? z%J+$;9KVuN&P6ok%59u-ccLkO-rgw}B%1Qjrp2#u4og( zC3%1IIEG6hooBejUG0>6={&>bg3dEs+UY#QC7;eST)OH!!{s}jXSlS~d4@}(&Q9LE zI?r&KqVo)wcREj^&NE!D={&>gznirGd^fT>N#O;Zl=%^7qIxbAY+7rt-L& z`AwB$Zn?J3d#Vf|n)WO@|Ec0nH05b}9#dtrUZ+##t)9uGxYq(Pc-HJdY)5d zo?cf|rH`I3{fMT$k)Ai_qu13`xy|{Td`b42I8C1F`A?I@dfwBdnV#=7IjiS6O#(SD z)9)ueuW7PX&u5y9*7KMqt9Aa<a=gxSn(Wc}ah%R;n#|StOq0So{&dMO z(Bz*kM|Aw@5~kx%m*+bEbZMjGPnTCZ{&e|4$Db~nbo}Y^la4=K;`TS^GhHU@_|xT? zjz3*~*YT&zSsj16?9}n6OMS-ovSvsq<~Ku15>5M1J^vXJrE#Wg(D7%=VjXv; zT+;DoN*x_%rkv3HGbK0q_&a%NqWNaZ4|;rr{G!K4$ZkD8LSE|e5zlZbRA|%qCsZfvm`CiCi=PMpEchsd9CX(OCmJiEZMH-Jxh{bcKR0}n&Ss( z{#mk2<7{cC`DV)(`aSV%xva;}mKu88Y&os{=Ezj-H%EN5-yE^lo4j+Rm-d?@Z|Ub{ z&6S<>Gx4zYpDT~ua)kDuE1QX?JwlJ0E8B>soU^N0x4BYL<2=bY*yNulr}emb@{{(T z$NNjuZ@yI0_W5#O+vm#*ZJ#eQY4@@g$SQs>F!5{s-C%*7amz18o4gC;i!n}nv1v}Z zCeic{Sm=}+5=}XHrBiN8H08t_oN{)eDbL;Ily?wK`PUOp`2*3E)BfU=ixW-xtbV_> zKpqfHd2Iu8J`3b1(UhAscgp>Urd+tSQ?5WX<(+!|jN_i?hQUtz_e9ekzQieSAnNfO zoN^V73+17%$3h9<{Q2KqNDn>#h0<5gd!dZi^Ia%`dY%jAlAhl}$#~M~Ur*0xp(L(p z@-CEHI{$?-L+8CvTIzfkO2TeV`y-v-LOHGTS|}ZL9*ZRDFq3bQwAFbmlBqh6MKWFI zu}IeGJQhh4oyQ`1qw`oKemaju(qHGXNOI{s7Re_K&3KDsqt0WI4AOZllEONVMUrxe z)BZ^3u}H=;4=*cH@-hz-OX_?grM6q1r1OfDO?sU~O7#dc-$?09H2qKO{37Lv?b-(X?mR^NExYqA8!y z^NN%^dR;`yOg+CyS+Cbcq!iWjip06~wB}zX zZ#C~SxuyA*Ns^&vJ(o+W;ims`DW%6Rmxg-$av7q>FPHUt{BlWC%jqAtkrVTCyqC2? z3UR!Newt^6G<3_|HQx%EpzE+ghH2gv5~=I3LVnV`E98xyH+eMw3aLso`LgIZDkq9jV^6(xIhK2eh8syY8C z>7wIDNedk}O6KW!QIc-7$rB|>S~{&#rtt6NT`zmIK@VnoyKOMlbeLE}d8 z;(KKNcY4x5`)!ojTE9uWwSJQf(fUntNXOYMA^N@ZW~rs^o28$|EwWJKRyjb7Z~55? z`8;Q08aGaga>}XKIPnVSW!eY4bK(fTuQKKHd=Fvbf^tsG8|=hsAx=E%#*Cp(xne~p z?yl;@KkGTMT01A6>fpqMJ)L-ekQ1Lxa$>1SC!SvB#IIMF=x-O(dHdTzZd|AH_qQJv zciLz8I&qo56Xygtv3Z~q%jvxR?Hf8@f4j8K*WYfh^Yypm*LV6o*7^C{33#11s!+V2^g=`;w-AfW1NI6JT%Ac?8%)bRGeA3!O)R{fmwl zV1M4x=|4fo3AER0o@;rNGs-D%80W;L^PISX_jRV|_Uco->#{Al^g8iNL zt6;a*eiiM46U^}y?N28pQJw7#-ELhGy84Yj_C z-AL=J*o(Bjs@-1etJ=M_zN)=T>#Ny)wZ57?S?jCW7qq^*Jxc4V+fiCy-F~L^HSFnH zU&D^p`WkkM1!lfA?ZsMO)4r(nHSPRbU(4R0^|kEBT3^eqr1iD!@3g+QooJFdzPA12 zA}6N**2FsYac!?-duw|g`?$ZBw1N-;J}hzL9-lx~Xqu-*n?{ zt#53{onh)5+bP|6L+hK^sb-n_CUzD#CO%@yO>G}7H?=Fcv9Q)Rvj@*M?ak~7Zfv0S z&Fy7cZfn9+q<>g!7h2syJI+Mlj9^Y3bB)Y#1~>c$|A-R&RU z_^ZYq_G>rBUuRpNSUv6KTt6mmcH=PalcpRTX!Eb0^s*zq5si@=d)wRHxR2=B{^u)T zR?Yl7HeQH>xQK^O5FZJU5Q&f&Nstu$3o=%6dG35pAR{s%GqNBnvcVhKkpnrA3%QX8dGQtUAwLSBAPS){il8Wpp*a5Y7PhAZl_gOM zrQw4z@P!}z5r9Ahp)B|(Q1};7EGq<|C=dSG8vgYY%c_LRsDi4fhU%z+ny7`^sDrww zhx%xMhG>MwXo99_hURF2mS~06XoI$BhxX`zj_8EW=z^~3hVJNrp6G?%=!3rKhyECV zff$6r$ioAl8#%z{?;?b;EQZ-)?>jaB`u`2{JDse&Kc|c^L?Rm3U@nE^$OL~p#7mgV zBa*lh8xgjLN1oUW-4M#9Q{G%Y(Hw^`M4HH}pYyyj&z(%L{QvR%DCf@=Z7 z!8W`Q$7L=DBOc5>!HBspBw#=0-jIm>nEOM_J>uj0#HaL$xmToQ-`p>Z*!PT>`$k&o zW8XVs?im@W&xFj#;>t?Q25)3X4w!p~kqaN+KR&*P6sC_^XLHXm_XES+6U;^L?_z=U zo?sT+UGTr|3oQ75xHpui{CD?TyY4coB;-{L#$22Tp>01o01 z4&w-p;y6y=Bu?RboW>70gR?k?3%H0&_!+-|%{&|iTg*Kv%-dBL{LKAM&FB{Llg|(F$$Q7VXgi9nlG0(H*_e8+|bzyp^^lVhVVB%(pg{`8kAd zA@rZ2u(lI-;XCZc9z^2+4uZGd7H<=+RhEI_iY2l4bK~}VRdI<8; zw+P-M8Uyy53^CiEbdID#9=f!?6>)@bNt%n!3H%2Xj#zz~9{?j#2;L-6wvekGWU8i_7BQ zc!^hdgV%VA5gh-H>-;5N!E9xz4@NmOMF>Js0TodRl~D!NP#sm#2#rw-wNVFkQ4`HD zlH947(>O1lcleC`MZ{%D&HgsxPPCl;#{=lMjqtFSICF_D1d?}gu*C-q9}&qD1nkFh0^dr8Ti87*ZmQIK$!brS(HOC zLSXKTGe6YatGlBIdZHJ4qYwI`ANpee24WBfV+e*K48t%S zBQO%9FdAbp7UK~6wQUmR$(Vw0OvN-z#|+Fw1ZH72=3p-7VLldMAr>JLi?IYtu?)+x z0#R6rRWPrkYp@pUupS$*5u30XTd)<|@HM`{cI?1T?83MB4!f}j(b$W9*pCA^h(kDx zBRGm?%_;?jo-drw*A8Y5200bfkWl;{n2mwC{@l8MXQdER_&sP~$P!-i+-UITdE__4I zy%c=y&$rv$OTkYYd^63x6b;b`jnM>6(G1Pe0xi)B=6z%vv_(6#M+bC7Cv-*^bVWCG zM-P|}+Jg6-b5>$pcp*L#-~;tGF$)qR5fUQ_k|G(>A{{=*7l?y+_ylEG$I%RvjeT$A zK`!J#cI1RFeew|tp%_Y_6nszyf$&8IR75!hBLtzSges_p8mNitsExX)hx(|B%JA36 z)_IOTiNoadGu@Fuvo{7~F%Dhm+Xh|H4eih#;pl*#=!HHQfPol-p_qtCn1<|GT!f`!e>a1PmuyCks4``7U}RgzC+~xZCgZ+E>6Zi1|5Ag_(@dQut4A1cbFYyYm@dj`44)5^+ z7UK(Scp(nrA|4VUJ`y4c%y%G@aGT@q;I28Id3~VmJu0&=SVg_LHbM}J3Mh|?sDi4f zgvlH}1>vYhxjJf~DmlJDW@JHne2EOmh)k%4toRD~kPY6*jvUB|T*!^Q$beTh>UE9N_^MU>ZK zHP+x;e23lGgJ|rH1V4KO25txP9n1i{P zhxu4wFm@ysV+EFADWb3p%drxRun=Y&%RFP=lQG9VlM|8?i?AH4u@T>37xv>gPU9>t z;aB{DyLg0GkVKq5;v+fIB9mcrcEpkhMN{;~$J-g^bp+qz6prHK?HqMK;rvH!S1Dh{ zFZd0=;|6ZyPu#(MWMMAmOY{UhMhTG!@em)Wkp^jz4xfYd+3QHYkI3U^BoACj%OXU= zyodFoZ(P`V43+;Tn|W{Efc45wY(+Hh(K{1+VFVV#yk}2%KC92NZiD^Id-u)MZAEVO z7qbpaVBX6gq%P+Dd=K_t!+chGNAybKytiM(zIi_%kFt4B?`*Mu8*^&fv}xma@z#~ImI;nw=plz*{@Il1JL9fBmEtS@TM$j2ftmBs{l1 zMKYv7N~A*lfBn<_mpKE^TL14qR0p~CkKia`?n8gDe*-sh8;h|7OR)^gu^MZz7VEJA zk@yDNu>(7ig3mLbq8Lh|HLsICL_hSTy%&0;FQ#B3!Y~Z|&>sWP2Lmw(Lopm9F$$wG z4r4JM6EGM4n^^ITN$_B z_n)-?-7)|F>%#nE9z!RW`JKxAzGpVGpZjn2oz{Q+cWWT8u!wnG{71|G>0Tzz*?d=a znsqvbOSpooi2c3UKk|k7<$FEZXJAquPmIGPOvOyhf%!hxvw2p)vjUzK@T`Dm1^!)E zAm;awKwdx1Zy^nMpYcEWJ)|N1+5BB*|G(X0enVMGPxCv9`Hds??;bI~nZ*27Vtykr zzmJ&TSB}yGzV(Eao?tIxxSJbU@5+C5_D7e9{O1g`)ZWBu6sdN1-&xk?uUZ zQ6C8t`94kb zAMpfE;uQAd0GusmUM9wVpE=u|uc>p^jMe$8&l(OsO^$OogCFq&oHY(}kG&SnV*