diff --git a/.gitignore b/.gitignore
index 3e5912dc36..ad65e8a856 100644
--- a/.gitignore
+++ b/.gitignore
@@ -12,6 +12,7 @@ cfg/
code/game/gamemodes/technomancer/spells/projectile/overload.dm
code/game/gamemodes/technomancer/spells/projectile/overload.dm
code/modules/client/preference_setup/loadout/loadout_xeno.dm
+temp.dmi
/maps/RandomZLevels/backup/blackmarketpackers.dmm
/maps/backup/virgo-1.dmm
/maps/backup/virgo-2.dmm
diff --git a/code/__defines/roguemining_vr.dm b/code/__defines/roguemining_vr.dm
new file mode 100644
index 0000000000..ffe55b7485
--- /dev/null
+++ b/code/__defines/roguemining_vr.dm
@@ -0,0 +1,10 @@
+//Some defines for the rogue miner.
+#define RM_STARTING_DIFF 100
+
+#define RM_DIFF_DECAY_TIME 18000
+#define RM_DIFF_DECAY_AMT -50
+
+#define RM_DIFF_VALUE_MOB 10
+#define RM_DIFF_VALUE_MOB_HARD 15
+#define RM_DIFF_VALUE_MOB_BOSS 100
+#define RM_DIFF_VALUE_ORE 5
\ No newline at end of file
diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm
index 6ff37e0449..a9dc68a6a7 100644
--- a/code/controllers/configuration.dm
+++ b/code/controllers/configuration.dm
@@ -190,7 +190,7 @@ var/list/gamemode_cache = list()
var/list/admin_levels= list(2) // Defines which Z-levels which are for admin functionality, for example including such areas as Central Command and the Syndicate Shuttle
var/list/contact_levels = list(1, 5) // Defines which Z-levels which, for example, a Code Red announcement may affect
var/list/player_levels = list(1, 3, 4, 5, 6) // Defines all Z-levels a character can typically reach
- var/list/sealed_levels = list() // Defines levels that do not allow random transit at the edges.
+ var/list/sealed_levels = list(7) // Defines levels that do not allow random transit at the edges.
// Event settings
var/expected_round_length = 3 * 60 * 60 * 10 // 3 hours
diff --git a/code/controllers/shuttle_controller.dm b/code/controllers/shuttle_controller.dm
index 49417ccd05..9a52780683 100644
--- a/code/controllers/shuttle_controller.dm
+++ b/code/controllers/shuttle_controller.dm
@@ -397,5 +397,20 @@ var/global/datum/shuttle_controller/shuttle_controller
AM.move_time = 60
AM.warmup_time = 8
shuttles["AwayMission"] = AM
-
//VOREStation Add End - Away-mission shuttle
+ ///////////////////////////////////////////////
+ //VOREStation Add - Belter Shuttle
+ shuttle = new/datum/shuttle/ferry()
+ shuttle.location = 0
+ shuttle.warmup_time = 6
+ shuttle.area_station = locate(/area/shuttle/belter/station)
+ shuttle.area_offsite = locate(/area/shuttle/belter/belt/zone1)
+ shuttle.area_transition = locate(/area/shuttle/belter/transit)
+ shuttle.docking_controller_tag = "belter_docking"
+ shuttle.dock_target_station = "belter_nodocking" //Fake tags to prevent the shuttle from opening doors.
+ shuttle.dock_target_offsite = "belter_nodocking"
+ shuttle.transit_direction = EAST
+ shuttle.move_time = 60 + rand(10,40)
+ process_shuttles += shuttle
+ shuttles["Belter"] = shuttle
+ //VOREStation Add End - Belter Shuttle
\ No newline at end of file
diff --git a/code/datums/uplink/announcements.dm b/code/datums/uplink/announcements.dm
index 58baa14e8e..d97e15b7ee 100644
--- a/code/datums/uplink/announcements.dm
+++ b/code/datums/uplink/announcements.dm
@@ -28,6 +28,16 @@
return list("title" = title, "message" = message)
/datum/uplink_item/abstract/announcements/fake_centcom/get_goods(var/obj/item/device/uplink/U, var/loc, var/mob/user, var/list/args)
+ for (var/obj/machinery/computer/communications/C in machines)
+ if(! (C.stat & (BROKEN|NOPOWER) ) )
+ var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( C.loc )
+ P.name = "'[command_name()] Update.'"
+ P.info = replacetext(args["message"], "\n", "
")
+ P.update_space(P.info)
+ P.update_icon()
+ C.messagetitle.Add(args["title"])
+ C.messagetext.Add(P.info)
+
command_announcement.Announce(args["message"], args["title"])
return 1
diff --git a/code/game/antagonist/outsider/mercenary.dm b/code/game/antagonist/outsider/mercenary.dm
index f4d92e4261..f3cc85f685 100644
--- a/code/game/antagonist/outsider/mercenary.dm
+++ b/code/game/antagonist/outsider/mercenary.dm
@@ -16,8 +16,8 @@ var/datum/antagonist/mercenary/mercs
hard_cap = 4
hard_cap_round = 8
- initial_spawn_req = 4
- initial_spawn_target = 6
+ initial_spawn_req = 3
+ initial_spawn_target = 4
/datum/antagonist/mercenary/New()
..()
diff --git a/code/game/antagonist/outsider/raider.dm b/code/game/antagonist/outsider/raider.dm
index ae77e8f216..a841e15476 100644
--- a/code/game/antagonist/outsider/raider.dm
+++ b/code/game/antagonist/outsider/raider.dm
@@ -14,8 +14,8 @@ var/datum/antagonist/raider/raiders
hard_cap = 6
hard_cap_round = 10
- initial_spawn_req = 4
- initial_spawn_target = 6
+ initial_spawn_req = 3
+ initial_spawn_target = 4
id_type = /obj/item/weapon/card/id/syndicate
diff --git a/code/game/area/Space Station 13 areas_vr.dm b/code/game/area/Space Station 13 areas_vr.dm
index 2889416e95..f210187668 100644
--- a/code/game/area/Space Station 13 areas_vr.dm
+++ b/code/game/area/Space Station 13 areas_vr.dm
@@ -39,6 +39,7 @@
icon_state = "teleporter"
music = "signal"
+// New shuttles
/area/shuttle/administration/transit
name = "Deep Space (AS)"
icon_state = "shuttle"
@@ -62,3 +63,48 @@
/area/shuttle/awaymission/oldengbase
name = "Old Construction Site (AM)"
icon_state = "shuttle2"
+
+/area/shuttle/belter/station
+ name = "Belter Shuttle Landed"
+ icon_state = "shuttle2"
+ base_turf = /turf/simulated/floor/tiled/asteroid_steel/airless
+
+/area/shuttle/belter/belt //Don't use this one, use a subtype
+ name = "Belter Shuttle Holding Position"
+ icon_state = "shuttle2"
+
+//Placeholders
+/area/shuttle/belter/belt/zone1
+/area/shuttle/belter/belt/zone2
+/area/shuttle/belter/belt/zone3
+/area/shuttle/belter/belt/zone4
+
+/area/shuttle/belter/transit
+ name = "Belter Shuttle Warp"
+ icon_state = "shuttle"
+
+//Rouguelike Mining
+/area/asteroid/rogue
+ var/asteroid_spawns = list()
+ var/mob_spawns = list()
+ var/shuttle_area //It would be neat if this were more dynamic, but eh.
+
+/area/asteroid/rogue/zone1
+ name = "Asteroid Belt Zone 1"
+ icon_state = "red2"
+ shuttle_area = /area/shuttle/belter/belt/zone1
+
+/area/asteroid/rogue/zone2
+ name = "Asteroid Belt Zone 2"
+ icon_state = "blue2"
+ shuttle_area = /area/shuttle/belter/belt/zone2
+
+/area/asteroid/rogue/zone3
+ name = "Asteroid Belt Zone 3"
+ icon_state = "blue2"
+ shuttle_area = /area/shuttle/belter/belt/zone3
+
+/area/asteroid/rogue/zone4
+ name = "Asteroid Belt Zone 4"
+ icon_state = "red2"
+ shuttle_area = /area/shuttle/belter/belt/zone4
\ No newline at end of file
diff --git a/code/game/gamemodes/heist/heist.dm b/code/game/gamemodes/heist/heist.dm
index f91191fac5..9658cc0a81 100644
--- a/code/game/gamemodes/heist/heist.dm
+++ b/code/game/gamemodes/heist/heist.dm
@@ -7,9 +7,9 @@ var/global/list/obj/cortical_stacks = list() //Stacks for 'leave nobody behind'
/datum/game_mode/heist
name = "Heist"
config_tag = "heist"
- required_players = 15
- required_players_secret = 15
- required_enemies = 4
+ required_players = 8
+ required_players_secret = 8
+ required_enemies = 3
round_description = "An unidentified bluespace signature is approaching the station!"
extended_round_description = "The Company's majority control of phoron in "+starsys_name+" has marked the \
station to be a highly valuable target for many competing organizations and individuals. Being a \
diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm
index 3bf4299cd2..8e273f9adb 100644
--- a/code/game/gamemodes/nuclear/nuclear.dm
+++ b/code/game/gamemodes/nuclear/nuclear.dm
@@ -12,9 +12,9 @@ var/list/nuke_disks = list()
colony of sizable population and considerable wealth causes it to often be the target of various \
attempts of robbery, fraud and other malicious actions."
config_tag = "mercenary"
- required_players = 15
- required_players_secret = 15
- required_enemies = 1
+ required_players = 8
+ required_players_secret = 8
+ required_enemies = 3
end_on_antag_death = 0
var/nuke_off_station = 0 //Used for tracking if the syndies actually haul the nuke to the station
var/syndies_didnt_escape = 0 //Used for tracking if the syndies got the shuttle off of the z-level
diff --git a/code/game/machinery/adv_med.dm b/code/game/machinery/adv_med.dm
index 5efd83bb92..c503a5d4bd 100644
--- a/code/game/machinery/adv_med.dm
+++ b/code/game/machinery/adv_med.dm
@@ -158,7 +158,7 @@
//Body Scan Console
/obj/machinery/body_scanconsole
var/obj/machinery/bodyscanner/scanner
- var/known_implants = list(/obj/item/weapon/implant/chem, /obj/item/weapon/implant/death_alarm, /obj/item/weapon/implant/loyalty, /obj/item/weapon/implant/tracking)
+ var/known_implants = list(/obj/item/weapon/implant/health, /obj/item/weapon/implant/chem, /obj/item/weapon/implant/death_alarm, /obj/item/weapon/implant/loyalty, /obj/item/weapon/implant/tracking, /obj/item/weapon/implant/language, /obj/item/weapon/implant/language/eal)
var/delete
var/temphtml
name = "Body Scanner Console"
diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm
index 7c46651419..f30e3b4cfb 100644
--- a/code/game/machinery/camera/camera.dm
+++ b/code/game/machinery/camera/camera.dm
@@ -123,6 +123,7 @@
if(user.species.can_shred(user))
set_status(0)
user.do_attack_animation(src)
+ user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
visible_message("\The [user] slashes at [src]!")
playsound(src.loc, 'sound/weapons/slash.ogg', 100, 1)
add_hiddenprint(user)
diff --git a/code/game/machinery/computer/aifixer.dm b/code/game/machinery/computer/aifixer.dm
index e6577f3097..de81fbb0fa 100644
--- a/code/game/machinery/computer/aifixer.dm
+++ b/code/game/machinery/computer/aifixer.dm
@@ -10,6 +10,7 @@
var/active = 0
/obj/machinery/computer/aifixer/New()
+ ..()
update_icon()
/obj/machinery/computer/aifixer/proc/load_ai(var/mob/living/silicon/ai/transfer, var/obj/item/device/aicard/card, var/mob/user)
diff --git a/code/game/machinery/computer/camera.dm b/code/game/machinery/computer/camera.dm
index 03d3c1170f..9e34252ebd 100644
--- a/code/game/machinery/computer/camera.dm
+++ b/code/game/machinery/computer/camera.dm
@@ -253,7 +253,7 @@
desc = "Used to access the various cameras on the outpost."
icon_keyboard = "mining_key"
icon_screen = "mining"
- network = list("MINE")
+ network = list("Mining Outpost")
circuit = /obj/item/weapon/circuitboard/security/mining
light_color = "#F9BBFC"
diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm
index ecd20ae76e..bf384a401e 100644
--- a/code/game/machinery/cryopod.dm
+++ b/code/game/machinery/cryopod.dm
@@ -413,7 +413,7 @@
if(istype(W,/obj/item/weapon/implant/health))
for(var/obj/machinery/computer/cloning/com in world)
for(var/datum/dna2/record/R in com.records)
- if(R.implant == W)
+ if(locate(R.implant) == W)
qdel(R)
qdel(W)
diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm
index 383cc1b3a4..1655ca4c74 100644
--- a/code/game/machinery/doors/airlock.dm
+++ b/code/game/machinery/doors/airlock.dm
@@ -746,6 +746,7 @@ About the new airlock wires panel:
return
src.add_fingerprint(user)
+ if (attempt_vr(src,"attackby_vr",list(C, user))) return
if(istype(C, /mob/living))
..()
return
diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm
index 185de7f06d..dd8e868d8a 100644
--- a/code/game/machinery/doors/door.dm
+++ b/code/game/machinery/doors/door.dm
@@ -202,6 +202,8 @@
/obj/machinery/door/attackby(obj/item/I as obj, mob/user as mob)
src.add_fingerprint(user)
+ if (attempt_vr(src,"attackby_vr",list(I, user))) return
+
if(istype(I, /obj/item/stack/material) && I.get_material_name() == src.get_material_name())
if(stat & BROKEN)
user << "It looks like \the [src] is pretty busted. It's going to need more than just patching up now."
diff --git a/code/game/machinery/doors/door_vr.dm b/code/game/machinery/doors/door_vr.dm
new file mode 100644
index 0000000000..e38dcd851d
--- /dev/null
+++ b/code/game/machinery/doors/door_vr.dm
@@ -0,0 +1,93 @@
+/turf/simulated/floor/proc/adjacent_fire_act_vr(turf/simulated/floor/adj_turf, datum/gas_mixture/adj_air, adj_temp, adj_volume)
+ for(var/obj/machinery/door/D in src) //makes doors next to fire affected by fire
+ D.fire_act(adj_air, adj_temp, adj_volume)
+
+/obj/machinery/door
+ var/obj/item/stack/material/plasteel/reinforcing //vorestation addition
+
+/obj/machinery/door/firedoor
+ heat_proof = 1
+
+/obj/machinery/door/airlock/vault
+ heat_proof = 1
+
+/obj/machinery/door/airlock/hatch
+ heat_proof = 1
+
+/obj/machinery/door/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
+ var/maxtemperature = 1800 //same as a normal steel wall
+ var/destroytime = 20 //effectively gives an airlock 200HP between breaking and completely disintegrating
+ if(heat_proof)
+ maxtemperature = 6000 //same as a plasteel rwall
+ destroytime = 50 //fireproof airlocks need to take 500 damage after breaking before they're destroyed
+
+ if(exposed_temperature > maxtemperature)
+ var/burndamage = log(RAND_F(0.9, 1.1) * (exposed_temperature - maxtemperature))
+ if (burndamage && health <= 0) //once they break, start taking damage to destroy_hits
+ destroy_hits -= (burndamage / destroytime)
+ if (destroy_hits <= 0)
+ visible_message("\The [src.name] disintegrates!")
+ new /obj/effect/decal/cleanable/ash(src.loc) // Turn it to ashes!
+ qdel(src)
+ take_damage(burndamage)
+
+ return ..()
+
+/obj/machinery/door/proc/attackby_vr(obj/item/I as obj, mob/user as mob)
+ if(istype(I, /obj/item/stack/material) && I.get_material_name() == "plasteel") // Add heat shielding if it isn't already.
+ if(!heat_proof)
+ var/obj/item/stack/stack = I
+ var/transfer
+ var/amount_needed = 2
+ if (stack.amount >= amount_needed)
+ if(stat & BROKEN)
+ user << "It looks like \the [src] is pretty busted. There's not much point reinforcing it."
+ return 1
+ if (reinforcing)
+ transfer = stack.transfer_to(reinforcing, amount_needed - reinforcing.amount)
+ if (!transfer)
+ user << "You must weld or remove \the [reinforcing] from \the [src] before you can add anything else."
+ return 1
+ else
+ reinforcing = stack.split(amount_needed)
+ if (reinforcing)
+ reinforcing.loc = src
+ transfer = reinforcing.amount
+
+ if (transfer)
+ user << "You fit [transfer] [stack.singular_name]\s to \the [src]."
+ return 1
+ return 0
+
+ if(reinforcing && istype(I, /obj/item/weapon/weldingtool))
+ if(!density)
+ user << "\The [src] must be closed before you can repair it."
+ return 1
+
+ var/obj/item/weapon/weldingtool/welder = I
+ if(welder.remove_fuel(0,user))
+ user << "You start to weld \the [reinforcing] into place."
+ playsound(src, 'sound/items/Welder.ogg', 100, 1)
+ if(do_after(user, 5 * reinforcing.amount) && welder && welder.isOn())
+ user << "You finish reinforcing \the [src]."
+ heat_proof = 1
+ update_icon()
+ qdel(reinforcing)
+ reinforcing = null
+ return 1
+
+ if(reinforcing && istype(I, /obj/item/weapon/crowbar))
+ user << "You remove \the [reinforcing]."
+ playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1)
+ reinforcing.loc = user.loc
+ reinforcing = null
+ return 1
+ return 0
+
+/obj/machinery/door/blast/regular/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
+ return // blast doors are immune to fire completely.
+
+/obj/machinery/door/blast/regular/
+ heat_proof = 1 //just so repairing them doesn't try to fireproof something that never takes fire damage
+
+
diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm
index 2ac0c2a48d..13352a1645 100644
--- a/code/game/machinery/doors/windowdoor.dm
+++ b/code/game/machinery/doors/windowdoor.dm
@@ -160,6 +160,8 @@
if(H.species.can_shred(H))
playsound(src.loc, 'sound/effects/Glasshit.ogg', 75, 1)
visible_message("[user] smashes against the [src.name].", 1)
+ user.do_attack_animation(src)
+ user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
take_damage(25)
return
return src.attackby(user, user)
diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm
index 6f2ea5129d..64fc0c4a8f 100644
--- a/code/game/machinery/vending.dm
+++ b/code/game/machinery/vending.dm
@@ -780,8 +780,8 @@
name = "SweatMAX"
desc = "Fueled by your inner inadequacy!"
icon_state = "fitness"
- products = list(/obj/item/weapon/reagent_containers/food/drinks/milk/smallcarton = 8,
- /obj/item/weapon/reagent_containers/food/drinks/milk/smallcarton/chocolate = 8,
+ products = list(/obj/item/weapon/reagent_containers/food/drinks/smallmilk = 8,
+ /obj/item/weapon/reagent_containers/food/drinks/smallchocmilk = 8,
/obj/item/weapon/reagent_containers/food/drinks/glass2/fitnessflask/proteinshake = 8,
/obj/item/weapon/reagent_containers/food/drinks/glass2/fitnessflask = 8,
/obj/item/weapon/reagent_containers/food/snacks/candy/proteinbar = 8,
@@ -789,8 +789,8 @@
/obj/item/weapon/reagent_containers/pill/diet = 8,
/obj/item/weapon/towel/random = 8)
- prices = list(/obj/item/weapon/reagent_containers/food/drinks/milk/smallcarton = 3,
- /obj/item/weapon/reagent_containers/food/drinks/milk/smallcarton/chocolate = 3,
+ prices = list(/obj/item/weapon/reagent_containers/food/drinks/smallmilk = 3,
+ /obj/item/weapon/reagent_containers/food/drinks/smallchocmilk = 3,
/obj/item/weapon/reagent_containers/food/drinks/glass2/fitnessflask/proteinshake = 20,
/obj/item/weapon/reagent_containers/food/drinks/glass2/fitnessflask = 5,
/obj/item/weapon/reagent_containers/food/snacks/candy/proteinbar = 5,
diff --git a/code/game/machinery/vending_vr.dm b/code/game/machinery/vending_vr.dm
index 8bfbff7754..203e5c03a4 100644
--- a/code/game/machinery/vending_vr.dm
+++ b/code/game/machinery/vending_vr.dm
@@ -11,7 +11,16 @@
products = list(/obj/item/weapon/handcuffs = 8,/obj/item/weapon/grenade/flashbang = 4,/obj/item/device/flash = 5,
/obj/item/weapon/reagent_containers/food/snacks/donut/normal = 12,/obj/item/weapon/storage/box/evidence = 6,
/obj/item/weapon/gun/energy/taser = 8,/obj/item/weapon/gun/energy/stunrevolver = 4,
- /obj/item/weapon/reagent_containers/spray/pepper = 6,/obj/item/taperoll/police = 6)
+ /obj/item/weapon/reagent_containers/spray/pepper = 6,/obj/item/taperoll/police = 6,
+ /obj/item/weapon/gun/projectile/sec/flash = 4, /obj/item/ammo_magazine/c45m/flash = 8)
+
+
+/obj/machinery/vending/tool
+ products = list(/obj/item/stack/cable_coil/random = 10,/obj/item/weapon/crowbar = 5,/obj/item/weapon/weldingtool = 3,/obj/item/weapon/wirecutters = 5,
+ /obj/item/weapon/wrench = 5,/obj/item/device/analyzer = 5,/obj/item/device/t_scanner = 5,/obj/item/weapon/screwdriver = 5,
+ /obj/item/device/flashlight/glowstick = 3, /obj/item/device/flashlight/glowstick/red = 3, /obj/item/device/flashlight/glowstick/blue = 3,
+ /obj/item/device/flashlight/glowstick/orange =3, /obj/item/device/flashlight/glowstick/yellow = 3, /obj/item/weapon/reagent_containers/spray/windowsealant = 5)
+
/*
var/list/log = list()
var/req_log_access = access_armory
diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm
index b742b8a14b..09ff0075db 100644
--- a/code/game/mecha/mecha.dm
+++ b/code/game/mecha/mecha.dm
@@ -173,7 +173,7 @@
cell = C
return
cell = new(src)
- cell.name = "high-capacity power cell"
+ cell.name = "mecha power cell"
cell.charge = 15000
cell.maxcharge = 15000
@@ -514,6 +514,7 @@
if(H.species.can_shred(user))
if(!prob(src.deflect_chance))
src.take_damage(15)
+ user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
src.check_for_internal_damage(list(MECHA_INT_TEMP_CONTROL,MECHA_INT_TANK_BREACH,MECHA_INT_CONTROL_LOST))
playsound(src.loc, 'sound/weapons/slash.ogg', 50, 1, -1)
user << "You slash at the armored suit!"
diff --git a/code/game/objects/effects/spiders.dm b/code/game/objects/effects/spiders.dm
index b7b258f5d6..1077d757ae 100644
--- a/code/game/objects/effects/spiders.dm
+++ b/code/game/objects/effects/spiders.dm
@@ -77,6 +77,8 @@
desc = "They seem to pulse slightly with an inner life"
icon_state = "eggs"
var/amount_grown = 0
+ var/spiders_min = 6
+ var/spiders_max = 24
New()
pixel_x = rand(3,-3)
pixel_y = rand(3,-3)
@@ -97,7 +99,7 @@
/obj/effect/spider/eggcluster/process()
amount_grown += rand(0,2)
if(amount_grown >= 100)
- var/num = rand(6,24)
+ var/num = rand(spiders_min, spiders_max)
var/obj/item/organ/external/O = null
if(istype(loc, /obj/item/organ/external))
O = loc
@@ -108,6 +110,10 @@
O.implants += spiderling
qdel(src)
+/obj/effect/spider/eggcluster/small
+ spiders_min = 1
+ spiders_max = 3
+
/obj/effect/spider/spiderling
name = "spiderling"
desc = "It never stays still for long."
diff --git a/code/game/objects/items/devices/flash.dm b/code/game/objects/items/devices/flash.dm
index b553f4416c..d1a5b63e82 100644
--- a/code/game/objects/items/devices/flash.dm
+++ b/code/game/objects/items/devices/flash.dm
@@ -86,7 +86,7 @@
if(C.stat != DEAD)
var/safety = C.eyecheck()
if(safety <= 0)
- var/flash_strength = 5
+ var/flash_strength = 10 //Vorestation edit, making flashes behave the same as flash rounds
if(ishuman(C))
var/mob/living/carbon/human/H = C
flash_strength *= H.species.flash_mod
diff --git a/code/game/objects/items/devices/flash_vr.dm b/code/game/objects/items/devices/flash_vr.dm
new file mode 100644
index 0000000000..dcc7b1a0f4
--- /dev/null
+++ b/code/game/objects/items/devices/flash_vr.dm
@@ -0,0 +1,2 @@
+/obj/item/device/flash
+ halloss_per_flash = 22
\ No newline at end of file
diff --git a/code/game/objects/items/weapons/circuitboards/computer/camera_monitor.dm b/code/game/objects/items/weapons/circuitboards/computer/camera_monitor.dm
index c46c519e9e..fc981a9e8c 100644
--- a/code/game/objects/items/weapons/circuitboards/computer/camera_monitor.dm
+++ b/code/game/objects/items/weapons/circuitboards/computer/camera_monitor.dm
@@ -26,7 +26,7 @@
/obj/item/weapon/circuitboard/security/mining
name = T_BOARD("mining camera monitor")
build_path = /obj/machinery/computer/security/mining
- network = list("MINE")
+ network = list("Mining Outpost")
req_access = list()
/obj/item/weapon/circuitboard/security/telescreen/entertainment
diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm
index 49d0238c13..06fd49d0e3 100644
--- a/code/game/objects/items/weapons/storage/belt.dm
+++ b/code/game/objects/items/weapons/storage/belt.dm
@@ -285,4 +285,59 @@
/obj/item/weapon/anobattery,
/obj/item/device/ano_scanner,
/obj/item/weapon/pickaxe/hand
- )
\ No newline at end of file
+ )
+
+/obj/item/weapon/storage/belt/fannypack
+ name = "leather fannypack"
+ desc = "A dorky fannypack for keeping small items in."
+ icon_state = "fannypack_leather"
+ item_state = "fannypack_leather"
+ max_w_class = ITEMSIZE_SMALL
+ storage_slots = null
+ max_storage_space = ITEMSIZE_COST_NORMAL * 2
+
+/obj/item/weapon/storage/belt/fannypack/black
+ name = "black fannypack"
+ icon_state = "fannypack_black"
+ item_state = "fannypack_black"
+
+/obj/item/weapon/storage/belt/fannypack/blue
+ name = "blue fannypack"
+ icon_state = "fannypack_blue"
+ item_state = "fannypack_blue"
+
+/obj/item/weapon/storage/belt/fannypack/cyan
+ name = "cyan fannypack"
+ icon_state = "fannypack_cyan"
+ item_state = "fannypack_cyan"
+
+/obj/item/weapon/storage/belt/fannypack/green
+ name = "green fannypack"
+ icon_state = "fannypack_green"
+ item_state = "fannypack_green"
+
+/obj/item/weapon/storage/belt/fannypack/orange
+ name = "orange fannypack"
+ icon_state = "fannypack_orange"
+ item_state = "fannypack_orange"
+
+/obj/item/weapon/storage/belt/fannypack/purple
+ name = "purple fannypack"
+ icon_state = "fannypack_purple"
+ item_state = "fannypack_purple"
+
+/obj/item/weapon/storage/belt/fannypack/red
+ name = "red fannypack"
+ icon_state = "fannypack_red"
+ item_state = "fannypack_red"
+
+/obj/item/weapon/storage/belt/fannypack/white
+ name = "white fannypack"
+ icon_state = "fannypack_white"
+ item_state = "fannypack_white"
+
+/obj/item/weapon/storage/belt/fannypack/yellow
+ name = "yellow fannypack"
+ icon_state = "fannypack_yellow"
+ item_state = "fannypack_yellow"
+
diff --git a/code/game/objects/items/weapons/storage/internal.dm b/code/game/objects/items/weapons/storage/internal.dm
index 5845bd7c31..5457c860e5 100644
--- a/code/game/objects/items/weapons/storage/internal.dm
+++ b/code/game/objects/items/weapons/storage/internal.dm
@@ -50,10 +50,10 @@
if (!( user.restrained() ) && !( user.stat ))
switch(over_object.name)
if("r_hand")
- user.u_equip(master_item)
+ user.unEquip(master_item)
user.put_in_r_hand(master_item)
if("l_hand")
- user.u_equip(master_item)
+ user.unEquip(master_item)
user.put_in_l_hand(master_item)
master_item.add_fingerprint(user)
return 0
diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm
index 8c1c47713a..3846a44d2b 100644
--- a/code/game/objects/items/weapons/storage/storage.dm
+++ b/code/game/objects/items/weapons/storage/storage.dm
@@ -77,10 +77,10 @@
switch(over_object.name)
if("r_hand")
- usr.u_equip(src)
+ usr.unEquip(src)
usr.put_in_r_hand(src)
if("l_hand")
- usr.u_equip(src)
+ usr.unEquip(src)
usr.put_in_l_hand(src)
src.add_fingerprint(usr)
diff --git a/code/game/objects/random/random_vr.dm b/code/game/objects/random/random_vr.dm
index 0ccc5ee6e5..4c1d5d0d94 100644
--- a/code/game/objects/random/random_vr.dm
+++ b/code/game/objects/random/random_vr.dm
@@ -129,4 +129,30 @@
prob(1);/obj/item/ammo_magazine/stg,\
prob(1);/obj/item/ammo_magazine/tommydrum,\
prob(1);/obj/item/ammo_magazine/tommymag
- )
\ No newline at end of file
+ )
+
+/obj/random/cargopod
+ name = "Random Cargo Item"
+ desc = "Hot Stuff."
+ icon = 'icons/obj/items.dmi'
+ icon_state = "purplecomb"
+ spawn_nothing_percentage = 0
+/obj/random/cargopod/item_to_spawn()
+ return pick(prob(6);/obj/item/weapon/storage/pill_bottle/tramadol,
+ prob(8);/obj/item/weapon/haircomb,
+ prob(4);/obj/item/weapon/storage/pill_bottle/happy,
+ prob(4);/obj/item/weapon/storage/pill_bottle/zoom,
+ prob(10);/obj/item/weapon/contraband/poster,
+ prob(4);/obj/item/weapon/material/butterfly,
+ prob(6);/obj/item/weapon/material/butterflyblade,
+ prob(6);/obj/item/weapon/material/butterflyhandle,
+ prob(6);/obj/item/weapon/material/wirerod,
+ prob(2);/obj/item/weapon/material/butterfly/switchblade,
+ prob(2);/obj/item/weapon/material/knuckledusters,
+ prob(1);/obj/item/weapon/material/hatchet/tacknife,
+ prob(1);/obj/item/clothing/suit/storage/vest/heavy/merc,
+ prob(1);/obj/item/weapon/beartrap,
+ prob(1);/obj/item/weapon/handcuffs,
+ prob(1);/obj/item/weapon/legcuffs,
+ prob(2);/obj/item/weapon/reagent_containers/syringe/drugs,
+ prob(1);/obj/item/weapon/reagent_containers/syringe/steroid)
\ No newline at end of file
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm
index f79203c3ba..27afc72d93 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm
@@ -37,6 +37,7 @@
new /obj/item/taperoll/engineering(src)
new /obj/item/clothing/suit/storage/hooded/wintercoat/engineering(src)
new /obj/item/weapon/tank/emergency/oxygen/engi(src)
+ new /obj/item/weapon/reagent_containers/spray/windowsealant(src) //vorestation addition
return
@@ -128,6 +129,7 @@
new /obj/item/taperoll/engineering(src)
new /obj/item/clothing/suit/storage/hooded/wintercoat/engineering(src)
new /obj/item/weapon/tank/emergency/oxygen/engi(src)
+ new /obj/item/weapon/reagent_containers/spray/windowsealant(src) //vorestation addition
return
diff --git a/code/game/objects/structures/crates_lockers/closets/utility_closets.dm b/code/game/objects/structures/crates_lockers/closets/utility_closets.dm
index 5c8aa2b2e0..07dfb6b2fe 100644
--- a/code/game/objects/structures/crates_lockers/closets/utility_closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets/utility_closets.dm
@@ -137,7 +137,8 @@
new /obj/item/clothing/gloves/yellow(src)
if(prob(40))
new /obj/item/clothing/head/hardhat(src)
-
+ if(prob(30))
+ new /obj/item/weapon/reagent_containers/spray/windowsealant(src) //vorestation addition
/*
* Radiation Closet
diff --git a/code/game/objects/structures/crates_lockers/crates_vr.dm b/code/game/objects/structures/crates_lockers/crates_vr.dm
index 35ec2d41cd..c2a5cee915 100644
--- a/code/game/objects/structures/crates_lockers/crates_vr.dm
+++ b/code/game/objects/structures/crates_lockers/crates_vr.dm
@@ -5,11 +5,7 @@
if(!(Proj.damage_type == BRUTE || Proj.damage_type == BURN))
return
- health -= Proj.damage
-
- ..()
-
- if(locked && tamper_proof && health <= 0)
+ if(locked && tamper_proof && health <= Proj.damage)
if(tamper_proof == 2) // Mainly used for events to prevent any chance of opening the box improperly.
visible_message("The anti-tamper mechanism of [src] triggers an explosion!")
var/turf/T = get_turf(src.loc)
@@ -33,9 +29,6 @@
visible_message("The anti-tamper mechanism of [src] fails!")
return
- if(health <= 0)
- for(var/atom/movable/A as mob|obj in src)
- A.loc = src.loc
- qdel(src)
+ ..()
return
\ No newline at end of file
diff --git a/code/game/turfs/flooring/shuttle_vr.dm b/code/game/turfs/flooring/shuttle_vr.dm
new file mode 100644
index 0000000000..f7f1b6e497
--- /dev/null
+++ b/code/game/turfs/flooring/shuttle_vr.dm
@@ -0,0 +1,10 @@
+//Airless versions of shuttle floor tiles.
+/turf/simulated/shuttle/floor/airless
+ oxygen = 0
+ nitrogen = 0
+ temperature = TCMB
+
+/turf/simulated/shuttle/plating/airless
+ oxygen = 0
+ nitrogen = 0
+ temperature = TCMB
diff --git a/code/game/turfs/simulated/floor_acts.dm b/code/game/turfs/simulated/floor_acts.dm
index ee42c625fe..fac9fe3d06 100644
--- a/code/game/turfs/simulated/floor_acts.dm
+++ b/code/game/turfs/simulated/floor_acts.dm
@@ -43,3 +43,5 @@
for(var/obj/structure/window/W in src)
if(W.dir == dir_to || W.is_fulltile()) //Same direction or diagonal (full tile)
W.fire_act(adj_air, adj_temp, adj_volume)
+
+ attempt_vr(src,"adjacent_fire_act_vr",list(adj_turf,adj_air,adj_temp,adj_volume))
diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm
index b5444ec6c7..c42c65654d 100644
--- a/code/modules/admin/admin.dm
+++ b/code/modules/admin/admin.dm
@@ -1245,7 +1245,7 @@ proc/admin_notice(var/message, var/rights)
M = whom
C = M.client
else
- return "(*not an mob*)"
+ return "(*not a mob*)"
switch(detail)
if(0)
return "[key_name(C, link, name, highlight_special)]"
@@ -1255,15 +1255,15 @@ proc/admin_notice(var/message, var/rights)
if(2) //Admins
var/ref_mob = "\ref[M]"
- return "[key_name(C, link, name, highlight_special)](?) (PP) (VV) (SM) ([admin_jump_link(M, src)]) (CA)"
+ return "[key_name(C, link, name, highlight_special)](?) (PP) (VV) (SM) ([admin_jump_link(M, src)]) (CA) (TAKE)"
if(3) //Devs
var/ref_mob = "\ref[M]"
- return "[key_name(C, link, name, highlight_special)](VV)([admin_jump_link(M, src)])"
+ return "[key_name(C, link, name, highlight_special)](VV)([admin_jump_link(M, src)]) (TAKE)"
if(4) //Mentors
var/ref_mob = "\ref[M]"
- return "[key_name(C, link, name, highlight_special)] (?) (PP) (VV) (SM) ([admin_jump_link(M, src)])"
+ return "[key_name(C, link, name, highlight_special)] (?) (PP) (VV) (SM) ([admin_jump_link(M, src)]) (TAKE)"
/proc/ishost(whom)
diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm
index 9fc8e43e73..b5e0f93682 100644
--- a/code/modules/admin/admin_verbs.dm
+++ b/code/modules/admin/admin_verbs.dm
@@ -195,6 +195,7 @@ var/list/admin_verbs_debug = list(
/client/proc/SDQL_query,
/client/proc/SDQL2_query,
/client/proc/Jump,
+ /client/proc/debug_rogueminer,
/client/proc/jumptomob,
/client/proc/jumptocoord,
/client/proc/dsay,
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm
index fe427b54d8..a545bc1e87 100644
--- a/code/modules/admin/topic.dm
+++ b/code/modules/admin/topic.dm
@@ -1218,6 +1218,18 @@
else if(href_list["check_antagonist"])
check_antagonists()
+ else if(href_list["take_question"])
+
+ var/mob/M = locate(href_list["take_question"])
+ if(ismob(M))
+ var/take_msg = "ADMINHELP: [key_name(usr.client)] is attending to [key_name(M)]'s adminhelp, please don't dogpile them."
+ for(var/client/X in admins)
+ if((R_ADMIN|R_MOD|R_MENTOR) & X.holder.rights)
+ to_chat(X, take_msg)
+ to_chat(M, "Your adminhelp is being attended to by [usr.client]. Thanks for your patience!")
+ else
+ to_chat(usr, "Unable to locate mob.")
+
else if(href_list["adminplayerobservecoodjump"])
if(!check_rights(R_ADMIN|R_SERVER|R_MOD)) return
diff --git a/code/modules/assembly/signaler.dm b/code/modules/assembly/signaler.dm
index 4a261a3d98..169ab9b6a0 100644
--- a/code/modules/assembly/signaler.dm
+++ b/code/modules/assembly/signaler.dm
@@ -1,6 +1,6 @@
/obj/item/device/assembly/signaler
name = "remote signaling device"
- desc = "Used to remotely activate devices."
+ desc = "Used to remotely activate devices. Tap against another secured signaler to transfer configuration."
icon_state = "signaller"
item_state = "signaler"
origin_tech = list(TECH_MAGNET = 1)
@@ -98,6 +98,15 @@
return
+ attackby(obj/item/weapon/W, mob/user, params)
+ if(issignaler(W))
+ var/obj/item/device/assembly/signaler/signaler2 = W
+ if(secured && signaler2.secured)
+ code = signaler2.code
+ frequency = signaler2.frequency
+ user << "You transfer the frequency and code of [signaler2] to [src]"
+ else
+ ..()
proc/signal()
if(!radio_connection) return
diff --git a/code/modules/client/preference_setup/loadout/loadout_accessories.dm b/code/modules/client/preference_setup/loadout/loadout_accessories.dm
index 3441962ef0..a7472c388f 100644
--- a/code/modules/client/preference_setup/loadout/loadout_accessories.dm
+++ b/code/modules/client/preference_setup/loadout/loadout_accessories.dm
@@ -280,6 +280,18 @@
path = /obj/item/clothing/accessory/storage/white_drop_pouches
allowed_roles = list("Station Engineer","Atmospheric Technician","Chief Engineer","Security Officer","Detective","Head of Security","Warden","Paramedic","Chief Medical Officer","Medical Doctor")
+/datum/gear/accessory/fannypack
+ display_name = "fannypack selection"
+ cost = 2
+
+/datum/gear/accessory/fannypack/New()
+ ..()
+ var/list/fannys = list()
+ for(var/fanny in typesof(/obj/item/weapon/storage/belt/fannypack))
+ var/obj/item/weapon/storage/belt/fannypack/fanny_type = fanny
+ fannys[initial(fanny_type.name)] = fanny_type
+ gear_tweaks += new/datum/gear_tweak/path(sortAssoc(fannys))
+
/datum/gear/accessory/webbing
display_name = "webbing, simple"
path = /obj/item/clothing/accessory/storage/webbing
diff --git a/code/modules/clothing/spacesuits/alien.dm b/code/modules/clothing/spacesuits/alien.dm
index 43a19c558f..996387aa1d 100644
--- a/code/modules/clothing/spacesuits/alien.dm
+++ b/code/modules/clothing/spacesuits/alien.dm
@@ -34,6 +34,7 @@
item_flags = STOPPRESSUREDAMAGE | THICKMATERIAL | PHORONGUARD
allowed = list(/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword,/obj/item/weapon/handcuffs,/obj/item/weapon/tank)
phoronproof = 1
+ slowdown = 2
armor = list(melee = 60, bullet = 50, laser = 40,energy = 15, bomb = 30, bio = 30, rad = 30)
siemens_coefficient = 0.2
heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
diff --git a/code/modules/clothing/spacesuits/rig/suits/alien.dm b/code/modules/clothing/spacesuits/rig/suits/alien.dm
index d34739cad3..5d73e804b2 100644
--- a/code/modules/clothing/spacesuits/rig/suits/alien.dm
+++ b/code/modules/clothing/spacesuits/rig/suits/alien.dm
@@ -49,6 +49,9 @@
item_flags = THICKMATERIAL
siemens_coefficient = 0.2
phoronproof = 1
+ offline_slowdown = 5
+ slowdown = 2
+ allowed = list(/obj/item/weapon/gun,/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit)
air_type = /obj/item/weapon/tank/vox
@@ -108,7 +111,6 @@
icon_state = "voxstealth_rig"
armor = list(melee = 40, bullet = 30, laser = 30, energy = 15, bomb = 30, bio = 100, rad = 100)
emp_protection = 40 //change this to 30 if too high.
- slowdown = 0
phoronproof = 1
req_access = list(access_syndicate)
diff --git a/code/modules/clothing/under/xenos/vox.dm b/code/modules/clothing/under/xenos/vox.dm
index b29df92e8c..bd66830f6e 100644
--- a/code/modules/clothing/under/xenos/vox.dm
+++ b/code/modules/clothing/under/xenos/vox.dm
@@ -25,7 +25,7 @@
icon_state = "webbing-vox"
slot = "vox"
- slots = 5
+ slots = 3
/obj/item/clothing/accessory/storage/vox/New()
..()
diff --git a/code/modules/gamemaster/actions/action.dm b/code/modules/gamemaster/actions/action.dm
index 82ebd860b5..aa259ccc03 100644
--- a/code/modules/gamemaster/actions/action.dm
+++ b/code/modules/gamemaster/actions/action.dm
@@ -5,12 +5,9 @@
var/chaotic = 0 // A number showing how chaotic the action may be. If danger is high, the GM will avoid it.
var/reusable = FALSE // If true, the event does not become disabled upon being used. Should be used sparingly.
var/observers_used = FALSE // Determines if the GM should check if ghosts are available before using this.
+ var/length = 0 // Determines how long the event lasts, until end() is called.
var/datum/game_master/gm = null
-/datum/gm_action/New(var/datum/game_master/new_gm)
- ..()
- gm = new_gm
-
/datum/gm_action/proc/set_up()
return
diff --git a/code/modules/gamemaster/actions/carp_migration.dm b/code/modules/gamemaster/actions/carp_migration.dm
new file mode 100644
index 0000000000..520eb0c314
--- /dev/null
+++ b/code/modules/gamemaster/actions/carp_migration.dm
@@ -0,0 +1,65 @@
+//carp_migration
+/datum/gm_action/carp_migration
+ name = "carp migration"
+ departments = list(ROLE_SECURITY, ROLE_EVERYONE)
+ chaotic = 50
+ var/list/spawned_carp = list()
+ var/carp_amount = 0
+ length = 20 MINUTES
+
+/datum/gm_action/carp_migration/get_weight()
+ var/people_in_space = 0
+ for(var/mob/living/L in player_list)
+ if(!(L.z in config.station_levels))
+ continue // Not on the right z-level.
+ var/turf/T = get_turf(L)
+ if(istype(T, /turf/space) && istype(T.loc,/area/space))
+ people_in_space++
+ return 50 + (metric.count_people_in_department(ROLE_SECURITY) * 10) + (people_in_space * 20)
+
+/datum/gm_action/carp_migration/announce()
+ var/announcement = "Unknown biological entities have been detected near [station_name()], please stand-by."
+ command_announcement.Announce(announcement, "Lifesign Alert")
+
+/datum/gm_action/carp_migration/set_up()
+ // Higher filled roles means more groups of fish.
+ var/station_strength = 0
+ station_strength += (metric.count_people_in_department(ROLE_SECURITY) * 3)
+ station_strength += (metric.count_people_in_department(ROLE_ENGINEERING) * 2)
+ station_strength += metric.count_people_in_department(ROLE_MEDICAL)
+
+ // Less active emergency response departments tones the event down.
+ var/activeness = ((metric.assess_department(ROLE_SECURITY) + metric.assess_department(ROLE_ENGINEERING) + metric.assess_department(ROLE_MEDICAL)) / 3)
+ activeness = max(activeness, 20)
+
+ carp_amount = Ceiling(station_strength * (activeness / 100) + 1)
+
+/datum/gm_action/carp_migration/start()
+ ..()
+ var/list/spawn_locations = list()
+
+ var/group_size_min = 3
+ var/group_size_max = 5
+
+ for(var/obj/effect/landmark/C in landmarks_list)
+ if(C.name == "carpspawn")
+ spawn_locations.Add(C.loc)
+
+ spawn_locations = shuffle(spawn_locations)
+ carp_amount = min(carp_amount, spawn_locations.len)
+
+ var/i = 1
+ while (i <= carp_amount)
+ var/group_size = rand(group_size_min, group_size_max)
+ for (var/j = 1, j <= group_size, j++)
+ spawned_carp.Add(new /mob/living/simple_animal/hostile/carp(spawn_locations[i]))
+ i++
+ message_admins("[spawned_carp.len] carp spawned by event.")
+
+/datum/gm_action/carp_migration/end()
+ for(var/mob/living/simple_animal/hostile/carp/C in spawned_carp)
+ if(!C.stat)
+ var/turf/T = get_turf(C)
+ if(istype(T, /turf/space))
+ if(!prob(25))
+ qdel(C)
\ No newline at end of file
diff --git a/code/modules/gamemaster/actions/comms_blackout.dm b/code/modules/gamemaster/actions/comms_blackout.dm
index 75359085ac..71b172b153 100644
--- a/code/modules/gamemaster/actions/comms_blackout.dm
+++ b/code/modules/gamemaster/actions/comms_blackout.dm
@@ -1,9 +1,21 @@
-// Comms blackout is, just like grid check, mostly the same as always, yet engineering has an option to get it back sooner.
-
/datum/gm_action/comms_blackout
name = "communications blackout"
departments = list(ROLE_ENGINEERING, ROLE_EVERYONE)
chaotic = 35
/datum/gm_action/comms_blackout/get_weight()
- return 50 + (metric.count_people_in_department(ROLE_ENGINEERING) * 40)
\ No newline at end of file
+ return 50 + (metric.count_people_in_department(ROLE_ENGINEERING) * 40)
+
+/datum/gm_action/comms_blackout/announce()
+ if(prob(33))
+ command_announcement.Announce("Ionospheric anomalies detected. Temporary telecommunication failure imminent. Please contact you-BZZT", new_sound = 'sound/misc/interference.ogg')
+ // AIs will always know if there's a comm blackout, rogue AIs could then lie about comm blackouts in the future while they shutdown comms
+ for(var/mob/living/silicon/ai/A in player_list)
+ A << "
"
+ A << "Ionospheric anomalies detected. Temporary telecommunication failure imminent. Please contact you-BZZT"
+ A << "
"
+
+/datum/gm_action/comms_blackout/start()
+ ..()
+ for(var/obj/machinery/telecomms/T in telecomms_list)
+ T.emp_act(1)
diff --git a/code/modules/gamemaster/actions/dust.dm b/code/modules/gamemaster/actions/dust.dm
new file mode 100644
index 0000000000..caecc51445
--- /dev/null
+++ b/code/modules/gamemaster/actions/dust.dm
@@ -0,0 +1,17 @@
+/datum/gm_action/dust
+ name = "dust"
+ departments = list(ROLE_ENGINEERING)
+ chaotic = 10
+ reusable = TRUE
+
+/datum/gm_action/dust/announce()
+ command_announcement.Announce("Debris resulting from activity on another nearby asteroid is approaching your colony.", "Dust Alert")
+
+/datum/gm_action/dust/get_weight()
+ var/engineers = metric.count_people_in_department(ROLE_ENGINEERING)
+ var/weight = 30 + (engineers * 25)
+ return weight
+
+/datum/gm_action/dust/start()
+ ..()
+ dust_swarm("norm")
\ No newline at end of file
diff --git a/code/modules/gamemaster/actions/grid_check.dm b/code/modules/gamemaster/actions/grid_check.dm
index 08c817fdf9..dcf35a230f 100644
--- a/code/modules/gamemaster/actions/grid_check.dm
+++ b/code/modules/gamemaster/actions/grid_check.dm
@@ -13,6 +13,7 @@
return 50 + (metric.count_people_in_department(ROLE_ENGINEERING) * 30)
/datum/gm_action/grid_check/start()
+ ..()
// This sets off a chain of events that lead to the actual grid check (or perhaps worse).
// First, the Supermatter engine makes a power spike.
for(var/obj/machinery/power/generator/engine in machines)
diff --git a/code/modules/gamemaster/actions/meteor_defense.dm b/code/modules/gamemaster/actions/meteor_defense.dm
new file mode 100644
index 0000000000..1bae723b00
--- /dev/null
+++ b/code/modules/gamemaster/actions/meteor_defense.dm
@@ -0,0 +1,51 @@
+// This event gives the station an advance warning about meteors, so that they can prepare in various ways.
+
+/datum/gm_action/meteor_defense
+ name = "meteor defense"
+ departments = list(ROLE_ENGINEERING)
+ chaotic = 50
+ var/direction = null
+ var/dir_text = null
+ var/waves = 0
+
+/datum/gm_action/meteor_defense/get_weight()
+ var/engineers = metric.count_people_in_department(ROLE_ENGINEERING)
+ var/weight = (max(engineers - 1, 0) * 25) // If only one engineer exists, no meteors for now.
+ return weight
+
+/datum/gm_action/meteor_defense/set_up()
+ direction = pick(cardinal) // alldirs doesn't work with current meteor code unfortunately.
+ waves = rand(5, 8)
+ switch(direction)
+ if(NORTH)
+ dir_text = "aft" // For some reason this is needed.
+ if(SOUTH)
+ dir_text = "fore"
+ if(EAST)
+ dir_text = "port"
+ if(WEST)
+ dir_text = "starboard"
+
+/datum/gm_action/meteor_defense/announce()
+ var/announcement = "Alert! Two other asteroids have collided near [station_name()]. Chunks of it are expected to approach from the [dir_text] side. ETA to arrival is \
+ approximately 10 minutes."
+ command_announcement.Announce(announcement, "Meteor Alert", new_sound = 'sound/AI/meteors.ogg')
+
+/datum/gm_action/meteor_defense/start()
+ ..()
+ spawn(0)
+ // sleep(5 MINUTES)
+ var/announcement = "The incoming debris are expected to approach from the [dir_text] side. ETA to arrival is approximately 5 minutes."
+ command_announcement.Announce(announcement, "Meteor Alert - Update")
+ // sleep(5 MINUTES)
+ announcement = "Incoming debris approaches from the [dir_text] side!"
+ command_announcement.Announce(announcement, "Meteor Alert - Update")
+ while(waves)
+ message_admins("[waves] more wave\s of meteors remain.")
+ spawn(1) // Dir is reversed because the direction describes where meteors are going, not what side it's gonna hit.
+ spawn_meteors(rand(8, 12), meteors_threatening, reverse_dir[direction])
+ waves--
+ sleep(30 SECONDS)
+ announcement = "The colony has cleared the incoming debris."
+ command_announcement.Announce(announcement, "Meteor Alert - Update")
+ message_admins("Meteor defense event has ended.")
\ No newline at end of file
diff --git a/code/modules/gamemaster/actions/shipping_error.dm b/code/modules/gamemaster/actions/shipping_error.dm
new file mode 100644
index 0000000000..affbe94dc9
--- /dev/null
+++ b/code/modules/gamemaster/actions/shipping_error.dm
@@ -0,0 +1,17 @@
+/datum/gm_action/shipping_error
+ name = "shipping error"
+ departments = list(ROLE_CARGO)
+ reusable = TRUE
+
+/datum/gm_action/shipping_error/get_weight()
+ var/cargo = metric.count_people_in_department(ROLE_CARGO)
+ var/weight = (cargo * 40)
+ return weight
+
+/datum/gm_action/shipping_error/start()
+ ..()
+ var/datum/supply_order/O = new /datum/supply_order()
+ O.ordernum = supply_controller.ordernum
+ O.object = supply_controller.supply_packs[pick(supply_controller.supply_packs)]
+ O.orderedby = random_name(pick(MALE,FEMALE), species = "Human")
+ supply_controller.shoppinglist += O
\ No newline at end of file
diff --git a/code/modules/gamemaster/actions/surprise_carp_attack.dm b/code/modules/gamemaster/actions/surprise_carp_attack.dm
new file mode 100644
index 0000000000..c91103c878
--- /dev/null
+++ b/code/modules/gamemaster/actions/surprise_carp_attack.dm
@@ -0,0 +1,53 @@
+// This event sends a few carp after someone in space.
+
+/datum/gm_action/surprise_carp_attack
+ name = "surprise carp attack"
+ departments = list(ROLE_EVERYONE)
+ reusable = TRUE
+ chaotic = 10
+ var/mob/living/victim = null
+
+/datum/gm_action/surprise_carp_attack/get_weight()
+ var/people_in_space = 0
+ for(var/mob/living/L in player_list)
+ if(!(L.z in config.station_levels))
+ continue // Not on the right z-level.
+ var/turf/T = get_turf(L)
+ if(istype(T, /turf/space) && istype(T.loc,/area/space))
+ people_in_space++
+ return people_in_space * 50
+
+/datum/gm_action/surprise_carp_attack/set_up()
+ var/list/potential_victims = list()
+ victim = null
+ for(var/mob/living/L in player_list)
+ if(!(L.z in config.station_levels))
+ continue // Not on the right z-level.
+ if(L.stat)
+ continue // Don't want dead people.
+ var/turf/T = get_turf(L)
+ if(istype(T, /turf/space) && istype(T.loc,/area/space))
+ potential_victims.Add(L)
+ victim = pick(potential_victims)
+
+
+/datum/gm_action/surprise_carp_attack/start()
+ ..()
+ if(!victim)
+ message_admins("Surprise carp attack failed to find a target.")
+ return
+ var/number_of_carp = rand(1, 2)
+ message_admins("Sending [number_of_carp] carp\s after [victim].")
+ while(number_of_carp)
+ var/turf/spawning_turf = null
+ var/list/nearby_things = oview(10, victim)
+ for(var/turf/space/space in nearby_things)
+ if(get_dist(space, victim) <= 7)
+ continue
+ spawning_turf = space
+ break
+ if(spawning_turf)
+ var/mob/living/simple_animal/hostile/carp/C = new(spawning_turf)
+ C.target_mob = victim
+ C.stance = STANCE_ATTACK
+ number_of_carp--
\ No newline at end of file
diff --git a/code/modules/gamemaster/actions/surprise_meteor.dm b/code/modules/gamemaster/actions/surprise_meteor.dm
new file mode 100644
index 0000000000..682a8287a6
--- /dev/null
+++ b/code/modules/gamemaster/actions/surprise_meteor.dm
@@ -0,0 +1,17 @@
+// This event sends one wave of meteors unannounced.
+
+/datum/gm_action/surprise_meteors
+ name = "surprise meteors"
+ departments = list(ROLE_ENGINEERING)
+ chaotic = 25
+
+/datum/gm_action/surprise_meteors/get_weight()
+ var/engineers = metric.count_people_in_department(ROLE_ENGINEERING)
+ var/weight = (max(engineers - 1, 0) * 25) // If only one engineer exists, no meteors for now.
+ return weight
+
+/datum/gm_action/surprise_meteors/start()
+ ..()
+ spawn(1)
+ spawn_meteors(rand(4, 8), meteors_normal, pick(cardinal))
+ message_admins("Surprise meteors event has ended.")
\ No newline at end of file
diff --git a/code/modules/gamemaster/controller.dm b/code/modules/gamemaster/controller.dm
index 079c535164..343f05842d 100644
--- a/code/modules/gamemaster/controller.dm
+++ b/code/modules/gamemaster/controller.dm
@@ -24,7 +24,7 @@
for(var/datum/gm_action/action in available_actions)
if(action.enabled == FALSE)
continue
- HTML += "[action.name] ([english_list(action.departments)]) (weight: [action.get_weight()])
"
+ HTML += "[action.name] ([english_list(action.departments)]) (weight: [action.get_weight()]) \[Force\]
"
HTML += "
"
HTML += "All living mobs activity: [metric.assess_all_living_mobs()]%
"
@@ -77,4 +77,16 @@
adjust_danger(amount)
message_admins("GM danger was adjusted by [amount] by [usr.key].")
- interact(usr) // To refresh the UI.
\ No newline at end of file
+ interact(usr) // To refresh the UI.
+
+/datum/gm_action/Topic(href, href_list)
+ if(..())
+ return
+
+ if(!is_admin(usr))
+ message_admins("[usr] has attempted to force an event without being an admin.")
+ return
+
+ if(href_list["force"])
+ gm.run_action(src)
+ message_admins("GM event [name] was forced by [usr.key].")
\ No newline at end of file
diff --git a/code/modules/gamemaster/game_master.dm b/code/modules/gamemaster/game_master.dm
index 180892f4c9..c435e868f6 100644
--- a/code/modules/gamemaster/game_master.dm
+++ b/code/modules/gamemaster/game_master.dm
@@ -19,6 +19,8 @@
/datum/game_master/New()
..()
available_actions = init_subtypes(/datum/gm_action)
+ for(var/datum/gm_action/action in available_actions)
+ action.gm = src
/datum/game_master/proc/process()
if(ticker && ticker.current_state == GAME_STATE_PLAYING && !suspended)
@@ -68,17 +70,26 @@
if(best_actions && best_actions.len)
var/list/weighted_actions = list()
for(var/datum/gm_action/action in best_actions)
+ if(action.chaotic > danger)
+ continue // We skip dangerous events when bad stuff is already occuring.
weighted_actions[action] = action.get_weight()
var/datum/gm_action/choice = pickweight(weighted_actions)
if(choice)
log_debug("[choice.name] was chosen by the Game Master, and is now being ran.")
- choice.set_up()
- choice.start()
- next_action = world.time + rand(15 MINUTES, 30 MINUTES)
- last_department_used = choice.departments[1]
-
+ run_action(choice)
+/datum/game_master/proc/run_action(var/datum/gm_action/action)
+ action.set_up()
+ action.start()
+ action.announce()
+ if(action.chaotic)
+ danger += action.chaotic
+ if(action.length)
+ spawn(action.length)
+ action.end()
+ next_action = world.time + rand(15 MINUTES, 30 MINUTES)
+ last_department_used = action.departments[1]
/datum/game_master/proc/decide_best_action(var/list/most_active_departments)
diff --git a/code/modules/mining/abandonedcrates.dm b/code/modules/mining/abandonedcrates.dm
index 9585a4965b..a017476af3 100644
--- a/code/modules/mining/abandonedcrates.dm
+++ b/code/modules/mining/abandonedcrates.dm
@@ -148,11 +148,19 @@
return
user << "The crate is locked with a Deca-code lock."
- var/input = input(user, "Enter [codelen] digits.", "Deca-Code Lock", "") as text
+ var/input = input(usr, "Enter [codelen] digits. All digits must be unique.", "Deca-Code Lock", "") as text
if(!Adjacent(user))
return
+ var/list/sanitised = list()
+ var/sanitycheck = 1
+ for(var/i=1,i<=length(input),i++) //put the guess into a list
+ sanitised += text2num(copytext(input,i,i+1))
+ for(var/i=1,i<=(length(input)-1),i++) //compare each digit in the guess to all those following it
+ for(var/j=(i+1),j<=length(input),j++)
+ if(sanitised[i] == sanitised[j])
+ sanitycheck = null //if a digit is repeated, reject the input
- if(input == null || length(input) != codelen)
+ if(input == null || sanitycheck == null || length(input) != codelen)
user << "You leave the crate alone."
else if(check_input(input))
user << "The crate unlocks!"
@@ -203,6 +211,9 @@
else if(lastattempt[i] in code_contents)
++cows
code_contents -= lastattempt[i]
- user << "Last code attempt had [bulls] correct digits at correct positions and [cows] correct digits at incorrect positions."
+ var/previousattempt = null //convert back to string for readback
+ for(var/i in 1 to codelen)
+ previousattempt = addtext(previousattempt, lastattempt[i])
+ user << "Last code attempt, [previousattempt], had [bulls] correct digits at correct positions and [cows] correct digits at incorrect positions."
return
..()
diff --git a/code/modules/mining/drilling/drill.dm b/code/modules/mining/drilling/drill.dm
index 31d99ebb05..5b1cbe496f 100644
--- a/code/modules/mining/drilling/drill.dm
+++ b/code/modules/mining/drilling/drill.dm
@@ -17,7 +17,7 @@
var/list/resource_field = list()
var/ore_types = list(
- "iron" = /obj/item/weapon/ore/iron,
+ "hematite" = /obj/item/weapon/ore/iron,
"uranium" = /obj/item/weapon/ore/uranium,
"gold" = /obj/item/weapon/ore/gold,
"silver" = /obj/item/weapon/ore/silver,
@@ -26,7 +26,7 @@
"osmium" = /obj/item/weapon/ore/osmium,
"hydrogen" = /obj/item/weapon/ore/hydrogen,
"silicates" = /obj/item/weapon/ore/glass,
- "carbonaceous rock" = /obj/item/weapon/ore/coal
+ "carbon" = /obj/item/weapon/ore/coal
)
//Upgrades
diff --git a/code/modules/mining/drilling/scanner.dm b/code/modules/mining/drilling/scanner.dm
index c0c3dd937d..4a8c3c59b6 100644
--- a/code/modules/mining/drilling/scanner.dm
+++ b/code/modules/mining/drilling/scanner.dm
@@ -29,7 +29,7 @@
var/ore_type
switch(metal)
- if("silicates", "carbonaceous rock", "iron") ore_type = "surface minerals"
+ if("silicates", "carbon", "hematite") ore_type = "surface minerals"
if("gold", "silver", "diamond") ore_type = "precious metals"
if("uranium") ore_type = "nuclear fuel"
if("phoron", "osmium", "hydrogen") ore_type = "exotic matter"
diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm
index b9fc47e4e9..f46d384f86 100644
--- a/code/modules/mining/mine_turfs.dm
+++ b/code/modules/mining/mine_turfs.dm
@@ -175,9 +175,8 @@ var/list/mining_overlay_cache = list()
if(severity <= 2) // Now to expose the ore lying under the sand.
spawn(1) // Otherwise most of the ore is lost to the explosion, which makes this rather moot.
- var/losses = rand(0.5, 1) // Between 0% to 50% loss due to booms.
for(var/ore in resources)
- var/amount_to_give = Ceiling(resources[ore] * losses) // Should result in at least one piece of ore.
+ var/amount_to_give = rand(Ceiling(resources[ore]/2), resources[ore]) // Should result in at least one piece of ore.
for(var/i=1, i <= amount_to_give, i++)
var/oretype = ore_types[ore]
new oretype(src)
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index db412c4134..5aef9abd4b 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -708,6 +708,10 @@
icon_state = module_sprites[icontype]
return
+ if(typing)
+ typing = FALSE
+ set_typing_indicator(1)
+
/mob/living/silicon/robot/proc/installed_modules()
if(weapon_lock)
src << "\red Weapon lock active, unable to use modules! Count:[weaponlock_time]"
diff --git a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm
index 030f9b8e6b..52704d85cd 100644
--- a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm
+++ b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm
@@ -29,7 +29,7 @@
cold_damage_per_tick = 20
var/poison_per_bite = 5
var/poison_chance = 10
- var/poison_type = "toxin"
+ var/poison_type = "spidertoxin"
faction = "spiders"
var/busy = 0
pass_flags = PASSTABLE
@@ -85,9 +85,14 @@
if(prob(5))
var/obj/item/organ/external/O = pick(H.organs)
if(!(O.robotic >= ORGAN_ROBOT))
- var/eggs = PoolOrNew(/obj/effect/spider/eggcluster/, list(O, src))
- O.implants += eggs
- H << "The [src] injects something into your [O.name]!"
+ var/eggcount
+ for(var/obj/I in O.implants)
+ if(istype(I, /obj/effect/spider/eggcluster))
+ eggcount ++
+ if(!eggcount)
+ var/eggs = PoolOrNew(/obj/effect/spider/eggcluster/small, list(O, src))
+ O.implants += eggs
+ H << "The [src] injects something into your [O.name]!"
/mob/living/simple_animal/hostile/giant_spider/Life()
..()
diff --git a/code/modules/mob/living/simple_animal/hostile/goose_vr.dm b/code/modules/mob/living/simple_animal/hostile/goose_vr.dm
new file mode 100644
index 0000000000..080c6fac92
--- /dev/null
+++ b/code/modules/mob/living/simple_animal/hostile/goose_vr.dm
@@ -0,0 +1,11 @@
+/mob/living/simple_animal/hostile/goose
+ //Space geese aren't affected by atmos.
+ min_oxy = 0
+ max_oxy = 0
+ min_tox = 0
+ max_tox = 0
+ min_co2 = 0
+ max_co2 = 0
+ min_n2 = 0
+ max_n2 = 0
+ minbodytemp = 0
\ No newline at end of file
diff --git a/code/modules/paperwork/clipboard.dm b/code/modules/paperwork/clipboard.dm
index ccb527986f..b0da801703 100644
--- a/code/modules/paperwork/clipboard.dm
+++ b/code/modules/paperwork/clipboard.dm
@@ -23,10 +23,10 @@
if(!M.restrained() && !M.stat)
switch(over_object.name)
if("r_hand")
- M.u_equip(src)
+ M.unEquip(src)
M.put_in_r_hand(src)
if("l_hand")
- M.u_equip(src)
+ M.unEquip(src)
M.put_in_l_hand(src)
add_fingerprint(usr)
diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm
index 57d10ed227..5373a71781 100644
--- a/code/modules/paperwork/photocopier.dm
+++ b/code/modules/paperwork/photocopier.dm
@@ -16,6 +16,7 @@
var/maxcopies = 10 //how many copies can be copied at once- idea shamelessly stolen from bs12's copier!
/obj/machinery/photocopier/New()
+ ..()
component_parts = list()
component_parts += new /obj/item/weapon/stock_parts/scanning_module(src)
component_parts += new /obj/item/weapon/stock_parts/motor(src)
diff --git a/code/modules/paperwork/photography.dm b/code/modules/paperwork/photography.dm
index a0f81f0aee..19a7e0498d 100644
--- a/code/modules/paperwork/photography.dm
+++ b/code/modules/paperwork/photography.dm
@@ -98,10 +98,10 @@ var/global/photo_count = 0
if((!( M.restrained() ) && !( M.stat ) && M.back == src))
switch(over_object.name)
if("r_hand")
- M.u_equip(src)
+ M.unEquip(src)
M.put_in_r_hand(src)
if("l_hand")
- M.u_equip(src)
+ M.unEquip(src)
M.put_in_l_hand(src)
add_fingerprint(usr)
return
diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm
index 036777ca15..184a1731f5 100644
--- a/code/modules/power/apc.dm
+++ b/code/modules/power/apc.dm
@@ -701,6 +701,7 @@
var/mob/living/carbon/human/H = user
if(H.species.can_shred(H))
+ user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
user.visible_message("[user.name] slashes at the [src.name]!", "You slash at the [src.name]!")
playsound(src.loc, 'sound/weapons/slash.ogg', 100, 1)
diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm
index 969cc6b6c2..946d8372ae 100644
--- a/code/modules/power/lighting.dm
+++ b/code/modules/power/lighting.dm
@@ -535,6 +535,7 @@
if(istype(user,/mob/living/carbon/human))
var/mob/living/carbon/human/H = user
if(H.species.can_shred(H))
+ user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
for(var/mob/M in viewers(src))
M.show_message("\red [user.name] smashed the light!", 3, "You hear a tinkle of breaking glass", 2)
broken()
diff --git a/code/modules/projectiles/guns/energy/particle.dm b/code/modules/projectiles/guns/energy/particle.dm
new file mode 100644
index 0000000000..bb50366ec7
--- /dev/null
+++ b/code/modules/projectiles/guns/energy/particle.dm
@@ -0,0 +1,87 @@
+/obj/item/weapon/gun/energy/particle
+ name = "Antiparticle projector gun"
+ icon = 'icons/obj/gun_vr.dmi'
+ icon_state = "particle"
+ item_state = "particle"
+ desc = "An unconventional firearm, APP guns generate attogram-scale quantities of antimatter which are then launched using an electromagnetic field."
+ force = 5
+ fire_sound = 'sound/weapons/Laser.ogg'
+ slot_flags = SLOT_BELT
+ w_class = ITEMSIZE_NORMAL
+ projectile_type = /obj/item/projectile/bullet/particle
+ origin_tech = null
+ fire_delay = 10
+ charge_cost = 240 //same cost as lasers
+ var/safetycatch = 0 //if 1, won't let you fire in pressurised environment, rather than malfunctioning
+
+
+/obj/item/weapon/gun/energy/particle/special_check(var/mob/user)
+ if (..())
+ var/turf/T = get_turf(src)
+ var/datum/gas_mixture/environment = T ? T.return_air() : null
+ var/pressure = environment ? environment.return_pressure() : 0
+
+ if (!power_supply || power_supply.charge < charge_cost)
+ user.visible_message("*click*", "*click*")
+ playsound(src.loc, 'sound/weapons/empty.ogg', 100, 1)
+ return 0
+ if(pressure >= 10)
+ if (safetycatch) //weapons with a pressure regulator simply won't fire
+ user.visible_message("*click*", "The pressure-interlock prevents you from firing \the [src].")
+ playsound(src.loc, 'sound/weapons/empty.ogg', 100, 1)
+ return 0
+ else if (prob(min(pressure, 100))) //pressure% chance of failing
+ var/severity = rand(pressure)
+ if (severity <= 10) // just doesn't fire. 10% chance in 100 atmo.
+ user.visible_message("*click*", "\The [src] jams.")
+ playsound(src.loc, 'sound/weapons/empty.ogg', 100, 1)
+ else if (severity <= 60) //50% chance of fizzling and wasting a shot
+ user.visible_message("\The [user] fires \the [src], but the shot fizzles in the air!", "You fire \the [src], but the shot fizzles in the air!")
+ power_supply.charge -= charge_cost
+ playsound(src.loc, fire_sound, 100, 1)
+ var/datum/effect/effect/system/spark_spread/sparks = PoolOrNew(/datum/effect/effect/system/spark_spread)
+ sparks.set_up(2, 1, T)
+ sparks.start()
+ update_icon()
+ else if (severity <= 80) //20% chance of shorting out and emptying the cell
+ user.visible_message("\The [user] pulls the trigger, but \the [src] shorts out!", "You pull the trigger, but \the [src] shorts out!")
+ power_supply.charge = 0
+ var/datum/effect/effect/system/spark_spread/sparks = PoolOrNew(/datum/effect/effect/system/spark_spread)
+ sparks.set_up(2, 1, T)
+ sparks.start()
+ update_icon()
+ else if (severity <= 90) //10% chance of breaking the gun
+ user.visible_message("\The [user] pulls the trigger, but \the [src] erupts in a shower of sparks!", "You pull the trigger, but \the [src] bursts into a shower of sparks!")
+ var/datum/effect/effect/system/spark_spread/sparks = PoolOrNew(/datum/effect/effect/system/spark_spread)
+ sparks.set_up(2, 1, T)
+ sparks.start()
+ power_supply.charge = 0
+ power_supply.maxcharge = 0
+ power_supply.desc += " It seems to be burnt out!"
+ desc += " The casing is covered in scorch-marks."
+ fire_delay += fire_delay // even if you swap out the cell for a good one, the gun's cluckety-clucked.
+ charge_cost += charge_cost
+ update_icon()
+ else if (severity <= 150) // 10% chance of exploding
+ user << "The [src] explodes!"
+ explosion(T, -1, -1, 1, 1)
+ qdel(src)
+ else //can only possibly happen if you're dumb enough to fire it in an OVER pressure environment, over 150kPa
+ user << "The [src] explodes catastrophically!"
+ explosion(T, -1, 1, 2, 2)
+ qdel(src)
+ return 0
+ return 1
+ return 0
+
+
+// projectiles below
+
+/obj/item/projectile/bullet/particle
+ name = "particle"
+ icon = 'icons/obj/projectiles_vr.dmi'
+ icon_state = "particle"
+ damage = 40
+ damage_type = BURN
+ check_armour = "energy"
+ embed_chance = 0
diff --git a/code/modules/projectiles/guns/energy/stun_vr.dm b/code/modules/projectiles/guns/energy/stun_vr.dm
new file mode 100644
index 0000000000..b0bfd53e46
--- /dev/null
+++ b/code/modules/projectiles/guns/energy/stun_vr.dm
@@ -0,0 +1,6 @@
+/obj/item/weapon/gun/energy/taser
+ charge_cost = 160
+ fire_delay = 4
+
+/obj/item/weapon/gun/energy/stunrevolver
+ charge_cost = 400
\ No newline at end of file
diff --git a/code/modules/projectiles/guns/projectile/pistol_vr.dm b/code/modules/projectiles/guns/projectile/pistol_vr.dm
new file mode 100644
index 0000000000..9f11eefdb1
--- /dev/null
+++ b/code/modules/projectiles/guns/projectile/pistol_vr.dm
@@ -0,0 +1,2 @@
+/obj/item/weapon/gun/projectile/sec/flash
+ name = ".45 pistol"
\ No newline at end of file
diff --git a/code/modules/projectiles/guns/vox.dm b/code/modules/projectiles/guns/vox.dm
index c1e0e84cf8..857b56fa6b 100644
--- a/code/modules/projectiles/guns/vox.dm
+++ b/code/modules/projectiles/guns/vox.dm
@@ -57,6 +57,7 @@
icon_state = "darkcannon"
item_state = "darkcannon"
fire_sound = 'sound/weapons/eLuger.ogg'
+ w_class = ITEMSIZE_HUGE
charge_cost = 600
projectile_type = /obj/item/projectile/beam/darkmatter
self_recharge = 1
@@ -102,6 +103,7 @@
icon_state = "noise"
item_state = "noise"
fire_sound = 'sound/effects/basscannon.ogg'
+ w_class = ITEMSIZE_HUGE
self_recharge = 1
charge_cost = 600
diff --git a/code/modules/projectiles/projectile/beams_vr.dm b/code/modules/projectiles/projectile/beams_vr.dm
index f6738fc597..c9325109e4 100644
--- a/code/modules/projectiles/projectile/beams_vr.dm
+++ b/code/modules/projectiles/projectile/beams_vr.dm
@@ -10,3 +10,6 @@
muzzle_type = /obj/effect/projectile/laser_omni/muzzle
tracer_type = /obj/effect/projectile/laser_omni/tracer
impact_type = /obj/effect/projectile/laser_omni/impact
+
+/obj/item/projectile/beam/stun
+ agony = 35
\ No newline at end of file
diff --git a/code/modules/projectiles/projectile/energy_vr.dm b/code/modules/projectiles/projectile/energy_vr.dm
new file mode 100644
index 0000000000..5148c831bd
--- /dev/null
+++ b/code/modules/projectiles/projectile/energy_vr.dm
@@ -0,0 +1,11 @@
+/obj/item/projectile/energy/electrode/strong
+ agony = 70
+
+/obj/item/projectile/energy
+ flash_strength = 10
+
+/obj/item/projectile/energy/flash
+ flash_range = 1
+
+/obj/item/projectile/energy/flash/flare
+ flash_range = 2
\ No newline at end of file
diff --git a/code/modules/projectiles/targeting/targeting_overlay.dm b/code/modules/projectiles/targeting/targeting_overlay.dm
index 8c87751de7..2dcf0032be 100644
--- a/code/modules/projectiles/targeting/targeting_overlay.dm
+++ b/code/modules/projectiles/targeting/targeting_overlay.dm
@@ -107,8 +107,10 @@ obj/aiming_overlay/proc/update_aiming_deferred()
cancel_aiming()
return
- if(!locked && lock_time >= world.time)
+ if(!locked && lock_time <= world.time)
locked = 1
+ owner << "You are locked onto your target."
+ aiming_at << "The gun is trained on you!"
update_icon()
var/cancel_aim = 1
@@ -176,7 +178,7 @@ obj/aiming_overlay/proc/update_aiming_deferred()
toggle_active(1)
locked = 0
update_icon()
- lock_time = world.time + 35
+ lock_time = world.time + 25
/obj/aiming_overlay/update_icon()
if(locked)
diff --git a/code/modules/projectiles/targeting/targeting_triggers.dm b/code/modules/projectiles/targeting/targeting_triggers.dm
index 2544fae913..188440dcf6 100644
--- a/code/modules/projectiles/targeting/targeting_triggers.dm
+++ b/code/modules/projectiles/targeting/targeting_triggers.dm
@@ -27,3 +27,5 @@
var/obj/item/weapon/gun/G = aiming_with
if(istype(G))
G.Fire(aiming_at, owner, reflex = 1)
+ locked = 0
+ lock_time = world.time+10
diff --git a/code/modules/random_map/noise/ore.dm b/code/modules/random_map/noise/ore.dm
index 4caacb7099..697a0b416d 100644
--- a/code/modules/random_map/noise/ore.dm
+++ b/code/modules/random_map/noise/ore.dm
@@ -49,11 +49,11 @@
if(!priority_process) sleep(-1)
T.resources = list()
T.resources["silicates"] = rand(3,5)
- T.resources["carbonaceous rock"] = rand(3,5)
+ T.resources["carbon"] = rand(3,5)
var/current_cell = map[get_map_cell(x,y)]
if(current_cell < rare_val) // Surface metals.
- T.resources["iron"] = rand(RESOURCE_HIGH_MIN, RESOURCE_HIGH_MAX)
+ T.resources["hematite"] = rand(RESOURCE_HIGH_MIN, RESOURCE_HIGH_MAX)
T.resources["gold"] = rand(RESOURCE_LOW_MIN, RESOURCE_LOW_MAX)
T.resources["silver"] = rand(RESOURCE_LOW_MIN, RESOURCE_LOW_MAX)
T.resources["uranium"] = rand(RESOURCE_LOW_MIN, RESOURCE_LOW_MAX)
@@ -69,14 +69,14 @@
T.resources["osmium"] = rand(RESOURCE_MID_MIN, RESOURCE_MID_MAX)
T.resources["hydrogen"] = 0
T.resources["diamond"] = 0
- T.resources["iron"] = 0
+ T.resources["hematite"] = 0
else // Deep metals.
T.resources["uranium"] = rand(RESOURCE_LOW_MIN, RESOURCE_LOW_MAX)
T.resources["diamond"] = rand(RESOURCE_LOW_MIN, RESOURCE_LOW_MAX)
T.resources["phoron"] = rand(RESOURCE_HIGH_MIN, RESOURCE_HIGH_MAX)
T.resources["osmium"] = rand(RESOURCE_HIGH_MIN, RESOURCE_HIGH_MAX)
T.resources["hydrogen"] = rand(RESOURCE_MID_MIN, RESOURCE_MID_MAX)
- T.resources["iron"] = 0
+ T.resources["hematite"] = 0
T.resources["gold"] = 0
T.resources["silver"] = 0
return
diff --git a/code/modules/reagents/reagent_containers/dropper.dm b/code/modules/reagents/reagent_containers/dropper.dm
index aa952915c3..09897729f9 100644
--- a/code/modules/reagents/reagent_containers/dropper.dm
+++ b/code/modules/reagents/reagent_containers/dropper.dm
@@ -75,7 +75,7 @@
return
else
- trans = reagents.splash(target, amount_per_transfer_from_this, max_spill=30) //sprinkling reagents on generic non-mobs
+ trans = reagents.splash(target, amount_per_transfer_from_this, max_spill=0) //sprinkling reagents on generic non-mobs
user << "You transfer [trans] units of the solution."
else // Taking from something
diff --git a/code/modules/reagents/reagent_containers/food/drinks.dm b/code/modules/reagents/reagent_containers/food/drinks.dm
index edb8e7fae6..163fd1161f 100644
--- a/code/modules/reagents/reagent_containers/food/drinks.dm
+++ b/code/modules/reagents/reagent_containers/food/drinks.dm
@@ -131,23 +131,28 @@
..()
reagents.add_reagent("soymilk", 50)
-/obj/item/weapon/reagent_containers/food/drinks/milk/smallcarton
+/obj/item/weapon/reagent_containers/food/drinks/smallmilk
name = "small milk carton"
+ desc = "It's milk. White and nutritious goodness!"
volume = 30
icon_state = "mini-milk"
-/obj/item/weapon/reagent_containers/food/drinks/milk/smallcarton/New()
+ item_state = "carton"
+ center_of_mass = list("x"=16, "y"=9)
+/obj/item/weapon/reagent_containers/food/drinks/smallmilk/New()
..()
reagents.add_reagent("milk", 30)
-/obj/item/weapon/reagent_containers/food/drinks/milk/smallcarton/chocolate
+/obj/item/weapon/reagent_containers/food/drinks/smallchocmilk
name = "small chocolate milk carton"
desc = "It's milk! This one is in delicious chocolate flavour."
+ volume = 30
icon_state = "mini-milk_choco"
-/obj/item/weapon/reagent_containers/food/drinks/milk/smallcarton/chocolate/New()
+ item_state = "carton"
+ center_of_mass = list("x"=16, "y"=9)
+/obj/item/weapon/reagent_containers/food/drinks/smallchocmilk/New()
..()
reagents.add_reagent("chocolate_milk", 30)
-
/obj/item/weapon/reagent_containers/food/drinks/coffee
name = "\improper Robust Coffee"
desc = "Careful, the beverage you're about to enjoy is extremely hot."
diff --git a/code/modules/reagents/reagent_containers/food/sandwich.dm b/code/modules/reagents/reagent_containers/food/sandwich.dm
index c853706ad5..48356172ca 100644
--- a/code/modules/reagents/reagent_containers/food/sandwich.dm
+++ b/code/modules/reagents/reagent_containers/food/sandwich.dm
@@ -22,16 +22,16 @@
if(istype(O,/obj/item/weapon/reagent_containers/food/snacks/breadslice))
sandwich_limit += 4
- if(src.contents.len > sandwich_limit)
- user << "\red If you put anything else on \the [src] it's going to collapse."
- return
- else if(istype(W,/obj/item/weapon/material/shard))
+ if(istype(W,/obj/item/weapon/material/shard))
user << "\blue You hide [W] in \the [src]."
user.drop_item()
W.loc = src
update()
return
else if(istype(W,/obj/item/weapon/reagent_containers/food/snacks))
+ if(src.contents.len > sandwich_limit)
+ user << "\red If you put anything else on \the [src] it's going to collapse."
+ return
user << "\blue You layer [W] over \the [src]."
var/obj/item/weapon/reagent_containers/F = W
F.reagents.trans_to_obj(src, F.reagents.total_volume)
diff --git a/code/modules/reagents/reagent_containers/spray_vr.dm b/code/modules/reagents/reagent_containers/spray_vr.dm
new file mode 100644
index 0000000000..ef785ffc35
--- /dev/null
+++ b/code/modules/reagents/reagent_containers/spray_vr.dm
@@ -0,0 +1,12 @@
+/obj/item/weapon/reagent_containers/spray/windowsealant
+ name = "Krak-b-gone"
+ desc = "A spray bottle of silicate sealant for rapid window repair."
+ icon = 'icons/obj/items_vr.dmi'
+ icon_state = "windowsealant"
+ item_state = "spraycan"
+ possible_transfer_amounts = null
+ volume = 80
+
+/obj/item/weapon/reagent_containers/spray/windowsealant/New()
+ ..()
+ reagents.add_reagent("silicate", 80)
\ No newline at end of file
diff --git a/code/modules/rogueminer_vr/asteroid.dm b/code/modules/rogueminer_vr/asteroid.dm
new file mode 100644
index 0000000000..4719c23a66
--- /dev/null
+++ b/code/modules/rogueminer_vr/asteroid.dm
@@ -0,0 +1,150 @@
+//////////////////////////////
+// An asteroid object, could be spawned in, or not
+// May or may not include phat lewt
+//////////////////////////////
+
+/datum/rogue/asteroid
+ //Composition
+ var/type_wall = /turf/simulated/mineral //Type of turf used to generate the asteroid
+ var/type_under = /turf/simulated/mineral/floor //Type of turf that's under the normal one
+
+ //Dimensions
+ var/coresize = 3 //The size of the center square
+ var/width = 9
+
+ //Other Attribs
+ var/hollow = 0 //Might be hollow for loot injection purposes
+ var/spawned = 0 //Is this asteroid in-play right now
+ var/difficulty = 0 //Difficulty this asteroid was created at
+
+ //Locational stats
+ var/obj/effect/landmark/asteroid_spawn/mylandmark //The landmark I'm spawned at, if any.
+
+ //Asteroid map
+ //The map struct is:
+ // map list()
+ // 0 = list()
+ // 1 = list() //These are x coordinates
+ // 2 = list()
+ // ^0 = list()
+ // 1 = list() //These are y coordinates at x2
+ // 2 = list()
+ // ^type1
+ // type2 //These are items/objects at the coordinate
+ // type3 //This would be object 3 at x2,y2
+ var/list/map
+
+//Builds an empty map
+/datum/rogue/asteroid/New(var/core, var/tw, var/tu)
+ rm_controller.dbg("A(n): New asteroid, with: C:[core], TW:[tw], TU:[tu].")
+
+ if(core)
+ coresize = core
+ if(tw)
+ type_wall = tw
+ if(tu)
+ type_under = tu
+
+ width = coresize*3
+ rm_controller.dbg("A(n): My width is [width].")
+
+ map = new/list(width,width,0)
+ rm_controller.dbg("A(n): Created empty map lists. Map now has [map.len] X-lists.")
+
+//Adds something to a spot in the asteroid map
+/datum/rogue/asteroid/proc/spot_add(var/x,var/y,var/thing)
+ if(!x || !y || !thing)
+ return
+
+ rm_controller.dbg("A(sa): Adding [thing] at [x],[y] in the map.")
+ var/list/work = map[x][y]
+ work.Add(thing)
+ rm_controller.dbg("A(n): [x],[y] now contains [work.len] items.")
+
+//Removes something from a spot in the asteroid map
+/datum/rogue/asteroid/proc/spot_remove(var/x,var/y,var/thing)
+ if(!x || !y || !thing)
+ return
+
+ var/list/work = map[x][y]
+ work.Add(thing)
+
+//Just removes everything from a spot in the asteroid map
+/datum/rogue/asteroid/proc/spot_clear(var/x,var/y)
+ if(!x || !y)
+ return
+
+ var/list/work = map[x][y]
+ work.Cut()
+
+/////////////////////////////
+// Predefined asteroid maps
+/////////////////////////////
+/datum/rogue/asteroid/predef
+ width = 3 //Small 1-tile room by default.
+
+/datum/rogue/asteroid/predef/New() //Basically just ignore what we're told.
+ rm_controller.dbg("Ap(n): A predefined asteroid is created with width [width].")
+ map = new/list(width,width,0)
+
+//Abandoned 1-tile hollow cargo box (pressurized).
+/datum/rogue/asteroid/predef/cargo
+ type_wall = /turf/simulated/wall
+ type_under = /turf/simulated/floor/plating
+
+ New()
+ ..()
+ spot_add(1,1,type_wall) //Bottom left corner
+ spot_add(1,2,type_wall)
+ spot_add(1,3,type_wall)
+ spot_add(2,1,type_wall)
+ spot_add(2,2,type_under) //Center floor
+ spot_add(2,2,/obj/random/cargopod) //Loot!
+ spot_add(2,3,type_wall)
+ spot_add(3,1,type_wall)
+ spot_add(3,2,type_wall)
+ spot_add(3,3,type_wall) //Bottom right corner
+
+//Abandoned 1-tile hollow cargo box (ANGRY).
+/datum/rogue/asteroid/predef/cargo/angry
+ type_wall = /turf/simulated/wall
+ type_under = /turf/simulated/floor/plating
+
+ New()
+ ..()
+ spot_add(2,2,/obj/random/cargopod) //EXTRA loot!
+ spot_add(2,2,/mob/living/simple_animal/hostile/vore/alien) //GRRR
+
+//Longer cargo container for higher difficulties
+/datum/rogue/asteroid/predef/cargo_large
+ width = 5
+ type_wall = /turf/simulated/wall
+ type_under = /turf/simulated/floor/plating
+
+ New()
+ ..()
+ spot_add(1,2,type_wall) //--
+ spot_add(1,3,type_wall) //Left end of cargo container
+ spot_add(1,4,type_wall) //--
+
+ spot_add(5,2,type_wall) //--
+ spot_add(5,3,type_wall) //Right end of cargo container
+ spot_add(5,4,type_wall) //--
+
+ spot_add(2,4,type_wall) //--
+ spot_add(3,4,type_wall) //Top and
+ spot_add(4,4,type_wall) //bottom of
+ spot_add(2,2,type_wall) //cargo
+ spot_add(3,2,type_wall) //container
+ spot_add(4,2,type_wall) //--
+
+ spot_add(2,3,type_under) //Left floor
+ spot_add(3,3,type_under) //Mid floor
+ spot_add(4,3,type_under) //Right floor
+
+ spot_add(2,3,/obj/random/cargopod) //Left loot
+ spot_add(3,3,/obj/random/cargopod) //Mid loot
+ spot_add(4,3,/obj/random/cargopod) //Right loot
+
+ if(prob(30))
+ spot_add(3,3,/mob/living/simple_animal/hostile/vore/alien) //And maybe a friend.
\ No newline at end of file
diff --git a/code/modules/rogueminer_vr/controller.dm b/code/modules/rogueminer_vr/controller.dm
new file mode 100644
index 0000000000..1ee3e5fd70
--- /dev/null
+++ b/code/modules/rogueminer_vr/controller.dm
@@ -0,0 +1,164 @@
+//////////////////////////////
+// Tracks mining zone progress and decay
+// Makes mining zones more difficult as you enter new ones
+// THIS IS THE FIRST UNIT INITIALIZED THAT STARTS EVERYTHING
+//////////////////////////////
+var/datum/controller/rogue/rm_controller = new()
+
+/datum/controller/rogue
+ var/list/datum/rogue/zonemaster/all_zones = list()
+ var/list/datum/rogue/zonemaster/clean_zones = list()
+ var/list/datum/rogue/zonemaster/ready_zones = list()
+
+ //So I don't have to do absurd list[list[thing]] over and over.
+ var/list/diffstep_nums = list(
+ 100,
+ 200,
+ 300,
+ 450,
+ 600,
+ 800)
+
+ var/list/diffstep_strs = list(
+ "Low",
+ "Moderate",
+ "High",
+ "Very High",
+ "Extreme",
+ "ERROR!!@MEM:CH@05R31GN5")
+
+ //The ever-changing difficulty
+ var/difficulty = 100
+
+ //Info about our current step
+ var/diffstep = 1
+
+ //The current mining zone that the shuttle goes to and whatnot
+ var/datum/rogue/zonemaster/current_zone = null
+ var/datum/rogue/zonemaster/previous_zone = null
+
+ // The world.time at which the scanner was last run (for cooldown)
+ var/last_scan = 0
+ var/scan_wait = 10 //In minutes
+
+ var/debugging = 0
+
+ ///// Prefab Asteroids /////
+ var/prefabs = list(
+ "tier1" = list(/datum/rogue/asteroid/predef/cargo),
+ "tier2" = list(/datum/rogue/asteroid/predef/cargo,/datum/rogue/asteroid/predef/cargo/angry),
+ "tier3" = list(/datum/rogue/asteroid/predef/cargo/angry,/datum/rogue/asteroid/predef/cargo_large),
+ "tier4" = list(/datum/rogue/asteroid/predef/cargo/angry,/datum/rogue/asteroid/predef/cargo_large),
+ "tier5" = list(/datum/rogue/asteroid/predef/cargo/angry,/datum/rogue/asteroid/predef/cargo_large),
+ "tier6" = list(/datum/rogue/asteroid/predef/cargo/angry,/datum/rogue/asteroid/predef/cargo_large)
+ )
+
+ ///// Monster Lists /////
+ var/mobs = list(
+ "tier1" = list(/mob/living/simple_animal/hostile/carp,/mob/living/simple_animal/hostile/goose),
+ "tier2" = list(/mob/living/simple_animal/hostile/carp,/mob/living/simple_animal/hostile/goose),
+ "tier3" = list(/mob/living/simple_animal/hostile/carp,/mob/living/simple_animal/hostile/goose,/mob/living/simple_animal/hostile/vore/bear),
+ "tier4" = list(/mob/living/simple_animal/hostile/carp,/mob/living/simple_animal/hostile/goose,/mob/living/simple_animal/hostile/vore/bear),
+ "tier5" = list(/mob/living/simple_animal/hostile/carp,/mob/living/simple_animal/hostile/goose,/mob/living/simple_animal/hostile/vore/bear),
+ "tier6" = list(/mob/living/simple_animal/hostile/carp,/mob/living/simple_animal/hostile/goose,/mob/living/simple_animal/hostile/vore/bear)
+ )
+
+/datum/controller/rogue/New()
+ //How many zones are we working with here
+ for(var/area/asteroid/rogue/A in world)
+ all_zones += new /datum/rogue/zonemaster(A)
+ //decay() //Decay removed for now, since people aren't getting high scores as it is.
+
+/datum/controller/rogue/proc/decay(var/manual = 0)
+ world.log << "RM(stats): DECAY on controller from [difficulty] to [difficulty+(RM_DIFF_DECAY_AMT)] min 100." //DEBUG code for playtest stats gathering.
+ adjust_difficulty(RM_DIFF_DECAY_AMT)
+
+ if(!manual) //If it was called manually somehow, then don't start the timer, just decay now.
+ spawn(RM_DIFF_DECAY_TIME)
+ decay()
+ return difficulty
+
+/datum/controller/rogue/proc/dbg(var/message)
+ ASSERT(message) //I want a stack trace if there's no message
+ if(debugging)
+ world.log << "[message]"
+
+/datum/controller/rogue/proc/adjust_difficulty(var/amt)
+ ASSERT(amt)
+
+ difficulty = max(difficulty+amt, diffstep_nums[1]) //Can't drop below the lowest level.
+
+ if(difficulty < diffstep_nums[diffstep])
+ diffstep--
+ else if(difficulty >= diffstep_nums[diffstep+1])
+ diffstep++
+
+/datum/controller/rogue/proc/get_oldest_zone()
+ var/oldest_time = world.time
+ var/oldest_zone
+
+ for(var/datum/rogue/zonemaster/ZM in ready_zones)
+ if(ZM.prepared_at < oldest_time) //Check ready so we don't return zones that ARE cleaning
+ oldest_zone = ZM
+ oldest_time = ZM.prepared_at
+
+ return oldest_zone
+
+/datum/controller/rogue/proc/mark_clean(var/datum/rogue/zonemaster/ZM)
+ if(!ZM in all_zones) //What? Who?
+ rm_controller.dbg("RMC(mc): Some unknown zone asked to be listed.")
+
+ if(ZM in ready_zones)
+ rm_controller.dbg("RMC(mc): Finite state machine broken.")
+
+ clean_zones += ZM
+
+/datum/controller/rogue/proc/mark_ready(var/datum/rogue/zonemaster/ZM)
+ if(!ZM in all_zones) //What? Who?
+ rm_controller.dbg("RMC(mr): Some unknown zone asked to be listed.")
+
+ if(ZM in clean_zones)
+ rm_controller.dbg("RMC(mr): Finite state machine broken.")
+
+ ready_zones += ZM
+
+/datum/controller/rogue/proc/unmark_clean(var/datum/rogue/zonemaster/ZM)
+ if(!ZM in all_zones) //What? Who?
+ rm_controller.dbg("RMC(umc): Some unknown zone asked to be listed.")
+
+ if(!ZM in clean_zones)
+ rm_controller.dbg("RMC(umc): Finite state machine broken.")
+
+ clean_zones -= ZM
+
+/datum/controller/rogue/proc/unmark_ready(var/datum/rogue/zonemaster/ZM)
+ if(!ZM in all_zones) //What? Who?
+ rm_controller.dbg("RMC(umr): Some unknown zone asked to be listed.")
+
+ if(!ZM in ready_zones)
+ rm_controller.dbg("RMC(umr): Finite state machine broken.")
+
+ ready_zones -= ZM
+
+/datum/controller/rogue/proc/prepare_new_zone()
+ var/datum/rogue/zonemaster/ZM_target
+
+ if(clean_zones.len)
+ ZM_target = pick(clean_zones)
+
+ if(ZM_target)
+ world.log << "RM(stats): SCORING [ready_zones.len] zones (if unscored)." //DEBUG code for playtest stats gathering.
+ for(var/datum/rogue/zonemaster/ZM_toscore in ready_zones) //Score all the zones first.
+ if(ZM_toscore.scored) continue
+ ZM_toscore.score_zone()
+ ZM_target.prepare_zone()
+ else
+ rm_controller.dbg("RMC(pnz): I was asked for a new zone but there's no space.")
+
+ if(clean_zones.len <= 1) //Need to clean the oldest one, too.
+ rm_controller.dbg("RMC(pnz): Cleaning up oldest zone.")
+ spawn(0) //Detatch it so we can return the new zone for now.
+ var/datum/rogue/zonemaster/ZM_oldest = get_oldest_zone()
+ ZM_oldest.clean_zone()
+
+ return ZM_target
\ No newline at end of file
diff --git a/code/modules/rogueminer_vr/debug.dm b/code/modules/rogueminer_vr/debug.dm
new file mode 100644
index 0000000000..366d9da027
--- /dev/null
+++ b/code/modules/rogueminer_vr/debug.dm
@@ -0,0 +1,8 @@
+/client/proc/debug_rogueminer()
+ set category = "Debug"
+ set name = "Debug RogueMiner"
+ set desc = "Debug the RogueMiner controller."
+
+ if(!holder) return
+ debug_variables(rm_controller)
+ feedback_add_details("admin_verb","DRM")
\ No newline at end of file
diff --git a/code/modules/rogueminer_vr/landmarks.dm b/code/modules/rogueminer_vr/landmarks.dm
new file mode 100644
index 0000000000..cef03695ea
--- /dev/null
+++ b/code/modules/rogueminer_vr/landmarks.dm
@@ -0,0 +1,30 @@
+//////////////////////////////
+// Landmarks for asteroid positioning
+// Just makes the placement more safe/sane
+//////////////////////////////
+
+/obj/asteroid_spawner
+ name = "asteroid spawn"
+ icon = 'icons/mob/screen1.dmi'
+ icon_state = "x2"
+ invisibility = 101
+ anchored = 1
+ var/datum/rogue/asteroid/myasteroid
+
+/obj/asteroid_spawner/New()
+ if(loc && istype(loc,/turf/space) && istype(loc.loc,/area/asteroid/rogue))
+ var/area/asteroid/rogue/A = loc.loc
+ A.asteroid_spawns += src
+
+/obj/rogue_mobspawner
+ name = "mob spawn"
+ icon = 'icons/mob/screen1.dmi'
+ icon_state = "x"
+ invisibility = 101
+ anchored = 1
+ var/mob/mymob
+
+/obj/rogue_mobspawner/New()
+ if(loc && istype(loc,/turf/space) && istype(loc.loc,/area/asteroid/rogue))
+ var/area/asteroid/rogue/A = loc.loc
+ A.mob_spawns += src
diff --git a/code/modules/rogueminer_vr/wrappers.dm b/code/modules/rogueminer_vr/wrappers.dm
new file mode 100644
index 0000000000..0e19a5cb00
--- /dev/null
+++ b/code/modules/rogueminer_vr/wrappers.dm
@@ -0,0 +1,206 @@
+/obj/effect/step_trigger/teleporter/random/rogue
+ teleport_z = 7
+ teleport_z_offset = 7
+
+/obj/effect/step_trigger/teleporter/random/rogue/fourbyfour
+ var/margin = 15 //How far from the side should we teleport? Make sure to place the opposite
+ //side's wrappers at less than this far from the hard boundary
+ //else people will get stuck in the margins
+ //Important for auto-determining the size, as well.
+
+ var/mapsize = 300 //I don't know of a way to obtain map size sorry.
+
+ //Important infos!
+ var/quad_L
+ var/quad_R
+ var/quad_U
+ var/quad_D
+
+ //Relative to the quadrant
+ var/rel_x
+ var/rel_y
+
+/obj/effect/step_trigger/teleporter/random/rogue/fourbyfour/New()
+ ..()
+
+
+ //Figure out where I am on the map and set up vars.
+ if(x < mapsize/2 && y < mapsize/2) //We're in area 1!
+ quad_L = 0
+ quad_R = mapsize/2
+ quad_U = mapsize/2
+ quad_D = 0
+ rel_x = x
+ rel_y = y
+ else if(x >= mapsize/2 && y < mapsize/2) //We're in area 2!
+ quad_L = mapsize/2
+ quad_R = mapsize
+ quad_U = mapsize/2
+ quad_D = 0
+ rel_x = x-(mapsize/2)
+ rel_y = y
+ else if(x < mapsize/2 && y >= mapsize/2) //We're in area 3!
+ quad_L = 0
+ quad_R = mapsize/2
+ quad_U = mapsize
+ quad_D = mapsize/2
+ rel_x = x
+ rel_y = y-(mapsize/2)
+ else if(x >= mapsize/2 && y >= mapsize/2) //We're in area 4!
+ quad_L = mapsize/2
+ quad_R = mapsize
+ quad_U = mapsize
+ quad_D = mapsize/2
+ rel_x = x-(mapsize/2)
+ rel_y = y-(mapsize/2)
+ else
+ return
+
+//These are placed ON the side they are named after.
+/obj/effect/step_trigger/teleporter/random/rogue/fourbyfour/onleft/New()
+ ..()
+ teleport_x = quad_R - margin
+ teleport_x_offset = quad_R - margin
+ teleport_y = quad_D + margin
+ teleport_y_offset = quad_U - margin
+
+/obj/effect/step_trigger/teleporter/random/rogue/fourbyfour/onright/New()
+ ..()
+ teleport_x = quad_L + margin
+ teleport_x_offset = quad_L + margin
+ teleport_y = quad_D + margin
+ teleport_y_offset = quad_U - margin
+
+/obj/effect/step_trigger/teleporter/random/rogue/fourbyfour/ontop/New()
+ ..()
+ teleport_x = quad_L + margin
+ teleport_x_offset = quad_R - margin
+ teleport_y = quad_D + margin
+ teleport_y_offset = quad_D + margin
+
+/obj/effect/step_trigger/teleporter/random/rogue/fourbyfour/onbottom/New()
+ ..()
+ teleport_x = quad_L + margin
+ teleport_x_offset = quad_R - margin
+ teleport_y = quad_U - margin
+ teleport_y_offset = quad_U - margin
+
+//Sure, I could probably do this with math. But I'm tired.
+/*
+ S1 300
+ -----------------------------------
+ |015/285 135/285|166/285 285/285|
+ | | |S
+ | A3 | A4 |2
+ | | |
+0|015/166 135/166|166/166 285/166|3
+0|---------------------------------|0
+0|015/135 135/135|166/135 285/135|0
+ | | |
+S| A1 | A2 |
+4| | |
+ |015/015 135/015|166/015 285/015|
+ -----------------------------------
+ 000 S3
+*/
+/*
+//////////// AREA 1
+/obj/effect/step_trigger/teleporter/random/rogue/fourbyfour/A1S1
+ teleport_x =
+ teleport_y =
+ teleport_x_offset =
+ teleport_y_offset =
+
+/obj/effect/step_trigger/teleporter/random/rogue/fourbyfour/A1S2
+ teleport_x =
+ teleport_y =
+ teleport_x_offset =
+ teleport_y_offset =
+
+/obj/effect/step_trigger/teleporter/random/rogue/fourbyfour/A1S3
+ teleport_x =
+ teleport_y =
+ teleport_x_offset =
+ teleport_y_offset =
+
+/obj/effect/step_trigger/teleporter/random/rogue/fourbyfour/A1S4
+ teleport_x =
+ teleport_y =
+ teleport_x_offset =
+ teleport_y_offset =
+
+//////////// AREA 2
+/obj/effect/step_trigger/teleporter/random/rogue/fourbyfour/A2S1
+ teleport_x =
+ teleport_y =
+ teleport_x_offset =
+ teleport_y_offset =
+
+/obj/effect/step_trigger/teleporter/random/rogue/fourbyfour/A2S2
+ teleport_x =
+ teleport_y =
+ teleport_x_offset =
+ teleport_y_offset =
+
+/obj/effect/step_trigger/teleporter/random/rogue/fourbyfour/A2S3
+ teleport_x =
+ teleport_y =
+ teleport_x_offset =
+ teleport_y_offset =
+
+/obj/effect/step_trigger/teleporter/random/rogue/fourbyfour/A2S4
+ teleport_x =
+ teleport_y =
+ teleport_x_offset =
+ teleport_y_offset =
+
+//////////// AREA 3
+/obj/effect/step_trigger/teleporter/random/rogue/fourbyfour/A3S1
+ teleport_x =
+ teleport_y =
+ teleport_x_offset =
+ teleport_y_offset =
+
+/obj/effect/step_trigger/teleporter/random/rogue/fourbyfour/A3S2
+ teleport_x =
+ teleport_y =
+ teleport_x_offset =
+ teleport_y_offset =
+
+/obj/effect/step_trigger/teleporter/random/rogue/fourbyfour/A3S3
+ teleport_x =
+ teleport_y =
+ teleport_x_offset =
+ teleport_y_offset =
+
+/obj/effect/step_trigger/teleporter/random/rogue/fourbyfour/A3S4
+ teleport_x =
+ teleport_y =
+ teleport_x_offset =
+ teleport_y_offset =
+
+//////////// AREA 4
+/obj/effect/step_trigger/teleporter/random/rogue/fourbyfour/A4S1
+ teleport_x =
+ teleport_y =
+ teleport_x_offset =
+ teleport_y_offset =
+
+/obj/effect/step_trigger/teleporter/random/rogue/fourbyfour/A4S2
+ teleport_x =
+ teleport_y =
+ teleport_x_offset =
+ teleport_y_offset =
+
+/obj/effect/step_trigger/teleporter/random/rogue/fourbyfour/A4S3
+ teleport_x =
+ teleport_y =
+ teleport_x_offset =
+ teleport_y_offset =
+
+/obj/effect/step_trigger/teleporter/random/rogue/fourbyfour/A4S4
+ teleport_x =
+ teleport_y =
+ teleport_x_offset =
+ teleport_y_offset =
+*/
\ No newline at end of file
diff --git a/code/modules/rogueminer_vr/zone_console.dm b/code/modules/rogueminer_vr/zone_console.dm
new file mode 100644
index 0000000000..2073f92452
--- /dev/null
+++ b/code/modules/rogueminer_vr/zone_console.dm
@@ -0,0 +1,174 @@
+//////////////////////////////
+// The zone control console, fluffed ingame as
+// a scanner console for the asteroid belt
+//////////////////////////////
+#define OUTPOST_Z 5
+#define TRANSIT_Z 2
+#define BELT_Z 7
+
+/obj/machinery/computer/roguezones
+ name = "asteroid belt scanning computer"
+ desc = "Used to monitor the nearby asteroid belt and detect new areas."
+ icon_keyboard = "tech_key"
+ icon_screen = "request"
+ light_color = "#315ab4"
+ use_power = 1
+ idle_power_usage = 250
+ active_power_usage = 500
+ circuit = /obj/item/weapon/circuitboard/roguezones
+
+ var/debug = 0
+ var/debug_scans = 0
+ var/scanning = 0
+ var/legacy_zone = 0 //Disable scanning and whatnot.
+ var/obj/machinery/computer/shuttle_control/belter/shuttle_control
+
+/obj/machinery/computer/roguezones/initialize()
+ ..()
+ shuttle_control = locate(/obj/machinery/computer/shuttle_control/belter)
+
+/obj/machinery/computer/roguezones/attack_ai(mob/user as mob)
+ return attack_hand(user)
+
+/obj/machinery/computer/roguezones/attack_hand(mob/user as mob)
+ add_fingerprint(user)
+ if(stat & (BROKEN|NOPOWER))
+ return
+ user.set_machine(src)
+ ui_interact(user)
+
+/obj/machinery/computer/roguezones/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
+ user.set_machine(src)
+
+
+ var/chargePercent = min(100, ((((world.time - rm_controller.last_scan) / 10) / 60) / rm_controller.scan_wait) * 100)
+ var/curZoneOccupied = rm_controller.current_zone ? rm_controller.current_zone.is_occupied() : 0
+
+ var/list/data = list()
+ data["timeout_percent"] = chargePercent
+ data["diffstep"] = rm_controller.diffstep
+ data["difficulty"] = rm_controller.diffstep_strs[rm_controller.diffstep]
+ data["occupied"] = curZoneOccupied
+ data["scanning"] = scanning
+ data["updated"] = world.time - rm_controller.last_scan < 200 //Very recently scanned (20 seconds)
+ data["debug"] = debug
+
+ if(!shuttle_control)
+ data["shuttle_location"] = "Unknown"
+ data["shuttle_at_station"] = 0
+ else if(shuttle_control.z == OUTPOST_Z)
+ data["shuttle_location"] = "Landed"
+ data["shuttle_at_station"] = 1
+ else if(shuttle_control.z == TRANSIT_Z)
+ data["shuttle_location"] = "In-transit"
+ data["shuttle_at_station"] = 0
+ else if(shuttle_control.z == BELT_Z)
+ data["shuttle_location"] = "Belt"
+ data["shuttle_at_station"] = 0
+
+ var/can_scan = 0
+ if(chargePercent >= 100) //Keep having weird problems with these in one 'if' statement
+ if(shuttle_control && shuttle_control.z == OUTPOST_Z) //Even though I put them all in parens to avoid OoO problems...
+ if(!curZoneOccupied) //Not sure why.
+ if(!scanning)
+ can_scan = 1
+
+ if(debug_scans) can_scan = 1
+ data["scan_ready"] = can_scan
+
+ // Permit emergency recall of the shuttle if its stranded in a zone with just dead people.
+ data["can_recall_shuttle"] = (shuttle_control && shuttle_control.z == BELT_Z && !curZoneOccupied)
+
+ ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ if (!ui)
+ ui = new(user, src, ui_key, "zone_console.tmpl", src.name, 600, 400)
+ ui.set_initial_data(data)
+ ui.open()
+ ui.set_auto_update(5)
+
+/obj/machinery/computer/roguezones/Topic(href, href_list)
+ if(..())
+ return 1
+ usr.set_machine(src)
+ if (href_list["action"])
+ switch(href_list["action"])
+ if ("scan_for_new")
+ scan_for_new_zone()
+ if ("point_at_old")
+ point_at_old_zone()
+ if ("recall_shuttle")
+ failsafe_shuttle_recall()
+
+ src.add_fingerprint(usr)
+ nanomanager.update_uis(src)
+
+/obj/machinery/computer/roguezones/proc/scan_for_new_zone()
+ if(scanning) return
+
+ //Set some kinda scanning var to pause UI input on console
+ rm_controller.last_scan = world.time
+ scanning = 1
+ sleep(60)
+
+ //Break the shuttle temporarily.
+ shuttle_control.shuttle_tag = null
+
+ //Build and get a new zone.
+ var/datum/rogue/zonemaster/ZM_target = rm_controller.prepare_new_zone()
+
+ //Update shuttle destination.
+ var/datum/shuttle/ferry/S = shuttle_controller.shuttles["Belter"]
+ S.area_offsite = ZM_target.myshuttle
+
+ //Re-enable shuttle.
+ shuttle_control.shuttle_tag = "Belter"
+
+ //Update rm_previous
+ rm_controller.previous_zone = rm_controller.current_zone
+
+ //Update rm_current
+ rm_controller.current_zone = ZM_target
+
+ //Unset scanning
+ scanning = 0
+
+ return
+
+/obj/machinery/computer/roguezones/proc/point_at_old_zone()
+
+ return
+
+/obj/machinery/computer/roguezones/proc/failsafe_shuttle_recall()
+ if(!shuttle_control)
+ return // Shuttle computer has been destroyed
+ if (shuttle_control.z != BELT_Z)
+ return // Usable only when shuttle is away
+ if(rm_controller.current_zone && rm_controller.current_zone.is_occupied())
+ return // Not usable if shuttle is in occupied zone
+ // Okay do it
+ var/datum/shuttle/ferry/S = shuttle_controller.shuttles["Belter"]
+ S.launch(usr)
+
+/obj/item/weapon/circuitboard/roguezones
+ name = T_BOARD("asteroid belt scanning computer")
+ build_path = /obj/machinery/computer/roguezones
+ origin_tech = list(TECH_DATA = 3, TECH_BLUESPACE = 1)
+
+// Undefine our constants to not pollute namespace
+#undef OUTPOST_Z
+#undef TRANSIT_Z
+#undef BELT_Z
+
+/obj/item/weapon/paper/rogueminer
+ name = "R-38 Scanner Console Guide"
+ info = {"
Getting Started
+ Congratulations, your station has purchased the R-38 industrial asteroid belt scanner!
+ Using the R-38 is almost as simple as brain surgery! Simply press the scan button to scan for a new mineral-rich asteroid belt location!
+ That's all there is to it!
+ Notice, scan may cause extreme brain damage to those present in asteroid belt, so scanning will be disabled in that case.
+ Existing minerals and living creatures interfere with the scans, so the more minerals extracted and creatures 'removed'/made-not-living in the belt, the more accurate future scans will be.
+ Traveling to the belt
+ When a new zone has been scanned, your station's shuttle destination will be updated to direct it to the newly discovered area automatically.
+ You can then travel to the new area to mine in that location.
+
+ This technology produced under license from Thinktronic Systems, LTD."}
\ No newline at end of file
diff --git a/code/modules/rogueminer_vr/zonemaster.dm b/code/modules/rogueminer_vr/zonemaster.dm
new file mode 100644
index 0000000000..0f3b39b37a
--- /dev/null
+++ b/code/modules/rogueminer_vr/zonemaster.dm
@@ -0,0 +1,418 @@
+//////////////////////////////
+// The zonemaster object, spawned to track the zone and
+// clean/populate the zone with asteroids and loot
+//////////////////////////////
+
+/datum/rogue/zonemaster
+ //our area
+ var/area/asteroid/rogue/myarea
+ var/area/shuttle/belter/myshuttle
+
+ //world.time
+ var/prepared_at = 0
+
+ //accepting shuttles
+ var/ready = 0
+
+ //completely empty
+ var/clean = 1
+
+ //scored or not
+ var/scored = 0
+
+ //for scoring
+ var/list/mineral_rocks = list()
+ var/list/spawned_mobs = list()
+ var/original_mobs = 0
+
+ //in-use spawns from the area
+ var/obj/asteroid_spawner/list/rockspawns = list()
+ var/obj/rogue_mobspawner/list/mobspawns = list()
+
+/datum/rogue/zonemaster/New(var/area/A)
+ ASSERT(A)
+ myarea = A
+ myshuttle = locate(myarea.shuttle_area)
+ spawn(10) //This is called from controller New() and freaks out if this calls back too fast.
+ rm_controller.mark_clean(src)
+
+///////////////////////////////
+///// Utility Procs ///////////
+///////////////////////////////
+
+/datum/rogue/zonemaster/proc/is_occupied()
+ var/humans = 0
+ for(var/mob/living/carbon/human/H in human_mob_list)
+ if(H.stat >= DEAD) //Conditions for exclusion here, like if disconnected people start blocking it.
+ continue
+ var/area/A = get_area(H)
+ if((A == myarea) || (A == myshuttle)) //The loc of a turf is the area it is in.
+ humans++
+ return humans
+
+///////////////////////////////
+///// Asteroid Generation /////
+///////////////////////////////
+/datum/rogue/zonemaster/proc/generate_asteroid(var/core_min = 2, var/core_max = 5)
+ //Chance for a predefined structure instead, more common later
+ if(prob(rm_controller.diffstep*4))
+ rm_controller.dbg("ZM(ga): Fell into prefab asteroid chance.")
+ var/prefab = pick(rm_controller.prefabs["tier[rm_controller.diffstep]"])
+ rm_controller.dbg("ZM(ga): Picked [prefab] as the prefab.")
+ var/prefabinst = new prefab(null)
+ return prefabinst
+
+ var/datum/rogue/asteroid/A = new(rand(core_min,core_max))
+ rm_controller.dbg("ZM(ga): New asteroid with C:[A.coresize], TW:[A.type_wall].")
+
+ //Add the core to the asteroid's map
+ rm_controller.dbg("ZM(ga): Starting core generation for [A.coresize] size core..")
+ for(var/x = 1; x <= A.coresize, x++)
+ for(var/y = 1; y <= A.coresize, y++)
+ rm_controller.dbg("ZM(ga): Doing core-relative [x],[y] at [A.coresize+x],[A.coresize+y], [A.type_wall].")
+ A.spot_add(A.coresize+x, A.coresize+y, A.type_wall)
+
+ var/max_armlen = A.coresize - 1 //Can tweak to change appearance.
+
+ //Add the arms to the asteroid's map
+ //Vertical arms
+ for(var/x = A.coresize+1, x <= A.coresize*2, x++) //Start at leftmost side of core, work towards higher X.
+ rm_controller.dbg("ZM(ga): Vert arms. My current column is x:[x].")
+ var/B_arm = rand(0,max_armlen)
+ var/T_arm = rand(0,max_armlen)
+ rm_controller.dbg("ZM(ga): B/T. Going to make B:[B_arm], T:[T_arm] for x:[x].")
+
+ //Bottom arm
+ for(var/y = A.coresize, y > A.coresize-B_arm, y--) //Start at bottom edge of the core, work towards lower Y.
+ A.spot_add(x,y,A.type_wall)
+ //Top arm
+ for(var/y = (A.coresize*2)+1, y < ((A.coresize*2)+1)+T_arm, y++) //Start at top edge of the core, work towards higher Y.
+ A.spot_add(x,y,A.type_wall)
+
+
+ //Horizontal arms
+ for(var/y = A.coresize+1, y <= A.coresize*2, y++) //Start at lower side of core, work towards higher Y.
+ rm_controller.dbg("ZM(ga): Horiz arms. My current row is y:[y].")
+ var/R_arm = rand(0,max_armlen)
+ var/L_arm = rand(0,max_armlen)
+ rm_controller.dbg("ZM(ga): R/L. Going to make R:[R_arm], L:[L_arm] for y:[y].")
+
+ //Right arm
+ for(var/x = (A.coresize*2)+1, x <= ((A.coresize*2)+1)+R_arm, x++) //Start at right edge of core, work towards higher X.
+ A.spot_add(x,y,A.type_wall)
+ //Left arm
+ for(var/x = A.coresize, x > A.coresize-L_arm, x--) //Start at left edge of core, work towards lower X.
+ A.spot_add(x,y,A.type_wall)
+
+
+ //Diagonals
+ // hao do
+
+ rm_controller.dbg("ZM(ga): Asteroid generation done.")
+ return A
+
+/datum/rogue/zonemaster/proc/place_asteroid(var/datum/rogue/asteroid/A,var/obj/asteroid_spawner/SP)
+ ASSERT(SP && A)
+
+ rm_controller.dbg("ZM(pa): Placing at point [SP.x],[SP.y],[SP.z].")
+ SP.myasteroid = A
+
+ //Bottom-left corner of our bounding box
+ var/BLx = SP.x - (A.width/2)
+ var/BLy = SP.y - (A.width/2)
+ rm_controller.dbg("ZM(pa): BLx is [BLx], BLy is [BLy].")
+
+ rm_controller.dbg("ZM(pa): The asteroid has [A.map.len] X-lists.")
+
+ for(var/Ix=1, Ix <= A.map.len, Ix++)
+ var/list/curr_x = A.map[Ix]
+ rm_controller.dbg("ZM(pa): Now doing X:[Ix] which has [curr_x.len] Y-lists.")
+
+ for(var/Iy=1, Iy <= curr_x.len, Iy++)
+ var/list/curr_y = curr_x[Iy]
+ rm_controller.dbg("ZM(pa): Now doing Y:[Iy] which has [curr_y.len] items.")
+
+ var/world_x = BLx+Ix
+ var/world_y = BLy+Iy
+ var/world_z = SP.z
+
+ var/spot = locate(world_x,world_y,world_z)
+
+ for(var/T in curr_y)
+ rm_controller.dbg("ZM(pa): Doing entry [T] in Y-list [Iy].")
+ if(ispath(T,/turf)) //We're spawning a turf
+ rm_controller.dbg("ZM(pa): Turf-generate mode.")
+
+ //Make sure we locate()'d a turf and not something else
+ if(!isturf(spot))
+ spot = get_turf(spot)
+ var/turf/P = spot
+
+ rm_controller.dbg("ZM(pa): Replacing [P.type] with [T].")
+ var/turf/newturf = P.ChangeTurf(T)
+ switch(newturf.type)
+ if(/turf/simulated/mineral)
+ place_resources(newturf)
+
+ newturf.update_icon(1)
+ else //Anything not a turf
+ rm_controller.dbg("ZM(pa): Creating [T].")
+ new T(spot)
+
+
+/datum/rogue/zonemaster/proc/place_resources(var/turf/simulated/mineral/M)
+ #define XENOARCH_SPAWN_CHANCE 0.3
+ #define DIGSITESIZE_LOWER 4
+ #define DIGSITESIZE_UPPER 12
+ #define ARTIFACTSPAWNNUM_LOWER 6
+ #define ARTIFACTSPAWNNUM_UPPER 12 //Replace with difficulty-based ones.
+
+ if(!M.mineral && prob(rm_controller.diffstep_nums[rm_controller.diffstep]/10)) //Difficulty translates directly into ore chance
+ rm_controller.dbg("ZM(par): Adding mineral to [M.x],[M.y].")
+ M.make_ore(rm_controller.diffstep >= 3 ? 1 : 0)
+ mineral_rocks += M
+ //If above difficulty threshold make rare ore instead (M.make_ore(1))
+ //Increase with difficulty etc
+
+ if(!M.density)
+ return
+
+ if(isnull(M.geologic_data))
+ M.geologic_data = new /datum/geosample(M)
+
+ if(!prob(XENOARCH_SPAWN_CHANCE))
+ return
+
+ var/farEnough = 1
+ for(var/A in master_controller.digsite_spawning_turfs)
+ var/turf/T = A
+ if(T in range(5, M))
+ farEnough = 0
+ break
+ if(!farEnough)
+ return
+
+ master_controller.digsite_spawning_turfs.Add(M)
+
+ var/digsite = get_random_digsite_type()
+ var/target_digsite_size = rand(DIGSITESIZE_LOWER, DIGSITESIZE_UPPER)
+
+ var/list/processed_turfs = list()
+ var/list/turfs_to_process = list(M)
+
+ var/list/viable_adjacent_turfs = list()
+ if(target_digsite_size > 1)
+ for(var/turf/simulated/mineral/T in orange(2, M))
+ if(!T.density)
+ continue
+ if(T.finds)
+ continue
+ if(T in processed_turfs)
+ continue
+ viable_adjacent_turfs.Add(T)
+
+ target_digsite_size = min(target_digsite_size, viable_adjacent_turfs.len)
+
+ for(var/i = 1 to target_digsite_size)
+ turfs_to_process += pick_n_take(viable_adjacent_turfs)
+
+ while(turfs_to_process.len)
+ var/turf/simulated/mineral/archeo_turf = pop(turfs_to_process)
+ rm_controller.dbg("ZM(par): Adding archeo find to [M.x],[M.y].")
+ processed_turfs.Add(archeo_turf)
+ if(isnull(archeo_turf.finds))
+ archeo_turf.finds = list()
+ if(prob(50))
+ archeo_turf.finds.Add(new /datum/find(digsite, rand(10, 190)))
+ else if(prob(75))
+ archeo_turf.finds.Add(new /datum/find(digsite, rand(10, 90)))
+ archeo_turf.finds.Add(new /datum/find(digsite, rand(110, 190)))
+ else
+ archeo_turf.finds.Add(new /datum/find(digsite, rand(10, 50)))
+ archeo_turf.finds.Add(new /datum/find(digsite, rand(60, 140)))
+ archeo_turf.finds.Add(new /datum/find(digsite, rand(150, 190)))
+
+ //sometimes a find will be close enough to the surface to show
+ var/datum/find/F = archeo_turf.finds[1]
+ if(F.excavation_required <= F.view_range)
+ archeo_turf.archaeo_overlay = "overlay_archaeo[rand(1,3)]"
+ archeo_turf.update_icon()
+
+ //have a chance for an artifact to spawn here, but not in animal or plant digsites
+ if(isnull(M.artifact_find) && digsite != DIGSITE_GARDEN && digsite != DIGSITE_ANIMAL)
+ master_controller.artifact_spawning_turfs.Add(archeo_turf)
+
+ //create artifact machinery
+ var/num_artifacts_spawn = rand(ARTIFACTSPAWNNUM_LOWER, ARTIFACTSPAWNNUM_UPPER)
+ while(master_controller.artifact_spawning_turfs.len > num_artifacts_spawn)
+ pick_n_take(master_controller.artifact_spawning_turfs)
+
+ var/list/artifacts_spawnturf_temp = master_controller.artifact_spawning_turfs.Copy()
+ while(artifacts_spawnturf_temp.len > 0)
+ var/turf/simulated/mineral/artifact_turf = pop(artifacts_spawnturf_temp)
+ artifact_turf.artifact_find = new()
+
+ #undef XENOARCH_SPAWN_CHANCE
+ #undef DIGSITESIZE_LOWER
+ #undef DIGSITESIZE_UPPER
+ #undef ARTIFACTSPAWNNUM_LOWER
+ #undef ARTIFACTSPAWNNUM_UPPER //Replace with difficulty-based ones.
+
+///////////////////////////////
+///// Zone Population /////////
+///////////////////////////////
+
+//Overall 'prepare' proc (marks as ready)
+/datum/rogue/zonemaster/proc/prepare_zone(var/delay = 0)
+ rm_controller.unmark_clean(src)
+ rm_controller.dbg("ZM(p): Preparing zone with difficulty level [rm_controller.diffstep].")
+
+
+ rm_controller.dbg("ZM(p): Randomizing spawns.")
+ randomize_spawns()
+ rm_controller.dbg("ZM(p): [rockspawns.len] picked.")
+ for(var/obj/asteroid_spawner/SP in rockspawns)
+ rm_controller.dbg("ZM(p): Creating asteroid for [SP.x],[SP.y],[SP.z].")
+ var/datum/rogue/asteroid/A = generate_asteroid()
+ rm_controller.dbg("ZM(p): Placing asteroid.")
+ place_asteroid(A,SP)
+ if(delay)
+ sleep(delay)
+
+ for(var/obj/rogue_mobspawner/SP in mobspawns)
+ rm_controller.dbg("ZM(p): Spawning mob at [SP.x],[SP.y],[SP.z].")
+ //Make sure we can spawn a spacemob here
+ if(!istype(get_turf(SP),/turf/space))
+ rm_controller.dbg("ZM(p): Turf blocking mob spawn at [SP.x],[SP.y],[SP.z].")
+ mobspawns -= SP
+ for(var/obj/rogue_mobspawner/NS in myarea.mob_spawns)
+ if(NS in mobspawns)
+ continue
+ if(istype(get_turf(NS),/turf/space))
+ SP = NS
+ break
+ if(SP)
+ rm_controller.dbg("ZM(p): Got a mob spawnpoint, so picking a type.")
+ var/mobchoice = pick(rm_controller.mobs["tier[rm_controller.diffstep]"])
+ rm_controller.dbg("ZM(p): Picked [mobchoice] to spawn.")
+ var/newmob = new mobchoice(get_turf(SP))
+ spawned_mobs += newmob
+ if(delay)
+ sleep(delay)
+
+ rm_controller.dbg("ZM(p): Zone generation done.")
+ world.log << "RM(stats): PREP [myarea] at [world.time] with [spawned_mobs.len] mobs, [mineral_rocks.len] minrocks, total of [rockspawns.len] rockspawns, [mobspawns.len] mobspawns." //DEBUG code for playtest stats gathering.
+ prepared_at = world.time
+ rm_controller.mark_ready(src)
+ return myarea
+
+//Randomize the landmarks that are enabled
+/datum/rogue/zonemaster/proc/randomize_spawns(var/chance = 50)
+ rm_controller.dbg("ZM(rs): Previously [rockspawns.len] rockspawns.")
+ rockspawns.Cut()
+ rm_controller.dbg("ZM(rs): Now [rockspawns.len] rockspawns.")
+ for(var/obj/asteroid_spawner/SP in myarea.asteroid_spawns)
+ if(prob(chance))
+ rockspawns += SP
+ rm_controller.dbg("ZM(rs): Picked [rockspawns.len] new rockspawns with [chance]% chance.")
+
+ rm_controller.dbg("ZM(rs): Previously [mobspawns.len] mobspawns.")
+ mobspawns.Cut()
+ rm_controller.dbg("ZM(rs): Now [mobspawns.len] mobspawns.")
+ for(var/obj/rogue_mobspawner/SP in myarea.mob_spawns)
+ if(prob(rm_controller.diffstep_nums[rm_controller.diffstep]/10))
+ mobspawns += SP
+ original_mobs++
+ rm_controller.dbg("ZM(rs): Picked [mobspawns.len] new mobspawns with [chance]% chance.")
+ return myarea
+
+///////////////////////////////
+///// Zone Cleaning ///////////
+///////////////////////////////
+/datum/rogue/zonemaster/proc/score_zone(var/bonus = 10)
+ rm_controller.dbg("ZM(sz): Scoring zone with area [myarea].")
+ scored = 1
+ var/tally = bonus
+
+ //Ore-bearing rocks that were mined
+ for(var/turf/T in mineral_rocks)
+ var/has_minerals = 0
+ for(var/atom/I in T.contents)
+ if(istype(I,/obj/effect/mineral))
+ has_minerals++
+ break
+ if(has_minerals == 0)
+ tally += RM_DIFF_VALUE_ORE
+
+ mineral_rocks.Cut() //For good measure, to prevent rescoring.
+
+ for(var/I = 1, I <= spawned_mobs.len, I++)
+ if(isnull(spawned_mobs[I]))
+ tally += RM_DIFF_VALUE_MOB //Mobs so annihilated they were deleted
+ rm_controller.dbg("ZM(sz): Scoring one mob annihilated.")
+ if(istype(spawned_mobs[I],/mob))
+ var/mob/M = spawned_mobs[I]
+ if(M.stat > 0) //Knocked out or dead or anything other than normal
+ tally += RM_DIFF_VALUE_MOB
+ rm_controller.dbg("ZM(sz): Scoring one mob dead.")
+
+ spawned_mobs.Cut()
+ original_mobs = 0
+
+ rm_controller.adjust_difficulty(tally)
+ rm_controller.dbg("ZM(sz): Finished scoring and adjusted by [tally].")
+ world.log << "RM(stats): SCORE [myarea] for [tally]." //DEBUG code for playtest stats gathering.
+ return tally
+
+//Overall 'destroy' proc (marks as unready)
+/datum/rogue/zonemaster/proc/clean_zone(var/delay = 1)
+ rm_controller.dbg("ZM(cz): Cleaning zone with area [myarea].")
+ world.log << "RM(stats): CLEAN start [myarea] at [world.time] prepared at [prepared_at]." //DEBUG code for playtest stats gathering.
+ rm_controller.unmark_ready(src)
+
+ //Cut these lists so qdel can dereference the things properly
+ mineral_rocks.Cut()
+ spawned_mobs.Cut()
+ rockspawns.Cut()
+ mobspawns.Cut()
+
+ var/ignored = list(
+ /obj/asteroid_spawner,
+ /obj/rogue_mobspawner,
+ /obj/effect/step_trigger/teleporter/random/rogue/fourbyfour/onleft,
+ /obj/effect/step_trigger/teleporter/random/rogue/fourbyfour/onright,
+ /obj/effect/step_trigger/teleporter/random/rogue/fourbyfour/ontop,
+ /obj/effect/step_trigger/teleporter/random/rogue/fourbyfour/onbottom)
+
+ for(var/atom/I in myarea.contents)
+ if(I.type == /turf/space)
+ I.overlays.Cut()
+ continue
+ else if(I.type in ignored)
+ continue
+ qdel(I)
+ sleep(delay)
+
+ //A deletion so nice that I give it twice
+ for(var/atom/I in myarea.contents)
+ if(I.type in ignored)
+ continue
+ qdel(I)
+ sleep(delay)
+
+ //Clean up vars
+ scored = 0
+ original_mobs = 0
+ prepared_at = 0
+
+ world.log << "RM(stats): CLEAN done [myarea] at [world.time]." //DEBUG code for playtest stats gathering.
+
+ rm_controller.dbg("ZM(cz): Finished cleaning up zone area [myarea].")
+ rm_controller.mark_clean(src)
+ return myarea
+
+///////////////////////////////
+///// Mysterious Mystery //////
+///////////////////////////////
+
+//Throw a meteor at a player in the zone
diff --git a/code/modules/shuttles/adminmulti_vr.dm b/code/modules/shuttles/adminmulti_vr.dm
deleted file mode 100644
index bf84204a53..0000000000
--- a/code/modules/shuttles/adminmulti_vr.dm
+++ /dev/null
@@ -1,4 +0,0 @@
-/obj/machinery/computer/shuttle_control/multi/admin
- name = "centcom shuttle control console"
- req_access = list(access_cent_general)
- shuttle_tag = "Administration"
diff --git a/code/modules/shuttles/awaymission_vr.dm b/code/modules/shuttles/awaymission_vr.dm
deleted file mode 100644
index 3900f40cef..0000000000
--- a/code/modules/shuttles/awaymission_vr.dm
+++ /dev/null
@@ -1,4 +0,0 @@
-/obj/machinery/computer/shuttle_control/multi/awaymission
- name = "exploration shuttle control console"
- req_access = list(access_gateway)
- shuttle_tag = "AwayMission"
diff --git a/code/modules/shuttles/departmental_vr.dm b/code/modules/shuttles/departmental_vr.dm
deleted file mode 100644
index 7efac69577..0000000000
--- a/code/modules/shuttles/departmental_vr.dm
+++ /dev/null
@@ -1,8 +0,0 @@
-/obj/machinery/computer/shuttle_control/mining
- name = "mining elevator control console"
-
-/obj/machinery/computer/shuttle_control/engineering
- name = "engineering elevator control console"
-
-/obj/machinery/computer/shuttle_control/research
- name = "research elevator control console"
diff --git a/code/modules/shuttles/shuttles_vr.dm b/code/modules/shuttles/shuttles_vr.dm
new file mode 100644
index 0000000000..71a1cf25ac
--- /dev/null
+++ b/code/modules/shuttles/shuttles_vr.dm
@@ -0,0 +1,23 @@
+/obj/machinery/computer/shuttle_control/multi/admin
+ name = "centcom shuttle control console"
+ req_access = list(access_cent_general)
+ shuttle_tag = "Administration"
+
+/obj/machinery/computer/shuttle_control/multi/awaymission
+ name = "exploration shuttle control console"
+ req_access = list(access_gateway)
+ shuttle_tag = "AwayMission"
+
+/obj/machinery/computer/shuttle_control/belter
+ name = "belter control console"
+ req_access = list(access_mining)
+ // shuttle_tag = "Belter" //The scanning console needs to enable/disable this at will.
+
+/obj/machinery/computer/shuttle_control/mining
+ name = "mining elevator control console"
+
+/obj/machinery/computer/shuttle_control/engineering
+ name = "engineering elevator control console"
+
+/obj/machinery/computer/shuttle_control/research
+ name = "research elevator control console"
diff --git a/code/modules/vehicles/Securitrain_vr.dm b/code/modules/vehicles/Securitrain_vr.dm
index fcabe2f1e9..b1aa89d84b 100644
--- a/code/modules/vehicles/Securitrain_vr.dm
+++ b/code/modules/vehicles/Securitrain_vr.dm
@@ -1,7 +1,7 @@
//This is the initial set up for the new carts. Feel free to improve and/or rewrite everything here.
//I don't know what the hell I'm doing right now. Please help. Especially with the update_icons stuff. -Joan Risu
-/obj/vehicle/train/securiengine
+/obj/vehicle/train/security/engine
name = "Security Cart"
desc = "A ridable electric car designed for pulling trolleys as well as personal transport."
icon = 'icons/obj/vehicles_vr.dmi'
@@ -23,17 +23,17 @@
var/car_limit = 0 //how many cars an engine can pull before performance degrades. This should be 0 to prevent trailers from unhitching.
active_engines = 1
- var/obj/item/weapon/key/securitrain/key
+ var/obj/item/weapon/key/security/key
var/siren = 0 //This is for eventually getting the siren sprite to work.
-/obj/item/weapon/key/securitrain
+/obj/item/weapon/key/security
name = "The Security Cart key"
desc = "The Security Cart Key used to start it."
icon = 'icons/obj/vehicles_vr.dmi'
icon_state = "securikey"
w_class = ITEMSIZE_TINY
-/obj/vehicle/train/securitrolley
+/obj/vehicle/train/security/trolley
name = "Train trolley"
desc = "A trolly designed to transport security personnel or prisoners."
icon = 'icons/obj/vehicles_vr.dmi'
@@ -47,7 +47,7 @@
load_offset_y = 4
mob_offset_y = 8
-/obj/vehicle/train/securitrolley/cargo
+/obj/vehicle/train/security/trolley/cargo
name = "Train trolley"
desc = "A trolley designed to transport security equipment to a scene."
icon = 'icons/obj/vehicles_vr.dmi'
@@ -58,15 +58,15 @@
//-------------------------------------------
// Standard procs
//-------------------------------------------
-/obj/vehicle/train/securiengine/New()
+/obj/vehicle/train/security/engine/New()
..()
cell = new /obj/item/weapon/cell/high(src)
key = new(src)
- var/image/I = new(icon = 'icons/obj/vehicles_vr.dmi', icon_state = null, layer = src.layer + 0.2) //over mobs
+ var/image/I = new(icon = 'icons/obj/vehicles.dmi', icon_state = "cargo_engine_overlay", layer = src.layer + 0.2) //over mobs
overlays += I
turn_off() //so engine verbs are correctly set
-/obj/vehicle/train/securiengine/Move(var/turf/destination)
+/obj/vehicle/train/security/engine/Move(var/turf/destination)
if(on && cell.charge < charge_use)
turn_off()
update_stats()
@@ -82,48 +82,48 @@
return ..()
-/obj/vehicle/train/securitrolley/attackby(obj/item/weapon/W as obj, mob/user as mob)
+/obj/vehicle/train/security/trolley/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(open && istype(W, /obj/item/weapon/wirecutters))
passenger_allowed = !passenger_allowed
user.visible_message("[user] [passenger_allowed ? "cuts" : "mends"] a cable in [src].","You [passenger_allowed ? "cut" : "mend"] the load limiter cable.")
else
..()
-/obj/vehicle/train/securiengine/attackby(obj/item/weapon/W as obj, mob/user as mob)
- if(istype(W, /obj/item/weapon/key/securitrain))
+/obj/vehicle/train/security/engine/attackby(obj/item/weapon/W as obj, mob/user as mob)
+ if(istype(W, /obj/item/weapon/key/cargo_train))
if(!key)
user.drop_item()
W.forceMove(src)
key = W
- verbs += /obj/vehicle/train/securiengine/verb/remove_key
+ verbs += /obj/vehicle/train/security/engine/verb/remove_key
return
..()
//cargo trains are open topped, so there is a chance the projectile will hit the mob ridding the train instead
-/obj/vehicle/train/securitrolley/bullet_act(var/obj/item/projectile/Proj)
+/obj/vehicle/train/security/bullet_act(var/obj/item/projectile/Proj)
if(buckled_mob && prob(70))
buckled_mob.bullet_act(Proj)
return
..()
-/obj/vehicle/train/securitrolley/update_icon()
+/obj/vehicle/train/security/update_icon()
if(open)
icon_state = initial(icon_state) + "_open"
else
icon_state = initial(icon_state)
-/obj/vehicle/train/securitrolley/insert_cell(var/obj/item/weapon/cell/C, var/mob/living/carbon/human/H)
+/obj/vehicle/train/security/trolley/insert_cell(var/obj/item/weapon/cell/C, var/mob/living/carbon/human/H)
return
-/obj/vehicle/train/securiengine/insert_cell(var/obj/item/weapon/cell/C, var/mob/living/carbon/human/H)
+/obj/vehicle/train/security/engine/insert_cell(var/obj/item/weapon/cell/C, var/mob/living/carbon/human/H)
..()
update_stats()
-/obj/vehicle/train/securiengine/remove_cell(var/mob/living/carbon/human/H)
+/obj/vehicle/train/security/engine/remove_cell(var/mob/living/carbon/human/H)
..()
update_stats()
-/obj/vehicle/train/securiengine/Bump(atom/Obstacle)
+/obj/vehicle/train/security/engine/Bump(atom/Obstacle)
var/obj/machinery/door/D = Obstacle
var/mob/living/carbon/human/H = load
if(istype(D) && istype(H))
@@ -131,7 +131,7 @@
..()
-/obj/vehicle/train/securitrolley/Bump(atom/Obstacle)
+/obj/vehicle/train/security/trolley/Bump(atom/Obstacle)
if(!lead)
return //so people can't knock others over by pushing a trolley around
..()
@@ -139,44 +139,44 @@
//-------------------------------------------
// Train procs
//-------------------------------------------
-/obj/vehicle/train/securiengine/turn_on()
+/obj/vehicle/train/security/engine/turn_on()
if(!key)
return
else
..()
update_stats()
- verbs -= /obj/vehicle/train/securiengine/verb/stop_engine
- verbs -= /obj/vehicle/train/securiengine/verb/start_engine
+ verbs -= /obj/vehicle/train/security/engine/verb/stop_engine
+ verbs -= /obj/vehicle/train/security/engine/verb/start_engine
if(on)
- verbs += /obj/vehicle/train/securiengine/verb/stop_engine
+ verbs += /obj/vehicle/train/security/engine/verb/stop_engine
else
- verbs += /obj/vehicle/train/securiengine/verb/start_engine
+ verbs += /obj/vehicle/train/security/engine/verb/start_engine
-/obj/vehicle/train/securiengine/turn_off()
+/obj/vehicle/train/security/engine/turn_off()
..()
- verbs -= /obj/vehicle/train/securiengine/verb/stop_engine
- verbs -= /obj/vehicle/train/securiengine/verb/start_engine
+ verbs -= /obj/vehicle/train/security/engine/verb/stop_engine
+ verbs -= /obj/vehicle/train/security/engine/verb/start_engine
if(!on)
- verbs += /obj/vehicle/train/securiengine/verb/start_engine
+ verbs += /obj/vehicle/train/security/engine/verb/start_engine
else
- verbs += /obj/vehicle/train/securiengine/verb/stop_engine
+ verbs += /obj/vehicle/train/security/engine/verb/stop_engine
-/obj/vehicle/train/securitrolley/RunOver(var/mob/living/carbon/human/H)
+/obj/vehicle/train/security/RunOver(var/mob/living/carbon/human/H)
var/list/parts = list(BP_HEAD, BP_TORSO, BP_L_LEG, BP_R_LEG, BP_L_ARM, BP_R_ARM)
H.apply_effects(5, 5)
for(var/i = 0, i < rand(1,3), i++)
H.apply_damage(rand(1,5), BRUTE, pick(parts))
-/obj/vehicle/train/securitrolley/RunOver(var/mob/living/carbon/human/H)
+/obj/vehicle/train/security/trolley/RunOver(var/mob/living/carbon/human/H)
..()
attack_log += text("\[[time_stamp()]\] ran over [H.name] ([H.ckey])")
-/obj/vehicle/train/securiengine/RunOver(var/mob/living/carbon/human/H)
+/obj/vehicle/train/security/engine/RunOver(var/mob/living/carbon/human/H)
..()
if(is_train_head() && istype(load, /mob/living/carbon/human))
@@ -192,7 +192,7 @@
//-------------------------------------------
// Interaction procs
//-------------------------------------------
-/obj/vehicle/train/securiengine/relaymove(mob/user, direction)
+/obj/vehicle/train/security/engine/relaymove(mob/user, direction)
if(user != load)
return 0
@@ -205,8 +205,7 @@
else
return ..()
-
-/obj/vehicle/train/securiengine/examine(mob/user)
+/obj/vehicle/train/security/engine/examine(mob/user)
if(!..(user, 1))
return
@@ -216,7 +215,7 @@
user << "The power light is [on ? "on" : "off"].\nThere are[key ? "" : " no"] keys in the ignition."
user << "The charge meter reads [cell? round(cell.percent(), 0.01) : 0]%"
-/obj/vehicle/train/securiengine/verb/start_engine()
+/obj/vehicle/train/security/engine/verb/start_engine()
set name = "Start engine"
set category = "Vehicle"
set src in view(0)
@@ -237,7 +236,7 @@
else
usr << "[src]'s engine won't start."
-/obj/vehicle/train/securiengine/verb/stop_engine()
+/obj/vehicle/train/security/engine/verb/stop_engine()
set name = "Stop engine"
set category = "Vehicle"
set src in view(0)
@@ -253,7 +252,7 @@
if (!on)
usr << "You stop [src]'s engine."
-/obj/vehicle/train/securiengine/verb/remove_key()
+/obj/vehicle/train/security/engine/verb/remove_key()
set name = "Remove key"
set category = "Vehicle"
set src in view(0)
@@ -272,12 +271,12 @@
usr.put_in_hands(key)
key = null
- verbs -= /obj/vehicle/train/securiengine/verb/remove_key
+ verbs -= /obj/vehicle/train/security/engine/verb/remove_key
//-------------------------------------------
// Loading/unloading procs
//-------------------------------------------
-/obj/vehicle/train/securitrolley/load(var/atom/movable/C)
+/obj/vehicle/train/security/trolley/load(var/atom/movable/C)
if(ismob(C) && !passenger_allowed)
return 0
if(!istype(C,/obj/machinery) && !istype(C,/obj/structure/closet) && !istype(C,/obj/structure/largecrate) && !istype(C,/obj/structure/reagent_dispensers) && !istype(C,/obj/structure/ore_box) && !istype(C, /mob/living/carbon/human))
@@ -293,7 +292,7 @@
if(load)
return 1
-/obj/vehicle/train/securiengine/load(var/atom/movable/C)
+/obj/vehicle/train/security/engine/load(var/atom/movable/C)
if(!istype(C, /mob/living/carbon/human))
return 0
@@ -303,7 +302,7 @@
//This prevents the object from being interacted with until it has
// been unloaded. A dummy object is loaded instead so the loading
// code knows to handle it correctly.
-/obj/vehicle/train/securitrolley/proc/load_object(var/atom/movable/C)
+/obj/vehicle/train/security/trolley/proc/load_object(var/atom/movable/C)
if(!isturf(C.loc)) //To prevent loading things from someone's inventory, which wouldn't get handled properly.
return 0
if(load || C.anchored)
@@ -329,7 +328,7 @@
C.pixel_y = initial(C.pixel_y)
C.layer = initial(C.layer)
-/obj/vehicle/train/securitrolley/unload(var/mob/user, var/direction)
+/obj/vehicle/train/security/trolley/unload(var/mob/user, var/direction)
if(istype(load, /datum/vehicle_dummy_load))
var/datum/vehicle_dummy_load/dummy_load = load
load = dummy_load.actual_load
@@ -342,15 +341,13 @@
// Latching/unlatching procs
//-------------------------------------------
-/obj/vehicle/train/securiengine/latch(obj/vehicle/train/T, mob/user)
+/obj/vehicle/train/security/engine/latch(obj/vehicle/train/T, mob/user)
if(!istype(T) || !Adjacent(T))
return 0
//if we are attaching a trolley to an engine we don't care what direction
// it is in and it should probably be attached with the engine in the lead
- if(istype(T, /obj/vehicle/train/securitrolley))
- T.attach_to(src, user)
- if (istype(T, /obj/vehicle/train/securitrolley/cargo))
+ if(istype(T, /obj/vehicle/train/security/trolley))
T.attach_to(src, user)
else
var/T_dir = get_dir(src, T) //figure out where T is wrt src
@@ -371,7 +368,7 @@
// more engines increases this limit by car_limit per
// engine.
//-------------------------------------------------------
-/obj/vehicle/train/securiengine/update_car(var/train_length, var/active_engines)
+/obj/vehicle/train/security/engine/update_car(var/train_length, var/active_engines)
src.train_length = train_length
src.active_engines = active_engines
@@ -382,9 +379,9 @@
move_delay = max(0, (-car_limit * active_engines) + train_length - active_engines) //limits base overweight so you cant overspeed trains
move_delay *= (1 / max(1, active_engines)) * 2 //overweight penalty (scaled by the number of engines)
move_delay += config.run_speed //base reference speed
- move_delay *= 1.5 //makes cargo trains 10% slower than running when not overweight
+ move_delay *= 1.1 //makes cargo trains 10% slower than running when not overweight
-/obj/vehicle/train/securitrolley/update_car(var/train_length, var/active_engines)
+/obj/vehicle/train/security/trolley/update_car(var/train_length, var/active_engines)
src.train_length = train_length
src.active_engines = active_engines
@@ -392,32 +389,3 @@
anchored = 0
else
anchored = 1
-
-//-----------------------------------------------------
-//Update layer stuff
-//
-//This is supposed to update the layers and put the mob in the correct spot.
-//Pls help squirrel get this to work. ;m;
-//-----------------------------------------------------
-/obj/vehicle/train/securiengine/proc/update_layer()
- if(dir == SOUTH)
- layer = FLY_LAYER
- else
- layer = OBJ_LAYER
-
-/obj/vehicle/train/securiengine/proc/update_mob()
- if(buckled_mob)
- buckled_mob.set_dir(dir)
- switch(dir)
- if(SOUTH)
- buckled_mob.pixel_x = 0
- buckled_mob.pixel_y = 7
- if(WEST)
- buckled_mob.pixel_x = 13
- buckled_mob.pixel_y = 7
- if(NORTH)
- buckled_mob.pixel_x = 0
- buckled_mob.pixel_y = 4
- if(EAST)
- buckled_mob.pixel_x = -13
- buckled_mob.pixel_y = 7
diff --git a/code/modules/vehicles/rover_vr.dm b/code/modules/vehicles/rover_vr.dm
new file mode 100644
index 0000000000..3e584b9bee
--- /dev/null
+++ b/code/modules/vehicles/rover_vr.dm
@@ -0,0 +1,398 @@
+//This is the initial set up for the new carts. Feel free to improve and/or rewrite everything here.
+//I don't know what the hell I'm doing right now. Please help. Especially with the update_icons stuff. -Joan Risu
+
+/obj/vehicle/train/rover/engine
+ name = "NT Humvee"
+ desc = "The NT version of the UF T-41LV, a Federation recon vehicle used as a personal transport. Can be latched to a trolly to transport equipment. "
+ icon = 'icons/vore/rover_vr.dmi'
+ icon_state = "rover"
+ on = 0
+ powered = 1
+ locked = 0
+ move_delay = 0.5
+
+ //Health stuff
+ health = 100
+ maxhealth = 100
+ fire_dam_coeff = 0.6
+ brute_dam_coeff = 0.5
+
+ load_item_visible = 0
+ load_offset_x = 0
+ pixel_x = -8
+ pixel_y = -8
+
+
+ var/car_limit = 0 //how many cars an engine can pull before performance degrades. This should be 0 to prevent trailers from unhitching.
+ active_engines = 1
+ var/obj/item/weapon/key/rover/key
+ var/siren = 0 //This is for eventually getting the siren sprite to work.
+
+/obj/item/weapon/key/rover
+ name = "The Rover key"
+ desc = "The Rover key used to start it."
+ icon = 'icons/obj/vehicles_vr.dmi'
+ icon_state = "securikey"
+ w_class = ITEMSIZE_TINY
+
+/obj/vehicle/train/rover/trolley
+ name = "Train trolley"
+ desc = "A trolley designed to transport security equipment to a scene."
+ icon = 'icons/obj/vehicles_vr.dmi'
+ icon_state = "secitemcarrierbot"
+ anchored = 0
+ passenger_allowed = 0
+ locked = 0
+
+ load_item_visible = 0
+ load_offset_x = 0
+ load_offset_y = 0
+ mob_offset_y = 0
+
+//-------------------------------------------
+// Standard procs
+//-------------------------------------------
+/obj/vehicle/train/rover/engine/New()
+ ..()
+ cell = new /obj/item/weapon/cell/high(src)
+ key = new(src)
+ turn_off() //so engine verbs are correctly set
+
+/obj/vehicle/train/rover/engine/Move(var/turf/destination)
+ if(on && cell.charge < charge_use)
+ turn_off()
+ update_stats()
+ if(load && is_train_head())
+ load << "The drive motor briefly whines, then drones to a stop."
+
+ if(is_train_head() && !on)
+ return 0
+
+ //space check ~no flying space trains sorry
+ if(on && istype(destination, /turf/space))
+ return 0
+
+ return ..()
+
+/obj/vehicle/train/rover/trolley/attackby(obj/item/weapon/W as obj, mob/user as mob)
+ if(open && istype(W, /obj/item/weapon/wirecutters))
+ passenger_allowed = !passenger_allowed
+ user.visible_message("[user] [passenger_allowed ? "cuts" : "mends"] a cable in [src].","You [passenger_allowed ? "cut" : "mend"] the load limiter cable.")
+ else
+ ..()
+
+/obj/vehicle/train/rover/engine/attackby(obj/item/weapon/W as obj, mob/user as mob)
+ if(istype(W, /obj/item/weapon/key/rover))
+ if(!key)
+ user.drop_item()
+ W.forceMove(src)
+ key = W
+ verbs += /obj/vehicle/train/rover/engine/verb/remove_key
+ return
+ ..()
+
+//cargo trains are open topped, so there is a chance the projectile will hit the mob ridding the train instead
+/obj/vehicle/train/rover/bullet_act(var/obj/item/projectile/Proj)
+ if(buckled_mob && prob(70))
+ buckled_mob.bullet_act(Proj)
+ return
+ ..()
+
+/obj/vehicle/train/rover/update_icon()
+ if(open)
+ icon_state = initial(icon_state) + "_open"
+ else
+ icon_state = initial(icon_state)
+
+/obj/vehicle/train/rover/trolley/insert_cell(var/obj/item/weapon/cell/C, var/mob/living/carbon/human/H)
+ return
+
+/obj/vehicle/train/rover/engine/insert_cell(var/obj/item/weapon/cell/C, var/mob/living/carbon/human/H)
+ ..()
+ update_stats()
+
+/obj/vehicle/train/rover/engine/remove_cell(var/mob/living/carbon/human/H)
+ ..()
+ update_stats()
+
+/obj/vehicle/train/rover/engine/Bump(atom/Obstacle)
+ var/obj/machinery/door/D = Obstacle
+ var/mob/living/carbon/human/H = load
+ if(istype(D) && istype(H))
+ D.Bumped(H) //a little hacky, but hey, it works, and respects access rights
+
+ ..()
+
+/obj/vehicle/train/rover/trolley/Bump(atom/Obstacle)
+ if(!lead)
+ return //so people can't knock others over by pushing a trolley around
+ ..()
+
+//-------------------------------------------
+// Train procs
+//-------------------------------------------
+/obj/vehicle/train/rover/engine/turn_on()
+ if(!key)
+ return
+ else
+ ..()
+ update_stats()
+
+ verbs -= /obj/vehicle/train/rover/engine/verb/stop_engine
+ verbs -= /obj/vehicle/train/rover/engine/verb/start_engine
+
+ if(on)
+ verbs += /obj/vehicle/train/rover/engine/verb/stop_engine
+ else
+ verbs += /obj/vehicle/train/rover/engine/verb/start_engine
+
+/obj/vehicle/train/rover/engine/turn_off()
+ ..()
+
+ verbs -= /obj/vehicle/train/rover/engine/verb/stop_engine
+ verbs -= /obj/vehicle/train/rover/engine/verb/start_engine
+
+ if(!on)
+ verbs += /obj/vehicle/train/rover/engine/verb/start_engine
+ else
+ verbs += /obj/vehicle/train/rover/engine/verb/stop_engine
+
+/obj/vehicle/train/rover/RunOver(var/mob/living/carbon/human/H)
+ var/list/parts = list(BP_HEAD, BP_TORSO, BP_L_LEG, BP_R_LEG, BP_L_ARM, BP_R_ARM)
+
+ H.apply_effects(5, 5)
+ for(var/i = 0, i < rand(1,3), i++)
+ H.apply_damage(rand(1,5), BRUTE, pick(parts))
+
+/obj/vehicle/train/rover/trolley/RunOver(var/mob/living/carbon/human/H)
+ ..()
+ attack_log += text("\[[time_stamp()]\] ran over [H.name] ([H.ckey])")
+
+/obj/vehicle/train/rover/engine/RunOver(var/mob/living/carbon/human/H)
+ ..()
+
+ if(is_train_head() && istype(load, /mob/living/carbon/human))
+ var/mob/living/carbon/human/D = load
+ D << "\red \b You ran over [H]!"
+ visible_message("\red \The [src] ran over [H]!")
+ attack_log += text("\[[time_stamp()]\] ran over [H.name] ([H.ckey]), driven by [D.name] ([D.ckey])")
+ msg_admin_attack("[D.name] ([D.ckey]) ran over [H.name] ([H.ckey]). (JMP)")
+ else
+ attack_log += text("\[[time_stamp()]\] ran over [H.name] ([H.ckey])")
+
+
+//-------------------------------------------
+// Interaction procs
+//-------------------------------------------
+/obj/vehicle/train/rover/engine/relaymove(mob/user, direction)
+ if(user != load)
+ return 0
+
+ if(is_train_head())
+ if(direction == reverse_direction(dir) && tow)
+ return 0
+ if(Move(get_step(src, direction)))
+ return 1
+ return 0
+ else
+ return ..()
+
+/obj/vehicle/train/rover/engine/examine(mob/user)
+ if(!..(user, 1))
+ return
+
+ if(!istype(usr, /mob/living/carbon/human))
+ return
+
+ user << "The power light is [on ? "on" : "off"].\nThere are[key ? "" : " no"] keys in the ignition."
+ user << "The charge meter reads [cell? round(cell.percent(), 0.01) : 0]%"
+
+/obj/vehicle/train/rover/engine/verb/start_engine()
+ set name = "Start engine"
+ set category = "Vehicle"
+ set src in view(0)
+
+ if(!istype(usr, /mob/living/carbon/human))
+ return
+
+ if(on)
+ usr << "The engine is already running."
+ return
+
+ turn_on()
+ if (on)
+ usr << "You start [src]'s engine."
+ else
+ if(cell.charge < charge_use)
+ usr << "[src] is out of power."
+ else
+ usr << "[src]'s engine won't start."
+
+/obj/vehicle/train/rover/engine/verb/stop_engine()
+ set name = "Stop engine"
+ set category = "Vehicle"
+ set src in view(0)
+
+ if(!istype(usr, /mob/living/carbon/human))
+ return
+
+ if(!on)
+ usr << "The engine is already stopped."
+ return
+
+ turn_off()
+ if (!on)
+ usr << "You stop [src]'s engine."
+
+/obj/vehicle/train/rover/engine/verb/remove_key()
+ set name = "Remove key"
+ set category = "Vehicle"
+ set src in view(0)
+
+ if(!istype(usr, /mob/living/carbon/human))
+ return
+
+ if(!key || (load && load != usr))
+ return
+
+ if(on)
+ turn_off()
+
+ key.loc = usr.loc
+ if(!usr.get_active_hand())
+ usr.put_in_hands(key)
+ key = null
+
+ verbs -= /obj/vehicle/train/rover/engine/verb/remove_key
+
+//-------------------------------------------
+// Loading/unloading procs
+//-------------------------------------------
+/obj/vehicle/train/rover/trolley/load(var/atom/movable/C)
+ if(ismob(C) && !passenger_allowed)
+ return 0
+ if(!istype(C,/obj/machinery) && !istype(C,/obj/structure/closet) && !istype(C,/obj/structure/largecrate) && !istype(C,/obj/structure/reagent_dispensers) && !istype(C,/obj/structure/ore_box) && !istype(C, /mob/living/carbon/human))
+ return 0
+
+ //if there are any items you don't want to be able to interact with, add them to this check
+ // ~no more shielded, emitter armed death trains
+ if(istype(C, /obj/machinery))
+ load_object(C)
+ else
+ ..()
+
+ if(load)
+ return 1
+
+/obj/vehicle/train/rover/engine/load(var/atom/movable/C)
+ if(!istype(C, /mob/living/carbon/human))
+ return 0
+
+ if(ismob(C))
+ buckle_mob(C)
+ C.alpha = 0
+
+ return ..()
+
+/obj/vehicle/train/rover/engine/unload(var/mob/user, var/direction)
+ var/mob/living/carbon/human/C = load
+
+
+ if(ismob(load))
+ unbuckle_mob(load)
+ C.alpha = 255
+
+ load = null
+
+
+//Load the object "inside" the trolley and add an overlay of it.
+//This prevents the object from being interacted with until it has
+// been unloaded. A dummy object is loaded instead so the loading
+// code knows to handle it correctly.
+/obj/vehicle/train/rover/trolley/proc/load_object(var/atom/movable/C)
+ if(!isturf(C.loc)) //To prevent loading things from someone's inventory, which wouldn't get handled properly.
+ return 0
+ if(load || C.anchored)
+ return 0
+
+ var/datum/vehicle_dummy_load/dummy_load = new()
+ load = dummy_load
+
+ if(!load)
+ return
+ dummy_load.actual_load = C
+ C.forceMove(src)
+
+ if(load_item_visible)
+ C.pixel_x += load_offset_x
+ C.pixel_y += load_offset_y
+ C.layer = layer
+
+ overlays += C
+
+ //we can set these back now since we have already cloned the icon into the overlay
+ C.pixel_x = initial(C.pixel_x)
+ C.pixel_y = initial(C.pixel_y)
+ C.layer = initial(C.layer)
+
+/obj/vehicle/train/rover/trolley/unload(var/mob/user, var/direction)
+ if(istype(load, /datum/vehicle_dummy_load))
+ var/datum/vehicle_dummy_load/dummy_load = load
+ load = dummy_load.actual_load
+ dummy_load.actual_load = null
+ qdel(dummy_load)
+ overlays.Cut()
+ ..()
+
+//-------------------------------------------
+// Latching/unlatching procs
+//-------------------------------------------
+
+/obj/vehicle/train/rover/engine/latch(obj/vehicle/train/T, mob/user)
+ if(!istype(T) || !Adjacent(T))
+ return 0
+
+ //if we are attaching a trolley to an engine we don't care what direction
+ // it is in and it should probably be attached with the engine in the lead
+ if(istype(T, /obj/vehicle/train/rover/trolley))
+ T.attach_to(src, user)
+ else
+ var/T_dir = get_dir(src, T) //figure out where T is wrt src
+
+ if(dir == T_dir) //if car is ahead
+ src.attach_to(T, user)
+ else if(reverse_direction(dir) == T_dir) //else if car is behind
+ T.attach_to(src, user)
+
+//-------------------------------------------------------
+// Stat update procs
+//
+// Update the trains stats for speed calculations.
+// The longer the train, the slower it will go. car_limit
+// sets the max number of cars one engine can pull at
+// full speed. Adding more cars beyond this will slow the
+// train proportionate to the length of the train. Adding
+// more engines increases this limit by car_limit per
+// engine.
+//-------------------------------------------------------
+/obj/vehicle/train/rover/engine/update_car(var/train_length, var/active_engines)
+ src.train_length = train_length
+ src.active_engines = active_engines
+
+ //Update move delay
+ if(!is_train_head() || !on)
+ move_delay = initial(move_delay) //so that engines that have been turned off don't lag behind
+ else
+ move_delay = max(0, (-car_limit * active_engines) + train_length - active_engines) //limits base overweight so you cant overspeed trains
+ move_delay *= (1 / max(1, active_engines)) * 2 //overweight penalty (scaled by the number of engines)
+ move_delay += config.run_speed //base reference speed
+ move_delay *= 1.1 //makes cargo trains 10% slower than running when not overweight
+
+/obj/vehicle/train/rover/trolley/update_car(var/train_length, var/active_engines)
+ src.train_length = train_length
+ src.active_engines = active_engines
+
+ if(!lead && !tow)
+ anchored = 0
+ else
+ anchored = 1
diff --git a/code/modules/vore/fluffstuff/custom_boxes_vr.dm b/code/modules/vore/fluffstuff/custom_boxes_vr.dm
index cb6866a8b3..94e811f343 100644
--- a/code/modules/vore/fluffstuff/custom_boxes_vr.dm
+++ b/code/modules/vore/fluffstuff/custom_boxes_vr.dm
@@ -156,7 +156,10 @@
has_items = list(
/obj/item/weapon/storage/backpack/fluff/aronai,
/obj/item/weapon/rig/light/hacker/fluff/aronai,
- /obj/item/clothing/under/rank/khi/fluff/aronai)
+ /obj/item/clothing/under/rank/khi/fluff/aronai,
+ /obj/item/fluff/permit/aronai_kadigan,
+ /obj/item/weapon/gun/projectile/khi/pistol,
+ /obj/item/ammo_magazine/c45m/flash)
/*
Swimsuits, for general use, to avoid arriving to work with your swimsuit.
diff --git a/code/modules/vore/fluffstuff/custom_clothes_vr.dm b/code/modules/vore/fluffstuff/custom_clothes_vr.dm
index b73131899c..756eb67837 100644
--- a/code/modules/vore/fluffstuff/custom_clothes_vr.dm
+++ b/code/modules/vore/fluffstuff/custom_clothes_vr.dm
@@ -533,6 +533,8 @@
icon_override = 'icons/vore/custom_clothes_vr.dmi'
item_state = "scree-helm_mob"
+ item_state_slots = list(slot_r_hand_str = "engspace_helmet", slot_l_hand_str = "engspace_helmet")
+
light_overlay = "helmet_light_dual"
species_restricted = null
@@ -556,6 +558,8 @@
icon_override = 'icons/vore/custom_clothes_vr.dmi'
item_state = "scree-spess_mob"
+ item_state_slots = list(slot_r_hand_str = "eng_voidsuit", slot_l_hand_str = "eng_voidsuit")
+
species_restricted = null
mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0)
diff --git a/code/modules/vore/fluffstuff/custom_guns_vr.dm b/code/modules/vore/fluffstuff/custom_guns_vr.dm
index cb5be9c9ec..339bce6259 100644
--- a/code/modules/vore/fluffstuff/custom_guns_vr.dm
+++ b/code/modules/vore/fluffstuff/custom_guns_vr.dm
@@ -312,7 +312,6 @@
if(!ignore_inhands) update_held_icon()
//-----------------------G44 Energy Variant--------------------
-
/obj/item/weapon/gun/energy/gun/burst/g44e
name = "G44 Energy Rifle"
desc = "The G44 Energy is a laser variant of the G44 lightweight assault rifle manufactured by the National Armory of Gaia. Though almost exclusively to the United Federation's Military Assault Command Operations Department (MACOs) and Starfleet, it is occassionally sold to security departments for their stun capabilities."
@@ -357,6 +356,78 @@
name = "\improper MEUSOC .45"
desc = "Some serious drywall work, coming up!"
+//-----------------------KHI Common----------------------------------
+/obj/item/weapon/gun/projectile/khi/process_chambered()
+ if (!chambered) return
+ qdel(chambered) //Devours ammo rather than fires it.
+
+//-----------------------KHI Pistol----------------------------------
+/obj/item/weapon/gun/projectile/khi/pistol
+ name = "alien pistol"
+ desc = "This KHI handgun doesn't so much 'fire' .45 ammo as 'devour' it and make it's own proprietary ammunition."
+ icon = 'icons/obj/gun_vr.dmi'
+ icon_state = "khipistol"
+ item_state = "gun" // Placeholder
+ magazine_type = /obj/item/ammo_magazine/c45m/flash //Dun wanna KILL all the people.
+ allowed_magazines = list(/obj/item/ammo_magazine/c45m)
+ caliber = ".45"
+ handle_casings = CYCLE_CASINGS
+ origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 5)
+ fire_sound = 'sound/weapons/semiauto.ogg'
+ load_method = MAGAZINE
+ dna_lock = 1
+
+//-----------------------KHI PDW----------------------------------
+// For general use
+/obj/item/weapon/gun/projectile/automatic/khi/pdw
+ name = "alien pdw"
+ desc = "The KHI personal defense mainstay. If KHI had any standards whatsoever, that is. Insert 9mm ammo for good times."
+ icon = 'icons/obj/gun_vr.dmi'
+ icon_state = "khipdw"
+ item_state = "c20r" // Placeholder
+ w_class = ITEMSIZE_NORMAL
+ caliber = "9mm"
+ origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 5)
+ slot_flags = SLOT_BELT
+ load_method = MAGAZINE
+ handle_casings = CYCLE_CASINGS
+ magazine_type = /obj/item/ammo_magazine/mc9mml
+ allowed_magazines = list(/obj/item/ammo_magazine/mc9mm, /obj/item/ammo_magazine/mc9mml)
+ dna_lock = 1
+
+ firemodes = list(
+ list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null),
+ list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=6, burst_accuracy=list(0,-1,-2), dispersion=list(0.0, 0.6, 0.6))
+ )
+
+//-----------------------KHI LIM Rifle----------------------------------
+//Unfinished
+/obj/item/weapon/limrifle //Not even a subtype of gun because it behaves differently.
+ name = "lim rifle"
+ desc = "The KHI-101-R linear induction motor rifle can propel a small 2mm slug at extreme velocity through nearly any solid object. Whether it has the time to impart any force is another question entirely."
+ //icon = 'icons/obj/gun64_vr.dmi'
+ icon_state = "limrifle"
+ item_state = "gun" //Should probably be huge-r
+ //dna_lock = 1
+ //safety_level = 1
+
+ var/charge_time = 5 SECONDS
+ var/charge_percent = 100
+
+/obj/item/weapon/limrifle/New()
+ ..()
+ update_icon()
+
+/obj/item/weapon/limrifle/update_icon()
+ ..()
+ var/charge_icon = round(charge_percent,20)
+ icon_state = "[initial(icon_state)]_[charge_icon]"
+
+/obj/item/weapon/limrifle/proc/recharge()
+ charge_percent = 0
+ update_icon()
+
+
//////////////////// Energy Weapons ////////////////////
// -------------- Dominator -------------
/obj/item/weapon/gun/energy/gun/fluff/dominator
diff --git a/code/modules/vore/fluffstuff/custom_permits_vr.dm b/code/modules/vore/fluffstuff/custom_permits_vr.dm
index 04e14991bf..a9f2d1d035 100644
--- a/code/modules/vore/fluffstuff/custom_permits_vr.dm
+++ b/code/modules/vore/fluffstuff/custom_permits_vr.dm
@@ -73,11 +73,12 @@
/obj/item/fluff/permit/aronai_kadigan
name = "Aronai Kadigan's Sidearm Permit"
desc = {"
- NAME: Aronai Kadigan | RACE: Cross Fox | HOMEWORLD: New Kitsuhana, KHI1
+ NAME: Aronai Kadigan | RACE: Cross Fox (Synth) | HOMEWORLD: Kitsuhana Prime
DOB: 12/Jul/2530 | HEIGHT: 188cm | SEX: Male
- The individual named above is licensed by the Nanotrasen Department of Civil Protection to carry one KIN-H21 (Egun Variant).
- This license expires on 30/Sep/2560 and must be renewed by CentCom prior to this date."}
+ The individual named above is licensed by the Nanotrasen Department of Civil Protection
+ to carry one KIN (foreign) handgun with flash ammo.
+ This license expires on 16/Feb/2562 and must be renewed by CentCom prior to this date."}
// joanrisu:Joan Risu
/obj/item/fluff/permit/joanrisu
diff --git a/html/changelogs/Anewbe - Announcement.yml b/html/changelogs/Anewbe - Announcement.yml
new file mode 100644
index 0000000000..1bda432be2
--- /dev/null
+++ b/html/changelogs/Anewbe - Announcement.yml
@@ -0,0 +1,36 @@
+################################
+# Example Changelog File
+#
+# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
+#
+# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
+# When it is, any changes listed below will disappear.
+#
+# Valid Prefixes:
+# bugfix
+# wip (For works in progress)
+# tweak
+# soundadd
+# sounddel
+# rscadd (general adding of nice things)
+# rscdel (general deleting of nice things)
+# imageadd
+# imagedel
+# maptweak
+# spellcheck (typo fixes)
+# experiment
+#################################
+
+# Your name.
+author: Anewbe
+
+# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
+delete-after: True
+
+# Any changes you've made. See valid prefix list above.
+# INDENT WITH TWO SPACES. NOT TABS. SPACES.
+# SCREW THIS UP AND IT WON'T WORK.
+# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
+# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
+changes:
+ - rscadd: "Fake command reports now make the paper show up."
diff --git a/html/changelogs/Anewbe - Mining Cameras.yml b/html/changelogs/Anewbe - Mining Cameras.yml
new file mode 100644
index 0000000000..2171ac81ed
--- /dev/null
+++ b/html/changelogs/Anewbe - Mining Cameras.yml
@@ -0,0 +1,36 @@
+################################
+# Example Changelog File
+#
+# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
+#
+# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
+# When it is, any changes listed below will disappear.
+#
+# Valid Prefixes:
+# bugfix
+# wip (For works in progress)
+# tweak
+# soundadd
+# sounddel
+# rscadd (general adding of nice things)
+# rscdel (general deleting of nice things)
+# imageadd
+# imagedel
+# maptweak
+# spellcheck (typo fixes)
+# experiment
+#################################
+
+# Your name.
+author: Anewbe
+
+# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
+delete-after: True
+
+# Any changes you've made. See valid prefix list above.
+# INDENT WITH TWO SPACES. NOT TABS. SPACES.
+# SCREW THIS UP AND IT WON'T WORK.
+# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
+# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
+changes:
+ - bugfix: "Mining cameras should work now."
\ No newline at end of file
diff --git a/html/changelogs/MagmaRam - Aimbot.yml b/html/changelogs/MagmaRam - Aimbot.yml
new file mode 100644
index 0000000000..dbe59cb09d
--- /dev/null
+++ b/html/changelogs/MagmaRam - Aimbot.yml
@@ -0,0 +1,36 @@
+################################
+# Example Changelog File
+#
+# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
+#
+# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
+# When it is, any changes listed below will disappear.
+#
+# Valid Prefixes:
+# bugfix
+# wip (For works in progress)
+# tweak
+# soundadd
+# sounddel
+# rscadd (general adding of nice things)
+# rscdel (general deleting of nice things)
+# imageadd
+# imagedel
+# maptweak
+# spellcheck (typo fixes)
+# experiment
+#################################
+
+# Your name.
+author: MagmaRam
+
+# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
+delete-after: True
+
+# Any changes you've made. See valid prefix list above.
+# INDENT WITH TWO SPACES. NOT TABS. SPACES.
+# SCREW THIS UP AND IT WON'T WORK.
+# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
+# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
+changes:
+ - tweak: "There is now a short delay before being able to fire when using hostage-taking mode, and a short delay between shots. This should make hostage mode useful for taking hostages and ambushes, rather than as an aimbot in actual firefights."
diff --git a/html/changelogs/MagmaRam - Sandwich.yml b/html/changelogs/MagmaRam - Sandwich.yml
new file mode 100644
index 0000000000..b9482e6bff
--- /dev/null
+++ b/html/changelogs/MagmaRam - Sandwich.yml
@@ -0,0 +1,36 @@
+################################
+# Example Changelog File
+#
+# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
+#
+# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
+# When it is, any changes listed below will disappear.
+#
+# Valid Prefixes:
+# bugfix
+# wip (For works in progress)
+# tweak
+# soundadd
+# sounddel
+# rscadd (general adding of nice things)
+# rscdel (general deleting of nice things)
+# imageadd
+# imagedel
+# maptweak
+# spellcheck (typo fixes)
+# experiment
+#################################
+
+# Your name.
+author: MagmaRam
+
+# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
+delete-after: True
+
+# Any changes you've made. See valid prefix list above.
+# INDENT WITH TWO SPACES. NOT TABS. SPACES.
+# SCREW THIS UP AND IT WON'T WORK.
+# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
+# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
+changes:
+ - bugfix: "Sandwiches at max size can be eaten with a fork."
diff --git a/html/changelogs/zuhayr-dibs.yml b/html/changelogs/zuhayr-dibs.yml
new file mode 100644
index 0000000000..54cf379ed3
--- /dev/null
+++ b/html/changelogs/zuhayr-dibs.yml
@@ -0,0 +1,36 @@
+################################
+# Example Changelog File
+#
+# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
+#
+# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
+# When it is, any changes listed below will disappear.
+#
+# Valid Prefixes:
+# bugfix
+# wip (For works in progress)
+# tweak
+# soundadd
+# sounddel
+# rscadd (general adding of nice things)
+# rscdel (general deleting of nice things)
+# imageadd
+# imagedel
+# maptweak
+# spellcheck (typo fixes)
+# experiment
+#################################
+
+# Your name.
+author: Zuhayr
+
+# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
+delete-after: True
+
+# Any changes you've made. See valid prefix list above.
+# INDENT WITH TWO SPACES. NOT TABS. SPACES.
+# SCREW THIS UP AND IT WON'T WORK.
+# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
+# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
+changes:
+ - rscadd: "Adminhelps now have a TAKE button that allow an admin to claim it, and inform the adminhelper that someone is on the case."
diff --git a/icons/mob/back.dmi b/icons/mob/back.dmi
index 5bc7760381..c9acba40a4 100644
Binary files a/icons/mob/back.dmi and b/icons/mob/back.dmi differ
diff --git a/icons/mob/belt.dmi b/icons/mob/belt.dmi
index 134f719c3a..b26eabc764 100644
Binary files a/icons/mob/belt.dmi and b/icons/mob/belt.dmi differ
diff --git a/icons/obj/clothing/belts.dmi b/icons/obj/clothing/belts.dmi
index cf1c7b343c..015a3bc345 100644
Binary files a/icons/obj/clothing/belts.dmi and b/icons/obj/clothing/belts.dmi differ
diff --git a/icons/obj/gun_vr.dmi b/icons/obj/gun_vr.dmi
index bd2f354b1b..48dbdeb4af 100644
Binary files a/icons/obj/gun_vr.dmi and b/icons/obj/gun_vr.dmi differ
diff --git a/icons/obj/items_vr.dmi b/icons/obj/items_vr.dmi
new file mode 100644
index 0000000000..06677bf537
Binary files /dev/null and b/icons/obj/items_vr.dmi differ
diff --git a/icons/obj/projectiles_vr.dmi b/icons/obj/projectiles_vr.dmi
new file mode 100644
index 0000000000..e34d3c0c21
Binary files /dev/null and b/icons/obj/projectiles_vr.dmi differ
diff --git a/icons/turf/shuttle_vr.dmi b/icons/turf/shuttle_vr.dmi
new file mode 100644
index 0000000000..e67b3959e0
Binary files /dev/null and b/icons/turf/shuttle_vr.dmi differ
diff --git a/icons/vore/rover_vr.dmi b/icons/vore/rover_vr.dmi
new file mode 100644
index 0000000000..5fa1fc428d
Binary files /dev/null and b/icons/vore/rover_vr.dmi differ
diff --git a/maps/virgo-1.dmm b/maps/virgo-1.dmm
index 3dad101226..e28b1cddf8 100644
--- a/maps/virgo-1.dmm
+++ b/maps/virgo-1.dmm
@@ -1171,7 +1171,7 @@
"awA" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 8},/obj/item/weapon/gun/projectile/shotgun/pump{pixel_x = -3; pixel_y = 3},/obj/item/weapon/gun/projectile/shotgun/pump,/obj/effect/floor_decal/corner/green/full{dir = 8},/obj/machinery/door/window/brigdoor{name = "Ballistics"},/obj/structure/window/reinforced{dir = 1; health = 1e+006},/turf/simulated/floor/tiled/dark,/area/security/armoury)
"awB" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled/dark,/area/security/armoury)
"awC" = (/obj/structure/sign/securearea{name = "\improper ARMORY"; pixel_x = -32; pixel_y = 0},/obj/structure/window/reinforced{dir = 1},/obj/effect/floor_decal/industrial/outline/yellow,/obj/structure/table/rack,/obj/item/clothing/suit/storage/vest/heavy/officer,/obj/item/clothing/suit/storage/vest/heavy/officer,/obj/item/clothing/suit/storage/vest/heavy/officer,/obj/item/clothing/suit/storage/vest/heavy/officer,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/brigdoor/southleft{name = "Heavy Duty Armor"; req_access = list(3)},/turf/simulated/floor/tiled,/area/security/security_equiptment_storage)
-"awD" = (/obj/structure/window/reinforced{dir = 1},/obj/effect/floor_decal/industrial/outline/yellow,/obj/structure/table/rack,/obj/item/weapon/gun/projectile/colt/detective,/obj/item/weapon/gun/projectile/colt/detective,/obj/item/weapon/gun/projectile/colt/detective,/obj/item/weapon/gun/projectile/colt/detective,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/brigdoor/southright{name = "Weapons locker"; req_access = list(3)},/turf/simulated/floor/tiled,/area/security/security_equiptment_storage)
+"awD" = (/obj/structure/window/reinforced{dir = 1},/obj/effect/floor_decal/industrial/outline/yellow,/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/brigdoor/southright{name = "Weapons locker"; req_access = list(3)},/obj/item/weapon/gun/projectile/sec/flash,/obj/item/weapon/gun/projectile/sec/wood,/obj/item/weapon/gun/projectile/sec/flash,/obj/item/weapon/gun/projectile/sec/flash,/obj/item/weapon/gun/projectile/sec/flash,/obj/item/weapon/gun/projectile/sec/wood,/turf/simulated/floor/tiled,/area/security/security_equiptment_storage)
"awE" = (/obj/structure/closet/l3closet/security,/obj/effect/floor_decal/industrial/outline/yellow,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/tiled,/area/security/security_equiptment_storage)
"awF" = (/obj/structure/closet/l3closet/security,/obj/effect/floor_decal/industrial/outline/yellow,/obj/structure/window/reinforced{dir = 1},/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/camera/network/security{c_tag = "SEC - Equipment Storage"; dir = 9},/turf/simulated/floor/tiled,/area/security/security_equiptment_storage)
"awG" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/green,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/security/security_equiptment_storage)
@@ -1358,7 +1358,7 @@
"aAf" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/corner/red{dir = 9},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/security/brig)
"aAg" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/security/brig)
"aAh" = (/obj/effect/floor_decal/corner/red,/obj/structure/closet/secure_closet/brig,/turf/simulated/floor/tiled,/area/security/brig)
-"aAi" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 1; health = 1e+006},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/machinery/door/window/brigdoor/eastright{name = "Spare Equipment"; req_access = list(3)},/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/clothing/suit/armor/vest/security,/obj/item/clothing/suit/armor/vest/security,/obj/item/clothing/suit/armor/vest/security,/obj/item/clothing/suit/armor/vest/security,/turf/simulated/floor/tiled,/area/security/security_equiptment_storage)
+"aAi" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 1; health = 1e+006},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/machinery/door/window/brigdoor/eastright{name = "Spare Equipment"; req_access = list(3)},/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/clothing/suit/armor/vest/alt,/obj/item/clothing/suit/armor/vest/alt,/obj/item/clothing/suit/armor/vest/alt,/obj/item/clothing/suit/armor/vest/alt,/turf/simulated/floor/tiled,/area/security/security_equiptment_storage)
"aAj" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/green,/obj/machinery/door/blast/regular{density = 0; dir = 1; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/security/prison)
"aAk" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/window/brigdoor/southleft{id = "Cell 1"; name = "Cell 1"; req_access = list(2)},/obj/effect/floor_decal/industrial/hatch/yellow,/turf/simulated/floor/tiled,/area/security/prison)
"aAl" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/green,/obj/machinery/door/blast/regular{density = 0; dir = 1; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/security/prison)
@@ -5140,7 +5140,7 @@
"bUR" = (/obj/structure/table/woodentable,/obj/item/weapon/folder/blue_captain,/turf/simulated/floor/wood,/area/crew_quarters/captain)
"bUS" = (/obj/machinery/computer/communications,/obj/machinery/status_display{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/wood,/area/crew_quarters/captain)
"bUT" = (/obj/machinery/keycard_auth{pixel_x = 0; pixel_y = 24},/turf/simulated/floor/wood,/area/crew_quarters/captain)
-"bUU" = (/obj/structure/closet,/obj/item/weapon/lipstick/purple,/obj/random/maintenance/engineering,/obj/random/maintenance/engineering,/obj/random/maintenance/clean,/obj/item/clothing/shoes/jackboots{armor = list("melee" = 40, "bullet" = 40, "laser" = 40, "energy" = 40, "bomb" = 40, "bio" = 0, "rad" = 0); desc = "They have initials D M in each boot. They also have claw marks and smell very very strongly"; name = "Dhael's jackboots"},/turf/simulated/floor/plating,/area/maintenance/engineering)
+"bUU" = (/obj/structure/table/glass,/obj/machinery/light{dir = 1},/obj/item/clothing/shoes/jackboots{armor = list("melee" = 40, "bullet" = 40, "laser" = 40, "energy" = 40, "bomb" = 40, "bio" = 0, "rad" = 0); desc = "They have initials D M in each boot. They also have claw marks and smell very very strongly"; name = "Dhael's jackboots"},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/pool)
"bUV" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor,/area/maintenance/central)
"bUW" = (/obj/machinery/door/airlock/maintenance{name = "Resturant Maintenance"; req_one_access = list(12,28,35)},/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/central)
"bUX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled,/area/crew_quarters/cafeteria)
@@ -8979,7 +8979,7 @@
"dqI" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/secondary/entry/D2)
"dqJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/secondary/entry/D2)
"dqK" = (/obj/effect/floor_decal/industrial/warning/corner{dir = 8},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2)
-"dqL" = (/turf/simulated/shuttle/wall{tag = "icon-swall (NORTHWEST)"; icon_state = "swall"; dir = 9},/area/shuttle/arrival/station)
+"dqL" = (/obj/structure/window/shuttle{icon_state = "window4"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/awaymission/home)
"dqM" = (/obj/structure/closet/walllocker/emerglocker{pixel_x = -28},/turf/simulated/shuttle/floor,/area/shuttle/arrival/station)
"dqN" = (/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/turf/simulated/shuttle/floor,/area/shuttle/arrival/station)
"dqO" = (/obj/machinery/light{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/arrival/station)
@@ -9152,7 +9152,7 @@
"dtZ" = (/obj/structure/closet/emcloset,/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2)
"dua" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2)
"dub" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2)
-"duc" = (/obj/structure/window/shuttle{icon_state = "window2"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/arrival/station)
+"duc" = (/obj/structure/window/shuttle{icon_state = "window8"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/awaymission/home)
"dud" = (/obj/structure/closet/emcloset,/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3)
"due" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3)
"duf" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3)
@@ -9229,7 +9229,7 @@
"dvy" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1)
"dvz" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2)
"dvA" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2)
-"dvB" = (/obj/structure/window/shuttle{icon_state = "window1"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/arrival/station)
+"dvB" = (/turf/simulated/shuttle/wall{icon_state = "swall_straight"; dir = 1},/area/shuttle/awaymission/home)
"dvC" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3)
"dvD" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3)
"dvE" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/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)
@@ -9367,7 +9367,7 @@
"dyg" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_south_starboard_inner"; locked = 1; name = "Escape Airlock"; req_access = list(13)},/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2)
"dyh" = (/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/effect/floor_decal/industrial/warning{dir = 8},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1380; master_tag = "escape_dock_south_starboard_airlock"; name = "interior access button"; pixel_x = -26; pixel_y = -26; req_one_access = list(13)},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2)
"dyi" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4; icon_state = "map"; tag = "icon-manifold-f (EAST)"},/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2)
-"dyj" = (/turf/simulated/shuttle/wall{tag = "icon-swall"; icon_state = "swall"},/area/shuttle/arrival/station)
+"dyj" = (/turf/simulated/shuttle/wall{tag = "icon-swall (NORTHWEST)"; icon_state = "swall"; dir = 9},/area/shuttle/arrival/station)
"dyk" = (/obj/structure/closet/walllocker/emerglocker{pixel_x = 28},/turf/simulated/shuttle/floor,/area/shuttle/arrival/station)
"dyl" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 8; icon_state = "map"; tag = "icon-manifold-f (WEST)"},/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3)
"dym" = (/obj/effect/floor_decal/industrial/warning{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "dock_three_mid_airlock"; name = "interior access button"; pixel_x = 26; pixel_y = -26; req_one_access = list(13)},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3)
@@ -9493,8 +9493,8 @@
"dAC" = (/turf/simulated/wall,/area/engineering/aft_hallway)
"dAD" = (/obj/machinery/light/small{dir = 8},/obj/effect/floor_decal/industrial/warning{dir = 1},/turf/simulated/floor/airless,/area/engineering/aft_hallway)
"dAE" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "eng_starboard_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = 0; req_one_access = list(11,24)},/obj/effect/floor_decal/industrial/warning{dir = 1},/turf/simulated/floor/airless,/area/engineering/aft_hallway)
-"dAF" = (/turf/simulated/shuttle/wall,/area/shuttle/constructionsite/station)
-"dAG" = (/obj/structure/window/shuttle,/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/constructionsite/station)
+"dAF" = (/obj/structure/window/shuttle{icon_state = "window2"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/awaymission/home)
+"dAG" = (/obj/structure/window/shuttle{icon_state = "window2"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/arrival/station)
"dAH" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "engineering_shuttle_hatch"; locked = 1; name = "Elevator Hatch"; req_access = list(13)},/turf/simulated/shuttle/floor,/area/shuttle/constructionsite/station)
"dAI" = (/obj/machinery/door/window/northleft{name = "Engine Waste"; req_one_access = list(10,24)},/turf/simulated/floor,/area/engineering/engine_waste)
"dAJ" = (/obj/machinery/atmospherics/pipe/simple/visible/black{dir = 6},/obj/machinery/door/window/northright{name = "Engine Waste"; req_one_access = list(10,24)},/turf/simulated/floor,/area/engineering/engine_waste)
@@ -9713,10 +9713,10 @@
"dEO" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; icon_state = "intact"; tag = "icon-intact-f (SOUTHWEST)"},/obj/effect/floor_decal/industrial/warning{dir = 1},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D4)
"dEP" = (/obj/effect/floor_decal/industrial/warning{dir = 5},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D4)
"dEQ" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "swall_c"; dir = 1},/area/shuttle/escape_pod4/station)
-"dER" = (/obj/structure/window/shuttle,/obj/structure/grille,/turf/simulated/floor,/area/shuttle/escape_pod4/station)
+"dER" = (/obj/structure/window/shuttle{icon_state = "window1"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/arrival/station)
"dES" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "swall_c"; dir = 8},/area/shuttle/escape_pod4/station)
"dET" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "swall_c"; dir = 1},/area/shuttle/escape_pod3/station)
-"dEU" = (/obj/structure/window/shuttle,/obj/structure/grille,/turf/simulated/floor,/area/shuttle/escape_pod3/station)
+"dEU" = (/turf/simulated/shuttle/wall{tag = "icon-swall"; icon_state = "swall"},/area/shuttle/arrival/station)
"dEV" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "swall_c"; dir = 8},/area/shuttle/escape_pod3/station)
"dEW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/maintenance/starboardsolar)
"dEX" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "solar_xeno_pump"; tag_exterior_door = "solar_xeno_outer"; frequency = 1379; id_tag = "solar_xeno_airlock"; tag_interior_door = "solar_xeno_inner"; pixel_x = 25; req_access = list(13); tag_chamber_sensor = "solar_xeno_sensor"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "solar_xeno_sensor"; pixel_x = 25; pixel_y = 12},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1379; id_tag = "solar_xeno_pump"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/industrial/warning/cee{tag = "icon-warningcee (NORTH)"; icon_state = "warningcee"; dir = 1},/turf/simulated/floor/plating,/area/maintenance/starboardsolar)
@@ -9937,8 +9937,8 @@
"dJe" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/structure/disposalpipe/junction{dir = 8},/turf/simulated/floor/tiled/white,/area/rnd/research)
"dJf" = (/turf/simulated/shuttle/wall{icon_state = "swall_straight"; dir = 4},/area/shuttle/awaymission/home)
"dJg" = (/obj/structure/shuttle/engine/propulsion{dir = 8; icon_state = "propulsion_l"},/turf/space,/area/shuttle/awaymission/home)
-"dJh" = (/obj/structure/window/shuttle{icon_state = "window4"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/awaymission/home)
-"dJi" = (/obj/structure/window/shuttle{icon_state = "window8"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/awaymission/home)
+"dJh" = (/obj/structure/window/shuttle,/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/constructionsite/station)
+"dJi" = (/turf/simulated/shuttle/wall,/area/shuttle/constructionsite/station)
"dJj" = (/obj/structure/window/shuttle{icon_state = "window12"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/awaymission/home)
"dJk" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "swall_c"; dir = 2},/area/shuttle/awaymission/home)
"dJl" = (/obj/structure/shuttle/engine/heater{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/airless,/area/shuttle/awaymission/home)
@@ -9949,7 +9949,7 @@
"dJq" = (/obj/structure/closet/crate/secure{req_access = list(62)},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/awaymission/home)
"dJr" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/airlock_sensor{pixel_x = 24},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/awaymission/home)
"dJs" = (/obj/machinery/light{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/awaymission/home)
-"dJt" = (/turf/simulated/shuttle/wall{icon_state = "swall_straight"; dir = 1},/area/shuttle/awaymission/home)
+"dJt" = (/obj/structure/window/shuttle,/obj/structure/grille,/turf/simulated/floor,/area/shuttle/escape_pod4/station)
"dJu" = (/turf/simulated/shuttle/floor,/area/shuttle/awaymission/home)
"dJv" = (/obj/machinery/door/window/brigdoor/westleft{req_access = list(62)},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/awaymission/home)
"dJw" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "awaymission_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access = list(62)},/turf/simulated/floor/plating,/area/shuttle/awaymission/home)
@@ -9961,8 +9961,9 @@
"dJC" = (/obj/structure/closet/crate/critter,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/awaymission/home)
"dJD" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/awaymission/home)
"dJE" = (/obj/machinery/light,/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/awaymission/home)
-"dJF" = (/obj/structure/window/shuttle{icon_state = "window2"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/awaymission/home)
+"dJF" = (/obj/structure/window/shuttle,/obj/structure/grille,/turf/simulated/floor,/area/shuttle/escape_pod3/station)
"dJG" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "swall_c"; dir = 8},/area/shuttle/awaymission/home)
+"dJH" = (/obj/structure/closet,/obj/item/weapon/lipstick/purple,/obj/random/maintenance/engineering,/obj/random/maintenance/engineering,/obj/random/maintenance/clean,/turf/simulated/floor/plating,/area/maintenance/engineering)
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -10067,7 +10068,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaumaumaumaumaumaumaumaumaumaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafarSarSawAawzavCazHazIavCawBavXarSawCawDaqQaqQawEawFawGawHawHawIawHawJawKawLawMawNawOawPawQawRawSauxawTawUckLawWawXawYawZazMaxaaxbaxcattaxdattattattaxeattatCaxfatCatCauRaxgagZalBaxhagZagZaxiaxjagZagZaruaruaxkaxlaxmaruaruaaiaaiaaiaaiaaiaxnaxnaxoaxnaxnaaiaaiaaiaaiaaiaaiaaiaafaafaafaafaafaafaxpaxpaxqaxraxsaxparMaafaafaafaafaafaafaafaafaafaafaafaafaafanJanJanJanJanJanJanJaitaitaxtaitaitaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaumaumaumaumaumaumaumaumaumaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafarSarSaxuawzavCaBaaBaavCawBaxvaxwaxxaxyaxzaxAaxBaqQaxCaxDaxEaxFaxGaxHaxIaxJaxKaxLaxMaxNaxOaxPaxPaxQaxRaxSaxTaxUaxVaxWaxXaxYaxZayaaybaycaydayeayfaygayhayiayjaykaylaymauRaynayoalBaglaypagZagZagZagZagZayqayrarJarKaryaruaaiaaiaaiaaiaaiaaiaaiaxnaysaytaxnaaiaaiaaiaaiaaiaaiaaiaaiaafaafaafaafaafayuayvaywayxayyaxpaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafayzayAayBayzaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaumaumaumaumaumaumaumaumaumaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafarSarSarSarSazFavCavCavCavCayEarSarSayFayGayHayIaqQaqQayJawHawHayKawHayLayMayNayOayPayQayRaySayTayUauxayVayWayXawWayYayZazaazbazcazdazeazfazgazhaziazjazgazkazlazmaznazoazpazqazrazsaglagZagZaztayrayrayrayrayrarJarKazuaruaaiaaiaaiaaiaaiaaiaaiaxnazvaytaxnaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaafaafaafazwazxazyazzazAaxpazBazBazBazBazBazBazBazBazBazCazCazCazCazCazCazCazCazCazCazCazCazCazCazDazEayzayzaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaumaumaumaumaumaumaumaumaumaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafarSarSazKazGawzavCavCavCavCawBaAqarSazLazPazOazNaAiaBfazNazQazRayKazSazTazUazVazWazXazYazZaAaaAbaAcauxawWaAdawWaAeaAfaAgaAhaApaAjaAkaAlaApaAmaAnaAmaApaAmaAoaAmaApattattaglaAraAsaAtaglaAuaztayrayraAvaAwaAxayraAyarxaryaAzaAzaAzaAzaAzaaiaaiaaiaxnaysaxnaxnaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaafaafaAAaABaACaADaAEaxpaAFaAGaAHaAIaAJaAKaALaAMaAFazCaANaANaAOaAPaAQaARaASaARaATaAPaAOaAUazCayzaAVaAWayzaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaumaumaumaumaumaumaumaumaumaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafarSarSazKazGawzavCavCavCavCawBaAqarSazLazPazOazNaAiaBfazNazQazRayKazSazTazUazVazWazXazYazZaAaaAbaAcauxawWaAdawWaAeaAfaAgaAhaApaAjaAkaAlaApaAmaAnaAmaApaAmaAoaAmaApattattaglaAraAsaAtaglaAuaztayrayraAvaAwaAxayraAyarxaryaAzaAzaAzaAzaAzaaiaaiaaiaxnaysaxnaxnaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaafaafaAAaABaACaADaAEaxpaAFaAGaAHaAIaAJaAKaALaAMaAFazCaANaANaAObUUaAQaARaASaARaATaAPaAOaAUazCayzaAVaAWayzaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaumaumaumaumaumaumaumaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafarSarSaAXaAYaAZavCavCavCavCawBaBbaBcaBdaxKaBeazNaCjaCtazNaBgaBhaBiaBjaBkaBlaBmaBnauxaBoaBpaBqaBraBsauxaBtaBuaBvaBwaBxaByaBzaApaBAaBBaBCaApaBDaBEaBFaApaBDaBBaBFaApaafaafaglaBGaBHaBIaglagZayrayraBJaBKaBLaBMaBNarJarKaBOaAzaBPaBQaBRaAzaAzaaiaaiaxnaysaxnaaiaaiaBSaBSaBTaBUaBUaBUaBVaBUaBUaBUaBUaBWaBSaBXaBYaBZaCaaxpaCbaCcaCcaCcaCdaCcaCcaCcaCeazCaCfaCgaCfaCfaCfaCfaCfaCfaCfaCfaCfaCfaChayzaAVaCiayzayzayzayzayzaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaumaumaumaumaumaumaumaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafarSarSaCuavCaCkaClaClaClaClaCmaCnaCoaCpaCqaCraCsaDRaDSaCvaCwaCxaCyaCzaCAaCBaCCaCDaCEaCFaCGaCHaCzaCIaCJaCKaCLaCMaCNaCOaCPaCQaApaCRaCSaCTaApaCUaCVaCWaApaCXaCSaCYaApaafaafaglaCZaDaaDbaglaDcayraDdaDeaBKaDfaDgayraDharKaryaAzaDiaDjaDkaDlaAzaAzaaiaxnaysaxnaaiaaiaBSaDmaDnaDnaDnaDnaDnaDnaDnaDnaDnaDnaDoaDpaDqaDraDsaxpaDtaCcaDuaDvaDwaDxaDuaCcaDyazCaCfaDzaDAaDAaDAaDAaDAaDAaDAaDAaDAaDBaCfayzaAVaDCaDDaDEaDFaDFayzaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaumaumaumaumaumaumaumaumaumaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafarSarSaDGaDHaDIaDJaFaaDJaDJaDKaDLaDMaDNaDOaDPaDQaEYaJNaDTaDUaDVaDWaDXaDYaDZaEaaEbaEcaEdaEcaEeaEfaEgaEhaEiaEjawYaEkaElaByaEmaApaEnaEoaEpaApaEqaEraEqaApaEqaEsaEqaApaafaafaglaEtaEuaDbaglayrayraEvaDeaEwaExaEyaEzaEAaEBaECaEDaEEaEFaEGaEHaEIaAzaaiaxnaysaxnaaiaaiaBSaEJaDnaDnaDnaDnaDnaDnaDnaDnaDnaDnaEKaELaACaADaEMaxpaCcaCcaCcaENaCdaEOaCcaCcaCcazCaEPaEQaERaESaESaESaESaESaESaESaETaCfaEUayzaAVaEVaDDaDFaEWaEXayzaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -10174,7 +10175,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafabxcLJcLJcLJcLJcLJabxdcodcpdcqcZYdcrdcscWMcWOdctdctdcucZgcZZdcvdcwdbgdcxdcydczdcAdcBdcCdcDdcEdcFdcGdcHdcIdcHdcJdcKcREdcLdaucRCdcMdcNdcOdcPdcQdcRcZBcVYcBRdcScBRcBRdcTdcUdcVdcWdcXdcUdcYdcWdcZddaddbddcdddddeddfddeddeddgddeddhddiddeddeddjddkddlddmddnddoddjddeddpddeddfddqddrddeddeddeddsddeddtdduddfddeddeddeddjddeddnddvddwddwddxddyddzddyddAddyddBddCddDddyddzddyddEddyddyddyddFddyddGddzddHddIddJddDddGddyddKddyddyddLddyddyddMddBddDddyddyddNddyddyddzddyddGddOddPdcgddQddRddSdckdckdckddTddUdcldckdckdckdckddVcZQaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafabxcLJddWddWddXddYddZdeadebdaedecdedcTXcWMcWOdeedefdegdabdacdehdaedafdeidejdaedekdeldemdendeodepdeqderdesderdetdeudevdewdexdeydezdeAdeBdeCdeDdeEcZBcVYcxWcxWdeFcxWdeGdeHdeIdaBdeGdeHdeJdaBdeGdeKdeLdeMdeNdeOdeOdeOdePdeOdeOdeQdeOdeOdeOdeRdePdeSdeTdeUdeVdeRdeOdeUdeOdeOdeOdePdeOdeOdeOdeOdeOdeQdeOdeOdeOdeOdeOdeRdeVdeUdeWdeOdePdeRdeXdeXdeXdeYdeXdeXdeZdeXdeXdeXdeXdfadeXdeXdeXdfbdeXdfcdeZdfddfedffdfgdfcdeXdeYdeXdeXdeZdeXdeXdeXdeXdeXdeXdeXdfhdeXdeXdfgdeXdfcdfidfjdfkdfldfmdfndfodfodfpdfqdfrdfsdftdckdckdckdfucZQaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaicLJdfvdfwdfxcRlaaicWJdfydfzdfAdfBcYgdfCcWOdfDdfEdfFcWOcTXdfGcTXdfHcTXdfIdfJdfKdfKdfLdfMdfNdfOdfLdfMdfKdfPdfQdfRdfSdfTdfUdfVdfWdfXdfYdfVdfWdfUdfUcVYcxWdfZdgadgbdeGdgcdgddgedaBdgfdgddggdeGdaBdghdbFdgidgjdgjdgjdgkdgldgjdgjdgmdgjdgjdgndgodgpdgqdgrdgsdgtdgudgvdgudgudgwdgxdgudgudgydgudgudgudgzdgudgudgAdgudgtdgBdgrdgqdgCdgDdgncSndgEcSncSncSncSndgFcSndgGcSncSncSncSncSncSndgHcSndaRdgIdgJcZJdcfdgKdaRcSndgEcSncSndgLcSndgGcSncSncSndgGcSncSncSncSndgMcSndaRdgMdgNdcgdgOdgPdckdckdgQdgRdgSdgTdgUdftdckdckdckdgVcZQaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafabxcLJddWddWdgWdgXdgYdgZdhadhbdhcdhdcTXcWMdhedhfdhgdhhdhidhjdhkcYedhldhhdhmdhndhodhpdhqdhrdhsdhtdhudhvdhudhwdhxdhydhzdhAdhBdhCdhDdhEdhFdhGdhHdhIdfUdhJcxWbUUdgadhLdeGdhMdhNdhOdaBdhPdhQdhRdeGdaBdaBdaBdaBdbLdbMdbMdbMdbMdbMdbNdhSdbLdbNdhTdhUdhVdhWdhXdhUdhTdhYdhSdbLdbMdbMdbMdbMdbNdhSdbLdbMdbMdbMdbMdbNdhSdhYdhZdiadibdicdiddiadiadiedifdbWdbXdbXdbXdbXdbYdifdbWdbXdbXdbXdbXdbYdifdiedigdihdiidijdikdihdigdiedifdbWdbXdbXdbXdbXdbYdifdbWdbXdbXdbXdbXdbYdifdiedildimdindiodipcZQdiqdckdcldckdckdirdisdckdckdckdckditcZQaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafabxcLJddWddWdgWdgXdgYdgZdhadhbdhcdhdcTXcWMdhedhfdhgdhhdhidhjdhkcYedhldhhdhmdhndhodhpdhqdhrdhsdhtdhudhvdhudhwdhxdhydhzdhAdhBdhCdhDdhEdhFdhGdhHdhIdfUdhJcxWdJHdgadhLdeGdhMdhNdhOdaBdhPdhQdhRdeGdaBdaBdaBdaBdbLdbMdbMdbMdbMdbMdbNdhSdbLdbNdhTdhUdhVdhWdhXdhUdhTdhYdhSdbLdbMdbMdbMdbMdbNdhSdbLdbMdbMdbMdbMdbNdhSdhYdhZdiadibdicdiddiadiadiedifdbWdbXdbXdbXdbXdbYdifdbWdbXdbXdbXdbXdbYdifdiedigdihdiidijdikdihdigdiedifdbWdbXdbXdbXdbXdbYdifdbWdbXdbXdbXdbXdbYdifdiedildimdindiodipcZQdiqdckdcldckdckdirdisdckdckdckdckditcZQaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafabxcLJcLJcLJcLJcLJabxdiudivdcqdiwdixcYgdiycTXcZgdaacZZcTXcTXdizdiAdiBdiCdiDdiEdiFdhpdhrdhrdhsdhtdiGdiGdiHdiIdiJdiKdhzdiLdiMdiMdiMdiNdiOdiPdiPdiQdfUcVYcxWdiRdiSdiTdeGdiUdiVdiUdaBdiWdiXdiWdeGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadiYdiZdjadjbdjcdjddiYaaaaaaaaaaaaaaadjedjedjedjedjedjedjeaaaaaaaaaaaaaaadjfdjgdjhdjidjjdjkdjfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjldjmdjndjodjpdjqdjlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjrdjsdjtdjudjvdipdjwdjxdjydjzdjAdjBdckdjCdjDdjEdjFcZQcZQaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafabxcLJdjGdjGdjHddYddZdeadjIdaedjJdjKdjLcWMcTXdhedhgdaccWQcTXdjMdiBdaddjNdjOdjPdjQdjRdhrdjSdjTdjUdjVdjWdjXdjYdjZdkadkbdiLdiMdiMdkcdkddkedkfdiMdkgdfUcVYcxWaaiaaiaaideGdiUdkhdiUdaBdiWdkidiWdeGdkjdkjdkjdkjdkjdkjdkjdkjdkjdkjdkjdkjaaaaaadkkdkldkmdkndjcdkodkpaaaaaaaaaaaadjedjedjedjedjedjedjedjedjeaaaaaaaaaaaadkqdkrdjhdksdktdkudkqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadkvdkwdkxdkydjpdkzdkvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadkAdjsdjtdkBdkCdipcZQcZQcZQdkDdkDdkEdkDdkDcZQcZQcZQcZQaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaaicLJdkFdkGdkHcRlaaicWJdkIcTXcWMdiBdaddjJdkJdaedkKdaedkJdaedkLdiBcTXcTXdkMdkNdkOdkPdhrdhrdkQdkRdhrdkSdkTdhwdkUdkVdkWdhAcbBbWDdkZcCfdkXdhKdkYdfUdfUcVYcxWaaiaaiaaiaaidiUdlcdiUdeGdiWdlddiWdkjdkjdkjdkjdkjdkjdkjdkjdkjdkjdkjdkjdkjdledlfdlgdlhdlidljdlkdlldhTaaaaacaaadjedjedjedjedjedjedjedjedjedjedjeaaaaacaaadhZdlmdlndlodlpdlqdhZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadigdlrdjndlsdltdludigaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadildlvdlwdlxdlydipaafdkDdIodkDdlAdlBdlCdlDdlEdkDaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -10182,27 +10183,27 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafabxcLJcLJcLJcLJcLJabxdiudmxdcqcTXdiBcTXcTXcWMdmydiBcTXcTXdmydmzdmAdmBdmCdmDdmEdfKdmFdhrdhrdmGdmHdhrdmIdmJdlUdmKdkVdmLdmMdmNdmOdmPdmQdmRdmSdHOdmUdmVdmWcBRcBRcxWaaiaaaaaaaaaaaaaaaaaaaaaaaadkjdkjdkjdkjdkjdkjdkjdkjdkjdkjdkjdkjdkjdmXdlfdmYdlhdmZdnadmmdnbdkkaaaaaaaaadjedjedjedjedjedjedjedjedjedjedjeaaaaaaaaadncdnddnedlodnfdngdncaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnhdnidjndlsdnjdnkdnhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnldnmdjtdnndnodipaafdkDdIqdkDdnqdnrdnrdnsdlEdkDaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafabxabxaaiaaiaaiabxabxdntdnudnvdnwdaddnxdnydnzdnAdnBdnCdnDdnEdnFdnGdnHdnIcTXdnJdfKdnKdhrdhrdmGdnLdhrdkSdnMdlUdkUdnNdlWdnOdHPdnQdnRdnSdnTdnUdnVdnWdnXdnYdnZdoacxWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadkjdkjdkjdkjdkjdkjdkjdkjdkjdkjdkjdkjaaaaaadkpdkldjadjbdmmdkodkpaaaaaaaaadjedjedjedjedjedjedjedjedjedjedjeaaaaaaaaadkqdkrdmndjidjjdkudkqaaaaaaaaaaaaaaadobdocdoddoddoddoedofaaaaaaaaaaaaaaadkvdkwdjndjodnjdkzdkvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadkAdjsdjtdogdmsdipaafdkDdkDdkDdkDdohdkDdkDdkDdkDaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaaiaaiaaiaaiaaidoidojdokdoldomdoldondoodomdoldopdoodomdomdondoqdordosdfKdotdoudovdowdoxdoydozdoAdlUdkUdnNdlWdnOdHPdoBdoCdoDdoEdoFdHQdmUdmVdmWdoGdoHcxWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoIdhTdoJdoKdoLdhUdhUdhUdhUdhUdhTdoMdjadoNdoOdoPdhTaaaaaaaaadjedjedjedjedjedjedjedjedjedjedjeaaaaaaaaadhZdoQdoRdoSdjjdoTdhZaaaaaaaaaaaaaaadoUdoVdoVdoVdoVdoVdoUaaaaaaaaaaaaaaadigdoWdjndoXdoYdoZdigaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadildpadpbdpcdpddipaafaafaafdkDdpednrdpfdkDaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaaaaaaaaaaaidpgdphddZddZdpidphdpjddZdpidphdpjddZdpidpkcSpabxdordpldfKdfKdlUdlUdlUdlUdlUdpmdlUdlUdpndpodppdpqdpqdpqdpqdpqdpqdpqdpqdpqdprdpscxWcxWcxWaaaaaaaaaaaaaaaaaaaaaaaaaaadJgdJfdJfdJhdJidJfdJfdJhdJjdJidJfdJfdJkaaaaaadiYdkldjadjbdmmdkodiYaaaaaaaaadjedjedjedjedjedjedjedjedjedjedjeaaaaaaaaadjfdkrdmndjidjjdkudjfaaaaaaaaaaaaaaadoUdptdpudoVdpudptdoUaaaaaaaaaaaaaaadjldkwdjndjodnjdkzdjlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjrdjsdjtdogdmsdipaafaafaafdkDdpedpvdpfdkDaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaaadpwaaaabxcLJdpxcRlcRkcLJdpxcRlcRkcLJdpxcRlcRkcLJdordpydpzdpAdpBdpCdpDdpEdpFdpGdpHdpIdpJdpKdpLdpqdpMdpNdpOdpPdpQdpRdpSdpqdpqdmWcxWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadJgdJldJmdJmdJmdJndJmdJodJqdJpdJsdJrdJtdledlfdlgdpTdlidjbdmmdjddkkaaaaaadjedjedjedjedjedjedjedjedjedjedjedjedjeaaaaaadncdjkdmndjidjjdmndncaaaaaaaaaaaadobdpUdpVdpVdpWdpVdpVdpUdofaaaaaaaaaaaadnhdnjdjndjodnjdjqdnhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnldjsdjtdogdmsdipdipaafaafdkDdkDdkDdkDdkDaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaaaaaeaaeaaeaaaaaeaaeaaeaaaaaeaaeaaeaaaaaeaaeaaeaaaaaeaaeaaeaaaaayaaedpXaaeabxcLJdpYdpZdqacLJdqbdqcdqdcLJdqedqfdqgcLJdordqhdqidpAdqjdqkdqldqmdqndqodqpdpIdqqdqrdqsdpqdqtdqtdqudpQdpQdqvdqvdqwdpqdmWcxWdqxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadJgdJldJudJudJudJudJudJudJudJudJudJvdJwdqydqzdqAdqBdqCdjbdqDdqEdlgdlfdqFdjedjedjedjedjedjedjedjedjedjedjedjedjedqGdqHdqIdqJdqKdjidjjdkudncaaaaaadobdpVdqLdqMdqNdqOdoVdqOdqPdqQdqRdpVdofaaaaaadnhdkwdjndjodqSdqTdqUdqVdqWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqXdqYdqZdradrbdogdmsdrcdipaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaaadrddredrfaaadrddredrfaaadrddredrfaaadrddredrfaaadrddredrfaaaaayaaeaaeaaaaaacLJdrgdrhdrgcLJdridrjdricLJdrkdrldrkcLJdordrmdrndpAdrodrpdrqdqndqndrrdrsdrtdrudrvdrwdrxdrydrzdrAdrzdrzdrBdrzdrCdpqdmWdrDdrEdrFaaaaaaaaaaaaaaaaaaaaaaaaaaadJgdJldJxdJxdJxdJydJAdJzdJCdJBdJEdJDdJFdmXdlfdmYdpTdrGdrHdrIdrJdrKdrLdrMdjedjedjedjedjedjedjedjedjedjedjedjedjedrNdrOdrPdrQdrRdrSdrTdrUdqIdqHdrVdoUdrWdoVdoVdoVdoVdoVdoVdoVdoVdoVdrWdoUdrXdqVdqUdqWdrYdrZdsadsbdscdsddseaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsfdsgdshdsidsjdogdmsdskdipaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaaedrddsldrfaaedrddsldrfaaedrddsldrfaaedrddsldrfaaedrddsldrfaaeaazaaaaaeaaeaaacLJdrgdsmdrgcLJdridsndricLJdrkdsodrkcLJdordspdsqdpAdrodsrdqndqndqndssdstdsudsvdswdsxdsydszdsAdsBdsCdsCdsDdrzdsEdpqdmWcBRdsFdsGaaaaaaaaaaaaaaaaaaaaaaaaaaadJgdJfdJfdJhdJidJfdJfdJhdJjdJidJfdJfdJGaaaaaadkpdkldjadjbdsHdsIdsJdsKdsLdjedjedjedjedjedjedjedjedjedjedjedjedjedsMdsNdsOdsPdsQdjidsRdsSdsTdmndsSdpWdoVdoVdoVdsUdsUdoVdsUdsUdoVdoVdoVdpWdsVdnjdsWdsVdsXdjodsYdsZdtadtbdtcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadtddtedtfdtgdthdogdmsdtidipaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaaaaaaaaaaaidpgdphddZddZdpidphdpjddZdpidphdpjddZdpidpkcSpabxdordpldfKdfKdlUdlUdlUdlUdlUdpmdlUdlUdpndpodppdpqdpqdpqdpqdpqdpqdpqdpqdpqdprdpscxWcxWcxWaaaaaaaaaaaaaaaaaaaaaaaaaaadJgdJfdJfdqLducdJfdJfdqLdJjducdJfdJfdJkaaaaaadiYdkldjadjbdmmdkodiYaaaaaaaaadjedjedjedjedjedjedjedjedjedjedjeaaaaaaaaadjfdkrdmndjidjjdkudjfaaaaaaaaaaaaaaadoUdptdpudoVdpudptdoUaaaaaaaaaaaaaaadjldkwdjndjodnjdkzdjlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjrdjsdjtdogdmsdipaafaafaafdkDdpedpvdpfdkDaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaaadpwaaaabxcLJdpxcRlcRkcLJdpxcRlcRkcLJdpxcRlcRkcLJdordpydpzdpAdpBdpCdpDdpEdpFdpGdpHdpIdpJdpKdpLdpqdpMdpNdpOdpPdpQdpRdpSdpqdpqdmWcxWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadJgdJldJmdJmdJmdJndJmdJodJqdJpdJsdJrdvBdledlfdlgdpTdlidjbdmmdjddkkaaaaaadjedjedjedjedjedjedjedjedjedjedjedjedjeaaaaaadncdjkdmndjidjjdmndncaaaaaaaaaaaadobdpUdpVdpVdpWdpVdpVdpUdofaaaaaaaaaaaadnhdnjdjndjodnjdjqdnhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnldjsdjtdogdmsdipdipaafaafdkDdkDdkDdkDdkDaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaaaaaeaaeaaeaaaaaeaaeaaeaaaaaeaaeaaeaaaaaeaaeaaeaaaaaeaaeaaeaaaaayaaedpXaaeabxcLJdpYdpZdqacLJdqbdqcdqdcLJdqedqfdqgcLJdordqhdqidpAdqjdqkdqldqmdqndqodqpdpIdqqdqrdqsdpqdqtdqtdqudpQdpQdqvdqvdqwdpqdmWcxWdqxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadJgdJldJudJudJudJudJudJudJudJudJudJvdJwdqydqzdqAdqBdqCdjbdqDdqEdlgdlfdqFdjedjedjedjedjedjedjedjedjedjedjedjedjedqGdqHdqIdqJdqKdjidjjdkudncaaaaaadobdpVdyjdqMdqNdqOdoVdqOdqPdqQdqRdpVdofaaaaaadnhdkwdjndjodqSdqTdqUdqVdqWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqXdqYdqZdradrbdogdmsdrcdipaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaaadrddredrfaaadrddredrfaaadrddredrfaaadrddredrfaaadrddredrfaaaaayaaeaaeaaaaaacLJdrgdrhdrgcLJdridrjdricLJdrkdrldrkcLJdordrmdrndpAdrodrpdrqdqndqndrrdrsdrtdrudrvdrwdrxdrydrzdrAdrzdrzdrBdrzdrCdpqdmWdrDdrEdrFaaaaaaaaaaaaaaaaaaaaaaaaaaadJgdJldJxdJxdJxdJydJAdJzdJCdJBdJEdJDdAFdmXdlfdmYdpTdrGdrHdrIdrJdrKdrLdrMdjedjedjedjedjedjedjedjedjedjedjedjedjedrNdrOdrPdrQdrRdrSdrTdrUdqIdqHdrVdoUdrWdoVdoVdoVdoVdoVdoVdoVdoVdoVdrWdoUdrXdqVdqUdqWdrYdrZdsadsbdscdsddseaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsfdsgdshdsidsjdogdmsdskdipaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaaedrddsldrfaaedrddsldrfaaedrddsldrfaaedrddsldrfaaedrddsldrfaaeaazaaaaaeaaeaaacLJdrgdsmdrgcLJdridsndricLJdrkdsodrkcLJdordspdsqdpAdrodsrdqndqndqndssdstdsudsvdswdsxdsydszdsAdsBdsCdsCdsDdrzdsEdpqdmWcBRdsFdsGaaaaaaaaaaaaaaaaaaaaaaaaaaadJgdJfdJfdqLducdJfdJfdqLdJjducdJfdJfdJGaaaaaadkpdkldjadjbdsHdsIdsJdsKdsLdjedjedjedjedjedjedjedjedjedjedjedjedjedsMdsNdsOdsPdsQdjidsRdsSdsTdmndsSdpWdoVdoVdoVdsUdsUdoVdsUdsUdoVdoVdoVdpWdsVdnjdsWdsVdsXdjodsYdsZdtadtbdtcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadtddtedtfdtgdthdogdmsdtidipaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaaadrddsldrfaaadrddsldrfaaadrddsldrfaaadrddsldrfaaadrddsldrfaaaaaeaaaaaaaaeaaecLJcLJcLJcLJcLJcLJcLJcLJcLJcLJcLJcLJcLJdordspdsqdpAdqjdqkdrqdqndqndqodtjdpIdkUdnNdtkdpqdtldtmdtndtodtpdtqdtrdtsdpqdttcBRdtudsGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoIdhTdoJdoKdoLdhUdhUdhUdhUdhUdhTdtvdjadjbdtwdqEdmYdlfdlhdjedjedjedjedjedjedjedjedjedjedjedjedjedrUdqHdtxdqJdtydjidtzdrUdtxdqHdqJdoUdtAdoVdoVdoVdoVdoVdoVdoVdoVdoVdtBdoUdqTdqVdtCdqWdtDdjodtEdqTdtCdqVdqWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqXdqYdtFdradtGdogdmsdtHdipaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaaadrddsldrfaaadrddsldrfaaadrddsldrfaaadrddsldrfaaadrddsldrfaaaaaeaaaaaaaaaaaeaaeaaeaaeaaaaaaaaeaaeaaeaaaabxdtIdtIdtIdordtJdordpAdpBdtKdtLdtMdtNdtOdpAdpAdtPdtQdtRdpqdpqdtSdtodtTdtUdtVdtrdpqdpqdmWcBRdtudsGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadtWdtWdtWdtWdtWdtWdtWdtWdtWdtWdtWaaaaaaaaadiYdkldtXdtYdmmdkldkkaaaaaadjedjedjedjedjedjedjedjedjedjedjedjedjeaaaaaadncdtZdmnduadubdtZdncaaaaaaducdoVdsUdsUdsUdsUdoVdsUdsUdsUdsUdoVducaaaaaadnhdudduedufdnjduddnhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnldugdjtduhduidipdipaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaaadrddsldrfaaadrddsldrfaaadrddsldrfaaadrddsldrfaaadrddsldrfaaaaaeaaaaaaaaaaaeaaeaaeaaeaaaaaaaaeaaeaaeaaaabxdtIdtIdtIdordtJdordpAdpBdtKdtLdtMdtNdtOdpAdpAdtPdtQdtRdpqdpqdtSdtodtTdtUdtVdtrdpqdpqdmWcBRdtudsGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadtWdtWdtWdtWdtWdtWdtWdtWdtWdtWdtWaaaaaaaaadiYdkldtXdtYdmmdkldkkaaaaaadjedjedjedjedjedjedjedjedjedjedjedjedjeaaaaaadncdtZdmnduadubdtZdncaaaaaadAGdoVdsUdsUdsUdsUdoVdsUdsUdsUdsUdoVdAGaaaaaadnhdudduedufdnjduddnhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnldugdjtduhduidipdipaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaayaayaaeaaadrddsldrfaaadrddsldrfaaadrddsldrfaaadrddsldrfaaadrddsldrfaaaaaeaaaaaaaaaaaaaaedujdukdukdukdukdtIduldumdtIdtIdundunduodupduqdpAdpAdpAdpAdpAdpAdpAdpAdurdusdutduuduvdpqdpqdpqdpqdpqdpqdpqdpqdpqdmWcBRduwdsGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadtWdtWdtWdtWdtWdtWdtWdtWdtWdtWdtWdtWdledlfdlgdpTdlidjbdmmdnbdkkaaaaaadjedjedjedjedjedjedjedjedjedjedjedjedjeaaaaaadncdnddmndjidjjduxdncaaaaaaduydIrdoVdoVdoVdoVduzdoVdoVdoVdoVdIsduyaaaaaadnhduAdjndjodnjdnkdnhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnldnmdjtdogduBdipaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaduCduCduCduCduCduCduCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaaaaaeaaaaaaaaeduDaaeaaaaaeduDaaeaaaaaeduDaaeaaaaaeduDaaeaaaaaeduDaaeaaaduEaaaaaaduFduGduGduHduIduJduKduLduMduNduOduPduQduRduRduSduTduUduVduWduXduSduPduYduZdvadvbdvcdvddvedvfdvgdvhdvidvjdvkdvldvmdvndvodmWdvpdvqdvraaaaaaaaaaaaaaaaaaaaaaaaaaaaaadtWdtWdtWdtWdtWdtWdtWdtWdtWdtWdtWdtWdvsdvtdvudvvdvwdvxdvydkldkkaaaaaadjedjedjedjedjedjedjedjedjedjedjedjedjeaaaaaadncdtZdvzdvAdjjdtZdncaaaaaadvBdoVdsUdsUdsUdsUdoVdsUdsUdsUdsUdoVdvBaaaaaadnhduddjndvCdvDduddnhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnldugdvEdvFdmsdipaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaduCduCduCduCduCduCduCduCduCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaaaaaeaaaaaaaaeduDaaeaaaaaeduDaaeaaaaaeduDaaeaaaaaeduDaaeaaaaaeduDaaeaaaduEaaaaaaduFduGduGduHduIduJduKduLduMduNduOduPduQduRduRduSduTduUduVduWduXduSduPduYduZdvadvbdvcdvddvedvfdvgdvhdvidvjdvkdvldvmdvndvodmWdvpdvqdvraaaaaaaaaaaaaaaaaaaaaaaaaaaaaadtWdtWdtWdtWdtWdtWdtWdtWdtWdtWdtWdtWdvsdvtdvudvvdvwdvxdvydkldkkaaaaaadjedjedjedjedjedjedjedjedjedjedjedjedjeaaaaaadncdtZdvzdvAdjjdtZdncaaaaaadERdoVdsUdsUdsUdsUdoVdsUdsUdsUdsUdoVdERaaaaaadnhduddjndvCdvDduddnhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnldugdvEdvFdmsdipaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaduCduCduCduCduCduCduCduCduCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaaedvGdvHdvHdvHdvIdvHdvHdvHdvIdvHdvHdvHdvIdvHdvHdvHdvIdvHdvHdvHdvIdvHdvHdvHdvHdvJdvKdvLdvMdvNdvOdvPdvQdvRdvSdvTdvUdvVdvWdvXdvYdvZdwadwbdwcdwddutduvduvdweduvdwfduvdwgdwhduvduvdwiduvdwedwjdwkdwldwmdwndwodwpcxWdwqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadtWdtWdtWdtWdtWdtWdtWdtWdtWdtWdtWdtWdmXdlfdmYdpTdwrdwsdwtdqEdlgdlfdlhdjedjedjedjedjedjedjedjedjedjedjedjedjedrUdqHdqIdqJdwudwvdwwdrUdqIdqHdqJdoUdtAdoVdoVdoVdoVdoVdoVdoVdoVdoVdtBdoUdqTdqVdqUdqWdwxdwydwzdqTdqUdqVdqWaaaaaaaaaaaadwAdwAdwAdwAdwAdwAdwAaaaaaadqXdqYdqZdradwBdwCdwDdipaafaafaafdwEdwEdwEdwEdwEdwEdwEaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaduCduCduCduCduCduCduCduCduCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaaaaaeaaaaaaaaeduDaaeaaaaaeduDaaeaaaaaeduDaaeaaaaaeduDaaeaaaaaeduDaaeaaaaaeaaaaaaduFduGduGdwFdwGdwHdwIdukdtIdwJdwKdtIdtIdwLdumdwMdtIdwNdwOdwOdwPdwOdwQdwRdwQdwSdwTdwUdwVdwTdwUdwSdwWdwXdwYdtIdwcdwcdtIdtIcxWcxWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadtWdtWdtWdtWdtWdtWdtWdtWdtWdtWdtWaaaaaaaaadkpdkldjadjbdsHdwZdxadxbdxcdjedjedjedjedjedjedjedjedjedjedjedjedjedxddxedxfdxgdsQdjidsRdsSdxhdmndsSdpWdoVdoVdoVdsUdsUdoVdsUdsUdoVdoVdoVdpWdsVdnjdxidsVdsXdjodsYdxjdxkdxldxmaaaaaaaaadwAdwAdwAdwAdwAdwAdwAdwAdwAaaadxndxodxpdxqdthdogdmsdipdwEdwEdwEdwEdxrdxsdxtdxudxrdwEdwEdwEdwEdwEdwEdwEdwEdwEdwEdwEdwEaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaduCduCduCduCduCduCduCduCduCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaayaayaaeaaedrddxvdrfaaadrddxvdrfaaadrddxvdrfaaadrddxvdrfaaadrddxvdrfaaaaaeaaaaaaaaaaaaaaedxwdukdukdukdukdtIdxxdxydxzaaadxAdxBdxCdxDdxEdwOdxFdxGdxHdwQdxIdxJdxKdxLdxMdxNdxOdxPdxKdxQdxRdxSdtIdxTdxUdxVdxzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoIdhTdoJdoKdoLdhUdhUdhUdhUdhUdhTdxWdxXdrHdxYdxZdyadybdycdjedjedjedjedjedjedjedjedjedjedjedjedjedyddyedyfdygdyhdrSdyidrUdtxdqHdrVdoUdrWdyjdqMdoVdoVdoVdoVdoVdykdyjdrWdoUdrXdqVdtCdqWdyldrZdymdyndyodypdyqaaaaaaaaadwAdwAdwAdwAdwAdwAdwAdwAdwAaaadyrdysdytdyudyvdywdyxdyydyzdyAdyAdyAdyBdyCdyBdyDdyBdyAdyEdyAdyAdyAdyFdyGdyHdyIdyJdyKdwEdwEaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaduCduCduCduCduCduCduCduCduCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaayaayaaeaaedrddxvdrfaaadrddxvdrfaaadrddxvdrfaaadrddxvdrfaaadrddxvdrfaaaaaeaaaaaaaaaaaaaaedxwdukdukdukdukdtIdxxdxydxzaaadxAdxBdxCdxDdxEdwOdxFdxGdxHdwQdxIdxJdxKdxLdxMdxNdxOdxPdxKdxQdxRdxSdtIdxTdxUdxVdxzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoIdhTdoJdoKdoLdhUdhUdhUdhUdhUdhTdxWdxXdrHdxYdxZdyadybdycdjedjedjedjedjedjedjedjedjedjedjedjedjedyddyedyfdygdyhdrSdyidrUdtxdqHdrVdoUdrWdEUdqMdoVdoVdoVdoVdoVdykdEUdrWdoUdrXdqVdtCdqWdyldrZdymdyndyodypdyqaaaaaaaaadwAdwAdwAdwAdwAdwAdwAdwAdwAaaadyrdysdytdyudyvdywdyxdyydyzdyAdyAdyAdyBdyCdyBdyDdyBdyAdyEdyAdyAdyAdyFdyGdyHdyIdyJdyKdwEdwEaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaduCduCduCduCduCduCduCduCduCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadyLdyLdyLdyLdyLdyLdyLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaadrddxvdrfaaadrddxvdrfaaadrddxvdrfaaadrddxvdrfaaadrddxvdrfaaaaaeaaaaaaaaaaaeaaeaaaaaaaaaaaaaaadtIdyMdyNdyOaaedxAdyPdyQdyRdySdwOdyTdyUdyVdwQdyWdyXdxKdyYdyZdzadzbdzcdxKdzddzedzfdtIdzgdzhdzidyOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadiYdkldjadjbdzjdqEdmYdlfdqFdjedjedjedjedjedjedjedjedjedjedjedjedjedqGdqHdtxdqJdzkdjidjjdkudncaaaaaadzldpVdzmdzndoVdzodzpdzqdoVdzrdzsdpVdztaaaaaadnhdkwdjndjodzudqTdtCdqVdqWaaaaaaaaadwAdwAdwAdwAdwAdwAdwAdwAdwAaaadqXdqYdzvdzwdzxdzydzzdzzdzAdzBdzCdzDdzEdzFdzGdzHdzIdzFdzJdzKdzLdzMdzNdzKdzKdzKdzKdzOdzPdwEaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaduCduCduCduCduCduCduCduCduCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadyLdyLdyLdyLdyLdyLdyLdyLdyLaaaaaaaaaaaaaaaaaaaaaaaaaaeaaadrddxvdrfaaadrddxvdrfaaadrddxvdrfaaadrddxvdrfaaadrddxvdrfaaaaayaaaaaaaaeaaeaaaaaaaaaaaaaaaaaadtIdzQdzQdtIaaidzRdumdzSduldumdwOdzTdzUdzVdzWdzXdzYdzZdAadAbdAcdAddAedAfdAgdAhdAidAjdAkdAldtIdtIaaedAmaclaclaclaclaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadledlfdlgdpTdAndjbdmmdAodkkaaaaaadjedjedjedjedjedjedjedjedjedjedjedjedjeaaaaaadncdApdmndjidjjdAqdncaaaaaaaaaaaadzldArdAsdAtdAtdAtdAsdArdztaaaaaaaaaaaadnhdAudjndjodnjdAvdnhaaaaaaaaaaaaaaadwAdwAdwAdwAdwAdwAdwAdwAdwAaaaaaaaaaaaadnldAwdogdAxdipdwEdwEdAydAzdAAdwEdAydAzdABdwEdAydwEdwEdwEdwEdwEdwEdwEdzKdzOdzKdwEaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaduCduCduCduCduCduCduCaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadyLdyLdyLdyLdyLdyLdyLdyLdyLaaaaaaaaaaaaaaaaaaaaaaaaaayaaedrddxvdrfaaedrddxvdrfaaedrddxvdrfaaedrddxvdrfaaedrddxvdrfaaeaayaaaaaeaaeaaaaaaaaaaaaaaaaaaaaadACdADdAEdACabxdAFdAGdAHdAGdAFdwOdAIdAJdAKdwQdALdAMdxKdANdAOdAPdAOdAQdxKdARdASdATdAjdAUdAVdAWdAXaaaaaeaaeaaaaaaaclaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadAYdAZdBadBbdBcdBddoOdkodkpaaaaaadjedjedjedjedjedjedjedjedjedjedjedjedjeaaaaaadkqdkrdoRdBedjjdkudkqaaaaaaaaaaaaaaaaaadzldArdArdArdztaaaaaaaaaaaaaaaaaadkvdkwdjndBfdoYdkzdkvaaaaaaaaaaaaaaadwAdwAdwAdwAdwAdwAdwAdwAdwAaaaaaaaaaaaadkAdBgdBhdBidipaafaafdwEdBjdBkdBldwEdBmdBndBodwEaafaafaafaafaafaafdBpdBpdBqdBpdBpaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaduCduCduCduCduCduCduCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadyLdyLdyLdyLdyLdyLdyLdyLdyLaaaaaaaaaaaaaaaaaaaaaaaaaayaaedrddxvdrfaaedrddxvdrfaaedrddxvdrfaaedrddxvdrfaaedrddxvdrfaaeaayaaaaaeaaeaaaaaaaaaaaaaaaaaaaaadACdADdAEdACabxdJidJhdAHdJhdJidwOdAIdAJdAKdwQdALdAMdxKdANdAOdAPdAOdAQdxKdARdASdATdAjdAUdAVdAWdAXaaaaaeaaeaaaaaaaclaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadAYdAZdBadBbdBcdBddoOdkodkpaaaaaadjedjedjedjedjedjedjedjedjedjedjedjedjeaaaaaadkqdkrdoRdBedjjdkudkqaaaaaaaaaaaaaaaaaadzldArdArdArdztaaaaaaaaaaaaaaaaaadkvdkwdjndBfdoYdkzdkvaaaaaaaaaaaaaaadwAdwAdwAdwAdwAdwAdwAdwAdwAaaaaaaaaaaaadkAdBgdBhdBidipaafaafdwEdBjdBkdBldwEdBmdBndBodwEaafaafaafaafaafaafdBpdBpdBqdBpdBpaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaduCduCduCduCduCduCduCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadyLdyLdyLdyLdyLdyLdyLdyLdyLaaaaaaaaaaaaaaaaaaaaaaaaaazaaadrddBrdrfaaadrddBrdrfaaadrddBrdrfaaadrddBrdrfaaadrddBrdrfaaaaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabxdBsdBtdBudBvdBsdBwdBxdBydBzdwQdBAdBBdxKdBCdBDdBEdBFdBGdxKdBHdBIdBJdAjdBKdBLdAWdBMaaaaaeaaeaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadmXdlfdmYdpTdBNdBOdmmdBPdhTaaaaaadjedjedjedjedjedjedjedjedjedjedjedjedjeaaaaaadhZdBQdmndBRdjjdoTdhZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadigdoWdjndBSdnjdBTdigaaaaaaaaaaaaaaaaaadwAdwAdwAdwAdwAdwAdwAaaaaaaaaaaaaaaadildBUdBVdBWdipaafaafdwEdBXdBYdBZdwEdCadCbdCcdwEaafaafaafaafaafaafdBpdCddCedCfdBpdCgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaduCduCduCduCduCduCduCduCduCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadyLdyLdyLdyLdyLdyLdyLdyLdyLaaaaaaaaaaaaaaaaaaaaaaaaaclaaaaaeaaaaaaaaaaaeaaeaaeaaaaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaeaaaaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabxdAGdChdBudCidAGdwOdCjdCkdwOdwQdwQdCldAjdCmdCndCodCndCpdAjdwWdCqdwWdAjdAjdAjdAjdCrdCsdCtdCtdCsdCuaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadkkdkldkmdCvdmmdkodiYaaaaaadjedjedjedjedjedjedjedjedjedjedjedjedjeaaaaaadjfdkrdmndCwdktdkudjfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjldkwdkxdCxdnjdkzdjlaaaaaaaaaaaaaaaaaadwAdwAdwAdwAdwAdwAdwAaaaaaaaaaaaaaaadjrdCydCzdCAdipaafaafdwEdCBdCCdCBdwEdCDdCEdCDdwEaafaafaafaafaafaafdBpdCFdCGdCHdBpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaduCduCduCduCduCduCduCduCduCduCduCduCduCduCduCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadyLdyLdyLdyLdyLdyLdyLdyLdyLaaaaaaaaaaaaaaaaaaaaaaaaaclaaaaaeaaaaaaaaaaaeaaeaaeaaaaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaeaaaaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabxdJhdChdBudCidJhdwOdCjdCkdwOdwQdwQdCldAjdCmdCndCodCndCpdAjdwWdCqdwWdAjdAjdAjdAjdCrdCsdCtdCtdCsdCuaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadkkdkldkmdCvdmmdkodiYaaaaaadjedjedjedjedjedjedjedjedjedjedjedjedjeaaaaaadjfdkrdmndCwdktdkudjfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjldkwdkxdCxdnjdkzdjlaaaaaaaaaaaaaaaaaadwAdwAdwAdwAdwAdwAdwAaaaaaaaaaaaaaaadjrdCydCzdCAdipaafaafdwEdCBdCCdCBdwEdCDdCEdCDdwEaafaafaafaafaafaafdBpdCFdCGdCHdBpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaduCduCduCduCduCduCduCduCduCduCduCduCduCduCduCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadyLdyLdyLdyLdyLdCIdyLdyLdyLaaaaaaaaaaaaaaaaaaaaaaaaaclaclaclaclacvaazaayaaeaaeaaeaayaaeaaeaaeaaeaazaazaayaaeaaeaaeaazaayaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabxdBsdCJdBudCKdBsdAjdCLdCMdCNdCOdCPdCQdCRdCSdCTdCUdCVdCWdCXdCYdCZdDadDbdDcdDcdAjdDddCtdDedDfdCtdDgdDhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadkpdDidDjdDkdDldDmdkpaaaaaadjedjedjedjedjedjedjedjedjedjedjedjedjeaaaaaadkqdDndDodDpdDqdDrdkqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadkvdDsdDtdDudDvdDwdkvaaaaaaaaaaaaaaadwAdwAdwAdwAdwAdwAdwAdwAdwAaaaaaaaaaaaadkAdDxdDydDzdipaafaaidwEdCBdDAdCBdwEdCDdDBdCDdwEaafaafaafaafaafaafdBpdDCdDDdDEdBpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaduCduCduCduCduCduCduCduCduCduCduCduCduCduCduCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadyLdyLdyLdyLdyLdyLdyLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabxdAGdDFdDFdDFdAGdAjdDbdDGdDHdDIdDJdDKdDLdDMdDNdDOdDNdDNdDNdDNdDNdDPdDQdDcdDcdAjdCrdCsdDgdDddCsdCuaclaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoIdhTdoJdoKdoLdhUdhUdhUdhUdhUdhTdhTdDRdDSdDSdhTdhTaaaaaaaaaaaaaaaaaadjedjedjedjedjeaaaaaaaaaaaaaaaaaadhZdhZdDTdDTdDUdhZdhZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadigdigdDVdDWdDWdigdigaaaaaadwAdwAdwAdwAdwAdwAdwAdwAdwAdwAdwAdwAdwAdwAdwAdildildDXdDYdDZdilaafaaidAydCBdEadCBdAydCDdEbdCDdAyaaiaaiaafaafaafaafdEcdEddEedEfdEgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaduCduCduCduCduCduCduCduCduCduCduCduCduCduCduCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadyLdyLdyLdyLdyLdyLdyLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaidEhdBsdEidEidEjdBsdAjdDbdDGdEkdEldEmdEndEodEodEpdEqdErdEsdEtdEudEvdEwdExdEydEzdAjdEAdCsdDedDfdCsdEBaclaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaadiYdECdEDdEEdiYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjfdEFdEGdEHdjfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjldEIdEJdEKdjlaaaaaaaaadwAdwAdwAdwAdwAdwAdwAdwAdwAdwAdwAdwAdwAdwAdwAdELdEMdENdEOdEPdjraaiaaiaaidEQdERdESaaadETdEUdEVaaiaaiaaiaaiaaiaaiabxabxdEWdEXdEWaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaduCduCduCduCduCduCduCduCduCduCduCduCduCduCduCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadyLdyLdyLdyLdyLdyLdyLdyLdyLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadEYaaaaaadEYaaaaaaaaadEYaaaaaaaaaaaaaaadEYaaaaaaaaadEYaaaaaadEYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaidtIdAFdAGdEZdAGdAFdAjdDbdDGdFadFbdFcdDbdDbdDbdFddFedFfdFgdFgdFhdFidFjdFkdFldFmdFndFodCtdDgdDddCtdDeaclaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadkkdFpdDldFqdkkaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadncdFrdDodFsdncaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnhdFtdDvdFudnhaaaaaaaaadwAdwAdwAdwAdwAdwAdwAdwAdwAdwAdwAdwAdwAdwAdwAdFvdFwdFxdFydFzdnlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaiaaaaaaaaaaaeaaeaaadEWdFAdEWaaaaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaduCduCduCduCduCduCduCduCduCduCduCduCduCduCduCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadyLdyLdyLdyLdyLdyLdyLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabxdJhdDFdDFdDFdJhdAjdDbdDGdDHdDIdDJdDKdDLdDMdDNdDOdDNdDNdDNdDNdDNdDPdDQdDcdDcdAjdCrdCsdDgdDddCsdCuaclaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoIdhTdoJdoKdoLdhUdhUdhUdhUdhUdhTdhTdDRdDSdDSdhTdhTaaaaaaaaaaaaaaaaaadjedjedjedjedjeaaaaaaaaaaaaaaaaaadhZdhZdDTdDTdDUdhZdhZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadigdigdDVdDWdDWdigdigaaaaaadwAdwAdwAdwAdwAdwAdwAdwAdwAdwAdwAdwAdwAdwAdwAdildildDXdDYdDZdilaafaaidAydCBdEadCBdAydCDdEbdCDdAyaaiaaiaafaafaafaafdEcdEddEedEfdEgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaduCduCduCduCduCduCduCduCduCduCduCduCduCduCduCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadyLdyLdyLdyLdyLdyLdyLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaidEhdBsdEidEidEjdBsdAjdDbdDGdEkdEldEmdEndEodEodEpdEqdErdEsdEtdEudEvdEwdExdEydEzdAjdEAdCsdDedDfdCsdEBaclaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaadiYdECdEDdEEdiYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjfdEFdEGdEHdjfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjldEIdEJdEKdjlaaaaaaaaadwAdwAdwAdwAdwAdwAdwAdwAdwAdwAdwAdwAdwAdwAdwAdELdEMdENdEOdEPdjraaiaaiaaidEQdJtdESaaadETdJFdEVaaiaaiaaiaaiaaiaaiabxabxdEWdEXdEWaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaduCduCduCduCduCduCduCduCduCduCduCduCduCduCduCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadyLdyLdyLdyLdyLdyLdyLdyLdyLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadEYaaaaaadEYaaaaaaaaadEYaaaaaaaaaaaaaaadEYaaaaaaaaadEYaaaaaadEYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaidtIdJidJhdEZdJhdJidAjdDbdDGdFadFbdFcdDbdDbdDbdFddFedFfdFgdFgdFhdFidFjdFkdFldFmdFndFodCtdDgdDddCtdDeaclaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadkkdFpdDldFqdkkaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadncdFrdDodFsdncaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnhdFtdDvdFudnhaaaaaaaaadwAdwAdwAdwAdwAdwAdwAdwAdwAdwAdwAdwAdwAdwAdwAdFvdFwdFxdFydFzdnlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaiaaaaaaaaaaaeaaeaaadEWdFAdEWaaaaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaduCduCduCduCduCduCduCduCduCduCduCduCduCduCduCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadyLdyLdyLdyLdyLdyLdyLdyLdyLdyLdyLdyLdyLdyLdyLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadEYdEYdEYdEYaaaaaaaaadEYdEYdEYdEYdEYdEYdEYaaaaaaaaadEYdEYdEYdEYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadFBdtIdEhabxdEhdtIdAjdFCdDGdFDdFEdFFdDbdFGdFHdFIdFJdFKdFLdFMdFNdFOdFPdFQdFRdFSdFTdFodCsdDedDfdCsdEBaclaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadFUdlhdFVdFWdkpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadkqdFXdFYdrUdFZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadGadqWdGbdGcdkvaaaaaaaaadwAdwAdwAdwAdwAdwAdwAdwAdwAdwAdwAdwAdwAdwAdwAdqXdqYdGddqYdqYdGeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaaaaadGfdGgdGfaaaaaaaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaduCduCduCduCduCduCduCduCduCduCduCduCduCduCduCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadyLdyLdyLdyLdyLdyLdyLdyLdyLdyLdyLdyLdyLdyLdyLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadEYdEYdEYdEYaaaaaadEYdEYdEYdEYdEYdEYdEYdEYdEYaaaaaadEYdEYdEYdEYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaidGhaaiaaidAjdGidFadGjdGkdGldDbdGmdAjdGndGodGpdAjdGqdGrdGsdGtdGudGvdGwdAjdCrdCsdDgdDddCsdCuaclaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadGxdGxdGxdGxaaaaaaaaaaaadGxdGxdGxdGxdGxaaaaaaaaaaaaaaaaaadGydGydGydGydGydGydGydGydGydGydGydGyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadwAdwAdwAdwAdwAdwAdwAdwAdwAdwAdwAdwAdwAdwAdwAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaeaaeaaaaaaaaaaaadGzaaaaaaaaaaaaaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaduCduCduCduCduCduCduCduCduCduCduCduCduCduCduCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadyLdyLdyLdyLdyLdyLdyLdyLdyLdyLdyLdyLdyLdyLdyLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadEYdEYdEYdEYaaaaaadEYdEYdEYdEYdEYdEYdEYdEYdEYaaaaaadEYdEYdEYdEYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaclaaaaaidAjdGAdDbdGBdGCdGCdDbdGDdGEdGFdGGdGHdGEdGIdGJdFidFjdGKdGLdGMdAjdDddCtdDedDfdCtdDgaclaaaaaaaaaaaaaaaaaaaaaaaadGxdGxdGxdGxdGxdGxdGxdGxdGxdGxaaaaaaaaaaaaaaadGxdGxdGxdGxdGxdGxaaaaaadGxdGxdGxdGxdGxdGxaaaaaaaaaaaaaaadGydGydGydGydGydGydGydGydGydGydGydGydGydGydGyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadwAdwAdwAdwAdwAdwAdwAdwAdwAdwAdwAdwAdwAdwAdwAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaaaaaaaaaaaaaadGNaaaaaaaaaaaaaaaaaeaaeaaaaaaaaaaaaaaaaaaaaaduCduCduCduCduCduCduCduCduCduCduCduCduCduCduCduCduCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
diff --git a/maps/virgo-2.dmm b/maps/virgo-2.dmm
index 5a15a4315a..f4365b69ce 100644
--- a/maps/virgo-2.dmm
+++ b/maps/virgo-2.dmm
@@ -1229,7 +1229,7 @@
"axG" = (/obj/machinery/door/airlock/centcom{name = "Special Operations"; opacity = 1; req_access = list(103)},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops)
"axH" = (/turf/space,/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/centcom/specops)
"axI" = (/turf/space/transit/east/shuttlespace_ew5,/area/shuttle/administration/transit)
-"axJ" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/shuttle/administration/centcom)
+"axJ" = (/turf/space/transit/east/shuttlespace_ew5,/area/shuttle/belter/transit)
"axK" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "admin_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access = list(13)},/turf/simulated/floor/plating,/area/shuttle/administration/centcom)
"axL" = (/turf/space/transit/east/shuttlespace_ew4,/area/shuttle/administration/transit)
"axM" = (/obj/machinery/recharger/wallcharger{pixel_x = -25},/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start)
@@ -1389,7 +1389,7 @@
"aAK" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "admin_shuttle_bay"; name = "shuttle bay controller"; pixel_x = 25; pixel_y = 0; tag_door = "admin_shuttle_bay_door"},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command)
"aAL" = (/obj/machinery/optable,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom)
"aAM" = (/turf/space,/area/centcom/command)
-"aAN" = (/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/shuttle/administration/centcom)
+"aAN" = (/turf/space/transit/east/shuttlespace_ew4,/area/shuttle/belter/transit)
"aAO" = (/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/shuttle/floor,/area/supply/dock)
"aAP" = (/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor,/area/supply/dock)
"aAQ" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "syndieshutters_infirmary"; name = "Blast Shutters"; opacity = 0},/turf/simulated/shuttle/plating,/area/syndicate_station/start)
@@ -1407,7 +1407,7 @@
"aBc" = (/obj/machinery/porta_turret/crescent,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command)
"aBd" = (/obj/machinery/door/airlock/external,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command)
"aBe" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "admin_shuttle_bay_door"; locked = 1},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/command)
-"aBf" = (/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/shuttle/administration/centcom)
+"aBf" = (/turf/space/transit/east/shuttlespace_ew6,/area/shuttle/belter/transit)
"aBg" = (/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/command)
"aBh" = (/obj/machinery/vending/boozeomat,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/shuttle/administration/centcom)
"aBi" = (/obj/machinery/light{dir = 1},/obj/structure/table/reinforced,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/shuttle/administration/centcom)
@@ -2744,15 +2744,15 @@
"baN" = (/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/administration/centcom)
"baO" = (/obj/structure/table/reinforced,/obj/machinery/cell_charger{pixel_x = -4; pixel_y = 4},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/administration/centcom)
"baP" = (/obj/structure/table/reinforced,/obj/machinery/recharger{pixel_y = 4},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/administration/centcom)
-"baQ" = (/obj/machinery/light{dir = 8},/obj/machinery/door/window/southleft,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/shuttle/administration/centcom)
+"baQ" = (/turf/space/transit/east/shuttlespace_ew10,/area/shuttle/belter/transit)
"baR" = (/obj/structure/table/reinforced,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/shuttle/administration/centcom)
"baS" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/spray/cleaner,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/shuttle/administration/centcom)
"baT" = (/obj/structure/table/reinforced,/obj/item/weapon/flame/lighter/zippo,/obj/item/weapon/storage/fancy/cigarettes,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/shuttle/administration/centcom)
"baU" = (/obj/structure/closet/emcloset,/obj/item/device/suit_cooling_unit,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/administration/centcom)
"baV" = (/obj/machinery/door/airlock/centcom{name = "Administrative Office"; opacity = 1; req_access = list(101)},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command)
-"baW" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 8},/obj/structure/window/reinforced{dir = 4; health = 1e+006},/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/shuttle/administration/centcom)
+"baW" = (/turf/space/transit/east/shuttlespace_ew11,/area/shuttle/belter/transit)
"baX" = (/turf/simulated/floor/wood,/area/shuttle/administration/centcom)
-"baY" = (/obj/machinery/vending/snack,/turf/simulated/floor/wood,/area/shuttle/administration/centcom)
+"baY" = (/turf/space/transit/east/shuttlespace_ew1,/area/shuttle/belter/transit)
"baZ" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/floor/wood,/area/shuttle/administration/centcom)
"bba" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/administration/centcom)
"bbb" = (/obj/machinery/autolathe{desc = "Your typical Autolathe. It appears to have much more options than your regular one, however..."; hacked = 1; name = "Centcom Autolathe"},/obj/machinery/light,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/administration/centcom)
@@ -2760,8 +2760,8 @@
"bbd" = (/obj/machinery/mecha_part_fabricator,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/administration/centcom)
"bbe" = (/obj/structure/dispenser,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/administration/centcom)
"bbf" = (/obj/machinery/cryopod{dir = 4},/turf/simulated/floor/wood,/area/shuttle/administration/centcom)
-"bbg" = (/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/shuttle/administration/centcom)
-"bbh" = (/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/shuttle/administration/centcom)
+"bbg" = (/turf/space/transit/east/shuttlespace_ew12,/area/shuttle/belter/transit)
+"bbh" = (/turf/space/transit/east/shuttlespace_ew3,/area/shuttle/belter/transit)
"bbi" = (/obj/structure/closet/emcloset,/obj/item/device/suit_cooling_unit,/turf/simulated/floor/wood,/area/shuttle/administration/centcom)
"bbj" = (/obj/machinery/light,/turf/simulated/floor/wood,/area/shuttle/administration/centcom)
"bbk" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/bed/chair/comfy/black{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom)
@@ -2773,10 +2773,10 @@
"bbq" = (/obj/structure/closet/medical_wall{pixel_x = 31},/obj/item/weapon/storage/firstaid/combat,/obj/item/bodybag/cryobag,/obj/item/bodybag/cryobag,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom)
"bbr" = (/obj/machinery/light{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom)
"bbs" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/closet/secure_closet/hos{name = "security gear locker"; req_access = list(101)},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom)
-"bbt" = (/obj/machinery/light{dir = 8},/obj/machinery/door/window/northleft,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom)
+"bbt" = (/turf/space/transit/east/shuttlespace_ew2,/area/shuttle/belter/transit)
"bbu" = (/obj/structure/table/reinforced,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom)
"bbv" = (/obj/item/weapon/storage/firstaid/surgery,/obj/structure/table/reinforced,/obj/item/weapon/tank/anesthetic,/obj/item/clothing/mask/breath/medical,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom)
-"bbw" = (/obj/machinery/smartfridge/chemistry,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom)
+"bbw" = (/turf/space/transit/east/shuttlespace_ew7,/area/shuttle/belter/transit)
"bbx" = (/obj/machinery/door/airlock/centcom{name = "Quarters"; opacity = 1; req_access = list(101)},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom)
"bby" = (/obj/structure/grille,/obj/structure/window/reinforced/polarized{dir = 2; id = "ccas_room1_tint"},/obj/structure/window/reinforced/polarized{dir = 8; id = "ccas_room1_tint"},/obj/structure/window/reinforced/polarized{dir = 4; id = "ccas_room1_tint"},/obj/structure/window/reinforced/polarized{dir = 1; id = "ccas_room1_tint"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom)
"bbz" = (/obj/structure/grille,/obj/structure/window/reinforced/polarized{dir = 2; id = "ccas_room2_tint"},/obj/structure/window/reinforced/polarized{dir = 8; id = "ccas_room2_tint"},/obj/structure/window/reinforced/polarized{dir = 4; id = "ccas_room2_tint"},/obj/structure/window/reinforced/polarized{dir = 1; id = "ccas_room2_tint"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom)
@@ -2814,35 +2814,67 @@
"bcf" = (/obj/structure/table/glass,/obj/item/bodybag/cryobag,/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical)
"bcg" = (/obj/structure/table/glass,/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical)
"bch" = (/obj/effect/floor_decal/corner/blue{dir = 5},/obj/machinery/atmospherics/unary/freezer,/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical)
+"bci" = (/turf/space/transit/east/shuttlespace_ew9,/area/shuttle/belter/transit)
+"bcj" = (/turf/space/transit/east/shuttlespace_ew8,/area/shuttle/belter/transit)
+"bck" = (/turf/space/transit/east/shuttlespace_ew14,/area/shuttle/belter/transit)
+"bcl" = (/turf/space/transit/east/shuttlespace_ew13,/area/shuttle/belter/transit)
+"bcm" = (/turf/space/transit/east/shuttlespace_ew15,/area/shuttle/belter/transit)
+"bcn" = (/turf/simulated/shuttle/wall{tag = "icon-gwall_space (WEST)"; icon_state = "gwall_space"; dir = 8},/area/shuttle/administration/centcom)
+"bco" = (/turf/simulated/shuttle/wall{dir = 1; icon_state = "wall3_t"},/area/shuttle/administration/centcom)
+"bcp" = (/turf/simulated/shuttle/wall{tag = "icon-gwall_space (NORTH)"; icon_state = "gwall_space"; dir = 1},/area/shuttle/administration/centcom)
+"bcq" = (/turf/simulated/shuttle/wall{dir = 4; icon_state = "wall3_straight"; tag = "icon-swall_straight (EAST)"},/area/shuttle/administration/centcom)
+"bcr" = (/turf/simulated/shuttle/wall{dir = 2; icon_state = "wall3_straight"; tag = "icon-swall_straight (EAST)"},/area/shuttle/administration/centcom)
+"bcs" = (/turf/simulated/shuttle/wall{dir = 2; icon = 'icons/turf/shuttle_vr.dmi'; icon_state = "gwall_bfloor"; tag = ""},/area/shuttle/administration/centcom)
+"bct" = (/turf/simulated/shuttle/wall{dir = 4; icon = 'icons/turf/shuttle_vr.dmi'; icon_state = "gwall_drfloor"; tag = "icon-gwall_space (EAST)"},/area/shuttle/administration/centcom)
+"bcu" = (/obj/structure/table/reinforced,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/administration/centcom)
+"bcv" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 8},/obj/structure/window/reinforced{dir = 4; health = 1e+006},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating/airless,/area/shuttle/administration/centcom)
+"bcw" = (/obj/machinery/vending/snack,/obj/machinery/light{dir = 8},/turf/simulated/floor/wood,/area/shuttle/administration/centcom)
+"bcx" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 8},/obj/structure/window/reinforced{dir = 4; health = 1e+006},/turf/simulated/shuttle/plating/airless,/area/shuttle/administration/centcom)
+"bcy" = (/turf/simulated/shuttle/wall{dir = 8; icon_state = "wall3_t"},/area/shuttle/administration/centcom)
+"bcz" = (/turf/simulated/shuttle/wall{tag = "icon-gwall_space (EAST)"; icon_state = "gwall_space"; dir = 4},/area/shuttle/administration/centcom)
+"bcA" = (/turf/simulated/shuttle/wall{dir = 7; icon_state = "wall3_wall"; tag = "icon-swall (EAST)"},/area/shuttle/administration/centcom)
+"bcB" = (/turf/simulated/shuttle/wall{tag = "icon-gwall_space"; icon_state = "gwall_space"; dir = 2},/area/shuttle/administration/centcom)
+"bcC" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/command)
+"bcD" = (/turf/simulated/shuttle/wall{dir = 4; icon_state = "wall3_t"},/area/shuttle/administration/centcom)
+"bcE" = (/turf/simulated/shuttle/wall{dir = 1; icon_state = "wall3_wall"; tag = "icon-swall (EAST)"},/area/shuttle/administration/centcom)
+"bcF" = (/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/command)
+"bcG" = (/turf/simulated/shuttle/wall{dir = 5; icon_state = "wall3_wall"; tag = "icon-swall (NORTHWEST)"},/area/shuttle/administration/centcom)
+"bcH" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 8},/obj/structure/window/reinforced{dir = 4; health = 1e+006},/obj/structure/window/reinforced{dir = 2; health = 1e+006},/turf/simulated/shuttle/plating/airless,/area/shuttle/administration/centcom)
+"bcI" = (/obj/machinery/light{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom)
+"bcJ" = (/turf/simulated/shuttle/wall{dir = 1; icon = 'icons/turf/shuttle_vr.dmi'; icon_state = "gwall_wfloor"; tag = "icon-gwall_space (NORTH)"},/area/shuttle/administration/centcom)
+"bcK" = (/obj/machinery/smartfridge/chemistry,/obj/structure/table/reinforced,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom)
+"bcL" = (/turf/simulated/shuttle/wall{dir = 10; icon_state = "wall3_wall"; tag = "icon-swall (NORTHWEST)"},/area/shuttle/administration/centcom)
+"bcM" = (/turf/simulated/shuttle/wall{tag = "icon-gwall_floor (WEST)"; icon_state = "gwall_floor"; dir = 8},/area/shuttle/administration/centcom)
+"bcN" = (/turf/simulated/shuttle/wall{dir = 2; icon_state = "wall3_t"},/area/shuttle/administration/centcom)
(1,1,1) = {"
-aaaaabaacaadaaeaafaagaahaaaaaiaajaakaalaamaanaaoaagaafaajaacaadaahaakaaeaamaaiaaoaalaahaajaapaaqaaraasaataauaavaawaaxaayaaaaabaacaadaaeaafaagaahaaaaaiaajaakaalaamaanaaoaagaafaajaacaadaahaakaazaaAaaBaaCaaDaaEaaFaaGaaHaaIaaJaaKaaLaaMaaNaaOaaAaaBaaCaaDaaEaaFaaGaaHaaIaaJaazaaAaaBaaCaaDaaEaaFaaGaaHaaIaaJaaKaaLaaMaaNaaOaaAaaBaaCaaDaaEaaFaaGaaHaaIaaJaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaQaaQaaQaaQaaQaaQaaQaaQaaQaaQaaQaaQaaQaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaRaaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaRaaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaRaaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaRaaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaRaaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaRaaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaRaaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaR
-aajaaTaaUaaVaaWaaXaaYaaZabaabbabcabdabeabfabgabhaaYaaXabcaaUaaVaaZabdaaWabfabbabhabeaaZabcaabaauaavaawabiabjabkablabmabeaaXabfaaZabcabbabhabeaaXabfaaZabcabbabhabhabeaaXabfaaZabcabbabhabhabmaazaaEabnaboabpaaqaaraasaataauaavaawabiabjabkablabqabnaboabpaaqaaraasaataauaaNaazaaEabnaboabpaaqaaraasaataauaavaawabiabjabkablabqabnaboabpaaqaaraasaataauaaNaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaQabrabsaaQabrabsaaQabrabsaaQabrabsaaQaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPabtabuabuabuabvabuabuabuabuabuabuabwabxabyabxabyabxabxabyabxabyabxabwabzabAabAabAabAabAabAabAabAabAabwabBabCabDabDabDabDabDabDabDabDabwabEabEabEabEabEabEabEabEabEabEabwabFabFabFabFabFabFabFabFabFabFabwabGabHabIabJabKabKabKabKabKabLabM
-aamaaWabbabeaaZabgaaUaaYabcaaXabfabaabhaaVabdaaTaaUabgabfabbabeaaYabaaaZaaVaaXaaTabhaaYabfaaeaaraasaataauaavaawabiabNabhabgaaVaaYabfaaXaaTabhabgaaVaaYabfaaXaaTaaTabhabgaaVaaYabfaaXaaTaaTabNaazaaBabkablabqabnaboabpaaqaaraasaasaataauaavabiabjabkablabqabnaboabpaaqaaraaKaazaaBabkablabqabnaboabpaaqaaraasaasaataauaavabiabjabkablabqabnaboabpaaqaaraaKaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaQaaQaaQaaQaaQaaQaaQaaQaaQaaQaaQaaQaaQaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPabtabuabuabuabuabuabuabuabuabOabuabwabPabQabPabQabPabQabPabQabPabQabwabRabRabRabRabRabRabRabRabRabRabwabBabSabTabTabTabTabTabTabTabTabwabEabUabEabEabEabEabEabEabUabEabwabFabFabFabFabFabFabFabFabFabFabwabGabHabIabVabWabWabWabWabWabXabM
-aadaaZaaXabhaaYabdabbaaUabfaaUaaVabcaaTabeabaaaWabbabdaaVaaXabhaaUabcaaYabeabgaaWaaTaaUaaVaahabiabjabkablabqabnaboabYaaTabdabeaaUaaVabgaaWaaTabdabeaaUaaVabgaaWaaWaaTabdabeaaUaaVabgaaWaaWabYaazaaHaaqaaraasaauaauaavaawabiabjaawabiabjabkaboabpaataaraasaataauaavaawabiaaBaazaaHaaqaaraasaauaauaavaawabiabjaawabiabjabkaboabpaataaraasaataauaavaawabiaaBaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaQabrabsaaQabrabsaaQabrabsaaQabrabsaaQaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPabtabuabOabuabuabuabuabuabuabuabuabwabQabPabZacaacbacaacbaccabQabPabwabRabRabRabRabRabRabRabRabRabRabwabBacdabTabDaceabDabTacfacgachabwabEabEabEabEabEabEabEabEabEabEabwabFabFabFabFabFabFabFabFabFabFabwabGabGaciabVabWabWabWabWabWabXabM
-aalaaYabgaaTaaUabaaaXabbaaVabbabeabfaaWabhabcaaZaaXabaabeabgaaTabbabfaaUabhabdaaZaaWabbabeaagaboabpaaqaaraasaataauacjabfaaUabaaaTabdaaYaaVabfaaUabaaaTabdaaYaaVaaVaaWaaUabaaaTabdaaYaaVaaVacjaazaaNaawabiabjabkablabqabnaboabpaataauaavaawaauaavaawabiabjabkablabqabnaboaaHaazaaNaawabiabjabkaaDaaEaaFaaGaaHaaLaaMaaNaaOaaMaaNaaOaaAaaBabkablabqabnaboaaHaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaQaaQaaQaaQaaQaaQaaQaaQaaQaaQaaQaaQaaQaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPabtabuabuabuabuabuabvabuabuabuabuabwabQabPackaclacmacmacnacoacbacaabwacpacpacpacpacpacpacpacpacpacqabwabBacdacracsactacuacvacwacxacyabwabEabEabEabUabEabEabUabEabEabEabwabFabFabFabFabFabFabFabFabFabFabwabGabHabIabVabWabWabWabWabWabXabM
-aaoaaUabdaaWabbabcabgaaXabeaaXabhaczacAacBacCabYacDacEacFacGaaWaaXaaVabbaaTabaaaYaaZaaXabhaacabiabjabkablabqabnaboacHabeaaXabfaaZabcabbabhaaVabbabcaaWabaaaUabeabeaaVabbabcaaWabaaaUabeabeacHaazaaHaaqaaraasaataauaavaawabiabjabkablabqabnaboabpaaqaaraasaataauaavaawabiaaBaazaaHaaqaaraasaaLaaMawHaxLaxIaxZaxYaybayaayeaycayrayfaysaaKaaLaaMaavaawabiaaBaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPabtabuabuabvabuabuabuabvabuabuabuabwabPabQacIacnacJacJacnacnacnacnabwacKacKacLacMacMacMacMacNacKacOabwabBacdacPacQacQacQacRacwacSacTabwabEabEabEabEabEabEabEabEabEabEabwabFabFabFabFabFabFabFabFabFabFabwabGabHabIabVabWabWabWabWabWabXabM
-aababbabaaaZaaXabfabdabgabhabgacCacUacVacVacVacVacVacVacVacFacEaaWabeaaXaaWabcaaUaaYabgaaTaaiaasaataauaavaawabiabjabmabhabgaaVaaYabfaaXaaTabeaaXabfaaZabcabbabhabhabeaaXabfaaZabcabbabhabhabmaazaaCablabqabnaboacWacXacXacYacZacWacXacYacWacXacYacYacYabnaboabpaaqaaraasaaLaazaaCablabqaaFaaGayfaysaysaytayJayfaysaytayfaysaytaytaytayeaycaaHaaIaaraasaaLaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPabtabuabuabuabuabuabuabuabuabuabuabwabPabQacIacnacJacJacnacnacnacnabwacKacKadaadbadbadbadbadcacKacOabwabBacdaddadeadfadeadgacwacSacTabwabEabEabEabEabEabEabEabEabEabEabwabFabFabFabFabFabFabFabFabFabFabwabGabHabIadhabWabWabWabWabWadiabM
-aaeaaXabcaaYabgaaVabaabdaaTadjadkacVacVacVacVacVacVacVacVacVacDadlabhabgaaZabfabbaaUabdaaWaafabqabnaboabpaaqaaraasabNaaTabdabeaaUaaVabgaaWaaWabeaaXabfaaZabcabbabhabhaaXabfaaZabcabbabhabhabNaazaaLaauaavaawabiadmadnadnadoadpadqadradsadtaduadvadvacYadmabiabjabkablabqaaFaazaaLaauaaNaaOaxIayaayJayJayKawHaxLaxIaxZaxYaybayaayaaytayaaxIaxZaaCablabqaaFaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPabtabuabuabuabuabuabOabuabuabuabvabwabQabPackaclacmacmacnadwadxadyabwacKacKadaadbadbadbadbadcacKacOabwabBacdadzadAadfadAadBacwacSacTabwabEabEabEabUabEabEabUabEabEabEabwabFabFabFabFabFabFabFabFabFabFabwabGabHabIadhabWabWabWabWabWadiabM
-aahabgabfaaUabdabeabcabaaaWaczacVacVacVacVacVacVacVacVacVacVacVabmaaTabdaaYaaVaaXabbabaaaZaanabpaaqaaraasaataauaavabYabfaaUabaaaTabdaaYaaVadCadDadEadFadGadHadIadJadKabgaaVaaYabfaaXaaTaaTabYaazaaOabiabjabkabladLadMadMadNadOadOadnadoadpadradsadsadsadmablabqabnaboabpaaIaazaaOabiaaBaxYaybaxLayfayfaysaytaytayJayKawHaxIaxZaxZaxZayaaybayaaaFaboabpaaIaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPabtabuabuabOabuabuabuabuabuabuabuabwabQabPadPadyadxadyadxadQabQabPabwacKacKadaadbadbadbadbadcacKacOabwabBadRadSadfadfadfadTacwacSacTabwabEabEabEabEabEabEabEabEabEabEabwabFabFabFabFabFabFabFabFabFabFabwabGabGadUadhabWabWabWabWabWadiabM
-aagabdaaVabbabaabhabfabcaaZacUacVacVacVacVacVacVacVacVacVacVacVacGaaWabaaaUabeabgaaXabcaaYaakabkablabqabnaboabpaaqacjaaVabbabcaaWabaaaUabeadVadWadXadYadZaeaaebaebadKabdabeaaUaaVabgaaWaaWacjaazaaJaasaataauaavadmadqadqadradsadqadradsadtaecaedaedaedaeeaavaawabiabjabkaaDaazaaJaasaaLayKawHayaaxLaxLaxIaxZaxLaxIaxZaxYaycayrayrayraysawHaxLaaAabjabkaaDaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPabtabuabuabuabuabuabuabuabuabuabuabwabPabQabPabQabPabQabPabQabQabPabwacKacKaefaegaegaegaegaehacKaeiabwabBacdadzadAadAadAadBacwaejaekabwabEabUabEabEabEabEabEabEabUabEabwabFabFabFabFabFabFabFabFabFabFabwabGabHabIadhabWabWabWabWabWadiabM
-aacabaabeaaXabcaaTaaVabfaaYacCacVacVacVacVacVacVacVacVacVacVacVaaxaaZabcabbabhabdabgabfaaUaaaaataauaavaawabiabjabkacHaaUaaVaaZabdaaWabfaeladJaemaenaeoadXadWaepaepadHaelaaVaaZabdaaWabfabbacHaazaaDabqabnaboabpaeqaeraeraecaedadnadoadpadqadoadpadpadpaesabpaaqaaraasaataaMaazaaDabqaaFaycayraycayeayeaycayrayJayKawHaxLayKawHawHawHayJayrayfaaJaasaataaMaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPabtabvabuabuabuabOabuabuabuabuabOabwabxabyabxabyabxabxabyabxabyabxabwaetacKacKacKacKacKacKacKacKaeuabwabBabCaevaewaewaewaexacwabDabDabwabEabEabEabEabEabEabEabEabEabEabwabFabFabFabFabFabFabFabFabFabFabwabGabHabIaeyaezaezaezaezaezaeAabM
-aaiabcabhabgabfaaWabeaaVaaUadkacVacVacVacVacVacVacVacVacVacVacVacEaaYabfaaXaaTabaabdaaVabbaajabjabkablabqabnaboabpabNabbabeaaYabaaaZaaVaeBaenaeaadZaeCaeDaeEaeFaeFaenaeBabeaaYabaaaZaaVaaXaaxaazaaIaaraasaataauaeGadqadqadradsadtaduadvaeraecaedaedacYaeHaauaavaawabiabjaaCaazaaIaaraaKayJayKaxIaxLaxLaxIaxZaxYaybayaayeaycayraaHaaKaaFaaMaaNaaOabiabjaaCaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaRaeIaeIaeIaeIaeIaeIaeIaeIaeIaeIaaRaeIaeIaeIaeIaeIaeIaeIaeIaeIaeIaaRaeIaeIaeIaeIaeIaeIaeIaeIaeIaeIaaRaeJaeJaeJaeJaeJaeJaeJaeJaeJaeJaaRaeJaeJaeJaeJaeJaeJaeJaeJaeJaeJaaRaeJaeJaeJaeJaeJaeJaeJaeJaeJaeJaaRaeJaeJaeJaeJaeJaeJaeJaeJaeJaeJaaR
-aafabfaaTabdaaVaaZabhabeabbaeKacVacVacVacVacVacVacVacVacVacVacVaeLaaUaaVabgaaWabcabaabeaaXaamaaraasaataauaavaawabiabYaaXabhaaUabcaaYabeaeMadYaepaeaaeoaebadWadZaebaeFaeMabhaaUabcaaYabeabgabmaazaaBabkablabqabnaeNaeqaeqaeOacWacXacYaeqaeOacWacXacXacXabqabnaboabpaaqaaraaKaazaaBabkaaDaaEayeayeaycaycayrayfaysaytaycayrayfaysaaJaarabqabnaboabpaaqaaraaKaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPabtaePaePaePaePaePaePaePaePaePaePabwaeQaeQaeQaeQaeQaeQaeQaeQaeQaeQabwaeRaeRaeRaeRaeRaeRaeRaeRaeRaeSabwaeTaeUaeVaeWaeXaeWaeYaeZaeXaeZabwafaafaafaafaafaafaafaafaafaafaabwafbafcafdafeaffaffaffaffaffafgabwafhafhafiafiafiafiafiafiafiafiabM
-aanaaVaaWabaabeaaYaaTabhafjafkacVacVacVacVacVacVacVacVacVacVacVaflacHabeabdaaZabfabcabhabgaadaavaawabiabjabkablabqacjabgaaTabbabfaaUabhafmaenaeaadZaeCaeDaeEaeFaepaebafmaaTabbabfaaUabhabdabNaazaaFaboabpaaqaaraasaataauaavaasabkablabqabnabiabnaboabpaaqaaraasaataauaavaaOaazaaFaboaaHayfaysaytayJayKawHaytaxYaybayaayeaxIayeaaGaaHaaIaaJaaKaaLaauaavaaOaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPabtaePaePaePafnaePaePaePaePafnaePabwaeQafoaeQaeQaeQaeQafoaeQaeQaeQabwaeRaeRafpafqafqafqafraeRaeRaeRabwaeTaeUaeVafsaftafsaftafuaftafuabwafaafaafvafaafaafaafaafaafaafaabwafbafcafdafwafxafxafxafxafxafyabwafiafiafiafiafzafzafzafiafiafiabM
-aakabeaaZabcabhaaUaaWaaTadjacVacVacVacVacVacVacVacVacVacVacVacVacVaayabhabaaaYaaTaaVaaWabaaaoablabqabnaboabpaaqaaracHabdaaWaaXaaVabbaaTafAaeFadWadXadYadZaeaaebaeCaepafAaaWaaXaaVabbaaTabaabYaazaaKaataauaavabqacXacXacXacYacZacWacXacYacWacXacYacYacZaavaawabiabjabkablaaEaazaaKaataaMawHayaaysaysaysaytayJayfaysaytayfaysaytaytayJawHaxLaxIaaBabkablaaEaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPabtaePaePaePaePaePaePaePaePaePaePabwaeQaeQaeQaeQaeQaeQaeQaeQafBaeQabwaeRaeRafCafCafCafCafCaeRaeRaeRabwaeTaeTafDafsaftaeXaeXaeXaftafuabwafaafaafaafaafaafaafEafFafaafaabwafbafbafGafwafxafxafxafxafxafyabwafiafiafiafHafIafIafIafiafiafiabM
-aaaabhaaYabfaaTabbaaZaaWafJacVacVacVacVacVacVacVacVacVacVacVacVacVacDaaTabcaaUabeabeaaZabcaababnaboabpaaqaaraasaataaxabaaaZabgabeaaXaaWafKaebaemaenaeoadXadWaepaenadXafKaaZabgabeaaXaaWabcaaxaazaaMaavaawabiadmacWafLafLafMafNafOafPafQafRafSafTafTadmabiabjabkablabqabnaaGaazaaMaavaaOaxIayaayfayJayJayKawHaxLaxIaxZaxYaybayaayaayaaxIaxZaxYaaDabqabnaaGaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPabtaePafnaePaePaePaePafnaePaePaePabwaeQaeQafUaeQafBaeQaeQaeQaeQaeQabwafVafVafVafVafVafVafVafVafVafWabwaeTaeUaeVafsaftaftaftaftaftafuabwafaafaafaafaafXafaafaafaafaafaabwafbafcafdafwafxafxafxafxafxafyabwafiafzafYafZagaagaagbagcafzafiabM
-aajaaTaaUaaVaaWaaXaaYaaZaczacVacVacVacVacVacVacVacVacVacVacVacVacVacGaaWabfabbabhabhaaYabfaaeaawabiabjabkablabqabnabmabcaaYabdabhabgaaZagdaepageaeFaeEaenaemaeCaeFaenagdaaYabdabhabgaaZabfabmaazaaGabpaaqaaradLagfagfagfaggaghaghafLafMafNafPafQafQadmaaraasaataauaavaawaaAaazaaGabpaaIaysaxLayfayfayfaysaytaytayJayKawHaxIaxZaxZayaaysaytayJaaMaavaawaaAaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPabtaePaePaePaePaePaePaePaePaePaePabwaeQaeQaeQagiaeQaeQaeQaeQagiaeQabwagjagkaglaglaglaglaglagmafVafWabwaeTaeUaeVagnagoagoagpagoagoagqabwafaafaafaafaafaafaafaagrafaafaabwafbafcafdagsagtagtagtagtagtaguabwafiafzafYagvagwagxagyagcafzafiabM
-aamaaWabbabeaaZabgaaUaaYacUacVacVacVacVacVacVacVacVacVacVacVacVacVaaxaaZaaVaaXaaTaaTaaUaaVaahabqabnaboabpaaqaaraasabNabfaaUabaaaTabdaaYagzaeCaeDaebaeaaeFageadYaebaeFagzaaUabaaaTabdaaYaaVabNaazaaLaauaavaawadmafOafOafOafPafQafOafPafQafRagAagBagBaeeaawabiabjabkablabqaaFaazaaLaauaaNaaOayaaxLaxLaxLaxIaxZaxLaxIaxZaxYaycayrayraysaxLaxIaxZaaCablabqaaFaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPabtaePaePaePaePaePaePaePaePaePaePabwaeQaeQaeQaeQaeQaeQaeQaeQaeQaeQabwagjagCagDagDagDagDagDagEafVafWabwaeTaeUaeVagFagGagGagGagGagGagHabwafaafaafaafaafaafaafaafaafaafaabwafbafcafdagIagJagJagJagJagJagKabwafiafzafYagvagLagMagyagcafzafiabM
-aadaaZaaXabhaaYabdabbaaUacCacVacVacVacVacVacVacVacVacVacVacVacVacVacEaaYabeabgaaWaaWabbabeaagaasaataauaavaawabiabjabYaaVabbabcaaWabaaaUadHadCadDadEadFadGadHadIadJadKadHabbabcaaWabaaaUabeabYaazaaCablabqabnaeqagNagNagNagAagBafLafMafNafOafMafNafNaesabnaboabpaaqaaraasaaLaazaaCablabqaaFaaGayeayeayeaycayrayJayKawHaxLayKawHawHayJayeaycaaHaaIaaraasaaLaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPabtaePaePaePafnaePaePaePaePafnaePabwaeQaeQaeQaeQafoaeQafUaeQaeQafoabwafVagCagDagDagDagDagDagEafVafWabwaeTaeUaeVagOaftaftaftaftaftagPabwafaafaafaafaafaafaafaafaafaafaabwafbafcafdagQafxafxafxafxafxagRabwafiafzafYagbagSagSagTagcafzafiabM
-aalaaYabgaaTaaUabaaaXabbadkacVacVacVacVacVacVacVacVacVacVacVacVacVaeLaaUabhabdaaZaaZaaXabhaacabkablabqabnaboabpaaqacjabeaaXabfaaZabcabbabhabhabeaaXabfaaZabcabbabhabeabeaaXabfaaZabcabbabhacjaazaaJaasaataauaeGaeNafOafOafPafQafRafSafTagNagAagBagBaeHaauaavaawabiabjabkaaDaazaaJaasaataauaaAaaFaxLaxLaxIaxZaxYaybayaayeaycayrayrayeaaMaaNaaOabiabjabkaaDaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPabtaePaePaePaePaePaePaePaePaePaePabwagUaeQaeQaeQaeQagUaeQaeQaeQaeQabwafVagCagDagDagDagDagDagVafVafWabwaeTaeTagWagOaftagXagXagXaftagPabwagYagYagYagYagYagYagYagYagYagYabwafbafbagZagQafxafxafxafxafxagRabwafiafiafiahaahaahaahbafiafiafiabM
-aaoaaUabdaaWabbabcabgaaXaeKacVacVacVacVacVacVacVacVacVacVacVacVacVaflabbaaTabaaaYaaYabgaaTaaiaauaavaawabiabjabkablacHabhabgaaVaaYabfaaXaaTaaTabhabgaaVaaYabfaaXaaTabhabhabgaaVaaYabfaaXaaTacHaazaaEabnaboabpabqaeqaeqaeqaeOacWacXacYaeqaeOacWacXacXacYabpaaqaaraasaataauaaNaazaaEabnaboabpabqaaGaaGaaGaaHaaIaaJaaKaaGaaHaaIaaJaaJaaKaaHaaqaaraasaataauaaNaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPabtaePafnaePaePaePaePafnaePaePaePabwaeQagiaeQafUaeQaeQagiaeQafUaeQabwafVahcahdahdahdahdahdaheafVafWabwaeTaeUaeVagOaftagOaftagPaftagPabwahfahfahfahfahfahfahfahfahfahfabwafbafcafdagQafxafxafxafxafxagRabwafiafiafiafzafzafzafiafiafiafiabM
-aababbabaaaZaaXabfabdabgafkacVacVacVacVacVacVacVacVacVacVacVacVacVahgaaXaaWabcaaUaaUabdaaWaafabpaaqaaraasaataauaavabmaaTabdabeaaUaaVabgaaWaaWaaTabdabeaaUaaVabgaaWaaTaaTabdabeaaUaaVabgaaWabmaazaaOabiabjabkablabqabnaboabpaaqaaraasaataauaavaawabiabjabkablabqabnaboabpaaIaazaaOabiabjabkablabqabnaboabpaaqaaraasaataauaavaawabiabjabkablabqabnaboabpaaIaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPabtaePaePaePaePaePaePaePaePaePaePabwaeQaeQaeQaeQagUaeQaeQaeQaeQagUabwafVafVafVafVafVafVafVafVafVafWabwaeTaeUaeVahhagXahhahiahjagXahjabwahfahfahfahfahfahfahfahfahfahfabwafbafcafdahkahlahlahlahlahlahmabwafiafiafiafiafiafiafiafiahnahnabM
-aaeaaXabcaaYabgaaVabaabdacBacVacVacVacVacVacVacVacVacVacVacVacVacVacFabgaaZabfabbabbabaaaZaanabnaboabpaaqaaraasaatabNaaWabaabhabbabeabdaaZaaVabfaaUabaaaTabdaaYaaVabfaaWabaabhabbabeabdaaZabNaazaaMaavaawabiabjabkablabqabnaboabpaaqaaraasaataauaavaawabiabjabkablabqabnaaGaazaaMaavaawabiabjabkablabqabnaboabpaaqaaraasaataauaavaawabiabjabkablabqabnaaGaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaRahoahoahoahoahoahoahoahoahoahoaaRahoahoahoahoahoahoahoahoahoahoaaRahoahoahoahoahoahoahoahoahoahoaaRahoahoahoahoahoahoahoahoahoahoaaRahoahoahoahoahoahoahoahoahoahoaaRahoahoahoahoahoahoahoahoahoahoaaRahoahoahoahoahoahoahoahoahoahoaaR
-aahabgabfaaUabdabeabcabaahpacVacVacVacVacVacVacVacVacVacVacVacVacVahqabdaaYaaVaaXaaVaaWabaaapaavaawabiabjabkablabqabYaaZabcaaTaaXabhabaaaYabeaaVabbabcaaWabaaaUabeaaVaaZabcaaTaaXabhabaaaYabYaazaaFaboabpaaqaaraasaataauaavaawabiabjabkablabqabnaboabpaaqaaraasaataauaavaaOaazaaFaboabpaaqaaraasaataauaavaawabiabjabkablabqabnaboabpaaqaaraasaataauaavaaOaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP
-aagabdaaVabbabaabhabfabcacAacVacVacVacVacVacVacVacVacVacVacVacVacVabmabaaaUabeabgaaVaaWabaaaoabjabkablabqabnaboabpacjaaYabfaaWabgaaTabcaaUabhabeaaXabfaaZabcabbabhabeaaYabfaaWabgaaTabcaaUacjaazaaIaaraasaataauaavaawabiabjabkablabqabnaboabpaaqaaraasaataauaavaawabiabjaaCaazaaIaaraasaataauaavaawabiabjabkablabqabnaboabpaaqaaraasaataauaavaawabiabjaaCaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP
-aacabaabeaaXabcaaTaaVabfahracVacVacVacVacVacVacVacVacVacVacVacVacVabNabcabbabhabdabeaaZabcaabaataauaavaawabiabjabkaayaayaaaaabaacaadaaeaafaagaahaaaaaiaajaakaalaamaanaaoaagaafaajaacaadaahaakaazaaDaaEaaFaaGaaHaaIaaJaaKaaLaaMaaNaaOaaAaaBaaCaaDaaEaaFaaGaaHaaIaaJaaKaaLaaMaazaaDaaEaaFaaGaaHaaIaaJaaKaaLaaMaaNaaOaaAaaBaaCaaDaaEaaFaaGaaHaaIaaJaaKaaLaaMaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPahsahsahsahsahsahsahsahsahsahsahsahsahsahsahsahsahsahsahsahsahsahsaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP
-aaiabcabhabgabfaaWabeaaVahracVacVacVacVacVacVacVacVacVacVacVacVacVabNabfaaXaaTabaabhaaYabfaaeaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPahsahtahuahvahwahxahyahsahzahAahAahAahAahAahsahBahCahBahCahBahCahsaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP
+aaaaabaacaadaaeaafaagaahaaaaaiaajaakaalaamaanaaoaagaafaajaacaadaahaakaaeaamaaiaaoaalaahaajaapaaqaaraasaataauaavaawaaxaayaaaaabaacaadaaeaafaagaahaaaaaiaajaakaalaamaanaaoaagaafaajaacaadaahaakaazaaAaaBaaCaaDaaEaaFaaGaaHaaIaaJaaKaaLaaMaaNaaOaaAaaBaaCaaDaaEaaFaaGaaHaaIaaJaazaaAaaBaaCaaDaaEaaFaaGaaHaaIaaJaaKaaLaaMaaNaaOaaAaaBaaCaaDaaEaaFaaGaaHaaIaaJaazaaAaaBaaCaaDaaEaaFaaGaaHaaIaaJaaKaaLaaMaaNaaOaaAaaBaaCaaDaaEaaFaaGaaHaaIaaJaazaaPaaPaaQaaQaaQaaQaaQaaQaaQaaQaaQaaQaaQaaQaaQaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaRaaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaRaaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaRaaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaRaaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaRaaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaRaaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaRaaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaR
+aajaaTaaUaaVaaWaaXaaYaaZabaabbabcabdabeabfabgabhaaYaaXabcaaUaaVaaZabdaaWabfabbabhabeaaZabcaabaauaavaawabiabjabkablabmabeaaXabfaaZabcabbabhabeaaXabfaaZabcabbabhabhabeaaXabfaaZabcabbabhabhabmaazaaEabnaboabpaaqaaraasaataauaavaawabiabjabkablabqabnaboabpaaqaaraasaataauaaNaazaaEabnaboabpaaqaaraasaataauaavaawabiabjabkablabqabnaboabpaaqaaraasaataauaaNaazaaEabnaboabpaaqaaraasaataauaavaawabiabjabkablabqabnaboabpaaqaaraasaataauaaNaazaaPaaPaaQabrabsaaQabrabsaaQabrabsaaQabrabsaaQaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPabtabuabuabuabvabuabuabuabuabuabuabwabxabyabxabyabxabxabyabxabyabxabwabzabAabAabAabAabAabAabAabAabAabwabBabCabDabDabDabDabDabDabDabDabwabEabEabEabEabEabEabEabEabEabEabwabFabFabFabFabFabFabFabFabFabFabwabGabHabIabJabKabKabKabKabKabLabM
+aamaaWabbabeaaZabgaaUaaYabcaaXabfabaabhaaVabdaaTaaUabgabfabbabeaaYabaaaZaaVaaXaaTabhaaYabfaaeaaraasaataauaavaawabiabNabhabgaaVaaYabfaaXaaTabhabgaaVaaYabfaaXaaTaaTabhabgaaVaaYabfaaXaaTaaTabNaazaaBabkablabqabnaboabpaaqaaraasaasaataauaavabiabjabkablabqabnaboabpaaqaaraaKaazaaBabkablabqabnaboabpaaqaaraasaasaataauaavabiabjabkablabqabnaboabpaaqaaraaKaazaaBabkablabqabnaboabpaaqaaraasaasaataauaavabiabjabkablabqabnaboabpaaqaaraaKaazaaPaaPaaQaaQaaQaaQaaQaaQaaQaaQaaQaaQaaQaaQaaQaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPabtabuabuabuabuabuabuabuabuabOabuabwabPabQabPabQabPabQabPabQabPabQabwabRabRabRabRabRabRabRabRabRabRabwabBabSabTabTabTabTabTabTabTabTabwabEabUabEabEabEabEabEabEabUabEabwabFabFabFabFabFabFabFabFabFabFabwabGabHabIabVabWabWabWabWabWabXabM
+aadaaZaaXabhaaYabdabbaaUabfaaUaaVabcaaTabeabaaaWabbabdaaVaaXabhaaUabcaaYabeabgaaWaaTaaUaaVaahabiabjabkablabqabnaboabYaaTabdabeaaUaaVabgaaWaaTabdabeaaUaaVabgaaWaaWaaTabdabeaaUaaVabgaaWaaWabYaazaaHaaqaaraasaauaauaavaawabiabjaawabiabjabkaboabpaataaraasaataauaavaawabiaaBaazaaHaaqaaraasaauaauaavaawabiabjaawabiabjabkaboabpaataaraasaataauaavaawabiaaBaazaaHaaqaaraasaauaauaavaawabiabjaawabiabjabkaboabpaataaraasaataauaavaawabiaaBaazaaPaaPaaQabrabsaaQabrabsaaQabrabsaaQabrabsaaQaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPabtabuabOabuabuabuabuabuabuabuabuabwabQabPabZacaacbacaacbaccabQabPabwabRabRabRabRabRabRabRabRabRabRabwabBacdabTabDaceabDabTacfacgachabwabEabEabEabEabEabEabEabEabEabEabwabFabFabFabFabFabFabFabFabFabFabwabGabGaciabVabWabWabWabWabWabXabM
+aalaaYabgaaTaaUabaaaXabbaaVabbabeabfaaWabhabcaaZaaXabaabeabgaaTabbabfaaUabhabdaaZaaWabbabeaagaboabpaaqaaraasaataauacjabfaaUabaaaTabdaaYaaVabfaaUabaaaTabdaaYaaVaaVaaWaaUabaaaTabdaaYaaVaaVacjaazaaNaawabiabjabkablabqabnaboabpaataauaavaawaauaavaawabiabjabkablabqabnaboaaHaazaaNaawabiabjabkaaDaaEaaFaaGaaHaaLaaMaaNaaOaaMaaNaaOaaAaaBabkablabqabnaboaaHaazaaNaawabiabjabkablabqabnaboabpaataauaavaawaauaavaawabiabjabkablabqabnaboaaHaazaaPaaPaaQaaQaaQaaQaaQaaQaaQaaQaaQaaQaaQaaQaaQaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPabtabuabuabuabuabuabvabuabuabuabuabwabQabPackaclacmacmacnacoacbacaabwacpacpacpacpacpacpacpacpacpacqabwabBacdacracsactacuacvacwacxacyabwabEabEabEabUabEabEabUabEabEabEabwabFabFabFabFabFabFabFabFabFabFabwabGabHabIabVabWabWabWabWabWabXabM
+aaoaaUabdaaWabbabcabgaaXabeaaXabhaczacAacBacCabYacDacEacFacGaaWaaXaaVabbaaTabaaaYaaZaaXabhaacabiabjabkablabqabnaboacHabeaaXabfaaZabcabbabhaaVabbabcaaWabaaaUabeabeaaVabbabcaaWabaaaUabeabeacHaazaaHaaqaaraasaataauaavaawabiabjabkablabqabnaboabpaaqaaraasaataauaavaawabiaaBaazaaHaaqaaraasaaLaaMawHaxLaxIaxZaxYaybayaayeaycayrayfaysaaKaaLaaMaavaawabiaaBaazaaHaaqaaraasaataauaavaawabiabjabkablabqabnaboabpaaqaaraasaataauaavaawabiaaBaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPabtabuabuabvabuabuabuabvabuabuabuabwabPabQacIacnacJacJacnacnacnacnabwacKacKacLacMacMacMacMacNacKacOabwabBacdacPacQacQacQacRacwacSacTabwabEabEabEabEabEabEabEabEabEabEabwabFabFabFabFabFabFabFabFabFabFabwabGabHabIabVabWabWabWabWabWabXabM
+aababbabaaaZaaXabfabdabgabhabgacCacUacVacVacVacVacVacVacVacFacEaaWabeaaXaaWabcaaUaaYabgaaTaaiaasaataauaavaawabiabjabmabhabgaaVaaYabfaaXaaTabeaaXabfaaZabcabbabhabhabeaaXabfaaZabcabbabhabhabmaazaaCablabqabnaboacWacXacXacYacZacWacXacYacWacXacYacYacYabnaboabpaaqaaraasaaLaazaaCablabqaaFaaGayfaysaysaytayJayfaysaytayfaysaytaytaytayeaycaaHaaIaaraasaaLaazaaCablabqabnaboaaqaaraaraasaataaqaaraasaaqaaraasaasaasabnaboabpaaqaaraasaaLaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPabtabuabuabuabuabuabuabuabuabuabuabwabPabQacIacnacJacJacnacnacnacnabwacKacKadaadbadbadbadbadcacKacOabwabBacdaddadeadfadeadgacwacSacTabwabEabEabEabEabEabEabEabEabEabEabwabFabFabFabFabFabFabFabFabFabFabwabGabHabIadhabWabWabWabWabWadiabM
+aaeaaXabcaaYabgaaVabaabdaaTadjadkacVacVacVacVacVacVacVacVacVacDadlabhabgaaZabfabbaaUabdaaWaafabqabnaboabpaaqaaraasabNaaTabdabeaaUaaVabgaaWaaWabeaaXabfaaZabcabbabhabhaaXabfaaZabcabbabhabhabNaazaaLaauaavaawabiadmadnadnadoadpadqadradsadtaduadvadvacYadmabiabjabkablabqaaFaazaaLaauaaNaaOaxIayaayJayJayKawHaxLaxIaxZaxYaybayaayaaytayaaxIaxZaaCablabqaaFaazaaLaauaavaawabiabqaataataauaavaawabiabjabkablabqabqaasabqabiabjabkablabqaaFaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPabtabuabuabuabuabuabOabuabuabuabvabwabQabPackaclacmacmacnadwadxadyabwacKacKadaadbadbadbadbadcacKacOabwabBacdadzadAadfadAadBacwacSacTabwabEabEabEabUabEabEabUabEabEabEabwabFabFabFabFabFabFabFabFabFabFabwabGabHabIadhabWabWabWabWabWadiabM
+aahabgabfaaUabdabeabcabaaaWaczacVacVacVacVacVacVacVacVacVacVacVabmaaTabdaaYaaVaaXabbabaaaZaanabpaaqaaraasaataauaavabYabfaaUabaaaTabdaaYaaVadCadDadEadFadGadHadIadJadKabgaaVaaYabfaaXaaTaaTabYaazaaOabiabjabkabladLadMadMadNadOadOadnadoadpadradsadsadsadmablabqabnaboabpaaIaazaaOabiaaBaxYaybaxLayfayfaysaytaytayJayKawHaxIaxZaxZaxZayaaybayaaaFaboabpaaIaazaaOabiabjabkablaawaaIaaIaaJaaKaaKaataauaavabiabjabjabjabqablabqabnaboabpaaIaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPabtabuabuabOabuabuabuabuabuabuabuabwabQabPadPadyadxadyadxadQabQabPabwacKacKadaadbadbadbadbadcacKacOabwabBadRadSadfadfadfadTacwacSacTabwabEabEabEabEabEabEabEabEabEabEabwabFabFabFabFabFabFabFabFabFabFabwabGabGadUadhabWabWabWabWabWadiabM
+aagabdaaVabbabaabhabfabcaaZacUacVacVacVacVacVacVacVacVacVacVacVacGaaWabaaaUabeabgaaXabcaaYaakabkablabqabnaboabpaaqacjaaVabbabcaaWabaaaUabeadVadWadXadYadZaeaaebaebadKabdabeaaUaaVabgaaWaaWacjaazaaJaasaataauaavadmadqadqadradsadqadradsadtaecaedaedaedaeeaavaawabiabjabkaaDaazaaJaasaaLayKawHayaaxLaxLaxIaxZaxLaxIaxZaxYaycayrayrayraysawHaxLaaAabjabkaaDaazaaJaasaataauaavaaEaaOaANaxJaBfaaOaaAaaBaaCaaGaaHaaHabpaaraavaawabiabjabkaaDaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPabtabuabuabuabuabuabuabuabuabuabuabwabPabQabPabQabPabQabPabQabQabPabwacKacKaefaegaegaegaegaehacKaeiabwabBacdadzadAadAadAadBacwaejaekabwabEabUabEabEabEabEabEabEabUabEabwabFabFabFabFabFabFabFabFabFabFabwabGabHabIadhabWabWabWabWabWadiabM
+aacabaabeaaXabcaaTaaVabfaaYacCacVacVacVacVacVacVacVacVacVacVacVaaxaaZabcabbabhabdabgabfaaUaaaaataauaavaawabiabjabkacHaaUaaVaaZabdaaWabfaeladJaemaenaeoadXadWaepaepadHaelaaVaaZabdaaWabfabbacHaazaaDabqabnaboabpaeqaeraeraecaedadnadoadpadqadoadpadpadpaesabpaaqaaraasaataaMaazaaDabqaaFaycayraycayeayeaycayrayJayKawHaxLayKawHawHawHayJayrayfaaJaasaataaMaazaaDabqabnaboabpaaGbaQbaQbaWbbgbaYbbtbbhaANbbtbbhaaNaavaatabpaaqaaraasaataaMaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPabtabvabuabuabuabOabuabuabuabuabOabwabxabyabxabyabxabxabyabxabyabxabwaetacKacKacKacKacKacKacKacKaeuabwabBabCaevaewaewaewaexacwabDabDabwabEabEabEabEabEabEabEabEabEabEabwabFabFabFabFabFabFabFabFabFabFabwabGabHabIaeyaezaezaezaezaezaeAabM
+aaiabcabhabgabfaaWabeaaVaaUadkacVacVacVacVacVacVacVacVacVacVacVacEaaYabfaaXaaTabaabdaaVabbaajabjabkablabqabnaboabpabNabbabeaaYabaaaZaaVaeBaenaeaadZaeCaeDaeEaeFaeFaenaeBabeaaYabaaaZaaVaaXaaxaazaaIaaraasaataauaeGadqadqadradsadtaduadvaeraecaedaedacYaeHaauaavaawabiabjaaCaazaaIaaraaKayJayKaxIaxLaxLaxIaxZaxYaybayaayeaycayraaHaaKaaFaaMaaNaaOabiabjaaCaazaaIaaraasaataauaaAaANaANaxJaBfbbwbcjbcibaQbaWbbgaaHaasabnaauaavaawabiabjaaCaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaRaeIaeIaeIaeIaeIaeIaeIaeIaeIaeIaaRaeIaeIaeIaeIaeIaeIaeIaeIaeIaeIaaRaeIaeIaeIaeIaeIaeIaeIaeIaeIaeIaaRaeJaeJaeJaeJaeJaeJaeJaeJaeJaeJaaRaeJaeJaeJaeJaeJaeJaeJaeJaeJaeJaaRaeJaeJaeJaeJaeJaeJaeJaeJaeJaeJaaRaeJaeJaeJaeJaeJaeJaeJaeJaeJaeJaaR
+aafabfaaTabdaaVaaZabhabeabbaeKacVacVacVacVacVacVacVacVacVacVacVaeLaaUaaVabgaaWabcabaabeaaXaamaaraasaataauaavaawabiabYaaXabhaaUabcaaYabeaeMadYaepaeaaeoaebadWadZaebaeFaeMabhaaUabcaaYabeabgabmaazaaBabkablabqabnaeNaeqaeqaeOacWacXacYaeqaeOacWacXacXacXabqabnaboabpaaqaaraaKaazaaBabkaaDaaEayeayeaycaycayrayfaysaytaycayrayfaysaaJaarabqabnaboabpaaqaaraaKaazaaBabkablabqabnaaFbaWbaWbbgbclbckbcmbaWbbgbclbckaaJaarabqabnaboabpaaqaaraaKaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPabtaePaePaePaePaePaePaePaePaePaePabwaeQaeQaeQaeQaeQaeQaeQaeQaeQaeQabwaeRaeRaeRaeRaeRaeRaeRaeRaeRaeSabwaeTaeUaeVaeWaeXaeWaeYaeZaeXaeZabwafaafaafaafaafaafaafaafaafaafaabwafbafcafdafeaffaffaffaffaffafgabwafhafhafiafiafiafiafiafiafiafiabM
+aanaaVaaWabaabeaaYaaTabhafjafkacVacVacVacVacVacVacVacVacVacVacVaflacHabeabdaaZabfabcabhabgaadaavaawabiabjabkablabqacjabgaaTabbabfaaUabhafmaenaeaadZaeCaeDaeEaeFaepaebafmaaTabbabfaaUabhabdabNaazaaFaboabpaaqaaraasaataauaavaasabkablabqabnabiabnaboabpaaqaaraasaataauaavaaOaazaaFaboaaHayfaysaytayJayKawHaytaxYaybayaayeaxIayeaaGaaHaaIaaJaaKaaLaauaavaaOaazaaFaboabpaaqaaraaKbaYbbtbbhbcmbbwbcjbcibaQaxJbaQaaGabpaaqaaraasaataauaavaaOaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPabtaePaePaePafnaePaePaePaePafnaePabwaeQafoaeQaeQaeQaeQafoaeQaeQaeQabwaeRaeRafpafqafqafqafraeRaeRaeRabwaeTaeUaeVafsaftafsaftafuaftafuabwafaafaafvafaafaafaafaafaafaafaabwafbafcafdafwafxafxafxafxafxafyabwafiafiafiafiafzafzafzafiafiafiabM
+aakabeaaZabcabhaaUaaWaaTadjacVacVacVacVacVacVacVacVacVacVacVacVacVaayabhabaaaYaaTaaVaaWabaaaoablabqabnaboabpaaqaaracHabdaaWaaXaaVabbaaTafAaeFadWadXadYadZaeaaebaeCaepafAaaWaaXaaVabbaaTabaabYaazaaKaataauaavabqacXacXacXacYacZacWacXacYacWacXacYacYacZaavaawabiabjabkablaaEaazaaKaataaMawHayaaysaysaysaytayJayfaysaytayfaysaytaytayJawHaxLaxIaaBabkablaaEaazaaKaataauaavabqaaJbckbckbcmbaYbclbckbcmbclbckbcmaaKaataavaawabiabjabkablaaEaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPabtaePaePaePaePaePaePaePaePaePaePabwaeQaeQaeQaeQaeQaeQaeQaeQafBaeQabwaeRaeRafCafCafCafCafCaeRaeRaeRabwaeTaeTafDafsaftaeXaeXaeXaftafuabwafaafaafaafaafaafaafEafFafaafaabwafbafbafGafwafxafxafxafxafxafyabwafiafiafiafHafIafIafIafiafiafiabM
+aaaabhaaYabfaaTabbaaZaaWafJacVacVacVacVacVacVacVacVacVacVacVacVacVacDaaTabcaaUabeabeaaZabcaababnaboabpaaqaaraasaataaxabaaaZabgabeaaXaaWafKaebaemaenaeoadXadWaepaenadXafKaaZabgabeaaXaaWabcaaxaazaaMaavaawabiadmacWafLafLafMafNafOafPafQafRafSafTafTadmabiabjabkablabqabnaaGaazaaMaavaaOaxIayaayfayJayJayKawHaxLaxIaxZaxYaybayaayaayaaxIaxZaxYaaDabqabnaaGaazaaMaavaawabiabqaaIbaYbaYbbtbbhaANaxJaBfbbwbcjbciaaEabqabiabjabkablabqabnaaGaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPabtaePafnaePaePaePaePafnaePaePaePabwaeQaeQafUaeQafBaeQaeQaeQaeQaeQabwafVafVafVafVafVafVafVafVafVafWabwaeTaeUaeVafsaftaftaftaftaftafuabwafaafaafaafaafXafaafaafaafaafaabwafbafcafdafwafxafxafxafxafxafyabwafiafzafYafZagaagaagbagcafzafiabM
+aajaaTaaUaaVaaWaaXaaYaaZaczacVacVacVacVacVacVacVacVacVacVacVacVacVacGaaWabfabbabhabhaaYabfaaeaawabiabjabkablabqabnabmabcaaYabdabhabgaaZagdaepageaeFaeEaenaemaeCaeFaenagdaaYabdabhabgaaZabfabmaazaaGabpaaqaaradLagfagfagfaggaghaghafLafMafNafPafQafQadmaaraasaataauaavaawaaAaazaaGabpaaIaysaxLayfayfayfaysaytaytayJayKawHaxIaxZaxZayaaysaytayJaaMaavaawaaAaazaaGabpaaqaaraawaaIaaIbclbckbcmaaKaaLaaMaaNaaAaaBaaBabqaaraasaataauaavaawaaAaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPabtaePaePaePaePaePaePaePaePaePaePabwaeQaeQaeQagiaeQaeQaeQaeQagiaeQabwagjagkaglaglaglaglaglagmafVafWabwaeTaeUaeVagnagoagoagpagoagoagqabwafaafaafaafaafaafaafaagrafaafaabwafbafcafdagsagtagtagtagtagtaguabwafiafzafYagvagwagxagyagcafzafiabM
+aamaaWabbabeaaZabgaaUaaYacUacVacVacVacVacVacVacVacVacVacVacVacVacVaaxaaZaaVaaXaaTaaTaaUaaVaahabqabnaboabpaaqaaraasabNabfaaUabaaaTabdaaYagzaeCaeDaebaeaaeFageadYaebaeFagzaaUabaaaTabdaaYaaVabNaazaaLaauaavaawadmafOafOafOafPafQafOafPafQafRagAagBagBaeeaawabiabjabkablabqaaFaazaaLaauaaNaaOayaaxLaxLaxLaxIaxZaxLaxIaxZaxYaycayrayraysaxLaxIaxZaaCablabqaaFaazaaLaauaavaawabqaawaaOaaOaaAaaBaaOabiabjabkaboabpabpaaraawabiabjabkablabqaaFaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPabtaePaePaePaePaePaePaePaePaePaePabwaeQaeQaeQaeQaeQaeQaeQaeQaeQaeQabwagjagCagDagDagDagDagDagEafVafWabwaeTaeUaeVagFagGagGagGagGagGagHabwafaafaafaafaafaafaafaafaafaafaabwafbafcafdagIagJagJagJagJagJagKabwafiafzafYagvagLagMagyagcafzafiabM
+aadaaZaaXabhaaYabdabbaaUacCacVacVacVacVacVacVacVacVacVacVacVacVacVacEaaYabeabgaaWaaWabbabeaagaasaataauaavaawabiabjabYaaVabbabcaaWabaaaUadHadCadDadEadFadGadHadIadJadKadHabbabcaaWabaaaUabeabYaazaaCablabqabnaeqagNagNagNagAagBafLafMafNafOafMafNafNaesabnaboabpaaqaaraasaaLaazaaCablabqaaFaaGayeayeayeaycayrayJayKawHaxLayKawHawHayJayeaycaaHaaIaaraasaaLaazaaCablabqabnaboabnabnabnaboabpaataauaavaawaauaavaavaatabnaboabpaaqaaraasaaLaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPabtaePaePaePafnaePaePaePaePafnaePabwaeQaeQaeQaeQafoaeQafUaeQaeQafoabwafVagCagDagDagDagDagDagEafVafWabwaeTaeUaeVagOaftaftaftaftaftagPabwafaafaafaafaafaafaafaafaafaafaabwafbafcafdagQafxafxafxafxafxagRabwafiafzafYagbagSagSagTagcafzafiabM
+aalaaYabgaaTaaUabaaaXabbadkacVacVacVacVacVacVacVacVacVacVacVacVacVaeLaaUabhabdaaZaaZaaXabhaacabkablabqabnaboabpaaqacjabeaaXabfaaZabcabbabhabhabeaaXabfaaZabcabbabhabeabeaaXabfaaZabcabbabhacjaazaaJaasaataauaeGaeNafOafOafPafQafRafSafTagNagAagBagBaeHaauaavaawabiabjabkaaDaazaaJaasaataauaaAaaFaxLaxLaxIaxZaxYaybayaayeaycayrayrayeaaMaaNaaOabiabjabkaaDaazaaJaasaataauabiabnaawaawabiabjabkablabqabnaboabpabpabnaauaavaawabiabjabkaaDaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPabtaePaePaePaePaePaePaePaePaePaePabwagUaeQaeQaeQaeQagUaeQaeQaeQaeQabwafVagCagDagDagDagDagDagVafVafWabwaeTaeTagWagOaftagXagXagXaftagPabwagYagYagYagYagYagYagYagYagYagYabwafbafbagZagQafxafxafxafxafxagRabwafiafiafiahaahaahaahbafiafiafiabM
+aaoaaUabdaaWabbabcabgaaXaeKacVacVacVacVacVacVacVacVacVacVacVacVacVaflabbaaTabaaaYaaYabgaaTaaiaauaavaawabiabjabkablacHabhabgaaVaaYabfaaXaaTaaTabhabgaaVaaYabfaaXaaTabhabhabgaaVaaYabfaaXaaTacHaazaaEabnaboabpabqaeqaeqaeqaeOacWacXacYaeqaeOacWacXacXacYabpaaqaaraasaataauaaNaazaaEabnaboabpabqaaGaaGaaGaaHaaIaaJaaKaaGaaHaaIaaJaaJaaKaaHaaqaaraasaataauaaNaazaaEabnaboabpabqaboaboaboabpaaqaaraasaboabpaaqaaraaraasabpaaqaaraasaataauaaNaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPabtaePafnaePaePaePaePafnaePaePaePabwaeQagiaeQafUaeQaeQagiaeQafUaeQabwafVahcahdahdahdahdahdaheafVafWabwaeTaeUaeVagOaftagOaftagPaftagPabwahfahfahfahfahfahfahfahfahfahfabwafbafcafdagQafxafxafxafxafxagRabwafiafiafiafzafzafzafiafiafiafiabM
+aababbabaaaZaaXabfabdabgafkacVacVacVacVacVacVacVacVacVacVacVacVacVahgaaXaaWabcaaUaaUabdaaWaafabpaaqaaraasaataauaavabmaaTabdabeaaUaaVabgaaWaaWaaTabdabeaaUaaVabgaaWaaTaaTabdabeaaUaaVabgaaWabmaazaaOabiabjabkablabqabnaboabpaaqaaraasaataauaavaawabiabjabkablabqabnaboabpaaIaazaaOabiabjabkablabqabnaboabpaaqaaraasaataauaavaawabiabjabkablabqabnaboabpaaIaazaaOabiabjabkablabqabnaboabpaaqaaraasaataauaavaawabiabjabkablabqabnaboabpaaIaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPabtaePaePaePaePaePaePaePaePaePaePabwaeQaeQaeQaeQagUaeQaeQaeQaeQagUabwafVafVafVafVafVafVafVafVafVafWabwaeTaeUaeVahhagXahhahiahjagXahjabwahfahfahfahfahfahfahfahfahfahfabwafbafcafdahkahlahlahlahlahlahmabwafiafiafiafiafiafiafiafiahnahnabM
+aaeaaXabcaaYabgaaVabaabdacBacVacVacVacVacVacVacVacVacVacVacVacVacVacFabgaaZabfabbabbabaaaZaanabnaboabpaaqaaraasaatabNaaWabaabhabbabeabdaaZaaVabfaaUabaaaTabdaaYaaVabfaaWabaabhabbabeabdaaZabNaazaaMaavaawabiabjabkablabqabnaboabpaaqaaraasaataauaavaawabiabjabkablabqabnaaGaazaaMaavaawabiabjabkablabqabnaboabpaaqaaraasaataauaavaawabiabjabkablabqabnaaGaazaaMaavaawabiabjabkablabqabnaboabpaaqaaraasaataauaavaawabiabjabkablabqabnaaGaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaRahoahoahoahoahoahoahoahoahoahoaaRahoahoahoahoahoahoahoahoahoahoaaRahoahoahoahoahoahoahoahoahoahoaaRahoahoahoahoahoahoahoahoahoahoaaRahoahoahoahoahoahoahoahoahoahoaaRahoahoahoahoahoahoahoahoahoahoaaRahoahoahoahoahoahoahoahoahoahoaaR
+aahabgabfaaUabdabeabcabaahpacVacVacVacVacVacVacVacVacVacVacVacVacVahqabdaaYaaVaaXaaVaaWabaaapaavaawabiabjabkablabqabYaaZabcaaTaaXabhabaaaYabeaaVabbabcaaWabaaaUabeaaVaaZabcaaTaaXabhabaaaYabYaazaaFaboabpaaqaaraasaataauaavaawabiabjabkablabqabnaboabpaaqaaraasaataauaavaaOaazaaFaboabpaaqaaraasaataauaavaawabiabjabkablabqabnaboabpaaqaaraasaataauaavaaOaazaaFaboabpaaqaaraasaataauaavaawabiabjabkablabqabnaboabpaaqaaraasaataauaavaaOaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP
+aagabdaaVabbabaabhabfabcacAacVacVacVacVacVacVacVacVacVacVacVacVacVabmabaaaUabeabgaaVaaWabaaaoabjabkablabqabnaboabpacjaaYabfaaWabgaaTabcaaUabhabeaaXabfaaZabcabbabhabeaaYabfaaWabgaaTabcaaUacjaazaaIaaraasaataauaavaawabiabjabkablabqabnaboabpaaqaaraasaataauaavaawabiabjaaCaazaaIaaraasaataauaavaawabiabjabkablabqabnaboabpaaqaaraasaataauaavaawabiabjaaCaazaaIaaraasaataauaavaawabiabjabkablabqabnaboabpaaqaaraasaataauaavaawabiabjaaCaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP
+aacabaabeaaXabcaaTaaVabfahracVacVacVacVacVacVacVacVacVacVacVacVacVabNabcabbabhabdabeaaZabcaabaataauaavaawabiabjabkaayaayaaaaabaacaadaaeaafaagaahaaaaaiaajaakaalaamaanaaoaagaafaajaacaadaahaakaazaaDaaEaaFaaGaaHaaIaaJaaKaaLaaMaaNaaOaaAaaBaaCaaDaaEaaFaaGaaHaaIaaJaaKaaLaaMaazaaDaaEaaFaaGaaHaaIaaJaaKaaLaaMaaNaaOaaAaaBaaCaaDaaEaaFaaGaaHaaIaaJaaKaaLaaMaazaaDaaEaaFaaGaaHaaIaaJaaKaaLaaMaaNaaOaaAaaBaaCaaDaaEaaFaaGaaHaaIaaJaaKaaLaaMaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPahsahsahsahsahsahsahsahsahsahsahsahsahsahsahsahsahsahsahsahsahsahsaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP
+aaiabcabhabgabfaaWabeaaVahracVacVacVacVacVacVacVacVacVacVacVacVacVabNabfaaXaaTabaabhaaYabfaaeaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPahsahtahuahvahwahxahyahsahzahAahAahAahAahAahsahBahCahBahCahBahCahsaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP
aafabfaaTabdaaVaaZabhabeahracVacVacVacVacVacVacVacVacVacVacVacVacVabNaaVabgaaWabcaaTaaUaaVaahaaTaaaaabaacaadaaeaafaagaahaaaaaiaajaakaalaamaanaaoaagaafaajaacaadaahaakaaeaamaaiaaoaaTabdaazahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDaazaaAaaBaaCaaDaaEaaFaaGaaHaaIaaJaaKaaLaaMaaNaaOaaAaaBaaCaaDaaEaaFaaGaaHaaIaaJaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPahsahtahAahAahAahAahEahsahFahCahCahCahGahAahsahHahCahHahCahHahCahsaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP
aanaaVaaWabaabeaaYaaTabhahIacVacVacVacVacVacVacVacVacVacVacVacVacVabYabeabdaaZabfaaWabbabeaagaaWaajaaTaaUaaVaaWaaXaaYaaZabaabbabcabdabeabfabgabhaaYaaXabcaaUaaVaaZabdaaWabfabbaabaaWabaaazahDabbaaTabaabbabaabbaaTabaabbaaTabaabbaaTabaabbaaTabaabbaaTabaabbabaabbaaTabaabbaaTabaabbaaTabaabbaaTabaabbabbahDaazaaEabnaboabpaaqaaraasaataauaavaawabiabjabkablabqabnaboabpaaqaaraasaataauaaNaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPahsahtahAahAahJahAahKahsahLahCahMahMahGahAahsahCahCahCahCahCahCahsaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP
aakabeaaZabcabhaaUaaWaaTahNacVacVacVacVacVacVacVacVacVacVacVacVacVacjabhabaaaYaaVaaZaaXabhaacaaZaamaaWabbabeaaZabgaaUaaYabcaaXabfabaabhaaVabdaaTaaUabgabfabbabeaaYabaaaZaaVaaXaaeaaZabcaazahDaaXaaWabcaaXabcaaXaaWabcaaXaaWabcaaXaaWabcaaXaaWabcaaXaaWabcaaXabcaaXaaWabcaaXaaWabcaaXaaWabcaaXaaWabcaaPaaXahDaazaaBabkablabqabnaboabpaaqaaraasaasaataauaavabiabjabkablabqabnaboabpaaqaaraaKaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPahsahsahsahAahJahAahAahAahAahCahMahMahCahAahOahCahCahCahCahCahCahsaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP
@@ -2921,21 +2953,21 @@ aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaa
aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqFaqJaqJaqJaqJaqJaqJaqJaqJaqFaqJaqJaqJaqJaqJaqJaqJaqJaqFavSawoawzawAawBawBawBawBawBawCavwawDaqFaqJaqJaqJaqJarHavaavaawEawEavaavaawFavaavaavAaqFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPawGawGawGawGaAIaAIaAIaAIaAIawGawGawGawGawGawGaAIaAIaAIaAIaAIawGawGawGawGaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPawIavdawJavdavdavdavdavdawKaaPawLauhauhawMalxauQauQauQalxapxapxawNawOalxaqAaqAaqAalxawPaiRaiRawQalxaqAaqAaqAaqAaqA
aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqFaqJaqJawRawSawTawUawVawWaqFawXawYawZaxaaxbaxcaqJaxdaqFaxeavwavwavwavwavwavwavwavwavwawDaaPaqFaqJaqJaqJaqJaqFaxfavaaxgaxhavaavaaxiavaavaaxjaqFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPawGaxkaxkaxkaxkaxkaxkaxkaxkaxkaxkaxkaxkaxkaxkaxkaxkaxkaxkaxkaxkaxkaxkawGaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPavdaxlaxmaxnaxoaxpavdaaPaaPaaPaaPaaPaaPaxqauQauQauQaxrapyapyaxsaxsalxaqAaqAaqAalxawPaiRaiRaxtalxaqAaqAaqAaqAaqA
aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqFaxuaxvawRawSawTawUawVawWarsaqCaqCaqCaqCaqCaqCaqCaqCathaxwaxwaxwaxwaxwaxwaxwaxwaxwaxwaxwaxwargarvaxxaxxarvaqYaqCaqCaqCaqCaqCaqCaqCaqCaqCaqCathaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPawGaxkaxkaAcaAcaAcaAcaAcaAcaAcaAcaAmaAlaAcaAcaAcaAcaAcaAcaAcaAcaxkaxkawGaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPavdaxyaxzawdavDaxAavdaaPaaPaaPaaPaaPaaPaxBauQauQauQalxaxCapyalxalxalxalxalxalxalxaxDaxEaxEaxDalxalxalxalxaqAaqA
-aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqYaqCaqCaqCaqCaqCaqCaqCaqCathaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaxFarvaxGaxGarvaxHaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPawGaxkaAnaAMaAMaAMaANaxJazVazVaxJaxKaxKaxJazVazVaxJaBfaAMaAMaAMaBgaxkawGawGaAIaAIaAIawGawGaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPauAavdaxMaxmawdavDaxNavdauEaaPaaPasqashaxOalxauQauQauQalxalxalxalxaxPaxQaxRaxSaxTaxUaiRaiRaiRaiRaxVaxVaxWalxalxaqA
-aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaParmaxXaxXarmaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAIaxkaAnaAMaAMaANaBhaBjaBiaBwaxJaBEaydaxJaBFaGPaDZaxJaxJaBfaAMaBgaxkawGaygayhayiayiayiawGaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPauAavdavdavdavdayjaxmawdavDaykavdavdavdavdauEaylaylalxaymauQauQauQalxaynayoaiRaiRaiRaiRaiRaiRaiRaiRaiRaiRaiRaiRaiRaypalxaqA
-aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaParmaxXaxXarmaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAIaxkaAnaAMaANaxJaJcaJcaJcaKlaxJaKDayqaxJaBFbaNbaMbaPbaOaxJaBfaBgaxkaAIayuayiayiayiayiaAIaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPavdayvaywayxavdayyavDavDayzavdavdayAayBayCayDayEayFayEauQauQauQauQayGaiRaiRaiRaiRaiRaiRauQaiRayHaiRaiRaiRaiRaiRaiRayIalxaqA
-aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaParmaxXaxXarmaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAIaxkaAnaANaxJaxJbaQbaSbaRbaTaxJayqayqayObaNbaNbaNbaNbaNbaUaxJaBgaxkbaVayiayiayiayiayiaAIaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaaPaaPaaPaaPaySayTayUayTavdavdayVayWavdavdayXayYayZazaayDayEazbayEauQauQauQauQalxazcazdaiRaiRaiRaiRaiRaiRaiRaiRaiRaiRaiRaiRaiRazealxaqA
-aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaParmaxXaxXarmaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAIaxkaAnazfbaWbaYbaXbaZbaZbaZaxJayNayqaxJbbabbcbbbbbdbaNbbeaxJaBgaxkaAIayiayiayiayiayiaAIaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaaPaaPaaPaaPavdavdaySazpavdavdazqavDazravdavdazsaztazsavdazuazualxazvauhawMalxalxalxalxazwazxazyazzazAazBaiRaiRaiRaiRazCazCazDalxalxaqA
-aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaParRaxXaxXarRaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAIaxkaAnazEbaWbbfbaXbaXbaXbaXayOayqayqaxJaxJaxJaxJazVazVaxJbbgaBgaxkawGazGazHayiazHazIawGaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaaPaaPaaPaaPavdazJavDavDazKavdazLazMavDavdazNazOazPazQavdaruaaParuaaPaaPaaPaaPaqAaqAalxalxalxalxalxalxalxaxDazRazRaxDalxalxalxalxaqAaqA
-aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaParmaxXaxXarmaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPawGaxkaAnbbhaxJbbibaXbaXbbjbaXaxJayqayqbbkazUazVaxkaxkaxkaxkaxkaBgaxkazWazWazWazWazWazWazWazWazWazWazWaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaaPaaPaaPaaPavdazXavDavDavDazYavDavDavDazZavDavDavDaAaavdashashashashaaPaaPaaPaaPaqAaqAaqAaqAaqAaqAaqAalxaAbaiRaiRaAbalxaqAaqAaqAaqAaqA
-aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaParmaxXaxXarmaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPawGaxkaAnaAMaxJaxJaxJaxJaxJaxJaxJayNayqbblayqazVaxkaxkaxkaxkaxkaBgaxkazWaAdaAdaAdaAdaAdaAdaAdaAdaAdaAeaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaqAaaPaaPaaPaaPavdaAfavDavDavDaAgavDavDavDaAhavDavDavDaAiavdaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaqAaqAalxaAbaiRaiRaAbalxaqAaqAaqAaqAaqA
-aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaParmaxXaxXarmaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPawGaxkaAnaANaxJaAjaAkbbnbbmbboaxJayqayqbbkbbpazVaxkaxkaxkaxkaxkaBgaxkazWaAdaAoaApaApaApaApaApaAqaAdaAeaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaaPaaPaaPaaPauAavdavdavdavdavdavdavDavDavDavdavdavdavdavdavdauEaaPaaPaaPaaPaaPartaaParuaqAaqAaqAaqAaqAaqAalxaAbaiRaiRaAbalxaqAaqAaqAaqAaqA
-aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaParmaxXaxXarmaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPawGawGawGawGawGaxkaAnazfbaWaAraAraAraAraArayOayqayqaxJaxJaxJaxJazVazVaxJaBfaBgaxkazWaAdaAsaAtaAtaAtaAtaAtaAsaAdaAeaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaaPaaPaaPaaPavdaAuaAvaAwaAxaAyavdaAzavDaAAavdaABaACaACaADaAEavdaaPaaPaaPaaPaaPartaruaqAaqAaqAaqAaqAaqAaqAalxaAbaiRaiRaAbalxaqAaqAaqAaqAaqA
-aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaAFaAFaAFaAFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaAFaAFaAFaAFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaAFaAFaAFaAFaAGaAGaAGaAGaAFaAFaAFaAFaAGaAHaAHaAGawGaAIaAIawGawGaAIaAIawGawGaAIaAIaAIaAIawGawGawGawGaAIaAIaAIaAIawGawGawGawGaAIaAIawGawGawGawGawGawGaAJaAJaAKawGaxkaAnazEbaWaALaAraAraArbbqaxJayNayqayqayqbbrayqayqayqbbsaxJaBgaxkazWaAdaAsaAOaAtaAtaAtaAPaAsaAdaAeaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaaPaaPaaPaaPaaPaAQaARaARaARaARaARavdavDavDavDavdaASavDavDavDaATaAUaaPaaPaaPaaPaaPasqaaPaqAaqAaqAaqAaqAaqAaqAalxalxaAVaAWalxalxaqAaqAaqAaqAaqA
-aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaAXaAYaAXaAFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaAXaAXaAXaAFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaAFaAZaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBbaAIaAJaAJaAJaAJaAJaAJaAIaAJaAJaAJaAJaAJaAJaBcaAJaAJaAJaAJaAJaAJaAJaAJaBcaAJaAJaAJaBdaAJaAJaAJaAJaAJaAJaAJaAJaBeaxkaAnbbhaxJaxJbbtbbvbbubbwaxJbbybbxaxJbbxbbzaxJayqayqbbAaxJaBgaxkazWaAdaAsaAtaAtaBkaBkaBkaBlaAdaAeaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaaPaaPaaPaaPaaPaaPaBmaBnaBoaARaARaARaBpavDavDavDaBqavDavDavDaBraBsaBtaaPaaPaaPaaPaaPartaruaruaqAaqAaqAaqAaqAaqAaqAalxalxalxalxaqAaqAaqAaqAaqAaqA
-aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaBuaAFaAFaAFaBuaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaBuaAFaAFaAFaBuaAGaAGaAGaAGaBuaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBvaAJaAJaAJaAJaAJaAJaBvaAJaAJaAJaAJaAJaAJaAJaAJaAJaAJaAJaAJaAJaAJaAJaAJaAJaAJaAJaBdaAJaAJaAJaAJaAJaAJaAJaAJaBeaxkaAnaAMbbhaxJaAraArbbBbbCaxJbbEbbDaxJbbFbbGaxJazTayqaxJbbgaBgaxkazWaAdaAsaAtaAtaAtaAtaAtaBxaAdaAeaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaByaARaARaARaARaARaBzavDavDavDaBAavDavDavDavDaBBaBCaaPaaPaaPaaPaaPartaaPaaParuaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqA
-aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAGaBaaBaaBaaAGaruaruaruaruaaPaaPaaPaaPaaPaaPaaPaaPaaParuaruaruaruaAGaBaaBaaBaaAGaruaruaruaruaruaruaruaruaruaruaruaruaruaruaruaruaaPaAFaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBvaAJaAJaAJaAJaAJaAJaBvaAJaAJaAJaAJaAJaAJaAJaAJaAJaAJaAJaAJaAJaAJaAJaAJaAJaAJaAJawGawGawGawGawGawGawGawGawGawGaxkaAnaAMaAMbbhaxJaBDbbHbbIaxJbbKbbJaxJbbJazlaxJaxJaxJbbgaAMaBgaxkazWaAdaAsaAtaAtaAtaAtaBGaAsaAdaAeaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPavdaBHaARaARaARaBIavdazsaBJazsavdaBKaBLaBMavDaBNavdaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqA
-aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAGaBaaBaaBaaAGaaPaaPaaParuaruaruaruaruaruaruaruaruaruaruaaPaaPaaPaAGaBaaBaaBaaAGaruaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaParuaruaAGaBaaBaaBaaBOaBOaBOaBOaBOaBOaBOaBOaBOaBOaBOaBOaBOaBOaBOaBOaAIaAIaBPaAIaAIawGaAIaAIaAIaAIaAIaBQaBQaAIaAIawGawGaAIaAIaAIaAIawGawGaAJaAJawGaBRaBSawGaBRaBSawGaBRaBSawGaxkaAnaAMaAMaAMbbhaxJazVazVaxJazVazVaxJazVazVaxJbbgaAMaAMaAMaBgaxkazWaAdaAsaAtaAtaAtaAtaAtaBxaAdaAeaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPavdaBTaBUaBVaBWaBXavdaBYavDaBZavdaCaavdavdaCbavdavdaaPaaPaaPaaPaaPaaPaaPartaaParuaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqA
+aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqYaqCaqCaqCaqCaqCaqCaqCaqCathaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaxFarvaxGaxGarvaxHaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPawGaxkaAnaAMaAMaAMbcnazVazVazVbcoaxKaxKbcoazVazVazVbcqbcpaAMaAMaBgaxkawGawGaAIaAIaAIawGawGaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPauAavdaxMaxmawdavDaxNavdauEaaPaaPasqashaxOalxauQauQauQalxalxalxalxaxPaxQaxRaxSaxTaxUaiRaiRaiRaiRaxVaxVaxWalxalxaqA
+aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaParmaxXaxXarmaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAIaxkaAnaAMaAMbcnaBhaBjaBiaBwbcraBEaydbcraBFaGPaDZbaObcsbcpaAMaBgaxkawGaygayhayiayiayiawGaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPauAavdavdavdavdayjaxmawdavDaykavdavdavdavdauEaylaylalxaymauQauQauQalxaynayoaiRaiRaiRaiRaiRaiRaiRaiRaiRaiRaiRaiRaiRaypalxaqA
+aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaParmaxXaxXarmaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAIaxkaAnaAMbcnbctaJcaJcaJcaKlbcraKDayqbcraBFbaNbaMbaPbcubcsbcpaBgaxkaAIayuayiayiayiayiaAIaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPavdayvaywayxavdayyavDavDayzavdavdayAayBayCayDayEayFayEauQauQauQauQayGaiRaiRaiRaiRaiRaiRauQaiRayHaiRaiRaiRaiRaiRaiRayIalxaqA
+aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaParmaxXaxXarmaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAIaxkaAnbcnbctaJcaJcbaSbaRbaTbcrayqayqayObaNbaNbaNbaNbaNbaUbcraBgaxkbaVayiayiayiayiayiaAIaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaaPaaPaaPaaPaySayTayUayTavdavdayVayWavdavdayXayYayZazaayDayEazbayEauQauQauQauQalxazcazdaiRaiRaiRaiRaiRaiRaiRaiRaiRaiRaiRaiRaiRazealxaqA
+aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaParmaxXaxXarmaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAIaxkaAnazfbcvbcwbaXbaZbaZbaZbcrayNayqbcrbbabbcbbbbbdbaNbbebcraBgaxkaAIayiayiayiayiayiaAIaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaaPaaPaaPaaPavdavdaySazpavdavdazqavDazravdavdazsaztazsavdazuazualxazvauhawMalxalxalxalxazwazxazyazzazAazBaiRaiRaiRaiRazCazCazDalxalxaqA
+aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaParRaxXaxXarRaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAIaxkaAnazEbcxbbfbaXbaXbaXbaXayOayqayqbcybcqbcqbcqazVazVbcqbczaBgaxkawGazGazHayiazHazIawGaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaaPaaPaaPaaPavdazJavDavDazKavdazLazMavDavdazNazOazPazQavdaruaaParuaaPaaPaaPaaPaqAaqAalxalxalxalxalxalxalxaxDazRazRaxDalxalxalxalxaqAaqA
+aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaParmaxXaxXarmaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPawGaxkaAnbcBbcAbbibaXbaXbbjbaXbcrayqayqbbkazUazVbcCbbLbbLbbLbbLaxkaxkazWazWazWazWazWazWazWazWazWazWazWaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaaPaaPaaPaaPavdazXavDavDavDazYavDavDavDazZavDavDavDaAaavdashashashashaaPaaPaaPaaPaqAaqAaqAaqAaqAaqAaqAalxaAbaiRaiRaAbalxaqAaqAaqAaqAaqA
+aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaParmaxXaxXarmaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPawGaxkaAnaAMbcybcqbcqbcqbcqbcqbcDayNayqbblayqazVaBgaxkaxkaxkaxkaxkaxkazWaAdaAdaAdaAdaAdaAdaAdaAdaAdaAeaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaqAaaPaaPaaPaaPavdaAfavDavDavDaAgavDavDavDaAhavDavDavDaAiavdaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaqAaqAalxaAbaiRaiRaAbalxaqAaqAaqAaqAaqA
+aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaParmaxXaxXarmaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPawGaxkaAnbcnbcEaAjaAkbbnbbmbbobcrayqayqbbkbbpazVbcFaAcaAcaAcaAcaxkaxkazWaAdaAoaApaApaApaApaApaAqaAdaAeaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaaPaaPaaPaaPauAavdavdavdavdavdavdavDavDavDavdavdavdavdavdavdauEaaPaaPaaPaaPaaPartaaParuaqAaqAaqAaqAaqAaqAalxaAbaiRaiRaAbalxaqAaqAaqAaqAaqA
+aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaParmaxXaxXarmaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPawGawGawGawGawGaxkaAnazfbcxaAraAraAraAraArayOayqayqbcGbcqbcqbcqazVazVbcqbcpaBgaxkazWaAdaAsaAtaAtaAtaAtaAtaAsaAdaAeaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaaPaaPaaPaaPavdaAuaAvaAwaAxaAyavdaAzavDaAAavdaABaACaACaADaAEavdaaPaaPaaPaaPaaPartaruaqAaqAaqAaqAaqAaqAaqAalxaAbaiRaiRaAbalxaqAaqAaqAaqAaqA
+aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaAFaAFaAFaAFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaAFaAFaAFaAFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaAFaAFaAFaAFaAGaAGaAGaAGaAFaAFaAFaAFaAGaAHaAHaAGawGaAIaAIawGawGaAIaAIawGawGaAIaAIaAIaAIawGawGawGawGaAIaAIaAIaAIawGawGawGawGaAIaAIawGawGawGawGawGawGaAJaAJaAKawGaxkaAnazEbcHbcIaAraAraArbbqbcrayNayqayqayqbbrayqayqayqbbsbcraBgaxkazWaAdaAsaAOaAtaAtaAtaAPaAsaAdaAeaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaaPaaPaaPaaPaaPaAQaARaARaARaARaARavdavDavDavDavdaASavDavDavDaATaAUaaPaaPaaPaaPaaPasqaaPaqAaqAaqAaqAaqAaqAaqAalxalxaAVaAWalxalxaqAaqAaqAaqAaqA
+aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaAXaAYaAXaAFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaAXaAXaAXaAFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaAFaAZaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBbaAIaAJaAJaAJaAJaAJaAJaAIaAJaAJaAJaAJaAJaAJaBcaAJaAJaAJaAJaAJaAJaAJaAJaBcaAJaAJaAJaBdaAJaAJaAJaAJaAJaAJaAJaAJaBeaxkaAnbcBbcJaALaArbbvbbubcKbcybbybbxbcobbxbbzbcLayqayqbbAbcraBgaxkazWaAdaAsaAtaAtaBkaBkaBkaBlaAdaAeaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaaPaaPaaPaaPaaPaaPaBmaBnaBoaARaARaARaBpavDavDavDaBqavDavDavDaBraBsaBtaaPaaPaaPaaPaaPartaruaruaqAaqAaqAaqAaqAaqAaqAalxalxalxalxaqAaqAaqAaqAaqAaqA
+aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaBuaAFaAFaAFaBuaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaBuaAFaAFaAFaBuaAGaAGaAGaAGaBuaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBvaAJaAJaAJaAJaAJaAJaBvaAJaAJaAJaAJaAJaAJaAJaAJaAJaAJaAJaAJaAJaAJaAJaAJaAJaAJaAJaBdaAJaAJaAJaAJaAJaAJaAJaAJaBeaxkaAnaAMbcBbcJaAraArbbBbbCbcrbbEbbDbcrbbFbbGbcrayqayqbcMbczaBgaxkazWaAdaAsaAtaAtaAtaAtaAtaBxaAdaAeaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaByaARaARaARaARaARaBzavDavDavDaBAavDavDavDavDaBBaBCaaPaaPaaPaaPaaPartaaPaaParuaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqA
+aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAGaBaaBaaBaaAGaruaruaruaruaaPaaPaaPaaPaaPaaPaaPaaPaaParuaruaruaruaAGaBaaBaaBaaAGaruaruaruaruaruaruaruaruaruaruaruaruaruaruaruaruaaPaAFaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBvaAJaAJaAJaAJaAJaAJaBvaAJaAJaAJaAJaAJaAJaAJaAJaAJaAJaAJaAJaAJaAJaAJaAJaAJaAJaAJawGawGawGawGawGawGawGawGawGawGaxkaAnaAMaAMbcBbcJaBDbbHbbIbcrbbKbbJbcrbbJazlbcrazTbcMbczaAMaBgaxkazWaAdaAsaAtaAtaAtaAtaBGaAsaAdaAeaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPavdaBHaARaARaARaBIavdazsaBJazsavdaBKaBLaBMavDaBNavdaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqA
+aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAGaBaaBaaBaaAGaaPaaPaaParuaruaruaruaruaruaruaruaruaruaruaaPaaPaaPaAGaBaaBaaBaaAGaruaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaParuaruaAGaBaaBaaBaaBOaBOaBOaBOaBOaBOaBOaBOaBOaBOaBOaBOaBOaBOaBOaBOaAIaAIaBPaAIaAIawGaAIaAIaAIaAIaAIaBQaBQaAIaAIawGawGaAIaAIaAIaAIawGawGaAJaAJawGaBRaBSawGaBRaBSawGaBRaBSawGaxkaAnaAMaAMaAMbcBazVazVazVbcNazVazVbcNazVazVbcNbcqbczaAMaAMaBgaxkazWaAdaAsaAtaAtaAtaAtaAtaBxaAdaAeaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPavdaBTaBUaBVaBWaBXavdaBYavDaBZavdaCaavdavdaCbavdavdaaPaaPaaPaaPaaPaaPaaPartaaParuaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqA
aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaBaaBaaBaaAFaAFaAFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaAFaAFaBaaBaaBaaAFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaAFaAFaBaaBaaBaaBOaCcaCdaCdaCdaCdaCdaCdaCdaCdaCdaCeaCfaCgaChaBOaCiaCiaCiaCjaCkawGaBQaBQaBQaBQaBQaBQaBQaClaCmawGaCnaCnaCnaCnaCnaCnawGaAJaAJawGaCoaCpawGaCoaCpawGaCoaCpawGaxkaxkbbLbbLbbLbbLbbLbbLbbLbbLbbLbbLbbLbbLbbLbbLbbLbbLbbLbbLaxkaxkazWaAdaAsaAtaAtaCqaCqaCqaCraAdaAeaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPavdaCsaARaCtavdavdavdaCuavDaCvavdavdavdaCwavDaCxavdaaPaaPaaPaaPaaPaaPaaPartaruaruaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqA
aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaBaaBaaBaaCyaCzaCAaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaCAaCzaCyaBaaBaaBaaAFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaCAaCzaCyaBaaBaaBaaBOaCBaCCaCCaCCaCDaCDaCCaCCaCCaCCaCEaCCaCCaCFaBOaCGaCiaCiaCiaCiawGaBQaCHaCIaCJaCHaBQaBQaBQaBQawGaCnaCKaCLaCLaCMaCnaAIaAJaAJawGaCNaCOawGaCNaCOawGaCNaCOawGaxkaxkaxkaxkaxkaxkaxkaxkaxkaxkaxkaxkaxkaxkaxkaxkaxkaxkaxkaxkaxkaxkazWaAdaAsaAOaAtaAtaAtaAPaAsaAdaAeaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPavdaCPaCQaCRavdaaPavdaCSaCSaCSavdaaPavdavhaCTaCUavdaaPaaPaaPaaPaaPaaPaaPartaaParuaaPaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqA
aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaBaaBaaBaaCyaCzaCAaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaCAaCzaCyaBaaBaaBaaAFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaCAaCzaCAaBaaBaaBaaBOaCBaCCaCCaCVaCWaCXaCYaCCaCCaCZaCeaDaaDbaDcaBOaDdaCiaCiaCiaCiawGaBQaCHaDeaDeaCHaBQaBQaBQaBQawGaCnaDfazHaDgaDhaCnaAIaAJaAJawGaDiawGawGaDiawGawGaDiawGawGawGawGawGaAIaAIaAIaAIawGawGawGawGaAIaAIaAIaAIawGawGawGawGawGawGawGazWaAdaDjaDkaAtaAtaAtaDlaDmaAdaAeaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPavdaCSaCSaCSavdaaPawIaDnaDoaDpawKaaPavdaCSaCSaCSavdaaPaaPaaPaaPaaPaaPaaPartaruaruaruaruaruaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqA
diff --git a/maps/virgo-3.dmm b/maps/virgo-3.dmm
index eb36ccc8cb..94163fdfa4 100644
--- a/maps/virgo-3.dmm
+++ b/maps/virgo-3.dmm
@@ -414,7 +414,7 @@
"ih" = (/obj/machinery/light{dir = 4},/obj/structure/closet/emcloset,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/tiled/dark,/area/tcommsat/entrance)
"ij" = (/obj/machinery/computer/teleporter,/turf/simulated/floor/tiled/dark,/area/tcommsat/entrance)
"im" = (/obj/item/weapon/circuitboard/teleporter,/turf/space,/area/space)
-
+
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
diff --git a/maps/virgo-5.dmm b/maps/virgo-5.dmm
index 15849178d7..706e322e36 100644
--- a/maps/virgo-5.dmm
+++ b/maps/virgo-5.dmm
@@ -1448,8 +1448,8 @@
"BR" = (/obj/machinery/power/port_gen/pacman,/obj/structure/cable/yellow,/obj/machinery/light/small,/turf/simulated/floor/plating,/area/outpost/engineering/mining/power)
"BS" = (/turf/simulated/wall/r_wall,/area/outpost/mining_main/storage)
"BT" = (/obj/structure/ore_box,/turf/simulated/floor/tiled/dark,/area/outpost/mining_main/storage)
-"BU" = (/obj/structure/closet/secure_closet/miner,/turf/simulated/floor/tiled/dark,/area/outpost/mining_main/storage)
-"BV" = (/obj/structure/closet/secure_closet/miner,/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/dark,/area/outpost/mining_main/storage)
+"BU" = (/obj/structure/closet/secure_closet/miner,/obj/machinery/light{dir = 1},/obj/item/weapon/tank/jetpack/oxygen,/turf/simulated/floor/tiled/dark,/area/outpost/mining_main/storage)
+"BV" = (/obj/structure/closet/secure_closet/miner,/obj/item/weapon/tank/jetpack/oxygen,/turf/simulated/floor/tiled/dark,/area/outpost/mining_main/storage)
"BW" = (/obj/machinery/door/airlock/glass_mining{name = "Mining Outpost Airlock"; req_access = list(48)},/obj/machinery/door/firedoor/glass,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/outpost/mining_main/south_hall)
"BX" = (/obj/machinery/door/airlock/glass_mining{name = "Mining Outpost Airlock"; req_access = list(48)},/obj/machinery/door/firedoor/glass,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled,/area/outpost/mining_main/south_hall)
"BY" = (/obj/machinery/door/airlock/glass_mining{name = "Mining Outpost Airlock"; req_access = list(48)},/obj/machinery/door/firedoor/glass,/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/outpost/mining_main/south_hall)
@@ -1539,7 +1539,7 @@
"DE" = (/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/outpost/engineering/mining/power)
"DF" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/outpost/engineering/mining/power)
"DG" = (/obj/machinery/atmospherics/pipe/manifold/visible/yellow{tag = "icon-map (NORTH)"; icon_state = "map"; dir = 1},/obj/effect/landmark{name = "bluespacerift"},/turf/simulated/floor/tiled,/area/outpost/research/anomaly)
-"DH" = (/obj/machinery/light/small{dir = 4},/turf/simulated/mineral/floor/ignore_mapgen,/area/mine/explored)
+"DH" = (/obj/machinery/computer/roguezones,/obj/item/weapon/paper/rogueminer,/turf/simulated/floor/tiled/asteroid_steel/airless,/area/mine/explored)
"DI" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/landmark{name = "bluespacerift"},/turf/simulated/floor/tiled,/area/outpost/mining_main/north_hall)
"DJ" = (/obj/effect/landmark{name = "bluespacerift"},/turf/simulated/floor/tiled,/area/outpost/mining_main/eva)
"DK" = (/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/effect/landmark{name = "bluespacerift"},/turf/simulated/floor/tiled,/area/outpost/mining_main/south_hall)
@@ -1910,6 +1910,51 @@
"KL" = (/obj/structure/lattice,/obj/structure/grille,/turf/space,/area/space)
"KM" = (/obj/machinery/power/tracker,/obj/structure/cable/yellow,/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/outpost/engineering/solarsoutside/aft)
"KN" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -20},/turf/simulated/floor/tiled,/area/outpost/mining_main/south_hall)
+"KO" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/tiled/asteroid_steel/airless,/area/mine/explored)
+"KP" = (/obj/machinery/access_button/airlock_exterior{frequency = 1390; master_tag = "belter_airlock"; pixel_x = 25; pixel_y = -25; req_access = list(48)},/turf/simulated/shuttle/plating/airless,/area/shuttle/belter/station)
+"KQ" = (/obj/machinery/light/small,/turf/simulated/shuttle/plating/airless,/area/shuttle/belter/station)
+"KR" = (/turf/simulated/shuttle/plating/airless,/area/shuttle/belter/station)
+"KS" = (/turf/simulated/shuttle/wall{tag = "icon-swall (SOUTHEAST)"; icon_state = "swall"; dir = 6},/area/shuttle/belter/station)
+"KT" = (/obj/machinery/door/airlock/external{density = 0; explosion_resistance = 0; frequency = 1390; icon_state = "door_open"; id_tag = "belter_ext"; locked = 1; req_access = list(48)},/turf/simulated/shuttle/plating/airless,/area/shuttle/belter/station)
+"KU" = (/turf/simulated/shuttle/wall{tag = "icon-swall_straight (WEST)"; icon_state = "swall_straight"; dir = 8},/area/shuttle/belter/station)
+"KV" = (/turf/simulated/shuttle/wall{icon_state = "swall_t"; dir = 1},/area/shuttle/belter/station)
+"KW" = (/obj/structure/shuttle/window{tag = "icon-9"; icon_state = "9"},/obj/structure/grille,/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/belter/station)
+"KX" = (/obj/structure/shuttle/window{tag = "icon-13"; icon_state = "13"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/belter/station)
+"KY" = (/obj/structure/shuttle/window{tag = "icon-12"; icon_state = "12"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/belter/station)
+"KZ" = (/obj/structure/shuttle/window{tag = "icon-9"; icon_state = "9"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/belter/station)
+"La" = (/turf/simulated/shuttle/wall{tag = "icon-swall (SOUTHWEST)"; icon_state = "swall"; dir = 10},/area/shuttle/belter/station)
+"Lb" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l"; dir = 8},/turf/simulated/floor/tiled/asteroid_steel/airless,/area/shuttle/belter/station)
+"Lc" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1390; id_tag = "belter_pump"},/turf/simulated/shuttle/floor/airless{tag = "icon-floor4"; icon_state = "floor4"},/area/shuttle/belter/station)
+"Ld" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 8},/turf/simulated/shuttle/plating/airless,/area/shuttle/belter/station)
+"Le" = (/obj/structure/grille,/obj/structure/shuttle/window{tag = "icon-5"; icon_state = "5"},/turf/simulated/shuttle/plating,/area/shuttle/belter/station)
+"Lf" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; icon_state = "intact"; tag = "icon-intact-f (SOUTHWEST)"},/obj/machinery/light{dir = 1},/obj/machinery/airlock_sensor{frequency = 1390; id_tag = "belter_sensor"; master_tag = "belter_airlock"; pixel_y = 25},/turf/simulated/shuttle/floor/airless{tag = "icon-floor4"; icon_state = "floor4"},/area/shuttle/belter/station)
+"Lg" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/obj/structure/table/standard,/obj/item/device/binoculars,/obj/item/weapon/gun/energy/particle,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/shuttle/belter/station)
+"Lh" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/canister/air/airlock,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/shuttle/belter/station)
+"Li" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/shuttle/belter/station)
+"Lj" = (/obj/machinery/atmospherics/binary/pump/on{dir = 8},/obj/structure/table/standard,/obj/machinery/recharger{pixel_x = 4; pixel_y = 4},/obj/machinery/light{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/shuttle/belter/station)
+"Lk" = (/turf/simulated/shuttle/wall{tag = "icon-swall_straight"; icon_state = "swall_straight"},/area/shuttle/belter/station)
+"Ll" = (/obj/structure/shuttle/engine/propulsion{icon_state = "burst_r"; dir = 8},/turf/simulated/floor/tiled/asteroid_steel/airless,/area/shuttle/belter/station)
+"Lm" = (/obj/machinery/door/airlock/external{frequency = 1390; icon_state = "door_locked"; id_tag = "belter_int"; locked = 1},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/belter/station)
+"Ln" = (/obj/machinery/atmospherics/pipe/manifold4w/hidden,/turf/simulated/shuttle/floor/airless{tag = "icon-floor4"; icon_state = "floor4"},/area/shuttle/belter/station)
+"Lo" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/belter/station)
+"Lp" = (/obj/machinery/atmospherics/pipe/manifold/hidden,/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/belter/station)
+"Lq" = (/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/belter/station)
+"Lr" = (/obj/machinery/door/airlock/external{frequency = 1390; icon_state = "door_locked"; id_tag = "belter_hatch"; locked = 1},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/belter/station)
+"Ls" = (/obj/machinery/door/airlock/external{frequency = 1390; icon_state = "door_locked"; id_tag = "belter_int"; locked = 1},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/belter/station)
+"Lt" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4; icon_state = "map"; tag = "icon-manifold-f (EAST)"},/turf/simulated/shuttle/floor/airless{tag = "icon-floor4"; icon_state = "floor4"},/area/shuttle/belter/station)
+"Lu" = (/obj/machinery/access_button/airlock_interior{frequency = 1390; master_tag = "belter_airlock"; pixel_x = -25; pixel_y = -25; req_access = list(48)},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/belter/station)
+"Lv" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1390; id_tag = "belter_docking"; pixel_x = 25; pixel_y = -25; req_access = list(48); tag_door = "belter_hatch"},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/belter/station)
+"Lw" = (/obj/structure/shuttle/engine/propulsion{dir = 8},/turf/simulated/floor/tiled/asteroid_steel/airless,/area/shuttle/belter/station)
+"Lx" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/obj/machinery/light,/obj/machinery/embedded_controller/radio/airlock/airlock_controller{frequency = 1390; id_tag = "belter_airlock"; pixel_x = 25; tag_airpump = "belter_pump"; tag_chamber_sensor = "belter_sensor"; tag_exterior_door = "belter_ext"; tag_interior_door = "belter_int"},/turf/simulated/shuttle/floor/airless{tag = "icon-floor4"; icon_state = "floor4"},/area/shuttle/belter/station)
+"Ly" = (/obj/machinery/computer/shuttle_control/belter,/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/belter/station)
+"Lz" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/belter/station)
+"LA" = (/obj/structure/bed/chair{dir = 1},/obj/machinery/light,/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/belter/station)
+"LB" = (/turf/simulated/shuttle/wall{icon_state = "swall"; dir = 5},/area/shuttle/belter/station)
+"LC" = (/turf/simulated/shuttle/wall{tag = "icon-swall_t"; icon_state = "swall_t"},/area/shuttle/belter/station)
+"LD" = (/turf/simulated/shuttle/wall{icon_state = "swall"; dir = 9},/area/shuttle/belter/station)
+"LE" = (/obj/effect/floor_decal/industrial/warning/dust{tag = "icon-warning_dust (SOUTHWEST)"; icon_state = "warning_dust"; dir = 10},/turf/simulated/floor/tiled/asteroid_steel/airless,/area/mine/explored)
+"LF" = (/obj/machinery/access_button/airlock_exterior{frequency = 1390; master_tag = "belter_airlock"; pixel_x = 25; pixel_y = 25; req_access = list(48)},/turf/simulated/shuttle/plating/airless,/area/shuttle/belter/station)
+"LG" = (/obj/machinery/light/small{dir = 1},/turf/simulated/shuttle/plating/airless,/area/shuttle/belter/station)
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -2072,42 +2117,42 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlacxVxVARxVxVASxVAT
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacxVBiBjxVBiBkxVyZBlzrzczUBmybBnzgBoBpBqAgziybEzDLEvExEwoVoVdlaczMzMBsAoAoBtBJBIAoAoBuzMzMacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacxUytDSxVytDSxVBwxUxUBxzUByybybBzBABBBCBDBEycEAEBzCzCAHoVoVdlacaczMzMBHAoBKDFDEAoBLzMzMacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacxUxVxVxVxVxVxUxUxUBMzczdzeBNBOBOBOBPBPBPBPBPBOBPtWdloVoVoVdldlacaczMzMzMBQBRBQzMzMzMacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaadmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacBSBSBTBTBTBUBVBUBSBSBWBXBYBOBOCaBZCaCbCbCcCdCeCckvoVoVoVdldldlacacacaczMzMzMzMzMacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacBSCfCfCfCfCfCfDTChCiCjCkClCmEeCoEgEfCpCqCrCsCtCuoVoVdldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacBSBSCvCfCfCwCfCxCyCzCACBCCCDEhCEDJCnCnCcCFCGCcqjoVoVdldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacBSCvCfCHCICJCJCKCLDKCNCOCPEiCQCnCnCRBOCSCTBPdloVoVacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacBSBSDUCVCWCVCVCXCYCZDaDbDcDcDdDcDVBOBOdldldloVoVoVacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacBSBSDfDgCfCfDhDWDjDkBPCnCnDlDmBOBOdldldloVoVoVacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacBSBSBSDnDoDhKNDpCkBPDqDrBOBOBOdldldloVoVoVacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacBSBSBSDhDsDtDuBPBOBOBOdldldldldloVoVdlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacBSBSDvDwDxBOBOacdldldldldldloVoVdlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacoVoVDyoVacacdldldldldldloVoVdldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacjWdldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacoVoVDzoVacacdldldldldldloVoVdlDHjWacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacdloidldldldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacoVDBacacacacdldldldldloVoVoVdldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacdldldldldldldldldldldldldldldlacacdldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacoVacacacacacdldldldldloVoVdldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacdldldldldldldldldldldldldldldldldldldldlacacdldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacdldloVoVoVoVdldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacdldldldldldldldldldldldldldldldldldldldldlacacacdldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacdldldldloVdldldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacdldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldlacacacacacdldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacdldldldloVdloVoVoVdldldldldldldldldldldldldldldldldljWacacacacacacacacacacacacacacacacacacacacacEYdldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldlacacacacacacacacdldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacdldldldldldldldldloVoVoVdldldldldldldldldldldldldloidlacacacacacacacacacdldlacacacacacacacacacoidldldldldldldldldldldldldldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacdldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCaaaaDCaaaaaaDCaaaaaaaaaaDCaaaaaaDCaaaaDCaaaaaaaaaaaaaaaaacacacacacacacacacacacdldldldldldldldldldldldldldldldldldldldldldldldldlacacacacacacacacdldldlacacacacacacacdldldldldldldldldldldldldldldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacdldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCaaaaaaDCDCDCDCDCDCDCaaaaaaDCDCDCDCaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacdldldlrKdldldldloVdldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldlrKdldlacacacacacacacacacacacacacacacacacacacacacacdldlacdldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCaaaaDCDCDCDCDCDCDCDCDCaaaaDCDCDCDCaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacjWdldldldldldldldldldldloVdldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldljWacacacacacacacacacacacacacacacacacacacacacacacacacacacdldlacdldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCaaaaDCDCDCDCDCDCDCDCDCaaaaDCDCDCDCaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacdldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacdldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacdldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacdldldldldlacacacdldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacdldldldldldldldldldldldldldldldldldldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacoVoVoVacacacacacacdldldlacacacacacacacacacacacacacacacacacacacacacacoVoVoVoVEZFaFaFaFboVdldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacdldldldldldldldldldldldldldlrKdldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacacoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVFcFeFdkvFcoVFfoVoVdldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacjWacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacoVoVFeFgktktktktktktktktktktktktktktktktktFgkvoVoVoVoVoVoVoVoVoVoVoVoVoVFhFjFiFlFkFnFmFooVoVdldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacoVvVFqFpFpqiqiqiqiqiFrFqFsqiqiqiqiqiFpFpFqmboVacacacacoVoVoVoVoVFhFhFhFhFuFtFwFvFnFnFnoVoVoVoVdldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacoVvVFxaagPaaaaaaaaaaaaaaaaaaaaaaaaaagPaaFymboVacacacacoVoVoVFzFzFhFAFBFhFDFCFEFvFGFFFnFHFnoVoVoVdlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacoVvVmbaagPaaaaaaaaaaaaaaaaaaaaaaaaaagPaavVmboVacacacoVoVoVFzFzFzFJFIFKFhFjFLFlFMFNFNFPFOFnFnoVdldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacdloVvVmbaagPaaaaaaaaaaaaaaaaaaaaaaaaaagPaavVmboVacacacoVoVFzFzFQFzFhFRFhFhFTFSFUFnFWFVFNFNFXFnFndldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacdloVvVmbaagPaaaaaaaaaaaaaaaaaaaaaaaaaagPaavVmboVacacoVoVoVFzFYGaFZGcGbGeGdGgGfGiGhGkGjFNFNFNGlFndlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCDCDCDCDCDCDCDCDCDCaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacoVvVmbaagPaaaaaaaaaaaaaaaaaaaaaaaaaagPaavVmboVacacoVoVFzFzGmGoGnGaGpGqFzGsGrGtFnGvGuGxGwFNGyFnFnacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCDCDCDCDCDCDCDCDCDCaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacoVvVGzaagPaaaaaaaaaaaaaaaaaaaaaaaaaagPaaGAmboVdloVoVoVFzGCGBGEGDGFGFGFFzGHGGGIFnGJFNFNFNFNFNGKFnacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCDCDCDCDCDCDCDCDCDCaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacoVvVFqaagPaaaaaaaaaaaaaaaaaaaaaaaaaagPaaFqmboVdloVoVFzFzFzFzGMGLFzFzFzFzGOGNGPFnFnGQGRFNFNGSFnFnFnacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCDCDCDCDCDCDCDCDCDCaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacoVvVFxaagPaaaaaaaaaaaaaaaaaaaaaaaaaagPaaFymboVdloVoVFzGTGVGUGXGWGYGYFzGZHaGrGtHbFnFnFnHcHcFnFnHdHeHeHeHeHeHeacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCDCDCDCDCDCaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacoVvVmbaagPaaaaaaaaaaaaaaaaaaaaaaaaaagPaavVmboVdloVoVFzHfHhHgHjHiHlHkHnHmHpHoHqFUGOHaHrHaHaHsHaHaHeHtHvHuHwHeHeacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCDCDCDCaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacoVHxqiHyHzaaaaaaaaaaaaaaaaaaaaaaaaaaHAHyqiqjoVdloVHBHCHCHCHDHFHEGEHGHIHHHJFhHLHKHMGgGgGgGgHNGgHOHQHPHSHRHUHTHeacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaadmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacBSBSBTBTBTBVBUBVBSBSBWBXBYBOBOCaBZCaCbCbCcCdCeCckvoVoVoVdldldlacacacaczMzMzMzMzMacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacBSCfCfCfCfCfCfDTChCiCjCkClCmEeCoEgEfCpCqCrCsCtCuoVoVdldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacBSBSCvCfCfCwCfCxCyCzCACBCCCDEhCEDJCnCnCcCFCGCcqjoVoVdljWDHkZdldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacBSCvCfCHCICJCJCKCLDKCNCOCPEiCQCnCnCRBOCSCTBPdloVoVdlKOkZkZdldldljWdldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacBSBSDUCVCWCVCVCXCYCZDaDbDcDcDdDcDVBOBOdldldloVoVoVdlFektktktkvdloidldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacBSBSDfDgCfCfDhDWDjDkBPCnCnDlDmBOBOdldldloVoVoVdlFekZKQKPKRkZktktktktktkvdlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacBSBSBSDnDoDhKNDpCkBPDqDrBOBOBOdldldloVoVoVdldlvVKSKUKTKUKVKXKWKZKYLambdldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacBSBSBSDhDsDtDuBPBOBOBOdldldldldloVoVdldldlvVLbLdLcLfLeLhLgLjLiLkmbdldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacBSBSDvDwDxBOBOacdldldldldldloVoVdldldlvVLlLdLcLnLmLpLoLqLqLrmbDAjWacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacoVoVDyoVacacdldldldldldloVoVdldldlvVLbLdLcLtLsLuLqLqLvLrmbdldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacjWdldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacoVoVDzoVacacdldldldldldloVoVdldldlvVLwLdLcLxLkLzLyLALzLkmbdldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacdloidldldldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacoVDBacacacdldldldldldloVoVoVdldlvVLBKUKTKULCKXKZKZKYLDmbdldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacdldldldldldldldldldldldldldldlacacdldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacoVacacdldldldldldldldloVoVdldlLEkZLGLFKRkZqiqiqiqiqiqjdldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacdldldldldldldldldldldldldldldldldldldldlacacdldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacdldldldldldldldldloVoVoVoVdlLEqiqiqiqjdlrKdldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacdldldldldldldldldldldldldldldldldldldldldlacacacdldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacdldldldldldldldldldldloVoVdlrKdldldldldljWdldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacdldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldlacacacacacdldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacdldldldldldldldldldldldloVoVoVjWoVoVdldldldldldldldldldldldldldldldldljWacacacacacacacacacacacacacacacacacacacacacEYdldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldlacacacacacacacacdldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdldldldldldldldldldldldldldloVoVoVoVoVoVoVoVoVdldldldldldldldldldldldldloidlacacacacacacacacacdldlacacacacacacacacacoidldldldldldldldldldldldldldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacdldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCaaaaDCaaaaaaDCaaaaaaaaaaDCaaaaaaDCaaaaDCaaaaaaaaaaaaaaaadldldldldldldldldldldldldldldldloVoVoVoVoVdldldldldldldldldldldldldldldlacacacacacacacacdldldlacacacacacacacdldldldldldldldldldldldldldldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacdldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCaaaaaaDCDCDCDCDCDCDCaaaaaaDCDCDCDCaaaaaaaaaaaaaaaaaadldldldldldldldldldldldldldldldldldloVoVoVoVdldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldlrKdldlacacacacacacacacacacacacacacacacacacacacacacdldlacdldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCaaaaDCDCDCDCDCDCDCDCDCaaaaDCDCDCDCaaaaaaaaaaaaaaaaaadldldldldldldldldldldldldldldldldldldldldloVoVdldldldloVdldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldljWacacacacacacacacacacacacacacacacacacacacacacacacacacacdldlacdldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCaaaaDCDCDCDCDCDCDCDCDCaaaaDCDCDCDCaaaaaaaaaaaaaaaaaadldldldldldldldldldldldldldldldldldldldldldldldloVdldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacdldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCaaaaaaaaaaaaaaaaaadldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacdldldldldlacacacdldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCaaaaaaaaaaaaaaaaaadldldldldldldldldldldldldlacacacacacacacacacacacacacacdldldldldldldldldldldldldldldldldldldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacoVoVoVacacacacacacdldldlacacacacacacacacacacacacacacacacacacacacacacoVoVoVoVEZFaFaFaFboVdldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCaaaaaaaaaaaaaadldldldldldldldldldldldldldlacacacacacacacacacacacacacacacacdldldldldldldldldldldldldldlrKdldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacacoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVFcFeFdkvFcoVFfoVoVdldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCaaaaaaaaaaaadldldldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacjWacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacoVoVFeFgktktktktktktktktktktktktktktktktktFgkvoVoVoVoVoVoVoVoVoVoVoVoVoVFhFjFiFlFkFnFmFooVoVdldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCaaaaaaaaaaaadldldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacoVvVFqFpFpqiqiqiqiqiFrFqFsqiqiqiqiqiFpFpFqmboVacacacacoVoVoVoVoVFhFhFhFhFuFtFwFvFnFnFnoVoVoVoVdldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCaaaaaaaaaadldldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacoVvVFxaagPaaaaaaaaaaaaaaaaaaaaaaaaaagPaaFymboVacacacacoVoVoVFzFzFhFAFBFhFDFCFEFvFGFFFnFHFnoVoVoVdlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCaaaaaadldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacoVvVmbaagPaaaaaaaaaaaaaaaaaaaaaaaaaagPaavVmboVacacacoVoVoVFzFzFzFJFIFKFhFjFLFlFMFNFNFPFOFnFnoVdldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCaaaaaadldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacdloVvVmbaagPaaaaaaaaaaaaaaaaaaaaaaaaaagPaavVmboVacacacoVoVFzFzFQFzFhFRFhFhFTFSFUFnFWFVFNFNFXFnFndldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCaaaaaadldldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacdloVvVmbaagPaaaaaaaaaaaaaaaaaaaaaaaaaagPaavVmboVacacoVoVoVFzFYGaFZGcGbGeGdGgGfGiGhGkGjFNFNFNGlFndlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCDCDCDCDCDCDCDCDCDCaaaaaaaaaaaaaadldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacoVvVmbaagPaaaaaaaaaaaaaaaaaaaaaaaaaagPaavVmboVacacoVoVFzFzGmGoGnGaGpGqFzGsGrGtFnGvGuGxGwFNGyFnFnacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCDCDCDCDCDCDCDCDCDCaaaaaaaaaaaaaadldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacoVvVGzaagPaaaaaaaaaaaaaaaaaaaaaaaaaagPaaGAmboVdloVoVoVFzGCGBGEGDGFGFGFFzGHGGGIFnGJFNFNFNFNFNGKFnacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCDCDCDCDCDCDCDCDCDCaaaaaaaaaaaaaadldldldlacdlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacoVvVFqaagPaaaaaaaaaaaaaaaaaaaaaaaaaagPaaFqmboVdloVoVFzFzFzFzGMGLFzFzFzFzGOGNGPFnFnGQGRFNFNGSFnFnFnacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCDCDCDCDCDCDCDCDCDCaaaaaaaaaaaaaadldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacoVvVFxaagPaaaaaaaaaaaaaaaaaaaaaaaaaagPaaFymboVdloVoVFzGTGVGUGXGWGYGYFzGZHaGrGtHbFnFnFnHcHcFnFnHdHeHeHeHeHeHeacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCDCDCDCDCDCaaaaaaaaaaaaaaaaaadlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacoVvVmbaagPaaaaaaaaaaaaaaaaaaaaaaaaaagPaavVmboVdloVoVFzHfHhHgHjHiHlHkHnHmHpHoHqFUGOHaHrHaHaHsHaHaHeHtHvHuHwHeHeacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCDCDCDCaaaaaaaaaaaaaaaaaaaadlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacoVHxqiHyHzaaaaaaaaaaaaaaaaaaaaaaaaaaHAHyqiqjoVdloVHBHCHCHCHDHFHEGEHGHIHHHJFhHLHKHMGgGgGgGgHNGgHOHQHPHSHRHUHTHeacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacoVoVoVoVoVaaaaaaaaaaaaaaaaaaaaaaaaaaoVoVoVoVoVdloVHVFzHWHXHgHZHYIbIaHnIcIeIdIgIfGOIhHaHaHaIiHaFtHeIjIlIkInImHeacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacoVoVoVoVoVaaaaaaaaaaaaaaaaaaaaaaaaaaoVoVoVoVoVacacHVFzIoIqIpIsIrItItFzGZHaIuGtIvIwIwIwIxIxIwIwIyHeHeHeIzIBIAHeacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacoVFektICHzaaaaaaaaaaaaaaaaaaaaaaaaaaHAHyktkvoVacacHVFqFqFqFqFqFqFqFqFqFqGOGNGPIwIwIDIFIEIEIGIwIwIwacHeIHIBIjHeacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
diff --git a/maps/virgo-7.dmm b/maps/virgo-7.dmm
new file mode 100644
index 0000000000..5d493440c9
--- /dev/null
+++ b/maps/virgo-7.dmm
@@ -0,0 +1,336 @@
+"a" = (/turf/space,/area/asteroid/rogue/zone3)
+"b" = (/obj/effect/step_trigger/teleporter/random/rogue/fourbyfour/onleft,/turf/space,/area/asteroid/rogue/zone3)
+"c" = (/obj/effect/step_trigger/teleporter/random/rogue/fourbyfour/onright,/turf/space,/area/asteroid/rogue/zone3)
+"d" = (/turf/space,/area/asteroid/rogue/zone4)
+"e" = (/obj/effect/step_trigger/teleporter/random/rogue/fourbyfour/onleft,/turf/space,/area/asteroid/rogue/zone4)
+"f" = (/obj/effect/step_trigger/teleporter/random/rogue/fourbyfour/onright,/turf/space,/area/asteroid/rogue/zone4)
+"g" = (/obj/effect/step_trigger/teleporter/random/rogue/fourbyfour/ontop,/turf/space,/area/asteroid/rogue/zone3)
+"h" = (/obj/effect/step_trigger/teleporter/random/rogue/fourbyfour/ontop,/turf/space,/area/asteroid/rogue/zone4)
+"i" = (/obj/rogue_mobspawner,/turf/space,/area/asteroid/rogue/zone3)
+"j" = (/obj/asteroid_spawner,/turf/space,/area/asteroid/rogue/zone3)
+"k" = (/obj/rogue_mobspawner,/turf/space,/area/asteroid/rogue/zone4)
+"l" = (/obj/asteroid_spawner,/turf/space,/area/asteroid/rogue/zone4)
+"m" = (/turf/space,/area/shuttle/belter/belt/zone4)
+"n" = (/turf/space,/area/shuttle/belter/belt/zone3)
+"o" = (/obj/effect/step_trigger/teleporter/random/rogue/fourbyfour/onbottom,/turf/space,/area/asteroid/rogue/zone3)
+"p" = (/obj/effect/step_trigger/teleporter/random/rogue/fourbyfour/onbottom,/turf/space,/area/asteroid/rogue/zone4)
+"q" = (/turf/space,/area/asteroid/rogue/zone1)
+"r" = (/obj/effect/step_trigger/teleporter/random/rogue/fourbyfour/onleft,/turf/space,/area/asteroid/rogue/zone1)
+"s" = (/obj/effect/step_trigger/teleporter/random/rogue/fourbyfour/onright,/turf/space,/area/asteroid/rogue/zone1)
+"t" = (/turf/space,/area/asteroid/rogue/zone2)
+"u" = (/obj/effect/step_trigger/teleporter/random/rogue/fourbyfour/onleft,/turf/space,/area/asteroid/rogue/zone2)
+"v" = (/obj/effect/step_trigger/teleporter/random/rogue/fourbyfour/onright,/turf/space,/area/asteroid/rogue/zone2)
+"w" = (/obj/effect/step_trigger/teleporter/random/rogue/fourbyfour/ontop,/turf/space,/area/asteroid/rogue/zone1)
+"x" = (/obj/effect/step_trigger/teleporter/random/rogue/fourbyfour/ontop,/turf/space,/area/asteroid/rogue/zone2)
+"y" = (/obj/rogue_mobspawner,/turf/space,/area/asteroid/rogue/zone2)
+"z" = (/obj/asteroid_spawner,/turf/space,/area/asteroid/rogue/zone2)
+"A" = (/obj/rogue_mobspawner,/turf/space,/area/asteroid/rogue/zone1)
+"B" = (/obj/asteroid_spawner,/turf/space,/area/asteroid/rogue/zone1)
+"C" = (/turf/space,/area/shuttle/belter/belt/zone2)
+"D" = (/turf/space,/area/shuttle/belter/belt/zone1)
+"E" = (/obj/effect/step_trigger/teleporter/random/rogue/fourbyfour/onbottom,/turf/space,/area/asteroid/rogue/zone1)
+"F" = (/obj/effect/step_trigger/teleporter/random/rogue/fourbyfour/onbottom,/turf/space,/area/asteroid/rogue/zone2)
+
+(1,1,1) = {"
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+gggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggcgggggggggggggghhhhhhhhhhhhhehhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddkdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddlddddddddddddddddddddddkdddddddddddddddddddddddddddddddddddddddddddddddddddddkddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaajaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddkdddddddddddddddddddddddddddddddldddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddldddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddldddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddldddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddedddddddddkddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddkdddddddddddddddddddddkdddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddedddddddddddddddddddddddddddddddddddddddddddddddddddddddkddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddedddddddddddddddddddddddddddddddddddddddddddddddddddlddddddddddddddddddddddddddddddddddldddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaaaaaaaaajaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddldddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaajaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddedddddddddddddddddddddddddddddddddkddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddldddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddedddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddkddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaajaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddedddddddddddddddddddkddddddddddddddddddddlddddddddddddddddddddddmmmddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddmmmmmmmmmmddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddmmmmmmmmmmddddddddddddddddddddddddddddddddddkdddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddmmmmmmmmmmddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddmmmmmmmmmmddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddmmmmmmmmmmddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddmmmmmmmmmmddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddedddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddmmmddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddldddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddldddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddldddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddedddddddddkddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddkddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddkddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddedddddddddddddddddlddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddedddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddlddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddldddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddldddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaajaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddldddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaannnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaannnnnnnnnnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddkddddddddddddddddddddkddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaannnnnnnnnnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaannnnnnnnnnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddedddddddddddddddddddkddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaannnnnnnnnnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddedddddddddddddddddddddddddddddlddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaannnnnnnnnnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddkddddddlddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaajaaaaaaaaaaaaaaaaaaaaaaaaaaaannnnnnnnnnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaannnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddldddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddldddddddddddddddddldddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddkdddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddldddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddldddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddkdddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaiaaaaaaaaajaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddkdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddedddddddddddddddddddddddddddkddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddedddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddlddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddldddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddldddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaajaaaaaaaaaaaaaaaaajaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddedddddddddddddddddddddddddddddlddddddddddddddddddddddddddddddddddddddkddddddddddddddddddddddddddddddddddddlddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaaaaaaaaaaaaaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddedddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddkddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddedddddddddddddddddddddddddddddddddddddddddddddkddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaaaaaaaaaaaaaajaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaaaaaaacaaaaaaaaaaaaaadddddddddddddedddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddlddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddedddddddddddddddddddddddddddddddddddddddddddddddddddddddddddlddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddldddddddddddddddddddddddddddddddddddddddddddddddddddddddddddldddddddkdddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaajaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddldddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddkdddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddlddddddkddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddedddddddddddddddddddddddddddddddddddddddddddkddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooopppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadddddddddddddeddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfddddddddddddd
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttytttttttttttttttttttttyttttttttttttttttttttttttttttttttttttttttttttttyttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttutttttttttyttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttztttttttttttttttttzttttttttttttttttttttzttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqAqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqBqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttytttttttttttttttttttttttttttttttttttztttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqBqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqAqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqBqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttztttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqBqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqAqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttztttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttytttttttttttttttttttttttttttttttttttttttttttttztttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqBqqqqqqqqqqqqqqqqBqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttutttttttttttttttttttttttyttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqAqqqqqqqqqqqqqqBqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqBqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttutttttttttyttttttttttttttttttttttztttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqAqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttutttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttyttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqBqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttzttttttttttttttttttttttttzttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttytttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttutttttttttttzttttttttttttttttttttttttttttttttttttttttttztttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqBqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqAqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqAqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqBqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttztttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqBqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttutttttttttttttttttttttttttyttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqAqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqBqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttutttttttttttttttttttttttttttttttttttzttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqAqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttutttttttttttttttttttttzttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqBqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqBqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttutttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttzttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttutttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttyttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttutttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttzttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqBqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttztttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqBqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqBqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttytttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqAqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqBqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqAqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttytttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqAqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttutttttttttttttztttttttttttyttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqBqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqBqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttztttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqBqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttztttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqAqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttutttttttttttttttttttttttttttttttttttttttttttttttttttttCCCttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttCCCCCCCCCCttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttCCCCCCCCCCttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttCCCCCCCCCCttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqBqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttCCCCCCCCCCtttttttttttttttttttttttttttttttttttttttttttttzttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttCCCCCCCCCCttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqBqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttCCCCCCCCCCtttttttttttttttttttttttttttttttttttttttyttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttutttttttttttttttttttttttttttttttttttttttttttttttttttttCCCttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttztttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqAqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqBqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttyttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttzttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqBqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqAqqqqqqqqqqqqqqqqqqqqqDDDqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqAqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttutttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttytttttzttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqDDDDDDDDDDqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqDDDDDDDDDDqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqDDDDDDDDDDqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqDDDDDDDDDDqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttutttttttttttttzttttttttttttttttttytttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttytttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqDDDDDDDDDDqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqBqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqDDDDDDDDDDqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqBqqqqqqqqqqqqqqqqqqqqqqqDDDqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqAqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqBqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttztttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttutttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttzttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqBqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqBqqqqqqqqqAqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttutttttttttttttzttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttytttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttytttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttztttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttutttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttzttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqBqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqBqqqqqqqAqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttytttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqAqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqBqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttztttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqBqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqAqqqqBqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttutttttttttttttttttzttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqBqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttztttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttutttttttttttttttttttttttttttttttttttttttttzttttttttttttttttttttytttttttttttttttttytttttttttttyttttttzttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttutttttttttttttttttttttttttttttttyttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqAqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttutttttttttttztttttttttttttztttttttttttttttttttttttttttttttttttttttttttttttttttttttzttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqBqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqAqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqBqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttytttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqAqqqqqqqqqqqqqqqqqqqqqqqqqqqqqBqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttztttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqBqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqBqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttztttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttztttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttutttttttttttttttttyttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttytttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqBqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqAqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttytttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqAqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttutttttttttttttttttttttttttttttttttttyttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEsEEEEEEEEEEEEEEFFFFFFFFFFFFFuFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFvFFFFFFFFFFFFF
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+qqqqqqqqqqqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqtttttttttttttuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttvttttttttttttt
+"}
+
diff --git a/nano/images/nanomap_z1.png b/nano/images/nanomap_z1.png
index 730004ead5..6e83ba84a8 100644
Binary files a/nano/images/nanomap_z1.png and b/nano/images/nanomap_z1.png differ
diff --git a/nano/templates/zone_console.tmpl b/nano/templates/zone_console.tmpl
new file mode 100644
index 0000000000..cb7389f978
--- /dev/null
+++ b/nano/templates/zone_console.tmpl
@@ -0,0 +1,83 @@
+
+
+
+ Scn. Ramestat Core:
+
+
+ {{:helper.displayBar(data.timeout_percent, 0, 100, (data.timeout_percent < 75) ? 'bad' : (data.timeout_percent < 100) ? 'average' : 'good')}}
+
+
+
+
+
+ Mineral Content:
+
+
+ {{:data.difficulty}}
+
+
+
+
+
+ Shuttle Location:
+
+
+ {{:data.shuttle_location}}
+
+ {{if data.can_recall_shuttle > 0}}
+
+ {{:helper.link('Recall Shuttle', 'alert-red', {'action' : 'recall_shuttle'}, null)}}
+
+ {{/if}}
+
+{{if data.occupied > 0}}
+
+
+ WARNING:
+
+
+ Area Occupied by {{:data.occupied}} personnel!
+
+
+{{/if}}
+
+
+Scanner Operation
+
+
+ Scanner Activation:
+
+
+ {{:helper.link('Scan For Asteroids', 'power', {'action' : 'scan_for_new'}, data.scan_ready ? null : 'disabled')}}
+
+
+{{if data.scanning > 0}}
+
+
+ Scanning:
+
+
+ In Progress...
+
+
+{{/if}}
+{{if data.updated > 0 && data.scanning == 0}}
+
+
+ Info:
+
+
+ Updated shuttle destination!
+
+
+{{/if}}
+{{if data.debug > 0}}
+
+
+ DEBUG:
+
+
+ TP:{{:data.timeout_percent}},DS:{{:data.diffstep}},D:{{:data.difficulty}},O:{{:data.occupied}},DBG:{{:data.debug}},SL:{{:data.shuttle_location}},SAS:{{:data.shuttle_at_station}},SR:{{:data.scan_ready}}
+
+
+{{/if}}
\ No newline at end of file
diff --git a/vorestation.dme b/vorestation.dme
index 674251f770..c1aad26773 100644
--- a/vorestation.dme
+++ b/vorestation.dme
@@ -39,6 +39,7 @@
#include "code\__defines\mobs.dm"
#include "code\__defines\process_scheduler.dm"
#include "code\__defines\research.dm"
+#include "code\__defines\roguemining_vr.dm"
#include "code\__defines\species_languages.dm"
#include "code\__defines\targeting.dm"
#include "code\__defines\turfs.dm"
@@ -675,6 +676,7 @@
#include "code\game\machinery\doors\brigdoors.dm"
#include "code\game\machinery\doors\checkForMultipleDoors.dm"
#include "code\game\machinery\doors\door.dm"
+#include "code\game\machinery\doors\door_vr.dm"
#include "code\game\machinery\doors\firedoor.dm"
#include "code\game\machinery\doors\firedoor_assembly.dm"
#include "code\game\machinery\doors\multi_tile.dm"
@@ -793,6 +795,7 @@
#include "code\game\objects\items\devices\debugger.dm"
#include "code\game\objects\items\devices\defib.dm"
#include "code\game\objects\items\devices\flash.dm"
+#include "code\game\objects\items\devices\flash_vr.dm"
#include "code\game\objects\items\devices\flashlight.dm"
#include "code\game\objects\items\devices\floor_painter.dm"
#include "code\game\objects\items\devices\hacktool.dm"
@@ -1042,6 +1045,7 @@
#include "code\game\turfs\flooring\flooring_decals_vr.dm"
#include "code\game\turfs\flooring\flooring_premade.dm"
#include "code\game\turfs\flooring\flooring_vr.dm"
+#include "code\game\turfs\flooring\shuttle_vr.dm"
#include "code\game\turfs\initialization\init.dm"
#include "code\game\turfs\initialization\maintenance.dm"
#include "code\game\turfs\simulated\floor.dm"
@@ -1429,8 +1433,14 @@
#include "code\modules\gamemaster\game_master.dm"
#include "code\modules\gamemaster\helpers.dm"
#include "code\modules\gamemaster\actions\action.dm"
+#include "code\modules\gamemaster\actions\carp_migration.dm"
#include "code\modules\gamemaster\actions\comms_blackout.dm"
+#include "code\modules\gamemaster\actions\dust.dm"
#include "code\modules\gamemaster\actions\grid_check.dm"
+#include "code\modules\gamemaster\actions\meteor_defense.dm"
+#include "code\modules\gamemaster\actions\shipping_error.dm"
+#include "code\modules\gamemaster\actions\surprise_carp_attack.dm"
+#include "code\modules\gamemaster\actions\surprise_meteor.dm"
#include "code\modules\gamemaster\actions\waste_disposal.dm"
#include "code\modules\games\cah.dm"
#include "code\modules\games\cah_black_cards.dm"
@@ -1788,6 +1798,7 @@
#include "code\modules\mob\living\simple_animal\hostile\faithless.dm"
#include "code\modules\mob\living\simple_animal\hostile\giant_spider.dm"
#include "code\modules\mob\living\simple_animal\hostile\goose.dm"
+#include "code\modules\mob\living\simple_animal\hostile\goose_vr.dm"
#include "code\modules\mob\living\simple_animal\hostile\hivebot.dm"
#include "code\modules\mob\living\simple_animal\hostile\hostile.dm"
#include "code\modules\mob\living\simple_animal\hostile\pirate.dm"
@@ -1961,9 +1972,10 @@
#include "code\modules\projectiles\guns\energy\laser.dm"
#include "code\modules\projectiles\guns\energy\nuclear.dm"
#include "code\modules\projectiles\guns\energy\nuclear_yw.dm"
-#include "code\modules\projectiles\guns\energy\pulse.dm"
+#include "code\modules\projectiles\guns\energy\particle.dm"#include "code\modules\projectiles\guns\energy\pulse.dm"
#include "code\modules\projectiles\guns\energy\special.dm"
#include "code\modules\projectiles\guns\energy\stun.dm"
+#include "code\modules\projectiles\guns\energy\stun_vr.dm"
#include "code\modules\projectiles\guns\energy\temperature.dm"
#include "code\modules\projectiles\guns\launcher\crossbow.dm"
#include "code\modules\projectiles\guns\launcher\grenade_launcher.dm"
@@ -1977,7 +1989,7 @@
#include "code\modules\projectiles\guns\projectile\dartgun.dm"
#include "code\modules\projectiles\guns\projectile\pistol.dm"
#include "code\modules\projectiles\guns\projectile\pistol_yw.dm"
-#include "code\modules\projectiles\guns\projectile\revolver.dm"
+#include "code\modules\projectiles\guns\projectile\pistol_vr.dm"#include "code\modules\projectiles\guns\projectile\revolver.dm"
#include "code\modules\projectiles\guns\projectile\revolver_yw.dm"
#include "code\modules\projectiles\guns\projectile\shotgun.dm"
#include "code\modules\projectiles\guns\projectile\sniper.dm"
@@ -1989,6 +2001,7 @@
#include "code\modules\projectiles\projectile\bullets_vr.dm"
#include "code\modules\projectiles\projectile\change.dm"
#include "code\modules\projectiles\projectile\energy.dm"
+#include "code\modules\projectiles\projectile\energy_vr.dm"
#include "code\modules\projectiles\projectile\force.dm"
#include "code\modules\projectiles\projectile\special.dm"
#include "code\modules\projectiles\targeting\targeting_client.dm"
@@ -2052,6 +2065,7 @@
#include "code\modules\reagents\reagent_containers\hypospray_vr.dm"
#include "code\modules\reagents\reagent_containers\pill.dm"
#include "code\modules\reagents\reagent_containers\spray.dm"
+#include "code\modules\reagents\reagent_containers\spray_vr.dm"
#include "code\modules\reagents\reagent_containers\syringes.dm"
#include "code\modules\reagents\reagent_containers\drinkingglass\drinkingglass.dm"
#include "code\modules\reagents\reagent_containers\drinkingglass\extras.dm"
@@ -2089,6 +2103,13 @@
#include "code\modules\research\rdmachines.dm"
#include "code\modules\research\research.dm"
#include "code\modules\research\server.dm"
+#include "code\modules\rogueminer_vr\asteroid.dm"
+#include "code\modules\rogueminer_vr\controller.dm"
+#include "code\modules\rogueminer_vr\debug.dm"
+#include "code\modules\rogueminer_vr\landmarks.dm"
+#include "code\modules\rogueminer_vr\wrappers.dm"
+#include "code\modules\rogueminer_vr\zone_console.dm"
+#include "code\modules\rogueminer_vr\zonemaster.dm"
#include "code\modules\scripting\Errors.dm"
#include "code\modules\scripting\IDE.dm"
#include "code\modules\scripting\Options.dm"
@@ -2117,11 +2138,8 @@
#include "code\modules\shieldgen\shield_capacitor.dm"
#include "code\modules\shieldgen\shield_gen.dm"
#include "code\modules\shieldgen\shield_gen_external.dm"
-#include "code\modules\shuttles\adminmulti_vr.dm"
#include "code\modules\shuttles\antagonist.dm"
-#include "code\modules\shuttles\awaymission_vr.dm"
#include "code\modules\shuttles\departmental.dm"
-#include "code\modules\shuttles\departmental_vr.dm"
#include "code\modules\shuttles\escape_pods.dm"
#include "code\modules\shuttles\shuttle.dm"
#include "code\modules\shuttles\shuttle_console.dm"
@@ -2130,6 +2148,7 @@
#include "code\modules\shuttles\shuttle_specops.dm"
#include "code\modules\shuttles\shuttle_supply.dm"
#include "code\modules\shuttles\shuttles_multi.dm"
+#include "code\modules\shuttles\shuttles_vr.dm"
#include "code\modules\spells\artifacts.dm"
#include "code\modules\spells\construct_spells.dm"
#include "code\modules\spells\no_clothes.dm"
@@ -2184,7 +2203,7 @@
#include "code\modules\tables\tables.dm"
#include "code\modules\tables\update_triggers.dm"
#include "code\modules\vehicles\cargo_train.dm"
-#include "code\modules\vehicles\Securitrain_vr.dm"
+#include "code\modules\vehicles\rover_vr.dm"
#include "code\modules\vehicles\train.dm"
#include "code\modules\vehicles\vehicle.dm"
#include "code\modules\ventcrawl\ventcrawl.dm"
@@ -2338,6 +2357,14 @@
#include "code\ZAS\Zone.dm"
#include "interface\interface.dm"
#include "interface\skin.dmf"
+#include "maps\virgo-1.dmm"
+#include "maps\virgo-2.dmm"
+#include "maps\virgo-3.dmm"
+#include "maps\virgo-4.dmm"
+#include "maps\virgo-5.dmm"
+#include "maps\virgo-6.dmm"
+#include "maps\virgo-7.dmm"
+#include "maps\RandomZLevels\beach.dm"
#include "maps\RandomZLevels\blackmarketpackers.dm"
#include "maps\RandomZLevels\carpfarm.dm"
#include "maps\RandomZLevels\labyrinth.dm"