From 0c305d0c581cd4e32ac9f4e9e13afb55c2fc4806 Mon Sep 17 00:00:00 2001 From: tralezab <40974010+tralezab@users.noreply.github.com> Date: Tue, 15 Mar 2022 14:03:15 -0700 Subject: [PATCH] Removes Dynamic Hair Suffixes (#65209) About The Pull Request Removes Dynamic Hair Suffixes + Included files Why It's Good For The Game Facial hair suffixes went unused, @Twaticus and the spriting team are planning something new for hair that is not going to use this horribly underused and just kinda like, bad system Changelog not player facing --- code/game/objects/items/holy_weapons.dm | 1 - code/modules/clothing/clothing.dm | 7 --- code/modules/clothing/head/_head.dm | 7 --- code/modules/clothing/head/animalears.dm | 2 - code/modules/clothing/head/collectable.dm | 10 ++- code/modules/clothing/head/cone.dm | 2 +- code/modules/clothing/head/costume.dm | 2 +- code/modules/clothing/head/crown.dm | 2 +- code/modules/clothing/head/frenchberet.dm | 2 +- code/modules/clothing/head/hardhat.dm | 4 +- code/modules/clothing/head/hat.dm | 6 +- code/modules/clothing/head/helmet.dm | 2 +- code/modules/clothing/head/jobs.dm | 6 +- code/modules/clothing/head/pirate.dm | 2 +- .../clothing/spacesuits/_spacesuits.dm | 3 +- .../modules/clothing/spacesuits/specialops.dm | 3 +- code/modules/clothing/suits/costume.dm | 2 +- code/modules/clothing/suits/toggles.dm | 2 +- code/modules/clothing/suits/utility.dm | 3 +- .../mob/living/carbon/human/inventory.dm | 4 -- .../mob/living/carbon/human/species.dm | 58 ++---------------- code/modules/mod/mod_clothes.dm | 2 +- .../xenobiology/crossbreeding/_clothing.dm | 2 +- icons/mob/facialhair_extensions.dmi | Bin 182 -> 0 bytes icons/mob/hair_extensions.dmi | Bin 37531 -> 0 bytes 25 files changed, 30 insertions(+), 104 deletions(-) delete mode 100644 icons/mob/facialhair_extensions.dmi delete mode 100644 icons/mob/hair_extensions.dmi diff --git a/code/game/objects/items/holy_weapons.dm b/code/game/objects/items/holy_weapons.dm index d3bcfb594ed..0e8ec1b4406 100644 --- a/code/game/objects/items/holy_weapons.dm +++ b/code/game/objects/items/holy_weapons.dm @@ -53,7 +53,6 @@ flags_inv = NONE icon_state = "cage" inhand_icon_state = "cage" - dynamic_hair_suffix = "" worn_y_offset = 7 /obj/item/clothing/head/helmet/chaplain/ancient diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index a5d28634ccf..898ec327c43 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -40,13 +40,6 @@ var/pocket_storage_component_path - //These allow head/mask items to dynamically alter the user's hair - // and facial hair, checking hair_extensions.dmi and facialhair_extensions.dmi - // for a state matching hair_state+dynamic_hair_suffix - // THESE OVERRIDE THE HIDEHAIR FLAGS - var/dynamic_hair_suffix = ""//head > mask for head hair - var/dynamic_fhair_suffix = ""//mask > head for facial hair - /// How much clothing damage has been dealt to each of the limbs of the clothing, assuming it covers more than one limb var/list/damage_by_parts /// How much integrity is in a specific limb before that limb is disabled (for use in [/obj/item/clothing/proc/take_damage_zone], and only if we cover multiple zones.) Set to 0 to disable shredding. diff --git a/code/modules/clothing/head/_head.dm b/code/modules/clothing/head/_head.dm index 9ea6fddca72..83585452208 100644 --- a/code/modules/clothing/head/_head.dm +++ b/code/modules/clothing/head/_head.dm @@ -7,13 +7,6 @@ slot_flags = ITEM_SLOT_HEAD var/blockTracking = 0 //For AI tracking var/can_toggle = null - dynamic_hair_suffix = "+generic" - -/obj/item/clothing/head/Initialize(mapload) - . = ..() - if(ishuman(loc) && dynamic_hair_suffix) - var/mob/living/carbon/human/H = loc - H.update_hair() ///Special throw_impact for hats to frisbee hats at people to place them on their heads/attempt to de-hat them. /obj/item/clothing/head/throw_impact(atom/hit_atom, datum/thrownthing/thrownthing) diff --git a/code/modules/clothing/head/animalears.dm b/code/modules/clothing/head/animalears.dm index f5a73214538..13890bf507f 100644 --- a/code/modules/clothing/head/animalears.dm +++ b/code/modules/clothing/head/animalears.dm @@ -3,7 +3,6 @@ desc = "A pair of kitty ears. Meow!" icon_state = "kitty" color = "#999999" - dynamic_hair_suffix = "" dog_fashion = /datum/dog_fashion/head/kitty @@ -25,6 +24,5 @@ name = "rabbit ears" desc = "Wearing these makes you look useless, and only good for your sex appeal." icon_state = "bunny" - dynamic_hair_suffix = "" dog_fashion = /datum/dog_fashion/head/rabbit diff --git a/code/modules/clothing/head/collectable.dm b/code/modules/clothing/head/collectable.dm index 5f143552310..b0f375ee152 100644 --- a/code/modules/clothing/head/collectable.dm +++ b/code/modules/clothing/head/collectable.dm @@ -26,7 +26,6 @@ desc = "A rare chef's hat meant for hat collectors!" icon_state = "chef" inhand_icon_state = "chef" - dynamic_hair_suffix = "" dog_fashion = /datum/dog_fashion/head/chef @@ -55,7 +54,6 @@ name = "collectable police officer's hat" desc = "A collectable police officer's Hat. This hat emphasizes that you are THE LAW." icon_state = "policehelm" - dynamic_hair_suffix = "" dog_fashion = /datum/dog_fashion/head/warden @@ -82,7 +80,7 @@ icon_state = "headslime" inhand_icon_state = "headslime" clothing_flags = SNUG_FIT - dynamic_hair_suffix = "" + /obj/item/clothing/head/collectable/flatcap name = "collectable flat cap" @@ -106,7 +104,7 @@ desc = "The fur feels... a bit too realistic." icon_state = "kitty" inhand_icon_state = "kitty" - dynamic_hair_suffix = "" + dog_fashion = /datum/dog_fashion/head/kitty @@ -115,7 +113,7 @@ desc = "Not as lucky as the feet!" icon_state = "bunny" inhand_icon_state = "bunny" - dynamic_hair_suffix = "" + dog_fashion = /datum/dog_fashion/head/rabbit @@ -139,7 +137,7 @@ name = "collectable HoS hat" desc = "Now you too can beat prisoners, set silly sentences, and arrest for no reason!" icon_state = "hoscap" - dynamic_hair_suffix = "" + /obj/item/clothing/head/collectable/hop name = "collectable HoP hat" diff --git a/code/modules/clothing/head/cone.dm b/code/modules/clothing/head/cone.dm index 7d31ecde476..2754fe8445e 100644 --- a/code/modules/clothing/head/cone.dm +++ b/code/modules/clothing/head/cone.dm @@ -12,7 +12,7 @@ attack_verb_continuous = list("warns", "cautions", "smashes") attack_verb_simple = list("warn", "caution", "smash") resistance_flags = NONE - dynamic_hair_suffix = "" + /obj/item/clothing/head/cone/worn_overlays(mutable_appearance/standing, isinhands, icon_file) . = ..() diff --git a/code/modules/clothing/head/costume.dm b/code/modules/clothing/head/costume.dm index 8eba8dbc4e7..acd2cb08e4f 100644 --- a/code/modules/clothing/head/costume.dm +++ b/code/modules/clothing/head/costume.dm @@ -88,7 +88,7 @@ flags_inv = HIDEHAIR //bald icon_state = "shrine_wig" inhand_icon_state = "shrine_wig" - dynamic_hair_suffix = "" + worn_y_offset = 1 /obj/item/clothing/head/cardborg diff --git a/code/modules/clothing/head/crown.dm b/code/modules/clothing/head/crown.dm index 2a3eb907e1d..33e7f2e5225 100644 --- a/code/modules/clothing/head/crown.dm +++ b/code/modules/clothing/head/crown.dm @@ -4,7 +4,7 @@ icon_state = "crown" armor = list(MELEE = 15, BULLET = 0, LASER = 0,ENERGY = 10, BOMB = 0, BIO = 0, FIRE = 100, ACID = 50, WOUND = 5) resistance_flags = FIRE_PROOF - dynamic_hair_suffix = "" + /obj/item/clothing/head/crown/fancy name = "magnificent crown" diff --git a/code/modules/clothing/head/frenchberet.dm b/code/modules/clothing/head/frenchberet.dm index 18f80955e44..f2d14b195ba 100644 --- a/code/modules/clothing/head/frenchberet.dm +++ b/code/modules/clothing/head/frenchberet.dm @@ -5,7 +5,7 @@ greyscale_config = /datum/greyscale_config/beret greyscale_config_worn = /datum/greyscale_config/beret/worn greyscale_colors = "#972A2A" - dynamic_hair_suffix = "" + /obj/item/clothing/head/frenchberet/equipped(mob/M, slot) . = ..() diff --git a/code/modules/clothing/head/hardhat.dm b/code/modules/clothing/head/hardhat.dm index fe860b67ea2..2f94e488b96 100644 --- a/code/modules/clothing/head/hardhat.dm +++ b/code/modules/clothing/head/hardhat.dm @@ -8,7 +8,7 @@ actions_types = list(/datum/action/item_action/toggle_helmet_light) clothing_flags = SNUG_FIT | PLASMAMAN_HELMET_EXEMPT resistance_flags = FIRE_PROOF - dynamic_hair_suffix = "+generic" + light_system = MOVABLE_LIGHT_DIRECTIONAL light_range = 4 light_power = 0.8 @@ -242,6 +242,6 @@ flags_inv = 0 armor = list(MELEE = 0, BULLET = 0, LASER = 0,ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 0, ACID = 0) light_range = 1 //luminosity when on - dynamic_hair_suffix = "" + dog_fashion = /datum/dog_fashion/head/reindeer diff --git a/code/modules/clothing/head/hat.dm b/code/modules/clothing/head/hat.dm index 5a884d3507f..5f0c1c4294d 100644 --- a/code/modules/clothing/head/hat.dm +++ b/code/modules/clothing/head/hat.dm @@ -39,7 +39,7 @@ name = "nurse's hat" desc = "It allows quick identification of trained medical personnel." icon_state = "nursehat" - dynamic_hair_suffix = "" + dog_fashion = /datum/dog_fashion/head/nurse @@ -48,7 +48,7 @@ desc = "Gentleman, elite aboard!" icon_state = "bowler" inhand_icon_state = "bowler" - dynamic_hair_suffix = "" + /obj/item/clothing/head/bearpelt name = "bear pelt hat" @@ -117,7 +117,7 @@ name = "jester hat" desc = "A hat with bells, to add some merriness to the suit." icon_state = "jester_hat" - dynamic_hair_suffix = "" + /obj/item/clothing/head/jester/alt icon_state = "jester2" diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index 4ab6c05640d..14fc01f5144 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -227,7 +227,7 @@ name = "police officer's hat" desc = "A police officer's Hat. This hat emphasizes that you are THE LAW." icon_state = "policehelm" - dynamic_hair_suffix = "" + /obj/item/clothing/head/helmet/constable name = "constable helmet" diff --git a/code/modules/clothing/head/jobs.dm b/code/modules/clothing/head/jobs.dm index 268ca3b01c2..39e47a8f27e 100644 --- a/code/modules/clothing/head/jobs.dm +++ b/code/modules/clothing/head/jobs.dm @@ -12,7 +12,7 @@ desc = "The commander in chef's head wear." strip_delay = 10 equip_delay_other = 10 - dynamic_hair_suffix = "" + pocket_storage_component_path = /datum/component/storage/concrete/pockets/chefhat dog_fashion = /datum/dog_fashion/head/chef ///the chance that the movements of a mouse inside of this hat get relayed to the human wearing the hat @@ -125,7 +125,7 @@ desc = "A beret, a mime's favorite headwear." icon_state = "beret" dog_fashion = /datum/dog_fashion/head/beret - dynamic_hair_suffix = "" + greyscale_config = /datum/greyscale_config/beret greyscale_config_worn = /datum/greyscale_config/beret/worn greyscale_colors = "#972A2A" @@ -140,7 +140,7 @@ armor = list(MELEE = 40, BULLET = 30, LASER = 25, ENERGY = 35, BOMB = 25, BIO = 10, FIRE = 50, ACID = 60, WOUND = 10) icon_state = "hoscap" strip_delay = 80 - dynamic_hair_suffix = "" + /obj/item/clothing/head/hos/syndicate name = "syndicate cap" diff --git a/code/modules/clothing/head/pirate.dm b/code/modules/clothing/head/pirate.dm index c66c58211e3..0ddaa4bd639 100644 --- a/code/modules/clothing/head/pirate.dm +++ b/code/modules/clothing/head/pirate.dm @@ -40,7 +40,7 @@ desc = "Yarr." icon_state = "bandana" inhand_icon_state = "bandana" - dynamic_hair_suffix = "" + /obj/item/clothing/head/bandana/armored armor = list(MELEE = 30, BULLET = 50, LASER = 30,ENERGY = 40, BOMB = 30, BIO = 30, FIRE = 60, ACID = 75) diff --git a/code/modules/clothing/spacesuits/_spacesuits.dm b/code/modules/clothing/spacesuits/_spacesuits.dm index e6a8b101a14..875a54903bd 100644 --- a/code/modules/clothing/spacesuits/_spacesuits.dm +++ b/code/modules/clothing/spacesuits/_spacesuits.dm @@ -11,8 +11,7 @@ permeability_coefficient = 0.01 armor = list(MELEE = 0, BULLET = 0, LASER = 0,ENERGY = 0, BOMB = 0, BIO = 100, FIRE = 80, ACID = 70) flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT - dynamic_hair_suffix = "" - dynamic_fhair_suffix = "" + cold_protection = HEAD min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT heat_protection = HEAD diff --git a/code/modules/clothing/spacesuits/specialops.dm b/code/modules/clothing/spacesuits/specialops.dm index 059a675a308..f996d8a0432 100644 --- a/code/modules/clothing/spacesuits/specialops.dm +++ b/code/modules/clothing/spacesuits/specialops.dm @@ -5,8 +5,7 @@ greyscale_config_worn = /datum/greyscale_config/beret_badge/worn icon_state = "beret_badge" greyscale_colors = "#972A2A#F2F2F2" - dynamic_hair_suffix = "+generic" - dynamic_fhair_suffix = "+generic" + flags_inv = 0 armor = list(MELEE = 80, BULLET = 80, LASER = 50, ENERGY = 60, BOMB = 100, BIO = 100, FIRE = 100, ACID = 100, WOUND = 15) strip_delay = 130 diff --git a/code/modules/clothing/suits/costume.dm b/code/modules/clothing/suits/costume.dm index b4b399bb5c8..3165476a3ed 100644 --- a/code/modules/clothing/suits/costume.dm +++ b/code/modules/clothing/suits/costume.dm @@ -320,7 +320,7 @@ body_parts_covered = HEAD clothing_flags = THICKMATERIAL flags_inv = HIDEHAIR|HIDEEARS - dynamic_hair_suffix = "" + /obj/item/clothing/suit/hooded/bloated_human //OH MY GOD WHAT HAVE YOU DONE!?!?!? name = "bloated human suit" diff --git a/code/modules/clothing/suits/toggles.dm b/code/modules/clothing/suits/toggles.dm index 8273ec8e7db..206908a37c1 100644 --- a/code/modules/clothing/suits/toggles.dm +++ b/code/modules/clothing/suits/toggles.dm @@ -84,7 +84,7 @@ /obj/item/clothing/head/hooded var/obj/item/clothing/suit/hooded/suit - dynamic_hair_suffix = "" + /obj/item/clothing/head/hooded/Destroy() suit = null diff --git a/code/modules/clothing/suits/utility.dm b/code/modules/clothing/suits/utility.dm index b3201ac224e..fb55ce647c7 100644 --- a/code/modules/clothing/suits/utility.dm +++ b/code/modules/clothing/suits/utility.dm @@ -63,8 +63,7 @@ clothing_flags = THICKMATERIAL | SNUG_FIT armor = list(MELEE = 20, BULLET = 0, LASER = 20,ENERGY = 30, BOMB = 100, BIO = 0, FIRE = 80, ACID = 50) flags_inv = HIDEFACE|HIDEMASK|HIDEEARS|HIDEEYES|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT - dynamic_hair_suffix = "" - dynamic_fhair_suffix = "" + cold_protection = HEAD min_cold_protection_temperature = HELMET_MIN_TEMP_PROTECT heat_protection = HEAD diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm index eec9dff8ec0..be66c441eed 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -274,10 +274,6 @@ /mob/living/carbon/human/head_update(obj/item/I, forced) if((I.flags_inv & (HIDEHAIR|HIDEFACIALHAIR)) || forced) update_hair() - else - var/obj/item/clothing/C = I - if(istype(C) && C.dynamic_hair_suffix) - update_hair() if(I.flags_inv & HIDEEYES || forced) update_inv_glasses() if(I.flags_inv & HIDEEARS || forced) diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 1a41cf2a54e..b9afb17ee33 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -545,9 +545,6 @@ GLOBAL_LIST_EMPTY(features_by_species) var/hair_hidden = FALSE //ignored if the matching dynamic_X_suffix is non-empty var/facialhair_hidden = FALSE // ^ - var/dynamic_hair_suffix = "" //if this is non-null, and hair+suffix matches an iconstate, then we render that hair instead - var/dynamic_fhair_suffix = "" - //for augmented heads if(noggin.status == BODYPART_ROBOTIC) return @@ -555,41 +552,19 @@ GLOBAL_LIST_EMPTY(features_by_species) //we check if our hat or helmet hides our facial hair. if(H.head) var/obj/item/I = H.head - if(isclothing(I)) - var/obj/item/clothing/C = I - dynamic_fhair_suffix = C.dynamic_fhair_suffix if(I.flags_inv & HIDEFACIALHAIR) facialhair_hidden = TRUE if(H.wear_mask) var/obj/item/I = H.wear_mask - if(isclothing(I)) - var/obj/item/clothing/C = I - dynamic_fhair_suffix = C.dynamic_fhair_suffix //mask > head in terms of facial hair if(I.flags_inv & HIDEFACIALHAIR) facialhair_hidden = TRUE - if(H.facial_hairstyle && (FACEHAIR in species_traits) && (!facialhair_hidden || dynamic_fhair_suffix)) + if(H.facial_hairstyle && (FACEHAIR in species_traits) && !facialhair_hidden) S = GLOB.facial_hairstyles_list[H.facial_hairstyle] if(S) - //List of all valid dynamic_fhair_suffixes - var/static/list/fextensions - if(!fextensions) - var/icon/fhair_extensions = icon('icons/mob/facialhair_extensions.dmi') - fextensions = list() - for(var/s in fhair_extensions.IconStates(1)) - fextensions[s] = TRUE - qdel(fhair_extensions) - - //Is hair+dynamic_fhair_suffix a valid iconstate? - var/fhair_state = S.icon_state - var/fhair_file = S.icon - if(fextensions[fhair_state+dynamic_fhair_suffix]) - fhair_state += dynamic_fhair_suffix - fhair_file = 'icons/mob/facialhair_extensions.dmi' - - var/mutable_appearance/facial_overlay = mutable_appearance(fhair_file, fhair_state, -HAIR_LAYER) + var/mutable_appearance/facial_overlay = mutable_appearance(S.icon, S.icon_state, -HAIR_LAYER) var/mutable_appearance/gradient_overlay if(!forced_colour) @@ -606,12 +581,12 @@ GLOBAL_LIST_EMPTY(features_by_species) var/grad_style = LAZYACCESS(H.grad_style, GRADIENT_FACIAL_HAIR_KEY) if(grad_style) var/grad_color = LAZYACCESS(H.grad_color, GRADIENT_FACIAL_HAIR_KEY) - gradient_overlay = make_gradient_overlay(fhair_file, fhair_state, HAIR_LAYER, GLOB.facial_hair_gradients_list[grad_style], grad_color) + gradient_overlay = make_gradient_overlay(S.icon, S.icon_state, HAIR_LAYER, GLOB.facial_hair_gradients_list[grad_style], grad_color) else facial_overlay.color = forced_colour facial_overlay.alpha = hair_alpha - facial_overlay.overlays += emissive_blocker(fhair_file, fhair_state, alpha = hair_alpha) + facial_overlay.overlays += emissive_blocker(S.icon, S.icon_state, alpha = hair_alpha) standing += facial_overlay if(gradient_overlay) @@ -619,29 +594,20 @@ GLOBAL_LIST_EMPTY(features_by_species) if(H.head) var/obj/item/I = H.head - if(isclothing(I)) - var/obj/item/clothing/C = I - dynamic_hair_suffix = C.dynamic_hair_suffix if(I.flags_inv & HIDEHAIR) hair_hidden = TRUE if(H.w_uniform) var/obj/item/item_uniform = H.w_uniform - if(isclothing(item_uniform)) - var/obj/item/clothing/clothing_object = item_uniform - dynamic_hair_suffix = clothing_object.dynamic_hair_suffix if(item_uniform.flags_inv & HIDEHAIR) hair_hidden = TRUE if(H.wear_mask) var/obj/item/I = H.wear_mask - if(!dynamic_hair_suffix && isclothing(I)) //head > mask in terms of head hair - var/obj/item/clothing/C = I - dynamic_hair_suffix = C.dynamic_hair_suffix if(I.flags_inv & HIDEHAIR) hair_hidden = TRUE - if(!hair_hidden || dynamic_hair_suffix) + if(!hair_hidden) var/mutable_appearance/hair_overlay = mutable_appearance(layer = -HAIR_LAYER) var/mutable_appearance/gradient_overlay if(!hair_hidden && !H.getorgan(/obj/item/organ/brain)) //Applies the debrained overlay if there is no brain @@ -652,22 +618,8 @@ GLOBAL_LIST_EMPTY(features_by_species) else if(H.hairstyle && (HAIR in species_traits)) S = GLOB.hairstyles_list[H.hairstyle] if(S) - - //List of all valid dynamic_hair_suffixes - var/static/list/extensions - if(!extensions) - var/icon/hair_extensions = icon('icons/mob/hair_extensions.dmi') //hehe - extensions = list() - for(var/s in hair_extensions.IconStates(1)) - extensions[s] = TRUE - qdel(hair_extensions) - - //Is hair+dynamic_hair_suffix a valid iconstate? var/hair_state = S.icon_state var/hair_file = S.icon - if(extensions[hair_state+dynamic_hair_suffix]) - hair_state += dynamic_hair_suffix - hair_file = 'icons/mob/hair_extensions.dmi' hair_overlay.icon = hair_file hair_overlay.icon_state = hair_state diff --git a/code/modules/mod/mod_clothes.dm b/code/modules/mod/mod_clothes.dm index 2fac5bc629d..e13c7d7085b 100644 --- a/code/modules/mod/mod_clothes.dm +++ b/code/modules/mod/mod_clothes.dm @@ -8,7 +8,7 @@ body_parts_covered = HEAD heat_protection = HEAD cold_protection = HEAD - dynamic_hair_suffix = "" + obj_flags = IMMUTABLE_SLOW var/alternate_layer = NECK_LAYER var/obj/item/mod/control/mod diff --git a/code/modules/research/xenobiology/crossbreeding/_clothing.dm b/code/modules/research/xenobiology/crossbreeding/_clothing.dm index 915bb490b9d..3d141866f31 100644 --- a/code/modules/research/xenobiology/crossbreeding/_clothing.dm +++ b/code/modules/research/xenobiology/crossbreeding/_clothing.dm @@ -101,7 +101,7 @@ Slimecrossing Armor slot_flags = ITEM_SLOT_HEAD clothing_traits = list(TRAIT_PACIFISM) body_parts_covered = NONE - dynamic_hair_suffix = "" + force = 0 throwforce = 0 w_class = WEIGHT_CLASS_TINY diff --git a/icons/mob/facialhair_extensions.dmi b/icons/mob/facialhair_extensions.dmi deleted file mode 100644 index cf74d73796c8c6121c0818fdac74e4a7f0ab9a5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 182 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnL3?x0byx0z;m;-!5T!HlRD%)E?im@cfFPOpM z*^M-ilB$r15|`BC)e_1!5cyiE*d|0 zq;uX!^CUx2Pwx&3;~?Y9#$F0CsjT7l;v3i)KHlcf^{%~V4K$R;)5S4_V`g%K#2p}S W0R!VxY5#RV7K5j&pUXO@geCygCOLEf diff --git a/icons/mob/hair_extensions.dmi b/icons/mob/hair_extensions.dmi deleted file mode 100644 index 8a2f332c7f4099abd04b977237d955f9b3ddfea4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37531 zcmd43c|27A|2KRr*-B^?WobbwNrh}9**>yliR^?3gR+lh2yK%3s3bdO8;l6qW-L*X zEz88jkjgL^nHkG4bFTOF`(F1S*B|%eabJ($b>Fwg)R}W;=FB$9lsbNay>{q&DA`KuG2eRpkC~<>Ba#Ry z7v0<}JWEKQ>9RGT1xe)Spf5-%{ct>J-Z9hhN7P==UmD?C*wu0Kee%)Op%|g8G0$dA zspe~k%sYnuC?7cGbZ=;xk^AdN-FJ_kLz|y?^&Gz*RQ|bt_VWRc-?dgnGU8Xyxk~XZ*e;Br9vfhHPt67xK_u=$)j`X9(zvbHOLq38{{##DO9J#c*e7iY*go2wEiUF zpl^__=VEsyk%TebeYdm&VZw=*2g@P?j=FU(?)kP`L9H)CSIks$TkoC61&8yW z=E=GtB-Fh;K4uAIIdY$>%2xf(!l%wtT3vB{;hP$z+51Xl@f5MI;(|(ksqb3n?xpQn zx)n<9Cc{(q^JZ2LkGhFz3T78p)}-#s7%Z~%#1$w``X@7~cjLQ)=CANiez+v9zh8-b zr0i2uT#UbTSji6QF{#+kY1_JXo7ngr8Va4(jrQ_JaaClV<5xE!l#Djs{pTyV!LA{f zuLph4{wqqHoF6zTeO=nVa|ZolYteaYQa$P%M!uKpB;9g9n`$&E(jPcGy~Vt}#k2cM z#70jBYI+$f?&eaIFxknSEaf)q9wwjCt2Cf1A}TLT zy!G|5bw|i)f3hx(vSOh-hwa~x8rHre zNKs2I&*FH+z+b0vdnnI+@b^iHPxtWQ!v!xJLZBTTx+ccQWwW#NZEKxJM9hm2J9rM< zjc2HqH14wEdqJVlCJm%{$E#gCar{L{fKV4~w+tS(7?7L=)p}M2NLU6*vq# z+#YX>{YUV)ALCWp2DK4aRv}eK!8BI>j;FBj6b63G*F^AmW<^mA3qN_chb?t0!w>3E zeiE)F!mS5=Jdwa0;}blN5W4jJk5-9yCL=-l$>cxC?AZ<5aZ%@~r3k5Z<;1{zoWu0C z#4D^yymuq+)tbBbVWz(aGhUu1^LbQ-+!*_Po4XA1l;3`@8narI*$tHg#YA}7lSqk_ znrCSIK1;Ku5GbLLu3TC?bIeu}wN0l5VH(^5i?r+BsIj-fTm@fD@u(Sj=GXb7bj^7Y z=9;q2kF!xZAH<3`f}$1|7@}?tAwRrw*UT)rj()bC#W)P2a%S7;gIC^B3;T=G<7q|x zU4wav&y0+W)HO8jj0*}1xCirySA>Uz@IvZZ8b41t-%Yu`&I6HXNh!ZTgLQ9wX}%u- zBUAL|LWkpB<(*ct61sL`->rLiR0kwz}dZh~e<*!-ZUtG$}UtZ2yf} zij6bN=Ua$0eY-{-_mgolWmq9kSkeEulFpBm>4`h>*X@NgW!+@0K+wy9eSQ%CqD zH(})+JGo>sdk?4ga6z{l4pxu(6K0Ee-3RuvM;~@xPHlF+s+h40B^fs(svaTzDH-wl znaU3C$kEw^E!;)vGTbvOzNg*{+#*ws;!JlBmUpI^A3Y$Q@UCM&1_Cb>I3XgaX8K6mB+{z~IetU?X?yu0UNw~CGQvC(IvjwbPmy-Gi zomC&5;l%c>bs(rB?l15R`&n}tk3?>*za1t?zR}@48H5&4FdAmZ9DnnSNt>Q_C-|i? zE}ilzy~p{sf^pSPurztkvi+s+IZ2Xd=++g3lF9|SnL*JN9ckl*L4z&69Y*c~4+eeG zZgT%1oj!ST>j-r1+O>5fu;*B=T}=yrMl_tEmix7sk_7Tx!%K3xM_soIxX&Bz;F1NC zLQY=ZomNzz{BFB?4xE;jRzjedk9$#e9dwpUdy5+D$^LY%v5`(GSJfv**<$mk9voX$=usUJUVr+c8dC(`>Og_KgVfo16H3GCV)CsvM~4$gMQmRJuN(ssim26B{(%^o(HzLV30o z1z-f{6y^?f3Wo^2+3Gk`p0K#t9$=N zo^@-=DT&~8remu<_*0!zyYR)krsOK-eM93zi&4VI9}+E=9b%kND-pSCeW`ckDil#3 zz+Cr?(T0{^blgZe_4x0VTodS+$~B%k&($0i9Lh*V*t?>8Xj_3z0R;8y&{6R5hX-=F z<^FE}6S&>~bNK(*Zbo+x`{NDF@#N0KQ0rRsnRok~uZZ$lu@(w&uh@F|ao6Aav-OKYQep$IzpY1(3HFKWL#hLdRKr?;!`yj1rB z56*P#_4jYzbj9y}@>I!I9V-zDxraBE8@icZ!7O`G=8PrC%AUT8o`Sylpa13WyDDAu z@9})8n$j_}k01YV;Klk{?vgp1!razBgXz6uFKtwg4U6RpaiNH&R!34zY8?#nuT-hR z&TD8uU7IDxSS?dvoSG z?>jrQA)2o1NBZDtM$KHPGILYApOUD%m)C5R-~1lluyC+GMvi=5BBks3r72ym<>okd zjkx!fA|d>hme&iNec5GDV|DXk`m!I2jSyg+EmPEi_&*+^KtEKA2- zIieyrdr_3HxII@T^VQxW0)DZ-?il2cL~^N1v4&hTrIHRkUksKlI3*cqZ-o|xgtgN7v*WF!%vM(xjxD&KQ#^+SM?D% z2!fE>XD`&Alg~{BW9a{QQ#90DaEp{m)SwzS>vwOJjpFkYF*-Yv^tcq)OO%TYWs%^{ z6!s;5x>1u&Iqhsoh%2irQTBPI!<>CM8<~9%IY>b|Iq^uosqbDr9_eT^&=ku;5jN** zQx-+0ROt+lYBP}W6LM;HLh&;^Pu)}XF-#FDE%m+Zc4gk6X6=aOsraYNhYr}`cSS=t z-w_up(H`p#tsnkLSrvRebQ98Tn#h3~jc%OY+Wzq$yr_@nqtd;7UII3?NaT|~;$X(4 z7-u*uc!TtNqUVHj@g(vK|5Z}geWC&R$iGEKas3+Y+I}HHFB$Rjh0gQ0Ci~{fP-Zn{ zzf}AU!i`&WB;`o7&BrSMX_;Zs^J}h6VZyCxt;H^xXwy6)Yj;`;%flAI0a~(3dx}yl!j1Qvnvz5hCV* zjBSPN_6lCKQ4DsUn;ZcVwPenUo@kWf-Z-+4$tT?Ais)uYP)n;ifZM)!ESu zkE?80pgB~?nU4>S5=R2+I}Oku{~(SQT)tWN>g$L?RnNFm_W8r!)srAH7#rW*Jb_j+ zsa-68+E&~NqC%0?@pGAG^d_Z2Udbcb>E}NqCFRbymzr~t-rwpNudX!Ih#yM7^M2sP zVxs5|fz~&;UH7=2-0w1>Yrd~s(Z06-OhCNv_i@bkDaZJr!v#Ga|CJCj z-fl{WgG6z-QR4qtYB=z}bLNcZ1$6m{pA}0hH)DUt&A#eX$lzVPsa^D2`RhNQ|o*2jzidh3#ypVn($KIyiWDPfyQi@gX<3 zX$k(XOeK_bhcOaM<*y`K-31tj(z{PAa)lVOtRp zcSrdN*a5M2e(VMdeD{gxLS-Yqgw49~JnB~5Oe~oHqpBZvS>1L2Hist4K4DSoU`Dou zPOg#S^J)ohr!_o|W~Vt7trK{P_gQ_971mFaw{Z!ry~XvB->s(9eic5(L{C{3f^^cM z{GqFhPgPY_Bi~5+>Dl8FY{<>Sqr-s}JAHaw&U(E16nJeQp#Jo5o%{B7-F-qyeH7o? zhkE%zzQvx^Y#C~12{w#9=3ht2Pks36HkyWeG+JScDX~!$XrH3%o$<_9%}q~F*OXOw z_Z@C<+Q~e-Niv7|-DRvx_rxt_TV#!*^Poe1)n~VuPtIG>UwB$g^r&9k&{I0{JipTS=+Uw z5W#x)QgHC8kwJ@U3pbzpGF&#eZ%REH)L-Q%u>uTbdsv^l^+U%!kz&xQc8=9!<=|Se zW_xW}Cu9<-8+zzbgj#1PjB!xfbj6NfV6#zM%`uQF_wC=;`J??hff_-lSH{)i*e<#f~4mz~lxqrNJ)3t)s?O9FBVK&$(+HcP);hhG=sO-c$bg*lk+>e#9o$Rxl58I-5@uw$Tz}nCep%|$g`l4Qt$Y{O*d*_ zqZCXl#t>~N8&VqfNKgEhfwb5;0})#Q;Xucf(DBrb!{fMQHXP66M*p2kn?yT|2{_G? zht(p-?ZREiwPFvqC+YQD$Em7vqa+odKctDJKmYZ-!%69$$(w>y{gf~9-Bp5Gf)@bt z^Xt5BhbO)Y;&NN`{Lt$~wknME>nwN`Mj#$7Zc56ynNX@IA|%qmEpqYH=?MuSdHxethH4eY;|+J0P@Wm7X7DbOLBGkXBB%^5@R)JR)uoK(s-*WB3UG_@WuRp)Q< zdT6fDun^SpVPRo<0)v$!ev2DlwBXOlTmVI&p(zokdLC$B<*9e>8_%#b?VR7+UAGSF zFv&;!7|l|Wgy+BZPG9G}GV&Nlz@%7UHqu(tP32NZaR5CTt_%m-%%ZBc5l+4J*rT_u zE{S=foSQ+F@Uodcz2lOn%7K~i!zbBl^U z*iY+a(Kf2|jSf)1H}D9!N7JA7Njq1GJ$aFy-qb!hI4Cyk`dYTeFdsJRRxqVrB`Vu; ziISzfhVcnsLd1tU-o#bi?j18Ys$Wo1FE6`mQ9b6ENGH+A{r>6b>FwsksUPM+cHz0H z|AHc>qTi5RHTa8*YlF+yV8GZ!OcAuqY!T zzavinoN9DGtPR1Jel8;DS};**{L<1eCA0+p$&)E5)^$_=@2So}y9TfQ0WZrJN0C;v zT$Q&vFI70iU|g_;|0!+bXOtD>aKxTMX` z0t_f_9^6%fOICefDSbD-c_tEqxZGpd{O$u8u_RgrA+YY1N``5{h_8FawM6d*VR!LQ zV9eV{T6I4gVOGxKDa>Bm8f!#`se>#3e=5)gbQ7J;ztE2+ut+Z!`{?re?cMBf4-X!- zfbT)oa9~dz;DHvK!y4e+%*>_`X@O5P*b>{GVamrqwNTDVp1n9i;=qIOnJ!^J218Z9 z^9@c2T?VSsMo@8tq7Aq9;ke8vf-vK(!XH(G_zrj$zqa1ST41gkut_I z|3Usf-`eqDotFi_u~O_fd18w?9WV{8!^3;D`Y&l@8-fRb0u>HP70dkZ=g?E#@vs3& zTJ`v`u<&pTZB&xp?snyctc}};*mTul3ga@PE$QC`iD|ArDfd^InVW^Ca%btHMe}Rh z(Vqd#GaV)nxwJC)=Rz9&=)H9f^eoVZ14K_12xG0&@&$0P;a#&GGVu>aMn?L?@Z(cg z0c5JI)Z^YQN5RZlABn9O+6Hdxn`d`Ubbla^4ImCKDFf(%a@6HJ@)Au8Gyox#`>LVZ*t>+>NFykj?IBm-oB$w$|)!eu-p^ z^qp!<8zQM$N~`a*1tj*_an z`ITm8k$VggPJhXsQ@0mqfB!BT8AN0+vZ>*%9u!?4Fg%8PrI|I0tY!Q3wlNzF;pf#N zR{QME*|Rh~U4iqv#NSkMDUXPi;W+8A>IA)%P(-OGB0*VgY;2DqlsnOaq*(N1iKiiA zCT6K@#=qU3%4gg|2CzLKZ41Sy+1XW$EaeAlnA@M&*MIO$iz1g>ObqKwzuCjlRKB1g z#>ivatl_X*^Y!Vq*WaF9l)Low70jxO0_`m5=Ibj2N(xZ?_NDVUvJi>@SOeA~A3-dy zh?PoelWq}C&k*5p)fz?rs^5KgnBlFsV;*Zp7`+#3lus)(<(sk`^f||eLcbg)zY@CB zVxBbi!o0ZYPHwlD?gO@D1{h7sG3qDd)2s)`k05FEww|>9-jNr8M$(;tJU0E%eLo^` z>Nq7@#Iw)CwLuH;%pe{xeI{@2XofFsSyXmNyJ6wExwE6Lyo=X)%~SNpE2E?`xxRa` zVohDs^6zd2R#yIHQa4lXXR4~H-2=4O$iDLuKJ&vLB8^@arGBUxJ2}rl&7zEc0aXRn z54pPvD><}@CMuS9@a3y z)I=`rW&aH$m9694dSCnqA9WU;=y)M?*LD}Z@66oF$6Qaky5uPoG!InkyEnzKkam#u zeNQdT&J~{0*ulXBdTtuoONn~vNEKvcWCKNSt+4Qje?Y+X$jC8w%%^<>7NTrAm8_z~ zDxSK3aD7KBi96>JdxR3os%-A}Ki3|*JakOIVB*E%49^9wg{7sg-^|?qLK1{t8KZBo zz8#>6CFIc(ETOv&wc{7|@=jS))cf!r)z_2LKfJH)G^!?5V=-_>PUdzh%i^5Yj<|EG zTK#Yx(_SRjS3VD|<3DpdoDqG4Z9>|9zS3|m*}hw66)`v^4&5v_o@$a0Z_=@Cqoy$! zP^;t4OoM&&MnPk|VAsf@F;D)@T%Y%x_pRr^QMu(<{IPfh42bcHH0AYTIV0HT+y^JXyC9dB+P++|;lG+{#$vlO6?TwNCIrD%c$-!y z%i>ZO;JzjH_XTjT0CY0q%V;W!g{y2ZBUGKv!s!J#SnC((O^~s^N82wmT}UP_+>Fh3 z7r&?KvTqZPo*6KdIP@0~$4bDX#95*h!B+lACuCIS--`zIE(^fz3 zh_&DI^U~;Q9D84Q^q)4iyu{A`&=k|h-2fj_@bbTbGXG18%k0oV>-PalJnOg9cdQQk zYB76zKi;i{z3NSLM(YPokKY*q$c5SnJ9CI=7kq3BMVr9F*VcN4>b!S>0e1k(Y(Ua> zuhd(QJ>?`Q;9dAjmh*zi#tlU%tz`imvq=hNyt1qO^E0m9ELO~yFJD3?YZ}D9vHcyFsMJD-3T~*<6(11FU(Wq$baWpC z#JKA>ZgiOl+?s$ZDI`+!Y4001lpnJ2czmFjR5`j@No42FMsN!DqD|P(1bz{4Y0C>W z{XoI9pWwnQpV8Kyh&-Kb?no4*+Jt!)4w9Q~W85(!091#Eg;nA4sc+sKTgCrkr`{E5 z4S*y%nW{wPFHD|ott(;nFHDa8q(we6Ip+CSXgzuQv`26-?Q4qo2hfJkvvP9o;<(01 zq1kO&Co@I> zohKcn#x1^xZe7s2LUGl|?&|B?=@P--mj63BML17qCCyas54e#qotn2ij{~9^30GSC z%&+D0Gwb-P>RF)^ux}%vBsFs1!V@WX8+Ib%vTq{%e)e`n-yeNHZ#c(}iNCSX3ZjWU_(5)3J-_2H;;V$p+@co;co7w!(p}ZU8|I-U#9CGi7HG`4O z{_*k1lHHNbHi=M zI=T1en9qF;$|B4AX{DvdDbphAJF~2uVzfH_U#Z^&>>4 z{(&(=Rz-B;x|)RW!oq@hg>+*4f*ss2o6`Y?s!V~VhxKB_^v3=V!Ts8VHCj#BzjkMQ zS=2}=DXj>%H*mP3rd9T8iWMu+k9Vn@jlg6Vy%)%?EV;?hcBKEC z-jaBLZC}26H9w#3sS>$_Lha?}=g+o$Oukv4k|OL8`rPN!*L1;9?cpk<&Nr=Eozkbp zv$<&8*%i-V{ycu=m_4R*Bfs6nlh}5}vGFrE@sTt+D42x@a}adIhrT{@JLkM67&$)z zU%q_#+t^qeAfVhedApK&2m3C9-d3t1Nh?4~r%&^!1J@`i>~_4jf?d ztXqHlBndl;^4$hqV`U;B`@~dE^N3PiWz-`FdzYI$FRco7070TBV0`?{*|Pxo zkt1~3rMTjTmWxYNwNUhu zA-G8Oidx|Jh0Q4KeoY$9eW3Ubl!&_^GA5=N)pYDbCrN5YhWroPDCcGbwHi zDlp_q>ptpGv9EgU>RQ-%9UhPPYNU7$$3&9B z#Q6HVw2EOd`s?S7SOPap!y7en##vUzq*aWg!>B-H|B zWOrTiBPr1FjeYhLyu&`{%!N&MBx|sU6v|!026*JqO69oW%=A|h581@-lVhEo-67UV zB_%zR2Oy{e;3+>X0)f(&S0(`y$x_p;h&ZmIMk z5tp%kx@I@eNpw|~o}F7>9vJ(ikRk%ouEYtzdjb2)?TH}p2p$GR-PoCV~gA4ds z4My`l_H3(R=gQaWD#oEF`W7et-rM}nkA{Wr^!}hy>ynw(^iVn?eeGNhpDp2h&RX$t zY#A^UEGbKU%#7n?pg-?Oy!v)$!_Y#H@B6UQLN~sg?RP_=#=nKSX+A&HP*Za@j7v0P zrT9c{)Y64mdu1`k2M%b`Y-(!i!tz9|FU$Vh{d!PB?pWGCTG8tRp=a;==mWw>jG=ty zOngVjB_OFa1bl9N@!~~LM8tj2s01_F0 z{UZ-KDwLH*wkmTov$yEalbh}4UPfhjccQ6QSx@s|Htu`$kd z=fG70ydCiE-f{YbIeLkqDeKL0sNT(q zu7Kjc6iGFWBWTsxgtGJJFB}U1f_V*6u4Jm_eU$>JAeq5BxoVUA-bn~a##KouOUR{8 zm3>kCDA4SA%9-?a0%}JY$7VGS$D}zHPb*fQ=3s^2I#le=o^#&2#osmdH-(G%R7!* zr!X4kL`(RwH92NWyoKr7@6{ReQL#-yn1NMoShTf9en@)+lhQF7$Y1zEP?8^N{c}IJ zAXe$QiLFR0W7&Jd?b>3EJgU}Ue`4Ffxb>vc<1L}bskYsj@RRy)WW!eZn@ujGvdoS5Z6}-He)~9e>|Kix~LmX zxmkgAr4lSe`M&<_veb)}-*M?^+CL?dx@9AZ|8^e*9?Hb6$ED*Ml1Bm(st1c`%u)K| z!L{f?Y?pnmFj2vIemaWnF3Oh%NfAqC70KCuWg=?u5V0Y7SsP!$Itd*tCCH`syA(?> zo}L+^i>Yfr87q@Ue)O_vak(1Vlr=Ehq{_N}%l%LLVguc|Rq2${Ney9#TfZV*NGY!1 zs^|*efB*ii7C$qz_%+Q+SD+z!>!8dNKzfiqR1eCzDQU|C%@rucw`~l$fRmK>G4Xff zDb@EHzjRF6P8S@C)E=a{9=INb1JkclYW1}QE7Pp^Arv;A_d>h&P{>eDKZ|B`;|M> z8aL}*q1sz&%K;vCb;QM|8ryapyw|FKSS(Z2IDoDpJU>57cA=^BIy7_54!2=3gRMF& z8R(sJs`=M-@h0n5{mKQ^Fra0dKXO>-d5q=By4)`~6wYnk%n;gN$$f7TJ29`eSZR1S z>ieVFt>JSi`yWGJzj2T=H~GS6Z$FO5jC`~8uVai;u)cn4iLoWkui1miLJI~}Eb0zm zD(=p1ke2qZ_>Rmw=FFmrVVS^~)+L7J`Y)r{Uq=~W?Em|y`Twm`nYyeZ_}pbc8DsKh z7YIWg{=@Hw`5`;xK(TZjg9$uSWx0TJ8=Zv}MiA=itzhuiY)}hg!3d#gCAyRSS&~Ui zDC=EYC`$y*%+JcmXk)W=T$rCP|NTgAM#inLa9Le)q_PktmpK+1vmbeXIB+uuaVvuq zTq>rk9sQHGVSTpaon?uLmLR&0D4HGHVx~Gge?BrO2m)d=+5PBaMsabm<)o5kCJc=MOAvqbMOhW3jVTN>kZ6ueyTc9{J)MW zTsyZ#?ysBY39{OJjRVHW(*BZ2K& zch#Yb*%DZw1C>BUIb51X(;Rp3!`?zTjUlZ*#z)SL%;D#9Z-n9RYg_1`!8PGw*bh>R zil#rHZlH;JENgc{S4gUfBc0)-XHwfd<^o6Ex{4=kDI4h3ZPPz2kidJGf`I0t*t!WQ zP`bNJTf7zHzM2xtRpm;&+Zno^{LX7vtH*xXC!d~Mj&Xsy$bXUE=hJgE?jt0(?CJev zS(`L}|32`4&f2D?j-K2$P&x2RaqGA$akukie-yHS9SL{QnGvHvq-XXJf9aRnXjq*` zRlo_O(wI!$f{RAzQBo=oi6-J)AOC4v=%OQiY+vou(3rf?YT=h41_`^(|7EJpC)=Yzh)!1f7Vj*dDbePgR4Y<d`o8f!fE}pZ>y?+Xjdz|%PJr+u+T;k*<5e;?0YHgDpxR)6vyEV)y)Qp4>lNZ?2Qt2650JN7n55s#{T!bskhQs>y88NxHT*bS znh=!9IOgdMb3kFhCLKf>0)bQmJhw5=BW0AQ(7;6l{Bd+K(ae9GkkJK)-2C=bk{{Dr6!X$`#4MZvrw14&c)?%Y5yWZl=#UO-=6ZM4b(>P> z>M{)CuIYV!N0SSn!v-Q@PkEW6KTEGDo3d0x>Qv)E#B=G%?F9nWSS9A9(#g+YK85Mz z<_<_%tNN}9MdD_+OA?R948w=1nZ5}cWS*>(QD4`#RO198>()Q2`G6%(^@*1jgU&Oh7`ih3vS-lVPcUcg0(vU$Pj&bh*FyZDj1%H zz66;ajjB3e5K(d&8UYMsz5AYd%yNBI)l@XQsWPxhxX{WKned~IMXhCpD#P12^)A=9 zY<|Z#r;f|$1N~rfQc5C97{mEqlQ&<-)&ic_m5&lS?1BTS!%=nfm~p#OL=a@N-J#TG zUV~X(%S{fYKOeA-i7~L=?iS+VW(ALy>DMC@ufSgkN6ESqLOs@J78cwB$k=!u4&!6W%8jYR?|H*^eXw* z1#E)yOWtMikM2{(ftmRzZ*%P2#;vD^vgX(W^}%4#!YSfm*2s?RE9FBiDD`t!;i)O;ufTJV zUzb6foXq(%G>A0bC{^t@Gp8Dm+cwo!HsUR|iD+@F3vpd?B_ki>7(cGNlq~PJ8;lIV zh}dM4Yfj*1rMX|K+e;OhPpXD_5F&^CP_e)nQ{mABGnT`xT&b}2kvnx`ucQZg(3!(* z3o}eI#WkiMfMN7C#pgvU8_ln%yNlM6W|K|~xhrUA?i(5!>T8#Vq8$`N4RxIFAs}bu z27MO`vD{ZcGFiIrEq;h~*37K1C({-663WT?*T{5fVblUatn{myj2v!@qi)=jr*(WQ zeL^#wGR?hn+nE%W&8ZG!R1SxPEFo~H3hVUjZ@|~JtEI2ir|^zpeaw6aRe*ul5e@pO zxQF;G$1EB2UU@}DzAeTbiR=Z%()ZN$>|ZKKNwU&Zjd|2J^+N@&e#3s3JUwR1@8QMN zw(igzYG4uSg8P(s-a1nbG6kl1ALDo4C88Uv;sdx39AjFRP@bxTiY)UzsSqPU z{4Z#jzB^fxj}zR;f`BRfZxS84)yB^M@xl zr=zS`Tk{0hS{Ilfy}@(g{P`q~8Dn&|Z6bH#IRt3?<@G-vTdSl^B!)qXT+8m;LbGZK z75%U@Jd*mWt&Iz?rhgpKYxU&>cuHRS6N|+HyGUg%YmWugYhs;|Xs2PmxHU8#XL@v( zPdzc>mmgN0f*#@9PjemNQzG$muWX_BFs3aK&nj%UgLe2vBwhl6@v>`V_xO$o>OE?A zMn*;-1+X=>Jh98^h$p}f#v$JR01g+b+OL0gJ%&ye1Ns339Da_1@thms6skS0F%8z2 zlVl}h@@$*CyZ<=|6q%SCeg_6R_CxQ8NQ&mg7@qR552{570iFv$1=-66W}!2{Faa!H z>p6jMV&7P`fz|;l^E4T1YHAgW0ygWLBiPua{Vox0D1qUQ+(|xQ*g6#jCNc=VRQ5up z7AT?H+Ahv&XA;pd6W0EBTYc88{l6q|dgaadQkm+}U4o|O<_`9JoIX|oD_eYlPE;@v zP&g6bmVZa+x&`jzsxiXxb911|U0Pb=)|C$_O|fX2=xX_) zJ;NxR##)s^>N)&Wm>e_1f@ko|x4dx<6?|Y>t(Ja+6Gsllt*x#-BEXYGQX0yv}?}G11Jz!m(6X>%fNHw8g1SRi+df|G1WjJh7PfYL~nH1VR z1nbJHgMv0EzOmV{1ah**-nB^)Qd&{Mx8Y$M`E{<3g{eyB7xC-A_IE}hqAkk8$VZ;a z86>2$*+58|gaIc3s&K+HXq8>^HReNCN)-`PoR-q6$=LCsEt{{#vi=yFR?kf#^E{7QL8(xl>! zTopgtuuw`OFjXQQ!H-P*Y4ErP}E>YHm=uts7&YY+IiEN43yV7$ zOQEt~1RY=(xS$t9-BHdjv$H$5wze|hq7mN%r4=t0!JGnyo5LBVz^emJw4EcYY{u?s z*r_>R+Z#sT&aB%B6`*=ki}P)tjgK;f&@3HkxflfIo{sjG0i1o@H?M8AHrF>6Gi!%u zmtAS2RwqaUT7+h}X6ni>o;@~rC?}=wO1vKkrKI(VKy?v_v$@~W(qb-ievUzS^C>m# ze|iC2_Isy5uO(}A~d zfBk$u&i9a`qhs){R@Cw5CJ}QdP78)AuHXEvNaiXw`VOoYg-GQKiV-gF&&KGMTlis@ zy$ccJi(%eB2Ro-MLL^*SOpIROP+r%PpBu9`#4$Uco1l=0=)951tnkF*R~rWcznpOg zYBlFMCqiZk71XJA6`q^t*E;Z=ci~GyteVElovw<@8#$)|kN4bU8?dhU0(R4)ZPd3` zzWDl~nwTSry+e;@2g4(j5@g4A3&*!isyUN7o$=lcCYfJc&Ut;pxT3GV-;#J~DTMx9 z@~(S0G-8mXX>uaZuLv7+@Iz$r{nIB}A$$y8C?7GRQ^` z0q^m{P9zCq`O=S2d12#lfKjYq)`j`C%aSSLoy%t)A`1pTLdKUoH10pL8aS}G@SKGy z|5Hm54W+R5LLG~{7jws&rtascaKx>1D_~eM2m|P6)O7jW-GkfyWJ!pLr6k7| zM%x;~h8s41-vjvaF*CpmE|!v%W{JB^ZyQ7uvD+F;$wU3L!EY+cKH~*XxA$Ft=bb z7BN4Jr`1!hVd2#^(u=te3E+GHSr%Z4aV+5{C_jMsE|J1F89mc`jR9z25|Nld-T1pS zH!C}PvAIrLWHNH?P$aNiKkM=0UaHO!@3+jcdk zmHjT&fx|@EvM#4UmB7$cTvP-W8d_ore`r&)D_ih+EzaEl^$x5xGBq;`O}gmFh@V-u z!xFf(1U*$t9Dv<>w=S|bq1F}KU5|(Bz(fSG$fwpJVskU_a?CxSuS62s5eLHZ3J2Q< z1qH>y>$&X0Xb?cldttx>6N#F&daw2*#(yUgI~EpBf^-O+Jd9z0y7^?x~i3pS_ zqFPa#Kjs_O3&$cG@5l4x2}xko>^jr8PCq!k;kqlsw97%jW||7FE;%_FTsyR|O*!T# zt)^dx(hLLec0zVxCQAD9`T64dHbYUDO~xzE8tuU%&eDzuT8dgHX{(ncP7-TovFd*T zpEFQvpo5@D_%<=o`ThIBzbUpKb^)dY9TwgCgl4Nw zb-?q{ow~#Qa3`99Sc@j{QhVTR-bS@|iV%tU{git!FW?(*QG)9e%djPNrFE~C+bndR z07Z~&O5?;ue}DgLL_y$w2P{3Xo(V%>u`p1uN9XZy;hM$B*u(^IVigd)<>ohYP6GtR zSpi3kt~wsvaPUR?3j?KeFq#U$@}BLwC`6M$e#?BxhI^q7^!nf9PkV2O3CE|;C2)Qx z12H(14I0n@{PKpBt`2VPZMiMRc^V5=7x?;qc7S*ucjQRKT$bbfFhT@-mDb*M^V-#7 z7wnM?(=bC>#uXovx7QZ30>B_&EgjXX) zSc7p~cu_$h!5pIQ=QgvF#QS^$m1JPz2o)brm6}}Ngm=J1c*U&w&l-GSX`+e1Xb^~B z>DG+tD?Zn|RpH~ciB;MFiO~Rnq!X@D22d;bztcw`8aAR{Zm|Wwso|S^6Zl@Z$%%&; z<=hW|`WlOuiXQH7aO#U-kv};ChdWqyF2UY&zW=JGO_PnZ^DtQKJy>WIlh8HuG4&65 zu<&B+L@SUOhX-?o(7NOpygEmNQknQY$0S{M+!-jeHn~3%cQXl zW6birr|;+f=Q)nw{T$D6|9;2ap&I6L&2^sFb-vfv>vht|^D+HOvUaJehy~x`%p+{S zw`$o)BwlN*nflq|q>8@Oiq6Il zLB!^ves1m!VXv|MdRBlMHY4yIt{q35$00C5pZTL59MCB4-h%@lt#CC;tYy+;PDocm|@ELId>u3@G3l20SL>RHvxK@ z5$RINj*#GHzkc&(OKyX79wC`{ADh_O<7TqG0c#tq@bXl z-P63ZB>8Rb3@}mkU$P<^Ak1a)JX&?L_$7hg*oSU$;kDt)HMg^KMWqh7Bd3ltZ)9g| zZwJzsI2%n58tecjEeeqVx+PtsKt|?B$$;~@AIeO2_acX#&jE@KdJc-Aw?=>ecAYm} zm#Bx;qMyFs^tf!$G3WJNB91{pM@TVtT~2*^)&MYDTl1Rt+RHyQPFSbLO(a9q2O;s? zoTC)0$eoCjeaTut!l|fu1R4=MBw(qRdQv#xrry2F1|F))B_qeAzz5l+j}VkVAfc5v z2f?W-Bt>gbU!)O_G}q3j;YLmw`1 zh+<|$Dc?>s8IHKC{Mr z)b?KB&ZgT~WAKn(V`ok9mW(^LY2P*6RABP?l>NsdELi{#Vi-dnAuFapdW)RjPd1f| z0PIhn=+5hu6m`j@C9AmKlF#1bez-ClGaPq~Y_f4X6tR-`r>*IGfvsZ}o`Ie((xI9x zHFp}-T+x&*q~!)_yJ$=Q>I2-L?ms|IjL2kFORoCBLJnN<9%;Ex^cEl|#!*QpY6phT z+|0(E!_Gf@shCjM*K~C$_I9gJJ-Bg$`?&Kc+i8Cz)Fzf(O;Z}AqEQ}>%%raK6WnkE z{#G}!Y+~{xEe?u5%Fm+ChV}gb$>(>Gff5CjOLBDk)Wh zhw2{s=Vg-8^PR&HXODjXaA#tb$F5q4L5a!gAAYyWq9t52kfz!)WH*6GH9lK*{>w`h z7$~bgZGBs5OcJM&gl1%^pKX1XU8&P*4YZMkt=WrxZ^(-1h=^Sd>Afw&9W4cZ!kt)HS+A%Q5K~7AR@Vua8NhdyxM_1h+CQ09uPyWP*CclO2O7Clysg8i&&7F+EwxDtN*Ga_vqKRu< zOYG|ff!f@CQl3z89G0DJl_MVv&y>2Kfv+lIILXbf;=#CWOPfVknV^$xD)Hm>tf@-E z7N)z8Mljvt+iAKwij6fn;Hyj1-rolvw)K=@;~s^^r&Eh-bW4?M^k6h!Y7kyL?n_%O!oS`30e9Zg;KoVb^!{D3 zd1zyatm`Kg3rcda>&g{3r6IDwtpn{)c<&`{b`~7r@?DCzHFN{4hAcYK(T*Gl&>{e> zw&&0tttnl2hXn6jKEjN^xj|!56p=4K{NZ0I96G#zxy2270t09yMG-i)3f4613Jn9a z*9d`Tav}^?6K<$vhD5-n4<&D_B=Z#i?SQ(Xs+NlYLSYiYLAT)$j_B#!gI=dN=n5#E zNL^Qh$b-1=^8vb<%N0V1(BDumyIxU8E?6l>SDDpYs0?Or!jPDp3RDYXTJT^vc4|Z+m}=n;L{{ zgeL5d+h5;O;u1+6Jtv1Hkixdp!$w!d6Lfd)o(dEMEG&I+pMMf#vp`d>dtLEU`?_-e zvHXYm9i--jz#_)y^M5I$%e##SOe)PRT@BDj2*448n-Y+5hk&^K9N<7(%H1xs!fipv zLLgIq1DMwVdjg_jM6-P4kt&BP%Q3n10@L^2h$EEm+MzkuPhKQM#*kp3aR2JG8(bf& z%MncrOtaK5H>n%(?J&Unt8}P#%-)YMv<($ok%SJz(1Dko{Qwyk6cqRd>7=hOwWX5f z^o7&^2&x3#R%X`IdDZ1)#3BRAIwVY{Tj$?8+Ma>^2zrnk8AdpePjmG;-v3!>MdV3- zPxI|FcU`qivtywcvJMgHwaVaS?nvF3wFP>tdSiTB>eeBk#HO=95WD<#VNoAj-S*ph(9?Yia7n0`8+V2;9^j==T)0gD z?*Yw>g3)BBtZ z!nH~HGhy%V*Lzy#hh|RXYHWc(L~~SBR1?3F<;A$xH<8Ik`zuy` zGbQaWsL9M@EQ{WEqZg@hoRrNxYGrYayo1dbr&O!&TU=g$_F>%;@IWu^A$l|tc*A~d z`^oHFij#JGA#Y=jtq$w%{OBfP7j*K5t0?Nl?IgXN*g%Ag?smPYB*Q7SU5%W3IWktI z>>8&f26O@kq!Mx$bTe7I6TWmNb*s@D92yP8KXqQ|%osy*1QV8$R-@Gy*Zn5~^BfrL z9Lb`pD{gZAS_IiK!B^AKXbgOJrj7aM2Zhag zWwyO(6D-h6C^u(#=CUSEa&y3XBUAz=lB6tFJW!|L`D3B^3VtC=>G77_mA;p))008dJeS-s9%(ompc^i<|52;ETCgTEf8oVwbDgC zwT7~}{MG-lE^RXpbq(LJ9!t=ZC`4&;%Vir21oru)avT;P`(#82E_pD#;i zm3YYa;JtYv5m%3LD;5ffj(hU<(K_w7LuTKpy`~J$f~Q$aIWKE6r9~RnB zLy{tml0qowX^S2WQ|In%OrK9RfaIa*L(xsQOEQ_)KrnM=ChwASJ%`tJ8W2FCeo@)< z2ZZBzp)+~$0CP=sKz9(ik|39ZqD9A{0IT$2W{1Z%snZdF=C^wf<0yCw@+PVN3HG6h z2GH_!a{3O1-=QCMg_hjuD87R}iZUrkOjzxn^L}qCIrW)C&8L^OHpI}e{06XecJJA< z=f`yYQB?Bk9Qm3|@~SLtO_taW$>@(*bcy%=qxp;y9Y(_O%^-VsRf4x)i*_ePmGU|7 zy-f)d0$8$_&p1mV%ST+rQ4kJ)o%0?Xecn0W4<&lY7~ToU?=+VXC4tWe5(c2{GjrQj z3c?9S1PBa>uk!KoDo&KEP)S>G4dy$?lDna#Pv=#eD!TcOGo; zWSDJw@-2&F@jht@Gf7^|YPeqO(rJY;?6>KdSTYV+t#gFqOR!mDi=l*~%+WU5^QE;QmNB!4<0 z@C7f5%o){oX71?Oi*d3cn#tslU}gPPsiq~r)^Qx=Rv(AF7bma$`(vaBO;$419EcB+ zVK98~rOR6eaTMV_(sTFFpFB@lD(ma_SPqn4EX$%UW>VQ`6g0)(D0bUR!#-PsFct z*ENX)+94zJ504=bW0no`lsMY9TE7}K8MWb>#w7Zc}h>Y4&B5 zaL5v8`1mK6{+M?>z|L(jrQ5_j_j{$xM$p@E6$=}m*g~Yl%68>00JKj{;Ro5-*=N;2$4(KrR6EE8<=!)&Uv3TKlVw*{k3uO%v?Lol;pSsYZxR%pKqos8pmlk&({?k|$n7Y%_GCjRG zo@vUik@GO3RcrXV|D+E&`_!LXUV;l2wmi*7w3PyOEQ!Y?{cIq=`7{tHq1IM~g%E2Q zQz|yo8P4a0xe%{o2VBpYnHfW|DX1j_z#dkmU#gW@c9l;d>`v3uS~1|A`0DoOxxerdfO7E4f|rqlm}vx!G{)m;5E52G1|@6PY)CJ~u>e$Q)Q z`Yjj(dX~-ljHU*0zR+WvhTu*B4^|jtAU4y~xuCrNy30vvu{X2HcWzv$0jDdpvGe{Kr(+>+_Av0c!PAif(L9rXE;fvDDM8`YLXB^O>LHv zF2g~5hYOfjx>3}#2s=2Rl9CcMvi}4e_%bW~mmPk-_3JnzZq7c0R1&U)ra@)4N(2oKayyFLehFlI0Q0f1 zwBx~0FNWH4NWDE$2&Q8uvwf?>L-i`2HXAy>PW^F~-Hi^_uhuSRq_+tpQQPI-;@IsU z{s;u{+)~8~QAhYs+eDi@9Z-YA6o|TZKv)&c*PV`CYsB~bIwaWskiXtO$(*3QDwZbr{2o^~*H*J+~t4->6U@l353l~ zCU-e8AVypVml)^=vtovGAGU1mEF0&bU#kEjaa^hcTgcZlMNlv+IY#=Q~)`OR8SMbb%2(9gsmil01WM zN*7P)*u))D?$+jn7^(k|vQgZ4v0Ls8Qyzxe*czNs?7*?IylElHdmrVVE04@j(fFPBnOl*K6^SO&Ii_!njn^tq<~r;&m4skD+RH0{@Kx%1#1+VI zHR^2l4NYYh0Y61-A2U*LD!P=Dbw88TcwahACM>_pDu+A}&tp+wMKH z31M>1wExIfq;$S1A|x1hqbb=U;kLls`=LQa+kUZH&SbnnYrKnXifJoMze?XKp-`}q z@nd{9e+(LYM$D&mcvKRfYJHX7Z87`Q|3qec%d{}uig#!F@1@yT)J*r|yKRTG`oITY zKHZ4?Z1*unKDMlc3v0f!;T;?OkFju)-VG%hiv}Q(eO==-F=NG~g#U#F$ih-z4uRi` z32Dj}c6r)WADS%ZoT~ljA3NQEupa_FerI?iW{rkju0SX|{*3|;Hn^*q>SJEpR>6Pn z7F-7gru)t#f0SdZ9vMPAc#}Da{hhRo7(?fN6x^Zz_%{e;vqPWjgYFp_Y^o|-$FfX%VdP|8>q|?o-07swId86geSDf42hwx{HZ1yP zWYM;x2bmv$6tGzO>PFRq+tI4v=&gqJHtO3^Ey8aFX+Jp8>f21eY zZ!dkqiN1SzCHeEo*4HNkZMiW7QryKapnVylDrwcQ)F7I{mHt2Rb|xh?OR3RMj`S$a^3yyR6jk{exhx(}0uBYs?H7aF>T zsH-f8tF{|_V`|9eAt`2Qr`p<7YjL`m*FU^^d=WFeE3(xB9=0r#PhblC7`b!k@dczq-A*BhukX&<7#H}sCESg$*8o!@ z!4o|UR?>Y(eZKDHQ!U&~i3c7&`JrAbX;m%Xv^2ikAC8^6Ue&IawlZwk+_DP7kpuD) z5@tP{6nD3!`D*K+jybRQIf*X+`LDudb<(*Gmlz^0YAoXJ-D?bv ziBJ`bxcJFg>Grr|D8Yh%HTx8GDy7!yL*s<}=&{r65f|HsF-ze#r$eySy|gC0zd&&6 zYRHoQx= z48Gu7wL+5H5!fwTGzW>o(dc)MUn%QoNL@N&gDD{@2h(9b;a$n_h)X>oDnKS#$v;%| zLqT|!AbNGAzGNI-J7XsrJ70h^Df;%xIp!Ud)CyLmlHe9>#k!CFa!A4^?^cw%03}S>4 zBWWww@N4fU5<_WD;!OYrRUHHnZTj6f*Q{Lox(398-x@Gk0vY#u?D@bOn(7~V@ne}! z{qE8m5y{jT6E%!;!p8lQneoxl*FAftD=X!4gu*{}#2wwz7m6d)%tM7!i!|oMI4t$J zYfmXimc|obsm}Xa8tF1x^C1%D|1c3gY0=d87bRbqS`^Q|CGh<7s_f0j0&2>{tM#Oz zoe3YF$ulz^UIL#xGNPG{N@yx@&?hiY*c)WF+sc8nUmkjx@jNd_1 zN#~rTBjNr|z21BDlAdbO(Oux@2a*Qf=sz2r@t9qQEVOqWyDRD2&lwzaB>{k8vUraC zw8ToE`lqdg$iCRedItK<4=QS}OK%9Gysu^--_7{Wq+oLx3#nTOIcMLQ(@MJ;vuE(5 zvZ~aGtv%$o4!sn(g2=e#FGAt-gi%(jHL0c}S5og?lTU5crlXD?f%8^Z+Ka=3jNge> z5QLB+QvkUJ^nvT=dYKWZ3%lO+&2L8T8z+$suv-l38U?~nuiv<#0hRv0oho7O#I?Qn z1a>_hJRg(;Ou1tzb&zp-3NdYb7CqbAY2L5zIP+q$Gs&*n@`0D*soyn0AsFvines;- z4>*ENywK?O{zD56*kVSzx1>UvOzk*lPT5d3L+Hi2sQZ(g__;GY>V0mWDy*hxE?yfC zejLi?x5QX{Y1!AY`jx`2;j31=TriH*t7!hg((_+zbg^3141@9KOnSr;AQcJ0M2gnOz*&OzWIGMUwZFN z`j#%pMB4KD8&=K`=SsszYq0NUo7%Su)qJ-*zna8-p6f+a6h~c zwb7E%^5vy9PfSTBKWzrmDo7sv9BPIzkm$i3QuG+(wPD;qq~D zXNIg|y&;gf`TNwiy3h8gw(?{JI$NG2NxSF5$P~`TY~MP~HkbX-2Sjbdz9qPqRW?o+ z0I3=js`kCwd$5y&!`sRY7K(LklS>NBR3xhd;H7Jc~j7<;FIqMyZwI5rsHaHq2&X=N;WC zLmsVba$-ihWbG`ME?z>+BzxFNSoq_7FWaQ!ucOaCt$&+a!&OV(_H`VPO76@<1?-Jc_jJ87wX-mqDAP^*h^;+>YQ$T|p=2`o6{zZLb`ZtEorep%HHjhnWf;i5#`gn4;ZxIR<$?GWFJhqO#hv`X5*tnYz@e0jC z60Q}#2HVlbCnXy31n>BLQ>)!h?#A2JRO4kkkIkHyM;?KRPZ z0RN`mKihT268SGp2B$ksz^mbR^hlq6y#OiBL2F+A`=BI!`KV>6&>z~0y;M^ZC1R)L z*W0+pijFp7=MYKNz$brn6e9!_HiJqTTRI; zY?l=Um(DR%sSr7@sU2D6_6+}uNa=Fu zIu_cyMQi-6*3T7VBalt2za_gCOxTVjsXs!g{?>9otraMqps64u&M32L?P}n^P^EdF z_S8OAKMq}Z;rdkrgjMyYUz{0F9h9nY1fiR$R_8;0w)*+rOMHJfyWd>qKh_|c^1q__ z-T&Fc2h@iD=Nk(Dg@O40_sLA+VNm{uiZNIex$nEIU)ruFo%}FU?;MUJN=t}F)5{x~ z5X3+wpMe}kZ=s`|LX@%ib6ddA_0CV)qH z<rzcG zR;e`FA`L+=>VR)^HJyeDJQ6++$%%j)IHbWg+xMBxcSTPnci$+y2>w59Wy1o4$uz`s z@CTWNy2a2ADMJ|t2KT(xk(RmDR7|XTA&Z_av?+7lc#shSJ?mqq<5!&SIH_2gol>FK zQAtg@jW5);U&Y8TMEwHx22|rbeSFRtldnLzVd=h2&KszNK{|dy=~4+7S|-VmzxdH3 zj#3y%OH0c`0((9*bD&>z3p8}B_niwA4VoZUWtkRSKR3$3DWu+>RB}o{XrX~5!xMd~ zveC9mx_6hQ*=}8g%uZ7ju@ULyFz(jg@T9B$_(y7E8+xewu>eiE>ffl>K2+)Xo>i!Y z-9b9Nmws`(@}_iJTAGh(+7a=61AtDHyWm(Pv_W)maH#Q`W4CDx8lcw35CKA6bALv= zeW$&>9bs3=F1g%;POc(ci)!#;IR!1I6PeXE%S&P*(?e(uEU(<*E$DQCYJ=AcP?Aq- zhPXFTFXzKDe^pFOOa@zkalzm1Dab2zqfbi2QN0-^WzOe*1?sih2dB^ZJztbmFG+|l z=9&z|WZwN4J7tk9GO`E#+ViSVs$jT8oBxI7x0bF6p~s?Hhlht>-JT~Bhn?4WVmY#) zwr{7b8g`cL<=C$3bh55%e2PxM)R&DjGU*7_pp6BSB$-+{IoGw|`f+OfkV#pEF@%`Xb7qHcqJixn#((pqgS@omrWs^ba@tdt(U+?AD1MK}%c_dh{mUv&OhJW@>E$&mLvU8;bQm2xXK= zKFb|siGqBb3a1qLNHX#2-SEPk9_M`R>^HHov56sWC)^J(F9*bEUm9?cn-8@q98etP zX4bHEJF-9*Lwzcao|bCt<)*5}x^6z`q^cGPy}#EtlonU{{lZax{(Baa@6OzjbXv~J z1qvGUp5q(heI{7z#v85WKmpWW?#16mZ#r&)sKem*Yt&j3g}8`jk;JAxld8U9+Ze=C zt66G0^MPL-!oHr(r2#3cTCY~$vp-6c$dxGCm+JfeTYdu);t$BzJmCl*84QPYTAteT&5n6jO9^>LQdWD5auh~H9;hEIEAPQ<@D|!bYJjx&nx6l`~GJ^sJ{mK z?Vf)m=Cl^hp0egAQ0@LLS7(PZ(S>oIklOyQm4eQyE}+K7F=lJNYudg1hThuZ)LRr| zful$5fNz8F1Qf}D{Lw)U9)u3mcxcdv$>WS-2JMK){?sJ_*fSGQ7YK!DS|N%GC=e4J zATgdhLY%@lw$ zT{ClV$Rnfzs1(;uTQW3T{{7p|-TlW1vAe75)}1@;y5vc%EMSYBzHlKbA%ROoj1%hb zun^!EjtU87n-?A@n7d>V1^ZiR65mURdYnR&=h!;logGwc_9X-GqfSvJhSI2l$WuCI zC(D*NYqVc|$YZRzGidxKxtm7u7S$d4HJJM`{gJLdo!?iH5f+hvuC2XLh@)+zQ4@x$ zRw54~376zlCjyt9&$5NUz(qNu`f3sqh)abfMPha@$nvROo58ZSO%*R6H4Y=+e6VR8 zrP{Q$XbJzh2#>a*q2V#M$uD1+!L}C{2hY6gF{C1P_-Ge@Ff}h;_-fASbzRN$Kc;aP za9SA&wYCnQY@OTtxPAiidD?$e`_RwyGu1MPCnVPZvf%mV@DV1K zoY>enZqJ}IA9*b7yT5<8v$tmih1nF?gyj48X9K>hKkrk$dsr{GU)J*opO8-gcVY&V znn6nsUlEl2j_r?HQtgmA*}X#up>JRqSQ-9$Rla|}i)5NJ%rb~o@_vfW!V^Qy5SGR+ zD321H^bpt*U*Pp*zpD8%#A*Xhs@W&xE)xP=_{O8o0cpFa;_6P*@AL-&z(wA-2i0jb=Lyv-ed{6xf9>?t1G7loG9?o-f&Tn>Oqyl!)|%7y`O zNH7zjmpKDK9dW)plPN6TW%AS1gEeIiXy2yj>j%x$RrtqzU61a2+rfS z+)4viV~phUnA3uZi&cxELb2Id{hvNP=+XPFrJJ!xY#v$Sx2q=Q@7ZcUX7=@sDzp7E z=hypWSO;JRl0-sf+!+?iU?J+cUrrV2z~Yg#`q&SflYuX|Ux`!)`}_HM0up(XG3`f0 zZ$ithokc9Izup(e8|LBB$k+@}p*w}7{PoGeGc>7qor)dmV6mmP2g{W;*0l7k&2c<( z$aGkKaSO!Uv%o(5>PlVC)J5&ZAl+=OYrS%28bNptkr$OeMyk9o{QQu|cu40CEG5NJ z;SW}|4=JNfxX)z=1(i#NAZ3eD2tPG0U%Nam75iQHoB*1yZh>m-e#WqQjufc|f3; zER|z1C2~A~O0G@1;Q2uad5}~bQ1EOtWl!Lkg8BHb*NX${2^*4=tE;DHaU&x)PIyn= zZhB)wNzluCXadA5L&1yjRpSkTTyUA>qM|=zwSCkZ#pai?dprl_gVte^%^-lg=~yVx z-#O85g1Rxl9?2Tx=xO6$+-y-G9883K?G&*?!I4M>K3=!P;N;e zNQ;4?R;uz36dv(e6I~@J84%Fi;jUj;6}gH4SK))>;D4`VCU^Gi`ppjPB5g5yu|Bwd zsUgm)c46K_*fOa*zcn{tNv?aLb#sqn`KS*}BA6^dhy#M6O>#Aer4-YU2feY+%l0hK z^%vxay0rltxNG~Spn93_RCfCdzu}bNL*`2Pm1=BS9&tVFlUhk766S6C<)^n~o|gTS z5hP&eDt?4?xirNGhVy8i#+KY6 zH9vDAhg+Q1__X8&RZsJj<1d6Yy040Ph!lVS6wNuLiw|VGaP=rC_8v;5<*7LeL=;jw zd*^ju2c3C6EtR&?s>0w?M*aMBWGH8yIw9z3*t7UH6Ma`?(N~dmrEMWC<;mlzQe-~F z!;X%zsRc`K_hpayJr(1~$P@d)8>GF+csC`85P27NMZUDS-Xs~ur!sl4npGVEu}IK0 zAc%v*t9Nf}j*W{;SF1G8>~W<1BJj64_VTwsN?jP;kTasPKkkULyIXk^!tQUcIBp8E zz{5%p!GR%z%l*kOW)=AK9>J*QI_*~LZHQk^bZjJi0CDR8Kya2}Jx1xS+S7Bg?yx5J zRcP`%i!_F8_b%WwU%z${e(JJ49R%2r~V_!?rTp|0a^pV-4m`dcl}W7jrByt!Yf zH^zV;eD>w?z=5mhPBVzSjfdMc5UUn(`>Du-?C1Kr{00`6qntPXzU6=`LFinRWADg3 z)GE&v54%_Vg-8e=2`&0>MDYE;5^krEpETm4kgC}l0ZYz9uL9n_CmIXrbLVpa-*Ktj z2Z=Sz^s~6k{co04iPN33qZHK6GG=fG>r3t`HjtB(8=z9%H$M!>lMBe=Njf43M2z-l z-H`23z#LT2=I7^u)lt?^;i^LQ^R;9E_?R-HnGWY;*8}e8O%}vh8v1bIDvh)~v`oa- z6I5c+bE_o+{oII#kZsOI)6pQBltg7^WduOAlrB(*_PZ?2btcyY5#A@L<}<^dt2y+B z+TNqs@H(PUgzj2`j>stx&w#8K;9z%(nf`_L0mJLan#)-R5*_vBRL(ZJF)OuPn#BBT z?SklOQMN-uLe;&jLDQm9?R>V#HxPcWj^jgyzL9Wl2jn>z!BDazL>L-U8*y&#ZjzQ! zPmpUWii$314=F1B_#-je?ZNU1VarQZK~(Yu5YM;|%MyrXmMRQaXq`>02s;1Pumv;V z28M7H+j$+Fe=Mq@9qng)4Ias52X}~!=m8M{4d8$S^ewDFm?4PskRjEifSYb73pqAs zjrP7~-VEKNkVYO4oR9VQSk1_@nAKn6X*VYWZV#tJg?OW_t&I-cgZf6rEhsf7qaT8g1#3LU1G_mJ<_))T0^*XLdDuNM^HH5>gxJD;5RllR%;h*5efVZD zIyP$BxPRkC%4-pEbn1BzMg^6{qXGgqqNG==tE=Bw*cJ}B)C)U|LcFM`sMrEqeE|jy zgPGdg^t){D-V6UJ{Q(NsJC*xKX%GTK+q6X$zMB??TUj2;Po#sMI(YIc=3q~CG-U{TWHDT}iF{E&NXWtKO8$8u zDR6wy)zmQc>g|w*_;_1MRrQY!c|-H3HX~^h<57)%iIHv5=DGMjY-H>^{?{NfNKE3(v8D3&k*bWHms=?i?7%=7Zh#GWx})o8~Yz1Us-i^BnX&K z4rP)@1IQjt+qvmv>&BqUbaEHiS~V(-lwey(BU4eTT%W_|Su{@l#Q&CJ7{g*O3&$@g z5ZMp!O%S01h%v11Js$#qiYMZA4#jb#iCLV*QEtE&-K-x;`jAJfr`%DT)m&R$-e z;Gncin9;`o%fjdvOeF9!CDlW%~-UMLO!oB;0sHd&Ky31s1pp< zR5&j5(p_9$x1oHbh_G#eP~<#C5mrx8Jbd{s88&wK;Y!PWl&~Zbhc4I?Cc$QbfZd*d zN?$lqg%6omS_YJb4i%AhLruj=F=-P*z8z{hlL`xfHRfB!#?l4?Ozx6q&u8Xuq1KvU zqhQ!M{$Axiddm@{B_Q^ugRmNnkn6fTgZa88HjQUUJK0OPdD}wR9r=DstuO9nLO8nS z0>F4VsPyq<_nh)$q_fGltcG%Oa=cNhdr3zxQ+QVZ^NBdiHT79n&9m+UXXowS`v)lu zVV;DcFRki{Z9)p;6R`1Er7V&{#%)#z9V5+veT+HEq#TfeWYx4#%KwL7_c?c9of*RI zr&L(;-MPL^CiS|Zm~nqbpiriXp@JU5>IZzGaJ;jc&)SHP+BHZw=pe@Ts6wg22_jJe zpv9_yu)QP5ez*!WNT8JWcEmN~LfLQ%>V6OTNJ3OW8lq)DT;;Hj=-6X0Z4TmyZHkPv ztaR|1dEI^&Ifp*Zje2%iAMFqbf#5CXH7YlO_4p&@eW4T*VKZ3l&l62Y@*E=w>(eFd zhl!oi1E6sadr}8q6{69Xd)xSzWjhX=AJ=y8F*MwnNiQzZlT|x0XW6m^SbgsIDi)049fS|}h8kr(!i575cp<5T+ z%FzRSaZ{0UuwV8Imy6jw&ZyZ-iCx{@{3VS34)vVEY++sXh>z*GBryxKNl${s=%kBn zg$i|Q4}wd+THdT0gS#q-8ZWl2ekS_hGc}z83C3m<5DgGmv0pNnv)@R12w76f!9Jl& zCIHv3uaBlvej4B&K?UVa@}hyWd}<1a1J$bq3?+z%VJV;Lf5@u_9?&!-LY&vOb8Klt z(>LXIZ(vGso>2WFZ~e{UBgMTNio>JIY%(xGxsv0zfK?Z;z2-PXk#xC+0H)HH&Scpb zt5TR#Yb(SfEno7CdetQ{RLPxLDyI%W%YlU-*0+>djA`yxMdbqMbLBId@`g1{)o1F= zHWwXKX*9Y<|IvAvt>1SSqF+c|>qst+vslQvS)6g<)obK*mC#hxS5}esh>oXu8xGZn zWQ?ful^UZYF%PCH83e#AyQ7!#W7Rx^4%)pxbA(5qYJ=4g4V$X<>vAfeVK>hBA*b~M zEx{ilzyF&VV;zugflwLm9Jn&dRbp+*Ao{Df*Q8zgmAhML0#q2TZ(kQ4^2U-*>$wT+ z>boZB8dCSAG{!!)qbXhw@t{ux;IRKfH`{En6ddHYx5p%u2_ZMK`v;?S2zc=S^Y-qR z=ci`BX?^60kgpLDSKwbiQ*RcQebSJ}u8$AyZ;VN$?&vp>=Q3x!fE1xPw9<~J3@2QO z%uP^RO0#m``N!@;Gp262&!C1RUb5EI#i5aOJ%}J{#S+q|d(r7cPyG9({3n-Kh6h=~ zsHTMc!*f*$0w-P}OwPRuU@XH7gen~DN1wkTniwav8$JK2oOHvOv&15JdJ@86fy{QT zRr__uumyuw=I7elrtSp8~&5dE1Ol`kgKh;9dRU(@9O?=r0@9T zq@18Jc9qzSN5cH=92`RHXr9y8M-<4uSXhk8ES@z&9e9TcQRlb7d1)0}j9H0T2I=3u za|g!QP)%woV1H+p$5yPaT5-7Oxp zc5Aq5e*k1bHvNXXJ=Qu@*?}w+cCfa*uCkIRnib({9S}3xBYsw>)rl7|qIo*= zcVNLt|L2Tz6{Cz`Ix zJ$zD}r+-1MZRjci2u#O{#W8fR$SQ+jf_iF)twL_sQgX(1 zT}Cli^Am*YFT(upouHpq4*{JYzykt=3-GV;5UL6KY&^;{J=x;NIBP-nYk>B$Mvi?Y zoj=1a$>Tb^ZjHJ9LgXk&0MY5arjo-S+zZ>$A+Dm-ggm2BHlxa$D(e}=@_;#14kd8| z`UUpYc~neb4TFP<1XV+xK#MBRC{sAKtHqB~LN_vF_bWrymZ&%?73`S7WA_A?JVBJb z{oCv#cV38Kr-&9MHjZnTHA5GbfSkNX5{R|X-bP7t?=j!6I(1t%NzXSFn+PBolSQAM z9l$`s>0u*7QMT`M-Y$P*PGM-i2!+!>JwrA0DUdWnR?0aVSUChI!!tuCRYHgdq@<+U z60+z=Oa$Xq5bB_X5fF-R+$s{e^@6NR^Kf%Jp3w34=#eKhVshL7tJ+R;=j}7Yux%6U zvnBRmMCpbH3WcV)Tq+Uio;wQlM=nsgn}J)X(x;mxf~v+gEidEo{-#tYMGsgoE?9(A z0!-y!q{dk)w!_ic+3`)(cNWue?hUXN2jtb_{TI0j>$J@``cS0p6>#sIj0RT!1V`}<-5;vMLQ z8G?;|?C;&%0~<34g>D=S!LlNXii%R$$Hf3O*M3|27%%+%)B* z|3^UtxaewIH?v7Znr;Zx^qyHX-?k>Ch>MGZKN1Blcw<*_R{=eqf9Ik9b)qAPK5R%) zoZfZk2+UU|J;_hKLWe_}!6n&+HsZR4ib}GrWcUleK-UwZZ?Oc#4>6^+CbAMgH1dEw z_0_!QEU;wz@AD6f=&sG;Afu_ffLi|^rA_ny9E+}~V4kd4vM4qOu`&?k!-9 z43mp}dCOI>Uof#LZhL#%d&gl|q^(_zHk_K78HwM4FnyWuQvP+XRBdUJkIvhFqT)o< z`jyp>fCE7qT?MdYqaz$njr$#s3mo zOH2x>#E#|bfwt82yIz=LOVn`IR;`G7ZsR4xFl$ zc9oJre03X!$Ixe)qYsWKgqIZ_YD`%71P@8ws+Nw}5D!JR0TinG(LL{beZ)LTS9dqD z7W|^yEkfKA86#`=)ll0xuM5yQ0^H;VG?z?B-LgAMJ2#+Tq&VGKc#;zZs+u|>H(*n1 z_7aa8HP@5lqsG7hu5t(swRZFH@Q(pG=;Fblp_n$*+H6!1{2iT`P+ga_O^p?@F`Bdc zUElh$?DRM*?8{({LIEhU@_57WZ+{i{S}Q+!>YUd$VJGZ~J+9ZH$YeVJL=f91eXSg0 zKdsN2=NGv2M+zZ_S9b`kr#H6du&)M-)m)XI2%mP{sC^#j>y>(1x%&^`hNX~Nss6x# zj;CEQyE$l!RQ*mQ;h`}~pSD@^bDkuTj~#)L^OaXJ9_}*qK&gcgOS9wjD>@0%lkR1% z7LD-KsWcv0oMtK@h-VTu4;-|f5G~;z8XO!=Dsfj!mP{;Qw~|S|CY>|NBU|tV;Gce? z`bhVgrFu(L%6sJFoe}fQ&Nbrd%-JL{%KX&(;nG55qYUM%dIf$tMlh=`lbf4WL1g0n zojXCnk!3|CCDjhTJFlW8vrOLKYc+cxmRne6HSs*+iT&>vtn3utdkP)B*z-xu5eceM z(DVBt5-z_#ZJhMEt=KN=R(5x=sL42IGm=U>wko8C99yp{5s9RK+!XDs^KVZ^-wFIu zB~>hW-TpD=+wJF9y5YP8LvMVHBS%DGt4xwXBCH=18XatXx%SVMQV1+thbU0 zTFJ(ANAg%2satP-cI2a@*cu+}IoSGg2(LkB6($+_EAQ_8OAgRiSNwt+X}R9D z6ZeXcN`W zS~m$#kIi-_?+68KhfFM7F4Osb6&8G2$hm#McZqERC$G8j_{q4a$U(LlR2{wB_vCHF d{~!yMDtof(U6ov;0)qZWSIbcI!$rG?{|~`P*ed`4