From dca6d98f5fdaf1366877d25475822a3044665d58 Mon Sep 17 00:00:00 2001 From: Fox McCloud Date: Wed, 4 Sep 2019 18:40:34 -0400 Subject: [PATCH 1/5] Refactors Corgis --- _maps/map_files/Delta/delta.dmm | 4 +- .../MetaStation/MetaStation.v41A.II.dmm | 6 +- _maps/map_files/RandomZLevels/spacebattle.dmm | 2 +- _maps/map_files/cyberiad/cyberiad.dmm | 4 +- code/__DEFINES/mobs.dm | 5 +- code/datums/diseases/lycancoughy.dm | 2 +- code/datums/diseases/transformation.dm | 2 +- code/datums/dog_fashion.dm | 176 ++++ code/datums/mind.dm | 2 +- code/datums/spells/shapeshift.dm | 2 +- code/game/gamemodes/cult/runes.dm | 2 +- code/game/objects/items.dm | 4 + .../objects/items/devices/radio/headset.dm | 1 + .../objects/items/devices/radio/intercom.dm | 1 + .../game/objects/items/devices/radio/radio.dm | 6 +- .../objects/items/weapons/extinguisher.dm | 2 + .../items/weapons/grenades/clusterbuster.dm | 2 +- .../objects/items/weapons/tanks/tank_types.dm | 4 + code/game/objects/structures/bedsheet_bin.dm | 1 + .../structures/crates_lockers/crittercrate.dm | 4 +- .../structures/crates_lockers/largecrate.dm | 2 +- code/modules/admin/topic.dm | 11 +- code/modules/clothing/clothing.dm | 1 + code/modules/clothing/glasses/glasses.dm | 3 +- code/modules/clothing/head/collectable.dm | 16 + code/modules/clothing/head/hardhat.dm | 9 +- code/modules/clothing/head/helmet.dm | 12 +- code/modules/clothing/head/jobs.dm | 8 + code/modules/clothing/head/misc.dm | 7 + code/modules/clothing/head/misc_special.dm | 6 +- code/modules/clothing/head/soft_caps.dm | 14 +- code/modules/clothing/masks/gasmask.dm | 1 + code/modules/clothing/masks/miscellaneous.dm | 1 + .../clothing/spacesuits/miscellaneous.dm | 2 + code/modules/clothing/suits/armor.dm | 4 + code/modules/clothing/suits/miscellaneous.dm | 2 + code/modules/clothing/suits/wiz_robe.dm | 8 + .../clothing/under/accessories/accessory.dm | 2 +- code/modules/customitems/item_defines.dm | 5 +- code/modules/food_and_drinks/food/snacks.dm | 28 +- code/modules/holiday/christmas.dm | 4 +- code/modules/martial_arts/adminfu.dm | 6 - .../living/carbon/alien/special/facehugger.dm | 13 - .../living/simple_animal/animal_defense.dm | 13 +- .../mob/living/simple_animal/friendly/cat.dm | 6 +- .../living/simple_animal/friendly/corgi.dm | 669 ---------------- .../simple_animal/friendly/corgi_powers.dm | 2 +- .../mob/living/simple_animal/friendly/dog.dm | 754 ++++++++++++++++++ .../mob/living/simple_animal/friendly/fox.dm | 2 + .../living/simple_animal/friendly/mouse.dm | 1 + .../mob/living/simple_animal/friendly/pet.dm | 25 +- .../mob/living/simple_animal/friendly/pug.dm | 30 - .../living/simple_animal/friendly/sloth.dm | 1 + .../simple_animal/hostile/retaliate/pet.dm | 2 +- .../mob/living/simple_animal/parrot.dm | 3 +- .../mob/living/simple_animal/simple_animal.dm | 80 +- code/modules/mob/transform_procs.dm | 4 +- code/modules/paperwork/paper.dm | 2 +- code/modules/projectiles/projectile/magic.dm | 2 +- .../reagents/chemistry/recipes/others.dm | 2 +- code/modules/research/experimentor.dm | 8 +- icons/mob/corgi_back.dmi | Bin 7022 -> 6390 bytes icons/mob/corgi_head.dmi | Bin 19699 -> 15791 bytes icons/mob/pets.dmi | Bin 67279 -> 91424 bytes paradise.dme | 4 +- 65 files changed, 1165 insertions(+), 842 deletions(-) create mode 100644 code/datums/dog_fashion.dm delete mode 100644 code/modules/mob/living/simple_animal/friendly/corgi.dm create mode 100644 code/modules/mob/living/simple_animal/friendly/dog.dm delete mode 100644 code/modules/mob/living/simple_animal/friendly/pug.dm diff --git a/_maps/map_files/Delta/delta.dmm b/_maps/map_files/Delta/delta.dmm index 37231b29651..1c7fca84edd 100644 --- a/_maps/map_files/Delta/delta.dmm +++ b/_maps/map_files/Delta/delta.dmm @@ -63383,7 +63383,7 @@ icon_state = "alarm0"; pixel_x = 24 }, -/mob/living/simple_animal/pet/corgi/Ian, +/mob/living/simple_animal/pet/dog/corgi/Ian, /turf/simulated/floor/plasteel{ icon_state = "wood" }, @@ -94462,7 +94462,7 @@ }, /area/toxins/explab) "dnd" = ( -/mob/living/simple_animal/pet/pug, +/mob/living/simple_animal/pet/dog/pug, /turf/simulated/floor/plasteel{ icon_state = "dark" }, diff --git a/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm b/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm index ccfadc2ab79..ea3d11be89e 100644 --- a/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm +++ b/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm @@ -44349,7 +44349,7 @@ pixel_y = 30 }, /obj/structure/bed/dogbed/ian, -/mob/living/simple_animal/pet/corgi/Ian, +/mob/living/simple_animal/pet/dog/corgi/Ian, /turf/simulated/floor/wood, /area/crew_quarters/heads) "byf" = ( @@ -68716,7 +68716,7 @@ pixel_y = 32 }, /obj/structure/chair/stool, -/mob/living/simple_animal/pet/corgi/Ian/borgi, +/mob/living/simple_animal/pet/dog/corgi/borgi, /turf/simulated/floor/plasteel{ tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; @@ -69612,7 +69612,7 @@ dir = 4; on = 1 }, -/mob/living/simple_animal/pet/pug{ +/mob/living/simple_animal/pet/dog/pug{ name = "Pugley IV"; real_name = "Pugley IV" }, diff --git a/_maps/map_files/RandomZLevels/spacebattle.dmm b/_maps/map_files/RandomZLevels/spacebattle.dmm index 2525d05730f..c48e4632627 100644 --- a/_maps/map_files/RandomZLevels/spacebattle.dmm +++ b/_maps/map_files/RandomZLevels/spacebattle.dmm @@ -2300,7 +2300,7 @@ /area/awaymission/spacebattle/syndicate7) "hr" = ( /obj/structure/largecrate, -/mob/living/simple_animal/pet/corgi/puppy, +/mob/living/simple_animal/pet/dog/corgi/puppy, /turf/simulated/floor/plating, /area/awaymission/spacebattle/cruiser) "hs" = ( diff --git a/_maps/map_files/cyberiad/cyberiad.dmm b/_maps/map_files/cyberiad/cyberiad.dmm index 71d83c16ee1..ec03d119758 100644 --- a/_maps/map_files/cyberiad/cyberiad.dmm +++ b/_maps/map_files/cyberiad/cyberiad.dmm @@ -50259,7 +50259,7 @@ /area/assembly/robotics) "bPb" = ( /obj/machinery/atmospherics/unary/vent_pump/on, -/mob/living/simple_animal/pet/corgi/Ian/borgi, +/mob/living/simple_animal/pet/dog/corgi/borgi, /turf/simulated/floor/plasteel{ icon_state = "white" }, @@ -52780,7 +52780,7 @@ pixel_y = 24 }, /obj/structure/bed/dogbed/ian, -/mob/living/simple_animal/pet/corgi/Ian, +/mob/living/simple_animal/pet/dog/corgi/Ian, /turf/simulated/floor/plasteel, /area/crew_quarters/heads) "bTe" = ( diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm index 22b43f84b9f..0d934260b6d 100644 --- a/code/__DEFINES/mobs.dm +++ b/code/__DEFINES/mobs.dm @@ -64,7 +64,7 @@ // Factor of how fast mob nutrition decreases #define HUNGER_FACTOR 0.1 -// Taste sensitivity - lower is more sensitive +// Taste sensitivity - lower is more sensitive // Represents the minimum portion of total taste the mob can sense #define TASTE_SENSITIVITY_NORMAL 15 #define TASTE_SENSITIVITY_SHARP 7.5 @@ -182,7 +182,8 @@ #define isdrask(A) (is_species(A, /datum/species/drask)) #define isanimal(A) (istype((A), /mob/living/simple_animal)) -#define iscorgi(A) (istype((A), /mob/living/simple_animal/pet/corgi)) +#define isdog(A) (istype((A), /mob/living/simple_animal/pet/dog)) +#define iscorgi(A) (istype((A), /mob/living/simple_animal/pet/dog/corgi)) #define ismouse(A) (istype((A), /mob/living/simple_animal/mouse)) #define isbot(A) (istype((A), /mob/living/simple_animal/bot)) #define isswarmer(A) (istype((A), /mob/living/simple_animal/hostile/swarmer)) diff --git a/code/datums/diseases/lycancoughy.dm b/code/datums/diseases/lycancoughy.dm index b50b7e0a0c3..0d4ace2e634 100644 --- a/code/datums/diseases/lycancoughy.dm +++ b/code/datums/diseases/lycancoughy.dm @@ -35,7 +35,7 @@ "You howl!") affected_mob.AdjustConfused(rand(6, 8)) if(prob(3) && barklimit <= 10) - var/list/puppytype = list(/mob/living/simple_animal/pet/corgi/puppy, /mob/living/simple_animal/pet/pug, /mob/living/simple_animal/pet/fox) + var/list/puppytype = list(/mob/living/simple_animal/pet/dog/corgi/puppy, /mob/living/simple_animal/pet/dog/pug, /mob/living/simple_animal/pet/fox) var/mob/living/puppypicked = pick(puppytype) affected_mob.visible_message("[affected_mob] coughs up [initial(puppypicked.name)]!", \ "You cough up [initial(puppypicked.name)]?!") diff --git a/code/datums/diseases/transformation.dm b/code/datums/diseases/transformation.dm index 444b4838319..766c52c7b65 100644 --- a/code/datums/diseases/transformation.dm +++ b/code/datums/diseases/transformation.dm @@ -214,7 +214,7 @@ stage3 = list("Must... eat... chocolate....", "YAP") stage4 = list("Visions of washing machines assail your mind!") stage5 = list("AUUUUUU!!!") - new_form = /mob/living/simple_animal/pet/corgi + new_form = /mob/living/simple_animal/pet/dog/corgi /datum/disease/transformation/corgi/stage_act() ..() diff --git a/code/datums/dog_fashion.dm b/code/datums/dog_fashion.dm new file mode 100644 index 00000000000..c798f352189 --- /dev/null +++ b/code/datums/dog_fashion.dm @@ -0,0 +1,176 @@ +/datum/dog_fashion + var/name + var/desc + var/emote_see + var/emote_hear + var/speak + var/speak_emote + + // This isn't applied to the dog, but stores the icon_state of the + // sprite that the associated item uses + var/icon_file + var/obj_icon_state + var/obj_alpha + var/obj_color + +/datum/dog_fashion/New(mob/M) + name = replacetext(name, "REAL_NAME", M.real_name) + desc = replacetext(desc, "NAME", name) + +/datum/dog_fashion/proc/apply(mob/living/simple_animal/pet/dog/D) + if(name) + D.name = name + if(desc) + D.desc = desc + if(emote_see) + D.emote_see = emote_see + if(emote_hear) + D.emote_hear = emote_hear + if(speak) + D.speak = speak + if(speak_emote) + D.speak_emote = speak_emote + +/datum/dog_fashion/proc/get_overlay(var/dir) + if(icon_file && obj_icon_state) + var/image/corgI = image(icon_file, obj_icon_state, dir = dir) + corgI.alpha = obj_alpha + corgI.color = obj_color + return corgI + + +/datum/dog_fashion/head + icon_file = 'icons/mob/corgi_head.dmi' + +/datum/dog_fashion/back + icon_file = 'icons/mob/corgi_back.dmi' + +/datum/dog_fashion/head/helmet + name = "Sergeant REAL_NAME" + desc = "The ever-loyal, the ever-vigilant." + +/datum/dog_fashion/head/chef + name = "Sous chef REAL_NAME" + desc = "Your food will be taste-tested. All of it." + + +/datum/dog_fashion/head/captain + name = "Captain REAL_NAME" + desc = "Probably better than the last captain." + +/datum/dog_fashion/head/kitty + name = "Runtime" + emote_see = list("coughs up a furball", "stretches") + emote_hear = list("purrs") + speak = list("Purrr", "Meow!", "MAOOOOOW!", "HISSSSS", "MEEEEEEW") + desc = "It's a cute little kitty-cat! ... wait ... what the hell?" + +/datum/dog_fashion/head/rabbit + name = "Hoppy" + emote_see = list("twitches its nose", "hops around a bit") + desc = "This is Hoppy. It's a corgi-...urmm... bunny rabbit." + +/datum/dog_fashion/head/beret + name = "Yann" + desc = "Mon dieu! C'est un chien!" + speak = list("le woof!", "le bark!", "JAPPE!!") + emote_see = list("cowers in fear.", "surrenders.", "plays dead.","looks as though there is a wall in front of him.") + + +/datum/dog_fashion/head/detective + name = "Detective REAL_NAME" + desc = "NAME sees through your lies..." + emote_see = list("investigates the area.","sniffs around for clues.","searches for scooby snacks.","takes a candycorn from the hat.") + + +/datum/dog_fashion/head/nurse + name = "Nurse REAL_NAME" + desc = "NAME needs 100cc of beef jerky... STAT!" + +/datum/dog_fashion/head/pirate + name = "Pirate-title Pirate-name" + desc = "Yaarghh!! Thar' be a scurvy dog!" + emote_see = list("hunts for treasure.","stares coldly...","gnashes his tiny corgi teeth!") + emote_hear = list("growls ferociously!", "snarls.") + speak = list("Arrrrgh!!","Grrrrrr!") + +/datum/dog_fashion/head/pirate/New(mob/M) + ..() + name = "[pick("Ol'","Scurvy","Black","Rum","Gammy","Bloody","Gangrene","Death","Long-John")] [pick("kibble","leg","beard","tooth","poop-deck","Threepwood","Le Chuck","corsair","Silver","Crusoe")]" + +/datum/dog_fashion/head/ushanka + name = "Communist-title Realname" + desc = "A follower of Karl Barx." + emote_see = list("contemplates the failings of the capitalist economic model.", "ponders the pros and cons of vanguardism.") + +/datum/dog_fashion/head/ushanka/New(mob/M) + ..() + name = "[pick("Comrade","Commissar","Glorious Leader")] [M.real_name]" + +/datum/dog_fashion/head/warden + name = "Officer REAL_NAME" + emote_see = list("drools.","looks for donuts.") + desc = "Stop right there criminal scum!" + +/datum/dog_fashion/head/blue_wizard + name = "Grandwizard REAL_NAME" + speak = list("YAP", "Woof!", "Bark!", "AUUUUUU", "EI NATH!") + +/datum/dog_fashion/head/red_wizard + name = "Pyromancer REAL_NAME" + speak = list("YAP", "Woof!", "Bark!", "AUUUUUU", "ONI SOMA!") + +/datum/dog_fashion/head/cardborg + name = "Borgi" + speak = list("Ping!","Beep!","Woof!") + emote_see = list("goes rogue.", "sniffs out non-humans.") + desc = "Result of robotics budget cuts." + +/datum/dog_fashion/head/ghost + name = "\improper Ghost" + speak = list("WoooOOOooo~","AUUUUUUUUUUUUUUUUUU") + emote_see = list("stumbles around.", "shivers.") + emote_hear = list("howls!","groans.") + desc = "Spooky!" + obj_icon_state = "sheet" + +/datum/dog_fashion/head/santa + name = "Santa's Corgi Helper" + emote_hear = list("barks Christmas songs.", "yaps merrily!") + emote_see = list("looks for presents.", "checks his list.") + desc = "He's very fond of milk and cookies." + +/datum/dog_fashion/head/cargo_tech + name = "Corgi Tech REAL_NAME" + desc = "The reason your yellow gloves have chew-marks." + +/datum/dog_fashion/head/reindeer + name = "REAL_NAME the red-nosed Corgi" + emote_hear = list("lights the way!", "illuminates.", "yaps!") + desc = "He has a very shiny nose." + +/datum/dog_fashion/head/sombrero + name = "Segnor REAL_NAME" + desc = "You must respect Elder Dogname" + +/datum/dog_fashion/head/sombrero/New(mob/M) + ..() + desc = "You must respect Elder [M.real_name]." + +/datum/dog_fashion/head/hop + name = "Lieutenant REAL_NAME" + desc = "Can actually be trusted to not run off on his own." + +/datum/dog_fashion/head/deathsquad + name = "Trooper REAL_NAME" + desc = "That's not red paint. That's real corgi blood." + +/datum/dog_fashion/head/clown + name = "REAL_NAME the Clown" + desc = "Honkman's best friend." + speak = list("HONK!", "Honk!") + emote_see = list("plays tricks.", "slips.") + +/datum/dog_fashion/back/deathsquad + name = "Trooper REAL_NAME" + desc = "That's not red paint. That's real corgi blood." diff --git a/code/datums/mind.dm b/code/datums/mind.dm index c86a18eba80..4e6e8352511 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -1780,7 +1780,7 @@ ..() mind.assigned_role = "Animal" -/mob/living/simple_animal/pet/corgi/mind_initialize() +/mob/living/simple_animal/pet/dog/corgi/mind_initialize() ..() mind.assigned_role = "Corgi" diff --git a/code/datums/spells/shapeshift.dm b/code/datums/spells/shapeshift.dm index e3ee9e2e182..ff303ce750b 100644 --- a/code/datums/spells/shapeshift.dm +++ b/code/datums/spells/shapeshift.dm @@ -15,7 +15,7 @@ var/list/current_shapes = list() var/list/current_casters = list() var/list/possible_shapes = list(/mob/living/simple_animal/mouse, - /mob/living/simple_animal/pet/corgi, + /mob/living/simple_animal/pet/dog/corgi, /mob/living/simple_animal/bot/ed209, /mob/living/simple_animal/hostile/construct/armoured) diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index ad073b4bf54..922a1303232 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -434,7 +434,7 @@ var/list/teleport_runes = list() var/sacrifice_fulfilled var/datum/game_mode/cult/cult_mode = SSticker.mode if(T) - if(istype(T, /mob/living/simple_animal/pet/corgi)) + if(istype(T, /mob/living/simple_animal/pet/dog/corgi)) for(var/M in invokers) var/mob/living/L = M to_chat(L, "\"Even I have standards, such as they are!\"") diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 935c587fa57..f61e0027e17 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -64,6 +64,10 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d var/block_chance = 0 var/hit_reaction_chance = 0 //If you want to have something unrelated to blocking/armour piercing etc. Maybe not needed, but trying to think ahead/allow more freedom + // Needs to be in /obj/item because corgis can wear a lot of + // non-clothing items + var/datum/dog_fashion/dog_fashion = null + var/mob/thrownby = null //So items can have custom embedd values diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm index 27d27b11a9b..bf7ee23eed0 100644 --- a/code/game/objects/items/devices/radio/headset.dm +++ b/code/game/objects/items/devices/radio/headset.dm @@ -20,6 +20,7 @@ var/ks1type = null var/ks2type = null + dog_fashion = null /obj/item/radio/headset/New() ..() diff --git a/code/game/objects/items/devices/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm index 3064b0ae3c8..8e440dc1d94 100644 --- a/code/game/objects/items/devices/radio/intercom.dm +++ b/code/game/objects/items/devices/radio/intercom.dm @@ -10,6 +10,7 @@ var/circuitry_installed = 1 var/last_tick //used to delay the powercheck var/buildstage = 0 + dog_fashion = null /obj/item/radio/intercom/custom name = "station intercom (Custom)" diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index 00efc83668b..73c5dc8b41f 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -22,6 +22,7 @@ var/global/list/default_medbay_channels = list( /obj/item/radio icon = 'icons/obj/radio.dmi' name = "station bounced radio" + dog_fashion = /datum/dog_fashion/back suffix = "\[3\]" icon_state = "walkietalkie" item_state = "walkietalkie" @@ -396,7 +397,7 @@ var/global/list/default_medbay_channels = list( if(ishuman(M)) var/mob/living/carbon/human/H = M displayname = H.voice - if(H.voice != real_name) + if(H.voice != real_name) voicemask = TRUE if(syndiekey && syndiekey.change_voice && connection.frequency == SYND_FREQ) @@ -653,6 +654,7 @@ var/global/list/default_medbay_channels = list( icon_state = "radio" canhear_range = 0 subspace_transmission = 1 + dog_fashion = null /obj/item/radio/borg/syndicate keyslot = new /obj/item/encryptionkey/syndicate/nukeops @@ -840,6 +842,7 @@ var/global/list/default_medbay_channels = list( /obj/item/radio/off listening = 0 + dog_fashion = /datum/dog_fashion/back /obj/item/radio/phone broadcasting = 0 @@ -847,6 +850,7 @@ var/global/list/default_medbay_channels = list( icon_state = "red_phone" listening = 1 name = "phone" + dog_fashion = null /obj/item/radio/phone/medbay frequency = MED_I_FREQ diff --git a/code/game/objects/items/weapons/extinguisher.dm b/code/game/objects/items/weapons/extinguisher.dm index 3d893c86371..674329abacb 100644 --- a/code/game/objects/items/weapons/extinguisher.dm +++ b/code/game/objects/items/weapons/extinguisher.dm @@ -14,6 +14,7 @@ container_type = AMOUNT_VISIBLE materials = list(MAT_METAL=90) attack_verb = list("slammed", "whacked", "bashed", "thunked", "battered", "bludgeoned", "thrashed") + dog_fashion = /datum/dog_fashion/back var/max_water = 50 var/last_use = 1.0 var/safety = 1 @@ -35,6 +36,7 @@ materials = list() max_water = 30 sprite_name = "miniFE" + dog_fashion = null /obj/item/extinguisher/examine(mob/user) . = ..() diff --git a/code/game/objects/items/weapons/grenades/clusterbuster.dm b/code/game/objects/items/weapons/grenades/clusterbuster.dm index 09822143a34..0d8f0aabd7d 100644 --- a/code/game/objects/items/weapons/grenades/clusterbuster.dm +++ b/code/game/objects/items/weapons/grenades/clusterbuster.dm @@ -230,7 +230,7 @@ /obj/item/grenade/clusterbuster/fluffy name = "Fluffy Love Bomb" desc = "Exactly as snuggly as it sounds." - payload = /mob/living/simple_animal/pet/corgi/puppy + payload = /mob/living/simple_animal/pet/dog/corgi/puppy /obj/item/grenade/clusterbuster/fox name = "Troublemaking Grenade" diff --git a/code/game/objects/items/weapons/tanks/tank_types.dm b/code/game/objects/items/weapons/tanks/tank_types.dm index ea178aa3345..a181125caa1 100644 --- a/code/game/objects/items/weapons/tanks/tank_types.dm +++ b/code/game/objects/items/weapons/tanks/tank_types.dm @@ -15,6 +15,7 @@ desc = "A tank of oxygen." icon_state = "oxygen" distribute_pressure = ONE_ATMOSPHERE*O2STANDARD + dog_fashion = /datum/dog_fashion/back /obj/item/tank/oxygen/New() @@ -34,10 +35,12 @@ obj/item/tank/oxygen/empty/New() /obj/item/tank/oxygen/yellow desc = "A tank of oxygen, this one is yellow." icon_state = "oxygen_f" + dog_fashion = null /obj/item/tank/oxygen/red desc = "A tank of oxygen, this one is red." icon_state = "oxygen_fr" + dog_fashion = null /* @@ -67,6 +70,7 @@ obj/item/tank/oxygen/empty/New() desc = "Mixed anyone?" icon_state = "air" item_state = "air" + dog_fashion = /datum/dog_fashion/back /obj/item/tank/air/examine(mob/user) if(..(user, 0)) diff --git a/code/game/objects/structures/bedsheet_bin.dm b/code/game/objects/structures/bedsheet_bin.dm index d7900d82e38..af57fb360f3 100644 --- a/code/game/objects/structures/bedsheet_bin.dm +++ b/code/game/objects/structures/bedsheet_bin.dm @@ -19,6 +19,7 @@ LINEN BINS burn_state = FLAMMABLE slot_flags = SLOT_BACK + dog_fashion = /datum/dog_fashion/head/ghost var/list/dream_messages = list("white") var/list/nightmare_messages = list("black") var/comfort = 0.5 diff --git a/code/game/objects/structures/crates_lockers/crittercrate.dm b/code/game/objects/structures/crates_lockers/crittercrate.dm index 50d9b056e96..18ee3833224 100644 --- a/code/game/objects/structures/crates_lockers/crittercrate.dm +++ b/code/game/objects/structures/crates_lockers/crittercrate.dm @@ -33,11 +33,11 @@ /obj/structure/closet/critter/corgi name = "corgi crate" - content_mob = /mob/living/simple_animal/pet/corgi + content_mob = /mob/living/simple_animal/pet/dog/corgi /obj/structure/closet/critter/corgi/New() if(prob(50)) - content_mob = /mob/living/simple_animal/pet/corgi/Lisa + content_mob = /mob/living/simple_animal/pet/dog/corgi/Lisa ..() /obj/structure/closet/critter/cow diff --git a/code/game/objects/structures/crates_lockers/largecrate.dm b/code/game/objects/structures/crates_lockers/largecrate.dm index 5f62786a888..f54a0459b16 100644 --- a/code/game/objects/structures/crates_lockers/largecrate.dm +++ b/code/game/objects/structures/crates_lockers/largecrate.dm @@ -55,7 +55,7 @@ /obj/structure/largecrate/lisa/attackby(obj/item/W as obj, mob/user as mob) //ugly but oh well if(istype(W, /obj/item/crowbar)) - new /mob/living/simple_animal/pet/corgi/Lisa(loc) + new /mob/living/simple_animal/pet/dog/corgi/Lisa(loc) ..() /obj/structure/largecrate/cow diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index cb10ba4d335..92f2454957e 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -348,7 +348,7 @@ if("queen") M.change_mob_type( /mob/living/carbon/alien/humanoid/queen/large , null, null, delmob, 1 ) if("sentinel") M.change_mob_type( /mob/living/carbon/alien/humanoid/sentinel , null, null, delmob, 1 ) if("larva") M.change_mob_type( /mob/living/carbon/alien/larva , null, null, delmob, 1 ) - if("human") + if("human") var/posttransformoutfit = usr.client.robust_dress_shop() var/mob/living/carbon/human/newmob = M.change_mob_type(/mob/living/carbon/human, null, null, delmob, 1) if(posttransformoutfit && istype(newmob)) @@ -358,8 +358,8 @@ if("robot") M.change_mob_type( /mob/living/silicon/robot , null, null, delmob, 1 ) if("cat") M.change_mob_type( /mob/living/simple_animal/pet/cat , null, null, delmob, 1 ) if("runtime") M.change_mob_type( /mob/living/simple_animal/pet/cat/Runtime , null, null, delmob, 1 ) - if("corgi") M.change_mob_type( /mob/living/simple_animal/pet/corgi , null, null, delmob, 1 ) - if("ian") M.change_mob_type( /mob/living/simple_animal/pet/corgi/Ian , null, null, delmob, 1 ) + if("corgi") M.change_mob_type( /mob/living/simple_animal/pet/dog/corgi , null, null, delmob, 1 ) + if("ian") M.change_mob_type( /mob/living/simple_animal/pet/dog/corgi/Ian , null, null, delmob, 1 ) if("crab") M.change_mob_type( /mob/living/simple_animal/crab , null, null, delmob, 1 ) if("coffee") M.change_mob_type( /mob/living/simple_animal/crab/Coffee , null, null, delmob, 1 ) if("parrot") M.change_mob_type( /mob/living/simple_animal/parrot , null, null, delmob, 1 ) @@ -1514,7 +1514,7 @@ usr.client.cmd_admin_animalize(M) else if(href_list["incarn_ghost"]) - if(!check_rights(R_SPAWN)) + if(!check_rights(R_SPAWN)) return var/mob/dead/observer/G = locateUID(href_list["incarn_ghost"]) @@ -1833,8 +1833,9 @@ P.can_collar = 1 P.faction = list("neutral") var/obj/item/clothing/accessory/petcollar/C = new /obj/item/clothing/accessory/petcollar(P) - P.collar = C + P.pcollar = C C.equipped(P) + P.regenerate_icons() var/obj/item/card/id/I = H.wear_id if(I) var/obj/item/card/id/D = new /obj/item/card/id(C) diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 96cff51ec4d..37a99a54682 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -601,6 +601,7 @@ BLIND // can't see anything strip_delay = 50 put_on_delay = 50 burn_state = FIRE_PROOF + dog_fashion = null /obj/item/clothing/suit/space name = "Space suit" diff --git a/code/modules/clothing/glasses/glasses.dm b/code/modules/clothing/glasses/glasses.dm index 81ab79adbc4..7eb4f32ac3b 100644 --- a/code/modules/clothing/glasses/glasses.dm +++ b/code/modules/clothing/glasses/glasses.dm @@ -258,7 +258,7 @@ flash_protect = 1 tint = 1 prescription_upgradable = 1 - + dog_fashion = /datum/dog_fashion/head sprite_sheets = list( "Vox" = 'icons/mob/species/vox/eyes.dmi', "Drask" = 'icons/mob/species/drask/eyes.dmi', @@ -374,6 +374,7 @@ flash_protect = 2 tint = 3 //to make them blind prescription_upgradable = 0 + dog_fashion = /datum/dog_fashion/head /obj/item/clothing/glasses/sunglasses/prescription prescription = 1 diff --git a/code/modules/clothing/head/collectable.dm b/code/modules/clothing/head/collectable.dm index 70f0b1944de..2939cca4cb1 100644 --- a/code/modules/clothing/head/collectable.dm +++ b/code/modules/clothing/head/collectable.dm @@ -25,11 +25,13 @@ desc = "A rare Chef's Hat meant for hat collectors!" icon_state = "chef" item_state = "chef" + dog_fashion = /datum/dog_fashion/head/chef /obj/item/clothing/head/collectable/paper name = "collectable paper hat" desc = "What looks like an ordinary paper hat, is actually a rare and valuable collector's edition paper hat. Keep away from water, fire and Librarians." icon_state = "paper" + dog_fashion = /datum/dog_fashion/head /obj/item/clothing/head/collectable/tophat name = "collectable top hat" @@ -42,16 +44,19 @@ desc = "A Collectable Hat that'll make you look just like a real comdom!" icon_state = "captain" item_state = "caphat" + dog_fashion = /datum/dog_fashion/head/captain /obj/item/clothing/head/collectable/police name = "collectable police officer's hat" desc = "A Collectable Police Officer's Hat. This hat emphasizes that you are THE LAW." icon_state = "policehelm" + dog_fashion = /datum/dog_fashion/head/warden /obj/item/clothing/head/collectable/beret name = "collectable beret" desc = "A Collectable red Beret. It smells faintly of Garlic." icon_state = "beret" + dog_fashion = /datum/dog_fashion/head/beret /obj/item/clothing/head/collectable/welding name = "collectable welding helmet" @@ -84,35 +89,46 @@ desc = "You'd make a great Dread Syndie Roberts!" icon_state = "pirate" item_state = "pirate" + dog_fashion = /datum/dog_fashion/head/pirate /obj/item/clothing/head/collectable/kitty name = "collectable kitty ears" desc = "The fur feels.....a bit too realistic." icon_state = "kitty" item_state = "kitty" + dog_fashion = /datum/dog_fashion/head/kitty /obj/item/clothing/head/collectable/rabbitears name = "collectable rabbit ears" desc = "Not as lucky as the feet!" icon_state = "bunny" item_state = "bunny" + dog_fashion = /datum/dog_fashion/head/rabbit /obj/item/clothing/head/collectable/wizard name = "collectable wizard's hat" desc = "NOTE:Any magical powers gained from wearing this hat are purely coincidental." icon_state = "wizard" + dog_fashion = /datum/dog_fashion/head/blue_wizard /obj/item/clothing/head/collectable/hardhat name = "collectable hard hat" desc = "WARNING! Offers no real protection, or luminosity, but it is damn fancy!" icon_state = "hardhat0_yellow" item_state = "hardhat0_yellow" + dog_fashion = /datum/dog_fashion/head /obj/item/clothing/head/collectable/HoS name = "collectable HoS hat" desc = "Now you can beat prisoners, set silly sentences and arrest for no reason too!" icon_state = "hoscap" +/obj/item/clothing/head/collectable/HoP + name = "collectable HoP hat" + desc = "It's your turn to demand excessive paperwork, signatures, stamps, and hire more clowns! Papers, please!" + icon_state = "hopcap" + dog_fashion = /datum/dog_fashion/head/hop + /obj/item/clothing/head/collectable/thunderdome name = "collectable Thunderdome helmet" desc = "Go Red! I mean Green! I mean Red! No Green!" diff --git a/code/modules/clothing/head/hardhat.dm b/code/modules/clothing/head/hardhat.dm index 0e9d2bac8de..fbda3788144 100644 --- a/code/modules/clothing/head/hardhat.dm +++ b/code/modules/clothing/head/hardhat.dm @@ -11,7 +11,7 @@ flags_inv = 0 actions_types = list(/datum/action/item_action/toggle_helmet_light) burn_state = FIRE_PROOF - + dog_fashion = /datum/dog_fashion/head sprite_sheets = list( "Grey" = 'icons/mob/species/grey/head.dmi' ) @@ -55,11 +55,13 @@ icon_state = "hardhat0_orange" item_state = "hardhat0_orange" item_color = "orange" + dog_fashion = null /obj/item/clothing/head/hardhat/red icon_state = "hardhat0_red" item_state = "hardhat0_red" item_color = "red" + dog_fashion = null name = "firefighter helmet" flags = STOPSPRESSUREDMAGE heat_protection = HEAD @@ -76,12 +78,13 @@ max_heat_protection_temperature = FIRE_HELM_MAX_TEMP_PROTECT cold_protection = HEAD min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT - + dog_fashion = /datum/dog_fashion/head /obj/item/clothing/head/hardhat/dblue icon_state = "hardhat0_dblue" item_state = "hardhat0_dblue" item_color = "dblue" + dog_fashion = null /obj/item/clothing/head/hardhat/atmos icon_state = "hardhat0_atmos" @@ -95,7 +98,7 @@ max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT cold_protection = HEAD min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT - + dog_fashion = null sprite_sheets = list( "Grey" = 'icons/mob/species/grey/helmet.dmi' ) \ No newline at end of file diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index 13826e53ea1..a2679fc3adc 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -13,7 +13,7 @@ max_heat_protection_temperature = HELMET_MAX_TEMP_PROTECT strip_delay = 60 burn_state = FIRE_PROOF - + dog_fashion = /datum/dog_fashion/head/helmet sprite_sheets = list( "Vox" = 'icons/mob/species/vox/helmet.dmi', "Drask" = 'icons/mob/species/drask/helmet.dmi', @@ -76,6 +76,7 @@ icon_state = "swat" item_state = "swat-alt" armor = list(melee = 15, bullet = 40, laser = 10, energy = 10, bomb = 40, bio = 0, rad = 0) + dog_fashion = null /obj/item/clothing/head/helmet/riot name = "riot helmet" @@ -86,6 +87,7 @@ flags_inv = HIDEEARS flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH strip_delay = 80 + dog_fashion = null /obj/item/clothing/head/helmet/riot/knight name = "medieval helmet" @@ -94,6 +96,7 @@ item_state = "knight_green" flags = BLOCKHAIR flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE + dog_fashion = null /obj/item/clothing/head/helmet/justice name = "helmet of justice" @@ -105,6 +108,7 @@ can_toggle = 1 toggle_cooldown = 20 active_sound = 'sound/items/weeoo1.ogg' + dog_fashion = null /obj/item/clothing/head/helmet/justice/escape name = "alarm helmet" @@ -127,6 +131,7 @@ heat_protection = HEAD max_heat_protection_temperature = SPACE_HELM_MAX_TEMP_PROTECT strip_delay = 80 + dog_fashion = null /obj/item/clothing/head/helmet/swat/syndicate name = "blood-red helmet" @@ -146,6 +151,7 @@ heat_protection = HEAD max_heat_protection_temperature = SPACE_HELM_MAX_TEMP_PROTECT strip_delay = 80 + dog_fashion = null /obj/item/clothing/head/helmet/roman name = "roman helmet" @@ -155,6 +161,7 @@ icon_state = "roman" item_state = "roman" strip_delay = 100 + dog_fashion = null /obj/item/clothing/head/helmet/roman/legionaire name = "roman legionaire helmet" @@ -175,6 +182,7 @@ can_toggle = 1 toggle_cooldown = 20 toggle_sound = 'sound/items/zippoclose.ogg' + dog_fashion = null obj/item/clothing/head/helmet/redtaghelm name = "red laser tag helmet" @@ -185,6 +193,7 @@ obj/item/clothing/head/helmet/redtaghelm armor = list(melee = 15, bullet = 10, laser = 20, energy = 10, bomb = 20, bio = 0, rad = 0) // Offer about the same protection as a hardhat. flags_inv = HIDEEARS|HIDEEYES + dog_fashion = null obj/item/clothing/head/helmet/bluetaghelm name = "blue laser tag helmet" @@ -195,6 +204,7 @@ obj/item/clothing/head/helmet/bluetaghelm armor = list(melee = 15, bullet = 10, laser = 20, energy = 10, bomb = 20, bio = 0, rad = 0) // Offer about the same protection as a hardhat. flags_inv = HIDEEARS|HIDEEYES + dog_fashion = null obj/item/clothing/head/blob name = "blob hat" diff --git a/code/modules/clothing/head/jobs.dm b/code/modules/clothing/head/jobs.dm index 9c96cbae961..b6333241128 100644 --- a/code/modules/clothing/head/jobs.dm +++ b/code/modules/clothing/head/jobs.dm @@ -8,6 +8,7 @@ desc = "The commander in chef's head wear." strip_delay = 10 put_on_delay = 10 + dog_fashion = /datum/dog_fashion/head/chef //Captain /obj/item/clothing/head/caphat @@ -17,12 +18,14 @@ item_state = "caphat" armor = list(melee = 25, bullet = 15, laser = 25, energy = 10, bomb = 25, bio = 0, rad = 0) strip_delay = 60 + dog_fashion = /datum/dog_fashion/head/captain //Captain: no longer space-worthy /obj/item/clothing/head/caphat/parade name = "captain's parade cap" desc = "Worn only by Captains with an abundance of class." icon_state = "capcap" + dog_fashion = null //Head of Personnel /obj/item/clothing/head/hopcap @@ -30,6 +33,7 @@ icon_state = "hopcap" desc = "The symbol of true bureaucratic micromanagement." armor = list(melee = 25, bullet = 15, laser = 25, energy = 10, bomb = 25, bio = 0, rad = 0) + dog_fashion = /datum/dog_fashion/head/hop //Nanotrasen Representative /obj/item/clothing/head/ntrep @@ -75,12 +79,14 @@ icon_state = "detective" allowed = list(/obj/item/reagent_containers/food/snacks/candy/candy_corn, /obj/item/pen) armor = list(melee = 25, bullet = 5, laser = 25, energy = 10, bomb = 0, bio = 0, rad = 0) + dog_fashion = /datum/dog_fashion/head/detective //Mime /obj/item/clothing/head/beret name = "beret" desc = "A beret, an artists favorite headwear." icon_state = "beret" + dog_fashion = /datum/dog_fashion/head/beret /obj/item/clothing/head/beret/durathread name = "durathread beret" @@ -108,6 +114,7 @@ icon_state = "policehelm" armor = list(melee = 30, bullet = 5, laser = 25, energy = 10, bomb = 25, bio = 0, rad = 0) strip_delay = 60 + dog_fashion = /datum/dog_fashion/head/warden /obj/item/clothing/head/officer name = "officer's cap" @@ -123,6 +130,7 @@ icon_state = "beret_officer" armor = list(melee = 30, bullet = 25, laser = 25, energy = 10, bomb = 25, bio = 0, rad = 0) strip_delay = 60 + dog_fashion = null /obj/item/clothing/head/beret/sec/warden name = "warden's beret" diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm index c3377296177..8ca480d1c72 100644 --- a/code/modules/clothing/head/misc.dm +++ b/code/modules/clothing/head/misc.dm @@ -40,6 +40,7 @@ desc = "It's an amish looking hat." icon_state = "tophat" item_state = "that" + dog_fashion = /datum/dog_fashion/head /obj/item/clothing/head/redcoat name = "redcoat's hat" @@ -68,6 +69,7 @@ name = "nurse's hat" desc = "It allows quick identification of trained medical personnel." icon_state = "nursehat" + dog_fashion = /datum/dog_fashion/head/nurse /obj/item/clothing/head/syndicatefake name = "black and red space-helmet replica" @@ -151,6 +153,7 @@ name = "rabbit ears" desc = "Wearing these makes you look useless, and only good for your sex appeal." icon_state = "bunny" + dog_fashion = /datum/dog_fashion/head/rabbit /obj/item/clothing/head/flatcap name = "flat cap" @@ -163,6 +166,7 @@ desc = "Yarr." icon_state = "pirate" item_state = "pirate" + dog_fashion = /datum/dog_fashion/head/pirate /obj/item/clothing/head/hgpiratecap name = "pirate hat" @@ -374,12 +378,14 @@ icon_state = "sombrero" item_state = "sombrero" desc = "You can practically taste the fiesta." + dog_fashion = /datum/dog_fashion/head/sombrero /obj/item/clothing/head/sombrero/green name = "green sombrero" icon_state = "greensombrero" item_state = "greensombrero" desc = "As elegant as a dancing cactus." + dog_fashion = null /obj/item/clothing/head/sombrero/shamebrero name = "shamebrero" @@ -387,6 +393,7 @@ item_state = "shamebrero" desc = "Once it's on, it never comes off." flags = NODROP + dog_fashion = null /obj/item/clothing/head/cone desc = "This cone is trying to warn you of something!" diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm index 0501171d650..bd224890576 100644 --- a/code/modules/clothing/head/misc_special.dm +++ b/code/modules/clothing/head/misc_special.dm @@ -136,7 +136,7 @@ flags_inv = HIDEEARS cold_protection = HEAD min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT - + dog_fashion = /datum/dog_fashion/head/ushanka sprite_sheets = list( "Grey" = 'icons/mob/species/grey/head.dmi' ) @@ -181,6 +181,7 @@ flags_inv = 0 armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) brightness_on = 1 //luminosity when on + dog_fashion = /datum/dog_fashion/head/reindeer /* @@ -191,6 +192,7 @@ desc = "A pair of kitty ears. Meow!" icon_state = "kitty" var/icon/mob + dog_fashion = /datum/dog_fashion/head/kitty /obj/item/clothing/head/kitty/update_icon(var/mob/living/carbon/human/user) if(!istype(user)) return @@ -234,7 +236,7 @@ flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH species_disguise = "High-tech robot" - + dog_fashion = /datum/dog_fashion/head/cardborg sprite_sheets = list( "Grey" = 'icons/mob/species/grey/head.dmi' ) diff --git a/code/modules/clothing/head/soft_caps.dm b/code/modules/clothing/head/soft_caps.dm index 81d36884ef2..49fcd17869d 100644 --- a/code/modules/clothing/head/soft_caps.dm +++ b/code/modules/clothing/head/soft_caps.dm @@ -6,7 +6,7 @@ item_color = "cargo" var/flipped = 0 actions_types = list(/datum/action/item_action/flip_cap) - + dog_fashion = /datum/dog_fashion/head/cargo_tech sprite_sheets = list( "Vox" = 'icons/mob/species/vox/head.dmi' ) @@ -38,30 +38,35 @@ desc = "It's a baseball hat in a tasteless red colour." icon_state = "redsoft" item_color = "red" + dog_fashion = null /obj/item/clothing/head/soft/blue name = "blue cap" desc = "It's a baseball hat in a tasteless blue colour." icon_state = "bluesoft" item_color = "blue" + dog_fashion = null /obj/item/clothing/head/soft/green name = "green cap" desc = "It's a baseball hat in a tasteless green colour." icon_state = "greensoft" item_color = "green" + dog_fashion = null /obj/item/clothing/head/soft/yellow name = "yellow cap" desc = "It's a baseball hat in a tasteless yellow colour." icon_state = "yellowsoft" item_color = "yellow" + dog_fashion = null /obj/item/clothing/head/soft/grey name = "grey cap" desc = "It's a baseball hat in a tasteful grey colour." icon_state = "greysoft" item_color = "grey" + dog_fashion = null /obj/item/clothing/head/soft/orange name = "orange cap" @@ -74,24 +79,28 @@ desc = "It's a baseball hat in a tasteless white colour." icon_state = "mimesoft" item_color = "mime" + dog_fashion = null /obj/item/clothing/head/soft/purple name = "purple cap" desc = "It's a baseball hat in a tasteless purple colour." icon_state = "purplesoft" item_color = "purple" + dog_fashion = null /obj/item/clothing/head/soft/black name = "black cap" desc = "It's a baseball hat in a tasteless black colour." icon_state = "blacksoft" item_color = "black" + dog_fashion = null /obj/item/clothing/head/soft/rainbow name = "rainbow cap" desc = "It's a baseball hat in a bright rainbow of colors." icon_state = "rainbowsoft" item_color = "rainbow" + dog_fashion = null /obj/item/clothing/head/soft/sec name = "security cap" @@ -100,6 +109,7 @@ item_color = "sec" armor = list(melee = 30, bullet = 25, laser = 25, energy = 10, bomb = 25, bio = 0, rad = 0) strip_delay = 60 + dog_fashion = null /obj/item/clothing/head/soft/sec/corp name = "corporate security cap" @@ -112,9 +122,11 @@ desc = "A soft cap worn by marines of the Sol Federation." icon_state = "solgovsoft" item_color = "solgov" + dog_fashion = null /obj/item/clothing/head/soft/solgov/command name = "Sol Federation Lieutenant's cap" desc = "A soft cap worn by marines of the Sol Federation. The insignia signifies the wearer bears the rank of a Lieutenant." icon_state = "solgovcsoft" item_color = "solgovc" + dog_fashion = null \ No newline at end of file diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm index 8956a456166..b50c1cd68e0 100644 --- a/code/modules/clothing/masks/gasmask.dm +++ b/code/modules/clothing/masks/gasmask.dm @@ -108,6 +108,7 @@ item_state = "clown_hat" flags = BLOCK_GAS_SMOKE_EFFECT | AIRTIGHT | BLOCKHAIR burn_state = FLAMMABLE + dog_fashion = /datum/dog_fashion/head/clown /obj/item/clothing/mask/gas/clown_hat/attack_self(mob/user) diff --git a/code/modules/clothing/masks/miscellaneous.dm b/code/modules/clothing/masks/miscellaneous.dm index a60e4b2c2a6..3a1a2b05c4a 100644 --- a/code/modules/clothing/masks/miscellaneous.dm +++ b/code/modules/clothing/masks/miscellaneous.dm @@ -259,6 +259,7 @@ w_class = WEIGHT_CLASS_SMALL gas_transfer_coefficient = 0.90 + /obj/item/clothing/mask/redscarf name = "red scarf" desc = "A red and white checkered neck scarf." diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm index 1e5c9ad6dcb..7bce8a21293 100644 --- a/code/modules/clothing/spacesuits/miscellaneous.dm +++ b/code/modules/clothing/spacesuits/miscellaneous.dm @@ -62,6 +62,7 @@ max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT unacidable = 1 strip_delay = 130 + dog_fashion = /datum/dog_fashion/back/deathsquad //NEW SWAT suit /obj/item/clothing/suit/space/swat @@ -107,6 +108,7 @@ ) flags = BLOCKHAIR | STOPSPRESSUREDMAGE flags_cover = HEADCOVERSEYES + dog_fashion = /datum/dog_fashion/head/santa /obj/item/clothing/head/helmet/space/santahat/attack_self(mob/user as mob) if(src.icon_state == "santahat") diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index e27b3b8ef1f..0d7267d9a92 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -21,6 +21,7 @@ blood_overlay_type = "armor" flags_size = ONESIZEFITSALL armor = list(melee = 25, bullet = 15, laser = 25, energy = 10, bomb = 25, bio = 0, rad = 0) + dog_fashion = /datum/dog_fashion/back /obj/item/clothing/suit/armor/vest/jacket name = "military jacket" @@ -148,6 +149,7 @@ heat_protection = UPPER_TORSO|LOWER_TORSO|HANDS strip_delay = 70 burn_state = FLAMMABLE + dog_fashion = null /obj/item/clothing/suit/armor/vest/warden/alt name = "warden's jacket" @@ -161,6 +163,7 @@ item_state = "armor" body_parts_covered = UPPER_TORSO|LOWER_TORSO armor = list(melee = 50, bullet = 40, laser = 50, energy = 10, bomb = 25, bio = 0, rad = 0) + dog_fashion = null /obj/item/clothing/suit/armor/vest/capcarapace/alt name = "captain's parade jacket" @@ -252,6 +255,7 @@ flags_size = ONESIZEFITSALL allowed = list(/obj/item/tank/emergency_oxygen,/obj/item/reagent_containers/spray/pepper,/obj/item/flashlight,/obj/item/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/restraints/handcuffs,/obj/item/storage/fancy/cigarettes,/obj/item/lighter,/obj/item/detective_scanner,/obj/item/taperecorder) burn_state = FLAMMABLE + dog_fashion = null //Reactive armor /obj/item/clothing/suit/armor/reactive diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index 56204c5d3c2..8907e874270 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -174,6 +174,7 @@ item_state = "chickensuit" body_parts_covered = UPPER_TORSO|ARMS|LOWER_TORSO|LEGS|FEET flags_inv = HIDESHOES|HIDEJUMPSUIT + dog_fashion = /datum/dog_fashion/back /obj/item/clothing/suit/corgisuit/super_hero name = "super-hero corgi suit" @@ -229,6 +230,7 @@ body_parts_covered = UPPER_TORSO|LOWER_TORSO flags_inv = HIDEJUMPSUIT species_disguise = "High-tech robot" + dog_fashion = /datum/dog_fashion/back /obj/item/clothing/suit/cardborg/equipped(mob/living/user, slot) ..() diff --git a/code/modules/clothing/suits/wiz_robe.dm b/code/modules/clothing/suits/wiz_robe.dm index b3f55aed84a..4329f3e04f4 100644 --- a/code/modules/clothing/suits/wiz_robe.dm +++ b/code/modules/clothing/suits/wiz_robe.dm @@ -11,16 +11,19 @@ strip_delay = 50 put_on_delay = 50 magical = TRUE + dog_fashion = /datum/dog_fashion/head/blue_wizard /obj/item/clothing/head/wizard/red name = "red wizard hat" desc = "Strange-looking, red, hat-wear that most certainly belongs to a real magic user." icon_state = "redwizard" + dog_fashion = /datum/dog_fashion/head/red_wizard /obj/item/clothing/head/wizard/black name = "black wizard hat" desc = "Strange-looking black hat-wear that most certainly belongs to a real skeleton. Spooky." icon_state = "blackwizard" + dog_fashion = null /obj/item/clothing/head/wizard/clown @@ -28,6 +31,7 @@ desc = "Strange-looking purple hat-wear that most certainly belongs to a real magic user." icon_state = "wizhatclown" item_state = "wizhatclown" // cheating + dog_fashion = null /obj/item/clothing/head/wizard/fake name = "wizard hat" @@ -37,22 +41,26 @@ permeability_coefficient = 1 armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) magical = FALSE + dog_fashion = /datum/dog_fashion/head/blue_wizard /obj/item/clothing/head/wizard/marisa name = "Witch Hat" desc = "Strange-looking hat-wear, makes you want to cast fireballs." icon_state = "marisa" + dog_fashion = null /obj/item/clothing/head/wizard/magus name = "Magus Helm" desc = "A mysterious helmet that hums with an unearthly power" icon_state = "magus" item_state = "magus" + dog_fashion = null /obj/item/clothing/head/wizard/amp name = "psychic amplifier" desc = "A crown-of-thorns psychic amplifier. Kind of looks like a tiara having sex with an industrial robot." icon_state = "amp" + dog_fashion = null /obj/item/clothing/suit/wizrobe name = "wizard robe" diff --git a/code/modules/clothing/under/accessories/accessory.dm b/code/modules/clothing/under/accessories/accessory.dm index 96e174ed2dd..3bb9c2e3686 100644 --- a/code/modules/clothing/under/accessories/accessory.dm +++ b/code/modules/clothing/under/accessories/accessory.dm @@ -678,7 +678,7 @@ /obj/item/clothing/accessory/petcollar/process() var/mob/living/simple_animal/M = loc // if it wasn't intentionally unequipped but isn't being worn, possibly gibbed - if(istype(M) && src == M.collar && M.stat != DEAD) + if(istype(M) && src == M.pcollar && M.stat != DEAD) return var/area/t = get_area(M) diff --git a/code/modules/customitems/item_defines.dm b/code/modules/customitems/item_defines.dm index c1acd1e3d38..a31b399f428 100644 --- a/code/modules/customitems/item_defines.dm +++ b/code/modules/customitems/item_defines.dm @@ -240,11 +240,10 @@ /obj/item/fluff/dogwhistle/attack_self(mob/user) user.visible_message("[user] blows on the whistle, but no sound comes out.", "You blow on the whistle, but don't hear anything.") spawn(20) - var/mob/living/simple_animal/pet/corgi/C = new /mob/living/simple_animal/pet/corgi(get_turf(user)) + var/mob/living/simple_animal/pet/dog/corgi/C = new /mob/living/simple_animal/pet/dog/corgi(get_turf(user)) var/obj/item/clothing/head/det_hat/D = new /obj/item/clothing/head/det_hat(C) D.flags |= NODROP - C.inventory_head = D - C.regenerate_icons() + C.place_on_head(D) C.name = "Detective Sax" C.visible_message("[C] suddenly winks into existence at [user]'s feet!") to_chat(user, "[src] crumbles to dust in your hands!") diff --git a/code/modules/food_and_drinks/food/snacks.dm b/code/modules/food_and_drinks/food/snacks.dm index 3839c977a86..672285b84d3 100644 --- a/code/modules/food_and_drinks/food/snacks.dm +++ b/code/modules/food_and_drinks/food/snacks.dm @@ -153,33 +153,29 @@ /obj/item/reagent_containers/food/snacks/attack_animal(mob/M) if(isanimal(M)) M.changeNext_move(CLICK_CD_MELEE) - if(iscorgi(M)) - var/mob/living/simple_animal/pet/corgi/G = M - if(world.time < (G.last_eaten + 300)) - to_chat(G, "You are too full to try eating [src] right now.") + if(isdog(M)) + var/mob/living/simple_animal/pet/dog/D = M + if(world.time < (D.last_eaten + 300)) + to_chat(D, "You are too full to try eating [src] right now.") else if(bitecount >= 4) - M.visible_message("[M] [pick("burps from enjoyment", "yaps for more", "woofs twice", "looks at the area where [src] was")].","You swallow up the last part of [src].") + D.visible_message("[D] [pick("burps from enjoyment", "yaps for more", "woofs twice", "looks at the area where [src] was")].","You swallow up the last part of [src].") playsound(loc,'sound/items/eatfood.ogg', rand(10,50), 1) - var/mob/living/simple_animal/pet/corgi/C = M - C.adjustBruteLoss(-5) - C.adjustFireLoss(-5) + D.adjustHealth(-10) + D.last_eaten = world.time + D.taste(reagents) qdel(src) - G.last_eaten = world.time - G.taste(reagents) else - M.visible_message("[M] takes a bite of [src].","You take a bite of [src].") + D.visible_message("[D] takes a bite of [src].","You take a bite of [src].") playsound(loc,'sound/items/eatfood.ogg', rand(10,50), 1) bitecount++ - G.last_eaten = world.time - G.taste(reagents) + D.last_eaten = world.time + D.taste(reagents) else if(ismouse(M)) var/mob/living/simple_animal/mouse/N = M to_chat(N, text("You nibble away at [src].")) if(prob(50)) N.visible_message("[N] nibbles away at [src].", "") - //N.emote("nibbles away at the [src]") - N.adjustBruteLoss(-1) - N.adjustFireLoss(-1) + N.adjustHealth(-2) N.taste(reagents) /obj/item/reagent_containers/food/snacks/sliceable/examine(mob/user) diff --git a/code/modules/holiday/christmas.dm b/code/modules/holiday/christmas.dm index 047c8ce069e..a6a88ff2a19 100644 --- a/code/modules/holiday/christmas.dm +++ b/code/modules/holiday/christmas.dm @@ -4,8 +4,8 @@ for(var/turf/simulated/floor/T in orange(1,xmas)) for(var/i=1,i<=rand(1,5),i++) new /obj/item/a_gift(T) - for(var/mob/living/simple_animal/pet/corgi/Ian/Ian in GLOB.mob_list) - Ian.place_on_head(new /obj/item/clothing/head/helmet/space/santahat(Ian)) + for(var/mob/living/simple_animal/pet/dog/corgi/Ian/Ian in GLOB.mob_list) + Ian.place_on_head(new /obj/item/clothing/head/helmet/space/santahat) for(var/datum/crafting_recipe/snowman/S in GLOB.crafting_recipes) S.always_availible = TRUE break diff --git a/code/modules/martial_arts/adminfu.dm b/code/modules/martial_arts/adminfu.dm index ae48795f2f9..12436061e20 100644 --- a/code/modules/martial_arts/adminfu.dm +++ b/code/modules/martial_arts/adminfu.dm @@ -58,12 +58,6 @@ var/mob/living/simple_animal/P = new O.type(O.loc) P.real_name = O.real_name P.name = O.name - if(iscorgi(O)) - var/mob/living/simple_animal/pet/corgi/C = O - if(C.inventory_head) - C.inventory_head.loc = C.loc - if(C.inventory_back) - C.inventory_back.loc = C.loc if(O.mind) O.mind.transfer_to(P) else diff --git a/code/modules/mob/living/carbon/alien/special/facehugger.dm b/code/modules/mob/living/carbon/alien/special/facehugger.dm index 78bc0004b15..e5bea0357eb 100644 --- a/code/modules/mob/living/carbon/alien/special/facehugger.dm +++ b/code/modules/mob/living/carbon/alien/special/facehugger.dm @@ -152,14 +152,6 @@ var/const/MAX_ACTIVE_TIME = 400 target.equip_to_slot(src, slot_wear_mask,,0) if(!sterile) M.Paralyse(MAX_IMPREGNATION_TIME/6) //something like 25 ticks = 20 seconds with the default settings - else if(iscorgi(M)) - var/mob/living/simple_animal/pet/corgi/C = M - if(C.facehugger) - var/obj/item/F = C.facehugger - F.forceMove(C.loc) - forceMove(C) - C.facehugger = src - C.regenerate_icons() GoIdle() //so it doesn't jump the people that tear it off @@ -192,11 +184,6 @@ var/const/MAX_ACTIVE_TIME = 400 if(!target.get_int_organ(/obj/item/organ/internal/body_egg/alien_embryo)) new /obj/item/organ/internal/body_egg/alien_embryo(target) - - if(iscorgi(target)) - var/mob/living/simple_animal/pet/corgi/C = target - src.loc = get_turf(C) - C.facehugger = null else target.visible_message("[src] violates [target]'s face!", \ "[src] violates [target]'s face!") diff --git a/code/modules/mob/living/simple_animal/animal_defense.dm b/code/modules/mob/living/simple_animal/animal_defense.dm index 20f6155ba0f..3fafd7267f2 100644 --- a/code/modules/mob/living/simple_animal/animal_defense.dm +++ b/code/modules/mob/living/simple_animal/animal_defense.dm @@ -1,15 +1,6 @@ /mob/living/simple_animal/attackby(obj/item/O, mob/living/user) - if(can_collar && !collar && istype(O, /obj/item/clothing/accessory/petcollar)) - var/obj/item/clothing/accessory/petcollar/C = O - if(user.drop_item()) - C.forceMove(src) - collar = C - collar.equipped(src) - regenerate_icons() - to_chat(usr, "You put \the [C] around \the [src]'s neck.") - if(C.tagname) - name = C.tagname - real_name = C.tagname + if(can_collar && istype(O, /obj/item/clothing/accessory/petcollar) && !pcollar) + add_collar(O, user) return else return ..() diff --git a/code/modules/mob/living/simple_animal/friendly/cat.dm b/code/modules/mob/living/simple_animal/friendly/cat.dm index 928cd9789da..2458532b157 100644 --- a/code/modules/mob/living/simple_animal/friendly/cat.dm +++ b/code/modules/mob/living/simple_animal/friendly/cat.dm @@ -23,7 +23,7 @@ response_disarm = "gently pushes aside" response_harm = "kicks" gold_core_spawnable = CHEM_MOB_SPAWN_FRIENDLY - + collar_type = "cat" var/turns_since_scan = 0 var/mob/living/simple_animal/mouse/movement_target var/eats_mice = 1 @@ -38,6 +38,7 @@ icon_resting = "cat_rest" gender = FEMALE gold_core_spawnable = CHEM_MOB_SPAWN_INVALID + unique_pet = TRUE var/list/family = list() var/memory_saved = 0 var/list/children = list() //Actual mob instances of children @@ -107,6 +108,7 @@ else if(prob(1)) custom_emote(1, pick("sits down.", "crouches on its hind legs.", "looks alert.")) icon_state = "[icon_living]_sit" + collar_type = "[initial(collar_type)]_sit" resting = TRUE update_canmove() else if(prob(1)) @@ -188,6 +190,7 @@ /mob/living/simple_animal/pet/cat/Proc name = "Proc" + unique_pet = TRUE /mob/living/simple_animal/pet/cat/kitten name = "kitten" @@ -199,6 +202,7 @@ gender = NEUTER density = 0 pass_flags = PASSMOB + collar_type = "kitten" /mob/living/simple_animal/pet/cat/Syndi name = "SyndiCat" diff --git a/code/modules/mob/living/simple_animal/friendly/corgi.dm b/code/modules/mob/living/simple_animal/friendly/corgi.dm deleted file mode 100644 index c6a572e9679..00000000000 --- a/code/modules/mob/living/simple_animal/friendly/corgi.dm +++ /dev/null @@ -1,669 +0,0 @@ -//Corgi -/mob/living/simple_animal/pet/corgi - name = "\improper corgi" - real_name = "corgi" - desc = "It's a corgi." - icon_state = "corgi" - icon_living = "corgi" - icon_dead = "corgi_dead" - gender = NEUTER - health = 30 - maxHealth = 30 - speak = list("YAP", "Woof!", "Bark!", "AUUUUUU") - speak_emote = list("barks", "woofs") - emote_hear = list("barks", "woofs", "yaps","pants") - emote_see = list("shakes its head", "shivers") - var/bark_sound = list('sound/creatures/dog_bark1.ogg','sound/creatures/dog_bark2.ogg') //Used in emote. - var/yelp_sound = 'sound/creatures/dog_yelp.ogg' //Used on death. - speak_chance = 1 - turns_per_move = 10 - butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/corgi = 3) - response_help = "pets" - response_disarm = "bops" - response_harm = "kicks" - see_in_dark = 5 - childtype = list(/mob/living/simple_animal/pet/corgi) - animal_species = /mob/living/simple_animal/pet/corgi - gold_core_spawnable = CHEM_MOB_SPAWN_FRIENDLY - var/shaved = 0 - var/obj/item/inventory_head - var/obj/item/inventory_back - var/facehugger - var/default_atmos_requirements = 0 - var/last_eaten = 0 - -/mob/living/simple_animal/pet/corgi/New() - ..() - default_atmos_requirements = src.atmos_requirements - regenerate_icons() - if(gender == NEUTER) - gender = pick(MALE, FEMALE) - -/mob/living/simple_animal/pet/corgi/Life(seconds, times_fired) - . = ..() - regenerate_icons() - -/mob/living/simple_animal/pet/corgi/show_inv(mob/user as mob) - user.set_machine(src) - if(user.stat) return - - var/dat = {""} - - dat += "" - dat += "" - if(can_collar) - dat += "" - dat += "" - if(facehugger) - dat += "" - dat += {"
Head:[(inventory_head && !(inventory_head.flags&ABSTRACT)) ? inventory_head : "Empty"]
Back:[(inventory_back && !(inventory_back.flags&ABSTRACT)) ? inventory_back : "Empty"]
 
Collar:[(collar && !(collar.flags&ABSTRACT)) ? collar : "Empty"]
Facehugger:[facehugger]
- Close - "} - - var/datum/browser/popup = new(user, "mob\ref[src]", "[src]", 440, 500) - popup.set_content(dat) - popup.open() - -/mob/living/simple_animal/pet/corgi/attackby(var/obj/item/O as obj, var/mob/user as mob, params) - if(inventory_head && inventory_back) - //helmet and armor = 100% protection - if( istype(inventory_head,/obj/item/clothing/head/helmet) && istype(inventory_back,/obj/item/clothing/suit/armor) ) - if( O.force ) - to_chat(user, "[src] is wearing too much armor! You can't cause [p_them()] any damage.") - visible_message(" [user] hits [src] with [O], however [src] is too armored.") - else - to_chat(user, "[src] is wearing too much armor! You can't reach [p_their()] skin.") - visible_message("[user] gently taps [src] with [O].") - if(health>0 && prob(15)) - custom_emote(1, "looks at [user] with [pick("an amused","an annoyed","a confused","a resentful", "a happy", "an excited")] expression.") - return - - if(istype(O, /obj/item/razor)) - if(shaved) - to_chat(user, "You can't shave this corgi, it's already been shaved!") - return - user.visible_message("[user] starts to shave [src] using \the [O].", "You start to shave [src] using \the [O]...") - if(do_after(user, 50 * O.toolspeed, target = src)) - user.visible_message("[user] shaves [src]'s hair using \the [O].") - playsound(loc, O.usesound, 20, 1) - shaved = 1 - icon_living = "[initial(icon_living)]_shaved" - icon_dead = "[initial(icon_living)]_shaved_dead" - if(stat == CONSCIOUS) - icon_state = icon_living - else - icon_state = icon_dead - return - ..() - -/mob/living/simple_animal/pet/corgi/Topic(href, href_list) - if(usr.stat) return - if((!ishuman(usr) && !isrobot(usr)) || !Adjacent(usr)) - return - //Removing from inventory - if(href_list["remove_inv"]) - var/remove_from = href_list["remove_inv"] - switch(remove_from) - if("head") - if(inventory_head) - if(inventory_head.flags & NODROP) - to_chat(usr, "\The [inventory_head] is stuck too hard to [src] for you to remove!") - return - name = real_name - desc = initial(desc) - speak = list("YAP", "Woof!", "Bark!", "AUUUUUU") - speak_emote = list("barks", "woofs") - emote_hear = list("barks", "woofs", "yaps","pants") - emote_see = list("shakes its head", "shivers") - desc = "It's a corgi." - set_light(0) - mutations.Remove(BREATHLESS) - atmos_requirements = default_atmos_requirements - minbodytemp = initial(minbodytemp) - inventory_head.loc = src.loc - inventory_head = null - regenerate_icons() - else - to_chat(usr, "There is nothing to remove from its [remove_from].") - return - if("back") - if(inventory_back) - if(inventory_back.flags & NODROP) - to_chat(usr, "\The [inventory_back] is stuck too hard to [src] for you to remove!") - return - inventory_back.loc = src.loc - inventory_back = null - regenerate_icons() - else - to_chat(usr, "There is nothing to remove from its [remove_from].") - return - show_inv(usr) - //Adding things to inventory - else if(href_list["add_inv"]) - var/add_to = href_list["add_inv"] - - switch(add_to) - if("head") - place_on_head(usr.get_active_hand(),usr) - - if("back") - if(inventory_back) - to_chat(usr, "It's already wearing something!") - return - else - var/obj/item/item_to_add = usr.get_active_hand() - - if(!item_to_add) - usr.visible_message("[usr] pets [src].","You rest your hand on [src]'s back for a moment.") - return - if(istype(item_to_add,/obj/item/grenade/plastic/c4)) // last thing he ever wears, I guess - item_to_add.afterattack(src,usr,1) - return - - //The objects that corgis can wear on their backs. - var/list/allowed_types = list( - /obj/item/clothing/suit/armor/vest, - /obj/item/clothing/suit/armor/vest/blueshield, - /obj/item/clothing/suit/space/deathsquad, - /obj/item/clothing/suit/space/hardsuit/engine, - /obj/item/radio, - /obj/item/radio/off, - /obj/item/clothing/suit/cardborg, - /obj/item/tank/oxygen, - /obj/item/tank/air, - /obj/item/extinguisher, - ) - - if( ! ( item_to_add.type in allowed_types ) ) - to_chat(usr, "You set [item_to_add] on [src]'s back, but [p_they()] shake[p_s()] it off!") - if(!usr.drop_item()) - to_chat(usr, "\The [item_to_add] is stuck to your hand, you cannot put it on [src]'s back!") - return - item_to_add.loc = loc - if(prob(25)) - step_rand(item_to_add) - for(var/i in list(1,2,4,8,4,8,4,dir)) - dir = i - sleep(1) - return - - usr.drop_item() - item_to_add.loc = src - src.inventory_back = item_to_add - regenerate_icons() - show_inv(usr) -//Removing facehuggers - else if(href_list["remove_hugger"]) - if(!facehugger) - return - var/obj/item/F = facehugger - F.forceMove(loc) - facehugger = null - to_chat(usr, "You remove [F] from [src]'s face. [src] pants for air and barks.") - regenerate_icons() - show_inv(usr) - else - ..() - -//Corgis are supposed to be simpler, so only a select few objects can actually be put -//to be compatible with them. The objects are below. -//Many hats added, Some will probably be removed, just want to see which ones are popular. -/mob/living/simple_animal/pet/corgi/proc/place_on_head(obj/item/item_to_add, var/mob/user as mob) - - if(istype(item_to_add,/obj/item/grenade/plastic/c4)) // last thing he ever wears, I guess - item_to_add.afterattack(src,user,1) - return - - if(inventory_head) - if(user) - to_chat(user, "You can't put more than one hat on [src]!") - return - if(!item_to_add) - user.visible_message("[user] pets [src].","You rest your hand on [src]'s head for a moment.") - return - - - var/valid = 0 - - //Various hats and items (worn on his head) change Ian's behaviour. His attributes are reset when a hat is removed. - if(istype(item_to_add, /obj/item/clothing/accessory/scarf)) - valid = 1 - else - switch(item_to_add.type) - if( /obj/item/clothing/glasses/sunglasses, /obj/item/clothing/head/that, /obj/item/clothing/head/collectable/paper, - /obj/item/clothing/head/hardhat, /obj/item/clothing/head/collectable/hardhat, /obj/item/clothing/head/hardhat/white, - /obj/item/paper) - valid = 1 - - if(/obj/item/clothing/head/helmet) - name = "Sergeant [real_name]" - desc = "The ever-loyal, the ever-vigilant." - valid = 1 - - if(/obj/item/clothing/head/chefhat, /obj/item/clothing/head/collectable/chef) - name = "Sous chef [real_name]" - desc = "Your food will be taste-tested. All of it." - valid = 1 - - if(/obj/item/clothing/head/caphat, /obj/item/clothing/head/collectable/captain) - name = "Captain [real_name]" - desc = "Probably better than the last captain." - valid = 1 - - if(/obj/item/clothing/head/kitty, /obj/item/clothing/head/collectable/kitty) - name = "Runtime" - emote_see = list("coughs up a furball", "stretches") - emote_hear = list("purrs") - speak = list("Purrr", "Meow!", "MAOOOOOW!", "HISSSSS", "MEEEEEEW") - desc = "It's a cute little kitty-cat! ... wait ... what the hell?" - valid = 1 - - if(/obj/item/clothing/head/rabbitears, /obj/item/clothing/head/collectable/rabbitears) - name = "Hoppy" - emote_see = list("twitches its nose", "hops around a bit") - desc = "This is Hoppy. It's a corgi-...urmm... bunny rabbit" - valid = 1 - - if(/obj/item/clothing/head/beret, /obj/item/clothing/head/collectable/beret) - name = "Yann" - desc = "Mon dieu! C'est un chien!" - speak = list("le woof!", "le bark!", "JAPPE!!") - emote_see = list("cowers in fear.", "surrenders.", "plays dead.","looks as though there is a wall in front of him.") - valid = 1 - - if(/obj/item/clothing/head/det_hat) - name = "Detective [real_name]" - desc = "[name] sees through your lies..." - emote_see = list("investigates the area.","sniffs around for clues.","searches for scooby snacks.") - valid = 1 - - if(/obj/item/clothing/head/nursehat) - name = "Nurse [real_name]" - desc = "[name] needs 100cc of beef jerky... STAT!" - valid = 1 - - if(/obj/item/clothing/head/pirate, /obj/item/clothing/head/collectable/pirate) - name = "[pick("Ol'","Scurvy","Black","Rum","Gammy","Bloody","Gangrene","Death","Long-John")] [pick("kibble","leg","beard","tooth","poop-deck","Threepwood","Le Chuck","corsair","Silver","Crusoe")]" - desc = "Yaarghh!! Thar' be a scurvy dog!" - emote_see = list("hunts for treasure.","stares coldly...","gnashes his tiny corgi teeth!") - emote_hear = list("growls ferociously!", "snarls.") - speak = list("Arrrrgh!!","Grrrrrr!") - valid = 1 - - if(/obj/item/clothing/head/ushanka) - name = "[pick("Comrade","Commissar","Glorious Leader")] [real_name]" - desc = "A follower of Karl Barx." - emote_see = list("contemplates the failings of the capitalist economic model.", "ponders the pros and cons of vanguardism.") - valid = 1 - - if(/obj/item/clothing/head/warden, /obj/item/clothing/head/collectable/police) - name = "Officer [real_name]" - emote_see = list("drools.","looks for donuts.") - desc = "Stop right there criminal scum!" - valid = 1 - - if(/obj/item/clothing/head/wizard/fake, /obj/item/clothing/head/wizard, /obj/item/clothing/head/collectable/wizard) - name = "Grandwizard [real_name]" - speak = list("YAP", "Woof!", "Bark!", "AUUUUUU", "EI NATH!") - valid = 1 - - if(/obj/item/clothing/head/cardborg) - name = "Borgi" - speak = list("Ping!","Beep!","Woof!") - emote_see = list("goes rogue.", "sniffs out non-humans.") - desc = "Result of robotics budget cuts." - valid = 1 - - if(/obj/item/bedsheet) - name = "\improper Ghost" - speak = list("WoooOOOooo~","AUUUUUUUUUUUUUUUUUU") - emote_see = list("stumbles around.", "shivers.") - emote_hear = list("howls!","groans.") - desc = "Spooky!" - valid = 1 - - if(/obj/item/clothing/head/helmet/space/santahat) - name = "Santa's Corgi Helper" - emote_hear = list("barks Christmas songs.", "yaps merrily!") - emote_see = list("looks for presents.", "checks his list.") - desc = "He's very fond of milk and cookies." - valid = 1 - - if(/obj/item/clothing/head/soft) - name = "Corgi Tech [real_name]" - desc = "The reason your yellow gloves have chew-marks." - valid = 1 - - if(/obj/item/clothing/head/hardhat/reindeer) - name = "[real_name] the red-nosed Corgi" - emote_hear = list("lights the way!", "illuminates.", "yaps!") - desc = "He has a very shiny nose." - set_light(1) - valid = 1 - - if(/obj/item/clothing/head/sombrero) - name = "Segnor [real_name]" - desc = "You must respect elder [real_name]" - valid = 1 - - if(/obj/item/clothing/head/hopcap) - name = "Lieutenant [real_name]" - desc = "Can actually be trusted to not run off on his own." - valid = 1 - - if(/obj/item/clothing/head/helmet/space/deathsquad) - name = "Trooper [real_name]" - desc = "That's not red paint. That's real corgi blood." - valid = 1 - - if(/obj/item/clothing/suit/space/hardsuit/engine) - name = "Space Explorer [real_name]" - desc = "That's one small step for a corgi. One giant yap for corgikind." - valid = 1 - mutations.Add(BREATHLESS) - atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) - minbodytemp = 0 - - if(/obj/item/clothing/mask/fakemoustache) - name = "Definitely Not [real_name]" - desc = "That's Definitely Not [real_name]" - valid = 1 - - if(/obj/item/clothing/head/beret/centcom/officer, /obj/item/clothing/head/beret/centcom/officer/navy) - name = "Blueshield [real_name]" - desc = "Will stand by you until the bitter end." - emote_see = list("stands with pride.", "growls heroically.") - valid = 1 - - if(valid) - if(user && !user.drop_item()) - to_chat(user, "\The [item_to_add] is stuck to your hand, you cannot put it on [src]'s head!") - return 0 - if(health <= 0) - to_chat(user, "There is merely a dull, lifeless look in [real_name]'s eyes as you put the [item_to_add] on [p_them()].") - else if(user) - user.visible_message("[user] puts [item_to_add] on [real_name]'s head. [src] looks at [user] and barks once.", - "You put [item_to_add] on [real_name]'s head. [src] gives you a peculiar look, then wags [p_their()] tail once and barks.", - "You hear a friendly-sounding bark.") - item_to_add.loc = src - src.inventory_head = item_to_add - regenerate_icons() - - else - if(user && !user.drop_item()) - to_chat(user, "\The [item_to_add] is stuck to your hand, you cannot put it on [src]'s head!") - return 0 - to_chat(user, "You set [item_to_add] on [src]'s head, but [p_they()] shake[p_s()] it off!") - item_to_add.loc = loc - if(prob(25)) - step_rand(item_to_add) - for(var/i in list(1,2,4,8,4,8,4,dir)) - dir = i - sleep(1) - - return valid - -/mob/living/simple_animal/pet/corgi/death(gibbed) - playsound(src, yelp_sound, 75, 1) - ..() - -/mob/living/simple_animal/pet/corgi/emote(act, m_type = 1, message = null, force) - if(stat != CONSCIOUS) - return - - var/on_CD = 0 - act = lowertext(act) - switch(act) - if("bark") - on_CD = handle_emote_CD() - if("growl") - on_CD = handle_emote_CD() - else - on_CD = 0 - - if(!force && on_CD == 1) - return - - switch(act) - if("bark") - message = "[src] [pick(src.speak_emote)]!" - m_type = 2 //audible - playsound(src, pick(src.bark_sound), 50, 0.85) - if("growl") - message = "[src] growls!" - m_type = 2 //audible - if("help") - to_chat(src, "scream, bark, growl") - - ..() - - -//IAN! SQUEEEEEEEEE~ -/mob/living/simple_animal/pet/corgi/Ian - name = "Ian" - real_name = "Ian" //Intended to hold the name without altering it. - gender = MALE - desc = "It's a corgi." - var/turns_since_scan = 0 - var/obj/movement_target - response_help = "pets" - response_disarm = "bops" - response_harm = "kicks" - gold_core_spawnable = CHEM_MOB_SPAWN_INVALID - -/mob/living/simple_animal/pet/corgi/Ian/handle_automated_movement() - . = ..() - //Feeding, chasing food, FOOOOODDDD - if(!resting && !buckled) - turns_since_scan++ - if(turns_since_scan > 5) - turns_since_scan = 0 - if((movement_target) && !(isturf(movement_target.loc) || ishuman(movement_target.loc) )) - movement_target = null - stop_automated_movement = 0 - if( !movement_target || !(movement_target.loc in oview(src, 3)) ) - movement_target = null - stop_automated_movement = 0 - for(var/obj/item/reagent_containers/food/snacks/S in oview(src,3)) - if(isturf(S.loc) || ishuman(S.loc)) - movement_target = S - break - if(movement_target) - spawn(0) - stop_automated_movement = 1 - step_to(src,movement_target,1) - sleep(3) - step_to(src,movement_target,1) - sleep(3) - step_to(src,movement_target,1) - - if(movement_target) //Not redundant due to sleeps, Item can be gone in 6 decisecomds - if(movement_target.loc.x < src.x) - dir = WEST - else if(movement_target.loc.x > src.x) - dir = EAST - else if(movement_target.loc.y < src.y) - dir = SOUTH - else if(movement_target.loc.y > src.y) - dir = NORTH - else - dir = SOUTH - - if(!Adjacent(movement_target)) //can't reach food through windows. - return - - if(isturf(movement_target.loc) ) - movement_target.attack_animal(src) - else if(ishuman(movement_target.loc) ) - if(prob(20)) - custom_emote(1, "stares at [movement_target.loc]'s [movement_target] with a sad puppy-face") - - if(prob(1)) - custom_emote(1, pick("dances around.","chases its tail!")) - spin(20, 1) - -/obj/item/reagent_containers/food/snacks/meat/corgi - name = "Corgi meat" - desc = "Tastes like... well you know..." - -/mob/living/simple_animal/pet/corgi/regenerate_icons() - overlays.Cut() - if(inventory_head) - var/image/head_icon - if(health <= 0) - head_icon = image('icons/mob/corgi_head.dmi', icon_state = inventory_head.icon_state, dir = EAST) - head_icon.pixel_y = -8 - head_icon.transform = turn(head_icon.transform, 180) - else - head_icon = image('icons/mob/corgi_head.dmi', icon_state = inventory_head.icon_state) - overlays += head_icon - if(inventory_back) - var/image/back_icon - if(health <= 0) - back_icon = image('icons/mob/corgi_back.dmi', icon_state = inventory_back.icon_state, dir = EAST) - back_icon.pixel_y = -11 - back_icon.transform = turn(back_icon.transform, 180) - else - back_icon = image('icons/mob/corgi_back.dmi', icon_state = inventory_back.icon_state) - overlays += back_icon - if(facehugger) - if(istype(src, /mob/living/simple_animal/pet/corgi/puppy)) - overlays += image('icons/mob/mask.dmi',"facehugger_corgipuppy") - else - overlays += image('icons/mob/mask.dmi',"facehugger_corgi") - ..(0) - -/mob/living/simple_animal/pet/corgi/puppy - name = "\improper corgi puppy" - real_name = "corgi" - desc = "It's a corgi puppy." - icon_state = "puppy" - icon_living = "puppy" - icon_dead = "puppy_dead" - shaved = 0 - density = 0 - pass_flags = PASSMOB - mob_size = MOB_SIZE_SMALL - -//puppies cannot wear anything. -/mob/living/simple_animal/pet/corgi/puppy/Topic(href, href_list) - if(href_list["remove_inv"] || href_list["add_inv"]) - to_chat(usr, "You can't fit this on [src]!") - return - ..() - - - -//LISA! SQUEEEEEEEEE~ -/mob/living/simple_animal/pet/corgi/Lisa - name = "Lisa" - real_name = "Lisa" - gender = FEMALE - desc = "It's a corgi with a cute pink bow." - icon_state = "lisa" - icon_living = "lisa" - icon_dead = "lisa_dead" - response_help = "pets" - response_disarm = "bops" - response_harm = "kicks" - var/turns_since_scan = 0 - var/puppies = 0 - gold_core_spawnable = CHEM_MOB_SPAWN_INVALID - -//Lisa already has a cute bow! -/mob/living/simple_animal/pet/corgi/Lisa/Topic(href, href_list) - if(href_list["remove_inv"] || href_list["add_inv"]) - to_chat(usr, "[src] already has a cute bow!") - return - ..() - -/mob/living/simple_animal/pet/corgi/Lisa/Life() - ..() - make_babies() - -/mob/living/simple_animal/pet/corgi/Lisa/handle_automated_movement() - . = ..() - if(!resting && !buckled) - if(prob(1)) - custom_emote(1, pick("dances around.","chases her tail.")) - spin(20, 1) - -/mob/living/simple_animal/pet/corgi/attack_hand(mob/living/carbon/human/M) - . = ..() - switch(M.a_intent) - if(INTENT_HELP) wuv(1,M) - if(INTENT_HARM) wuv(-1,M) - -/mob/living/simple_animal/pet/corgi/proc/wuv(change, mob/M) - if(change) - if(change > 0) - if(M && stat != DEAD) // Added check to see if this mob (the corgi) is dead to fix issue 2454 - new /obj/effect/temp_visual/heart(loc) - custom_emote(1, "yaps happily!") - else - if(M && stat != DEAD) // Same check here, even though emote checks it as well (poor form to check it only in the help case) - custom_emote(1, "growls!") - -/mob/living/simple_animal/pet/corgi/Ian/borgi - name = "E-N" - real_name = "E-N" //Intended to hold the name without altering it. - desc = "It's a borgi." - icon_state = "borgi" - icon_living = "borgi" - bark_sound = null //No robo-bjork... - yelp_sound = null //Or robo-Yelp. - var/emagged = 0 - atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) - minbodytemp = 0 - loot = list(/obj/effect/decal/cleanable/blood/gibs/robot) - del_on_death = 1 - deathmessage = "blows apart!" - -/mob/living/simple_animal/pet/corgi/Ian/borgi/emag_act(user as mob) - if(!emagged) - emagged = 1 - visible_message("[user] swipes a card through [src].", "You overload [src]s internal reactor.") - spawn (1000) - src.explode() - -/mob/living/simple_animal/pet/corgi/Ian/borgi/proc/explode() - for(var/mob/M in viewers(src, null)) - if(M.client) - M.show_message("[src] makes an odd whining noise.") - sleep(10) - explosion(get_turf(src), 0, 1, 4, 7) - death() - -/mob/living/simple_animal/pet/corgi/Ian/borgi/proc/shootAt(var/atom/movable/target) - var/turf/T = get_turf(src) - var/turf/U = get_turf(target) - if(!T || !U) - return - var/obj/item/projectile/beam/A = new /obj/item/projectile/beam(loc) - A.icon = 'icons/effects/genetics.dmi' - A.icon_state = "eyelasers" - playsound(src.loc, 'sound/weapons/taser2.ogg', 75, 1) - A.current = T - A.yo = U.y - T.y - A.xo = U.x - T.x - A.fire() - return - -/mob/living/simple_animal/pet/corgi/Ian/borgi/Life(seconds, times_fired) - ..() - //spark for no reason - if(prob(5)) - do_sparks(3, 1, src) - -/mob/living/simple_animal/pet/corgi/Ian/borgi/handle_automated_action() - if(emagged && prob(25)) - var/mob/living/carbon/target = locate() in view(10, src) - if(target) - shootAt(target) - -/mob/living/simple_animal/pet/corgi/Ian/borgi/death(gibbed) - // Only execute the below if we successfully died - . = ..(gibbed) - if(!.) - return FALSE - do_sparks(3, 1, src) diff --git a/code/modules/mob/living/simple_animal/friendly/corgi_powers.dm b/code/modules/mob/living/simple_animal/friendly/corgi_powers.dm index 5f6f34b8b1c..e96d3cd9bd1 100644 --- a/code/modules/mob/living/simple_animal/friendly/corgi_powers.dm +++ b/code/modules/mob/living/simple_animal/friendly/corgi_powers.dm @@ -1,4 +1,4 @@ -/mob/living/simple_animal/pet/corgi/verb/chasetail() +/mob/living/simple_animal/pet/dog/corgi/verb/chasetail() set name = "Chase your tail" set desc = "d'awwww." set category = "Corgi" diff --git a/code/modules/mob/living/simple_animal/friendly/dog.dm b/code/modules/mob/living/simple_animal/friendly/dog.dm new file mode 100644 index 00000000000..0a093af4596 --- /dev/null +++ b/code/modules/mob/living/simple_animal/friendly/dog.dm @@ -0,0 +1,754 @@ +//Dogs. + +/mob/living/simple_animal/pet/dog + response_help = "pets" + response_disarm = "bops" + response_harm = "kicks" + speak = list("YAP", "Woof!", "Bark!", "AUUUUUU") + speak_emote = list("barks", "woofs") + emote_hear = list("barks!", "woofs!", "yaps.","pants.") + emote_see = list("shakes its head.", "chases its tail.","shivers.") + faction = list("neutral") + see_in_dark = 5 + speak_chance = 1 + turns_per_move = 10 + var/bark_sound = list('sound/creatures/dog_bark1.ogg','sound/creatures/dog_bark2.ogg') //Used in emote. + var/yelp_sound = 'sound/creatures/dog_yelp.ogg' //Used on death. + var/last_eaten = 0 + +/mob/living/simple_animal/pet/dog/death(gibbed) + // Only execute the below if we successfully died + . = ..(gibbed) + if(!.) + return + playsound(src, yelp_sound, 75, 1) + +/mob/living/simple_animal/pet/dog/emote(act, m_type = 1, message = null, force) + if(!incapacitated()) + return + + var/on_CD = 0 + act = lowertext(act) + switch(act) + if("bark") + on_CD = handle_emote_CD() + if("yelp") + on_CD = handle_emote_CD() + else + on_CD = 0 + + if(!force && on_CD == 1) + return + + switch(act) + if("bark") + message = "[src] [pick(src.speak_emote)]!" + m_type = 2 //audible + playsound(src, pick(src.bark_sound), 50, 0.85) + if("yelp") + message = "[src] yelps!" + m_type = 2 //audible + playsound(src, yelp_sound, 50, 0.85) + if("growl") + message = "[src] growls!" + m_type = 2 //audible + if("help") + to_chat(src, "scream, bark, growl") + + ..() + +/mob/living/simple_animal/pet/dog/attack_hand(mob/living/carbon/human/M) + . = ..() + switch(M.a_intent) + if(INTENT_HELP) + wuv(1, M) + if(INTENT_HARM) + wuv(-1, M) + +/mob/living/simple_animal/pet/dog/proc/wuv(change, mob/M) + if(change) + if(change > 0) + if(M && stat != DEAD) // Added check to see if this mob (the corgi) is dead to fix issue 2454 + new /obj/effect/temp_visual/heart(loc) + custom_emote(1, "yaps happily!") + else + if(M && stat != DEAD) // Same check here, even though emote checks it as well (poor form to check it only in the help case) + custom_emote(1, "growls!") + +//Corgis and pugs are now under one dog subtype + +/mob/living/simple_animal/pet/dog/corgi + name = "\improper corgi" + real_name = "corgi" + desc = "It's a corgi." + icon_state = "corgi" + icon_living = "corgi" + icon_dead = "corgi_dead" + butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/corgi = 3, /obj/item/stack/sheet/animalhide/corgi = 1) + childtype = list(/mob/living/simple_animal/pet/dog/corgi/puppy = 95, /mob/living/simple_animal/pet/dog/corgi/puppy/void = 5) + animal_species = /mob/living/simple_animal/pet/dog + gold_core_spawnable = CHEM_MOB_SPAWN_FRIENDLY + collar_type = "corgi" + var/obj/item/inventory_head + var/obj/item/inventory_back + var/shaved = FALSE + var/nofur = FALSE //Corgis that have risen past the material plane of existence. + +/mob/living/simple_animal/pet/dog/corgi/Initialize(mapload) + . = ..() + regenerate_icons() + +/mob/living/simple_animal/pet/dog/corgi/Destroy() + QDEL_NULL(inventory_head) + QDEL_NULL(inventory_back) + return ..() + +/mob/living/simple_animal/pet/dog/corgi/handle_atom_del(atom/A) + if(A == inventory_head) + inventory_head = null + regenerate_icons() + if(A == inventory_back) + inventory_back = null + regenerate_icons() + return ..() + +/mob/living/simple_animal/pet/dog/corgi/Life(seconds, times_fired) + . = ..() + regenerate_icons() + +/mob/living/simple_animal/pet/dog/corgi/death(gibbed) + ..(gibbed) + regenerate_icons() + +/mob/living/simple_animal/pet/dog/corgi/show_inv(mob/user) + if(user.incapacitated() || !Adjacent(user)) + return + user.set_machine(src) + + + var/dat = "
Inventory of [name]

" + dat += "
Head: [inventory_head]" : "add_inv=head'>Nothing"]" + dat += "
Back: [inventory_back]" : "add_inv=back'>Nothing"]" + dat += "
Collar: [pcollar]" : "add_inv=collar'>Nothing"]" + + var/datum/browser/popup = new(user, "mob[UID()]", "[src]", 440, 250) + popup.set_content(dat) + popup.open() + +/mob/living/simple_animal/pet/dog/corgi/getarmor(def_zone, type) + var/armorval = 0 + + if(def_zone) + if(def_zone == "head") + if(inventory_head) + armorval = inventory_head.armor[type] + else + if(inventory_back) + armorval = inventory_back.armor[type] + return armorval + else + if(inventory_head) + armorval += inventory_head.armor[type] + if(inventory_back) + armorval += inventory_back.armor[type] + return armorval * 0.5 + +/mob/living/simple_animal/pet/dog/corgi/attackby(obj/item/O, mob/user, params) + if(istype(O, /obj/item/razor)) + if (shaved) + to_chat(user, "You can't shave this corgi, it's already been shaved!") + return + if (nofur) + to_chat(user, "You can't shave this corgi, it doesn't have a fur coat!") + return + user.visible_message("[user] starts to shave [src] using \the [O].", "You start to shave [src] using \the [O]...") + if(do_after(user, 50, target = src)) + user.visible_message("[user] shaves [src]'s hair using \the [O].") + playsound(loc, 'sound/items/welder2.ogg', 20, TRUE) + shaved = TRUE + icon_living = "[initial(icon_living)]_shaved" + icon_dead = "[initial(icon_living)]_shaved_dead" + if(stat == CONSCIOUS) + icon_state = icon_living + else + icon_state = icon_dead + return + ..() + update_corgi_fluff() + +/mob/living/simple_animal/pet/dog/corgi/Topic(href, href_list) + if(!(iscarbon(usr) || isrobot(usr)) || usr.incapacitated() || !Adjacent(usr)) + usr << browse(null, "window=mob[UID()]") + usr.unset_machine() + return + + //Removing from inventory + if(href_list["remove_inv"]) + var/remove_from = href_list["remove_inv"] + switch(remove_from) + if("head") + if(inventory_head) + if(inventory_head.flags & NODROP) + to_chat(usr, "\The [inventory_head] is stuck too hard to [src] for you to remove!") + usr.put_in_hands(inventory_head) + inventory_head = null + update_corgi_fluff() + regenerate_icons() + else + to_chat(usr, "There is nothing to remove from its [remove_from].") + return + if("back") + if(inventory_back) + if(inventory_back.flags & NODROP) + to_chat(usr, "\The [inventory_head] is stuck too hard to [src] for you to remove!") + usr.put_in_hands(inventory_back) + inventory_back = null + update_corgi_fluff() + regenerate_icons() + else + to_chat(usr, "There is nothing to remove from its [remove_from].") + return + if("collar") + if(pcollar) + var/the_collar = pcollar + unEquip(pcollar) + usr.put_in_hands(the_collar) + pcollar = null + update_corgi_fluff() + regenerate_icons() + + show_inv(usr) + + //Adding things to inventory + else if(href_list["add_inv"]) + var/add_to = href_list["add_inv"] + + switch(add_to) + if("collar") + add_collar(usr.get_active_hand(), usr) + update_corgi_fluff() + + if("head") + place_on_head(usr.get_active_hand(),usr) + + if("back") + if(inventory_back) + to_chat(usr, "It's already wearing something!") + return + else + var/obj/item/item_to_add = usr.get_active_hand() + + if(!item_to_add) + usr.visible_message("[usr] pets [src].", "You rest your hand on [src]'s back for a moment.") + return + + if(!usr.unEquip(item_to_add)) + to_chat(usr, "\The [item_to_add] is stuck to your hand, you cannot put it on [src]'s back!") + return + + if(istype(item_to_add, /obj/item/grenade/plastic/c4)) // last thing he ever wears, I guess + item_to_add.afterattack(src,usr,1) + return + + //The objects that corgis can wear on their backs. + var/allowed = FALSE + if(ispath(item_to_add.dog_fashion, /datum/dog_fashion/back)) + allowed = TRUE + + if(!allowed) + to_chat(usr, "You set [item_to_add] on [src]'s back, but it falls off!") + item_to_add.forceMove(drop_location()) + if(prob(25)) + step_rand(item_to_add) + for(var/i in list(1,2,4,8,4,8,4,dir)) + setDir(i) + sleep(1) + return + + item_to_add.forceMove(src) + src.inventory_back = item_to_add + update_corgi_fluff() + regenerate_icons() + + show_inv(usr) + else + return ..() + +//Corgis are supposed to be simpler, so only a select few objects can actually be put +//to be compatible with them. The objects are below. +//Many hats added, Some will probably be removed, just want to see which ones are popular. +// > some will probably be removed + +/mob/living/simple_animal/pet/dog/corgi/proc/place_on_head(obj/item/item_to_add, mob/user) + + if(istype(item_to_add, /obj/item/grenade/plastic/c4)) // last thing he ever wears, I guess + item_to_add.afterattack(src,user,1) + return + + if(inventory_head) + if(user) + to_chat(user, "You can't put more than one hat on [src]!") + return + if(!item_to_add) + user.visible_message("[user] pets [src].", "You rest your hand on [src]'s head for a moment.") + if(flags_2 & HOLOGRAM_2) + return + return + + if(user && !user.unEquip(item_to_add)) + to_chat(user, "\The [item_to_add] is stuck to your hand, you cannot put it on [src]'s head!") + return 0 + + var/valid = FALSE + if(ispath(item_to_add.dog_fashion, /datum/dog_fashion/head)) + valid = TRUE + + //Various hats and items (worn on his head) change Ian's behaviour. His attributes are reset when a hat is removed. + + if(valid) + if(health <= 0) + to_chat(user, "There is merely a dull, lifeless look in [real_name]'s eyes as you put the [item_to_add] on [p_them()].") + else if(user) + user.visible_message("[user] puts [item_to_add] on [real_name]'s head. [src] looks at [user] and barks once.", + "You put [item_to_add] on [real_name]'s head. [src] gives you a peculiar look, then wags [p_their()] tail once and barks.", + "You hear a friendly-sounding bark.") + item_to_add.forceMove(src) + src.inventory_head = item_to_add + update_corgi_fluff() + regenerate_icons() + else + to_chat(user, "You set [item_to_add] on [src]'s head, but it falls off!") + item_to_add.forceMove(drop_location()) + if(prob(25)) + step_rand(item_to_add) + for(var/i in list(1,2,4,8,4,8,4,dir)) + setDir(i) + sleep(1) + + return valid + +/mob/living/simple_animal/pet/dog/corgi/proc/update_corgi_fluff() + // First, change back to defaults + name = real_name + desc = initial(desc) + // BYOND/DM doesn't support the use of initial on lists. + speak = list("YAP", "Woof!", "Bark!", "AUUUUUU") + speak_emote = list("barks", "woofs") + emote_hear = list("barks!", "woofs!", "yaps.","pants.") + emote_see = list("shakes its head.", "chases its tail.","shivers.") + desc = initial(desc) + set_light(0) + + if(inventory_head && inventory_head.dog_fashion) + var/datum/dog_fashion/DF = new inventory_head.dog_fashion(src) + DF.apply(src) + + if(inventory_back && inventory_back.dog_fashion) + var/datum/dog_fashion/DF = new inventory_back.dog_fashion(src) + DF.apply(src) + +/mob/living/simple_animal/pet/dog/corgi/regenerate_icons() + ..() + if(inventory_head) + var/image/head_icon + var/datum/dog_fashion/DF = new inventory_head.dog_fashion(src) + + if(!DF.obj_icon_state) + DF.obj_icon_state = inventory_head.icon_state + if(!DF.obj_alpha) + DF.obj_alpha = inventory_head.alpha + if(!DF.obj_color) + DF.obj_color = inventory_head.color + + if(health <= 0) + head_icon = DF.get_overlay(dir = EAST) + head_icon.pixel_y = -8 + head_icon.transform = turn(head_icon.transform, 180) + else + head_icon = DF.get_overlay() + + add_overlay(head_icon) + + if(inventory_back) + var/image/back_icon + var/datum/dog_fashion/DF = new inventory_back.dog_fashion(src) + + if(!DF.obj_icon_state) + DF.obj_icon_state = inventory_back.icon_state + if(!DF.obj_alpha) + DF.obj_alpha = inventory_back.alpha + if(!DF.obj_color) + DF.obj_color = inventory_back.color + + if(health <= 0) + back_icon = DF.get_overlay(dir = EAST) + back_icon.pixel_y = -11 + back_icon.transform = turn(back_icon.transform, 180) + else + back_icon = DF.get_overlay() + add_overlay(back_icon) + +//IAN! SQUEEEEEEEEE~ +/mob/living/simple_animal/pet/dog/corgi/Ian + name = "Ian" + real_name = "Ian" //Intended to hold the name without altering it. + gender = MALE + desc = "It's the HoP's beloved corgi." + var/turns_since_scan = 0 + var/obj/movement_target + response_help = "pets" + response_disarm = "bops" + response_harm = "kicks" + gold_core_spawnable = CHEM_MOB_SPAWN_INVALID + unique_pet = TRUE + var/age = 0 + var/record_age = 1 + var/memory_saved = FALSE + var/saved_head //path + +/mob/living/simple_animal/pet/dog/corgi/Ian/Initialize(mapload) + . = ..() + //parent call must happen first to ensure IAN + //is not in nullspace when child puppies spawn + Read_Memory() + if(age == 0) + var/turf/target = get_turf(loc) + if(target) + var/mob/living/simple_animal/pet/dog/corgi/puppy/P = new /mob/living/simple_animal/pet/dog/corgi/puppy(target) + P.name = "Ian" + P.real_name = "Ian" + P.gender = MALE + P.desc = "It's the HoP's beloved corgi puppy." + Write_Memory(FALSE) + qdel(src) + return + else if(age == record_age) + icon_state = "old_corgi" + icon_living = "old_corgi" + icon_dead = "old_corgi_dead" + desc = "At a ripe old age of [record_age], Ian's not as spry as he used to be, but he'll always be the HoP's beloved corgi." //RIP + turns_per_move = 20 + +/mob/living/simple_animal/pet/dog/corgi/Ian/Life() + if(!stat && SSticker.current_state == GAME_STATE_FINISHED && !memory_saved) + Write_Memory(FALSE) + memory_saved = TRUE + ..() + +/mob/living/simple_animal/pet/dog/corgi/Ian/death() + if(!memory_saved) + Write_Memory(TRUE) + ..() + +/mob/living/simple_animal/pet/dog/corgi/Ian/proc/Read_Memory() + if(fexists("data/npc_saves/Ian.sav")) //legacy compatability to convert old format to new + var/savefile/S = new /savefile("data/npc_saves/Ian.sav") + S["age"] >> age + S["record_age"] >> record_age + S["saved_head"] >> saved_head + fdel("data/npc_saves/Ian.sav") + else + var/json_file = file("data/npc_saves/Ian.json") + if(!fexists(json_file)) + return + var/list/json = json_decode(file2text(json_file)) + age = json["age"] + record_age = json["record_age"] + saved_head = json["saved_head"] + if(isnull(age)) + age = 0 + if(isnull(record_age)) + record_age = 1 + if(saved_head) + place_on_head(new saved_head) + +/mob/living/simple_animal/pet/dog/corgi/Ian/proc/Write_Memory(dead) + var/json_file = file("data/npc_saves/Ian.json") + var/list/file_data = list() + if(!dead) + file_data["age"] = age + 1 + if((age + 1) > record_age) + file_data["record_age"] = record_age + 1 + else + file_data["record_age"] = record_age + if(inventory_head) + file_data["saved_head"] = inventory_head.type + else + file_data["saved_head"] = null + else + file_data["age"] = 0 + file_data["record_age"] = record_age + file_data["saved_head"] = null + fdel(json_file) + WRITE_FILE(json_file, json_encode(file_data)) + +/mob/living/simple_animal/pet/dog/corgi/Ian/handle_automated_movement() + . = ..() + //Feeding, chasing food, FOOOOODDDD + if(!resting && !buckled) + turns_since_scan++ + if(turns_since_scan > 5) + turns_since_scan = 0 + if((movement_target) && !(isturf(movement_target.loc) || ishuman(movement_target.loc) )) + movement_target = null + stop_automated_movement = 0 + if( !movement_target || !(movement_target.loc in oview(src, 3)) ) + movement_target = null + stop_automated_movement = 0 + for(var/obj/item/reagent_containers/food/snacks/S in oview(src,3)) + if(isturf(S.loc) || ishuman(S.loc)) + movement_target = S + break + if(movement_target) + spawn(0) + stop_automated_movement = 1 + step_to(src,movement_target,1) + sleep(3) + step_to(src,movement_target,1) + sleep(3) + step_to(src,movement_target,1) + + if(movement_target) //Not redundant due to sleeps, Item can be gone in 6 decisecomds + if(movement_target.loc.x < src.x) + dir = WEST + else if(movement_target.loc.x > src.x) + dir = EAST + else if(movement_target.loc.y < src.y) + dir = SOUTH + else if(movement_target.loc.y > src.y) + dir = NORTH + else + dir = SOUTH + + if(!Adjacent(movement_target)) //can't reach food through windows. + return + + if(isturf(movement_target.loc) ) + movement_target.attack_animal(src) + else if(ishuman(movement_target.loc) ) + if(prob(20)) + custom_emote(1, "stares at [movement_target.loc]'s [movement_target] with a sad puppy-face") + + if(prob(1)) + custom_emote(1, pick("dances around.","chases its tail!")) + spin(20, 1) + +/obj/item/reagent_containers/food/snacks/meat/corgi + name = "Corgi meat" + desc = "Tastes like... well you know..." + +/mob/living/simple_animal/pet/dog/corgi/Ian/narsie_act() + playsound(src, 'sound/misc/demon_dies.ogg', 75, TRUE) + var/mob/living/simple_animal/pet/dog/corgi/narsie/N = new(loc) + N.setDir(dir) + gib() + +/mob/living/simple_animal/pet/dog/corgi/narsie + name = "Nars-Ian" + desc = "Ia! Ia!" + icon_state = "narsian" + icon_living = "narsian" + icon_dead = "narsian_dead" + faction = list("neutral", "cult") + gold_core_spawnable = CHEM_MOB_SPAWN_INVALID + nofur = TRUE + unique_pet = TRUE + +/mob/living/simple_animal/pet/dog/corgi/narsie/Life() + ..() + for(var/mob/living/simple_animal/pet/P in range(1, src)) + if(P != src && !istype(P, /mob/living/simple_animal/pet/dog/corgi/narsie)) + visible_message("[src] devours [P]!", \ + "DELICIOUS SOULS") + playsound(src, 'sound/misc/demon_attack1.ogg', 75, TRUE) + narsie_act() + if(P.mind) + if(P.mind.hasSoul) + P.mind.hasSoul = FALSE //Nars-Ian ate your soul; you don't have one anymore + else + visible_message("... Aw, someone beat me to this one.") + P.gib() + +/mob/living/simple_animal/pet/dog/corgi/narsie/update_corgi_fluff() + ..() + speak = list("Tari'karat-pasnar!", "IA! IA!", "BRRUUURGHGHRHR") + speak_emote = list("growls", "barks ominously") + emote_hear = list("barks echoingly!", "woofs hauntingly!", "yaps in an eldritch manner.", "mutters something unspeakable.") + emote_see = list("communes with the unnameable.", "ponders devouring some souls.", "shakes.") + +/mob/living/simple_animal/pet/dog/corgi/narsie/narsie_act() + adjustBruteLoss(-maxHealth) + +/mob/living/simple_animal/pet/dog/corgi/puppy + name = "\improper corgi puppy" + real_name = "corgi" + desc = "It's a corgi puppy!" + icon_state = "puppy" + icon_living = "puppy" + icon_dead = "puppy_dead" + density = FALSE + pass_flags = PASSMOB + mob_size = MOB_SIZE_SMALL + collar_type = "puppy" + +//puppies cannot wear anything. +/mob/living/simple_animal/pet/dog/corgi/puppy/Topic(href, href_list) + if(href_list["remove_inv"] || href_list["add_inv"]) + to_chat(usr, "You can't fit this on [src]!") + return + ..() + +/mob/living/simple_animal/pet/dog/corgi/puppy/void //Tribute to the corgis born in nullspace + name = "\improper void puppy" + real_name = "voidy" + desc = "A corgi puppy that has been infused with deep space energy. It's staring back..." + icon_state = "void_puppy" + icon_living = "void_puppy" + icon_dead = "void_puppy_dead" + nofur = TRUE + unsuitable_atmos_damage = 0 + minbodytemp = TCMB + maxbodytemp = T0C + 40 + +/mob/living/simple_animal/pet/dog/corgi/puppy/void/Process_Spacemove(movement_dir = 0) + return 1 //Void puppies can navigate space. + +//LISA! SQUEEEEEEEEE~ +/mob/living/simple_animal/pet/dog/corgi/Lisa + name = "Lisa" + real_name = "Lisa" + gender = FEMALE + desc = "It's a corgi with a cute pink bow." + gold_core_spawnable = CHEM_MOB_SPAWN_INVALID + unique_pet = TRUE + icon_state = "lisa" + icon_living = "lisa" + icon_dead = "lisa_dead" + response_help = "pets" + response_disarm = "bops" + response_harm = "kicks" + var/turns_since_scan = 0 + var/puppies = 0 + +//Lisa already has a cute bow! +/mob/living/simple_animal/pet/dog/corgi/Lisa/Topic(href, href_list) + if(href_list["remove_inv"] || href_list["add_inv"]) + to_chat(usr, "[src] already has a cute bow!") + return + ..() + +/mob/living/simple_animal/pet/dog/corgi/Lisa/Life() + ..() + make_babies() + +/mob/living/simple_animal/pet/dog/corgi/Lisa/handle_automated_movement() + . = ..() + if(!resting && !buckled) + if(prob(1)) + custom_emote(1, pick("dances around.","chases her tail.")) + spin(20, 1) + +/mob/living/simple_animal/pet/dog/corgi/exoticcorgi + name = "Exotic Corgi" + desc = "As cute as it is colorful!" + icon = 'icons/mob/pets.dmi' + icon_state = "corgigrey" + icon_living = "corgigrey" + icon_dead = "corgigrey_dead" + animal_species = /mob/living/simple_animal/pet/dog/corgi/exoticcorgi + nofur = TRUE + +/mob/living/simple_animal/pet/dog/corgi/exoticcorgi/Initialize(mapload) + . = ..() + var/newcolor = rgb(rand(0, 255), rand(0, 255), rand(0, 255)) + add_atom_colour(newcolor, FIXED_COLOUR_PRIORITY) + +/mob/living/simple_animal/pet/dog/corgi/borgi + name = "E-N" + real_name = "E-N" //Intended to hold the name without altering it. + desc = "It's a borgi." + icon_state = "borgi" + icon_living = "borgi" + bark_sound = null //No robo-bjork... + yelp_sound = null //Or robo-Yelp. + var/emagged = 0 + atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) + minbodytemp = 0 + loot = list(/obj/effect/decal/cleanable/blood/gibs/robot) + del_on_death = 1 + deathmessage = "blows apart!" + animal_species = /mob/living/simple_animal/pet/dog/corgi/borgi + nofur = TRUE + +/mob/living/simple_animal/pet/dog/corgi/borgi/emag_act(user as mob) + if(!emagged) + emagged = 1 + visible_message("[user] swipes a card through [src].", "You overload [src]s internal reactor.") + spawn (1000) + src.explode() + +/mob/living/simple_animal/pet/dog/corgi/borgi/proc/explode() + for(var/mob/M in viewers(src, null)) + if(M.client) + M.show_message("[src] makes an odd whining noise.") + sleep(10) + explosion(get_turf(src), 0, 1, 4, 7) + death() + +/mob/living/simple_animal/pet/dog/corgi/borgi/proc/shootAt(var/atom/movable/target) + var/turf/T = get_turf(src) + var/turf/U = get_turf(target) + if(!T || !U) + return + var/obj/item/projectile/beam/A = new /obj/item/projectile/beam(loc) + A.icon = 'icons/effects/genetics.dmi' + A.icon_state = "eyelasers" + playsound(src.loc, 'sound/weapons/taser2.ogg', 75, 1) + A.current = T + A.yo = U.y - T.y + A.xo = U.x - T.x + A.fire() + return + +/mob/living/simple_animal/pet/dog/corgi/borgi/Life(seconds, times_fired) + ..() + //spark for no reason + if(prob(5)) + do_sparks(3, 1, src) + +/mob/living/simple_animal/pet/dog/corgi/borgi/handle_automated_action() + if(emagged && prob(25)) + var/mob/living/carbon/target = locate() in view(10, src) + if(target) + shootAt(target) + +/mob/living/simple_animal/pet/dog/corgi/borgi/death(gibbed) + // Only execute the below if we successfully died + . = ..(gibbed) + if(!.) + return FALSE + do_sparks(3, 1, src) + +///Pugs + +/mob/living/simple_animal/pet/dog/pug + name = "\improper pug" + real_name = "pug" + desc = "It's a pug." + icon = 'icons/mob/pets.dmi' + icon_state = "pug" + icon_living = "pug" + icon_dead = "pug_dead" + butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/pug = 3) + gold_core_spawnable = CHEM_MOB_SPAWN_FRIENDLY + collar_type = "pug" + +/mob/living/simple_animal/pet/pug/handle_automated_movement() + . = ..() + if(!resting && !buckled) + if(prob(1)) + custom_emote(1, pick("chases its tail.")) + spawn(0) + for(var/i in list(1, 2, 4, 8, 4, 2, 1, 2, 4, 8, 4, 2, 1, 2, 4, 8, 4, 2)) + dir = i + sleep(1) \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/friendly/fox.dm b/code/modules/mob/living/simple_animal/friendly/fox.dm index f295ec5b271..8918210af1a 100644 --- a/code/modules/mob/living/simple_animal/friendly/fox.dm +++ b/code/modules/mob/living/simple_animal/friendly/fox.dm @@ -23,6 +23,7 @@ /mob/living/simple_animal/pet/fox/Renault name = "Renault" desc = "Renault, the Captain's trustworthy fox. I wonder what it says?" + unique_pet = TRUE gold_core_spawnable = CHEM_MOB_SPAWN_INVALID //Syndi fox @@ -35,6 +36,7 @@ icon_resting = "Syndifox_rest" mutations = list(BREATHLESS) faction = list("syndicate") + unique_pet = TRUE gold_core_spawnable = CHEM_MOB_SPAWN_INVALID atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) minbodytemp = 0 diff --git a/code/modules/mob/living/simple_animal/friendly/mouse.dm b/code/modules/mob/living/simple_animal/friendly/mouse.dm index ec9cb5cd884..6bfb2c044dc 100644 --- a/code/modules/mob/living/simple_animal/friendly/mouse.dm +++ b/code/modules/mob/living/simple_animal/friendly/mouse.dm @@ -168,6 +168,7 @@ response_help = "pets" response_disarm = "gently pushes aside" response_harm = "splats" + unique_pet = TRUE gold_core_spawnable = CHEM_MOB_SPAWN_INVALID diff --git a/code/modules/mob/living/simple_animal/friendly/pet.dm b/code/modules/mob/living/simple_animal/friendly/pet.dm index 6920da2690f..8a9899b7fa9 100644 --- a/code/modules/mob/living/simple_animal/friendly/pet.dm +++ b/code/modules/mob/living/simple_animal/friendly/pet.dm @@ -1,31 +1,16 @@ /mob/living/simple_animal/pet icon = 'icons/mob/pets.dmi' - can_collar = 1 mob_size = MOB_SIZE_SMALL blood_volume = BLOOD_VOLUME_NORMAL + can_collar = TRUE -/mob/living/simple_animal/pet/attackby(var/obj/item/O as obj, var/mob/user as mob, params) +/mob/living/simple_animal/pet/attackby(obj/item/O, mob/user, params) if(istype(O, /obj/item/newspaper)) if(!stat) - user.visible_message("[user] baps [name] on the nose with the rolled up [O].") + user.visible_message("[user] baps [name] on the nose with the rolled up [O].") spawn(0) for(var/i in list(1,2,4,8,4,2,1,2)) - dir = i + setDir(i) sleep(1) else - ..() - -/mob/living/simple_animal/pet/revive() - ..() - regenerate_icons() - -/mob/living/simple_animal/pet/death(gibbed) - . = ..() - regenerate_icons() - -/mob/living/simple_animal/pet/regenerate_icons(cut_overlays = 1) - if(cut_overlays) - overlays.Cut() - if(collar) - overlays += "[icon_state]collar" - overlays += "[icon_state]tag" + return ..() \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/friendly/pug.dm b/code/modules/mob/living/simple_animal/friendly/pug.dm deleted file mode 100644 index c7b52928e8a..00000000000 --- a/code/modules/mob/living/simple_animal/friendly/pug.dm +++ /dev/null @@ -1,30 +0,0 @@ -//Corgi //best comment 2014 -/mob/living/simple_animal/pet/pug - name = "\improper pug" - real_name = "pug" - desc = "It's a pug." - icon_state = "pug" - icon_living = "pug" - icon_dead = "pug_dead" - speak = list("YAP", "Woof!", "Bark!", "AUUUUUU") - speak_emote = list("barks", "woofs") - emote_hear = list("barks!", "woofs!", "yaps.","pants.") - emote_see = list("shakes its head.", "chases its tail.","shivers.") - speak_chance = 1 - turns_per_move = 10 - butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/pug = 3) - response_help = "pets" - response_disarm = "bops" - response_harm = "kicks" - see_in_dark = 5 - gold_core_spawnable = CHEM_MOB_SPAWN_FRIENDLY - -/mob/living/simple_animal/pet/pug/handle_automated_movement() - . = ..() - if(!resting && !buckled) - if(prob(1)) - custom_emote(1, pick("chases its tail.")) - spawn(0) - for(var/i in list(1, 2, 4, 8, 4, 2, 1, 2, 4, 8, 4, 2, 1, 2, 4, 8, 4, 2)) - dir = i - sleep(1) \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/friendly/sloth.dm b/code/modules/mob/living/simple_animal/friendly/sloth.dm index 6660265302f..92ef76b71e0 100644 --- a/code/modules/mob/living/simple_animal/friendly/sloth.dm +++ b/code/modules/mob/living/simple_animal/friendly/sloth.dm @@ -28,4 +28,5 @@ /mob/living/simple_animal/pet/sloth/paperwork name = "Paperwork" desc = "Cargo's pet sloth. About as useful as the rest of the techs." + unique_pet = TRUE gold_core_spawnable = CHEM_MOB_SPAWN_INVALID \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/pet.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/pet.dm index 687e0b7c73a..e92bc114936 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/pet.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/pet.dm @@ -16,5 +16,5 @@ harm_intent_damage = 3 melee_damage_lower = 15 melee_damage_upper = 20 - + unique_pet = TRUE atmos_requirements = list("min_oxy" = 5, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 2, "min_co2" = 0, "max_co2" = 5, "min_n2" = 0, "max_n2" = 0) diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm index c8e43a936d2..7e41711554b 100644 --- a/code/modules/mob/living/simple_animal/parrot.dm +++ b/code/modules/mob/living/simple_animal/parrot.dm @@ -135,7 +135,7 @@ dat += "Headset:[(ears && !(ears.flags&ABSTRACT)) ? ears : "Empty"]" if(can_collar) dat += " " - dat += "Collar:[(collar && !(collar.flags&ABSTRACT)) ? collar : "Empty"]" + dat += "Collar:[(pcollar && !(pcollar.flags&ABSTRACT)) ? pcollar : "Empty"]" dat += {" Close @@ -697,6 +697,7 @@ "What were the wires again?", "Goddam emaggers!" ) + unique_pet = TRUE gold_core_spawnable = CHEM_MOB_SPAWN_INVALID /mob/living/simple_animal/parrot/Poly/New() diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index b556fa24bec..d268e864d52 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -61,8 +61,10 @@ var/speed = 1 //LETS SEE IF I CAN SET SPEEDS FOR SIMPLE MOBS WITHOUT DESTROYING EVERYTHING. Higher speed is slower, negative speed is faster var/can_hide = 0 - var/obj/item/clothing/accessory/petcollar/collar = null - var/can_collar = 0 // can add collar to mob or not + var/obj/item/clothing/accessory/petcollar/pcollar = null + var/collar_type //if the mob has collar sprites, define them. + var/unique_pet = FALSE // if the mob can be renamed + var/can_collar = FALSE // can add collar to mob or not //Hot simple_animal baby making vars var/list/childtype = null @@ -109,15 +111,12 @@ verbs -= /mob/verb/observe if(!can_hide) verbs -= /mob/living/simple_animal/verb/hide - if(collar) - if(!istype(collar)) - collar = new(src) + if(pcollar) + pcollar = new(src) regenerate_icons() /mob/living/simple_animal/Destroy() - if(collar) - collar.forceMove(loc) - collar = null + QDEL_NULL(pcollar) master_commander = null GLOB.simple_animals[AIStatus] -= src if(SSnpcpool.state == SS_PAUSED && LAZYLEN(SSnpcpool.currentrun)) @@ -133,6 +132,11 @@ return ..() +/mob/living/simple_animal/handle_atom_del(atom/A) + if(A == pcollar) + pcollar = null + return ..() + /mob/living/simple_animal/examine(mob/user) . = ..() if(stat == DEAD) @@ -147,11 +151,17 @@ ..() if(icon_resting && stat != DEAD) icon_state = icon_resting + if(collar_type) + collar_type = "[initial(collar_type)]_rest" + regenerate_icons() /mob/living/simple_animal/StopResting(updating = 1) ..() if(icon_resting && stat != DEAD) icon_state = icon_living + if(collar_type) + collar_type = "[initial(collar_type)]" + regenerate_icons() /mob/living/simple_animal/update_stat(reason = "none given") if(status_flags & GODMODE) @@ -278,6 +288,9 @@ for(var/path in butcher_results) for(var/i in 1 to butcher_results[path]) new path(Tsec) + if(pcollar) + pcollar.forceMove(drop_location()) + pcollar = null ..() /mob/living/simple_animal/emote(act, m_type = 1, message = null, force) @@ -348,6 +361,9 @@ if(flip_on_death) transform = transform.Turn(180) density = 0 + if(collar_type) + collar_type = "[initial(collar_type)]_dead" + regenerate_icons() /mob/living/simple_animal/proc/CanAttack(atom/the_target) if(see_invisible < the_target.invisibility) @@ -387,6 +403,9 @@ density = initial(density) update_canmove() flying = initial(flying) + if(collar_type) + collar_type = "[initial(collar_type)]" + regenerate_icons() /mob/living/simple_animal/proc/make_babies() // <3 <3 <3 if(gender != FEMALE || stat || next_scan_time > world.time || !childtype || !animal_species || !SSticker.IsRoundInProgress()) @@ -421,7 +440,7 @@ return user.set_machine(src) - var/dat = "
Collar:[(collar && !(collar.flags&ABSTRACT)) ? collar : "Empty"]
" + var/dat = "
Collar:[(pcollar && !(pcollar.flags & ABSTRACT)) ? pcollar : "Empty"]
" dat += "Close" var/datum/browser/popup = new(user, "mob\ref[src]", "[src]", 440, 250) @@ -431,14 +450,14 @@ /mob/living/simple_animal/get_item_by_slot(slot_id) switch(slot_id) if(slot_collar) - return collar + return pcollar . = ..() /mob/living/simple_animal/can_equip(obj/item/I, slot, disable_warning = 0) // . = ..() // Do not call parent. We do not want animals using their hand slots. switch(slot) if(slot_collar) - if(collar) + if(pcollar) return FALSE if(!can_collar) return FALSE @@ -453,32 +472,26 @@ if(!slot) return FALSE - W.forceMove(src) - W.equipped(src, slot) W.layer = ABOVE_HUD_LAYER W.plane = ABOVE_HUD_PLANE switch(slot) if(slot_collar) - collar = W - if(collar.tagname) - name = collar.tagname - real_name = collar.tagname - regenerate_icons() + add_collar(W) /mob/living/simple_animal/unEquip(obj/item/I, force) . = ..() if(!. || !I) return - if(I == collar) - collar = null + if(I == pcollar) + pcollar = null regenerate_icons() /mob/living/simple_animal/get_access() . = ..() - if(collar) - . |= collar.GetAccess() + if(pcollar) + . |= pcollar.GetAccess() /mob/living/simple_animal/update_canmove(delay_action_updates = 0) if(paralysis || stunned || weakened || stat || resting) @@ -572,4 +585,25 @@ ..() if(AIStatus == AI_Z_OFF) SSidlenpcpool.idle_mobs_by_zlevel[old_z] -= src - toggle_ai(initial(AIStatus)) \ No newline at end of file + toggle_ai(initial(AIStatus)) + +/mob/living/simple_animal/proc/add_collar(obj/item/clothing/accessory/petcollar/P, mob/user) + if(QDELETED(P) || pcollar) + return + if(!user.unEquip(P)) + return + P.forceMove(src) + P.equipped(src) + pcollar = P + regenerate_icons() + if(user) + to_chat(user, "You put the [P] around [src]'s neck.") + if(P.tagname && !unique_pet) + name = P.tagname + real_name = P.tagname + +/mob/living/simple_animal/regenerate_icons() + cut_overlays() + if(pcollar && collar_type) + add_overlay("[collar_type]collar") + add_overlay("[collar_type]tag") \ No newline at end of file diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index 00e5c1550d9..020527c2083 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -184,7 +184,7 @@ for(var/t in bodyparts) //this really should not be necessary qdel(t) - var/mob/living/simple_animal/pet/corgi/new_corgi = new /mob/living/simple_animal/pet/corgi (loc) + var/mob/living/simple_animal/pet/dog/corgi/new_corgi = new /mob/living/simple_animal/pet/dog/corgi (loc) new_corgi.a_intent = INTENT_HARM new_corgi.key = key @@ -277,7 +277,7 @@ return 0 if(ispath(MP, /mob/living/simple_animal/pet/cat)) return 1 - if(ispath(MP, /mob/living/simple_animal/pet/corgi)) + if(ispath(MP, /mob/living/simple_animal/pet/dog/corgi)) return 1 if(ispath(MP, /mob/living/simple_animal/crab)) return 1 diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 9e844d6cf21..d7ea9db01ea 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -20,7 +20,7 @@ burn_state = FLAMMABLE burntime = 5 attack_verb = list("bapped") - + dog_fashion = /datum/dog_fashion/head var/info //What's actually written on the paper. var/info_links //A different version of the paper which includes html links at fields and EOF var/stamps //The (text for the) stamps on the paper. diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index 5dabd8a9db6..338658eecce 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -234,7 +234,7 @@ if("parrot") new_mob = new /mob/living/simple_animal/parrot(M.loc) if("corgi") - new_mob = new /mob/living/simple_animal/pet/corgi(M.loc) + new_mob = new /mob/living/simple_animal/pet/dog/corgi(M.loc) if("crab") new_mob = new /mob/living/simple_animal/crab(M.loc) if("cat") diff --git a/code/modules/reagents/chemistry/recipes/others.dm b/code/modules/reagents/chemistry/recipes/others.dm index c40c1213793..c118af7d763 100644 --- a/code/modules/reagents/chemistry/recipes/others.dm +++ b/code/modules/reagents/chemistry/recipes/others.dm @@ -189,7 +189,7 @@ /datum/chemical_reaction/corgium/on_reaction(datum/reagents/holder, created_volume) var/location = get_turf(holder.my_atom) - new /mob/living/simple_animal/pet/corgi(location) + new /mob/living/simple_animal/pet/dog/corgi(location) ..() /datum/chemical_reaction/flaptonium diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm index dad2b6698ad..4a2c844f94e 100644 --- a/code/modules/research/experimentor.dm +++ b/code/modules/research/experimentor.dm @@ -89,7 +89,7 @@ component_parts += new /obj/item/stock_parts/micro_laser(src) component_parts += new /obj/item/stock_parts/micro_laser(src) spawn(1) - trackedIan = locate(/mob/living/simple_animal/pet/corgi/Ian) in GLOB.mob_list + trackedIan = locate(/mob/living/simple_animal/pet/dog/corgi/Ian) in GLOB.mob_list trackedRuntime = locate(/mob/living/simple_animal/pet/cat/Runtime) in GLOB.mob_list SetTypeReactions() RefreshParts() @@ -511,7 +511,7 @@ trackedIan.loc = src.loc investigate_log("Experimentor has stolen Ian!", "experimentor") //...if anyone ever fixes it... else - new /mob/living/simple_animal/pet/corgi(src.loc) + new /mob/living/simple_animal/pet/dog/corgi(src.loc) investigate_log("Experimentor has spawned a new corgi.", "experimentor") ejectItem(TRUE) if(globalMalf > 36 && globalMalf < 59) @@ -620,7 +620,7 @@ /obj/item/relic/New() icon_state = pick("shock_kit","armor-igniter-analyzer","infra-igniter0","infra-igniter1","radio-multitool","prox-radio1","radio-radio","timer-multitool0","radio-igniter-tank") realName = "[pick("broken","twisted","spun","improved","silly","regular","badly made")] [pick("device","object","toy","suspicious tech","gear")]" - floof = pick(/mob/living/simple_animal/pet/corgi, /mob/living/simple_animal/pet/cat, /mob/living/simple_animal/pet/fox, /mob/living/simple_animal/mouse, /mob/living/simple_animal/pet/pug, /mob/living/simple_animal/lizard, /mob/living/simple_animal/diona, /mob/living/simple_animal/butterfly, /mob/living/carbon/human/monkey) + floof = pick(/mob/living/simple_animal/pet/dog/corgi, /mob/living/simple_animal/pet/cat, /mob/living/simple_animal/pet/fox, /mob/living/simple_animal/mouse, /mob/living/simple_animal/pet/pug, /mob/living/simple_animal/lizard, /mob/living/simple_animal/diona, /mob/living/simple_animal/butterfly, /mob/living/carbon/human/monkey) /obj/item/relic/proc/reveal() @@ -677,7 +677,7 @@ to_chat(user, message) var/animals = rand(1,25) var/counter - var/list/valid_animals = list(/mob/living/simple_animal/parrot,/mob/living/simple_animal/butterfly,/mob/living/simple_animal/pet/cat,/mob/living/simple_animal/pet/corgi,/mob/living/simple_animal/crab,/mob/living/simple_animal/pet/fox,/mob/living/simple_animal/lizard,/mob/living/simple_animal/mouse,/mob/living/simple_animal/pet/pug,/mob/living/simple_animal/hostile/bear,/mob/living/simple_animal/hostile/poison/bees,/mob/living/simple_animal/hostile/carp) + var/list/valid_animals = list(/mob/living/simple_animal/parrot,/mob/living/simple_animal/butterfly,/mob/living/simple_animal/pet/cat,/mob/living/simple_animal/pet/dog/corgi,/mob/living/simple_animal/crab,/mob/living/simple_animal/pet/fox,/mob/living/simple_animal/lizard,/mob/living/simple_animal/mouse,/mob/living/simple_animal/pet/pug,/mob/living/simple_animal/hostile/bear,/mob/living/simple_animal/hostile/poison/bees,/mob/living/simple_animal/hostile/carp) for(counter = 1; counter < animals; counter++) var/mobType = pick(valid_animals) new mobType(get_turf(src)) diff --git a/icons/mob/corgi_back.dmi b/icons/mob/corgi_back.dmi index 4aec9894ec5f9745980ae189ac55109ce3ebca8a..26fb3771e15161ccc449fbf76b4485e36ab03d6c 100644 GIT binary patch literal 6390 zcmbt(cQjnlyY|t`M2MOwqlf67XoHAE?}JBgMeVn~~ojpAOARs4gT;XQ77!C3GymFtwU;glV4+E}Lu5W}E zzjM)@KtzPgeUcd9bwH=q z``DJl(wjMxOOM;QD9wSw_Ve^6mz*&`)W?Kdcm2%!T|~$?-)YsM`K1@n*>xJ1`5(jW zxuN7pet3FeUF1X*ip~9l&AsE$EHR}Yr-zkP)7B)Ws14ce!f>PuY276NFyS=SRZRkN zc5;KfSdg#!JE92a3I{XjyV5z|N%K0YYlX(VTMf_E+u+yX)>nMBka!!FHEmy%`{U#L z_lgs)7WcI*o*J>XXzV;*QNP3I4gRZ>?f5}+o?i>?{5%n3_MtMpICXWLUL7E&s0~)* zsl6m>D<`P|Z495KOagdEM$#427? z6fiV1Ezl*+14Ot!28fZ#0C^QB0gcsz|Kw1+h6>j?GZ}!}4W$%+#q5Rt@sG$n_OqGg zPrNehoz(9gj=wULS}b~kxOk%<=hN{qRIT$%;|j@gcBb3HOZDg1?APfXV;cccb{7w4 zuP$+YT?)T?zwSM(T}CwlG1jO3)R3t4PeG$Kprwfk&RlewzD3PnIzr{crX2vb6uNGr z8UrJN9B$>g8`dknW==;irTqwK|MieBIw2@AW&-27e13Qn=tMyR#kp_Mn^N!hvv|fZ ziQ1^Ux(bpy{fe}I0~4(76Y<3`6I51K&US=#%+Alh8_AY+3Yox!A0idlX{z(+4lHxJ z(~$Y6vjPOyC*c_`Cpli1IWZfo`W6fUZ7rOXIhHx9WBUP$Twa2WuYy@SrSZLj zwiZ2_s#ZkG!05E6Hn;LZ&;Qhul{8otDGQm`5$h`+sH>99x>mQ})zj1Ku2>PFR|JoF zG@(M!OQO+z>Fw8XX+yaHY)o3T3)=96!mV}Y{N3hVv#mbsZPiXmq2`XuH@}*X+|2d& zi5|)j3()uX_hWa|XzlIoYb=8-7;QPzDGR?mx9*A{a!LX>z!fWqhI%;OUi*H8&O8jl`{ zD=1`p%D%gaccwfb%`hB9FbF(6Vuf+UM+g2-sP-SZXz+wwjSj2cwd0B;1Ojb>YdIwL zcV-dR#4zJxPe%|ki$xma8G-pzd`CZ|RPdg#bx~<4oOc4ky9B#9bCOYL^kia3_>Y;@_5oArik56K@`vCpfTcEoYYjGQ0P=lpAq002+&?i6%Qg__oG-S}mC3 zjS9Dq_lthr31ppw*H7_S(ImChZo83@f-lP+GSh@tb{wW zwGZNF!Yn8+Okx@YX>`rIS@TVYIA*F07L^spla|9nr==P=EE;Yo_-)e!1qL!kk(=#b zM~y_|cH5a6Uv2GIrrSs?=#_OkEx6a(p8w+PaW7t34tnc#avwxvnusVxD1WY|b`W{` zBaohCd}@mO-xl4*v3p)buO+QaK0-8`b_bAu+&A6%#1hFH%wR~~EVUD}l#E{aniO0U zS#4KK3}M-mC^|p)LbbdKV9dk}==WKAc2Joajit0PCG zUHbhP@ufC+zKzF9@zuGM8MT+b)H{iE(AecNb->`(&s=s0gT*cZR{YB8MLYH21{mhO zfmVI*usZU*HIu&1(~*mva1ky>EGGxa!>T!HmA#zB2MXn8XFBZb%dn#@XgQ_9(2+il z)fP|hh=G;4N;_MBWg<6xsr$sMC{MZfTDUK(Ngj=)UeW2F3Nkkd@fQ)+AuXQm3 zwZjO;29jJ~C|(8mFPWMj9mn54{%Gi#7 zcMBkva+vq5UbmP3cuRke3?Im&RsNfS`#5l)RL#p{meYJI5VCC6?g1kDn`u_Bc`|l>|j+{ntC5AFQ zpB}&r$cjJ^Pd?4J=vGu$BTX6+h+k5-6puGnoP#jz*Q<}Rb{KO3en{wz0_@7xvptZx!AZ&1pf$}~Cf!tz{mzVE#T3?^~D2)Ywu5@>plxGZ%Rm~Jl?Jd=q zp!mGr#}t(q*_ldh9Iq3POGXO5_@0y}3SOwESo$FWL4Y+L@fBWoTqRWVx?dxipkhBv zXp@xAo10xs1x2iyc`R92KAe5sEdqyjK#?>R8=r^_LNBs!zsDn`o&Hgq9SB%o)s)NC zYkP?;eD6qKT2awG`4v-AUH!-srB&ZhnHucuY8iWe9{49rsolVk0)}1TOBp-iR=kK3 z?Y)#v*+TX>55*_yJ!TiigmWdKJHlo;b%(bM%w`=|^ zFunyr+`lF+*2h8_Ph`Dgo=e5PVtH2mf>?zfyd~=f8(Z%=r((hGX!X;N(3BY5JH9y0 ztlMMn_*g%>eQ*5gilDw;%2}Y8ffjc2-EtJG<9Wtym=Kz7{rZU5_O7y+hK9!PMqUxu zaAK7WHDN%KLb?40HQ5ScjpN!Pa{k@ek7B zfUQb@9bZGXHNNESl*vFPXE-RW(z5BD>r92_w_NqlxpD-BKRQMYEUNj~8Vq^nO|-{^ zpgD=qsfRXSvd%bH zo7J(R#(4@4pwyG+E2?gbT6x*x`eoXtMewS88@;p^Q5*rDBKR z-uT1vEM`Mj^xZYLr?jd?&slo6NoV=RrKF@_4OO|hxwn~_jTS$;#XD z#timR_XZLa1QNa;5^eg@$1dDB^^2$^VFwg$h2w>MajU5Gtz%kI3@*b_`dw@{voJG% z2#j<~MhcIS zv21j^rLCp)dwVDy6u!Ib(Gx6QC&C3@ghttRDN9PyotUm~Zo16w_*s4PA*t@TYH?nQ zd)8H@!9y$l6T#Th+S-S&j*pK=Z%h=JpV>XPR+qSQ$u+!wNC3##AmV?5wiH2O#w5kJ zQd3hoXk!7u!os5P=<@RNer;YNzQ5YWM#jU#!{`}HOUpQX`MtWW&>gC9ktW4Ak9i`X z!j{pVBEekm$?*pJ`Y_EJw5OX}@9=Q^UuQSBc+@BTwe|Jo6Wp^V6r361>+c`u*UA>! zvE-$COWYR(YpD5}9Tqb=0_pvUQ<~&M62DRXV@zH%6XxSXE0ayNjtnN+9ZHv^RrU98 z+CT)~`Deh}Q&LilL~Wz@+CEIs3`)<$AwVkHsKpoF{dILmxNfh6Bd(`kGH(Bk;v&o& zdz&=x_jpKj?^MYJcic}>H7}-NQ-q(B=rzWl0BW{ro(|mzA90i%dwuhJ0JHDhH>UBh z<@W3$zJ+MHLXrmWQ00N^iX(sdTr_w!^wM7-7NjmwoUtLSW`7v|ldi9c$}i;>VAS_4W0=x#{JuC(E1jAEd8}uR3JEc)Z1>+CtH2( z`81J~tZc!bf|UIVv+#|vjvHg|7+#!j@Z{(f|AC7QD+9x$qgw313lEP`lu+`bNBZuA z+2Lt@Ymtj-3?aY@m3vxRB%TCT5>OAja$tql5(0&n<{>IND${fTTRy)Qd!GLG{+Wae zjjs~<*5)Sdj$f;j99SK&^ zKp`h5>n^00y>34#$F@cMItyy>zFJsdEi1D-Vf-^mL@4%G-Zv&c#ubTvC2zVlZFE-< z2TX73H(66G!d38;%ID9|&nMLWDAeWNw8&UK=+bw3Do0B+{UYNM&(fkIv&jnlHn?%) z#^=JqUNM}|J_`$rxUB43{D~z}jq}gzp1*(V>#Yn8!w(L;fm%RVv?H@dkej#iDV}t;V8q()%_iaWx0Im;4Ih zPK76E*XmlK#-V!ZUgw|TnbejLz~!hIRTa6$Y4G%E`XE?YS6`n9xCn)SA+Kq-9T=yk zrY0ZUD;Ow=J!ZQ}hPRWFlA=#=%U*If;A3vmQc|`a9wJqy)g>h=4Bze?YDGZ9F1t4C;_go1_lNUq0pqmnD)!42AEr`InVstu4D6Z z1x3YpFFE{k?3js1RF3tgRkIfXU<;o^d&!B($?>OUW@o1;#~+%XaxKZ$?t00wBIk)Z zqd-i*1BuqI_xHtEZ@yhlm>i5=0~DX%B(S(7Bqa?9Q&Uq9u=VuzMmlqe)gi13v;o1ldIc2~LJpaAbrKb<^0{foE|ERY zzK8PDcMlGdXJuuHNk~K(@bk<$5oAyZooZ`qe@(I?#GmOT=U#bTQ|6We~0a8N;pIchz= zx%(aJLes|IiV*yjlKxUuq>&Y^U07B|DJ?C%A-=4PK5LQxYo6|0x8!6Uy}q^Si`v-P zVK5ru7#SVqqK)lU3IcvxS^-9J+0I*{Cw%mj_hy9IKZ=KCc)DarD_IY3(84ZA;iaXT zn?5`!| zaz}Y^%6ZgVPFKX~o?!o=_B$vi*&ctJYd~a4(Z;&nLi{sEHWiC?WbL?E$g8yCrJ#BI zX~pU4dhzVg8&i6uuW_Q!H8*9(G4oZUz|c&HaS)mLI{)P}s4`1ogWj34V-Atug2me> z*u&?&UT(GduH?NUKBlG&czp33wXHS7r{mMpk!589#zpf!?oj1py|(W^>yjqcVQfvm zR2;92_sdfZsX3s#_?1kZaoDrC+Ht~46LNP18k8V}?rxCWAx0WF%KZ2Dre|V<85Q-ad>%3po-i|*+Z<>7AIX?C~IFDU8O^#dExZA98 zGbZF`tL`@uM^^Y3NbE2Vq;;)@DFUqWi?HKNz1Zw*`0>0C^171w=`O^vImyCuzLRW# z3SRy7tLa~7ADWOMsCX|K@{xX=*8k&2kGCAhS_oGy3!ArsOI?!lW~y7_G2i;uF858cHY z)us8o#N6A#PpMt(hPSUCYH)n~*dys`|URkA2I zC6o-N)vHnzeW53jRBpAvGwY?wH^L|1*P^g%xG17SvJw&#-#ha?MEk;(Sm0Ih-$&v2 z8ckXP3JxN(njz@0wT%c}v#FjYan-%sOAp){>1-U-=$6IYUcLb>~I6oljF9 z(7N+ATrmfd(W)@2bN!QT=o!m`Zy}J{c`xoEbcfHico%!KpD{7^3n`3c<$?E*3%PMu zg+*9&8`HR*@x(yX3QbYOK3Ns-258fL--gR zP+-h;5$=k2<=kJ+oNfHD*(}j*LL-?y=E!z&<8DOeh*Qe87%H54>~UyZw`~a3u&$>4Uguk<8(}m>&)H`rh?N!J;1^7M_$m#TM3DkA zPCl01O`Q>J_#`)RkBcU|prZPLn}v_S3$uMm#!cF%K<#I0Xe7joYPj(O^ypRX`lCO@ znuOy7pziY))UCjMq5l40eo=oedde@W%gVD$&Bpf)bn4lgm1vl1H0GVc;j55cqY6on z#aO-CU*rYOwq1Ffx947G1+Rw4O|?m7*FD(!Tveslwj)#gw{vLyP!ok$MN$eg>kU5iUTf{jA_r_9fP=$Fl(+cl1DP8&n- f;#Q~9ugR49F%i>G&D!xlG62nodg@hbwh{jaW@>H*?O+KIiQ9ta|p^Yr@rE$`jnDz7GHZfue%UEAYGoe%f&Ffk(Ok$KT+o z-&0e^MaJCO?432z#oEyU0Nm3*jZ`{d@)HLyUtW`Q6_QCx?XU`y8(@?Z^SD=NQ;L+F z`8WAQkQXs?tt%`F+{G`{?vH2o%&$3&u-3#D3?B6pxIvTp#&;rVNFTCZQ4OLbGAT-u zzu`T{9+k@!bP(b&8tEIq)TYzz%(mI>0BR@7o`&*@g|A={C6HQLLmMvd%;%dYdbMS? zzN?`sH-6oayA4?eIEmvm2vvp%Mv7(2aQG{2Jr`Z0;(?;G2$HMkV+8hC&j{k=KKXo7 zncM>aY9mD%Nlo|kzZrf=vOlT4t?%BlL=n_Jx&zF}@Q*RG9|dFg)NiQA$0xZwQGCtI z3pKN3Yz{9P&RBxN_f?j7nOyH%(^5ZGHSuS%->e_sIZip18jDblfW(_xVSR<5LhY&a z;(74z4d|RMFzmQB$LCEd%}jDl4_nHaS)a|HdAOe4>>cej?ws+X>;#Fi+e05N5E6IE zgkUQW(=uU@V#_P|W4Du#GD;$Y|2IP{ju7VTrY3#d+On3G1!83*R??jTu3)#Fvk=i1 zn}KdF@YmPV_cskRR8*;TzVoGZgTsD@zA{&7NK9@%J{SeBeqmjvOrh96Pc=1(zA-;S zqg}|Bor|-GJP*xfIPYoQNfU|T0-IY~oq;&cy@^{}ThdxupO3HBehxD~gJlAff)33x z#7f>k1#(%+V3$kQfbldgITWs|Ypr8s$W&3dM5NbZ+^+B9YGdzHBDBUFd*|zLawPST zS@Rn_mQL=AS$0xzq(5-b4Kul>t61 zBP&$*hxf`)pFF{mv$&}B@bD;HxaBh&3bn!bo4RD9Z=xMV^>}lGvFL{HOqZBrdV*NeB1Uf6kDoE-Z-na&|}{`;Sd9 z{D)s=$@%(e^_at(Pswgt3TQn(tlc zxpq?2Zgg(bux0{9ULJ25kD7N!Jg9U1ix_#YbY>mibG$X~bNWn&>IEVqHeAg?IvS41 z4AQwTp?VY0m2JNES}(a(EkLGFM#n&X3g_*-=oDkh`Pxo3>s(LCo7J<$-x3u!mJAY& zdxfItpZ0}^^7~h#ch@K7KDU={8Z|ww4$XgyPS{e2Y`pQ5{n2Ecjw!cnUZUcmuNw;c z_{9C$fky$skxk;yVD&olSnxU*j$Ky~di@3g)>C)l-G!H2nr@O<;Suw;IC`*B=R?fd zVdI>5w-cS|-CaA?kCHw<&DjkN2&8a^+4gI+{Qj!ZO?ml8-F&x)4K7=p8-rkw=H*u zZoxa*aA^#Eb=^IupK0#z1P@w7ZZ^qZGaP1bG#S5`T!V5}D`>w#AUN5dq1AV4Dzehk zXb!czoDrETAG2*El2p4wRXoY5`O|m*9y6(lCQ0n0@4!T!bA*6>VtPOT zhNiYQo@*oB)!BaXHsXgvMr>AAOh7<@)i-VPyS>K!ka>sRrKK;`qAy-hU0ht8&o18P z7vC7`a8m%en4<{V5<`pL^>@~~K2q&nXM<~RMXT+o;*+`C_kJvXEG!FSS-M2uZ-;wD zQIlkfUg&m_ohK$H;<6?{>0=;3Y+PKx?X9m$rYP0#aw7;(apI|;aq|~T0)e2uyp;PB zFfr32x`G`vNVM(R7?+epp-#JeN!C}^Z7OMG#PH;4x1nm`)*(wJ&Ay%ch553|YqAtz zpN77tI^w>a&y{_(=n+0A7gy)ZqCW}p&qqI)usIb4*5FZAT-;WIa`bXmO5A(t*6UYk z`WPUfKt@I}F}m0JD(%(Q;{YI+OY+=tA-GkdI%JxGlCrHtcZD|9qKZnp+_3wrVuC=` zFt)n7I#B*Qvb|lhPM?>YoE!iyudebIL5{5RIAR69l$WbTyz-|kVkT)H&6Ov3^ypDw z6R&GFKXtT%np)_nm5iPq4L1cIt6C;LFt)$8_LeeQZl3v_DF68%I2HgRCwTwZ~k+~)4C%o|%SR~Q8|sKU+7&0|V@c6N3N zMaA$h>xySTvJw)4hK63^5D?2+o(ukSON>|~GzM-Lej0?_BDytStt_Fi~fz;Gg zc23TYtg$hFT!_l8%YHL^|IfpEV!+hpDRs2C_(GG1bJQ?;vBWmLFRr3C-{Po8HBDxb zi|bIY_{}CQH6|d+L4!fZQNT&cDIOLh$Py*$=1-yFyjR2eH9wy-Nl{g`d(Ku>V;UMV z`!{K~QJ>ev&CP78M0ayRx`$%WL0qQQEl~z{(}a^qF&b zPD?1SdFIcXj7JzMO+9DAP}6e0ALMr-lT(|&;pC?wW?e;vl5g=|%~y4tn3@nR%Qx)C zEtIXL;d#12J{wxm>;9mqs0fUNzMnta6FFWZccyrRXbC}NE8COB=Vd;)e!nJvaRbJ- z+A!*9UID`s=4a0y{BT?h`S});k?_}Cos;x;qg{J>r{A%)gc7^1`FVL4F8u2n_lO(6 z-JXRamW_VQ)&Aa*1(P{3GmiBM&2#%p^%%59b40%7Lbb$h>NC9Q>FKe@b#Tzopz(X? z>GrUUh6iPHo$@)aqI*)^#hzbtwf&PiN-TvzK|z#Y8iG_b{8YiC3xiQMT_HDXjv;yA zL4^YaPO8zn#lY;}tJyMg8vgBLD*TlfmJotR9aiI7KOsUEgP(CiJDFtRckexkZLh$T z8Ea-GBln_hZ)ifph;%$o!=xg6hGhEWGS|;qehD6hUi2{M`gxdgOEPr9e_VPniHOKM z2iafDXSg?t%TKD(2eJvPcD<$Yl)T%&K79Y)zKQV9v)(+M!vgu zpPgccJ8va?b-5|7$1je=*EueuWi|ZKi_070ulvg>26wD>?a3u}$MA`WSU5PKXmiiZ zO&wHnOvty=*DcZXz5aiH%#@X03t5lS(U(8e^n5ba7oU*8|9)H3`gqi|vdvC#wI`b9 z)pLb%?NL*6qg#rInM>wr)=_UN$A^hPK;=IBckTS^rMTvJcp*#PQrX~3O%8LUuO zp_ei4flIj1SVkc!%!jxiV*zL&%R`C((NK=3q56eg+ZmrBzC`*X9Y|J(Mdtt?9)QfZ zb`kDS7?&jp$UZ73int>>*K6gd3nH<$$+tRCBgzZDYl>dQ;X#jcNd7VM3zTbHM3i>y zz^|DA{)=GmTdxZd8u=3QzEpEzuMB8a|UVQsuf^o_}xG`+t};{gFbr!^f!J{sA@#1)TH_*$I@!eRrZ6?wF10*|A3;z z$f};kuX*+?Fp;E(2wc8JE8pdbXBI7mf8wgVa%;t#0TR8{G^>aHW6}#+B$($R4Gj&0 z0aId?@75_YMe3Z!Sv$$Nv>l+;Wo2a!&P@#03M0aB1NP19oyc#H!%v?+IbsV#^W%c) zM4@XzTJsg|xgd!-o15olfB!yq@O97vB(V-ZBElSJD_pf1yL+`|wfU@HjF~?SwfYwN zlCky?W{i#`D^RUU=g?jwN4Ve_2ykv`o${Q?$;pfKiT?h6qMPLIco0@ExQxM%jd}(c z#74Q`20|kjzv(?;iHt&|HNZ`|L}hS+y;Sg!pNqN!E*MPjCI9DP_1}xf9AQZ|BKq0y zj=#8vca)V6_Lg(S2gDanNRz2zZ*K6`XxfJ1%(vk-uUI{>CK}?zYR$6_<~9&O+oxJv zq+xTg;{(<9{WQmm#76I1?)bUC{Elle_S0=$cJhu9m-_+a^z&F zIC-hb6FObBVIt(rDrkpd+?}qnoC_P_#LXRT&BX$Y2ZsNA_tTOj9vLNhdZpE9&=y5i zL4~g|8>!%LiWy6;snd!nA$nf$#lW{g%wDPMdZ`WqH#zHw7YOpUH zz~$zZ?z595(V#YWu0M+^@}ag&+$w@=RaQEp)&>UD_(5Ln5JfZ z>`F!ze)MO#*wSR{#Qov@5L-#@f$d5=gxN`h4ub=3VC+XK2B&L>c|M3{6pBB<{Ce#o z!z_J)0fs1)0Rze$_y4ey|IZtN|L6*kP`r6y+q<@dYbmy@tk1ToXSl=7oi@$#l> z48AEWecXc=0~O1{>+_Tl7(c52(x_U~(Cms7&9}RHItwZ7g7$GnlU$Pofs|rp__{{AN}@f)Qr& zrW>)0qSo-XoW&UD{7aVRPF>O=s7C@YqHq9WK2lEJ0?Y4T4woZjgwW_tg>JNGgxja>>H)7kG3Z$HiHw$0`?A+Wkwzgcr($3Ldyi8#- zka|;~rOnihoqoQj$bB~{UAKzidlWhUdHPHsteL^Wc_6&otbZ4=5GHj|W=mbzDYvH(i~jwO<5%68W!#f1ev z5>ayarMq6#B~k(1!I+Uy%h`ax1r%n#(X34^D-p-jHBC^deoY`pf(pIwC+a}~FM|hz zqynK!Q9?;lW*(oOqFqh!o12>-Q=f=rl~usMyD-TY@Iz0s<^sAD?<5lNTieqxfKbE(zzZ% zLPVZd3~D```5x8*-UEIO9)=4Cstsp!rcKi1t&)WWNBAH553H~Jl~O-G{fqi+L8~_& zHMR)DqNKr4_A}!CG&y#3#FexeN(20nW$h~=?E-DbL$PLT2wQ0@<$!S(kU$6KFgED+=_?Jq`Gk3r@dzUdhUbh9{M0fmHztqZDRQ%3yxL9Zv9lauzi(zp zXR$EjSC#0Qmg_-^JmKjoDS*8qs)ZK02LG5{T&(=bhm?_oqQq&4w@+4C4~DLCHgR)R zYz;Ut>W%2R-D`&6gJg=s^YNOrqdtqc`DYG0KM zA-D0|Xh<2`9~4ja&*GG+|5M=n_v(`W`mVtU3Jh~|bIAf4A(u_!^*lyRvRc6G*@;Bc zD=jV7w<-g#^wpRjPUP4q-LKz7HC@?x9*EFm4`$TfF371C6mWt4-feKRJ5^AtUl&Zu zu(m-iAwoo!_)B~wQ>?yK)-)r;6viu1k+R& zco4y}`!BnvU7gSxf=0eSJ}W zBILme^ohyKQBi&C7V@!{&+nE|=Fwtq^HkpM`81KAwXnI1<=5Vz*~o1`)Fh8L+1ZsF zoc88kthFFXXYFLIoISo?oaxdFu!<|kOJCx0ynghrr0y4B$x;-0^(5aMhYlNB;3N}B ztwAU3(ud5ui03_pi;fehJb@ULyVzAr?5~QDKxc4xxVgJTAaDs#l}v=e2avW_5>m-2 zGipWD_XIi>s^3bzWwx`exIgMDAM{M1nI?2*^WEkMQxLtBd-aJI;P3F^$u7!@4yx#V zNi2X_TU|}5L+%Y`>kxxGb?=nG)tc1PG*S1Hgcstol_k$giaCb`soCdW3#ANN9M3ld zwCFv5Twp~H0#?j=A$x>u{sH;zCrC7!532Ma2 z`q{<9lG%*rJiQ6^J70*`k5C4Tz2Mhrscjyh@j+Y4cT7%E>@K!0R`}idcGkRXbcr9d zsG1O)D8{37kQwE~th~{%8L_*YhK!VnaK?DQqp`Wp?&Z(cAU9T4j?Av87-1W(@e{As zW@uSScxvDKoi$4(=be+B2yqoSq4n(LrDu`JW!CPY`^qO?PIM#@FsY%$gT9>5UpsDq z(8m;d686c-REbl_FY2(WClT4(EeMRKJSj<^ieX{x4{{W2pvJw!Q}^(wkIl%4279?S z@ASVF7vmI+Zynk3(fTE(Z03IXwh(M>ZOy;7v2ov44xL43I2qvjd$TRFwQz>IB#?1n zwI?OaamY&cpN25p507=tIL?7tpSVWq{X2>z>g|t^3K8i)@FM}858(P5T%}r<_~{c= zIhnV6YrJ6VD;qnR80NQ2$1r3!1n`WEak@OV7W?)nEQMGL8~b?hlbnhut0(rg-*l%X Wf0~TJ3HS#ZpeXxNrcBB>@ZSJ(+atpO diff --git a/icons/mob/corgi_head.dmi b/icons/mob/corgi_head.dmi index 8f33c35934a0e8994c1b8bea46c72bb2d69f2581..de33d3fd6924543f30c19b453b8f44377dd00c63 100644 GIT binary patch literal 15791 zcmcJ0byOVRlWz|aG)O{_AcG`W2n0fa;0YRm;BE=-?lJ^-Ndg4d;O;)S28ZAd!CeLh z7+&+;-`ThC?f$iAch2dVzTG{y>)x)aTUDP=2g}Jy-N${53jo0Vchcet002n?H*f5F z;E|n#YHP5e>ZYXTAZ}={Z)a-bU}|jz04_-}V{FYxazy%hAH&}qoCXtImfkP)gZ z@y6$L6qk;A7&4Qy_&KJ!z1pQ)TKD7b_2>K6frwR#^BjHGr@=ffxt|e@&qF&CI^^1S zKB&K##>*L!`1ljsOs#Xeq_0gaSgyU8&8;<>eq7Eoo*>7M=Rn~nxnk^no?o*=W~!tC zR10YVW{Q^i12vY>?<^LL`zha#KXw0A81~u1|A|3*>eFx8Rk41@X5~ICu*S{>`LJ(7 zXMD{3lBseNJ-as?&Zja1(IbQ=ZQlsH+Xoeetv+6A8j-aBtR84n;q1pML3P&*geT#J zHaCt+G0MpLR8Vu)aelI;mlrgs^CNfb%(106jiqHY%TM6x`Stlm%fFB}i;pWXuieAw z=UnbjlU=#vX)|gk--w00N8=+Aon72tlyDHnE31?J}o`Hf)7MoT>SkD z@1P)QoO?vX#4OPn^^hM^RI^3&?zQvdiaQ6v*&pNS6%-YtV`Bq;hv9R-;%(n@$f&A% zRMK>=F&^o^jqK&ar^WqnS$KsBXes;%bG(|b;bp&sbGjcD6pN@uV?1epRYpz`c0^u2 zmLo$7lzOb2!OyTN!fA4rm<`q|_Q~F5_LsT+xdOZ=Di)+hH|?I2d{Kb)l0S(FYegnq z(OGxrqx60Z)$87E*Pb$VQ-yD1Cmm~a8+wDr-gSYJn&nP1UHt9W z{Xj5rJt;ORHv-h7x+Z=R((!qtR!Jm)+laZ~JK^*sk~)U2_hR&`(} z6i$5Aa1KU}*Bq>4pBK*Ddo~}QA$?7CM>ikteSnSNT~0yovFkUU=TQ3eDmE@I zGdCAozdJ(0)|T^pe?D|b_zM3Dad1F!&4yE5(cEB9go5LZcJwk|Cu%s@ ze;}|bvD?X-pkBx>L_U*pxydLQPZ=U$*!Lq%N^is^^(}a<>)&`|Ke%4wQ5U6{S!A>! z#a8px{zK&y zM|h#Kca;bDn8eLuCSbIe@QPmUQoAS;vn~=qcs=I)g7NnCGhoj6!J;REnmv_ELNgm_ zOH53`vP&E_VfN?-dDb5C=-Ef)Y!?s5(Qi~cv|~jII&tm`o`cn{$40g5gI%tSFr|3U zd#!M39h3(LJ)p>0x>H-702y&{$ULWeb*=unMZ3tomj2S+n zr0Fb#qQjKa(V+qVp?}#o!Kk|vSE6Ofx~Uu1*w`o+5{{cWh_SLBX7&H6GgB+5J`zT< z!k~Wp{wlwS*uNX5w=FaP=banr2v+l!M@+rCtMyCz%rL7=tWx*b_Kt zQBVmeVfu9L@}Q4taq>G;JJ>c~bY(KLTsl$>>=xk@L!WAy2jv6z#dOFe1*?lwv_?FRF9nKqtrqZa>}ls#tvgVV6~qO4v`CkW zAgU!e;;erlv7H|!N$pPC94SIHtskDVdQfnHsM4k-)(yB>|2v?8wN}8{S`RAK=e6%P zgL8G+GMAUc&@k{jTN-U5(b+h8a}Dq10*z`T&F#K)vlD!-k;17#i2eLgBI!7;)r%+Ir=KpQb+kk%Uv>rk z?Wo$nCU4LzWn_J%n)zJ4+^@SiP{EDZN7y6GZPdBDVrl>4r}t)(rE|CEqyFw6o2u$Z z7fcb-SkM3u0_+!m-*M!8esF`i7CLXm+xZ14@rdTOrT*%O*JqA*{_FyM-a3|c6txHr zKiq;4TzKSM9#Me{%zwj}{%bR(mv96v_rb^pWy(0JcTSybj_Tz0B(vU&!3KlmYxRIN z4v@Q8s?-Y;_;J?fL?mzF(Y*Z5c2J#xbGZ%g?pLTSjcMGPTLm0P9LK}v7pL8c4^*b4(W?mx;9AgPF5tBH>+kw=?C!M!WoU80e@ zfyOk?2oODJgaAPQ&(IhV!Uzj58SeAGgUUu{_vf;YUq0R5Q`Cm3o_<#I8t^5q>h39T zb3Elt?5Tc&4ipa*wx7tj_UuhU0UHSB7l4Rpo=Nhx*ewK5fm7?Zq|RbP{)>i^${9TF7tIEHRL_eJIoBaFF2bH z)d<0ze}Y9o)&FN-Dzicf9Qt(?$6PhJwhmwMRsRzRFqB2Iblx0Txjw|Z zzWg`+{>%*%tf#Fi-f`weis0{3SLQ3gdt+bip_9AvBs9MiZ8KuJ0@FLF{q47PPr=V< z!U6}4L48zLsH+u`1ushPqrK3qM&$hu{>>*PMRVa_A6f@be=XL!^6P=Rtl;OC730>C zP5p2j`|71;{d#O!^YDPpVnuX{4(n%tkv^xjR zeh_`RAR?w{pFE`n*3Ne#h2UFme?k`hz@_^0yE@CfyseA9Zb;9pj8`?HYY6i1tM*$w z+J<>6BsiA62kZMm2e(ATorDqp1h%P=acZeI^GBS-#81m*bvyN|G$fppGqwjK!-JSd z#P|B8gM)(5mfimsqJg_`T3kFm;gxwT;JtW@Le$=z&q9E*Yvb==K*0Xs96GA3tQ>4V z_!{e#FIJ}B5RJ!iFBAC-J<;DO0C;94zo57+Macby%b{N5^>IIE5j;oJtjg^6%Y62d ze@O|PxFvbl<4c>H2RxES=<%aRk7kZXM-?ol%P~bAd_{FdfVK7Y^x|Ry01T;LWXmS! z3-PKJX*`nG3}fq$W6xOA^2#edaY<`MSp(Q6xG(M?anvwvY!WoYm)zj z*{g6$URkZGQ_tU2rUV6^{nd3H{naO>reloX*~T`j1I$4A2Z1R3v{v(ZvLKYScmN^E z1SnP)Ps4l`oZ6IP`G-D6!9>2JUsYAr-5}7UvD0tZpFfwdw0sVj%u?9?*)Kp{Uwf#r zky<8JSM!Yj`6KxYrMKye1t8D&LO-zAVeCwnNNH;)^JvUfnku%O_Z+f-e+L6S_WDiw zLd_ZiEJ7L#VDE_HtoFe@)K*cLw@hcMz1d;m$SQ0W9~r8iM$B#TUGGEXyoAOX9@yO3VleJcYSoq zuG+@$c;E7Ju8%)ov@&=we*EbTHh#yyl$up>iXF+-g$e_DWoj83a1q5E*+<|ufo8YV z@|B#=h8EBRWB1z4j8Fi;#Ke3P$5PV-HcGv2+<@V}n6n-?221!Nag^67L+31WP(5ic z_VWcv=g>kGTgDaRtYypQ304}pDfWYwXokuIq6KW`6iK%Q;|oA=0sY&UZKhP@pM^N} za)aQ{mPw!u4Z{~7N^@@`qyh++nrXkx*E`PC|NU#U=VWgFjFpwu=P@KEHkSU?D`m~t z=;-wM=CyAh4kzKLN8SQ@4AeNL5QqP7RRg@|yl!m4RgEpN)Egq+_q<#~LNFlG?AEj@ zWG7xOc6D{VSn?(G!A(0_?Z(2_V8~e(loXYM zRs_#p(Twhw?0K>lOE2C7)JC`-Jfwt={1LKyfyGNx1OWt{yB`Zv1d}9KSB0E3#Wp!# z*NkLxO)v;;3;WdLyB{VJ1|!k00GEgeDobkVI!l(+AaUE4s~e^OjLrtX8!9kIe_HL= zgc|{dK9v6(nah6)wpj8hLB|-JSz0RBGdnRckuBZ#1x%LYrR~ZqY7D^KqH! zNxK$F3K}6|1cBH_PYlXu_dfGxT*vZ?Yrwg%RiA0>ICoSsFvHjHM<)p2GupEzVKo~v zWdV^QdF6k3*Js}Kl>S!QH8H~kKDya6q+-ddsHrh~%{1^fTU&@bI##`d=?+B!tlW&k46_;NIn;hWpCjV9rvS#iIN*8(6HWBis&S-b4`Bgqg6gW(x_JGK?$TRkz zzw>GcC^@6PZbuplppDeno_@Fu%B9vUZk7YK zq2F~re@>5TUEOhJHpF~|sp{2FNpHCM3jpl<35kkTs0JQSm^S|5( z^{*0OG_ozgF#F5Qr2CQsf0_AY@y`P$-90>BzsCNMK%!%U_~L!%r<(|G17li&j7*Wn z5mU-K0wCb$ym4l93UU8S9bjtR4qmJHxY~^4y{A;xfs6N4>g7FmqZF=Fg~&m9r^AIS zrN#K(<1d_jhyL9nwN6fxt0D$HM0XXWn4J4v5!otp4G3BwEpHjy%*^bC!&I+}q0;S7 zjNvR^-h@6`0p;sbeI{I7+^BfR2Y|`hB6uv5uQ3{dNQ zvD^ahU=841Im5AYS2o;wEwrP-!qb?kGk+Cl<2RKzkJ+K4Q8Cmoi#v(@%?0aFkGy2A z%eDL8Bj_u$AJY4VT}_>yoHtEF!*g?UdBx>pvX2m?h;TEk_~>Z500IGuMXwu~9DXh? zF7Y>SzJ7})w4wKAzc#@uw?i&1tTfj;AH3nF;ty+bM+A&#gNtEw%ovupz}m|S*)~D} zCp7ON&(vJ{dR*D3y2+x2LoQ7Mt6WFKg;sYH>b z5LpaaStlNX*Hn^Kp+Q0Qbx~-!paZ${4~SJx8!h%Y0H~O@*pz0|Sbso#rt}7ml|`89 zf=|;z{Qw<{AWY*j=SQsB8?ZPTjbn;IQqsB_n#3A*DwG%99*75As7m+~4{-fX=-voU z`mMBwO3zmLSbz2=V$jWdqNI`jTvau*xtdfq=b@>oY0torl>BEpMqSsZsp#`l=Xd53cCQOo-z8pUSd4 zKT|s|2?;698Sn_tWqtN6Mz+03Lr|5(;MZrE6rI=cSZZ6+H?+x-%nJl!F_XFO@vHl? zACqt7#%F5Gjvl!Erqw4RJ};NYlM5PPvsPEO zjC+s|vDeDX*$n9ih!CeXUm1=3<-Z4%{`?L=l72>#OsP7H&+cbmrG%MEo%U$+$d8r~ z0-_Q4gs-YHbk_9$TGsea#2Q8lG1|#g(X2yS_R#}vuiAdS=b!1zXLXZZNW>hh4&`}w`O&nRnFi=FUrGN(1n*Zh6t!IEb4`|&3z#~53 z3HgHAX)ltzCWWY(XPAuN5sKYeMfTOua1BZi*EROUo{tr2gCjotQh3cJ{C)=o1nFSw z}GMP^($c%(9>`zYXPiH9R_s2E0IQWB&YTVrtsD9B^;<8g*r&yf^thlq?jP@R581OPke2UA(#n9p@G1+uV7a)v(?st(-!xZXeKZy8NsUU4|B1(eXZexMkV|)IxLmfBh}{^JfAAXlQ5*FD&faUVn9ZPO|1C z`5m%JEDZcMdKpo##iynjdfoQ+X=Yks5>?i(U#%dccrb4eTBI!DFBYSc?Io}F)`BjuX6&1u_6&%kKX)<|GQ75Fu)@HPPT0% zLSOpbfOv13;$e^OfK9mF@(-f^IsR?csUy{w@84_N{6Tpee8*$yeJ9NmzhviV;@CCX z-1pwV$bj~l03}$-mnxqwq`oDH!&9H0CZeY1BmV^)6Y!|IH(UkuW;KybIjl*KqYXn} z?*$}L0ix~cVu1GwvGGbXllK}i3*Yk&u9~omr>L_Id6Gz=dA=O;ejoweGbSwA9K~nw z94;=PVclJHeq<#OO4>FZ@S7V?BN8%J(oj71ed(+FK5@J$DfjEy(u?K5&fVAc`0g2V z0?x%f{K9)G6JJ`rPpf5Tm8#U_h6^y?Wk0z)Rf|ZU(h8GX9QOO>6fl)Wtm ze(O1PwsU)4my=35*mWcAE8yprqgi^@@<#tLG$WIm+QihN;~Eo>U#MEZx=9%jb#rr5 z+Fnpq4+fzPx~J;SXkWM>Zvn=K-@bhx86EZcvw9HU6;e_4$TTlc;{}zenGa6Ofkky` zjM9Z5dCRAp{3U#d-1V zGQ;bJwj7I&rB`SXp4p5Z{@l`r+VOTle(`H;Ea{V{@!-kyTwM{d9l|VPrqA7U&KJAF zHbgNI1O~|t-#)J!Cp$b~rKXcf9XYD4*o1wXsTP^_{d0l z3@oc`Bsaso(dvn&v!(Hv1 zR@{3d@bcGye$$*VDJi>-g_)&!`&VD7;Sy_7$-j{MQW4}TUhUBgH(3Tt2c$*Y7e5+ag^kS8apAr(xaaVu zD?^HgOTzszbJQOvGOjVVWt+^01MI7V3X$AA8JQEo!cAi~OM2+u-0gj`++X>1Vv_CH zwv9H)ISL6g6owo&ifTgibo^Saj4K?lQyIh-q>>DT$?jix4LwblINBRu=@ zT=|T=Je=O%-l-~c)f%^S=Z$VjagvCj1@v+?w$1s58hOjFo13DG&7LEFjII+m^Bw=6!uJSpkD(L59n;+T6Z$Mit+PAT!w>wGC=@`u!;9>0Yp7;^uP&lLPcnX_ zDq9u;E%^G+X&e0O?m3lVUi@`cC6VVY9}h#l?~ zIqq~O+oOVZcP)P4m+CD=Rmj!t*zXpb`L-{&WCY&gjqGBao(WJ9Sk^T{_mIBwN=jMD z;X+rx%S&fZ{?wnX1W+2AArJ?PCD)y2ckR|d8UVQKYQ=xG>>LW!b5^DV^cLnW1yS=C z7aZV}^#4Ui$0EtNb)D$hzt8vhtLFh(MtT0@mrx*s0u70LR*+w{e(Y7bL)bMKzFM^k zcUvv<-s7~uwYoT5&c08{0|563X?BkU##>&L7n;QLItv&7^uj`|Ch0DPY&qZEinB;} z@$#a++oXdLI735 zp-FOD=I%M2Q7eLiS1V`k8tBQ<$z^L+_5%PF)*TnXsr<@|ZL7U|(o@;Vii(4s+#UZI z%LaOzSbQWTVKRk{&BtkXL@H}St{y9Yda`@Wru5A?Re^i(?b(?w_+*>^NL8VVdj_Ra z!g;y5Tiga;SmxUexLdErOroVGYrpPfWlR=<++Hu!vO0SbTrmkOX=mrZ{0ss$*VMP~ zHa@kWe^AwH-ow@6IT`fcbMu_0r>oIES(vqTygoaqU`r&#r{c!o`-Ar6SLSiI_Rq_f zV9QKS+>uFOhFCW(9L$}ThL;difLNvD* zPjlvr8`z*jO*%VevH`^G-9`|}MD;K0hIWXwrBIsU3XVJD6(i4b6B zVHt@nLl5BqA=5;ZXR7JVCoJHj=TT~M^$ATpr#JH#6g#BZeh_*z@4P56E+0nD`F1m> z`cw%%Eo=2P0_NnzBYbl@RvIxjZJheNF^A{O<$Bc@{-I^P^Fbm3d>g^X`A<37izw!Q z9x(n-WtaaNijF>nRNAB{pROT606eDGs;0n7OpSD~BE;Gm?I8zMWYz5jV912-EM&sl zS&!OX@XjRWEJ@AHx#Kke-q-SRCjDkL#pwSaQQIYNCeECha41CaHq<*KCt7N6U($RM zIis>d4(*g~-FkYz@h`)HsNY(u{xa>Sai6BBK;n?|Sp1wS(+})jyxG@*eR90=gpoCk z+20gfTjX^!IN$P^b-!`EL0#ZV&|d3t*9*eX?hUuOs&Lj_cd*U(u0xq&U+=uw?a40D zk{TW|RkbMG`@BgP`^m4>N#5NMGi^Bzj(SCHW6h5gU-jrPKWnGrP7^K z31vTDEVXS6ij&=(tTy|RjK90EoZ@v=RrDAfL)6cS5<;jhLV3E*ws9C*F+q9fm^-sh zn3l@po$opB>gZNW7rGwo)e54@D<&7?YAPx!GKC+=Yr|dy5Kyy*goFUJD@!lR*)k0n zt1_K-_`^h;sdZeol(p>7YFGR9HDMd;WqFHn>(5jZvp*%WoidP83{TuA3-FkWy<-6U z=4Ujh{ZOSjNx?rb#RArB&RUJFS7(!30*1cXv`*=h^Q94yg%zpH;Pmod!#vyB|FP*c z8XP(n>KKvzwi4^9UzTLy@lNJt=cTVLnIeJ=fdcmUXJ6h8Z+1J^0sMljVKNJr{5dc=~Fe~xiRm1NVx#-Gv{ z_IX;8q$=9jVN@^AI z2Bwmk!uPZ5QN^3+xp#O6k(CKPHNO%d3Rcs>9OL|85$dEaXwOMz z?5KW}PhkuID*IROHM@Wi4kW@e`%HuycyZPVbDAkGh*oce-hOTm2%ekM`Z@4dc1Mey zYLm5#rMgZta{JjBhu0AvL=;RWAplr+^Ps8m@j-(C@$vD@tgK+L z==tO}_CXYWglE+m-Ayt+t1gqeWzUgu5b?W2U zUubGj#C}9V67=oc1K@CKL6xaPo`~Y9g(&7M~tvaJ*2<3GV-&Blo}Ff<|u zF1$`((d3_aco76Kr(9B6c9@Z5fKU5wb|Libor_l@^^Rx&5@b=yOM)Nng!e*J=s^#< zNomvCZ(jsg?oo z>5oC86b{|bkwB7g`KS`4;e|_}T-MoDL&iWVn33$A@RNp0;Ni6h`9Nsj-cJXo-uBx1 z74mRok|Jo|wxhF#S5q+_FIX^343}lJ%Pt_pZ)9YISoN%5b~=}(_RbH2Oc?l%HhY{DRtfyzpoSQ2 zV!1@98N>oP{d&-ImU3rRfwc%QFW^0dj|*qG}}jjbQYXm_e$a&(;Ab>gJ&LK z##K3cOb;A{LasewnpxKqtJS_xcNQ`6jq z_8;f34M#*aqvSYRi}Uh0LCDk;;prbVZ6WFAR?jmKlaf;Gcrk)YqiY%UH3LqfS>3PO z@GCz*KSmTEV(Q!y8q~j-w14cSt zFYbdL$icy(W!c678JPt#4i2$XOguMj!BJ#`?g1yTeOceqsN*&yJwG28{T}}Ce!q2z ztgNi0jLdyIJG;v0NDJRa+P4cseSINWIKovmHRh=--_G_H;ZW}@&*alnhgvOmDt-rP z&BcWUg6~@$`@@lkK>$jG_Prd^nvu_D$$J#$Ysr1UyCp{Pst5kcEsHo;>&Dpqv=!RB znwIhv1gFK{9}4}KRM7vB@qh$7Zl_(f^jm6k5Vr1J@H9<0M9I%HhCH7r5t%qsTx&xy z`h|tzLjd-;5AF{<&ZmtzuhQbTk?7GJ*qJl>4zAH|h+n2(#y=_8&g4E^lsr6BVY=(( zVtwM7{-~txSF(cocQ-qq9B;llASU6_V4cd)z#s^OvLg*aP@7ZWA-H7H9{WSc?TxZI z#B`kmFWd^oR-FrbfJV13&^=?YXU_nI!YwJ^=rDq&Tb>lj_nJ#_*|wich*Os{yhNy`0&@H zLW4cTA6N}5HD<5V8T87z=>BCmFD~F>y0@G*d%pi+tYhNg6#$sIi)7vmG!J<_QxcN= zXCARK|0OJg6sqF@X*r7u&xvElsrP*Isnv42yz>W$2&}cnVBPGLz|U)S6%>3xxhb2! zD@`6mBJeW7JoxF;r@6Vgz!EC12kGQ|mN6VRIX;fj;_0LcUYwoH2u4f>#>QCMI^1d; zx~9kjiMSBoz)v3iM}yE=+nZ$Tj>6~4ucRQr^P&{E@>n3@5)Jis4y)J^__&afXKd~} z@QE-VB{&MaMoEndLm2t@a zDR$K}JIC#bcuKPdEQaqUBTj(&yR&WrWApr$xO~dhB8%2*^QxiM^S*DrXu$boot%?h z!ccSsoL@RQHhFK84t7qRO3ec&LcgLK8|(*Py#M> zT2_W(wDmBjaUe*si;-#GOS6YtLblN+atb7N=_vUzg5#=t>? zG!%(bI&DGE@LZ;0ao6F?*61(JS%l<-HHgR3sd|04jCFC_dZ3s#OCl5s6Ob`5O5{8_ zimUW&+Wk{-*Yz|^m*VWEq#mW`!RH>p=X?|zP}$j2PH))sxw+-=567G)nw`lm-5O7yw4 zdwi`nTKZuR0jkWQ5~vQ5T2<7JSj#u!8^A0V{dW_8i9;2-x@#X=4})lktkbRV)mzJv zL|9^=MT3yuER{;Z#lQiLVA;|btQK~#nD< zRRmWIfglG+kEmR~3lY3OiQI5!A$?PPDm04PtZEW*@$kwlXW=(is%mPRWuB$$Qf&ex zae|jW&&7ZAi%}$R^`9uKO0)}ZD?EC;XGy(jNP2Oe2)^%edwp$hnY@!L>aHoJv;!41AtKnF4Qv$) zaAB)aW1FflC%Z@Zm_)(#4OSFL@Ki5S;k4^8ad?FmVt4`U56^=3K6O4%8b-xAbHI}x zyAfK*@Z*^I{B+FsNGXtE)&UljY|ANGM5Bi z7nXehE-TiEk8r1^T(M|<4Jb0KAbIj43PIV`bi9PhW(n+zqr2sG3Y%pK$mo})Q+&7UR!jS zVI0mK&~;tV(Y;~pN_D5Pv*QwDjqEWwI!zI8bb0T5UPAb8r&Cb^UBTyZU2V>hg7=Mp z(D_lv2S(GI1&;ex&ddpkltTL=f8cgV%d30rh?)fxcdu*W;}u_{97WB2bM+VX6UsKP zU&oWf_FY{(&k||qPLbQZHxXgiN6G>C(Dz!ag(?sru~GKh_4AyLWoy5O@71nmd47&4 zvNhJ*`EMPYss?oPBOvQRsTeV#~ zmFYP+77vj1^%{-kE9*a<0!B;}1%+jGyVQ$(mc_lEpqXfDRXBFL~hb zGV7=xmFE=@g<#=BGg4UO#iTe2f&7AkSM}85;^XapRH8>O_ST*YG(;|^Gnbs7s9HHW zLB)0$=(kPVkgPNyAw>FU7Ubgp>(!F~5KsKCaPI#pp@@f!V9r?ZL`TQ|Ei0Vf>KOg? zL58)Djy~h!j$RV*2n4zOCd?%M&ASNxnch23YZr^nWa`KNMMX~^q8lL7+DrUFQ&ThN z5aOL^-AnyB*7S;Zi*Q$^#vmx@5k2?yItZSaX7UE}q);o@J`AdkZ=n84dUi~)|FcAmqC0FYV`dG8Tzy45F; z{KLcu8BYeYhhQ)yA|WMp!tEB_2~*J4e*XT$2YFT1$-D^Bos2wCxfVynOnEu8vMbk!DTTF3!)mxE!I&ecd;(c(Vxu{KwKV-Yf1l`VFZe8| zMOOf<7*rWXV?-g!U8W`h-COM{hN(%Il5o(>!;Z1<94X{=x+|`WU5XbS4;c_21P^9& zQruXJBW^*GL$nKxe>AxL7p#<*HzgJt-ETXxs+|O}xABWQ_ zNhHrdk`fjF5!GCy(fJFI74i~Mc|*JN`cccTO)6;;K`#oHr+%DJo#Lh*-qfr7#R$f! zy$408lx_C{Br{wy*awI4{SM` z27IxAOS^adI`d1p9!ZcRV>_VRt>buvlvtqRu98n%PfV$F3U)Apir+iQn%&=&CYVWe$T6F(3s#kw_USXcm#B${4 zoUG+`EK)R}nxi30+SMg;A5(JgG+On@QiB$K@O zfro3@*hClm1to%L%yM#mZ2~|8F0Jcq5P%<8GK{h2Wgq#N*K%e&Px~@H9_>&h1}B#= z&1Lx+hEkZzsR6JhWh8pYP;uax`LRW4o~4(|QwAo<)n@?6xAhMFCSi~jp|-p|(=DB= zdte!w-FneU{!)uK_kE+kuML(ls9dv){fCbZA!wgC&bYryhA%Lr*{&AS zCn&~~P)bJp1{rhupcvoYV07@f9KU?&UxK`T9*MP(*(Gx>y*qU;j`TUJIy1|G;d7Ic?lI9NEHyk< zZ*a-S1b%?TT9BO$Qk`e&!Ou@&`8|~aa&*0l$zuRm6@o5tW813xs<#lxwbKxdFK~^2E8}SGIoqF^h+3O5}KTGTnZQ}Z)35hA_ z^nl*zNRUDKS<6A#sX)2IZv3HzyHX_f>6HYo^X-(U7Uo03tAwEXK#(}gPI`dwdpmI@ zvan(aCnCQ5UaHzE#EH02N0lhmbnNZ>?<1u3RA(bxW;w*gQBN#@`QxaoCY*xp04ih9 zkX9GVLI_D}7#7a)h@(Yt1Tc+jG%yzKFA4L>LXr(FJc4lBxJ>l-|G4N9}O>-0ssI2 literal 19699 zcmb@ubzD?$zb?FJ=~O^zP>>cRq>&bBq`ML6W`IFDln?}^5hbL%OHxKUhVJfen6t*; zv)}W4&N=&i&)%Q+kAYch-RtgeUe`Sls>*WsI1h0E0Kiv}msSS=lvd>D9wvB)?{Tdw zcv0q~spBSX>1ys`>*QwZ=l}p-sh>ahIZSiobq}0r+}q`Qy2PPv97-ldu**hKDXkxD zsgS)vu{p9IYr0_?Qkxw>t8jaH`Od%buCX}YE zp5Z4zn^AJCm-5^o$oPZWXLQnZUx0HXOAIrDzW-G&W%;))N}i)qW{=ZUOEc93&RmHH zqM=pM4yi%vgxMqSF}?*nN$Jcsi+d3BI-cR3o}8?*yHf#|nu2b&2^-B4D(9|y5_F)_3-n!Hy^sii$d?!Ts57v z7QbW4W$gOOz@U-ZQtrcFvQO^n-B8_v(!Xdaa6!C(1^{$`g0!TjSL*I8#FuPrk^jIN zO_2nZDR|~y67W>>y=qpT>Zv8Y-gS0SwZRx_QRXP!+(Dp8lSz~IVQ6OMTMT~&9G%gt z$Vm1QogoGtv~X3__e?7|*mc&}>$m1F+IOrxE0VrW_Vpj%`X2q>`?L4L+R9`7tE-g< z+^l9=Qd-)A|JkAgKuoMA$PGk<_aq2~HK0h3mRVR>-1BaztQ;ljuLk1aG+Tlc0n%ip zE8m$?^NKMS9!dl>)2|e9x5Oxgv!eE-|4O|3f>7ncOO z4`gH4_NMkKd8b&jXa=Uj+Ro{-4i{<>^>=!}d2klK^vcQd-t3{2eNpiuS$^Akga~lY zUC?X8dmS6NQ1Nem&^P>g??w(CF!(%)z5iLz(NXt|x&5q7Z;V!x&?%(vNf!_cWqZe; zMZnZl2Zs^| zUjRL6i12XA^eFseaSY(y7sOMu&~?@<3;A0#IeM!F7T?&Ldn>ypTZDpu_QboTUllcW z{dZ~5vw?7;Pm8(5wBdzBnzTgd5T}KFJVrvEaNkLfgUn92AMZ8T^I>ybj|p|rRG*!R zXH>!-ucu|-E`0o$c5tmwTzSlt8qb~5++;=)Gfse#lJe!*uUCqS9O--8hT;MI+L=BL415OQV#!3A z!pys)W&VV4)g99kgY&+Wh`S2}5PqU<)4X23pt~dnS~oNQs&kM7g>V2cL* zoG0ng&Jwk(h=>AwKlX^Mdt~%Ip}{wAm_buHQ*M!4SXY>Z)W40Zzk7O>kH+=olDf&? zn2I3mLP43}Y=}c>`!B)>V&^w&T8-K~&9mLT-L~G!swG!wI1;Ut zfisuY?iGDc90VcLqNQReL^j;>))m-}jCZ;w0EtZU87jBtB3`S_{ew4|GlxEj=mTw7 z=rsPjqRcbxjndLX0kpyJo@|eXPSGzX52Nwdxw(kdD(`vSO9&4a!95i*uI=S#^C!h4 zj*~sXV+qYT1Gl-f#VZjkd6YWD-L;IRtQ%j5W z)Y{T=aSpQ2$4;@=g7AMFOF}|oFqQp=2)3%EprE!D`+?wEp6A^JH}RuKQEO{fJF^V} zE2rGx4K;1;Fy%C%tjtWhpW}AVx%62m0?4?}0aO#6i@KV&v>}wd93!rfkPv!WvL2cu zJP&|{o!w$!zfdh(HezqKA-lTzL4(IGj&~ZK=)MRsysE(J{X>Os-jgre=v8qhBJZ=Y zdwYAoJoETfCgoA05h_#rOQl+&n7q|nm55b0bjO+Zrr*}V!Q+zl=T(<%5@LucIf;V| zPXZ@0PAZ)`B5^xpdt9Ih!UOg|t)V#^S#N;^Ql)_1ybn&I>5y4ZT=<_L6nV*rj>Q3a z8x^Kva)zT1DDu+MIUO;QM8t7V%dq}l08F69Gy_P$JJ0@VrGHihPlADg=P@Q7G4WRt zwAk?Q*Af4``)|cJ?}BQyzdlhI6z06>+@+wv@?&`zuZEU>!)-*k2ApQcZapP#7 zg(tw;U{>Su(OI@&OqNY$4E!~DIrWhT_pS@np>%a)wI`0z{_f8^#N90e8=K;XM*{uJ zh}-M)>!#gG_5#u5Gr;mdp+)GB`Nm(J?FmNT_kQnp>;K$GawO$^hoKdU2@}3YU%+grnLGS0B8kY^C&el~954cS4(<)5r_S8o*eBFaA4$@3Xm2GqMA8;NFkcppi3|2Mz2+6Yuyi zv3Q=GviG`qJ}7IQ@cinF1ngLPoLJu5$B9rl<-L1Y1J;UC$@l7pcro+2(n4KcLtoEQ z;?J-rxInGL9cIif^mymy6Asq+yQ9X`^eyfb`Fkdgm3UT+FVkD@(b7!{>$WV?0s&9s zq027QAEYwNm6(-B7b}V~%z9VmgGV_XVYUA4;@qY;tMbZw52~|_7$RwIs7zv?d}yH} z?J}NQtN!|!*|R5OPr^F#87;UwjiRXqTVI z0?$^EmIfx!@N^);$0i7OW(hGwUzJ90wZjKun9cP&&@d{j=MZC zC;FFWN2;5DQyKq74f9_ruGU)JSgn(X@a(vvMEXyZyjJ&&&$FBSD_jX_v!zrEt~fjz z4BM?ho0Rg*Je1DUN#;ur-A7xx!E7V)An&(ch&HGbdERAU!kA3IR zOZ*X{(J)6`WjH+bdVfwmnkGAEYfhPC+ZrH=o41(Y+tH)ynfdE%)ixT)z0qwCcaN)BW7BfacV5JkwCxf}yjs z69|}*3gh0{sU+{eJHM~27b_|XP>6Vy^4u=81%-~zr@wGr3$LtvURhoJR?k6CPj3Pe zxEsR5n2QA}%f`i} zeaG;A=XMMZZ+}~5wtpbLJT4U$h|`AbmOdf%uen8N=-68sKfk77+|le^t4?}V2ArOW zWcLdfT5him74BLU6`-|kDV{>VffQr#^5u;|jNV&I+-inhSSM%Osy&6q z?H6#I>N-VQw+|g(?jZfzt3B_BSm(FvGq+q0e1#5<>zBX0?^Mq2 zu1+?Cnjz`3^P(zjSXiIUX{A7QJ=6k)mNW@o`d-%dmc^g|nCF}M3GiGM+A~zXE^ueI z>EfCRj}i`YG-$n#Q+v;_im7Yk!F24v52Za-KZS z>v~XQwljP<0r8j{$Ix#o&ek^e8{@I=ry@o(xfwnLG7U_xW9Zj=pV(vEyl92BR7UXf zwOY57)=Y*sui0AulH(_izvnAdZBO02wrLAqTFSp1uoS50RM|7qXW4?`mfln!+Hall zsjwZV&$E&YV=i*Rt*Y|d;Uc1a5dVU5r4s{>?Cqn~)%n#(Xg9vgg)Rt6Nd5k6qaJ1LJetgjd0?+N7sv@!h6*66jx zNh6;nUYpr$%beK^j0(cgQ&&T?*K^lsBmg{I@pJxKULjy?bbHmJtv{9!$09}xQy55P zpP(F1r&W87eN`~H!=J)k4qtbKeApxQwhO!ZwqpX1nH}d}VKg;FD;8dtpP&!3yBN_I z2IoD&HVZxTx>8;TEaW&uRJw-0CRlg=uALq71HojdQ=jfIsmFi<}KwG$4&JpVq1nVPVj~jdpDxv^rdt< z#;p?fb&k?VIknpIBBXs5m4V?13rduPbmrzUUj6q}^HF;);q1bp+?OCf1Gxh6he#ED zGq|aV3+$sX=EAyV^lyj4L054l%<*SRse2oHMpHo%u2lqh^{xC)!e$b8tU?Y33f@t> zVM&wyq~X|y!1#2uoCOO~4{g5XV))$n>U!xfL+JD2$3P9J(0f|sS);;P$Z+R$tn&*z zOjhlA4bJ4)98>7Gep2fkbO{-@GtZn}E5b~5M8n+pZeK7t(tj4dF3aSP9A70Sj=M{| z^RFLd{ZPdYGaPKWx4$=9?AhT>Zn)`g6r-krrUw+k7#SGM-4x4ZEp+#uZ=(2Y=buLB zcOCL7^!h;|4qHbvFjaFE&;<_cG!AA4o#mxBnV@wGcjix_u&$`0e0IWb=$M>_#>Buw zdP)FEne88WMoknZA?4If?HL{!iSs=tXKB(pWA#xcHLuklqUQ0>1{rqag^Tsy2~1P_ zo>2HxlZQzJeV^0S*3?{x7T#M}C-aNl&i(f7*S7hJNU`D;3s~e4BtY_DRKvE!)7Bv1^%W>WmU^y{`vxN*zq78PWFo$apFFV5lxjLNsZ1qn_moTqRU) za2su;qNWzRrP0LS`ZJmMO_Q2#JiC8~!}W-#}q!_{40 zHcV889FtBhUV z<}@YE7r~c0(Rtp2{rh~rm7Y}SbMA&i0C58nUe3`{Xh-qQ~wI`oo2ipby zKdx1>dag2jj}$DYeud!T7tHUZ>+JY0qO=A-BR!mqCPV>lc>^G{BZyoli`yCmr_tB5 z83g}Bt(Hl!iM(Ud(wiSGrgMD)Ch+r9Uqni^~i{zI08jv2Yd6trJ= zv=F{o)M?W$g*pR!mZ977s-pePM`D@A(DgVvaP$*HsDJ!UX3S3oaWvuLPX(I$Za(Ti zbT4WV<+)iI+E}B0=5?^jE5Efz#Y$jt4Xs|5(uAWbIz+yQd|lkaKDymcsX0e{XM3_V zbl=X|c&_RT&pA!Tu3pR0Q+nEl!+65WyL0sxt$pYnU9s%Skgk^20~}mj!?oW;U=EY{ zc8Ud;oRf^_W^~k2?w8ZOG)9QEz-xu}`SGNNKk@XnH++b>gk!7eU_5a?_eszQy;`q4 zzsqpz?C@w;`P)Xj%Ex`^?lXYz8%?^P?*%uou-unX>1_a!%SkV`y1x9Z4FH$~RC%wL zAJLWPg)!%zUp@s)rhY8G9Cg1xOdL8j8Fu`h3q4uBT({C9Ft7uD-Ild5x3{` zO{xRp2;VFkJ$2mk-~KK~9@y0)x-Gja`jYm!&Y~s6M;*<~i_H^ZslH8!_)nh>R+Ee| ztJ1onso7@262~s?2&w}B0Hr>&m?hg&8QpH9SJ`o$4mDv7_|)n~M(Oh5G1_}@0e-X2$orv98@~)& zzE0kGWgPGi-1TPHI|hLYOtwI)hy=#V`|P5G4e%nMpcKP${L|j}iR4c*pW=wUGdvLE zTVZYK?A6G%#p31<#Y>@sAWjr7Cm8xFe!VG-a_0JrXx_&|P#b(ng*YU5IPF;zm#G~e z9R>GUNhvEw^KgiZ(|R<_#u9xxMUzlgCOA4iMrkd*@^dD%qN{Zp|4CJZ>{6>YIf|&p zbiar$$__#gPK4umdslwzlYAcQkFbx~#a(+L`%v46Gr8rOfKlL`#B7915>fICzw(X5 z)X>>@W=4;Wd+!t#M;e<{#O`YI^70NS9XvU7=+red%AAJ2l@@aq`F!&^x8b8j6|J=l ztabTAxq27M(dw>YZ#I0N^qJ+Js6R)?)n}E6j~Tw<#6c+Tx+yiUi53YY>&zV-9Ay3d zn@J?VFbbSdIdEPFU76FsG$XiIkO{($t}fO^_{_|QGV|^&BPhf^9t*SFaLfCyT9NwT z6FYAzEcaqSYk_$g1z1fyM#`9aF@klYtOyF^ZVn-c5uli?qU%(T#%?f1dNqoPBqKhA%@)OF4(FP7pQ{FsBn z(q3Xbk4MGE+6k(Qi@gQP*Y#!$G=^ml&Q}fDrf}O%*)m9Cigj>T45N^<(kE<22WxbB zZ95@V`lIf?VIk_g-!%uYFmLSl1^r`rsA*j_+F1pCk;Tm0on97-*`Y+#F!|=lIMtd-PsX1{}3; zVFEYXJC!9G8izV-L`n6(hyyFE`pQ?tZc4ot-ea+|akdzI<@Ed`42bx8G!NO2{4&IS za4+*V);PpXoeYUyF&uBAH(VB_Lt-GM4Xtc=wj%qf<{9?Hn1Ggg_ zms8^1J9fZ2Mw5mquj+j56PG%l%4+B}RoE_k1fAqls^~L0TvcOg;&!*ilf%*c-f9TD zcQ~xEV|m_u1oG%sPh8uWPhs>#Y~FHei4-egS{%Agtx;mlSM*XbvC0+BIpKFQe0#dG z91}&j{s-He#mm6E?#sniLGsSXJJ2Z=eVYKQANIX>0uJO^(|`&JFrsz)2;es3KA2~u zU5emY`pD)s1xh9nlqYltg5-x6LvXa zS*a@n)6kanxwebn_U>miA5+($g_w(FY~Nk<54=vJ4?6i3#WkK6lEn*|@ILzV_C#uy zv9;@D;zXTp)ga={kgEcpWS)zuL65mWXuKI+%7AsKX!=84Ty;8RqVaD7cpE) z7k10;&S?5%&&DnGWebkJ#mzd@OuQ@B?TnE`-%Q?wY-#P*E1KYrAQK?jmPcC&i0)JfNn ztL8X&ES^~wo-Zpt-ltWc6Op^lL`qdm+c4du=3wer6<9Y{`xAz( z)=_PzP#)=mPMPO%{eF~S&P6s08}TWz5_orP(88OZge)#;Wn&=Luf>?tQ?Z>g{JiFLN4TJ?hVh`N~OBCFv0Hl`ah^BZCmdet1(Mus;{IeM^Q?v4%s__|N8KbPpc%kltqDLvo$&n{wx;jk` zLEYurCDSGf`|%;8qnbqp1Yfk|zQwsn!**#Y9H0&eo2k1Y)=c`r7qouC6U2celbH0o=-b_<-Y9(>Cx3}%P1G|LM^Jg)#X=vUD zg}N2&b%f&VG+qlRut*q}b`FfOoEo4J6E>c<^6>=iGwQwDkdikqTIR@X+|?c=j&~*Po7INchpj0gc1O8 z#Ypx6&Z;|IhF!%Z!y4TyJD16Co44OO-X}_{mZzdP7{8<2>u&& zS=OHhE2Jh-km3ql*1W$JML?hB$PctmWot{Ux?j*_(lmXv*}-^N_nO*IK61KcS+xaG zB?LrwNsPVydgs&kBXP^m7!CLoY7`vYJQ*5-1Uyxn_U*uSP=QrwCOeqnt_TeY8c#Z% zt1@{XKAvvzoHJ#7dfuucBARAlPI|fA_I4=R#z5{re)9kc z@paYvT{{y$UBp7C4WRZ%Vz(?5Nau8G@NfGj{b)R35Y9pu_x$E5#t6+n2q9M>n77g} zBm6%Dh5wsq|L3?OW`16tyoIG@M6L6(w3b#P3o9#$EL?o=-RyGLN8Uz%hKfhLRv%Om z0$`dc0EGg*VV2YXykVZ+sugG~UDD{lqX?M4-SaG+-VJRe+VyDIn64>7f_MLdAOoBI zuJu0rY!L#6s)-NE%jSkNb8u_{e~P1D{sR0BBuo4^uNV{20e5$9n9sKUXv( z4n|gB6m<`nsIZQ)Dwzd4Pe}Ra^72v@F<)jbr@Bi4&YBY!8|a~*o}MOikfX)Aeg6FU zao}!S2v}{=V{qJ*oIGyG%Km7F#U=`G%ID9MI=1;<9GC*Ft?$v$a4g-ukLt>)TI*&M z6cmy}M36C4;2PVPAZ*L?Ba0V%qJ|tV)Bgd9qfEm8V$nzt=-&eyYYv>c!=l|@EHVVR zm+OuE?JNwX_i*NG^~p3x&2J20(~W0HNgK~ykC4pA?zy@(o*G@WOHZ#B6IJn6`3L+T z;#w(?aGduy@Rrnrocx;@fxEco370CR54K;$XCbDdExMy_WKBb8K4$B2@th-AKb}bJ zA86E|0J4M|5u~RaEO~j_TePB?%=IeXqowE4i;q0n_7N+=oSeHutl_Ii1h14-kt_j7 zBxkZe-b>6k!-G*sabr5^ll2?Q%7nZXXs$Bs;Q{3l9mtzI=Y#l@Y3-q)x0W8bItB@6 zqp2!28F|pWpgfX%zcbWpf)$V^r(C`+mppXi8n89^=_R(rxhGmGE7MMFJKxP_ z5jDpB)80x|)ImQzrb4?&n&eb8P24JYZdYlx{C$N*a)n9*E`yry0!IIl!Hq;+-q&+b zBNQf4yM9h6Q4}g3!Jx}T0F`|SVQ_9D@^1gfN<;Ajk%?c?|8HFXKM~hYYb{vvYuwN~ zUlagt3>DpLJXQt*W*r1}6l2>B#Xv~cs&d)!-+F}F(k5iSlX5fc`g99IYh6E6cTkd>-^-w#sESjZV z@YWqE*8*k zwzOM*ZI`q}pPaZQeExj-#>&S>Xn1(|puqSRht~Jty<*+oX=t|G1V;|WDr6pn%J&zm z_#92oJ~&(FKGKIyZ+4CD|K4(c#E#rKTQt-9usvxz*B7ts{3#Fk^*~4NG2`Kf4YHI_ zyEXCb*Ie`0G!W=R9GiQZ)SL~T`(5Cm%OK|tmUrM66hWz1F==kK+vgpkU&ic#fcI!v zOW=YX2qcWH{$B5O0oGlZA3we{OxK$6JOK>)QS{g!O!}`j&Xilip4&~|Tpov9`DSqW zjP8HjIYsH8n}Y18O+SOf;cPXaXBnH3u@5J*0aGMPOG^p1*x1;;y9LGdI3+E2Lcn^d zjUcMie6!zDzNOvt>lW*~DheUDyuDqJ-7TQOLxc$T%dW=LoP4@}UEj}`+ z@trkhrtC#f?Zbonf7*h}A>QRwx*nOUam^ysRJDpqN}bjjerwu*@)zzl>p{6+ml9#^ z^q41`py^QerP3-GJ1OZF|I=VR!;8?vqYJ@2G z>&d*mc|!4jq7?a0`g&%0`ORs?7VCbw2>QLI%K6k@T}mBK^Xu@D8Hq zt+Dh{9pHv#pWBmz+ztgwWlE#OE;6FY&(REX^#9P#0rwHb7=bbW-4pGduZN0d)?Hju z4q@!fGqCUc7Cl69VAh{rD)gQTk~;ylu(q}vf4~8A=?0jN;)Q$(M)~Sa?g9=%V%|l) z8@R<%d}cG4S-OKaizbvn zAWVFcb6WP!`ZzSF%wlZ9`&uZ#)?4MQ!a}@BDa_?QQ$IXg*a07+@&kqUdqKAay5W(L zA&xREU;%uDd?T%1huBeG(ct$1IAHX1BC6)K3>5r<-LHo*eo;fpz&M_c=>|{7RS$FX z?9HunY0Sj-#lgbYVeRk#{CN!!g%MB>yG`=~5jRA%v@yztg@UT^;IA1wt)2}n?%s_4 zHP`wEH8naS31fVzbdGOOw6P^eP2-1rib#6wV>Xe`_mciu~35iFSjpwlH(Da3tvcxb=(=&z|V1}8=` zEHPawg9LP*aauDagQO)T-@^smUcL;>D=CQyr->W_4F@`aN5Kt%LvE+(@S)(b2$xq- zct7^mo_Ao;DYLws#K-6Z2xs}lHHlY+hGK&74&xxvpZ@*_ppUjORaF2x0WqKe*ipzj zhyX6I-2knHi&%n5P0h`7<(~USiqAtcrmF3y*_-#`M+D}5&EwV&!0DFp@u`O!rKNHO zouoK65Ba6JfN=neg!uL3Kyb;mkE9w`kNJ%0CwM`A6W!}mWzh+rNdizNHU4-5_t4xKi2tQ zdKq@xe=LN>`|+nBX$jNQqr0FQ0Ren@H11I;Bw6COL&ei+>AzeF29?Is>JM8XAq{tD zIz{9BC{Nn^G%ggZK{E5kNN$WGC8&&jp7Wg)NC?au=Iz9ST13_!h7D>7I$l#EP$?un z5oV$E`HCHsfb=jAl4h+)vwNTUXP3%x$TwI)lufEWSp^Gh{Tb@PBurd(u6%_-@SX6 z(w&fyP^qsBS;vvuL-~m&k2wbFu`WVpPqX7$B2YO>o{u8cpv4osKz35VU$BmsT~z$H zRgL~Xi0!DoYM4_U@qI`p0o|$3BnCi#7H%1%l^9X63Ob`JZfk!iJ34HjPZTjTa-EKU zfZYHLrpRnAey{fseTaxq>wSZjm0?dBa85UR!a9glevM*|1+k))pRNKu(uc%!kzHYR z4>qs~w*Y?6MfW+>;NeR>8a=nvp_sgO%{Af*;Ll=*#hMNrWIG+yoMW)e4}RNB(t!Ll z4$Xkv3)O3>VH0YywXsnZDx=?bklCwjtO;8@>{aU% z$Bg^ReJ|_eYLtO~r}3FfPX*&&Jeh$2F}~lY`(%mu}L7Huyysx?Bt z`MeMbVSs@4^GQ;AdhtzvCLXS1``6vm;*}fFQ^Oj&j_>X5We+2yCCF1gzutp=N=QII zJ&$`!6JWJ*i?Xxo)qeWYYGH1g$7e!g|4K9@!-qoCk2vz$TTs*|WNyp3WWXdew zN&X#;9v|0ANXig~`GY$k>2m8DbdZy=hLN^o@3aAtzfE|;NMvbgnfUFStMRkNryYe_ zZ1o25d4LCU? zhNdKZT#oAWPVR0vv~MTHPTz-#!`lAw177?mVOET!>R|KK%{Q0NW1ZS_W*2Xqz=$SX zs5%z4)Ej=y;4xal@i|31Jb~>PZyx2hkEQU3;`u+w7iw3QvgBV=h9~#7Uzi<7{pvvi zXVO-D?pvBjBHzV@mz$!zgrT44!$*&XMn{7^=e*_4&odKGu|(0Q8n^vGm-ZeIZSNy_ z;U8LU;aBcINyEUv07a(?*vh=TbbQ5qS?2!5ce&2&gy7d%Z%iKZ0{H|=34u}dkir&MMo`FLr$FmGnZpx6ojG~J(5g{f1h#mGjv z2B%RkDKeo;2ryorD!wkQHf5k&2j@S-3$N_#tX`bT};{WM2oVi!n3dUCv z!a9S-6jX?{<@{ocO(4QDc^t5f%5M2MKta&x%{IFo;y#7T+~t%&HMM|g}UZTwRkbI5YD^a|X?oMu>(Sd!` zv4AUsd6`*$hTBGi%sL#)u$E4^d;H+UiiB_Kajx_fuB~pOZ$Gkt-vWljJFbM?`M{Fx zCr@MWtrs-(w+5517lU-BxyisLQ8H&u&d82{*x?4k;@x^eHfBzcRfG&<$e1j>YLDv{ zO@WEgTU3K-cUr*2zFpP8@Vba+|LaeSlBVI2fz=3!-a2sBfz}@SIi*JeIDpr7nrA7P z^L;m8-M7jQ7>L?_a@d`$bk06_;}1FhNCzigFi=^~fQo^s{PzJQTr_j8u;t9 zpRaMxU1S(Rrqn&()0yZStGFk^g(wIwgNy0-=aFEtqzQ7~HC1KDu{FJDqsXKSlE}<9 zD+XA%+rSjAutO8y!od{Skk?rVIhZ{Eyk3{2lm$|zz;NTRLE@hiApc9&?f)8Z`OmYm z|D|YVtI*O^BUkypv$Jz}OpIJjF#6~iJiDxn7^EP3t*3diFS05UKFTm=|J2a=^ju|> z&ve*6CZx&mdkel}^V3(a6xDQ%qPx0eJG#3WA9LV;rKJ4gJL~R?PvlONjG0N<*yI)` zuku08^#)+N+2}6y*u(4I91*;0C!9FjYX4T4Lp<_8qxo zT8|n~e3~*_KUN?EQgT>fFz4SBW%7y&lHQh&n=g(OJ3KZ6-3zp%HhHbL>hCC9rKd~) z%!SX7YofkT;Qllpj^p(uQr6O5o~vU!?C7nd;I<(;I)C1(4kamJuQR+kY+HXmPs{;b zcrdghhz5jLbpfbEy$0`>A~kxK*FYpgPfxSJ?V!L^-nY-pZ{sPJG%uGb)W#}{e}^N4Z}|RGoOI~ z6fpUr=@;+dE>N8+Ymn3*zCBF&AnH1&g5~(3zVh}srb>F9fQnmGjEsys8tczT2U0`W zH>z%^_s8&SH-6zB9_A>0yHz*vYqX6=UQZ`ztIY;D9F}>l%{2zV@WzlUGMleqQ&=FC z#A#?y4F&%W>S%}62BR11H|f<>Q?s$YRB(Of)%&S?llVc_HA3+ieF1&QBeYL6K; z)w<>9v9n1T8dCFIok*H%kb;hi&)LTNXXM5o5Dm`et=r28hZ&YG1K(%hZIpts$gZ3x z79d@`zFtT(@$=L7iexxSkbt_nx}HCOI>5{p@(>xA#NU}HLwo%Au_=clmr7x36ePpr z3}|4cFm9=GWnQgbb}Kl-@83u%0@s&^hgZ$*goQ+yZ$W^RraMQUBtRh^m6glCtOmq&)OwIRE zVjiTtPfUb=|IYNht81&0%z{4|ePJ|T!!Wu_tHfw_?U{b{J7Qp}DL@8ResZ*L*f7`v zCgEDCW9}YEVDz%GI-N{B>$vp)`DCj`h|6Uq9f!iKgkn#gus%Whr%8d7Eg+m>%vE^UC zda0m*Eu>r2d*PG!z0s$$s1uJ~>_n_s01|x> zq(DI7G1sqlE+DOc|3e(u*!oSzvN%_&?D%D?C*&-1tpl6s2{Wi&)ShOrXeOg)CQ6cF zYkT>WpZsPHv3Vz3bD{G*4aI8CNh-xd>}nzCo4zmm*29!C@Ns8g2ri#~V%P%?k_hWC z(Wr-JLp64;Dcxjz9Slv1XlCrsyljRT4hNUJ4Dd8`HNxIEL7pzcy}Cdjg%oZG^&31b z$hfXqg~^!PV=pb@we1<2J70Kx=Kn}IxH+!%d~|%N`LW^@`?P4y>=Pi<4qjY8YUsN| z0iLx8>QB?el6Zhihi+0vm!rY_{Q2|D&537*Tjx1t`Phff&ab%Beij5_w9+0O17N0>&8|&M=d|G2>90_On>l(0qDMH}6$6Ef(OmcghGz)b#h|+1tv>p$+PG8^Io{WsyMP!PWv^endw;~jeG(Y5GixB)se+%49RFYmZC?a z0M_Qcb31PdozgRWK{__Rp@51gqOtRB6$2;#1Lv|buf^3Qz7j-8l5usitej%vstw}mIa*>Q3EOsS4g*)(;9cR`dK=ga z`C!+L_l=AxYn$Km`?n+*`lJYffSLw)&GYcbdik~*i2Q~3 zsDLMZ7z6~!L0#bdH9bBat*IT%hqhkoZXO-EAc30G^|dv#{kf)43==SVCXok`h<`z1 zYbz@(?($jV$T$Zl00N+Jv;P|-oI}4l*jJSfQpq!cVggI#NG`Sp^QLM6qr%pVK_yLR z6rxCk3&bV=LAa8~x0AI&iV6nHr(ay3z;hBGbZY)4V!tAtmb@TXPfuxH81-*)B;SNA zb9h+2ZE>JlXv*hrUiR;iRI<$IQP?weIeo5w0~-IYU7nYQNeuvivx@v(fPdT{^_~{2 zFOcm9PI0~3)sXqEyElT1dGR94XUyNCS-;bm>=o@tUd%BPCGnsKI14lAsu=VVb)3@- zS%t}WEg%aO&SpsUHk}$S+IA;`^}O7>_@2{?7J3R;%s#NA3eNs*H#;{~qTMihUiDKT zRg}g7(K_{`nHGOKgC+U$en5Io_c_g?i?Lwxpm=8_+V%O?6=ok;-LsWOQ$fAWfX;`x zqxgcJt?3lh6wXhjOv<{l4lg|E;T#a%W{)GEr8B}tzoE+8h;Ltw#lus;4t#Sxb3_5g zL#2qKpQI{NjjuVU*`2WpOM137I*ac5&U*TPn!(m9baryrP8@VR{L88D&R$P# zTmCKwmVI>hb{EbZjVm3X-)vUTxqiXY;%11`!GbB>J>CF!&z8tT!YVnsm?2oiU*EF{9gou z2P`H}b<^`M_fccqFOqXTQ&xHx3z{}MzNiCBm)?cvtm zW^T%aJAcGic|;qaA_Ua-9eLPnZsKxJJ@2wzeHJV}qJ>5Cv!2HEZ@%ZvS9$1>u1Q@h zN?OFZt8g=j2nWn^TOIzLNDOvC|t z`ub!*j1pwse!g;bbu9zayDihL;15Ow)M60 z%Xl;%EhYEp^Z#@5DWHPf%A#ao{!CL-6MZx>7779gwtT>*9zPnd?Z%gN2T(<%S3Bb^9z{XAq%Sc!g+dKzcWLoIS7o5ua%Y@>IxG{bo)| zsm1S4P6ASKadDEE+Y|ISE3X8HbqV5BVVqhQ*Cl(60s zz7oBv-UCM&ZTLKB|G*=aa-#wjat$wz_q4_l1u%r!MLqavcr;+Fq^V<9g^cbD2;#OI zXCJDv)9z`}t+2v&r=v84nwc@=y#8vYb897FJvR#)O=wRGSjU4c37-19y@=mmUR+x_ zK+!l1%jGZXX?IWMa4}5+EG|HxcCj^TKrBkz*c(Hu;J$2dCgheN3=LplMIXaLZ=<2| zVr}mU!gB6FGI6_>25xv8m6mWk=^9 z6L6ju?8~8YOn+NNiu zhF*~a3tM*k9f4T1@FG8+o$rZHT5p@vPp_q_)uO6xbQ76HuqZN}_JjS#ge`l?kQ^pK zG~F{*w9_rNl7&R!y#SE~)gcMLy{3LdBL0q|OXzA0c|oVvVXOkMN@ ze{7>Z-IE5W#1>T%{T~5z1dIFS_FOx2rq}S4Jzb;yedTkOKg_*d{C(wf5xM=t8Gci) z`Mo$lXEXq`3B8u4z_IsfZfzc1?HN&tB5ibEJS`yZH>kb~*pd=pTc*8TLSVtIW& z_P+KTEdC@LfU}3I^-w5#fTW4_>(^V{FT&AlC&loKJgZ-O$>M$yj$S>|aE^2=-#ZqM zWgfzVr@G@{>F2n#dnar!ZN=bIm!T4ASiW~G7EIB%{*_mLi5~I5tdGw1_*VVmOI*+w zn7diu`rFge#cY;JQmb$KWq61EBp* z+Fj+DG|c}f8>@ctC1!mzR{8(XWruXH+nc8KHu3nlIEXGiu=tbgv%R&SW92F5@a*=3 zt#~v40$?U^-M8Ng_YmyVsgro~f(wAv0Prma19)&lcg)>977xW`E5T}MIfY~EZ9=PF zE(4H=$WO%;W%#xTNC0r}FHZm`0Q?d-dek`tSzJ-3dmB<>%JI-;KtX*P0O$XQE<1#j zm~t2qz}|>1J&+PpjxJ{dOR8#eUY#S?*HJIezxTumWnES^#i3W6vk-ZuYf4NxD!Zfs zX!24*;CK#@h$sMe&YvwFwG|*?`sd2D`gND#KKmd%v+Olpd%^DK0M){E4zOvxP4r7~ zhMWv7sj4XsCvrbQ|NhRagO46P>T?KG{kY^US9mNB0FG5QX|kM}^Z@hn@|3av6)RTg zy7G;zi-^eGGs|AH+&O=?codf@(~Jl|Sq}g_YAf(M?-_&70m^y-VAYfo<#w;QCTD6@5IJ0h~Yv^gbjG7LC%HCO4Ru&2i3z3qNg38LupnGb0d3i#Xk(HGN04OXh zWY3R?D8k7w3^ueveZD_5KL=P^S}JmKa*&^&uT0Cx$OviyWY146*s_R-h}1N{3iPFy zUJ9w#r^c`&A|kzL9)K^u{IW~$kBEpU5@{ZQH{EoT>;Y4;MBeOLjr#bidSqqgT>KYgrewBt9R?W3zYN1BPj zk|RPTp&vaq124V{#3;M$&^2~;;n;Iw0FIUgUN8s zyz%VMESS({lO={q>I=IO@D+8sIU>sOIyp}*MA-7{UTLr^K?p{v{IR}d@a(!p$z-oyggi-Cj604xny*o z{n|a=@U*?E&yC;G1HMTwm%6;Yuzkwt*a9`{aPFU!%>uP z|2ejD7h*Z<9+Gnm}dJhhsw-r`n^{Umr_rVZK|K^Pad{+Hac)dF(i6HNB0eia1}}H5anY za>tv+ON$iLer;2oemtl>$IEFpv(WN5@?}c4qy7E#kY1On>yH^5aU=KWW0Xd1g#E0z;3QmI#Sk?oQ}oG) z(=dok4u?5}M4JG+GMGJt1pJau%^`~mo|22G)cn^~^Bf4<-)n7h7%J%7<@`f2KcR09 zxxmBbK%c-lqUgb_ZEiMM^*wkj1xQJ;O!_VJoB-DHC64TO4_cKL z;`H>zkFVZ-A9PqckCR|L0RlIHgKU&4{tc87u_&>L8eJ|#;ZtUBs~xQQUCzX*aB!s~ z%-VQURHo+Vd5ld=UNliU7p~p@KRgI5*P}|Kem!?^C_NIVjHXEZbU!UEjU=vzl;AdL zTu(rQOK2It^Ex|2oV@+$N6IMh;G8+ z@-w|DFU9clM^Y(ow@wY8pl07A&u=5zYll&1*{Ifc=({f^>AxRAAWV>FfWi~qMJ+5L zniv+E7;%Bk+wWu{_SDqFe)5qDxkC3;Sh${>n?u*$G`CW@b?qD+Xk3+zw=y9XX%LHy zn*aie*myBM7;A3u4^h?7{ZxGCs%aG=PcZu*;M8=ZhB? zq82^@;^N|1kWR}-{dnX=K=>)%+(alPghy7%_z|?ih4*bz)#weh-|J;Mk}rHGJ=(ka zgT4>JD5~4RO)6sM1h6qkv7W{I6prf82}r|7rt~`K^&TwldOd5pVC*ehd<1!M0{n*I zU7}!0Vwd2VTeElr(EAtzzZJ5Lg(sat8(2 zm>4JL=lE`H1mPXI1qIlV3O|dj9x>hLu`B)5%4DQegEFasE{m^iqfFasc2K4sPiGz$ zpx&D_u-wl6wTiMh(=jcYyW!K?c~Yc?DvfE}_L|V=yy5F_EHA~M{n#^wG`TV-lYiL` zaJ84#_x(Us-z);R5i(HJyPqhO+w?;!RKH>6SZvXKjG58V;QD%DcTZ26p4<@*Uq8RG zpIv68I9S~B-`BskEcX8Dv4=e$U05KJMO9hhoA)#7+SssvYi<^lPO(duzYdf~naHEY zP$x1s8Yn;f8yVo*d^|ILoFM|Lkf#;W@lxpVV`gfC+!CM!cgeNU>R5ZVPec}4`7(=y zhl??LWBwr)V|16$W7M`-klAIvTfeo*ZG?F^vIw;Wpt8X~2q5qR^qbo9a>6B7QKzi{ zQ930PlXO0*Y|sfw-x6bC-t&PcwzWyu*4NXR-2KcIUuHVJ4sbwmWe)~R?A*P)XzfzI z-BAEgHgf;b&oLC_#)Yc9p<(hYrMbCTQCV5pxLATF=5@GVeHy;eqj8m` zTKF%wpG#jOl=AFa@$BUHoYr!Od6?i&{)>IbP-F-hnR@JEaoCftvY>b4bl4&j4ZAm1 z>8o6kJu9~M_Hr5;ajrA?+Wj+=li`Jh5Argmv)0ZhnwdC&Nw!xLCeq*=MrIxC>@eaH z33c`LER@k}gE~SqkKuY{GJls@5o&PwpV=%WUq%H}F{gI4y0bW549S|XSrYhT!#iHCxHTMLb3qFT?F`CK z?5Ee>)Unjp){^Vtf-VFFUj?xJbKDWcqGkUpn$OWQ6Rx6Fn88=_*u97ufwGeCwTT*t{Wk@(5R=^+U@4a8iVMAa7g= zh$8YR7$1s?Th_$bczAZ!f&6K}{@&i>buRDFOa{$ItN4P3ug?)xrrJVygA?l0~~bYJrWi(i{vv5`odMMYhx6!kG*cXwKpst0T+d4U+CxuE(f`1VIdDGP2LO2i zLd4<&5Evw(nwNLKBer&aagq2mJTFi=`G=`i26|CJ{tn@4#7nYr#miD3fR-@h}>!URy+#eRhUzwdu)>QRH8v;rGHIXL(-rt#xJ_eq6$zf`T z&eq!9wX8CnY15JL+IMFgNRQ6SVgTW7Z=MiQNG68 zm@dl-2?&HNG6d)LdpoWcs|YbVqN2eG94yQVeL0D>t^Iw<%*;&eOdVUZdcbM+b^i}_ zxC^@)LPp|WLkP_PFM(?SkVXfI;udAQ(fH(p##vS}+>Th|U)A({w~Y$r`c_smnm$n> z7H{0vwZYrZVX3M%SODJ~f^hw#Hvh^7PTa`3msAA}n~C zf4R>xS1h(IXpP>}EN@jWuZG^!1qYCP$o(gAIqpKmVimVAmI~PiniDl{k+f%~6Z^>M zr}7>9Rp$Ix#v+H>2uGe10V3!gCUuXW!#$dGf9~%)gRx^fN`CHnKcSVi&SL*$psw6s z@^G1hYDH6xe@Kk$EK0A-s<5O4_sE;>hXn~Zd7tx5<@KpWj_=0xFmt{1^J}&_Z{qp% z`?vmz2RG&My!4H^@h0l|CK^A`%n8k5oG$>7w`kV^(vGy*EL6kz){IVQO}K52^^e8yS-Kyb+{F0RaKYJ$q+n0~D3*?J|2c z+ULO_X6BCA{@VSEfacerGBVylvzp;G9VBRL@OJC1D`kw%P1J{1aN|%XgbYYu z0wFh)i=1~*J&8z>t2Rd2c%+C~I&fbr9eJ?3tdzqVCe8!OKeRxB|<|76NxOiVEGMxf<6w0Saj4C zuL3z(YI}v%t7gLQ`cQ!S1lYQ1|A%C3qUMlsKiW{QKvsg2Jt0sqdL`57QEJAZ=;)-j zKFzltg?a^9)!VM!LOH3>=mV$O);@7V^j2onnR0LCHYF-mC28Xpe<5efvykdCE~gR1dd zi;#e}Fdw(UK~?^@yzPm0q$G@1DqCXS(a@?x;`F9`wAEM)xm@8mb-9ZUQ( zGc*2M7$az)1)T=%tY9dE`XMJl0_FrX6&3YNVd>4Io(0@?w{ZdKN0J!X|AK#HaE*fS z2(sQ$x%m-Wp_QAVOoHM2v6z6&#ik?qS09Nxg%}a}*JKxf} zX2P^LDn}o$C`lvhE>Sp$F={({PigI4xTr#%F%sfZ%zSZW?b|||;J;w4=*Z~S%18N^ zpVRye!y8#BCw$G4z#27pQs>GWkoV<)p7;2^w%b7FIq6d z#zWLt$$VUz$m4qGEBm&=@D9449R=}Iv3W-s%4p_LlxI;_`9>l-`&>8S|38xv{FJAxQQJ39 z$IasB`|ckXhb@C_*{Ufjle(+|=+yzr^r3zjH&9y8Us8OY7J?aL2ogs84^Npp1Abr% z&F)`0@AvWf;oHB&$QP?_Z)c2D!2Dsszb65H($mu`8c0W$g@6b5JoERE$iQM5x>Jd2 zg7v6n^68E(G~fE(yAX$HG5}p%;sijhsAr>U(CiWdpyL2BimHXQm4H(fB(P<%6g8yf zbC@qThBCV!l`gy&&uJ(r`85>@bc7LB=t{d~`TF`2&|P-@+NAjD(iYNkelfdStfSb} zGvr==$pR3rw-;KHnDMIW^Nx&c5IPwAUA9|*T{sd35ZypCgYRd9i71X=sS-#$!d&5j zWud0e+0i0Nuh8JuYl(efuq%A#V<_atf6$J9agz0Pv|l8tH0jEs`9pk@`j65-T%`BZ zUF_|v1K4k!($xW8f0>2$mS)h5taH~_w+;1K7F~6m+p?s8^^;spy={Vl$E(S=zTgbj z6TUZnJUKG5WJCE^cj==U!l--qjW5*{N(b}`1-A~Z>bfNCaixomjP^QjKTLw z7g+8uQ|Fu^;Id3^z)xHjB*F0xjOIqa8HjJf+z48ije>!>N$;7I`uiVD5b8zZ@D7l? zak!J-MN2llpomk8GjJ~TIC>nMIz#T;vW$TZT$X=3u`WoSZKRn8eJJpgv&#mZc5rUc zK>HO{w_EPN{S4~?<7^4`2NG=F~pEcJ$G* z-xJKtNb2z4@p($czu9kSpJKMJOC-T;Jeob1Xmd^qyy0rSZW`iTZP8xQZv&4*ykkmf zM>g($@a+0*vL*V2BCAmHUS&V?7tX@FxjajCtFC8A;ZCqP;p0KUV&`%*@U3voFkm%X> zDd;ZuH}Jj0J-Rh{KYOWy*Pl+7T9)8@9t4pXhvrz+9kZz$54z0F4XBJEwUB#uKv%u9 zheW^Knch-K)R4DiEEqk|l0nB|fgA;(nmm55CpcYuEl0BO;_BdeNSDf z|3mj$f6T_>!K}e>9b&YV*cNq$GUa0u(Aa9+@SDN+GUHRX#3hg`#}CHc_0EcuzsskR{bNB|^yhcE z?fkb1>Y-#g9X2|mXmEDW5c=3BR?qkgkH{}JX^enSKM*S+pWL5}{5gxU{E>C%2+p&o zbgRkg8NFFs0X_biWWTB*$XVN{()RN+MFSm(w^HV<3VHaaz+)F2P#0Oba?p>xOX zi;KpDg=NL)!{1Wr(L+1$Ma<1l>Rj)~H0)1*=!&Mq7_OWEZ^?sa-u?U|?OWnKX@9r{x|eXw*C~TqyX=;i+JF4M!8G>h=uM}kJS51_5ocv(g}P-8 z{&Q@mO)JBI*tWskOjrChL(8S_n+|I#>dMRvVu%P}>iLcq*(;A;^xOdltPnbbn!LX!X zMp`;SKP>G^cow0iYk659i+eleUYsST$K_zLwP5sD6~1<=DV}yNOx+6qJ0}z?>lBB3 zz}{Z>4#;i9(0W%bc;G`6PlI^}!dGt{)n#c6#sn~xKz#dFE&b7l>)A;SI9KFFA|m(C zD&umOVyIk~1peH5^5>_uYzHkL6L@m@Wc{_W*3;%Q*o%6S{x3n1CVV2u+B$G>o#iR7 zj3`|9t3zY=92$1)cuO($`KkfF+yTkUB#mfV-ew5cFl{CNT3A2t_eAr{TF}7L-g~Tk z?`K7#CZdC^^-ACr!H#q=;K0ZBW(;4;YjVuHc_k3E?Mju^%XRq~-c=fX#A)RT+-Btz zX6i_=IGZ!R<^sA|C9u96?DRTsw2v_^PE?wTBjB=}Bma4l84|GM%)hQsl(n|{T31H_ zCUT&Z(S2(;)JFJ-Gl4}HPwR1v1;63&wi`RB3h+=y+m-*~yrmzfeaxsKY2VW3z7-={ zm5rCe+d2YwlW~QIuRkW7V1MK5Civi7GD=l_!knsaYjCh}bv*I&TwXLHY&(%*RY=4h zCdt6~WD#fy0{Nf3=*qjndzNE(oSLm!$uD2GnF2)vJ#bXuqV%j=kBU)X`Gf46z{R%U zy|q_u$$;yXQjU60yj;O&PL4Hwl(msA=^40OVu*a%QWoFjigDy$`(WFmv*Yux#-H!I zyez?knJ(+Fv=`xNoqB$LOUrr>d+@y11{QU8=BWn6y!|4NDp-KkIIw=;>-;HdRzn`g zxJU@`zP@m#t2BxN&u!A+ZamAmHmW9x&C^6rhHCPlk_2AvG5KDp8(>MD#yB9lm@3H%-ce+TZ8G~)>B+vkH+cP!GA&$*Dio$PLaQy z|J=SKG}vT_Jl;MfE%)}vy4$dwXQa*<4mV-$XY2Pi3)rp!y*HiQ7+E&U|Lo|s*H8g@ z*cY6=%}q#rz=WUls%61np=Lbh&)zz|D=!_WpN7uesU7zc+(yl?ca5fnqF2-fe9s&k zGB@c@C&FM#0BOA10f2CHa2eUUYuj`TG-YXc;4nNz=_KabSW$X=Wylh1O)&a1 z%=#5xKVLsujp%4a#Pjx|nCWVglAo{OKe}n@(eE)GjC;P5^k~O@buQz0(JyP{RnoG~ zpt5wCBj#^Ut{Vgh3gttQxA+Lv?xUcIfiYb`XPj!sT>N$hU5 zwZoE6`=0n?%JyfXRCj1_SNaasf!U}hVB#>)WdH|KeHk< z>`)U4cZ~q-_`64`F_yWS597*Xmy~6^ry__pR2)DrW4=FtZlXJG5m!A=W260CQmEW4 zre9_z)}f+xNZX$wZ2(1`surovBuJCS$C%`M!v>;E1Bc#ae`u3#Am8@0rX(4IdmsXv z#aCY6Bh}=TzCs}Ky@jNsdsaYp17=6vZ-AyhPo;Rq zg{x_2uJojwMM)jISdUyq&EQPm?Ip4!;5bY-{{kE!^^ZRSE&hK_Gkp9Grhx;>qYIph zrZaJfukN%8gffk)PO>Ri<1JoST;QSW%(Zb5DM_=xh@2$-d!Fysg@?uHm z>&nR(9Nd_Ax=NSjGq|Po-RkUR8GV)O5(bxL@E6b4_^gE37QHe)$*2YOEv+lCBs`ET zXpHW%4EvLCzy|VSlBkEyIDjUFo&5X|r^&*AHJAW`va&Yx;^ncV2L zn1<^G(uDNe5u+s6A{t`d5m>sUU!q_IkMZflPYZA$WnE6v14-?6r}hwpWM7I|Ahs-0 z&0F;mRs{>~hiCw?*m(F8|L7+^ACvC{>d+deezXz*O=ii^24wDl9i^r(Zh_BI*o97U zdtBmEq$HUJ3hG;qmBLMke)MwYZ)$$>FeP4FAsiWa8^;p49P84a1y4^(E} z7<~TMQi_A9DwbJI|G!Az?n_UkR>)%G)^r^j1p{Nmx1dMb>0}IU<=3(gG0UR(l4T^& zA#2-Z$I^5^d)ec%bl?ssjlN-Y_b4{GF$EOyTD2|eorX*#8ANik)zs9)M1DZIGN{F( zw&xpIz8&!jy?h+}gn9%9eqHYD)mnrL2$UK~N=OMb_lChK*l4h)(wkX;{O#Y0AmNSM zjDcv!1ntJG=fxK%rWTkZ+Rk*YV;T=f7FS{pZg>I_n;M7jB-+h2X}DZw%jva&F!DXq zj(?(IWSIo~#+1AL?h$86K0JLEm+5geTi1XoH>&z!E5SAgeY}s_!`5p7l9v=bN#1&a z{bJccZKs+b5=#|uc$n@zvAMzvVuAI{AR+Llcm?z7<^A}*d0XyBSwx7_B7&2SxT zqsh6Fu|` zn;q-0PgD}9lCh0adN%%2>GE=x{+zZa>gGswd^Y(PV_TAw+d@%~cfr`?Rs zdE}kIBNpkK@)xmV9|?E*{IYImFG_xoh3LU#Dj6d}$Su=v&bbDwpR(djUc{3Cj-lnTut~V;JBc?tYepN9zD6jX za|}IfXs1d`i3x3qr8_$BkJNaq0cPpRxnmE_zu2fW+us6Q zePjH5;^k^T3!zU?&7TV;a~lP-scw@*6E0oS^6_!Rp&I~bOS+nOg0Mv+-$&Zpl86d7 zL+H=_HFPQm1&@qBK*#wXaUB-;MVAsUwrt(jGAMZY3-g`F568%%BitrL|6$d$3_(G89;|x!lmXEP!BJIDW5GlAZ`PHv1&Akr@xlgTDBS zpP(yB1M-)7OP4fotgPHMthU0{pL+{r)r=bX%sM-{>vtR|J(d*Fj=8VH{>IAq&js#F ze_kRcBG#c*yr&T%HvKqYSevcz^HsGxXDoG4|A% z6Ovm&Ux91TAz*M=4?Mhs86rFXLL+a#qG+sd*Wix?5EE5fRmPtf@%N;rmuR@RE4K4 z<1oOrpYUgSR?)pWcHcdzExS^wk&YgXKLBNl6IJwQ^@#3nrInk*!>al*u2)mfvOvKdl z31Ae--z@2Ue7X!~J^W@8VvHP6czTz)3u|r(F(fPMyY@frUNe_MT9>Nv4_6JOdDLB; zh0U%~t1P|YTu@4|8H~SYs8qyK7VSUJ!g3D&_0-&hQiv3orlw^0k|p{vbb+aeZL##0 zOISaRmcU}d3Q5HfrTVz^Bh2kSiV}YEdC6LKIwU%X8i4YKnkUy4-XO;!k1<3cy11VyV^+K3@Hv!Esoc{2nr!`!C zWu5EWikC3KXc#EbU_j6;`2@}dfs{Xp7bITO3`8$JlBD`~7zt{-YlwlzS4QF%>JqPw zsF*RnQ76g`aQ}oK^%*{7!Od4NsSx}07ReSLxRCSgPYdE&cyL(<59XgMNE?^}1y^xZ z2is#OOh}_47jRdEsw!zVShQv;yx-iAo3B@*1zO#9tFx# zS%-flRp;!q>Ku~{slb!+;ieJ*wEg>VUO&3fLiaA8BoJi^KUn!Wx}HaOdE=JmFxfR& zJC|)RCgfpOe|cldVuM9KoEM}$3>G?pDoq4~cnGj2p~EtuLWdNukg>U&bid~NNzAwG z(k7Q0Qcm6WqM?RsS^lxGhnkD~!+BXtt~j6)9bqgU6R6U{3sha+M~9?ThgFJfS$i{9 zh`e{JKr%9uZ36#mu}VkueHu`(i8kmy!GTWve!9XQ^sPBd3FKW6-_Ezozx#Q*ik`0k zExv!uWA&GUtuYg8FjoY(Xgm6u5e*Xi8WclpZ#JwiIscaUY1^&R2c!N|jx57hXRgo2 zTVCbX2jOk@-@0Uu82|f3!=Op_cVj)T$HG#G)e8AozBKP_5lDD=NyQwQoI1q~a1Ej{ z(a-uyX+#ESB4MY3;JcFDxr_0iu#Uc#!&4mGXd{>vIca&F9~NoE+~$68OA%MHz3=ZP zzBZ>-D@BpjIxD}AoW*KL*iEGUZn~jGMCl4UR_t?px>WJV4W%zf&02(cHO6Td+UAq< zr?t#&KbPWP%D3suh(Mdcbb4kJC<_C@(AznmM!8UZxwrQF(cPaH{vaTuaT#p(*Ii6O z-Z`nUIQU((|LKy|hy96Ge9qp9mJ1cn3!*FAP~I4jVMGyvU=bAEAcxm6DX+SCj%@<1 zD&VjbfxlIgQ(aUTc=@or+7AD_uc!ND7WSl`*7dzqjY&sEA79EOW4g!wWYz#f zOyMZDAvmi8gpGKCv2sV?g#R`i)Tv+vGpJ6JvfmKVXW^jX0J+}lSFT^j#W;8vQrf`| zb%Bv77yRUO=OS=(pSP3!fUckIZRsfGsanS~OF?ah!t70hRHEMfQ&)>EfAs91;|QBi zZ$H=5t@oif0Dj#z`0>|cNz7lO?F+iwe<{HI&q)XV-{{K!(9-|EhJgPIgTl*I!x?!H zVoOU+QZS_a%Q2;KH)OyA&8e(n!dQgft|?1A6OS!zMg z1f45w(GxdS!?v}xwO~kor1$olwpmti#YIB*9)Vjw`}}+?+0|6L$^f6~Ob+NA@o=;Q zw$A`jFnA7VelbEzB0)YZj%*Rx)`SQfIbDh@#~>U|7mx|Kl@q!O@+{Mvso&8oVra~) zr!v(Zd!WKRwCVxx&fB#bGh{vcbA5lDr;8Z@I1v#l=<|70(mPRx;KOq3Tm>YX z*G}t&z~`Nno;nY1*}E=% z1$(0t66S^7X_S)nz9!g)CRY%A*$`ezFw4!K!?$u`1(;BrO=94DTvu;(_qeq3frd$vLTc;S>~ym~09r7>0iktpfMC0D~T z(TZz-GOTCHWEf!|XdjLfM{F;p{S2N`m&H(Zu|`fHXh|1!W1Yc?n{ zpuUafUK8Qx7w@aa+IF28c#E;kGJZN7i9jHgU5mqto7i>VYxdLnx-v=t^@?a;U`Wy# zMUBDMiLv~t#;xsq4!PW&anK)X>APRBe`@k(y>ixZ?U_?;YtSi-;kX?6^7Yj3$=|mn zu(y9hJT|hCz4PCwJuvP~`0*fb581YNc(+gj9T8KPKTJyixNld5#uR02)y~~C=wvm? z+}}6l%PI_#t(=Y{dNi9iwt){TSu^HyIOD?kjAc$i3jzd)k9W8}EC2#BImsTwvGlIv zZYlDuU%o!nBWD7)KOhRn3#z0z<&ePn2MZUnE<=*zQX|1XxUQB$ajb7@Ubp>j2VIUu z;0j06D>g9OneaCYjNf0|f4dS^MgO?2Fbzrs|nQ=)e>?YB6n)-_&};FD1~QA#z;9E$7-;f&R(tmliiQJ*Jhw zVCjxx{#n7N&sZnGq=!RLcj-yE|BD7CAJ%sB%nt;=%b$S0SHWZZ@}JvZ|6{mL44vjl zR@(WsZa@qziv?S%7N!+r-k2{_5TFQRVUA&SV!$*E;<=O8Dufd&XGDJyHG zKUdC5KWimZz!(inER2;MFPG)W7wMjnsKhK(0z}D;U$#(saFJXb8QI>}6gkmf=zaIX z5VgDHdBa7!J%sV#jJ<19Y^#S=+h1P<(*yCCdK>7bI4%RW1~$$P2Fx2GHCOCq-|zfm zus?(Nj6Iv1#Yf)9KYMNjof!iAyyi3p0K8w4YUKa{gkM}d?Ns+N_1amIV*t zG7YfG0He>!r^LfuHm{BuZ_U)Q?=ga4LX^;<0iTxX_!U-M&wTn>%B(sf$Y(!Mj8W-5 zo`r=4WPL#fLO@7pck9-z=!`PVIl(ivwAbwwC;MQnMu zxg0f?VM?n}x}UnfAWNWrPgbKmiob0>yoo76>b-DJ+BmDJ5}x8@NrxV`AQgpWUi$H= zPioyy3t~9Z4Yl@oh0tt`%t6}xdA<5!4?5)Ugd#YKyw0>O+G7m=^Gv_f9gwqq{O+TZ zgtq(TCpJwUPpM$L{-}Kf5S@mY)M}qpgC%zmdvC7h9V_2D`#mwzY@5d#0!PDk@hxtgo0NZFPqoH3@xpBFH@Mji?J@+cHD)Tt^ zv|p54bW=-N7iA`)f@e-$=?>pM$lL7BrkQ>|`Ns7CuD!m;SQxvV+i3p?VspyJ6Z1A= zKg~7oW(+LaYaO_snuktwy}nN@F{^?>LVXaf_%O6#;=zYqyevFhfj?v*<0?GD(u`O=SX+R%X0 zq@xVsApGiRTNJz5qb@ZmK2ma@TKWRe9FRm;CF^H0^dT;nWC(ugm1cbfXNu$(bLVZ( zKZ`4~rZp}SGl1>TSf}&{o-5kk!6{+}8ZJi)|FqJ%pu zg+Z_djuYanq~{Nxan3;f&%zPVU$#J0)d6eu=klAxWw*`26ucn~G;p|gUn0_{S7K*n z1U-*)lw`(Sn{HlVeadGpyo(8mHM=M~>)#rkPDud3&B=bnh~N87G|GIw1ghMgE%zAj z&}8woKh3;rCGWUF%pMcDD$V_?n~KBKzt8OhMV?-?&elW1s`3`L{-sr7J6Bf{E}6OL z8E6}0u}LO^Y5EV|TAgIp&SI(IQ4=`e;jh?7zq)X^zrZdeABly@*k5Q|YgvZ7>R=U4 z!`J|@mY^EjVZ^95K;C=3#zx6mM7L&6RJZuz(+0H{@fV{k6$3ok^vjR4Y!tpyqx+^p zH=fV1zOro}dey`H!M#;3(rqmHlL=w!<%+2@SmXuP$GxNh4bnYxW3j?m%Gw~ii$AC* z=mlDHx1tV^(=DRUgRt3s^6iyK573K92INA%w7PH|l`x!J7Ua%vzNbCIufm4RRNX4M z+1}PKpiyNF{}}W^4|<6cD#zmEj8|}^R+Gv_Z$y+nDZe0~KHu)VjY1OILofSl4+t4A z#Asm1ngOiw+tVij4f@|rA~jYn@@XkmqIq&k$qv*Al_$&Jc)CMD)z*6Gy7$awIwr4V1p4LMhXXM?lw8a+ z($XnDZ&K}a5|G`h=FAH7GXYllU&wxWzA&xR`Y{RC1z@?iCF=MaD~cAzzFr7r6|*Th zv*}W1vj^(cQF%HnUu543ZgXE&{T%8HI9=$1XkHDN(-4d8>T-143Ecm3!7XxozkPJ# z1msdMUg`4n&qD+@ye-d^WOmr0+~P7yG%5-dLC%6Efn^bnzf4e8MS!Yji~YH&lO(?f zc};sY)oB@)9M293EluZeIv=yJkfA%)$)7I2+NoiS{aQRn6lAkwLp@>R+c@$Ue2olh zf5lEkQqr*>$}-#DT_Y^Z?L6?++!d?VVC>|nuD0W;eVRURM_xf8$gNMmHKqzzzPV?y zeX60RmQ!C(86DGLKu?=r+jIrrb z`h9KHq|}s4x^B{wdOu6)zNw$Fisp>r$bP|LMr!I4k2>l6q|bEyH1|%U-d$BH6kF4S zh9FBA)F96^Tj;&&49q4f2^ALXC~4)l2|Hae;|&p*?M;Se1E+G?rU_zhoieXRUQ{m- z&jAJO$6WL;k7z|^ZdLAbw(pgBbiKT~!#W$mEozT?{nBdH9thN}C#Up6!P%j2_Xc$R-wiwc9is)Rr!m>kOVx2?7wpmLO0=fm z#PMgu#;Rtbop*_@mKvvU!3EaI(s^p?JuLsBXcOA>BIeL6gxS1>RC=!vJ>zHb#gS`` zUq9qu(da{=ZB#{>#WpP>Zqcl?Kc|WTzY3+j9$$XowD(HuDss_c`-l)h)n~`%{??=3 z$Q2Q&arV{;^>MN%Ni4h19&z~_`G!#w++9=<5>a>sDyGiLI?qU-(<{omAk03DjUiyR zTUo?@eA34S=J^487p}fE>)m_a2*#2FKvc{z{rEMna`y&amEm*nH;g@h{xF3RU(@NJ zu5Ey=7?+P9iHl$a_eB%GRh|qC5OnvPy#1{qy>+AiR0RRfAQQYKb87^~vPXO>lNYU) z8Y?Ensjyaaxi1sQe7{oP=VP(;=P9U888L|JcZleQB^+;H=;3TF*L)a`C8iC2I?mA{ z-9;cWTaYo^KD|=n@TU+b*{)~ zaJb~9ApBBi`ZHIKpl3!$1*)vB59l!ZbSJCzOFrn&p=TTtL*Wk7E*WwcwjRARD?j54 zjNN*{rFlgq%L3scPdh+z+0S391IVf&r{V;Tc7<^2f;Vzq_B^#^oR-;aK*Ha`iV*ygk;3iJQC!B!Di zXM4o?C~Ubhkm6m>kXp@sr=GCeV?(%;Hhk}2fEZtw19HHQMcMVaBC?}{Bc~Z-cRV4p z(C?dfBh>1b4wpJ;AS1QK2B^`)I4Kk6@|l!n!M)GvXVxK)IM3ifK@(-BTp*CWeYYY) zBT||ig-e?1&6>)deu+V+Z0iR$KeceW+}>b7+c99aSGn~dYY0P+bLEVf!^~f0RnuRz zR$y<&cOH3aJ{z8sqwhVB)CwZAd|xXj2I2Rc`;0IC_;ISRMo)P+J2XJ7r&m&=nEL7t z-$I@mE0qEkgDT*};W+KL&}_yueGw`@+<+}6y_5=O)`b&3kc%bB0HIi?medjWft!fMjNq*L%J_b8iFL438}_@4ad1 z@yz*c{YTtjQr!8#-sPk>+`Ox|7m~~!`KLGGez6n408Yc8#K2PhO-_=$9bqA8%MQKs zPM>7ELi*WevygfIv^&!m>kso<)bAR!1%GH&$ke<&0uy?0cAudIms*XmnO*$~iqmrH zVZH}wM4Za{6Wr>r&s(Z}J-J84J-6IiF~j#ejC@p4=fQ|Z`z#d9qcw)^l4rHn6$~;%?Gb#KrAYDl5&!K-R1I4yae_13XNqn_F#8^$VPpo=mh% zwGNgfUfZmolZCe=&{F+!vL6K#-JYsdIe?ez#oIzw4jX#Qbi1{k8lAOhmh;w&(x;lx&;Wsg@$a z<0GofuBoM@S?AgjP;qJ>oo&}8cbC~7ay~6PR>M$vib35Fu7KcqP(u&xKeJ8)Li0Dk zpOGb}Xjj`$JnVpd=^gN#a~d~M_>%i@_Kk=m#mB5fw{>GP72H{wa~S7jONbY?!Y(4D z$Rp(+{SB1W8eX!1iV6<%|M;8t|E{CZ;SL{G070M{65-ziN->vHsw^o55Z(tGYr0urqANG=I8*9|epmqYMi>j)qOoc8 zLvSo>Y@czP6l|cX(VFLHPEy#Wqxu4)=bQeSYEmZw7j?xZ-wGqgtC*H@U~cr!!!kn8 znZ9UWB1H~#FLX0-hw<$((0ajBzvP})g(!_v@XxUJSc_LHPF-2Ya&jH$rZ-BpQ~Q?! zxz{r_SLoM(v_Vsa)c60OhD2$C#<5~Jx`Y93o2ZjuaPLtMZ2bGZJuhk?ZgSa$I`|hK z`1l9qCZ;a-!q`G0anki|F&$-9UOB>Gr}}nK(NLo*M;j=WYR><7a5)ir%_{7&VEXC7 z8*&V%wpE&pkwE2{Dlny&J!YFEPfQ6WiKcaHQk zc5b5+f2%Xn?0vc$*?F2W#jKaWMgGOOIrP@^-DA;|zn%EFQ_-w0d41S1Gc`rs-Q6t^ zOZ72%B|z3e=Jzeg=d?5xzXRHBl7@*Zft>ZR@DEGJnjEZhIhy)Q4`fp0>cLaj17Fzw zi^A~V1%~I7e+33Mb4^7Y08|`*Htm1g>HNs1>N@W+*;C3C`X9vvxDfAca}?pLSFi5% z>@6DxsqdM+M`O+;y;QP+yF}s+2-Cjh(yI9vWzJaJL!6~e-_ZIa4(A8xf;aZ|_BQ|H$DtsxiY+PO z9G{q2DiSf%ay5>{-b|;GjvX1%S~*$|jgwIO;yTcAa2b0QX+*$&EL4Yl1o^(XY5QAe z%?93lZw*v2Xh$@X?4z6NCt|jG-aDl()`-LG+PHIz1C{huouHqRwXfR8&v2QOe(}}6 z0N%$1p4&izEck6DA%F4~Z|(&i#n9rbR9axrG_g>0ee5`ZPhU4tDO4DSe~GRbT?9da zp{7U6V?-}&7S=suQ54}ACJ2#C)D>(Bm+!VrsDM+n~Y^UN%xB2P&O zLu$DMuiq+PkQPiTvZsK{(zh^!Q{u_(&jz1n0;OBh)-{R7*x_m~IZyo5IqFcVPBM(g zO~`WNI+Zfxx`!?dyMZuVk@+cRIb}~PN#}1>9Vrev_E$~(8zpmNbq-_wZg^|eLyQ=Z zFQuh1uhI(d9q?WC1z;C!*piO!Cc&5`1>a9;s@R6g7g?V5ZD<0g=D-^3uiz46)WpDh zVFO#gXA|M|7H0+$0$BOvDf-JgAFrQ7WLe3cspfgYCW;Zmlzi10iB*b>iZ`o?-%n<@ zEZr>IPm`Zdvt-_qh@yl(%n=;A^AUK8{)oNWxpK8FcxgVLQva#9sRJCb_s75z${!ft zia#i@K!U!p14I33cTW8v3KfecT9+?x`Yog<+x1HIBV9LjA+lprlxRkg?4#L!N0v_7 zf2yu!!TnXZx0l=9;K7}vp^=U}n1 zd(<0$Px$AZvw{d3ai{3=6RU+bx1OZ#I$Zi`=G`nPz{PksdcnnX1GadCWhP_Wo)MZX zpLJKX;NCl(A%*Mg)~b!7U^}AhxB}#-+{{a&W>Qo}dU-bUpb& zik`ZiW0=ru6;sSXFVBfShX~X>d4&Gq@LV4F>0|KSF--`;3&20)0!N}b!Dt!U59^8} z;W3Et66^aqq9fP`CPEjj(AS|qY=!RPd)cYA9p~4&!fOjE*=WzosC>S}&tS^|pb*n) zEKbO?IuB6tvuCTTuv>_#lloZWnx%L9u_`UM9#jbg2n141WZot6bMwVvlC{TXFPU@; z%O7wC-4MN&8d-Pm>UE~8d3>|MBYcO(SKjBaPGMS6;it(agmf0{i-uRGJjxVegnful zb-yZmyA)l%n%OrBr!J|Qc`*wJrgmb8U3NxS90X;p-;)VBY~@kIHT{3$7V^`S=3Jn? zLetvS`+{%NGtVDlBj#(p=_$=S6f2E_J@+z)83jA`L+?_s-M7MtWca_Ht-e{V*FXmc-KcRpQoH~D2^=J8^5rd%!~!Km32;lc z`P1bf?s{n2YZJfhT2^vx!w_%gclrsU4$niTsNIIWbi^t!yXg&@QpZ>k_+27YQ*XD+((rlxC-2Wu!0C%%8kpLL3iCq8S6VPXD12nzA+T4Y6yk|V;h z;biEzn&|x1_A2%0Z2gqZ14%Q-R~IH`1`kk1=l=c(P{z!A#lV!O9F#1-+-B>H8%nRLYwduI%T_}d!A2hi`d@*5}Ls~#i6 z{}9U|>Fuysk>tsC70r2;uIp1ud;BMU{Y#DO2&+VTwp0;BNeTVoCE+$uBfD>>w#SWTj$u1^rU%J zX}_-G&0Ys~N{X&myKTLD zU+Rakd$Xsa3q2bW_s^+=AF4y`vh!sT1a3Qm5aMW6rKP3kgAheve+g zBeq-&q`lMs$0s4|N&V!G?fjn0_YS)ftz%7m_d~gmXvo|ofO_c*@YnSd9Dr;E=Rz}2 z=`;LIKx+e!vavijN_wVPmr~vSE;hTf1CdzM#Ig~ z3evzdLxq^!ZL7dRq@AgPlDvOCPo^aFlD6}aob@$lN5sH4WS$pVtk#{sMmw{zM8di& zgL{2B9;p+*pNp?VMAa|*ptt*;5kNS*ccKVbOm)28Md9UwA$c#bU)a5=JKbNTgRuy_ z2AxpDmwDUSe#kE$f`opMrlqZIa>-)&G~x_8&=~}Lo(4i1X;B1w7))i1o`E)=AhQ(E zDLkP4_>(e-^clBp7aG%ZvZlUZH#DXVwORJpOcH+mz7!aq{$B6*gDonFmihyoO#th* zO;gktl(%)wKz^eVNGWt|x+}2W=W?M0Sbn6DnrfE;f6GRb2;P@FkWHmD`y`}3C94BB z6`NYr+MRT-!+$k&dCjXBkf|(O6|2Rt!m2F#o!O0tJ}aV&~rKPgzGHoU*XCMuuZ}K^Vlq!ajl- zgYUWj;IPAl@jmOs7FxKun#YA%GN!T;Jvmr+m)gjmeI)WyF@?PcoaG?mSUT3|v-wm6 zfHqFO%jEU4O|AEd53Z1OJY#%3g5sA?0m)--R#iHG7)(%l&>y^oWtppz60Ax%7#Q~= ztkKtOLK96=%0lsJd#RJOC|TngE00nJL2oQUx_rYzzVe50eWSzP3;%t!4Xv_a@v#r$ zDX5nn0i(DyJOiU=3;E8?#xOfOJDDZmJ8QnM^_LmOm56wYs-sYcKS%e4>S*I1=v@yn zU&T>$e@Q-Z=QV2lZV=129VJqnqlKi*d%o2h_2_%D@auKlAr9Ow%P@%h4vv9l4^jDp zXAAMW`C;p^eO<2Wb1pHVpq^-={E`y%Pm6b-Ac6PyJ|8_i%+A((h^ev|8C(AV{NHm( zsr(9ww7|br=SvNWC`xFh7|mknn)95g z482e&*Ke%dKgveBuS_zC$e2F6fKZaGtaz-*0ORf<-QH(+^Bj-t;XAIu3J&LBTNyU? zfs zE$4bI^H$s-d~l43Rz2d|XAomXgy`&a?DW{BtJHb#7}G5HT(ouXe|$y6InzG3>FU8% zKw!-N_iG}jmX|jZ#C=<~@`O(-TKU<0_-B7;YI|?sl0O=B2{?L*oMGYhVbKN-`=!3f z{*syQ!n#4Ha{ju!^Q!)7_zeEHA**f!1ib<$r)^Dxm^6S4;xa0@vl_#beufP@b!08l z*HwKk!2`rQPfklwg`vfW1w72U|8M2)ohnwZt*cb>avqV0M91vNqs2)b{nQ zNK{P03*nzJz2C_+C|g>PNoaZWtm#zr&i4^L2ri#7>xh;K5@tQ4uTnN@cEkaGhm7#% zv+aoq4$;`6rr=1EVOJNrt%`9=j~B!Sl`Medn7!HKHrg!W1og9SDB9C&++TS%ZNH%- z%9M&k!hMf=aE^7@9XMv&s6Q5T%izHTuq+Yl-@P~HyWZd!BgLY>xzYreJ#~%RT}d%o zb|&2~5dbYD&rZM@gU%xx^l$>ZiCHQINu~2D=bj9MO89eOwhtPM_V13re+>Yy6)-nn z9M+$+VWT3hr|L6Gmpkcf)5c%^?-~#L2%B}G%oze~IvJRc64_5o6SzPJB3bZ<_G z|2f;F>5{zV`mo)?bx425+av8cQKJHcOTzyPxW=?Wetn_Z9;c0dXT2 zdcXv`_3lf__0;*G@KJZzKdq(UULzO8k8r6C_gXqTf$)R$r#kJ$&Y>Y+ci)d;n~s)D z9?;|2~^Q9Q$Mf7-HrjQgF5!19TtzYo-v zU5A@oewG)~yK_&nhYQtRvnW^h9KcF)V+HfbNdSMqV{DFTPZYuJpibL&|BbR{pj(ln zJqC6&+TPWEDWavSKZ>~99nc-j510Q-nETa#aZ33C!CG;eX@oN_4AzCXu*r0zdXpj- z>6RI-ho1Qasd-!u<)6kWZ!cde5LvlF3#ry89ZcB6zBI6jy?#bOW!$ibYeW=c7P$7E zmk4w4s!@~wO!_g<-U+z^S0$;$#9-7ORU26?K20}Fo2yww`w>wG&h}E)&w5tpCJ#}B z%sXoOL_**rGd%1{M{iOkQZq+kelVTtV^nu@K*a1{VTp6)kIIaF_b8U5PnW*8t^cm8 z*W|?>neC^(Yv73V6jV?x(uf80m7ubTW0LU&ka57;R&eq_x1RvWtnWy(O%K}-Md#uY z3p!evEraXOacb3S-n-zBj2zeq)Yg5enE)}WwM&lRXr&60z4AdceX~SzwyGq7qpKyp zu`lZKAGpWw?I5(<%LiX`-r4xNj?weVn+NNE)1<7)M>Db?Er<DK(n&lK@U;Oae01>aPG}x6*%Anjv2owh8m8A3sJFW%!-3NhvT0X z(*dOa5CyFVJ^wby-Yw&zg-V&*rnU9`1k_;P{4t9Vq-vr6#H*jIhG-==w6f<_S`NZ> zc`xIvn%NiHo`qZy(0_GpvTPw5wBR1K_6!in^e-)#ep7r>Y_83J!Epm<9u3)M41&YY z|8-0BL&B&sB}>D5<l)5A?Po&1E=Q6gQJfafKJ-%axhTYvU*0;?*rcB#IVjNm^x`UTf|HD}yk zQN<2@OBGrQK45(Nzre7J9;!-m!X6>8eRDC=wsg7UE|%W9Y)}JXE`<)%iJCM!-T1n5 zQEjQh{t1Q_SM&p(e(VdMz7(X)i-*k{_pY>;Qvv(b@=V5&rP!o)EO5{OwDI{!?&{_ zE)Rd%bWm2!>Q%Q9g0oJq*oPf)8l~`7#`bWzy{_i&SG#WCbv(|xpi&+eZc(YEhVA=X zHW{!|9qW;ma5j1$u4?t{M-9J#BYTsVCJ*y7QSVO5Ve|JY-|;^*ssWTz+h|VE>ng6M zO^2hNLeKSLaZ!qTlLc)z+$qbB zhks+kIQ9e{xdKPEGeYln66GmzKP`JRlr?UX9xl34k(qIqyB^f1pp$&?^PlmAbadQ; z>lS9|axS)RuEIlya2{cE!WRuigHQ3mC@UvMS6ejt7qny4bX)WvA2Pzy(Hj%f!y2Jw z)4a8)7sd58HE+fZC*E<*s5|qINV#|7$ufnqk`rl%`vb(*sU+DeRN?OAy>Qk@M`9;4 z_Qo!wnHNt1W8T}tcf&V#Vq<$xZ`gn5$UeUt$doJIJ69jge=&rI1W9&kuk?RYj(Yu| zT?YBM@=%)|ll%_`s(A3!jFDCdBvcPxX>RT~>*g zcz6*&(#w)2f4`?&9U~)(%*;%O(GWuX61j|TptAJ`;Pir(kB2a1P@iXn>nTy{--C|_Ng zF-9=WIh3Dnv_QQgq)}n2nO&ZETlq?bDI{7q;*ZD6x9xe;^^)y*8)^-4PtfYu-&CD( zt41lRg|N`J%sR4Xj4fPft1B^nx9h1~Cvgm5hO?&B1 z4HgY>-S=PrPKMLV^Exk}Yql?*YV5g{l7n)d$mQ(8ynUQ$8YP*srG=FPj&?7y%}zxcLyw^22K6MBwg8gF0Dbh+Y>2G)RTxD3(9K?Xl%XoH~5 zDirJS`3Ch)Bi2Gc)tQ<+4y>0^Mjh;HSgqN2d?a1>^MnfY`KfW8Em zQhyG_UG2+JUN13fK0238%E*YWsNk%wS5Z))Ha5;Knw;qz8hVLA7brp9!BXBLB?fzR zk2d$&O4f-0%gcf2y@UdV0);&f4NcJDY-Ja#fti_E|Hw#fH(Thr>X(EB2~;ysf~!YI zNMX2vX2kE)ze=>-{sCGJddLOLdacNPsc=ze)q~2W&jEFAIz33&kBa#8kEju8a;AwExls()o0_RR*V1Zfy15TELzifxQ(D!kmoe*0^}M zQ7eETwEK%Vpz-^6cnA(TdCd8_8x9VJ4|8t;21H(RnSwF--R9NyP^sU z!D4#U_(5jGmT~vH8BbZiY{|nfG{(Ex_!*$PTOk8`+qF)8eE_+0op-IdlFC@DM;b zQw}5m+tfI8HRH7#oM_Ktee!}ZN9lLE$mvCikV=6!y`p5M|9PtZ2)OqODy~0J|CK}`INqMe9LNEcx23T8VxzC1afHW=EB(kp$KEk=4XoY}^VuET-f z79=8iQj*UqxBWrzut7U0A&72xS=@3J_4y0*ct?WIO2RNR?jjk16%zq$!x_Bo1WI(? z41t^RD@stE4;>}C~RgU=PS`_=vw5Vj(JHK!sD+lqCbMAVM` zOoTeSBqK$`T*9noti5d7T8dAwX)%_q8QoOQ08U+nSSJb5=J0%-__F?cQL@SUbQ45z z{{t?|r|ei`(WdVb!aZ;h-7tvf^|~qM^CkKn3_8r@vuAer;|L`keikfkL4T z*O`L`zo*POD2Iu7c%M=E#e@6$qz3EfR}xW~fDyV^yCHd4CCLKWn@6AqaD2-i85#Lu>Le%JaT>A9KE4^sXUWXkbe;Z(6G1OkcXn0OX>J1JM{9#Y z%fI5M-=s*`6;~(($;qY=FE1Y{R>J(UvQhSnps38uwH=V;>3=p^7=?b^SKL+%2R9DD zv*4nl&>U9UmK?O&{2x3EzJLF`vVuR-)1@LQjr#cbNaN;KcPk=-IxCIZ)7Q691K8i! zhojc~gXKwwEBN_|Y>(xvFhh@Ir%&cQOJC&hi6+hwXGMK@c*l9CX#?qK&ftTCfX`e( zqY*@;S!iaDT*dTk$pd|jpp7K}Z9*Zw)GPCHXK7b!HWR;;afw+s_;`a+4YW$=ABqqR z@}Nv3bcN9}BuhDe6@SlbK=pQp%PUGYm0&Ge54R0ssz#r@@NHp5gH>wHq%R@si3-vY z!+07XjU3l;kN%0Yd+3E_msk7k=%fBLN@!{-vD;&ZXU35(504ZmTM~fVF3LzIwU&p6 zT)cwf8Yd6?;LHG>LB>Y*b{*_D0i&fkcF%I-*1;l8X0Sep*qo04sWfDD=9eb3?w6pN zuLT8$>jl}SfX-YF{T8CWGl zAhr6K{GYJBz}5?WL||(_kua`zuSWgYm}n5UwzfP4`KQfCGGn3%*=R3z#^k|%!J-hd zoRTG{qEg}3d3_EuAPcUQ8rFu5kB{?3O4vWf6LWojs{|iwcszX?th0V8_Oe|4L1xj1T4b*coR}@Z1exuNu5U z*xzIB8e-vthtxpF`}GUtYx?MoL*}EW+-)v`gS5x8VxNzs;vW{8FCdr4A`no=bYHmw z2#}&^&3=(a?DOjI+++Uq$^tTRheuMmCFeJE;=ZV93^$TSKj0zYrNPtU={NSoirMP@ zeI(p2h@hg{M6s^nn|@D2us?$K!a(lCK$v5*>P`c9pY2bAn#OMr$0Xo5Rk~G{??prS z)veOFCSS`RjzHMir_D=OMqd3)F&OajPj7i;e`Cj~lG5^-PQ0$?H>wGu z7&m@3tsjlJZ@&|7s#4{e3?GM>{Yk~rrm~|==M)p#IAzA+w#|+CwISJbymypr|J=8J z4tH0G#IX_=hg6>^8RR5#XjRlTZN$~Z6EvY6(ZJYZhIta#ri0>UwRl*id*6iqEUnbH zksP}u6N8;lzwfPAR8|I03vP$kr`R>eXJiwad?Ge8@Dt!D5`hilfa9X;GYy`lb++8f z9NFQ$sHLIFz#ips`7cNE9-|ZU>zw=XlWFrxNa^Ik>K<5i_8$Q|Hvns7rSqdOC-UM^xZ zwc6tJ`1U5bql(n@u5SaK2nch3tnIt0AhvHv8yXs@{h;~~i9_b0ozP8lTQ=C<-d@7c zR_VG4dx`;@*wNYw{?P*RQawB9DS83kz6clyL8_<>3=A!>69T>m?w-)A>VD_;rzq}1 z;e;H~?sia6fqnjB@+-f;?Kz=;+e>t-67KGCc(8pch2@zK|JeCXiYgdLkdsF-OV!?3 zLYvUc48QVvB&bjqQKb@<(t_yw510WXITRBu96;!(8>T?939dGnfU$YS7yqRixJ|B}4RoPNUMexVr~e6{Dfa!d-g!czHD# zP=s&^dmfrT8zFEOP~$}ctFK(wRy0bcinKqhu8pEeR;E7jItf6)r1lfoAz^ghNW9p6 zQ4mL%nW}*SdXPk5)Sz9%yR5r8xXf4VppN~!_wkWyPPE9{3v|R$yEq|q-5W#gkPhXt zcK4kN>!Y#A^4nXlFX`!aYL8(Wdal50yvQE+Dt#8n(Uv$H+X!I3a((H{7I$7=I<>UZ zHN8?J(;b$7paMc)@fh z;fq|BWXuIRqF&M+a4ZI~T}ai{0df4{`)gVYxBm=)n+<-;xyN6+P+9$8k3}0+4oAA2 zJ)(GB?4!Ing_39~MUh{vyIFs>`K#!Pzg$2dzf^!E-~f)l+EI^HLRu)y{7=Z)Ec6bm z#*rxM&z}WUryawV+_Q^i42=PG4Uc1rSfoid3hzWD4A=KL;gwr z`X@yTB%WHqg(M)W#MohV-8X@r2v`hTDt{dOBVHy`CCo=RPrRm9!I}ZVLn-CC zU<}gWwuMHolKnoNMMbyPj-YEw3>g_&pH&KTM=@F9RX=%RWP~*C>E&fjzcxs6mE3c% zvO4g>z}UYu;1QBgWhUx<{!3Dz2B5;T0Y(+Tnyr=_3aw5(K8A#S9(QRQ2ZzG0Q1#is3E4{; zh!-y2Q?JiI%1orfM6v|53mJv=Tt)~A*sm zO{b-HL5f0i^nI7s^UqR}Ia%VTy0n%XrFstZ2Jyp_kD@8-$SJE{Rml4sE{efoX2XVr zAP`9j`M4X=UnGW#iqSpIX26!-T+M`M^PZte2#kLali!7ksf{;y0c+&@mqG%9imC=B zLGPJEwN1jWj}}0u6|2?vrdN@pbu+BW+i6h%5gB>?a&NM~-;_ttt&tp5=tX5^ z+w}yIGJe)mE?F6X!A84?oxQ#5)xMUDj7)Az3;DKnCn1}@%%+QEYvQo6 z7T2OFJMfCtWS1AOD$7-2*g-(xlY^YBEDaqU!oa}5d(iBjUANuX>hrN``+fVyxVm)| z95u-7S2+pQgPs2)=~ne~Gh7~4M&K^0XBqX0b=9q7vjJw{&lMipc6YnbPNF<1a5Xt3 z(9zFTUCua}t&EP=#p!L}#_#3xK?U9~^a(>01!HSvBfAtjGovwHdBAe|F*&a*MAq}l zIi~rX^hFeTT!u-h6bK^lm-)xZ_c|d2KA0Z}nlk#0mWO}=AVXLBSU_)g_vun5B*R;g zyj$54Xy;8Xt#y1C0(#o6Dk1;6L|>PHVV><%{@NQigbDFf%)2>hYtd3W(>Y^!NMV3Y zyM1AKW6Ba=04))uCb^OLIL@s!?q-Y&^!10MPD7hkZ1-VsH)CpG)Vx+zxqzK*+7J{J z29^W8u7>?lfk0B?3IsNVHk((q=#ilczJPS8w!!5q+UO?~P269X#xDZj{R}&+YUv+w zfDzhA9PIDAXt2wlEaQUGcYV6|xZIsWSX(o4-H>Cy^jXL@b5MvaAVeo(mvM4p$D$O8 zuy40nkLGA=I9UbPgTBl5zt+PiBBBF(h@;iAJ+d6L5mX)b*GK380FVp1Ar1j49PJ$6 zNO-JqK$X9f?TZC2AJuL3@u>Dp`tqf}#rvYdiQ)mDsL>FMgM$OI3KJ64%N{N-E#10l z1|wLXo8#Ew;rHOMNOhEEPwASRtnRdE9~>GQ!4nA!39r8RWo>Ou%ViWhW?_;CExk0+ z)}A(p3IZe~B)1p$RH>X$z-oPms^j5zNlEibx(*}$?owX>Z(>*t)itntAw|n^jZbQ0 zIM<3Ce*>VsizTE2lEd1nDQ?~*^saVSNNr#+2#5*sB8dYRMybj@-<+Ln?$e7B(jx!HEYz(51!%wYB4aC52VYlNfB zsPhZ6x+tVoVfuaIGa|80ZL0ssnt5*&{>gWlLu%TjA^4MtZ!A$x811WzO|j?T3=H~l zp5}cLl+;X(4dM@LFU*t+Uo-d#G=mOEr~AO~j(!a^Z`|&?&B0f0cG-}Q>9%k79s(wU z5HfB8h^jaPaNrSgMW*y5z6uqbE&S30H`_7x4z42j7=vn}BXW$_!e{jissi`alz!CZ zU{@6=be&x`{qMZw^{Dc1#;JdQzObK8_nN~MkK3y1>4gp!zdKy1r+QW$KpYf>LfBJA zPft*jIeFo6~Yj zS{k<%8i|M(XWP@YL3Q&gI{I9>47=~}3k>BzQVT|QrB<8aA1@A3ZNtned_Kagb3TkI z%~=$G8=IVbX;*vSW;33CKGu_(H8NUQtX(oP*rpDPeYgQ(u?D~b+5$ys@%Ots^!*SC zzYK`AJw8}jZBct1Vs31unDq9bx9ji!alq&)Oj2RoV1CT*?HZ@l)tpJZH^s3R-jB z#IBJ6v_JxJ>-W*JPxWPhG@lJbBijN%-CD-aH!P91WSGdMHwd`Kx!*|gU7zd(T-G&= zH+w_Cf||7j-w5*9P-m8$GLdQ#qmg#QsRH`JiUVITNZ+6a1OyNZd$J~_q{u%$Jtj5@ z6Ho=*<}FRMgGClCjWf8iFerp--qPGG`<`%tNj9&Inm)Sjy3e4WA4`;KZ!9>s^QJv* zQinW$v7A@2Rzgb7%p4}31_1h3uW)o`eB*h47Z<|^A{!kRblYfY5v=f@tgpjsDY0E{ zS)E>BuQF@`ex|_t6`$V&=@XzwX`ZUIvCYYAX!GvzYf1{J#Jc9@(r!!)is4<#*}F66 zrT5!Cp2#lF`lxu^cSg6wb7&J$?ZqBZcgAx1z>F9*eSI|b!r&YLfQX2Q;1Cgo2cux? z@AsMuNKSiLlU^+LgR78!2x8qZMf!(!I=AEHwk>N+C;ws_cr6*YWY583Wt65Uuc44b zgtvC^`$J7#&B-C=Fc>%}c-Ky>#nZ8sYk${YX&qp)_RE^<`$>IoJEA> zsY4NC4<<;p5}yHl&u` zf=aM|Y^*O!_?id^l5})Am}UcUJJd*?f~4Mkrcfywd^9BMk+f)#t_o*0s2eWxz&UBT zz)It_VaG?4O>+04A5B#T4R{Dh0MKw2#m-$f4)1^-9k^a|NKI8WP$`2?67(;P+&M}P z4-WyqoZC&rV&%fFBDH)R5|S6S`mtMJJ^Ic+{1u)@`eKTH_lMrB#*1ESZl0cedZ4$7 zhK`>2ts?eE{ed%>LB1mkbS-M8QOZ@GP+vKw!7 zw@EsZ2B!n8mr-poG`^hb(nl18aKRTK1QrQJ`-_JpzGI`Vj@RgW!@lfyp#(BWxV}@t z?wW&5+zno-h_YDnR{r%I9iDw+DUUDes6@tT^Glx|uATobjZTSf6L(v3prN1t-3gU3 z6iSy$$NSi7!zyp8%GsupEyeolj2FdYe&-ea2VwA{(}hJF(xp)&?^u`Dc+wI&fN5KDnG*i{^vw30#CVY_}3@?W=Qs$q8z7jQZtsU{kMky&Gnc7>NQNMzu3OiG} zCcmo$Q#+xiL>$KNzfMivdMybx=LCWtp1N)VHY`x01)TP=^T1BlCk0oUg*}VW4k|^3 zOs*_QAYh7Q_dtH`i7{2dVsSP(bp?PQs2h=OZgeUt~4%u1#eyN z8yp%))9%IH4Tin>&a}7!NDMlhhex$O3VR&Ifnu-pUoqg@wpibL(xJx zTV$@|8(q0{AO$Mo8~ludX+bpK`}%i*>WugRn2C_5$~bL)RlUjt*7SJ(f^VM-|Mfoy zXrU9|RpH(}{|27=pjHI=`9FtwHH@0i&HvLtAD>y`f7`O55#;{&HeU%t(NzC?$9K_E zNR0n;bF`nbdH>h#f$tIe!jS)7HP{vO=CHD>_drw7Cd|OD?+2u|FZf7WN-DyTz1|1# zov-RUQyuQhc2xP#6aBne3$dAIlO=#CJq?irx{ux8u;PBd@#qW(t;sJ<_+OfT(D@Z# zym&$LWwQAeR$6J+P`-J|UUD?M;l;RZQC?T5$_RiDdu~dN>3irh&4yI><2MyDHHrj# zpa_H?vbfl4KU4AB04-^5yq8lCp;-M_p8Bs+JjcvkkO{`c!;=EpN4tSz%)h`5lN9)r z(Ymu8b#s;fqE(K)7~^{W_c^yZSL+vE-%p~5Qx(hf0C)Ww()KehmXf!loc zNHjB=GwnvRQP)I(m{r}#1GtA;e{5xKi9UT&-fx%yBoHK*O6$6g45k5cOYSr_nz^k8 z#u2)tfm{j^%s|KgQy__9qMoQ7IZgBW?_-YPE0bQnA;pXXuJ*WiAjE?Pk76a%_5)93)8)qubmp+)9FS6Iwi1zq^T=ikaMb^cX-26BE zcP!QBJy8#3(i#WQGAI+{ zOS@~4wMe?q?A+)Cy~AzImeEp>>?;b@25aq!j|sCBV36=UGpMFPedFaEUArK-BXcxa z>HiD$r>cG;0gHA5Xw7+X{0gR@jGp-Wz~to!x^{aap}S- z$-=3i-8T|hgpi7j@Q=|k>G-)}wMlg!4OpyMZeg%Tx1VzlBu@6WUFw^%PBFE$zwsB= zfcY|)6T9%c)AMs$V`F1rq3#HGBKQ(@&usb(Y3LH7d$xB!jN%!+7JgOYh0A=&b>dU= z$_Z`jB#_RRD&|8@O*#?jQ4;yh(>!tJ>Sp&&aA3a02c^Uj3Ilhp)aI<8Ux~IrYXfQ0 zM~$GY7aq(jFO|$v#)SX;r!4fD>6`@Y*sAR7F^bHlC-AfA+pOwJ3+kRs28u!vH50?% zz8Ttbll!Ha?#JOWEERr>amW3w=EbRN#1Tr+v9Eb#bv#d|f94v^)SElKRBkuU7boY8 z$J;9*8k>Ha04!{2T|xH}xlJ)WxcQEMP1|VMf$*Pn@!H05TVFt$F4~r4k6J5$T@WGs z5k3d=F!K6s$+*}DUNN%Sm#*Q;0uw*q3glf-n=*e2-WwuSqD~j8ys8WOq zA%Y|_#HrvZwI$_MLNfSmidt94SPm(l6YYlix+pFB_U$ zSVTT*b=+(i7qPR;3h~5+D5cJs_ucLQD|A`e{uwv?H&b5cXWulN?@rnnzTIB?5Y7q{ zq=_2Kh7LBqT>yhlaKBzoy1|52PqCKzo-Y%>KJfL_d{k$ht1=b)vr{4gV0o`?mu^?* z5-{6rkJ;P2?RGYxKDc6SI*EMU9$(D{CR0fEHr(X>3u~%7bt|IS@V{XG(nd z@TaRQF)M3{xh-}B)u0ycS&VycODbu-Y2b9vtYbx$S6ykT!j-9Q##w#C9Mo9D*1tTg z=!OUtvr(QbD0;ms1(sc*vokM_7HZ*86HHV?Qs{)&hc3y%Eh|yOaC6_~%d2K!$(!eR z;T31{jLbW}L9i2u=yu^$)!=}fo*DHntagXn|aHnnj{QyHM62uj~>&!8+Ol*q#SkhV(2b zO6Zk6O@A}63ZAH2D11R0xp5D_Szl>hS93(>a&rE&K7FtoEp*<0M@ESGW4tnPTFCVM@icJ z6=_*nvGpqf%{?goBvE6hr!G){9etz~1Kg&4PG4&@4Oc}BTC@{QC-?nF74p^;DPsML z-cI`-TdE1%}V+H+?IP3*Udj$Tljm z*Q-0>VLhogvc*r?BNWeyuem^s7&Z#i`@(^-Y<+PQi?(R9!Ox^(mi?Q=39kWG}WK#FVfzJ;h9XrkIocQ;lFOz z_e8|{Ua8wKOID)f@Iv5>l`k{1_27bVZnbHnR1&mlB0`i9Y7#E01YoGNZi@IOfO>YR z<}JL4m6y%m*NDh9k^%QGB;axvY&Dl`#dvJ67mJ71rYq^rqlf;UY+;XMcVt_=JY}3; z7?EEzqxo$04${6lbhG^G&7EsCiy{Y(N@=4oI zZnW+$T9s5VgQ>M48(`g=A%xrf^rL`k=gDZHf4a$a2xOsyM1JBtV^?i{CrV$Q`Z&C{ zu`3P==1E_KP6)AP;VYhhm2#LrC&~1aI%zJ5@ui}Nkw(0Jayap~#nAZN#mRF0Dfp$& z_CJ2NoiG;p3Rw(x!HbRZT9HjU441Wtx95#3V{I%ZaZjMmF`mpIxF!Il; ze>^l#Wo0g6?-~(u3Vm(^;RL0OICS}JdCLX7x-Qy*bs|cU=;_JIrcoY#~m?x z_!-1Nhktlh8sg@8f4LW2p+zU6#v7sbD3zel+U7bgPpAq9jmtVPRJ3TwAd>4|Q{%z3CMqUqlRY`IBSH3?&S_9n zWM&O*{sUDoD<8>GP5fFTfTg2aHU$R}>7mtR0k_5@`A|XP|R>}_B-4+7pK{%eT|^3M z17WkDCR1xZSqzLQOZ<%-hXe}mG2lFuS=hB1`(LYl1W0C))8mpPArXb$c@@ysDjJFA zjle;z5Vuk+kU9OMwH+5t#4*qI4gBOzOiV-s+0@4ptyBEyzh(DaUolD0l==o3Gr362 zA&3&;SgtN@l`qTJ)iN7W&8nT*lX%Ujn->k2m}ZRbM}9q>LQW4VjZkYUHhn{i%}9Ca0yQ zJc~Y6O&u0BhO>%(2&#u>CNXfuR9oh;*a>Y3PwWT+xTU}=)+p| z;Tmug>3k+t+sw0L`*O4UbT+o*cJ=9G!2nZXu&)mTa~8D$;Q$Me--na}k z7?vn*+YXA)d<~Ph5cGay6*0FGVjr7$TKZZn=z-@u8yCUXGeIY1#D}{F1Z^nws@$4; z{z;d%qeNZMt%qhDnHGP#>| z(uW65&~Tz0ke-ME@#v(Bz8s7j7@bA^8n8X}akZDp7**)=Z}+}HvO<>&J0VJv<`GNQ zy}p}Ht!=EO5t!}~1K1ZJvi13yexNdY)Yb>HAVF&4vE>b#_d6O6tQnA+ke|Qlp*wmo z2YYCD$r}QxSa%H^XpV z*fS<2gR!sy=Ke_-4vTqK{45ji(wDGUOUlYRa#1rcCd6%+VRLqd^+G|ff4op72blv) z`fRUAAO?wD$JvgV(qN;ADm30;0R0XH+hqv`b{8CV(WcEu-zWP_k;JgvTxwR(4S0d- z5Ij7Tau)B*LNkdE7+99Sg&Q1^pCjLPvf&u^mnmvoAn98%bj&YT=_1wKDBJ0^(-ag^ z@+*0ZYdiY*GqxvJli788rcjb!oB^YhAP3Zza29X_s(dW@>dn1<2_4+2`)}gZm z5~$IBkb4y`cU+7Lx!FH&p`-n)y$ughwVUnhY;Cco^W;d4%o2xn#Lqgvg)Ii+D?X8( zx9@^I0wlv6YOl`_B*2^r39{Y0BlT8u6U=Xit>?2bcr<9v>RCfC@4(gl((D=}&K;)t(}SX)c(wgNAp ztxoQ;{%k*)zJ3~`x!=YHh1$o#@0Ih?PN~QFPrD$OOI;(zt9o$`OZ%$7rTNqQ@_u~U z%|06JHdN%M)YlYOf{?(}GmW!;9`scm=*u!&6z=j9ED5znyjD-4KMPN+-t5F&8-?b8 zc%&2~=iclRV4X4SpNbSGC+}WvA~vv;^Li`ihsQX1lG(4)!+^6PG)u$ zJfsO|%`X$j>S~gZKATdHj{sAG3c7#h;doe*_x3s3eHA4NZ?)GD#I@U9D8pivpif%s zjWuM%m&KfB!S7*YVG0coFO&10Tw0vOPTB2 zzcvPpee3j%?Xhu&WkR+P?cDzl%HA?8s;F-t9YR155C!QF14L3mQc6-pKtQ^syG3H7 zNJt|B(g@Ps%?L=RNY_Z`&^^q|Sv=4C{?CVVKAf|!%fZ>R*PhucetF-&1)`TcB)m8O zbb2tHgU)1;uv}F0qL@nBX|jLK!liwf-_A3bi6&9#Kg%b*#D3Tz1jq{lG2~5b^@DmD z&qE2K?I(3oLESe&Pqod_xc(=qTBNflg5%##s}&P(abd9obS*@T6~a*qUZWp~*2VLD zu?y5NH>2{x#AE)!)0&=UA{a=YGLA^N!eAglLIPX=>-h}q669E=$)|?J&R|HdZ;gC` z6|t`hc^%wu@7T!O8oIgU^-%A_d{6v|V+k7W%D^?(smy0`+4p;{{WiUz!?IbTu*5h-~N>t_I!7q{&jkbG$57_HUg; z&!2wgufFs=#ll}hw&~dM6Y!t^{`G7%#p(SrfN)6obtW4KBDT)_KP-cyfB8SVOla9Z zK+M5~C!fX>ZqxyMH?|mwV6Z}AebLG7?IV~w*H!TrbVymqe=#4IiowRPBwCWP zS9igmO=w&OEqt71Sjx_QmLdv%@D?)P-Pha6Vc#-tKY+ zc?*^&UhOzj$0o0$JYvOfr<%0s0z1!*`uR|vG*Z;%qK!(XVM;>VmG^<4CI}eU)^HIA zni_%oBJ|iBPbAh5l(VFGNw-k6W8ccUK3EX-_-?;1ln6`8svd%DQG(a(u~bxr~Oxx&z ze6od46C(TEKa`}4oQ!_DhZ;uw1QL0&4PwgGpp);e5_NshTfTaiD8WcekYQ}aW~49V z=S1Tl3dV6=_^!=sJ8&CTfKj0lbYOV%tOzpZu>vHak3v0X5LVzt%d`6VADC>6f2B%$ z+@N@|-|fXp=Hq?*&*U`?deK`pH;9<~nYRK)sFY?9{8eacl!P79u?9A#5f4iF?rNjB z|4c~djnd*4?dMEc^&RAW{GTvBvnZB4L+^f z((j#b8~56LVE=-0Dm3Cw4)Y(%=3S)%tU=;5srL<)KRx)=$<(vgjaDtI;3v^lTUgC% zbz6$RxbEpAS^*nMK&H6zNnzrP#=SE)a(r%(J_D5&>DBP;{y$W(=9#J7hUjXg-Ml$A+eI_8p-T(^#r z!1f2m-n_|cC;V$8%X?vAx9*xT}OeRr`4h0WKc~AD2x+Hk3pHhZ4FMNJDq5jo%Va>$EH(dx9 z_IwjjX^F0~uspp;j%0?n%qNe79Cyb5P*9K>Fr8NIJ`hSGRq~VL>lN+~Z&XDKUB62~a`#Ty-cpNw zpA839Ty^i}W>vaM;V**w>{CF1nwlXF+ZU3Cqs@rkw&ZpYb{)z2MGPPW`5LTjY`Hziw@rMulS8Ol zKz=f&u@d0mbr%`kIIjD0q=;u za*f*cS5!Fv^o?-Uq1=h3%B8g*`JBaI)_5AvlmC*_sdssR0~-i&1pyZ+MaAm}hlgsw z@n>dcwvtP+ElYjDH%L}j<676(`Q6V(wVi5EeE7zB5`?oIkz1ZjPUv}i(LsjPj)rm9 zS6mM^jmf#{8#oTR8cL6!{6D?(JMqi%FAUzga=&jV<6BMS^@XpfD~qpRV5U zK8jVbFCb^<=$4<_-;_G3HBn5Dcmn0s9ltoMz@;o^E!($4gMKQ z+Ne+#lj^gK$!_&Gi5VD!+7wqe-Pn;l3Mr`+|8@y~#L~!i5Z}xUcv~E#%_?PW!sLhE zhj=5gPPkce5v;&r2U+LT9<#xL0a<;028`=6+za2$>vum zf9qf*ucl>(y2Jq`Q0ps#xsbNODadkiw;^p`=Scln52O}E;lf%{TN~WO`C&;EYiG%d z>Vix!Zq(d^%`~p~SiztGU+1U!r}?~(pOw7r-}_z^SOd4VLLmZbuArc&C+ds7>5Pg-UnE$D474E1D_B2 zk^-;?gg>n@! zFCpZb`q#Y4HAJ5RYG_9GIBPucb&YF%PO=q{hi${^pS@bzGGPqy6M}E}yozINd zqMs(5Q8XUf-71B5&Nq95+_jU_D3ws=!G~lI==!{LgU$@j`LlCC^|`0sfwj2^(i)oT z`1Olw+jH!%ZFcm_?6YT5y>Q2!fv)JxOx7S~zQU_O`Gf7Pr#@$Tp6 z%r!6mS3wsc9RcN`L~SwFeQST(_6ryXUH}95A}`(Uv@^>?^VH%788dqPO)PY(1~4qm zhEadaI*sR>yxsw*13<{i+1PN%MbHKQ`)3Tun^#>oSz%5BbDC24eCm6Po0}V41K_xl z2&wjY92U2)^+B-cXDhW#`LX@gzF>%YU`Nz`ViiRt4RlwK+x&c~lR)*RGcoWp<{_*v zKw12Nu$b1itx*jrx#K_zrMk_>%QOx>yDNYdP_U+r{mP1T> zb9yU?G(NGSE(Alw*gH!jp+F~pu8()|am#O4*$5oD>q0H~4~G%t&0_d<_J-HP73)OU zcKSS)IwQcM=jjZmZAZL^1@Lqd8viUQ{_c8+1IyW_8{}>gq&WRW<+*<(_voi+r&D3K zo@2B5pL*WyPL2Hgs`-@1YvXaJ)`QCkoP~gooJwNJK{e3Qe-vw34ZH(aLq~@cws%M( zX>Sj4IUojKXqpR)iOp>yv~+9^#DVcdOiVmnVjyZaQ$q^k3_-7R1A>DIOAMPsD=MA{ ziHg3sf9ozM=Z#?U%I6V(b5*)>)BQrz@CaTkE`BnMBGtiTnFNyO`mgHpZMI;kJEL8S zs~q{7Zxc=#`RxYco_0}>j*hZy&0cT9Tx>y2XUi2**REX~w&G`JXTRb^a~m|^$0&RT z` z`qabyiBHP`sMl_`uDtaiEcrTubcN`xg{)}*vtRD@$_u_LYn6$V>T?mNAr8E3U3(XW z$tc4rf_8`gg<}G(XLT_$g2Ln>`E@UlEW}o*Kva&?p*r{va=2ta{n+RqsO z%+1Zx)gk?%3j63!rF~-apvvYG^`?M4k9}5aNtg3Z^_5dux<+U}yn7I4o$t?(dObuO}?ne2dPNp`B_=mQq zDnnjow{3e$w5h8toL%=16JiF#(9!c?DP{~QYxjJQi$@yC<(EVDg(l}sei{Gqtmr_0 zPp@TrZ*TALj~9dr*{k>Skh=)g&ofEa{Ahs03b(DeqRrmt@g6F9z^mLkZd5MF94P%U z@u{ULps9yIVPOH4PxYoVH7aK4#v^93cET%TV`5DHh#$}BElV8r-@G-{CvG8xX0s&m`8)o>yFbT#C)x|3i}iQga* zF)^#}#nDH=L#c6?3l;ahU}0w`l9iRM+uP!~qW!r&8iqVD0$#1M13 z&%u|hm&Qpe=WA2bJUgp+5bOypfPZSGU)%4ntQo-dWCqAp9GK57@BD=j)qoAfx)ot- z-!o)!AnH%=)I!T}R%YfT&8CS)2PqSdkdrc_kFW2(z4Rmg_SgKP2i1I=r+2~V1Rch- zzIP551W?IA?m9tdutm$&U4)c7?0KwEe@_T?YtY!Ur6}(;Xg>U8t)?~}OhJLO8(_Qy z!hfU@mZRyzW+?9{%aE6;7o~`}-*R2;m-6y@faz@x{P*nc`e^<=Y0;obo@>MzRaM`- zFK)tE;2A`MF0N{ssu>_(@ZKB6g5K5vR34Bk!UZKQBwxQK19IgvC|one^%cDGC2$)^ zgOkvQqxFv=A)uDYI4fuY8eX;k#!gumlN@&W$s5iO2(myk4jhzwpE`W~_Du%UZ1dp! zl;bcr=Ipc}?%jBi&V4?<7~s!k0QM0W{LlV44(4gCKYL>NSaX=0nwuAp$cR`%PyWgD z+Y*5MT2_m-Sbewh)Cu^*{V9;JYjjG=jZOFpS}-_2X&bQ3h+sgEKeZe*21!Riy1)gL zrRci4jNJ?q{p+uUV9d4^=?t^$B-ji z_deVfIGK3wO=7Ikaft<^`teQv=QsIw8pHe`11pGl_^oYXf*Qh`m_<$UpKNb+E;7F%K0rme(_-CRn^uo zj;7{IO3FK#>m|5S_S2?V47!d=glbD(bYUQnBx%5JXTCWZEX;*OOOQ5cZuH!J2y@!X zVbCfy&w5=N5S&X5S81$iU7soxe2Yf;f|dRbdiU-hkX%9#MogoCPDn{Vn%ADLWwQP@ zk8(1eCqh#H!jA_Zx3#R8P-V|x?}}z)YRY=P*G~Qi4nd6<)V!bM2!B$37b3T*rn@H> znTgTsfy}NJ@)aHDyh{S}5fqmQkzsvjZZ4Jkcd8jbhc6uR#oHbT9{4m`j-7x?B^o9D zKiX2-jgP+uqWK=SBU|o~_&uA5;H( zWdk5UL5K7++Z=Rpk3T(BBk?OuwEeIfjb*8Y)SZ)Ups;IJU7K#dqmU6(sF!;t`n-`0 z!k>Ds$L@EkQ7yI?IG?ZGfc-5Jo=4^V88tl-zqTk{=&Zvn>7{eM;^*H}!ttu!gN}*1W3o9MOku$Z9OI^&63>fwWU}^xK)(dvZwy7yvAU3W9 z>)S$Ed#){|AF6=7XWBJh4D&zxoUgqfwE+SKX=!ON*b9oJuV34oX!*S_94#bY2Dm1C zg}%03VVwb5{xUfrzhOI^1fJ;#mq!}nn)L&l0LN}IAvNj-K~Spyo9jZt*Z=ulo}+58 zU~X?O&fFKFV)>f6F85GxMgu{Y1B}(i+RVfgxTCk|p{F$z z*7y%>p}DW&c0XPW3HGx|W^r|GKe3)d>hLreN$IGd4VBsOifYbB@P>vzl2LhkpXy?7Uc!(eY`V^hxt=`w$>jcP6 zz&-&?f){gUPj215y+7xP_)%9!1Bh<~zr=F|BqW%xl$g)?6TnOZv__}3K}P-N4^;K_ z^}tVV-T0e(PI0OthUSF*+cGfvSI$>@RfDKd{QQSkx}GNxBXDhrVBX zQV`7Tsjn{j-$`r3Ptl;r&g?~scY3UFy4RrVV7&(yb(cc|w_)R*zo~>V9EbMicD|!F zef=rI>U1J*>_AGKU0h5zQ~=#*U#|f~`8V#!IqsEJ^H@(0wk$1OdS5E&GhwW zHFvQ!y>n;tujM5Zxbz-!>D9ctT;YLC{(hh;g`XtxJI;&kCp*9JLLqB)YU~ncn0%1a z)guAqmx>w)fghT8PsjBf6;&kAP*q4+*w(Q7glh%2nt{PUJeQuX{y9-mTYW=A(r6Z< z+ygoN7SRO=EL=T@PKHIKO9Z7)Q%?35*3u!1U;a2L;=a=#N=G$-VI-8E67C*@`$gOr zwYab#1!9-LY<(yyn#}b4Lv&({RD{mnMWz?$d-DgVohkv@|6&OsDGd)FmDet}l1~{{ zl0R3zs(X4gv$~3>%okWUhKVvNHftO8)}@Ocd1uJc;kP#J`MJ|;%5o?*yYA=Dc6DRW z!#eTe3AyLdB_4F$SJ&KMPC?C@?Tk>|ovK{mGPN$KjB~?zr6E zlw~?ql-LC|cnZDLzlT>1t_Y!^y+J!8>dxiKjH42a{P|II-BM&O4WB7K*wDok>jGNL1)W~^hrGx00=OY8$Swn~RN5&nw_I)2!JplhBZjOnQb zpZAGfZDdoNgiJ&yr(XL#dD>-%g4IFDGq5iP7e`s1qLxxtx9NTPH*e!mqW4uH3R~O@ zCF}~?+TTOM!+&0+-KLqpZo0o1mDF7Nc*TRV0~?AJ{fl*xnNhhw?Z-1~#x9d5<;2(j^{rPip8^C1xJg}XpITHy^&R5-)q(UEf&Y#y+ zk_^V7945=8U}7heW)6?SuBL4$ma&ll<9WIJ6{e~BKL@1hM3qZ;_YrWj|9eys%KCHs z?;CwJN}Pg>|2dpw)$sGcI{(knM%9sR{T*QRh}iJU|9k;|yC4tbKyd;W-ApPRYmwgSW>vz>jbpG> z<2(jzCCqMkO9aZWe}jsDY59yPlhd&cJ%{1V7Ge|R4IjtC#LF0Gs(i9&=3F_myd&+) z;C!L~^H^3vGieP57pomyi#53pp6?B1wMy!Bk+rh&#AVoP&VtCEjS=vBWS7{DlpqvV z>wC3ZP1W%)!R#4wG__G2Pr98>SA(O3=~)@Y<>?ADoy>Dj#_3jad3Y{Vi}S2p_^N#? z31K&9Kg$!|0$EXRl3^yooRIMv(WJo|ER;IvhfM{!J&{y2Msx;)6=-W~`;2~vurD`h zC%F2TTVfr-RPL84UzENM9|Y;iYh73K-Ixh19+*(&#qcc-;wh1Gro2Bp6|$1ETU&&%M+a17Hum zYk8L@Ko?lMuoxiA*ix~1HwnuyQ|ld zq^=iht%K?k!|_CyU^Znso?`Id6V};n*;MW3g=|~lz-5C2Xj=_>$&vwlij(;2$u8fKG8$YRYa5HN19&z!Qk1b(uT|MgJ2k7K(w`hon z5~EH>!a5aGupzxaGbW@#WYlVJXH(f+S+?@jQH#t<8=+W}KA2I76bzmadGwcKMO#*TkrU+1F7{WKN8Lhvs`%Ws+ij!lG=Mab^6IUiv;s9*d#QY z6-It>wT-p+idVZ>eE>x$@2dwTFlq>4$Vr=fWr1VZ!gIfAgt=QZ*PC*MmHBV+@=cVMo?b0PWu!v@iH zvewLM-V($yEU((8E#O{$aejv}uc~Fas)kzkFQ$OK!=ok7SPRo<$@%$(E0gv2D6^@a zTDShRxHryCqIw>XmyL{+dmmiW;9EVMCbwi`<)kaU4>x1S?6ROjv86OF)MCGoyCgud z3JaA+m$k&&L28!57mvc=Kv4tSzddVNvzlt6o&{V9

Ak*-13h6}xL|6RYT{>Qj*FXyoC!rqnN*)kd9VYw~lq$j`_){5p=zYx=DF!Hq$q(Y?!U7wC`jB zNV3cqW+Ctsg27_tJAczsxDB3IJYly}C}izS#odN3&Q3cHgKgO#Ju=zsp1JBF@#m=h zzdd-{qK&mZZW1SUx-Duqi0RuNm_58|ovN42xmeo#aeeqZfjWUZWnhpr2PxH2Xhc>) z&DYx-itAy$c0*%o9&@QYjUWCHvW`lG5Bsa~8`3S7rv4t@d7+l|@Rv$deNDWvFVVTI z7bGJqLvfSFKY!%+K$gSmSH4)?utcSfM6t8Z7bB@d^9%FV-#-VJA|3yJ8%mx-#1QSO z4qp?P%_rGBlIy;MuG42iky~l)j0teI(aqIg7HKI{%Irgx>=>;}tnDG3Q~bFE^XEOX z?23w8j*gC7jnAm=HodsM<)<7R{{zUs5QyIqmX3LbTEa7=IFX2)w*_^exSj<`G+hLQ z5PiAt?yDPsLSxP)6sT6lyK^|Dkv-hK1R0jvJg{3s*tXB`*G?kxl zIhZ->!!FEbpqhJzurPWy<_u2)QxTRdKihU9SR<;5n0^fQdN`6bPf<|G1U&{BmOE?E zaj^6AqZj|s%^)VZ9hjU+u9`4@k*MO(pOY=F4>~+wyS_(cyqM9`4?pB1YuY1%=@>HF z&KT6!Z6%c4#xoIrf7jE)tDYiCBFAj{ z{cRx8IdUH0jHdv5DNa88!jA40kO%KyVVVARKBm`k0me||k283H>Lp^Kdr|!qdH=H~ zdo4t%U~Ya_g3F4o_B|Vhn#nwmi`d@$mzY6#W4T5A1|M*stFIUN}2%djtnc zMrlh>v?s^mf*7tBmtL&W;9Tmg-1&UQdnM@D?D;(P%LdX}_cm6m)U0mF z8}>8o%YA*Z&8oB6CX32E_JWLQ?TFm@SRE3J>JR8E3C5KLIdlNC_~so+9nD9+yJEzW zgQtQn8_inh!pAfhWEGA>%~_VwenOhsa=Q9=W-;@a_oxeA{#6li;R+^L_0QI2z`5^~~M2Xu}C77QRoszFKY=5g6z|B9a^Tj^EfMd+6WE$f?E~R>m?BmD?LRmyF1D zG5rl%@E3qSn1qJ^Mj+CGml)C+p$hEX^@&pE?Ck7yZh5t3+fq47tZ2|8Hj?x6BKC0y z*kb*S_N1!M%eeCaxl~Yn6VL^KyIF%Ccdaz2fcj>K9&vJ3g{qW=s_1;~m98R10p%Fu z>0w#uQ4v~6Git_Lk60x_==uIUaC|I-*g-?=MUQ@Io5~42 zJ+_?QxD2YlRoiqqDi=Uy5r#`;jhmKK%Ej6Ak0Y4q$YE7tJee%fv{*o05on zGV+K!DiPFMhH>kQ)ZK#z$X87Kfghg}9QKY-%j%g!LX{1nqH4;}882>d=x4f!z(;zuj`y~41_RFRiDIc8axay(IXBN->n`X zT(r!stsem#$bg})uC9%!RxLU$XULUGpe_`vC%F%GWu3v>W3tjA)C>ahxBU_kI60}! zG>Q{vw#{T2YJw%3f=oVv8-lxrw-JIx-@{e14=oV$h~;E(Hy^;ju~69{j7FY!2W2 z-j9j&oHz!}y_%}c&a5c;ie5W;6RjtyFmV&pd?`|JS#{$>c~S|A=T@4*r-gXM-?L44 zzHz^89W`POEoz)(KR>gCjB@{~>8SN=?qULh2l4Le5I#_Z;coW3=Lyh#?vTzfx+y+C z@6&LkzTcP)w@n~AKBx(L%yox^kh_Lk+#CqgD^vZ>9Ewu6I-ZfOrc!__SrpisrE zoDFJCQu-7gK0*q8y|4D>ZTQ=z)|N`t-ndt_&K)geU-zG_gCydIk>7vU7hBRTFK#X& zsJ%TTh6{L_o0`k=IB9xGe^USCtC&#mVB4vXJtfb+d?)JpJ}L(G&cZ@FYgzK81@VLt zy;1FIpn&P%Q`h^Dzb1*+_0&=_FTGA{96Dk5TdO}`!E8^HUkCTRvvIo2+!CH7n_@e1 z=x@Z1?cp`B-d4VRA#?Kc1+w<{nZFi3xm{b6r);cTx3~)T^ccCuQD^KQ>J_QOoTQ$T@?1QDP^Ufog>BVy7xCXD}@gvSvoVC2E!`Ej3lyaMPIq z>1R}C{E^GDxcOw|A`z_IWP4_gd>(^$`+j zzHHFHtx@Bx>mMLiJl3iGPBOmp{T}Ww!|~gFf3&Yzv;Q&Q*poBvIezSFwb1iZztKmF``cei5cq|>`*o?j`Js|o?M%frX8 zwaTxG4QC{|BZC>^1?$XDVGxf*1@RN%uRfm%F@GwcGuL2WT9p25RxY_K>+>%tq>HoO z?H?8Xr|RdfCc9oAW;e{hT3;E1YHBQ zF`)fdiLG2D*8sg{Cz`x_AE%T^dY8cdDIS^4;ax0AiQ5t%*S2w?eVW^84^btWh!+xi(!?RP?i=;%j>Rs0t@n zT#EDi)qn(*a8^;##xWep$VrI<^vK2S8&IQO%GZ28o+1Sn5Gm6(AT!J5u`0j8%x!32 z`6%qU*_W7l9)xAYq8Nq;=jKQ?=J}0KI_W&|aM&)4+ro&Yk|khom}s#LRdx{!&6K#~ zYi-+V(A`&L9Tp53?GMxb9Ei99Pc%l{9N)PdeuR3G9Pdb}o;y1@j?`ngmHuQa0V=sI zNZuItlSKI%&2SD34-`a0naa!(!Cn^j3Z*)SHt3SzH5{8c4cVUWOxC_$aTU4XOrEg2 zbNj`^iEAjr!mlKQFJt`FSby>Or@y|`NG@nzUr;y|)b<@^%jBWTaXIocPQw@Y11D;S!xdpHARb@GA1mLE*}a633t%ZZ`0;+BtFOG=-3 zUx1_7vXk(9(&<~Bp>D&Lz)YBW{dJWv%eha9DtX)%2GN&}$FaY9h^$OZ?$&bNu=p!C zY*Q^GA1ENa79W^7W&LEj4>-x6k$6S*owNGx_nHr%`ENBOIwiIVlh54^_BBi!?iB$ zYubLzu*RSoOQkaEJliz1>Wy%^&*eqg*J3QA9XWj#zhQgv+K zCilJ)^TZ;m=UlxmT_vwUxRzNv9e zJ#KrxSx?M$?XI3imO!Kr`8@|+V#&*@mG|D>mB{vsoyxF{NCEK^ec;c3_b-S&`KidhxgO8R)Nvc(gTZCBZOvEC*3L+@ z<7{c{DZFCuf%C+XwGDAnV{h-OX0oj8YvC+tsne80@WsuTC`& zcn&k6BAf-NJ^vm=n2!IR(nu;`e{v`DZ9Xl{)0=lc3tVHZU_&svHZcr*S#?p{appjN z>(Fp;5yvGSCvTw;RI2@xtbt(aR>DHhPZy}ugN%eg(B`?w^;W9b$L2w z2zH~9o}UN|<;%-v+r5(-_x9_SjeWD@*Qm~kjFr2i##V&XKU=6>B5s6Ysj%3Wmk51g z|BbqI%&bIqa1YqBnjZr}B>CMOa zywsz71-mpbA2HuOpnsiuO*&5) zcKc1|(kGsx=5$hgw-^LgbvsED|3&i%mQHbY9x?Y71Qz}V-!be_Qo5`ca8uW7#u|qM z!b=6{lE+#l@4)bo);K0YXzm%z!u%*uRZnI(?f^aHv?*eF?mMvy@+uP+k40xh>_bvs zA;kQ;nGaOc`LUqhkdVDmXA8Z0i&49!qg5r}Kpg7S0KUdblENXsBsZ&rZJegE`Oo?S zA^Lgj$zvv*0kThD&rd%a=)ZH;i&~(xpAy_PFzE|u9yy1GhO3epii9&@&I`Uo2PBK{ zk_0%m3(j1}Ti(@#4v(gUh0_bAy`Uz0W5ww-<)>**g?)bToE&k&Udm&@ZNZhwi0|3?0{D&EKtLm4eRqFmzaZ=`L6#wWY?GyybQs$x(YN^H3#DSd{ zz9|qS5(a6iZZ;oNCJ}#$jFc*Vqpq#->o>)1dsa8#i<-7pv7HYI?y76fxX`+_h!D8Z zvmnpUyB@|yJi7z!id{zTk)E`Qb|){~y|*FU#AZ2|`ok#QPloXKEk=s=uEz1?j4!_m(jcPRKw_&RVdxIcE7%P!L&(xRbXR@eWvTWXPz#|0||{J46c)Y+u_ zC0pX*ig>wY=rP7uUZzhh5hC&y%76}vhcU$1i-(0?NI(KspXEtiH#&kRE+~bbhF`zi5(`q~!D8_G@{I*>U zx^?STN*eC(ny-o?>uw^Th<9p@?GQjjczxIp;C63q1{l4sVx(VYzY7KU)&oQZnf6*M z2rcG5{1o(oVxb5-SAN8F746xT*U?E--)%Ll66wX7V{17u8Gf6O4WeIU^`v&Fp>%dt zTpR7>&p;T}bT;F9O5HbwSE}Lm5ag!H58^ezm6SD?Jwnc>U$PQf*f|FKUcavRHH0|a z)Oggm%7*+UN0@MeYdo$Qj>-JsO8WFYm8HY|Q|A2%(K{f!^1yWTpPGWgjSxBoLrtbt zm#3gw-wk@+l;7W$0R6OD&tD*CTwf_JJ1M2fjx1fGdzWnxL|wnXdeJZdy#*!nSH29N znsEzeooGE}v0>>NWX_g%^8_|Wy!Od2C7(;QJdG`BF_~e~VL!v8!XS?q$q1kojWIEBrosJxGLKwHRohZ z6`ooB$6@~(^g=jVVjcsr`TtUXluILEd?UyOukr29%}2s(^)0)kFrV@*^=188A9eBD z7_s@2?c$Y1GT+mutcBuBzeu8ZR}y>P6*bB9H?fO*U%I}|Nnxqw@A@HS>^WGke&sH& zr_E(q>@&w(k(v`!^m6AfNneDvjYyMZ5Kyn-G;c-HV5JWNnK{*903Y1!bBaU3o$KM32TH;7fp9q7o%IrV%6mRQ?9pFnaqv>b<8rL) zgEZk#<@D5v-o0Uo5LI6q{R)TRv*0(XN#v3d^#l^YwFs>w8Vhz0fsr1Ox4oS1V zVc)vL_8$kF@$VzOZw^SkzR_%2PUqdWu&ENrgX4ZV*sW7?uWJUgds zOCmjHFu-N%?JK%{AEoKr9^=TAQ&v_cMHVXx5({uUUPKMg!AE78L9|vtCs6aE2*qu! zUH~e{0y&3+gM*w;Ig3@twN0#qr1Z?5S2Kl(jLhP<{qERItzPILlosDRH_pLQ{Nv1M zAF{lF&u5rnJgLqZdv-ychqm#ExePM>Y>Z>^Z1K4S508q7>uR`r+DN77)V>z8+taA= zFo_P1c#{7uOmN;r7UCyj2Csb7&Bc<%9`I?z=Yu;kLbtf}#gde}y}*|>sGik4ucY|l zFHwI(1Mf-*^*gEvamZ&lZ%Cvm8kfs>+Ux>%Lp(lJ(k162x?Y)=-D$`A;82WkaM#Q@ zN(zkim-11C#lWRw+*kaR#xS<0V8>7qYhZSd^o0K;IPK=_k$Ip&a}fURt*$+tQpDBd z0Er7BCqL##iEH_M$-H5@H*e{Z7bArks_oNMp~q;;Q`CqkqJ?Yj;z(nxSOrmVaXFkj z^4Yf3@_n}g_fG>BY381@ySKkT*%qW+zT@0rhuzk7u0z`CDx3Dc$fnQ`0s-uS9a!+iR@k z3=;M^+qMZ7k6JmGijeZV5y}{zFrNJF=v@<@4-pxW#}S`4_Tt0-VAgKPPbj_Y)wY1* zrTyk@)`w!_YZ6~}l}`FXMK~o_{uG}81mznI{h(5#o7L6FBty*SEWeTJ<^1bGU+EM3 z4lx3g4m&=C^+FzvRh+&hT%oFlhOa?IOK56ps-{!y?%mb~I{A)Ag~&^ujK$FvDZ&JK z_}df*&!hIYIY&<(^|_I1q*%-Zp8}+yGB6aACTpYosx)@YH(U)I#3-?kF}ts@f;SR$paDWi*WWb>o8AefbfL7i6imWG~7; zDorI2krHPOYx~O;cBopog+Z{``rSBG_T`A!0qObo!v1ZHIotL8>!WJHKl(%D3bTi` zC9PCx5-NC1*q>z_j_=R?*bNym;&wIWFJ!_dOkQ42y!NF{1DdJF?_dAy+HS1hU=BpMGpi_F2N(fqPTcLflopvPi z^43b6`Lny5>>!}V@?3Nz003soj`sxDb2qbHsRwy2{%LofrVbn5)K)sfKi~T|NA6;P z_;D1nsTi1Fv6wifLd8F5>8|ZRm@GIXvdN1`T3XR*_>#H!g*|SZimj&Exvqot| z9{|nc_4BHB{ThVv2xN_tV@Dh_Xjr<8pU~b>Jductivtdw9zFBGt6F~XC)9uYesT`H z$`gtJ0D174^0w#)9<9Rz;KRx6W8;qDT$#uWtic!m$C%Q!Kx)Him%|Dj=U}j&VO&P~ z+0^xtax4D9wU!1O>{)iYVxMyMKbPNi8TZqlTSC7lX2{Lz|5ztqr3;b5hgk#AMgE8U zs_|dP0S-=9)_+CUW*_-FACbJZH+ls5x-Gxhh;`laW%fFZd00MXDeq*!inS6u25_^T9a61)@l1m&j+|<$C#+FFxvyBrNzY(=mWO)t%D^R zp<}vhQ;zsfh5qLvM-Xq~283MT_G!k z{#WaBsl79`3fmEtE>LEquNz)k>;BK&IbXoDrl}%4eAdmA62j?I2s@f;Rbdc^#y{zd zpob7V1G>CQHr8~Hg0JP3mO7$q*Fyi&_*gs>GGx5W;G(u}4!Z*6tUO1I3!C?~!bxwf`;@KWf?kM_*L z(*N_v8ni<5*aPp_#tP)A!N8T4^{pSRN?WqPU(0oU z&B~pNGpSOt%Xv_pSrYkIm@U7cs7+}ra6HQo+CI8kC)e-^qK)E%=MmFmVpo~K>Da&7 znMt^r0cNU&{G<%<#5NrnB%B@Okfo0l7bF;VfyOr-g=PB+vPlnHQmzxEfzO#V{aS?JV${8#t0#@2?YR6P3kn62 zP@9JMq;Kx!?jPBRbbPsMEFRQ-s#E7=5)d@R*nR5yy9Iq-0t!F10jJ2G;(_odeo(6Y z<;#~z%@&~E$1SQ{b`rx7NYbr6PHg&1(|rS-J?T85u|p?+MycA57J6QP@yE)n3vq96}jJK!=iOkTEFzmtj@oeSbD*>HwG6J z)+F<4JBK<=E3?rhEFezbI1u}`Nc%2;xwq9hPdxRoLsvK?CMMQ|g3@00kNZF31y8~u z@&^wdh#hp_Lt_3#BZmOswgPKhJ5*`Y1c7DIrir3|W_J^m-(Q_aynZ*;SLh#fNL)iH zyPmIjhtRzD|8$qG|Cm2gdNNz-xrnUGysuT5S} zJuO)m3w$3l(Szr&#vTIX$M=IX%HY0{H|GW&e)sD=qXpw+<47Zid@J}I4RkzR|5j%EQt z0~tLOgVcX-`5N#idD_~u0NJ#r4AJt2)oFh*mwqx9$zynVq} zq(SVCO%AAMDhldbuz|1BaI^oL;^zeY#pa|umLlq8K5s(WG zf{2PrBP65;!tP+A6BFGuzSn|pz$C=nOssCW)H^0WT^9~*33=U8Cj>S&HzgaQG91WS z7YA6w1s`qiPZ`Of`4`(LL0mv6m^4)%-<^JIg}l4i62%zN4VX z`D5?d&OryQE-EVeM@BssIU&#L!d;3oTmizWWKTh9baruNcjICH4yEVk9D#}9%3H9Z zzK2F+b4Y?LUnr%(D8Fy{h+4>q+V0JJC=k0c@5dK7QnyM{ZNQlv|KCr9WBMzmI6}?z*QwhE4WY=AiwZ+AqUPjqEM zN`}{-Sgd>*Xz!$i`H@@oRu9~yHuv}EfrFcAF>eWDb1A{p&hhvCIn&D^QV@+yNFLmr z!@#5ddNwgPcfLC_{H;^2c01Xi6Fs`(Eq3QwY`bWx;kxvARvKG+tETJ#pZ`Md0w06P zF4B4j+t=S{f-QA%9w`>-z!lk0LWPTGxIcwhMDh&VCq4R(h6_IY*FT$a1MzRiQ?CVS zvqad$;vc=>m02y)TR(Xd{_?7KIcW1ZkBG{!%is$caG2b4OjA(onG_GH`aM;?U1h)3 z3u0rz{PiglKx$)uKU8s+tz^-onIk$k(|}nC#6Et^jRB38-Q&!l@Zd+9l>zI~HeFH8 ztraVXSHOA);u~x&(QFge0Z`;&t%unDD7wfJj5wU%)ZH}oUE711?dqDEPWuzog(usp zuva0q;oU>R%o{VwQN}ml4Z8LYlQ|tJq_|ib58Bx2o*tqPSI--=Ny1J>M+Fho{Ei*| zH3yIOJYimbeoVS^XxsX@#KYYrw?N8Kn%uv83F(fK1LHggfERV{FXnL`G0WGCtv@{F zk{HLMRX}0+e1j^L-tQMKjnoFqD;_iX*4*yhP*8Gqm263AwSlL^TAp+Q4wzKn)*f_j zEY)6VQ{_C_a5GP;=Whg=5^evogW14A!NIj!uUnhd(XHUUN)r`Qig)iiXvDTNdv^Oa zctONZ;`0@xeW-7vqNXC7_89rPT`|=lpu(DcPqQ`tfqo{WLVpH&pgnZ4U!9 zchDTVrp7mUydBzI%_Zs8q@pNy*Iv-@rMtU>0WM;V>4dsxzVyOl4|4;u=b#6~bFlE9 zqo=-h@wl7aCZZ8IaeTizN9Y*USBkQ$l0U|?_Ab1+ulvM@+(a&zgdiva* z#y|8{R=#|oq20x*R@SL{`mp#?u5U{-(VJODvfGsPMfAijNwV-qzxwie-RHl09*c#v zX>ChymUBNd;ZIJ`Gk)Omuz$~(*xn-t04p>?tOfaMy2iLXPGNyeVwEO1F1x1ZjiXZN z(=^{u-%1!wAh~4l2?zp2AGu7|=}#*w*umxl@75=lg2?>%1=nM9aN>EmvaDaQKuTAf zExT(WYFbyIQ44hH1EL5y;Qc2iRI972Q(86sGM(z3Hg_$3P8kE3gxViZ_*+_9Y#v*| zKSsYn6%KU`4Jgpvu(C#SU+=S|+fe#ay8s86Y+_Y$7Xyg?2RdNbz<+A!OWV^GWwjH^ ze9a;M`-_r3AplWEwaRr6UqZ^YbFeqlnQ)s*pF#Yzd}FSlaB1Pg!@RfB_n0`dxvt$l z8IHT7R@x=A&AkHZ9B&(Uud5UBDDpTq&En9A{eE<7{IJ~Al+zvGz3h+*Y0Aae^xV`$ z#Kv=OO`v$6-2_X}>oyyFmkvWsE|aHCh4j<@=fzR)N6r8NMJ5SG>1{%*0kG}^Nr-AyZ^sfibnn+XBOS8OX=Z96AHDu&)$@daeMgqJ>8d*TRY~ILCGAn z&c!jXi^CyZIKxF~#Xu@DG8^b=KKj&q5qJnEVw>Lah1TQbVO9V9;r3RL3?)KG%=`Ws z9c?mN6R*oKJ;Sn9jIZT|{emdt#jsY(ZPWJ?XH&`Tt+`Kd)x7a70Fill`IJYp+~jIq zUFq1il|UgN5C-xlH@O~~F?QY|Q$lq-;^s?0gHsGt3U20mn2)G&iln?WEa3F=Syurx zUv$VfWXeo6R-ws>i3({PPINXNhYY4)#IJ8=(o`C)S9Ikw1PJ5$B~(;mY(a1qMjWk@ z*>K7SyV_~22udJeWo6})LQ;!jp*6)jQ^)zVyZA;Qc?gKM;%W#H7(2AeDJdzDQJ)f; znEygGM+&;8xbMqk; zrdhMvdQ=aRliM7pW3n!yiq_h>(9nq8(y%3pNxaif>JIWhg>ulVf6CnQxzHB)P4vD7 znT%l z@_Ig(zAQhg44zJ~a{tT`{P+4gH6yTB!zB&iHoVM@VHuJ=oC6Y_GDGTZEi zKg3hIRj;YZFc=vb^H|W9q+ka=`dk4&D%ma|*A!DK1F{j<8ea&ga z909KkK?5g^&7D)t$p0a5v6Rjm8!2&=!Z;a8%KuZqvs(P`r9BhY`NiCUIup`-NHdXQ!*iaA|~eJC60L-rSJF;*VfSg6U!8AlQG*j*d| zAAwqlpabs#Ybad_)l-*TY_1Lv-Zeg2Qgc!q(H&@5&A=-txM>g>H znJ1gK+3n<&6f^owUzO^&$j4=P^rJKv^v! zdFl$Qgu%MFl+om9FT$A#u17e^>p6w`m`(g5Ui=T1BnQ>aS&f+X;o7ZgtI=Fi zPDR-p3UTI-u)*;KTJOReRw+O5u&cek$fM)}Ivu+I1U`~tv0gsPeKs32H2w%5!Dg%A}pm@d2(o2abp8JTR zlfJek>CZyVS*7vaqPyR;VC*qgYN&MDYSH&NxQNm;F0&JtJOxbJ1x43D4L}=%`usk# z&nhF}(v<{P^~3i;Qm!{GyB`>giID61w{1vh?3Jv?Y~P*yaO%V&C8?Qs9e5l-2yoYI zY}yLc89?DVGrR5(Wq96Lt~~D%pEQ_K=tQK%qZFs{dBzG4dHTOpwJG9T9Ujnj&rB% z#(x@N?)16$8x}i%P6@i-iz@{tJ^l&D@|!qAP# zNvRf(SxwojW{MbA#elx}v$HXW_q>7nid37~Dvria7NDYAKO@)qN?5%#-|7S6blzof zOZ^7(MVJB(-j*|1K!B6Mk2hwhe+yMWfD?6(@FV!3<40`psnQI%-GJx*9wod%34`Qr z?rujF2UvygXz1irV+cXP?AWK|Onn9ky2cE<~KE_!^~GwyhdI(Pl%Lw&iSpI#vrc6_ATJ`1^* zQ|#cHWH*c%m+O1c@{{?wZ{v3>cE_MfbE2lFRT_ZoaJJ@`diQ(OH~tfr4!Dj?Y2vpq z2^}Z3UR?pdDrj&{a_uoZZ7WbCqD=G5d0Hh(GTSqx$pAgb=ceGL+Lz~Tm3z>$^TzLE z)Z5tuE3ISP%$xDTovy;?m&iU98^#AqCGX?GI+9v*&Kap*Vkrht@7B`xAU_ci1qC}M z=FR5K&23%%Jkf#SRFO7cD84DA3>I3iQrA22>!hQd}Llf-5nf7k{a8OZE$@cX{j{}aqg(A@Ke3>C^;LGPLpTsUR;by z831I(pr2)Ac$Hp7JBzuJ&&Ko2NdIp#!R(_m`-eAF%m}wWz5Y)ozX^A+*r?4Ms_kypI!;ojZQ$O z7uSir=DW@%Ir#B(bi7v0v-|P#Pd);K{AFb1 zz!#kT@$zQb$XGNMY}2l9uQAMvbErm!C6@_RGe+^K&G4q7H?yYkEKAe2vfL^U#W_RAL{Sd^jf@w)p94ZmlH%}91K8n zchw_T2}H=QsByTkVL=p4ms~sC6s=qlRW_!1OmzI7i4_`(c=GGPeL^de(+n{tdu1(~ zoVh&uB8+H?0f{QKt@Ue>S}Bh+7dCqNLd11t*em>-_28y*fw*&k_zG?s^@w!9UoSgL zLnZZdU-Dm~A#r$TDHHvq!%Rlhqt(>7!gT$daqYjpS6}!&Fc#5H>J{AV$&eB#GZD~F zb`!@p@4CBHW-nmRm<=%#;VH&4Qa?sfvhN2e_?%phU-lwX(kf;4&f75Er`Y>k?Nx;- zd!mi(I5E^zbLd0>BHu!!YLinO4*J-k#z0p}VO(4&tWYH#b<6MgG~`?j3$(W;hh8?e zCmQ!4J?F9mCv@pp)0nLtP7{bvsYZ?iWj_li&o`rlojTue|1K2}ez`NQSzgJ=$Y4$^ z@u*H8zr>Xv;t+LL}xTG z_U>EHtLB5#rDpcDv^+7H;u%>%_0ckG(TCad9S-L{#ph&u^c|xLY|yQ8)`4;=&C24b zY_oWUX(dOqz-eSa@-Lg!p zN5Ot_NqR-SMg z#sBvaR_x?0yORTnl#-rA`OO;oWZ5gkx}L;n9WX|p__B$9*7vntZaUb!E39_$uJbte zuJbqX-BoJqRLU?a*<4`6>T##Iwd-uWO6%Q5d;SrxOB$q=%+wUONFAf-7Dj|xW~jxL z$&(tlL;C^kZKP~91kbCRYZb@i9$rO54>mT)rSbemhQ8q4K$KjwTycqpni)^zs(pnh zD=;D57#~1D681dT^3@1te4O3qeBKM~IaWTj>c^#ZkJPG zlE#(@dHYJtk{MJrEMcVJ`KY#iQCj4j1F)ql7Ssp>cN5QUmtRMCcWv8tcEX=~zD)PG zL|VF{RY5a&7>bZ1t5~R2!0DtU%B6DIPH_7A0ck>oN{WgLUs9_DPiIRjZ_>5|MsL#u ze%7ze zm1=!1e=S0*=wAI=P>8P08#lhcCu#SGhos0p&Ik+E!)xj8&mUJ02X_iP9XHRZh1K0w zHAnkZue66EbS3>4mXqUFc<-`aWlna&e%@q=zvbp{i-q6#p3Zo|(=Q{qVKtXyV@{}_ zM$%~qEjXONq>(=O4dF0ks&7CumjFuc_lAbOlGWIbM-Ub!i9QotH0GCzw7IzQ_bfFH zMRaQ>nf>>1+boYFShCHp`|p*V;AiRkX%n0n9x7X3syoay_QxRG1XJ8A9v`gqpJb5? zqd+fK$B;$Y0Xpn)1sbktqC%*(g9fbIQ10ONMa&6sC&AtXFgOmCt+&q9S!KxZx{udpy~MTX)RA4y!VbkaMQ zRXHdazNLe|M;k6vWX>Dk4uJ|WGdrZ4lLuJZ6dNAjg~+3_(7CI1DXkU*D65r4=ZGsLk0%jmDCz--d`k;=D#yKON6c14n4j}iui^yDv;+AedrX5>cjF4k# z$2<;k>&%+Xp7$gA`tF@}VerQ|MDIt-ynKr+CB-12X;@K=Xx4(PVxSg5W=}$|08Q`& zD$S~H!=@ge5dNK~SpTmGa!;|)XhR6E!6VkD>Ib$x#P<<=RN2@vp+sBZ^cb*EU=@CN zK?zp)(W8koAnr@aEfQjg8H~xjLRjchLv+d71Kb{wOu{-xiF|j8e|F69HYZLW562pz%||(jk05409Q9RlwjG=f*Oyk$4n23 zZHC{rCxN1@zL+0NpS2He)&dyuja<9Ep02+p+;z{guHPbs|H^H|r>BiH7%#K55cGV% zaf6S#|1ozoh`{uQW7*;gyTHQ1abMn3VVH4uq;ox2fo^0ZaPU~n(d{i7nQiRosl82C zcRojFNl2I);5^8#F>b6<5!k=s*0_CgNC+SaK5}oeehzLm!{#A`LyShIt@{hsy!D@Lc z)q%+NADX1abtjEUET>+=Yc9+swb80v?Ms>o2~Tn-?Cq!4a7)JG9>R$no?+EeP!!p|f% zW_TNkr>l|N`hIw$g0-#&SDVT(oG7$gCNFf2f zx$Ya_uH=;lWw0mLW8^(XB?9PE7WdmXYlVb!(8t(=D7vG812!yCL^ihE@xKDcM5RdEWPrtS&bqU_Vbh-sz-f;Uo zdb?eidQ3IGCH*Ym@q2?=;HLv_5bPVXL}069ely^BFt?A~SL;3%-+1O_#^*|)%GVQT zQufkt%(`lD0@l7BB?`SIB<{060>jMadKfjG@QudR;%erK=m&pO_e#lL+UJI9A9TGx z!4SxxBBKD9WPpdS z!6jDbzO$dU8#ZX^dIamJHehBwuh-?=!@vPL1{n-okPcYzk<#^#h(F(qK5seuqjuHu zFCV+*R#YgS=(sg6t44{cP82cWa;oBSs@`i1GBD^zNqFRhR@-UDLamzT$6HXBmzRr) zi^Eu2S_TZ8b%MmMRiKiswh(;`5V`#W{>VIQ+G_h!T~=JwpzwZnx{N|5#V*fQhoGb4F!3aLM`*GAll^U zSuYt74jW|Y zI^P@y&-*<$@U%|7)@;TLR4uRClx@77LCXlbTAru&LA_)Rfq8{A*-n21ws7=C{`q#&R zY@3pNJUoBaj~H_HcMyPqm>ly5tK}y<@Ccs8!fq{)N}pU)IDQ2%Lng7K4dbaCw@Y@_ zGvC+)*|oxpaJ!V?`gCr&TvXrAacOSsk0Jl+1uQMDp0?c~_f+0WF1>u)?4e$z*&iax z%%_cliKYryEU$jQyqb=Nkkg2R&5v~OltYo3{uR>K{N|YKh{(Np$#B}9D^;eBoD@HC zB))lmKHV46w+P5p?=BCqi28GSn)CTHQpDFr4Vf8rjvYW-@nbeVEIG*sY%E(pBh#j* ziw+t$&dWPh(`IjPA;}xn5!l-C;^9MSxG8;7SHD9-W6V-eP*B0eHGLj%j2YN;I4pep zS>q(tUEbXMSj1DfePNk9zRAiA1(CRiGv%EZ z+k?JToO;lF6K9CjfBatjpuI|j5tf(HK$uZwxCqfoK zy`T;&gpA#7)A&qJ74pG5OzNLf5?T_a?cc~^N5B@@QA)d$EHoWrRFu)dKtMB!%3p1T zvoohn`K(0F&p~RglgFYF)l96T%YeM&19a`W11`OTL2YD^_fBDs)vef#+SpkfdAU3G zm20UrvJl9reN~4~f4u)9r=8cmkk~0DrA8o!uAXo*6vSSM-}98rKC8-5*zaY}`RkZ_ zSacqe(5d(OenK_e9x67Qb1Xg_2TQM9WjknAWYz63F17gc~TFfagXE_~V3R#mo(T$!^*%vqF}#s1K-9aY-m&C4g3 zdMY?E85u0@o-pGHN(FC)kz5W6x)qE?e8e?+_L%zoKG(Hx#9*}98x*lHpXzV;2#fj zF*P4*x8GJgFE8h{1CW}qUdm<@sFX4?gOGBB+p-J5ei?x^_R7S5?9tBNOIt^;FuNa0 zw;B_^H6F8kaq)Zjzz&e(Fo5IJXpAzF>B+vJ#7RMaNIXV`VY01o%h-I~5aEFUdsXWf zFeD>6_d1=_;GqbIM#dK;n0Wlt*ATPrxFV#c7p{IVV8e%=7~3Z8KCUopGXKxfYm@Hv z^T>=~SF~#k1R}Odf6==t1Pj@_M1A*x8go{^9!Kid_s3Vlq(PwFa>x1a%cR!%%;Mhz z;&!WLiA=e$;zR|w6}EI3VL~dY{s%RnVqxjd*6x3DYw7Tf;F{#zj$X8=#(G;V^G%B5z?fL3Ip_TJ| z|M<@yq9fCe{&>!N{p_-AI5@Db%5{5Fp>>Yn;_36g1XqU3SIY?_Pybw&u?i*8_wtKOEsw1Vw2<6_7QHTGX0$_@gW{Q z8o2$WnL(xPzJe1p@;$w^ANr*EN{Qs^TQh#wzm}XpigTL;Uoxi&9-O{q=hGg{$ zz8e$)g}Ag$Oe0|+U!0Fs31~AAEGB~@3jj>D7gMMEi>ktKo`uM@%-13)$i3G?e&wu; zaSV-l{x_1l<;k$%$|>k(uRkJ=UO~3znfN1;LAb5eH}E>Dc7uaSQq} zPs;kVXJ`3X>%BPz*RfS^YZPz~1R#`L9_F_8^%0<(*TZ-PLanwO0BnvMUD0Gdy~$jv zmm8IigQUVeb+`H=O+rx5D^TsMuOpho<5t+&WWthj*LA;f#;6UC(iO6`=^0=lY})dq z2VPe$m==?;_P35XGQ)Aeu81HlpBE@N^$2i0zW)Mml{Xu> z9U5{%0dcq;eJh$muV!IwO_?n%;_c1fKQx5%y)dMuddKjp5m=^6kHu5R`@!M1ejJ5u zKf`7%Tpdfe=kwceHp3*JZtUJ-3U|Wqpgy@jXv-2~_6}V)6!vj|zmI-4AUcmL?XH*a zs6yx{$tUY_*XjB9kn#Y^Zi+K=q6gOTs4x}OwgXR^1xVMoNeUg(x$dyhamHxu%tM0q z?*)&_HxxSHKUXAZ=IZOv1K_=X|02|A@OS!Op^vyMS^q1ZrV@-o_x~;a7fTtO2j_gX zpe$?sz$<87Y*va;OQsd{{}vx;FH8m-^W{n zJj2m(ae>N}+YZ2gzGo;dW&{*714As(gRCyJY*+8Y!ph3J~@1@WDpN5|5$HVeOzn3SLhTcVIztFku9{~(WwxS)5DQe1=Y1eI?1Cf z^JlA-lSzlQ&oxUE=8oMU6C5DfXaHRpTeAG#-rm{Z_v*MVu&@bI?c#AR5%+&<8A)Vl zDw42#N|{ck5U(n4+;mhu2!Wu5P_ETpeR$B@e(n-)C!D4GOOXQ_9&@TEU(UVCjOVroP_tM`Zo zV?k0Vx5rgk0b6Qs9=xoqN=DhAeJo};CmIHa>%8Lckuw(> zwJ=W~q;i&QN~0u6su;NQ2)s}Z2fb0Gevkumw~n9*>h))+3G`|e+Azq0OBl<@ zc&q&}H8mAxfHqi`4p*h_M^*H)#>C>{p>tWhI+qzk_V{1b4^)zgB}KTz0;WIW6S}kg za0kGT?7Gla?^db?pMOYx0Hq>qgDP~oiS^Gm(jY;c@anc{rpCsU@f@R+gp`DU;x|Rx zqr%z4;E%abkTTt7uD$dhMOk($Ey@3cVsghj4zEjQ2o=lz^!zas)}DIbqRzSR8P|_v zrA2OB3_oDSnBUH5t-`f{WdUU}Ukbm$oGo<0OBa@DldkuEW)Lk=Nfj+Aei7yHT$y>! zhJ!fdN*IP~f9*a$m+(JE28^&%qy$N9$0dwO|I#U^0$Jwy($OL!A|O-SPCQ;-UJ#MQ z(Sm}4Uv=Y5%*?nJ0z?rXS(1jY;IWCl$?WR+sd$A!aW`-mx_0g5d!S*)HT{C7uBT3y z5mr(iSX2>D!wn{XIw-<1A>^vPNNar+z^5%K%{Le0@XyR6L6gG+wo#1|6j(U)`jQnO zbVtz9H0kK^Z(4IdKFHT8lBGj*_k23MQ3Ul+2%=J8 zt4A4?;nf?xF+VFdY%1GwrG9B&JVxWE98$d@Ej}czd>iezD)7eiC%k&pL`p8_V!zv; zC^2}>Ecs$nn$!5EtWqn+&H;bFSf_@(lDcX=mcvG(c0QPH?8%dRN6Qx=N!05_U2)&q zyx9m3{y+2oh^-iway~2^mgIsiDcV38W%%GW^cw%p__ou1-#c8%htJI31WZ>tb@FwQ zBImGJ-A_+GoF6_Ew-v;X9xv8EwkRG>@4Nh(w-NgL7L~H!Ub;mM#itOf!865$>EIcT zK9Mds3U{2~UHFQ$?wUCQ+|fwBzwQG!hTSbc&|0^ox5t=mPS}rv5w&nPRP?t;gkGJu zP+;fZVq_luy~iK=Ah}UGk5&19UQ88>oA*SWBL+=#ZA-Z#s(y@weaX``ie4tk$U}UJ=r#}ch)g&WH9o&xlHyH*XGQyP1 zESGaBzE`)HiCLD#BEV`sIkC$tC>U5iku9Q|n585=?K2aFndVjfVdLJqY)8hGF*BoS z_)G66cWb= zyf8oKXF(F5t|YW7gF$q*t$=Xae@*a_;)ul~-{zw?J{5z5&CJ-o%in#Mf!-WC3PC~L zlZ%2`sCCx%yr2XlO)*`Tq%Yjdh3R7Ml&Z}k2A(^~<_7hPRbJOt?NymED{2xrN^pBp zBF*cPK`5cMKDh%H0LYBV4x-X~UAIdx?9xUX`f<6+UqzCI?cdM!c zx$t1rQx`eRoaf)r!iM@gQ~o*7kE59rlfOrmSMj~-J+@@b*3M2&otwpc`4}Dq0yQHe zA*!xft8){b9@IHtVQIPli~nsfaon_(MuH+x+c3vuXKK3ry_u~F+@Uz_=O-C~`4AwB z8Hmgx;DFY#tDD~RR?81eEtI*qAJW^us|{pNiZyf>s+Q0Xdpb}HWAQC_P*%*;Cz@u@ zaw6d*_LLe{*6r-(xYMB;6@UBjOwo2|Ytn{GDwp8jCL+x^C?3kRCg5^+R7y$;0hpMa zgwrIDIxs_nW3Wr*w%25i6XYiHu7Qc(c5d*_8?{{j8{9WM{H8Qxvo~rGh{C;xr8~`1%qQ86Cc1GK$%t*MV_@- z1ofP)U}tEiWHKBn$^{Z6hi(S{)(jd#q`CkFIjUN=i?W3Wt5cMQh&wp6iMX8vuH<({ z`+HsI5h?!Fq&6+&vr4okl8uMy<|1IH?Fz?5!{S7Dg}n^RYGkQg#)u4}=C?Rh5SIRH ze^pIQE}E`5Nt|vkNVN?^lyQVp_@H!s3u&8YG8MLApDn6$F&-?rsK{8P3N0 z{+;J}-uL`*uJ^sJi9LJIUTf`de!j7C`Z0!M(Bmk90BlSM1R@{Te+q%1N_p!TxGGq> zm^;67bbaSw4}o}QmZo;t=kt*%P9Bl#HGj#koaLF0CW)zfD|(8O%r0WqL;9-jS=Zt) zs@w+_$E>H*EF)f*)0Zn@r^^1NfWyMi9lJ#O&!_!+&(ux);cAH*ta6IZC%;BMClr;) z-E?6A^ejJrc0sLp$5O(=goyjS5)xB|IB9R$n-AsQFT`d3jRooi z#6oHM!j`pnUH@) z{TdRLZ&fLg*~Cq_cO8)tFiJN(B|Wp}MzCOGk;(t=X()B#x*w|CX~*h^k+d`!Qe3r4 zC9Uck)E@`iEfG5cg;92x-ekf!F@+iX~FV&iExf7xY%HU&J+gD-gr)#M@c8vInyG0~X%{HwYdQ0k3F<@1rTpI!bT|9Y21XmWzp;=P?+kb&0Lh6YCqLL0>@pmy*c`%wu`9rc#hFQ%H> z+IzGG;QQ^IIBg0ecZ*1FXJMh}|KIfX~1lPKKQzM|0|0MyzN zrw2`}Jghycf1dicp7bC58oKnd%03+O-?&=H`$-wuj_gxNf;49pW5k=+iS=nH6l7Ii9V8HZ$eG8Q{6Q4`F<}E?AxEUiV%Ysj2w@8D zmI|K+Ptf|eJ~}eMP7^MV)+1e|39pqsCcFpUnWqnLP3+u*Ko}v<00mhcwEln@TahW- zx&Zv04;^L!kMH6C(2yqxdmun?-od42Y@9W_ZwNIp;>sR>?>0lZUBDRG?!$px{;;BP zTmVxd`1=b<8VBJnE(*k!L9L(;s68Zv;P&^sI{l)2a$e@|z(>{jW|roSF1Zz|eYwWF zcbsUDX9;t9j9LKMI0n~Upae*8*# zi+d@SNX&70Ns+UU0|urN9IFe#d4FYid9ojR*lsf?9>j|L{{5O8r7#cXGq*W>*v^ir z4gc`LEoV;S7L_EYB|-NaEhpY-2tO5mKWS{&a=7REDxksr;w80FaV)V6%36U?PzR)V zyx)i`mm~6*tw`6hBS*3tDrQoTo#F{+I5gh|j`xHiPa;Sdx$vd{{MaF?C;thf8R%z3 z;cM((+`1x~r`|i>EZmj-(hDngSlMYPwo?>9!f6MJi!>MNV-9W)R)^!47B3f#=f>+W z<>6NVqMeouFg?bC-y$xpY%02;o8D-CNBGJC>4R2e6cl+?RWGKks;4zyz1mIUAt1*L z>afF|66R*G_uMo;Poyp=EW{3gTOKF1ZI~AJ_p2B@Nn&%j{8J|Tnvmi2RsSsqU>8$1oVc_ zycgei&&F#+Qy(8WV_%>D`Llv{j|*OrwLuq8ed*U$iNuQtbv84Jq>0<;|3h!nNFW&|?^A=m8|7#J9F zEI$i0L^7Tqb4_{vOQCkIeE?AcHl|~FCMPS4 zqM)S!e&S;WX)BT{5?fWj+>XsVAbl-#ztSIZo#TtLl;p2J3-D3l^JNT1I?S;jJXqv; zmT=PjS*gzw%xkW`0u?F)A^ckEq)4=dr_x5$gqKgqIQSU|S)Ah+gg30lXpBh1Ko zz`h>q$-{v+m3-CHdpgGf$eiYxR2Ce9F!^bo$h<1k!&bJSKs@*@pOMD@~ucl zP*E^w{{QlPI2WeP>+W4~1mwE%yc z^%r*wyY=TlB5pa6%ONX=xBjM@@YZ~fyU})tU+$PS&NAQ{r7k%m7}P>I9zGG&Q7Y&$Z(w`n&ve3Rd>rC173{v;3JWhcrMWu$2Sz2?Nz?Q|c^P z_IMJzXHnFU9I7=qnMe{{Vb_f zM=?!9!~3r5t4AsZhK7&76V%()8s;Kb3Z=V-J8JXLaY0gmTJ^s*jKK<kI>Tqr-Bf z4m9Z%>+*m0Us;+h)hj+A{WJ85U;a)`pM3eHRgl&woxpUR|?~ zcZI>D=z^T*Y>8Em15A=*AAHkO=DQygdCz_}%e19)`#dD)Uv@?U(tpKOx&d}mOG5G+ zaAsv?1*Q7k!nd8B_r@bF3&7o6PxJ2#N5$-ZKTcF$czXK%sr`!_eOb-n4$JCy8Ple8 zXVijLTZSl&8p6WDks5|@t#ZSh$<)A=L;Ansqj8MIac4f-Cr;obIe8oc=Z{N_KA;U{ z8L>Vak%T~&9K}BUdFy(AxkvjKXsOP}L7{KbljGhruLKMXEG@s7_Q7^ly}TN~LaM)4U)?OVIPNDZy)o9v_|w7l+Dx{11wG z-lhpZmu5@%&4uj(YC>0X$CJ08-kvBP-k}7Xzc>b)nF>yip>c;~0Px)*gPL>)Z?FTg zxmf=FOL&Fc|Mf|d3P|a{aHa>;K!-#5dw>0Xm?+up^1U9wQ&4AxAr7*>Tj`u%c8G=M zjma|CagJdcn|!klTuY6C5CRVrIJT#*NHeRS1#Qji`q>~(6;aQSKcfsFura}jij0)2 z8!BxlBO~J|XMG0XHv9b@hA?=AK?+1uARZ%%1Yo}(AW<$++=Rsp9_Da$JR!zUDWLZV z&)YipE6jx{f%+}Nfz17|!tjy;Gl28Izp4oH7fv7;A8pG1EL%a}ePTFO0Q4PWj!I9DZ1kZ;leQYXvSYNq_FOvr& zoa!x4F62jofTsjfVlO2~wc>CX)o!y_3W+8I)@ye?y1()xlXZ2~fk_=>LJ$b_+}&Hx z?2Ej&0rP1Ry*@?6o}HgReW{!LYB69d3iyr+J{(8nL$o5N^>Ti1BTM7PC z2!_3Cq%S-Mu(Uk6D(u#K2_0T$HeBIFS&0u^?_?9SP&?<-{^6pXZ z$AF(iiu`X7B(NW%G6&_$GfXM^QZg6w#<(U4EVBFU*HkiPzE2v0EDbTwNtMO^qrrcr zYd{m8FN#F5lu^{8jdK>J!UsoU9z}sT1AVK3fvA@6Q73V`c|R5)8H)Vy@S}S2 zlIXVCb2>XaQ6>$^6hSN&x{ee6AIN(v^Vi}4XFaBcrKRKWWzcF_lIWbnHFjs^{26?{JIS^AwJ!Gy^A0er-~FbtVr1k+flmFP z70ppwQscT}PUo0&WMG1V%8g`{Ba9oc8t*oAuQj&?tcZeBZA^6F&dHpECe`J7DoZ3*ZD*2q9uH)^9?*LGV)pnkqneG(>0KE$_Z=}b! zVdQ&1#LtDbRHqb=|M>ODc6NA7`(jX>FXy}&G#D0AR$Ls!@{EH6;0WM| zyMn8QpQEtkR#0$wBIebrp8H55NnB$n6Zojoz)@LuW zKb>tg?4@6Ll=|i#K;=O6g;l*sNd_F=`MLLZym7cWe+t@MRv9`_Em%|c+IzL9mmw z8!J+ZR#C+;G??Z##6t^YWNGtg7!`_Vp6Lmj#r4_Dx5z zK=142LTF%(9{oZ7V{(W3*^XhZsgE5y#9lkR#m$J^fR#hKJE6S!t&iDb`rxmZ@RL6# zqysUb1Io_33qMKg^-T@DokWZ!GUeiN+^{Z`{6AY~)L~s8Mn*<*xER9pJHZ1K_Xa!g z>N%wng4&;;3?OIKgpsO)MqmUhR2oru8HO7Pw9`elAMSsUIljC@aetwU`~#%FhQhFR zKP|{K`&WFVe@-}wii(Sq?GCc($LPF4Fd{&D8%-_f`pvgYYJ6;rL&S53hDxk26$~PF za0@0W13gCS3`_gHD}0-<+6W#kG89F;U^htJs10kF)@LR)vo${_Ce_U-3=MlCJ)KqBo6-jLc&7KvD1WOVl&^h)ZI)oNG4mBuEtlI9ZrDc zpVUqsN`Juh_beE?#p`L&c?f99X4g9#V4%`4nKDQHou1h+M=Hl;X~hL`eV#rkCVW2z zlH+SarU)_$CJ`R-&k_seP=&CKCMDg-zk#SSfdwTlW3e{U;4kb7&&9{lBrL3kzV{4G zjM4xpW~&X*74K~ZrHmou{(1UPK_=21ZxLaors;G%wd_A@16tJhn2Kg6h@GzHl+_e@L*r`OvcKCd+-|9}GlbsUT@3PCJF zk`0D+;K8V|FONyfr|U$3z`Pd<@bo~z<%g@dQsx-(6)C=|nA&#_eieN3bJI?QrbLgc zM6WpU_gd%3_EDGDk+EayKmEw(t zTCcw0@-Hw_kO%45UJSp@6wFyN7Owgg*%EQUCaig98FlH1fXT0s|MhKYPeA zZ4I3A){Fc7{rwfL+auvonvy-%ii#M;V4|U@McidB>a%jvm%gipkpux*n6Ij^eVRK( z${=@i1NQi6*zqQGAdq~*`j zD%3D363F{8w%dT_Ecm2PxOjV)mrTmJa&l%Sa$;fvWwz_XpSRt6FY5)7n~#aOG>axn ztm^08X;OGiKR(Y8!Elvw*&MQj>Mr0hiXH!mMUT18 zT@r@uckuV~xDXk?SC1e$Zliv$BX0jpxl*y;0z}YKlOIyATH}ss)a_L?ep`Bo&{;tk zH`Xv8!NJF}a47L53D~qPrGQm}hXNd?-I+!Z#O6~Xbbhkq%Z1`y6=m>|B6M{>;mDvf zqDs!eq3pB5WBb}_+6EIWJ^}hD8rSt=UKc}#v z;nSDTpL0q}??psJ5cNd|jX9#z(a|l#;&r+)Xl~Xzb$N5c=d@kzc^m%{=H3~L zc4EEvp}l&WOJq5!;GiqyQW_5%;Ge2^9kfxE{qkITFS{8CN#@cIgpQu94+KRH(n+_c ztbaYrY2&8AD;G8&Y(DYWA*?qFfbnbp8LuGyR-JwCC0rV$-Sc!;&Y^)JIejH|TR&sF zl@*fXsncOJNcNNgO@$xN$U&Qp6y)XDwe~_)V@L@&TyrtBTUtaqN);$410o}5MSo9@1^dkp;vcR0^~rIbRxciM$tMp;JqSSkF*xm4jLNT1 z{4kPvl?#_VDH$bBvB2i#T*|`Aa0U#0EgCv)i%BGY{L{CBD$(Tl;zzcLY+% zU}?BjfAWji)zSlx!AeC%MabHp)iRp`7uZ}H=uptm86jV67ih~xeYby|oSeiZm17+y zFNS7hBWNIinDJ&=8PD9=-r~_hV$_jcxb32NyUr)cU3UsfC}Y&nnX8bf=xPTRL-*;h zbSxDU<{{$Lucc~xxCuT*FXc-G3g9ICYGvh(i1TOSR>@W>@eypPtRw+b9BcOgHW<2Y>i?;SLwKsY0gArK!Q z8Ui|pZj8~*5FzB9el|T;Q1rE0+mwH-7i+`tt@oCv9ZfWQfxzh}H1OkXp6XDionV#I zIH`m%L$$3v(+y%p5fZ@ZXUyZ_$NjzTJ;CWD`@3;ktEN0`?IFtsuWTa%$eeV2+*Kk5 zAZe5qt8W7b!kIw>Oo7^Zxif;56zhw%hDKf@(`?v*C&=_L{jgsbO_W8`!ulHe3!sD$e2@~%ETsuSy|~c<#TERsnWbG0BoI{ zDn|<34hMaRX=uVeO;Md)2w(?Z{APIKNn~edC#DDJobnrbf`mH`ig1E;bc?B}&Z0p0 z*a{#JDL?b%vbwQ50p5SsLIljV-2-Lp)9qN4f$y-SSluq2a^KGDMd0+df^}QPcmxk)6~La2xp?9c}?4NDw+U=3}ExtL_K9>wK z;1viXHh*|bvfW$DtCMw9>D0(bTngJ;4T$GaC|-O56%ZSoU)(|RHLul$Jzzk~%pm6R zqd@;e=)K^+39aUAHxCbvS;|Eh!j$jtai^nmL`|2b#z zudl;=A3Q_b@N=Z6FwsH}D@VKGGu8?gZq|6yMM&_|QmEhZdI0uP184FVx5XjiHPdHE zRmENY=g;?-lFkDC=L%^RfrCPk-Aw2M<{(+#Kpn{N3 zRN_wblr&K(6BJV#)A8}~xweEUt9|#6c8bFQBGUX;!X?njR{wc9l=c;mz2DFM((iQ- zJU0D!B)Q(^p$)RBR9Qo#Pce~=qt7KFL7UHKVqeWhG^i_#aCNtwkV#nlWul$KkF=f$ z0}mcFo1`9VX9xKQj+uW-~P{!|%##E>8m zZ!|_XSCeFE&E7%9faRkvDrMhDYvT?@hZv>#V*3!#b;4AEZ$FXQ@)C}gRga8N%w8io zAOZYR1fhE@wBVgF(DNk7S?rk+;w6wWt1Dz$?RoD`I+?MVn?6bTJ)XUoP$k~(nwxh0 zq*!$5YCZbeeSXkm330g?J9X#>unbERja`~R{4N(08w93LTPO1&>nl-FlBSNY3y0LN zxunLG6IjCYe!vutXwQu@4SiQPi3^Eh&IEGaA7q+7B%`FPW-#K!^4#3?IUe$p?sz_o zyr<3Eh7CFDxS)GYjRDraG#AIvQDi``0)u&Gio5idOC@B7t15SIeYOCEvXU^m!IMEb|qi^;987nXi#wV z@DPirmYIgdW)(UBQM$pUplWO5wOrR3lpyyw{M$W=FKiPwzZ>(B!*(|V#;-jf0n>1E zMX>{MS8OCq$bUk+v*WpHnxUs*DG)YR4|M35*+J)j>XR)arAypTJf`R5>OcdMBsNyx z^JZ1reI??htPxotwxE$O=750o&2uyas^jb{UJUL|RG^X&GP~f7Gdb^zg{K$%boUAi zmog9URO$6_F5T3EKmC)KHAjhiiA@^TU|~azjnq~oWAb)K_>UKZrWEkCz#qDx8LML2 z?%(SBrbt#af#vG#r&TqEq#a2+Mf{LIs^;~CAL!Z>5)=8)SE4FBZc*+Gg}Z+n<^KNu z(uxqEL(Rt{gM#AawYj=eT;A=qnH|*!oYFv?_kzfCTsD5aPD@MM+TWH{wc%P>UFCbD zkWdBHxb3Er2R$5>dE|FNDty?14xV?@5TgjsLixMIIev$QCljOdAyY8oA5>{y@spyW zqIP#(W{S`7bT0`dT{eV35FekC9{Fj?KnM^P{uwBQ?Fol+P2oct3hdeZeM?r z;aU}b7V&~P*v5Y`ma+K$`#I#Aix{X&5SdLa@mDV=eMOPygVz2Lk{(CfPmu5R0NQ+xpoEsI zZohWK&rNuCX9VL}w<&RFd(dz@OipuJLyGtFc?lOf(3I<@DPu>&`*ZqgU6z< zbm5`B5VW0Zp=x=gNZfW;*$cLd!JQZf1z5q%(??Z`(&P6IG8x|t9iJtv)s%ehFw;b* zTeKI+c+E#;!OrrGv+pe+^stkkYHaZTnc}%h-}^vd^bib6FoVFLP|Il({(^~}9Sh{z z)YX-VtD76=iXc0?(v=zqB0M%qNnanU#PlF!y|n)L%Q+-nJzGIZ2`gafd0%gDr&AMM zAR{BUFgaK%0(0(HQ4tYZNGkKK{e28ZU>N;37;X@UdOkTn6O@h8fZXBXqp{IpvtTCr z($dncodgN}f&A69MBeudi3tfH<8Wn(mc-@{#zciRJ#Fhnlb0M0vqD0y@)`XPy%l}$ zv)}Tq9h;t(=@J_md9r2J68*%{)`~;6*t<8xX-8?8`(`qGqgXF{z?7dfRROq1)lu3` zp!2o(b_b*mirueIH{%s}zdkF>{_onzCwHz+Qxl@B`6UuMSl8}(V z&&-O`8~@wY-OVT>qUSX~I~%pOX3^cV z{kZxQDToD>)zzOmIF!F)7?T@wYBD}i(Nc;)e`A#aAiuox zJLbN$BMz+$&qwJ4T}Mrs=FjvY*J{^8154{7&wa4B>lezW5K29Mkbv zXxBWG%<_|yiz|{DG=2i{zCxoDBOgD1X3^2rU9Mbr4rLb>CfC)~RaQ}vd!_30!_O?5 z2|Qz0S}NvsLgnr46PKO+_0<(`JG_d|dWd!cBydB67z@=kd#i^SK>JpD{==EjOYD>F zf-$rlf5fio?nYG8FY9ct-k&Lq*jsyh3ZSV=e>D@InN&E|jNXOa-P`-n80~B?HG}pB z!})18A%v*iL-K3pz;6u3Mqy z>2PdUE$iJcn#nIfxUu?m>7_*LrmBfb-%ij)2i?v|mTmhf0Lg)+iVlgZri+&0z3_LO zC&BJC9Sgc3@O>Z}``-A|>p!g4%Q~G}@JqczRAo>HgkujF;6Hn?5A*M#i?BO<-giNs zUeibKojp09(Ub;+V^a~h8nz{FGrhY8e)}#es>4lgkRyPquGLM1M4&ZQTqfW#ErI1d zSGT9yt)};GJ7UoPR)MLtW$2$DHc8*#-rhk)_c9x7a@&ndP7dkqeQK#blwCFyHzS&r z7zUP1?48o= zf^^iZQH;+Uao(u&d_-wDEAYrw#F99UaRYwPuv_b9e3cCT+P0s@P_9!KA>Qbl6X2Zb zT0(#0ZaeNaW-n)zUE$ED7dlWL_9?L#Tg(1c({{PKKZ?wCjlbzC&2B(^{nq+NHe71+ zTBMqxM0a@asfXwQ8YELiEE4C^^B`#JSujLXLAe91_|H{ph%)TzzHO)o@eA)k9S9)d zwA3hf(XWJd>B7Jc^$?$Vyf%T8$$jhNbd5dL+{Djqht;GR5Zuc%#w43YDR6(U{L!xt zyGe`u>((r>_1>^te`Hx+o>%FL%j5-bYK+iF6`nD?=e0-{C?a^3JJjDX@G2ICWe6;aG&4l zT8PFo4~$$xi68KJ4B7f#Osm(_WGeLj(19O?Ne3`-{`5e(e>Dn4vLx|*8gBBTURhZI zGsRBFW2i#H!XM5By4kz)5x=NEv#{pY){wlJN#l=hswCGg-_XCfnI6lmkbvvbu3flz*|Y%|cU|1{M9mSjWxC&1Ljs2Db!?gl zo3k3?t?|ZJNaK342CdMb_kV)*k~gvWsj#&p@&pxCRjjGyx+~nLA{m36=EYK2=Z_En zs5LpUY%IF51L~RA1h49BJIaikk75Dajy|YwG!(IBtvp`IIY-yp+A8*@dby;!cLi)( zWMX5ZNaRUJul7RSD^SlZP-+)v8g_Mk^D}|9VL6nBh?F!4&2+D~H-;ueUj*^ebNfqb zu)fJO%ahyAsLoIP=6BsnM$SK3r}~|p2jtjU!VBV%zL9dPI+56T2A`e zrc<8-6e9L>9JH`EqHo^3aqPM$Y6easHk#}3^m-2pHzbCF91gl;YI2WsAip>U7~8|T zxN4hbMsX>-*d<8ZxK2;!nv>Mn8S$EfO#QfN;X5`=OoAH9AbZ*7w7K>cZ#hBUiUB7o zU+n87J9;*e2i0&C~5gxe(KL&_;7^SJ}_NC|dh5-8(-Kdl@i#dlw;-__ty1 zU47&5G!s54u*o324B~A%?f@v~RT^#Ja1C8IFN|_XW!9)szAL!=O_> z@O{0pHZOaT|6OXcj(WPmWkU|Wc`n&c(i8Ax>%`F#2|2zR<4*kTwS@QFlJIRHFNhjp zWXj{?L3?B89se9wCbjU1R zZLXfPFUqK^6VUs^UN8Sl=9)f`^f}5{k6k?!ekJ$5IX@qbo4fSwJG+hyhn9$+iR`O~ zuaF;IhQzT7)Tf=U&)zMDybb0L^}D%PE|5lWg2l#(GUHtlf8T(S^GVa#ED8Bptdr~A z^1g*uA4#5{jqdw~!170l1G7mJAMOSJ8@u_8B@~X8Qwt?#5`oj;wJF|D{K&`i`wixE zpYSSuF5O)e~p`3T_HV^D%@Jcnpj;?rT8h@rpg}NP3fLNWBIxZYnJYymBP3vY}cXJBzW|g?o$#5{8D0g=~~;IJl7^V_S8q+q>AC?&HIT1 z^n(TzkduHMtrQ8NkAA(tK3(5MJjUqJqwFS2lCn(q+KsAK0_u&<(x#>vyU|+jR}E~o zn=7NQv>zX;fc;L7Ed-#nvP47-G*K6I?j@eiArJ_m^jTbm#WBf*|Ar9JioJ%0G@_=$ zd0oYQPuc{6;m3Fxw=LA*b)d$cz;>!aw!x>v*Bx;_=|k?^el_S2 zY&nop2_`&EFWn}`!Bibs&HPZm=ue~ZgHz_7nZ)1*t z>79^Y3kwsXvi@5Y_4T=})_IehPoJ{(4W^BJudoWcx< zaLcplHDeP2X_If*1ooF1m6V))(JFg@%;pE)3Ov+_=gsKjhv%~k2qcYIGUH-u>on_4 zP*)q*s}WCf=r;RG&^ic&#ZyiW}nMd*-oVe`0}*-k=Wn?{-% z2RAnzAMOG<&-FvDWGlX}`n~bi7OJYMS|%oC-xvxEeF?toZ89K_u$BjS+bsZg4SJ6m z{}YP`>cW0uciwSr(`%(0hgQNJKPD!|uTCQ`Hy1@Ic83?)oyiZ|$Z*g!G5I)xar*Ln zhH@_3)YkTqdiIlukW22~{8*`edI0WZT;6qeNU=~)#jcTk_PD@$JMgNcrG<9U_w*h( zh<6i2hQe~{oM0f$nG`T=yEdH8&KL=zNs*39MV{Cj?08MEj;`U`F8YOD`aCH-dB*$M z{Ja6y`vQFYbT3lZM9L>9{Opvs&2R#%->;v03xAwBxApE(jr%xme!Ifp1vdiAaPG%3 zUzlhjH1O?4W(fGUzqZSHI-s5O{&eFYA{JPmLsiS*^0=L9wFg3~bZq@*cN~cSij{#H{}DzF0C9Fg0^K&dKPGKXmv`MnA>Y=ls=|?>FWske1u`hzXmt zdLOds*b+a7A8v;a!9G^R=nO$cxl|PgoI8t$?X4$Zg69 z{@N$aWSWP7Df8f6@~_7ALAK9<_WEp+b# zh)JNbca;Pry+NC=m+~8aB-|yC*jxk-62!6~o31 zHtfWxOYm$=OViF^WEpeRVf@X`czutzpXT_0e`j!n0YZ;+qLfrqQkymK2QsJb5V+^h zpyLtaZ2avf^rk}pKRXGCyjR`Hp8T@|K{goo|I1#3|GQlY09YdZKWt#Y$JzLm*2TP! zmV58txfLY;Q|t@~ek=5E$6$D&)k2Gx8l)>6W&p+qVXe16N|c)wU;*eHf7h-R>tun+ z#^Xl;R;C)f*Ef`#<^SuNs*@AHIiMy3Mt1@NPv5Nli2w29$M?C$o-uss@PAjYpkprd z6$SF<%_<`{sypTWQ>zW-U)gRF5x-?sbnt%5^-@8|CMLBp9)Kl)@Yj+2+|%2BcS-l7 zjdFk($3t#N^S87XrwksodC2*Bi5?L;q;PPM99E}%O(yb6%V-%J0PpK~?&T%U#mgI; zzL=J3>i-h9vBiJ&d{N^#gmkdMF^{_4b7K(O`>VA4vs;BPkWvteh=}SR)pE~Cg~$g} zOiWfQXS0K3Z1^pYJ(wvjSh)J&ohc#lR=HnPPp8#TW<*t0Rru6ol%J`=@q+YX9~h85 z`RvadmVk^;2cd?QC^O448oiH?V{4l~VT6eywMArepQGUAX zr#vi2J7>~lq9{QG1_tIRm@!^}-HgG58KU_`MGp&Y7z+I~z^>W~P&4W+|K^2}-V$FI zu2I#6=#?}y2*ED~=M@(|(r_e>a)9@XrZJ&8AeDfy!;Qm2?O7vf5EK;crg0R>fk<>A zaiQhAE)ZK#4hoBkIyVM0v~+aVE?djNYB4JtTc;VH8F;Cr&e!U@l#ZU>({6uo7fHL7 zTjlVuKA9rex)n0t#+4yr_vUiWC3bRn&j=vB@U0^kUAUwas;>!C^G!e=N4H-C?2ITo zJo75gyAZ)EkKOm+=}+YkWC-JPu1>2`eOJnkbjkQMEY9BPbMPZUDF-_?L_X&jp4F%QZMus z<>du}1=C8O!`9S!ug$EIhN&BiA+WvT*SSLnyxBkw%o2@^m9U!kQTj zNaNDecPimSL+ZX)>#0A6hr{OW`@rIo{Pk}@VD3hZF!_|1m)BY(;~v;%_x?HJWPn#9 zD`Qtaff0L&TI^%jvW&mKl*%tmDqK||W12ev7vSrV{@CpyIAz58Kq}tdV)J=-agJW5 zg7Km8=(FfwKNMV4xkT(e#dmgZHN!xAgzo}obEgtmRV&_)KZI0m(TY1;{9Xs#-QAg) zm{1@U;3f>U>?hPd7kjecY(+&ya>!La9R-6N{E$UH9ZK*puZ_RLVQ(7lna_$MnAlTlRkGaII`mM^j;ZDO905!|yC*0szMIR>_dQ~eTL zuCUjWGOsmE_A~4zoW8ULK>Ny6f7m}6)+YCKgX7Ejdh^%BA3p%vFMHB%{R9(S_5E}H zH~UlP(*?+MMrMd5*a!}Rn#PJcv9b>g%&@Ys~}_V&HW`f6Plu~NONyscy@d)h?x5xRW{fx3JF;K^$rs7T7iUw zloZQCs!?YD;GlO0xS- z-ED~w$(T1Gy_3=GyC#Md@%KWIm%&o-qb@P06?7B7b6sD*EiTKUVbDs~z5N3)TQWHO zVZvm;dkn`nlV!%XV4yHnYeQ+`<0iPWGA~-&JTlKJ+REE{ixN#Qd7oW9^LvqQafQWC zlFwhiJ`7Ac%n-2buYfsy%GUf5dTL9I%m%7tdl%JQ9C5nGAvUsaJ%V572qiX53`U26^`+-()4xC(p z&WpjMuX~Tb|M}!OLbJXcL(-30ZF8L$+-9LgmOlZ!IU?RZ1U~QEyyln(PI|vo39TA@ zrtVvLX#R!GbgVB9`yA}LV=h_}eRb}Gd`v64tUNm@w-7d2X?t4R1OxJ{Uv?0M$B`+< z$50Dmf>{uh2u(RcW&|R(#*Z7n_GWnbL8)96;??JDICtC=twikgJ_sZ6PDq2YgbdM# z1iQAn+re*WT|;dWuzNIg&#%d6{;)uI!Qs0W7bz}klN;mE!L5d!cG-+`B!Ac0Y|gO& zWb#pl7 zYb>tt)n|%Q^juNb+dsXU&9^zlTBChs0(t^08t4hUGCMyP``;u{ftnjp7{vOSqg#Vwx>WXkvbhVhs*bj>oMt)_o#04|>1L9=*2GWQe;_(Eqm+?YW$WHNFej*UC=D{{rTrxv;}xox{E31Q z2E*Wy--@=s--nHoZO0&i90i>OSk!%pjFM8==uO4)O!sH&#Key*b8hG@gu3qTA_GH1 z7oMwYz|9rmvrc2B&g~*LgWixILqi>xQV%WQ!{>sFH-&MQ)|-rnUB$0G{d`&GSVG0X zCx2SA_?OLd-SdbyBypzf8t7H_@wc$uwTPnjw&A`@%dd&-%%E^h<^0-tO4J`fqV=pV zG{R35@u&ahNP^$f{#tz+i<~Zl2ZPa?5P0nD5}%S1iiSl{0k#rJSQ1xNS5F7ykp3PS z3G8ljhE=LVqhu&Lzlpc5vKTlMR8?E@KlH69bR^E5o)+)7Ny$X(+FgyuV!VR!L({Ya zf1}O=HMy4v>)&y{D8G@GP^#ANUNm7*!>~t;FWWHtN)JO9CuQ;Pc(euvxe-803dQ;% zctkC=S~h6fRu@J($?!!A`WWOL1YE<)v1VH=;QsweVF@cXN&}p$BOxnUbo98@IwVX+Gz>VzFE-2pD?IJ2 zYZsDE$(0G~Jf2)@m(V#3hj-ag+8$%n&t--@i$W}YQ(UxL0X&c-%q#gYEb1|I4Fx(n zMTxlSKOeq+Mba2sS+PBibcYOwa^fvryJkOeKN5;ywIXQvaGKHFoFQG{z$JFE2F3LR(j(0L${WC`MN3hxPKsaz(Gd6{N7HWYs>8okCk=K&BlKC&GkhE zjL2g?A5HW;uPddSc%~xyF&_Vp4sq@;> zs`_WXBjXA0Tz9o^>bE#%a<_XA>wdL$pf)x(D%ThRJb1R0HD}hiXOF?gV0D&{sE^fA zHE}d~ge27aX9aj%P2cuC6QW-TdAo)67zC=Vi{dZ@K6%hNTv5xye7OIj;dVB^@2cb; z)AB=eR{1hYCcSpdTWj9Q!L|+C{9=uL(;Q)h{!(HkgVe~*A_uH3Vsj@bn@4uM)ma1o7N<=)Tte{NaizsjE@xEIw*NDX}gGCi1 z%MyzpM%XuLEL2ZF6HFb7jYggd5H3IIyZ^NS+qLTOxi6~Bft*oDf6hKv=V+>=KFn1f zCqMZ)GE&1oy2@L#a|`L*2pQX=g!24c++D75*4m5+$2QY{k0C2#e-LoE9&q^1z6>y7 z!>Dp=D_)lE#wf5#W!ZXjg+ar5cRNyl=?pJUACGFp!wz_}q$WMhxT@HUq$?n` zjBZyg?P(h4_k@$uFg%2eFNVVx0qd}vE1%9Rm`)uOr&^FnCh@nfdHKG>NA+x~CUM?z zW=*?M8o$k4-K5hndvmMX)^f>JlT9ATW9u|TkM0%*GaM5y9gB%vpf`z>6;pDQ^o+(f z*ZO6!M@yuJho726I%ZiQNh&&v74xw}2cfbue74pZ(ARxRzLkML8zg-I{1$M0*6J<+ zVQITjU5^!QzENHMP>K?vaYv`6>Cn#W>(`flR0o^V2H#A5s>{~b{XDa*kGIQW-|4S@ z{~+o&Jq+pz`hM(-(1-cBGIiTO89df_&b)4y3FqM*5>B(F{S1%OevhfKQ{>aDy}9>LK6olLD|^Yz-<4bq~%k2%f$yp_@AZkv}izzeR0))+11>%+U4s? ztYcH9DSnYs&Q1$O^@*uvSH3iTnbw8)6}@0?nW}Y@)sy5lC}@;0zJwC*dtY9z4VrZ& zgHrS!Y;_@GU?7yS_rFY{zDIs;p8sxq6%rkn=CM6#oaJ$}2Ywe5j)4icK#rDTW^ zJ>UVFUe$?F6A8yimV2EBjkmVV-tBJ-lIi{9w8)x5Ybz7B0-`gf+IwW-s`b- zLXOTv>mJIT3D1$kHFB#%^^lN)!2sM~ zK`GUcSnOTYJa)(G6?vo0p2s7cDmV)kD~fZiLE4E&uYqWO)hQ#*3)hR3IT?;rhmd7p z0`@Q0Y{6m;8EnRFJG-dCL~{Ob&AG<6mbFO3kNgkbrER;!9UPb9DS<{LAvmFiPmK9G zcKQ!2<;I_lM3?t%$88T^4!~0yb`$ywV=d50gLqLW+sQVS`%hl6i}4lg(6?}*;iRw4yN78X8GU%oWhEM{>LCg_w7Z7$6N}EYJbSI&AdLN>TCnko1$t( zId0!p8T1dMHK;6fT}vPncb_8$K(;F+(y|e4@QbY06ATt?+W5Ou(LV>VmsQ zrxIht#98m;`N$HLf_u10yXEe`Taf(_2$Lh>#Jx;!HmWC0Ab(xgI($SAb!fN^G>QRR3?B$P5H!YzHealz#rReBiX|N9N zMHJk#FWA=Y2Y^B&LI7mTjl;0X3m#q16q(Bd$uQYN9!tgV^qX$k4omUv${S}84xuWj z8*K8)zx;SVPN7Q7a_Nwnaio~(_i$NQs5H)H@4|Z;U(&n*39@Y z$(lnO8PBL$4UjZClMIjM+PQrE$sA^`6*BHG)p(<#E=v|hAgsE&>9F9qXjwi!?q4BV zA9sW4w}042ARuvxD?$xajhk#t46bdXl`kWam^|9>1iD~h)%ANw1b}#sKZieL|Yn+?p;5CB}dn=)b9R5(>Wm$C8WyWYq%xwM&cY zZRo#IV|;4;{}YKzoV$=~R9cC-WULKkd%KN8sSyLHrEBq$AZPXG#nQREaIbVue+8JQ zV`E<=@}2|fwDMLiihDC!pSsrNm20>|bblCiNC}sV3UCd@l30^*qDK?=Re7g1I`BH1U25^?@6qCt( zSCR4uE#}Nt918q9!@w}Q<5&H)43+DFoM5(ikQXmLU;p1>=Sxk&w-%}!V#sItXsq5j z619S?Qi%<-nH7Jbn|ZLdOwon$LE_yp>`X+)e*qRhhl)bJ90qb2%1lhx&gj zzbvc^PYxsU4*_G3)JB~l0bH!AZ{9F7v7tU)SpcP9y9G1|LM-G+i&zXyjC^=ffPv26 z+ww6)0q2uOB~ipLppV{8$2#fU7a>!g*fa&l&V}t&6j^*@g8BJ^a-sb9Oa=*O8I-eS z9n^yIY+Ddq@Ce_CUJo?6O$lAqwEH6~#fxssoNk;jMvmu@pSS*Q5F|I^9EN?Hsy(Lz zz9zx5&>S?jopv5?eIAUW!*1kv;O>053a!{twch?z_t+B;o$M=uSjXk%t_9w_i8UJh z^r-c#swfJ^wlD3+fZjYib_QFEwOW3I0{?GwFj_H?_?0-mvrFl@Jl`O;ys_Bsg>Ij# z-|S_;Aamb#N{c$+$FYeWu$tze1 zAjS}cPrMYL&fUlrXF6d03p6y`zQTG3w_J5NWfr~eDCefmryV_5+oXU5h-o>tZia|l z8q(;DKTw%!|EvBX;gS9_pn?+o&ZOUOJ~r0q3|2Aqxmx?Lk{5oJs}yh;%B+w1)mOd9 zF%p{}aT@zKdKf&X#ely{@nl1;Ca(f&*-)2w7X(E=drhJS7Qq_s;uT?^{8{eq*`?g$ zKri-!YT54&6i1w`2xED1{!dl`=ap?Ks?B|3*cFKCZw!KmP4)H9n>Gv>v;I5GA<3Xt&`6$KGZR z$?2x-GR2H60`L4?9;di*GgpiCwf)NB!@#8jS!e}}wpUHd^FIZ&T;W?4_+1V3L8*(9 zm8I)0q5QE4) z80pq{wxhf}6YjL7WZr|%TQ@|+*}z;+Qvh)nV^lHT`}C-#&xwxZ>N}jCQo#2n1gsg5 z^cHky33C%F*(uf!MARY^e)M*B6?3BT4^ zrm?qDF8IDT{J4op2%q#_tX;ZZUrfcY1de>Y0WQR-v&$OD1(1>l!|d9-x2Rk;`F-dX zinXKqi8T*CKx!Rb7x*{+TYS)W`d&J%XNRB^>L&1`yWS^k#yB!I8-k*sY!h|l)?_5g zrq)0{@^4q%uyG(w5geF1ifvB(_(i{7eyaF)7tYLuj?1U4?>~88?I0~*<7Yzg5A9L~ zt1V^bK6wCF?4fmsd>+$l7}TWe)rUGUcpzWm)kwK;m-LS(;-g6f1l7jviyoMJc>joR zCThdvhi1!)6|53j5ku6>>_NjcY=_>f8(urMdu`6)(qhZbs)ESJXQme$_;YpzRnFhF zwWK<#90)&dZ?vR+G_ z#_dA)pbCq}zKhL6&XX^3y7ezH{{D#z$tHifT<_{%7JYgax)*9Rpe|R7ba{ z>oHG1Vs?L|Px~qW@8RGw;!!>J8qyH6L~pj#>eHxrw^e5Px~+u-!>>s$&RavRA6kf% zfPxZ=fvc&jKhe+-=GqkZcyRFvDk}=6W1+5`gIa`U!%^)qUc{#23o<+fwU|5K+oxP@$BhZ)rvUIJt6W*CaH`T>^LPb+pf}e8uSDdqh!qyZ3erolw(pN z>CBJYuJ>(+sN|H1`)x*agCb9?+v4y%_YT_&gMhwWeCw-6zOhFP@6qOL(;TmcI?SwW zSxT%3W2)JYdk7b!kc{A4l;0?!l1qo3S62Ij%PD31aslubnbGQJ`*(6PYi|bPx)4VY z1DtJ!v77#bWaYhgO~j|9zjn7ueyfr@PPUwK{De_r`&kKG=g;omvy+lE)ZQFv1) zpO3rneR>+N+MP_q<0)nWu&tAS7A_xMLzKdlU74+}@G@y->|$MAO-V_~`0)9)&u1e)e8&4{ev}Ji&jXfE1UeU!OpbETf`m>pfz>=sw&dR`BY03~$i23p1n!aSDSryY7nt z$Cp6U>5$fqbD*D;mzw%hlBA^6@cgFVmbb4J!;F-qsvEja=EAeL=4frBi0De-o}RZW zx4}}GPX)l?QqnP(=X9VKlry3MfPwpQz!ynTSFXQ88DLA4a_;NPe~5^PP}3v-_cft5 zC;0P%4i7Adnz}F&=L>i{Lbns5as7Oe8HD@#zMfD34S4%g5#xXVy55&%_N;8kUqJ)Oto*|ct;K!QehgqU}odY z6uefsJr^^nCmsX6!Q0!bj!e%aMWT!)Vg??EgrZS+xBqmN*E+GwQBw?VKJWrF=gPXN1fgL)oItiKUPkrJO8#%V)lsc*He_#r8QLp{0tC6>4Bv z@~+JC?w<}CNewG~DqqF@39Y3N%+`yKu=w`0@~n9hwl_6@X43tmKi7JkYew{)y0QPM za+&`YCu}c>))82UQ+#`=!2;jj7Y<)W<==(y!zIWlD59;;2VPsBM_++e_=TGL)Xg31 z{9a)J2DXtqbPF{u{JBferuy^9I~tXE_0!Yuwf310w+8haUvuiIgV6|av3Ty}Hi-@y zm1N>Ggzw4?*Y#HWjQ_rI6Cr~fB$a5CCvpoeCu$)4fbuo{`!np`uNOocp)u02x4V#a zy<4!9Oc8&eo7!R7bEm3*a{XJQ1%dD7_Y3a$B!Vef>#%JU%s8=bH)Is72u+uu0ju#D zvgda7lqvDX&$B6>npUjKS|jj7_)q+i@^sjg7{2}zxO6Qas*qmitRCn_!S4>E(-a3vg^+3 zy=gk9qSpX>;Y@znb#mW{2`=dSlF(NZoNo8Pq4*(0`nDMV=?nO2v3`QM?yXR&y@{wS z`>&d2T%}N72*HH{?_Yn#vj^lAs)Ms&{*-Q!D3lSCD za*~Ap)vEh#Igk371!tB3Pxg+00~WbYFTRj|3?!}AP(##er#cn2et$-DNs)=cE$FXg z+G1QIbOFZ%r?utqlNgKQG^9a*EC8k`Le)LI@@#yJ)jQa)+8*$Vf$lZJnP;y{Pbn7| zZFn!s(!F0V)?Vqd@(e|qf7r+Vlc*^1M)x75{clgkp7?aJPD#4L&wf#4YoT zY~|K!HNSrCQ(ad_>Aif%b(R>Uht$4|r)-5r45Vnj; zm}w2`L$N9XU+;j1VWzCVmib{G?waI~8Y_ImngLw(_6;!Z6nyQ@mjP%h!l|x_%2|5G zcJE8+#c*CPLh=mZ2Br&t`QYjIYW>bp>HR9T!QP>sbYR_#C}fjJJf1 z-SEw_x%|d>7gcSH{S9R17E$e1m*1b)GR7=>cBcT#>2uH63zw7dp7%Kp9(kp1IQe6J zC0oR>lvgzdH^BlyDcH8G2O+R?)MOXyGWCQ0|ltqQ;f}d0zXBLOg z&x*?1go$h<{KmL&|C4=1pFlacF?UW`jUWMqjEB>t4beM#+c`XrjXF6>r}FX&Ew!{V zKtyXG{ojvVw(^6xt0)Qo7~owr^hO3`hvDy8b&8L8%!2!wq$wE`q};Twk4eY*!t2$9 zy+3%JQJw&aR5F*{`;RK1O7fT$w{-58|J8gV@t11V?EgoBnfQ+a!)p`U1>Qw><<`8( z$WzSdnhAauJpxRPaAg)gCGDw{VUg<|I*jcz;_Ogr-h(Aw+A=0R zBB*m4R5eD_?nusbrp8<0LGJSnKmr64(?fOYqEnaglvNwA1*iC`(E35mX`ekLz=`cj z?be+Urw&k4c-wb~Qc%6a|J92rpJ!1R`$_b9)*{z?;2@leI$Cp)M*f#Y>i28WsqksC z`yWk$`d;AwKTYHRi=qPjS4D@3x~wHb8~^<@`U<1en)vKy%(XsaJ=J&-q;Pm>ZVQ1F z4&9<7i*hNDX%~;W{YCA`wVKqftDzAIs^+&UGdDt-Xgf%}dAuIW2A44h@cVV8pJtfB zP^iksNGhgp`pe_eEhj0wM%U^Rg(BcB$f#T^%Re{j(K=FU1`+(IWrU z=HrMpndl~v7MTNo_7XOEkV(1k`hMSF(j?Cs9S;?XJSntNJe#3mxjzR4bxknZWOVn9 z55;$PnkVPtC*Km|`@xJYEB?6jjZW-3g(o(O=%E)~b>(9fN!_0WKPMA8U|ZAVnM!OA zuiJ1(C0pmxYmI9~#vF}?kLE^b7VGebuw5L;g7phfWS{4W+!u;u*lRTIAC!51NEL}x zVVOIc$ylU?kaht>UFCo@1C-6~iLU{XzGHcaW!He>-mgb|4qaQj3D)~ttw}_09@_8t zaaD_uOG3?UKf1Z~*~*L**Q~oo^YLlDxcRo%E zhK8{ZrQ*YW+>rY&K{A9)jY$1ay9ND$j4Q(Q3~IJ*NQCwPnhtt?)7^#v6YL(#*!C(S znB69=iqIn%^NE?@=j`kXlqr4UGcDEELzIep*S}wh%CJUJTHcnBB=xCeaMzR4zUcU? zH-M%bQrV_#bS|;znd2aRt?0cF{o==+n_itD1sLq=#0=bkt_@00a>IL!y^-ANE=GbH z0#dq@&cIAxE)p6OVMA1BiVQ$MK-a2{@&iLkRZ3Fn7|BocCcycHZ- zn62H!*QAtZ8z>i!kx zl1R$*htd+eqr(@I`hAbe{Z`RbcSxoyh99h30KeC!fw$8mtR z1V|WjdtX!YzBlVtA#=V4I=9g?BddsQ(z;Q|vY!zmj}@0u@pODy5)Il)I>N6xaUkd$ zcEPqNX`Zt;sZx)b)}KccLLPh-Vdoh%jKLVw#x<{)DF4cT;LzoA&$qXEYT+@?^&Nuv zHN1dkjH?Tr0Al1msLALySAP)%C{*qT*cK3+mZI>0>4bA;l1(-e$y=8h0juY4z zu52pV=KUBHceT8#s$JK&0&@zneB&w6E|)68gHhDYqhYuG+(58R5pEcB zomJ3bRWOq*^r{`N!0#k~Dd$nScB40`xeL`P^6&+?haJ+WsHCLfgWT7OtjtRiLSG5g zY9Ww=+o(an=~h{TL*f0vd=y(Y>in>^z;!6Z(tyYxYDB&)(-~O@J0%ER%1sb6yPUOq z)%{@46X;)bSDQYdM)GK>Dq1nPlsC~H{#5b<_bx>um2YIKUNsZ;j_7Z!a1=NB;eH1AH~3^}Cd=Vs{eC6}`QBhuR} zWOqQVI%I}T((#`a=20US6Hy?CO2q8zEDLmo@Hy(PQfz?B*TrNLl&rxGciz8(^SReKHM8RD-C$-OxvBoDXF^P5rHvmh@puh@rRBS+d z`l5BO{zv1JR78v2+=1kh`-ct5i(|4WcP7O!&wxWANbBPy{`Pgx zfskGr8_N7x*ePBYn;4mSY)a^Am5TXH{YywIn`}C2T3L}rqQQk?hCChn7PR@9RDM*i zsxg8=lS76$&eiy7*_6xWd2NCQIXUTr(VZLO866e4_eNT)quAvY_DR$OKeL&;OBsXp zh7EIRdvDs}*kAPnQFi%1fMG6aeKDES5r&1PGp_d~LJ^XuE}P|A(t-TGu}k}WWdsnv z+B&kdZ?4+4mXeSuMeD7TO~%qF0?4b9G)O=nyFadAX+8C}?A26pp9;lmW#!hCj8CDU z_F&EU+NqP~ql_(qFq3RsU7Bkyv?(XNp)IIz`;QGUE)X zqm*Mi$arf4R{$&i;UyXYM}eWz>iMbEaY(86eM*xfXP+LoP(Azk!2zKL)=uYC^>jG7B?Psi4M*F`4fBsvQY$dnE z3aH`SeqG9F$3#u>5$8)-nkgLTolG&^c}i63%`dRqGDFIFG7@5WvnxzZ~6I|ONA4z0dBwL>)8H7XV$*YDH^o%f7d zA;d1gOqCL4nVkua6)m&xoeeCwFNp)?+bMHSpA!8OH2=Oa zyblQW)7AC65gjWmTzA(^{g0T+FP6k96$`A$Gej=&4=Lp5QBqj`_yznRe!%t9FvCsG zGE-S3@WPC8dwx)m=mL}eg#%1EAqXW#rUb}65$5B2`p(Mgj+7KLd1lU6TEHF}*Z^OY z%3nA-kzYcp!You%a`VDmxc*#HN2KrQ5htwUv{Fez2(_8~gHVKj)u7teS0r>tUF;Jx zEg!HY4Bg%(HBVr)PUN4J+PK1tFcb@K`?dBeuXY?!gKS^_{Myx`;$m+0FUWLG;IICy zs?)Xy`6OuP2ua6-bX~5n0q7Hq;~btJrvbhweiJ*VK-I#+3tPQb#A!lP%l&ejq^7j| zqht?~p~ML7g1maB#!lXrlsD2FuU3XNa;h&0k`!_@-I7Juc+TXD1eJ4Nr^z~@X}Qwo zOP9}kZSj|Q@DAhSw2xJ}s&|xc?U6gJhp~e#@#wl~jMuRafs`l%<(!u7oNpNI?}ax= zAM8feYjWHj@HW$AvST0O!(G6k+!+s_$8M03+B-%b$b9K*ykJ?d21Qcq8mEq^WALQo zU5$d0k}r^m%K@^?@mSm@;><(Gn;A>LU?s_)mqJvm;QWq&Q9e;M%mL7y!>+8~C03k_ zlE36agrIuA#y$Z&+RwtY5WDK~ee;kr7q2A&FQ!B@feR`K$gr1&)sJ2lxa$do6A#p= z?lzX6_%si1pR$Ri9$}7{KdjAUzxNpD<8&uIxzJ$*duD}wviswl*-ak|?~0=d@vbdx z(8x2U#d^%)pwq&?%I+U*c}Ozl(5*!%ELe%@sRNdIq%KcnWq;PaV3oTC&d?x#1-*i| z1Yg3qw}19FGh@in3tOI?ZlV{@$BBq07_@Lri`iaL5OUqUn^j${`*pxF|9+53IRh=v zbETIrY0Z3+?hI|8)N|i0-4-4u@;bSB9UnBU@DdLWKX>z6x6j8S-&ka`9|d|LBp>c03jCppjC>g) z4_Lo9vpswE44K|uHCa4azr9!9mRH<+`mC@{Ya+`42Lj$>vr5>HXGb_nKk;g320KRh z*b4H3NU6!S;!C@=C6;{SG&^H5RzV|m1-N7kUr^FmM0N*LS7Ry-KD`^? zyDMEwQiBx3uNhRU3D+WL<6K2QCV4#=8>>!aHtJiPS8IG0xGfaz7UqgZ3fCh5toS^8 z0W$k}LkBXv56QFje)7SK${*cGcK$Icb$FWlE}X=z23N-! zV#n+caS+4)m`CG7Kw6b`ix5D;y)*QWO9@m@_r1i#S-@Afd_=7$e>nQX<*@tW-FNOD zS);ROK0~AVS=+y!MM%0e+=oTn|Jit@BsesDBd1_2F>|}B27{X;hhXov=&*Yg0wxh; z_2Ipb!3fdJ%o9i!rL|i={eXTd>|NxRJP}iHU~@BTUr|1Ex1-K1xD8l8yv8dd-6MJ9 zq*>QD?rW!u%+)x~g9iz?qryg8iv@0KvCk$Dk{Ryak` z3y`obVETRS6tq5eVf=FCF|JMD@Gw1*y`2IajX)#|3G8xo)s)j|gvsY4iAd8Srmw=z zUp-nu?gDMD6-cArB<9g~Q#|KPva8-Z3v4;P8*j>3Ak8~TehpmE$?!2T26tT|Zb;+( zL@p9SMfjuze6p}DLpL6S_)in@cqz!9(@C^$epNy*G@qE~@%iV~+MbRzIcD!lx=$Fs z+pN;rq*B00yfnhfT2?=b5jO-ll3#s+Z*zfjHrdr0(rUzKSJD+wIQ5Og+DYq-v_< zNPJEOXS?@5G#=Qb&*!;V;kFiMY!_tKJ9@fZuCy8-j|$;S)=I?9J9{zzUhPu?xbsg# z3ljf8#o2K)oD!xD%AO3R|7Ey;DNEA3$q31Mm@UYwl-q#2)-I)EQ^x2*P;EC)SU74V zbns(V&#SZs(?Zv|`E{U7|4NE`h&kS}yx_NzQC>H;{!V$hhHGedq#e9`c1I?#$GNVt zyhuatN9Z_-m12j*jVY`=Xy1JXiYZj$@9orrz&=*n!skLkIVlO=(Bq17^ZaOIrFTW^ z=u@0dV!wZ*K@MpluB(ePHFNTZ-IKhJP^L+}e3C4<%~T4@TD$ywmHn0N$musvJ*}hf zLv-3TawN3gD|dI)O7$>!-#+h3=o-rqDu$m`WhlU@xWV`O1Po z+X&B5Q%s+mb-Otrom!E@{)iQ9^xXXV#rQWNWXkMApS$pz&2#- zrgQ@iska7O2m5Cp{FCo#yG-JE^s+L}GB+WNh8xGjVPj{~zLFE;&OZAWIxCFY;Z>W> zg+3amxqEN{Cn}Iwx|U4Gv58TL!4H4iHlJhdv!E%g%F_U7?AtqCbP}eHmUfx?(#~Uw zz|2oila&63k@SQPtY)mE>Xr#6WI{EQHt%k`!DFtzB(T~i#!1bc8>Y_d$}mTwp`5)@ zrgjThaOwLRB^z?u8BgWf>G5hZ-QHK8*o5R={jm>2Qxnp8y2S~Ei&yHritY|4{R*1ab)Ga6|`z0A+S(mF9vgE zRfVHj!OhMZXymRU$Vm>)r=Zh;M``U=g1)Emyo{2?akJBB&1>L5REQwHuY>c35c@*y zMxU6`6(PBS+@=wR#SFa$W43?$(j;d4XocfGaOHtPve)z^7febGKl0=do$r*7Hdx_)aQL{^BzB`)ll^3vFc#)EWh^&!n1t*DNnllCMtCK^vjPMI z1nj3|nM#=%RaLY#?gKre`Gs#VZnJd8r^&m%J#>oYq&FqwVT}E%{S{CIk1-uBH zFDhRG*zmS`9^2jbBjNRCiP38Z&ws+H)<41Oy_F)9voKo_a6BPs%M8KP9lRI;289dak@5e~kWXH(Kbp#$X_BzbIK{-v(O@bJ!f6AY0)L~ZbJ;i_dc zBg`FAnuhsMZ8fIQc5sW0rP%qg+)Q+r3T^+iWq#}0zJ-TEB@B?L?}Q7D?+T~o*$dFT z))0{-mhihFqT(%6V}#--$9}IsJzF@lt-4UZotukK(JO}YEDfo?yD28`yW_8iaHLk2 zSA3+YUi>NXd$||7g-}f7Cf^KJ8xa>=4Na|;EAb~Jg-6DRQ8b$fe*R28eEQv!%V2!v zsr9P|wVTn=^9BF{bm4aQ1$n)Z>0dD7`V73@9+PfC<}NzgnAk^PHsRSV_mxPNcn061 zax(gQd#QUrj3E2?^^!q?Llc43m6eDGu=_IzyC7+YR- zWmJFk^F{L~Zr$F;O@fEfK$4k$Hyh4_5;{x5GfnFl10?3ald)ie59UU)-%YK@b{q#BKnj!8iFd~9CM1tY5&`( zbL(K3c?U_9RsMRr8auGrcXLxKBXQe4WxjTONIEh#PoK z*4G!odw3VgUl5adD~d@nW7zCxy#`G%*nr_8({hZ$2_*L~YR7^Xv9>5JY38Qpm>lz6*rl)C6^SiiYE8d4`HrR{<5 zUX%8GZ0o(0bH_ZA;`%{NJK1FDi{>Be0PK^}OFQs(BddDjPlT&tW(@|F+ zDJSP5f6jOT)vfdjn9^6j7a!@<#{Q|cPHjdF4O`_P_K)+Rz30js@5}M-`)#Z0+L1E- z7DegWpIUtnV8tuyNYSa7*M@xp;|>baFzRYZeqB^mjDmObPg%k6_G4XpKTNzGS2K2% zsvdFj67&u4ZZ=rOhujNefZ&T>O4ROeG7ihvm6rpr`RNA?mHOw1%5sDlwLo}#1Z3%-v5qS zrsdb3>QQ2O++GBobVenJH_wEBaDZgYM2{^ACuC@4oJk|h+ zpDQ?<-?~q4{c&k5#w>jzR_>Up@IyJU{}J>OT*8T{^sj)1`5=)MFiTudgTURM90_vE_E%@rK-oVb@L~$b}&de7->z7@^0Y&_}a)q=ye-BUDTR?Zk zO~|kNep^4RmYTM&NMI_G{o{|33s>G3>#{_w;L;H*^d*=Mf_4tq2-EJaZCYg{2Wrh& zAt*Xo3m0O706?ax9?Cp_BJbH*d?za7@Wwv6nTDuWO6wCPuP?Q#nY$HxChalU!#;*R5tU zv$*+&*4$%9HPD&H2HR2ZH8Kv)-%GZFmKkn0fJ0`y>yCMj8nqZw0w+*bbzyD#)Xg^> zr&Z7<@@u@#dlzVTuOn_=W;{+F5eQevJV_gT%^(+_Ka9fwqjX0F*3I_9L8Sy?&Y12vhiK7aVxal%MZsLUY2!muQN>Z#Rd+WT&2OL zUFb$DOUsZy{jFBeF27>M`ZxQyCTX))NONDxv0O}yn*ia+i~X=a-_7e;3Vv;RK@EJ< zn(uE7tY*E!0i(*Yp7bU>?EXvF0}(fcvdkDHH>FI!sKj#`Od8Hxkvh!;XD8O{@zgJi zTh$v2lm@-`n!76}&KmhRFrO#e9v5Trz#(%mY|$mxC9%AYQpZ}4AMW)B~+2g7X(=N0pdJ)l&W#q;`TK1$Xs=xo((&n6L}cIIGzHk0L6b|Xotdg3Hif59IQ|-r68;K zM)t0M#`P(Uk($bg{rAOZ-kR9{WqvdP3MM|=n(hsGv-$`8G`EX>Tz&;|@Y9-cXC_9L z#_P-v6;8mR6yfMLU1fYA{fvEZ7hTmaUly*tJ!HD;jkx=t0Kmq-|Jwotfotjb9}xLJ z`TsB6{^uMZ%z9usqh=2VB=Ag?1KbEJu=9>yVAnW5|9T=YPg=fw^(gU z#&Ao&=_kIF8H0TJ4hznw3%)>j_*@Kl$uVz)(~rn76THXrF=v-D7U%Sn465O|*f(8? zwQk;!I7KMv+y#9T??k?Z817yJ5xrxQBwS%yq{&}JSiWBpgRLF@^CzS|o*l<*RM(yz zVhS4P;?K!&yGgkrzS`hHT3^MTIWHyHUX)KpfkZ+I^J%+`vZnw+Xc61~7LzP>JRx5g1bhaBF-`ZlrrO*C}f<7J0pMK6!c_>2KcA)-* zuIlY4{t!z<%vsf|fNDW{3gM*BtZK|C$I#xkG2>x3GoX~fY}AzBhYmaxE8wbefpv`z zVj8Dt?Z}LW>>fD$7U{APTmls*2r^92|BV~1<2R$jQj0)nGs72W6*BB;XUw&f2dxp# z9MR7{4XXmA?G2%_MDlPYE6$<~2W9$Plz^8vL*;1S={Wduj{O_P6aSESdA1vWy*2_z z`|hp+{KJfNzBhOqN-}#u{Tl?1@G3%|e|v6)E@gitlhJ5o?CIV}s)Tk)2@cb0rLQlk z0Vx*21Dik7SOxU;34POa2u_!B0TK)ukVuQYi@%o1-U}+q3KdPeWL+vYAdMnRQSE&cRD3{|-%DpM!X7~VBr?+T9{4%J!b-Rr6#+XkmLU)Ho3Hg*6wrq?> zp5GKVH<9%pH+=}091~I+cLEMyXyc z?6eHSgxhWFGZXv7{Z&i;b{gRkjSi?3g2%QZ&JbYse0uHqWFUTm3n8C`FP;hCB+2j- zrqU6wAYwhyljEo7P#Lgw_9=n@gaI!rTp6=5Im}72_%5s`WZ#<2YtMQWp_tq0p$p&_ z)zP5@e%iZk_jq$X%F%qY3y$p`m)9^(z*Ngter^N3p^inP7R6psMjEzx;##@CeHywL zAMq>HuhRK?eehWe)(r=U+jTagDcll%T}CI1 zafzxTy6IxG_cAR6hhGGB<*B(vX^#KOZ^jf&UMwuCqVR7PfWb+jWd9hRcHIP`qBDaZ zJuan&7ciwB=$P&&H*N|Xi!lHnR-h9%F2uPnMh@ykV&5VV*o)tXzI(4RIi|O45bP#I zUm|**#!Tk9O->?-U3F$ zAO6pTB=A2Dqt6dh0*_VVfT)9~9Q+r73G$k;a$LvY?>8Nx>^X0Xj$%Ds--rodI)h(O zHLfuH^LW>@-vr5L zsH1-!m#M@zkS|Q0W>mY0Sw3fq9-&}Kfnr2KZ0CH8`=2DB} zK!VhWB56Nhz1q1N97LPQVut#vyqLQ}!D>P&w1)=Ti#K(0Hcfa|V$wg)T zwx}#M8eaFem2yBWGO86Ya4dNt5_R2gODn(nb{CJq--o}K>(0l+vT#KH<NJ2EI-Tao(VW?=-t@FiS!(Q@}dI3Hed!8B98@4KBB(ZLFCP~=sDEI zua-KI?f8C~QvzPy2Ze&X_@WFSet0wAyye4@v|9?YLy`paY|Y0V-FgG&0d!v^a1(Ht_kU*#TCr0*5Atsbvu=8Z&N!7gsm->MSY{kTdcGlxQg zAe-)UL!MgxhwQ>jBhe_oX?S}!H0hkzQVL4AQOT_%7}ZJvWtx9@QUeW zXI7HjJ6CBs*m$;7&@i`cu8rqHZr!iU{_7{!u6pAX_xkWm=v$oyDfmD7MjVwKiS_h$ z0}Yehtr_#PJLMLFzn$}cr`-Y7@x?tL#+R*gy&S`~o~jd3vpuiq_9bLnP>v{@Cyfvi z5%KZYpI=ap<$A%x{;2)M?K!mb<&+Sr4<@$Q7S8tTkdXDK@8tq@L| z_4|WCQk4s7@!m714xlUs(Q1%I_*4RPmHG%dFDZdU`nN6Hv;5CeKtMKGZy20_^IPj& z9FnvfAdX&@o3mfrj>!Wa5J2?M>fmf>AF4g&3%#rH3l%RInEQw@Mb4W&G0*2+9(N|H zkLE$+mg+0?CE9v_qoW-FjPTTG{C&@i!6_jib4A{CIM1`Ov(=@%enq_bx;t~RRcd2{ z=3w`@5fb3@RBS7GW`u$QpVMhGRPI-1FwsMs-|E)y-*>gZ7P7K_5Q0b9$0eCRyQ^$IqfU0X*XX#s@8ry>5AYy>8?1Ihw%73FKBV=X zFhwEmdr+}$y%(aAW@$^ASF>js+-SV4m=GU-=g2I|evzhvK>J)2B69OAbjZXwy;M(z zx44s6X~8u!3%8R{ak$GG)DLHNiL#$%X}3+vL9cR3?6(afUxykjue!(Herzt1Wxj+1 zNm#poQ&Sped%+)|JSuj$TD*UGx|fdkIV5Et&C|7N34vsBa(8rg-r-k|`pU>Z*k~=Z zl+{=P^pSn_$8J4IFTd`Kh)ETBTJFVT8E~)8Q;?I8Pxu9`kfsKqrS#yD zBe)#Ocl3DP9HKpuk~A!2-rm_WIB&U)HOJ zY@SWpH#m<+C*KHH$tsK65(hl>33BBLm+I$(v}&K+Un)(PG+>iCv68jJP$*Fm49of9 zVt!d=kXJ9hG|#rasc_=kF2p#iWuRW!#!)!#|FB!VV-f&BILQgzL26!B)=rT0pbL&Y zePH?VDbN+hTEmza1 zfkRlB1|;w8MDjDoC8dPVHVKIvc~D76bT7iM0PkBM5miO4r)k?|ypAyN zc~>wWBuj@KxaQZvaiq-WjoD{4$&^lC&QCEtyNjM$fsaq|(m(yYQpTz^HqKeM|I^_M zUKHX=7UaeS*w_qv18B*Q4g=23dyhJ-%v8{ba zU*_No*S>6Q%;&h0sIH5ln8i(oh5xIotAL6s`1(sp2}ntIi-JmbmvpE|DIg#X()j>E znk7WKRgfhmrIwHm>4p`S?p|{F9{=;5@BGiV=e#{{-Kow;*=KNV{`$rD?A z@6}x*Z!dKYzDyYc@{jJ#91`y)u(Z{{K1%%pQ}DBA(|X**h~xH9j(qoG)A-d45I2LP z7BQxbEKET&{m_&kP5(d?DB8d@SLdjt;>RX^>CHAIioE|NW1y()XIq!HFbmt8=&c`& z4u}?pNPO{?xJfpyeQ&&xPt=;&;*HqLH8;q$AW9u*%FB;b*v&-YFAjbMa15oUXovRo z^gv3|7GtYW!$GpUzWiV)w>g{>sK1iP#IZ94!EYCK})F1oPZImQG;VX-Rl|7f%HTu?BUx_Q{l@h$aTM@!xe+sCok&;OjRJJzQzHyq<9A@aUoL@&GBZGu?~ znbgB%r^_l7qo?!vHVAOPtyO*2CVEfcOPt)@4o!mX+-35zY5?X#(=+`O_nLx^*(ea< zxZ}Db(BzPJ-E>U?VaCxl2=d#xxXfJ!c6&)5hFe*Tbjn~r{%qMghAiy2T`ctPSENAl?I+0P)3uRkfAasC}>J zy`;&|6?wDLdZRuMc zyM|xpm4G0NfB<=wwlpPadlZ01^00R)p$PM`o6e^)Kng;1)!V#Z#k6!H{y~$I!WvBE zVW?V>C6qnmc3tM3VPz_wby-}6|M`l#jpJ9hd%!>$Y`pKZnEdfNNIqd_z@2n>er~?pEozWL=Og4rUR-w0`G6- z+O+)z7i|w@X3kXl&Hj=MG_k*1(qE&HhnXE;%Z8(gzti&U->nPo)*2BJnAYoaFvVV7 z!o*Xg%i5cDi@$|`bKecI?#x{lzqYA#2EDYHtcC~qFf3PF%Sy*>PDMp!xw$|H0Fg9{ z`;W@wf8vn4dGw^a+&kMn$9uaAYjZ^1G$W8eqeW!Bi@9_$Elvr;EB0^HI*zkYrGCau z)HHy;NXdu6aH|MLpV}?ch+gi7PdC6R;YPN8JD~hbYKGBZbf`L<4@JFpcg95PWsmH( zW4|R(ppMAqtVv_-K}LlS8X&gMF9RC`@od8@DoCxf9_@~J?$NU%W8o&e%6-esk3$~Z zVwY6&r`y||HzZQKg8Km^GF&&Fon)?~Uq&`|;#zN|5ph?(093-G+IRJ|J^n`<4wYF* z=n3)wPBO{%63g!#yQwG$L2gbtnVlMVp^%*&AI~g|K2DiFcqufLl@tlB zeT_W30&>nCl{^eX7E13Jem@tt55XOISv?HdpBKwdV{0ZJ|(QJC#( zH*IFK^O?>m{@Y@kXxugkhp>Zh*A2$4c4%U|-gyOcf1tPkPfxS59uZ-2hgHeJ@$a@J zBUIJ?UySYl$H@LWaTx%s|99qc55Ldln)%feTd+?}z;;%uBm=5Iwx?dt#3!6BqPCNj$4%CQqY~?qhPUNyBb+whoV|V17cAq z3!7jacCJt2)TFH*rJ$3~CMz4mo@yA0Hoi;wbSfuphKvzB2oI&BmY9=%J9beQU*i>zD7cBpl=fSbnEY zlDKz)16a3~4{j2wgD{o?xo!;uGr|u(( zptcG9j&&dFF`E$?v}*S`=I=<+Gb>e6xfwmIeR7YcJhL>j~RMY<2vVi zc~U)=u%utJxAs7I%%sjH6MvHCXkR#jSm@hgd4GP#>90F9QJPPkrvgt zvx&J$b`5dM`{@fkI&)U?^CMISR{sWlZ=t`NRDa~aXV(Ku8cywWpLz;z*~ejErb+-T zw03cA9|V`vWS)>uEw+4Ztl?%i0Ta{CyEEus`bb+#rG@oUd!Gw z5yHKY*D2R=IQc>kp>tyYo#wSAs>HaeiA|Wl0)L9(C^2;?8_M!(C}1d zrTTTPs;Ult;^V-r;$%nmwd;Cs<;^K&D(5ym!zdg~i?rp^=q&k(Q&e2HoHdxdQJMOu zc@j`V8}h_F z^W{e^gJ?7 z0hCa0f6Z_9OJq@*XbjlQ;XuyU$Zn?kgd7*1qPrwR|LbX503y5P))gel#K0S0X0DHx zFr@6+DsCKi8jZA^7|lWgmvrSRLc^9F-}8m%`4~J_dPsXMD(jp1w-evOz%E+Kdy7+D zTuIp7z4g>}{?HqVWKdl|GYm=YDyov|_GI{SJ|YQ-ENSA2P#;BxW6iyLE`li zaQHq(Nehb40Z{|eg8oI10hBELSONd{_n)ayfh?sBze{WY)@+-d+O35=zJh_J?_<;oh>w?m< zsnNG}q0E#`5*f#SXkb4jok_x8^f|VYJTA1dm<)a2^Kw$c$%vJeJy=Hah~yOm_rLoM zPLSFI8esBM5uq#{XeJVo98h0h-{GUR98%DpL_|~sd<8)ZI}_McFwZiXHWJm3fbVIa z=L10_NC2sXxV%>l)+Xj?Ioa$l{=8 z_Q|QNV5ZnhSugqzt@C4482Pv~KM#9ol7suw?>V50DV`mwRn!Wx@c2F78c<$f(w|E`1$+QyjM}N@#fi1%i>@+iSEA*Z$yq zR>i!mD*s0Vfeo#8Fy|vo#Ex{36mCnnGI?09wqZcc^AvlDJDvod9>!TA?6j5L@ny#rU1(-)#unMok`4;dS69kWo%Fbp49hK=0 z8<2?vwC68jLDu6|XTZ&p3t6Hby*8_>B+Z9hCWxv!e5&QXnEyGs?8*f_%MP$ zbYb#i$QLGqxFAn7Clr}T2y8)=W*kC_3H(3G8>Cov`-Z$D_bFiqtTO@ zO^7kNtO)~vn^r2$qYm7(c4gdAM9VfQw@i?KVXqhE-hT@natiJ;l^ABrf0y|+lwX(< z1Xm`3fJ37oU@lOQQ7i;y=ZI1BvlMreM=dq5?@dqtAPzfzIye6Bg0fDDedpFmnR)K7 z=rw$&m>zz@hmRl7EuM$ZU9D`b_ac{BZoV;IG5!We7VYZQjVd^HxGG$PpRwhk-DX(3Xy^q!Ji94>_ZXHoYh ziFEf#2y%F40?hyNUy^_S?T_VxgmIpFe{kagKBWKEwb|(R)py{d1W<{cRD9SFcTW#< z-!@mn+qQL4JzWwAcer2@it0DNIFd+xd&3W52JIDzj6d|p z&or%mQ1P-_L$2Pt$$(`igBP-JYB7fW#?a)V%Kiq8OS<5Zth-V;E6r;Mj2>Mz2NHDs zUmA39{W|1-)1Wan)y>SZwFm{?m;&p4!scc7tFRVjTXVO@Bb1CmfLfg_eYV{+7s21Hme-%*@4hk5*8goHEiR z;4ypeq?tt~w&r`0fr*-knCfP+*9H@9;J5jk+y@~4LemPDuh?o2dn}Jv2B&U`z>Lw2 z9ZY3tU;E+jdohnPLk=xJR=kXA-J=fnv?nQ!LO~!Fvkor{do9VH-JTpnR6kUCBEgEW zu)si~y?QI2SGQ-cPEOpH5d2L+QR%_}S|+e@`_Wt^cQO<$$lZ85({i+n@Hz zojEq7a0p~8S?f_)$7#2|zS<&X;K>83VB`z=SP5hV)CpZ*1%+7j#BNB1C4HfTz;5;nD);7BA=@JJvpOURe4&ylCDS@Nd}sdUwgswF~Ny zvf#ZGwtfq5t|Eym7VkLU=bT|@@4r_iQXlNE7JtAK`QSdq{DwxF-c}E!wkY1NQ@5m# z>BDzBScgWvzP|7} zoX{cvoQANgi2~`rKe;SDn^O{kB{(k>)G^ zF*l>MRb;kCbunFkgHK9+yg)x6!j>~*xSn){UkurO`scYVASdo5@@2|1{_K0~N-EAY?=8C0&OT zbUATcM3b!E2n!!*oJ#y4sH>~{j9oF(h{|<9uL;l0qPoBK$9e zzBmWQoVWYQKg>lpW&aXG^pi7e&=V38VhOQ@;03xIkmcgm%CID=D7$I7!orlv0zw&z zFa-tJGCI1q&NrVFKtVS$$gQ}0X8W}RZN}DRjeds8uV?9Qh=!{OTL?-i z<9vOwu1Lxwv3rVAJ#marv1Dh$dHZwt389He{y?>$$Qym9)fy4hzdhH)%P=DRfSC=3 ztWZHq0vWg^542=Kc9xsVR7=P~re)LkeslADGhpKk-!`u?>TJ5NhVqqqn@Z4nF>Srb zeY$sbFd)eHt>|~D1VUyg3P&I{@Wz3F(d(m~B_^yE-Y>wvcmF)ZUavT;St71zOS}Fy ztTZKysdeTR|L5qpyyrAS7k)GPRm%0sR27a>{U%5aHv2duRac~U@KVO}C>hD2PdHUe z4M2u%+9{q;O<}kJq^tXFY?0oaR2hA=8L&3-6i&7ZPnCQ^V(j*$ z@+)0r9GT&$+hxqc(aTsD)C*DLN2+QWt-XJFdwJ`_E*r#)6ufYutajO z{NXFuOM^ZBHItW=e_M{CQt(Vo+$BCc_fgl?64Zl><{c~&$UB*qw^ZCBVlBBF>V(>> z#vgi3DMq3BYa@;6F8Q6@5D3$}WJA0>8YT z5lrcYop{&C6psJVb^ht--StOr{e zv!9@HzMXaHl{e0U@8)WM6T0HmIx~gSn*9(3wPlfD`Hv+#c)L{eI}$qbDIHqXI;p9) zqrb6gCPXjA_4LMcjR4rqqOScix$JRZpPFkbndO@XZ+!e8BMs-0CRRvi=cYl+ZL{Q+ zB*#DgRQbS3sp;rVqt`FrD{Hc&L{~GJM116^;hX9hP?atl|D+%HetPZxYLCBbkwIl( zUgCR7twY|4B3pTxF7Kv{_y~x4k8uhZi1beV(f#PeXWK;z0k{|VAkEBH-N3Ep>DS@x zI5(jq`{m;osWP%dru?eu)7bT!l`_X+=8uvsU+X0vhrBN?|93+y*U#@6{(_XOnrXWK zB0|Lxs`{3W`Fi)8nlPZ9I)By4@2uXX}I1s2Y({#Lt$3ynUq8!0R5R00ZO?3!PNcXak4uB~(=YMs1Q z2L^tBKBD#5F7oVDvZ>2JlApLbLczs_ON+cBY))2 zCUo%tARAfg`V-@{w7oelSx}h1{MjVtthbkNtZEK-Ib`WH#Eeg(>8z3d*`Vd8n^uBM ziaFh8>Veefbe*0CB+G{7YpYSPX|%UL;$z(IG07@&hEdcYkQ4- zkBEu1DC`@}vnR}?)J|xZNSy<2&!YqP%Q*4@n+KpBG#NZ+qJ75@Hq%?r1p!}bO82xB J%jDmM{0|6dsDS_g diff --git a/paradise.dme b/paradise.dme index b4090ec2c83..399c9fdde96 100644 --- a/paradise.dme +++ b/paradise.dme @@ -250,6 +250,7 @@ #include "code\datums\datacore.dm" #include "code\datums\datum.dm" #include "code\datums\datumvars.dm" +#include "code\datums\dog_fashion.dm" #include "code\datums\gas_mixture.dm" #include "code\datums\holocall.dm" #include "code\datums\hud.dm" @@ -1927,18 +1928,17 @@ #include "code\modules\mob\living\simple_animal\friendly\butterfly.dm" #include "code\modules\mob\living\simple_animal\friendly\cat.dm" #include "code\modules\mob\living\simple_animal\friendly\cockroach.dm" -#include "code\modules\mob\living\simple_animal\friendly\corgi.dm" #include "code\modules\mob\living\simple_animal\friendly\corgi_powers.dm" #include "code\modules\mob\living\simple_animal\friendly\crab.dm" #include "code\modules\mob\living\simple_animal\friendly\deer.dm" #include "code\modules\mob\living\simple_animal\friendly\diona.dm" +#include "code\modules\mob\living\simple_animal\friendly\dog.dm" #include "code\modules\mob\living\simple_animal\friendly\farm_animals.dm" #include "code\modules\mob\living\simple_animal\friendly\fox.dm" #include "code\modules\mob\living\simple_animal\friendly\lizard.dm" #include "code\modules\mob\living\simple_animal\friendly\mouse.dm" #include "code\modules\mob\living\simple_animal\friendly\penguin.dm" #include "code\modules\mob\living\simple_animal\friendly\pet.dm" -#include "code\modules\mob\living\simple_animal\friendly\pug.dm" #include "code\modules\mob\living\simple_animal\friendly\slime.dm" #include "code\modules\mob\living\simple_animal\friendly\sloth.dm" #include "code\modules\mob\living\simple_animal\friendly\spiderbot.dm" From b4863db46f3755e2cf5c52bafa6fa8770d4ff4cf Mon Sep 17 00:00:00 2001 From: Fox McCloud Date: Thu, 5 Sep 2019 18:44:55 -0400 Subject: [PATCH 2/5] further tweaks --- code/datums/dog_fashion.dm | 26 ++++++++++++++ .../objects/items/weapons/tanks/tank_types.dm | 1 - code/modules/admin/topic.dm | 6 ++-- code/modules/clothing/glasses/glasses.dm | 1 - code/modules/clothing/head/collectable.dm | 1 + code/modules/clothing/head/hardhat.dm | 4 +-- code/modules/clothing/masks/miscellaneous.dm | 1 + code/modules/clothing/spacesuits/hardsuit.dm | 3 ++ .../clothing/under/accessories/accessory.dm | 1 + .../mob/living/simple_animal/friendly/dog.dm | 32 +++++++++--------- .../mob/living/simple_animal/simple_animal.dm | 4 +-- icons/mob/corgi_back.dmi | Bin 6390 -> 8583 bytes icons/mob/corgi_head.dmi | Bin 15791 -> 18637 bytes 13 files changed, 54 insertions(+), 26 deletions(-) diff --git a/code/datums/dog_fashion.dm b/code/datums/dog_fashion.dm index c798f352189..e8436930726 100644 --- a/code/datums/dog_fashion.dm +++ b/code/datums/dog_fashion.dm @@ -45,6 +45,10 @@ /datum/dog_fashion/back icon_file = 'icons/mob/corgi_back.dmi' +/datum/dog_fashion/head/hardhat/apply(mob/living/simple_animal/pet/dog/D) + ..() + D.set_light(4) + /datum/dog_fashion/head/helmet name = "Sergeant REAL_NAME" desc = "The ever-loyal, the ever-vigilant." @@ -149,6 +153,10 @@ emote_hear = list("lights the way!", "illuminates.", "yaps!") desc = "He has a very shiny nose." +/datum/dog_fashion/head/reindeer/apply(mob/living/simple_animal/pet/dog/D) + ..() + D.set_light(2, 2, LIGHT_COLOR_RED) + /datum/dog_fashion/head/sombrero name = "Segnor REAL_NAME" desc = "You must respect Elder Dogname" @@ -174,3 +182,21 @@ /datum/dog_fashion/back/deathsquad name = "Trooper REAL_NAME" desc = "That's not red paint. That's real corgi blood." + +/datum/dog_fashion/head/not_ian + name = "Definitely Not REAL_NAME" + desc = "That's Definitely Not Dogname" + +/datum/dog_fashion/head/not_ian/New(mob/M) + ..() + desc = "That's Definitely Not [M.real_name]." + +/datum/dog_fashion/back/hardsuit + name = "Space Explorer REAL_NAME" + desc = "That's one small step for a corgi. One giant yap for corgikind." + +/datum/dog_fashion/back/hardsuit/apply(mob/living/simple_animal/pet/dog/D) + ..() + D.mutations.Add(BREATHLESS) + D.atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) + D.minbodytemp = 0 \ No newline at end of file diff --git a/code/game/objects/items/weapons/tanks/tank_types.dm b/code/game/objects/items/weapons/tanks/tank_types.dm index a181125caa1..fc4f3438aa1 100644 --- a/code/game/objects/items/weapons/tanks/tank_types.dm +++ b/code/game/objects/items/weapons/tanks/tank_types.dm @@ -70,7 +70,6 @@ obj/item/tank/oxygen/empty/New() desc = "Mixed anyone?" icon_state = "air" item_state = "air" - dog_fashion = /datum/dog_fashion/back /obj/item/tank/air/examine(mob/user) if(..(user, 0)) diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 92f2454957e..c1d3764db3e 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1832,10 +1832,8 @@ P.universal_understand = 1 P.can_collar = 1 P.faction = list("neutral") - var/obj/item/clothing/accessory/petcollar/C = new /obj/item/clothing/accessory/petcollar(P) - P.pcollar = C - C.equipped(P) - P.regenerate_icons() + var/obj/item/clothing/accessory/petcollar/C = new + P.add_collar(C) var/obj/item/card/id/I = H.wear_id if(I) var/obj/item/card/id/D = new /obj/item/card/id(C) diff --git a/code/modules/clothing/glasses/glasses.dm b/code/modules/clothing/glasses/glasses.dm index 7eb4f32ac3b..b5ac9aa405f 100644 --- a/code/modules/clothing/glasses/glasses.dm +++ b/code/modules/clothing/glasses/glasses.dm @@ -374,7 +374,6 @@ flash_protect = 2 tint = 3 //to make them blind prescription_upgradable = 0 - dog_fashion = /datum/dog_fashion/head /obj/item/clothing/glasses/sunglasses/prescription prescription = 1 diff --git a/code/modules/clothing/head/collectable.dm b/code/modules/clothing/head/collectable.dm index 2939cca4cb1..2cfc2adccaf 100644 --- a/code/modules/clothing/head/collectable.dm +++ b/code/modules/clothing/head/collectable.dm @@ -38,6 +38,7 @@ desc = "A top hat worn by only the most prestigious hat collectors." icon_state = "tophat" item_state = "that" + dog_fashion = /datum/dog_fashion/head /obj/item/clothing/head/collectable/captain name = "collectable captain's hat" diff --git a/code/modules/clothing/head/hardhat.dm b/code/modules/clothing/head/hardhat.dm index fbda3788144..9109821937d 100644 --- a/code/modules/clothing/head/hardhat.dm +++ b/code/modules/clothing/head/hardhat.dm @@ -11,7 +11,7 @@ flags_inv = 0 actions_types = list(/datum/action/item_action/toggle_helmet_light) burn_state = FIRE_PROOF - dog_fashion = /datum/dog_fashion/head + dog_fashion = /datum/dog_fashion/head/hardhat sprite_sheets = list( "Grey" = 'icons/mob/species/grey/head.dmi' ) @@ -78,7 +78,7 @@ max_heat_protection_temperature = FIRE_HELM_MAX_TEMP_PROTECT cold_protection = HEAD min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT - dog_fashion = /datum/dog_fashion/head + dog_fashion = /datum/dog_fashion/head/hardhat /obj/item/clothing/head/hardhat/dblue icon_state = "hardhat0_dblue" diff --git a/code/modules/clothing/masks/miscellaneous.dm b/code/modules/clothing/masks/miscellaneous.dm index 3a1a2b05c4a..924179bdd4c 100644 --- a/code/modules/clothing/masks/miscellaneous.dm +++ b/code/modules/clothing/masks/miscellaneous.dm @@ -228,6 +228,7 @@ icon_state = "fake-moustache" flags_inv = HIDEFACE actions_types = list(/datum/action/item_action/pontificate) + dog_fashion = /datum/dog_fashion/head/not_ian sprite_sheets = list( "Vox" = 'icons/mob/species/vox/mask.dmi', diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm index c085aea93da..b56d2122ee8 100644 --- a/code/modules/clothing/spacesuits/hardsuit.dm +++ b/code/modules/clothing/spacesuits/hardsuit.dm @@ -186,6 +186,7 @@ item_state = "eng_hardsuit" armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 75) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/engine + dog_fashion = /datum/dog_fashion/back/hardsuit //Atmospherics /obj/item/clothing/head/helmet/space/hardsuit/engine/atmos @@ -207,6 +208,7 @@ heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS //Uncomment to enable firesuit protection max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT helmettype = /obj/item/clothing/head/helmet/space/hardsuit/engine/atmos + dog_fashion = null //Chief Engineer's hardsuit /obj/item/clothing/head/helmet/space/hardsuit/engine/elite @@ -229,6 +231,7 @@ max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT helmettype = /obj/item/clothing/head/helmet/space/hardsuit/engine/elite jetpack = /obj/item/tank/jetpack/suit + dog_fashion = null //Mining hardsuit /obj/item/clothing/head/helmet/space/hardsuit/mining diff --git a/code/modules/clothing/under/accessories/accessory.dm b/code/modules/clothing/under/accessories/accessory.dm index 3bb9c2e3686..9b1a0dbc146 100644 --- a/code/modules/clothing/under/accessories/accessory.dm +++ b/code/modules/clothing/under/accessories/accessory.dm @@ -320,6 +320,7 @@ /obj/item/clothing/accessory/scarf // No overlay name = "scarf" desc = "A stylish scarf. The perfect winter accessory for those with a keen fashion sense, and those who just can't handle a cold breeze on their necks." + dog_fashion = /datum/dog_fashion/head /obj/item/clothing/accessory/scarf/red name = "red scarf" diff --git a/code/modules/mob/living/simple_animal/friendly/dog.dm b/code/modules/mob/living/simple_animal/friendly/dog.dm index 0a093af4596..3d3f3c62ee2 100644 --- a/code/modules/mob/living/simple_animal/friendly/dog.dm +++ b/code/modules/mob/living/simple_animal/friendly/dog.dm @@ -21,7 +21,7 @@ . = ..(gibbed) if(!.) return - playsound(src, yelp_sound, 75, 1) + playsound(src, yelp_sound, 75, TRUE) /mob/living/simple_animal/pet/dog/emote(act, m_type = 1, message = null, force) if(!incapacitated()) @@ -44,11 +44,11 @@ if("bark") message = "[src] [pick(src.speak_emote)]!" m_type = 2 //audible - playsound(src, pick(src.bark_sound), 50, 0.85) + playsound(src, pick(src.bark_sound), 50, TRUE) if("yelp") message = "[src] yelps!" m_type = 2 //audible - playsound(src, yelp_sound, 50, 0.85) + playsound(src, yelp_sound, 75, TRUE) if("growl") message = "[src] growls!" m_type = 2 //audible @@ -69,7 +69,7 @@ if(change) if(change > 0) if(M && stat != DEAD) // Added check to see if this mob (the corgi) is dead to fix issue 2454 - new /obj/effect/temp_visual/heart(loc) + new /obj/effect/temp_visual/heart(src) custom_emote(1, "yaps happily!") else if(M && stat != DEAD) // Same check here, even though emote checks it as well (poor form to check it only in the help case) @@ -155,16 +155,16 @@ /mob/living/simple_animal/pet/dog/corgi/attackby(obj/item/O, mob/user, params) if(istype(O, /obj/item/razor)) - if (shaved) + if(shaved) to_chat(user, "You can't shave this corgi, it's already been shaved!") return - if (nofur) + if(nofur) to_chat(user, "You can't shave this corgi, it doesn't have a fur coat!") return user.visible_message("[user] starts to shave [src] using \the [O].", "You start to shave [src] using \the [O]...") if(do_after(user, 50, target = src)) user.visible_message("[user] shaves [src]'s hair using \the [O].") - playsound(loc, 'sound/items/welder2.ogg', 20, TRUE) + playsound(loc, O.usesound, 20, TRUE) shaved = TRUE icon_living = "[initial(icon_living)]_shaved" icon_dead = "[initial(icon_living)]_shaved_dead" @@ -190,6 +190,7 @@ if(inventory_head) if(inventory_head.flags & NODROP) to_chat(usr, "\The [inventory_head] is stuck too hard to [src] for you to remove!") + return usr.put_in_hands(inventory_head) inventory_head = null update_corgi_fluff() @@ -201,6 +202,7 @@ if(inventory_back) if(inventory_back.flags & NODROP) to_chat(usr, "\The [inventory_head] is stuck too hard to [src] for you to remove!") + return usr.put_in_hands(inventory_back) inventory_back = null update_corgi_fluff() @@ -266,7 +268,7 @@ return item_to_add.forceMove(src) - src.inventory_back = item_to_add + inventory_back = item_to_add update_corgi_fluff() regenerate_icons() @@ -313,7 +315,7 @@ "You put [item_to_add] on [real_name]'s head. [src] gives you a peculiar look, then wags [p_their()] tail once and barks.", "You hear a friendly-sounding bark.") item_to_add.forceMove(src) - src.inventory_head = item_to_add + inventory_head = item_to_add update_corgi_fluff() regenerate_icons() else @@ -338,6 +340,9 @@ emote_see = list("shakes its head.", "chases its tail.","shivers.") desc = initial(desc) set_light(0) + atmos_requirements = list("min_oxy" = 5, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 1, "min_co2" = 0, "max_co2" = 5, "min_n2" = 0, "max_n2" = 0) + mutations.Remove(BREATHLESS) + minbodytemp = initial(minbodytemp) if(inventory_head && inventory_head.dog_fashion) var/datum/dog_fashion/DF = new inventory_head.dog_fashion(src) @@ -684,14 +689,10 @@ if(!emagged) emagged = 1 visible_message("[user] swipes a card through [src].", "You overload [src]s internal reactor.") - spawn (1000) - src.explode() + addtimer(CALLBACK(src, .proc/explode), 1000) /mob/living/simple_animal/pet/dog/corgi/borgi/proc/explode() - for(var/mob/M in viewers(src, null)) - if(M.client) - M.show_message("[src] makes an odd whining noise.") - sleep(10) + visible_message("[src] makes an odd whining noise.") explosion(get_turf(src), 0, 1, 4, 7) death() @@ -708,7 +709,6 @@ A.yo = U.y - T.y A.xo = U.x - T.x A.fire() - return /mob/living/simple_animal/pet/dog/corgi/borgi/Life(seconds, times_fired) ..() diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index d268e864d52..299be975def 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -590,14 +590,14 @@ /mob/living/simple_animal/proc/add_collar(obj/item/clothing/accessory/petcollar/P, mob/user) if(QDELETED(P) || pcollar) return - if(!user.unEquip(P)) + if(user && !user.unEquip(P)) return P.forceMove(src) P.equipped(src) pcollar = P regenerate_icons() if(user) - to_chat(user, "You put the [P] around [src]'s neck.") + to_chat(user, "You put [P] around [src]'s neck.") if(P.tagname && !unique_pet) name = P.tagname real_name = P.tagname diff --git a/icons/mob/corgi_back.dmi b/icons/mob/corgi_back.dmi index 26fb3771e15161ccc449fbf76b4485e36ab03d6c..2adfc53abe4ceb53ff8a51f06f2b712e91aa24eb 100644 GIT binary patch literal 8583 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 V7WH$vAs;vzq#&yzQz2yn{V%u{R#pH2 literal 6390 zcmbt(cQjnlyY|t`M2MOwqlf67XoHAE?}JBgMeVn~~ojpAOARs4gT;XQ77!C3GymFtwU;glV4+E}Lu5W}E zzjM)@KtzPgeUcd9bwH=q z``DJl(wjMxOOM;QD9wSw_Ve^6mz*&`)W?Kdcm2%!T|~$?-)YsM`K1@n*>xJ1`5(jW zxuN7pet3FeUF1X*ip~9l&AsE$EHR}Yr-zkP)7B)Ws14ce!f>PuY276NFyS=SRZRkN zc5;KfSdg#!JE92a3I{XjyV5z|N%K0YYlX(VTMf_E+u+yX)>nMBka!!FHEmy%`{U#L z_lgs)7WcI*o*J>XXzV;*QNP3I4gRZ>?f5}+o?i>?{5%n3_MtMpICXWLUL7E&s0~)* zsl6m>D<`P|Z495KOagdEM$#427? z6fiV1Ezl*+14Ot!28fZ#0C^QB0gcsz|Kw1+h6>j?GZ}!}4W$%+#q5Rt@sG$n_OqGg zPrNehoz(9gj=wULS}b~kxOk%<=hN{qRIT$%;|j@gcBb3HOZDg1?APfXV;cccb{7w4 zuP$+YT?)T?zwSM(T}CwlG1jO3)R3t4PeG$Kprwfk&RlewzD3PnIzr{crX2vb6uNGr z8UrJN9B$>g8`dknW==;irTqwK|MieBIw2@AW&-27e13Qn=tMyR#kp_Mn^N!hvv|fZ ziQ1^Ux(bpy{fe}I0~4(76Y<3`6I51K&US=#%+Alh8_AY+3Yox!A0idlX{z(+4lHxJ z(~$Y6vjPOyC*c_`Cpli1IWZfo`W6fUZ7rOXIhHx9WBUP$Twa2WuYy@SrSZLj zwiZ2_s#ZkG!05E6Hn;LZ&;Qhul{8otDGQm`5$h`+sH>99x>mQ})zj1Ku2>PFR|JoF zG@(M!OQO+z>Fw8XX+yaHY)o3T3)=96!mV}Y{N3hVv#mbsZPiXmq2`XuH@}*X+|2d& zi5|)j3()uX_hWa|XzlIoYb=8-7;QPzDGR?mx9*A{a!LX>z!fWqhI%;OUi*H8&O8jl`{ zD=1`p%D%gaccwfb%`hB9FbF(6Vuf+UM+g2-sP-SZXz+wwjSj2cwd0B;1Ojb>YdIwL zcV-dR#4zJxPe%|ki$xma8G-pzd`CZ|RPdg#bx~<4oOc4ky9B#9bCOYL^kia3_>Y;@_5oArik56K@`vCpfTcEoYYjGQ0P=lpAq002+&?i6%Qg__oG-S}mC3 zjS9Dq_lthr31ppw*H7_S(ImChZo83@f-lP+GSh@tb{wW zwGZNF!Yn8+Okx@YX>`rIS@TVYIA*F07L^spla|9nr==P=EE;Yo_-)e!1qL!kk(=#b zM~y_|cH5a6Uv2GIrrSs?=#_OkEx6a(p8w+PaW7t34tnc#avwxvnusVxD1WY|b`W{` zBaohCd}@mO-xl4*v3p)buO+QaK0-8`b_bAu+&A6%#1hFH%wR~~EVUD}l#E{aniO0U zS#4KK3}M-mC^|p)LbbdKV9dk}==WKAc2Joajit0PCG zUHbhP@ufC+zKzF9@zuGM8MT+b)H{iE(AecNb->`(&s=s0gT*cZR{YB8MLYH21{mhO zfmVI*usZU*HIu&1(~*mva1ky>EGGxa!>T!HmA#zB2MXn8XFBZb%dn#@XgQ_9(2+il z)fP|hh=G;4N;_MBWg<6xsr$sMC{MZfTDUK(Ngj=)UeW2F3Nkkd@fQ)+AuXQm3 zwZjO;29jJ~C|(8mFPWMj9mn54{%Gi#7 zcMBkva+vq5UbmP3cuRke3?Im&RsNfS`#5l)RL#p{meYJI5VCC6?g1kDn`u_Bc`|l>|j+{ntC5AFQ zpB}&r$cjJ^Pd?4J=vGu$BTX6+h+k5-6puGnoP#jz*Q<}Rb{KO3en{wz0_@7xvptZx!AZ&1pf$}~Cf!tz{mzVE#T3?^~D2)Ywu5@>plxGZ%Rm~Jl?Jd=q zp!mGr#}t(q*_ldh9Iq3POGXO5_@0y}3SOwESo$FWL4Y+L@fBWoTqRWVx?dxipkhBv zXp@xAo10xs1x2iyc`R92KAe5sEdqyjK#?>R8=r^_LNBs!zsDn`o&Hgq9SB%o)s)NC zYkP?;eD6qKT2awG`4v-AUH!-srB&ZhnHucuY8iWe9{49rsolVk0)}1TOBp-iR=kK3 z?Y)#v*+TX>55*_yJ!TiigmWdKJHlo;b%(bM%w`=|^ zFunyr+`lF+*2h8_Ph`Dgo=e5PVtH2mf>?zfyd~=f8(Z%=r((hGX!X;N(3BY5JH9y0 ztlMMn_*g%>eQ*5gilDw;%2}Y8ffjc2-EtJG<9Wtym=Kz7{rZU5_O7y+hK9!PMqUxu zaAK7WHDN%KLb?40HQ5ScjpN!Pa{k@ek7B zfUQb@9bZGXHNNESl*vFPXE-RW(z5BD>r92_w_NqlxpD-BKRQMYEUNj~8Vq^nO|-{^ zpgD=qsfRXSvd%bH zo7J(R#(4@4pwyG+E2?gbT6x*x`eoXtMewS88@;p^Q5*rDBKR z-uT1vEM`Mj^xZYLr?jd?&slo6NoV=RrKF@_4OO|hxwn~_jTS$;#XD z#timR_XZLa1QNa;5^eg@$1dDB^^2$^VFwg$h2w>MajU5Gtz%kI3@*b_`dw@{voJG% z2#j<~MhcIS zv21j^rLCp)dwVDy6u!Ib(Gx6QC&C3@ghttRDN9PyotUm~Zo16w_*s4PA*t@TYH?nQ zd)8H@!9y$l6T#Th+S-S&j*pK=Z%h=JpV>XPR+qSQ$u+!wNC3##AmV?5wiH2O#w5kJ zQd3hoXk!7u!os5P=<@RNer;YNzQ5YWM#jU#!{`}HOUpQX`MtWW&>gC9ktW4Ak9i`X z!j{pVBEekm$?*pJ`Y_EJw5OX}@9=Q^UuQSBc+@BTwe|Jo6Wp^V6r361>+c`u*UA>! zvE-$COWYR(YpD5}9Tqb=0_pvUQ<~&M62DRXV@zH%6XxSXE0ayNjtnN+9ZHv^RrU98 z+CT)~`Deh}Q&LilL~Wz@+CEIs3`)<$AwVkHsKpoF{dILmxNfh6Bd(`kGH(Bk;v&o& zdz&=x_jpKj?^MYJcic}>H7}-NQ-q(B=rzWl0BW{ro(|mzA90i%dwuhJ0JHDhH>UBh z<@W3$zJ+MHLXrmWQ00N^iX(sdTr_w!^wM7-7NjmwoUtLSW`7v|ldi9c$}i;>VAS_4W0=x#{JuC(E1jAEd8}uR3JEc)Z1>+CtH2( z`81J~tZc!bf|UIVv+#|vjvHg|7+#!j@Z{(f|AC7QD+9x$qgw313lEP`lu+`bNBZuA z+2Lt@Ymtj-3?aY@m3vxRB%TCT5>OAja$tql5(0&n<{>IND${fTTRy)Qd!GLG{+Wae zjjs~<*5)Sdj$f;j99SK&^ zKp`h5>n^00y>34#$F@cMItyy>zFJsdEi1D-Vf-^mL@4%G-Zv&c#ubTvC2zVlZFE-< z2TX73H(66G!d38;%ID9|&nMLWDAeWNw8&UK=+bw3Do0B+{UYNM&(fkIv&jnlHn?%) z#^=JqUNM}|J_`$rxUB43{D~z}jq}gzp1*(V>#Yn8!w(L;fm%RVv?H@dkej#iDV}t;V8q()%_iaWx0Im;4Ih zPK76E*XmlK#-V!ZUgw|TnbejLz~!hIRTa6$Y4G%E`XE?YS6`n9xCn)SA+Kq-9T=yk zrY0ZUD;Ow=J!ZQ}hPRWFlA=#=%U*If;A3vmQc|`a9wJqy)g>h=4Bze?YDGZ9F1t4C;_go1_lNUq0pqmnD)!42AEr`InVstu4D6Z z1x3YpFFE{k?3js1RF3tgRkIfXU<;o^d&!B($?>OUW@o1;#~+%XaxKZ$?t00wBIk)Z zqd-i*1BuqI_xHtEZ@yhlm>i5=0~DX%B(S(7Bqa?9Q&Uq9u=VuzMmlqe)gi13v;o1ldIc2~LJpaAbrKb<^0{foE|ERY zzK8PDcMlGdXJuuHNk~K(@bk<$5oAyZooZ`qe@(I?#GmOT=U#bTQ|6We~0a8N;pIchz= zx%(aJLes|IiV*yjlKxUuq>&Y^U07B|DJ?C%A-=4PK5LQxYo6|0x8!6Uy}q^Si`v-P zVK5ru7#SVqqK)lU3IcvxS^-9J+0I*{Cw%mj_hy9IKZ=KCc)DarD_IY3(84ZA;iaXT zn?5`!| zaz}Y^%6ZgVPFKX~o?!o=_B$vi*&ctJYd~a4(Z;&nLi{sEHWiC?WbL?E$g8yCrJ#BI zX~pU4dhzVg8&i6uuW_Q!H8*9(G4oZUz|c&HaS)mLI{)P}s4`1ogWj34V-Atug2me> z*u&?&UT(GduH?NUKBlG&czp33wXHS7r{mMpk!589#zpf!?oj1py|(W^>yjqcVQfvm zR2;92_sdfZsX3s#_?1kZaoDrC+Ht~46LNP18k8V}?rxCWAx0WF%KZ2Dre|V<85Q-ad>%3po-i|*+Z<>7AIX?C~IFDU8O^#dExZA98 zGbZF`tL`@uM^^Y3NbE2Vq;;)@DFUqWi?HKNz1Zw*`0>0C^171w=`O^vImyCuzLRW# z3SRy7tLa~7ADWOMsCX|K@{xX=*8k&2kGCAhS_oGy3!ArsOI?!lW~y7_G2i;uF858cHY z)us8o#N6A#PpMt(hPSUCYH)n~*dys`|URkA2I zC6o-N)vHnzeW53jRBpAvGwY?wH^L|1*P^g%xG17SvJw&#-#ha?MEk;(Sm0Ih-$&v2 z8ckXP3JxN(njz@0wT%c}v#FjYan-%sOAp){>1-U-=$6IYUcLb>~I6oljF9 z(7N+ATrmfd(W)@2bN!QT=o!m`Zy}J{c`xoEbcfHico%!KpD{7^3n`3c<$?E*3%PMu zg+*9&8`HR*@x(yX3QbYOK3Ns-258fL--gR zP+-h;5$=k2<=kJ+oNfHD*(}j*LL-?y=E!z&<8DOeh*Qe87%H54>~UyZw`~a3u&$>4Uguk<8(}m>&)H`rh?N!J;1^7M_$m#TM3DkA zPCl01O`Q>J_#`)RkBcU|prZPLn}v_S3$uMm#!cF%K<#I0Xe7joYPj(O^ypRX`lCO@ znuOy7pziY))UCjMq5l40eo=oedde@W%gVD$&Bpf)bn4lgm1vl1H0GVc;j55cqY6on z#aO-CU*rYOwq1Ffx947G1+Rw4O|?m7*FD(!Tveslwj)#gw{vLyP!ok$MN$eg>kU5iUTf{jA_r_9fP=$Fl(+cl1DP8&n- f;#Q~9ugR49F%i>G&D!xlG62nodg@hbwh{jaW@OD;?(e2!N598+>Mc-cGUB31#P}&ay{$ zaAvbrx~kaJ-QEvQc`63IdCTP?c<>^TqR{v3_+n~(;;Sjo9<9hO2P_ z>19JJlkprP75y%IXWn>b#Te$5vf|@ulm6W7`-;z$e;R2O`qbCF7nv{XDz^8Ax5tGU zFy@TlO|qVwM2i7jp_Lt^!xtZT;(6DwMRtHUv!7k`~XlJ@H zW3paF;^)cK-9x!3ERO5ouAocpA(qc;49nta&5;8*P2{vb7yZqs)!rRKS;c0_ zmQgC1!7sTTtYqP}s?0g}DE0qn|9&G%!$07zwi3f$#Q5Q-Zq?b#gd7Fgfuti`L>e;z z*EW817s<95yeHZMvrui8#LURS*2B>Qra=a zYTPSqldNWvH(cuwD3nZOBeBXEN?$XpdAEQKIfYrG3is!acV=$)&JoW*Zf2oI1qJ|2 zz;n5$+FoDw=DocrUbaac)XRS6rdPz>V#8#^luu%R&-5^EH9n=`r#rnlAmTJP;zTMh zN7`7n8XdjLpZ#;iy^%$91^1_sNN(eH13}E|Y3dZkpae`sCSQz=GX>X&6Sh8u-#+?4 zhCgy_7408O8Yhn%Zn(Mk{_$vjDkt|w=((k5P-J8u0f96NOBEY76Dg@a8Ad{6BzF{= zqMTexlAQ-m!RzAr6*B$&W_z7d$7id(@l=I{g^J3`vfHHGO46$AjMFSik z1wh^)756_XBE+ziG`P}EKPl1}ygSSH#|FFtXRW}C?9dO)h!}aM!nc?@Zy?wg)fxy^ z4gS5yx1Ylwzj+?l-~O*8PU8{FY2(;-kvAP+_#mh*;gBQMvAvYy_RgR7YVX!NtVO(V zDm-ka@4K_HXm?@t!(@ok z?UZ<_E@;5voe~_rYvkEua90m+C&Pa|8BZILWZvyGsK97`wASBrvOIHf+nUSlRPDeZ=L}~>ihM`<54eVRqc3Fgb_owHavw}8qwCd3#$;-{0l};Q+ z0{!+@#G%(^Kgai7G1pmp@!wZy1k%|J&&YlyhF7K7CqAwr_#;PrAtzw_=LK2~gr9(Y z8@P7b(nJH`ZD$N70T&j2jXt%*!+_JobY;`tC*o9|yUVkVj;*9?!ssn9>ygZ-k*6h_ zqY8|7(?uMA2(9*V4gL%;k&}z+S$Dw$?um7Yzb3OM`5}Ss)@YQiTW+FP^EOch>G~qp zokalNr2I4R#@j-?!HCCs>SRkJVk$y8HG0F;kJP~vW^r(1PfnV6CMxdIgS(0j$_1xJ z57|3ET1-;XFd=Zh%%+YzFV2N=Sy=FGhnn0iJ)ctDN)o=Z|05ZeXm_`P2kI;=+ZC2W zUmmRC3eCot-3yYF8)q);=1tLfcq?a5a=p5Umtahw3}%a>v$3!!zXHfe6WJdFQIUNg zZhOCZ{=bmT9^n75`}?lksMQ|uBiC}aRe&h{wY%r&;a@D^djb75PJm$|Ct)jp=QU} zfm#W2Yj{boV!hu9sb)A~_oefy-wo~>FADr6f#2?)!^I}+{N=&!^@TaAV%E?Rb3brD zFzCvZ7<^nwXYrGeYaXz&7+E!DYU1;tEh<0jqy6lXZ347q7N%wD;M{B3LB$7dJf9raI1NZqB6m>iN1eq(@eEeLsq`y&EPF&86;NM2%7 z!|L;Iq0eMNN3Za?TCfvv;mM;PC~-QiHiqkC=^kf~!BL5<@|$g_+P2IRNpPjzBU!S9 z#R^~J@0#G81R{wKXwl;69(SFaP?rcmdVf*w(kD~vzHYld8k{?$oJf;Zc6^#IExyW` zDImom4IP!Yn$wY&%8!#`|BhUAERu%okK-XWcI%+zx9 z71SAJm_8@`)g6WL)iFgb97=ihLN&yr&K}e2%(o(qIvutrT&OH3C--OhW#)gSnB7XH zl5jJI-1uYvt3%}h2({$K2XR6aql@KKejINZso7xDIyzt@WnwlENRr}i0g3Fpw-|8! zK@|R_v*Dy_&}l&|#J{T#A5rKUDFz_B9fu=$X)f<@?mWgEsy-S%yMyp7p5Uk|ijKzD z(9`48REVbx3k%E6&h8p%?*wl?zI?McnxoKb1lb0(afZIP&qX+^asOz5&3+yg$A#HK zNZ+XsCOT(hw*;QwqnELqs^=HG9QgSF9eDGHg8B)*Ky!d^8}gi;xt*-=Q7O2i&Pc=* zYoRHmrC~{c4Y3okQ{K+tP!CIxYMOT#%~xZD?aw!lmYYI$7g}lkFHb7JYc7KR1#6ot zs+@-`eJpSFtvgoRJnX%F5H$=g*Q2<^e=H8d*%I)i}a5UqYlhej4d z4C?L{zi#KctN*|l0P5dpuc{$b*G{$xfd*lJa!Mg0Y+!tMvA6^$Xf|b4@n+~HMQ4BWIM*}S9NP>yps@*#45-6+C{VTq4DrC z@`~eCmm<9LX1k5cso?SCehnP_?VvM0^>tUD7EptQu|)Xw*p7EOAz+=g%6`z&=;iqX zDeiV${Wxvl4w?~_1=k(4_up?q6k6@=8*wqz7<2uta!4GKCb$YI4OQQuEtXRSN#WR5 z@6>bXp>%F80!VF5uVEkSWBnZJrNniBj^e)VdCAs5{l6P?6)cW3j&=~fq%6+wtSnz! zb<-F!)37>?wlq_@5?`J2V{Xw9O3#&m+46a}6dptm*Y=P4@XYY>`Wt`1%Ua?7LVrOx z>u{WcM!vp3{;zeH8HZMc&Y>v^VcLMG?B%om&8Ai7EU}CuCx)(FeBl+W9-%goVJx~{ zv=we2D#_T!>7r&Wjv--S9Q;LDN#*L9qkg@S9juBPaC*6%-zVORiBnh76R}Q(22{}% zk~%_fAF-kREL$gZaPk!IFJxg}0|JfBn*nZW&V!N(m9I*zxt#g;1&tF<3mTZcRwB@9+KcwUWa7nHBIr z(%EcK32fDAEKdtovzLi|;mbbp3Khk@?vcwX;_iE6UyvrmuGCp5Ydf&W*p>aGvtXv3 z3YaDQW5!Gjh_(8x&Yq~~d2O*0NYnFy=KfXY3u2CX6=IBzi1}X~wOi=`5JQ8rT9mWM zwUZ(KiQYxqXV>!^%V&>$Q4avi>m)%L@qf*OYtmA$Rk3w7w7L z`v2u>?f=j>`Ktx#M{BIdFo8L@F_ng^{bn=()Et({muoNikr-KRtw-OB-4}5z$9GHY zz=mBZH^ntpjS%ym!K{txWVh-ZU!H9Fu65+`l%h2~Qa3Bd>mvp;MxMvi|8u9(pp ztwG_0o4t3#ldgw7a%ee}2RecSkRvTV?k~hS+)v&n*87S8OR*vgL4)f`kzZRn*2!|T z>)XXH<_nlk%1v>W#Q880e_R?v2{Njx_^0iJaha3g-@kt^C@PY9`7)V@Ikya&o_+^V zeE$5Yvhp2(vldarh)1ng6{wm|PAqwnV1KeXiVo=1yK<{9!V?u3NcrcAi;94IjPKaT zAS9h#&#)6dYcLm-*;nU>6E3MEr;1ItVFnWuu06$uK$8&p>3i&9u!cM%4{D9>C<-_VVRj7gyJAY$jkmz<{nIWMUY+siYL`0!>MwWWTN{W5h!(?aWkjl(ifw zmFQKXPfSbqW##Ov&5 z3T$yxUZA82B>Zs$N)9_L)n3|QEC57#tnn`p3>G_5SO$VVHPd%jarrWOx1WZq(Fdua zjbE0cTA$)^BI=C3wY3EVN&21we8RZOd4WtHaEu6n z3X%Pw1Ho0jKM6rs>{IsIG9#wkIQwSHJB$Gz2%e@(-px2c1A<5C+A_AI2`!*-}GmncKEn_WgdD9feB7Pyr2_=;~bY=7_~Ut)=i9c;KgIlS0_Do_Ny z{_!4<_QbN40k;Orynr<3vMvQ}ZL#i&9ed6@-ju`#fWCBE6dZK7N*L{dKQ=IOnXM-LW8tZw70`!#fFG>-=?{>EB|)zbg(L?zV>4dEGsFgNt>Z!I=qyn#{r$|?3Ay`VY0QgfFB0#h)Af+gyvZUrzRNuMH_nP zq#PY*Ncx7(J4{Jn9v>fvHL0>-XY{U;0-1>8sbb^e7;yl^=8~&?-Cu?J)N-6HTlm*% zud|}NVYr5e4rPFW(R*-knZd-&C)Y$1lb4td*#}+{D@j_ao#4oB)~NjN-_LdR(|9@G{SXZLK$Lz6UqmfAQ%e*C8-a`Oh#Zpsr;|Y^X^#9#++yk0Gs% zuy?2z-=)7MZqqaYfuplw&_9xMC^L!im>f;cj8VbMC`7D=(ZG*|COUN;&nG+DqhF+Ms5le%KMOu z%RZ}(R>Rcfgk`75amN@!5#P(Is;Y&4psJ6)Flt!C%$cu+#;H~0;xke5U}TEnB34nU z>Zu!-+~G);=yOozZt&(CLv$vAL|M;YWm5QQ(9 zoiL*L9P_hbJl9U1)TO2z0_M+{DY0~)xPhi0qf8!LrQ#4ZuG%F4Eq|T1pibj;NsvGLSl<9msN#;$i>=}&lsv8wKcV}g8KieMgLE9{6vTj34x~dIUrSAe z=Gp19(~aQ0a8E! zTU#z+x#nh3Bcr1M;7mn7@@ut=^I}pM5ESt2ndt8ky8UHmYa7Y%@v?r!z0bQ;0f3p- zq);tGOv6y52}V+RBO0KJJy=Q4h`He0F)_V`_5p`LF0k2Cka9RueUctr5741HEbVwT zjoTr9^l{m$I=}0qR7bv}e1vI*6A`5W|Cb3KZ?vw!^rG%zOSP~AK`xGa^6{8gXK-GI zX_Kh$-B;#@{sIg<5L}?3T>Kpd4v|?$ht}b*goW@Ei%nQyH6d+4_;jVc_|ef(LgEZP zZ~!(<>ny(KG2T-Y$mM8zb8cVk7#@f#FHSb+)NS!J-<#Y%dg?u?Zo}s&k|6$yU5{q_ zv6M#@usxt9r%AEr6@cXhgtg=@arscF)?SlE%&)?UDYTatMa`kcT=sraO z#G8*8;gb%kQ=BbDnVy2BJHq&PCjC^0oP;;Xpl zXEG9gfcNSZ27k5h(sEaZSHm^aHW9tNx3{;p|3hwWinJL?z)OvvpTGHaZ`~e1;s*P8 zu|~0(_sGy~26Az6(Y5~Eb!R^VTVh_M-(BehXD4RL@|Mrohf4DrrD5iL3fj{V!#FjSwj-x$;$c&ONfL2 z@mZn*`sKm7EOFGA+$ZBAwH=c=jF!JLO7$U(83GD#R&X_&@2^VRKDo@T$DGU0evIX9 zOglQ~L*Tv{7Xh_Hz4}CSCGScYxkIE``c)rm-Gv(D5q|~al~CKO+Du*EaS;pVLT?D@ zs#KPeZYJ;ht5h^1?wyL<$9OBJSwzTE%!~h<#g{a<8`~@!S2%fQ!Jox`Y*&Ma^x6Je z7_Us5L%vWoZ)BmPP3P#JgHDg!I!c)uK-k_iY_UEN(qv`9+_<3@BnwMSoO_p3+A;c3 zH^7pOQ2|*=0SD9iyRddhwuksG1t%#f^~SQ8s~p={bm9W<>}+goED+?)+hXSH_3KMe zXJ@yXly$S`4+1m*^pr?dg89MdgL8Ra{B`)Jv#vXP;Rd;97=II)8h(TcV8WAGHas#Z ziK3>a#%%RRtg~7pA&9{7si_?0RGz%nWO?4N7meRT!14pVrjinVllxAdzVFJp^U3ZE z`J+d{snecr|LX8T;*+hry5n1$ql<+!w?7+{#BJEOWsC9s2y=2$Qg`|Ps?_O!Z_QuT z_|4#(uV2#BqnI5C76LcuE6c0MgkHXUYhxp0U_j&I;;NAVjdz|hwi0L#%!NKOtcz6U zX~aZcBD%p;2}WDs^wiWX8=ZhC#1fNft%3)VD z*4fRlIJ6^AgVxJiPd_s+zXnshhHZ9X=SRi70ANM985OuMiVK`ycyG{>$yD8psX7CUW@}UiL>4XoC?~gg;=Px0*=!^c?@(dB30L>i~MFWf{d?- zSNHQNKUL+NX=^W?N0E!d=UmYMk$8V}wMSpx9siP~+7YpnerfTo3}FEFaa!xbg~i}6EfPS-R{^Wfml18gXAS~`9CVKq@}eXLjKLK)c%DjnvFtcgAfBTw z(FgApy?ttL|LBh-^8JWF=s3dG);4(^bry)SQba0()fCRLs`Az*zCY?Fx6dNu9t`aH zU!7XtviMAo-O`TofU-8KC8Hx0*llyQ^x?d8el0=-8wy~@x~AAFt`fj|_9IZ5LgRr`ThLo=11 zZT0o+NKI3PAl=gEut6jqUohC4S_Y{prc^(NL7|>fx5zsiPP2XM?|zQeY@hP( z9eQF~8r}sKFcs?=HB)V+aDDc~_tegL-YXRV+zq$QCZa7_rGW}qb4SJ;7BDhB9{st= z$7st3ebDL+plf{hrJ=WJO9+=qLGR)MJnYL)g4}#}EWj&{KBCvvXwX5Sq^OAod~7;$ za#Ba4)(L;#*Mm93Kom>5m`v#?z~Cd=E_nd3>meTJEg`D+GHmYJPfI>HZD!`S00|=M z=nlU6;c9%}?(ay`IBzn>g)QJmTx?P6H80h2Q7TQvb*sd<5Sstx=`*l17!ZvleaIfG zj(ovF7Zgi0r)W*xV;Ru|@$T$z$%l5fR>Pm_=%iHbuWc$fLK$-S+>u;mEfUi{#yj;2 z;ift|ls2}u8oIhT7f;spF??2<4tWlL`R-RBn;cq{-?wgR0vl$dhQlkT;(5|_-XBI> z*b1Hlmbu=nG*PpI;WNez=YuGs~M$=wx=neT_Dvt@Jh~`_*k07G9UwiQB?|;~J+)dLr3&T=`S4g`Kv;yJ=^o1G z@E$%68pLios7W>=A?<5yUf%t0{>4h60MWBSGu4^|-H3rdL+K%X@`3FW^N3BIpdE*%2Y*zH7_WMDO-NM~&X@@oNOn^)-hrCMW)x9C zFCIV_s}TQcpEVv+qTbi)Ckc>{kx{0+*Xnz^)DuOnxc~c`ebx{*F50x6;`VPW&@8=O zs8&e5%n}q5VSOa@5-*Pxfv7+`cel3wc@_BEzWzb{*9$1>LEQKh&UkK5wgn%DOP|); z_4W1XT3ae$>0>+u3osJ5rVQ$n&l^lFC4oTTeoHOKhqJ|Z&;Tk^mqZ8T1RD^aEnY{j z)YY*|K3$7ql6as>ur+TSlZOVR%{RYZ&5*39r<2nt&zSb$#2XqZLn=xlu8-?(r+;kX z#k{Hd1+{(=q8*yAWS%f zG;C|*Rg5Zm-a@{#J^o+?$!hBU$!1F2`ix{kaUtX~Plrxw zHgbDXP(moMjeVG8ol`&$H^R_LyZxlZQI3$Mib#d`owWmkiM5oAh|yjqWTU`xk3r0b zqBlK#B*&2El(7UOAx|GhuhM|go|a`MXCKZ$YW=)AUdGqv#t)|9)_WRl;}yr)OG?N) zD5+_9XZUb++C(EZXVYP3l#!IwT48J$J(*c=wLd7OJVf$(?PDE{8g_SlWTaqsybLQ? zSy>4TVfuesCH;3(|D8VQ76t}xxjB>dP5JwtX-&wXGDmky$H3|xtzJvl=K05xP8U^o zU)>6Q(cq7z?soq;TaKZwySgS0V|BiJQ;=^cvFYk#!|ol!d9AbN9%5KhS_vs zhre0_A?yaMzC39}t}jB)AntOHV}Vp&L*};Y?K?*9Gxu7Kt{{KM9V~C-vlG0((|(*m zs|G;|E_e^yzx6Nn-3~}Sul((MKrOJX`Nkb1phR%r&S*05JWlZX&!wP*pTg%XM5(Gn zAOak|y_SGZR6VqLUSnH965R;2d0s31y=cHQf6XL;4&%FzfS{|5pA+tEb)a+O4Bz!l zNKOu$oi(s%Y>|X-S-oJyqXccH_-d^#)sH#o`k+oE4E`y5ZlT^0x@Fa%HV-Gevw@y} z(ysu&!<8&>&FcRO*RTv@;cxpFzRPB}iQZGny9Je`F-M-7;TipFV{0P$*(N zwhaO;RSdY@GCrrcw{i;_GLgx=SJ_1EX7xjw>gr7V0s_qKz|yUnP7OO|k&?X_?D7V+ z_CmG(t?3ei1t#gdnl6-H^n;&_fxp+GmeQPo#+RRA*q?p8*sx*q&wck`ZWh9&# zUv4cf-`LPz!vt;F3Nl_9h*F7uEB9mz%5~elaOTL9Snx2F{M9vq=uOGRDlu)UdOmfz zmxu!qqq#UwXOlSD#Z;@;^Yj95`w6&@ zp#%^icUTl3y^{Uf%tdMYz;{NJ=6bbi_!3uO+-{}>!ZI~sIX}-qTqCc$uecS-IJg+d zvL8q-y?v1Q`SWLjJJO}w0)S90QDGQ(x9GGpZvazy4=HPGHpEB{YZ91Yw#@L^ecT&&)eE!qv*e1giuD7`Y zpQY*UQxlz86o1goVSM1Ud^|&`1bm`c7Zz|@4FzdKU__zB9|W9-CiJeN0p0RJ1``_! zS)`;I+SdwZo$_z!v!wo=J4Jd&XqMlGqQJuc_Q6_PFuik1{SAzvn5W!xFX_D7x8mFh%n}(#-xdmE~NjVlsit1|5{VB=b>YAt{jP;>U*5bgVEh$S?LeeAxmS{2xe5(bjXbSk=~gH$ zDIt)L?E&8(*S)Mx^wZ!(AslMgoR!7Q9ETAkastkv`!ZG~e3I~P$L*{>(ZA#W#M@?G zsY3sI^mGtax$RNA&6TMI5Z&XG216S_dam=Eg`q*eqRq339~SpqJNd6K_B@@B33JqV zMCt;TTwZVE9N&_}KHiTb-zH6$cv?`>%)N~~y}fsl#t|yfm{26lBVchN0@mHofM$<9 z88DUt;}8({5yZVzrhdW8-4Qu$Z49^jc=s+EAZ$0CsSgL~T~_4C3cfQB-CyQ}V&;_sc^_Pq^zkh+yRUkG0b?_HcYG=L`E zzdcitdRR`$IxKO-7uDN)3Yg6js*PSjn14N0aa zkd_0cI>*I0a5tix=zp6wm@!ECi2`zW2X6NIJ>I}Z>lA+IHLv(M|5-) zgQDMKWBw@|nz))?4Dkv;kc7sx;Y;$-fSs@DtN{Eu7LcJwlE~u*tu<-(DBZh09;O09 zzx)<;T9O{YFfcL60D|7XCjdda1d3up{5K*+?5TyK&jkz|A-_>j6S7VS8x0K}Fq;@P$^8TLhX8Ggz~y<47;iwydkJo@vA+Df*$3=xi_sj@?nwNNz6Mw|OuX zwk}0_ssa$mu&^B66$E6BN2!%wzs@-dXa(EYO8_`7QBb5X=JC-{Pk-;j@#Xw7>bPxh zwx0YxQ0c$IZNR;6bdGi9Rc)qgd7u3@7|5}mDk~^1j%jptcX!{Mt>prf%EOUlxB-U9#D!zA>oNpVJ)n?0V6swNJ`?2N5j~Nw-D;=sEjD6>` z`q{Crsp+l51)!sgeb6v{{hAew$QK1b`@@X&A~+ns`Q*ecH$NXIG&YTyd^h%}3VKxM z^ED+$6C^)QCjmbP2gyMZ0cN{c#@#G^pOWpf4re*(6p$Qwqp+hjTr)Vr!7vzhML_INk;kL47x0(O-SaFFR3WbiU zw>!Op=x(BP*$oZTRv<#s%vm2-??kYMP>)!?DRPjVuS?5IQ6=9)&ZX@b&ioXigl*eO z>WQvmL+x9geh_B2O@^d7a!(?Fw;o7EYcaxfMXjbX*arTW0AZ(ni(u1yD7`Qpd1XKk z6jR{Vj(I`Wnm~08S}@(oQqy*m##T_p|I2#K@aD`QSeZi_L2JAXuZ)|MkELP1zOBB< z%F2dV2d-%;=SOvh1d_QR^HfkjxbB!tmIi`5@Ql7~`_jd`#vlK*L0yRR@MpVo_Q=Ec zwRT)4x09(61R$*dppIBR?rYuVfe!?hqHEGM#i1M558o{)#@;o?(DgA0eqp7J$hqVc zjOb>5)6h4f-yYCfWkN6GLzfHM)E5P2DX7luf&$JWb)9++MlKjy%dj{X*Wf{dXQNTq zo(GJAki}MGW>|l0eu6f zc`4nwz_+x&%F1+7{5RZIqB>tM1>}x5JQ!ihCNvG8EWqxaGs@4j2U0uLd)=4l`SKYUA8T!X)Ub$q(Rqpga|hJq#HPKFaewj1P|jb7CZ z-gP3QvJu;gVU>9LD-crEz{_JQV8=<#dTAG_oM48YDs* z(|8y^ei~}9VbaF78T=%r_fu9)jW)=<2OV*)!GVE+C68u8JZ61HAUY;SLq`W22%jMC zg?tL0?$R&zh>VmO6$JdzOO~|ZXRf?jlt@H7Tp8e*xHS;loAm;D6zr>J1p1%yEh_v;J4dIVr+Znwj6fa}$@ zD)<*w2@SrH{1koW=~)*#<2`hUA4(Eff-VLWmmJfPzqJ=Dvqc8@U%f&tv~Etdw+|nI zwtaV@ksNt>I#CVUHF!_1>DH*Up*J7N5UogopQfD8z&;w z@D;oxeRjlNr}iUWS3XGX4KZdFOoq!9W$D*oXWfibs^U<;SH#sD-DDEtm$Df6HvQ=M z`{1GgV##w!n*C@a@WP|xC=Jryxx8tq$mju|vsV17Sg7zFNFuE~8Fp+BLnT=jc-&m~ zLN2*K?&am?noUz%o!2PKQE-8Yzl&CzlhuGdXZGA%>2_C)d%O1MtGo*Ksr^~ncFXoa zrBZ`QiA8?S_=wZ^#wpwfo_3Pnn%{EQrghQ-b)G}UMyR4PaAY?4Gn?TqWAl|{J9(I- zIpasfplNa@Ia=|K=zzoX6x%v*k+dif8NDiw}cq z!&87rOS4yE8B)TpfU@uOrX&NK`_ZGj13u(^OURA-#cb0=PZ|&8rHXod!~~3+0!1F( zU5mIU&{HV1wzr=;hD6{JIkO>y!@usTDB43<~( z!bg?cr!~7Ar24cN32q{dG8BHOgi>M6|XnwsyxF#nc4iBMKj zs&HPF?ZnVSCe+qZAo6%{04T3l+-)x{;#^Stm1 z06>EI+qZ9}Ra9a%+rieec~7W0Yz>^6`e}Rj^1)WT&QorvqpE70rfhUQHbw%c(hVAB zN5#Q0JOq-1p{~+utW#!0efB(?5FQ2%WW1)P53>du*EL>|~GXm028Na`^3X+3OyUU%`%0|CSng5)AUN3@eD4Ic)VR z%z{-U_Y@P&0kZE*r1=o?EJ##?@kv7D7&K}GDmTZo{0~yC*Ilq4u1}`$|6j4*K)?e+ z(fvB9gB#Gvj6WVbH&3SxCf9JmoJ)4y#5$QShUn^=J!_Ym@dg2)%gRTR(@ETYKieZ# z&pp;9LEp2pnVHxvaiKhCqQ0nBw)_Z@R~B)!yh=C#D;&qM$dpcO7R&MDa$9n12CTw|Ee zW5H*;!ZI~v5KnpH1^cdH)Ro&b<~q3Gw!kPe2yz}Mr*z<95{glO(9&MMHyn8&SP#o1 zG7W47*m02|YEo^jG+?4jLyuL*n035!>R{(35Y)*!97-ZQZHJydS%L+K-dv%t2T1xn zSz%~A$LU-SA)H1OuQS8AF9+{-L4sll;+&Yd6^33S5Tvc))bD4;3SG1*w-Le!`$zdQ zNEi`i^e842OiyKd+(oYAuLI-YJMOvtNdxQ>Sf!=Sj%RD7(C+aRWG^#z>|teI>&F0b z&niZ+*F28nK7-jl`jPUv_XKF68A{kci9zm)osVEj$2!QVs8yza(zq}#J1B6R-~v~y z`I#P(xR1%K0KZJBG(Vf9*`P^ok5mjGoqR+^!lA*BoQ% z)cYq$1AgYK)lbkaY!J&MhR&8<(3d!nDKIQIC@{>lp5a^JUFwN1ICqjU5lSm`6%Q!H zd*Dgte|R7YX5u&>D)p5bbMaXcRCttTb*82#GQXR+Q#;4KEI;G~+3<7}r#dQ)~NpGsAa;%S??tn*zEJ%z(p z9ng3^Q&lAjxPmQWkK@*>s)2fCKszF1cz)BM)9Acb`AY$Y6zbU$onM2y0rhdBGMfcD z^ee3%>)aE`*o%TaEN@9@^JuN2q09C?T!I~qMSl*_WV@CEj0#X!CM6}Atq&wi-IBpU zKOr2H<9SabQ1<~r;7LjCmoKwQN?sJ2f_g8OR)pqsaMkTevg!8RoDuW}WQ*JWCcf|k zpG>Ctpd-Yx?$OwT3+!B{Y@ipQFYzzsB+PM?1GH$FD{qYT12Kd4vHkBe19qCmv6H>! zkPxBm2*0+*qT5INjF!6+Psqof@wrfF>gh#>W5e$%`@~<%AUaLW&6)R`;Zj-w!Q-%R zEiH6nVq(trRASksg@sSSHXyU5WiBZZ`k5|_Z3EztSg`o#b1p;&{fe$KPg{-SCV=N@ zhqup2YHZk(AJh#dGA0VYYQwJqH{hPwc1#UKK0Zc1KARvKJb;c*J{^M07XU!*!kuA4q zIcg+YlmPmRn!W5)6`oYZq*2BMQPvJQ7>^uYN9;A z!b612p?TBd@?%HNS=xMzFi$;9_z~LW$G5PsNSPRKOg+%=dU7Rb$_<87&#V}cXbYrN z3Sz+x#*t6rJ}CrIe7P$h2vj`iYnNq?y8*-80LuScMf)EPGe6KD{886rB;$W27<=>R zy~!S!9Cx>Vf}Ygrh894ZbbL`x0RT$XPb7TF4=^ZzHZ3gkiql^vRhT#Ccuqb^ zk&!G^W4Qm&blic>Ba}urog9peB|~8xAusC;OYz0r)3>ksJg5V}nZ|yS53;$*=`_o_ z$8+9QOI`LTs#8Hut};>_Kw_mc#0urs*u_LfDykd5o8`cs)CH7;6XT ze0715p!Qx5mjDm0s4`)_Dwme29y?tl^6+PE7@AO5>DbsfmCgek?!OW&gD0$M?dbN} zVl-}-%-hi9-$h^fG3feO{8ZpcOv3Z?a4?H?+Bp&YlT(*k1bRL`+L(ma`88; z&R!cd(Dk^vn-THraep9)0jZE(dqYA~L7C(Y>m^=0_5|3_Db2yR6FFE^!IeCm_%5i2@61}-1Z_4U=#@Ft+G<(T?f z=nzWLM_NkY(E%$F4R*ekc+3m}VFl{1D_d7+O4rcJ^O#!%Si>`@c}QF4QOUG~aR4->n16W=x( zzn`va!3Ti@9@?LN-on3%p6)Z77+JD`*QOl z^oDK40}njQ3DV_yivJSe|6iX!{@=%sE;YpGL#bEKWWN(#FMo!@vi0+mVGBr2(My63 zc)$YJU+1`KZ=N^oT7P)M!L8J6V6j1Ax5S|XtJ(ywfF86vI+EfqPduNfd#wum1Byjf z`46w;{?S{iE#GL@b~-BEq>(Ap12jC|{@V{VmNw&+Gae8WkUD(LFo8BH&2acgdFI$+ zRrjxxy#$OLJf-)Xc4}5U8s&I`I-lBv8d60M?Rh9n1m8~W4WSfmZF<|W{{E%_;1dCD zA_fwK&h5P7=;Xjvd<&Rdsy_T#Q5KGTb^T`$Il!CS>Z=C5d3(3#=;FyGf%+{xk>C`g z6OleJ1}4N zuj5{>X3Va-^O($#xcpGxWNDMQwOef-2M{goRiv|*4D}}zPrl4Y+>3%rE(}%JA00}r z58S{fg<$y*1FTBFHmtZCCBpvA3QsU8f*IrWWbl^al0SU)(~ZM!1%Ac56@dKaib9MEXV z2iSm;caQ3CA4LGY4acgQxNrOBo+JzYM0|KO{lH(z&}Xr;?KoSqJ4Mrz=o-=$Il42^pdVLbfsSP<5+SN|^P9AhKNM>$`VLuitk7MeKjIz8W zk6ad#e(+C;BJ+mb|4+fg^ELZh|A+W*aWiGy8vTHH>Uu6O!-LJX(QJ}S7*WHjKd4e} zWTvGi{-L&E&cW~{L41rDK<<1gKzjKx684PvUs9MI@h>49m1R*4{P7#ADsX%LKU)5$ zZZH{`<9_q+CEWk+ivV&zLGZ%CgozwiyqSdeKGa__G<(_+((fv?784wR1fae zS&v$>jN|9+FA98*V@&6J_48fO?5!T3-}v@QdQtGr&6@z}TTNcGf2?T%-MpBKExY@E zY>NUcp7jk66aN*`TOYvL`EgNkF$O43`S}9_O8@No>?;(Mt=@@_`!AUgXzFO0_|l-z z(O@MJv>Lr6d|phGXmI9Tcu#+h-gY4FoSSh(gzz6i$5+)LPBi6RvD$n8+fCofzUZ>w zEGR5z@H7zRiPmTT5Egh)oAqCmmzR`Ku(Px4HM)EoK3Z9M^$(~^KYxw~9tBg^(a9U< z1;gkcv9yG+`(UIzg8~nQ{nM&E;^EP;Q9PUkPx2nR$33ZO0K;4C3DAXHA}o2>Bc)?ZvJ2L!a; z2FP-IV-i5^=bIO9|1&5vK+auV2paA literal 15791 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 From a54cac48876e7894006b47902dc76a09f94a60aa Mon Sep 17 00:00:00 2001 From: Fox McCloud Date: Thu, 5 Sep 2019 19:18:24 -0400 Subject: [PATCH 3/5] foxes are canines --- _maps/map_files/Delta/delta.dmm | 2 +- .../map_files/MetaStation/MetaStation.v41A.II.dmm | 2 +- _maps/map_files/MetaStation/z2.dmm | 2 +- _maps/map_files/cyberiad/cyberiad.dmm | 2 +- _maps/map_files/cyberiad/z2.dmm | 2 +- code/datums/diseases/lycancoughy.dm | 2 +- .../items/weapons/grenades/clusterbuster.dm | 2 +- .../structures/crates_lockers/crittercrate.dm | 2 +- code/modules/admin/topic.dm | 1 - code/modules/customitems/item_defines.dm | 1 + .../living/simple_animal/friendly/corgi_powers.dm | 6 ------ .../mob/living/simple_animal/friendly/crab.dm | 1 + .../mob/living/simple_animal/friendly/dog.dm | 15 ++++++++++++++- .../mob/living/simple_animal/friendly/fox.dm | 6 +++--- code/modules/mob/transform_procs.dm | 5 ++--- code/modules/projectiles/projectile/magic.dm | 2 +- code/modules/research/experimentor.dm | 4 ++-- paradise.dme | 1 - 18 files changed, 32 insertions(+), 26 deletions(-) delete mode 100644 code/modules/mob/living/simple_animal/friendly/corgi_powers.dm diff --git a/_maps/map_files/Delta/delta.dmm b/_maps/map_files/Delta/delta.dmm index 1c7fca84edd..ba474ccc877 100644 --- a/_maps/map_files/Delta/delta.dmm +++ b/_maps/map_files/Delta/delta.dmm @@ -51452,7 +51452,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/mob/living/simple_animal/pet/fox/Renault, +/mob/living/simple_animal/pet/dog/fox/Renault, /turf/simulated/floor/plasteel{ icon_state = "dark" }, diff --git a/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm b/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm index ea3d11be89e..30539064bef 100644 --- a/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm +++ b/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm @@ -50014,7 +50014,7 @@ network = list("MiniSat","tcomm"); pixel_y = -29 }, -/mob/living/simple_animal/pet/fox/Renault, +/mob/living/simple_animal/pet/dog/fox/Renault, /turf/simulated/floor/carpet{ tag = "icon-carpetside"; icon_state = "carpetside" diff --git a/_maps/map_files/MetaStation/z2.dmm b/_maps/map_files/MetaStation/z2.dmm index e2ed24880f1..4dcf9a2797b 100644 --- a/_maps/map_files/MetaStation/z2.dmm +++ b/_maps/map_files/MetaStation/z2.dmm @@ -4552,7 +4552,7 @@ }, /area/syndicate_mothership) "mE" = ( -/mob/living/simple_animal/pet/fox/Syndifox, +/mob/living/simple_animal/pet/dog/fox/Syndifox, /turf/unsimulated/floor{ icon_state = "bar"; dir = 2 diff --git a/_maps/map_files/cyberiad/cyberiad.dmm b/_maps/map_files/cyberiad/cyberiad.dmm index ec03d119758..16c46a85239 100644 --- a/_maps/map_files/cyberiad/cyberiad.dmm +++ b/_maps/map_files/cyberiad/cyberiad.dmm @@ -43480,7 +43480,7 @@ /turf/simulated/floor/carpet, /area/crew_quarters/captain) "bCQ" = ( -/mob/living/simple_animal/pet/fox/Renault, +/mob/living/simple_animal/pet/dog/fox/Renault, /turf/simulated/floor/carpet, /area/crew_quarters/captain) "bCR" = ( diff --git a/_maps/map_files/cyberiad/z2.dmm b/_maps/map_files/cyberiad/z2.dmm index 7c7b0403547..e84f90a3ee2 100644 --- a/_maps/map_files/cyberiad/z2.dmm +++ b/_maps/map_files/cyberiad/z2.dmm @@ -3226,7 +3226,7 @@ }, /area/syndicate_mothership) "is" = ( -/mob/living/simple_animal/pet/fox/Syndifox, +/mob/living/simple_animal/pet/dog/fox/Syndifox, /turf/unsimulated/floor{ icon_state = "bar"; dir = 2 diff --git a/code/datums/diseases/lycancoughy.dm b/code/datums/diseases/lycancoughy.dm index 0d4ace2e634..8a296df05ee 100644 --- a/code/datums/diseases/lycancoughy.dm +++ b/code/datums/diseases/lycancoughy.dm @@ -35,7 +35,7 @@ "You howl!") affected_mob.AdjustConfused(rand(6, 8)) if(prob(3) && barklimit <= 10) - var/list/puppytype = list(/mob/living/simple_animal/pet/dog/corgi/puppy, /mob/living/simple_animal/pet/dog/pug, /mob/living/simple_animal/pet/fox) + var/list/puppytype = list(/mob/living/simple_animal/pet/dog/corgi/puppy, /mob/living/simple_animal/pet/dog/pug, /mob/living/simple_animal/pet/dog/fox) var/mob/living/puppypicked = pick(puppytype) affected_mob.visible_message("[affected_mob] coughs up [initial(puppypicked.name)]!", \ "You cough up [initial(puppypicked.name)]?!") diff --git a/code/game/objects/items/weapons/grenades/clusterbuster.dm b/code/game/objects/items/weapons/grenades/clusterbuster.dm index 0d8f0aabd7d..8de1b1c6627 100644 --- a/code/game/objects/items/weapons/grenades/clusterbuster.dm +++ b/code/game/objects/items/weapons/grenades/clusterbuster.dm @@ -235,7 +235,7 @@ /obj/item/grenade/clusterbuster/fox name = "Troublemaking Grenade" desc = "More trouble than two foxes combined." - payload = /mob/living/simple_animal/pet/fox + payload = /mob/living/simple_animal/pet/dog/fox /obj/item/grenade/clusterbuster/crab name = "Crab Grenade" diff --git a/code/game/objects/structures/crates_lockers/crittercrate.dm b/code/game/objects/structures/crates_lockers/crittercrate.dm index 18ee3833224..f1d58cd334a 100644 --- a/code/game/objects/structures/crates_lockers/crittercrate.dm +++ b/code/game/objects/structures/crates_lockers/crittercrate.dm @@ -79,7 +79,7 @@ /obj/structure/closet/critter/fox name = "fox crate" - content_mob = /mob/living/simple_animal/pet/fox + content_mob = /mob/living/simple_animal/pet/dog/fox /obj/structure/closet/critter/butterfly name = "butterflies crate" diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index c1d3764db3e..212d2e1b4dd 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -359,7 +359,6 @@ if("cat") M.change_mob_type( /mob/living/simple_animal/pet/cat , null, null, delmob, 1 ) if("runtime") M.change_mob_type( /mob/living/simple_animal/pet/cat/Runtime , null, null, delmob, 1 ) if("corgi") M.change_mob_type( /mob/living/simple_animal/pet/dog/corgi , null, null, delmob, 1 ) - if("ian") M.change_mob_type( /mob/living/simple_animal/pet/dog/corgi/Ian , null, null, delmob, 1 ) if("crab") M.change_mob_type( /mob/living/simple_animal/crab , null, null, delmob, 1 ) if("coffee") M.change_mob_type( /mob/living/simple_animal/crab/Coffee , null, null, delmob, 1 ) if("parrot") M.change_mob_type( /mob/living/simple_animal/parrot , null, null, delmob, 1 ) diff --git a/code/modules/customitems/item_defines.dm b/code/modules/customitems/item_defines.dm index a31b399f428..b3d2a022648 100644 --- a/code/modules/customitems/item_defines.dm +++ b/code/modules/customitems/item_defines.dm @@ -245,6 +245,7 @@ D.flags |= NODROP C.place_on_head(D) C.name = "Detective Sax" + C.real_name = "Detective Sax" C.visible_message("[C] suddenly winks into existence at [user]'s feet!") to_chat(user, "[src] crumbles to dust in your hands!") qdel(src) diff --git a/code/modules/mob/living/simple_animal/friendly/corgi_powers.dm b/code/modules/mob/living/simple_animal/friendly/corgi_powers.dm deleted file mode 100644 index e96d3cd9bd1..00000000000 --- a/code/modules/mob/living/simple_animal/friendly/corgi_powers.dm +++ /dev/null @@ -1,6 +0,0 @@ -/mob/living/simple_animal/pet/dog/corgi/verb/chasetail() - set name = "Chase your tail" - set desc = "d'awwww." - set category = "Corgi" - visible_message("[src] [pick("dances around","chases [p_their()] tail")].","[pick("You dance around","You chase your tail")].") - spin(20, 1) diff --git a/code/modules/mob/living/simple_animal/friendly/crab.dm b/code/modules/mob/living/simple_animal/friendly/crab.dm index 1456e2f70fb..dad78016f58 100644 --- a/code/modules/mob/living/simple_animal/friendly/crab.dm +++ b/code/modules/mob/living/simple_animal/friendly/crab.dm @@ -40,6 +40,7 @@ response_disarm = "gently pushes aside" response_harm = "stomps" gold_core_spawnable = CHEM_MOB_SPAWN_INVALID + unique_pet = TRUE //LOOK AT THIS - ..()?? /*/mob/living/simple_animal/crab/attackby(var/obj/item/O as obj, var/mob/user as mob, params) diff --git a/code/modules/mob/living/simple_animal/friendly/dog.dm b/code/modules/mob/living/simple_animal/friendly/dog.dm index 3d3f3c62ee2..caa8eece169 100644 --- a/code/modules/mob/living/simple_animal/friendly/dog.dm +++ b/code/modules/mob/living/simple_animal/friendly/dog.dm @@ -1,6 +1,10 @@ //Dogs. /mob/living/simple_animal/pet/dog + name = "dog" + icon_state = "blackdog" + icon_living = "blackdog" + icon_dead = "blackdog_dead" response_help = "pets" response_disarm = "bops" response_harm = "kicks" @@ -12,10 +16,19 @@ see_in_dark = 5 speak_chance = 1 turns_per_move = 10 + gold_core_spawnable = CHEM_MOB_SPAWN_FRIENDLY var/bark_sound = list('sound/creatures/dog_bark1.ogg','sound/creatures/dog_bark2.ogg') //Used in emote. var/yelp_sound = 'sound/creatures/dog_yelp.ogg' //Used on death. var/last_eaten = 0 +/mob/living/simple_animal/pet/dog/verb/chasetail() + set name = "Chase your tail" + set desc = "d'awwww." + set category = "Dog" + + visible_message("[src] [pick("dances around", "chases [p_their()] tail")].", "[pick("You dance around", "You chase your tail")].") + spin(20, 1) + /mob/living/simple_animal/pet/dog/death(gibbed) // Only execute the below if we successfully died . = ..(gibbed) @@ -69,7 +82,7 @@ if(change) if(change > 0) if(M && stat != DEAD) // Added check to see if this mob (the corgi) is dead to fix issue 2454 - new /obj/effect/temp_visual/heart(src) + new /obj/effect/temp_visual/heart(loc) custom_emote(1, "yaps happily!") else if(M && stat != DEAD) // Same check here, even though emote checks it as well (poor form to check it only in the help case) diff --git a/code/modules/mob/living/simple_animal/friendly/fox.dm b/code/modules/mob/living/simple_animal/friendly/fox.dm index 8918210af1a..7f1e4dcbccc 100644 --- a/code/modules/mob/living/simple_animal/friendly/fox.dm +++ b/code/modules/mob/living/simple_animal/friendly/fox.dm @@ -1,5 +1,5 @@ //Foxxy -/mob/living/simple_animal/pet/fox +/mob/living/simple_animal/pet/dog/fox name = "fox" desc = "It's a fox. I wonder what it says?" icon_state = "fox" @@ -20,14 +20,14 @@ gold_core_spawnable = CHEM_MOB_SPAWN_FRIENDLY //Captain fox -/mob/living/simple_animal/pet/fox/Renault +/mob/living/simple_animal/pet/dog/fox/Renault name = "Renault" desc = "Renault, the Captain's trustworthy fox. I wonder what it says?" unique_pet = TRUE gold_core_spawnable = CHEM_MOB_SPAWN_INVALID //Syndi fox -/mob/living/simple_animal/pet/fox/Syndifox +/mob/living/simple_animal/pet/dog/fox/Syndifox name = "Syndifox" desc = "Syndifox, the Syndicate's most respected mascot. I wonder what it says?" icon_state = "Syndifox" diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index 020527c2083..ba54db9b415 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -185,7 +185,6 @@ qdel(t) var/mob/living/simple_animal/pet/dog/corgi/new_corgi = new /mob/living/simple_animal/pet/dog/corgi (loc) - new_corgi.a_intent = INTENT_HARM new_corgi.key = key to_chat(new_corgi, "You are now a Corgi. Yap Yap!") @@ -288,9 +287,9 @@ if(ispath(MP, /mob/living/simple_animal/parrot)) return 1 if(!GAMEMODE_IS_NUCLEAR) - if(ispath(MP, /mob/living/simple_animal/pet/fox/Syndifox)) + if(ispath(MP, /mob/living/simple_animal/pet/dog/fox/Syndifox)) return 0 - if(ispath(MP, /mob/living/simple_animal/pet/fox)) + if(ispath(MP, /mob/living/simple_animal/pet/dog/fox)) return 1 if(ispath(MP, /mob/living/simple_animal/chick)) return 1 diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index 338658eecce..4bf6c98fc50 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -248,7 +248,7 @@ if("lizard") new_mob = new /mob/living/simple_animal/lizard(M.loc) if("fox") - new_mob = new /mob/living/simple_animal/pet/fox(M.loc) + new_mob = new /mob/living/simple_animal/pet/dog/fox(M.loc) else new_mob = new /mob/living/simple_animal/chick(M.loc) new_mob.universal_speak = TRUE diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm index 4a2c844f94e..581f4983d03 100644 --- a/code/modules/research/experimentor.dm +++ b/code/modules/research/experimentor.dm @@ -620,7 +620,7 @@ /obj/item/relic/New() icon_state = pick("shock_kit","armor-igniter-analyzer","infra-igniter0","infra-igniter1","radio-multitool","prox-radio1","radio-radio","timer-multitool0","radio-igniter-tank") realName = "[pick("broken","twisted","spun","improved","silly","regular","badly made")] [pick("device","object","toy","suspicious tech","gear")]" - floof = pick(/mob/living/simple_animal/pet/dog/corgi, /mob/living/simple_animal/pet/cat, /mob/living/simple_animal/pet/fox, /mob/living/simple_animal/mouse, /mob/living/simple_animal/pet/pug, /mob/living/simple_animal/lizard, /mob/living/simple_animal/diona, /mob/living/simple_animal/butterfly, /mob/living/carbon/human/monkey) + floof = pick(/mob/living/simple_animal/pet/dog/corgi, /mob/living/simple_animal/pet/cat, /mob/living/simple_animal/pet/dog/fox, /mob/living/simple_animal/mouse, /mob/living/simple_animal/pet/pug, /mob/living/simple_animal/lizard, /mob/living/simple_animal/diona, /mob/living/simple_animal/butterfly, /mob/living/carbon/human/monkey) /obj/item/relic/proc/reveal() @@ -677,7 +677,7 @@ to_chat(user, message) var/animals = rand(1,25) var/counter - var/list/valid_animals = list(/mob/living/simple_animal/parrot,/mob/living/simple_animal/butterfly,/mob/living/simple_animal/pet/cat,/mob/living/simple_animal/pet/dog/corgi,/mob/living/simple_animal/crab,/mob/living/simple_animal/pet/fox,/mob/living/simple_animal/lizard,/mob/living/simple_animal/mouse,/mob/living/simple_animal/pet/pug,/mob/living/simple_animal/hostile/bear,/mob/living/simple_animal/hostile/poison/bees,/mob/living/simple_animal/hostile/carp) + var/list/valid_animals = list(/mob/living/simple_animal/parrot,/mob/living/simple_animal/butterfly,/mob/living/simple_animal/pet/cat,/mob/living/simple_animal/pet/dog/corgi,/mob/living/simple_animal/crab,/mob/living/simple_animal/pet/dog/fox,/mob/living/simple_animal/lizard,/mob/living/simple_animal/mouse,/mob/living/simple_animal/pet/pug,/mob/living/simple_animal/hostile/bear,/mob/living/simple_animal/hostile/poison/bees,/mob/living/simple_animal/hostile/carp) for(counter = 1; counter < animals; counter++) var/mobType = pick(valid_animals) new mobType(get_turf(src)) diff --git a/paradise.dme b/paradise.dme index 399c9fdde96..21d156ad2df 100644 --- a/paradise.dme +++ b/paradise.dme @@ -1928,7 +1928,6 @@ #include "code\modules\mob\living\simple_animal\friendly\butterfly.dm" #include "code\modules\mob\living\simple_animal\friendly\cat.dm" #include "code\modules\mob\living\simple_animal\friendly\cockroach.dm" -#include "code\modules\mob\living\simple_animal\friendly\corgi_powers.dm" #include "code\modules\mob\living\simple_animal\friendly\crab.dm" #include "code\modules\mob\living\simple_animal\friendly\deer.dm" #include "code\modules\mob\living\simple_animal\friendly\diona.dm" From 8f91f8a2fcaa1c75cd9a7e5a8783b2d6e7f29e54 Mon Sep 17 00:00:00 2001 From: Fox McCloud Date: Thu, 5 Sep 2019 19:39:27 -0400 Subject: [PATCH 4/5] last tweak --- code/modules/customitems/item_defines.dm | 25 +++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/code/modules/customitems/item_defines.dm b/code/modules/customitems/item_defines.dm index b3d2a022648..894d9a30ff2 100644 --- a/code/modules/customitems/item_defines.dm +++ b/code/modules/customitems/item_defines.dm @@ -238,17 +238,20 @@ force = 2 /obj/item/fluff/dogwhistle/attack_self(mob/user) - user.visible_message("[user] blows on the whistle, but no sound comes out.", "You blow on the whistle, but don't hear anything.") - spawn(20) - var/mob/living/simple_animal/pet/dog/corgi/C = new /mob/living/simple_animal/pet/dog/corgi(get_turf(user)) - var/obj/item/clothing/head/det_hat/D = new /obj/item/clothing/head/det_hat(C) - D.flags |= NODROP - C.place_on_head(D) - C.name = "Detective Sax" - C.real_name = "Detective Sax" - C.visible_message("[C] suddenly winks into existence at [user]'s feet!") - to_chat(user, "[src] crumbles to dust in your hands!") - qdel(src) + user.visible_message("[user] blows on the whistle, but no sound comes out.", "You blow on the whistle, but don't hear anything.") + addtimer(CALLBACK(src, .proc/summon_sax, user), 20) + +/obj/item/fluff/dogwhistle/proc/summon_sax(mob/user) + var/mob/living/simple_animal/pet/dog/corgi/C = new /mob/living/simple_animal/pet/dog/corgi(get_turf(user)) + C.name = "Detective Sax" + C.real_name = "Detective Sax" + var/obj/item/clothing/head/det_hat/D = new + D.flags |= NODROP + C.place_on_head(D) + C.visible_message("[C] suddenly winks into existence at [user]'s feet!") + to_chat(user, "[src] crumbles to dust in your hands!") + user.drop_item() + qdel(src) /obj/item/storage/toolbox/fluff/lunchbox //godoforeos: Jason Conrad name = "lunchpail" From 3c3863f8d279bef4875ccdba4be87d9bb528b05c Mon Sep 17 00:00:00 2001 From: Fox McCloud Date: Thu, 5 Sep 2019 20:03:05 -0400 Subject: [PATCH 5/5] narsie is not a fan of dog sacrifice. Cats are fine --- code/game/gamemodes/cult/runes.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 922a1303232..56f07d52826 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -434,7 +434,7 @@ var/list/teleport_runes = list() var/sacrifice_fulfilled var/datum/game_mode/cult/cult_mode = SSticker.mode if(T) - if(istype(T, /mob/living/simple_animal/pet/dog/corgi)) + if(isdog(T)) // Doggos are the best, but not cats for(var/M in invokers) var/mob/living/L = M to_chat(L, "\"Even I have standards, such as they are!\"")