diff --git a/code/modules/events/boss.dm b/code/modules/events/boss.dm
new file mode 100644
index 0000000000..31bc9dd09c
--- /dev/null
+++ b/code/modules/events/boss.dm
@@ -0,0 +1,116 @@
+#define LOC_ATMOS 0
+#define LOC_CHAPEL 1
+#define LOC_LIBRARY 2
+#define LOC_GARDEN 3
+#define LOC_MAINTENANCE 4
+#define LOC_CONSTR 5
+
+#define BOSS_METROID 0
+#define BOSS_XENOMORPH 1
+#define BOSS_CARP 2
+#define BOSS_SPIDER 3
+#define BOSS_CRAB 4
+#define BOSS_DRAGON 5
+#define BOSS_PANTHER 6
+#define BOSS_MOTHER 7
+#define BOSS_CHUNGUS 8
+
+/datum/event/boss
+ announceWhen = 10
+ endWhen = 11
+ var/location
+ var/locstring
+ var/boss
+ var/bossstring
+
+/datum/event/boss/start()
+
+ location = rand(0,5)
+ var/list/turf/simulated/floor/turfs = list()
+ var/spawn_area_type
+ switch(location)
+ if(LOC_ATMOS)
+ spawn_area_type = /area/engineering/atmos
+ locstring = "atmospherics"
+ if(LOC_CHAPEL)
+ spawn_area_type = /area/chapel/main
+ locstring = "the chapel"
+ if(LOC_LIBRARY)
+ spawn_area_type = /area/library
+ locstring = "the library"
+ if(LOC_GARDEN)
+ spawn_area_type = /area/hydroponics/garden
+ locstring = "the public garden"
+ if(LOC_MAINTENANCE)
+ spawn_area_type = /area/maintenance/locker
+ locstring = "far northern maintenance tunnels"
+ if(LOC_CONSTR)
+ spawn_area_type = /area/construction
+ locstring = "the construction area"
+
+ for(var/areapath in typesof(spawn_area_type))
+ var/area/A = locate(areapath)
+ for(var/turf/simulated/floor/F in A.contents)
+ if(turf_clear(F))
+ turfs += F
+
+ var/list/spawn_types = list()
+ boss = rand(0,8)
+ switch(boss)
+ if(BOSS_METROID)
+ spawn_types = list(/mob/living/simple_animal/hostile/metroid/combat/queen)
+ bossstring = "metroid"
+ if(BOSS_XENOMORPH)
+ spawn_types = list(/mob/living/simple_animal/hostile/alien/queen/empress)
+ bossstring = "xenomorph"
+ if(BOSS_CARP)
+ spawn_types = list(/mob/living/simple_animal/hostile/carp/large/huge)
+ bossstring = "carp"
+ if(BOSS_SPIDER)
+ spawn_types = list(/mob/living/simple_animal/hostile/giant_spider/nurse/queen)
+ bossstring = "spider"
+ if(BOSS_CRAB)
+ spawn_types = list(/mob/living/simple_animal/hostile/giant_crab)
+ bossstring = "crab"
+ if(BOSS_DRAGON)
+ spawn_types = list(/mob/living/simple_animal/hostile/dragon)
+ bossstring = "dragon"
+ if(BOSS_PANTHER)
+ spawn_types = list(/mob/living/simple_animal/hostile/panther)
+ bossstring = "panther"
+ if(BOSS_MOTHER)
+ spawn_types = list(/mob/living/simple_animal/hostile/alien/queen/empress/mother)
+ bossstring = "xenomorph mother"
+ if(BOSS_CHUNGUS)
+ spawn_types = list(/mob/living/simple_animal/hostile/chungus)
+ bossstring = "chungus"
+
+ spawn(0)
+ var/num = 1
+ while(turfs.len > 0 && num > 0)
+ var/turf/simulated/floor/T = pick(turfs)
+ turfs.Remove(T)
+ num--
+ var/spawn_type = pick(spawn_types)
+ new spawn_type(T)
+
+
+/datum/event/boss/announce()
+ command_announcement.Announce("Bioscans indicate a giant enemy [bossstring] in [locstring]. Handle with extreme caution.", "Boss Fight", new_sound = 'sound/misc/alarm1.ogg')
+
+#undef LOC_ATMOS
+#undef LOC_CHAPEL
+#undef LOC_LIBRARY
+#undef LOC_GARDEN
+#undef LOC_MAINTENANCE
+#undef LOC_CONSTR
+
+#undef BOSS_METROID
+#undef BOSS_XENOMORPH
+#undef BOSS_CARP
+#undef BOSS_SPIDER
+#undef BOSS_CRAB
+#undef BOSS_DRAGON
+#undef BOSS_PANTHER
+#undef BOSS_MOTHER
+#undef BOSS_CHUNGUS
\ No newline at end of file
diff --git a/code/modules/events/event_container_vr.dm b/code/modules/events/event_container_vr.dm
index 429e46e260..c8986bc063 100644
--- a/code/modules/events/event_container_vr.dm
+++ b/code/modules/events/event_container_vr.dm
@@ -44,8 +44,10 @@
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Shipping Error", /datum/event/shipping_error , 30, list(ASSIGNMENT_ANY = 2), 0),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Supply Demand", /datum/event/supply_demand, -15, list(ASSIGNMENT_ANY = 1, ASSIGNMENT_ENGINEER = 5, ASSIGNMENT_MEDICAL = 5), 1),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Trivial News", /datum/event/trivial_news, 400),
- // Spawns mice, lizards, or dud spiderlings //Dud spiderlings HAHAHAHAHAHAH no. No they are not duds. Have fun without security. The Janitor will mop them to death.
+ // Spawns mice, or lizards.
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Vermin Infestation",/datum/event/infestation, 100, list(ASSIGNMENT_JANITOR = 100), 1),
+ //Split spiderlings off from the vermin infestation event into its own thing, triggered only by security.
+ new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Spiderling Infestation",/datum/event/spiderling_infestation, 0, list(ASSIGNMENT_SECURITY = 50), 1),
// Rot only weakens walls, not destroy them
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Wallrot", /datum/event/wallrot, 30, list(ASSIGNMENT_ENGINEER = 30, ASSIGNMENT_GARDENER = 50), 1),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Window Damage", /datum/event/window_break, 10, list(ASSIGNMENT_ENGINEER = 20)),
@@ -79,9 +81,9 @@
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Grub Infestation", /datum/event/grub_infestation, -20, list(ASSIGNMENT_SECURITY = 40, ASSIGNMENT_ENGINEER = 40), 1),
// Pure RP fun, no mechanical effects.
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Ion Storm", /datum/event/ionstorm, -50, list(ASSIGNMENT_AI = 200, ASSIGNMENT_CYBORG = 100, ASSIGNMENT_ENGINEER = 15, ASSIGNMENT_SCIENTIST = 5), 0),
- new /datum/event_meta(EVENT_LEVEL_MODERATE, "Meteor Shower", /datum/event/meteor_wave, -40, list(ASSIGNMENT_ENGINEER = 40), 1),
+ new /datum/event_meta(EVENT_LEVEL_MODERATE, "Meteor Shower", /datum/event/meteor_wave, -20, list(ASSIGNMENT_ENGINEER = 40), 1),
//New CHOMPStation event. Mice grow into rats.
- new /datum/event_meta(EVENT_LEVEL_MODERATE, "Mutants", /datum/event/mutants, 20, list(ASSIGNMENT_ANY = 1, ASSIGNMENT_SECURITY = 50), 1),
+ new /datum/event_meta(EVENT_LEVEL_MODERATE, "Mutants", /datum/event/mutants, 20, list(ASSIGNMENT_ANY = 15, ASSIGNMENT_SECURITY = 50), 1),
// Opens doors in brig. So just RP fun
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Prison Break", /datum/event/prison_break, -10, list(ASSIGNMENT_SECURITY = 30, ASSIGNMENT_ENGINEER = 20), 1),
// Not bad (dorms are shielded) but inconvenient
@@ -109,16 +111,18 @@
available_events = list(
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Nothing", /datum/event/nothing, 900),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Atmos Leak", /datum/event/atmos_leak, 5, list(ASSIGNMENT_ENGINEER = 35), 1),
- new /datum/event_meta(EVENT_LEVEL_MAJOR, "Blob", /datum/event/blob, -75, list(ASSIGNMENT_SECURITY = 40, ASSIGNMENT_HOS = 10, ASSIGNMENT_WARDEN = 10, ASSIGNMENT_ENGINEER = 5), 1),
+ new /datum/event_meta(EVENT_LEVEL_MAJOR, "Blob", /datum/event/blob, -100, list(ASSIGNMENT_SECURITY = 40, ASSIGNMENT_HOS = 10, ASSIGNMENT_WARDEN = 10, ASSIGNMENT_ENGINEER = 5), 1),
+ new /datum/event_meta(EVENT_LEVEL_MAJOR, "Boss", /datum/event/boss, -110, list(ASSIGNMENT_SECURITY = 50, ASSIGNMENT_HOS = 10, ASSIGNMENT_WARDEN = 10), 1),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Carp Migration", /datum/event/carp_migration, -110, list(ASSIGNMENT_SECURITY = 50, ASSIGNMENT_HOS = 10, ASSIGNMENT_WARDEN = 10), 1),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Containment Breach", /datum/event/prison_break/station,0, list(ASSIGNMENT_ANY = 5), 0),
- new /datum/event_meta(EVENT_LEVEL_MAJOR, "Escaped Slimes", /datum/event/escaped_slimes, -40, list(ASSIGNMENT_SCIENTIST = 30, ASSIGNMENT_SECURITY = 30), 1),
+ new /datum/event_meta(EVENT_LEVEL_MAJOR, "Escaped Slimes", /datum/event/escaped_slimes, -50, list(ASSIGNMENT_SCIENTIST = 30, ASSIGNMENT_SECURITY = 30), 1),
// TFF: Virgo event commented out. Technically meant for Tether maps, not Polaris.
// new /datum/event_meta(EVENT_LEVEL_MAJOR, "Meteor Strike", /datum/event/meteor_strike, 10, list(ASSIGNMENT_ENGINEER = 15), 1),
- new /datum/event_meta(EVENT_LEVEL_MAJOR, "Meteor Wave", /datum/event/meteor_wave, 10, list(ASSIGNMENT_ENGINEER = 15), 1),
+ new /datum/event_meta(EVENT_LEVEL_MAJOR, "Meteor Wave", /datum/event/meteor_wave, 0, list(ASSIGNMENT_ENGINEER = 15), 1),
+ new /datum/event_meta(EVENT_LEVEL_MAJOR, "Metroid Infestation", /datum/event/metroid_infestation, -75, list(ASSIGNMENT_SECURITY = 35, ASSIGNMENT_SCIENCE = 20, ASSIGNMENT_HOS = 10, ASSIGNMENT_WARDEN = 10), 0),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Space Vines", /datum/event/spacevine, 20, list(ASSIGNMENT_ENGINEER = 15), 1),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Spider Infestation", /datum/event/spider_infestation, -35, list(ASSIGNMENT_SECURITY = 30, ASSIGNMENT_HOS = 10, ASSIGNMENT_WARDEN = 10), 0),
- new /datum/event_meta(EVENT_LEVEL_MAJOR, "Viral Infection", /datum/event/viral_infection, -25, list(ASSIGNMENT_MEDICAL = 10), 1),
+ new /datum/event_meta(EVENT_LEVEL_MAJOR, "Viral Infection", /datum/event/viral_infection, -50, list(ASSIGNMENT_MEDICAL = 25), 1),
)
add_disabled_events(list(
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Blob_NoRequirements", /datum/event/blob, 10, list(ASSIGNMENT_SECURITY = 10, ASSIGNMENT_ENGINEER = 30), 1),
diff --git a/code/modules/events/infestation.dm b/code/modules/events/infestation.dm
index 611b3005ad..72ce6d4953 100644
--- a/code/modules/events/infestation.dm
+++ b/code/modules/events/infestation.dm
@@ -10,7 +10,6 @@
#define VERM_MICE 0
#define VERM_LIZARDS 1
-#define VERM_SPIDERS 2
/datum/event/infestation
announceWhen = 10
@@ -62,7 +61,7 @@
var/list/spawn_types = list()
var/max_number
- vermin = rand(0,2)
+ vermin = rand(0,1)
switch(vermin)
if(VERM_MICE)
spawn_types = list(/mob/living/simple_animal/mouse)
@@ -72,11 +71,6 @@
spawn_types = list(/mob/living/simple_animal/lizard)
max_number = 6
vermstring = "lizards"
- if(VERM_SPIDERS)
- spawn_types = list(/obj/effect/spider/spiderling)
-// rand(2,8) //Not sure if this would work instead
- max_number = 8
- vermstring = "spiders"
spawn(0)
var/num = rand(2,max_number)
@@ -84,13 +78,8 @@
var/turf/simulated/floor/T = pick(turfs)
turfs.Remove(T)
num--
-
- if(vermin == VERM_SPIDERS)
- var/obj/effect/spider/spiderling/S = new(T)
- S.amount_grown = 0
- else
- var/spawn_type = pick(spawn_types)
- new spawn_type(T)
+ var/spawn_type = pick(spawn_types)
+ new spawn_type(T)
/datum/event/infestation/announce()
@@ -106,5 +95,4 @@
#undef LOC_GARDEN
#undef VERM_MICE
-#undef VERM_LIZARDS
-#undef VERM_SPIDERS
+#undef VERM_LIZARDS
\ No newline at end of file
diff --git a/code/modules/events/metroid_infestation.dm b/code/modules/events/metroid_infestation.dm
new file mode 100644
index 0000000000..ff5cc1ecba
--- /dev/null
+++ b/code/modules/events/metroid_infestation.dm
@@ -0,0 +1,28 @@
+/var/global/sent_metroids_to_station = 0
+
+/datum/event/metroid_infestation
+ announceWhen = 30
+ var/spawncount = 1
+
+
+/datum/event/metroid_infestation/setup()
+ announceWhen = rand(announceWhen, announceWhen + 30)
+ spawncount = rand(2 * severity, 4 * severity)
+ sent_metroids_to_station = 0
+
+/datum/event/metroid_infestation/announce()
+ command_announcement.Announce("Unidentified high-energy lifesigns detected coming aboard [station_name()]. Repel and exterminate.", "Lifesign Alert", new_sound = 'sound/misc/alarm1.ogg')
+
+
+/datum/event/metroid_infestation/start()
+ var/list/vents = list()
+ for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in machines)
+ if(!temp_vent.welded && temp_vent.network && temp_vent.loc.z in using_map.station_levels)
+ if(temp_vent.network.normal_members.len > 50)
+ vents += temp_vent
+
+ while((spawncount >= 1) && vents.len)
+ var/obj/vent = pick(vents)
+ new /mob/living/simple_animal/hostile/metroid/evolution/baby(vent.loc)
+ vents -= vent
+ spawncount--
\ No newline at end of file
diff --git a/code/modules/events/spiderling_infestation.dm b/code/modules/events/spiderling_infestation.dm
new file mode 100644
index 0000000000..d800f0af7c
--- /dev/null
+++ b/code/modules/events/spiderling_infestation.dm
@@ -0,0 +1,87 @@
+//CHOMP: Lifted and butchered from the infestation event as we have moved spiderlings out and instead put in its own event.
+
+#define LOC_KITCHEN 0
+#define LOC_ATMOS 1
+#define LOC_CHAPEL 2
+#define LOC_LIBRARY 3
+#define LOC_HYDRO 4
+#define LOC_VAULT 5
+#define LOC_CONSTR 6
+#define LOC_TECH 7
+#define LOC_GARDEN 8
+
+
+/datum/event/spiderling_infestation
+ announceWhen = 10
+ endWhen = 11
+ var/location
+ var/locstring
+ var/vermstring
+
+/datum/event/spiderling_infestation/start()
+
+ location = rand(0,8)
+ var/list/turf/simulated/floor/turfs = list()
+ var/spawn_area_type
+ switch(location)
+ if(LOC_KITCHEN)
+ spawn_area_type = /area/crew_quarters/kitchen
+ locstring = "the kitchen"
+ if(LOC_ATMOS)
+ spawn_area_type = /area/engineering/atmos
+ locstring = "atmospherics"
+ if(LOC_CHAPEL)
+ spawn_area_type = /area/chapel/main
+ locstring = "the chapel"
+ if(LOC_LIBRARY)
+ spawn_area_type = /area/library
+ locstring = "the library"
+ if(LOC_HYDRO)
+ spawn_area_type = /area/hydroponics
+ locstring = "hydroponics"
+ if(LOC_VAULT)
+ spawn_area_type = /area/security/nuke_storage
+ locstring = "the vault"
+ if(LOC_CONSTR)
+ spawn_area_type = /area/construction
+ locstring = "the construction area"
+ if(LOC_TECH)
+ spawn_area_type = /area/storage/tech
+ locstring = "technical storage"
+ if(LOC_GARDEN)
+ spawn_area_type = /area/hydroponics/garden
+ locstring = "the public garden"
+
+ for(var/areapath in typesof(spawn_area_type))
+ var/area/A = locate(areapath)
+ for(var/turf/simulated/floor/F in A.contents)
+ if(turf_clear(F))
+ turfs += F
+
+ var/list/spawn_types = list()
+ var/max_number
+ spawn_types = list(/obj/effect/spider/spiderling)
+ max_number = 8
+ vermstring = "spiders"
+
+ spawn(0)
+ var/num = rand(2,max_number)
+ while(turfs.len > 0 && num > 0)
+ var/turf/simulated/floor/T = pick(turfs)
+ turfs.Remove(T)
+ num--
+ var/spawn_type = pick(spawn_types)
+ new spawn_type(T)
+
+/datum/event/spiderling_infestation/announce()
+ command_announcement.Announce("Bioscans indicate that [vermstring] have been breeding in [locstring]. Clear them out, before this starts to affect productivity.", "Spiderling infestation")
+
+#undef LOC_KITCHEN
+#undef LOC_ATMOS
+#undef LOC_CHAPEL
+#undef LOC_LIBRARY
+#undef LOC_HYDRO
+#undef LOC_VAULT
+#undef LOC_TECH
+#undef LOC_GARDEN
+
diff --git a/code/modules/mob/living/simple_animal/aliens/alien.dm b/code/modules/mob/living/simple_animal/aliens/alien.dm
index 3dba09330a..17f7eec5b7 100644
--- a/code/modules/mob/living/simple_animal/aliens/alien.dm
+++ b/code/modules/mob/living/simple_animal/aliens/alien.dm
@@ -67,6 +67,9 @@
health = 120
melee_damage_lower = 15
melee_damage_upper = 15
+ move_shoot = 1 //Move and shoot at the same time.
+ ranged_cooldown = 0 //What the starting cooldown is on ranged attacks
+ ranged_cooldown_time = 120 //How long, in deciseconds, the cooldown of ranged attacks is
ranged = 1
projectiletype = /obj/item/projectile/energy/neurotoxin/toxic
projectilesound = 'sound/weapons/pierce.ogg'
@@ -101,6 +104,9 @@
projectiletype = /obj/item/projectile/energy/neurotoxin/toxic
projectilesound = 'sound/weapons/pierce.ogg'
rapid = 1
+ move_shoot = 1 //Move and shoot at the same time.
+ ranged_cooldown = 0 //What the starting cooldown is on ranged attacks
+ ranged_cooldown_time = 120 //How long, in deciseconds, the cooldown of ranged attacks is
status_flags = 0
/mob/living/simple_animal/hostile/alien/queen/empress
diff --git a/code/modules/mob/living/simple_animal/animals/crab.dm b/code/modules/mob/living/simple_animal/animals/crab.dm
index c369aa375a..ce5230eb75 100644
--- a/code/modules/mob/living/simple_animal/animals/crab.dm
+++ b/code/modules/mob/living/simple_animal/animals/crab.dm
@@ -85,3 +85,60 @@
speak_emote = list("clicks")
emote_hear = list("clicks")
emote_see = list("clacks")
+
+
+
+//Enemy version.
+/mob/living/simple_animal/hostile/giant_crab
+ name = "giant crab"
+ desc = "A giant enemy crab."
+ tt_desc = "S Cancer holligus"
+ icon = 'icons/mob/vore.dmi'
+ icon_state = "sif_crab"
+ icon_living = "sif_crab"
+ icon_dead = "sif_crab_dead"
+ faction = "crabs"
+ intelligence_level = SA_ANIMAL
+
+ maxHealth = 300
+ health = 300
+
+ mob_size = MOB_LARGE
+ cooperative = 1
+ retaliate = 1
+ turns_per_move = 3
+
+ minbodytemp = 175
+
+ melee_damage_lower = 22
+ melee_damage_upper = 35
+ attack_armor_pen = 35
+ attack_sharp = 1
+ attack_edge = 1
+
+ armor = list(
+ "melee" = 40,
+ "bullet" = 10,
+ "laser" = 25,
+ "energy" = 25,
+ "bomb" = 10,
+ "bio" = 100,
+ "rad" = 100)
+
+ meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat
+ response_help = "pets"
+ response_disarm = "gently pushes aside"
+ response_harm = "stomps"
+ friendly = "pinches"
+
+ speak_chance = 1
+ speak_emote = list("clicks")
+ emote_hear = list("clicks")
+ emote_see = list("clacks")
+
+
+//Vore stuff
+ vore_active = 1
+ vore_ignores_undigestable = 0
+ vore_icons = SA_ICON_LIVING
+ vore_pounce_chance = 20
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_animal/vore/metroidsSimple.dm b/code/modules/mob/living/simple_animal/vore/metroidsSimple.dm
index c35d31ee15..1dfaf7f272 100644
--- a/code/modules/mob/living/simple_animal/vore/metroidsSimple.dm
+++ b/code/modules/mob/living/simple_animal/vore/metroidsSimple.dm
@@ -1,6 +1,12 @@
-var/global/list/queen_amount = 0
+var/global/list/queen_amount = 0 //We only gonna want 1 queen in the world.
+
+/*
+//The metroids' base variables!
+*/
+
+
/mob/living/simple_animal/hostile/metroid
- name = "minetroid"
+ name = "metroid"
desc = "Some sort of person eaty thing!"
tt_desc = "Headamus Suckumus"
icon = 'icons/mob/metroid/small.dmi'
@@ -13,12 +19,13 @@ var/global/list/queen_amount = 0
maxHealth = 25
health = 25
speed = 4
- turns_per_move = 4
response_help = "pets the"
response_disarm = "gently pushes aside the"
response_harm = "hits the"
+ harm_intent_damage = 5
isEdible = 0 //They cannot be eaten while alive.
var/canEvolve = 1 //A variable for admins to turn off and on for when they like assign a player as a mob. I want to add a verb so that they can do it on command when the conditions are right in the future.
+ var/obj/machinery/atmospherics/unary/vent_pump/entry_vent //Graciously stolen from spider code
//Metroids aren't affected by atmospheres.
min_oxy = 0
@@ -44,26 +51,36 @@ var/global/list/queen_amount = 0
meat_type = /obj/item/toy/figure/samus
var/mob/living/victim = null // the person the metroid is currently feeding on
- var/optimal_combat = FALSE // Used to dumb down the combat AI somewhat. If true, the slime tends to be really dangerous to fight alone due to stunlocking.
+ var/optimal_combat = FALSE // Used to dumb down the combat AI somewhat. If true, the metroid tends to be really dangerous to fight alone due to stunlocking.
var/power_charge = 0
var/evo_point = 0
var/evo_limit = 0
var/next = null
+//Stuff for if a person is playing as a metroid.
+ show_stat_health = 1 // Does the percentage health show in the stat panel for the mob
+ ai_inactive = 0 // Set to 1 to turn off most AI actions
+ has_hands = 1 // Set to 1 to enable the use of hands and the hands hud
+ humanoid_hands = 1 // Can a player in this mob use things like guns or AI cards?
+ //hand_form = "hands" // Used in IsHumanoidToolUser. 'Your X are not fit-'.
+ //hud_gears // Slots to show on the hud (typically none)
+ //ui_icons // Icon file path to use for the HUD, otherwise generic icons are used
+ //r_hand_sprite = "piranha_r" // If they have hands, //TODO make a leaf sprite for this
+ //l_hand_sprite = "piranha_l" // they could use some icons.
+ player_msg = "SUCC." // Message to print to players about 'how' to play this mob on login.
+
+
+
+
/mob/living/simple_animal/hostile/metroid //activate noms
vore_active = 1
- vore_pounce_chance = 50
+ vore_pounce_chance = 25
vore_icons = SA_ICON_LIVING
-
+ isEdible = 0
/mob/living/simple_animal/hostile/metroid/death()
playsound(src, 'sound/effects/metroiddeath.ogg', 50, 1)
..()
- if(prob(20))
- visible_message("\The [src] dropped some toy!")
- var/location = get_turf(src)
- new /obj/item/toy/figure/samus(location)
-
@@ -76,7 +93,6 @@ var/global/list/queen_amount = 0
icon_living = "mochtroid"
icon_state = "mochtroid"
-/mob/living/simple_animal/hostile/metroid/mine
vore_active = 1
vore_pounce_chance = 50
vore_icons = SA_ICON_LIVING
@@ -104,17 +120,26 @@ var/global/list/queen_amount = 0
icon_state = "baby"
intelligence_level = SA_ANIMAL
speak_emote = list("churrs")
- health = 150
- maxHealth = 150
+ health = 200
+ maxHealth = 200
melee_damage_lower = 1
melee_damage_upper = 5
melee_miss_chance = 0
+ armor = list(
+ "melee" = 50,
+ "bullet" = 30,
+ "laser" = 80,
+ "energy" = 90,
+ "bomb" = 70,
+ "bio" = 100,
+ "rad" = 100)
gender = NEUTER
faction = "metroids"
+ move_to_delay = 3
//Metroids aren't affected by most atmospheres except cold.
minbodytemp = T0C-30
- cold_damage_per_tick = 4
+ cold_damage_per_tick = 100
min_oxy = 0
max_oxy = 0
min_tox = 0
@@ -140,7 +165,11 @@ var/global/list/queen_amount = 0
evo_point = 800
evo_limit = 1000
next = "/mob/living/simple_animal/hostile/metroid/evolution/super"
-
+ vore_active = 0
+
+/mob/living/simple_animal/hostile/metroid/evolution/baby/New()
+ playsound(src, 'sound/metroid/metroidsee.ogg', 100, 1)
+ ..()
@@ -159,17 +188,26 @@ var/global/list/queen_amount = 0
icon_state = "metroid"
intelligence_level = SA_ANIMAL
speak_emote = list("churrs")
- health = 200
- maxHealth = 200
+ health = 250
+ maxHealth = 250
melee_damage_lower = 2
melee_damage_upper = 5
melee_miss_chance = 0
+ armor = list(
+ "melee" = 50,
+ "bullet" = 30,
+ "laser" = 90,
+ "energy" = 90,
+ "bomb" = 70,
+ "bio" = 100,
+ "rad" = 100)
gender = NEUTER
faction = "metroids"
+ move_to_delay = 3
//Metroids aren't affected by most atmospheres except cold.
minbodytemp = T0C-30
- cold_damage_per_tick = 4
+ cold_damage_per_tick = 100
min_oxy = 0
max_oxy = 0
min_tox = 0
@@ -195,7 +233,6 @@ var/global/list/queen_amount = 0
evo_limit = 1400
next = "/mob/living/simple_animal/hostile/metroid/combat/alpha"
-/mob/living/simple_animal/hostile/metroid/evolution/super //active noms
vore_active = 1
vore_bump_chance = 0
vore_capacity = 1
@@ -204,6 +241,10 @@ var/global/list/queen_amount = 0
vore_default_mode = DM_DIGEST
swallowTime = 1 SECONDS //Hungry little bastards.
vore_escape_chance = 25
+
+/mob/living/simple_animal/hostile/metroid/evolution/super/New()
+ playsound(src, 'sound/metroid/metroidsee.ogg', 100, 1)
+ ..()
/mob/living/simple_animal/hostile/metroid/evolution/super/death()
playsound(src, 'sound/metroid/metroiddeath.ogg', 100, 1)
@@ -225,13 +266,23 @@ var/global/list/queen_amount = 0
icon_living = "alpha"
icon_state = "alpha"
intelligence_level = SA_ANIMAL
- health = 225
- maxHealth = 225
+ health = 300
+ maxHealth = 300
melee_damage_lower = 10
melee_damage_upper = 15
melee_miss_chance = 5
+ attacktext = list("rammed")
+ armor = list(
+ "melee" = 60,
+ "bullet" = 45,
+ "laser" = 50,
+ "energy" = 70,
+ "bomb" = 10,
+ "bio" = 100,
+ "rad" = 100)
gender = NEUTER
faction = "metroids"
+ move_to_delay = 3
//Alphas lose their vulnerability to cold.
minbodytemp = 0
@@ -261,6 +312,10 @@ var/global/list/queen_amount = 0
evo_limit = 1600
next = "/mob/living/simple_animal/hostile/metroid/combat/gamma"
+/mob/living/simple_animal/hostile/metroid/combat/alpha/New()
+ playsound(src, 'sound/metroid/metroidsee.ogg', 100, 1)
+ ..()
+
/mob/living/simple_animal/hostile/metroid/combat/alpha/death()
playsound(src, 'sound/metroid/metroiddeath.ogg', 100, 1)
..()
@@ -270,7 +325,7 @@ var/global/list/queen_amount = 0
vore_bump_chance = 0
vore_capacity = 1
vore_icons = SA_ICON_LIVING
- vore_pounce_chance = 10 //Alphas will try knocking targets over since they lost their stun ability from the initial phases.
+ vore_pounce_chance = 15 //Alphas will try knocking targets over since they lost their stun ability from the initial phases.
vore_default_mode = DM_DIGEST
swallowTime = 3 SECONDS
vore_escape_chance = 25
@@ -283,6 +338,7 @@ var/global/list/queen_amount = 0
//------------------------------------------------------------------------------------------------------------
+
/mob/living/simple_animal/hostile/metroid/combat/gamma
name = "gamma metroid"
desc = "Some kind of head rammy thing! This one shoots electricity!"
@@ -292,13 +348,23 @@ var/global/list/queen_amount = 0
icon_living = "gamma"
icon_state = "gamma"
intelligence_level = SA_ANIMAL
- health = 275
- maxHealth = 275
+ health = 400
+ maxHealth = 400
melee_damage_lower = 10
melee_damage_upper = 20
melee_miss_chance = 5
+ attacktext = list("rammed")
+ armor = list(
+ "melee" = 60,
+ "bullet" = 50,
+ "laser" = 50,
+ "energy" = 90,
+ "bomb" = 10,
+ "bio" = 100,
+ "rad" = 100)
gender = NEUTER
faction = "metroids"
+ move_to_delay = 4
move_shoot = 1 //Move and shoot at the same time.
ranged_cooldown = 0 //What the starting cooldown is on ranged attacks
@@ -338,12 +404,14 @@ var/global/list/queen_amount = 0
evo_limit = 1600
next = "/mob/living/simple_animal/hostile/metroid/combat/zeta"
-
+/mob/living/simple_animal/hostile/metroid/combat/gamma/New()
+ playsound(src, 'sound/metroid/metroidgamma.ogg', 100, 1)
+ ..()
+
/mob/living/simple_animal/hostile/metroid/combat/gamma/death()
playsound(src, 'sound/metroid/metroiddeath.ogg', 100, 1)
..()
-
/mob/living/simple_animal/hostile/metroid/combat/gamma //active noms
vore_active = 1
vore_bump_chance = 0
@@ -364,19 +432,29 @@ var/global/list/queen_amount = 0
name = "zeta metroid"
desc = "Some kind of feet stompy thing!"
tt_desc = "Minimus Feetamus Walkamus"
- icon = 'icons/mob/metroid/small.dmi'
+ icon = 'icons/mob/metroid/large.dmi'
icon_dead = "zeta_dead"
icon_living = "zeta"
icon_state = "zeta"
intelligence_level = SA_ANIMAL
- health = 350
- maxHealth = 350
+ health = 500
+ maxHealth = 500
melee_damage_lower = 15
melee_damage_upper = 25
melee_miss_chance = 5
attack_armor_pen = 10
+ attacktext = list("slashed")
+ armor = list(
+ "melee" = 70,
+ "bullet" = 60,
+ "laser" = 50,
+ "energy" = 70,
+ "bomb" = 10,
+ "bio" = 100,
+ "rad" = 100)
gender = NEUTER
faction = "metroids"
+ move_to_delay = 4
move_shoot = 1 //Move and shoot at the same time.
ranged_cooldown = 0 //What the starting cooldown is on ranged attacks
@@ -396,16 +474,21 @@ var/global/list/queen_amount = 0
min_n2 = 0
max_n2 = 0
unsuitable_atoms_damage = 0
+
+ pixel_x = -16
+ pixel_y = -16
+ old_x = -16
+ old_y = -16
response_help = "pets"
speak = list(
- "Skree...",
- "Ereeeer..."
+ "Ereeeer...",
+ "Rerrr..."
)
emote_hear = list()
emote_see = list(
- "SKREE!"
+ "RAWR!"
)
cooperative = 1
@@ -413,12 +496,14 @@ var/global/list/queen_amount = 0
evo_limit = 1800
next = "/mob/living/simple_animal/hostile/metroid/combat/omega"
-
+/mob/living/simple_animal/hostile/metroid/combat/zeta/New()
+ playsound(src, 'sound/metroid/metroidzeta.ogg', 100, 1)
+ ..()
+
/mob/living/simple_animal/hostile/metroid/combat/zeta/death()
playsound(src, 'sound/metroid/metroiddeath.ogg', 100, 1)
..()
-
/mob/living/simple_animal/hostile/metroid/combat/zeta //active noms
vore_active = 1
vore_bump_chance = 0
@@ -440,24 +525,34 @@ var/global/list/queen_amount = 0
name = "omega metroid"
desc = "Those are some big claws!"
tt_desc = "Maximus Feetamus Walkamus"
- icon = 'icons/mob/metroid/small.dmi'
+ icon = 'icons/mob/metroid/large.dmi'
icon_dead = "omega_dead"
icon_living = "omega"
icon_state = "omega"
intelligence_level = SA_ANIMAL
- health = 500
- maxHealth = 500
+ health = 600
+ maxHealth = 600
melee_damage_lower = 25
melee_damage_upper = 40
melee_miss_chance = 5
attack_armor_pen = 20
+ attacktext = list("slashed")
+ armor = list(
+ "melee" = 75,
+ "bullet" = 60,
+ "laser" = 55,
+ "energy" = 90,
+ "bomb" = 10,
+ "bio" = 100,
+ "rad" = 100)
gender = NEUTER
faction = "metroids"
speed = 4
+ move_to_delay = 5
move_shoot = 1 //Move and shoot at the same time.
ranged_cooldown = 0 //What the starting cooldown is on ranged attacks
- ranged_cooldown_time = 15 //How long, in deciseconds, the cooldown of ranged attacks is
+ ranged_cooldown_time = 150 //How long, in deciseconds, the cooldown of ranged attacks is
rapid = 1 // Three-round-burst fire mode
projectiletype = /obj/item/projectile/energy/metroidacid // The projectiles I shoot
projectilesound = 'sound/weapons/slashmiss.ogg' // The sound I make when I do it
@@ -473,16 +568,21 @@ var/global/list/queen_amount = 0
min_n2 = 0
max_n2 = 0
unsuitable_atoms_damage = 0
+
+ old_x = -16
+ old_y = 0
+ default_pixel_x = -16
+ pixel_x = -16
+ pixel_y = 0
response_help = "pets"
speak = list(
- "Skree...",
- "Ereeeer..."
+ "Rurrr...",
)
emote_hear = list()
emote_see = list(
- "SKREE!"
+ "ROAR!"
)
cooperative = 1
@@ -490,11 +590,13 @@ var/global/list/queen_amount = 0
evo_limit = 3000
next = "/mob/living/simple_animal/hostile/metroid/combat/queen"
-
-/mob/living/simple_animal/hostile/metroid/combat/omega/death()
- playsound(src, 'sound/metroid/metroiddeath.ogg', 100, 1)
+/mob/living/simple_animal/hostile/metroid/combat/omega/New()
+ playsound(src, 'sound/metroid/metroidomega.ogg', 100, 1)
+ ..()
+
+/mob/living/simple_animal/hostile/metroid/combat/omega/death()
+ playsound(src, 'sound/metroid/metroidomegadeath.ogg', 100, 1)
..()
-
/mob/living/simple_animal/hostile/metroid/combat/omega //active noms
vore_active = 1
@@ -517,24 +619,33 @@ var/global/list/queen_amount = 0
name = "queen metroid"
desc = "The mother of all Metroids, allowed to have grown too far!"
tt_desc = "Maximus Queenamus Deathamus"
- icon = 'icons/mob/metroid/small.dmi'
+ icon = 'icons/mob/metroid/queen.dmi'
icon_dead = "queen_dead"
icon_living = "queen"
icon_state = "queen"
intelligence_level = SA_ANIMAL
- health = 575
- maxHealth = 575
+ health = 1000
+ maxHealth = 1000
melee_damage_lower = 30
melee_damage_upper = 60
melee_miss_chance = 5
attack_armor_pen = 20
+ attacktext = list("gnashed")
+ armor = list(
+ "melee" = 75,
+ "bullet" = 60,
+ "laser" = 60,
+ "energy" = 90,
+ "bomb" = 10,
+ "bio" = 100,
+ "rad" = 100)
gender = NEUTER
faction = "metroids"
- speed = 3
+ move_to_delay = 6
move_shoot = 1 //Move and shoot at the same time.
ranged_cooldown = 0 //What the starting cooldown is on ranged attacks
- ranged_cooldown_time = 12 //How long, in deciseconds, the cooldown of ranged attacks is
+ ranged_cooldown_time = 120 //How long, in deciseconds, the cooldown of ranged attacks is
rapid = 1 // Three-round-burst fire mode
projectiletype = /obj/item/projectile/energy/metroidacid // The projectiles I shoot
projectilesound = 'sound/weapons/slashmiss.ogg' // The sound I make when I do it
@@ -550,26 +661,30 @@ var/global/list/queen_amount = 0
min_n2 = 0
max_n2 = 0
unsuitable_atoms_damage = 0
+
+ pixel_x = -16
+ pixel_y = -16
+ old_x = -16
+ old_y = -16
response_help = "pets"
- speak = list(
- "Skree...",
- "Ereeeer..."
- )
emote_hear = list()
emote_see = list(
- "SKREE!"
+ "ROAR!"
)
cooperative = 1
- evo_point = 1800
+ evo_point = 1100
evo_limit = INFINITY
next = "/mob/living/simple_animal/hostile/metroid/evolution/super"
-
+/mob/living/simple_animal/hostile/metroid/combat/queen/New()
+ playsound(src, 'sound/metroid/metroidqueen.ogg', 100, 1)
+ ..()
+
/mob/living/simple_animal/hostile/metroid/combat/queen/death()
- playsound(src, 'sound/metroid/metroiddeath.ogg', 100, 1)
+ playsound(src, 'sound/metroid/metroidqueendeath.ogg', 100, 1)
queen_amount--
..()
@@ -587,9 +702,16 @@ var/global/list/queen_amount = 0
//------------------------------------------------------------------------------------------------------------
+
+
+/*
//Objects related to the Metroids.
//Projectile for the Metroids.
+*/
+
+
/obj/item/projectile/energy/metroidacid
+
name = "metroid acid"
icon_state = "neurotoxin"
damage = 10
@@ -639,9 +761,13 @@ var/global/list/queen_amount = 0
-
+/*
//LIFE STUFF, AND MECHANICS!
//FOR THE BABY AND SUPER FORMS!
+*/
+
+
+
/mob/living/simple_animal/hostile/metroid/evolution/Life()
. = ..()
@@ -650,21 +776,26 @@ var/global/list/queen_amount = 0
prey_excludes.Cut()
stop_consumption()
- if(canEvolve == 1 && nutrition >= evo_point && !buckled && vore_fullness == 0)
+ if(canEvolve == 1 && nutrition >= evo_point && !buckled && vore_fullness == 0 && !victim)
playsound(src, 'sound/metroid/metroidgrow.ogg', 50, 1)
paralysis = 7998
sleep(50)
paralysis = 0
expand_troid()
return
+ if(stance == 7) //Necessary to fix a bug where if their vore prey or latching victim is laying down when they evolve, they get stuck in stance 7 and do nothing.
+ stance = 4
+ return
+ else
+ handle_idle()
/mob/living/simple_animal/hostile/metroid/proc/expand_troid()
- visible_message("\The [src] suddenly evolves!")
new next(get_turf(src))
+ visible_message("\The [src] suddenly evolves!")
qdel(src)
-/mob/living/simple_animal/hostile/metroid/evolution/handle_regular_status_updates() //This does something.
+/mob/living/simple_animal/hostile/metroid/evolution/handle_regular_status_updates()
if(stat != DEAD)
if(victim)
@@ -676,6 +807,40 @@ var/global/list/queen_amount = 0
..()
+
+/mob/living/simple_animal/hostile/metroid/evolution/proc/handle_idle()
+ //Do we have a vent ? Good, let's take a look
+ for(entry_vent in view(1, src))
+ if(!victim && !buckled && vore_fullness == 0 && prob(90)) //10 % chance to consider a vent, to try and avoid constant vent switching
+ return
+ visible_message("\The [src] starts trying to slide itself into the vent!")
+ sleep(50) //Let's stop the metroid for five seconds to do its parking job
+ ..()
+ if(entry_vent.network && entry_vent.network.normal_members.len)
+ var/list/vents = list()
+ for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in entry_vent.network.normal_members)
+ vents.Add(temp_vent)
+ if(!vents.len)
+ entry_vent = null
+ return
+ var/obj/machinery/atmospherics/unary/vent_pump/exit_vent = pick(vents)
+ spawn()
+ visible_message("\The [src] suddenly disappears into the vent!")
+ loc = exit_vent
+ var/travel_time = round(get_dist(loc, exit_vent.loc)/2)
+ spawn(travel_time)
+ if(!exit_vent || exit_vent.welded)
+ forceMove(get_turf(entry_vent))
+ entry_vent = null
+ visible_message("\The [src] suddenly appears from the vent!")
+ return
+
+ forceMove(get_turf(exit_vent))
+ entry_vent = null
+ visible_message("\The [src] suddenly appears from the vent!")
+ else
+ entry_vent = null
+
/mob/living/simple_animal/hostile/metroid/evolution/proc/adjust_nutrition(input)
nutrition = between(0, nutrition + input, evo_limit) //Just is a thing to handle the stun from the metroid.
@@ -738,6 +903,7 @@ var/global/list/queen_amount = 0
playsound(src, 'sound/metroid/metroidattach.ogg', 100, 1)
victim.visible_message("\The [src] latches onto [victim]!",
"\The [src] latches onto you!")
+// stop_automated_movement = 1
/mob/living/simple_animal/hostile/metroid/evolution/proc/stop_consumption()
if(!victim)
@@ -748,6 +914,8 @@ var/global/list/queen_amount = 0
"\The [src] slides off of you!")
victim = null
update_icon()
+ sleep(50)
+// stop_automated_movement = 0
/mob/living/simple_animal/hostile/metroid/evolution/proc/handle_consumption()
@@ -782,7 +950,10 @@ var/global/list/queen_amount = 0
else
stop_consumption()
-/mob/living/simple_animal/hostile/metroid/evolution/DoPunch(var/mob/living/L) //Metroid actions vs the player.
+/mob/living/simple_animal/hostile/metroid/evolution/DoPunch(var/mob/living/L) //Metroid melee.
+ var/damage_to_do = rand(melee_damage_lower, melee_damage_upper)
+ var/armor_modifier = abs((L.getarmor(null, "bio") / 100) - 1)
+
if(!Adjacent(L)) // Might've moved away in the meantime.
return
@@ -790,82 +961,81 @@ var/global/list/queen_amount = 0
if(ishuman(L))
var/mob/living/carbon/human/H = L
- // Slime attacks can be blocked with shields.
+ // Metroid attacks can be blocked with shields.
if(H.check_shields(damage = 0, damage_source = null, attacker = src, def_zone = null, attack_text = "the attack"))
return
- switch(a_intent)
- if(I_HELP)
- ai_log("DoPunch() against [L], helping.",2)
- L.visible_message("[src] gently pokes [L]!",
- "[src] gently pokes you!")
- do_attack_animation(L)
-
- if(I_DISARM) //The metroid does all this too try to knock the player down.
- ai_log("DoPunch() against [L], disarming.",2)
- var/stun_power = between(0, power_charge + rand(0, 3), 10)
-
- if(ishuman(L))
- var/mob/living/carbon/human/H = L
- stun_power *= max(H.species.siemens_coefficient,0)
-
-
- if(prob(stun_power * 10))
- power_charge = max(0, power_charge - 3)
- L.visible_message("[src] has shocked [L]!", "[src] has shocked you!")
- playsound(src, 'sound/weapons/Egloves.ogg', 75, 1)
- L.Weaken(4)
- L.Stun(4)
+ switch(a_intent)
+ if(I_HELP)
+ ai_log("DoPunch() against [L], helping.",2)
+ L.visible_message("[src] gently pokes [L]!",
+ "[src] gently pokes you!")
do_attack_animation(L)
- if(L.buckled)
- L.buckled.unbuckle_mob() // To prevent an exploit where being buckled prevents metroids from jumping on you.
- L.stuttering = max(L.stuttering, stun_power)
- var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
- s.set_up(5, 1, L)
- s.start()
+ if(I_DISARM) //The metroid does all this too try to knock the player down.
+ ai_log("DoPunch() against [L], disarming.",2)
+ var/stun_power = between(0, power_charge + rand(0, 3), 10)
- if(prob(stun_power * 10) && stun_power >= 8)
- L.adjustFireLoss(power_charge * rand(1, 2))
-
- else if(prob(40))
- L.visible_message("[src] has pounced at [L]!", "[src] has pounced at you!")
- playsound(src, 'sound/metroid/metroidswoosh.ogg', 75, 1)
- L.Weaken(2)
- do_attack_animation(L)
- if(L.buckled)
- L.buckled.unbuckle_mob() // To prevent an exploit where being buckled prevents metroids from jumping on you.
- else
- L.visible_message("[src] has tried to pounce at [L]!", "[src] has tried to pounce at you!")
- playsound(src, 'sound/weapons/punchmiss.ogg', 75, 1)
- do_attack_animation(L)
- L.updatehealth()
- return L
-
- if(I_GRAB) //The metroid does this to start sucking their head off.
- ai_log("DoPunch() against [L], grabbing.",2)
- start_consuming(L)
-
-
- if(I_HURT) //The metroid does this if it can't latch onto the target or it decides not to try knocking them down.
- ai_log("DoPunch() against [L], hurting.",2)
- var/damage_to_do = rand(melee_damage_lower, melee_damage_upper)
- var/armor_modifier = abs((L.getarmor(null, "bio") / 100) - 1)
-
- L.attack_generic(src, damage_to_do, pick(attacktext))
- playsound(src, 'sound/weapons/bite.ogg', 75, 1)
-
- // Give the Metroid some nutrition, if applicable, even if not attached.
- if(!L.isSynthetic())
if(ishuman(L))
- if(L.getCloneLoss() < L.getMaxHealth() * 1.5)
- adjust_nutrition(damage_to_do * armor_modifier)
+ stun_power *= max(H.species.siemens_coefficient,0)
+
+
+ if(prob(stun_power * 10))
+ power_charge = max(0, power_charge - 3)
+ L.visible_message("[src] has shocked [L]!", "[src] has shocked you!")
+ playsound(src, 'sound/weapons/Egloves.ogg', 75, 1)
+ L.Weaken(4)
+ L.Stun(4)
+ do_attack_animation(L)
+ if(L.buckled)
+ L.buckled.unbuckle_mob() // To prevent an exploit where being buckled prevents metroids from jumping on you.
+ L.stuttering = max(L.stuttering, stun_power)
+
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
+ s.set_up(5, 1, L)
+ s.start()
+
+ if(prob(stun_power * 10) && stun_power >= 8)
+ L.adjustFireLoss(power_charge * rand(1, 2))
+
+ else if(prob(40))
+ L.visible_message("[src] has pounced at [L]!", "[src] has pounced at you!")
+ playsound(src, 'sound/metroid/metroidswoosh.ogg', 75, 1)
+ L.Weaken(2)
+ do_attack_animation(L)
+ if(L.buckled)
+ L.buckled.unbuckle_mob() // To prevent an exploit where being buckled prevents metroids from jumping on you.
+ else
+ L.visible_message("[src] has tried to pounce at [L]!", "[src] has tried to pounce at you!")
+ playsound(src, 'sound/weapons/punchmiss.ogg', 75, 1)
+ do_attack_animation(L)
+ L.updatehealth()
+ return L
+
+ if(I_GRAB) //The metroid does this to start sucking their head off.
+ ai_log("DoPunch() against [L], grabbing.",2)
+ start_consuming(L)
+
+
+ if(I_HURT) //The metroid does this if it can't latch onto the target or it decides not to try knocking them down.
+ ai_log("DoPunch() against [L], hurting.",2)
+
+ L.attack_generic(src, damage_to_do, pick(attacktext))
+ playsound(src, 'sound/weapons/bite.ogg', 75, 1)
+
+ // Give the Metroid some nutrition, if applicable, even if not attached.
+ if(!L.isSynthetic())
+ if(ishuman(L))
+ if(L.getCloneLoss() < L.getMaxHealth() * 1.5)
+ adjust_nutrition(damage_to_do * armor_modifier)
+
+ else if(istype(L, /mob/living/simple_animal))
+ if(!ismetroid(L))
+ var/mob/living/simple_animal/SA = L
+ if(!SA.stat)
+ L.attack_generic(src, damage_to_do, pick(attacktext))
+ adjust_nutrition(damage_to_do * 5)
- else if(istype(L, /mob/living/simple_animal))
- if(!ismetroid(L))
- var/mob/living/simple_animal/SA = L
- if(!SA.stat)
- adjust_nutrition(damage_to_do)
if(istype(L,/obj/mecha))
@@ -873,6 +1043,7 @@ var/global/list/queen_amount = 0
M.attack_generic(src, rand(melee_damage_lower, melee_damage_upper), pick(attacktext))
+
/mob/living/simple_animal/hostile/metroid/evolution/attack_hand(mob/living/carbon/human/M as mob)
if(victim) // Are we eating someone?
var/fail_odds = 30
@@ -893,7 +1064,7 @@ var/global/list/queen_amount = 0
/mob/living/simple_animal/hostile/metroid/evolution/FindTarget() //This makes it so it doesn't go after another target while succing.
- if(victim) // Don't worry about finding another target if we're eatting someone. //What does doooo??
+ if(victim) // Don't worry about finding another target if we're sucking on someone's head.
return
..()
@@ -929,8 +1100,18 @@ var/global/list/queen_amount = 0
return H // Monkeys are always food.
return
-
+
+
+
+
+
+/*
+//LIFE PROCS!
//FOR THE COMBAT FORMS
+*/
+
+
+
/mob/living/simple_animal/hostile/metroid/combat/Life()
. = ..()
@@ -945,6 +1126,9 @@ var/global/list/queen_amount = 0
paralysis = 0
expand_troid()
return
+ if(stance == 7) //Necessary to fix a bug where if their prey or latching victim is laying down when they evolve, they get stuck in stance 7 and do nothing.
+ stance = 4
+ return
/mob/living/simple_animal/hostile/metroid/combat/omega/Life()
@@ -964,25 +1148,18 @@ var/global/list/queen_amount = 0
src.visible_message("\The [src] begins to lay an egg.")
stop_automated_movement = 1
spawn(50)
- new /obj/effect/spider/eggcluster(loc, src)
+ new /obj/effect/metroid/egg(loc, src)
stop_automated_movement = 0
-
-
-
- birth_troid()
+ nutrition = 400
return
-
-/mob/living/simple_animal/hostile/metroid/proc/birth_troid()
- visible_message("\A nesting Metroid suddenly bursts out of of the [src]!")
- new next(get_turf(src))
-
+
/mob/living/simple_animal/hostile/metroid/combat/proc/adjust_nutrition(input)
nutrition = (nutrition + input) //It handles the metroid's nutrition gain from melee.
-
+
/mob/living/simple_animal/hostile/metroid/combat/PunchTarget() //this segment determines what the mob does depending on its intent.
if(!client) // AI controlled.
a_intent = I_HURT // Otherwise robust them.
@@ -992,37 +1169,42 @@ var/global/list/queen_amount = 0
/mob/living/simple_animal/hostile/metroid/combat/DoPunch(var/mob/living/L) //Metroid actions vs the player.
+ var/damage_to_do = rand(melee_damage_lower, melee_damage_upper)
+ var/armor_modifier = abs((L.getarmor(null, "bio") / 100) - 1)
+
if(!Adjacent(L)) // Might've moved away in the meantime.
return
if(istype(L))
- switch(a_intent)
- if(I_HELP)
- ai_log("DoPunch() against [L], helping.",2)
- L.visible_message("[src] gently pokes [L]!",
- "[src] gently pokes you!")
- do_attack_animation(L)
+ if(ishuman(L))
+ switch(a_intent)
+ if(I_HELP)
+ ai_log("DoPunch() against [L], helping.",2)
+ L.visible_message("[src] gently pokes [L]!",
+ "[src] gently pokes you!")
+ do_attack_animation(L)
- if(I_HURT) //The metroid does this if it can't latch onto the target or it decides not to try knocking them down.
- ai_log("DoPunch() against [L], hurting.",2)
- var/damage_to_do = rand(melee_damage_lower, melee_damage_upper)
- var/armor_modifier = abs((L.getarmor(null, "bio") / 100) - 1)
+ if(I_HURT) //The metroid does this if it can't latch onto the target or it decides not to try knocking them down.
+ ai_log("DoPunch() against [L], hurting.",2)
+
+
- L.attack_generic(src, damage_to_do, pick(attacktext))
- playsound(src, 'sound/weapons/bite.ogg', 75, 1)
+ L.attack_generic(src, damage_to_do, pick(attacktext))
+ playsound(src, 'sound/weapons/bite.ogg', 75, 1)
+
+ // Give the Metroid some nutrition, if applicable, even if not attached.
+ if(!L.isSynthetic())
+ if(ishuman(L))
+ if(L.getCloneLoss() < L.getMaxHealth() * 1.5)
+ adjust_nutrition(25 + damage_to_do * armor_modifier)
- // Give the Metroid some nutrition, if applicable, even if not attached.
- if(!L.isSynthetic())
- if(ishuman(L))
- if(L.getCloneLoss() < L.getMaxHealth() * 1.5)
- adjust_nutrition(50 + damage_to_do * armor_modifier)
-
- else if(istype(L, /mob/living/simple_animal))
- if(!ismetroid(L))
- var/mob/living/simple_animal/SA = L
- if(!SA.stat)
- adjust_nutrition(20 + damage_to_do)
+ else if(istype(L, /mob/living/simple_animal))
+ if(!ismetroid(L))
+ var/mob/living/simple_animal/SA = L
+ if(!SA.stat)
+ L.attack_generic(src, damage_to_do, pick(attacktext))
+ adjust_nutrition(damage_to_do * 4)
if(istype(L,/obj/mecha))
@@ -1033,5 +1215,5 @@ var/global/list/queen_amount = 0
/mob/living/simple_animal/hostile/metroid/combat/ClosestDistance()
if(target_mob.stat == DEAD)
- return 1 // Melee (eat) the target if dead, don't shoot it. //I don't think it actually eats the target. Maybe it does?
+ return 1 // Melee (eat) the target if dead, don't shoot it.
return ..()
\ No newline at end of file
diff --git a/icons/mob/metroid/large.dmi b/icons/mob/metroid/large.dmi
new file mode 100644
index 0000000000..290fe67132
Binary files /dev/null and b/icons/mob/metroid/large.dmi differ
diff --git a/icons/mob/metroid/queen.dmi b/icons/mob/metroid/queen.dmi
new file mode 100644
index 0000000000..643ca16a1e
Binary files /dev/null and b/icons/mob/metroid/queen.dmi differ
diff --git a/icons/mob/metroid/small.dmi b/icons/mob/metroid/small.dmi
index ec5ccf7765..40fcefd079 100644
Binary files a/icons/mob/metroid/small.dmi and b/icons/mob/metroid/small.dmi differ
diff --git a/icons/mob/vore.dmi b/icons/mob/vore.dmi
index 6fdde5f24b..94a17fdd07 100644
Binary files a/icons/mob/vore.dmi and b/icons/mob/vore.dmi differ
diff --git a/maps/northern_star/polaris-1.dmm b/maps/northern_star/polaris-1.dmm
index f992eb58e1..2fc103a967 100644
--- a/maps/northern_star/polaris-1.dmm
+++ b/maps/northern_star/polaris-1.dmm
@@ -7460,8 +7460,8 @@
"cNx" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor/tiled/steel,/area/quartermaster/warehouse)
"cNy" = (/obj/effect/floor_decal/corner/brown,/turf/simulated/floor/tiled/steel,/area/quartermaster/warehouse)
"cNz" = (/obj/structure/closet/crate,/obj/effect/floor_decal/corner/brown/full{dir = 4},/turf/simulated/floor/tiled/steel,/area/quartermaster/warehouse)
-"cNA" = (/obj/structure/grille,/obj/structure/grille,/turf/simulated/wall/r_wall,/area/engineering/atmos)
-"cNB" = (/obj/structure/grille,/turf/simulated/wall/r_wall,/area/engineering/atmos)
+"cNA" = (/turf/space,/obj/structure/shuttle/engine/propulsion{dir = 8; icon_state = "propulsion_l"},/turf/simulated/shuttle/plating/airless/carry,/area/shuttle/large_escape_pod1/station)
+"cNB" = (/turf/space,/obj/structure/shuttle/engine/propulsion{dir = 8},/turf/simulated/shuttle/plating/airless/carry,/area/shuttle/large_escape_pod1/station)
"cNC" = (/turf/simulated/wall/r_wall,/area/engineering/atmos/storage)
"cND" = (/turf/simulated/wall,/area/engineering/atmos/storage)
"cNE" = (/obj/machinery/door/airlock/maintenance{name = "Atmospherics Maintenance Access"; req_access = list(10,12)},/obj/machinery/door/firedoor/border_only,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/engineering/atmos/storage)
@@ -7526,8 +7526,8 @@
"cOL" = (/turf/simulated/floor/tiled/steel,/area/quartermaster/warehouse)
"cOM" = (/obj/structure/closet/crate/internals,/obj/machinery/light/small,/turf/simulated/floor/tiled/steel,/area/quartermaster/warehouse)
"cON" = (/obj/structure/closet/crate/freezer,/obj/effect/floor_decal/corner/brown/full{dir = 4},/turf/simulated/floor/tiled/steel,/area/quartermaster/warehouse)
-"cOO" = (/turf/simulated/floor/reinforced/airless,/area/engineering/atmos)
-"cOP" = (/obj/machinery/camera/network/engineering{c_tag = "Atmos Tank - Gas Mixing"; dir = 2},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/reinforced/airless,/area/engineering/atmos)
+"cOO" = (/turf/space,/obj/structure/shuttle/engine/propulsion{dir = 8; icon_state = "propulsion_r"},/turf/simulated/shuttle/plating/airless/carry,/area/shuttle/large_escape_pod1/station)
+"cOP" = (/obj/structure/grille,/obj/structure/grille,/turf/simulated/wall/r_wall,/area/engineering/atmos/storage)
"cOQ" = (/obj/machinery/power/breakerbox/activated{RCon_tag = "Atmos Substation Bypass"},/turf/simulated/floor,/area/engineering/atmos/storage)
"cOR" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/engineering/atmos/storage)
"cOS" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/engineering/atmos/storage)
@@ -7552,7 +7552,7 @@
"cPl" = (/obj/effect/floor_decal/corner/red{dir = 10},/obj/machinery/light,/turf/simulated/floor/tiled,/area/security/checkpoint2)
"cPm" = (/obj/effect/floor_decal/corner/red/full{dir = 4},/obj/structure/table/reinforced,/obj/item/weapon/crowbar,/obj/item/device/flash,/obj/machinery/camera/network/security{c_tag = "SEC - Arrival Checkpoint"; dir = 1},/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/turf/simulated/floor/tiled,/area/security/checkpoint2)
"cPn" = (/obj/effect/floor_decal/industrial/outline/yellow,/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/tiled,/area/hallway/secondary/docking_hallway)
-"cPo" = (/turf/space,/obj/structure/shuttle/engine/propulsion{dir = 8; icon_state = "propulsion_l"},/turf/simulated/shuttle/plating/airless/carry,/area/shuttle/large_escape_pod1/station)
+"cPo" = (/obj/structure/grille,/turf/simulated/wall/r_wall,/area/engineering/atmos/storage)
"cPp" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/hallway/secondary/docking_hallway)
"cPq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/navbeacon/patrol{location = "CH39"; next_patrol = "CH40"},/turf/simulated/floor/tiled,/area/hallway/primary/central_three)
"cPr" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/hallway/secondary/docking_hallway)
@@ -7616,7 +7616,7 @@
"cQx" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/dark,/area/ai_monitored/storage/eva)
"cQy" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 4},/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/tiled,/area/ai_monitored/storage/eva)
"cQz" = (/obj/structure/table/woodentable,/obj/item/weapon/material/ashtray/glass,/obj/machinery/computer/security/telescreen/entertainment{icon_state = "frame"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/carpet,/area/crew_quarters/longue_area)
-"cQA" = (/turf/space,/obj/structure/shuttle/engine/propulsion{dir = 8},/turf/simulated/shuttle/plating/airless/carry,/area/shuttle/large_escape_pod1/station)
+"cQA" = (/turf/simulated/floor/reinforced/airless,/area/engineering/atmos/storage)
"cQB" = (/turf/simulated/wall,/area/hallway/secondary/entry/docking_lounge)
"cQC" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/entry/docking_lounge)
"cQD" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/secondary/entry/docking_lounge)
@@ -7660,9 +7660,9 @@
"cRp" = (/obj/machinery/door/airlock{name = "Restroom"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_2)
"cRq" = (/obj/machinery/door/airlock{name = "Restroom"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_7)
"cRr" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_8)
-"cRs" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 2; frequency = 1441; icon_state = "map_injector"; id = "waste_in"; pixel_y = 1; use_power = 1},/turf/simulated/floor/reinforced/airless,/area/engineering/atmos)
-"cRt" = (/obj/machinery/air_sensor{frequency = 1441; id_tag = "waste_sensor"; output = 63},/turf/simulated/floor/reinforced/airless,/area/engineering/atmos)
-"cRu" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; external_pressure_bound = 0; external_pressure_bound_default = 0; frequency = 1441; icon_state = "map_vent_in"; id_tag = "waste_out"; initialize_directions = 1; internal_pressure_bound = 4000; internal_pressure_bound_default = 4000; pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0; use_power = 1},/turf/simulated/floor/reinforced/airless,/area/engineering/atmos)
+"cRs" = (/obj/machinery/camera/network/engineering{c_tag = "Atmos Tank - Gas Mixing"; dir = 2},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/reinforced/airless,/area/engineering/atmos/storage)
+"cRt" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 2; frequency = 1441; icon_state = "map_injector"; id = "waste_in"; pixel_y = 1; use_power = 1},/turf/simulated/floor/reinforced/airless,/area/engineering/atmos/storage)
+"cRu" = (/obj/machinery/air_sensor{frequency = 1441; id_tag = "waste_sensor"; output = 63},/turf/simulated/floor/reinforced/airless,/area/engineering/atmos/storage)
"cRv" = (/obj/structure/cable/cyan{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/light/small{dir = 8},/turf/simulated/floor,/area/engineering/atmos/storage)
"cRw" = (/obj/effect/floor_decal/industrial/warning/corner{dir = 8},/obj/structure/cable/green,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/machinery/power/sensor{name = "Powernet Sensor - Dock Subgrid"; name_tag = "Dock Subgrid"},/obj/machinery/camera/network/engineering{c_tag = "SUBSTATION - Docks"; dir = 8},/turf/simulated/floor,/area/maintenance/substation/dock)
"cRx" = (/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/engineering/atmos/storage)
@@ -7736,9 +7736,9 @@
"cSN" = (/obj/structure/bed/chair/comfy/beige{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_8)
"cSO" = (/obj/structure/table/standard,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/machinery/computer/security/telescreen/entertainment{icon_state = "frame"; pixel_x = 0; pixel_y = -32},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_8)
"cSP" = (/obj/structure/bed/chair/comfy/beige{dir = 8},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_8)
-"cSQ" = (/obj/structure/grille,/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/visible/green,/turf/simulated/wall/r_wall,/area/engineering/atmos)
-"cSR" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast/regular/open{id = "atmoslockdown"; name = "Atmospherics Lockdown"; opacity = 0},/turf/simulated/floor/plating,/area/engineering/atmos)
-"cSS" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/visible/yellow,/obj/machinery/meter,/turf/simulated/wall/r_wall,/area/engineering/atmos)
+"cSQ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; external_pressure_bound = 0; external_pressure_bound_default = 0; frequency = 1441; icon_state = "map_vent_in"; id_tag = "waste_out"; initialize_directions = 1; internal_pressure_bound = 4000; internal_pressure_bound_default = 4000; pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0; use_power = 1},/turf/simulated/floor/reinforced/airless,/area/engineering/atmos/storage)
+"cSR" = (/obj/structure/grille,/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/visible/green,/turf/simulated/wall/r_wall,/area/engineering/atmos/storage)
+"cSS" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast/regular/open{id = "atmoslockdown"; name = "Atmospherics Lockdown"; opacity = 0},/turf/simulated/floor/plating,/area/engineering/atmos/storage)
"cST" = (/turf/simulated/wall/r_wall,/area/engineering/atmos)
"cSU" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/atmos{name = "Atmospherics Maintenance"; req_access = list(24)},/obj/machinery/door/firedoor/border_only,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/engineering/atmos)
"cSV" = (/obj/machinery/door/airlock/atmos{name = "Atmospherics Maintenance"; req_access = list(24)},/obj/machinery/door/firedoor/border_only,/obj/structure/disposalpipe/segment,/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/engineering/atmos)
@@ -8145,9 +8145,9 @@
"daG" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/tiled,/area/crew_quarters/visitor_lodging)
"daH" = (/obj/machinery/door/firedoor/glass,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/crew_quarters/visitor_lodging)
"daI" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/tiled,/area/crew_quarters/visitor_lodging)
-"daJ" = (/turf/simulated/floor/reinforced/airmix,/area/engineering/atmos)
-"daK" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 4; frequency = 1443; icon_state = "map_injector"; id = "air_in"; use_power = 1},/turf/simulated/floor/reinforced/airmix,/area/engineering/atmos)
-"daL" = (/obj/structure/grille,/obj/machinery/meter{frequency = 1443; id = "mair_in_meter"; name = "Mixed Air Tank In"},/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; icon_state = "intact"},/turf/simulated/wall/r_wall,/area/engineering/atmos)
+"daJ" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/visible/yellow,/obj/machinery/meter,/turf/simulated/wall/r_wall,/area/engineering/atmos/storage)
+"daK" = (/turf/simulated/floor/reinforced/airmix,/area/engineering/atmos/storage)
+"daL" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 4; frequency = 1443; icon_state = "map_injector"; id = "air_in"; use_power = 1},/turf/simulated/floor/reinforced/airmix,/area/engineering/atmos/storage)
"daM" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; icon_state = "intact"},/obj/structure/lattice,/turf/simulated/mineral/floor/ignore_mapgen,/area/mine/explored/upper_level)
"daN" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; icon_state = "intact"},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/blast/regular{density = 0; dir = 1; icon_state = "pdoor0"; id = "atmoslockdown"; name = "Atmospherics Lockdown"; opacity = 0},/turf/simulated/floor,/area/engineering/atmos)
"daO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/valve/digital/open{dir = 4; name = "Mixed Air Inlet Valve"},/obj/effect/floor_decal/corner/white{icon_state = "corner_white"; dir = 1},/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/turf/simulated/floor/tiled,/area/engineering/atmos)
@@ -8189,9 +8189,9 @@
"dby" = (/obj/machinery/door/airlock/glass,/turf/simulated/floor/tiled,/area/crew_quarters/visitor_lodging)
"dbz" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/glass,/turf/simulated/floor/tiled,/area/crew_quarters/visitor_lodging)
"dbA" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/glass,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/crew_quarters/visitor_lodging)
-"dbB" = (/obj/machinery/light/small{dir = 8},/obj/machinery/camera/network/engineering{c_tag = "Atmos Tank - Air"; dir = 4},/turf/simulated/floor/reinforced/airmix,/area/engineering/atmos)
-"dbC" = (/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/reinforced/airmix,/area/engineering/atmos)
-"dbD" = (/obj/machinery/air_sensor{frequency = 1443; id_tag = "air_sensor"; output = 7},/turf/simulated/floor/reinforced/airmix,/area/engineering/atmos)
+"dbB" = (/obj/structure/grille,/obj/machinery/meter{frequency = 1443; id = "mair_in_meter"; name = "Mixed Air Tank In"},/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; icon_state = "intact"},/turf/simulated/wall/r_wall,/area/engineering/atmos/storage)
+"dbC" = (/obj/machinery/light/small{dir = 8},/obj/machinery/camera/network/engineering{c_tag = "Atmos Tank - Air"; dir = 4},/turf/simulated/floor/reinforced/airmix,/area/engineering/atmos/storage)
+"dbD" = (/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/reinforced/airmix,/area/engineering/atmos/storage)
"dbE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1443; input_tag = "air_in"; name = "Mixed Air Supply Control"; output_tag = "air_out"; pressure_setting = 2000; sensors = list("air_sensor" = "Tank")},/obj/effect/floor_decal/corner/white{icon_state = "corner_white"; dir = 1},/obj/effect/floor_decal/corner/blue{dir = 8},/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/floor/tiled,/area/engineering/atmos)
"dbF" = (/obj/machinery/atmospherics/binary/pump{dir = 2; name = "Air Tank Bypass Pump"},/turf/simulated/floor/tiled,/area/engineering/atmos)
"dbG" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/turf/simulated/floor/tiled,/area/engineering/atmos)
@@ -8242,8 +8242,8 @@
"dcz" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/tiled,/area/hallway/secondary/entry/starboard)
"dcA" = (/obj/machinery/door/firedoor/glass,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/starboard)
"dcB" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/tiled,/area/hallway/secondary/entry/starboard)
-"dcC" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; external_pressure_bound = 0; external_pressure_bound_default = 0; frequency = 1443; icon_state = "map_vent_in"; id_tag = "air_out"; internal_pressure_bound = 2000; internal_pressure_bound_default = 2000; pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0; use_power = 1},/turf/simulated/floor/reinforced/airmix,/area/engineering/atmos)
-"dcD" = (/obj/structure/grille,/obj/machinery/meter{frequency = 1443; id = "mair_out_meter"; name = "Mixed Air Tank Out"},/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; icon_state = "intact"},/turf/simulated/wall/r_wall,/area/engineering/atmos)
+"dcC" = (/obj/machinery/air_sensor{frequency = 1443; id_tag = "air_sensor"; output = 7},/turf/simulated/floor/reinforced/airmix,/area/engineering/atmos/storage)
+"dcD" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; external_pressure_bound = 0; external_pressure_bound_default = 0; frequency = 1443; icon_state = "map_vent_in"; id_tag = "air_out"; internal_pressure_bound = 2000; internal_pressure_bound_default = 2000; pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0; use_power = 1},/turf/simulated/floor/reinforced/airmix,/area/engineering/atmos/storage)
"dcE" = (/obj/machinery/atmospherics/pipe/manifold/visible/cyan{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/blast/regular{density = 0; dir = 1; icon_state = "pdoor0"; id = "atmoslockdown"; name = "Atmospherics Lockdown"; opacity = 0},/turf/simulated/floor,/area/engineering/atmos)
"dcF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/valve/digital/open{dir = 4; name = "Mixed Air Outlet Valve"},/obj/effect/floor_decal/corner/white/diagonal,/obj/effect/floor_decal/corner/blue{dir = 8},/turf/simulated/floor/tiled,/area/engineering/atmos)
"dcG" = (/obj/machinery/atmospherics/pipe/manifold/visible/cyan,/obj/machinery/meter,/turf/simulated/floor/tiled,/area/engineering/atmos)
@@ -8388,9 +8388,9 @@
"dfp" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/machinery/atmospherics/pipe/simple/hidden{icon_state = "intact"; dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/starboard)
"dfq" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; icon_state = "intact"},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/starboard)
"dfr" = (/obj/machinery/camera/network/northern_star{c_tag = "DOCK - Hallway Starboard 3"},/turf/simulated/floor/tiled/dark,/area/hallway/secondary/entry/D4)
-"dfs" = (/turf/simulated/floor/reinforced/oxygen,/area/engineering/atmos)
-"dft" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 4; frequency = 1441; icon_state = "map_injector"; id = "o2_in"; use_power = 1},/turf/simulated/floor/reinforced/oxygen,/area/engineering/atmos)
-"dfu" = (/obj/structure/grille,/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/visible/red{icon_state = "intact"; dir = 4},/turf/simulated/wall/r_wall,/area/engineering/atmos)
+"dfs" = (/obj/structure/grille,/obj/machinery/meter{frequency = 1443; id = "mair_out_meter"; name = "Mixed Air Tank Out"},/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; icon_state = "intact"},/turf/simulated/wall/r_wall,/area/engineering/atmos/storage)
+"dft" = (/turf/simulated/floor/reinforced/oxygen,/area/engineering/atmos/storage)
+"dfu" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 4; frequency = 1441; icon_state = "map_injector"; id = "o2_in"; use_power = 1},/turf/simulated/floor/reinforced/oxygen,/area/engineering/atmos/storage)
"dfv" = (/obj/machinery/atmospherics/pipe/simple/visible/red{icon_state = "intact"; dir = 4},/obj/structure/lattice,/turf/simulated/mineral/floor/ignore_mapgen,/area/mine/explored/upper_level)
"dfw" = (/obj/machinery/atmospherics/pipe/simple/visible/red{icon_state = "intact"; dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/blast/regular{density = 0; dir = 1; icon_state = "pdoor0"; id = "atmoslockdown"; name = "Atmospherics Lockdown"; opacity = 0},/turf/simulated/floor,/area/engineering/atmos)
"dfx" = (/obj/machinery/atmospherics/pipe/simple/visible/red{icon_state = "intact"; dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/floor_decal/corner/blue/full{dir = 8},/obj/machinery/camera/network/engineering{c_tag = "ENG - Atmospherics Port"; dir = 4},/turf/simulated/floor/tiled,/area/engineering/atmos)
@@ -8456,9 +8456,9 @@
"dgF" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/navbeacon/patrol{location = "CH49"; next_patrol = "CH50"},/turf/simulated/floor/tiled,/area/quartermaster/foyer)
"dgG" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/navbeacon/patrol{location = "CH52"; next_patrol = "CH53"},/turf/simulated/floor/tiled,/area/quartermaster/foyer)
"dgH" = (/turf/simulated/floor/tiled/dark,/area/hallway/secondary/entry/starboard)
-"dgI" = (/obj/machinery/light/small{dir = 8},/obj/machinery/camera/network/engineering{c_tag = "Atmos Tank - Oxygen"; dir = 4},/turf/simulated/floor/reinforced/oxygen,/area/engineering/atmos)
-"dgJ" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/reinforced/oxygen,/area/engineering/atmos)
-"dgK" = (/obj/machinery/air_sensor{frequency = 1441; id_tag = "o2_sensor"},/turf/simulated/floor/reinforced/oxygen,/area/engineering/atmos)
+"dgI" = (/obj/structure/grille,/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/visible/red{icon_state = "intact"; dir = 4},/turf/simulated/wall/r_wall,/area/engineering/atmos/storage)
+"dgJ" = (/obj/machinery/light/small{dir = 8},/obj/machinery/camera/network/engineering{c_tag = "Atmos Tank - Oxygen"; dir = 4},/turf/simulated/floor/reinforced/oxygen,/area/engineering/atmos/storage)
+"dgK" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/reinforced/oxygen,/area/engineering/atmos/storage)
"dgL" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "o2_in"; name = "Oxygen Supply Control"; output_tag = "o2_out"; sensors = list("o2_sensor" = "Tank")},/obj/effect/floor_decal/corner/blue{dir = 9},/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/floor/tiled,/area/engineering/atmos)
"dgM" = (/obj/machinery/atmospherics/pipe/simple/visible/green{icon_state = "intact"; dir = 6},/turf/simulated/floor/tiled,/area/engineering/atmos)
"dgN" = (/obj/machinery/atmospherics/pipe/simple/visible/green{icon_state = "intact"; dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/cyan,/turf/simulated/floor/tiled,/area/engineering/atmos)
@@ -8529,8 +8529,8 @@
"dia" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/starboard)
"dib" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/tiled,/area/hallway/secondary/entry/starboard)
"dic" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/item/weapon/caution/cone,/turf/simulated/floor/tiled/dark,/area/hallway/secondary/entry/starboard)
-"did" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; external_pressure_bound = 0; external_pressure_bound_default = 0; frequency = 1441; icon_state = "map_vent_in"; id_tag = "o2_out"; initialize_directions = 1; internal_pressure_bound = 4000; internal_pressure_bound_default = 4000; pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0; use_power = 1},/turf/simulated/floor/reinforced/oxygen,/area/engineering/atmos)
-"die" = (/obj/structure/grille,/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/visible/green{icon_state = "intact"; dir = 4},/turf/simulated/wall/r_wall,/area/engineering/atmos)
+"did" = (/obj/machinery/air_sensor{frequency = 1441; id_tag = "o2_sensor"},/turf/simulated/floor/reinforced/oxygen,/area/engineering/atmos/storage)
+"die" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; external_pressure_bound = 0; external_pressure_bound_default = 0; frequency = 1441; icon_state = "map_vent_in"; id_tag = "o2_out"; initialize_directions = 1; internal_pressure_bound = 4000; internal_pressure_bound_default = 4000; pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0; use_power = 1},/turf/simulated/floor/reinforced/oxygen,/area/engineering/atmos/storage)
"dif" = (/obj/machinery/atmospherics/pipe/simple/visible/green{icon_state = "intact"; dir = 4},/obj/structure/lattice,/turf/simulated/mineral/floor/ignore_mapgen,/area/mine/explored/upper_level)
"dig" = (/obj/machinery/atmospherics/pipe/manifold/visible/green{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/blast/regular{density = 0; dir = 1; icon_state = "pdoor0"; id = "atmoslockdown"; name = "Atmospherics Lockdown"; opacity = 0},/turf/simulated/floor,/area/engineering/atmos)
"dih" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/valve/digital/open{dir = 4; name = "Oxygen Outlet Valve"},/obj/effect/floor_decal/corner/blue/full,/turf/simulated/floor/tiled,/area/engineering/atmos)
@@ -8652,8 +8652,8 @@
"dkt" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D4)
"dku" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D4)
"dkv" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D4)
-"dkw" = (/turf/simulated/floor/reinforced/nitrogen,/area/engineering/atmos)
-"dkx" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 4; frequency = 1441; icon_state = "map_injector"; id = "n2_in"; use_power = 1},/turf/simulated/floor/reinforced/nitrogen,/area/engineering/atmos)
+"dkw" = (/obj/structure/grille,/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/visible/green{icon_state = "intact"; dir = 4},/turf/simulated/wall/r_wall,/area/engineering/atmos/storage)
+"dkx" = (/turf/simulated/floor/reinforced/nitrogen,/area/engineering/atmos/storage)
"dky" = (/obj/machinery/atmospherics/pipe/simple/visible/red{icon_state = "intact"; dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/floor_decal/corner/red/full{dir = 8},/turf/simulated/floor/tiled,/area/engineering/atmos)
"dkz" = (/obj/machinery/atmospherics/pipe/simple/visible/red{icon_state = "intact"; dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/green,/turf/simulated/floor/tiled,/area/engineering/atmos)
"dkA" = (/obj/machinery/atmospherics/omni/atmos_filter{tag_east = 1; tag_north = 2; tag_south = 5; tag_west = 4; use_power = 1},/turf/simulated/floor/tiled,/area/engineering/atmos)
@@ -8701,9 +8701,9 @@
"dlq" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/hallway/secondary/entry/D4)
"dlr" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D4)
"dls" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D4)
-"dlt" = (/obj/machinery/light/small{dir = 8},/obj/machinery/camera/network/engineering{c_tag = "Atmos Tank - Nitrogen"; dir = 4},/turf/simulated/floor/reinforced/nitrogen,/area/engineering/atmos)
-"dlu" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/turf/simulated/floor/reinforced/nitrogen,/area/engineering/atmos)
-"dlv" = (/obj/machinery/air_sensor{frequency = 1441; id_tag = "n2_sensor"},/turf/simulated/floor/reinforced/nitrogen,/area/engineering/atmos)
+"dlt" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 4; frequency = 1441; icon_state = "map_injector"; id = "n2_in"; use_power = 1},/turf/simulated/floor/reinforced/nitrogen,/area/engineering/atmos/storage)
+"dlu" = (/obj/machinery/light/small{dir = 8},/obj/machinery/camera/network/engineering{c_tag = "Atmos Tank - Nitrogen"; dir = 4},/turf/simulated/floor/reinforced/nitrogen,/area/engineering/atmos/storage)
+"dlv" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/turf/simulated/floor/reinforced/nitrogen,/area/engineering/atmos/storage)
"dlw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "n2_in"; name = "Nitrogen Supply Control"; output_tag = "n2_out"; sensors = list("n2_sensor" = "Tank")},/obj/effect/floor_decal/corner/red{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/floor/tiled,/area/engineering/atmos)
"dlx" = (/obj/machinery/atmospherics/pipe/simple/visible/red{icon_state = "intact"; dir = 4},/obj/machinery/meter,/turf/simulated/floor/tiled,/area/engineering/atmos)
"dly" = (/obj/machinery/atmospherics/omni/atmos_filter{tag_east = 1; tag_north = 0; tag_south = 6; tag_west = 2; use_power = 1},/turf/simulated/floor/tiled,/area/engineering/atmos)
@@ -8749,7 +8749,7 @@
"dmm" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden,/obj/effect/floor_decal/corner/white{dir = 9; icon_state = "corner_white"},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D4)
"dmn" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/floor_decal/corner/white{dir = 9; icon_state = "corner_white"},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D4)
"dmo" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/newscaster{pixel_x = 31; pixel_y = 3},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D4)
-"dmp" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; external_pressure_bound = 0; external_pressure_bound_default = 0; frequency = 1441; icon_state = "map_vent_in"; id_tag = "n2_out"; initialize_directions = 1; internal_pressure_bound = 4000; internal_pressure_bound_default = 4000; pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0; use_power = 1},/turf/simulated/floor/reinforced/nitrogen,/area/engineering/atmos)
+"dmp" = (/obj/machinery/air_sensor{frequency = 1441; id_tag = "n2_sensor"},/turf/simulated/floor/reinforced/nitrogen,/area/engineering/atmos/storage)
"dmq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/valve/digital/open{dir = 4; name = "Nitrogen Outlet Valve"},/obj/effect/floor_decal/corner/red/full,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/engineering/atmos)
"dmr" = (/obj/machinery/atmospherics/pipe/simple/visible/green{dir = 9; icon_state = "intact"},/obj/machinery/meter,/turf/simulated/floor/tiled,/area/engineering/atmos)
"dms" = (/obj/machinery/atmospherics/pipe/simple/visible/green{dir = 5; icon_state = "intact"},/turf/simulated/floor/tiled,/area/engineering/atmos)
@@ -8925,7 +8925,7 @@
"dpG" = (/turf/simulated/wall/r_wall,/area/engineering/storage)
"dpH" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/light/small{dir = 4},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22; pixel_y = 0},/turf/simulated/floor,/area/maintenance/engineering)
"dpI" = (/obj/machinery/atmospherics/pipe/simple/visible/red,/obj/structure/lattice,/turf/space,/area/space)
-"dpJ" = (/obj/structure/grille,/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/visible/red,/turf/simulated/wall/r_wall,/area/engineering/atmos)
+"dpJ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; external_pressure_bound = 0; external_pressure_bound_default = 0; frequency = 1441; icon_state = "map_vent_in"; id_tag = "n2_out"; initialize_directions = 1; internal_pressure_bound = 4000; internal_pressure_bound_default = 4000; pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0; use_power = 1},/turf/simulated/floor/reinforced/nitrogen,/area/engineering/atmos/storage)
"dpK" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/sign/nosmoking_1{pixel_x = -32},/obj/effect/floor_decal/industrial/warning{dir = 1},/turf/simulated/floor,/area/maintenance/atmos_control)
"dpL" = (/obj/structure/closet/crate,/obj/item/weapon/deck/tarot,/obj/item/weapon/coin/gold,/obj/item/weapon/storage/fancy/cigarettes/dromedaryco,/obj/item/weapon/flame/lighter/zippo,/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/obj/random/maintenance/engineering,/obj/random/maintenance/engineering,/turf/simulated/floor,/area/maintenance/atmos_control)
"dpM" = (/turf/simulated/wall/r_wall,/area/engineering/drone_fabrication)
@@ -8952,15 +8952,15 @@
"dqh" = (/obj/structure/table/standard,/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2)
"dqi" = (/obj/structure/table/standard,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2)
"dqj" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; external_pressure_bound = 140; external_pressure_bound_default = 140; icon_state = "map_vent_out"; pressure_checks = 1; pressure_checks_default = 1; use_power = 1},/obj/machinery/shield_diffuser,/turf/simulated/floor/airless,/area/engineering/atmos)
-"dqk" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 1; frequency = 1441; icon_state = "map_injector"; id = "co2_in"; use_power = 1; pixel_y = 1},/turf/simulated/floor/reinforced/carbon_dioxide,/area/engineering/atmos)
-"dql" = (/obj/machinery/air_sensor{frequency = 1441; id_tag = "co2_sensor"},/turf/simulated/floor/reinforced/carbon_dioxide,/area/engineering/atmos)
-"dqm" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 0; external_pressure_bound_default = 0; frequency = 1441; icon_state = "map_vent_in"; id_tag = "co2_out"; initialize_directions = 1; internal_pressure_bound = 4000; internal_pressure_bound_default = 4000; use_power = 1; pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0},/turf/simulated/floor/reinforced/carbon_dioxide,/area/engineering/atmos)
-"dqn" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 1; frequency = 1441; icon_state = "map_injector"; id = "tox_in"; use_power = 1; pixel_y = 1},/turf/simulated/floor/reinforced/phoron,/area/engineering/atmos)
-"dqo" = (/obj/machinery/air_sensor{frequency = 1441; id_tag = "tox_sensor"},/turf/simulated/floor/reinforced/phoron,/area/engineering/atmos)
-"dqp" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 0; external_pressure_bound_default = 0; frequency = 1441; icon_state = "map_vent_in"; id_tag = "tox_out"; initialize_directions = 1; internal_pressure_bound = 4000; internal_pressure_bound_default = 4000; use_power = 1; pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0},/turf/simulated/floor/reinforced/phoron,/area/engineering/atmos)
-"dqq" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 1; frequency = 1441; icon_state = "map_injector"; id = "n2o_in"; use_power = 1; pixel_y = 1},/turf/simulated/floor/reinforced/n20,/area/engineering/atmos)
-"dqr" = (/obj/machinery/air_sensor{frequency = 1441; id_tag = "n2o_sensor"},/turf/simulated/floor/reinforced/n20,/area/engineering/atmos)
-"dqs" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 0; external_pressure_bound_default = 0; frequency = 1441; icon_state = "map_vent_in"; id_tag = "n2o_out"; initialize_directions = 1; internal_pressure_bound = 4000; internal_pressure_bound_default = 4000; use_power = 1; pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0},/turf/simulated/floor/reinforced/n20,/area/engineering/atmos)
+"dqk" = (/obj/structure/grille,/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/visible/red,/turf/simulated/wall/r_wall,/area/engineering/atmos/storage)
+"dql" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 1; frequency = 1441; icon_state = "map_injector"; id = "co2_in"; use_power = 1; pixel_y = 1},/turf/simulated/floor/reinforced/carbon_dioxide,/area/engineering/atmos/storage)
+"dqm" = (/obj/machinery/air_sensor{frequency = 1441; id_tag = "co2_sensor"},/turf/simulated/floor/reinforced/carbon_dioxide,/area/engineering/atmos/storage)
+"dqn" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 0; external_pressure_bound_default = 0; frequency = 1441; icon_state = "map_vent_in"; id_tag = "co2_out"; initialize_directions = 1; internal_pressure_bound = 4000; internal_pressure_bound_default = 4000; use_power = 1; pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0},/turf/simulated/floor/reinforced/carbon_dioxide,/area/engineering/atmos/storage)
+"dqo" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 1; frequency = 1441; icon_state = "map_injector"; id = "tox_in"; use_power = 1; pixel_y = 1},/turf/simulated/floor/reinforced/phoron,/area/engineering/atmos/storage)
+"dqp" = (/obj/machinery/air_sensor{frequency = 1441; id_tag = "tox_sensor"},/turf/simulated/floor/reinforced/phoron,/area/engineering/atmos/storage)
+"dqq" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 0; external_pressure_bound_default = 0; frequency = 1441; icon_state = "map_vent_in"; id_tag = "tox_out"; initialize_directions = 1; internal_pressure_bound = 4000; internal_pressure_bound_default = 4000; use_power = 1; pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0},/turf/simulated/floor/reinforced/phoron,/area/engineering/atmos/storage)
+"dqr" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 1; frequency = 1441; icon_state = "map_injector"; id = "n2o_in"; use_power = 1; pixel_y = 1},/turf/simulated/floor/reinforced/n20,/area/engineering/atmos/storage)
+"dqs" = (/obj/machinery/air_sensor{frequency = 1441; id_tag = "n2o_sensor"},/turf/simulated/floor/reinforced/n20,/area/engineering/atmos/storage)
"dqt" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light/small{dir = 8},/turf/simulated/floor,/area/maintenance/atmos_control)
"dqu" = (/obj/item/weapon/stool/padded,/turf/simulated/floor,/area/maintenance/atmos_control)
"dqv" = (/obj/machinery/recharge_station,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/plating,/area/engineering/drone_fabrication)
@@ -9011,12 +9011,12 @@
"dro" = (/obj/machinery/power/solar{id = "portsolar"; name = "Port Solar Array"},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/airless{icon_state = "solarpanel"},/area/solar/port)
"drp" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/catwalk,/turf/simulated/floor/airless,/area/solar/port)
"drq" = (/obj/machinery/power/solar{id = "portsolar"; name = "Port Solar Array"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/airless{icon_state = "solarpanel"},/area/solar/port)
-"drr" = (/turf/simulated/floor/reinforced/carbon_dioxide,/area/engineering/atmos)
-"drs" = (/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/turf/simulated/floor/reinforced/carbon_dioxide,/area/engineering/atmos)
-"drt" = (/turf/simulated/floor/reinforced/phoron,/area/engineering/atmos)
-"dru" = (/obj/machinery/portable_atmospherics/canister/phoron,/turf/simulated/floor/reinforced/phoron,/area/engineering/atmos)
-"drv" = (/turf/simulated/floor/reinforced/n20,/area/engineering/atmos)
-"drw" = (/obj/machinery/portable_atmospherics/canister/sleeping_agent,/turf/simulated/floor/reinforced/n20,/area/engineering/atmos)
+"drr" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 0; external_pressure_bound_default = 0; frequency = 1441; icon_state = "map_vent_in"; id_tag = "n2o_out"; initialize_directions = 1; internal_pressure_bound = 4000; internal_pressure_bound_default = 4000; use_power = 1; pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0},/turf/simulated/floor/reinforced/n20,/area/engineering/atmos/storage)
+"drs" = (/turf/simulated/floor/reinforced/carbon_dioxide,/area/engineering/atmos/storage)
+"drt" = (/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/turf/simulated/floor/reinforced/carbon_dioxide,/area/engineering/atmos/storage)
+"dru" = (/turf/simulated/floor/reinforced/phoron,/area/engineering/atmos/storage)
+"drv" = (/obj/machinery/portable_atmospherics/canister/phoron,/turf/simulated/floor/reinforced/phoron,/area/engineering/atmos/storage)
+"drw" = (/turf/simulated/floor/reinforced/n20,/area/engineering/atmos/storage)
"drx" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/maintenance/atmos_control)
"dry" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor,/area/maintenance/atmos_control)
"drz" = (/turf/simulated/floor,/area/engineering/drone_fabrication)
@@ -9073,9 +9073,9 @@
"dsy" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4; icon_state = "map"},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "dock_four_fore_airlock"; name = "interior access button"; pixel_x = -26; pixel_y = 26; req_one_access = list(13)},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D4)
"dsz" = (/obj/machinery/vending/snack,/turf/simulated/floor/tiled/dark,/area/hallway/secondary/entry/D4)
"dsA" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/catwalk,/turf/simulated/floor/airless,/area/solar/port)
-"dsB" = (/obj/machinery/light/small,/obj/machinery/camera/network/engineering{c_tag = "Atmospherics Tank - Carbon Dioxide"; dir = 1},/turf/simulated/floor/reinforced/carbon_dioxide,/area/engineering/atmos)
-"dsC" = (/obj/machinery/light/small,/obj/machinery/camera/network/engineering{c_tag = "Atmospherics Tank - Phoron"; dir = 1},/turf/simulated/floor/reinforced/phoron,/area/engineering/atmos)
-"dsD" = (/obj/machinery/light/small,/obj/machinery/camera/network/engineering{c_tag = "Atmospherics Tank - Nitrous Oxide"; dir = 1},/turf/simulated/floor/reinforced/n20,/area/engineering/atmos)
+"dsB" = (/obj/machinery/portable_atmospherics/canister/sleeping_agent,/turf/simulated/floor/reinforced/n20,/area/engineering/atmos/storage)
+"dsC" = (/obj/machinery/light/small,/obj/machinery/camera/network/engineering{c_tag = "Atmospherics Tank - Carbon Dioxide"; dir = 1},/turf/simulated/floor/reinforced/carbon_dioxide,/area/engineering/atmos/storage)
+"dsD" = (/obj/machinery/light/small,/obj/machinery/camera/network/engineering{c_tag = "Atmospherics Tank - Phoron"; dir = 1},/turf/simulated/floor/reinforced/phoron,/area/engineering/atmos/storage)
"dsE" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/maintenance/atmos_control)
"dsF" = (/turf/simulated/floor,/area/maintenance/atmos_control)
"dsG" = (/obj/effect/floor_decal/industrial/warning{dir = 8},/turf/simulated/floor,/area/engineering/drone_fabrication)
@@ -9516,7 +9516,7 @@
"dAZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1)
"dBa" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2)
"dBb" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3)
-"dBc" = (/turf/space,/obj/structure/shuttle/engine/propulsion{dir = 8; icon_state = "propulsion_r"},/turf/simulated/shuttle/plating/airless/carry,/area/shuttle/large_escape_pod1/station)
+"dBc" = (/obj/machinery/light/small,/obj/machinery/camera/network/engineering{c_tag = "Atmospherics Tank - Nitrous Oxide"; dir = 1},/turf/simulated/floor/reinforced/n20,/area/engineering/atmos/storage)
"dBd" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D4)
"dBe" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 28},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D4)
"dBf" = (/obj/machinery/light/small{dir = 8},/obj/effect/floor_decal/industrial/warning{dir = 10},/turf/simulated/floor,/area/shuttle/escape_pod4/station)
@@ -10372,11 +10372,11 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaicbtcbucbvcbwcbtaaiaaiaafaafaafaafaafbZYbZZbZYaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbSecbxcbycbzcbAbSecbBcbCcbDcbEcbFcbGcbHcbIcbJcbKcbLcbMcbNbVVbYQbYRbYQdJydJzbYQbYRbYQcbPcbQbVVcbRcbSbbMbbKcbTbjzbbMaaibUmcbUdLqcbVcbWcbXcbYbUmcbZccaccbcbZbMXcccccdcceccfccgcchccibMXaafaVAbJHcaIbRjccjcaMcclbYhbYibSQbUFcaJbUHbSQbSQbSQccmccnbYjccoccpccqbSQbZxcNLaQlccraQlbSXbSYbpZaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiccscctccucaZaawccvccwccxbZNaawaafbZDccycczccAbZHccBccCbZIccDccEccFbZMdJMdJNdJOdJPdJOdJQbZNbZObZNbZNbZNbZNaafaafaafaafcbpccGccHccIccJccKccLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaaiaaibXhccMccNccObXhaaiaaiaafaafaafbZYbZYbZYbZZbZYaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbSebSeccPccQbSebSebSlbSlbSlbSlbSlccRbSlbSlbSlccSccTccUbSlbVVbXDbXDbXDdJAbXGbXDbXDbXDcbPccVccWccXbbJbbJbbJaZHaWebbMaaibUmbUmbUmbUmbUmbUmbUmbUmbWDccZcdaceUbMXbMXcdcbMXbMXbMXcddcdebMXcdfaVAcdgaVAbRjcaKcckcdjcdjbYibSQbSQbWvbSQbSQbSQbSQbSQbUFcdmcdncficcqcdobRjaPfaPfaPfbGJbjMbGJbuJaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiccscdpcdqcaZaawccwccwcdrbZNaawaafbZDbZDbZDbZDbZDcdscdtbZMbZMbZMbZMbZMdJRdJOdJScgScgSdJTbZNbZObZNaafaafaafaafaafaafaafcbpcducdvcdwcdxcdycdzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaaiaaibYzcdAccNcdBbYzaaiaaiaafaafaafbZYcdCcdDcdEbZYbZYbZYbZYaafaafaafaafaafaafaafaafaafaafaafaafaafbSebSebSebSeaafaafaafaafbZYcdFcdGbZYaaiaaiaaiaaiaaiaaibVVdLAcdIcgDcsncLecLedJBcLedJCcdLccWccXcdMcdNbbJaZHaWecbZcbZcbZcbZcdOcdPcdQcdRcdScdTcdUcdVcdWcdXcdYcdZceacebceccbZcbZcbZcbZcbZdLsceecefbRjbRjcegbYibYibZvbSQbZwbWvbSQcehcehbSQbSQbSQceiceiceicejceiceicflcgUaPfcekbcacelaPfcaZaaiaaiaaiaaiaaiaaiaaiaaiaaiaaicemcenceocaZaawcepceqcerbZNaawaafaafaafaafaafbZNcescetbZNdJVdJUcgSdJYcgSdJWcgScgSdJXdKebZNbZObZNaafaafcbpcbpcbpcbpcbpcbpceuceucbpcbpcbpcbpaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafbZVbVCbVAbZVcevccNcewbZVbVCbVAbZVbZVbZYbZYcexceycezceAceBceCbZYaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbZYceDceEceFceFceFceFceFaaiaaibVVbVWbVWdJDbVWbVWbVVbVVbVVbVVbVVbVVcbRcbSbbMceJbihaWeccYceLceMcbZceNceOcePceOceNceNceNccZcdaceNceNceNceaceQceRceScbZceTceLcdhceVceWceXceYceZcfabSKcfbcfccfccfdbWvbUFcfecffbUHbSQcfjceicfhcgBcgEcgFchYcibcgUaPfcfnbbbaQlcfocaZcfpcfqcfqcfqcfqcfqcfqcfqcfqcfrcaZcfscftcaZbZNcfubZNbZNaalaawaafaafaafbZNbZNbZNcfvcfwbZNdJZdKacgSdKbcgSdKfdKcdJWdKdbZNbZNbZObZNaafaafcbpcPocfycfycfycfycfzcfzcfAcfycfycfyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafbZVcuycfCcfBcfDcfEcfFcfGcfHcfIcfJcfKcfLcfMcfNcfOcfPcfQcfRcfSbZYaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbZYcfTcfUcfVcfWcfXcfYceFaaiaaidJldJndJFdNudNvdMHdJlaaiaaiaaiaaiaaiaaiaaiaYrcfZcuZcgbceKcgdcgecgfcggcghcgicgjcgjcgjcgjcgkcglcgjcgjcgjcgmcgncghcgocgpcgqcgrcfmcgtcguceVcgvcgwcgxbSQcgybSQbSQcehbWvbUFcgzcgAdKgbSQcehceicqlceiczzceicOsceidJiaPfcgGbcacgHaRdcgIcgJcgJcgJcgKcgJcgJcgJcgJcgJcgJcgJcgLcgMcgNbZNcepccwcgObZNbZNbZNbZNbZNbZNcgPcgQcgRcgSbZNbZNbZNbZNbZNbZNbZNbZNbZNbZNbZNcgTbZObZNaafaafcbpcQAcgVcgWcgXcgYcgZchachcchdcitcfycfyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafbZVchechfchgccNchhccNccNchiccNchjbZVchkchlchkchmchnchochpbZYbZYbZYbZYbZYbZYbZYbZYbZYbZYbZYbZYbZYbZYbZYbZYbZYbZYbZYbZYbZYbZYbZYbZYchqchrceFchschtchuceFaaiaaidJldJndNkdJHdNkdMHdJlaaiaaiaaiaaiaaiaaiaaiaWdchvchwchxcgschzchAcbZchBchCchDchEchFchGchCchCchHchCchIchJchKchLchCchMcbZchAchzchNchOchPchQdNTdNwchSchTchUchVchTchWcgxbSQchXchXdKlbSQdAAceichZceiciaceidKnceiceiaPfciccidaYXaYYciecifcifcifcigcifcihciicifcifcifcifcijcikcilcimcinciocincincincincincincincincincipciqciqciqciqciqciqciqciqciqciqciqciqciqcirbZNaafaafcbpcQAcgVcischachachachachachachacjOciuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafbZVckGciwcixciycizciAciBccNciCciDbZVciEciFciGciFciHciIciJciKciKciKciKciKciKciKciLciMciKciKciKciKciKciKciKciKciKciKciKciNciOciKciKciPciQciRciScqzciUceFaaiaaidJldJndNldNmdNndMHdJlaaiaaiaaiaaiaaiaaiaaiaXdciVaZHdNUcbZcbZcbZcbZciWcDnciYciZcjadMicjccjdcjecjfcjgcjhcjicjjdJvcjlcbZcbZcbZcbZcjmcjncjocjpbRjbRjcjqcjrcjrcjscjtbRjcjqcjrcjrcjrcjsbRjceiceiceiceiceiceiceiaaibIucjucjvcjwcjvcjxcjycjycjzcjycjycjAcjBcjycjycjycjzcjCcjDcjEbZNbZNbZNbZNbZNbZNbZNbZNbZNbZNcjFcjGcjHcjIbZNbZNbZNbZNbZNbZNbZNbZNbZNbZNbZNbZNbZNbZNaafaafcbpcQAcgVcjJcjKcDHcjMcjNcjPcjQcBTcfycfyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafcjRcjRbZVbZVcjScjTcjUchhcjVcjWcjWcjXbZVbZVcjYciFcjZciFckackbckcckdbZYbZYbZYckeckfckgckhckgckickjbZYbZYbZYbZYbZYbZYbZYbZYbZYckkcklckgckgckmcknckoceFceFceFceFaaiaaidJmdJmdJmdJmdJmdJmdJmaaiaaiaaiaaiaaiaaiaaiaWZciVaZHbbJckqaaiaaicbZcbZcbZckrcksdNVcbZdNWcktckvdNVcbZdNWcksckwcbZcbZcbZaaiaaickxckyckzckAcjpaafaafaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaibuJaQlaQlckBckCcaZcfpcfqcfqcfqckDckEckFcfqcfqcfrcaZcaZcaZcaZbZNaafaafaafaafaafaafaafaafbZNbZNbZNcjHbZNbZNdHVdHWccwccwccwcgRdHXdLubZNbZNaafaafaafaafaafcbpdBccfycfycfycfycfycfycfAcfycfycfyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafbZVbVCbVAbZVcevccNcewbZVbVCbVAbZVbZVbZYbZYcexceycezceAceBceCbZYaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbZYceDceEceFceFceFceFceFaaiaaibVVbVWbVWdJDbVWbVWbVVbVVbVVbVVbVVbVVcbRcbSbbMceJbihaWeccYceLceMcbZceNceOcePceOceNceNceNccZcdaceNceNceNceaceQceRceScbZceTceLcdhceVceWceXceYceZcfabSKcfbcfccfccfdbWvbUFcfecffbUHbSQcfjceicfhcgBcgEcgFchYcibcgUaPfcfnbbbaQlcfocaZcfpcfqcfqcfqcfqcfqcfqcfqcfqcfrcaZcfscftcaZbZNcfubZNbZNaalaawaafaafaafbZNbZNbZNcfvcfwbZNdJZdKacgSdKbcgSdKfdKcdJWdKdbZNbZNbZObZNaafaafcbpcNAcfycfycfycfycfzcfzcfAcfycfycfyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafbZVcuycfCcfBcfDcfEcfFcfGcfHcfIcfJcfKcfLcfMcfNcfOcfPcfQcfRcfSbZYaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbZYcfTcfUcfVcfWcfXcfYceFaaiaaidJldJndJFdNudNvdMHdJlaaiaaiaaiaaiaaiaaiaaiaYrcfZcuZcgbceKcgdcgecgfcggcghcgicgjcgjcgjcgjcgkcglcgjcgjcgjcgmcgncghcgocgpcgqcgrcfmcgtcguceVcgvcgwcgxbSQcgybSQbSQcehbWvbUFcgzcgAdKgbSQcehceicqlceiczzceicOsceidJiaPfcgGbcacgHaRdcgIcgJcgJcgJcgKcgJcgJcgJcgJcgJcgJcgJcgLcgMcgNbZNcepccwcgObZNbZNbZNbZNbZNbZNcgPcgQcgRcgSbZNbZNbZNbZNbZNbZNbZNbZNbZNbZNbZNcgTbZObZNaafaafcbpcNBcgVcgWcgXcgYcgZchachcchdcitcfycfyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafbZVchechfchgccNchhccNccNchiccNchjbZVchkchlchkchmchnchochpbZYbZYbZYbZYbZYbZYbZYbZYbZYbZYbZYbZYbZYbZYbZYbZYbZYbZYbZYbZYbZYbZYbZYbZYchqchrceFchschtchuceFaaiaaidJldJndNkdJHdNkdMHdJlaaiaaiaaiaaiaaiaaiaaiaWdchvchwchxcgschzchAcbZchBchCchDchEchFchGchCchCchHchCchIchJchKchLchCchMcbZchAchzchNchOchPchQdNTdNwchSchTchUchVchTchWcgxbSQchXchXdKlbSQdAAceichZceiciaceidKnceiceiaPfciccidaYXaYYciecifcifcifcigcifcihciicifcifcifcifcijcikcilcimcinciocincincincincincincincincincipciqciqciqciqciqciqciqciqciqciqciqciqciqcirbZNaafaafcbpcNBcgVcischachachachachachachacjOciuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafbZVckGciwcixciycizciAciBccNciCciDbZVciEciFciGciFciHciIciJciKciKciKciKciKciKciKciLciMciKciKciKciKciKciKciKciKciKciKciKciNciOciKciKciPciQciRciScqzciUceFaaiaaidJldJndNldNmdNndMHdJlaaiaaiaaiaaiaaiaaiaaiaXdciVaZHdNUcbZcbZcbZcbZciWcDnciYciZcjadMicjccjdcjecjfcjgcjhcjicjjdJvcjlcbZcbZcbZcbZcjmcjncjocjpbRjbRjcjqcjrcjrcjscjtbRjcjqcjrcjrcjrcjsbRjceiceiceiceiceiceiceiaaibIucjucjvcjwcjvcjxcjycjycjzcjycjycjAcjBcjycjycjycjzcjCcjDcjEbZNbZNbZNbZNbZNbZNbZNbZNbZNbZNcjFcjGcjHcjIbZNbZNbZNbZNbZNbZNbZNbZNbZNbZNbZNbZNbZNbZNaafaafcbpcNBcgVcjJcjKcDHcjMcjNcjPcjQcBTcfycfyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafcjRcjRbZVbZVcjScjTcjUchhcjVcjWcjWcjXbZVbZVcjYciFcjZciFckackbckcckdbZYbZYbZYckeckfckgckhckgckickjbZYbZYbZYbZYbZYbZYbZYbZYbZYckkcklckgckgckmcknckoceFceFceFceFaaiaaidJmdJmdJmdJmdJmdJmdJmaaiaaiaaiaaiaaiaaiaaiaWZciVaZHbbJckqaaiaaicbZcbZcbZckrcksdNVcbZdNWcktckvdNVcbZdNWcksckwcbZcbZcbZaaiaaickxckyckzckAcjpaafaafaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaibuJaQlaQlckBckCcaZcfpcfqcfqcfqckDckEckFcfqcfqcfrcaZcaZcaZcaZbZNaafaafaafaafaafaafaafaafbZNbZNbZNcjHbZNbZNdHVdHWccwccwccwcgRdHXdLubZNbZNaafaafaafaafaafcbpcOOcfycfycfycfycfycfycfAcfycfycfyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafcjRcjRckHckIcjRbVCckJbVAckKbVCckJbVAbZVciFckLckMciFckNciFckOckPckQckbaafaafckRckRckRckRckSckRckRckRckRaafaafaafaafaafaafaafbZYbZYcklckTbZYckUckVbZYaafaaiaaiaaiaaickpckpckWckXckYckZdMcckpckpaaiaaiaaiaaiaaiaYraYrclbbjAbbKaYraYraaiaaiaaiclcaaiaaiaaiaaiaaiaaiaaiaaidMTaaiaaiaaiclcaaiaaiaaicjpcjpcldcjnclecjpcjpaafaafaafaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaicjpcjpclfclgclhcjpcjpaaiaaiaaiaaiclickEcliaaiaaiaaiaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbZNcjHbZNdIacgRccwccwccwccwcgRcgRcgRdIbbZNaafaafaafaafaafcbpcbpcbpcbpcbpcbpcbpcbpcbpcbpcbpcbpaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafcjRcjRcljclkcllclmclncloclpclqclrclscltcluclvclwclxciFclyciFcqBclAclBckbaafaafckRclCclDclEclFclGclHclCckRaafaafaafaafaafaafaafaafbZYcklbZYbZYbZYbZYbZYaaiaaiclIclJclJclKclLclMclMclMclMclMdMrckpaaiaaiaaiaaiaYraYrclNciVaZHbbJbCSaYrclOclPclQcjpclOclPclPclPclPclPclPclPclPclPclPclQcjpclOclPclQcjpclRclSclTcleclUcjpcjpcjpcjpcjpclOclPclPclPclPclPclPclPclPclPclPclVcjpclOclPclVcjpclWclecleclXclYcjpcjpciTclZclZclZcqrclZclZclZaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbZNcjHbZNdIccgRcgRcgRcgRcgRccwccwcgRdIdbZNaafaafaafaafaafaafaafaafaafaafaafaaiaaiaaiaaiaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafcjRdoUclkcllcmccmdcmecmfcmgcmhciCcmicmjcmkcmkcmlcmmcmndIHciFcmocmpcmqckbaafaafckRcmrcmscmscmtcmucmvcmwckRaafaafaafaafaafaafaafaafbZYcklbZYaafaafaafaafaaiaaicmxcmycmzcmAcmBcmCcmDcmEcmFcmGcmHckpaaiaaiaaiaaiaWdbfnbbJcmIcmJcmKcmKcmLcmMcmMcmMcmNcmMcmMcmMcmOcmPclecleclecmQcmRcmScmTcmUcmTcmTcmTcmVcmWcmXcmYcmTcmTcmVcmTcmZcmTcnacmTcmTcnbcmTcmTcmTcmTcmTcnccmTcndcmTcnecmTcnbcmTcmVcmTcnfcnfcngcnhcnicnjaaiclZdMocnlcnmcnncnoclZaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbZNcjHbZNdIecgRcgRccwccwccwcgRdIfccwdIgbZNaafaafaafaafaafaafaafaafaafaafaafaaiaaiaaiaaiaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -10399,36 +10399,36 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaecyPcyPcyPcyPcyPcyPcyPcJacJbcJccJdcJecJfcJgcJhcJicJjcDkdfBcHlcJlcJmcJncJocJpcHlcADcADaafaafaafaafaafaafaafaafcADcJqcJrcFecADaafaafcGpcHvcHwcHxcGpcJscJtcHycHyczgcJucJvcJwcHCcJxcJycJzcJAcJBcJBcJBcJCcHCaaiaaiczkcDGczkaafaafaafaafaafcALcFlcCDcJDcFncCDcJEcCFcJFcJGcCDdwOcALaafaafaafaafaafaafaafcCHcJHcJIcJJcJKcFscJLcJMcJNcJOcJPcJQcJRcJScJTcJUcJVcJWcJXcJXcJYcJZcKacKacKbcKccKdcKecKdcugcugcugcugcugcugcugcugcugcugcKfcBncujcKgcKgcKhcKgcKgcKgcKgcunaafaafaafcEqcKicKjcKkcKlcKmcSFcKocEqcIzcBAcEycKpcSKcKrcKscKtcKucKvcEycKwcKxcKycKzcKAdHGcKCcEGcBPcRbcKDcKEdHHcKGcKHcKIcKJcKKcEMaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaecyPcyPcyPcyPcyPcyPcyPcKLcKMcKNcKOcJecAscAscyVcKPcCfcKQcKRcKScKTcKUcKVcKWcKXcHlaafaafaafaafaafaafaafaafaafaafcADcKYcKZcLacADaafaafcGpcLbcHwcHxcGpcLccLdcOlcLfczgcLgcLhcLicHCcLjcLkcJBcJBcJBcJBcJBcJBcHCaaiaaiczkcDGczkaafaafaafaafaafcALcALcALcALcLlcCDcLmcLncLocLpcCDcLqcALaafaafaafaafaafaafaafcCHcJHcLrcCHcCHcFscLscLtcLucLvcJPcLwcLxcudcsJcLycDWcLzcLAcLBcLCcDWcDWcDWcKecIecKdcKecLDcLEcLFcLFcLGcLHcQzcLJcLKcLLcLMcBmcBncLMcKgcLNcLOcLPcSgcLRcKgaafaafaafaafcEqcEqcEqcEqcEqcEqcLScEqcEqcICcxpcEycEycGYcEycEycEycEycEycEycEGcEGcEGcEGcEGcLTcEGcEGcxAcIMcEMcEMcEMcEMcEMcEMcEMcEMcEMaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaecyPcyPcyPcyPcyPcyPcyPaaeaaacLUcLVcLWcLXcLXcLYcLZcLZcLZcLZcMacMbcMbcMccMdcMecHlabGabGaaiaaiaaiabGabGaafaafaafcADcMfcMgcADcADaafaafcGpcMhcMicMjcGpcMkcMlcHycHyczgcMmcHAcMncMocMpcMpcMpcMqcMqcMqcMqcMrcHCaaiaaiczkcDGczkaafaafaafaafaafcALcMscCDcDJcMtcDLcHHcHIcMucMvcCDcLqcALaafaafaafaafaafaafaafcCHcDScCHcCHaafcFscMwcMxcMycMzcMAcLwcMBcMCcMDcMEcMFcMGcMHcMFcMIcMFaafcDWcDWcIecDWcMJcMKcMLcMMcMMcMMcMNcMOcLJcMPcMQcMRcMScMTcvucKgcMUcMVcMWcKgcKgcKgaafaafaafaafaafaafaafaafcMXcMYcMZcNacMXcRccNccNdcNecNfcNgcNdaafaafaafaafaafaafaafcNhcNicNjcNkcNhcNlcRfcNncNocNpcNqcNnaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaecyPcyPcyPcyPcyPcyPcyPaaeaaacNrcLVcJbcNscJbcNtcNucAscAscNvcHlcNwcMdcNxcNycNzcHlabGcNAcNBcNBcNBcNBabGaafcNCcNCcNDcNEcNDcNDaafaafaafcGpdLIcNFcNGcGpcNHcNIcNJcNKczgdOfcNMcNNcHCcLkcNOcLkcJBcJBcJBcJBcJBcHCaaiaaiczkcDGczkaafaafaafaafaafcALcNPcCDcNQcFncNRcNScNTcFocNUcCDcLqcALaafaafaafaafaafaafaafcCHcDScCHaafaafcFsdnlcNWcNXcJOcNYcNZcuccudcOacObcMFcOccOdcOecRwcMFaafaafcDWcIecDWcDWcDWcLEcOgcMMcMMcOhcOicOjcOkdHRcOmcOncOocOpcKgcMUcOqcOrdFkcOtcKgaafaafaafaafcMXcMXcMXcMXcMXcOucRgcOwcMXcICcxpcNdcOxcRhcOzcNdcNdcNdcNdcNdcNhcNhcNhcNhcOAcRicOCcNhcxAcRkcNncODcRmcOFcNncNncNncNncNnaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaecyPcyPcyPcyPcyPaaeaaeaaecxHcxHcxHcxHcxHcxHcxHdJgcOHcOIcOJcOKcOLcOMcONcHlcHlaaicNBcOOcOPcOOcNBaaiaaicNCcOQcORcOScOTcNCaafaafaafcGpdLJcOUcOVcOWcOXcOYcOZcOZczgcPacPbcPccHCcPdcLkcJBcJBcJBcJBcPecJCcHCaaiaaiczkcDGczkaafaafaafaafaafcALcPfcCDcPgcPhcDLcPicDNdItcPjcCDdwOcALaafaafaafaafaafaafaafcCHcDScCHaafaafcFscPkcPlcPmcLvcPndiKcPpdKxcPrcPscMFcPtcPucPvcPwcMFaafaafcDWcPxcDWaafaafcLEcPycPzcPAcMNcPBcPCcPDcLLcvucvudKycPFcKgcPGcPHcPIcKgcKgcKgaafaafaafaafcMXcPJcPKcPLcMXcMXcRncMXcMXcRocGXcNdcPOcRpcNdcNdcPQcPRcPScNdcPTcPUcPVcNhcNhcRqcNhcNhcyKcSqcNncNncStcNncNncPZcQacQbcNnaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaaaaeabGaafaafaafaafaafcxHcxHcxHcxHcHlcHlcHlcHlcHlcHlaafaaicNBcOOcOOcOOcNBaaiaaicNCcQccQdcQecQfcNCcQgcQgcQgcGpcGpcQhcQicGpcQjcQkcQlcQmcQncQocQpcQqcQncQrcLkcQscQtcJBcQucQucQucHCaaiaaiczkcDGczkaafaafaafaafaafcALcQvcCDcMvcQwcCDcQxcCFcQycMvcVbdNfcALaafaafaafaafaafaafaafcCHcDScCHaafcQBcQBcQCcQDcQEcQBcQBcQBcQFcQGcQHcQBcQBcQBcQBcQBcQBcQBcQBaafcDWcIecDWaafaafcLEcLEcQIcQJcQKcQLcQMcQNcMQcxccvucvucxccKgcKgcQOcKgcKgcQPcKgaafaafaafaafcMXcQQcSHcTYcWTcTYdHIdHLdHNdHQcNmdJIdLOdMVdNxdNydNxdNAcRdcNdcRedNBdNCdNIdNCdJadNJdNKcQSdNLdNMdNNdNzdNOdNPdNOdNQcRrcNnaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaaaaaaaaaaaaaaaaaaaiaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaicNBcRscRtcRucNBaaiaafcNCcRvdntcRxcRycNCdpRcRAcRBcRCcGpcRDcGpcHycHycREcHycRFcQncRGcRHcRIcQncRJcRJcRJcRJcRJcRJcRJcRJaaiaaiaaiczkcDGczkcCHaafaafaafaafcALcALcALcALcRKcRLcRMcRNcROcALcALcALcALaafaafaafaafaafaafcCHcCHcDScCHcQBcQBcRPcRQcRRcRSdKmcRUdMvcRWcRXcRYcRZcSacSbcSccSdcSecSfcQBcQBcDWcIecDWaaiaafaafcLEcLEcLEcLEcLEcLEcLEcLEcujdIlcShcujcKgcSicOrcSjcKgcSkcKgaafaafaafaafcMXcSlcSmcSncSocSpdHTcSrcMXcBzcBAcNdcSsdHUcSucSvcSwcSxcSycSzcSAcSBcSCcSDcSEdHZcSGcNhcBPdNDcSIcSJdIucSLcSMcSNcSOcSPcNnaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaiaaiaaiabGcNBcSQcSRcSScNBabGcSTcSTcSTcSTcSUcSVcQgcSWcSXcSYcSZcTacTbcTccTdcTecTfcTgcTacThcTicTjcTkcTlcTmdMwcTocTpcTqcRJcTrcRJcRJaaiaaiczkcTscTtcCHcCHcCHcCHcCHcCHcTucTvcALcTwcALcZAcALcTwcALcJIcJIcCHcCHcCHcCHcCHcCHcCHcCHcTycTzcTAcQBcTBcTCcTCcTDcTEcTEcTFcTGcTHcTIcTJcTKcTLcTMcTMcTMcTNcTCcTOcQBcTPcTQcDWaaiaaiaafaafaafaafaafaafaafaafcTRcTScTTcTTcTUcKgcTVcTWcSjcKgcTXcKgaafaafaafaafcMXcMXcMXcMXcMXcMXcMXcMXcMXcCXcxpcNdcNdcNdcNdcNdcNdcNdcNdcNdcNhcNhcNhcNhcNhcNhcNhcNhcxAdNEcNncNncNncNncNncNncNncNncNnaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaecyPcyPcyPcyPcyPcyPcyPaaeaaacNrcLVcJbcNscJbcNtcNucAscAscNvcHlcNwcMdcNxcNycNzcHlabGcOPcPocPocPocPoabGaafcNCcNCcNDcNEcNDcNDaafaafaafcGpdLIcNFcNGcGpcNHcNIcNJcNKczgdOfcNMcNNcHCcLkcNOcLkcJBcJBcJBcJBcJBcHCaaiaaiczkcDGczkaafaafaafaafaafcALcNPcCDcNQcFncNRcNScNTcFocNUcCDcLqcALaafaafaafaafaafaafaafcCHcDScCHaafaafcFsdnlcNWcNXcJOcNYcNZcuccudcOacObcMFcOccOdcOecRwcMFaafaafcDWcIecDWcDWcDWcLEcOgcMMcMMcOhcOicOjcOkdHRcOmcOncOocOpcKgcMUcOqcOrdFkcOtcKgaafaafaafaafcMXcMXcMXcMXcMXcOucRgcOwcMXcICcxpcNdcOxcRhcOzcNdcNdcNdcNdcNdcNhcNhcNhcNhcOAcRicOCcNhcxAcRkcNncODcRmcOFcNncNncNncNncNnaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaecyPcyPcyPcyPcyPaaeaaeaaecxHcxHcxHcxHcxHcxHcxHdJgcOHcOIcOJcOKcOLcOMcONcHlcHlaaicPocQAcRscQAcPoaaiaaicNCcOQcORcOScOTcNCaafaafaafcGpdLJcOUcOVcOWcOXcOYcOZcOZczgcPacPbcPccHCcPdcLkcJBcJBcJBcJBcPecJCcHCaaiaaiczkcDGczkaafaafaafaafaafcALcPfcCDcPgcPhcDLcPicDNdItcPjcCDdwOcALaafaafaafaafaafaafaafcCHcDScCHaafaafcFscPkcPlcPmcLvcPndiKcPpdKxcPrcPscMFcPtcPucPvcPwcMFaafaafcDWcPxcDWaafaafcLEcPycPzcPAcMNcPBcPCcPDcLLcvucvudKycPFcKgcPGcPHcPIcKgcKgcKgaafaafaafaafcMXcPJcPKcPLcMXcMXcRncMXcMXcRocGXcNdcPOcRpcNdcNdcPQcPRcPScNdcPTcPUcPVcNhcNhcRqcNhcNhcyKcSqcNncNncStcNncNncPZcQacQbcNnaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaaaaeabGaafaafaafaafaafcxHcxHcxHcxHcHlcHlcHlcHlcHlcHlaafaaicPocQAcQAcQAcPoaaiaaicNCcQccQdcQecQfcNCcQgcQgcQgcGpcGpcQhcQicGpcQjcQkcQlcQmcQncQocQpcQqcQncQrcLkcQscQtcJBcQucQucQucHCaaiaaiczkcDGczkaafaafaafaafaafcALcQvcCDcMvcQwcCDcQxcCFcQycMvcVbdNfcALaafaafaafaafaafaafaafcCHcDScCHaafcQBcQBcQCcQDcQEcQBcQBcQBcQFcQGcQHcQBcQBcQBcQBcQBcQBcQBcQBaafcDWcIecDWaafaafcLEcLEcQIcQJcQKcQLcQMcQNcMQcxccvucvucxccKgcKgcQOcKgcKgcQPcKgaafaafaafaafcMXcQQcSHcTYcWTcTYdHIdHLdHNdHQcNmdJIdLOdMVdNxdNydNxdNAcRdcNdcRedNBdNCdNIdNCdJadNJdNKcQSdNLdNMdNNdNzdNOdNPdNOdNQcRrcNnaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaaaaaaaaaaaaaaaaaaaiaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaicPocRtcRucSQcPoaaiaafcNCcRvdntcRxcRycNCdpRcRAcRBcRCcGpcRDcGpcHycHycREcHycRFcQncRGcRHcRIcQncRJcRJcRJcRJcRJcRJcRJcRJaaiaaiaaiczkcDGczkcCHaafaafaafaafcALcALcALcALcRKcRLcRMcRNcROcALcALcALcALaafaafaafaafaafaafcCHcCHcDScCHcQBcQBcRPcRQcRRcRSdKmcRUdMvcRWcRXcRYcRZcSacSbcSccSdcSecSfcQBcQBcDWcIecDWaaiaafaafcLEcLEcLEcLEcLEcLEcLEcLEcujdIlcShcujcKgcSicOrcSjcKgcSkcKgaafaafaafaafcMXcSlcSmcSncSocSpdHTcSrcMXcBzcBAcNdcSsdHUcSucSvcSwcSxcSycSzcSAcSBcSCcSDcSEdHZcSGcNhcBPdNDcSIcSJdIucSLcSMcSNcSOcSPcNnaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaiaaiaaiabGcPocSRcSSdaJcPoabGcSTcSTcSTcSTcSUcSVcQgcSWcSXcSYcSZcTacTbcTccTdcTecTfcTgcTacThcTicTjcTkcTlcTmdMwcTocTpcTqcRJcTrcRJcRJaaiaaiczkcTscTtcCHcCHcCHcCHcCHcCHcTucTvcALcTwcALcZAcALcTwcALcJIcJIcCHcCHcCHcCHcCHcCHcCHcCHcTycTzcTAcQBcTBcTCcTCcTDcTEcTEcTFcTGcTHcTIcTJcTKcTLcTMcTMcTMcTNcTCcTOcQBcTPcTQcDWaaiaaiaafaafaafaafaafaafaafaafcTRcTScTTcTTcTUcKgcTVcTWcSjcKgcTXcKgaafaafaafaafcMXcMXcMXcMXcMXcMXcMXcMXcMXcCXcxpcNdcNdcNdcNdcNdcNdcNdcNdcNdcNhcNhcNhcNhcNhcNhcNhcNhcxAdNEcNncNncNncNncNncNncNncNncNnaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaiaaiaaiabGabGcTZaaicUaabGabGcSTcUbcUccUdcUecUfcUgcUhcUicUjcSZcUkcUlcUmcUmcUncUocUpcUqcUrcTicTjcTkcUscUtcUucUucUvcUwcUxcUucUycRJaaiaaiczkcUzcUAcUBcUCcUDcUEcUEcUEcUEcUCcUCcUCcUFcUGcUHcUCcUEcUEcUIcUEcUEcUEcUEcUEcUEcUEcUEcUJcUKcULcQBcUMcTCcTCcUNcTCcTCcUOcUPcUQcURcUScUPcUOcTCcTCcTCcUTcTCcTCcQBcUUcIecDWaaiaaiaaiaafaafaafaafaafaafaafcTRcUVcTTcTTcUWcTRcKgcKgcKgcKgcKgcKgaafaafaafaafcUXcUYcUZcVadyPcVccVdcVecUXcVfcVgcVhcVidMXcVjcVkcVjcVlcVmcVncVjcVocVjcVpcVjcVjcVqcVhcVrdNFcVscVtcVucVvdDocVxcVycVzcVsaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaiaaiaaicVAcVBcVBcVCcVBcVDcVEcVFcSTcVGcVHcVHcVIcVJcVKcVLcVMcVNcSZcVOcVPcUpcVQcVRcUpcVScVTcVUcTicVVcVWcVXcVYcVZcWacWbcWccWdcWecWfcRJaaiaaiczkcWgcWhcCHcCHcCHcCHcCHcCHcCHcCHcCHcWicWjcWkcWlcJIcCHcCHcCHcCHcCHcCHcCHcCHcCHcCHcCHcWmcJIcWncQBcWocWocTCcWpcWqcWrcWscWtcUQcWucWvcWwcWscWxcWocTCcWycWqcWocQBcWzcIecDWaaiaaiaaiaaiaafaafaafaafaafaafcTRcTRcWAcWBcTRcTRaafaafaafaafaafaafaafaafaafaafcUXcWCcWDcWDcWEcWDcWDcWFcWGcWHcWIcWJcWKcWKcWKcWLcWKcWMcWNcWOcWPcWQcWKcXzcWKcWKcWKcWJcWSdNGcWUcWVcWVcWVcWWcWVcWVcWXcVsaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaebKubKuaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaiaaicWYcWZcXacXbcXccXdcXecXfcXgcXhcXicXjcXkcXlcXmcXncXocXpcXqcSZcXrcVPcXscXtcXucXvcUmcXwcXxcXydlPcXAcXBcXCcXDcXEcXFcXGcXHcXIcXJcRJaaiaaiczkcXKczkcCHaaiaaiaaiaaiaaiaaiaaicCHcCHcCHcCHcCHcCHcCHaafaafaafaafaafaafaafaafaafcCHcCHcXLcXMcQBcXNcXNcXOcTCcXNcXPcWscXQcUQdKzcUScXRcWscXNcXNcTCcXOcXNcXNcQBcXScXTcDWaaiaaiaaiaaiaaiaafaafaafaafaafaaicXUcTTcXVcXUaaiaafaafaafaafaafcXWcXWcXWcXWaafcUXcXXcXYcXZcYacYbcYccYdcYdcYecYfcYgcYfcYfcYfcYhcYfcYfcYfdKAcYjcYkcYkcYlcYkcYkcYkcYmcYndNHcYocYocYpcYqcYrcYscYscYtcVsaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafbKubKuaafaafaafaafaafaafaafaafaafabGabGaaiaaiaaiabGabGcYucYvcYwcVHcYxcVHcYycYzcYAcYBcVHcVHcYCcYDcYEcYFcYGcYHcYIcSZcYJcYKcYLcYMcYNcYOcYPcYQcYRcYScYTcTkcXBcYUcYVcUucYWcUucYXcYYcYZcRJaaiaaiczkcXKczkaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaafaafaafaafaafaafaafaafaafaafaafaafaafcCHcZacZbcQBcZccZdcZecTCcZfcZdcWscZgcZhcZicUScZgcWscZdcZdcZjcTCcZfcZkcQBcZlcZmcDWaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaicZncTTcXVcZnaaiaaiaaiaafaafcXWcXWcZocZpcXWaafcUXcUXcZqcZrcZscZtcZucZvcUXcVhcVhcVhcZwcZxcZxcZycZzdOgcZBcZCcZDcZEcZFcZGcZxcZxcZHcVhcVhcVhcVscZIcZJcZKcZLcZMcZNcVscVsaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafdMRdMRdMRaafaafaafaafaafaafabGcNBcNBcNBcNBcNBabGcYucYvcZOcZPcZQcZRcZScZTcZUcZVcVHcVHcZWcZXcZYcQgcZZdaacZZcSZdabdacdaddaedaedafcVScUqdagdahdaidajdCIdakdaldamdandaodakdakdakcRJaaiaaiczkdapczkaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaafaafaafaafaafaafaafaafaafaafaaicCHdaqcZbcQBdarcTCcUTcTCcTCcTCdascUPcUQcURcUScUPdascTCcTCcUNcTCcTCdatcQBcZldaucDWaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaicTRdavdawcTRaaiaaiaaiciTaafcXWdaxdaydazcXWaafaafcUXdaAdaBdaBdaBdaCcUXcUXaafaafcVhcVhdaDdaEdaEdaFcVhdaGdaHdaIcVhcVhcVhcVhcVhcVhcVhaafaafcVscVscVscVscVscVscVscVsaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafdMRdMSdMRaafaafaafaafaafaafaaicNBdaJdaJdaKdaLdaMdaNdaOdaPdaQcYxcVHcYxcYzdaRdaScVHcVHdaRdaTdaUdaVcXjdaWdaXdaYdaZcUpcUpcUpcUpcUpdbacVTdbbdahdbccTkdbddbedbfdbgdbhdbidbjdbkdbldbmaaiaaiczkcXKczkaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaafaafaafaaiaaiaaiaaiaaiaaicCHdbncJKcQBcTCcTCdbocTMcTMcTMcTLcTKdbpdbqdbrcTGcTFcTEcTEdbscTCcTCcTCcQBcLDdbtcDWaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaicXUcTTdbucXUaaiaaiaaiaaiaaicXWdbvdaydbwcXWaaiaaiaaiaaiaaiaaiaaiaaiaafaafaafaafaafaaiaaiaaiaaiaaidbxdbydbzdbAcVhaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafdMRdMRdMRaafaafaafaafaafaafaaicNBdbBdbCdbDcSRaaicYudbEdbFdbGdbHdbIcYxdbJdbKdbLdbMdbNdbOdbPdbGcVHcVHdbQdbRdbSdbTdbUdbUdbVcUpdbWdbXcSZdbYdbZdcacTkdcbdccdcddbgdcedcfdcgdchdcidbmczkczkczkcXKczkdcjdcjdckdcldcmdcjdcjdckdcldcmdcjdcjaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaicCHcCHdcncCHcQBdcodcpdcqdcrdcscTCcRUcUPcUQcUQcUScUPcRUcTCdcsdcrdMbdcudcvcQBcDWdcwcDWcDWaaiaaiaaiaaiaaiaaiaaiaaiaaiaaicZncTTdbucZnaaiaaiaaiaaiaaicXWcXWdcxcXWcXWaaiaaiaaiaaiaaiaaiaaiaafaafaafaafaafaaiaaiaaiaaiaaiaaidcydczdcAdcBcTRaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafabGcNBdaJdaJdcCdcDdaMdcEdcFdcGdcHdcIdcJdcKdcLdcMdcMdcMdcIdcIdcNdcOcVHcVHdcPdcQcSZcSZdcRdcSdcTdcUdcRdcSdcVdcWdcXdcYcTkdcZddaddbdbgddcdddddeddfddgdbmddhddiddiddjcDCdcjddkddlddmddnddoddpddlddqddlddldcjdcjddrddsddsddsddsddsddtdduddrddtddudduddvddwddxcQBcQBcQCcQDcQEcQBcQBcQBddyddzddAcQHddycQBcQBcQBcQCcQDcQEcQBcQBddxddBddCddudduddDddEddEddEddFcTRcTRcTRddGcTRddHddIcTRddDddEddEddFcTRcTRcUVddJddKcTRcTRcTRcTRddDddEddEddFcTRcTRcTRcTRcTRcTRcTRddDddEddEddFcTRddLddMddNddOddOaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafabGcNBcNBcNBcNBcNBabGddPddQddRdbGddSddTcYxcYzddUddUddVdaRdbHddWddXdcMddYddZdeadebdecdeddeedefdegdehdeidejdeidekdelcTkdemdcccTidendeodepdeqderdesdbmcXKcDCdetcDCcDCdeudevdewdexdeydevdezdexdeAdeBdeCdeDdeEdeFdeGdeFdeFdeHdeFdeIdeJdeFdeFdeKdeLdeMdeNdeOdePdeKdeFdeQdeFdeGdeRdeSdeFdeFdeFdeTdeFdeUdeVdeGdeFdeFdeFdeKdOhdeOdeWdeXdeXdeYdeZdfadeZdfbdeZdfcdfddfedeZdfadeZdffdOideZdeZdfgdeZdfhdfadfidfjdfkdfedfhdeZdfldeZdeZdfmdeZdeZdfndfcdfedeZdeZdfodeZdeZdfadeZdfhdfpdfqddNdfrddOaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafabGcNBdfsdfsdftdfudfvdfwdfxdbMdfydfzcVHcYxcYzdfAdMxdfCdbJdbKdfDdbMdbNdfEdfFdbMdfGdfHdfIdfJdfKdfLdfMdfNdfOdfNdfPdfQdfRdfSdfTdfUdfVdfWdfXdfYdfZdgadbmcXKczkczkdgbczkdgcdgddgedcjdgcdgddgfdcjdgcdggdghdgidgjdgkdgkdgkdgldgkdgkdgmdgkdgkdgkdgndgldgodgpdgqdgrdgndgkdgqdgkdgkdgkdgldgkdgkdKBdgkdgkdgmdgkdgkdgkdgkdgkdKCdgrdgqdgsdgkdgldKDdgtdgtdgtdgudgtdgtdgvdgtdgtdgtdgtdKEdgtdgtdgtdgxdgtdgydgvdgzdKFdgBdgCdgydgtdgudgtdgtdgvdgtdgtdgtdgtdgtdgtdgtdgDdgtdgtdgCdgtdgydgEdKGdKHdgHddOaafaafaafaafdMRaafaafdMRdMRdMRdMRdMRdMRaafaafaafdMRdMRdMRdMRdMRaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaicNBdgIdgJdgKcSRaaicYudgLdgMdgNdgOcZRdgPcYzdgQdgRdgScYzcVHdgTcVHdgUcVHdgVdgWdgXdgXdgYdgZdhadhbdgYdgZdgXdhcdhddhedhfdhgdhhdhidhjdhkdhldhidhjdhhdhhcXKczkdhmdhndhodgcdhpdhqdhrdcjdhsdhqdhtdgcdcjdhuddldhvdhwdhwdhwdhxdhydhwdhwdhzdhwdhwdhAdhBdhCdhDdhEdOjdhGdhHdhIdhHdhHdhJdhKdhHdhHdhLdhHdhHdhHdhMdhHdhHdhNdhHdhGdhOdhEdhDdhPdhQdhAcTTdhRcTTcTTcTTcTTdhScTTdhTcTTcTTcTTcTTcTTcTTdhUcTTdczdhVdhWdbuddMdhXdczcTTdhRcTTcTTdhYcTTdhZcTTcTTcTTdhZcTTcTTcTTcTTdiacTTdczdiadibddNdicddOaafaafaafaafdMRdLFdLFdMRdLFdLGdLFdLFdMRaafaafaafdMRdLFdLFdLFdMRaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafabGcNBdfsdfsdiddiedifdigdihdiidijdikcVHcYxdildimdindiodipdiqdircZPdisdioditdiudivdiwdixdiydizdiAdiBdiCdiBdiDdiEdiFdiGdiHdiIdiJdOkdiLdiMdiNdiOdiPdhhdiQczkdiRdhndiSdgcdiTdiUdiTdcjdiVdiWdiVdgcdcjdcjdcjdcjddrddsddsddsddsddsddtdiXddrddtdiYdiZdjadjbdjcdiZdiYdjddiXddrddsddsddsddsddtdiXddrddsddsddsddsddtdiXdjddjedjfdjgdjhdjidjfdjfdjjdjkddDddEddEddEddEddFdjkddDddEddEddEddEddFdjkdjjdjldjmdjndjodjpdjmdjldjjdjkddDddEddEddEddEddFdjkddDddEddEddEddEddFdjkdjjdjqdjrdjsdjtddOddOaafaafaafaafdMRdLFdLFdMRdLFdLFdLFdLFdMRaafaafaafdMRdLFdLFdLFdMRaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafabGcNBcNBcNBcNBcNBabGdjudjvddRdjwdjxcZRdjycVHdaRdbIdbHcVHcVHdjzdjAdjBdjCdjDdjEdjFdiwdiydiydizdiAdjGdjGdjHdjIdjJdjKdiGdjLdjMdjMdjMdjNdjOdjPdjPdjQdhhcXKczkdjRdjSdjTdgcdjUcIDdjUdcjdjWdjVdjWdgcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjYdjZdkadkbdkcdkkdjYaaaaaaaaaaaaaaadkedkedkedkedkedkedkeaaaaaaaaaaaaaaadkfdkgdkhdkidkjdqidkfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadkldkmdkndkodkpdJddklaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadkrdksdktdkudkvddOaafaafaafaafdMRdLFdLFdLFdLFdLFdLFdLFdMRaafaafaafdMRdLFdLFdLFdMRaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafabGcNBdkwdkwdkxdfudfvdfwdkydbMdkzdkAdkBcYxcVHdildindbKcYBcVHdkCdjBdbLdkDdkEdkFdkGdkHdiydkIdkJdkKdkLdkMdkNdkOdkPdkQdkRdjLdjMdjMdkSdkTdkUdkVdjMdkWdhhcXKczkaaiaaiaaidgcdjUdjXdjUdcjdjWdkXdjWdgcdkZdkZdkZdkZdkZdkZdkZdkZdkZdkZdkZdkZaaaaaadladlbdlcdlddkcdledlfaaaaaaaaaaaadkedkedkedkedkedkedkedkedkeaaaaaaaaaaaadlgdlhdkhdlidljdlkdlgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlldlmdlndlodkpdlpdllaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlqdksdktdlrdlsddOaafaafaafaafdMRdMRdMRdLFdLFdLFdLFdLFdMRaafdMRdMRdMRdMRdLHdMRdMRdMRaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaaicNBdltdludlvcSRaaicYudlwcVHcYxdjBdbLdkzdlxdbMdlydbMdlxdbMdlzdjBcVHcVHdlAdlBdlCdlDdiydiydlEdlFdiydlGdlHdiDdlIdlJdlKdiHdlLdlMdlNdlQdlRdlQdlRdhhdhhcXKczkaaiaaiaaiaaidjUdkYdjUdgcdjWdlSdjWdkZdkZdkZdkZdkZdkZdkZdkZdkZdkZdkZdkZdkZdlUdlVdlWdlXdlYdlZdmadmbdiYaaaaacaaadkedkedkedkedkedkedkedkedkedkedkeaaaaacaaadjedmcdmddmedmfdmgdjeaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaadjldmhdkndmidmjdmkdjlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjqdmldmmdmndmoddOaafaafaafaafaafaafdMRdLFdLFdLFdLFdLFdMRaafdMRdLHdLHdLHdLHdLHdLHdMRaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaaicNBdkwdkwdmpdiedifdigdmqcZRdmrdjBcVHdmscZScZRdmtcZRcZRcZRdmudmtdmvcVHdmwdmxdgXdmydiydmzdmAdmBdmCdlGdmDdmEdmFdjKdAMdmHdmHdmHdmHdmHdmHdmHdmHdhhdmIdmJczkczkczkaaiaaidjUdmKdjUaaadjWdmLdjWdkZdkZdkZdkZdkZdkZdkZdkZdkZdkZdkZdkZdkZdmMdmNdmOdmPdmQdmRdmSdledjYaaaaaaaaadkedkedkedkedkedkedkedkedkedkedkeaaaaaaaaadkfdlhdmTdmUdkjdlkdkfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadkldlmdkndmVdmWdlpdklaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadkrdksdmXdmndmYddOaafaafaafaafaafaafdMRdMRdMRdMRdLFdMRdMRaafdMRdLHdLHdLHdLHdLHdLHdMRaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafabGcNBcNBcNBcNBcNBabGdjudmZddRcVHdjBcVHcVHcYxdnadjBcVHcVHdnadnbdncdnddnednfdngdgXdnhdiydiydnidnjdiydnkdMydmEdnmdlJdnndnodnpdnqdnrdnsdtzdnudnvdnwdnxdnycDCcWhczkaaiaaaaaaaaaaaaaaaaaaaaaaaadkZdkZdkZdkZdkZdkZdkZdkZdkZdkZdkZdkZdkZdnzdlVdnAdlXdnBdnCdmSdnDdlaaaaaaaaaadkedkedkedkedkedkedkedkedkedkedkeaaaaaaaaadnEdnFdnGdmednHdnIdnEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnJdnKdkndmidnLdnMdnJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnNdnOdktdnPdnQddOaafaafaafaafaafaafaafaafdMRdNcdLHdLHdMRdMRdMRdLHdLHdLHdLHdLHdLHdMRaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafdMRdMRdMRaafaafaafaafaafaafabGcPocPocPocPocPoabGcYucYvcZOcZPcZQcZRcZScZTcZUcZVcVHcVHcZWcZXcZYcQgcZZdaacZZcSZdabdacdaddaedaedafcVScUqdagdahdaidajdCIdakdaldamdandaodakdakdakcRJaaiaaiczkdapczkaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaafaafaafaafaafaafaafaafaafaafaaicCHdaqcZbcQBdarcTCcUTcTCcTCcTCdascUPcUQcURcUScUPdascTCcTCcUNcTCcTCdatcQBcZldaucDWaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaicTRdavdawcTRaaiaaiaaiciTaafcXWdaxdaydazcXWaafaafcUXdaAdaBdaBdaBdaCcUXcUXaafaafcVhcVhdaDdaEdaEdaFcVhdaGdaHdaIcVhcVhcVhcVhcVhcVhcVhaafaafcVscVscVscVscVscVscVscVsaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafdMRdMSdMRaafaafaafaafaafaafaaicPodaKdaKdaLdbBdaMdaNdaOdaPdaQcYxcVHcYxcYzdaRdaScVHcVHdaRdaTdaUdaVcXjdaWdaXdaYdaZcUpcUpcUpcUpcUpdbacVTdbbdahdbccTkdbddbedbfdbgdbhdbidbjdbkdbldbmaaiaaiczkcXKczkaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaafaafaafaaiaaiaaiaaiaaiaaicCHdbncJKcQBcTCcTCdbocTMcTMcTMcTLcTKdbpdbqdbrcTGcTFcTEcTEdbscTCcTCcTCcQBcLDdbtcDWaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaicXUcTTdbucXUaaiaaiaaiaaiaaicXWdbvdaydbwcXWaaiaaiaaiaaiaaiaaiaaiaaiaafaafaafaafaafaaiaaiaaiaaiaaidbxdbydbzdbAcVhaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafdMRdMRdMRaafaafaafaafaafaafaaicPodbCdbDdcCcSSaaicYudbEdbFdbGdbHdbIcYxdbJdbKdbLdbMdbNdbOdbPdbGcVHcVHdbQdbRdbSdbTdbUdbUdbVcUpdbWdbXcSZdbYdbZdcacTkdcbdccdcddbgdcedcfdcgdchdcidbmczkczkczkcXKczkdcjdcjdckdcldcmdcjdcjdckdcldcmdcjdcjaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaicCHcCHdcncCHcQBdcodcpdcqdcrdcscTCcRUcUPcUQcUQcUScUPcRUcTCdcsdcrdMbdcudcvcQBcDWdcwcDWcDWaaiaaiaaiaaiaaiaaiaaiaaiaaiaaicZncTTdbucZnaaiaaiaaiaaiaaicXWcXWdcxcXWcXWaaiaaiaaiaaiaaiaaiaaiaafaafaafaafaafaaiaaiaaiaaiaaiaaidcydczdcAdcBcTRaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafabGcPodaKdaKdcDdfsdaMdcEdcFdcGdcHdcIdcJdcKdcLdcMdcMdcMdcIdcIdcNdcOcVHcVHdcPdcQcSZcSZdcRdcSdcTdcUdcRdcSdcVdcWdcXdcYcTkdcZddaddbdbgddcdddddeddfddgdbmddhddiddiddjcDCdcjddkddlddmddnddoddpddlddqddlddldcjdcjddrddsddsddsddsddsddtdduddrddtddudduddvddwddxcQBcQBcQCcQDcQEcQBcQBcQBddyddzddAcQHddycQBcQBcQBcQCcQDcQEcQBcQBddxddBddCddudduddDddEddEddEddFcTRcTRcTRddGcTRddHddIcTRddDddEddEddFcTRcTRcUVddJddKcTRcTRcTRcTRddDddEddEddFcTRcTRcTRcTRcTRcTRcTRddDddEddEddFcTRddLddMddNddOddOaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafabGcPocPocPocPocPoabGddPddQddRdbGddSddTcYxcYzddUddUddVdaRdbHddWddXdcMddYddZdeadebdecdeddeedefdegdehdeidejdeidekdelcTkdemdcccTidendeodepdeqderdesdbmcXKcDCdetcDCcDCdeudevdewdexdeydevdezdexdeAdeBdeCdeDdeEdeFdeGdeFdeFdeHdeFdeIdeJdeFdeFdeKdeLdeMdeNdeOdePdeKdeFdeQdeFdeGdeRdeSdeFdeFdeFdeTdeFdeUdeVdeGdeFdeFdeFdeKdOhdeOdeWdeXdeXdeYdeZdfadeZdfbdeZdfcdfddfedeZdfadeZdffdOideZdeZdfgdeZdfhdfadfidfjdfkdfedfhdeZdfldeZdeZdfmdeZdeZdfndfcdfedeZdeZdfodeZdeZdfadeZdfhdfpdfqddNdfrddOaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafabGcPodftdftdfudgIdfvdfwdfxdbMdfydfzcVHcYxcYzdfAdMxdfCdbJdbKdfDdbMdbNdfEdfFdbMdfGdfHdfIdfJdfKdfLdfMdfNdfOdfNdfPdfQdfRdfSdfTdfUdfVdfWdfXdfYdfZdgadbmcXKczkczkdgbczkdgcdgddgedcjdgcdgddgfdcjdgcdggdghdgidgjdgkdgkdgkdgldgkdgkdgmdgkdgkdgkdgndgldgodgpdgqdgrdgndgkdgqdgkdgkdgkdgldgkdgkdKBdgkdgkdgmdgkdgkdgkdgkdgkdKCdgrdgqdgsdgkdgldKDdgtdgtdgtdgudgtdgtdgvdgtdgtdgtdgtdKEdgtdgtdgtdgxdgtdgydgvdgzdKFdgBdgCdgydgtdgudgtdgtdgvdgtdgtdgtdgtdgtdgtdgtdgDdgtdgtdgCdgtdgydgEdKGdKHdgHddOaafaafaafaafdMRaafaafdMRdMRdMRdMRdMRdMRaafaafaafdMRdMRdMRdMRdMRaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaicPodgJdgKdidcSSaaicYudgLdgMdgNdgOcZRdgPcYzdgQdgRdgScYzcVHdgTcVHdgUcVHdgVdgWdgXdgXdgYdgZdhadhbdgYdgZdgXdhcdhddhedhfdhgdhhdhidhjdhkdhldhidhjdhhdhhcXKczkdhmdhndhodgcdhpdhqdhrdcjdhsdhqdhtdgcdcjdhuddldhvdhwdhwdhwdhxdhydhwdhwdhzdhwdhwdhAdhBdhCdhDdhEdOjdhGdhHdhIdhHdhHdhJdhKdhHdhHdhLdhHdhHdhHdhMdhHdhHdhNdhHdhGdhOdhEdhDdhPdhQdhAcTTdhRcTTcTTcTTcTTdhScTTdhTcTTcTTcTTcTTcTTcTTdhUcTTdczdhVdhWdbuddMdhXdczcTTdhRcTTcTTdhYcTTdhZcTTcTTcTTdhZcTTcTTcTTcTTdiacTTdczdiadibddNdicddOaafaafaafaafdMRdLFdLFdMRdLFdLGdLFdLFdMRaafaafaafdMRdLFdLFdLFdMRaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafabGcPodftdftdiedkwdifdigdihdiidijdikcVHcYxdildimdindiodipdiqdircZPdisdioditdiudivdiwdixdiydizdiAdiBdiCdiBdiDdiEdiFdiGdiHdiIdiJdOkdiLdiMdiNdiOdiPdhhdiQczkdiRdhndiSdgcdiTdiUdiTdcjdiVdiWdiVdgcdcjdcjdcjdcjddrddsddsddsddsddsddtdiXddrddtdiYdiZdjadjbdjcdiZdiYdjddiXddrddsddsddsddsddtdiXddrddsddsddsddsddtdiXdjddjedjfdjgdjhdjidjfdjfdjjdjkddDddEddEddEddEddFdjkddDddEddEddEddEddFdjkdjjdjldjmdjndjodjpdjmdjldjjdjkddDddEddEddEddEddFdjkddDddEddEddEddEddFdjkdjjdjqdjrdjsdjtddOddOaafaafaafaafdMRdLFdLFdMRdLFdLFdLFdLFdMRaafaafaafdMRdLFdLFdLFdMRaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafabGcPocPocPocPocPoabGdjudjvddRdjwdjxcZRdjycVHdaRdbIdbHcVHcVHdjzdjAdjBdjCdjDdjEdjFdiwdiydiydizdiAdjGdjGdjHdjIdjJdjKdiGdjLdjMdjMdjMdjNdjOdjPdjPdjQdhhcXKczkdjRdjSdjTdgcdjUcIDdjUdcjdjWdjVdjWdgcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjYdjZdkadkbdkcdkkdjYaaaaaaaaaaaaaaadkedkedkedkedkedkedkeaaaaaaaaaaaaaaadkfdkgdkhdkidkjdqidkfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadkldkmdkndkodkpdJddklaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadkrdksdktdkudkvddOaafaafaafaafdMRdLFdLFdLFdLFdLFdLFdLFdMRaafaafaafdMRdLFdLFdLFdMRaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafabGcPodkxdkxdltdgIdfvdfwdkydbMdkzdkAdkBcYxcVHdildindbKcYBcVHdkCdjBdbLdkDdkEdkFdkGdkHdiydkIdkJdkKdkLdkMdkNdkOdkPdkQdkRdjLdjMdjMdkSdkTdkUdkVdjMdkWdhhcXKczkaaiaaiaaidgcdjUdjXdjUdcjdjWdkXdjWdgcdkZdkZdkZdkZdkZdkZdkZdkZdkZdkZdkZdkZaaaaaadladlbdlcdlddkcdledlfaaaaaaaaaaaadkedkedkedkedkedkedkedkedkeaaaaaaaaaaaadlgdlhdkhdlidljdlkdlgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlldlmdlndlodkpdlpdllaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlqdksdktdlrdlsddOaafaafaafaafdMRdMRdMRdLFdLFdLFdLFdLFdMRaafdMRdMRdMRdMRdLHdMRdMRdMRaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaaicPodludlvdmpcSSaaicYudlwcVHcYxdjBdbLdkzdlxdbMdlydbMdlxdbMdlzdjBcVHcVHdlAdlBdlCdlDdiydiydlEdlFdiydlGdlHdiDdlIdlJdlKdiHdlLdlMdlNdlQdlRdlQdlRdhhdhhcXKczkaaiaaiaaiaaidjUdkYdjUdgcdjWdlSdjWdkZdkZdkZdkZdkZdkZdkZdkZdkZdkZdkZdkZdkZdlUdlVdlWdlXdlYdlZdmadmbdiYaaaaacaaadkedkedkedkedkedkedkedkedkedkedkeaaaaacaaadjedmcdmddmedmfdmgdjeaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaadjldmhdkndmidmjdmkdjlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjqdmldmmdmndmoddOaafaafaafaafaafaafdMRdLFdLFdLFdLFdLFdMRaafdMRdLHdLHdLHdLHdLHdLHdMRaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaaicPodkxdkxdpJdkwdifdigdmqcZRdmrdjBcVHdmscZScZRdmtcZRcZRcZRdmudmtdmvcVHdmwdmxdgXdmydiydmzdmAdmBdmCdlGdmDdmEdmFdjKdAMdmHdmHdmHdmHdmHdmHdmHdmHdhhdmIdmJczkczkczkaaiaaidjUdmKdjUaaadjWdmLdjWdkZdkZdkZdkZdkZdkZdkZdkZdkZdkZdkZdkZdkZdmMdmNdmOdmPdmQdmRdmSdledjYaaaaaaaaadkedkedkedkedkedkedkedkedkedkedkeaaaaaaaaadkfdlhdmTdmUdkjdlkdkfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadkldlmdkndmVdmWdlpdklaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadkrdksdmXdmndmYddOaafaafaafaafaafaafdMRdMRdMRdMRdLFdMRdMRaafdMRdLHdLHdLHdLHdLHdLHdMRaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafabGcPocPocPocPocPoabGdjudmZddRcVHdjBcVHcVHcYxdnadjBcVHcVHdnadnbdncdnddnednfdngdgXdnhdiydiydnidnjdiydnkdMydmEdnmdlJdnndnodnpdnqdnrdnsdtzdnudnvdnwdnxdnycDCcWhczkaaiaaaaaaaaaaaaaaaaaaaaaaaadkZdkZdkZdkZdkZdkZdkZdkZdkZdkZdkZdkZdkZdnzdlVdnAdlXdnBdnCdmSdnDdlaaaaaaaaaadkedkedkedkedkedkedkedkedkedkedkeaaaaaaaaadnEdnFdnGdmednHdnIdnEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnJdnKdkndmidnLdnMdnJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnNdnOdktdnPdnQddOaafaafaafaafaafaafaafaafdMRdNcdLHdLHdMRdMRdMRdLHdLHdLHdLHdLHdLHdMRaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafabGabGaaiaaiaaiabGabGdnRdnSdnTdnUdbLdnVdnWdnXdnYdnZdoadobdocdoddoedofdogcVHdohdgXdoidiydiydnidojdiydlGdokdmEdoldomdmGdHudoodopdoqdordosdotdoudovdowdoxdoydozczkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadkZdkZdkZdkZdkZdkZdkZdkZdkZdkZdkZdkZaaaaaadlfdlbdkadkbdmSdledlfaaaaaaaaadkedkedkedkedkedkedkedkedkedkedkeaaaaaaaaadlgdlhdmTdkidkjdlkdlgaaaaaaaaaaaadoAdoAdoAdoAdoAaaaaaaaaaaaaaaaaaaaaaaaadlldlmdkndkodnLdlpdllaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlqdksdktdoBdmYddOaafaafaafaafaafaafaafaafdMRdLFdLFdLHdLFdLFdLFdLHdLHdLHdLHdLHdLHdMRaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaaiaaiaaiaaiaaidoCdoDdoEdoFdoGdoFdoHdoIdoGdoFdoJdoIdoGdoGdoHdoKdoLdoMdgXdoNdoOdoPdoQdoRdoSdKZdHvdmEdlIdomdmGdHudoodoVdoWdoXdoYdoZczkdnwdnxdnydpadpbczkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaadpcdiYdpddpedpfdiZdiZdiZdiZdiZdiYdpgdkadphdpidpjdiYaaaaaaaaadkedkedkedkedkedkedkedkedkedkedkeaaaaaaaaadjedpkdpldpmdkjdpndjeaaaaaaaaadoAdoAdoAdoAdoAdoAdoAaaaaaaaaaaaaaaaaaaaaadjldpodkndppdpqdprdjlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjqdpsdptdpudpvddOaafaafaafaafaafaafaafaafdMRdLFdLFdLFdMRdMRdMRdLHdLHdLHdLHdLHdLFdMRaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaaaaaaaaaaaidpwdpxdfvdfvdpydpxdpzdfvdpydpxdpzdfvdpydpAcTZabGdoLdpBdgXdmEdmEdmEdmEdmEdmEdpCdmEdmEdpDdpEdpFdpGdpGdpGdpGdpGdpGdpGdpGdpGdpGdpHczkczkczkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjYdlbdkadkbdmSdledjYaaaaaaaaadkedkedkedkedkedkedkedkedkedkedkeaaaaaaaaadkfdlhdmTdkidkjdlkdkfaaaaaaaaadoAdoAdoAdoAdoAdoAdoAaaaaaaaaaaaaaaaaaaaaadkldlmdkndkodnLdlpdklaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadkrdksdktdoBdmYddOaafaafaafaafaafaafaafaafdMRdMRdMRdLFdMRaafdMRdLHdLHdLHdLHdLFdLFdMRaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaaadpIaaaabGcNBdpJcSRcSQcNBdpJcSRcSQcNBdpJcSRcSQcNBdoLdpKdpLdpMdNhdpOdpPdpQcRVdpSdpTdpUdpVdpWdpXdpGdpYdpZdqadqbdqcdqddqedqfdpGdnyczkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlUdlVdlWdqgdlYdkbdmSdkddlaaaaaaadkedkedkedkedkedkedkedkedkedkedkedkedkeaaaaaadnEdqhdmTdkidkjdqhdnEaaaaaadoAdoAdoAdoAdoAdoAdoAdoAdoAaaaaaaaaaaaaaaaaaadnJdkqdkndkodnLdkqdnJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnNdksdktdoBdmYddOddOaafaafaafaafaafaafaafaafdMRdLFdLFdMRaafdMRdMRdMRdMRdMRdMRdMRdMRaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaaaaaeaaeaaeaaaaaeaaeaaeaaaaaeaaeaaeaaaaaeaaeaaeaaaaaeaaeaaeaaaaayaaedqjaaeabGcNBdqkdqldqmcNBdqndqodqpcNBdqqdqrdqscNBdoLdqtdqudpMdNidqwdqxdqydqzdqAdqBdpUdqCdqDdqEdpGdqFdqFdqGdqcdqcdqcdqfdqHdpGdnyczkdqIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqJdqKdqLdqMdqNdkbdqOdqPdlWdlVdqQdkedkedkedkedkedkedkedkedkedkedkedkedkedqRdqSdqTdqUdqVdqWdqXdqYdqTdqSdqZdoAdoAdoAdoAdoAdoAdoAdoAdoAaaaaaaaaaaaadradrbdrcdrddredrfdrgdrhdrcdrbdrdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadridrjdrkdrldrmdoBdmYdrnddOaafaafaafaafaafaafaafaafdMRdMRdMRdMRaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaaadrodrpdrqaaadrodrpdrqaaadrodrpdrqaaadrodrpdrqaaadrodrpdrqaaaaayaaeaaeaaaaaacNBdrrdrsdrrcNBdrtdrudrtcNBdrvdrwdrvcNBdoLdrxdrydpMdNjdrAdrBdqzdqzdrCdrDdrEdrFdrGdrHdrIdrJdrKdrLdrKdrKdrMdrKdrNdpGdnydMZdrPdrQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnzdlVdnAdqgdrRdrSdrTdrUdrVdrWdrXdkedkedkedkedkedkedkedkedkedkedkedkedkedrYdrZdsadsbdscdsddsedsfdsgdshdsidoAdoAdoAdoAdoAdoAdoAdoAdoAaaaaaaaaaaaadsjdskdsldsmdsndsodspdsqdsrdssdstaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsudsvdswdsxdsydoBdmYdszddOaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaaedrodsAdrqaaedrodsAdrqaaedrodsAdrqaaedrodsAdrqaaedrodsAdrqaaeaazaaaaaeaaeaaacNBdrrdsBdrrcNBdrtdsCdrtcNBdrvdsDdrvcNBdoLdsEdsFdpMdrzdsGdqzdqzdqzdsHdsIdsJdsKdsLdsMdsNdsOdsPdsQdsRdsRdsSdrKdsTdpGdnycDCdsUdsVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlbdkadkbdsWdsXdsYdsZdtadkedkedkedkedkedkedkedkedkedkedkedkedkedtbdtcdtddtedtfdkidtgdqYdthdqSdqUdoAdoAdoAdoAdoAdoAdoAdoAdoAaaaaaaaaaaaadrhdrbdtidrddtjdkodtkdtldtmdtndtoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadtpdtqdtrdtsdttdoBdmYdtuddOaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaaadrodsAdrqaaadrodsAdrqaaadrodsAdrqaaadrodsAdrqaaadrodsAdrqaaaaaeaaaaaaaaeaaecNBcNBcNBcNBcNBcNBcNBcNBcNBcNBcNBcNBcNBdoLdsEdtvdpMdqvdqwdtwdqzdqzdqAdtxdpUdlIdomdtydpGdxJdtAdtBdtCdtDdtEdtFdtGdpGdtHcDCdtIdsVaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadpcdiYdpddpedpfdiZdiZdiZdiZdiZdiYdtJdkadkbdtKdqPdnAdlVdlXdkedkedkedkedkedkedkedkedkedkedkedkedkedqYdqSdthdqUdtLdkidkjdtMdnEaaaaaadoAdoAdoAdoAdoAdoAdoAdoAdoAaaaaaaaaaaaaaaaaaadnJdtNdkndkodtOdrhdtidrbdrdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadridrjdtPdrldtQdoBdmYdtRddOaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaaadpIaaaabGcPodqkcSScSRcPodqkcSScSRcPodqkcSScSRcPodoLdpKdpLdpMdNhdpOdpPdpQcRVdpSdpTdpUdpVdpWdpXdpGdpYdpZdqadqbdqcdqddqedqfdpGdnyczkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlUdlVdlWdqgdlYdkbdmSdkddlaaaaaaadkedkedkedkedkedkedkedkedkedkedkedkedkeaaaaaadnEdqhdmTdkidkjdqhdnEaaaaaadoAdoAdoAdoAdoAdoAdoAdoAdoAaaaaaaaaaaaaaaaaaadnJdkqdkndkodnLdkqdnJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnNdksdktdoBdmYddOddOaafaafaafaafaafaafaafaafdMRdLFdLFdMRaafdMRdMRdMRdMRdMRdMRdMRdMRaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaaaaaeaaeaaeaaaaaeaaeaaeaaaaaeaaeaaeaaaaaeaaeaaeaaaaaeaaeaaeaaaaayaaedqjaaeabGcPodqldqmdqncPodqodqpdqqcPodqrdqsdrrcPodoLdqtdqudpMdNidqwdqxdqydqzdqAdqBdpUdqCdqDdqEdpGdqFdqFdqGdqcdqcdqcdqfdqHdpGdnyczkdqIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqJdqKdqLdqMdqNdkbdqOdqPdlWdlVdqQdkedkedkedkedkedkedkedkedkedkedkedkedkedqRdqSdqTdqUdqVdqWdqXdqYdqTdqSdqZdoAdoAdoAdoAdoAdoAdoAdoAdoAaaaaaaaaaaaadradrbdrcdrddredrfdrgdrhdrcdrbdrdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadridrjdrkdrldrmdoBdmYdrnddOaafaafaafaafaafaafaafaafdMRdMRdMRdMRaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaaadrodrpdrqaaadrodrpdrqaaadrodrpdrqaaadrodrpdrqaaadrodrpdrqaaaaayaaeaaeaaaaaacPodrsdrtdrscPodrudrvdrucPodrwdsBdrwcPodoLdrxdrydpMdNjdrAdrBdqzdqzdrCdrDdrEdrFdrGdrHdrIdrJdrKdrLdrKdrKdrMdrKdrNdpGdnydMZdrPdrQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnzdlVdnAdqgdrRdrSdrTdrUdrVdrWdrXdkedkedkedkedkedkedkedkedkedkedkedkedkedrYdrZdsadsbdscdsddsedsfdsgdshdsidoAdoAdoAdoAdoAdoAdoAdoAdoAaaaaaaaaaaaadsjdskdsldsmdsndsodspdsqdsrdssdstaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsudsvdswdsxdsydoBdmYdszddOaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaaedrodsAdrqaaedrodsAdrqaaedrodsAdrqaaedrodsAdrqaaedrodsAdrqaaeaazaaaaaeaaeaaacPodrsdsCdrscPodrudsDdrucPodrwdBcdrwcPodoLdsEdsFdpMdrzdsGdqzdqzdqzdsHdsIdsJdsKdsLdsMdsNdsOdsPdsQdsRdsRdsSdrKdsTdpGdnycDCdsUdsVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlbdkadkbdsWdsXdsYdsZdtadkedkedkedkedkedkedkedkedkedkedkedkedkedtbdtcdtddtedtfdkidtgdqYdthdqSdqUdoAdoAdoAdoAdoAdoAdoAdoAdoAaaaaaaaaaaaadrhdrbdtidrddtjdkodtkdtldtmdtndtoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadtpdtqdtrdtsdttdoBdmYdtuddOaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaaadrodsAdrqaaadrodsAdrqaaadrodsAdrqaaadrodsAdrqaaadrodsAdrqaaaaaeaaaaaaaaeaaecPocPocPocPocPocPocPocPocPocPocPocPocPodoLdsEdtvdpMdqvdqwdtwdqzdqzdqAdtxdpUdlIdomdtydpGdxJdtAdtBdtCdtDdtEdtFdtGdpGdtHcDCdtIdsVaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadpcdiYdpddpedpfdiZdiZdiZdiZdiZdiYdtJdkadkbdtKdqPdnAdlVdlXdkedkedkedkedkedkedkedkedkedkedkedkedkedqYdqSdthdqUdtLdkidkjdtMdnEaaaaaadoAdoAdoAdoAdoAdoAdoAdoAdoAaaaaaaaaaaaaaaaaaadnJdtNdkndkodtOdrhdtidrbdrdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadridrjdtPdrldtQdoBdmYdtRddOaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaaadrodsAdrqaaadrodsAdrqaaadrodsAdrqaaadrodsAdrqaaadrodsAdrqaaaaaeaaaaaaaaaaaeaaeaaeaaeaaaaaaaaeaaeaaeaaaabGdtSdtSdtSdoLdtTdoLdpMdpNdtUdtVdtWdtXdtYdpMdpMdtZduadubdpGdpGducdtCdudduedufdtFdugdpGdnycDCduhdsVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaduiduiduiduiduiduiduiduiduiduiduiaaaaaaaaadjYdlbdujdukdmSdlbdlaaaaaaadkedkedkedkedkedkedkedkedkedkedkedkedkeaaaaaadnEdtMdmTduldumdmTdnEaaaaaadoAdoAdoAdoAdoAdoAdoAdoAdoAaaaaaaaaaaaaaaaaaadnJdnLdunduodnLdtNdnJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnNdupdktduqdurddOddOaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaayaayaaeaaadrodsAdrqaaadrodsAdrqaaadrodsAdrqaaadrodsAdrqaaadrodsAdrqaaaaaeaaaaaNaaaaaaaaedusdutdutdutdutdtSduuduvdtSdtSduwduwduxduyduzdpMdpMdpMdpMdpMdpMdpMdpMduAduBduCduDdMAdpGdpGdpGdpGdpGdpGdpGdpGdpGdnycDCduFdsVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaduiduiduiduiduiduiduiduiduiduiduiduidlUdlVdlWdqgdlYdkbdmSdnDdlaaaaaaadkedkedkedkedkedkedkedkedkedkedkedkedkeaaaaaadnEdnFdmTdkidkjduGdnEaaaaaadoAdoAdoAdoAdoAdoAdoAdoAdoAaaaaaaaaaaaaaaaaaadnJduHdkndkodnLdnMdnJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnNdnOdktdoBduIddOaafaafaafaafaafaafaafaafaafdImdImdImdImdImaafdIndIndIndIndInaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaduJduJduJduJduJduJduJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaaaaaSaaNaaaaaeduKaaeaaaaaeduKaaeaaaaaeduKaaeaaaaaeduKaaeaaaaaeduKaaeaaaduLaaUdMeduMduNduNduOduPduQduRduSduTduUduVduWduXduYduYduZdvadvbdvcdvddveduZduWdvfdvgdvhdvidvjdvkdvldvmdvndvodvpdvqdvrdvsdvtdvudvvdnydvwdvxdvyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaduiduiduiduiduiduiduiduiduiduiduiduidvzdvAdvBdvCdvDdvEdvFdlbdlaaaaaaadkedkedkedkedkedkedkedkedkedkedkedkedkeaaaaaadnEdtMdvGdvHdkjdmTdnEaaaaaadoAdoAdoAdoAdoAdoAdoAdoAdoAaaaaaaaaaaaaaaaaaadnJdnLdkndvIdvJdtNdnJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnNdupdvKdvLdmYddOaafaafaafaafaafaafaafaafaafdImdIodIpdIqdImaafdIndIrdJkdLndInaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaduJduJduJduJduJduJduJduJduJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
diff --git a/sound/metroid/metroidgamma.ogg b/sound/metroid/metroidgamma.ogg
new file mode 100644
index 0000000000..61533c9286
Binary files /dev/null and b/sound/metroid/metroidgamma.ogg differ
diff --git a/sound/metroid/metroidomega.ogg b/sound/metroid/metroidomega.ogg
new file mode 100644
index 0000000000..c9f584fd38
Binary files /dev/null and b/sound/metroid/metroidomega.ogg differ
diff --git a/sound/metroid/metroidomegadeath.ogg b/sound/metroid/metroidomegadeath.ogg
new file mode 100644
index 0000000000..02052b18cc
Binary files /dev/null and b/sound/metroid/metroidomegadeath.ogg differ
diff --git a/sound/metroid/metroidqueen.ogg b/sound/metroid/metroidqueen.ogg
new file mode 100644
index 0000000000..53229290e9
Binary files /dev/null and b/sound/metroid/metroidqueen.ogg differ
diff --git a/sound/metroid/metroidqueendeath.ogg b/sound/metroid/metroidqueendeath.ogg
new file mode 100644
index 0000000000..43619e6f46
Binary files /dev/null and b/sound/metroid/metroidqueendeath.ogg differ
diff --git a/sound/metroid/metroidzeta.ogg b/sound/metroid/metroidzeta.ogg
new file mode 100644
index 0000000000..8056ab0797
Binary files /dev/null and b/sound/metroid/metroidzeta.ogg differ
diff --git a/sound/misc/alarm1.ogg b/sound/misc/alarm1.ogg
new file mode 100644
index 0000000000..5bcf1ff636
Binary files /dev/null and b/sound/misc/alarm1.ogg differ
diff --git a/vorestation.dme b/vorestation.dme
index 4ca4ab30f7..5f06fb738c 100644
--- a/vorestation.dme
+++ b/vorestation.dme
@@ -1672,6 +1672,7 @@
#include "code\modules\events\apc_damage.dm"
#include "code\modules\events\atmos_leak.dm"
#include "code\modules\events\blob.dm"
+#include "code\modules\events\boss.dm"
#include "code\modules\events\brand_intelligence.dm"
#include "code\modules\events\camera_damage.dm"
#include "code\modules\events\canister_leak.dm"
@@ -1695,6 +1696,7 @@
#include "code\modules\events\ion_storm.dm"
#include "code\modules\events\meteor_strike_vr.dm"
#include "code\modules\events\meteors.dm"
+#include "code\modules\events\metroid_infestation.dm"
#include "code\modules\events\money_hacker.dm"
#include "code\modules\events\money_lotto.dm"
#include "code\modules\events\money_spam.dm"
@@ -1708,6 +1710,7 @@
#include "code\modules\events\space_ninja.dm"
#include "code\modules\events\spacevine.dm"
#include "code\modules\events\spider_infestation.dm"
+#include "code\modules\events\spiderling_infestation.dm"
#include "code\modules\events\spontaneous_appendicitis.dm"
#include "code\modules\events\spontaneous_appendicitis_vr.dm"
#include "code\modules\events\supply_demand.dm"