From 936f897a81e34e02d122af9cfdb3cdafcdf16687 Mon Sep 17 00:00:00 2001 From: Hector Franqui Date: Mon, 27 May 2019 16:01:47 -0400 Subject: [PATCH] Finish ice zombie and sand zombie --- api.lua | 137 ++++++++++-------- mobs.lua | 72 ++++++--- sounds/mobs_zombie_ice_hit.2.ogg | Bin 16058 -> 0 bytes ..._ice_hit.1.ogg => mobs_zombie_ice_hit.ogg} | Bin textures/freezing_ice.png | Bin 2198 -> 0 bytes textures/frozen_ice.png | Bin 0 -> 3006 bytes 6 files changed, 131 insertions(+), 78 deletions(-) delete mode 100644 sounds/mobs_zombie_ice_hit.2.ogg rename sounds/{mobs_zombie_ice_hit.1.ogg => mobs_zombie_ice_hit.ogg} (100%) delete mode 100644 textures/freezing_ice.png create mode 100644 textures/frozen_ice.png diff --git a/api.lua b/api.lua index 2100245..1cd6a25 100644 --- a/api.lua +++ b/api.lua @@ -6,8 +6,8 @@ natspawner.on_mob_die = function(self, pos) if self.spawn and self.spawn.pos then local meta = minetest.get_meta(self.spawn.pos) meta:set_int("entity_killed_count", meta:get_int("entity_killed_count") + 1) - if self.variation then - meta:set_int("spawned_variation_count", meta:get_int("spawned_variation_count") - 1) + if self.variation then + meta:set_int("spawned_variation_count", meta:get_int("spawned_variation_count") - 1) end end end @@ -16,23 +16,23 @@ local function spawn(pos, force) local meta = minetest.get_meta(pos) local spawner_name = meta:get_string("spawner_name") - + if spawner_name then local spawner = spawners[spawner_name] local replacement_node_name = meta:get_string("replaced_node_name") - + local timer = minetest.get_node_timer(pos) local interval = math.random(spawner.min_spawn_interval, spawner.max_spawn_interval) - + if replacement_node_name and replacement_node_name ~= "" then - + -- Check if variations are forced local force_variation = false --minetest.log("Spawner data: "..dump(spawners[spawner_name].replacement_nodes[replacement_node_name])) if spawners[spawner_name].replacement_nodes[replacement_node_name].variations_only == true then force_variation = true end - + -- Entity names for which we are going to search local search_names = {} local variation_names = {} @@ -48,7 +48,7 @@ local function spawn(pos, force) else search_names = spawners[spawner_name].entities.all_entity_names end - + -- Search for nearby players and entities local objects = minetest.get_objects_inside_radius(pos, 10) local entity_count = 0 @@ -60,9 +60,9 @@ local function spawn(pos, force) timer:start(interval) minetest.log("Next spawning scheduled in "..interval.." seconds") return - elseif object:get_luaentity() + elseif object:get_luaentity() and object:get_luaentity().entity_name then - + -- Check if the found entity has the name of one the entities -- that this spawner cares about for i = 1, #search_names do @@ -71,11 +71,11 @@ local function spawn(pos, force) break end end - + end end end - + -- Create a list of names we are to spawn local spawn_names = {} if force_variation then @@ -88,10 +88,10 @@ local function spawn(pos, force) else spawn_names[#spawn_names + 1] = spawners[spawner_name].entities.default end - + -- Choose an entity name. local is_variation = false - + if force_variation == true then entity_name = spawn_names[math.random(1, #spawn_names)] --minetest.log("New entity name: "..dump(entity_name)) @@ -110,10 +110,10 @@ local function spawn(pos, force) entity_name = spawners[spawner_name].entities.default end end - + -- Validation: enforce entity max spawn count local max_mob_count = spawner.max_mob_count - + if force_variation then --minetest.log("Entity name: "..dump(entity_name)) --minetest.log("Mob data: "..dump(spawners[spawner_name] @@ -125,21 +125,24 @@ local function spawn(pos, force) .max_count or spawner.max_mob_count entity_count = meta:get_int("spawned_variation_count") end - + minetest.log("Entity count: "..dump(entity_count)) minetest.log("Max mob count: "..dump(max_mob_count)) - --minetest.log("Force: "..dump(force)) - + if force or (entity_count <= max_mob_count) then - + -- Spawn - local spawn_pos = {x=pos.x + math.random(0, spawner.spawn_radius), y=pos.y+3, z=pos.z + math.random(0, spawner.spawn_radius)} + local spawn_pos = { + x=pos.x + math.random(0, spawner.spawn_radius), + y=pos.y+3, + z=pos.z + math.random(0, spawner.spawn_radius) + } -- Check spawn position - if not air, then spawn just above the spawner local spawn_node = minetest.get_node_or_nil(spawn_pos) if spawn_node and spawn_node.name ~= "air" then spawn_pos = pos end - + minetest.log("Spawning "..entity_name.." at pos "..minetest.pos_to_string(spawn_pos)) local entity = minetest.add_entity(spawn_pos, entity_name) if entity then @@ -147,7 +150,7 @@ local function spawn(pos, force) entity:get_luaentity().spawn = { pos = pos } - + if is_variation == true then entity:get_luaentity().variation = true end @@ -160,7 +163,7 @@ local function spawn(pos, force) minetest.log("Deactivating spawner for "..interval.." seconds") end end - + -- Re-schedule timer:start(interval) end @@ -182,7 +185,7 @@ natspawner.register_spawner = function(spawner_name, def) max_mob_count = def.max_mob_count or 15, spawn_on_dig = def.spawn_on_dig } - + -- Process all names local all_names = {} all_names[#all_names + 1] = def.entities.default @@ -190,12 +193,12 @@ natspawner.register_spawner = function(spawner_name, def) all_names[#all_names + 1] = def.entities.others[i] end spawners[spawner_name].entities.all_entity_names = all_names - + spawner_count = spawner_count + 1 -- Register all spawners for _,val in pairs(def.node_replacement_map) do - + minetest.register_node("natspawner:"..spawner_name..val.name, { description = "Spawner", drop = "natspawner:"..spawner_name.."_"..val.name, @@ -208,11 +211,11 @@ natspawner.register_spawner = function(spawner_name, def) meta:set_int("entity_spawn_count", 0) meta:set_int("entity_killed_count", 0) meta:set_int("spawned_variation_count", 0) - meta:set_int("max_variation_count", + meta:set_int("max_variation_count", math.random(def.min_variation_count or 0, def.max_variation_count or 0)) - meta:set_int("next_deactivation_count", + meta:set_int("next_deactivation_count", math.random(def.min_kill_count, def.max_kill_count)) - meta:set_int("next_deactivation_time", + meta:set_int("next_deactivation_time", math.random(def.min_deactivation_time, def.max_deactivation_time)) local timer = minetest.get_node_timer(pos) @@ -236,7 +239,7 @@ natspawner.register_spawner = function(spawner_name, def) end end }) - + end end @@ -252,14 +255,14 @@ natspawner.register_spawner("zombie", { }, node_replacement_map = { ["default:stone"] = { - name = "stone_spawner", + name = "stone_spawner", tiles = {"default_stone.png^[cracko:1:2", "default_stone.png", {name = "default_stone.png"}} }, ["default:sand"] = { - name = "sand_spawner", - tiles = {"default_sand.png^[cracko:1:2", "default_sand.png", {name = "default_sand.png"}}, + name = "sand_spawner", + tiles = {"default_sand.png^[cracko:1:2", "default_sand.png", {name = "default_sand.png"}}, variations = { - ["natspawner:sand_zombie"] = {}, + ["natspawner:sand_zombie"] = {}, ["natspawner:sand_zombie_small"] = { max_count = 5 } @@ -267,10 +270,10 @@ natspawner.register_spawner("zombie", { variations_only = true }, ["default:desert_sand"] = { - name = "desert_sand_spawner", + name = "desert_sand_spawner", tiles = {"default_desert_sand.png^[cracko:1:2", "default_desert_sand.png", {name = "default_desert_sand.png"}}, variations = { - ["natspawner:sand_zombie"] = {}, + ["natspawner:sand_zombie"] = {}, ["natspawner:sand_zombie_small"] = { max_count = 5 } @@ -278,7 +281,7 @@ natspawner.register_spawner("zombie", { variations_only = true }, ["default:ice"] = { - name = "ice_spawner", + name = "ice_spawner", tiles = {"default_ice.png^[cracko:1:2", "default_ice.png", {name = "default_ice.png"}}, variations = { ["natspawner:ice_zombie"] = { @@ -289,7 +292,7 @@ natspawner.register_spawner("zombie", { variations_only = true }, ["default:snowblock"] = { - name = "snowblock_spawner", + name = "snowblock_spawner", tiles = {"default_snow.png^[cracko:1:2", "default_snow.png", {name = "default_snow.png"}}, variations = { ["natspawner:ice_zombie"] = { @@ -300,14 +303,21 @@ natspawner.register_spawner("zombie", { variations_only = true }, ["default:dirt_with_grass"] = { - name = "dirt_with_grass_spawner", - tiles = {"default_grass.png^[cracko:1:2", "default_dirt.png", {name = "default_dirt.png^default_grass_side.png"}}}, + name = "dirt_with_grass_spawner", + tiles = {"default_grass.png^[cracko:1:2", "default_dirt.png", {name = "default_dirt.png^default_grass_side.png"}}, + variations = { + ["natspawner:giant_zombie"] = { + max_count = 1 + } + } + }, ["default:dirt_with_dry_grass"] = { - name = "dirt_with_dry_grass_spawner", - tiles = {"default_dry_grass.png^[cracko:1:2", "default_dirt.png", {name = "default_dirt.png^default_dry_grass_side.png"}}}, + name = "dirt_with_dry_grass_spawner", + tiles = {"default_dry_grass.png^[cracko:1:2", "default_dirt.png", {name = "default_dirt.png^default_dry_grass_side.png"}} + }, ["default:dirt_with_snow"] = { - name = "dirt_with_snow_spawner", - tiles = {"default_snow.png^[cracko:1:2", "default_dirt.png", {name = "default_dirt.png^default_snow_side.png"}}, + name = "dirt_with_snow_spawner", + tiles = {"default_snow.png^[cracko:1:2", "default_dirt.png", {name = "default_dirt.png^default_snow_side.png"}}, variations = { ["natspawner:ice_zombie"] = { max_count = 15, @@ -317,29 +327,34 @@ natspawner.register_spawner("zombie", { variations_only = true }, ["default:dirt_with_rainforest_litter"] = { - name = "dirt_with_rainforest_litter_spawner", - tiles = {"default_rainforest_litter.png^[cracko:1:2", "default_dirt.png", {name = "default_dirt.png^default_rainforest_litter_side.png"}} + name = "dirt_with_rainforest_litter_spawner", + tiles = {"default_rainforest_litter.png^[cracko:1:2", "default_dirt.png", {name = "default_dirt.png^default_rainforest_litter_side.png"}}, + variations = { + ["natspawner:giant_zombie"] = { + max_count = 1 + } + } }, ["default:dirt_with_coniferous_litter"] = { - name = "dirt_with_coniferous_litter_spawner", + name = "dirt_with_coniferous_litter_spawner", tiles = {"default_coniferous_litter.png^[cracko:1:2", "default_dirt.png", {name = "default_dirt.png^default_coniferous_litter_side.png"}} }, ["default:permafrost"] = { - name = "permafrost_spawner", + name = "permafrost_spawner", tiles = {"default_permafrost.png^[cracko:1:2", "default_permafrost.png", {name = "default_permafrost.png"}}, variations = { ["natspawner:ice_zombie"] = {} } }, ["default:permafrost_with_stones"] = { - name = "permafrost_with_stones_spawner", + name = "permafrost_with_stones_spawner", tiles = {"default_permafrost.png^default_stones.png^[cracko:1:2", "default_permafrost.png", {name = "default_permafrost.png"}}, variations = { ["natspawner:ice_zombie"] = {} } }, ["default:permafrost_with_moss"] = { - name = "permafrost_with_moss_spawner", + name = "permafrost_with_moss_spawner", tiles = {"default_moss.png^[cracko:1:2", "default_permafrost.png", {name = "default_permafrost.png^default_moss_side.png"}}, variations = { ["natspawner:ice_zombie"] = {} @@ -381,10 +396,10 @@ local function ground(pos, old) end local function is_air_or_buildable(node) - return node - and node.name - and (node.name == "air" - or minetest.registered_nodes[node.name].buildable_to == true) + return node + and node.name + and (node.name == "air" + or minetest.registered_nodes[node.name].buildable_to == true) end minetest.register_on_generated(function(minp, maxp, seed) @@ -403,9 +418,10 @@ minetest.register_on_generated(function(minp, maxp, seed) local mpos = {x=math.random(minp.x,maxp.x), y=math.random(minp.y,maxp.y), z=math.random(minp.z,maxp.z)} local p2 = minetest.find_node_near(mpos, 25, { - "default:dirt_with_grass", + "default:dirt_with_grass", "default:dirt_with_snow", "default:dirt_with_coniferous_litter", + "default:dirt_with_rainforest_litter", "default:permafrost", "default:permafrost_with_moss", "default:permafrost_with_stones", @@ -419,6 +435,7 @@ minetest.register_on_generated(function(minp, maxp, seed) "default:dirt_with_grass", "default:dirt_with_snow", "default:dirt_with_coniferous_litter", + "default:dirt_with_rainforest_litter", "default:permafrost", "default:permafrost_with_moss", "default:permafrost_with_stones", @@ -438,14 +455,14 @@ minetest.register_on_generated(function(minp, maxp, seed) minetest.log("Found next node above: "..dump(next_node_above)) local next_mapblock_above = minetest.get_node_or_nil({x=p2.x, y=p2.y+16, z=p2.z}) minetest.log("Found next node above mapblock: "..dump(next_mapblock_above)) - + if is_air_or_buildable(next_node_above) and is_air_or_buildable(next_mapblock_above) then - + -- Choose a spawner for i = 1, spawner_count do local spawner_name = next(spawners) local chance = math.random(1, spawner_count) - + if chance == i then -- Create spawner minetest.after(0.8, function(spawner_name, pos) @@ -461,7 +478,7 @@ minetest.register_on_generated(function(minp, maxp, seed) minetest.log("Unable to find replacement for node '"..dump(node_to_replace.name).."'") end end, spawner_name, p2) - end + end end end diff --git a/mobs.lua b/mobs.lua index f0f51a9..90e0c45 100644 --- a/mobs.lua +++ b/mobs.lua @@ -1,5 +1,33 @@ -- Entity registrations +local function ice_breaking_effect(pos) + minetest.add_particlespawner({ + amount = math.random(15, 25), + + time = 0.5, + -- Lifespan of spawner in seconds. + -- If time is 0 spawner has infinite lifespan and spawns the `amount` on + -- a per-second basis. + minpos = {x=pos.x-1, y=pos.y+1, z=pos.z-1}, + maxpos = {x=pos.x+1, y=pos.y+1, z=pos.z+1}, + minvel = {x = -2.5, y = -2.5, z = -2.5}, + maxvel = {x = 2.5, y = 2.5, z = 2.5}, + + + -- minpos = {x=pos.x-1, y=pos.x-1, z=pos.x-1}, + -- maxpos = {x=pos.x+1, y=pos.x+1, z=pos.x+1}, + -- minvel = {x=0, y=0, z=0}, + -- maxvel = {x=0, y=0, z=0}, + minacc = {x=0, y=-10, z=0}, + maxacc = {x=0, y=-10, z=0}, + minexptime = 0.5, + maxexptime = 1, + minsize = 0.5, + maxsize = 1, + texture = "frozen_ice.png" + }) +end + local function normal_attack(self, to_attack) --set_animation(self, "punch") @@ -11,7 +39,7 @@ local function normal_attack(self, to_attack) --local line = minetest.line_of_sight(p2, s2) --minetest.log(dump(line)) - + --r, pos = minetest.line_of_sight(p2, s2, stepsize) --if line_of_sight(self, p2, s2) == true then @@ -146,9 +174,9 @@ mobs:register_mob("natspawner:ice_zombie", { visual_size = {x=1, y=1}, makes_footstep_sound = true, sounds = { - random = "mobs_zombie.1", + random = "mobs_zombie", damage = "mobs_zombie_ice_hit", - attack = "mobs_zombie.3", + attack = "mobs_zombie", death = "mobs_zombie_death", }, walk_velocity = 0.5, @@ -180,10 +208,10 @@ mobs:register_mob("natspawner:ice_zombie", { end, on_die = natspawner.on_mob_die, custom_attack = function(self, to_attack) - + self.ice_attack_timer = self.ice_attack_timer + 1 - - if self.ice_attack_timer >= 5 then + + if self.ice_attack_timer >= 3 then self.ice_attack_timer = 0 local chance = math.random(1, 5) if chance > 3 then @@ -193,13 +221,16 @@ mobs:register_mob("natspawner:ice_zombie", { minetest.set_node({x=to_attack.x, y=to_attack.y+1, z=to_attack.z}, {name="natspawner:freezing_ice"}) -- Remove node minetest.after(math.random(1,2), function(pos) + local pos_above = {x=pos.x, y=pos.y+1, z=pos.z} minetest.sound_play("default_break_glass") - minetest.set_node(to_attack, {name="air"}) - minetest.set_node({x=to_attack.x, y=to_attack.y+1, z=to_attack.z}, {name="air"}) + ice_breaking_effect(pos) + ice_breaking_effect(pos_above) + minetest.set_node(pos, {name="air"}) + minetest.set_node(pos_above, {name="air"}) end, to_attack) end end - + normal_attack(self, to_attack) end }) @@ -283,8 +314,7 @@ mobs:register_mob("natspawner:sand_zombie", { floats = 0, view_range = 12, drops = { - {name = "zombie:rotten_flesh", - chance = 2, min = 3, max = 5,}, + {name = "zombie:rotten_flesh", chance = 2, min = 3, max = 5}, }, water_damage = 0, lava_damage = 1, @@ -302,7 +332,7 @@ mobs:register_mob("natspawner:sand_zombie", { minetest.log(dump(self)) end, on_die = function(self, pos) - + -- TODO: Add particle effects --minetest.add_particle_spawner() local positions = {} @@ -315,7 +345,7 @@ mobs:register_mob("natspawner:sand_zombie", { end end end - + minetest.after(1, function(positions) for i = 1, #positions do local chance = math.random(1, 10) @@ -325,18 +355,25 @@ mobs:register_mob("natspawner:sand_zombie", { end --minetest.add_entity({x=pos.x - 1, y=pos.y, z=pos.z}, "natspawner:sand_zombie_small") end, positions) - + -- Spawner callback natspawner.on_mob_die(self, pos) end }) -- Nodes + + + minetest.register_node("natspawner:freezing_ice", { description = "Freezing Ice", + tiles = {"frozen_ice.png"}, + groups = {cracky = 3, cools_lava = 1, slippery = 3, flammable = 2, liquid = 1}, + use_texture_alpha = true, + sunlight_propagates = true, drawtype = "glasslike", - tiles = {"freezing_ice.png"}, paramtype = "light", + sounds = default.node_sound_glass_defaults(), walkable = false, pointable = true, diggable = true, @@ -345,13 +382,12 @@ minetest.register_node("natspawner:freezing_ice", { drowning = 1, liquid_renewable = false, liquidtype = "source", - use_textrure_alpha = true, liquid_range= 0, liquid_alternative_flowing = "natspawner:freezing_ice", liquid_alternative_source = "natspawner:freezing_ice", liquid_viscosity = 30, - post_effect_color = {a = 103, r = 30, g = 60, b = 90}, - groups = {cracky = 3, cools_lava = 1, slippery = 3, flammable=2, liquid=1, not_in_creative_inventory=1}, + post_effect_color = {a = 128, r = 30, g = 60, b = 90}, + --groups = {cracky = 3, cools_lava = 1, slippery = 3, flammable=2, liquid=1, not_in_creative_inventory=1}, }) minetest.register_node("natspawner:evil_sand", { diff --git a/sounds/mobs_zombie_ice_hit.2.ogg b/sounds/mobs_zombie_ice_hit.2.ogg deleted file mode 100644 index b6cc9e85e2bd39521b4c04adda9d482d20fde87a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16058 zcmajG1z1&2*EhV+p;M%rgVG^+Xyj1R(hW*CNF#knX(^GGF6k0!Dd}z`6zLKHk&-k^luIC*k))U8$K>YUqmj+P&VZ;g2^=zGO9;v!o!yIhQ zbpEo3DZqHSdANDN3}ewWw=wmwvUKvWwzhOLjl(Y^6xEmdhGOQOl91$_rNCO4oXg^!nk;`;>*bD2O^)m(H;>`z`*#83w;%xkQ~=3>6_>xMU^gmk zP0k$Wnj>ucRHzt+5v9H+jMa6u*qM)Da>#_%=kRalsx=j`M3Y-`Ca}ybr=N5 zc_^H+&YJgtGVhyk9!h9#xx#hb#OK^p=0H{4Y2<%TL4WZA zPJ}+oD#Z?o$ro?>S1m|zV&u7)(zyRf0w0LT{SHeXPd^zE#!uhKDJ9OB`V^^^!Thl_ zHRG=Z9Y!hEL0hs8ruF8ejim=c+u7j+_pjZ5-;eIfT-KUxOk34ovtxm`Y<_TU-O+ImL zEp1&-NBy@ROCQ3F=RH>E{8#5!%X8#h8NdvBj;t%ge|SzO54AMt zO|={vZDxeMkNS=P49&*=Fg@GKIQ68+U^{7Hp@f@E@~sH_4)^T-OY6MzB!aB|1vNgxPf05HSVz-A3g))-~ojMo_C*`U@? z6fVxx92Lf-2_57?&k7-6Eu_{QW&KPYIxM-788R-(0syd12>6p?;kS?l2$+F2XNIvP zekEc?B_i1|V#_%qmAN=>7b_LwzpMnb=NjSa?%L|w zmik)S`kt2h=i0in{z@QKQ)PifTf0$v;mlDx#s90jwz00|!nw9SX@KEe*wvc9ri$K zWl32rM_C!i``YrWGLF5*lCtKC!P@GK%J+MXM>yRad(F;em6h*n_wT696?=Uyd(GT_ zMXWOJVywLO-Tjn{R-c{o1z$~HU? zt92CZsJI#g8BG2b9(zIk5$smyLov=%o3dI##r-LIctH>yOzgO$T-d(;YrLOI7 z{Kj%s&{&_$X;m=Ja4t5lY`2+hs2vo<^QG?vbqhDO@sa>Y$f~Wt@i*^3#~QO=>T|gg zS^wpcUxkbH`89|Q$Q?F_1`)aR>`xH=!XzaoYw0O|z-JUA;QYWh^ z+R-OZv-QEW;uQKblL!@USd%9;Fmemk6zy}9XEp3=il)sDU}t zLnoeDYOqHEp`ik6AF-w*XJ7imJ{ZVq;7<5o85^m|Agi>HL`B7lH;Ed}qCv;ruA&bV&R9sU zq*&8HYVX9eNvUXCaVNaAm((y06s~CxFPgQxBN#f0&!)R6R?JRo#DWBK$F`Yt-=lxe z+{})%Z`Q2hPB>f5n?z9f=AuE2aPp)X$SP4I2JB(z@UbYx4kV;&L^o_Mx;emqO&gTo z$xs5{5N@wOp6P(A4iW`GAh9fS?v{`{x0Q_07*(((a2*zA!;%^nW-fJAmSSbq9+t#p zY#0@0W$m36#$+rcRbu1p)v;$~1!n<7lMtaj|IqpUfc%**Bx|T}IgBUkQG)~e zXB{!YHN)izhq-I0ySFU0Yag$ci6zLqJAEMSrInNtHcOG!K$Js)qouU z_Q3(||6NBIfp`o6L7orF6}BcY8y4QC<_A|s>QH>PzRVDODNGV@7~s2VSQsn_q(A}~ z@8yPoMPc&f9YI5J2L`sW7P{XNk~OdafXx|&Jc;Bs=iozJV$xm4O zV9ALZpg3?!rLMT3?s|3Z2+0QfFc2CJa8CjdR(%H2iWR+j_LcO7vu5S+IS|ARo9Xt7 zAi;j*BLI9s!vLyLsAL70$+6h@E&fgd2?Ny_!xK(y7R9rbDUHe6n+nD_MdWv(2l$e` zi$7vO0(jd85`?#??}|*fxc?4J{=0_tf0;xn7-!wr0pHerSV)p-z-v76np?w7ix&JHxLM*@5>(CbbGM~qGr8qT_1 z5DJe(4&(L6w}-^G}ssmQ|^|IX#+)0kT(Wn;jD%oC`AObuzvbZ z)V!oTYvHUxG$-hCir}qT3_M%|e57~YtemG{QUml)a`SS~feh@yq1$t^Hq4sEG=TaC zSBP1&X!xuF4zT9r3?SvJUBcfK)OAg){k1hc7;H=Z)%M-SKm)Wz&K+9lWfVbF-C=}2 z6g0y>ZK3i1)kYw)^$)Z_KyCf=T(X+fUua?Gf^DocAjnw$))>JW);|H6W;K2X2 z3q{SQUlBm!0)WfB-5%>~Kdd)1G({;i-j%@Y(S405VYwPhd5T{0nPi?qVoeSE?M$;6 zb=53$MV{{RWF1A8gy2cn@&?aga8C)t1h@(4`GOD-V)A}aP$()ZkW<|`&SQj%`kjy$ z8yEX?sN1A13P2FrkDCyohf7FQ7L;cu0_Yi;^kX1#V`J;1akhCo(Tu-%z(QfD^bx%f z;&@~Tk<-g>c&bgGuta1F@&DNZLjYO;NW_CZc#tj}hyVIsJVC|ZN4S67xc+;rD|3Ex!YOML?d3<@s@AiCO!)xBWkI+Oo z|0C#e2x016o9f(|i-^E0^KhTUf}&GuL|(q7;;oe&S=OiJ{Etr7+`QSwoRaEBA`NyZ z-hmzIvw=SE?#YvsUgE^ZjIJ%YrtCe?Qcu^ddfJFrXFU8P5Z(FVWadO~>5qJWu`;|2 zb@f}r113I!$s1H>GK^eii9LCTaWix;(FL3OiG!70+Ea41*p|>RP?XEqvHdiorh;VlX!ayt}NA3^scB5>7~e;OY_FueRkpOrpXk@Esr$ z2gHEn8|n!a@=Bv*chjsZC@%i;b`eB(kfTt_V>)jy)-9`T{n)MLtzJhPcL-o{0Yjm0 z8Kj~aM_(fhxRQ?U}`OXXcxanOOq#jKrxwL?d{$pSULI|Hk zAlX4a%7nALl=Fkx!;;p?KPQxn%_6~`;hkqR1v|X5kM+CXOmy5^yFle;b1$?m%7ok?=m?edn zN)(~+vv#YX72wMOc{e%G`J9Lwx;)1EOr2TFVdrRfv3hj4LolynAQpwuuzoU`5%`X# zZ`Oxv5qs|jUEV+E?WVU%M)Fy&?Z%#^ZfR|dbk{(|8_1Tr*!!xYd8Ik_>^hKTLwhElOQ)qx zcv*Q$_bW!a);${jp(C>~6hJJ+3+3t?aIHt=1uY_VU~j=cUc2&mM0n(=YDaW(^;v`Q z{jADR1J(MsS3MzVs$IXnPGD%R3}v}+wOnjk@1h8NQ+Vv5y0Lsa4*--UwD?#A+QbGy z>|>9guSU*x$BSDqn`Bx6SHlq_IiICbkdRKCvrRxFsv$npJm5UJ8^1o~_3b-XE(d&{ z1~QZZ3yq{CjwoIGiXrm0^P^77I{c z0|*XN>j2(+0i&x1_IL(F+r?Y&3Es)RudQ|U8~eR1K}(E>oGas`X{!Qud}~m;8T#l{_}CK_haQ{#2=#JcxwHe2Pih3 z;;URAGHn96LsukOP>XNN4gnt%?upjNVo~4bz01PO$t#!i{T2_XpM1fb)r`|-x>m)D zvVR#cgF=}Ki7%S{Q)G(@tjuex_E0*G2PA|!iyw3kNug^f7k|Y?&SP%h8$Qn>2Xbh} zaisL2@!3LMy!}E|g@TWwHkJ5R%qumHHWHVzbtQ-H8@JSn2g*cPZnGDKgtW|3TB6|a zDmF`Syr6^E4ieG;c)c=AN`f@NN^gl#>9&T6dn;wj{QDuxv-g(?d+#I?4}~&qSI@#! zIm|j2C}%fPvRFMmHv_O)Af$l$60%c3lvZs#5G^^kfUa$-M;67L z1T4ACu6fMXaV-uVUBvT$bFI@1Hn`|O5kT4AE#6K@%zNr&M@pf?-XUd;vtH}uM(;2A z>h`osr|uPMd_!rMo9^%4-k%$eP{5@7`D1q!(zmDqTX>HMXbuYe6~khue%7e-Ydla; zGfn}J_TfO_!(-_K6#pw;K*=E-Vy_3d0)nk05bm(%p^MBk-RtN@S@@XC+dno`O(8+blu=*^HSxmuAQ* zIyqKmjZIg%wlIME?OEj()rSpHL;ie$54!GncA6t-j)O~yd)$KIe~A+x!cRD`g(i;U=6lPU~uU?W5)G4 z8ltU+hj`&BfuZ9${95dWtuB;=$Gx_y??+FGv(;1@bRL%j(u}QyqBqHHPvr)4(32Ly z$TZnQo&ISM(Cz6T(ZZjq++YySG5>mw+3RQ5%1*(B22Q%XPI5s9%KL>>zK;iK!5 zN#UxLw5_?w*QPH$URY(m7^n5+k09~MsL9aBK%*u`hKpnzY|K?HGmj00_Wv1B`w-jb zqmLD~!eyj1ldQjVWJe=)xc=f=uV8(VqvVPWeHi3uj5TXw^0RHT*%C8f=)Z=`=%^UB2-2Zkzy%n>(22hfib z3lxGT2sQ7^^GB>yK+)TF6G*Y|w-sEpaosJLgNhecu+%uL*qaHxX9_Xl^n#1ZrEL4a zpWSEK%<#8R2No7`p=e;C))|AtwrU1JWM$G7iidqC& zR`xFAsrO4jIY7$_&WkT1^`CZLxiGBy zd+x$XpaRKZIDSkabH89qIGJ9MW}qIyjOQ?ls)cHD-QN}_eQZDT>6$J~_e$*(=~~Ml zDhO>%kpJT>v$Sr>XN`vt1a;U;v`=VBRy<{!G7lsQq)yen&2WZq<%6jJ%Q@6X>n~7| zge0PcHyk{BW6_iU{evS_g2$&@-xkh8z8@c&8Z1^EZcXF&{me5X#eJBD z`^)qum-#{VK~@HjAI?r;zo|8#UZ56xN3UW@DvF-c(^-n{M`?uSpzrm7;R(!~*Ydcd zh46t3NzSJ?yy|Q!9SQ1?SyF=4i1%>3YXu(Y@7cv6Oh8$?>Xn~+={-|5Wv5XbSUiF% zW+5QqtYkSwoxVfZG;@Q4$XjX3J%9p_L%b?tI7v-woK32V5P=egKZbp&sf}xS@!j;R zr@uobtk>xL5PO}D-=?wg{evH0P0E}Ae)#j^uOCgsg4T(6gLgbyIa2MT7QFf8HhlwoePm79zb8~h948R*~w?7V_t*gc2 zuK@_-`Nm|uGCiLIA%h1T(z8v^GH8cdjjW;iZ2f+;B?jI0hlMV0qusoiTXXwI-5yml zl#&w;r!A&?zwmzM?29?07osp!Z+l$L3uWr{f!FK5@L8cPpF2rUE-j_QQ%Ri+9kK_0 z0Kg9~_jnQq#!AJFHJKjfqf$!p1qlp0y5h}pA2aj!B|5aP_#XLR zt8pzB?A&m91zwN*>3@-8DF|qpD%lVPInt>>#>o&UBwvEJ-d5@rolY+Lo5b)4-%PvY z_)uVozPyML;bINYJUDbZ+}tz@B-C=jVSx12$VeO9t1f-Gj&Po>rmXrsA~Xerv1K}#>&u2_Q(rytr!5L~V(ifUe#V^g%3ktAb z4-HapU6{_clJqlIVEXX17ukLtBz`dq#K3QqU({1Rk#({OfJiASb}`_NRMR)De(_uv z`KYXGOU0PyDu6Zy^`=n| zQy%1b!o=}jx=;3*@8d#;Yp&k+jDT3skc>&m0?*EQFHnGS%bT!V`ZE6P^+b^@ckn9T z+rwQdDmWJ#pG4f`r0mV;oKXF>0Ss^m84FwJkiVjpVpwSuAxlJ(+Jr>~DJQH%*Nf|E$nG*@8X zvZe{{(JKpm;`60O3WzqGTEE6G(G)9fk`7>XQVtrD6ir{~1E?Nwi68_D*0>}-mMx&o zlu18M@7oPwmT=^+LeCe-`lPMc_eH;yC0&p1Br8e>knyN`BKqC>)yo@lfBkVr3ZtH) zTMa??M6=!0Qu)L3UTk3+;;UE9@B%o->GJ!u*TW5t(8MqvDT#eSM+E*g<6lP&X8(QEfC5(U&1Ou(#rXL6h2Z=mx3J4w zette4?nffRVxl6VLSma=Z*gzgd3bnu1$hK{_yq;weBAuPBBDG3{C;6)jAnxAmVNS@ zMd4V7-H9nsS+V4`&{$OzdN+N;x`QQ-SAliEuS&GMiM*?j9lHI2Ub9(3%7}mwG>6zB zNCSR=Dr?*R-wWw>v@O^ULm9vj3e~?yHR(EjZ#U3o`y&|_%BC1GCFS;ZPF~{D7Da#B5WPd zN*MBuEDa^z-h7;V3+ZQRv^l*mkH>Z3RQsxz;m5jC)d(qdAob<&izx$pLam^&bH?XK zp^-Q;PtCnl@DgRleMnO!abV$jv;5+&kt;{bqwNL)I|Bn>Ea;D|4%wQj;w$Tq7-dk{ z1k`LASpX4ctCm64U6|J6R^{=DS1Fq!i?81#P z98Y^PXA2!aB?1s5q1NusbS<6%8>^I`t#59BWh=Ji z_3zsPY83|b0lv}xGs9i<#zRuwdQ@a^z-E1JK$x!r;=p5i^nw;87DGS2#|`_l)7MI* z#<>MTGoMBmg9V2z0J)b+LOSSE5-=U+t&~dQ@;*{`$pZ zw2twN^d*6=yyolP8`(sCkrpMn3uI4U!&Qo$D0kniiH`9IB#zKvA5I!duHVzFq*P9Y zF*}ZOroDV;7z_bYdc9s4_3Yk`VE{Tho4WlOZXqr1MTD_+t#kmuLVk`4jKRpO?MNHJ z6WTTmVhlhu;C>S!fKP)QClldDiJufM4|3(pydOp2V@1d`^`_xEyG{5V^BJKBzP@ZJ znqtC;@Qo;MB00fX+f3_a(4h+~vHQ3@LYZKKIDF4oa)U@9BNJR?KWD6T!jt zC+%!Q`E=p__9MqHwN_o;he<*z@4OLxDz#=stYV(sR_UDS{1^xoj81h2LYiBMX}WfV zehW2~eCh&$qWqoH4!EKOEa*K%OOC!N!RO@N?^^*;?H19$b8bze(Dr z-5~x-l!U!QBi#yK@%=gwnG3Ovw2w*WzP-?goG9m0@vt1pvWj*?p=TOiHD9kHmhP>8 z$KU$a_j2dbwk#(a8O;Kbf!xdycBP9(mi zxGT*lM(?&lf6!21F<6SX;QjpQl**`)cGU&T4klQoP)(#7jk-M0nkbMW7$Rj|9Ev}k zn;5~`{Ns#(DvK*cdC=>fXt|d1{CNW>_>@am$47x0y3z5ajP0UHorGgO?l*11hJlutgl{t(DPBPf0tta8vqo@G({Uh;|FPfXQ)hiPg5)0_`8z0?fau`9P3 zrnNP{XfsaefKU}2PZ7(4+Rynw=rtVzAqhl$?(Fn1DC{tUJ$Gk4pAElN^7lLUjy`y@ zR-!mYP4Var{8r)`0wgQ!{Ny#b|DD`1R=2b6n=d?ah6Iv{pmH(Xbrykdn2`ohA=K=W zg1L^1G{3O#kD(KA1z_wUvVEXWfn?JOnl1)`8Psi3waxi5z#s^j-iip^ycSCnNjeQ0 zQ6d|t^I>F!Q8YR)1W%zo#%61c#y|;_op}lPd5o}^)1?vr}oX-fxFe?E*{#G=0Emxvzcuj=UtGLj0$;OY6C zWaZM@L<7dklye2>?@&c-d3)=xU4f+?(pn7(tFQejZ^!fZ`Ury{V|-j}HnGV?pY{(w zv`qutB|l}IC*G^uGAMjGFhE6S%Bh6RK3+G^Fs81Vp5wn+a$JflV4<`v**RY)D*>wW zp^(&73^<^s2*x&kPSD>|Kb>DC;Q`r9aLau6^4%Z1wTzZW<_P^0Ow6jzG{{rJ@SyC6 zpMt9Z1z4>a{x*wwYmJIu$NcHoQ0WZLPzK#%|8;hnLb)OL`%$C!k#df)CD){8a0=#n zCZ1ov_H^wZr#&rtT8fZ#P;u%IO^Mc@^b#M$EE$sr$Ew~7*XkL!XV-FKyxxgYWG*PfvT$4xOyk|eaqDAUgr4gj{%Ju zqILLc;gJ*j?k)2Td;HX-ITg=lKj(H;GPR(~k=Fap6f{S~9RM$%0JI-yit%V&OUV3) zJqNFbXI3b&VXaWQ9VDu_DvEFCvp^-Fi?>Nc3w=I%lCHPInucoLJus7@_GYQ+B8lI% zPjiWkY?IIZBi(@ZbZ~HD)=h}9n`QRBa|ws+*H+Sodz-fBgOtYOlntedyI7<#k7*1I zuxlto{VN?U(%I`#0Y#Z_b|plH&AP6&wjY}LpcIwLGFSd`*dK!Xo-Q!EebStgxA}Is zx#KaRpVH6aOVE3(%chu&xh-zvtM+>Qr@XbX^5aZX>Pz+@PLpjFv>}+-5g=BFYhu~yI?nz+SiJL?3V|Dr`Uzc29vX}0LxUj1 zPrD6xE%7nLFJzW~xNuZ|jH>0mxud)IYsrF~>T2g78@mk&6FtV}9$MdiUUp!ls9pQP zV=Zf=>?>HXypNaKHRcAihx=08Ii{$~T`FtSy|e$j7|Ph znhF;rsT!bP@08nP`_T7xpy>O#_0sDXTfWg=sc&zo8df?sQAuCHse1%xKJDJnU?+?v z^|3?eT7+N<*N^>adJDA@5rxeuV%jPziAA>Aa;0pA_RmJx9o79kwBP!-6qU|WFUBof zZ|09!sYkwL=rSj3>t#W&{xDl`^oege)`#c!IcSGh0WK)e4&mj+<4_25JrwxHL+plQLv%fh&@(xk z7fjjkvCBAXYWPJ=H_-nKN;lq243R1Q4Wz0TqA=*=T%(Q``$MBmNMR_aB=tEEZBc)x zf|}&!ACDnDDoPI5TvDyB`5^q3Hyg+Xeikj`xqCo68rs)SSW{`eO|);d zievR8U$FWEL3EvoXe{f7um$o9=1?*|YHcO2YKF@!0v2s2Jk=aZwJTdqg1Q&9L=u9Z zs|EOWCM<767rxh}+h4zx^QEjg5>3TlXvYDJ9KDF&0}pWJ=zzWXKW!Lx`wQwH7csrk z4fo%y;f4YU)wwhwo$Yy~Y@$LKK1kP&Fsmq_{$ps-gx3P}|`z<@-@OS350GV$=t;8yH%A^hEe)t006_($cGs>tqdeDQ~Ms zsGn+U0M~mze*4V&C9Zp=%}O>}Dg3rBtL{N5u$;k%lgN@S!jpAk)?WZTQRLVsfAacx z8NbY+O$AcYqUGRy-{0dlH+*EiE`Nw7hgDbfU{J(JWd~ZVi=mAiZr3a4Sp}wz!T}Ss zAL|^Ewh-XjTC}Qj+_F%ME&EX5ARD>Og2(zjUE1A3Tc2n0>As9?ON#FGEHV&UPi!+S z^L6K#;H*6P8zBUJ`Hjyic*>hu??v%}tsXzxgun>Cd{`mtdT8^>NS@f_LJ(O=kXnVY z=U^`=L0Lm1-8o~nf_4)87{*#Qg7uTSAmFe34(NaoHcA+$6G$RdF$ z4f!-5?Xi{V=3djmo@+@CbB!Lm;}2M!7A0)Sk=aPOg0l&L!E{ICiP*aE%W0M7X8?^$ zNMD71{W!vLKh`SY4PK0cY6eHh(la^-k~|aaS?@JNmR*Mjz}W>>rzk+I5SFD#g%$Il zj-!+Q&wDgZn+S~7NiokgOt{_xilz1^Zd1sb=ynFPqR$3siT4sd5YT`a@cw=$ zNKkzrkMdXJoB;1PgR$YaxaV5N^Zi79cMEP?BK3(n};+AYEhLMN? zXMd^(vqa)dNmI#BY2v1;#uUj5FE6XP=QjAB!TDdV^P%q~u0*eT* z_B}i3BI4bj0!H3vmJy*82aL}n%=U%VabGN^BrVHZjis?#R4;5qx`*GS6b9d zHredy?KscajWNzP$jcV!wTvuq4EXt*vTmKlb1J`5q|!79A*f%=eI4y&wSLL=f%;nB zaf~;MxUOAycXY~-vpqww6~&VMl&kr1x*f}wU^ax%%Xk+F5KMf+Y@=T)?DwP=_X!}n zbi~uA!(WH~?uP=^UKsppZX6NM7E+}lfq*U)37+@QW8~a~0+8uX2XfCF*Sb+Gf8{WclXpwU-H# zzz>C(E$bzL5y7CvUw*cdFh@rM{F`;y2hBet!K7#3AVf-{`-mK#%H{Jy_N>UMH_4ig zLz^%7_6B!x-`LAFx-*>Z-@bn}$|Aicnp1Eu8Usk>Sjprn1AhHLTQ2)jEas3R#9Uf9@h4@Z0)+b|{tw&)26Kha6J#WaH!4 zyIF`4X`>tl|Kt^P7r75bKeR-E)ugP*+u-u}z>L5Z2r@~M(*bax8F<7*s7_Lm_EvyN za9u>QlN6Nda1TtEJJC|I_7 z;xP^(6Zjf1t9UH9_f8iLD^{W8a4o5qx8yw0h8n_u$D+52q^hc! z+u}~A6OYqH1hr`d4-VB57v_e>~`}V`gqG0f4fjI?PGK%aAmYA zPnu0F$NqwZ_jwI;s#)_~!h381Rl4%thgvaykhlG(^Agw5vdhi*9;sOFBS32J0#!I< z)8sxZSqX84g@@EO`1$zVZ73gGyl1YcmQr=vpgHTUgs` z4zm8{HyY_5h0Y_&zl%SaHih|Ky-~jHQ}5_RL%Ag*gQLc8K0d!BCgHhwKHb|tzIA+^ za}@Xrn;($xobIy%JZCI;aq>K9Icga*TrZAYW%?Q8f2w26rQOW~Kdi@?Z0BYdx>n4*Rp;HCrIA@?O%ptcNY$|Gz9q-3b0P02$> z3Y@^|ud=K$l{QREwxEE?kNNj;#Ua0Ef@C2w$K$*YNex)|d(+s1NX01AU-HX+fS&ZE zR~Vna#LjBA=kI0%_5&ko-uy^GGOxdl@%$xALyZ>&07l0px_SkYG%Ue9bT~b<6Kn6k zEY#4x9CQZ<`BxzM^^oV){E$+-Z-4 zqRi;f3ml4}_1p2E!p^HCBGW#WOX9F*zQs1FZD7YIxg|nQJd2ELXSMX3-(ZRYUIAK? zJG|AS4Xv)>`u6tJ-_U>H^_X*va~`S^+N>=Z`?zcVIsgXiyd#JKAv_siehDDJIt2I? z+QNK}0=yxSnp>QRkvB3b^$58JKUyV}P~jaReBe(_mhda58QK6rWZJMiO0|47L>X=> zY|=)FXtDZ{r;LQHpp`@t%FmB~=T~D}h6fiq1NC&?r}v0zR98c;)G9a#QN-wIsDPgw%MC@#`I!VhFx^i+2JqvR+Vj`k z_YjXyv~OgGZHyA3=JcQi{%ZgH{q(0%J5>-mu=c}%;NEq_VAThTtXqQN0>lG)ui%)N2B3wmhsFqR+y3Uo*1k6Xik^XOqzXVh5%O9 zEQ zC~r)m7Q!yVu=6pfh6%7uhXb=@!x=Y|(zcD-s0+73JL^Fb0&DpIu!pNF;cKY$>B`!Z z5|OtJScrdmIvotaR% zVZ~PEQR4k28t%Y0fLf*Wr=>S6H6I72BOJyTsu=YLJ3B9HkE z^{ulpQ2naqES0IEO8fYD%|B#9`wfW<{DPzc%iB*@s-o$v@u@Rn5D(2p9X9i542S!X zUFtxgOwp-PWw$d05~005#sN?k>lW?~+`EUOCkBAqw19{wdiQJiPqgBH=C`+ShRD4+3?pu(>~J2Klr4*L*y85m&TNenXO+{kj_1> zqE3inv$VG3Jy7v{H~PYUCY^vj1=yfmKfSuZu80;W4!}zX*D%0zYFAn`rlNV0M6(Zi zqPWapTJYfUmhb6twnY)Im5Cqtzig5f`zh17Kh||Ip7}3U&m#RAo2i}Z~G z2)rboMUxh@kAAT@zNS!WwL-#PjPMeSRK#sd3kgYha;K&zxl4bR`uw$`Yj|*nt1L*) ziG_rx-+Ii5^S)dJqs|ZJ4ad{5-*7!5flgZQQzq0L+ifulIYH+rVjoh#q(k+_RhrY> zL{%Yo6Vl&<^>x8eH295(a@ZRI0`vKI_%;Bo!2TQMfKXCa^MS;p?8Z(3!F0Wl>{YV0 za^YtXJwgD@z;CU)$d@ke*)6}b2*1$Cu|gU1>Mf7(()U+0N)b_SW!_y_20aO}B+{>~ zIc81>y~-fWe^hMyjdVbK7eQe%#4k%_U@TmUJ-$VU{k0Gm-^N~XeLF40+OD3bk zdVh9H+O1!?(MRWtU7ZgMOct%(x1r1U47-0!h)(R~t6jw^I4nR1vH;q-vO%YalLBPT zwv*heB=fSngd<-Y7sNUEe(xg4XdXsul<79%>-Q=a9@tU(^>5HD-}uy84zw9iJkmw?iNEg)sB_FJg`Maef?ax8>8_UeMgsF08>FpP)8`M zhk?*&(ZTR605U*oMmw*BixFZ4=}lMYS#(vDXeQ<$M~yNK>Z`3(;i5C$fNo<4bMjFlTKDK3QkT4W1 z*aQF+VQmj*kkO8GAnPfRj>beH@W{|7!*gSuDNumCH;vSQHr57+!)C6HIg!>_)w->z(r62OmBAQmMP{d+4!qPdyLh+OWe7Kf;KEM;iH5O;r7=8r_uptQv`GQ!%&3 z#fNGz$9O={EGK?y2E~jcC?2N*NN6)P(@f5psoc~|CxcDl4OAmP#c4DZgMzM;@qz|1@n z7+C!goxa5+t-8h(gye&trrL9Onv+-gS+nm4^$65L$fyPfFk4hbc7%>xkLAEMO) z(r|p{?bF2{ET* zBObb_Pr`hFyh7!Ou9{95oFGT){3$w|VY0bV&})&M&Pn}<(I3_9Z}9Po4)x%n$*815 zw0m>Jh`0GaWi|`hcsuoyL{Xo6uAX%RuPpMEQi{i^az7unDoM^|{P{f3kbZHAua)^d zwgUL&JQ5XZ$FXu$yGybC;GMd<_u9K4)x0^Z6t}%RiLG9we+$BT)ioV5T~hyLzN%Zo zMuEfsp|&x&&f=LLb?aB^>EX>4U6ba`-PAZc)PV*mgMnLUZI4S+xl1N%(D2u>XF z&pIRx-52aHLL{(d$@a;$?vSnJCY)}5c*4uSG&NuxRVR(0a<6E$(IkqT{k+5pvHT_= z4>0}|)?6kJtN;K3N@-MBbXZMHI%98bE@5PEVr4FPZEyeq098~*EjR#JO-wptZ*4AN zWN%_+E_iKl07!}Lma$I5Fc60KK80oGy*{(GW^Z#YTN(8M+3d6K;8P{(Q z)B3BC@z*Cn0wh2JBtQZrK>ihEmQMi+l}}B*k4HaVqHG@|ijUs_00DMML_t(Ijct=n zOT$1AhM#P*Nwc+8L~W5;i+b?$>hJYu_zwgRUIZ(mAX>0~px8<@O*9_b-E5lVwmb98 zyfgd8IXR26=bHCFpI{0C;;% zN-%(EwS6w{CyZvDbyBDVdtIOB;iLrVCZQ6D=i!9!=&z8V;r>G&vz0}0MyLd>wvU*H zJfW7_W{TlO%J%HGfRW*|Ce17#~&MI)|bc6B;dJJu04cmpAO_#&% zfWbpt_JQv^wA#6atKi*^004&%004{+008|`004nN004b?008NW002DY000@xb3BE2000U( zX+uL$P-t&-Z*ypGa3D!TLm+T+Z)Rz1WdHz3$DNjUR8-d%htIutdZEoQ(iwV_E---f zE+8EQQ5a?h7|H;{3{7l^s6a#!5dlSzpnw6Rp-8NVVj(D~U=K(TP+~BOsHkK{)=GSN zdGF=r_s6~8+Gp=`_t|@&wJrc8PaiHX1(pIJnJ3@}dN|Wpg-6h_{Qw4dfB~ieFj?uT zzCrH6KqN0W7kawL3H*!R3;{^|zGdj?Pp5H0=h0sk8Wyh&7ga7GLtw0fuTQ>mB{3?=`JbBsZ3rr0E=h-EE#ca>7pWA znp#_08k!lIeo?6Zy7)IG?(HJI3i#YJh}QRq?XUb&>HuKOifXg#4_nNB06Mk;Ab0-{ zo8}<^Bt?B|zwyO+XySQ^7YI^qjEyrhGmW?$mXWxizw3WG{0)8aJtOgUzn6#Z%86wP zlLT~e-B>9}DMCIyJ(bDg&<+1Q#Q!+(uk%&0*raG}W_n!s* z`>t?__>spaFD&Aut10z!o?HH?RWufnX30 z)&drY2g!gBGC?lb3<^LI*ah~2N>BspK_h4ZCqM@{4K9Go;5xVo?tlki1dM~{UdPU)xj{ZqAQTQoLvauf5<ZgZNI6o6v>;tbFLDbRL8g&+C=7~%qN5B^ zwkS_j2#SSDLv276qbgBHQSGQ6)GgE~Y6kTQO-3uB4bV1dFZ3#O96A$SfG$Tjpxe-w z(09<|=rSYbRd;g|%>I!rO<0Hzgl9y5R$!^~o_Sb3}g)(-23Wnu-`0_=Y5 zG3+_)Aa)%47DvRX;>>XFxCk5%mxn9IHQ~!?W?(_!4|Qz6*Z? zKaQU#NE37jc7$L;0%0?ug3v;^M0iMeMI;i{iPppbBA2*{SV25ayh0o$z9Y$y^hqwH zNRp7WlXQf1o^+4&icBVJlO4$sWC3|6xsiO4{FwY!f+Arg;U&SA*eFpY(JnD4@j?SR-`K0DzX#{6;CMMSAv!Fl>(L4DIHeoQ<_y) zQT9+yRo<_BQF&U0rsAlQpi-uCR%J?+qH3?oRV`CJr}~U8OLw9t(JSaZ^cgiJHBU96 zTCG~Y+Pu1sdWd?SdaL>)4T1(kBUYnKqg!J}Q&rPfGgq@&^S%~di=h>-wNI;8Yff87 zJ4}0Dt zz%@8vFt8N8)OsmzY2DIcLz1DBVTNI|;iwVK$j2zpsKe-mv8Hi^@owW@<4-0QCP^ms zCJ#(yOjnrZnRc1}YNl_-GOIGXZB90KH{WR9Y5sDV!7|RWgUjw(P%L~cwpnyre6+N( zHrY-t*ICY4 zUcY?IPTh`aS8F$7Pq&Y@KV(1Rpyt4IsB?JYsNu+VY;c@#(sN31I_C7k*~FRe+~z#z zV&k&j<-9B6>fu`G+V3Xg7UEXv_SjwBJ8G6!a$8Ik+VFL5OaMFr+(FGBh%@F?24>HLNsjWR>x%^{cLj zD}-~yJ0q|Wp%D!cv#Z@!?_E6}X%SfvIkZM+P1c&LYZcZetvwSZ8O4k`8I6t(i*Abk z!1QC*F=u1EVya_iST3x6tmkY;b{Tt$W5+4wOvKv7mc~xT*~RUNn~HacFOQ$*x^OGG zFB3cyY7*uW{SuEPE+mB|wI<_|qmxhZWO#|Zo)ndotdxONgVci5ku;mMy=gOiZ+=5M zl)fgtQ$Q8{O!WzMgPUHd;& z##i2{a;|EvR;u1nJ$Hb8VDO;h!Im23nxdNbhq#CC)_T;o*J;<4AI2QcIQ+Cew7&Oi z#@CGv3JpaKACK^kj2sO-+S6#&*x01hRMHGL3!A5oMIO8Pjq5j^Eru<%t+dvnoA$o+&v?IGcZV;atwS+4HIAr!T}^80(JeesFQs#oIjrJ^h!wFI~Cpe)(drQ}4Me zc2`bcwYhrg8sl2Wb<6AReHMLfKUnZUby9Y>+)@{ z+t=@`yfZKqGIV!1a(Lt}`|jkuqXC)@%*Rcr{xo>6OEH*lc%TLr*1x5{cQYs>ht;Of}f>-u708W z;=5lQf9ac9H8cK_|8n8i;#cyoj=Wy>x_j1t_VJtKH}i9aZ{^<}eaCp$`#$Xb#C+xl z?1zevdLO$!d4GDiki4+)8~23s`{L#u!TG3YO-ZLdlXdQ|ZTf}jwY&<$%kjqxxv+1)qUEUB5;u3EOvw~x2S7kegqeA1i& zbhy1JjF>%fP-MnVMy$T)yFxB>z!D`e4i7WXS~Sk@uKY?OQJAsH0b4VlaINlGIO_ z!Sej0ffOOAXOM%j|LP!xQ>8Ez4G_%z(mdZ)AD3kP2y??Rr2qf`07*qoM6N<$g7gHd AU;qFB literal 0 HcmV?d00001